@ 260915.5

230917.1 · 4af28c84e2a1a47bea2f9fab58b5637c05b0180d

released 4.1.0

fix #118 fix #284 fix #285 fix #286 fix #287 fix #289 and other additions and improvements

reading declarations

README.md

@@ -481,102 +481,9 @@ significant runtime overhead and should not be used for the final build. Performance comparisons ----------------------- -For an up-to-date comprehensive performance comparison, please see the+For an up-to-date performance comparison of the latest ugrep, please see the [ugrep performance benchmarks](https://github.com/Genivia/ugrep-benchmarks). -Below is a two-year old performance comparison when ugrep was first released-with performance enhancements.  This old comparison is getting outdated!--The following benchmark tests span a range of practical use cases:--Test | Command                                                          | Description----- | ---------------------------------------------------------------- | ------------------------------------------------------T1   | `GREP -c quartz enwik8`                                          | count "quartz" in a 100MB file (word with low frequency letters)-T2   | `GREP -c sternness enwik8`                                       | count "sternness" in a 100MB file (word with high frequency letters)-T3   | `GREP -c 'Sherlock Holmes' en.txt`                               | count "Sherlock Holmes" in a huge [13GB decompressed file](http://opus.nlpl.eu/download.php?f=OpenSubtitles/v2018/mono/OpenSubtitles.raw.en.gz)-T4   | `GREP -cw -e char -e int -e long -e size_t -e void big.cpp`      | count 5 short words in a 35MB C++ source code file-T5   | `GREP -Eon 'serialize_[a-zA-Z0-9_]+Type' big.cpp`                | search and display C++ serialization functions in a 35MB source code file-T6   | `GREP -Fon -f words1+1000 enwik8`                                | search 1000 words of length 1 or longer in a 100MB Wikipedia file-T7   | `GREP -Fon -f words2+1000 enwik8`                                | search 1000 words of length 2 or longer in a 100MB Wikipedia file-T8   | `GREP -Fon -f words4+1000 enwik8`                                | search 1000 words of length 4 or longer in a 100MB Wikipedia file-T9   | `GREP -Fon -f words8+1000 enwik8`                                | search 1000 words of length 8 or longer in a 100MB Wikipedia file-T10  | `GREP -ro '#[[:space:]]*include[[:space:]]+"[^"]+"' -Oh,hpp,cpp` | multi-threaded recursive search of `#include "..."` in the directory tree from the Qt 5.9.2 root, restricted to `.h`, `.hpp`, and `.cpp` files-T11  | `GREP -ro '#[[:space:]]*include[[:space:]]+"[^"]+"' -Oh,hpp,cpp` | same as T10 but single-threaded-T12  | `GREP -z -Fc word word*.gz`                                      | count `word` in 6 compressed files of 1MB to 3MB each--Note: T10 and T11 use `ugrep` option `-Oh,hpp,cpp` to restrict the search to-files with extensions `.h`, `.hpp`, and `.cpp`, which is formulated with-GNU/BSD/PCRGE grep as `--include='*.h' --include='*.hpp' --include='*.cpp'`,-with silver searcher as `-G '.*\.(h|hpp|cpp)'` requiring `--search-binary` to-search compressed files (a bug), and with ripgrep as `--glob='*.h'---glob='*.hpp' --glob='*.cpp'`.--The corpora used in the tests are available for-[download](https://www.genivia.com/files/corpora.zip).--The following performance tests were conducted with a new and common MacBook-Pro using clang 12.0.0 -O2 on a 2.9 GHz Intel Core i7, 16 GB 2133 MHz LPDDR3-MacOS 10.15.7 machine with the grep tools listed in the table installed (e.g.-MacOS BSD grep 2.5.1).  The best times of 30 runs is shown under minimal-machine load.  When comparing tools, the same match counts were produced.-These results are reproducible on similar machines.--Results are shown in real time (wall clock time) seconds elapsed.  Best times-are shown in **boldface** and *n/a* means that the running time exceeded 1-minute or the selected options are not supported (T12: option `-z`) or the-input file is too large (T3: 13GB file) resulting in an error.--GREP            | T1       | T2       | T3       | T4       | T5       | T6       | T7       | T8       | T9       | T10      | T11      | T12      |---------------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- |-ugrep           | **0.02** | **0.03** | **6.05** | **0.06** | **0.02** | **0.92** | **0.86** | **0.74** | **0.23** | **0.10** | **0.19** | **0.02** |-hyperscan grep  | 0.09     | 0.10     | **4.35** | 0.11     | 0.04     | 7.78     | 3.39     | 1.41     | 1.17     | *n/a*    | *n/a*    | *n/a*    |-ripgrep         | 0.06     | 0.10     | 7.50     | 0.19     | 0.06     | 2.20     | 2.07     | 2.01     | 2.14     | 0.12     | 0.36     | 0.03     |-silver searcher | 0.10     | 0.11     | *n/a*    | 0.16     | 0.21     | *n/a*    | *n/a*    | *n/a*    | *n/a*    | 0.45     | 0.32     | 0.09     |-GNU grep 3.3    | 0.08     | 0.15     | 11.21    | 0.18     | 0.16     | 2.70     | 2.64     | 2.42     | 2.26     | *n/a*    | 0.26     | *n/a*    |-PCREGREP 8.42   | 0.17     | 0.17     | *n/a*    | 0.26     | 0.08     | *n/a*    | *n/a*    | *n/a*    | *n/a*    | *n/a*    | 2.37     | *n/a*    |-BSD grep 2.5.1  | 0.81     | 1.60     | *n/a*    | 1.85     | 0.83     | *n/a*    | *n/a*    | *n/a*    | *n/a*    | *n/a*    | 3.35     | 0.60     |--Note T3: [Hyperscan simplegrep](https://github.com/intel/hyperscan/tree/master/examples)-was compiled with optimizations enabled.  Hyperscan results for T3 are somewhat-better than ugrep as expected because hyperscan simplegrep has one advantage-here: it does not maintain line numbers and other line-related information.  By-contrast, line information should be tracked (as in ugrep) to determine if-matches are on the same line or not, as required by option `-c`.  Hyperscan-simplegrep returns more matches than other greps due to its "all matches-reported" pattern matching behavior.--Note T4-T9: Hyperscan simplegrep does not support command line options.  Option-`-w` was emulated using the pattern `\b(char|int|long|size_t|void)\b`.  Option-`-f` was emulated as follows:--    paste -d'|' -s words1+1000 > pattern.txt-    /usr/bin/time ./simplegrep `cat pattern.txt` enwik8 | ./null--Note T10+T11: [silver searcher 2.2.0](https://github.com/ggreer/the_silver_searcher)-runs slower with multiple threads (T10 0.45s) than single-threaded (T11 0.32s),-which was reported as an issue to the maintainers.--Note: ugrep option `-c` does not shortcut the search by skipping over the rest-of the line after a first match, by contrast to other grep to speed up-matching.  The reason is that ugrep supports multi-line matches by default,-which means that the remainder of the line should always be searched to produce-accurate results.--Output is sent to a `null` utility to eliminate terminal display overhead-(`> /dev/null` cannot be used as some greps detect it to remove all output).-The `null` utility source code:--    #include <sys/types.h>-    #include <sys/uio.h>-    #include <unistd.h>-    int main() { char buf[65536]; while (read(0, buf, 65536) > 0) continue; }--Performance results may depend on warm/cold runs, compilers, libraries,-the OS, the CPU type, and file system latencies.  However, comparable-competitive results were obtained on many other types of machines.--� [Back to table of contents](#toc)- <a name="vim"/>  Using ugrep within Vim@@ -1669,7 +1576,8 @@ same line, like XOR:             unless it matches the negative PATTERN.  Same as -e (?^PATTERN).             Negative pattern matches are essentially removed before any other             patterns are matched.  Note that longer patterns take precedence-            over shorter patterns.  This option may be repeated.+            over shorter patterns.  Option -N cannot be specified with -P.+            This option may be repeated.     -v, --invert-match             Selected lines are those not matching any of the specified             patterns.@@ -1802,29 +1710,29 @@ search binary files with binary patterns, see  To recursively list all files that are ASCII (i.e. 7-bit): -    ug -RL '[^[:ascii:]]'+    ug -L '[^[:ascii:]]'  To recursively list all files that are non-ASCII, i.e. UTF-8, UTF-16, and UTF-32 files with non-ASCII Unicode characters (U+0080 and up): -    ug -Rl '[^[:ascii:]]'+    ug -l '[^[:ascii:]]'  To check if a file contains non-ASCII Unicode (U+0080 and up):      ug -q '[^[:ascii:]]' myfile && echo "contains Unicode" -To remove invalid Unicode characters from a file (note that `-o` does not work+To remove invalid Unicode characters from a file (note that `-o` may not work because binary data is detected and rejected and newlines are added, but `--format="%o%` does not check for binary and copies the match "as is"): -    ug "\p{Unicode}" --format="%o" badfile.txt+    ug "[\p{Unicode}\n]" --format="%o" badfile.txt  To recursively list files with invalid UTF content (i.e. invalid UTF-8 byte sequences or files that contain any UTF-8/16/32 code points that are outside the valid Unicode range) by matching any code point with `.` and by using a-negative pattern `-N '\p{Unicode}'`:+negative pattern `-N '\p{Unicode}'` to ignore each valid Unicode character: -    ug -Rl -e '.' -N '\p{Unicode}'+    ug -l -e '.' -N '\p{Unicode}'  To display lines containing laughing face emojis: @@ -1975,13 +1883,13 @@ Same, but with pretty output with headings, line numbers and column numbers             Ignore files and directories matching the globs in each FILE that             is encountered in recursive searches.  The default FILE is             `.gitignore'.  Matching files and directories located in the-            directory of a FILE's location and in directories below are ignored-            by temporarily extending the --exclude and --exclude-dir globs, as-            if --exclude-from=FILE is locally enforced.  Globbing syntax is the-            same as the --exclude-from=FILE gitignore syntax; directories are-            excluded when the glob ends in a `/', same as git.  Files and-            directories explicitly specified as command line arguments are-            never ignored.  This option may be repeated with additional files.+            directory of the FILE and in subdirectories below are ignored.+            Globbing syntax is the same as the --exclude-from=FILE gitignore+            syntax, but files and directories are excluded instead of only+            files.  Directories are specifically excluded when the glob ends in+            a `/'.  Files and directories explicitly specified as command line+            arguments are never ignored.  This option may be repeated to+            specify additional files.     -g GLOBS, --glob=GLOBS             Search only files whose name matches the specified comma-separated             list of GLOBS, same as --include='glob' for each `glob' in GLOBS.@@ -2253,13 +2161,13 @@ search the files:             Ignore files and directories matching the globs in each FILE that             is encountered in recursive searches.  The default FILE is             `.gitignore'.  Matching files and directories located in the-            directory of a FILE's location and in directories below are ignored-            by temporarily extending the --exclude and --exclude-dir globs, as-            if --exclude-from=FILE is locally enforced.  Globbing syntax is the-            same as the --exclude-from=FILE gitignore syntax; directories are-            excluded when the glob ends in a `/', same as git.  Files and-            directories explicitly specified as command line arguments are-            never ignored.  This option may be repeated with additional files.+            directory of the FILE and in subdirectories below are ignored.+            Globbing syntax is the same as the --exclude-from=FILE gitignore+            syntax, but files and directories are excluded instead of only+            files.  Directories are specifically excluded when the glob ends in+            a `/'.  Files and directories explicitly specified as command line+            arguments are never ignored.  This option may be repeated to+            specify additional files.     -M MAGIC, --file-magic=MAGIC             Only files matching the signature pattern MAGIC are searched.  The             signature \"magic bytes\" at the start of a file are compared to@@ -2622,8 +2530,7 @@ meaning; any name or string that does not contain a `:` or `,` may be used.     -X, --hex             Output matches in hexadecimal.  This option is equivalent to the             --binary-files=hex option with --hexdump=2C.  To omit the matching-            line from the hex output, use option --hexdump instead of -X.  See-            also option -U.+            line from the hex output use option --hexdump.  See also option -U.     --hexdump[=[1-8][a][bch][A[NUM]][B[NUM]][C[NUM]]]             Output matches in 1 to 8 columns of 8 hexadecimal octets.  The             default is 2 columns or 16 octets per line.  Option `a' outputs a@@ -2724,13 +2631,13 @@ source):             Ignore files and directories matching the globs in each FILE that             is encountered in recursive searches.  The default FILE is             `.gitignore'.  Matching files and directories located in the-            directory of a FILE's location and in directories below are ignored-            by temporarily extending the --exclude and --exclude-dir globs, as-            if --exclude-from=FILE is locally enforced.  Globbing syntax is the-            same as the --exclude-from=FILE gitignore syntax; directories are-            excluded when the glob ends in a `/', same as git.  Files and-            directories explicitly specified as command line arguments are-            never ignored.  This option may be repeated with additional files.+            directory of the FILE and in subdirectories below are ignored.+            Globbing syntax is the same as the --exclude-from=FILE gitignore+            syntax, but files and directories are excluded instead of only+            files.  Directories are specifically excluded when the glob ends in+            a `/'.  Files and directories explicitly specified as command line+            arguments are never ignored.  This option may be repeated to+            specify additional files.  Option `--ignore-files` looks for `.gitignore`, or the specified `FILE`, in recursive searches.  When `.gitignore`, or the specified `FILE`, is found while@@ -2832,14 +2739,13 @@ implicit:             Ignore files and directories matching the globs in each FILE that             is encountered in recursive searches.  The default FILE is             `.gitignore'.  Matching files and directories located in the-            directory of a FILE's location and in directories below are ignored-            by temporarily overriding the --exclude and --exclude-dir globs,-            as if --exclude-from=FILE is locally enforced.  Globbing is the-            same as --exclude-from=FILE and supports gitignore syntax, but-            directories are not automatically excluded from searches (use a-            glob ending with a `/' to identify directories to ignore, same as-            git).  Files and directories explicitly specified as command line-            arguments are never ignored.  This option may be repeated.+            directory of the FILE and in subdirectories below are ignored.+            Globbing syntax is the same as the --exclude-from=FILE gitignore+            syntax, but files and directories are excluded instead of only+            files.  Directories are specifically excluded when the glob ends in+            a `/'.  Files and directories explicitly specified as command line+            arguments are never ignored.  This option may be repeated to+            specify additional files.     --include=GLOB             Search only files whose name matches GLOB using wildcard matching,             same as -g GLOB.  GLOB can use **, *, ?, and [...] as wildcards,@@ -5377,9 +5283,9 @@ For PCRE regex patterns with option `-P`, please see the PCRE documentation has more features than the pattern syntax described below.  For the patterns in common the syntax and meaning are the same. -Note that `\s` and inverted bracket lists `[^...]` are modified in **ugrep** to-prevent matching newlines `\n`.  This modification is done to replicate the-behavior of grep.+Note that `[[:space:]]` and `\s` and inverted bracket lists `[^...]` are+modified in **ugrep** to prevent matching newlines `\n`.  This modification is+done to replicate the behavior of grep.  <a name="posix-syntax"/> @@ -5408,7 +5314,7 @@ sub-expression patterns `φ` and `ψ`:   `\Q...\E` | matches the quoted content between `\Q` and `\E` literally   `[abc]`   | matches one of `a`, `b`, or `c`   `[0-9]`   | matches a digit `0` to `9`-  `[^0-9]`  | matches any character except a digit and excluding newline `\n`+  `[^0-9]`  | matches any character except a digit and excluding `\n`   `φ?`      | matches `φ` zero or one time (optional)   `φ*`      | matches `φ` zero or more times (repetition)   `φ+`      | matches `φ` one or more times (repetition)@@ -5494,33 +5400,33 @@ that has the same meaning as `\p{^C}`, which matches any character except characters in the class `C`.  For example, `\P{ASCII}` is the same as `\p{^ASCII}` which is the same as `[[:^ascii]]`. -  POSIX form   | POSIX category    | Matches-  ------------ | ----------------- | ----------------------------------------------  `[:ascii:]`  | `\p{ASCII}`       | matches an ASCII character U+0000 to U+007F-  `[:space:]`  |                   | matches a white space character `[ \t\n\v\f\r]` or `\p{Space}` with `-P`-  `[:xdigit:]` | `\p{Xdigit}`      | matches a hex digit `[0-9A-Fa-f]`-  `[:cntrl:]`  | `\p{Cntrl}`       | matches a control character `[\x00-\0x1f\x7f]`-  `[:print:]`  | `\p{Print}`       | matches a printable character `[\x20-\x7e]`-  `[:alnum:]`  | `\p{Alnum}`       | matches a alphanumeric character `[0-9A-Za-z]` or `[\p{L}\p{N}]` with `-P`-  `[:alpha:]`  | `\p{Alpha}`       | matches a letter `[A-Za-z]` or `\p{L}` with `-P`-  `[:blank:]`  | `\p{Blank}`, `\h` | matches a blank `[ \t]` or horizontal space with `-P`-  `[:digit:]`  | `\p{Digit}`       | matches a digit `[0-9]` or `\p{Nd}` with `-P`-  `[:graph:]`  | `\p{Graph}`       | matches a visible character `[\x21-\x7e]`-  `[:lower:]`  |                   | matches a lower case letter `[a-z]` or `\p{Ll}` with `-P`-  `[:punct:]`  | `\p{Punct}`       | matches a punctuation character `[\x21-\x2f\x3a-\x40\x5b-\x60\x7b-\x7e]`-  `[:upper:]`  |                   | matches an upper case letter `[A-Z]` or `\p{Lu}` with `-P`-  `[:word:]`   |                   | matches a word character `[0-9A-Za-z_]` or `[\p{L}\p{N}_]` with `-P`-  `[:^blank:]` | `\P{Blank}`, `\H` | matches a non-blank character including newline `\n`-  `[:^digit:]` | `\P{Digit}`       | matches a non-digit including newline `\n`+  POSIX form   | Matches+  ------------ | ---------------------------------------------+  `[:ascii:]`  | matches an ASCII character U+0000 to U+007F including `\n`+  `[:space:]`  | matches a white space character `[ \t\v\f\r]` excluding `\n`+  `[:xdigit:]` | matches a hex digit `[0-9A-Fa-f]`+  `[:cntrl:]`  | matches a control character `[\x00-\t\x0b-\x1f\x7f]` excluding `\n`+  `[:print:]`  | matches a printable character `[\x20-\x7e]`+  `[:alnum:]`  | matches a alphanumeric character `[0-9A-Za-z]`+  `[:alpha:]`  | matches a letter `[A-Za-z]`+  `[:blank:]`  | matches a blank character `\h` same as `[ \t]`+  `[:digit:]`  | matches a digit `[0-9]`+  `[:graph:]`  | matches a visible character `[\x21-\x7e]`+  `[:lower:]`  | matches a lower case letter `[a-z]`+  `[:punct:]`  | matches a punctuation character `[\x21-\x2f\x3a-\x40\x5b-\x60\x7b-\x7e]`+  `[:upper:]`  | matches an upper case letter `[A-Z]`+  `[:word:]`   | matches a word character `[0-9A-Za-z_]`+  `[:^blank:]` | matches a non-blank characater `\H` same as `[^ \t]`+  `[:^digit:]` | matches a non-digit `[^0-9]`  POSIX character categories only cover ASCII, `[[:^ascii]]` is empty and therefore invalid to use.  By contrast, `[^[:ascii]]` is a Unicode character class that excludes the ASCII character category. -Note that the patterns `[[:ascii:]]`, `[[:ctnrl:]]` and `[[:space:]]` and most-of the negated classes such as `[[:^blank:]]` and `[[:digit:]]` match newlines,-which is the official definition of these POSIX categories.  By contrast,-GNU/BSD grep never match newlines.  As a consequence, more patterns may match.+Note that the patterns `[[:ascii:]]` and negated classes such as `[[:^digit:]]`+match newlines, which is the official definition of these POSIX categories.  By+contrast, GNU/BSD grep never match newlines.  As a consequence, more patterns+may match.  Negated character classes of the form `[^...]` match any Unicode character except the given characters and does not match newlines either.  For example@@ -5538,22 +5444,24 @@ Option `-U` disables Unicode wide-character matching, i.e. ASCII matching.   `\D`                                   | matches a non-digit including `\n`   `\e`                                   | matches ESC U+001b   `\f`                                   | matches FF U+000c+  `\h`                                   | matches a blank `[ \t]`+  `\H`                                   | matches a non-blank `[^ \t]` including `\n`   `\l`                                   | matches a lower case letter `\p{Ll}`   `\n`                                   | matches LF U+000a   `\N`                                   | matches a non-LF character   `\r`                                   | matches CR U+000d   `\R`                                   | matches a Unicode line break (`\r\n`, `\r`, `\v`, `\f`, `\n`, U+0085, U+2028 and U+2029)   `\s`                                   | matches a white space character `[ \t\v\f\r\x85\p{Z}]` excluding `\n`-  `\S`                                   | matches a non-white space character+  `\S`                                   | matches a non-white space character and excluding `\n`   `\t`                                   | matches TAB U+0009   `\u`                                   | matches an upper case letter `\p{Lu}`   `\v`                                   | matches VT U+000b or vertical space character with option `-P`   `\w`                                   | matches a word character `[0-9A-Za-z_]` or `[\p{L}\p{Nd}\p{Pc}]`-  `\W`                                   | matches a non-Unicode word character-  `\X`                                   | matches any ISO-8859-1 or Unicode character-  `\p{Space}`                            | matches a white space character `[ \t\n\v\f\r\x85\p{Z}]` including `\n`+  `\W`                                   | matches a non-Unicode word character including `\n`+  `\X`                                   | matches any ISO-8859-1 or Unicode character including `\n`+  `\p{Space}`                            | matches a white space character `[ \t\v\f\r\x85\p{Z}]` excluding `\n`   `\p{Unicode}`                          | matches any Unicode character U+0000 to U+10FFFF minus U+D800 to U+DFFF-  `\p{ASCII}`                            | matches an ASCII character U+0000 to U+007F+  `\p{ASCII}`                            | matches an ASCII character U+0000 to U+007F including `\n`   `\p{Non_ASCII_Unicode}`                | matches a non-ASCII character U+0080 to U+10FFFF minus U+D800 to U+DFFF   `\p{L&}`                               | matches a character with Unicode property L& (i.e. property Ll, Lu, or Lt)   `\p{Letter}`,`\p{L}`                   | matches a character with Unicode property Letter

bin/win32/ugrep.exe

Binary file changed

bin/win64/ugrep.exe

Binary file changed

configure

@@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles.-# Generated by GNU Autoconf 2.71 for ugrep 3.12.+# Generated by GNU Autoconf 2.71 for ugrep 4.1. # # # Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation,@@ -10,7 +10,7 @@ # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. #-# Copyright (C) 2019-2022 Robert van Engelen, Genivia Inc.+# Copyright (C) 2019-2023 Robert van Engelen, Genivia Inc. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ##@@ -609,8 +609,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='ugrep' PACKAGE_TARNAME='ugrep'-PACKAGE_VERSION='3.12'-PACKAGE_STRING='ugrep 3.12'+PACKAGE_VERSION='4.1'+PACKAGE_STRING='ugrep 4.1' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -1349,7 +1349,7 @@ if test "$ac_init_help" = "long"; then   # Omit some internal or obsolete options to make the list less imposing.   # This message is too long to be a string in the A/UX 3.1 sh.   cat <<_ACEOF-\`configure' configures ugrep 3.12 to adapt to many kinds of systems.+\`configure' configures ugrep 4.1 to adapt to many kinds of systems.  Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1420,7 +1420,7 @@ fi  if test -n "$ac_init_help"; then   case $ac_init_help in-     short | recursive ) echo "Configuration of ugrep 3.12:";;+     short | recursive ) echo "Configuration of ugrep 4.1:";;    esac   cat <<\_ACEOF @@ -1562,14 +1562,14 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then   cat <<\_ACEOF-ugrep configure 3.12+ugrep configure 4.1 generated by GNU Autoconf 2.71  Copyright (C) 2021 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. -Copyright (C) 2019-2022 Robert van Engelen, Genivia Inc.+Copyright (C) 2019-2023 Robert van Engelen, Genivia Inc. _ACEOF   exit fi@@ -2099,7 +2099,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by ugrep $as_me 3.12, which was+It was created by ugrep $as_me 4.1, which was generated by GNU Autoconf 2.71.  Invocation command line was    $ $0$ac_configure_args_raw@@ -3586,7 +3586,7 @@ fi  # Define the identity of the package.  PACKAGE='ugrep'- VERSION='3.12'+ VERSION='4.1'   printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h@@ -9358,7 +9358,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log="-This file was extended by ugrep $as_me 3.12, which was+This file was extended by ugrep $as_me 4.1, which was generated by GNU Autoconf 2.71.  Invocation command line was    CONFIG_FILES    = $CONFIG_FILES@@ -9426,7 +9426,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\-ugrep config.status 3.12+ugrep config.status 4.1 configured by $0, generated by GNU Autoconf 2.71,   with options \\"\$ac_cs_config\\" 

configure.ac

@@ -1,7 +1,7 @@-AC_INIT([ugrep],[3.12])+AC_INIT([ugrep],[4.1]) AM_INIT_AUTOMAKE([foreign]) AC_CONFIG_HEADERS([config.h])-AC_COPYRIGHT([Copyright (C) 2019-2022 Robert van Engelen, Genivia Inc.])+AC_COPYRIGHT([Copyright (C) 2019-2023 Robert van Engelen, Genivia Inc.])  AC_CONFIG_MACRO_DIR([m4]) 

include/reflex/absmatcher.h

@@ -1183,17 +1183,10 @@ class AbstractMatcher {         set_current(txt_ - buf_);         return true;       }-      if (eof_)-        break;       pos_ = cur_ = end_;       txt_ = buf_ + end_;-      (void)grow();-      end_ += get(buf_ + end_, blk_ > 0 ? blk_ : max_ - end_ - 1);-      if (pos_ >= end_ && !wrap())-      {-        eof_ = true;+      if (peek_more() == EOF)         break;-      }     }     set_current(end_);     return false;

include/reflex/boostmatcher.h

@@ -47,9 +47,9 @@ class BoostMatcher : public PatternMatcher<boost::regex> {  public:   /// Convert a regex to an acceptable form, given the specified regex library signature `"[decls:]escapes[?+]"`, see reflex::convert.   template<typename T>-  static std::string convert(T regex, convert_flag_type flags = convert_flag::none)+  static std::string convert(T regex, convert_flag_type flags = convert_flag::none, bool *multiline = NULL)   {-    return reflex::convert(regex, "imPRsx!#<>=&'(0123456789:abcdefghklnrstuvwxzABCDHLNQSUWZ0123456789<>?+", flags);+    return reflex::convert(regex, "imPRsx!#<>=&'(0123456789:abcdefghklnrstuvwxzABCDHLNQSUWZ0123456789<>?+", flags, multiline);   }   /// Default constructor.   BoostMatcher()@@ -368,9 +368,9 @@ class BoostPosixMatcher : public BoostMatcher {  public:   /// Convert a regex to an acceptable form, given the specified regex library signature `"[decls:]escapes[?+]"`, see reflex::convert.   template<typename T>-  static std::string convert(T regex, convert_flag_type flags = convert_flag::none)+  static std::string convert(T regex, convert_flag_type flags = convert_flag::none, bool *multiline = NULL)   {-    return reflex::convert(regex, "imsx!#<=:abcdefghlnrstuvwxzABDHLNQSUWZ0<>", flags);+    return reflex::convert(regex, "imsx!#<=:abcdefghlnrstuvwxzABDHLNQSUWZ0<>", flags, multiline);   }   /// Default constructor.   BoostPosixMatcher() : BoostMatcher()

include/reflex/convert.h

@@ -69,7 +69,7 @@ namespace convert_flag {   const convert_flag_type freespace  = 0x0100; ///< convert regex by removing spacing, same as `(?x)`   const convert_flag_type notnewline = 0x0200; ///< inverted character classes and \s do not match newline `\n`   const convert_flag_type permissive = 0x0400; ///< convert Unicode to compact UTF-8 patterns, permits some invalid UTF-8 sequences-  const convert_flag_type closing    = 0x8000; ///< permit matching ) when it has no opening (+  const convert_flag_type closing    = 0x8000; ///< permit matching ) literally when it has no opening ( }  /// @brief Returns the converted regex string given a regex library signature and conversion flags, throws regex_error.@@ -162,6 +162,7 @@ std::string convert(     const char                              *pattern,                    ///< regex string pattern to convert     const char                              *signature,                  ///< regex library signature     convert_flag_type                        flags = convert_flag::none, ///< conversion flags+    bool                                    *multiline = NULL,           ///< set to true if pattern may be multiline     const std::map<std::string,std::string> *macros = NULL)              ///< {name} macros to expand   ; @@ -169,9 +170,10 @@ inline std::string convert(     const std::string&                       pattern,     const char                              *signature,     convert_flag_type                        flags = convert_flag::none,+    bool                                    *multiline = NULL,     const std::map<std::string,std::string> *macros = NULL) {-  return convert(pattern.c_str(), signature, flags, macros);+  return convert(pattern.c_str(), signature, flags, multiline, macros); }  } // namespace reflex

include/reflex/fuzzymatcher.h

@@ -289,9 +289,9 @@ class FuzzyMatcher : public Matcher {       bpt.sub = false;       bpt.pc1 += !bpt.alt;     }-    else if (ins_)+    else if (del_)     {-      // try inserting a pattern char that should have matched a deleted char in the text+      // try inserting a pattern char in the text to match a missing char in the text       DBGLOG("Delete: jump to %u at pos %zu char %d (0x%x)", jump, pos_, c1, c1);       bpt.sub = bpt.alt;       ++bpt.pc1;@@ -610,11 +610,11 @@ redo:           }           else           {-            if (Pattern::is_opcode_halt(opcode))-              break;             if (c1 == EOF)               break;             c1 = get();+            if (Pattern::is_opcode_halt(opcode))+              break;             DBGLOG("Get: c1 = %d (0x%x) at pos %zu", c1, c1, pos_ - 1);             if (bin_ || (c1 & 0xC0) != 0x80 || c1 == EOF)             {@@ -666,9 +666,13 @@ unrolled:           jump = Pattern::index_of(opcode);           if (jump == 0)           {-            // loop back to start state after only one char matched (one transition) but w/o full match, then optimize-            if (cap_ == 0 && pos_ == cur_ + 1 && method == Const::FIND)-              cur_ = pos_; // set cur_ to move forward from cur_ + 1 with FIND advance()+            // loop back to start state w/o full match: advance to avoid backtracking+            if (cap_ == 0 && pos_ > cur_ && method == Const::FIND)+            {+              // use bit_[] to check each char in buf_[cur_+1..pos_-1] if it is a starting char, if not then increase cur_+              while (++cur_ < pos_ && (pat_->bit_[static_cast<uint8_t>(buf_[cur_])] & 1))+                continue;+            }           }           else if (jump >= Pattern::Const::LONG)           {@@ -684,37 +688,45 @@ unrolled:         // match, i.e. cap_ > 0?         if (method == Const::MATCH)         {-          // exit fuzzy loop if fuzzy match succeeds till end of input+          // exit fuzzy loop if fuzzy match succeeds till end of input when insertions are allowed           if (cap_ > 0)           {-            if (c1 == EOF)-              break;-            while (err_ < max_)+            if (c1 != EOF && ins_)             {-              c1 = get();-              if (c1 == EOF)-                break;-              // skip one (multibyte) char-              if (!bin_ && c1 >= 0xC0)+              // text insertions are allowed+              while (err_ < max_)               {-                int n = (c1 >= 0xE0) + (c1 >= 0xF0);-                while (n-- >= 0)-                  if ((c1 = get()) == EOF)-                    break;+                ++err_;+                c1 = get();+                // reached the end?+                if (c1 == EOF)+                  break;+                // skip one (multibyte) char+                if (!bin_ && c1 >= 0xC0)+                {+                  int n = (c1 >= 0xE0) + (c1 >= 0xF0);+                  while (n-- >= 0)+                    if ((c1 = get()) == EOF)+                      break;+                }               }-              ++err_;             }-            if (at_end())+            if (c1 == EOF || ins_)             {-              DBGLOG("Match pos = %zu", pos_);-              set_current(pos_);-              break;+              // reached the end?+              if (at_end())+              {+                DBGLOG("Match pos = %zu", pos_);+                set_current(pos_);+                break;+              }             }+            cap_ = 0;           }         }         else         {-          // exit fuzzy loop if match or first char mismatched+          // exit fuzzy loop if match or if first char mismatched           if (cap_ > 0 || pos_ == static_cast<size_t>(txt_ + len_ - buf_ + 1))             break;         }@@ -729,7 +741,7 @@ unrolled:             if (stack == 0 || bpt_[stack - 1].pc0 != pc0)             {               point(bpt_[stack++], pc0, len0, false, c1 == EOF);-              DBGLOG("Point[%u] at %zu EOF", stack - 1, pc0 - pat_->opc_);+              DBGLOG("Point[%u] at %zu pos %zu (\\0|\\nEOF)", stack - 1, pc0 - pat_->opc_, pos_ - 1);             }           }           else@@ -801,7 +813,7 @@ unrolled:         }       }     }-    // if fuzzy matched with errors then perform a second pass ahead of this match to check for an exact match+    // if fuzzy find/split with errors then perform a second pass ahead of this match to check for an exact match     if (cap_ > 0 && err_ > 0 && !sst.use && (method == Const::FIND || method == Const::SPLIT))     {       // this part is based on advance() in matcher.cpp, limited to advancing ahead till the one of the first pattern char(s) match excluding \n@@ -1076,8 +1088,8 @@ unrolled:   std::vector<BacktrackPoint> bpt_; ///< vector of backtrack points, max_ size   uint8_t max_;                     ///< max errors   uint8_t err_;                     ///< accumulated edit distance (not guaranteed minimal)-  bool ins_;                        ///< fuzzy match permits inserted chars (extra chars)-  bool del_;                        ///< fuzzy match permits deleted chars (missing chars)+  bool ins_;                        ///< fuzzy match permits inserted chars (extra chars in the input)+  bool del_;                        ///< fuzzy match permits deleted chars (missing chars in the input)   bool sub_;                        ///< fuzzy match permits substituted chars   bool bin_;                        ///< fuzzy match bytes, not UTF-8 multibyte encodings };

include/reflex/matcher.h

@@ -48,9 +48,9 @@ class Matcher : public PatternMatcher<reflex::Pattern> {  public:   /// Convert a regex to an acceptable form, given the specified regex library signature `"[decls:]escapes[?+]"`, see reflex::convert.   template<typename T>-  static std::string convert(T regex, convert_flag_type flags = convert_flag::none)+  static std::string convert(T regex, convert_flag_type flags = convert_flag::none, bool *multiline = NULL)   {-    return reflex::convert(regex, "imsx#=^:abcdefhijklnrstuvwxzABDHLNQSUW<>?", flags);+    return reflex::convert(regex, "imsx#=^:abcdefhijklnrstuvwxzABDHLNQSUW<>?", flags, multiline);   }   /// Default constructor.   Matcher() : PatternMatcher<reflex::Pattern>()

include/reflex/pattern.h

@@ -820,19 +820,23 @@ class Pattern {   /// Meta characters.   enum Meta {     META_MIN = 0x100,+    // word boundaries     META_NWB = 0x101, ///< non-word boundary at begin `\Bx`     META_NWE = 0x102, ///< non-word boundary at end   `x\B`     META_BWB = 0x103, ///< begin of word at begin     `\<x` where \bx=(\<|\>)x     META_EWB = 0x104, ///< end of word at begin       `\>x`     META_BWE = 0x105, ///< begin of word at end       `x\<` where x\b=x(\<|\>)     META_EWE = 0x106, ///< end of word at end         `x\>`+    // line and buffer boundaries     META_BOL = 0x107, ///< begin of line              `^`     META_EOL = 0x108, ///< end of line                `$`     META_BOB = 0x109, ///< begin of buffer            `\A`     META_EOB = 0x10A, ///< end of buffer              `\Z`+    // indent boundaries     META_UND = 0x10B, ///< undent boundary            `\k`     META_IND = 0x10C, ///< indent boundary            `\i` (must be one but the largest META code)     META_DED = 0x10D, ///< dedent boundary            `\j` (must be the largest META code)+    // end of boundaries     META_MAX          ///< max meta characters   };   /// Initialize the pattern at construction.@@ -1142,7 +1146,7 @@ class Pattern {   {     return ((h << 3) ^ b) & (Const::HASH - 1);   }-  /// file indexing hash 0 <= indexhash() < 65536, must be additive: indexhash(x,b+1) = indexhash(x,b)+1 modulo 2^16+  /// file indexing hash 0 <= indexhash() < 65536, must be additive: indexhash(x,b+1) = indexhash(x,b)+1 modulo 2^16.   static inline Hash indexhash(Hash h, uint8_t b)   {     return (h << 6) - h - h - h + b;

include/reflex/pcre2matcher.h

@@ -48,9 +48,9 @@ class PCRE2Matcher : public PatternMatcher<std::string> {  public:   /// Convert a regex to an acceptable form, given the specified regex library signature `"[decls:]escapes[?+]"`, see reflex::convert.   template<typename T>-  static std::string convert(T regex, convert_flag_type flags = convert_flag::none)+  static std::string convert(T regex, convert_flag_type flags = convert_flag::none, bool *multiline = NULL)   {-    return reflex::convert(regex, "imPRsx!#<>=&|'(0123456789*:abcdefghnrstvwxzABCDGHKNQRSVWXZ0123456789?+", flags);+    return reflex::convert(regex, "imPRsx!#<>=&|'(0123456789*:abcdefghnrstvwxzABCDGHKNQRSVWXZ0123456789?+", flags, multiline);   }   /// Default constructor.   PCRE2Matcher()@@ -458,9 +458,9 @@ class PCRE2UTFMatcher : public PCRE2Matcher {  public:   /// Convert a regex to an acceptable form, given the specified regex library signature `"[decls:]escapes[?+]"`, see reflex::convert.   template<typename T>-  static std::string convert(T regex, convert_flag_type flags = convert_flag::none)+  static std::string convert(T regex, convert_flag_type flags = convert_flag::none, bool *multiline = NULL)   {-    return reflex::convert(regex, "imPRsx!#<>=&|'(0123456789*:abcdefghknprstvwxzABCDGHKNPQRSVWXZ0123456789?+", flags);+    return reflex::convert(regex, "imPRsx!#<>=&|'(0123456789*:abcdefghknprstvwxzABCDGHKNPQRSVWXZ0123456789?+", flags, multiline);   }   /// Default constructor.   PCRE2UTFMatcher() : PCRE2Matcher()

include/reflex/stdmatcher.h

@@ -47,9 +47,9 @@ class StdMatcher : public PatternMatcher<std::regex> {  public:   /// Convert a regex to an acceptable form, given the specified regex library signature `"[decls:]escapes[?+]"`, see reflex::convert.   template<typename T>-  static std::string convert(T regex, convert_flag_type flags = convert_flag::none)+  static std::string convert(T regex, convert_flag_type flags = convert_flag::none, bool *multiline = NULL)   {-    return reflex::convert(regex, "!=:bcdfnrstvwxBDSW?", flags);+    return reflex::convert(regex, "!=:bcdfnrstvwxBDSW?", flags, multiline);   }   /// Default constructor.   StdMatcher() : PatternMatcher<std::regex>()@@ -449,9 +449,9 @@ class StdPosixMatcher : public StdMatcher {  public:   /// Convert a regex to an acceptable form, given the specified regex library signature `"[decls:]escapes[?+]"`, see reflex::convert.   template<typename T>-  static std::string convert(T regex, convert_flag_type flags = convert_flag::none)+  static std::string convert(T regex, convert_flag_type flags = convert_flag::none, bool *multiline = NULL)   {-    return reflex::convert(regex, "fnrtv", flags);+    return reflex::convert(regex, "fnrtv", flags, multiline);   }   /// Default constructor.   StdPosixMatcher() : StdMatcher()

lib/convert.cpp

@@ -82,7 +82,7 @@ inline int uppercase(int c)   return static_cast<unsigned char>(c & ~0x20); } -static std::string posix_class(const char *s, int esc)+static std::string posix_class(const char *s, int esc, convert_flag_type flags) {   std::string regex;   const int *wc = Posix::range(s + (s[0] == '^'));@@ -90,7 +90,17 @@ static std::string posix_class(const char *s, int esc)   {     regex.assign("[");     if (s[0] == '^')+    {       regex.push_back('^');+    }+    else if (wc[0] <= '\n' && wc[1] >= '\n' && (flags & convert_flag::notnewline))+    {+      if (wc[0] != '\n')+        regex.append(latin1(wc[0], '\n' - 1, esc, false));+      if (wc[1] != '\n')+        regex.append(latin1('\n' + 1, wc[1], esc, false));+      wc += 2;+    }     for (; wc[1] != 0; wc += 2)       regex.append(latin1(wc[0], wc[1], esc, false));     regex.push_back(']');@@ -152,19 +162,25 @@ static std::string unicode_class(const char *s, int esc, convert_flag_type flags           regex.append(utf8(last, 0x10FFFF, esc, par, !(flags & convert_flag::permissive))).push_back('|');         }       }-      if (!regex.empty())-        regex.resize(regex.size() - 1);     }     else     {-      regex.assign(utf8(wc[0], wc[1], esc, par, !(flags & convert_flag::permissive)));-      wc += 2;+      if (wc[0] <= '\n' && wc[1] >= '\n' && (flags & convert_flag::notnewline))+      {+        if (wc[0] != '\n')+          regex.append(utf8(wc[0], '\n' - 1, esc, par, !(flags & convert_flag::permissive))).push_back('|');+        if (wc[1] != '\n')+          regex.append(utf8('\n' + 1, wc[1], esc, par, !(flags & convert_flag::permissive))).push_back('|');+        wc += 2;+      }       for (; wc[1] != 0; wc += 2)-        regex.append("|").append(utf8(wc[0], wc[1], esc, par, !(flags & convert_flag::permissive)));+        regex.append(utf8(wc[0], wc[1], esc, par, !(flags & convert_flag::permissive))).push_back('|');     }+    if (!regex.empty())+      regex.resize(regex.size() - 1);+    if (regex.find('|') != std::string::npos)+      regex.insert(0, par).push_back(')');   }-  if (regex.find('|') != std::string::npos)-    regex.insert(0, par).push_back(')');   return regex; } @@ -399,8 +415,10 @@ static void convert_anycase_ranges(ORanges<int>& ranges)     ranges.insert(i->first ^ 0x20, (i->second - 1) ^ 0x20); } -static std::string convert_ranges(const char *pattern, size_t pos, ORanges<int>& ranges, const std::map<size_t,std::string>& mod, convert_flag_type flags, const char *signature, const char *par)+static std::string convert_ranges(const char *pattern, size_t pos, ORanges<int>& ranges, const std::map<size_t,std::string>& mod, convert_flag_type flags, const char *signature, const char *par, bool& nl) {+  if (ranges.find('\n') != ranges.end())+    nl = true;   if (is_modified(mod, 'i'))     convert_anycase_ranges(ranges);   if (is_modified(mod, 'u') && ranges.hi() > 0x7F)@@ -410,12 +428,15 @@ static std::string convert_ranges(const char *pattern, size_t pos, ORanges<int>&   return convert_posix_ranges(ranges, signature); } -static void expand_list(const char *pattern, size_t len, size_t& loc, size_t& pos, convert_flag_type flags, const std::map<size_t,std::string>& mod, const char *signature, const char *par, const std::map<std::string,std::string> *macros, std::string& regex)+static void insert_list(const char *pattern, size_t len, size_t& pos, convert_flag_type flags, const std::map<size_t,std::string>& mod, ORanges<int>& ranges, const std::map<std::string,std::string> *macros);++static void expand_list(const char *pattern, size_t len, size_t& loc, size_t& pos, convert_flag_type flags, const std::map<size_t,std::string>& mod, const char *signature, const char *par, const std::map<std::string,std::string> *macros, std::string& regex, bool& nl) {-  bool no_newline = false;+  bool invert = false;+  bool newline = false;   if (pos + 1 < len && pattern[pos] == '^')   {-    no_newline = true;+    invert = true;     ++pos;   }   while (pos + 1 < len)@@ -424,43 +445,7 @@ static void expand_list(const char *pattern, size_t len, size_t& loc, size_t& po     if (c == '\\')     {       c = pattern[++pos];-      if (c == 'p' || c == 'P')-      {-        // translate \p{POSIX} and \P{POSIX}, while leaving Unicode classes intact-        size_t k = ++pos;-        if (pos >= len)-          throw regex_error(regex_error::invalid_class, pattern, pos);-        // get name X of \pX, \PX, \p{X}, and \P{X}-        std::string name;-        if (pattern[pos] == '{')-        {-          size_t j = pos + 1;-          if (c == 'P')-            name.push_back('^');-          k = j;-          while (k < len && pattern[k] != '}')-            ++k;-          if (k >= len)-            throw regex_error(regex_error::mismatched_braces, pattern, pos);-          name.append(pattern, j, k - j);-        }-        else-        {-          if (c == 'P')-            name.push_back('^');-          name.push_back(pattern[pos]);-        }-        std::string translated;-        int esc = hex_or_octal_escape(signature);-        translated = posix_class(name.c_str(), esc);-        if (!translated.empty())-        {-          regex.append(&pattern[loc], pos - loc - 2).append(translated.substr(1, translated.size() - 2));-          loc = k + 1;-        }-        pos = k;-      }-      else if (c == 's' && (flags & convert_flag::notnewline))+      if (c == 's' && (flags & convert_flag::notnewline))       {         if (is_modified(mod, 'u'))           regex.append(&pattern[loc], pos - loc - 1).append("\\t\\x0b-\\r\\x85\\p{Z}");@@ -468,16 +453,40 @@ static void expand_list(const char *pattern, size_t len, size_t& loc, size_t& po           regex.append(&pattern[loc], pos - loc - 1).append("\\h\\x0b-\\r\\x85\\xa0");         loc = pos + 1;       }-      else if (c == 'n')+      else if (c == 'p' || c == 'P')+      {+        nl = true; // safe, but it is too conservative to assume all \p{} include \n+      }+      else if (strchr("DHLUWXn", c) != NULL)       {-        no_newline = false;+        newline = true;       }     }     else if (c == '[' && (pattern[pos + 1] == ':' || pattern[pos + 1] == '.' || pattern[pos + 1] == '='))     {       ++pos;-      while (pos + 1 < len && pattern[++pos] != ']')-        continue;+      if (!invert && (strncmp(&pattern[pos], ":space:]", 8) == 0 || strncmp(&pattern[pos], ":cntrl:]", 8) == 0))+      {+        if ((flags & convert_flag::notnewline))+        {+          if (pattern[pos + 1] == 's')+            regex.append(&pattern[loc], pos - loc - 1).append("\\h\\x0b-\\r");+          else+            regex.append(&pattern[loc], pos - loc - 1).append("\\x00-\\t\\x0b-\\x1f\\x7f");+          pos += 7;+          loc = pos + 1;+        }+        else+        {+          while (pos + 1 < len && pattern[++pos] != ']')+            continue;+        }+      }+      else+      {+        while (pos + 1 < len && pattern[++pos] != ']')+          continue;+      }     }     else if (c == '|' && pattern[pos + 1] == '|' && pos + 3 < len && pattern[pos + 2] == '[')     {@@ -485,23 +494,25 @@ static void expand_list(const char *pattern, size_t len, size_t& loc, size_t& po       if (!supports_escape(signature, '['))         throw regex_error(regex_error::invalid_class, pattern, pos + 1);       pos += 3;-      expand_list(pattern, len, loc, pos, flags, mod, signature, par, macros, regex);+      expand_list(pattern, len, loc, pos, flags, mod, signature, par, macros, regex, nl);     }     else if (c == '&' && pattern[pos + 1] == '&' && pos + 3 < len && pattern[pos + 2] == '[')     {+      bool nl1;       // character class intersection [a-z&&[^aeiou]]       if (!supports_escape(signature, '['))         throw regex_error(regex_error::invalid_class, pattern, pos + 1);       pos += 3;-      expand_list(pattern, len, loc, pos, flags, mod, signature, par, macros, regex);+      expand_list(pattern, len, loc, pos, flags, mod, signature, par, macros, regex, nl1);     }     else if (c == '-' && pattern[pos + 1] == '-' && pos + 3 < len && pattern[pos + 2] == '[')     {+      bool nl1;       // character class subtraction [a-z--[aeiou]]       if (!supports_escape(signature, '['))         throw regex_error(regex_error::invalid_class, pattern, pos + 1);       pos += 3;-      expand_list(pattern, len, loc, pos, flags, mod, signature, par, macros, regex);+      expand_list(pattern, len, loc, pos, flags, mod, signature, par, macros, regex, nl1);     }     ++pos;     if (pos >= len || pattern[pos] == ']')@@ -509,33 +520,45 @@ static void expand_list(const char *pattern, size_t len, size_t& loc, size_t& po   }   if (pos >= len || pattern[pos] != ']')     throw regex_error(regex_error::mismatched_brackets, pattern, loc);-  if (no_newline && (flags & convert_flag::notnewline))+  if (invert && !newline && (flags & convert_flag::notnewline))   {     regex.append(&pattern[loc], pos - loc).append("\\n");     loc = pos;   }+  else if (!invert && newline)+  {+    nl = true;+  } } -static void insert_escape_class(const char *pattern, size_t pos, const std::map<size_t,std::string>& mod, ORanges<int>& ranges)+static void insert_escape_class(const char *pattern, size_t pos, convert_flag_type flags, const std::map<size_t,std::string>& mod, ORanges<int>& ranges) {   int c = pattern[pos];   char name[2] = { static_cast<char>(lowercase(c)), '\0' };-  const int *translated = NULL;+  const int *wc = NULL;   if (is_modified(mod, 'u'))-    translated = Unicode::range(name);+    wc = Unicode::range(name);   else-    translated = Posix::range(name);-  if (translated == NULL)+    wc = Posix::range(name);+  if (wc == NULL)     throw regex_error(regex_error::invalid_class, pattern, pos);   if (std::islower(c))   {-    for (const int *wc = translated; wc[1] != 0; wc += 2)+    if (wc[0] <= '\n' && wc[1] >= '\n' && (flags & convert_flag::notnewline))+    {+      if (wc[0] != '\n')+        ranges.insert(wc[0], '\n' - 1);+      if (wc[1] != '\n')+        ranges.insert('\n' + 1, wc[1]);+      wc += 2;+    }+    for (; wc[1] != 0; wc += 2)       ranges.insert(wc[0], wc[1]);   }   else   {     int last = 0x00;-    for (const int *wc = translated; wc[1] != 0; wc += 2)+    for (; wc[1] != 0; wc += 2)     {       if (wc[0] > 0x00)       {@@ -622,7 +645,7 @@ static int insert_escape(const char *pattern, size_t len, size_t& pos, convert_f     }     else     {-      insert_escape_class(pattern, pos, mod, ranges);+      insert_escape_class(pattern, pos, flags, mod, ranges);       return -1;     }   }@@ -646,20 +669,20 @@ static int insert_escape(const char *pattern, size_t len, size_t& pos, convert_f     {       name.push_back(pattern[k]);     }-    const int *translated = NULL;+    const int *wc = NULL;     const char *s = name.c_str();     if (s[0] == '^')       ++s;     if (is_modified(mod, 'u'))-      translated = Unicode::range(s);-    else if (translated == NULL)-      translated = Posix::range(s);-    if (translated == NULL)+      wc = Unicode::range(s);+    else+      wc = Posix::range(s);+    if (wc == NULL)       throw regex_error(regex_error::invalid_class, pattern, pos);     if (c == 'P' || name.at(0) == '^')     {       int last = 0x00;-      for (const int *wc = translated; wc[1] != 0; wc += 2)+      for (; wc[1] != 0; wc += 2)       {         if (wc[0] > 0x00)         {@@ -699,25 +722,26 @@ static int insert_escape(const char *pattern, size_t len, size_t& pos, convert_f     }     else     {-      for (const int *wc = translated; wc[1] != 0; wc += 2)+      if (wc[0] <= '\n' && wc[1] >= '\n' && (flags & convert_flag::notnewline))+      {+        if (wc[0] != '\n')+          ranges.insert(wc[0], '\n' - 1);+        if (wc[1] != '\n')+          ranges.insert('\n' + 1, wc[1]);+        wc += 2;+      }+      for (; wc[1] != 0; wc += 2)         ranges.insert(wc[0], wc[1]);     }     pos = k;     return -1;   }-  else if (c == 's' && (flags & convert_flag::notnewline))-  {-    // \s is the same as \p{Space} but without newline \n-    insert_escape_class(pattern, pos, mod, ranges);-    ranges.erase('\n');-    return -1;-  }   else if (std::isalpha(c))   {     const char *s = std::strchr(regex_abtnvfr, c);     if (s == NULL)     {-      insert_escape_class(pattern, pos, mod, ranges);+      insert_escape_class(pattern, pos, flags, mod, ranges);       return -1;     }     c = static_cast<int>(s - regex_abtnvfr + '\a');@@ -726,7 +750,7 @@ static int insert_escape(const char *pattern, size_t len, size_t& pos, convert_f   return c; } -static void insert_posix_class(const char *pattern, size_t len, size_t& pos, ORanges<int>& ranges)+static void insert_posix_class(const char *pattern, size_t len, size_t& pos, convert_flag_type flags, ORanges<int>& ranges) {   pos += 2;   char buf[8] = "";@@ -745,13 +769,13 @@ static void insert_posix_class(const char *pattern, size_t len, size_t& pos, ORa     else if (name[0] == 'A' && name[1] == 's')       name = const_cast<char*>("ASCII");   }-  const int *translated = Posix::range(name);-  if (translated == NULL)+  const int *wc = Posix::range(name);+  if (wc == NULL)     throw regex_error(regex_error::invalid_class, pattern, pos);   if (*buf == '^')   {     int last = 0x00;-    for (const int *wc = translated; wc[1] != 0; wc += 2)+    for (; wc[1] != 0; wc += 2)     {       if (wc[0] > 0x00)         ranges.insert(last, wc[0] - 1);@@ -762,14 +786,20 @@ static void insert_posix_class(const char *pattern, size_t len, size_t& pos, ORa   }   else   {-    for (const int *wc = translated; wc[1] != 0; wc += 2)+    if (wc[0] <= '\n' && wc[1] >= '\n' && (flags & convert_flag::notnewline))+    {+      if (wc[0] != '\n')+        ranges.insert(wc[0], '\n' - 1);+      if (wc[1] != '\n')+        ranges.insert('\n' + 1, wc[1]);+      wc += 2;+    }+    for (; wc[1] != 0; wc += 2)       ranges.insert(wc[0], wc[1]);   }   ++pos; } -static void insert_list(const char *pattern, size_t len, size_t& pos, convert_flag_type flags, const std::map<size_t,std::string>& mod, ORanges<int>& ranges, const std::map<std::string,std::string> *macros);- static void merge_list(const char *pattern, size_t len, size_t& pos, convert_flag_type flags, const std::map<size_t,std::string>& mod, ORanges<int>& ranges, const std::map<std::string,std::string> *macros) {   if (pattern[pos] == '[')@@ -928,7 +958,7 @@ static void insert_list(const char *pattern, size_t len, size_t& pos, convert_fl       // POSIX character class (ASCII only)       if (range)         throw regex_error(regex_error::invalid_class_range, pattern, pos);-      insert_posix_class(pattern, len, pos, ranges);+      insert_posix_class(pattern, len, pos, flags, ranges);       pc = -1;     }     else if (c == '[' && (pattern[pos + 1] == '.' || pattern[pos + 1] == '='))@@ -1024,7 +1054,7 @@ static void insert_list(const char *pattern, size_t len, size_t& pos, convert_fl //                                                                            // //////////////////////////////////////////////////////////////////////////////// -static void convert_escape_char(const char *pattern, size_t len, size_t& loc, size_t& pos, convert_flag_type flags, const char *signature, const std::map<size_t,std::string>& mod, const char *par, std::string& regex)+static void convert_escape_char(const char *pattern, size_t len, size_t& loc, size_t& pos, convert_flag_type flags, const char *signature, const std::map<size_t,std::string>& mod, const char *par, std::string& regex, bool& nl) {   int c = pattern[pos];   if (std::strchr(regex_unescapes, c) != NULL)@@ -1044,9 +1074,11 @@ static void convert_escape_char(const char *pattern, size_t len, size_t& loc, si   {     char buf[3] = { '^', static_cast<char>(lowercase(c)), '\0' };     bool invert = std::isupper(c) != 0;+    if (c == 'n' || (invert && strchr("DHLUWX", c) != NULL))+      nl = true;     const char *name = buf + !invert;-    std::string translated;     int esc = hex_or_octal_escape(signature);+    std::string translated;     if (is_modified(mod, 'u'))     {       if (!supports_escape(signature, 'p'))@@ -1054,7 +1086,7 @@ static void convert_escape_char(const char *pattern, size_t len, size_t& loc, si     }     else if (!supports_escape(signature, c))     {-      translated = posix_class(name, esc);+      translated = posix_class(name, esc, flags);     }     if (!translated.empty())     {@@ -1157,15 +1189,20 @@ static void convert_escape_char(const char *pattern, size_t len, size_t& loc, si   } } -static void convert_escape(const char *pattern, size_t len, size_t& loc, size_t& pos, convert_flag_type flags, const char *signature, const std::map<size_t,std::string>& mod, const char *par, std::string& regex)+static void convert_escape(const char *pattern, size_t len, size_t& loc, size_t& pos, convert_flag_type flags, const char *signature, const std::map<size_t,std::string>& mod, const char *par, std::string& regex, bool& nl) {   int c = pattern[pos];   if (c == '\n' || c == '\r')   {+    if (c == '\n')+      nl = true;     // remove line continuation from \ \n (\ \r\n) to next line, skipping indent     regex.append(&pattern[loc], pos - loc - 1);     if (++pos < len && pattern[pos] == '\n')+    {       ++pos;+      nl = true;+    }     while (pos < len && ((c = pattern[pos]) == ' ' || c == '\t'))       ++pos;     loc = pos;@@ -1179,6 +1216,8 @@ static void convert_escape(const char *pattern, size_t len, size_t& loc, size_t&     if (c < 0x21 || c >= 0x7F)       throw regex_error(regex_error::invalid_escape, pattern, pos);     c &= 0x1F;+    if (c == '\n')+      nl = true;     if (!supports_escape(signature, 'c'))     {       // translate \cX to \xXX@@ -1224,6 +1263,8 @@ static void convert_escape(const char *pattern, size_t len, size_t& loc, size_t&     }     if (wc > 0xFF)       throw regex_error(regex_error::invalid_escape, pattern, pos);+    if (wc == '\n')+      nl = true;     if (std::isalpha(wc) && is_modified(mod, 'i'))     {       // anycase: translate A to [Aa]@@ -1247,6 +1288,8 @@ static void convert_escape(const char *pattern, size_t len, size_t& loc, size_t&   {     size_t k = pos;     int wc = (c == 'o' ? convert_oct(pattern, len, k) : convert_hex(pattern, len, k, flags));+    if (wc == '\n')+      nl = true;     if (wc >= 0)     {       if (c == 'u' && wc >= 0xD800 && wc < 0xE000)@@ -1305,7 +1348,7 @@ static void convert_escape(const char *pattern, size_t len, size_t& loc, size_t&     }     else     {-      convert_escape_char(pattern, len, loc, pos, flags, signature, mod, par, regex);+      convert_escape_char(pattern, len, loc, pos, flags, signature, mod, par, regex, nl);     }   }   else if (c == 'p' || c == 'P')@@ -1337,12 +1380,7 @@ static void convert_escape(const char *pattern, size_t len, size_t& loc, size_t&     int esc = hex_or_octal_escape(signature);     if (supports_escape(signature, 'p'))     {-      translated = posix_class(name.c_str(), esc);-      if (!translated.empty())-      {-        regex.append(&pattern[loc], pos - loc - 2).append("[").append(translated.substr(1, translated.size() - 2)).append("]");-        loc = k + 1;-      }+      nl = true; // safe, but it is too conservative to assume all \p{} include \n     }     else     {@@ -1351,14 +1389,14 @@ static void convert_escape(const char *pattern, size_t len, size_t& loc, size_t&         translated = unicode_class(name.c_str(), esc, flags, par);         if (translated.empty())         {-          translated = posix_class(name.c_str(), esc);+          translated = posix_class(name.c_str(), esc, flags);           if (translated.empty())             throw regex_error(regex_error::invalid_class, pattern, pos);         }       }       else       {-        translated = posix_class(name.c_str(), esc);+        translated = posix_class(name.c_str(), esc, flags);         if (translated.empty() && !supports_escape(signature, c))           throw regex_error(regex_error::invalid_class, pattern, pos);       }@@ -1372,28 +1410,30 @@ static void convert_escape(const char *pattern, size_t len, size_t& loc, size_t&   }   else if (c == 's' && (flags & convert_flag::notnewline))   {-    // \s is the same as \p{Space} but without newline \n-    if (supports_escape(signature, 'p'))+    // \s is the same as \p{Space} without newline \n+    if (is_modified(mod, 'u'))     {-      if (is_modified(mod, 'u'))+      if (supports_escape(signature, 'p'))+      {         regex.append(&pattern[loc], pos - loc - 1).append("[\\t\\x0b-\\r\\x85\\p{Z}]");+      }       else-        regex.append(&pattern[loc], pos - loc - 1).append("[\\h\\x0b-\\r\\x85\\xa0]");-      loc = pos + 1;+      {+        ORanges<int> ranges;+        insert_escape_class(pattern, pos, flags, mod, ranges);+        regex.append(&pattern[loc], pos - loc - 1);+        regex.append(convert_ranges(pattern, pos, ranges, mod, flags, signature, par, nl));+      }     }     else     {-      ORanges<int> ranges;-      insert_escape_class(pattern, pos, mod, ranges);-      ranges.erase('\n');-      regex.append(&pattern[loc], pos - loc - 1);-      regex.append(convert_ranges(pattern, pos, ranges, mod, flags, signature, par));-      loc = pos + 1;+      regex.append(&pattern[loc], pos - loc - 1).append("[\\h\\x0b-\\r\\x85\\xa0]");     }+    loc = pos + 1;   }   else   {-    convert_escape_char(pattern, len, loc, pos, flags, signature, mod, par, regex);+    convert_escape_char(pattern, len, loc, pos, flags, signature, mod, par, regex, nl);   } } @@ -1403,7 +1443,7 @@ static void convert_escape(const char *pattern, size_t len, size_t& loc, size_t& //                                                                            // //////////////////////////////////////////////////////////////////////////////// -std::string convert(const char *pattern, const char *signature, convert_flag_type flags, const std::map<std::string,std::string> *macros)+std::string convert(const char *pattern, const char *signature, convert_flag_type flags, bool *multiline, const std::map<std::string,std::string> *macros) {   std::string regex;   bool anc = false;@@ -1417,6 +1457,7 @@ std::string convert(const char *pattern, const char *signature, convert_flag_typ   bool can = std::strchr(signature, ':') != NULL;   const char *par = can ? "(?:" : "(";   std::map<size_t,std::string> mod;+  bool nl = false;   if ((flags & convert_flag::anycase))     enable_modifier('i', pattern, 0, mod, 0);   if ((flags & convert_flag::dotall))@@ -1553,21 +1594,23 @@ std::string convert(const char *pattern, const char *signature, convert_flag_typ             loc = pos + 1;           }           beg = false;+          nl = true;         }         else if (c == 'X')         {           if (!is_modified(mod, 'u') || !supports_escape(signature, 'X'))           { #ifndef WITH_UTF8_UNRESTRICTED-            // translate \X to match any ISO-8859-1 and valid UTF-8+            // translate \X to match any valid UTF-8             regex.append(&pattern[loc], pos - loc - 1).append(par).append("[\\x00-\\xff]|[\\xc2-\\xdf][\\x80-\\xbf]|\\xe0[\\xa0-\\xbf][\\x80-\\xbf]|[\\xe1-\\xec][\\x80-\\xbf][\\x80-\\xbf]|\\xed[\\x80-\\x9f][\\x80-\\xbf]|[\\xee\\xef][\\x80-\\xbf][\\x80-\\xbf]|\\xf0[\\x90-\\xbf][\\x80-\\xbf][\\x80-\\xbf]|[\\xf1-\\xf3][\\x80-\\xbf][\\x80-\\xbf][\\x80-\\xbf]|\\xf4[\\x80-\\x8f][\\x80-\\xbf][\\x80-\\xbf]").push_back(')'); #else-            // translate \X to match any ISO-8859-1 and UTF-8 encodings, including malformed UTF-8 with overruns+            // translate \X to match any UTF-8 encoding, including malformed UTF-8 with overruns             regex.append(&pattern[loc], pos - loc - 1).append(par).append("[\\x00-\\xff]|[\\xc0-\\xff][\\x80-\\xbf]+").push_back(')'); #endif             loc = pos + 1;           }           beg = false;+          nl = true;         }         else if ((flags & convert_flag::basic) && (c == '?' || c == '+' || c == '|' || c == '(' || c == ')' || c == '{' || c == '}'))         {@@ -1578,7 +1621,7 @@ std::string convert(const char *pattern, const char *signature, convert_flag_typ         }         else         {-          convert_escape(pattern, len, loc, pos, flags, signature, mod, par, regex);+          convert_escape(pattern, len, loc, pos, flags, signature, mod, par, regex, nl);           anc = (std::strchr(regex_anchors, c) != NULL);           if (!anc || c == 'Z' || c == 'z')             beg = false;@@ -1852,7 +1895,7 @@ std::string convert(const char *pattern, const char *signature, convert_flag_typ         else if (supports_escape(signature, 'p'))         {           ++pos;-          expand_list(pattern, len, loc, pos, flags, mod, signature, par, macros, regex);+          expand_list(pattern, len, loc, pos, flags, mod, signature, par, macros, regex, nl);           anc = false;           beg = false;         }@@ -1862,7 +1905,7 @@ std::string convert(const char *pattern, const char *signature, convert_flag_typ           regex.append(&pattern[loc], pos - loc);           ++pos;           insert_list(pattern, len, pos, flags, mod, ranges, macros);-          regex.append(convert_ranges(pattern, pos, ranges, mod, flags, signature, par));+          regex.append(convert_ranges(pattern, pos, ranges, mod, flags, signature, par, nl));           loc = pos + 1;           anc = false;           beg = false;@@ -1958,7 +2001,7 @@ std::string convert(const char *pattern, const char *signature, convert_flag_typ               if (subpos + 1 < subregex.size())                 throw regex_error(regex_error::invalid_class_range, pattern, loc);               extend_list(pattern, len, pos, flags, mod, ranges, macros);-              regex.append(convert_ranges(pattern, pos, ranges, mod, flags, signature, par));+              regex.append(convert_ranges(pattern, pos, ranges, mod, flags, signature, par, nl));             }             else             {@@ -2052,6 +2095,7 @@ std::string convert(const char *pattern, const char *signature, convert_flag_typ           {             regex.append(&pattern[loc], pos - loc).append(par).append("[\\x00-\\xff][\\x80-\\xbf]*)");             loc = pos + 1;+            nl = true;           }           else if (!supports_escape(signature, 'p'))           {@@ -2068,6 +2112,7 @@ std::string convert(const char *pattern, const char *signature, convert_flag_typ           // dotall: translate . to [\x00-\xff]           regex.append(&pattern[loc], pos - loc).append("[\\x00-\\xff]");           loc = pos + 1;+          nl = true;         }         else if (!supports_modifier(signature, 's') && !supports_escape(signature, '.'))         {@@ -2098,8 +2143,11 @@ std::string convert(const char *pattern, const char *signature, convert_flag_typ         if (pos + 1 < len && !(flags & convert_flag::basic) && (pattern[pos + 1] == '?' || pattern[pos + 1] == '+') && !supports_escape(signature, pattern[pos + 1]))           throw regex_error(regex_error::invalid_quantifier, pattern, pos + 1);         break;-      case '\t':       case '\n':+        if (!is_modified(mod, 'x'))+          nl = true;+        // fall through+      case '\t':       case '\r':       case ' ':         if (is_modified(mod, 'x'))@@ -2173,6 +2221,8 @@ std::string convert(const char *pattern, const char *signature, convert_flag_typ     regex.push_back(')');   if ((flags & convert_flag::recap))     regex.push_back(')');+  if (multiline != NULL)+    *multiline = nl;   return regex; } 

lib/matcher.cpp

@@ -436,9 +436,13 @@ unrolled:       Pattern::Index jump = Pattern::index_of(opcode);       if (jump == 0)       {-        // loop back to start state after only one char matched (one transition) but w/o full match, then optimize-        if (cap_ == 0 && pos_ == cur_ + 1 && method == Const::FIND)-          cur_ = pos_; // set cur_ to move forward from cur_ + 1 with FIND advance()+        // loop back to start state w/o full match: advance to avoid backtracking+        if (cap_ == 0 && pos_ > cur_ && method == Const::FIND)+        {+          // use bit_[] to check each char in buf_[cur_+1..pos_-1] if it is a starting char, if not then increase cur_+          while (++cur_ < pos_ && (pat_->bit_[static_cast<uint8_t>(buf_[cur_])] & 1))+            continue;+        }       }       else if (jump >= Pattern::Const::LONG)       {@@ -576,11 +580,40 @@ unrolled:     else if (method == Const::FIND)     {       DBGLOG("Reject empty match and continue?");-      // skip one char to keep searching-      set_current(++cur_);       // allow FIND with "N" to match an empty line, with ^$ etc.       if (cap_ == 0 || !opt_.N)-        goto scan;+      {+        // if we found an empty match, we keep looking for non-empty matches when "N" is off+        if (cap_ != 0)+        {+          if (+#if defined(COMPILE_AVX512BW)+              simd_advance_avx512bw()+#elif defined(COMPILE_AVX2)+              simd_advance_avx2()+#else+              advance()+#endif+             )+          {+            goto scan;+          }+          set_current(++cur_);+          // at end of input, no matches remain+          cap_ = 0;+        }+        else+        {+          // advance one char to keep searching+          set_current(++cur_);+          goto scan;+        }+      }+      else+      {+        // advance one char to keep searching at the next character position when we return+        set_current(++cur_);+      }       DBGLOG("Accept empty match");     }     else@@ -633,7 +666,13 @@ bool Matcher::advance()   if (pat_->len_ == 0)   {     if (min == 0)-      return false;+    {+      // if "N" is on (non-empty pattern matches only), then there is nothing to match+      if (opt_.N)+        return false;+      // if "N" is off, then match an empty-matching pattern as if non-empty+      min = 1;+    }     if (loc + min > end_)     {       set_current_match(loc - 1);

lib/pattern.cpp

@@ -191,25 +191,22 @@ void Pattern::init(const char *options, const uint8_t *pred)       min_ = pred[1] & 0x0f;       one_ = pred[1] & 0x10;       memcpy(chr_, pred + 2, len_);-      if (min_ > 0)+      size_t n = len_ + 2;+      if (len_ == 0)       {-        size_t n = len_ + 2;-        if (min_ > 1 && len_ == 0)-        {-          for (size_t i = 0; i < 256; ++i)-            bit_[i] = ~pred[i + n];-          n += 256;-        }-        if (min_ >= 4)-        {-          for (size_t i = 0; i < Const::HASH; ++i)-            pmh_[i] = ~pred[i + n];-        }-        else-        {-          for (size_t i = 0; i < Const::HASH; ++i)-            pma_[i] = ~pred[i + n];-        }+        for (size_t i = 0; i < 256; ++i)+          bit_[i] = ~pred[i + n];+        n += 256;+      }+      if (min_ >= 4)+      {+        for (size_t i = 0; i < Const::HASH; ++i)+          pmh_[i] = ~pred[i + n];+      }+      else+      {+        for (size_t i = 0; i < Const::HASH; ++i)+          pma_[i] = ~pred[i + n];       }     }   }@@ -268,27 +265,30 @@ void Pattern::init(const char *options, const uint8_t *pred)     tfa_.clear();   }   // clean up bitap and compute bitap entropy-  if (min_ > 0 && len_ == 0)+  if (len_ == 0)   {     // bitap entropy to estimate false positive rate     npy_ = 0;-    for (Char i = 0; i < 256; ++i)+    if (min_ > 0)     {-      bit_[i] |= ~((1 << min_) - 1);-      npy_ += (bit_[i] & 0x01) == 0;-      npy_ += (bit_[i] & 0x02) == 0;-      npy_ += (bit_[i] & 0x04) == 0;-      npy_ += (bit_[i] & 0x08) == 0;-      npy_ += (bit_[i] & 0x10) == 0;-      npy_ += (bit_[i] & 0x20) == 0;-      npy_ += (bit_[i] & 0x40) == 0;-      npy_ += (bit_[i] & 0x80) == 0;+      for (Char i = 0; i < 256; ++i)+      {+        bit_[i] |= ~((1 << min_) - 1);+        npy_ += (bit_[i] & 0x01) == 0;+        npy_ += (bit_[i] & 0x02) == 0;+        npy_ += (bit_[i] & 0x04) == 0;+        npy_ += (bit_[i] & 0x08) == 0;+        npy_ += (bit_[i] & 0x10) == 0;+        npy_ += (bit_[i] & 0x20) == 0;+        npy_ += (bit_[i] & 0x40) == 0;+        npy_ += (bit_[i] & 0x80) == 0;+      }+      // average entropy per bitap position, we don't use bitap when entropy is too high for short patterns+      npy_ /= min_;+      // if patterns are longer then 4, we use bitap to increase accuracy, unless entropy is very high+      if (min_ > 4 && npy_ < 200)+        npy_ = 0;     }-    // average entropy per bitap position, we don't use bitap when entropy is too high for short patterns-    npy_ /= min_;-    // if patterns are longer then 4, we use bitap to increase accuracy, unless entropy is very high-    if (min_ > 4 && npy_ < 200)-      npy_ = 0;     // needle count and frequency thresholds to enable needle-based search     uint16_t pinmax = 8;     uint8_t freqmax1 = 91; // one position@@ -314,7 +314,8 @@ void Pattern::init(const char *options, const uint8_t *pred)     uint16_t freqsum = 0;     uint8_t freqlcp = 255; // max     uint8_t freqlcs = 255; // max-    for (uint16_t k = 0; k < min_; ++k)+    size_t min = (min_ == 0 ? 1 : min_);+    for (uint16_t k = 0; k < min; ++k)     {       Pred mask = 1 << k;       uint16_t n = 0;@@ -357,14 +358,14 @@ void Pattern::init(const char *options, const uint8_t *pred)       }     }     // one position to pin: make lcp and lcs equal (compared and optimized later)-    if (min_ == 1 || ((freqsum <= freqlcp || nlcs == 65535) && freqsum <= freqmax1))+    if (min == 1 || ((freqsum <= freqlcp || nlcs == 65535) && freqsum <= freqmax1))     {       nlcs = nlcp;       lcs_ = lcp_;     }     // number of needles required     uint16_t n = nlcp > nlcs ? nlcp : nlcs;-    DBGLOG("min=%zu lcp=%hu(%hu) pin=%hu nlcp=%hu(%hu) freq=%hu(%hu) freqsum=%hu npy=%zu", min_, lcp_, lcs_, n, nlcp, nlcs, freqlcp, freqlcs, freqsum, npy_);+    DBGLOG("min=%zu lcp=%hu(%hu) pin=%hu nlcp=%hu(%hu) freq=%hu(%hu) freqsum=%hu npy=%zu", min, lcp_, lcs_, n, nlcp, nlcs, freqlcp, freqlcs, freqsum, npy_);     // determine if a needle-based search is worthwhile, below or meeting the thresholds     if (n <= pinmax && freqlcp <= freqmax2)     {@@ -418,6 +419,7 @@ void Pattern::init(const char *options, const uint8_t *pred)         }       }     }+    DBGLOG("len=%zu lcp=%hu(%hu)", len_, lcp_, lcs_);     uint16_t j;     for (i = n - 1, j = i; j > 0; --j)       if (chr_[j - 1] == chr_[i])@@ -3738,7 +3740,7 @@ void Pattern::predict_match_dfa(const DFA::State *start)   std::memset(bit_, 0xFF, sizeof(bit_));   std::memset(pmh_, 0xFF, sizeof(pmh_));   std::memset(pma_, 0xFF, sizeof(pma_));-  if (state != NULL && state->accept == 0)+  if (state != NULL && (len_ == 0 || state->accept == 0))   {     gen_predict_match(state); #ifdef DEBUG@@ -3774,7 +3776,7 @@ void Pattern::predict_match_dfa(const DFA::State *start)     } #endif   }-  DBGLOGN("min = %zu", min_);+  DBGLOG("min = %zu len = %zu", min_, len_);   DBGLOG("END Pattern::predict_match_dfa()"); } @@ -4137,27 +4139,24 @@ bool Pattern::match_hfa_transitions(size_t level, const HFA::Hashes& hashes, con  void Pattern::write_predictor(FILE *file) const {-  ::fprintf(file, "const reflex::Pattern::Pred reflex_pred_%s[%zu] = {", opt_.n.empty() ? "FSM" : opt_.n.c_str(), 2 + len_ + (min_ > 1 && len_ == 0) * 256 + (min_ > 0) * Const::HASH);+  ::fprintf(file, "const reflex::Pattern::Pred reflex_pred_%s[%zu] = {", opt_.n.empty() ? "FSM" : opt_.n.c_str(), 2 + len_ + (len_ == 0) * 256 + Const::HASH);   ::fprintf(file, "\n  %3hhu,%3hhu,", static_cast<uint8_t>(len_), (static_cast<uint8_t>(min_ | (one_ << 4))));   for (size_t i = 0; i < len_; ++i)     ::fprintf(file, "%s%3hhu,", ((i + 2) & 0xF) ? "" : "\n  ", static_cast<uint8_t>(chr_[i]));-  if (min_ > 0)+  if (len_ == 0)   {-    if (min_ > 1 && len_ == 0)-    {-      for (Char i = 0; i < 256; ++i)-        ::fprintf(file, "%s%3hhu,", (i & 0xF) ? "" : "\n  ", static_cast<uint8_t>(~bit_[i]));-    }-    if (min_ >= 4)-    {-      for (Hash i = 0; i < Const::HASH; ++i)-        ::fprintf(file, "%s%3hhu,", (i & 0xF) ? "" : "\n  ", static_cast<uint8_t>(~pmh_[i]));-    }-    else-    {-      for (Hash i = 0; i < Const::HASH; ++i)-        ::fprintf(file, "%s%3hhu,", (i & 0xF) ? "" : "\n  ", static_cast<uint8_t>(~pma_[i]));-    }+    for (Char i = 0; i < 256; ++i)+      ::fprintf(file, "%s%3hhu,", (i & 0xF) ? "" : "\n  ", static_cast<uint8_t>(~bit_[i]));+  }+  if (min_ >= 4)+  {+    for (Hash i = 0; i < Const::HASH; ++i)+      ::fprintf(file, "%s%3hhu,", (i & 0xF) ? "" : "\n  ", static_cast<uint8_t>(~pmh_[i]));+  }+  else+  {+    for (Hash i = 0; i < Const::HASH; ++i)+      ::fprintf(file, "%s%3hhu,", (i & 0xF) ? "" : "\n  ", static_cast<uint8_t>(~pma_[i]));   }   ::fprintf(file, "\n};\n\n"); }

src/flag.hpp

@@ -69,12 +69,12 @@ enum class Sort { NA, NAME, BEST, SIZE, USED, CHANGED, CREATED, LIST }; enum class Action { UNSP, SKIP, READ, RECURSE };  // ugrep command-line options-extern bool flag_all_threads;+extern bool flag_all_threads; // internal flag extern bool flag_any_line; extern bool flag_basic_regexp; extern bool flag_best_match; extern bool flag_bool;-extern bool flag_color_term;+extern bool flag_color_term; // internal flag extern bool flag_confirm; extern bool flag_count; extern bool flag_cpp;@@ -87,18 +87,20 @@ extern bool flag_files_with_matches; extern bool flag_files_without_match; extern bool flag_fixed_strings; extern bool flag_glob_ignore_case;+extern bool flag_grep; // internal flag extern bool flag_hex;-extern bool flag_hex_star;-extern bool flag_hex_cbr;-extern bool flag_hex_chr;-extern bool flag_hex_hbr;+extern bool flag_hex_star; // hexdump flag+extern bool flag_hex_cbr; // hexdump flag+extern bool flag_hex_chr; // hexdump flag+extern bool flag_hex_hbr; // hexdump flag extern bool flag_hidden;-extern bool flag_hyperlink_line;+extern bool flag_hyperlink_line; // internal flag extern bool flag_invert_match; extern bool flag_json; extern bool flag_line_buffered; extern bool flag_line_regexp; extern bool flag_match;+extern bool flag_multiline; // internal flag extern bool flag_no_dereference; extern bool flag_no_header; extern bool flag_no_messages;@@ -109,10 +111,10 @@ extern bool flag_only_matching; extern bool flag_perl_regexp; extern bool flag_pretty; extern bool flag_quiet;-extern bool flag_sort_rev;+extern bool flag_sort_rev; // internal flag extern bool flag_stdin;-extern bool flag_tty_term;-extern bool flag_usage_warnings;+extern bool flag_tty_term; // internal flag+extern bool flag_usage_warnings; // internal flag extern bool flag_word_regexp; extern bool flag_xml; extern bool flag_with_hex;@@ -134,20 +136,20 @@ extern Flag flag_smart_case; extern Flag flag_text; extern Flag flag_tree; extern Flag flag_ungroup;-extern Sort flag_sort_key;-extern Action flag_devices_action;-extern Action flag_directories_action;+extern Sort flag_sort_key; // internal flag+extern Action flag_devices_action; // internal flag+extern Action flag_directories_action; // internal flag extern size_t flag_after_context; extern size_t flag_before_context; extern size_t flag_delay;-extern size_t flag_exclude_iglob_size;-extern size_t flag_exclude_iglob_dir_size;+extern size_t flag_exclude_iglob_size; // internal flag+extern size_t flag_exclude_iglob_dir_size; // internal flag extern size_t flag_fuzzy;-extern size_t flag_hex_after;-extern size_t flag_hex_before;-extern size_t flag_hex_columns;-extern size_t flag_include_iglob_size;-extern size_t flag_include_iglob_dir_size;+extern size_t flag_hex_after; // internal flag+extern size_t flag_hex_before; // internal flag+extern size_t flag_hex_columns; // internal flag+extern size_t flag_include_iglob_size; // internal flag+extern size_t flag_include_iglob_dir_size; // internal flag extern size_t flag_jobs; extern size_t flag_max_count; extern size_t flag_max_depth;@@ -164,7 +166,7 @@ extern size_t flag_query; extern size_t flag_tabs; extern size_t flag_width; extern size_t flag_zmax;-extern const char *flag_apply_color;+extern const char *flag_apply_color; // internal flag extern const char *flag_binary_files; extern const char *flag_color; extern const char *flag_colors;@@ -186,17 +188,17 @@ extern const char *flag_pager; extern const char *flag_replace; extern const char *flag_save_config; extern const char *flag_separator;-extern const char *flag_separator_dash;-extern const char *flag_separator_plus;-extern const char *flag_separator_bar;+extern const char *flag_separator_dash; // internal flag+extern const char *flag_separator_plus; // internal flag+extern const char *flag_separator_bar; // internal flag extern const char *flag_sort; extern const char *flag_stats; extern const char *flag_tag; extern const char *flag_view; extern std::string flag_config_file; extern std::string flag_filter;-extern std::string flag_hyperlink_prefix;-extern std::string flag_hyperlink_path;+extern std::string flag_hyperlink_prefix; // internal flag+extern std::string flag_hyperlink_path; // internal flag extern std::set<std::string> flag_config_options; extern std::vector<std::string> flag_regexp; extern std::vector<std::string> flag_file;

src/output.cpp

@@ -759,12 +759,12 @@ void Output::format(const char *format, size_t matches) }  // output formatted match with options --format, --format-open, --format-close-void Output::format(const char *format, const char *pathname, const std::string& partname, size_t matches, size_t *matching, reflex::AbstractMatcher *matcher, bool& heading, bool body, bool next)+bool Output::format(const char *format, const char *pathname, const std::string& partname, size_t matches, size_t *matching, reflex::AbstractMatcher *matcher, bool& heading, bool body, bool next) {   if (!body)     lineno_ = 0;   else if (lineno_ > 0 && lineno_ == matcher->lineno() && matcher->lines() == 1)-    return;+    return false;    if (matching != NULL)     ++*matching;@@ -1322,6 +1322,8 @@ void Output::format(const char *format, const char *pathname, const std::string&   // only output the pathname once   if (flag_heading)     heading = false;++  return true; }  // output formatted match with options -v --format

src/output.hpp

@@ -743,8 +743,8 @@ class Output {   // output format with option --format-begin and --format-end   void format(const char *format, size_t matches); -  // output formatted match with options --format, --format-open, --format-close-  void format(const char *format, const char *pathname, const std::string& partname, size_t matches, size_t *matching, reflex::AbstractMatcher *matcher, bool& heading, bool body, bool next);+  // output formatted match with options --format, --format-open, --format-close, returns false when nothing is output+  bool format(const char *format, const char *pathname, const std::string& partname, size_t matches, size_t *matching, reflex::AbstractMatcher *matcher, bool& heading, bool body, bool next);    // output formatted inverted match with options -v --format, --format-open, --format-close   void format_invert(const char *format, const char *pathname, const std::string& partname, size_t matches, size_t lineno, size_t offset, const char *ptr, size_t size, bool& heading, bool next);

src/query.cpp

@@ -458,16 +458,16 @@ void Query::redraw()     Screen::put(14, 0, "\033[7m^L\033[m refresh screen");     Screen::put(15, 0, "\033[7m^Q\033[m quick exit and output");     Screen::put(16, 0, "\033[7m^R\033[m or \033[7mF4\033[m restore bookmark");-    Screen::put(17, 0, "\033[7m^S\033[m scroll to next file/dir");+    Screen::put(17, 0, "\033[7m^S\033[m next dir/file/context");     Screen::put(18, 0, "\033[7m^T\033[m toggle colors");     Screen::put(19, 0, "\033[7m^U\033[m delete before cursor");     Screen::put(20, 0, "\033[7m^V\033[m verbatim character");-    Screen::put(21, 0, "\033[7m^W\033[m scroll back one file/dir");+    Screen::put(21, 0, "\033[7m^W\033[m prev dir/file/context");     Screen::put(22, 0, "\033[7m^X\033[m or \033[7mF3\033[m set bookmark");     Screen::put(23, 0, "\033[7m^Y\033[m or \033[7mF2\033[m view or edit file");     Screen::put(24, 0, "\033[7m^Z\033[m or \033[7mF1\033[m help");     Screen::put(25, 0, "\033[7m^^\033[m chdir to starting dir");-    Screen::put(26, 0, "\033[7m^\\\033[m terminate process");+    Screen::put(26, 0, "\033[7m^\\\033[m force terminate process");     Screen::put(27, 0, "");     Screen::put(28, 0, "\033[7mM-/xxxx/\033[m U+xxxx code point");     Screen::put(29, 0, "");@@ -1351,7 +1351,7 @@ void Query::search()    if (search_thread_.joinable())   {-    // clear "Searching..." or "(END)", if displayed+    // clear "Searching..." or "~~~", if displayed     if (error_ == -1 && rows_ < row_ + Screen::rows - 1)     {       Screen::normal();@@ -1442,7 +1442,7 @@ bool Query::update()         searching_[11] = '.';         searching_[9 + dots_] = '\0'; -        Screen::put(rows_ - row_ + 1, 0, eof_ ? "(END)" : searching_);+        Screen::put(rows_ - row_ + 1, 0, eof_ ? "~~~" : searching_);         Screen::normal();          // when still searching, don't immediately clear the rest of the screen to avoid screen flicker, clear after 300 ms (init dots_ = 6 and three iters)@@ -3619,9 +3619,15 @@ bool Query::find_filename(int ref, std::string& filename, bool compare_dir)     if (pos1 == pos2 && (pos1 == std::string::npos || new_filename.compare(0, pos1, filename, 0, pos2) == 0))       return false; // the extracted filename is the same or is in the same directory as the old filename   }+  else if ((flag_after_context > 0 || flag_before_context > 0) && new_filename.compare(flag_group_separator) == 0)+  {+    // -ABC: jump to the group-separator (default is '--')+    return true;+  }   else if (new_filename.compare(filename) == 0)   {-    return false; // the new filename is the same as the old filename+    // the new filename is the same as the old filename+    return false;   }    filename.swap(new_filename);

src/ugrep.cpp

@@ -202,40 +202,6 @@ reflex::Matcher magic_matcher; // concurrent access is not thread safe // the --filter-magic-label pattern DFA reflex::Pattern filter_magic_pattern; // concurrent access is thread safe -#ifdef OS_WIN--// CTRL-C handler-BOOL WINAPI sigint(DWORD signal)-{-  if (signal == CTRL_C_EVENT || signal == CTRL_BREAK_EVENT)-  {-    // be nice, reset colors on interrupt when sending output to a color TTY-    if (flag_color_term)-      flag_color_term = write(1, "\033[m", 3) > 0; // appease -Wunused-result-  }--  // return FALSE to invoke the next handler (when applicable) or just exit-  return FALSE;-}--#else--// SIGINT and SIGTERM handler-static void sigint(int sig)-{-  // reset to the default handler-  signal(sig, SIG_DFL);--  // be nice, reset colors on interrupt when sending output to a color TTY-  if (flag_color_term)-    flag_color_term = write(1, "\033[m", 3) > 0; // appease -Wunused-result--  // signal again-  kill(getpid(), sig);-}--#endif- // unique address to identify standard input path const char *LABEL_STANDARD_INPUT = "(standard input)"; @@ -326,6 +292,7 @@ bool flag_files_with_matches       = false; bool flag_files_without_match      = false; bool flag_fixed_strings            = false; bool flag_glob_ignore_case         = false;+bool flag_grep                     = false; bool flag_hex                      = false; bool flag_hex_star                 = false; bool flag_hex_cbr                  = true;@@ -338,6 +305,7 @@ bool flag_json                     = false; bool flag_line_buffered            = false; bool flag_line_regexp              = false; bool flag_match                    = false;+bool flag_multiline                = false; bool flag_no_dereference           = false; bool flag_no_header                = false; bool flag_no_messages              = false;@@ -421,7 +389,7 @@ const char *flag_hexdump           = NULL; const char *flag_hyperlink         = NULL; const char *flag_index             = NULL; const char *flag_label             = LABEL_STANDARD_INPUT;-const char *flag_pager             = DEFAULT_PAGER;+const char *flag_pager             = NULL; const char *flag_replace           = NULL; const char *flag_save_config       = NULL; const char *flag_separator         = NULL;@@ -490,13 +458,98 @@ size_t strtonum(const char *string, const char *message); size_t strtopos(const char *string, const char *message); void strtopos2(const char *string, size_t& pos1, size_t& pos2, const char *message); size_t strtofuzzy(const char *string, const char *message);-void import_globs(FILE *file, std::vector<std::string>& files, std::vector<std::string>& dirs);+void import_globs(FILE *file, std::vector<std::string>& files, std::vector<std::string>& dirs, bool gitignore = false); void usage(const char *message, const char *arg = NULL, const char *valid = NULL); void help(std::ostream& out); void help(const char *what = NULL); void version(); void is_directory(const char *pathname); void cannot_decompress(const char *pathname, const char *message);+void open_pager();+void close_pager();++#ifdef OS_WIN++// CTRL-C handler+BOOL WINAPI sigint(DWORD signal)+{+  if (signal == CTRL_C_EVENT || signal == CTRL_BREAK_EVENT)+  {+    // be nice, reset colors on interrupt when sending output to a color TTY+    if (flag_color_term)+      flag_color_term = write(1, "\033[m", 3) > 0; // appease -Wunused-result++    close_pager();+  }++  // return FALSE to invoke the next handler (when applicable) or just exit+  return FALSE;+}++#else++// SIGINT and SIGTERM handler+static void sigint(int sig)+{+  // reset to the default handler+  signal(sig, SIG_DFL);++  // be nice, reset colors on interrupt when sending output to a color TTY+  if (flag_color_term)+    flag_color_term = write(1, "\033[m", 3) > 0; // appease -Wunused-result++  close_pager();++  // signal again+  kill(getpid(), sig);+}++#endif++// open a pager if output is to a TTY then page through the results+void open_pager()+{+  if (flag_pager != NULL)+  {+    // --pager without argument uses $PAGER or DEFAULT_PAGER_COMMAND+    if (*flag_pager == '\0')+    {+      const char *pager = getenv("PAGER");++      if (pager != NULL && *pager != '\0')+        flag_pager = pager;+      else+        flag_pager = DEFAULT_PAGER_COMMAND;+    }++    // pager 'less' requires -R+    if (strcmp(flag_pager, "less") == 0)+      flag_pager = "less -R";++    // open a pipe to a forked pager+#ifdef OS_WIN+    output = popen(flag_pager, "wb");+#else+    output = popen(flag_pager, "w");+#endif+    if (output == NULL)+      error("cannot open pipe to pager", flag_pager);++    // enable --heading if not explicitly disabled (enables --break later)+    if (flag_heading.is_undefined())+      flag_heading = true;++    // enable --line-buffered to flush output to the pager immediately+    flag_line_buffered = true;+  }+}++// close the pipe to the forked pager+void close_pager()+{+  if (flag_pager != NULL && output != NULL && output != stdout)+    pclose(output);+}  // open a file where - means stdin/stdout and an initial ~ expands to home directory int fopen_smart(FILE **file, const char *filename, const char *mode)@@ -2551,8 +2604,19 @@ struct Grep {          if (flag_group_separator != NULL)         {-          grep.out.str(color_se);-          grep.out.str(flag_group_separator);+          if (flag_query > 0 && !flag_text)+          {+            grep.out.chr('\0');+            grep.out.str(color_se);+            grep.out.chr('\0');+            grep.out.str(flag_group_separator);+            grep.out.chr('\0');+          }+          else+          {+            grep.out.str(color_se);+            grep.out.str(flag_group_separator);+          }           grep.out.str(color_off);           grep.out.nl();         }@@ -2791,8 +2855,19 @@ struct Grep {         if (hex)           grep.out.dump.done(); -        grep.out.str(color_se);-        grep.out.str(flag_group_separator);+        if (flag_query > 0 && !flag_text)+        {+          grep.out.chr('\0');+          grep.out.str(color_se);+          grep.out.chr('\0');+          grep.out.str(flag_group_separator);+          grep.out.chr('\0');+        }+        else+        {+          grep.out.str(color_se);+          grep.out.str(flag_group_separator);+        }         grep.out.str(color_off);         grep.out.nl();       }@@ -3984,7 +4059,7 @@ bool GrepMaster::steal(GrepWorker *worker)   auto coworker = workers.begin();   auto max_worker = coworker;   size_t max_todo = 0;-  +   for (size_t i = 0; i < threads; ++i)   {     if (&*coworker != worker && coworker->jobs.todo > max_todo)@@ -4451,7 +4526,7 @@ static void save_config()     fprintf(file, "no-view\n\n");    fprintf(file, "# Enable a pager for terminal output, default: no-pager\n");-  if (flag_pager != NULL)+  if (flag_pager != NULL && *flag_pager != '\0')     fprintf(file, "pager=%s\n\n", flag_pager);   else     fprintf(file, "no-pager\n\n");@@ -5031,7 +5106,7 @@ void options(std::list<std::pair<CNF::PATTERN,const char*>>& pattern_args, int a                case 'p':                 if (strcmp(arg, "pager") == 0)-                  flag_pager = DEFAULT_PAGER_COMMAND;+                  flag_pager = "";                 else if (strncmp(arg, "pager=", 6) == 0)                   flag_pager = arg + 6;                 else if (strcmp(arg, "passthru") == 0)@@ -5476,7 +5551,7 @@ void options(std::list<std::pair<CNF::PATTERN,const char*>>& pattern_args, int a             break;            case 'Y':-            flag_empty = true;+            flag_grep = true;             break;            case 'y':@@ -5754,23 +5829,23 @@ void init(int argc, const char **argv)   {     // the 'grep' command is equivalent to 'ugrep -GY. --sort'     flag_basic_regexp = true;+    flag_grep = true;     flag_hidden = true;-    flag_empty = true;     flag_sort = "name";   }   else if (strncmp(program, "egrep", len) == 0)   {     // the 'egrep' command is equivalent to 'ugrep -Y. --sort'+    flag_grep = true;     flag_hidden = true;-    flag_empty = true;     flag_sort = "name";   }   else if (strncmp(program, "fgrep", len) == 0)   {     // the 'fgrep' command is equivalent to 'ugrep -FY. --sort'     flag_fixed_strings = true;+    flag_grep = true;     flag_hidden = true;-    flag_empty = true;     flag_sort = "name";   }   else if (strncmp(program, "zgrep", len) == 0)@@ -5778,16 +5853,16 @@ void init(int argc, const char **argv)     // the 'zgrep' command is equivalent to 'ugrep -zGY. --sort'     flag_decompress = true;     flag_basic_regexp = true;+    flag_grep = true;     flag_hidden = true;-    flag_empty = true;     flag_sort = "name";   }   else if (strncmp(program, "zegrep", len) == 0)   {     // the 'zegrep' command is equivalent to 'ugrep -zY. --sort'     flag_decompress = true;+    flag_grep = true;     flag_hidden = true;-    flag_empty = true;     flag_sort = "name";   }   else if (strncmp(program, "zfgrep", len) == 0)@@ -5795,8 +5870,8 @@ void init(int argc, const char **argv)     // the 'zfgrep' command is equivalent to 'ugrep -zFY. --sort'     flag_decompress = true;     flag_fixed_strings = true;+    flag_grep = true;     flag_hidden = true;-    flag_empty = true;     flag_sort = "name";   } @@ -5838,7 +5913,7 @@ void init(int argc, const char **argv)   if (flag_zmax > 99)     usage("option --zmax argument exceeds upper limit"); -  // -P disables -F, -G and -Z (P>F>G>E override)+  // -P disables -F, -G and -Z (P>F>G>E override) and does not allow -N patterns   if (flag_perl_regexp)   { #if defined(HAVE_PCRE2) || defined(HAVE_BOOST_REGEX)@@ -5846,11 +5921,22 @@ void init(int argc, const char **argv)     flag_basic_regexp = false;     if (flag_fuzzy > 0)       usage("options -P and -Z are not compatible");+    for (const auto &arg : pattern_args)+      if ((arg.first & CNF::PATTERN::NEG) != 0)+        usage("options -P and -N are not compatible"); #else     usage("option -P is not available in this build configuration of ugrep"); #endif   } +  // -Y: enable --empty+  if (flag_grep)+    flag_empty = true;++  // -o (or -u) disables -Y to emulate grep behavior when ugrep is aliased to grep/egrep/fgrep+  if (flag_only_matching || flag_ungroup)+    flag_empty = false;+   // -F disables -G (P>F>G>E override)   if (flag_fixed_strings)     flag_basic_regexp = false;@@ -5938,14 +6024,6 @@ void init(int argc, const char **argv)   else if (strcmp(flag_binary_files, "binary") != 0)     usage("invalid argument --binary-files=TYPE, valid arguments are 'binary', 'without-match', 'text', 'hex' and 'with-hex'"); -  // --hex takes priority over --with-hex takes priority over -I takes priority over -a-  if (flag_hex)-    flag_with_hex = (flag_binary_without_match = flag_text = false);-  else if (flag_with_hex)-    flag_binary_without_match = (flag_text = false);-  else if (flag_binary_without_match)-    flag_text = false;-   // --hexdump: normalize by assigning flags   if (flag_hexdump != NULL)   {@@ -6027,6 +6105,14 @@ void init(int argc, const char **argv)       flag_hex = true;   } +  // --hex takes priority over --with-hex takes priority over -I takes priority over -a+  if (flag_hex)+    flag_with_hex = (flag_binary_without_match = flag_text = false);+  else if (flag_with_hex)+    flag_binary_without_match = (flag_text = false);+  else if (flag_binary_without_match)+    flag_text = false;+   // --tabs: value should be 1, 2, 4, or 8   if (flag_tabs && flag_tabs != 1 && flag_tabs != 2 && flag_tabs != 4 && flag_tabs != 8)     usage("invalid argument --tabs=NUM, valid arguments are 1, 2, 4, or 8");@@ -6704,26 +6790,6 @@ void terminal()         // enable --line-buffered to flush output immediately         flag_line_buffered = true;       }-      else if (flag_pager != NULL && *flag_pager != '\0')-      {-        // --pager: if output is to a TTY then page through the results--        // open a pipe to a forked pager-#ifdef OS_WIN-        output = popen(flag_pager, "wb");-#else-        output = popen(flag_pager, "w");-#endif-        if (output == NULL)-          error("cannot open pipe to pager", flag_pager);--        // enable --heading if not explicitly disabled (enables --break later)-        if (flag_heading.is_undefined())-          flag_heading = true;--        // enable --line-buffered to flush output to the pager immediately-        flag_line_buffered = true;-      }     }      if (flag_tree && (flag_files_with_matches || flag_files_without_match || flag_count))@@ -7591,15 +7657,15 @@ void ugrep()   {     unsigned int cores = std::thread::hardware_concurrency();     unsigned int concurrency = cores > 2 ? cores : 2;-    // reduce concurrency by a few for 9+ core CPUs+    // reduce concurrency by a few for 8+ core CPUs #if defined(__APPLE__) && defined(HAVE_NEON)-    // apple M1 8 or 10 cores should be reduced to 7+    // apple silicon with 8 or more cores should be reduced to 6 since 7 or 8 are slower, but not on x64 machines     if (concurrency >= 10)-      concurrency = 7;+      concurrency = 6;     else-      concurrency -= concurrency / 8;+      concurrency -= concurrency / 4; #else-    concurrency -= concurrency / 9;+    concurrency -= concurrency / 8; #endif     flag_jobs = std::min(concurrency, MAX_JOBS);   }@@ -7650,13 +7716,13 @@ void ugrep()   // reflex::Matcher options   std::string matcher_options; -  // -Y: permit empty pattern matches and literally match closing ) when not paired with ( unless -P or -F+  // -Y: literally match closing ) like GNU grep when not paired with ( unless -P or -F+  if (flag_grep && !flag_perl_regexp && !flag_fixed_strings)+    convert_flags |= reflex::convert_flag::closing;++  // --empty: permit empty pattern matches   if (flag_empty)-  {-    if (!flag_perl_regexp && !flag_fixed_strings)-      convert_flags |= reflex::convert_flag::closing;     matcher_options.push_back('N');-  }    // -w: match whole words, i.e. make \< and \> match only left side and right side, respectively   if (flag_word_regexp)@@ -7732,6 +7798,9 @@ void ugrep()       // --match: match lines with the RE/flex Line Matcher       reflex::LineMatcher matcher(reflex::Input(), matcher_options.c_str()); +      // --pager+      open_pager();+       if (threads > 1)       {         GrepMaster grep(output, &matcher, NULL);@@ -7751,7 +7820,7 @@ void ugrep()     // -P: Perl matching with PCRE2 or Boost.Regex #if defined(HAVE_PCRE2)     // construct the PCRE2 JIT-optimized NFA-based Perl pattern matcher-    std::string pattern(flag_binary ? reflex::PCRE2Matcher::convert(regex, convert_flags) : reflex::PCRE2UTFMatcher::convert(regex, convert_flags));+    std::string pattern(flag_binary ? reflex::PCRE2Matcher::convert(regex, convert_flags, &flag_multiline) : reflex::PCRE2UTFMatcher::convert(regex, convert_flags, &flag_multiline));     reflex::PCRE2Matcher matcher(pattern, reflex::Input(), matcher_options.c_str(), flag_binary ? (PCRE2_NEVER_UTF | PCRE2_NEVER_UCP) : (PCRE2_UTF | PCRE2_UCP));     Grep::Matchers matchers; @@ -7780,6 +7849,9 @@ void ugrep()       }     } +    // --pager+    open_pager();+     if (threads > 1)     {       GrepMaster grep(output, &matcher, bcnf.singleton_or_undefined() ? NULL : &matchers);@@ -7797,7 +7869,7 @@ void ugrep()     try     {       // construct the Boost.Regex NFA-based Perl pattern matcher-      pattern.assign(reflex::BoostPerlMatcher::convert(regex, convert_flags));+      pattern.assign(reflex::BoostPerlMatcher::convert(regex, convert_flags, &flag_multiline));       reflex::BoostPerlMatcher matcher(pattern, reflex::Input(), matcher_options.c_str());       Grep::Matchers matchers; @@ -7826,6 +7898,9 @@ void ugrep()         }       } +      // --pager+      open_pager();+       if (threads > 1)       {         GrepMaster grep(output, &matcher, bcnf.singleton_or_undefined() ? NULL : &matchers);@@ -7896,12 +7971,7 @@ void ugrep()   else   {     // construct the RE/flex DFA-based pattern matcher and start matching files-#ifdef WITH_SKIP_NEWLINE-    bool multiline = false;-    reflex::Pattern pattern(reflex::Matcher::convert(regex, convert_flags, &multiline), (flag_index != NULL ? "hr" : "r"));-#else-    reflex::Pattern pattern(reflex::Matcher::convert(regex, convert_flags), (flag_index != NULL ? "hr" : "r"));-#endif+    reflex::Pattern pattern(reflex::Matcher::convert(regex, convert_flags, &flag_multiline), (flag_index != NULL ? "hr" : "r"));     std::list<reflex::Pattern> patterns;     Grep::Matchers matchers; @@ -7937,6 +8007,9 @@ void ugrep()         }       } +      // --pager+      open_pager();+       if (threads > 1)       {         GrepMaster grep(output, &matcher, bcnf.singleton_or_undefined() ? NULL : &matchers);@@ -7984,6 +8057,9 @@ void ugrep()       if (flag_index != NULL && pattern.has_hfa())         index_pattern = &pattern; +      // --pager+      open_pager();+       if (threads > 1)       {         GrepMaster grep(output, &matcher, bcnf.singleton_or_undefined() ? NULL : &matchers);@@ -8005,7 +8081,7 @@ void ugrep()     edges = pattern.edges();     words = pattern.words();     hashes = pattern.hashes();-    +       nodes_time = static_cast<size_t>(pattern.nodes_time());     edges_time = static_cast<size_t>(pattern.parse_time() + pattern.edges_time());     words_time = static_cast<size_t>(pattern.words_time());@@ -8041,9 +8117,7 @@ void ugrep()     }   } -  // close the pipe to the forked pager-  if (flag_pager != NULL && output != NULL && output != stdout)-    pclose(output);+  close_pager(); }  // cancel the search@@ -8636,9 +8710,9 @@ void Grep::recurse(size_t level, const char *pathname)   {     std::string ignore_filename; -    for (const auto& i : flag_ignore_files)+    for (const auto& ignore_file : flag_ignore_files)     {-      ignore_filename.assign(pathname).append(PATHSEPSTR).append(i);+      ignore_filename.assign(pathname).append(PATHSEPSTR).append(ignore_file);        FILE *file = NULL;       if (fopenw_s(&file, ignore_filename.c_str(), "r") == 0)@@ -8652,7 +8726,7 @@ void Grep::recurse(size_t level, const char *pathname)          // push globs imported from the ignore file to the back of the vectors         Stats::ignore_file(ignore_filename);-        import_globs(file, flag_all_exclude, flag_all_exclude_dir);+        import_globs(file, flag_all_exclude, flag_all_exclude_dir, true);         fclose(file);       }     }@@ -9193,7 +9267,6 @@ void Grep::search(const char *pathname, uint16_t cost)   if (pathname == LABEL_STANDARD_INPUT)     pathname = flag_label; -  bool colorize = flag_apply_color || flag_replace != NULL || flag_tag != NULL;   bool matched = false;    // -z: loop over extracted archive parts, when applicable@@ -9325,14 +9398,13 @@ void Grep::search(const char *pathname, uint16_t cost)          // --format: whether to out.acquire() early before Stats::found_part()         bool acquire = flag_format != NULL && (flag_format_open != NULL || flag_format_close != NULL);-         bool heading = flag_with_filename;          if (!flag_match || !flag_invert_match)         {           if (flag_ungroup || flag_only_matching)           {-            // -co or -cu: count the number of patterns matched in the file+            // -co or -cu: count the number of patterns matched              while (matcher->find())             {@@ -9391,11 +9463,9 @@ void Grep::search(const char *pathname, uint16_t cost)                  lineno = current_lineno; -#ifdef WITH_SKIP_NEWLINE // this is only valid if no \n is part of the patterns                 // if the match does not span more than one line, then skip to end of the line (we count matching lines)-                if (!matcher->at_bol())+                if (!flag_multiline && !matcher->at_bol())                   matcher->skip('\n');-#endif               }             } @@ -9468,7 +9538,6 @@ void Grep::search(const char *pathname, uint16_t cost)          // whether to out.acquire() early before Stats::found_part()         bool acquire = flag_format_open != NULL || flag_format_close != NULL;-         bool heading = flag_with_filename;          if (flag_invert_match)@@ -9608,7 +9677,11 @@ void Grep::search(const char *pathname, uint16_t cost)             }              // output --format=FORMAT-            out.format(flag_format, pathname, partname, matches, &matching, matcher, heading, matches > 1 || current_lineno == lineno, matches > 1);+            // if the match does not span more than one line, then skip to end of the line+            if (!out.format(flag_format, pathname, partname, matches, &matching, matcher, heading, matches > 1 || current_lineno == lineno, matches > 1))+              if (!flag_multiline && !matcher->at_bol())+                if (!matcher->skip('\n'))+                  break;              // --max-count: max number of matches reached?             if (flag_max_count > 0 && matches >= flag_max_count)@@ -10210,6 +10283,7 @@ void Grep::search(const char *pathname, uint16_t cost)         bool hex = false;         bool binary = false;         bool stop = false;+        bool colorize = flag_apply_color || flag_replace != NULL || flag_tag != NULL;          // construct event handler functor with captured *this and some of the locals         GrepHandler handler(*this, pathname, lineno, heading, binfile, hex, binary, matches, stop);@@ -10448,13 +10522,11 @@ void Grep::search(const char *pathname, uint16_t cost)               }             } -#ifdef WITH_SKIP_NEWLINE // this is only valid if no \n is part of the patterns             // no -u and no colors: if the match does not span more than one line, then skip to end of the line             if (!flag_ungroup && !colorize)-              if (!matcher->at_bol())+              if (!flag_multiline && !matcher->at_bol())                 if (!matcher->skip('\n'))                   break;-#endif           }           else           {@@ -10766,6 +10838,7 @@ void Grep::search(const char *pathname, uint16_t cost)         bool hex = false;         bool binary = false;         bool stop = false;+        bool colorize = flag_apply_color || flag_replace != NULL || flag_tag != NULL;          // to display the rest of the matching line         restline_data = NULL;@@ -11023,6 +11096,12 @@ void Grep::search(const char *pathname, uint16_t cost)                 restline_last = matcher->last();               }             }++            // no -u and no colors: if the match does not span more than one line, then skip to end of the line+            if (!flag_ungroup && !colorize)+              if (!flag_multiline && !matcher->at_bol())+                if (!matcher->skip('\n'))+                  break;           }           else if (!binfile && (!binary || flag_hex || flag_with_hex))           {@@ -11220,6 +11299,7 @@ void Grep::search(const char *pathname, uint16_t cost)         bool hex = false;         bool binary = false;         bool stop = false;+        bool colorize = flag_apply_color || flag_replace != NULL || flag_tag != NULL;          // to display the rest of the matching line         restline_data = NULL;@@ -11470,6 +11550,12 @@ void Grep::search(const char *pathname, uint16_t cost)                 restline_last = matcher->last();               }             }++            // no -u and no colors: if the match does not span more than one line, then skip to end of the line+            if (!flag_ungroup && !colorize)+              if (!flag_multiline && !matcher->at_bol())+                if (!matcher->skip('\n'))+                  break;           }           else           {@@ -11674,6 +11760,7 @@ void Grep::search(const char *pathname, uint16_t cost)         bool hex = false;         bool binary = false;         bool stop = false;+        bool colorize = flag_apply_color || flag_replace != NULL || flag_tag != NULL;          // to display the rest of the matching line         restline_data = NULL;@@ -12239,7 +12326,7 @@ exit_search: }  // read globs from a file and split them into files or dirs to include or exclude by pushing them onto the vectors-void import_globs(FILE *file, std::vector<std::string>& files, std::vector<std::string>& dirs)+void import_globs(FILE *file, std::vector<std::string>& files, std::vector<std::string>& dirs, bool gitignore) {   // read globs from the specified file or files   reflex::BufferedInput input(file);@@ -12268,6 +12355,8 @@ void import_globs(FILE *file, std::vector<std::string>& files, std::vector<std::         else         {           files.emplace_back(line);+          if (gitignore)+            dirs.emplace_back(line);         }       }     }@@ -12923,13 +13012,13 @@ void help(std::ostream& out)             Ignore files and directories matching the globs in each FILE that\n\             is encountered in recursive searches.  The default FILE is\n\             `" DEFAULT_IGNORE_FILE "'.  Matching files and directories located in the\n\-            directory of a FILE's location and in directories below are ignored\n\-            by temporarily extending the --exclude and --exclude-dir globs, as\n\-            if --exclude-from=FILE is locally enforced.  Globbing syntax is the\n\-            same as the --exclude-from=FILE gitignore syntax; directories are\n\-            excluded when the glob ends in a `/', same as git.  Files and\n\-            directories explicitly specified as command line arguments are\n\-            never ignored.  This option may be repeated with additional files.\n\+            directory of the FILE and in subdirectories below are ignored.\n\+            Globbing syntax is the same as the --exclude-from=FILE gitignore\n\+            syntax, but files and directories are excluded instead of only\n\+            files.  Directories are specifically excluded when the glob ends in\n\+            a `/'.  Files and directories explicitly specified as command line\n\+            arguments are never ignored.  This option may be repeated to\n\+            specify additional files.\n\     --include=GLOB\n\             Search only files whose name matches GLOB using wildcard matching,\n\             same as -g GLOB.  GLOB can use **, *, ?, and [...] as wildcards and\n\@@ -13049,7 +13138,8 @@ void help(std::ostream& out)             unless it matches the negative PATTERN.  Same as -e (?^PATTERN).\n\             Negative pattern matches are essentially removed before any other\n\             patterns are matched.  Note that longer patterns take precedence\n\-            over shorter patterns.  This option may be repeated.\n\+            over shorter patterns.  Option -N cannot be specified with -P.\n\+            This option may be repeated.\n\     -n, --line-number\n\             Each output line is preceded by its relative line number in the\n\             file, starting at line 1.  The line number counter is reset for\n\@@ -13107,8 +13197,9 @@ void help(std::ostream& out)             symbolic links are specified on the command line.\n\     --pager[=COMMAND]\n\             When output is sent to the terminal, uses COMMAND to page through\n\-            the output.  The default COMMAND is `" DEFAULT_PAGER_COMMAND "'.  Enables --heading\n\-            and --line-buffered.\n\+            the output.  COMMAND defaults to environment variable $PAGER when\n\+            defined or `" DEFAULT_PAGER_COMMAND "'.  Enables --heading and\n\+            --line-buffered.\n\     --pretty\n\             When output is sent to a terminal, enables --color, --heading, -n,\n\             --sort, --tree and -T when not explicitly disabled.\n\@@ -13123,7 +13214,7 @@ void help(std::ostream& out)             or CTRL-Z to view the help screen.  Press F2 or CTRL-Y to invoke a\n\             command to view or edit the file shown at the top of the screen.\n\             The command can be specified with option --view, or defaults to\n\-            environment variable PAGER if defined, or EDITOR.  Press Tab and\n\+            environment variable PAGER when defined, or EDITOR.  Press Tab and\n\             Shift-Tab to navigate directories and to select a file to search.\n\             Press Enter to select lines to output.  Press ALT-l for option -l\n\             to list files, ALT-n for -n, etc.  Non-option commands include\n\@@ -13238,8 +13329,7 @@ void help(std::ostream& out)     -X, --hex\n\             Output matches in hexadecimal.  This option is equivalent to the\n\             --binary-files=hex option with --hexdump=2C.  To omit the matching\n\-            line from the hex output, use option --hexdump instead of -X.  See\n\-            also option -U.\n\+            line from the hex output use option --hexdump.  See also option -U.\n\     -x, --line-regexp\n\             Select only those matches that exactly match the whole line, as if\n\             the patterns are surrounded by ^ and $.  If a PATTERN is specified,\n\@@ -13488,20 +13578,20 @@ void help(const char *what)  [abc-e]     one character a,b,c,d,e     \n\  [^abc-e]    one char not a,b,c,d,e,\\n   pattern     anchors and boundaries\n\  [[:name:]]  one char in POSIX class:    ----------  --------------------------\n\-      alnum  a-z,A-Z,0-9                 ^           begin of line anchor\n\-      alpha  a-z,A-Z                     $           end of line anchor\n\-      ascii  ASCII char \\x00-\\x7f        \\b          word boundary (-P)\n\-      blank  space or tab                \\B          non-word boundary (-P)\n\-      cntrl  control characters          \\<          start word boundary (-P)\n\-      digit  0-9                         \\>          end word boundary (-P)\n\-      graph  visible characters          (?=...)     lookahead (-P)\n\-      lower  a-z                         (?!...)     negative lookahead (-P)\n\-      print  visible chars and space     (?<=...)    lookbehind (-P)\n\-      punct  punctuation characters      (?<!...)    negative lookbehind (-P)\n\-      space  space,\\t,\\n,\\v,\\f,\\r        --------------------------------------\n\-      upper  A-Z                         \n\-       word  a-z,A-Z,0-9,_               pattern     grouping\n\-     xdigit  0-9,a-f,A-F                 ----------  --------------------------\n\+    alnum      a-z,A-Z,0-9               ^           begin of line anchor\n\+    alpha      a-z,A-Z                   $           end of line anchor\n\+    ascii      ASCII char \\x00-\\x7f      \\b          word boundary (-P)\n\+    blank      space or tab              \\B          non-word boundary (-P)\n\+    cntrl      control characters        \\<          start word boundary (-P)\n\+    digit      0-9                       \\>          end word boundary (-P)\n\+    graph      visible characters        (?=...)     lookahead (-P)\n\+    lower      a-z                       (?!...)     negative lookahead (-P)\n\+    print      visible chars and space   (?<=...)    lookbehind (-P)\n\+    punct      punctuation characters    (?<!...)    negative lookbehind (-P)\n\+    space      space,\\t,\\v,\\f,\\r        --------------------------------------\n\+    upper      A-Z                       \n\+     word      a-z,A-Z,0-9,_             pattern     grouping\n\+   xdigit      0-9,a-f,A-F               ----------  --------------------------\n\  \\p{class}   one character in class      (...)       capturing group (-P)\n\  \\P{class}   one char not in class       (...)       non-capturing group\n\  \\d          a digit                     (?:...)     non-capturing group\n\@@ -13514,6 +13604,9 @@ void help(const char *what)  \\W          a non-word character        \n\  --------------------------------------      (-P): pattern requires option -P\n\ \n\+Character classes never match a newline, except when \\P, \\D, \\H, or \\W is\n\+specified or when a \\n or a \\R is specified, such as [\\s\\n].\n\+\n\ Option -P enables Perl regex matching, supporting Unicode patterns, Unicode\n\ word boundary matching (\\b, \\B, \\<, \\>), lookaheads and capturing groups.\n\ \n\@@ -13545,7 +13638,7 @@ Option --stats displays the options and patterns applied to the matching files.\ \n\ ";     }-    else if (strcmp(what, "glob") == 0 || strcmp(what, "globs") == 0)+    else if (strcmp(what, "glob") == 0 || strcmp(what, "globs") == 0 || strcmp(what, "globbing") == 0)     {       std::cout << "Glob syntax and conventions:\n\@@ -13576,62 +13669,77 @@ basename of a file or directory is matched in recursive searches.\n\ When a glob pattern begins with a /, files and directories are matched at the\n\ working directory, not recursively.\n\ \n\-When a glob pattern ends with a /, directories are matched instead of files.\n\-\n\-Option -O (--file-extension) matches filename extensions or ignores extensions\n\-when preceeded with a ^ or !.\n\+When a glob pattern ends with a /, only directories are matched, not files.\n\ \n\-Option -t (--file-type) matches file types or ignores file types when preceeded\n\-with a ^ or a !.  Use -tlist to view the list of supported file types with\n\-corresponding glob patterns.\n\-\n\-Opton --ignore-files specifies a file with gitignore-style globs, where the\n\-default file is .gitignore.  When one ore more ignore files are encountered in\n\-recursive searches, the search is narrowed accordingly.\n\+Option -g (--glob) performs glob matching with the specified glob pattern or\n\+a set of comma-separated globs.  When a glob is preceeded with a ^ or !, the\n\+glob match is inverted by excluding matching files or directories.\n\ \n\ Option --iglob performs case-insensitive glob matching with the specified glob\n\-patterns.\n\+pattern or a set of comma-separated globs.  When a glob is preceeded with a ^\n\+or !, the glob match is inverted by excluding matching files or directories.\n\ \n\ Option --glob-ignore-case performs case-insensitive glob matching in general,\n\ except with the globs specified in --ignore-files, such as .gitignore.\n\ \n\+Option --ignore-files specifies a file with gitignore-style globs, where the\n\+default file is .gitignore.  When one ore more ignore files are encountered in\n\+recursive searches, the search is narrowed accordingly by excluding files and\n\+directories matching the globs.\n\+\n\+RELATED:\n\+\n\+Option -O (--file-extension) matches filename extensions, or ignores extensions\n\+when preceeded with a ^ or !.\n\+\n\+Option -t (--file-type) matches file types, or ignores file types when\n\+preceeded with a ^ or a !.  Use -tlist to view the list of supported file types\n\+with corresponding glob patterns.\n\+\n\ Option --stats displays the search path globs applied to the matching files.\n\ \n\ IMPORTANT:\n\ \n\-Always specify glob patterns using quotes to prevent the shell from expanding\n\-the globs.  For example, use -g \"*foo.*\" or alternatively \"-g*foo.*\".\n\+Always quote glob patterns to prevent the shell from expanding the globs.  For\n\+example, specify -g \"*foo.*\" or -g\"*foo.*\" or \"-g*foo.*\".\n\ \n\ ";     }     else if (strcmp(what, "fuzzy") == 0)     {       std::cout <<-"Fuzzy (approximate) search is performed with option -Z (no whitespace may be\n\-given between -Z and its argument when specified):\n\+"Fuzzy (approximate) search is performed with option -Z:\n\ \n\  -Z    fuzzy match\n\- ----  ------------------------------------------------------------------\n\+ ----  ---------------------------------------------------------------------\n\        allow 1 character insertion, deletion or substitution (-Z default)\n\- 2     allow 2 character insertions, deletions or substitutions\n\- +2    allow 2 character insertions\n\- -2    allow 2 character deletions\n\- ~2    allow 2 character substitutions\n\- +-2   allow 2 character insertions or deletions\n\- +~2   allow 2 character insertions or substitutions\n\- -~2   allow 2 character deletions or substitutions\n\+ 2     allow 2 character insertions, deletions and/or substitutions\n\+ +1    allow 1 character insertion, e.g. pattern 'foo' also matches 'fomo'\n\+ -1    allow 1 character deletion, e.g. pattern 'food' also matches 'fod'\n\+ ~1    allow 1 character substitution, e.g. pattern 'foo' also matches 'for'\n\+ +-1   allow 1 character insertion or deletion\n\+ +~1   allow 1 character insertion or substitution\n\+ -~1   allow 1 character deletion or substitution\n\  best  when prefixed to the above, output the best matches only\n\ \n\+No whitespace may be given between -Z and its argument.\n\+\n\ Insertions, deletions and/or substitutions are applied to Unicode characters,\n\ except when option -U is specified for binary/ASCII pattern search.\n\ \n\-The best matches are those that minimize the difference with the specified\n\-pattern.  This requires two passes over an input file, which reduces\n\-performance significantly.\n\+The 'best' prefix outputs the best matching lines with the lowest cost (minimal\n\+edit distance) per file.  For example, if a file has an exact match anywhere,\n\+then only exact matches are output, no approximate matches.  This requires two\n\+passes over an input file to determine the minimal edit distance, which reduces\n\+performance significantly.  This option cannot be used with standard input or\n\+with Boolean queries.\n\+\n\+RELATED:\n\ \n\-When multiple files are searched, option --sort=best sorts the files in a\n\-directory such that files with minimum differences with the specified pattern\n\-are listed first.  This requires two passes over each input file, which reduces\n\+Option --sort=best sorts the directory output by best fuzzy match based on edit\n\+distance, i.e. files with at least one exact match are output first, followed\n\+by files with at least a match that is one edit distance from exact, and so on.\n\+This sort option requires two passes over each input file, which reduces\n\ performance significantly.\n\ \n\ IMPORTANT:\n\

src/ugrep.hpp

@@ -38,7 +38,7 @@ #define UGREP_HPP  // ugrep version-#define UGREP_VERSION "4.0.5"+#define UGREP_VERSION "4.1.0"  // disable mmap because mmap is almost always slower than the file reading speed improvements since 3.0.0 #define WITH_NO_MMAP@@ -339,7 +339,7 @@ inline const char *utf8skipn(const char *s, size_t n, size_t k) # ifdef OS_WIN #  define DEFAULT_PAGER_COMMAND "more" # else-#  define DEFAULT_PAGER_COMMAND "less -R"+#  define DEFAULT_PAGER_COMMAND "less" # endif #endif 

tests/archive.gz

Binary file changed

tests/archive.tar.zip

Binary file changed

tests/archive.tgz

Binary file changed

tests/archive2.tgz

Binary file changed

tests/archive3.tgz

Binary file changed

tests/gen.sh

@@ -90,7 +90,7 @@ $UG --max-count=1 Hello $FILES > out/Hello_Hello--max-count.out $UG --max-files=1 Hello $FILES > out/Hello_Hello--max-files.out $UG --range=1,1   Hello $FILES > out/Hello_Hello--range.out -for PAT in '' 'Hello' '\w+\s+\S+' '\S\n\S' 'nomatch' ; do+for PAT in '' 'Hello' '\w+[\n\h]+\S+' '\S\n\S' 'nomatch' ; do   FN=`echo "Hello_$PAT" | tr -Cd '[:alnum:]_'`   for OUT in '' '-I' '-W' '-X' ; do     for OPS in '' '-l' '-lv' '-c' '-co' '-cv' '-n' '-nkbT' '-unkbT' '-o' '-on' '-onkbT' '-ounkbT' '-v' '-nv' '-C2' '-nC2' '-vC2' '-nvC2' '-onC10' '-y' '-ny' '-vy' '-nvy' ; do@@ -111,10 +111,10 @@ for PAT in '' 'Hello' '\w+\s+\S+' '\S\n\S' 'nomatch' ; do   $UG -U -F  "$PAT" $FILES > "out/$FN-F.out"   $UG -U -Fw "$PAT" $FILES > "out/$FN-Fw.out"   $UG -U -Fx "$PAT" $FILES > "out/$FN-Fx.out"-  if [ "$PAT" == '\w+\s+\S+' ]; then-    $UG -U -G  '\w\+\s\+\S\+' $FILES > "out/$FN-G.out"-    $UG -U -Gw '\w\+\s\+\S\+' $FILES > "out/$FN-Gw.out"-    $UG -U -Gx '\w\+\s\+\S\+' $FILES > "out/$FN-Gx.out"+  if [ "$PAT" == '\w+[\n\h]+\S+' ]; then+    $UG -U -G  '\w\+[\n\h]\+\S\+' $FILES > "out/$FN-G.out"+    $UG -U -Gw '\w\+[\n\h]\+\S\+' $FILES > "out/$FN-Gw.out"+    $UG -U -Gx '\w\+[\n\h]\+\S\+' $FILES > "out/$FN-Gx.out"   else     $UG -U -G  "$PAT" $FILES > "out/$FN-G.out"     $UG -U -Gw "$PAT" $FILES > "out/$FN-Gw.out"

tests/out/Hello_wnhS--csv-c.out

new file mode 100644@@ -0,0 +1,8 @@+"Hello.bat",2+"Hello.class",1+"Hello.java",4+"Hello.pdf",97+"Hello.sh",2+"Hello.txt",0+"empty.txt",0+"emptyline.txt",0

tests/out/Hello_wnhS--csv-co.out

new file mode 100644@@ -0,0 +1,8 @@+"Hello.bat",2+"Hello.class",1+"Hello.java",9+"Hello.pdf",203+"Hello.sh",2+"Hello.txt",0+"empty.txt",0+"emptyline.txt",0

tests/out/Hello_wnhS--csv-cv.out

new file mode 100644@@ -0,0 +1,8 @@+"Hello.bat",0+"Hello.class",6+"Hello.java",3+"Hello.pdf",37+"Hello.sh",0+"Hello.txt",0+"empty.txt",0+"emptyline.txt",1

tests/out/Hello_wnhS--csv-l.out

new file mode 100644@@ -0,0 +1,5 @@+"Hello.bat",true+"Hello.class",true+"Hello.java",true+"Hello.pdf",true+"Hello.sh",true

tests/out/Hello_wnhS--csv-lv.out

new file mode 100644@@ -0,0 +1,3 @@+"Hello.txt",false+"empty.txt",false+"emptyline.txt",false

tests/out/Hello_wnhS--csv-n.out

new file mode 100644@@ -0,0 +1,128 @@+"Hello.bat",1,"#!/bin/sh\necho ""Hello World!"""+"Hello.bat",2,"echo ""Hello World!"""+"Hello.class",5,"Hello.java\f\x00\x07\x00\b\x07\x00\x17\f\x00\x18\x00\x19\x01\x00\fHello World!\x07\x00\x1a\f\x00\x1b\x00\x1c\x01\x00\x05Hello\x01\x00\x10java/lang/Object\x01\x00\x10java/lang/System\x01\x00\x03out\x01\x00\x15Ljava/io/PrintStream;\x01\x00\x13java/io/PrintStream\x01\x00\x07println\x01\x00\x15(Ljava/lang/String;)V\x00!\x00\x05\x00\x06\x00\x00\x00\x00\x00\x02\x00\x01\x00\x07\x00\b\x00\x01\x00	\x00\x00\x00\x1d\x00\x01\x00\x01\x00\x00\x00\x05*·\x00\x01±\x00\x00\x00\x01\x00"+"Hello.java",1,"import java.lang.*;"+"Hello.java",3,"public class Hello // prints a Hello World! greeting"+"Hello.java",3,"public class Hello // prints a Hello World! greeting\n{ public static void main(String[] arg)"+"Hello.java",4,"{ public static void main(String[] arg)"+"Hello.java",5,"  { System.out.println(""Hello World!"");"+"Hello.pdf",1,"%PDF-1.3\n%Äåòåë§ó ÐÄÆ"+"Hello.pdf",3,"4 0 obj"+"Hello.pdf",3,"4 0 obj\n<< /Length 5 0 R /Filter /FlateDecode >>"+"Hello.pdf",4,"<< /Length 5 0 R /Filter /FlateDecode >>"+"Hello.pdf",5,"stream\nx\x01EŽ»"+"Hello.pdf",7,"\x021\x14D{¿â”Z˜½‰y˜V\x11l\x17.ø\x01a-d×eÍÿƒ\x17,¬†™9\f³1²Q\x02¹F—â©\x12ó™�\\LY\nŸ‰\x07o†k÷´ŽÐ›áâj©Rj²@8þ­í” »¶pQ£DÄ£\rï iÂ\x0bº0¨z¬|²¿Oó¼\x1eÐ\x177µ7ã\x17Nÿ ¥"+"Hello.pdf",9,"endstream\nendobj"+"Hello.pdf",11,"5 0 obj"+"Hello.pdf",11,"5 0 obj\n123"+"Hello.pdf",13,"endobj\n2 0 obj"+"Hello.pdf",14,"2 0 obj"+"Hello.pdf",15,"<< /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]"+"Hello.pdf",17,"endobj\n6 0 obj"+"Hello.pdf",18,"6 0 obj"+"Hello.pdf",19,"<< /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R >> /Font << /TT1 8 0 R"+"Hello.pdf",21,"endobj\n9 0 obj"+"Hello.pdf",22,"9 0 obj"+"Hello.pdf",23,"<< /Length 10 0 R /N 1 /Alternate /DeviceGray /Filter /FlateDecode >>"+"Hello.pdf",24,"stream\nx\x01…U]h\x1cU\x14>»sg\x03\x12\x07\x1f´\r-´ƒ?m	é2‰V\x13‹µÛMºI\x13·ëfS›*Êtv6;Ídfœ™Ý&¡O¥à›\x16\x04é« >Æ‚\b¶*6/ö¥¥Å’J5\x0f"+"Hello.pdf",25,"x\x01…U]h\x1cU\x14>»sg\x03\x12\x07\x1f´\r-´ƒ?m	é2‰V\x13‹µÛMºI\x13·ëfS›*Êtv6;Ídfœ™Ý&¡O¥à›\x16\x04é« >Æ‚\b¶*6/ö¥¥Å’J5\x0f"+"Hello.pdf",26,"\x11ZŒ (}Rð;3ÛdvA2Ã�ùî¹çž{Îwî¹—¨ëoÝóì´J4ç„~¡œ›>9}JíºMiR¨›ðèFàåJ¥	ÆŽë˜üo\x1eÞ¥\x14Kîìg[íc[öäª\x19\x18к†æV\x03cŽ(¥\x11ej†ç‡D]— \x1f<\x1bzŒo\x03?9[)ç�×€•Ö\\@zª`:¦o\x19jÁ×\x17Ô’ïÖ,;éëVãlcËgÎn°¯üìFë\x0ef'Çñï…Ï\x17Lgj\x12x\x1fð’¡�0î\x03¾Û´N\x14cœN{á‘r¬ŸÎ6f§r-ùÉštª%¿PoŒ2Î\x12¥—\x16ë•7€Ÿ\x00^uN\x17�·ô×gÝq¶ÓC$õ\x18Aþ\x14ð³ÀZÝ\x1cã<©À\x15ß-³>Ëê9<\x02ü2ð%+\x1c«\x00þôCМd9° ÅzžýÄZ""{F?V\x02Þ\x06|È´\x0b¼\x16숊\x17–Øæ ð¼c\x17y-Ä..›A\x14/b\x17?…õÊh¬/§C¿ÂsŸ&’÷Ô¬£cÀàD\x1e­û£,‡?rèÙÑÞz\x11xÉo”9ö=Àkº?R\x00†ÍÌcU}˜y~\x01x€N¤t2É¥Óø\x1aäпˆ7 ‹š\x11òÈÇX\r}›"+"Hello.pdf",30,"Tß\fL¿iV³Äw7Ï#úëõèNNm»a4üf,£Tê&Ñ·�“4\nendstream"+"Hello.pdf",32,"endobj\n10 0 obj"+"Hello.pdf",33,"10 0 obj"+"Hello.pdf",34,"1116\nendobj"+"Hello.pdf",36,"7 0 obj"+"Hello.pdf",36,"7 0 obj\n[ /ICCBased 9 0 R ]"+"Hello.pdf",37,"[ /ICCBased 9 0 R ]"+"Hello.pdf",38,"endobj\n3 0 obj"+"Hello.pdf",39,"3 0 obj"+"Hello.pdf",40,"<< /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 2 0 R ] >>"+"Hello.pdf",41,"endobj\n11 0 obj"+"Hello.pdf",42,"11 0 obj"+"Hello.pdf",43,"<< /Type /Catalog /Pages 3 0 R >>"+"Hello.pdf",44,"endobj\n8 0 obj"+"Hello.pdf",45,"8 0 obj"+"Hello.pdf",46,"<< /Type /Font /Subtype /TrueType /BaseFont /GQTMZF+Menlo-Regular /FontDescriptor"+"Hello.pdf",46,"<< /Type /Font /Subtype /TrueType /BaseFont /GQTMZF+Menlo-Regular /FontDescriptor\n12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602"+"Hello.pdf",47,"12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602"+"Hello.pdf",47,"12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602\n0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602"+"Hello.pdf",48,"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602"+"Hello.pdf",48,"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602\n0 0 602 ] >>"+"Hello.pdf",49,"0 0 602 ] >>"+"Hello.pdf",50,"endobj\n12 0 obj"+"Hello.pdf",51,"12 0 obj"+"Hello.pdf",52,"<< /Type /FontDescriptor /FontName /GQTMZF+Menlo-Regular /Flags 33 /FontBBox"+"Hello.pdf",52,"<< /Type /FontDescriptor /FontName /GQTMZF+Menlo-Regular /Flags 33 /FontBBox\n[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729"+"Hello.pdf",53,"[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729"+"Hello.pdf",54,"/StemV 99 /XHeight 547 /StemH 83 /AvgWidth 602 /MaxWidth 602 /FontFile2 13 0 R"+"Hello.pdf",56,"endobj\n13 0 obj"+"Hello.pdf",57,"13 0 obj"+"Hello.pdf",58,"<< /Length 14 0 R /Length1 4064 /Filter /FlateDecode >>"+"Hello.pdf",59,"stream\nx\x01ÝW{xTÅ\x15?sw6¯Í>’MHH€]Öå•,�„·R\x16Hxˆ /ë.ˆòH (!\bA´1�JQ	Á@…\bH}\x15Q©µ+E]	ÄT¤b#E„ \x02"+"Hello.pdf",60,"x\x01ÝW{xTÅ\x15?sw6¯Í>’MHH€]Öå•,�„·R\x16Hxˆ /ë.ˆòH (!\bA´1�JQ	Á@…\bH}\x15Q©µ+E]	ÄT¤b#E„ \x02"+"Hello.pdf",61,"ø¢hŠ\x14!Ø\x00CϽ\x1bý>í×ïë¿íÜ�3çüæÌyÝ»÷Δ-\\\\DVª$P`VÉŒ\x05d6ëI\x1eŠgÝSæ6Eн—HË�½`NITŽ‘åNsæÝ7;*'Nfy@qь¨LWxìWÌ@T\x16}x¼®¸¤Œí\x18Íú.\x13×¼ÒYmó‰£\f°dƽmþé8Ëîù3JŠxäf�0é¶ tQ™)’½šÇì\x05\x0b‹ÚôE�(¦St®�\x1a–\x05w©Y)‹î""\x0biä �”ÄЭ¬+yÖ˜×b²–>}ö�;ì7\\¤N±æâ½eéy\x06s(¸¤ßå•W…¬�½…Åè¤1ÁëbJT\x07""ýàå•×’e½iɘù¾É\bÅf½®UŠ”íë¦É¡™""…j	L+I\x17.RÌ'›4‰\x03‚pš¼Ã¤vÚĈÍä\x13·=R\x0eõ‰Dª`ÌJ>¦	”Ë4Þ´\x17gjÅ’�‘\x18“·˜:Òäu\x13‡‰h&""\x02!\x05¥pµ\x02W\x14.+´æâŸuø®\x02—Zªå%…K\rzËÅ�l©FK¥~ñB\x17y1„‹\x01ýB\x17|{>G~ÛŠó9ø‡Â9…orqÖ…¿×¢™ClVhŽ\\;\x18¸¦=\x12_�)”_ÕâL!þ¦púË\fyZáË\f|¡ðù]øLáÓ:œ:™.Oµâd:NÔâ\x13…�\x15Ž\x1fK‘Ç\x15Ž¥àh->ú0E~¤ðáê\x04ùa"+"Hello.pdf",61,"ø¢hŠ\x14!Ø\x00CϽ\x1bý>í×ïë¿íÜ�3çüæÌyÝ»÷Δ-\\\\DVª$P`VÉŒ\x05d6ëI\x1eŠgÝSæ6Eн—HË�½`NITŽ‘åNsæÝ7;*'Nfy@qь¨LWxìWÌ@T\x16}x¼®¸¤Œí\x18Íú.\x13×¼ÒYmó‰£\f°dƽmþé8Ëîù3JŠxäf�0é¶ tQ™)’½šÇì\x05\x0b‹ÚôE�(¦St®�\x1a–\x05w©Y)‹î""\x0biä �”ÄЭ¬+yÖ˜×b²–>}ö�;ì7\\¤N±æâ½eéy\x06s(¸¤ßå•W…¬�½…Åè¤1ÁëbJT\x07""ýàå•×’e½iɘù¾É\bÅf½®UŠ”íë¦É¡™""…j	L+I\x17.RÌ'›4‰\x03‚pš¼Ã¤vÚĈÍä\x13·=R\x0eõ‰Dª`ÌJ>¦	”Ë4Þ´\x17gjÅ’�‘\x18“·˜:Òäu\x13‡‰h&""\x02!\x05¥pµ\x02W\x14.+´æâŸuø®\x02—Zªå%…K\rzËÅ�l©FK¥~ñB\x17y1„‹\x01ýB\x17|{>G~ÛŠó9ø‡Â9…orqÖ…¿×¢™ClVhŽ\\;\x18¸¦=\x12_�)”_ÕâL!þ¦púË\fyZáË\f|¡ðù]øLáÓ:œ:™.Oµâd:NÔâ\x13…�\x15Ž\x1fK‘Ç\x15Ž¥àh->ú0E~¤ðáê\x04ùa\n>¨À‘Ahb¡i\x10\x0e+\x1cz?^\x1eRx?\x1e\x07\x15ÞS8På”\x072ñ×TìWx·\x16�«|²Qá/"+"Hello.pdf",66,"ñä\x13\x0eùd:žpà7ñجð8;y\\aS""6nè)7*lè‰ÇØÿcµ¨]_'k\x15Öó³µ¾\x0eë+õuk|rÝ4¬\x0bè�*üZa-Ëkë°Æ‡\x1a.FÍP<ÂÙ>âÂê\x04T3P]ˆU\\´U>T9±Ráa…‡\x14\x1e\\á”\x0f*¬pâW\nË\x15\x1ep\x0e“\x0fLÂ/\x15*ïŲ¥\x15r™ÂÒ"+"Hello.pdf",70,"‹Ë¬r±\x1d‹#‚\x02Gõ2+Ê\x1aôEIX\x14Ð\x17*Ü­°@¡tþ$YZ‹ù%ÝäüI(é†y\nwåâN…¹¹(nÅœ:ÌV(R(T˜5³£œ¥0“\x1crfGÌP˜®p‡ÂíS\x12äí6L+Ämû0•…©.LI\x00?ÑA\x17nUø¹Â-\x19éò–\\LV˜¤0QaB\x05Æ+ÜìÂ8…±Â/Ç*ÜT‡1Ýpãè4ycŒ\x1ež$G§aTAš\x1c¥0’¥‘…\x18ÁÒˆ:\x14¤!Ÿ�üþ\x18>Ì)‡'axD\x0b\x04âôaCír˜\x13Ã""\x1a±44`“Cí\x18\x1a\x11\r,\x05†XeÀ†@DT²4Ä\x1a'‡X1$""\x02�Býg"+"Hello.pdf",71,"wåâN…¹¹(nÅœ:ÌV(R(T˜5³£œ¥0“\x1crfGÌP˜®p‡ÂíS\x12äí6L+Ämû0•…©.LI\x00?ÑA\x17nUø¹Â-\x19éò–\\LV˜¤0QaB\x05Æ+ÜìÂ8…±Â/Ç*ÜT‡1Ýpãè4ycŒ\x1ež$G§aTAš\x1c¥0’¥‘…\x18ÁÒˆ:\x14¤!Ÿ�üþ\x18>Ì)‡'axD\x0b\x04âôaCír˜\x13Ã""\x1a±44`“Cí\x18\x1a\x11\r,\x05†XeÀ†@DT²4Ä\x1a'‡X1$""\x02�Býg\nƒ9„Á­¸Aáún\x18¤0�\x0b<°\x10\x03z·—\x03Æ ¿B?¿KöSè;\x06}zµ—}Æ �‡<…\\VÌUèÍÓ½Û£W{ä0—“†žq©²g\x1düÙÉÒï‚?¢\x19n³\x1dN™�Œl#ÜZ=«‡Of)ô`Í\x1e>t×\x06Éî"+"Hello.pdf",74,"p�\x1d^…Îv»ì¬àqû¥§\x02n?:�AGöÜQ¡ƒB&×6S!ƒïJF:Ú+¤+¤)´c\x0bíF 5Å/S‡!Åå�)~¸\x1cHf½d\x17’x}’‚“3w\x0eƒƒ=8œpDkg·Y¥Ý\x0e{´v¶Äxi³Â\x16­]""×.1\x1e‰\\»\x1dº5\x0eVãÙê¯'(Äs&ñ"+"Hello.pdf",75,"q©ˆu FÁ¦-"+"Hello.pdf",79,"endstream\nendobj"+"Hello.pdf",81,"14 0 obj"+"Hello.pdf",81,"14 0 obj\n2734"+"Hello.pdf",83,"endobj\n15 0 obj"+"Hello.pdf",84,"15 0 obj"+"Hello.pdf",86,"endobj\n16 0 obj"+"Hello.pdf",87,"16 0 obj"+"Hello.pdf",88,"(Mac OS X 10.12.6 Quartz PDFContext)"+"Hello.pdf",89,"endobj\n17 0 obj"+"Hello.pdf",90,"17 0 obj"+"Hello.pdf",92,"endobj\n18 0 obj"+"Hello.pdf",93,"18 0 obj"+"Hello.pdf",95,"endobj\n19 0 obj"+"Hello.pdf",96,"19 0 obj"+"Hello.pdf",98,"endobj\n20 0 obj"+"Hello.pdf",99,"20 0 obj"+"Hello.pdf",101,"endobj\n1 0 obj"+"Hello.pdf",102,"1 0 obj"+"Hello.pdf",103,"<< /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate"+"Hello.pdf",103,"<< /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate\n18 0 R /Keywords 19 0 R /AAPL:Keywords 20 0 R >>"+"Hello.pdf",104,"18 0 R /Keywords 19 0 R /AAPL:Keywords 20 0 R >>"+"Hello.pdf",105,"endobj\nxref"+"Hello.pdf",107,"0 21"+"Hello.pdf",108,"0000000000 65535 f "+"Hello.pdf",108,"0000000000 65535 f \n0000005392 00000 n "+"Hello.pdf",109,"0000005392 00000 n "+"Hello.pdf",110,"0000000238 00000 n "+"Hello.pdf",110,"0000000238 00000 n \n0000001714 00000 n "+"Hello.pdf",111,"0000001714 00000 n "+"Hello.pdf",112,"0000000022 00000 n "+"Hello.pdf",112,"0000000022 00000 n \n0000000219 00000 n "+"Hello.pdf",113,"0000000219 00000 n "+"Hello.pdf",114,"0000000342 00000 n "+"Hello.pdf",114,"0000000342 00000 n \n0000001679 00000 n "+"Hello.pdf",115,"0000001679 00000 n "+"Hello.pdf",116,"0000001847 00000 n "+"Hello.pdf",116,"0000001847 00000 n \n0000000439 00000 n "+"Hello.pdf",117,"0000000439 00000 n "+"Hello.pdf",118,"0000001658 00000 n "+"Hello.pdf",118,"0000001658 00000 n \n0000001797 00000 n "+"Hello.pdf",119,"0000001797 00000 n "+"Hello.pdf",120,"0000002110 00000 n "+"Hello.pdf",120,"0000002110 00000 n \n0000002362 00000 n "+"Hello.pdf",121,"0000002362 00000 n "+"Hello.pdf",122,"0000005186 00000 n "+"Hello.pdf",122,"0000005186 00000 n \n0000005207 00000 n "+"Hello.pdf",123,"0000005207 00000 n "+"Hello.pdf",124,"0000005231 00000 n "+"Hello.pdf",124,"0000005231 00000 n \n0000005284 00000 n "+"Hello.pdf",125,"0000005284 00000 n "+"Hello.pdf",126,"0000005311 00000 n "+"Hello.pdf",126,"0000005311 00000 n \n0000005353 00000 n "+"Hello.pdf",127,"0000005353 00000 n "+"Hello.pdf",128,"0000005372 00000 n "+"Hello.pdf",128,"0000005372 00000 n \ntrailer"+"Hello.pdf",130,"<< /Size 21 /Root 11 0 R /Info 1 0 R /ID [ <8db88d3335070bd9583341583cf769a3>"+"Hello.pdf",132,"startxref\n5536"+"Hello.sh",1,"#!/bin/sh\necho ""Hello World!"""+"Hello.sh",2,"echo ""Hello World!"""

tests/out/Hello_wnhS--csv-nkb.out

new file mode 100644@@ -0,0 +1,128 @@+"Hello.bat",1,8,7,"#!/bin/sh\necho ""Hello World!"""+"Hello.bat",2,7,16,"echo ""Hello World!"""+"Hello.class",5,27,148,"Hello.java\f\x00\x07\x00\b\x07\x00\x17\f\x00\x18\x00\x19\x01\x00\fHello World!\x07\x00\x1a\f\x00\x1b\x00\x1c\x01\x00\x05Hello\x01\x00\x10java/lang/Object\x01\x00\x10java/lang/System\x01\x00\x03out\x01\x00\x15Ljava/io/PrintStream;\x01\x00\x13java/io/PrintStream\x01\x00\x07println\x01\x00\x15(Ljava/lang/String;)V\x00!\x00\x05\x00\x06\x00\x00\x00\x00\x00\x02\x00\x01\x00\x07\x00\b\x00\x01\x00	\x00\x00\x00\x1d\x00\x01\x00\x01\x00\x00\x00\x05*·\x00\x01±\x00\x00\x00\x01\x00"+"Hello.java",1,1,0,"import java.lang.*;"+"Hello.java",3,1,21,"public class Hello // prints a Hello World! greeting"+"Hello.java",3,45,65,"public class Hello // prints a Hello World! greeting\n{ public static void main(String[] arg)"+"Hello.java",4,3,76,"{ public static void main(String[] arg)"+"Hello.java",5,25,138,"  { System.out.println(""Hello World!"");"+"Hello.pdf",1,8,7,"%PDF-1.3\n%Äåòåë§ó ÐÄÆ"+"Hello.pdf",3,1,22,"4 0 obj"+"Hello.pdf",3,5,26,"4 0 obj\n<< /Length 5 0 R /Filter /FlateDecode >>"+"Hello.pdf",4,5,34,"<< /Length 5 0 R /Filter /FlateDecode >>"+"Hello.pdf",5,1,71,"stream\nx\x01EŽ»"+"Hello.pdf",7,35,135,"\x021\x14D{¿â”Z˜½‰y˜V\x11l\x17.ø\x01a-d×eÍÿƒ\x17,¬†™9\f³1²Q\x02¹F—â©\x12ó™�\\LY\nŸ‰\x07o†k÷´ŽÐ›áâj©Rj²@8þ­í” »¶pQ£DÄ£\rï iÂ\x0bº0¨z¬|²¿Oó¼\x1eÐ\x177µ7ã\x17Nÿ ¥"+"Hello.pdf",9,1,202,"endstream\nendobj"+"Hello.pdf",11,1,219,"5 0 obj"+"Hello.pdf",11,5,223,"5 0 obj\n123"+"Hello.pdf",13,1,231,"endobj\n2 0 obj"+"Hello.pdf",14,3,240,"2 0 obj"+"Hello.pdf",15,5,250,"<< /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]"+"Hello.pdf",17,1,335,"endobj\n6 0 obj"+"Hello.pdf",18,3,344,"6 0 obj"+"Hello.pdf",19,5,354,"<< /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R >> /Font << /TT1 8 0 R"+"Hello.pdf",21,1,432,"endobj\n9 0 obj"+"Hello.pdf",22,3,441,"9 0 obj"+"Hello.pdf",23,5,451,"<< /Length 10 0 R /N 1 /Alternate /DeviceGray /Filter /FlateDecode >>"+"Hello.pdf",24,1,517,"stream\nx\x01…U]h\x1cU\x14>»sg\x03\x12\x07\x1f´\r-´ƒ?m	é2‰V\x13‹µÛMºI\x13·ëfS›*Êtv6;Ídfœ™Ý&¡O¥à›\x16\x04é« >Æ‚\b¶*6/ö¥¥Å’J5\x0f"+"Hello.pdf",25,19,547,"x\x01…U]h\x1cU\x14>»sg\x03\x12\x07\x1f´\r-´ƒ?m	é2‰V\x13‹µÛMºI\x13·ëfS›*Êtv6;Ídfœ™Ý&¡O¥à›\x16\x04é« >Æ‚\b¶*6/ö¥¥Å’J5\x0f"+"Hello.pdf",26,307,1006,"\x11ZŒ (}Rð;3ÛdvA2Ã�ùî¹çž{Îwî¹—¨ëoÝóì´J4ç„~¡œ›>9}JíºMiR¨›ðèFàåJ¥	ÆŽë˜üo\x1eÞ¥\x14Kîìg[íc[öäª\x19\x18к†æV\x03cŽ(¥\x11ej†ç‡D]— \x1f<\x1bzŒo\x03?9[)ç�×€•Ö\\@zª`:¦o\x19jÁ×\x17Ô’ïÖ,;éëVãlcËgÎn°¯üìFë\x0ef'Çñï…Ï\x17Lgj\x12x\x1fð’¡�0î\x03¾Û´N\x14cœN{á‘r¬ŸÎ6f§r-ùÉštª%¿PoŒ2Î\x12¥—\x16ë•7€Ÿ\x00^uN\x17�·ô×gÝq¶ÓC$õ\x18Aþ\x14ð³ÀZÝ\x1cã<©À\x15ß-³>Ëê9<\x02ü2ð%+\x1c«\x00þôCМd9° ÅzžýÄZ""{F?V\x02Þ\x06|È´\x0b¼\x16숊\x17–Øæ ð¼c\x17y-Ä..›A\x14/b\x17?…õÊh¬/§C¿ÂsŸ&’÷Ô¬£cÀàD\x1e­û£,‡?rèÙÑÞz\x11xÉo”9ö=Àkº?R\x00†ÍÌcU}˜y~\x01x€N¤t2É¥Óø\x1aäпˆ7 ‹š\x11òÈÇX\r}›"+"Hello.pdf",30,29,1639,"Tß\fL¿iV³Äw7Ï#úëõèNNm»a4üf,£Tê&Ñ·�“4\nendstream"+"Hello.pdf",32,1,1651,"endobj\n10 0 obj"+"Hello.pdf",33,4,1661,"10 0 obj"+"Hello.pdf",34,1,1667,"1116\nendobj"+"Hello.pdf",36,1,1679,"7 0 obj"+"Hello.pdf",36,5,1683,"7 0 obj\n[ /ICCBased 9 0 R ]"+"Hello.pdf",37,4,1690,"[ /ICCBased 9 0 R ]"+"Hello.pdf",38,1,1707,"endobj\n3 0 obj"+"Hello.pdf",39,3,1716,"3 0 obj"+"Hello.pdf",40,5,1726,"<< /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 2 0 R ] >>"+"Hello.pdf",41,1,1790,"endobj\n11 0 obj"+"Hello.pdf",42,4,1800,"11 0 obj"+"Hello.pdf",43,5,1810,"<< /Type /Catalog /Pages 3 0 R >>"+"Hello.pdf",44,1,1840,"endobj\n8 0 obj"+"Hello.pdf",45,3,1849,"8 0 obj"+"Hello.pdf",46,5,1859,"<< /Type /Font /Subtype /TrueType /BaseFont /GQTMZF+Menlo-Regular /FontDescriptor"+"Hello.pdf",46,68,1922,"<< /Type /Font /Subtype /TrueType /BaseFont /GQTMZF+Menlo-Regular /FontDescriptor\n12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602"+"Hello.pdf",47,4,1940,"12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602"+"Hello.pdf",47,74,2010,"12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602\n0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602"+"Hello.pdf",48,3,2016,"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602"+"Hello.pdf",48,73,2086,"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602\n0 0 602 ] >>"+"Hello.pdf",49,3,2092,"0 0 602 ] >>"+"Hello.pdf",50,1,2103,"endobj\n12 0 obj"+"Hello.pdf",51,4,2113,"12 0 obj"+"Hello.pdf",52,5,2123,"<< /Type /FontDescriptor /FontName /GQTMZF+Menlo-Regular /Flags 33 /FontBBox"+"Hello.pdf",52,69,2187,"<< /Type /FontDescriptor /FontName /GQTMZF+Menlo-Regular /Flags 33 /FontBBox\n[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729"+"Hello.pdf",53,8,2203,"[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729"+"Hello.pdf",54,2,2274,"/StemV 99 /XHeight 547 /StemH 83 /AvgWidth 602 /MaxWidth 602 /FontFile2 13 0 R"+"Hello.pdf",56,1,2355,"endobj\n13 0 obj"+"Hello.pdf",57,4,2365,"13 0 obj"+"Hello.pdf",58,5,2375,"<< /Length 14 0 R /Length1 4064 /Filter /FlateDecode >>"+"Hello.pdf",59,1,2427,"stream\nx\x01ÝW{xTÅ\x15?sw6¯Í>’MHH€]Öå•,�„·R\x16Hxˆ /ë.ˆòH (!\bA´1�JQ	Á@…\bH}\x15Q©µ+E]	ÄT¤b#E„ \x02"+"Hello.pdf",60,33,2475,"x\x01ÝW{xTÅ\x15?sw6¯Í>’MHH€]Öå•,�„·R\x16Hxˆ /ë.ˆòH (!\bA´1�JQ	Á@…\bH}\x15Q©µ+E]	ÄT¤b#E„ \x02"+"Hello.pdf",61,187,2776,"ø¢hŠ\x14!Ø\x00CϽ\x1bý>í×ïë¿íÜ�3çüæÌyÝ»÷Δ-\\\\DVª$P`VÉŒ\x05d6ëI\x1eŠgÝSæ6Eн—HË�½`NITŽ‘åNsæÝ7;*'Nfy@qь¨LWxìWÌ@T\x16}x¼®¸¤Œí\x18Íú.\x13×¼ÒYmó‰£\f°dƽmþé8Ëîù3JŠxäf�0é¶ tQ™)’½šÇì\x05\x0b‹ÚôE�(¦St®�\x1a–\x05w©Y)‹î""\x0biä �”ÄЭ¬+yÖ˜×b²–>}ö�;ì7\\¤N±æâ½eéy\x06s(¸¤ßå•W…¬�½…Åè¤1ÁëbJT\x07""ýàå•×’e½iɘù¾É\bÅf½®UŠ”íë¦É¡™""…j	L+I\x17.RÌ'›4‰\x03‚pš¼Ã¤vÚĈÍä\x13·=R\x0eõ‰Dª`ÌJ>¦	”Ë4Þ´\x17gjÅ’�‘\x18“·˜:Òäu\x13‡‰h&""\x02!\x05¥pµ\x02W\x14.+´æâŸuø®\x02—Zªå%…K\rzËÅ�l©FK¥~ñB\x17y1„‹\x01ýB\x17|{>G~ÛŠó9ø‡Â9…orqÖ…¿×¢™ClVhŽ\\;\x18¸¦=\x12_�)”_ÕâL!þ¦púË\fyZáË\f|¡ðù]øLáÓ:œ:™.Oµâd:NÔâ\x13…�\x15Ž\x1fK‘Ç\x15Ž¥àh->ú0E~¤ðáê\x04ùa"+"Hello.pdf",61,356,2996,"ø¢hŠ\x14!Ø\x00CϽ\x1bý>í×ïë¿íÜ�3çüæÌyÝ»÷Δ-\\\\DVª$P`VÉŒ\x05d6ëI\x1eŠgÝSæ6Eн—HË�½`NITŽ‘åNsæÝ7;*'Nfy@qь¨LWxìWÌ@T\x16}x¼®¸¤Œí\x18Íú.\x13×¼ÒYmó‰£\f°dƽmþé8Ëîù3JŠxäf�0é¶ tQ™)’½šÇì\x05\x0b‹ÚôE�(¦St®�\x1a–\x05w©Y)‹î""\x0biä �”ÄЭ¬+yÖ˜×b²–>}ö�;ì7\\¤N±æâ½eéy\x06s(¸¤ßå•W…¬�½…Åè¤1ÁëbJT\x07""ýàå•×’e½iɘù¾É\bÅf½®UŠ”íë¦É¡™""…j	L+I\x17.RÌ'›4‰\x03‚pš¼Ã¤vÚĈÍä\x13·=R\x0eõ‰Dª`ÌJ>¦	”Ë4Þ´\x17gjÅ’�‘\x18“·˜:Òäu\x13‡‰h&""\x02!\x05¥pµ\x02W\x14.+´æâŸuø®\x02—Zªå%…K\rzËÅ�l©FK¥~ñB\x17y1„‹\x01ýB\x17|{>G~ÛŠó9ø‡Â9…orqÖ…¿×¢™ClVhŽ\\;\x18¸¦=\x12_�)”_ÕâL!þ¦púË\fyZáË\f|¡ðù]øLáÓ:œ:™.Oµâd:NÔâ\x13…�\x15Ž\x1fK‘Ç\x15Ž¥àh->ú0E~¤ðáê\x04ùa\n>¨À‘Ahb¡i\x10\x0e+\x1cz?^\x1eRx?\x1e\x07\x15ÞS8På”\x072ñ×TìWx·\x16�«|²Qá/"+"Hello.pdf",66,95,3301,"ñä\x13\x0eùd:žpà7ñجð8;y\\aS""6nè)7*lè‰ÇØÿcµ¨]_'k\x15Öó³µ¾\x0eë+õuk|rÝ4¬\x0bè�*üZa-Ëkë°Æ‡\x1a.FÍP<ÂÙ>âÂê\x04T3P]ˆU\\´U>T9±Ráa…‡\x14\x1e\\á”\x0f*¬pâW\nË\x15\x1ep\x0e“\x0fLÂ/\x15*ïŲ¥\x15r™ÂÒ"+"Hello.pdf",70,35,3383,"‹Ë¬r±\x1d‹#‚\x02Gõ2+Ê\x1aôEIX\x14Ð\x17*Ü­°@¡tþ$YZ‹ù%ÝäüI(é†y\nwåâN…¹¹(nÅœ:ÌV(R(T˜5³£œ¥0“\x1crfGÌP˜®p‡ÂíS\x12äí6L+Ämû0•…©.LI\x00?ÑA\x17nUø¹Â-\x19éò–\\LV˜¤0QaB\x05Æ+ÜìÂ8…±Â/Ç*ÜT‡1Ýpãè4ycŒ\x1ež$G§aTAš\x1c¥0’¥‘…\x18ÁÒˆ:\x14¤!Ÿ�üþ\x18>Ì)‡'axD\x0b\x04âôaCír˜\x13Ã""\x1a±44`“Cí\x18\x1a\x11\r,\x05†XeÀ†@DT²4Ä\x1a'‡X1$""\x02�Býg"+"Hello.pdf",71,146,3575,"wåâN…¹¹(nÅœ:ÌV(R(T˜5³£œ¥0“\x1crfGÌP˜®p‡ÂíS\x12äí6L+Ämû0•…©.LI\x00?ÑA\x17nUø¹Â-\x19éò–\\LV˜¤0QaB\x05Æ+ÜìÂ8…±Â/Ç*ÜT‡1Ýpãè4ycŒ\x1ež$G§aTAš\x1c¥0’¥‘…\x18ÁÒˆ:\x14¤!Ÿ�üþ\x18>Ì)‡'axD\x0b\x04âôaCír˜\x13Ã""\x1a±44`“Cí\x18\x1a\x11\r,\x05†XeÀ†@DT²4Ä\x1a'‡X1$""\x02�Býg\nƒ9„Á­¸Aáún\x18¤0�\x0b<°\x10\x03z·—\x03Æ ¿B?¿KöSè;\x06}zµ—}Æ �‡<…\\VÌUèÍÓ½Û£W{ä0—“†žq©²g\x1düÙÉÒï‚?¢\x19n³\x1dN™�Œl#ÜZ=«‡Of)ô`Í\x1e>t×\x06Éî"+"Hello.pdf",74,36,3743,"p�\x1d^…Îv»ì¬àqû¥§\x02n?:�AGöÜQ¡ƒB&×6S!ƒïJF:Ú+¤+¤)´c\x0bíF 5Å/S‡!Åå�)~¸\x1cHf½d\x17’x}’‚“3w\x0eƒƒ=8œpDkg·Y¥Ý\x0e{´v¶Äxi³Â\x16­]""×.1\x1e‰\\»\x1dº5\x0eVãÙê¯'(Äs&ñ"+"Hello.pdf",75,2,3825,"q©ˆu FÁ¦-"+"Hello.pdf",79,1,5169,"endstream\nendobj"+"Hello.pdf",81,1,5186,"14 0 obj"+"Hello.pdf",81,6,5191,"14 0 obj\n2734"+"Hello.pdf",83,1,5200,"endobj\n15 0 obj"+"Hello.pdf",84,4,5210,"15 0 obj"+"Hello.pdf",86,1,5224,"endobj\n16 0 obj"+"Hello.pdf",87,4,5234,"16 0 obj"+"Hello.pdf",88,2,5241,"(Mac OS X 10.12.6 Quartz PDFContext)"+"Hello.pdf",89,1,5277,"endobj\n17 0 obj"+"Hello.pdf",90,4,5287,"17 0 obj"+"Hello.pdf",92,1,5304,"endobj\n18 0 obj"+"Hello.pdf",93,4,5314,"18 0 obj"+"Hello.pdf",95,1,5346,"endobj\n19 0 obj"+"Hello.pdf",96,4,5356,"19 0 obj"+"Hello.pdf",98,1,5365,"endobj\n20 0 obj"+"Hello.pdf",99,4,5375,"20 0 obj"+"Hello.pdf",101,1,5385,"endobj\n1 0 obj"+"Hello.pdf",102,3,5394,"1 0 obj"+"Hello.pdf",103,5,5404,"<< /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate"+"Hello.pdf",103,73,5472,"<< /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate\n18 0 R /Keywords 19 0 R /AAPL:Keywords 20 0 R >>"+"Hello.pdf",104,4,5483,"18 0 R /Keywords 19 0 R /AAPL:Keywords 20 0 R >>"+"Hello.pdf",105,1,5529,"endobj\nxref"+"Hello.pdf",107,1,5541,"0 21"+"Hello.pdf",108,1,5546,"0000000000 65535 f "+"Hello.pdf",108,18,5563,"0000000000 65535 f \n0000005392 00000 n "+"Hello.pdf",109,12,5577,"0000005392 00000 n "+"Hello.pdf",110,1,5586,"0000000238 00000 n "+"Hello.pdf",110,18,5603,"0000000238 00000 n \n0000001714 00000 n "+"Hello.pdf",111,12,5617,"0000001714 00000 n "+"Hello.pdf",112,1,5626,"0000000022 00000 n "+"Hello.pdf",112,18,5643,"0000000022 00000 n \n0000000219 00000 n "+"Hello.pdf",113,12,5657,"0000000219 00000 n "+"Hello.pdf",114,1,5666,"0000000342 00000 n "+"Hello.pdf",114,18,5683,"0000000342 00000 n \n0000001679 00000 n "+"Hello.pdf",115,12,5697,"0000001679 00000 n "+"Hello.pdf",116,1,5706,"0000001847 00000 n "+"Hello.pdf",116,18,5723,"0000001847 00000 n \n0000000439 00000 n "+"Hello.pdf",117,12,5737,"0000000439 00000 n "+"Hello.pdf",118,1,5746,"0000001658 00000 n "+"Hello.pdf",118,18,5763,"0000001658 00000 n \n0000001797 00000 n "+"Hello.pdf",119,12,5777,"0000001797 00000 n "+"Hello.pdf",120,1,5786,"0000002110 00000 n "+"Hello.pdf",120,18,5803,"0000002110 00000 n \n0000002362 00000 n "+"Hello.pdf",121,12,5817,"0000002362 00000 n "+"Hello.pdf",122,1,5826,"0000005186 00000 n "+"Hello.pdf",122,18,5843,"0000005186 00000 n \n0000005207 00000 n "+"Hello.pdf",123,12,5857,"0000005207 00000 n "+"Hello.pdf",124,1,5866,"0000005231 00000 n "+"Hello.pdf",124,18,5883,"0000005231 00000 n \n0000005284 00000 n "+"Hello.pdf",125,12,5897,"0000005284 00000 n "+"Hello.pdf",126,1,5906,"0000005311 00000 n "+"Hello.pdf",126,18,5923,"0000005311 00000 n \n0000005353 00000 n "+"Hello.pdf",127,12,5937,"0000005353 00000 n "+"Hello.pdf",128,1,5946,"0000005372 00000 n "+"Hello.pdf",128,18,5963,"0000005372 00000 n \ntrailer"+"Hello.pdf",130,5,5978,"<< /Size 21 /Root 11 0 R /Info 1 0 R /ID [ <8db88d3335070bd9583341583cf769a3>"+"Hello.pdf",132,1,6092,"startxref\n5536"+"Hello.sh",1,8,7,"#!/bin/sh\necho ""Hello World!"""+"Hello.sh",2,7,16,"echo ""Hello World!"""

tests/out/Hello_wnhS--csv-nv.out

new file mode 100644@@ -0,0 +1,34 @@+"Hello.class",1,"Êþº¾\x00\x00\x004\x00\x1d"+"Hello.class",2,"\x00\x06\x00\x0f	\x00\x10\x00\x11\b\x00\x12"+"Hello.class",3,"\x00\x13\x00\x14\x07\x00\x15\x07\x00\x16\x01\x00\x06<init>\x01\x00\x03()V\x01\x00\x04Code\x01\x00\x0fLineNumberTable\x01\x00\x04main\x01\x00\x16([Ljava/lang/String;)V\x01\x00"+"Hello.class",4,"SourceFile\x01\x00"+"Hello.class",6,"\x00\x00\x00\x06\x00\x01\x00\x00\x00\x03\x00	\x00\x0b\x00\f\x00\x01\x00	\x00\x00\x00%\x00\x02\x00\x01\x00\x00\x00	²\x00\x02\x12\x03¶\x00\x04±\x00\x00\x00\x01\x00"+"Hello.class",7,"\x00\x00\x00"+"Hello.class",8,"\x00\x02\x00\x00\x00\x05\x00\b\x00\x06\x00\x01\x00\r\x00\x00\x00\x02\x00\x0e"+"Hello.java",2,""+"Hello.java",6,"  }"+"Hello.java",7,"}"+"Hello.pdf",16,">>"+"Hello.pdf",20,">> >>"+"Hello.pdf",27,"ÐpÐ|ô\fh\x15€tZ\x00*%´LôX'ž£R\x15=•f¢YA„ØÊý¨oP~×§Ô€´Në�Ö�^£_""É<ýJsèç!m`l¦Ãn\x1e^8´\b\x0fØ\x13¶ù eÓ\x15Û…&žG;(&Ä+bP\f‘*^\x15‡Å!1\fé�8\x18͉½OúÎ~>ذô.ÖMú¾\f\x0eB¬gÃ3\x07¬p4\x01<ø\x07ëÎFš	¶.îhìó¼�Þ?ï¿c\x19·>ø³�½\x00ú1'¿Á¢\x0bk&%æ^?÷MOÂCuE|õÖ�îëçèx2KQÞª�Y’×äûò"+"Hello.pdf",28,"¾÷äÕ¤\rùgy\x15ï½¶\\=Ê\x0bÿ“¹Í!F;’ÍAÎ<›Q´qÆ\x1bÀ!¸©Esö·YL²é¶b´`ÉB”�«¸ÿË	óÃ<·±Rs.îð¼·?c6Í÷Š\x0f‹t¾O»¬­kŸh?jh+ÚÇ@¿K\x1fJ_JßJW¤«Ò\rR¥kÒ²ô�ô½ô¹ô5z_@º,]éØIqì\x1b»\x07~Æ{Öhí0f†³\x14\x10óÂÚÌ"+"Hello.pdf",29,"K\x1fñw\x06c›ù3¡Õ^\x03�»c-刲SyF\x19Vv+Ï)\x13J¯r@9¬lW\x06Ðú•Qe/Fvn°dc=΀…’g‹¦#®â<±Wu°çÃK\x1dï¦_\\ÃÖ†5ØI=\x0ežÙÚ¦\x0e¯\x11W¿\x15Uc¼;]œ\x06:M!b‹Î""r\x1f:œ\x1f'ªþÎÙ\\“85Roâ”°Ä.Ñ/ÆZ5˜\x13\x07P…ãmõ8ÈUš\x19É\fgr¤fz3C™þÌ1ÆQ¬Ñù’Ù‹Ñ!|G\x12Þ3Ë1ÿ›5Äg\x18ï\x1dæ¨	l£‡[+4çqß\x11å]oÁ·fê¡: i/©9\\¯¦:æ\x18Ù>U·m5\x1a"+"Hello.pdf",55,">>"+"Hello.pdf",63,"ïT`ŸÂÛ"+"Hello.pdf",64,"VØ»)Q¾¥°GáM…?)4°½\x06\x17Þ°¢~w�¬WؽkšÜ]‡Ý•ú®:ŸÜ5\r»\x02z�\x0f;\x15^¯E¤f¨|MáU\x1e^mÅ+lk‡Â\x1f\x0b±½\x10/Û\x10NÂ\x1f\x14^R�«ø½Â‹"+"Hello.pdf",65,"¿KÂ6…\x17ž·É\x17rñ¼\rÏmuÊçºa«\x13ÏnñËg+°Å�ß*<£ð´ÂSO¦Ë§"+"Hello.pdf",68,"TtÄý"+"Hello.pdf",69,"å6üBa‰Â="+"Hello.pdf",73,"Ý\x14º*t±Ã—:Lú"+"Hello.pdf",76,"Ò\x05prh…Æ€6\b‚\x03\x10~�\x03"""""+"Hello.pdf",77,"W¬\x16Yÿ?�þÇSáOg„\x1a;M¬åÑØGDè!m\x19¥¿¿""´‡u4S/""\x1aÅJ±“ù­¼·h¤åt^ÄãmÑŸ¹z^\x1bÔ=ŒÖÐfsu\rNÓbì¢Cô\x0e\x1dcî´\x18\b^+\x0e‘Gœ`?+ð¡¡ž¥=LËQ� è$Jh‹x‰-–SD”Ò2�Gm""[Þ¯\x1fdt?=Ä×£´…J™72XÎñL;h\x15] \rÚ\x19šÂüNÚËñ(þüš¹ˆ&jaKÛ´ÁÚlÖÛËÖ6Ñ&±œšh‘Nü)WtJ6iYlu\x07g@4“6Ë&¹Á¨\x07�Mò\x1cÏ\x10u°D,®\x18/gaÔn«Ø%zkãè\x10¯/§É¸\rwã˜X¡{õ%8C5\x1aa:ÝI\x07d“ÅE51^ª±Ì\x16÷éÓÍ«œ­•kKôéb\x1b�a›3ñ\x1dË\x1eŽl³™1Ñ\x0em¢\x1c'Çqγ\x19ÛlÒš(µ8h?Z¹îk5%Fé#0„ó)×o¢\rô\fÛíÊ•!*E_ö^Jåruô¢m|ùåjÔrEÍjˆ<m0mÖf‹U\x1cm\x0bW³\x14ùÔŸ}t�gi…ØÁqSL\x05-’M¼U$êAôZŒEêü÷¦l·#¬ùF\x17†\x03\x13‚î}!�?û'¢Û\x11ã\x0eÓøpâ}îȵkãƒz†\f…ef\x18¾Ø°îóžúO“§üÙcÆ\x07Ý\x11Ñ® ¿ÍlÁô|\x06'\x05Ù\x03ÿ\f˜Ý\x150\x16\x05F‡¥�£§‡Ý³ŠÝUŽ*ï *GÑ ?ïÿ²Ç0\x19\x1f|YˆGB\x11qmE„ò;¼Î»HÜq;OÇe»Ý\x05sóÃb:\x0bñÙ\fôð0—�í\x1eÁaŽ˜\x18ô†ÜUîªÑ…Uî\x11îâ\x19…\x1c·9òDQU(‡3˜\x14œËtrÐ\x13\x0e„2~`‹B!ûհÃKX½*Ä\x16îl³À£	å\\e¥Äì1î0ºŒ\x0fN\b†+ó3Â�üP†Çã.\b7Œ\x0f†\x1bò3<¡\x10kÙ~ˆ”#®˜›Ö\x16³�c¶õàyGÔ"+"Hello.pdf",78,"—(�\x11¦PU•asRÐë	WVUeTq\x1emr„\x1a~\x02\bú)\x10h\x03""dØàJ\x14ð÷`<\x1bãÁëÉ0\x00¯Çëá8CùìÛiÜš\x02ŽÔ\x13òónœŠ¹¯ä^ÎýœÁó³\x18Ýçóù‚Ï\x00SX\x1eEÝþm¿ÎðÙ´\x1féÁ”t“vágw;�\x14™ü¯/Vµz±Ü§ª\x18ê´ËÜó\x13Y„ëU\x11+—k:å¼u¸¹79\x0e7\x1fnî•ìô8}\x1e§§X§+‹�qå\x0bU\x1bcûîüBKwì0rÐGñ¿ �n6N\x15|osøÖq·:øXô\x1ewæÅqÆX–<êÜc\x18\x17,ǽÇo\x0bCAçná\x1eŸ³“£Š¥„¬^½“óØužÓËÔ»²QëÞØxõƒFÙtõ-í†Ö,훫Nö¯QùµÏø­QN)”IyF\x04;\x19t°�\biì!“=eæð;ÏB‰\fî¤dJ7G£\x0e†\x17‘âI±¤æåöëŸb\x13^79\x1d”—›\x14ÓSx;[bôéW>‹}ã¥`CÉÜ=SÕeuT¸Ï\x1d¹\x14¶®}xÅ‹±Zõ\x14Ë\x17û\x06\f|-+K\f\x14ÉÂ*\x02ê“ÇÊ^\bÏ7êrŽë2ÅÒž½v�F•ȷ؈ʨCÜqŽHçSž\x11Q""ÅG#q¥^/R¼�»ôuzúz´\x03SC\x1fœyö\x15õ‘8!Öß¿ôñCoââ\x1a£æ\x1a­äœGqÎ	ÔŽ¼�dKu\x12U[ë“6¦Å%Ùó‘”ò³4Ç…æ+Æ-üüB³ãl/ÑÙ’â2rìÛ§K×Ü$§CóvÖœŽ$­¸zÍšêÕkÖ¬>s©å«3--8qôHÓ±cMGŽnVï«OÕ)uHøù³ÓQô4üšíÚRó95N§?n’Å,~~o¦‰Ì	>:Fu,Æ\x0brä„Éc§ŒÈ\x1a[4^©bÑœÅóf,$ú\x17 -\x06ä"+"Hello.pdf",85,"(Hello)"+"Hello.pdf",91,"(TextEdit)"+"Hello.pdf",94,"(D:20200124010711Z00'00')"+"Hello.pdf",97,"()"+"Hello.pdf",100,"[ ]"+"Hello.pdf",131,"<8db88d3335070bd9583341583cf769a3> ] >>"+"Hello.pdf",134,"%%EOF"+"Hello.txt",1,"Hello"+"emptyline.txt",1,""

tests/out/Hello_wnhS--csv-o.out

new file mode 100644@@ -0,0 +1,217 @@+"Hello.bat","sh\necho"+"Hello.bat","Hello World!"""+"Hello.class","Hello World!\x07\x00\x1a"+"Hello.java","import java.lang.*;"+"Hello.java","public class"+"Hello.java","Hello //"+"Hello.java","prints a"+"Hello.java","Hello World!"+"Hello.java","greeting\n{"+"Hello.java","public static"+"Hello.java","void main(String[]"+"Hello.java","Hello World!"");"+"Hello.pdf","3\n%Äåòåë§ó ÐÄÆ"+"Hello.pdf","4 0"+"Hello.pdf","obj\n<<"+"Hello.pdf","Length 5"+"Hello.pdf","0 R"+"Hello.pdf","Filter /FlateDecode"+"Hello.pdf","stream\nx\x01EŽ»"+"Hello.pdf","LY\nŸ‰\x07o†k÷´ŽÐ›áâj©Rj²@8þ­í”"+"Hello.pdf","endstream\nendobj"+"Hello.pdf","5 0"+"Hello.pdf","obj\n123"+"Hello.pdf","endobj\n2"+"Hello.pdf","0 obj"+"Hello.pdf","Type /Page"+"Hello.pdf","Parent 3"+"Hello.pdf","0 R"+"Hello.pdf","Resources 6"+"Hello.pdf","0 R"+"Hello.pdf","Contents 4"+"Hello.pdf","0 R"+"Hello.pdf","MediaBox [0"+"Hello.pdf","0 612"+"Hello.pdf","endobj\n6"+"Hello.pdf","0 obj"+"Hello.pdf","ProcSet ["+"Hello.pdf","PDF /Text"+"Hello.pdf","ColorSpace <<"+"Hello.pdf","Cs1 7"+"Hello.pdf","0 R"+"Hello.pdf","Font <<"+"Hello.pdf","TT1 8"+"Hello.pdf","0 R"+"Hello.pdf","endobj\n9"+"Hello.pdf","0 obj"+"Hello.pdf","Length 10"+"Hello.pdf","0 R"+"Hello.pdf","N 1"+"Hello.pdf","Alternate /DeviceGray"+"Hello.pdf","Filter /FlateDecode"+"Hello.pdf","stream\nx\x01…U]h\x1cU\x14>»sg\x03\x12\x07\x1f´"+"Hello.pdf","m	é2‰V\x13‹µÛMºI\x13·ëfS›*Êtv6;Ídfœ™Ý&¡O¥à›\x16\x04é« >Æ‚\b¶*6/ö¥¥Å’J5\x0f"+"Hello.pdf","7 ‹š\x11òÈÇX"+"Hello.pdf","4\nendstream"+"Hello.pdf","endobj\n10"+"Hello.pdf","0 obj"+"Hello.pdf","1116\nendobj"+"Hello.pdf","7 0"+"Hello.pdf","obj\n["+"Hello.pdf","ICCBased 9"+"Hello.pdf","0 R"+"Hello.pdf","endobj\n3"+"Hello.pdf","0 obj"+"Hello.pdf","Type /Pages"+"Hello.pdf","MediaBox [0"+"Hello.pdf","0 612"+"Hello.pdf","Count 1"+"Hello.pdf","Kids ["+"Hello.pdf","2 0"+"Hello.pdf","R ]"+"Hello.pdf","endobj\n11"+"Hello.pdf","0 obj"+"Hello.pdf","Type /Catalog"+"Hello.pdf","Pages 3"+"Hello.pdf","0 R"+"Hello.pdf","endobj\n8"+"Hello.pdf","0 obj"+"Hello.pdf","Type /Font"+"Hello.pdf","Subtype /TrueType"+"Hello.pdf","BaseFont /GQTMZF+Menlo-Regular"+"Hello.pdf","FontDescriptor\n12"+"Hello.pdf","0 R"+"Hello.pdf","Encoding /MacRomanEncoding"+"Hello.pdf","FirstChar 72"+"Hello.pdf","LastChar 111"+"Hello.pdf","Widths ["+"Hello.pdf","602\n0"+"Hello.pdf","0 0"+"Hello.pdf","0 0"+"Hello.pdf","0 0"+"Hello.pdf","0 0"+"Hello.pdf","0 0"+"Hello.pdf","0 0"+"Hello.pdf","0 0"+"Hello.pdf","0 0"+"Hello.pdf","0 0"+"Hello.pdf","0 0"+"Hello.pdf","0 0"+"Hello.pdf","0 0"+"Hello.pdf","0 0"+"Hello.pdf","0 602"+"Hello.pdf","0 0"+"Hello.pdf","0 0"+"Hello.pdf","0 0"+"Hello.pdf","602\n0"+"Hello.pdf","0 602"+"Hello.pdf","endobj\n12"+"Hello.pdf","0 obj"+"Hello.pdf","Type /FontDescriptor"+"Hello.pdf","FontName /GQTMZF+Menlo-Regular"+"Hello.pdf","Flags 33"+"Hello.pdf","FontBBox\n[-558"+"Hello.pdf","375 718"+"Hello.pdf","ItalicAngle 0"+"Hello.pdf","Ascent 928"+"Hello.pdf","Descent -236"+"Hello.pdf","CapHeight 729"+"Hello.pdf","StemV 99"+"Hello.pdf","XHeight 547"+"Hello.pdf","StemH 83"+"Hello.pdf","AvgWidth 602"+"Hello.pdf","MaxWidth 602"+"Hello.pdf","FontFile2 13"+"Hello.pdf","0 R"+"Hello.pdf","endobj\n13"+"Hello.pdf","0 obj"+"Hello.pdf","Length 14"+"Hello.pdf","0 R"+"Hello.pdf","Length1 4064"+"Hello.pdf","Filter /FlateDecode"+"Hello.pdf","stream\nx\x01ÝW{xTÅ\x15?sw6¯Í>’MHH€]Öå•,�„·R\x16Hxˆ"+"Hello.pdf","H (!\bA´1�JQ"+"Hello.pdf","j	L+I\x17.RÌ'›4‰\x03‚pš¼Ã¤vÚĈÍä\x13·=R\x0eõ‰Dª`ÌJ>¦"+"Hello.pdf","a\n>¨À‘Ahb¡i\x10\x0e+\x1cz?^\x1eRx?\x1e\x07\x15ÞS8På”\x072ñ×TìWx·\x16�«|²Qá/"+"Hello.pdf","W\nË\x15\x1ep\x0e“\x0fLÂ/\x15*ïŲ¥\x15r™ÂÒ"+"Hello.pdf","y\nwåâN…¹¹(nÅœ:ÌV(R(T˜5³£œ¥0“\x1crfGÌP˜®p‡ÂíS\x12äí6L+Ämû0•…©.LI\x00?ÑA\x17nUø¹Â-\x19éò–\\LV˜¤0QaB\x05Æ+ÜìÂ8…±Â/Ç*ÜT‡1Ýpãè4ycŒ\x1ež$G§aTAš\x1c¥0’¥‘…\x18ÁÒˆ:\x14¤!Ÿ�üþ\x18>Ì)‡'axD"+"Hello.pdf","g\nƒ9„Á­¸Aáún\x18¤0�"+"Hello.pdf","F 5Å/S‡!Åå�)~¸\x1cHf½d\x17’x}’‚“3w\x0eƒƒ=8œpDkg·Y¥Ý\x0e{´v¶Äxi³Â\x16­]""×.1\x1e‰\\»\x1dº5\x0eVãÙê¯'(Äs&ñ"+"Hello.pdf","u FÁ¦-"+"Hello.pdf","endstream\nendobj"+"Hello.pdf","14 0"+"Hello.pdf","obj\n2734"+"Hello.pdf","endobj\n15"+"Hello.pdf","0 obj"+"Hello.pdf","endobj\n16"+"Hello.pdf","0 obj"+"Hello.pdf","Mac OS"+"Hello.pdf","X 10.12.6"+"Hello.pdf","Quartz PDFContext)"+"Hello.pdf","endobj\n17"+"Hello.pdf","0 obj"+"Hello.pdf","endobj\n18"+"Hello.pdf","0 obj"+"Hello.pdf","endobj\n19"+"Hello.pdf","0 obj"+"Hello.pdf","endobj\n20"+"Hello.pdf","0 obj"+"Hello.pdf","endobj\n1"+"Hello.pdf","0 obj"+"Hello.pdf","Title 15"+"Hello.pdf","0 R"+"Hello.pdf","Producer 16"+"Hello.pdf","0 R"+"Hello.pdf","Creator 17"+"Hello.pdf","0 R"+"Hello.pdf","CreationDate 18"+"Hello.pdf","0 R"+"Hello.pdf","ModDate\n18"+"Hello.pdf","0 R"+"Hello.pdf","Keywords 19"+"Hello.pdf","0 R"+"Hello.pdf","Keywords 20"+"Hello.pdf","0 R"+"Hello.pdf","endobj\nxref"+"Hello.pdf","0 21"+"Hello.pdf","0000000000 65535"+"Hello.pdf","f \n0000005392"+"Hello.pdf","00000 n"+"Hello.pdf","0000000238 00000"+"Hello.pdf","n \n0000001714"+"Hello.pdf","00000 n"+"Hello.pdf","0000000022 00000"+"Hello.pdf","n \n0000000219"+"Hello.pdf","00000 n"+"Hello.pdf","0000000342 00000"+"Hello.pdf","n \n0000001679"+"Hello.pdf","00000 n"+"Hello.pdf","0000001847 00000"+"Hello.pdf","n \n0000000439"+"Hello.pdf","00000 n"+"Hello.pdf","0000001658 00000"+"Hello.pdf","n \n0000001797"+"Hello.pdf","00000 n"+"Hello.pdf","0000002110 00000"+"Hello.pdf","n \n0000002362"+"Hello.pdf","00000 n"+"Hello.pdf","0000005186 00000"+"Hello.pdf","n \n0000005207"+"Hello.pdf","00000 n"+"Hello.pdf","0000005231 00000"+"Hello.pdf","n \n0000005284"+"Hello.pdf","00000 n"+"Hello.pdf","0000005311 00000"+"Hello.pdf","n \n0000005353"+"Hello.pdf","00000 n"+"Hello.pdf","0000005372 00000"+"Hello.pdf","n \ntrailer"+"Hello.pdf","Size 21"+"Hello.pdf","Root 11"+"Hello.pdf","0 R"+"Hello.pdf","Info 1"+"Hello.pdf","0 R"+"Hello.pdf","ID ["+"Hello.pdf","startxref\n5536"+"Hello.sh","sh\necho"+"Hello.sh","Hello World!"""

tests/out/Hello_wnhS--csv-on.out

new file mode 100644@@ -0,0 +1,217 @@+"Hello.bat",1,"sh\necho"+"Hello.bat",2,"Hello World!"""+"Hello.class",5,"Hello World!\x07\x00\x1a"+"Hello.java",1,"import java.lang.*;"+"Hello.java",3,"public class"+"Hello.java",3,"Hello //"+"Hello.java",3,"prints a"+"Hello.java",3,"Hello World!"+"Hello.java",3,"greeting\n{"+"Hello.java",4,"public static"+"Hello.java",4,"void main(String[]"+"Hello.java",5,"Hello World!"");"+"Hello.pdf",1,"3\n%Äåòåë§ó ÐÄÆ"+"Hello.pdf",3,"4 0"+"Hello.pdf",3,"obj\n<<"+"Hello.pdf",4,"Length 5"+"Hello.pdf",4,"0 R"+"Hello.pdf",4,"Filter /FlateDecode"+"Hello.pdf",5,"stream\nx\x01EŽ»"+"Hello.pdf",7,"LY\nŸ‰\x07o†k÷´ŽÐ›áâj©Rj²@8þ­í”"+"Hello.pdf",9,"endstream\nendobj"+"Hello.pdf",11,"5 0"+"Hello.pdf",11,"obj\n123"+"Hello.pdf",13,"endobj\n2"+"Hello.pdf",14,"0 obj"+"Hello.pdf",15,"Type /Page"+"Hello.pdf",15,"Parent 3"+"Hello.pdf",15,"0 R"+"Hello.pdf",15,"Resources 6"+"Hello.pdf",15,"0 R"+"Hello.pdf",15,"Contents 4"+"Hello.pdf",15,"0 R"+"Hello.pdf",15,"MediaBox [0"+"Hello.pdf",15,"0 612"+"Hello.pdf",17,"endobj\n6"+"Hello.pdf",18,"0 obj"+"Hello.pdf",19,"ProcSet ["+"Hello.pdf",19,"PDF /Text"+"Hello.pdf",19,"ColorSpace <<"+"Hello.pdf",19,"Cs1 7"+"Hello.pdf",19,"0 R"+"Hello.pdf",19,"Font <<"+"Hello.pdf",19,"TT1 8"+"Hello.pdf",19,"0 R"+"Hello.pdf",21,"endobj\n9"+"Hello.pdf",22,"0 obj"+"Hello.pdf",23,"Length 10"+"Hello.pdf",23,"0 R"+"Hello.pdf",23,"N 1"+"Hello.pdf",23,"Alternate /DeviceGray"+"Hello.pdf",23,"Filter /FlateDecode"+"Hello.pdf",24,"stream\nx\x01…U]h\x1cU\x14>»sg\x03\x12\x07\x1f´"+"Hello.pdf",25,"m	é2‰V\x13‹µÛMºI\x13·ëfS›*Êtv6;Ídfœ™Ý&¡O¥à›\x16\x04é« >Æ‚\b¶*6/ö¥¥Å’J5\x0f"+"Hello.pdf",26,"7 ‹š\x11òÈÇX"+"Hello.pdf",30,"4\nendstream"+"Hello.pdf",32,"endobj\n10"+"Hello.pdf",33,"0 obj"+"Hello.pdf",34,"1116\nendobj"+"Hello.pdf",36,"7 0"+"Hello.pdf",36,"obj\n["+"Hello.pdf",37,"ICCBased 9"+"Hello.pdf",37,"0 R"+"Hello.pdf",38,"endobj\n3"+"Hello.pdf",39,"0 obj"+"Hello.pdf",40,"Type /Pages"+"Hello.pdf",40,"MediaBox [0"+"Hello.pdf",40,"0 612"+"Hello.pdf",40,"Count 1"+"Hello.pdf",40,"Kids ["+"Hello.pdf",40,"2 0"+"Hello.pdf",40,"R ]"+"Hello.pdf",41,"endobj\n11"+"Hello.pdf",42,"0 obj"+"Hello.pdf",43,"Type /Catalog"+"Hello.pdf",43,"Pages 3"+"Hello.pdf",43,"0 R"+"Hello.pdf",44,"endobj\n8"+"Hello.pdf",45,"0 obj"+"Hello.pdf",46,"Type /Font"+"Hello.pdf",46,"Subtype /TrueType"+"Hello.pdf",46,"BaseFont /GQTMZF+Menlo-Regular"+"Hello.pdf",46,"FontDescriptor\n12"+"Hello.pdf",47,"0 R"+"Hello.pdf",47,"Encoding /MacRomanEncoding"+"Hello.pdf",47,"FirstChar 72"+"Hello.pdf",47,"LastChar 111"+"Hello.pdf",47,"Widths ["+"Hello.pdf",47,"602\n0"+"Hello.pdf",48,"0 0"+"Hello.pdf",48,"0 0"+"Hello.pdf",48,"0 0"+"Hello.pdf",48,"0 0"+"Hello.pdf",48,"0 0"+"Hello.pdf",48,"0 0"+"Hello.pdf",48,"0 0"+"Hello.pdf",48,"0 0"+"Hello.pdf",48,"0 0"+"Hello.pdf",48,"0 0"+"Hello.pdf",48,"0 0"+"Hello.pdf",48,"0 0"+"Hello.pdf",48,"0 0"+"Hello.pdf",48,"0 602"+"Hello.pdf",48,"0 0"+"Hello.pdf",48,"0 0"+"Hello.pdf",48,"0 0"+"Hello.pdf",48,"602\n0"+"Hello.pdf",49,"0 602"+"Hello.pdf",50,"endobj\n12"+"Hello.pdf",51,"0 obj"+"Hello.pdf",52,"Type /FontDescriptor"+"Hello.pdf",52,"FontName /GQTMZF+Menlo-Regular"+"Hello.pdf",52,"Flags 33"+"Hello.pdf",52,"FontBBox\n[-558"+"Hello.pdf",53,"375 718"+"Hello.pdf",53,"ItalicAngle 0"+"Hello.pdf",53,"Ascent 928"+"Hello.pdf",53,"Descent -236"+"Hello.pdf",53,"CapHeight 729"+"Hello.pdf",54,"StemV 99"+"Hello.pdf",54,"XHeight 547"+"Hello.pdf",54,"StemH 83"+"Hello.pdf",54,"AvgWidth 602"+"Hello.pdf",54,"MaxWidth 602"+"Hello.pdf",54,"FontFile2 13"+"Hello.pdf",54,"0 R"+"Hello.pdf",56,"endobj\n13"+"Hello.pdf",57,"0 obj"+"Hello.pdf",58,"Length 14"+"Hello.pdf",58,"0 R"+"Hello.pdf",58,"Length1 4064"+"Hello.pdf",58,"Filter /FlateDecode"+"Hello.pdf",59,"stream\nx\x01ÝW{xTÅ\x15?sw6¯Í>’MHH€]Öå•,�„·R\x16Hxˆ"+"Hello.pdf",60,"H (!\bA´1�JQ"+"Hello.pdf",61,"j	L+I\x17.RÌ'›4‰\x03‚pš¼Ã¤vÚĈÍä\x13·=R\x0eõ‰Dª`ÌJ>¦"+"Hello.pdf",61,"a\n>¨À‘Ahb¡i\x10\x0e+\x1cz?^\x1eRx?\x1e\x07\x15ÞS8På”\x072ñ×TìWx·\x16�«|²Qá/"+"Hello.pdf",66,"W\nË\x15\x1ep\x0e“\x0fLÂ/\x15*ïŲ¥\x15r™ÂÒ"+"Hello.pdf",70,"y\nwåâN…¹¹(nÅœ:ÌV(R(T˜5³£œ¥0“\x1crfGÌP˜®p‡ÂíS\x12äí6L+Ämû0•…©.LI\x00?ÑA\x17nUø¹Â-\x19éò–\\LV˜¤0QaB\x05Æ+ÜìÂ8…±Â/Ç*ÜT‡1Ýpãè4ycŒ\x1ež$G§aTAš\x1c¥0’¥‘…\x18ÁÒˆ:\x14¤!Ÿ�üþ\x18>Ì)‡'axD"+"Hello.pdf",71,"g\nƒ9„Á­¸Aáún\x18¤0�"+"Hello.pdf",74,"F 5Å/S‡!Åå�)~¸\x1cHf½d\x17’x}’‚“3w\x0eƒƒ=8œpDkg·Y¥Ý\x0e{´v¶Äxi³Â\x16­]""×.1\x1e‰\\»\x1dº5\x0eVãÙê¯'(Äs&ñ"+"Hello.pdf",75,"u FÁ¦-"+"Hello.pdf",79,"endstream\nendobj"+"Hello.pdf",81,"14 0"+"Hello.pdf",81,"obj\n2734"+"Hello.pdf",83,"endobj\n15"+"Hello.pdf",84,"0 obj"+"Hello.pdf",86,"endobj\n16"+"Hello.pdf",87,"0 obj"+"Hello.pdf",88,"Mac OS"+"Hello.pdf",88,"X 10.12.6"+"Hello.pdf",88,"Quartz PDFContext)"+"Hello.pdf",89,"endobj\n17"+"Hello.pdf",90,"0 obj"+"Hello.pdf",92,"endobj\n18"+"Hello.pdf",93,"0 obj"+"Hello.pdf",95,"endobj\n19"+"Hello.pdf",96,"0 obj"+"Hello.pdf",98,"endobj\n20"+"Hello.pdf",99,"0 obj"+"Hello.pdf",101,"endobj\n1"+"Hello.pdf",102,"0 obj"+"Hello.pdf",103,"Title 15"+"Hello.pdf",103,"0 R"+"Hello.pdf",103,"Producer 16"+"Hello.pdf",103,"0 R"+"Hello.pdf",103,"Creator 17"+"Hello.pdf",103,"0 R"+"Hello.pdf",103,"CreationDate 18"+"Hello.pdf",103,"0 R"+"Hello.pdf",103,"ModDate\n18"+"Hello.pdf",104,"0 R"+"Hello.pdf",104,"Keywords 19"+"Hello.pdf",104,"0 R"+"Hello.pdf",104,"Keywords 20"+"Hello.pdf",104,"0 R"+"Hello.pdf",105,"endobj\nxref"+"Hello.pdf",107,"0 21"+"Hello.pdf",108,"0000000000 65535"+"Hello.pdf",108,"f \n0000005392"+"Hello.pdf",109,"00000 n"+"Hello.pdf",110,"0000000238 00000"+"Hello.pdf",110,"n \n0000001714"+"Hello.pdf",111,"00000 n"+"Hello.pdf",112,"0000000022 00000"+"Hello.pdf",112,"n \n0000000219"+"Hello.pdf",113,"00000 n"+"Hello.pdf",114,"0000000342 00000"+"Hello.pdf",114,"n \n0000001679"+"Hello.pdf",115,"00000 n"+"Hello.pdf",116,"0000001847 00000"+"Hello.pdf",116,"n \n0000000439"+"Hello.pdf",117,"00000 n"+"Hello.pdf",118,"0000001658 00000"+"Hello.pdf",118,"n \n0000001797"+"Hello.pdf",119,"00000 n"+"Hello.pdf",120,"0000002110 00000"+"Hello.pdf",120,"n \n0000002362"+"Hello.pdf",121,"00000 n"+"Hello.pdf",122,"0000005186 00000"+"Hello.pdf",122,"n \n0000005207"+"Hello.pdf",123,"00000 n"+"Hello.pdf",124,"0000005231 00000"+"Hello.pdf",124,"n \n0000005284"+"Hello.pdf",125,"00000 n"+"Hello.pdf",126,"0000005311 00000"+"Hello.pdf",126,"n \n0000005353"+"Hello.pdf",127,"00000 n"+"Hello.pdf",128,"0000005372 00000"+"Hello.pdf",128,"n \ntrailer"+"Hello.pdf",130,"Size 21"+"Hello.pdf",130,"Root 11"+"Hello.pdf",130,"0 R"+"Hello.pdf",130,"Info 1"+"Hello.pdf",130,"0 R"+"Hello.pdf",130,"ID ["+"Hello.pdf",132,"startxref\n5536"+"Hello.sh",1,"sh\necho"+"Hello.sh",2,"Hello World!"""

tests/out/Hello_wnhS--csv-onkb.out

new file mode 100644@@ -0,0 +1,217 @@+"Hello.bat",1,8,7,"sh\necho"+"Hello.bat",2,7,16,"Hello World!"""+"Hello.class",5,27,148,"Hello World!\x07\x00\x1a"+"Hello.java",1,1,0,"import java.lang.*;"+"Hello.java",3,1,21,"public class"+"Hello.java",3,14,34,"Hello //"+"Hello.java",3,23,43,"prints a"+"Hello.java",3,32,52,"Hello World!"+"Hello.java",3,45,65,"greeting\n{"+"Hello.java",4,3,76,"public static"+"Hello.java",4,17,90,"void main(String[]"+"Hello.java",5,25,138,"Hello World!"");"+"Hello.pdf",1,8,7,"3\n%Äåòåë§ó ÐÄÆ"+"Hello.pdf",3,1,22,"4 0"+"Hello.pdf",3,5,26,"obj\n<<"+"Hello.pdf",4,5,34,"Length 5"+"Hello.pdf",4,14,43,"0 R"+"Hello.pdf",4,19,48,"Filter /FlateDecode"+"Hello.pdf",5,1,71,"stream\nx\x01EŽ»"+"Hello.pdf",7,35,135,"LY\nŸ‰\x07o†k÷´ŽÐ›áâj©Rj²@8þ­í”"+"Hello.pdf",9,1,202,"endstream\nendobj"+"Hello.pdf",11,1,219,"5 0"+"Hello.pdf",11,5,223,"obj\n123"+"Hello.pdf",13,1,231,"endobj\n2"+"Hello.pdf",14,3,240,"0 obj"+"Hello.pdf",15,5,250,"Type /Page"+"Hello.pdf",15,17,262,"Parent 3"+"Hello.pdf",15,26,271,"0 R"+"Hello.pdf",15,31,276,"Resources 6"+"Hello.pdf",15,43,288,"0 R"+"Hello.pdf",15,48,293,"Contents 4"+"Hello.pdf",15,59,304,"0 R"+"Hello.pdf",15,64,309,"MediaBox [0"+"Hello.pdf",15,76,321,"0 612"+"Hello.pdf",17,1,335,"endobj\n6"+"Hello.pdf",18,3,344,"0 obj"+"Hello.pdf",19,5,354,"ProcSet ["+"Hello.pdf",19,16,365,"PDF /Text"+"Hello.pdf",19,29,378,"ColorSpace <<"+"Hello.pdf",19,44,393,"Cs1 7"+"Hello.pdf",19,50,399,"0 R"+"Hello.pdf",19,58,407,"Font <<"+"Hello.pdf",19,67,416,"TT1 8"+"Hello.pdf",19,73,422,"0 R"+"Hello.pdf",21,1,432,"endobj\n9"+"Hello.pdf",22,3,441,"0 obj"+"Hello.pdf",23,5,451,"Length 10"+"Hello.pdf",23,15,461,"0 R"+"Hello.pdf",23,20,466,"N 1"+"Hello.pdf",23,25,471,"Alternate /DeviceGray"+"Hello.pdf",23,48,494,"Filter /FlateDecode"+"Hello.pdf",24,1,517,"stream\nx\x01…U]h\x1cU\x14>»sg\x03\x12\x07\x1f´"+"Hello.pdf",25,19,547,"m	é2‰V\x13‹µÛMºI\x13·ëfS›*Êtv6;Ídfœ™Ý&¡O¥à›\x16\x04é« >Æ‚\b¶*6/ö¥¥Å’J5\x0f"+"Hello.pdf",26,307,1006,"7 ‹š\x11òÈÇX"+"Hello.pdf",30,29,1639,"4\nendstream"+"Hello.pdf",32,1,1651,"endobj\n10"+"Hello.pdf",33,4,1661,"0 obj"+"Hello.pdf",34,1,1667,"1116\nendobj"+"Hello.pdf",36,1,1679,"7 0"+"Hello.pdf",36,5,1683,"obj\n["+"Hello.pdf",37,4,1690,"ICCBased 9"+"Hello.pdf",37,15,1701,"0 R"+"Hello.pdf",38,1,1707,"endobj\n3"+"Hello.pdf",39,3,1716,"0 obj"+"Hello.pdf",40,5,1726,"Type /Pages"+"Hello.pdf",40,18,1739,"MediaBox [0"+"Hello.pdf",40,30,1751,"0 612"+"Hello.pdf",40,42,1763,"Count 1"+"Hello.pdf",40,51,1772,"Kids ["+"Hello.pdf",40,58,1779,"2 0"+"Hello.pdf",40,62,1783,"R ]"+"Hello.pdf",41,1,1790,"endobj\n11"+"Hello.pdf",42,4,1800,"0 obj"+"Hello.pdf",43,5,1810,"Type /Catalog"+"Hello.pdf",43,20,1825,"Pages 3"+"Hello.pdf",43,28,1833,"0 R"+"Hello.pdf",44,1,1840,"endobj\n8"+"Hello.pdf",45,3,1849,"0 obj"+"Hello.pdf",46,5,1859,"Type /Font"+"Hello.pdf",46,17,1871,"Subtype /TrueType"+"Hello.pdf",46,36,1890,"BaseFont /GQTMZF+Menlo-Regular"+"Hello.pdf",46,68,1922,"FontDescriptor\n12"+"Hello.pdf",47,4,1940,"0 R"+"Hello.pdf",47,9,1945,"Encoding /MacRomanEncoding"+"Hello.pdf",47,37,1973,"FirstChar 72"+"Hello.pdf",47,51,1987,"LastChar 111"+"Hello.pdf",47,65,2001,"Widths ["+"Hello.pdf",47,74,2010,"602\n0"+"Hello.pdf",48,3,2016,"0 0"+"Hello.pdf",48,7,2020,"0 0"+"Hello.pdf",48,11,2024,"0 0"+"Hello.pdf",48,15,2028,"0 0"+"Hello.pdf",48,19,2032,"0 0"+"Hello.pdf",48,23,2036,"0 0"+"Hello.pdf",48,27,2040,"0 0"+"Hello.pdf",48,31,2044,"0 0"+"Hello.pdf",48,35,2048,"0 0"+"Hello.pdf",48,39,2052,"0 0"+"Hello.pdf",48,43,2056,"0 0"+"Hello.pdf",48,47,2060,"0 0"+"Hello.pdf",48,51,2064,"0 0"+"Hello.pdf",48,55,2068,"0 602"+"Hello.pdf",48,61,2074,"0 0"+"Hello.pdf",48,65,2078,"0 0"+"Hello.pdf",48,69,2082,"0 0"+"Hello.pdf",48,73,2086,"602\n0"+"Hello.pdf",49,3,2092,"0 602"+"Hello.pdf",50,1,2103,"endobj\n12"+"Hello.pdf",51,4,2113,"0 obj"+"Hello.pdf",52,5,2123,"Type /FontDescriptor"+"Hello.pdf",52,27,2145,"FontName /GQTMZF+Menlo-Regular"+"Hello.pdf",52,59,2177,"Flags 33"+"Hello.pdf",52,69,2187,"FontBBox\n[-558"+"Hello.pdf",53,8,2203,"375 718"+"Hello.pdf",53,23,2218,"ItalicAngle 0"+"Hello.pdf",53,38,2233,"Ascent 928"+"Hello.pdf",53,50,2245,"Descent -236"+"Hello.pdf",53,64,2259,"CapHeight 729"+"Hello.pdf",54,2,2274,"StemV 99"+"Hello.pdf",54,12,2284,"XHeight 547"+"Hello.pdf",54,25,2297,"StemH 83"+"Hello.pdf",54,35,2307,"AvgWidth 602"+"Hello.pdf",54,49,2321,"MaxWidth 602"+"Hello.pdf",54,63,2335,"FontFile2 13"+"Hello.pdf",54,76,2348,"0 R"+"Hello.pdf",56,1,2355,"endobj\n13"+"Hello.pdf",57,4,2365,"0 obj"+"Hello.pdf",58,5,2375,"Length 14"+"Hello.pdf",58,15,2385,"0 R"+"Hello.pdf",58,20,2390,"Length1 4064"+"Hello.pdf",58,34,2404,"Filter /FlateDecode"+"Hello.pdf",59,1,2427,"stream\nx\x01ÝW{xTÅ\x15?sw6¯Í>’MHH€]Öå•,�„·R\x16Hxˆ"+"Hello.pdf",60,33,2475,"H (!\bA´1�JQ"+"Hello.pdf",61,187,2776,"j	L+I\x17.RÌ'›4‰\x03‚pš¼Ã¤vÚĈÍä\x13·=R\x0eõ‰Dª`ÌJ>¦"+"Hello.pdf",61,356,2996,"a\n>¨À‘Ahb¡i\x10\x0e+\x1cz?^\x1eRx?\x1e\x07\x15ÞS8På”\x072ñ×TìWx·\x16�«|²Qá/"+"Hello.pdf",66,95,3301,"W\nË\x15\x1ep\x0e“\x0fLÂ/\x15*ïŲ¥\x15r™ÂÒ"+"Hello.pdf",70,35,3383,"y\nwåâN…¹¹(nÅœ:ÌV(R(T˜5³£œ¥0“\x1crfGÌP˜®p‡ÂíS\x12äí6L+Ämû0•…©.LI\x00?ÑA\x17nUø¹Â-\x19éò–\\LV˜¤0QaB\x05Æ+ÜìÂ8…±Â/Ç*ÜT‡1Ýpãè4ycŒ\x1ež$G§aTAš\x1c¥0’¥‘…\x18ÁÒˆ:\x14¤!Ÿ�üþ\x18>Ì)‡'axD"+"Hello.pdf",71,146,3575,"g\nƒ9„Á­¸Aáún\x18¤0�"+"Hello.pdf",74,36,3743,"F 5Å/S‡!Åå�)~¸\x1cHf½d\x17’x}’‚“3w\x0eƒƒ=8œpDkg·Y¥Ý\x0e{´v¶Äxi³Â\x16­]""×.1\x1e‰\\»\x1dº5\x0eVãÙê¯'(Äs&ñ"+"Hello.pdf",75,2,3825,"u FÁ¦-"+"Hello.pdf",79,1,5169,"endstream\nendobj"+"Hello.pdf",81,1,5186,"14 0"+"Hello.pdf",81,6,5191,"obj\n2734"+"Hello.pdf",83,1,5200,"endobj\n15"+"Hello.pdf",84,4,5210,"0 obj"+"Hello.pdf",86,1,5224,"endobj\n16"+"Hello.pdf",87,4,5234,"0 obj"+"Hello.pdf",88,2,5241,"Mac OS"+"Hello.pdf",88,9,5248,"X 10.12.6"+"Hello.pdf",88,19,5258,"Quartz PDFContext)"+"Hello.pdf",89,1,5277,"endobj\n17"+"Hello.pdf",90,4,5287,"0 obj"+"Hello.pdf",92,1,5304,"endobj\n18"+"Hello.pdf",93,4,5314,"0 obj"+"Hello.pdf",95,1,5346,"endobj\n19"+"Hello.pdf",96,4,5356,"0 obj"+"Hello.pdf",98,1,5365,"endobj\n20"+"Hello.pdf",99,4,5375,"0 obj"+"Hello.pdf",101,1,5385,"endobj\n1"+"Hello.pdf",102,3,5394,"0 obj"+"Hello.pdf",103,5,5404,"Title 15"+"Hello.pdf",103,14,5413,"0 R"+"Hello.pdf",103,19,5418,"Producer 16"+"Hello.pdf",103,31,5430,"0 R"+"Hello.pdf",103,36,5435,"Creator 17"+"Hello.pdf",103,47,5446,"0 R"+"Hello.pdf",103,52,5451,"CreationDate 18"+"Hello.pdf",103,68,5467,"0 R"+"Hello.pdf",103,73,5472,"ModDate\n18"+"Hello.pdf",104,4,5483,"0 R"+"Hello.pdf",104,9,5488,"Keywords 19"+"Hello.pdf",104,21,5500,"0 R"+"Hello.pdf",104,31,5510,"Keywords 20"+"Hello.pdf",104,43,5522,"0 R"+"Hello.pdf",105,1,5529,"endobj\nxref"+"Hello.pdf",107,1,5541,"0 21"+"Hello.pdf",108,1,5546,"0000000000 65535"+"Hello.pdf",108,18,5563,"f \n0000005392"+"Hello.pdf",109,12,5577,"00000 n"+"Hello.pdf",110,1,5586,"0000000238 00000"+"Hello.pdf",110,18,5603,"n \n0000001714"+"Hello.pdf",111,12,5617,"00000 n"+"Hello.pdf",112,1,5626,"0000000022 00000"+"Hello.pdf",112,18,5643,"n \n0000000219"+"Hello.pdf",113,12,5657,"00000 n"+"Hello.pdf",114,1,5666,"0000000342 00000"+"Hello.pdf",114,18,5683,"n \n0000001679"+"Hello.pdf",115,12,5697,"00000 n"+"Hello.pdf",116,1,5706,"0000001847 00000"+"Hello.pdf",116,18,5723,"n \n0000000439"+"Hello.pdf",117,12,5737,"00000 n"+"Hello.pdf",118,1,5746,"0000001658 00000"+"Hello.pdf",118,18,5763,"n \n0000001797"+"Hello.pdf",119,12,5777,"00000 n"+"Hello.pdf",120,1,5786,"0000002110 00000"+"Hello.pdf",120,18,5803,"n \n0000002362"+"Hello.pdf",121,12,5817,"00000 n"+"Hello.pdf",122,1,5826,"0000005186 00000"+"Hello.pdf",122,18,5843,"n \n0000005207"+"Hello.pdf",123,12,5857,"00000 n"+"Hello.pdf",124,1,5866,"0000005231 00000"+"Hello.pdf",124,18,5883,"n \n0000005284"+"Hello.pdf",125,12,5897,"00000 n"+"Hello.pdf",126,1,5906,"0000005311 00000"+"Hello.pdf",126,18,5923,"n \n0000005353"+"Hello.pdf",127,12,5937,"00000 n"+"Hello.pdf",128,1,5946,"0000005372 00000"+"Hello.pdf",128,18,5963,"n \ntrailer"+"Hello.pdf",130,5,5978,"Size 21"+"Hello.pdf",130,14,5987,"Root 11"+"Hello.pdf",130,22,5995,"0 R"+"Hello.pdf",130,27,6000,"Info 1"+"Hello.pdf",130,34,6007,"0 R"+"Hello.pdf",130,39,6012,"ID ["+"Hello.pdf",132,1,6092,"startxref\n5536"+"Hello.sh",1,8,7,"sh\necho"+"Hello.sh",2,7,16,"Hello World!"""

tests/out/Hello_wnhS--csv-ounkb.out

new file mode 100644@@ -0,0 +1,217 @@+"Hello.bat",1,8,7,"sh\necho"+"Hello.bat",2,7,16,"Hello World!"""+"Hello.class",5,27,148,"Hello World!\x07\x00\x1a"+"Hello.java",1,1,0,"import java.lang.*;"+"Hello.java",3,1,21,"public class"+"Hello.java",3,14,34,"Hello //"+"Hello.java",3,23,43,"prints a"+"Hello.java",3,32,52,"Hello World!"+"Hello.java",3,45,65,"greeting\n{"+"Hello.java",4,3,76,"public static"+"Hello.java",4,17,90,"void main(String[]"+"Hello.java",5,25,138,"Hello World!"");"+"Hello.pdf",1,8,7,"3\n%Äåòåë§ó ÐÄÆ"+"Hello.pdf",3,1,22,"4 0"+"Hello.pdf",3,5,26,"obj\n<<"+"Hello.pdf",4,5,34,"Length 5"+"Hello.pdf",4,14,43,"0 R"+"Hello.pdf",4,19,48,"Filter /FlateDecode"+"Hello.pdf",5,1,71,"stream\nx\x01EŽ»"+"Hello.pdf",7,35,135,"LY\nŸ‰\x07o†k÷´ŽÐ›áâj©Rj²@8þ­í”"+"Hello.pdf",9,1,202,"endstream\nendobj"+"Hello.pdf",11,1,219,"5 0"+"Hello.pdf",11,5,223,"obj\n123"+"Hello.pdf",13,1,231,"endobj\n2"+"Hello.pdf",14,3,240,"0 obj"+"Hello.pdf",15,5,250,"Type /Page"+"Hello.pdf",15,17,262,"Parent 3"+"Hello.pdf",15,26,271,"0 R"+"Hello.pdf",15,31,276,"Resources 6"+"Hello.pdf",15,43,288,"0 R"+"Hello.pdf",15,48,293,"Contents 4"+"Hello.pdf",15,59,304,"0 R"+"Hello.pdf",15,64,309,"MediaBox [0"+"Hello.pdf",15,76,321,"0 612"+"Hello.pdf",17,1,335,"endobj\n6"+"Hello.pdf",18,3,344,"0 obj"+"Hello.pdf",19,5,354,"ProcSet ["+"Hello.pdf",19,16,365,"PDF /Text"+"Hello.pdf",19,29,378,"ColorSpace <<"+"Hello.pdf",19,44,393,"Cs1 7"+"Hello.pdf",19,50,399,"0 R"+"Hello.pdf",19,58,407,"Font <<"+"Hello.pdf",19,67,416,"TT1 8"+"Hello.pdf",19,73,422,"0 R"+"Hello.pdf",21,1,432,"endobj\n9"+"Hello.pdf",22,3,441,"0 obj"+"Hello.pdf",23,5,451,"Length 10"+"Hello.pdf",23,15,461,"0 R"+"Hello.pdf",23,20,466,"N 1"+"Hello.pdf",23,25,471,"Alternate /DeviceGray"+"Hello.pdf",23,48,494,"Filter /FlateDecode"+"Hello.pdf",24,1,517,"stream\nx\x01…U]h\x1cU\x14>»sg\x03\x12\x07\x1f´"+"Hello.pdf",25,19,547,"m	é2‰V\x13‹µÛMºI\x13·ëfS›*Êtv6;Ídfœ™Ý&¡O¥à›\x16\x04é« >Æ‚\b¶*6/ö¥¥Å’J5\x0f"+"Hello.pdf",26,307,1006,"7 ‹š\x11òÈÇX"+"Hello.pdf",30,29,1639,"4\nendstream"+"Hello.pdf",32,1,1651,"endobj\n10"+"Hello.pdf",33,4,1661,"0 obj"+"Hello.pdf",34,1,1667,"1116\nendobj"+"Hello.pdf",36,1,1679,"7 0"+"Hello.pdf",36,5,1683,"obj\n["+"Hello.pdf",37,4,1690,"ICCBased 9"+"Hello.pdf",37,15,1701,"0 R"+"Hello.pdf",38,1,1707,"endobj\n3"+"Hello.pdf",39,3,1716,"0 obj"+"Hello.pdf",40,5,1726,"Type /Pages"+"Hello.pdf",40,18,1739,"MediaBox [0"+"Hello.pdf",40,30,1751,"0 612"+"Hello.pdf",40,42,1763,"Count 1"+"Hello.pdf",40,51,1772,"Kids ["+"Hello.pdf",40,58,1779,"2 0"+"Hello.pdf",40,62,1783,"R ]"+"Hello.pdf",41,1,1790,"endobj\n11"+"Hello.pdf",42,4,1800,"0 obj"+"Hello.pdf",43,5,1810,"Type /Catalog"+"Hello.pdf",43,20,1825,"Pages 3"+"Hello.pdf",43,28,1833,"0 R"+"Hello.pdf",44,1,1840,"endobj\n8"+"Hello.pdf",45,3,1849,"0 obj"+"Hello.pdf",46,5,1859,"Type /Font"+"Hello.pdf",46,17,1871,"Subtype /TrueType"+"Hello.pdf",46,36,1890,"BaseFont /GQTMZF+Menlo-Regular"+"Hello.pdf",46,68,1922,"FontDescriptor\n12"+"Hello.pdf",47,4,1940,"0 R"+"Hello.pdf",47,9,1945,"Encoding /MacRomanEncoding"+"Hello.pdf",47,37,1973,"FirstChar 72"+"Hello.pdf",47,51,1987,"LastChar 111"+"Hello.pdf",47,65,2001,"Widths ["+"Hello.pdf",47,74,2010,"602\n0"+"Hello.pdf",48,3,2016,"0 0"+"Hello.pdf",48,7,2020,"0 0"+"Hello.pdf",48,11,2024,"0 0"+"Hello.pdf",48,15,2028,"0 0"+"Hello.pdf",48,19,2032,"0 0"+"Hello.pdf",48,23,2036,"0 0"+"Hello.pdf",48,27,2040,"0 0"+"Hello.pdf",48,31,2044,"0 0"+"Hello.pdf",48,35,2048,"0 0"+"Hello.pdf",48,39,2052,"0 0"+"Hello.pdf",48,43,2056,"0 0"+"Hello.pdf",48,47,2060,"0 0"+"Hello.pdf",48,51,2064,"0 0"+"Hello.pdf",48,55,2068,"0 602"+"Hello.pdf",48,61,2074,"0 0"+"Hello.pdf",48,65,2078,"0 0"+"Hello.pdf",48,69,2082,"0 0"+"Hello.pdf",48,73,2086,"602\n0"+"Hello.pdf",49,3,2092,"0 602"+"Hello.pdf",50,1,2103,"endobj\n12"+"Hello.pdf",51,4,2113,"0 obj"+"Hello.pdf",52,5,2123,"Type /FontDescriptor"+"Hello.pdf",52,27,2145,"FontName /GQTMZF+Menlo-Regular"+"Hello.pdf",52,59,2177,"Flags 33"+"Hello.pdf",52,69,2187,"FontBBox\n[-558"+"Hello.pdf",53,8,2203,"375 718"+"Hello.pdf",53,23,2218,"ItalicAngle 0"+"Hello.pdf",53,38,2233,"Ascent 928"+"Hello.pdf",53,50,2245,"Descent -236"+"Hello.pdf",53,64,2259,"CapHeight 729"+"Hello.pdf",54,2,2274,"StemV 99"+"Hello.pdf",54,12,2284,"XHeight 547"+"Hello.pdf",54,25,2297,"StemH 83"+"Hello.pdf",54,35,2307,"AvgWidth 602"+"Hello.pdf",54,49,2321,"MaxWidth 602"+"Hello.pdf",54,63,2335,"FontFile2 13"+"Hello.pdf",54,76,2348,"0 R"+"Hello.pdf",56,1,2355,"endobj\n13"+"Hello.pdf",57,4,2365,"0 obj"+"Hello.pdf",58,5,2375,"Length 14"+"Hello.pdf",58,15,2385,"0 R"+"Hello.pdf",58,20,2390,"Length1 4064"+"Hello.pdf",58,34,2404,"Filter /FlateDecode"+"Hello.pdf",59,1,2427,"stream\nx\x01ÝW{xTÅ\x15?sw6¯Í>’MHH€]Öå•,�„·R\x16Hxˆ"+"Hello.pdf",60,33,2475,"H (!\bA´1�JQ"+"Hello.pdf",61,187,2776,"j	L+I\x17.RÌ'›4‰\x03‚pš¼Ã¤vÚĈÍä\x13·=R\x0eõ‰Dª`ÌJ>¦"+"Hello.pdf",61,356,2996,"a\n>¨À‘Ahb¡i\x10\x0e+\x1cz?^\x1eRx?\x1e\x07\x15ÞS8På”\x072ñ×TìWx·\x16�«|²Qá/"+"Hello.pdf",66,95,3301,"W\nË\x15\x1ep\x0e“\x0fLÂ/\x15*ïŲ¥\x15r™ÂÒ"+"Hello.pdf",70,35,3383,"y\nwåâN…¹¹(nÅœ:ÌV(R(T˜5³£œ¥0“\x1crfGÌP˜®p‡ÂíS\x12äí6L+Ämû0•…©.LI\x00?ÑA\x17nUø¹Â-\x19éò–\\LV˜¤0QaB\x05Æ+ÜìÂ8…±Â/Ç*ÜT‡1Ýpãè4ycŒ\x1ež$G§aTAš\x1c¥0’¥‘…\x18ÁÒˆ:\x14¤!Ÿ�üþ\x18>Ì)‡'axD"+"Hello.pdf",71,146,3575,"g\nƒ9„Á­¸Aáún\x18¤0�"+"Hello.pdf",74,36,3743,"F 5Å/S‡!Åå�)~¸\x1cHf½d\x17’x}’‚“3w\x0eƒƒ=8œpDkg·Y¥Ý\x0e{´v¶Äxi³Â\x16­]""×.1\x1e‰\\»\x1dº5\x0eVãÙê¯'(Äs&ñ"+"Hello.pdf",75,2,3825,"u FÁ¦-"+"Hello.pdf",79,1,5169,"endstream\nendobj"+"Hello.pdf",81,1,5186,"14 0"+"Hello.pdf",81,6,5191,"obj\n2734"+"Hello.pdf",83,1,5200,"endobj\n15"+"Hello.pdf",84,4,5210,"0 obj"+"Hello.pdf",86,1,5224,"endobj\n16"+"Hello.pdf",87,4,5234,"0 obj"+"Hello.pdf",88,2,5241,"Mac OS"+"Hello.pdf",88,9,5248,"X 10.12.6"+"Hello.pdf",88,19,5258,"Quartz PDFContext)"+"Hello.pdf",89,1,5277,"endobj\n17"+"Hello.pdf",90,4,5287,"0 obj"+"Hello.pdf",92,1,5304,"endobj\n18"+"Hello.pdf",93,4,5314,"0 obj"+"Hello.pdf",95,1,5346,"endobj\n19"+"Hello.pdf",96,4,5356,"0 obj"+"Hello.pdf",98,1,5365,"endobj\n20"+"Hello.pdf",99,4,5375,"0 obj"+"Hello.pdf",101,1,5385,"endobj\n1"+"Hello.pdf",102,3,5394,"0 obj"+"Hello.pdf",103,5,5404,"Title 15"+"Hello.pdf",103,14,5413,"0 R"+"Hello.pdf",103,19,5418,"Producer 16"+"Hello.pdf",103,31,5430,"0 R"+"Hello.pdf",103,36,5435,"Creator 17"+"Hello.pdf",103,47,5446,"0 R"+"Hello.pdf",103,52,5451,"CreationDate 18"+"Hello.pdf",103,68,5467,"0 R"+"Hello.pdf",103,73,5472,"ModDate\n18"+"Hello.pdf",104,4,5483,"0 R"+"Hello.pdf",104,9,5488,"Keywords 19"+"Hello.pdf",104,21,5500,"0 R"+"Hello.pdf",104,31,5510,"Keywords 20"+"Hello.pdf",104,43,5522,"0 R"+"Hello.pdf",105,1,5529,"endobj\nxref"+"Hello.pdf",107,1,5541,"0 21"+"Hello.pdf",108,1,5546,"0000000000 65535"+"Hello.pdf",108,18,5563,"f \n0000005392"+"Hello.pdf",109,12,5577,"00000 n"+"Hello.pdf",110,1,5586,"0000000238 00000"+"Hello.pdf",110,18,5603,"n \n0000001714"+"Hello.pdf",111,12,5617,"00000 n"+"Hello.pdf",112,1,5626,"0000000022 00000"+"Hello.pdf",112,18,5643,"n \n0000000219"+"Hello.pdf",113,12,5657,"00000 n"+"Hello.pdf",114,1,5666,"0000000342 00000"+"Hello.pdf",114,18,5683,"n \n0000001679"+"Hello.pdf",115,12,5697,"00000 n"+"Hello.pdf",116,1,5706,"0000001847 00000"+"Hello.pdf",116,18,5723,"n \n0000000439"+"Hello.pdf",117,12,5737,"00000 n"+"Hello.pdf",118,1,5746,"0000001658 00000"+"Hello.pdf",118,18,5763,"n \n0000001797"+"Hello.pdf",119,12,5777,"00000 n"+"Hello.pdf",120,1,5786,"0000002110 00000"+"Hello.pdf",120,18,5803,"n \n0000002362"+"Hello.pdf",121,12,5817,"00000 n"+"Hello.pdf",122,1,5826,"0000005186 00000"+"Hello.pdf",122,18,5843,"n \n0000005207"+"Hello.pdf",123,12,5857,"00000 n"+"Hello.pdf",124,1,5866,"0000005231 00000"+"Hello.pdf",124,18,5883,"n \n0000005284"+"Hello.pdf",125,12,5897,"00000 n"+"Hello.pdf",126,1,5906,"0000005311 00000"+"Hello.pdf",126,18,5923,"n \n0000005353"+"Hello.pdf",127,12,5937,"00000 n"+"Hello.pdf",128,1,5946,"0000005372 00000"+"Hello.pdf",128,18,5963,"n \ntrailer"+"Hello.pdf",130,5,5978,"Size 21"+"Hello.pdf",130,14,5987,"Root 11"+"Hello.pdf",130,22,5995,"0 R"+"Hello.pdf",130,27,6000,"Info 1"+"Hello.pdf",130,34,6007,"0 R"+"Hello.pdf",130,39,6012,"ID ["+"Hello.pdf",132,1,6092,"startxref\n5536"+"Hello.sh",1,8,7,"sh\necho"+"Hello.sh",2,7,16,"Hello World!"""

tests/out/Hello_wnhS--csv-unkb.out

new file mode 100644@@ -0,0 +1,217 @@+"Hello.bat",1,8,7,"#!/bin/sh\necho ""Hello World!"""+"Hello.bat",2,7,16,"echo ""Hello World!"""+"Hello.class",5,27,148,"Hello.java\f\x00\x07\x00\b\x07\x00\x17\f\x00\x18\x00\x19\x01\x00\fHello World!\x07\x00\x1a\f\x00\x1b\x00\x1c\x01\x00\x05Hello\x01\x00\x10java/lang/Object\x01\x00\x10java/lang/System\x01\x00\x03out\x01\x00\x15Ljava/io/PrintStream;\x01\x00\x13java/io/PrintStream\x01\x00\x07println\x01\x00\x15(Ljava/lang/String;)V\x00!\x00\x05\x00\x06\x00\x00\x00\x00\x00\x02\x00\x01\x00\x07\x00\b\x00\x01\x00	\x00\x00\x00\x1d\x00\x01\x00\x01\x00\x00\x00\x05*·\x00\x01±\x00\x00\x00\x01\x00"+"Hello.java",1,1,0,"import java.lang.*;"+"Hello.java",3,1,21,"public class Hello // prints a Hello World! greeting"+"Hello.java",3,14,34,"public class Hello // prints a Hello World! greeting"+"Hello.java",3,23,43,"public class Hello // prints a Hello World! greeting"+"Hello.java",3,32,52,"public class Hello // prints a Hello World! greeting"+"Hello.java",3,45,65,"public class Hello // prints a Hello World! greeting\n{ public static void main(String[] arg)"+"Hello.java",4,3,76,"{ public static void main(String[] arg)"+"Hello.java",4,17,90,"{ public static void main(String[] arg)"+"Hello.java",5,25,138,"  { System.out.println(""Hello World!"");"+"Hello.pdf",1,8,7,"%PDF-1.3\n%Äåòåë§ó ÐÄÆ"+"Hello.pdf",3,1,22,"4 0 obj"+"Hello.pdf",3,5,26,"4 0 obj\n<< /Length 5 0 R /Filter /FlateDecode >>"+"Hello.pdf",4,5,34,"<< /Length 5 0 R /Filter /FlateDecode >>"+"Hello.pdf",4,14,43,"<< /Length 5 0 R /Filter /FlateDecode >>"+"Hello.pdf",4,19,48,"<< /Length 5 0 R /Filter /FlateDecode >>"+"Hello.pdf",5,1,71,"stream\nx\x01EŽ»"+"Hello.pdf",7,35,135,"\x021\x14D{¿â”Z˜½‰y˜V\x11l\x17.ø\x01a-d×eÍÿƒ\x17,¬†™9\f³1²Q\x02¹F—â©\x12ó™�\\LY\nŸ‰\x07o†k÷´ŽÐ›áâj©Rj²@8þ­í” »¶pQ£DÄ£\rï iÂ\x0bº0¨z¬|²¿Oó¼\x1eÐ\x177µ7ã\x17Nÿ ¥"+"Hello.pdf",9,1,202,"endstream\nendobj"+"Hello.pdf",11,1,219,"5 0 obj"+"Hello.pdf",11,5,223,"5 0 obj\n123"+"Hello.pdf",13,1,231,"endobj\n2 0 obj"+"Hello.pdf",14,3,240,"2 0 obj"+"Hello.pdf",15,5,250,"<< /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]"+"Hello.pdf",15,17,262,"<< /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]"+"Hello.pdf",15,26,271,"<< /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]"+"Hello.pdf",15,31,276,"<< /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]"+"Hello.pdf",15,43,288,"<< /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]"+"Hello.pdf",15,48,293,"<< /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]"+"Hello.pdf",15,59,304,"<< /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]"+"Hello.pdf",15,64,309,"<< /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]"+"Hello.pdf",15,76,321,"<< /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]"+"Hello.pdf",17,1,335,"endobj\n6 0 obj"+"Hello.pdf",18,3,344,"6 0 obj"+"Hello.pdf",19,5,354,"<< /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R >> /Font << /TT1 8 0 R"+"Hello.pdf",19,16,365,"<< /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R >> /Font << /TT1 8 0 R"+"Hello.pdf",19,29,378,"<< /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R >> /Font << /TT1 8 0 R"+"Hello.pdf",19,44,393,"<< /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R >> /Font << /TT1 8 0 R"+"Hello.pdf",19,50,399,"<< /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R >> /Font << /TT1 8 0 R"+"Hello.pdf",19,58,407,"<< /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R >> /Font << /TT1 8 0 R"+"Hello.pdf",19,67,416,"<< /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R >> /Font << /TT1 8 0 R"+"Hello.pdf",19,73,422,"<< /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R >> /Font << /TT1 8 0 R"+"Hello.pdf",21,1,432,"endobj\n9 0 obj"+"Hello.pdf",22,3,441,"9 0 obj"+"Hello.pdf",23,5,451,"<< /Length 10 0 R /N 1 /Alternate /DeviceGray /Filter /FlateDecode >>"+"Hello.pdf",23,15,461,"<< /Length 10 0 R /N 1 /Alternate /DeviceGray /Filter /FlateDecode >>"+"Hello.pdf",23,20,466,"<< /Length 10 0 R /N 1 /Alternate /DeviceGray /Filter /FlateDecode >>"+"Hello.pdf",23,25,471,"<< /Length 10 0 R /N 1 /Alternate /DeviceGray /Filter /FlateDecode >>"+"Hello.pdf",23,48,494,"<< /Length 10 0 R /N 1 /Alternate /DeviceGray /Filter /FlateDecode >>"+"Hello.pdf",24,1,517,"stream\nx\x01…U]h\x1cU\x14>»sg\x03\x12\x07\x1f´\r-´ƒ?m	é2‰V\x13‹µÛMºI\x13·ëfS›*Êtv6;Ídfœ™Ý&¡O¥à›\x16\x04é« >Æ‚\b¶*6/ö¥¥Å’J5\x0f"+"Hello.pdf",25,19,547,"x\x01…U]h\x1cU\x14>»sg\x03\x12\x07\x1f´\r-´ƒ?m	é2‰V\x13‹µÛMºI\x13·ëfS›*Êtv6;Ídfœ™Ý&¡O¥à›\x16\x04é« >Æ‚\b¶*6/ö¥¥Å’J5\x0f"+"Hello.pdf",26,307,1006,"\x11ZŒ (}Rð;3ÛdvA2Ã�ùî¹çž{Îwî¹—¨ëoÝóì´J4ç„~¡œ›>9}JíºMiR¨›ðèFàåJ¥	ÆŽë˜üo\x1eÞ¥\x14Kîìg[íc[öäª\x19\x18к†æV\x03cŽ(¥\x11ej†ç‡D]— \x1f<\x1bzŒo\x03?9[)ç�×€•Ö\\@zª`:¦o\x19jÁ×\x17Ô’ïÖ,;éëVãlcËgÎn°¯üìFë\x0ef'Çñï…Ï\x17Lgj\x12x\x1fð’¡�0î\x03¾Û´N\x14cœN{á‘r¬ŸÎ6f§r-ùÉštª%¿PoŒ2Î\x12¥—\x16ë•7€Ÿ\x00^uN\x17�·ô×gÝq¶ÓC$õ\x18Aþ\x14ð³ÀZÝ\x1cã<©À\x15ß-³>Ëê9<\x02ü2ð%+\x1c«\x00þôCМd9° ÅzžýÄZ""{F?V\x02Þ\x06|È´\x0b¼\x16숊\x17–Øæ ð¼c\x17y-Ä..›A\x14/b\x17?…õÊh¬/§C¿ÂsŸ&’÷Ô¬£cÀàD\x1e­û£,‡?rèÙÑÞz\x11xÉo”9ö=Àkº?R\x00†ÍÌcU}˜y~\x01x€N¤t2É¥Óø\x1aäпˆ7 ‹š\x11òÈÇX\r}›"+"Hello.pdf",30,29,1639,"Tß\fL¿iV³Äw7Ï#úëõèNNm»a4üf,£Tê&Ñ·�“4\nendstream"+"Hello.pdf",32,1,1651,"endobj\n10 0 obj"+"Hello.pdf",33,4,1661,"10 0 obj"+"Hello.pdf",34,1,1667,"1116\nendobj"+"Hello.pdf",36,1,1679,"7 0 obj"+"Hello.pdf",36,5,1683,"7 0 obj\n[ /ICCBased 9 0 R ]"+"Hello.pdf",37,4,1690,"[ /ICCBased 9 0 R ]"+"Hello.pdf",37,15,1701,"[ /ICCBased 9 0 R ]"+"Hello.pdf",38,1,1707,"endobj\n3 0 obj"+"Hello.pdf",39,3,1716,"3 0 obj"+"Hello.pdf",40,5,1726,"<< /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 2 0 R ] >>"+"Hello.pdf",40,18,1739,"<< /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 2 0 R ] >>"+"Hello.pdf",40,30,1751,"<< /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 2 0 R ] >>"+"Hello.pdf",40,42,1763,"<< /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 2 0 R ] >>"+"Hello.pdf",40,51,1772,"<< /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 2 0 R ] >>"+"Hello.pdf",40,58,1779,"<< /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 2 0 R ] >>"+"Hello.pdf",40,62,1783,"<< /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 2 0 R ] >>"+"Hello.pdf",41,1,1790,"endobj\n11 0 obj"+"Hello.pdf",42,4,1800,"11 0 obj"+"Hello.pdf",43,5,1810,"<< /Type /Catalog /Pages 3 0 R >>"+"Hello.pdf",43,20,1825,"<< /Type /Catalog /Pages 3 0 R >>"+"Hello.pdf",43,28,1833,"<< /Type /Catalog /Pages 3 0 R >>"+"Hello.pdf",44,1,1840,"endobj\n8 0 obj"+"Hello.pdf",45,3,1849,"8 0 obj"+"Hello.pdf",46,5,1859,"<< /Type /Font /Subtype /TrueType /BaseFont /GQTMZF+Menlo-Regular /FontDescriptor"+"Hello.pdf",46,17,1871,"<< /Type /Font /Subtype /TrueType /BaseFont /GQTMZF+Menlo-Regular /FontDescriptor"+"Hello.pdf",46,36,1890,"<< /Type /Font /Subtype /TrueType /BaseFont /GQTMZF+Menlo-Regular /FontDescriptor"+"Hello.pdf",46,68,1922,"<< /Type /Font /Subtype /TrueType /BaseFont /GQTMZF+Menlo-Regular /FontDescriptor\n12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602"+"Hello.pdf",47,4,1940,"12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602"+"Hello.pdf",47,9,1945,"12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602"+"Hello.pdf",47,37,1973,"12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602"+"Hello.pdf",47,51,1987,"12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602"+"Hello.pdf",47,65,2001,"12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602"+"Hello.pdf",47,74,2010,"12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602\n0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602"+"Hello.pdf",48,3,2016,"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602"+"Hello.pdf",48,7,2020,"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602"+"Hello.pdf",48,11,2024,"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602"+"Hello.pdf",48,15,2028,"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602"+"Hello.pdf",48,19,2032,"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602"+"Hello.pdf",48,23,2036,"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602"+"Hello.pdf",48,27,2040,"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602"+"Hello.pdf",48,31,2044,"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602"+"Hello.pdf",48,35,2048,"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602"+"Hello.pdf",48,39,2052,"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602"+"Hello.pdf",48,43,2056,"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602"+"Hello.pdf",48,47,2060,"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602"+"Hello.pdf",48,51,2064,"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602"+"Hello.pdf",48,55,2068,"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602"+"Hello.pdf",48,61,2074,"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602"+"Hello.pdf",48,65,2078,"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602"+"Hello.pdf",48,69,2082,"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602"+"Hello.pdf",48,73,2086,"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602\n0 0 602 ] >>"+"Hello.pdf",49,3,2092,"0 0 602 ] >>"+"Hello.pdf",50,1,2103,"endobj\n12 0 obj"+"Hello.pdf",51,4,2113,"12 0 obj"+"Hello.pdf",52,5,2123,"<< /Type /FontDescriptor /FontName /GQTMZF+Menlo-Regular /Flags 33 /FontBBox"+"Hello.pdf",52,27,2145,"<< /Type /FontDescriptor /FontName /GQTMZF+Menlo-Regular /Flags 33 /FontBBox"+"Hello.pdf",52,59,2177,"<< /Type /FontDescriptor /FontName /GQTMZF+Menlo-Regular /Flags 33 /FontBBox"+"Hello.pdf",52,69,2187,"<< /Type /FontDescriptor /FontName /GQTMZF+Menlo-Regular /Flags 33 /FontBBox\n[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729"+"Hello.pdf",53,8,2203,"[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729"+"Hello.pdf",53,23,2218,"[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729"+"Hello.pdf",53,38,2233,"[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729"+"Hello.pdf",53,50,2245,"[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729"+"Hello.pdf",53,64,2259,"[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729"+"Hello.pdf",54,2,2274,"/StemV 99 /XHeight 547 /StemH 83 /AvgWidth 602 /MaxWidth 602 /FontFile2 13 0 R"+"Hello.pdf",54,12,2284,"/StemV 99 /XHeight 547 /StemH 83 /AvgWidth 602 /MaxWidth 602 /FontFile2 13 0 R"+"Hello.pdf",54,25,2297,"/StemV 99 /XHeight 547 /StemH 83 /AvgWidth 602 /MaxWidth 602 /FontFile2 13 0 R"+"Hello.pdf",54,35,2307,"/StemV 99 /XHeight 547 /StemH 83 /AvgWidth 602 /MaxWidth 602 /FontFile2 13 0 R"+"Hello.pdf",54,49,2321,"/StemV 99 /XHeight 547 /StemH 83 /AvgWidth 602 /MaxWidth 602 /FontFile2 13 0 R"+"Hello.pdf",54,63,2335,"/StemV 99 /XHeight 547 /StemH 83 /AvgWidth 602 /MaxWidth 602 /FontFile2 13 0 R"+"Hello.pdf",54,76,2348,"/StemV 99 /XHeight 547 /StemH 83 /AvgWidth 602 /MaxWidth 602 /FontFile2 13 0 R"+"Hello.pdf",56,1,2355,"endobj\n13 0 obj"+"Hello.pdf",57,4,2365,"13 0 obj"+"Hello.pdf",58,5,2375,"<< /Length 14 0 R /Length1 4064 /Filter /FlateDecode >>"+"Hello.pdf",58,15,2385,"<< /Length 14 0 R /Length1 4064 /Filter /FlateDecode >>"+"Hello.pdf",58,20,2390,"<< /Length 14 0 R /Length1 4064 /Filter /FlateDecode >>"+"Hello.pdf",58,34,2404,"<< /Length 14 0 R /Length1 4064 /Filter /FlateDecode >>"+"Hello.pdf",59,1,2427,"stream\nx\x01ÝW{xTÅ\x15?sw6¯Í>’MHH€]Öå•,�„·R\x16Hxˆ /ë.ˆòH (!\bA´1�JQ	Á@…\bH}\x15Q©µ+E]	ÄT¤b#E„ \x02"+"Hello.pdf",60,33,2475,"x\x01ÝW{xTÅ\x15?sw6¯Í>’MHH€]Öå•,�„·R\x16Hxˆ /ë.ˆòH (!\bA´1�JQ	Á@…\bH}\x15Q©µ+E]	ÄT¤b#E„ \x02"+"Hello.pdf",61,187,2776,"ø¢hŠ\x14!Ø\x00CϽ\x1bý>í×ïë¿íÜ�3çüæÌyÝ»÷Δ-\\\\DVª$P`VÉŒ\x05d6ëI\x1eŠgÝSæ6Eн—HË�½`NITŽ‘åNsæÝ7;*'Nfy@qь¨LWxìWÌ@T\x16}x¼®¸¤Œí\x18Íú.\x13×¼ÒYmó‰£\f°dƽmþé8Ëîù3JŠxäf�0é¶ tQ™)’½šÇì\x05\x0b‹ÚôE�(¦St®�\x1a–\x05w©Y)‹î""\x0biä �”ÄЭ¬+yÖ˜×b²–>}ö�;ì7\\¤N±æâ½eéy\x06s(¸¤ßå•W…¬�½…Åè¤1ÁëbJT\x07""ýàå•×’e½iɘù¾É\bÅf½®UŠ”íë¦É¡™""…j	L+I\x17.RÌ'›4‰\x03‚pš¼Ã¤vÚĈÍä\x13·=R\x0eõ‰Dª`ÌJ>¦	”Ë4Þ´\x17gjÅ’�‘\x18“·˜:Òäu\x13‡‰h&""\x02!\x05¥pµ\x02W\x14.+´æâŸuø®\x02—Zªå%…K\rzËÅ�l©FK¥~ñB\x17y1„‹\x01ýB\x17|{>G~ÛŠó9ø‡Â9…orqÖ…¿×¢™ClVhŽ\\;\x18¸¦=\x12_�)”_ÕâL!þ¦púË\fyZáË\f|¡ðù]øLáÓ:œ:™.Oµâd:NÔâ\x13…�\x15Ž\x1fK‘Ç\x15Ž¥àh->ú0E~¤ðáê\x04ùa"+"Hello.pdf",61,356,2996,"ø¢hŠ\x14!Ø\x00CϽ\x1bý>í×ïë¿íÜ�3çüæÌyÝ»÷Δ-\\\\DVª$P`VÉŒ\x05d6ëI\x1eŠgÝSæ6Eн—HË�½`NITŽ‘åNsæÝ7;*'Nfy@qь¨LWxìWÌ@T\x16}x¼®¸¤Œí\x18Íú.\x13×¼ÒYmó‰£\f°dƽmþé8Ëîù3JŠxäf�0é¶ tQ™)’½šÇì\x05\x0b‹ÚôE�(¦St®�\x1a–\x05w©Y)‹î""\x0biä �”ÄЭ¬+yÖ˜×b²–>}ö�;ì7\\¤N±æâ½eéy\x06s(¸¤ßå•W…¬�½…Åè¤1ÁëbJT\x07""ýàå•×’e½iɘù¾É\bÅf½®UŠ”íë¦É¡™""…j	L+I\x17.RÌ'›4‰\x03‚pš¼Ã¤vÚĈÍä\x13·=R\x0eõ‰Dª`ÌJ>¦	”Ë4Þ´\x17gjÅ’�‘\x18“·˜:Òäu\x13‡‰h&""\x02!\x05¥pµ\x02W\x14.+´æâŸuø®\x02—Zªå%…K\rzËÅ�l©FK¥~ñB\x17y1„‹\x01ýB\x17|{>G~ÛŠó9ø‡Â9…orqÖ…¿×¢™ClVhŽ\\;\x18¸¦=\x12_�)”_ÕâL!þ¦púË\fyZáË\f|¡ðù]øLáÓ:œ:™.Oµâd:NÔâ\x13…�\x15Ž\x1fK‘Ç\x15Ž¥àh->ú0E~¤ðáê\x04ùa\n>¨À‘Ahb¡i\x10\x0e+\x1cz?^\x1eRx?\x1e\x07\x15ÞS8På”\x072ñ×TìWx·\x16�«|²Qá/"+"Hello.pdf",66,95,3301,"ñä\x13\x0eùd:žpà7ñجð8;y\\aS""6nè)7*lè‰ÇØÿcµ¨]_'k\x15Öó³µ¾\x0eë+õuk|rÝ4¬\x0bè�*üZa-Ëkë°Æ‡\x1a.FÍP<ÂÙ>âÂê\x04T3P]ˆU\\´U>T9±Ráa…‡\x14\x1e\\á”\x0f*¬pâW\nË\x15\x1ep\x0e“\x0fLÂ/\x15*ïŲ¥\x15r™ÂÒ"+"Hello.pdf",70,35,3383,"‹Ë¬r±\x1d‹#‚\x02Gõ2+Ê\x1aôEIX\x14Ð\x17*Ü­°@¡tþ$YZ‹ù%ÝäüI(é†y\nwåâN…¹¹(nÅœ:ÌV(R(T˜5³£œ¥0“\x1crfGÌP˜®p‡ÂíS\x12äí6L+Ämû0•…©.LI\x00?ÑA\x17nUø¹Â-\x19éò–\\LV˜¤0QaB\x05Æ+ÜìÂ8…±Â/Ç*ÜT‡1Ýpãè4ycŒ\x1ež$G§aTAš\x1c¥0’¥‘…\x18ÁÒˆ:\x14¤!Ÿ�üþ\x18>Ì)‡'axD\x0b\x04âôaCír˜\x13Ã""\x1a±44`“Cí\x18\x1a\x11\r,\x05†XeÀ†@DT²4Ä\x1a'‡X1$""\x02�Býg"+"Hello.pdf",71,146,3575,"wåâN…¹¹(nÅœ:ÌV(R(T˜5³£œ¥0“\x1crfGÌP˜®p‡ÂíS\x12äí6L+Ämû0•…©.LI\x00?ÑA\x17nUø¹Â-\x19éò–\\LV˜¤0QaB\x05Æ+ÜìÂ8…±Â/Ç*ÜT‡1Ýpãè4ycŒ\x1ež$G§aTAš\x1c¥0’¥‘…\x18ÁÒˆ:\x14¤!Ÿ�üþ\x18>Ì)‡'axD\x0b\x04âôaCír˜\x13Ã""\x1a±44`“Cí\x18\x1a\x11\r,\x05†XeÀ†@DT²4Ä\x1a'‡X1$""\x02�Býg\nƒ9„Á­¸Aáún\x18¤0�\x0b<°\x10\x03z·—\x03Æ ¿B?¿KöSè;\x06}zµ—}Æ �‡<…\\VÌUèÍÓ½Û£W{ä0—“†žq©²g\x1düÙÉÒï‚?¢\x19n³\x1dN™�Œl#ÜZ=«‡Of)ô`Í\x1e>t×\x06Éî"+"Hello.pdf",74,36,3743,"p�\x1d^…Îv»ì¬àqû¥§\x02n?:�AGöÜQ¡ƒB&×6S!ƒïJF:Ú+¤+¤)´c\x0bíF 5Å/S‡!Åå�)~¸\x1cHf½d\x17’x}’‚“3w\x0eƒƒ=8œpDkg·Y¥Ý\x0e{´v¶Äxi³Â\x16­]""×.1\x1e‰\\»\x1dº5\x0eVãÙê¯'(Äs&ñ"+"Hello.pdf",75,2,3825,"q©ˆu FÁ¦-"+"Hello.pdf",79,1,5169,"endstream\nendobj"+"Hello.pdf",81,1,5186,"14 0 obj"+"Hello.pdf",81,6,5191,"14 0 obj\n2734"+"Hello.pdf",83,1,5200,"endobj\n15 0 obj"+"Hello.pdf",84,4,5210,"15 0 obj"+"Hello.pdf",86,1,5224,"endobj\n16 0 obj"+"Hello.pdf",87,4,5234,"16 0 obj"+"Hello.pdf",88,2,5241,"(Mac OS X 10.12.6 Quartz PDFContext)"+"Hello.pdf",88,9,5248,"(Mac OS X 10.12.6 Quartz PDFContext)"+"Hello.pdf",88,19,5258,"(Mac OS X 10.12.6 Quartz PDFContext)"+"Hello.pdf",89,1,5277,"endobj\n17 0 obj"+"Hello.pdf",90,4,5287,"17 0 obj"+"Hello.pdf",92,1,5304,"endobj\n18 0 obj"+"Hello.pdf",93,4,5314,"18 0 obj"+"Hello.pdf",95,1,5346,"endobj\n19 0 obj"+"Hello.pdf",96,4,5356,"19 0 obj"+"Hello.pdf",98,1,5365,"endobj\n20 0 obj"+"Hello.pdf",99,4,5375,"20 0 obj"+"Hello.pdf",101,1,5385,"endobj\n1 0 obj"+"Hello.pdf",102,3,5394,"1 0 obj"+"Hello.pdf",103,5,5404,"<< /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate"+"Hello.pdf",103,14,5413,"<< /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate"+"Hello.pdf",103,19,5418,"<< /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate"+"Hello.pdf",103,31,5430,"<< /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate"+"Hello.pdf",103,36,5435,"<< /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate"+"Hello.pdf",103,47,5446,"<< /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate"+"Hello.pdf",103,52,5451,"<< /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate"+"Hello.pdf",103,68,5467,"<< /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate"+"Hello.pdf",103,73,5472,"<< /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate\n18 0 R /Keywords 19 0 R /AAPL:Keywords 20 0 R >>"+"Hello.pdf",104,4,5483,"18 0 R /Keywords 19 0 R /AAPL:Keywords 20 0 R >>"+"Hello.pdf",104,9,5488,"18 0 R /Keywords 19 0 R /AAPL:Keywords 20 0 R >>"+"Hello.pdf",104,21,5500,"18 0 R /Keywords 19 0 R /AAPL:Keywords 20 0 R >>"+"Hello.pdf",104,31,5510,"18 0 R /Keywords 19 0 R /AAPL:Keywords 20 0 R >>"+"Hello.pdf",104,43,5522,"18 0 R /Keywords 19 0 R /AAPL:Keywords 20 0 R >>"+"Hello.pdf",105,1,5529,"endobj\nxref"+"Hello.pdf",107,1,5541,"0 21"+"Hello.pdf",108,1,5546,"0000000000 65535 f "+"Hello.pdf",108,18,5563,"0000000000 65535 f \n0000005392 00000 n "+"Hello.pdf",109,12,5577,"0000005392 00000 n "+"Hello.pdf",110,1,5586,"0000000238 00000 n "+"Hello.pdf",110,18,5603,"0000000238 00000 n \n0000001714 00000 n "+"Hello.pdf",111,12,5617,"0000001714 00000 n "+"Hello.pdf",112,1,5626,"0000000022 00000 n "+"Hello.pdf",112,18,5643,"0000000022 00000 n \n0000000219 00000 n "+"Hello.pdf",113,12,5657,"0000000219 00000 n "+"Hello.pdf",114,1,5666,"0000000342 00000 n "+"Hello.pdf",114,18,5683,"0000000342 00000 n \n0000001679 00000 n "+"Hello.pdf",115,12,5697,"0000001679 00000 n "+"Hello.pdf",116,1,5706,"0000001847 00000 n "+"Hello.pdf",116,18,5723,"0000001847 00000 n \n0000000439 00000 n "+"Hello.pdf",117,12,5737,"0000000439 00000 n "+"Hello.pdf",118,1,5746,"0000001658 00000 n "+"Hello.pdf",118,18,5763,"0000001658 00000 n \n0000001797 00000 n "+"Hello.pdf",119,12,5777,"0000001797 00000 n "+"Hello.pdf",120,1,5786,"0000002110 00000 n "+"Hello.pdf",120,18,5803,"0000002110 00000 n \n0000002362 00000 n "+"Hello.pdf",121,12,5817,"0000002362 00000 n "+"Hello.pdf",122,1,5826,"0000005186 00000 n "+"Hello.pdf",122,18,5843,"0000005186 00000 n \n0000005207 00000 n "+"Hello.pdf",123,12,5857,"0000005207 00000 n "+"Hello.pdf",124,1,5866,"0000005231 00000 n "+"Hello.pdf",124,18,5883,"0000005231 00000 n \n0000005284 00000 n "+"Hello.pdf",125,12,5897,"0000005284 00000 n "+"Hello.pdf",126,1,5906,"0000005311 00000 n "+"Hello.pdf",126,18,5923,"0000005311 00000 n \n0000005353 00000 n "+"Hello.pdf",127,12,5937,"0000005353 00000 n "+"Hello.pdf",128,1,5946,"0000005372 00000 n "+"Hello.pdf",128,18,5963,"0000005372 00000 n \ntrailer"+"Hello.pdf",130,5,5978,"<< /Size 21 /Root 11 0 R /Info 1 0 R /ID [ <8db88d3335070bd9583341583cf769a3>"+"Hello.pdf",130,14,5987,"<< /Size 21 /Root 11 0 R /Info 1 0 R /ID [ <8db88d3335070bd9583341583cf769a3>"+"Hello.pdf",130,22,5995,"<< /Size 21 /Root 11 0 R /Info 1 0 R /ID [ <8db88d3335070bd9583341583cf769a3>"+"Hello.pdf",130,27,6000,"<< /Size 21 /Root 11 0 R /Info 1 0 R /ID [ <8db88d3335070bd9583341583cf769a3>"+"Hello.pdf",130,34,6007,"<< /Size 21 /Root 11 0 R /Info 1 0 R /ID [ <8db88d3335070bd9583341583cf769a3>"+"Hello.pdf",130,39,6012,"<< /Size 21 /Root 11 0 R /Info 1 0 R /ID [ <8db88d3335070bd9583341583cf769a3>"+"Hello.pdf",132,1,6092,"startxref\n5536"+"Hello.sh",1,8,7,"#!/bin/sh\necho ""Hello World!"""+"Hello.sh",2,7,16,"echo ""Hello World!"""

tests/out/Hello_wnhS--csv-v.out

new file mode 100644@@ -0,0 +1,34 @@+"Hello.class","Êþº¾\x00\x00\x004\x00\x1d"+"Hello.class","\x00\x06\x00\x0f	\x00\x10\x00\x11\b\x00\x12"+"Hello.class","\x00\x13\x00\x14\x07\x00\x15\x07\x00\x16\x01\x00\x06<init>\x01\x00\x03()V\x01\x00\x04Code\x01\x00\x0fLineNumberTable\x01\x00\x04main\x01\x00\x16([Ljava/lang/String;)V\x01\x00"+"Hello.class","SourceFile\x01\x00"+"Hello.class","\x00\x00\x00\x06\x00\x01\x00\x00\x00\x03\x00	\x00\x0b\x00\f\x00\x01\x00	\x00\x00\x00%\x00\x02\x00\x01\x00\x00\x00	²\x00\x02\x12\x03¶\x00\x04±\x00\x00\x00\x01\x00"+"Hello.class","\x00\x00\x00"+"Hello.class","\x00\x02\x00\x00\x00\x05\x00\b\x00\x06\x00\x01\x00\r\x00\x00\x00\x02\x00\x0e"+"Hello.java",""+"Hello.java","  }"+"Hello.java","}"+"Hello.pdf",">>"+"Hello.pdf",">> >>"+"Hello.pdf","ÐpÐ|ô\fh\x15€tZ\x00*%´LôX'ž£R\x15=•f¢YA„ØÊý¨oP~×§Ô€´Në�Ö�^£_""É<ýJsèç!m`l¦Ãn\x1e^8´\b\x0fØ\x13¶ù eÓ\x15Û…&žG;(&Ä+bP\f‘*^\x15‡Å!1\fé�8\x18͉½OúÎ~>ذô.ÖMú¾\f\x0eB¬gÃ3\x07¬p4\x01<ø\x07ëÎFš	¶.îhìó¼�Þ?ï¿c\x19·>ø³�½\x00ú1'¿Á¢\x0bk&%æ^?÷MOÂCuE|õÖ�îëçèx2KQÞª�Y’×äûò"+"Hello.pdf","¾÷äÕ¤\rùgy\x15ï½¶\\=Ê\x0bÿ“¹Í!F;’ÍAÎ<›Q´qÆ\x1bÀ!¸©Esö·YL²é¶b´`ÉB”�«¸ÿË	óÃ<·±Rs.îð¼·?c6Í÷Š\x0f‹t¾O»¬­kŸh?jh+ÚÇ@¿K\x1fJ_JßJW¤«Ò\rR¥kÒ²ô�ô½ô¹ô5z_@º,]éØIqì\x1b»\x07~Æ{Öhí0f†³\x14\x10óÂÚÌ"+"Hello.pdf","K\x1fñw\x06c›ù3¡Õ^\x03�»c-刲SyF\x19Vv+Ï)\x13J¯r@9¬lW\x06Ðú•Qe/Fvn°dc=΀…’g‹¦#®â<±Wu°çÃK\x1dï¦_\\ÃÖ†5ØI=\x0ežÙÚ¦\x0e¯\x11W¿\x15Uc¼;]œ\x06:M!b‹Î""r\x1f:œ\x1f'ªþÎÙ\\“85Roâ”°Ä.Ñ/ÆZ5˜\x13\x07P…ãmõ8ÈUš\x19É\fgr¤fz3C™þÌ1ÆQ¬Ñù’Ù‹Ñ!|G\x12Þ3Ë1ÿ›5Äg\x18ï\x1dæ¨	l£‡[+4çqß\x11å]oÁ·fê¡: i/©9\\¯¦:æ\x18Ù>U·m5\x1a"+"Hello.pdf",">>"+"Hello.pdf","ïT`ŸÂÛ"+"Hello.pdf","VØ»)Q¾¥°GáM…?)4°½\x06\x17Þ°¢~w�¬WؽkšÜ]‡Ý•ú®:ŸÜ5\r»\x02z�\x0f;\x15^¯E¤f¨|MáU\x1e^mÅ+lk‡Â\x1f\x0b±½\x10/Û\x10NÂ\x1f\x14^R�«ø½Â‹"+"Hello.pdf","¿KÂ6…\x17ž·É\x17rñ¼\rÏmuÊçºa«\x13ÏnñËg+°Å�ß*<£ð´ÂSO¦Ë§"+"Hello.pdf","TtÄý"+"Hello.pdf","å6üBa‰Â="+"Hello.pdf","Ý\x14º*t±Ã—:Lú"+"Hello.pdf","Ò\x05prh…Æ€6\b‚\x03\x10~�\x03"""""+"Hello.pdf","W¬\x16Yÿ?�þÇSáOg„\x1a;M¬åÑØGDè!m\x19¥¿¿""´‡u4S/""\x1aÅJ±“ù­¼·h¤åt^ÄãmÑŸ¹z^\x1bÔ=ŒÖÐfsu\rNÓbì¢Cô\x0e\x1dcî´\x18\b^+\x0e‘Gœ`?+ð¡¡ž¥=LËQ� è$Jh‹x‰-–SD”Ò2�Gm""[Þ¯\x1fdt?=Ä×£´…J™72XÎñL;h\x15] \rÚ\x19šÂüNÚËñ(þüš¹ˆ&jaKÛ´ÁÚlÖÛËÖ6Ñ&±œšh‘Nü)WtJ6iYlu\x07g@4“6Ë&¹Á¨\x07�Mò\x1cÏ\x10u°D,®\x18/gaÔn«Ø%zkãè\x10¯/§É¸\rwã˜X¡{õ%8C5\x1aa:ÝI\x07d“ÅE51^ª±Ì\x16÷éÓÍ«œ­•kKôéb\x1b�a›3ñ\x1dË\x1eŽl³™1Ñ\x0em¢\x1c'Çqγ\x19ÛlÒš(µ8h?Z¹îk5%Fé#0„ó)×o¢\rô\fÛíÊ•!*E_ö^Jåruô¢m|ùåjÔrEÍjˆ<m0mÖf‹U\x1cm\x0bW³\x14ùÔŸ}t�gi…ØÁqSL\x05-’M¼U$êAôZŒEêü÷¦l·#¬ùF\x17†\x03\x13‚î}!�?û'¢Û\x11ã\x0eÓøpâ}îȵkãƒz†\f…ef\x18¾Ø°îóžúO“§üÙcÆ\x07Ý\x11Ñ® ¿ÍlÁô|\x06'\x05Ù\x03ÿ\f˜Ý\x150\x16\x05F‡¥�£§‡Ý³ŠÝUŽ*ï *GÑ ?ïÿ²Ç0\x19\x1f|YˆGB\x11qmE„ò;¼Î»HÜq;OÇe»Ý\x05sóÃb:\x0bñÙ\fôð0—�í\x1eÁaŽ˜\x18ô†ÜUîªÑ…Uî\x11îâ\x19…\x1c·9òDQU(‡3˜\x14œËtrÐ\x13\x0e„2~`‹B!ûհÃKX½*Ä\x16îl³À£	å\\e¥Äì1î0ºŒ\x0fN\b†+ó3Â�üP†Çã.\b7Œ\x0f†\x1bò3<¡\x10kÙ~ˆ”#®˜›Ö\x16³�c¶õàyGÔ"+"Hello.pdf","—(�\x11¦PU•asRÐë	WVUeTq\x1emr„\x1a~\x02\bú)\x10h\x03""dØàJ\x14ð÷`<\x1bãÁëÉ0\x00¯Çëá8CùìÛiÜš\x02ŽÔ\x13òónœŠ¹¯ä^ÎýœÁó³\x18Ýçóù‚Ï\x00SX\x1eEÝþm¿ÎðÙ´\x1féÁ”t“vágw;�\x14™ü¯/Vµz±Ü§ª\x18ê´ËÜó\x13Y„ëU\x11+—k:å¼u¸¹79\x0e7\x1fnî•ìô8}\x1e§§X§+‹�qå\x0bU\x1bcûîüBKwì0rÐGñ¿ �n6N\x15|osøÖq·:øXô\x1ewæÅqÆX–<êÜc\x18\x17,ǽÇo\x0bCAçná\x1eŸ³“£Š¥„¬^½“óØužÓËÔ»²QëÞØxõƒFÙtõ-í†Ö,훫Nö¯QùµÏø­QN)”IyF\x04;\x19t°�\biì!“=eæð;ÏB‰\fî¤dJ7G£\x0e†\x17‘âI±¤æåöëŸb\x13^79\x1d”—›\x14ÓSx;[bôéW>‹}ã¥`CÉÜ=SÕeuT¸Ï\x1d¹\x14¶®}xÅ‹±Zõ\x14Ë\x17û\x06\f|-+K\f\x14ÉÂ*\x02ê“ÇÊ^\bÏ7êrŽë2ÅÒž½v�F•ȷ؈ʨCÜqŽHçSž\x11Q""ÅG#q¥^/R¼�»ôuzúz´\x03SC\x1fœyö\x15õ‘8!Öß¿ôñCoââ\x1a£æ\x1a­äœGqÎ	ÔŽ¼�dKu\x12U[ë“6¦Å%Ùó‘”ò³4Ç…æ+Æ-üüB³ãl/ÑÙ’â2rìÛ§K×Ü$§CóvÖœŽ$­¸zÍšêÕkÖ¬>s©å«3--8qôHÓ±cMGŽnVï«OÕ)uHøù³ÓQô4üšíÚRó95N§?n’Å,~~o¦‰Ì	>:Fu,Æ\x0brä„Éc§ŒÈ\x1a[4^©bÑœÅóf,$ú\x17 -\x06ä"+"Hello.pdf","(Hello)"+"Hello.pdf","(TextEdit)"+"Hello.pdf","(D:20200124010711Z00'00')"+"Hello.pdf","()"+"Hello.pdf","[ ]"+"Hello.pdf","<8db88d3335070bd9583341583cf769a3> ] >>"+"Hello.pdf","%%EOF"+"Hello.txt","Hello"+"emptyline.txt",""

tests/out/Hello_wnhS--csv.out

new file mode 100644@@ -0,0 +1,128 @@+"Hello.bat","#!/bin/sh\necho ""Hello World!"""+"Hello.bat","echo ""Hello World!"""+"Hello.class","Hello.java\f\x00\x07\x00\b\x07\x00\x17\f\x00\x18\x00\x19\x01\x00\fHello World!\x07\x00\x1a\f\x00\x1b\x00\x1c\x01\x00\x05Hello\x01\x00\x10java/lang/Object\x01\x00\x10java/lang/System\x01\x00\x03out\x01\x00\x15Ljava/io/PrintStream;\x01\x00\x13java/io/PrintStream\x01\x00\x07println\x01\x00\x15(Ljava/lang/String;)V\x00!\x00\x05\x00\x06\x00\x00\x00\x00\x00\x02\x00\x01\x00\x07\x00\b\x00\x01\x00	\x00\x00\x00\x1d\x00\x01\x00\x01\x00\x00\x00\x05*·\x00\x01±\x00\x00\x00\x01\x00"+"Hello.java","import java.lang.*;"+"Hello.java","public class Hello // prints a Hello World! greeting"+"Hello.java","public class Hello // prints a Hello World! greeting\n{ public static void main(String[] arg)"+"Hello.java","{ public static void main(String[] arg)"+"Hello.java","  { System.out.println(""Hello World!"");"+"Hello.pdf","%PDF-1.3\n%Äåòåë§ó ÐÄÆ"+"Hello.pdf","4 0 obj"+"Hello.pdf","4 0 obj\n<< /Length 5 0 R /Filter /FlateDecode >>"+"Hello.pdf","<< /Length 5 0 R /Filter /FlateDecode >>"+"Hello.pdf","stream\nx\x01EŽ»"+"Hello.pdf","\x021\x14D{¿â”Z˜½‰y˜V\x11l\x17.ø\x01a-d×eÍÿƒ\x17,¬†™9\f³1²Q\x02¹F—â©\x12ó™�\\LY\nŸ‰\x07o†k÷´ŽÐ›áâj©Rj²@8þ­í” »¶pQ£DÄ£\rï iÂ\x0bº0¨z¬|²¿Oó¼\x1eÐ\x177µ7ã\x17Nÿ ¥"+"Hello.pdf","endstream\nendobj"+"Hello.pdf","5 0 obj"+"Hello.pdf","5 0 obj\n123"+"Hello.pdf","endobj\n2 0 obj"+"Hello.pdf","2 0 obj"+"Hello.pdf","<< /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]"+"Hello.pdf","endobj\n6 0 obj"+"Hello.pdf","6 0 obj"+"Hello.pdf","<< /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R >> /Font << /TT1 8 0 R"+"Hello.pdf","endobj\n9 0 obj"+"Hello.pdf","9 0 obj"+"Hello.pdf","<< /Length 10 0 R /N 1 /Alternate /DeviceGray /Filter /FlateDecode >>"+"Hello.pdf","stream\nx\x01…U]h\x1cU\x14>»sg\x03\x12\x07\x1f´\r-´ƒ?m	é2‰V\x13‹µÛMºI\x13·ëfS›*Êtv6;Ídfœ™Ý&¡O¥à›\x16\x04é« >Æ‚\b¶*6/ö¥¥Å’J5\x0f"+"Hello.pdf","x\x01…U]h\x1cU\x14>»sg\x03\x12\x07\x1f´\r-´ƒ?m	é2‰V\x13‹µÛMºI\x13·ëfS›*Êtv6;Ídfœ™Ý&¡O¥à›\x16\x04é« >Æ‚\b¶*6/ö¥¥Å’J5\x0f"+"Hello.pdf","\x11ZŒ (}Rð;3ÛdvA2Ã�ùî¹çž{Îwî¹—¨ëoÝóì´J4ç„~¡œ›>9}JíºMiR¨›ðèFàåJ¥	ÆŽë˜üo\x1eÞ¥\x14Kîìg[íc[öäª\x19\x18к†æV\x03cŽ(¥\x11ej†ç‡D]— \x1f<\x1bzŒo\x03?9[)ç�×€•Ö\\@zª`:¦o\x19jÁ×\x17Ô’ïÖ,;éëVãlcËgÎn°¯üìFë\x0ef'Çñï…Ï\x17Lgj\x12x\x1fð’¡�0î\x03¾Û´N\x14cœN{á‘r¬ŸÎ6f§r-ùÉštª%¿PoŒ2Î\x12¥—\x16ë•7€Ÿ\x00^uN\x17�·ô×gÝq¶ÓC$õ\x18Aþ\x14ð³ÀZÝ\x1cã<©À\x15ß-³>Ëê9<\x02ü2ð%+\x1c«\x00þôCМd9° ÅzžýÄZ""{F?V\x02Þ\x06|È´\x0b¼\x16숊\x17–Øæ ð¼c\x17y-Ä..›A\x14/b\x17?…õÊh¬/§C¿ÂsŸ&’÷Ô¬£cÀàD\x1e­û£,‡?rèÙÑÞz\x11xÉo”9ö=Àkº?R\x00†ÍÌcU}˜y~\x01x€N¤t2É¥Óø\x1aäпˆ7 ‹š\x11òÈÇX\r}›"+"Hello.pdf","Tß\fL¿iV³Äw7Ï#úëõèNNm»a4üf,£Tê&Ñ·�“4\nendstream"+"Hello.pdf","endobj\n10 0 obj"+"Hello.pdf","10 0 obj"+"Hello.pdf","1116\nendobj"+"Hello.pdf","7 0 obj"+"Hello.pdf","7 0 obj\n[ /ICCBased 9 0 R ]"+"Hello.pdf","[ /ICCBased 9 0 R ]"+"Hello.pdf","endobj\n3 0 obj"+"Hello.pdf","3 0 obj"+"Hello.pdf","<< /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 2 0 R ] >>"+"Hello.pdf","endobj\n11 0 obj"+"Hello.pdf","11 0 obj"+"Hello.pdf","<< /Type /Catalog /Pages 3 0 R >>"+"Hello.pdf","endobj\n8 0 obj"+"Hello.pdf","8 0 obj"+"Hello.pdf","<< /Type /Font /Subtype /TrueType /BaseFont /GQTMZF+Menlo-Regular /FontDescriptor"+"Hello.pdf","<< /Type /Font /Subtype /TrueType /BaseFont /GQTMZF+Menlo-Regular /FontDescriptor\n12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602"+"Hello.pdf","12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602"+"Hello.pdf","12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602\n0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602"+"Hello.pdf","0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602"+"Hello.pdf","0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602\n0 0 602 ] >>"+"Hello.pdf","0 0 602 ] >>"+"Hello.pdf","endobj\n12 0 obj"+"Hello.pdf","12 0 obj"+"Hello.pdf","<< /Type /FontDescriptor /FontName /GQTMZF+Menlo-Regular /Flags 33 /FontBBox"+"Hello.pdf","<< /Type /FontDescriptor /FontName /GQTMZF+Menlo-Regular /Flags 33 /FontBBox\n[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729"+"Hello.pdf","[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729"+"Hello.pdf","/StemV 99 /XHeight 547 /StemH 83 /AvgWidth 602 /MaxWidth 602 /FontFile2 13 0 R"+"Hello.pdf","endobj\n13 0 obj"+"Hello.pdf","13 0 obj"+"Hello.pdf","<< /Length 14 0 R /Length1 4064 /Filter /FlateDecode >>"+"Hello.pdf","stream\nx\x01ÝW{xTÅ\x15?sw6¯Í>’MHH€]Öå•,�„·R\x16Hxˆ /ë.ˆòH (!\bA´1�JQ	Á@…\bH}\x15Q©µ+E]	ÄT¤b#E„ \x02"+"Hello.pdf","x\x01ÝW{xTÅ\x15?sw6¯Í>’MHH€]Öå•,�„·R\x16Hxˆ /ë.ˆòH (!\bA´1�JQ	Á@…\bH}\x15Q©µ+E]	ÄT¤b#E„ \x02"+"Hello.pdf","ø¢hŠ\x14!Ø\x00CϽ\x1bý>í×ïë¿íÜ�3çüæÌyÝ»÷Δ-\\\\DVª$P`VÉŒ\x05d6ëI\x1eŠgÝSæ6Eн—HË�½`NITŽ‘åNsæÝ7;*'Nfy@qь¨LWxìWÌ@T\x16}x¼®¸¤Œí\x18Íú.\x13×¼ÒYmó‰£\f°dƽmþé8Ëîù3JŠxäf�0é¶ tQ™)’½šÇì\x05\x0b‹ÚôE�(¦St®�\x1a–\x05w©Y)‹î""\x0biä �”ÄЭ¬+yÖ˜×b²–>}ö�;ì7\\¤N±æâ½eéy\x06s(¸¤ßå•W…¬�½…Åè¤1ÁëbJT\x07""ýàå•×’e½iɘù¾É\bÅf½®UŠ”íë¦É¡™""…j	L+I\x17.RÌ'›4‰\x03‚pš¼Ã¤vÚĈÍä\x13·=R\x0eõ‰Dª`ÌJ>¦	”Ë4Þ´\x17gjÅ’�‘\x18“·˜:Òäu\x13‡‰h&""\x02!\x05¥pµ\x02W\x14.+´æâŸuø®\x02—Zªå%…K\rzËÅ�l©FK¥~ñB\x17y1„‹\x01ýB\x17|{>G~ÛŠó9ø‡Â9…orqÖ…¿×¢™ClVhŽ\\;\x18¸¦=\x12_�)”_ÕâL!þ¦púË\fyZáË\f|¡ðù]øLáÓ:œ:™.Oµâd:NÔâ\x13…�\x15Ž\x1fK‘Ç\x15Ž¥àh->ú0E~¤ðáê\x04ùa"+"Hello.pdf","ø¢hŠ\x14!Ø\x00CϽ\x1bý>í×ïë¿íÜ�3çüæÌyÝ»÷Δ-\\\\DVª$P`VÉŒ\x05d6ëI\x1eŠgÝSæ6Eн—HË�½`NITŽ‘åNsæÝ7;*'Nfy@qь¨LWxìWÌ@T\x16}x¼®¸¤Œí\x18Íú.\x13×¼ÒYmó‰£\f°dƽmþé8Ëîù3JŠxäf�0é¶ tQ™)’½šÇì\x05\x0b‹ÚôE�(¦St®�\x1a–\x05w©Y)‹î""\x0biä �”ÄЭ¬+yÖ˜×b²–>}ö�;ì7\\¤N±æâ½eéy\x06s(¸¤ßå•W…¬�½…Åè¤1ÁëbJT\x07""ýàå•×’e½iɘù¾É\bÅf½®UŠ”íë¦É¡™""…j	L+I\x17.RÌ'›4‰\x03‚pš¼Ã¤vÚĈÍä\x13·=R\x0eõ‰Dª`ÌJ>¦	”Ë4Þ´\x17gjÅ’�‘\x18“·˜:Òäu\x13‡‰h&""\x02!\x05¥pµ\x02W\x14.+´æâŸuø®\x02—Zªå%…K\rzËÅ�l©FK¥~ñB\x17y1„‹\x01ýB\x17|{>G~ÛŠó9ø‡Â9…orqÖ…¿×¢™ClVhŽ\\;\x18¸¦=\x12_�)”_ÕâL!þ¦púË\fyZáË\f|¡ðù]øLáÓ:œ:™.Oµâd:NÔâ\x13…�\x15Ž\x1fK‘Ç\x15Ž¥àh->ú0E~¤ðáê\x04ùa\n>¨À‘Ahb¡i\x10\x0e+\x1cz?^\x1eRx?\x1e\x07\x15ÞS8På”\x072ñ×TìWx·\x16�«|²Qá/"+"Hello.pdf","ñä\x13\x0eùd:žpà7ñجð8;y\\aS""6nè)7*lè‰ÇØÿcµ¨]_'k\x15Öó³µ¾\x0eë+õuk|rÝ4¬\x0bè�*üZa-Ëkë°Æ‡\x1a.FÍP<ÂÙ>âÂê\x04T3P]ˆU\\´U>T9±Ráa…‡\x14\x1e\\á”\x0f*¬pâW\nË\x15\x1ep\x0e“\x0fLÂ/\x15*ïŲ¥\x15r™ÂÒ"+"Hello.pdf","‹Ë¬r±\x1d‹#‚\x02Gõ2+Ê\x1aôEIX\x14Ð\x17*Ü­°@¡tþ$YZ‹ù%ÝäüI(é†y\nwåâN…¹¹(nÅœ:ÌV(R(T˜5³£œ¥0“\x1crfGÌP˜®p‡ÂíS\x12äí6L+Ämû0•…©.LI\x00?ÑA\x17nUø¹Â-\x19éò–\\LV˜¤0QaB\x05Æ+ÜìÂ8…±Â/Ç*ÜT‡1Ýpãè4ycŒ\x1ež$G§aTAš\x1c¥0’¥‘…\x18ÁÒˆ:\x14¤!Ÿ�üþ\x18>Ì)‡'axD\x0b\x04âôaCír˜\x13Ã""\x1a±44`“Cí\x18\x1a\x11\r,\x05†XeÀ†@DT²4Ä\x1a'‡X1$""\x02�Býg"+"Hello.pdf","wåâN…¹¹(nÅœ:ÌV(R(T˜5³£œ¥0“\x1crfGÌP˜®p‡ÂíS\x12äí6L+Ämû0•…©.LI\x00?ÑA\x17nUø¹Â-\x19éò–\\LV˜¤0QaB\x05Æ+ÜìÂ8…±Â/Ç*ÜT‡1Ýpãè4ycŒ\x1ež$G§aTAš\x1c¥0’¥‘…\x18ÁÒˆ:\x14¤!Ÿ�üþ\x18>Ì)‡'axD\x0b\x04âôaCír˜\x13Ã""\x1a±44`“Cí\x18\x1a\x11\r,\x05†XeÀ†@DT²4Ä\x1a'‡X1$""\x02�Býg\nƒ9„Á­¸Aáún\x18¤0�\x0b<°\x10\x03z·—\x03Æ ¿B?¿KöSè;\x06}zµ—}Æ �‡<…\\VÌUèÍÓ½Û£W{ä0—“†žq©²g\x1düÙÉÒï‚?¢\x19n³\x1dN™�Œl#ÜZ=«‡Of)ô`Í\x1e>t×\x06Éî"+"Hello.pdf","p�\x1d^…Îv»ì¬àqû¥§\x02n?:�AGöÜQ¡ƒB&×6S!ƒïJF:Ú+¤+¤)´c\x0bíF 5Å/S‡!Åå�)~¸\x1cHf½d\x17’x}’‚“3w\x0eƒƒ=8œpDkg·Y¥Ý\x0e{´v¶Äxi³Â\x16­]""×.1\x1e‰\\»\x1dº5\x0eVãÙê¯'(Äs&ñ"+"Hello.pdf","q©ˆu FÁ¦-"+"Hello.pdf","endstream\nendobj"+"Hello.pdf","14 0 obj"+"Hello.pdf","14 0 obj\n2734"+"Hello.pdf","endobj\n15 0 obj"+"Hello.pdf","15 0 obj"+"Hello.pdf","endobj\n16 0 obj"+"Hello.pdf","16 0 obj"+"Hello.pdf","(Mac OS X 10.12.6 Quartz PDFContext)"+"Hello.pdf","endobj\n17 0 obj"+"Hello.pdf","17 0 obj"+"Hello.pdf","endobj\n18 0 obj"+"Hello.pdf","18 0 obj"+"Hello.pdf","endobj\n19 0 obj"+"Hello.pdf","19 0 obj"+"Hello.pdf","endobj\n20 0 obj"+"Hello.pdf","20 0 obj"+"Hello.pdf","endobj\n1 0 obj"+"Hello.pdf","1 0 obj"+"Hello.pdf","<< /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate"+"Hello.pdf","<< /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate\n18 0 R /Keywords 19 0 R /AAPL:Keywords 20 0 R >>"+"Hello.pdf","18 0 R /Keywords 19 0 R /AAPL:Keywords 20 0 R >>"+"Hello.pdf","endobj\nxref"+"Hello.pdf","0 21"+"Hello.pdf","0000000000 65535 f "+"Hello.pdf","0000000000 65535 f \n0000005392 00000 n "+"Hello.pdf","0000005392 00000 n "+"Hello.pdf","0000000238 00000 n "+"Hello.pdf","0000000238 00000 n \n0000001714 00000 n "+"Hello.pdf","0000001714 00000 n "+"Hello.pdf","0000000022 00000 n "+"Hello.pdf","0000000022 00000 n \n0000000219 00000 n "+"Hello.pdf","0000000219 00000 n "+"Hello.pdf","0000000342 00000 n "+"Hello.pdf","0000000342 00000 n \n0000001679 00000 n "+"Hello.pdf","0000001679 00000 n "+"Hello.pdf","0000001847 00000 n "+"Hello.pdf","0000001847 00000 n \n0000000439 00000 n "+"Hello.pdf","0000000439 00000 n "+"Hello.pdf","0000001658 00000 n "+"Hello.pdf","0000001658 00000 n \n0000001797 00000 n "+"Hello.pdf","0000001797 00000 n "+"Hello.pdf","0000002110 00000 n "+"Hello.pdf","0000002110 00000 n \n0000002362 00000 n "+"Hello.pdf","0000002362 00000 n "+"Hello.pdf","0000005186 00000 n "+"Hello.pdf","0000005186 00000 n \n0000005207 00000 n "+"Hello.pdf","0000005207 00000 n "+"Hello.pdf","0000005231 00000 n "+"Hello.pdf","0000005231 00000 n \n0000005284 00000 n "+"Hello.pdf","0000005284 00000 n "+"Hello.pdf","0000005311 00000 n "+"Hello.pdf","0000005311 00000 n \n0000005353 00000 n "+"Hello.pdf","0000005353 00000 n "+"Hello.pdf","0000005372 00000 n "+"Hello.pdf","0000005372 00000 n \ntrailer"+"Hello.pdf","<< /Size 21 /Root 11 0 R /Info 1 0 R /ID [ <8db88d3335070bd9583341583cf769a3>"+"Hello.pdf","startxref\n5536"+"Hello.sh","#!/bin/sh\necho ""Hello World!"""+"Hello.sh","echo ""Hello World!"""

tests/out/Hello_wnhS--format.out

new file mode 100644@@ -0,0 +1,227 @@+1) Hello.bat:+  1) 1,8 7-7+  2) 2,7 13-13++2) Hello.class:+  1) 5,27 15-15++3) Hello.java:+  1) 1,1 19-19+  2) 3,1 12-12+  3) 3,14 8-8+  4) 3,23 8-8+  5) 3,32 12-12+  6) 3,45 10-10+  7) 4,3 13-13+  8) 4,17 18-18+  9) 5,25 15-15++4) Hello.pdf:+  1) 1,8 12-14+  2) 3,1 3-3+  3) 3,5 6-6+  4) 4,5 8-8+  5) 4,14 3-3+  6) 4,19 19-19+  7) 5,1 10-12+  8) 7,35 17-27+  9) 9,1 16-16+  10) 11,1 3-3+  11) 11,5 7-7+  12) 13,1 8-8+  13) 14,3 5-5+  14) 15,5 10-10+  15) 15,17 8-8+  16) 15,26 3-3+  17) 15,31 11-11+  18) 15,43 3-3+  19) 15,48 10-10+  20) 15,59 3-3+  21) 15,64 11-11+  22) 15,76 5-5+  23) 17,1 8-8+  24) 18,3 5-5+  25) 19,5 9-9+  26) 19,16 9-9+  27) 19,29 13-13+  28) 19,44 5-5+  29) 19,50 3-3+  30) 19,58 7-7+  31) 19,67 5-5+  32) 19,73 3-3+  33) 21,1 8-8+  34) 22,3 5-5+  35) 23,5 9-9+  36) 23,15 3-3+  37) 23,20 3-3+  38) 23,25 21-21+  39) 23,48 19-19+  40) 24,1 22-25+  41) 25,19 40-58+  42) 26,307 7-9+  43) 30,29 11-11+  44) 32,1 9-9+  45) 33,4 5-5+  46) 34,1 11-11+  47) 36,1 3-3+  48) 36,5 5-5+  49) 37,4 10-10+  50) 37,15 3-3+  51) 38,1 8-8+  52) 39,3 5-5+  53) 40,5 11-11+  54) 40,18 11-11+  55) 40,30 5-5+  56) 40,42 7-7+  57) 40,51 6-6+  58) 40,58 3-3+  59) 40,62 3-3+  60) 41,1 9-9+  61) 42,4 5-5+  62) 43,5 13-13+  63) 43,20 7-7+  64) 43,28 3-3+  65) 44,1 8-8+  66) 45,3 5-5+  67) 46,5 10-10+  68) 46,17 17-17+  69) 46,36 30-30+  70) 46,68 17-17+  71) 47,4 3-3+  72) 47,9 26-26+  73) 47,37 12-12+  74) 47,51 12-12+  75) 47,65 8-8+  76) 47,74 5-5+  77) 48,3 3-3+  78) 48,7 3-3+  79) 48,11 3-3+  80) 48,15 3-3+  81) 48,19 3-3+  82) 48,23 3-3+  83) 48,27 3-3+  84) 48,31 3-3+  85) 48,35 3-3+  86) 48,39 3-3+  87) 48,43 3-3+  88) 48,47 3-3+  89) 48,51 3-3+  90) 48,55 5-5+  91) 48,61 3-3+  92) 48,65 3-3+  93) 48,69 3-3+  94) 48,73 5-5+  95) 49,3 5-5+  96) 50,1 9-9+  97) 51,4 5-5+  98) 52,5 20-20+  99) 52,27 30-30+  100) 52,59 8-8+  101) 52,69 14-14+  102) 53,8 7-7+  103) 53,23 13-13+  104) 53,38 10-10+  105) 53,50 12-12+  106) 53,64 13-13+  107) 54,2 8-8+  108) 54,12 11-11+  109) 54,25 8-8+  110) 54,35 12-12+  111) 54,49 12-12+  112) 54,63 12-12+  113) 54,76 3-3+  114) 56,1 9-9+  115) 57,4 5-5+  116) 58,5 9-9+  117) 58,15 3-3+  118) 58,20 12-12+  119) 58,34 19-19+  120) 59,1 34-42+  121) 60,33 9-11+  122) 61,187 30-41+  123) 61,356 40-48+  124) 66,95 19-23+  125) 70,35 107-144+  126) 71,146 10-16+  127) 74,36 57-78+  128) 75,2 6-7+  129) 79,1 16-16+  130) 81,1 4-4+  131) 81,6 8-8+  132) 83,1 9-9+  133) 84,4 5-5+  134) 86,1 9-9+  135) 87,4 5-5+  136) 88,2 6-6+  137) 88,9 9-9+  138) 88,19 18-18+  139) 89,1 9-9+  140) 90,4 5-5+  141) 92,1 9-9+  142) 93,4 5-5+  143) 95,1 9-9+  144) 96,4 5-5+  145) 98,1 9-9+  146) 99,4 5-5+  147) 101,1 8-8+  148) 102,3 5-5+  149) 103,5 8-8+  150) 103,14 3-3+  151) 103,19 11-11+  152) 103,31 3-3+  153) 103,36 10-10+  154) 103,47 3-3+  155) 103,52 15-15+  156) 103,68 3-3+  157) 103,73 10-10+  158) 104,4 3-3+  159) 104,9 11-11+  160) 104,21 3-3+  161) 104,31 11-11+  162) 104,43 3-3+  163) 105,1 11-11+  164) 107,1 4-4+  165) 108,1 16-16+  166) 108,18 13-13+  167) 109,12 7-7+  168) 110,1 16-16+  169) 110,18 13-13+  170) 111,12 7-7+  171) 112,1 16-16+  172) 112,18 13-13+  173) 113,12 7-7+  174) 114,1 16-16+  175) 114,18 13-13+  176) 115,12 7-7+  177) 116,1 16-16+  178) 116,18 13-13+  179) 117,12 7-7+  180) 118,1 16-16+  181) 118,18 13-13+  182) 119,12 7-7+  183) 120,1 16-16+  184) 120,18 13-13+  185) 121,12 7-7+  186) 122,1 16-16+  187) 122,18 13-13+  188) 123,12 7-7+  189) 124,1 16-16+  190) 124,18 13-13+  191) 125,12 7-7+  192) 126,1 16-16+  193) 126,18 13-13+  194) 127,12 7-7+  195) 128,1 16-16+  196) 128,18 10-10+  197) 130,5 7-7+  198) 130,14 7-7+  199) 130,22 3-3+  200) 130,27 6-6+  201) 130,34 3-3+  202) 130,39 4-4+  203) 132,1 14-14++5) Hello.sh:+  1) 1,8 7-7+  2) 2,7 13-13+

tests/out/Hello_wnhS--json-c.out

new file mode 100644@@ -0,0 +1,50 @@+[+  {+    "file": "Hello.bat",+    "matches": [+      { "match": 2 }+    ]+  },+  {+    "file": "Hello.class",+    "matches": [+      { "match": 1 }+    ]+  },+  {+    "file": "Hello.java",+    "matches": [+      { "match": 4 }+    ]+  },+  {+    "file": "Hello.pdf",+    "matches": [+      { "match": 97 }+    ]+  },+  {+    "file": "Hello.sh",+    "matches": [+      { "match": 2 }+    ]+  },+  {+    "file": "Hello.txt",+    "matches": [+      { "match": 0 }+    ]+  },+  {+    "file": "empty.txt",+    "matches": [+      { "match": 0 }+    ]+  },+  {+    "file": "emptyline.txt",+    "matches": [+      { "match": 0 }+    ]+  }+]

tests/out/Hello_wnhS--json-co.out

new file mode 100644@@ -0,0 +1,50 @@+[+  {+    "file": "Hello.bat",+    "matches": [+      { "match": 2 }+    ]+  },+  {+    "file": "Hello.class",+    "matches": [+      { "match": 1 }+    ]+  },+  {+    "file": "Hello.java",+    "matches": [+      { "match": 9 }+    ]+  },+  {+    "file": "Hello.pdf",+    "matches": [+      { "match": 203 }+    ]+  },+  {+    "file": "Hello.sh",+    "matches": [+      { "match": 2 }+    ]+  },+  {+    "file": "Hello.txt",+    "matches": [+      { "match": 0 }+    ]+  },+  {+    "file": "empty.txt",+    "matches": [+      { "match": 0 }+    ]+  },+  {+    "file": "emptyline.txt",+    "matches": [+      { "match": 0 }+    ]+  }+]

tests/out/Hello_wnhS--json-cv.out

new file mode 100644@@ -0,0 +1,50 @@+[+  {+    "file": "Hello.bat",+    "matches": [+      { "match": 0 }+    ]+  },+  {+    "file": "Hello.class",+    "matches": [+      { "match": 6 }+    ]+  },+  {+    "file": "Hello.java",+    "matches": [+      { "match": 3 }+    ]+  },+  {+    "file": "Hello.pdf",+    "matches": [+      { "match": 37 }+    ]+  },+  {+    "file": "Hello.sh",+    "matches": [+      { "match": 0 }+    ]+  },+  {+    "file": "Hello.txt",+    "matches": [+      { "match": 0 }+    ]+  },+  {+    "file": "empty.txt",+    "matches": [+      { "match": 0 }+    ]+  },+  {+    "file": "emptyline.txt",+    "matches": [+      { "match": 1 }+    ]+  }+]

tests/out/Hello_wnhS--json-l.out

new file mode 100644@@ -0,0 +1,32 @@+[+  {+    "file": "Hello.bat",+    "matches": [+      { "match": true }+    ]+  },+  {+    "file": "Hello.class",+    "matches": [+      { "match": true }+    ]+  },+  {+    "file": "Hello.java",+    "matches": [+      { "match": true }+    ]+  },+  {+    "file": "Hello.pdf",+    "matches": [+      { "match": true }+    ]+  },+  {+    "file": "Hello.sh",+    "matches": [+      { "match": true }+    ]+  }+]

tests/out/Hello_wnhS--json-lv.out

new file mode 100644@@ -0,0 +1,20 @@+[+  {+    "file": "Hello.txt",+    "matches": [+      { "match": false }+    ]+  },+  {+    "file": "empty.txt",+    "matches": [+      { "match": false }+    ]+  },+  {+    "file": "emptyline.txt",+    "matches": [+      { "match": false }+    ]+  }+]

tests/out/Hello_wnhS--json-n.out

new file mode 100644@@ -0,0 +1,155 @@+[+  {+    "file": "Hello.bat",+    "matches": [+      { "line": 1, "match": "#!/bin/sh\necho \"Hello World!\"" },+      { "line": 2, "match": "echo \"Hello World!\"" }+    ]+  },+  {+    "file": "Hello.class",+    "matches": [+      { "line": 5, "match": "Hello.java\f\u0000\u0007\u0000\b\u0007\u0000\u0017\f\u0000\u0018\u0000\u0019\u0001\u0000\fHello World!\u0007\u0000\u001a\f\u0000\u001b\u0000\u001c\u0001\u0000\u0005Hello\u0001\u0000\u0010java/lang/Object\u0001\u0000\u0010java/lang/System\u0001\u0000\u0003out\u0001\u0000\u0015Ljava/io/PrintStream;\u0001\u0000\u0013java/io/PrintStream\u0001\u0000\u0007println\u0001\u0000\u0015(Ljava/lang/String;)V\u0000!\u0000\u0005\u0000\u0006\u0000\u0000\u0000\u0000\u0000\u0002\u0000\u0001\u0000\u0007\u0000\b\u0000\u0001\u0000\t\u0000\u0000\u0000\u001d\u0000\u0001\u0000\u0001\u0000\u0000\u0000\u0005*·\u0000\u0001±\u0000\u0000\u0000\u0001\u0000" }+    ]+  },+  {+    "file": "Hello.java",+    "matches": [+      { "line": 1, "match": "import java.lang.*;" },+      { "line": 3, "match": "public class Hello // prints a Hello World! greeting" },+      { "line": 3, "match": "public class Hello // prints a Hello World! greeting\n{ public static void main(String[] arg)" },+      { "line": 4, "match": "{ public static void main(String[] arg)" },+      { "line": 5, "match": "  { System.out.println(\"Hello World!\");" }+    ]+  },+  {+    "file": "Hello.pdf",+    "matches": [+      { "line": 1, "match": "%PDF-1.3\n%Äåòåë§ó ÐÄÆ" },+      { "line": 3, "match": "4 0 obj" },+      { "line": 3, "match": "4 0 obj\n<< /Length 5 0 R /Filter /FlateDecode >>" },+      { "line": 4, "match": "<< /Length 5 0 R /Filter /FlateDecode >>" },+      { "line": 5, "match": "stream\nx\u0001EŽ»" },+      { "line": 7, "match": "\u00021\u0014D{¿â”Z˜½‰y˜V\u0011l\u0017.ø\u0001a-d×eÍÿƒ\u0017,¬†™9\f³1²Q\u0002¹F—â©\u0012ó™�\\LY\nŸ‰\u0007o†k÷´ŽÐ›áâj©Rj²@8þ­í” »¶pQ£DÄ£\rï iÂ\u000bº0¨z¬|²¿Oó¼\u001eÐ\u00177µ7ã\u0017Nÿ ¥" },+      { "line": 9, "match": "endstream\nendobj" },+      { "line": 11, "match": "5 0 obj" },+      { "line": 11, "match": "5 0 obj\n123" },+      { "line": 13, "match": "endobj\n2 0 obj" },+      { "line": 14, "match": "2 0 obj" },+      { "line": 15, "match": "<< /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]" },+      { "line": 17, "match": "endobj\n6 0 obj" },+      { "line": 18, "match": "6 0 obj" },+      { "line": 19, "match": "<< /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R >> /Font << /TT1 8 0 R" },+      { "line": 21, "match": "endobj\n9 0 obj" },+      { "line": 22, "match": "9 0 obj" },+      { "line": 23, "match": "<< /Length 10 0 R /N 1 /Alternate /DeviceGray /Filter /FlateDecode >>" },+      { "line": 24, "match": "stream\nx\u0001…U]h\u001cU\u0014>»sg\u0003\u0012\u0007\u001f´\r-´ƒ?m\té2‰V\u0013‹µÛMºI\u0013·ëfS›*Êtv6;Ídfœ™Ý&¡O¥à›\u0016\u0004é« >Æ‚\b¶*6/ö¥¥Å’J5\u000f" },+      { "line": 25, "match": "x\u0001…U]h\u001cU\u0014>»sg\u0003\u0012\u0007\u001f´\r-´ƒ?m\té2‰V\u0013‹µÛMºI\u0013·ëfS›*Êtv6;Ídfœ™Ý&¡O¥à›\u0016\u0004é« >Æ‚\b¶*6/ö¥¥Å’J5\u000f" },+      { "line": 26, "match": "\u0011ZŒ (}Rð;3ÛdvA2Ã�ùî¹çž{Îwî¹—¨ëoÝóì´J4ç„~¡œ›>9}JíºMiR¨›ðèFàåJ¥\tÆŽë˜üo\u001eÞ¥\u0014Kîìg[íc[öäª\u0019\u0018к†æV\u0003cŽ(¥\u0011ej†ç‡D]— \u001f<\u001bzŒo\u0003?9[)ç�×€•Ö\\@zª`:¦o\u0019jÁ×\u0017Ô’ïÖ,;éëVãlcËgÎn°¯üìFë\u000ef'Çñï…Ï\u0017Lgj\u0012x\u001fð’¡�0î\u0003¾Û´N\u0014cœN{á‘r¬ŸÎ6f§r-ùÉštª%¿PoŒ2Î\u0012¥—\u0016ë•7€Ÿ\u0000^uN\u0017�·ô×gÝq¶ÓC$õ\u0018Aþ\u0014ð³ÀZÝ\u001cã<©À\u0015ß-³>Ëê9<\u0002ü2ð%+\u001c«\u0000þôCМd9° ÅzžýÄZ\"{F?V\u0002Þ\u0006|È´\u000b¼\u0016숊\u0017–Øæ ð¼c\u0017y-Ä..›A\u0014/b\u0017?…õÊh¬/§C¿ÂsŸ&’÷Ô¬£cÀàD\u001e­û£,‡?rèÙÑÞz\u0011xÉo”9ö=Àkº?R\u0000†ÍÌcU}˜y~\u0001x€N¤t2É¥Óø\u001aäпˆ7 ‹š\u0011òÈÇX\r}›" },+      { "line": 30, "match": "Tß\fL¿iV³Äw7Ï#úëõèNNm»a4üf,£Tê&Ñ·�“4\nendstream" },+      { "line": 32, "match": "endobj\n10 0 obj" },+      { "line": 33, "match": "10 0 obj" },+      { "line": 34, "match": "1116\nendobj" },+      { "line": 36, "match": "7 0 obj" },+      { "line": 36, "match": "7 0 obj\n[ /ICCBased 9 0 R ]" },+      { "line": 37, "match": "[ /ICCBased 9 0 R ]" },+      { "line": 38, "match": "endobj\n3 0 obj" },+      { "line": 39, "match": "3 0 obj" },+      { "line": 40, "match": "<< /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 2 0 R ] >>" },+      { "line": 41, "match": "endobj\n11 0 obj" },+      { "line": 42, "match": "11 0 obj" },+      { "line": 43, "match": "<< /Type /Catalog /Pages 3 0 R >>" },+      { "line": 44, "match": "endobj\n8 0 obj" },+      { "line": 45, "match": "8 0 obj" },+      { "line": 46, "match": "<< /Type /Font /Subtype /TrueType /BaseFont /GQTMZF+Menlo-Regular /FontDescriptor" },+      { "line": 46, "match": "<< /Type /Font /Subtype /TrueType /BaseFont /GQTMZF+Menlo-Regular /FontDescriptor\n12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602" },+      { "line": 47, "match": "12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602" },+      { "line": 47, "match": "12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602\n0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602" },+      { "line": 48, "match": "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602" },+      { "line": 48, "match": "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602\n0 0 602 ] >>" },+      { "line": 49, "match": "0 0 602 ] >>" },+      { "line": 50, "match": "endobj\n12 0 obj" },+      { "line": 51, "match": "12 0 obj" },+      { "line": 52, "match": "<< /Type /FontDescriptor /FontName /GQTMZF+Menlo-Regular /Flags 33 /FontBBox" },+      { "line": 52, "match": "<< /Type /FontDescriptor /FontName /GQTMZF+Menlo-Regular /Flags 33 /FontBBox\n[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729" },+      { "line": 53, "match": "[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729" },+      { "line": 54, "match": "/StemV 99 /XHeight 547 /StemH 83 /AvgWidth 602 /MaxWidth 602 /FontFile2 13 0 R" },+      { "line": 56, "match": "endobj\n13 0 obj" },+      { "line": 57, "match": "13 0 obj" },+      { "line": 58, "match": "<< /Length 14 0 R /Length1 4064 /Filter /FlateDecode >>" },+      { "line": 59, "match": "stream\nx\u0001ÝW{xTÅ\u0015?sw6¯Í>’MHH€]Öå•,�„·R\u0016Hxˆ /ë.ˆòH (!\bA´1�JQ\tÁ@…\bH}\u0015Q©µ+E]\tÄT¤b#E„ \u0002" },+      { "line": 60, "match": "x\u0001ÝW{xTÅ\u0015?sw6¯Í>’MHH€]Öå•,�„·R\u0016Hxˆ /ë.ˆòH (!\bA´1�JQ\tÁ@…\bH}\u0015Q©µ+E]\tÄT¤b#E„ \u0002" },+      { "line": 61, "match": "ø¢hŠ\u0014!Ø\u0000CϽ\u001bý>í×ïë¿íÜ�3çüæÌyÝ»÷Δ-\\\\DVª$P`VÉŒ\u0005d6ëI\u001eŠgÝSæ6Eн—HË�½`NITŽ‘åNsæÝ7;*'Nfy@qь¨LWxìWÌ@T\u0016}x¼®¸¤Œí\u0018Íú.\u0013×¼ÒYmó‰£\f°dƽmþé8Ëîù3JŠxäf�0é¶ tQ™)’½šÇì\u0005\u000b‹ÚôE�(¦St®�\u001a–\u0005w©Y)‹î\"\u000biä �”ÄЭ¬+yÖ˜×b²–>}ö�;ì7\\¤N±æâ½eéy\u0006s(¸¤ßå•W…¬�½…Åè¤1ÁëbJT\u0007\"ýàå•×’e½iɘù¾É\bÅf½®UŠ”íë¦É¡™\"…j\tL+I\u0017.RÌ'›4‰\u0003‚pš¼Ã¤vÚĈÍä\u0013·=R\u000eõ‰Dª`ÌJ>¦\t”Ë4Þ´\u0017gjÅ’�‘\u0018“·˜:Òäu\u0013‡‰h&\"\u0002!\u0005¥pµ\u0002W\u0014.+´æâŸuø®\u0002—Zªå%…K\rzËÅ�l©FK¥~ñB\u0017y1„‹\u0001ýB\u0017|{>G~ÛŠó9ø‡Â9…orqÖ…¿×¢™ClVhŽ\\;\u0018¸¦=\u0012_�)”_ÕâL!þ¦púË\fyZáË\f|¡ðù]øLáÓ:œ:™.Oµâd:NÔâ\u0013…�\u0015Ž\u001fK‘Ç\u0015Ž¥àh->ú0E~¤ðáê\u0004ùa" },+      { "line": 61, "match": "ø¢hŠ\u0014!Ø\u0000CϽ\u001bý>í×ïë¿íÜ�3çüæÌyÝ»÷Δ-\\\\DVª$P`VÉŒ\u0005d6ëI\u001eŠgÝSæ6Eн—HË�½`NITŽ‘åNsæÝ7;*'Nfy@qь¨LWxìWÌ@T\u0016}x¼®¸¤Œí\u0018Íú.\u0013×¼ÒYmó‰£\f°dƽmþé8Ëîù3JŠxäf�0é¶ tQ™)’½šÇì\u0005\u000b‹ÚôE�(¦St®�\u001a–\u0005w©Y)‹î\"\u000biä �”ÄЭ¬+yÖ˜×b²–>}ö�;ì7\\¤N±æâ½eéy\u0006s(¸¤ßå•W…¬�½…Åè¤1ÁëbJT\u0007\"ýàå•×’e½iɘù¾É\bÅf½®UŠ”íë¦É¡™\"…j\tL+I\u0017.RÌ'›4‰\u0003‚pš¼Ã¤vÚĈÍä\u0013·=R\u000eõ‰Dª`ÌJ>¦\t”Ë4Þ´\u0017gjÅ’�‘\u0018“·˜:Òäu\u0013‡‰h&\"\u0002!\u0005¥pµ\u0002W\u0014.+´æâŸuø®\u0002—Zªå%…K\rzËÅ�l©FK¥~ñB\u0017y1„‹\u0001ýB\u0017|{>G~ÛŠó9ø‡Â9…orqÖ…¿×¢™ClVhŽ\\;\u0018¸¦=\u0012_�)”_ÕâL!þ¦púË\fyZáË\f|¡ðù]øLáÓ:œ:™.Oµâd:NÔâ\u0013…�\u0015Ž\u001fK‘Ç\u0015Ž¥àh->ú0E~¤ðáê\u0004ùa\n>¨À‘Ahb¡i\u0010\u000e+\u001cz?^\u001eRx?\u001e\u0007\u0015ÞS8På”\u00072ñ×TìWx·\u0016�«|²Qá/" },+      { "line": 66, "match": "ñä\u0013\u000eùd:žpà7ñجð8;y\\aS\"6nè)7*lè‰ÇØÿcµ¨]_'k\u0015Öó³µ¾\u000eë+õuk|rÝ4¬\u000bè�*üZa-Ëkë°Æ‡\u001a.FÍP<ÂÙ>âÂê\u0004T3P]ˆU\\´U>T9±Ráa…‡\u0014\u001e\\á”\u000f*¬pâW\nË\u0015\u001ep\u000e“\u000fLÂ/\u0015*ïŲ¥\u0015r™ÂÒ" },+      { "line": 70, "match": "‹Ë¬r±\u001d‹#‚\u0002Gõ2+Ê\u001aôEIX\u0014Ð\u0017*Ü­°@¡tþ$YZ‹ù%ÝäüI(é†y\nwåâN…¹¹(nÅœ:ÌV(R(T˜5³£œ¥0“\u001crfGÌP˜®p‡ÂíS\u0012äí6L+Ämû0•…©.LI\u0000?ÑA\u0017nUø¹Â-\u0019éò–\\LV˜¤0QaB\u0005Æ+ÜìÂ8…±Â/Ç*ÜT‡1Ýpãè4ycŒ\u001ež$G§aTAš\u001c¥0’¥‘…\u0018ÁÒˆ:\u0014¤!Ÿ�üþ\u0018>Ì)‡'axD\u000b\u0004âôaCír˜\u0013Ã\"\u001a±44`“Cí\u0018\u001a\u0011\r,\u0005†XeÀ†@DT²4Ä\u001a'‡X1$\"\u0002�Býg" },+      { "line": 71, "match": "wåâN…¹¹(nÅœ:ÌV(R(T˜5³£œ¥0“\u001crfGÌP˜®p‡ÂíS\u0012äí6L+Ämû0•…©.LI\u0000?ÑA\u0017nUø¹Â-\u0019éò–\\LV˜¤0QaB\u0005Æ+ÜìÂ8…±Â/Ç*ÜT‡1Ýpãè4ycŒ\u001ež$G§aTAš\u001c¥0’¥‘…\u0018ÁÒˆ:\u0014¤!Ÿ�üþ\u0018>Ì)‡'axD\u000b\u0004âôaCír˜\u0013Ã\"\u001a±44`“Cí\u0018\u001a\u0011\r,\u0005†XeÀ†@DT²4Ä\u001a'‡X1$\"\u0002�Býg\nƒ9„Á­¸Aáún\u0018¤0�\u000b<°\u0010\u0003z·—\u0003Æ ¿B?¿KöSè;\u0006}zµ—}Æ �‡<…\\VÌUèÍÓ½Û£W{ä0—“†žq©²g\u001düÙÉÒï‚?¢\u0019n³\u001dN™�Œl#ÜZ=«‡Of)ô`Í\u001e>t×\u0006Éî" },+      { "line": 74, "match": "p�\u001d^…Îv»ì¬àqû¥§\u0002n?:�AGöÜQ¡ƒB&×6S!ƒïJF:Ú+¤+¤)´c\u000bíF 5Å/S‡!Åå�)~¸\u001cHf½d\u0017’x}’‚“3w\u000eƒƒ=8œpDkg·Y¥Ý\u000e{´v¶Äxi³Â\u0016­]\"×.1\u001e‰\\»\u001dº5\u000eVãÙê¯'(Äs&ñ" },+      { "line": 75, "match": "q©ˆu FÁ¦-" },+      { "line": 79, "match": "endstream\nendobj" },+      { "line": 81, "match": "14 0 obj" },+      { "line": 81, "match": "14 0 obj\n2734" },+      { "line": 83, "match": "endobj\n15 0 obj" },+      { "line": 84, "match": "15 0 obj" },+      { "line": 86, "match": "endobj\n16 0 obj" },+      { "line": 87, "match": "16 0 obj" },+      { "line": 88, "match": "(Mac OS X 10.12.6 Quartz PDFContext)" },+      { "line": 89, "match": "endobj\n17 0 obj" },+      { "line": 90, "match": "17 0 obj" },+      { "line": 92, "match": "endobj\n18 0 obj" },+      { "line": 93, "match": "18 0 obj" },+      { "line": 95, "match": "endobj\n19 0 obj" },+      { "line": 96, "match": "19 0 obj" },+      { "line": 98, "match": "endobj\n20 0 obj" },+      { "line": 99, "match": "20 0 obj" },+      { "line": 101, "match": "endobj\n1 0 obj" },+      { "line": 102, "match": "1 0 obj" },+      { "line": 103, "match": "<< /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate" },+      { "line": 103, "match": "<< /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate\n18 0 R /Keywords 19 0 R /AAPL:Keywords 20 0 R >>" },+      { "line": 104, "match": "18 0 R /Keywords 19 0 R /AAPL:Keywords 20 0 R >>" },+      { "line": 105, "match": "endobj\nxref" },+      { "line": 107, "match": "0 21" },+      { "line": 108, "match": "0000000000 65535 f " },+      { "line": 108, "match": "0000000000 65535 f \n0000005392 00000 n " },+      { "line": 109, "match": "0000005392 00000 n " },+      { "line": 110, "match": "0000000238 00000 n " },+      { "line": 110, "match": "0000000238 00000 n \n0000001714 00000 n " },+      { "line": 111, "match": "0000001714 00000 n " },+      { "line": 112, "match": "0000000022 00000 n " },+      { "line": 112, "match": "0000000022 00000 n \n0000000219 00000 n " },+      { "line": 113, "match": "0000000219 00000 n " },+      { "line": 114, "match": "0000000342 00000 n " },+      { "line": 114, "match": "0000000342 00000 n \n0000001679 00000 n " },+      { "line": 115, "match": "0000001679 00000 n " },+      { "line": 116, "match": "0000001847 00000 n " },+      { "line": 116, "match": "0000001847 00000 n \n0000000439 00000 n " },+      { "line": 117, "match": "0000000439 00000 n " },+      { "line": 118, "match": "0000001658 00000 n " },+      { "line": 118, "match": "0000001658 00000 n \n0000001797 00000 n " },+      { "line": 119, "match": "0000001797 00000 n " },+      { "line": 120, "match": "0000002110 00000 n " },+      { "line": 120, "match": "0000002110 00000 n \n0000002362 00000 n " },+      { "line": 121, "match": "0000002362 00000 n " },+      { "line": 122, "match": "0000005186 00000 n " },+      { "line": 122, "match": "0000005186 00000 n \n0000005207 00000 n " },+      { "line": 123, "match": "0000005207 00000 n " },+      { "line": 124, "match": "0000005231 00000 n " },+      { "line": 124, "match": "0000005231 00000 n \n0000005284 00000 n " },+      { "line": 125, "match": "0000005284 00000 n " },+      { "line": 126, "match": "0000005311 00000 n " },+      { "line": 126, "match": "0000005311 00000 n \n0000005353 00000 n " },+      { "line": 127, "match": "0000005353 00000 n " },+      { "line": 128, "match": "0000005372 00000 n " },+      { "line": 128, "match": "0000005372 00000 n \ntrailer" },+      { "line": 130, "match": "<< /Size 21 /Root 11 0 R /Info 1 0 R /ID [ <8db88d3335070bd9583341583cf769a3>" },+      { "line": 132, "match": "startxref\n5536" }+    ]+  },+  {+    "file": "Hello.sh",+    "matches": [+      { "line": 1, "match": "#!/bin/sh\necho \"Hello World!\"" },+      { "line": 2, "match": "echo \"Hello World!\"" }+    ]+  }+]

tests/out/Hello_wnhS--json-nkb.out

new file mode 100644@@ -0,0 +1,155 @@+[+  {+    "file": "Hello.bat",+    "matches": [+      { "line": 1, "column": 8, "offset": 7, "match": "#!/bin/sh\necho \"Hello World!\"" },+      { "line": 2, "column": 7, "offset": 16, "match": "echo \"Hello World!\"" }+    ]+  },+  {+    "file": "Hello.class",+    "matches": [+      { "line": 5, "column": 27, "offset": 148, "match": "Hello.java\f\u0000\u0007\u0000\b\u0007\u0000\u0017\f\u0000\u0018\u0000\u0019\u0001\u0000\fHello World!\u0007\u0000\u001a\f\u0000\u001b\u0000\u001c\u0001\u0000\u0005Hello\u0001\u0000\u0010java/lang/Object\u0001\u0000\u0010java/lang/System\u0001\u0000\u0003out\u0001\u0000\u0015Ljava/io/PrintStream;\u0001\u0000\u0013java/io/PrintStream\u0001\u0000\u0007println\u0001\u0000\u0015(Ljava/lang/String;)V\u0000!\u0000\u0005\u0000\u0006\u0000\u0000\u0000\u0000\u0000\u0002\u0000\u0001\u0000\u0007\u0000\b\u0000\u0001\u0000\t\u0000\u0000\u0000\u001d\u0000\u0001\u0000\u0001\u0000\u0000\u0000\u0005*·\u0000\u0001±\u0000\u0000\u0000\u0001\u0000" }+    ]+  },+  {+    "file": "Hello.java",+    "matches": [+      { "line": 1, "column": 1, "offset": 0, "match": "import java.lang.*;" },+      { "line": 3, "column": 1, "offset": 21, "match": "public class Hello // prints a Hello World! greeting" },+      { "line": 3, "column": 45, "offset": 65, "match": "public class Hello // prints a Hello World! greeting\n{ public static void main(String[] arg)" },+      { "line": 4, "column": 3, "offset": 76, "match": "{ public static void main(String[] arg)" },+      { "line": 5, "column": 25, "offset": 138, "match": "  { System.out.println(\"Hello World!\");" }+    ]+  },+  {+    "file": "Hello.pdf",+    "matches": [+      { "line": 1, "column": 8, "offset": 7, "match": "%PDF-1.3\n%Äåòåë§ó ÐÄÆ" },+      { "line": 3, "column": 1, "offset": 22, "match": "4 0 obj" },+      { "line": 3, "column": 5, "offset": 26, "match": "4 0 obj\n<< /Length 5 0 R /Filter /FlateDecode >>" },+      { "line": 4, "column": 5, "offset": 34, "match": "<< /Length 5 0 R /Filter /FlateDecode >>" },+      { "line": 5, "column": 1, "offset": 71, "match": "stream\nx\u0001EŽ»" },+      { "line": 7, "column": 35, "offset": 135, "match": "\u00021\u0014D{¿â”Z˜½‰y˜V\u0011l\u0017.ø\u0001a-d×eÍÿƒ\u0017,¬†™9\f³1²Q\u0002¹F—â©\u0012ó™�\\LY\nŸ‰\u0007o†k÷´ŽÐ›áâj©Rj²@8þ­í” »¶pQ£DÄ£\rï iÂ\u000bº0¨z¬|²¿Oó¼\u001eÐ\u00177µ7ã\u0017Nÿ ¥" },+      { "line": 9, "column": 1, "offset": 202, "match": "endstream\nendobj" },+      { "line": 11, "column": 1, "offset": 219, "match": "5 0 obj" },+      { "line": 11, "column": 5, "offset": 223, "match": "5 0 obj\n123" },+      { "line": 13, "column": 1, "offset": 231, "match": "endobj\n2 0 obj" },+      { "line": 14, "column": 3, "offset": 240, "match": "2 0 obj" },+      { "line": 15, "column": 5, "offset": 250, "match": "<< /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]" },+      { "line": 17, "column": 1, "offset": 335, "match": "endobj\n6 0 obj" },+      { "line": 18, "column": 3, "offset": 344, "match": "6 0 obj" },+      { "line": 19, "column": 5, "offset": 354, "match": "<< /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R >> /Font << /TT1 8 0 R" },+      { "line": 21, "column": 1, "offset": 432, "match": "endobj\n9 0 obj" },+      { "line": 22, "column": 3, "offset": 441, "match": "9 0 obj" },+      { "line": 23, "column": 5, "offset": 451, "match": "<< /Length 10 0 R /N 1 /Alternate /DeviceGray /Filter /FlateDecode >>" },+      { "line": 24, "column": 1, "offset": 517, "match": "stream\nx\u0001…U]h\u001cU\u0014>»sg\u0003\u0012\u0007\u001f´\r-´ƒ?m\té2‰V\u0013‹µÛMºI\u0013·ëfS›*Êtv6;Ídfœ™Ý&¡O¥à›\u0016\u0004é« >Æ‚\b¶*6/ö¥¥Å’J5\u000f" },+      { "line": 25, "column": 19, "offset": 547, "match": "x\u0001…U]h\u001cU\u0014>»sg\u0003\u0012\u0007\u001f´\r-´ƒ?m\té2‰V\u0013‹µÛMºI\u0013·ëfS›*Êtv6;Ídfœ™Ý&¡O¥à›\u0016\u0004é« >Æ‚\b¶*6/ö¥¥Å’J5\u000f" },+      { "line": 26, "column": 307, "offset": 1006, "match": "\u0011ZŒ (}Rð;3ÛdvA2Ã�ùî¹çž{Îwî¹—¨ëoÝóì´J4ç„~¡œ›>9}JíºMiR¨›ðèFàåJ¥\tÆŽë˜üo\u001eÞ¥\u0014Kîìg[íc[öäª\u0019\u0018к†æV\u0003cŽ(¥\u0011ej†ç‡D]— \u001f<\u001bzŒo\u0003?9[)ç�×€•Ö\\@zª`:¦o\u0019jÁ×\u0017Ô’ïÖ,;éëVãlcËgÎn°¯üìFë\u000ef'Çñï…Ï\u0017Lgj\u0012x\u001fð’¡�0î\u0003¾Û´N\u0014cœN{á‘r¬ŸÎ6f§r-ùÉštª%¿PoŒ2Î\u0012¥—\u0016ë•7€Ÿ\u0000^uN\u0017�·ô×gÝq¶ÓC$õ\u0018Aþ\u0014ð³ÀZÝ\u001cã<©À\u0015ß-³>Ëê9<\u0002ü2ð%+\u001c«\u0000þôCМd9° ÅzžýÄZ\"{F?V\u0002Þ\u0006|È´\u000b¼\u0016숊\u0017–Øæ ð¼c\u0017y-Ä..›A\u0014/b\u0017?…õÊh¬/§C¿ÂsŸ&’÷Ô¬£cÀàD\u001e­û£,‡?rèÙÑÞz\u0011xÉo”9ö=Àkº?R\u0000†ÍÌcU}˜y~\u0001x€N¤t2É¥Óø\u001aäпˆ7 ‹š\u0011òÈÇX\r}›" },+      { "line": 30, "column": 29, "offset": 1639, "match": "Tß\fL¿iV³Äw7Ï#úëõèNNm»a4üf,£Tê&Ñ·�“4\nendstream" },+      { "line": 32, "column": 1, "offset": 1651, "match": "endobj\n10 0 obj" },+      { "line": 33, "column": 4, "offset": 1661, "match": "10 0 obj" },+      { "line": 34, "column": 1, "offset": 1667, "match": "1116\nendobj" },+      { "line": 36, "column": 1, "offset": 1679, "match": "7 0 obj" },+      { "line": 36, "column": 5, "offset": 1683, "match": "7 0 obj\n[ /ICCBased 9 0 R ]" },+      { "line": 37, "column": 4, "offset": 1690, "match": "[ /ICCBased 9 0 R ]" },+      { "line": 38, "column": 1, "offset": 1707, "match": "endobj\n3 0 obj" },+      { "line": 39, "column": 3, "offset": 1716, "match": "3 0 obj" },+      { "line": 40, "column": 5, "offset": 1726, "match": "<< /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 2 0 R ] >>" },+      { "line": 41, "column": 1, "offset": 1790, "match": "endobj\n11 0 obj" },+      { "line": 42, "column": 4, "offset": 1800, "match": "11 0 obj" },+      { "line": 43, "column": 5, "offset": 1810, "match": "<< /Type /Catalog /Pages 3 0 R >>" },+      { "line": 44, "column": 1, "offset": 1840, "match": "endobj\n8 0 obj" },+      { "line": 45, "column": 3, "offset": 1849, "match": "8 0 obj" },+      { "line": 46, "column": 5, "offset": 1859, "match": "<< /Type /Font /Subtype /TrueType /BaseFont /GQTMZF+Menlo-Regular /FontDescriptor" },+      { "line": 46, "column": 68, "offset": 1922, "match": "<< /Type /Font /Subtype /TrueType /BaseFont /GQTMZF+Menlo-Regular /FontDescriptor\n12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602" },+      { "line": 47, "column": 4, "offset": 1940, "match": "12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602" },+      { "line": 47, "column": 74, "offset": 2010, "match": "12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602\n0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602" },+      { "line": 48, "column": 3, "offset": 2016, "match": "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602" },+      { "line": 48, "column": 73, "offset": 2086, "match": "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602\n0 0 602 ] >>" },+      { "line": 49, "column": 3, "offset": 2092, "match": "0 0 602 ] >>" },+      { "line": 50, "column": 1, "offset": 2103, "match": "endobj\n12 0 obj" },+      { "line": 51, "column": 4, "offset": 2113, "match": "12 0 obj" },+      { "line": 52, "column": 5, "offset": 2123, "match": "<< /Type /FontDescriptor /FontName /GQTMZF+Menlo-Regular /Flags 33 /FontBBox" },+      { "line": 52, "column": 69, "offset": 2187, "match": "<< /Type /FontDescriptor /FontName /GQTMZF+Menlo-Regular /Flags 33 /FontBBox\n[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729" },+      { "line": 53, "column": 8, "offset": 2203, "match": "[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729" },+      { "line": 54, "column": 2, "offset": 2274, "match": "/StemV 99 /XHeight 547 /StemH 83 /AvgWidth 602 /MaxWidth 602 /FontFile2 13 0 R" },+      { "line": 56, "column": 1, "offset": 2355, "match": "endobj\n13 0 obj" },+      { "line": 57, "column": 4, "offset": 2365, "match": "13 0 obj" },+      { "line": 58, "column": 5, "offset": 2375, "match": "<< /Length 14 0 R /Length1 4064 /Filter /FlateDecode >>" },+      { "line": 59, "column": 1, "offset": 2427, "match": "stream\nx\u0001ÝW{xTÅ\u0015?sw6¯Í>’MHH€]Öå•,�„·R\u0016Hxˆ /ë.ˆòH (!\bA´1�JQ\tÁ@…\bH}\u0015Q©µ+E]\tÄT¤b#E„ \u0002" },+      { "line": 60, "column": 33, "offset": 2475, "match": "x\u0001ÝW{xTÅ\u0015?sw6¯Í>’MHH€]Öå•,�„·R\u0016Hxˆ /ë.ˆòH (!\bA´1�JQ\tÁ@…\bH}\u0015Q©µ+E]\tÄT¤b#E„ \u0002" },+      { "line": 61, "column": 187, "offset": 2776, "match": "ø¢hŠ\u0014!Ø\u0000CϽ\u001bý>í×ïë¿íÜ�3çüæÌyÝ»÷Δ-\\\\DVª$P`VÉŒ\u0005d6ëI\u001eŠgÝSæ6Eн—HË�½`NITŽ‘åNsæÝ7;*'Nfy@qь¨LWxìWÌ@T\u0016}x¼®¸¤Œí\u0018Íú.\u0013×¼ÒYmó‰£\f°dƽmþé8Ëîù3JŠxäf�0é¶ tQ™)’½šÇì\u0005\u000b‹ÚôE�(¦St®�\u001a–\u0005w©Y)‹î\"\u000biä �”ÄЭ¬+yÖ˜×b²–>}ö�;ì7\\¤N±æâ½eéy\u0006s(¸¤ßå•W…¬�½…Åè¤1ÁëbJT\u0007\"ýàå•×’e½iɘù¾É\bÅf½®UŠ”íë¦É¡™\"…j\tL+I\u0017.RÌ'›4‰\u0003‚pš¼Ã¤vÚĈÍä\u0013·=R\u000eõ‰Dª`ÌJ>¦\t”Ë4Þ´\u0017gjÅ’�‘\u0018“·˜:Òäu\u0013‡‰h&\"\u0002!\u0005¥pµ\u0002W\u0014.+´æâŸuø®\u0002—Zªå%…K\rzËÅ�l©FK¥~ñB\u0017y1„‹\u0001ýB\u0017|{>G~ÛŠó9ø‡Â9…orqÖ…¿×¢™ClVhŽ\\;\u0018¸¦=\u0012_�)”_ÕâL!þ¦púË\fyZáË\f|¡ðù]øLáÓ:œ:™.Oµâd:NÔâ\u0013…�\u0015Ž\u001fK‘Ç\u0015Ž¥àh->ú0E~¤ðáê\u0004ùa" },+      { "line": 61, "column": 356, "offset": 2996, "match": "ø¢hŠ\u0014!Ø\u0000CϽ\u001bý>í×ïë¿íÜ�3çüæÌyÝ»÷Δ-\\\\DVª$P`VÉŒ\u0005d6ëI\u001eŠgÝSæ6Eн—HË�½`NITŽ‘åNsæÝ7;*'Nfy@qь¨LWxìWÌ@T\u0016}x¼®¸¤Œí\u0018Íú.\u0013×¼ÒYmó‰£\f°dƽmþé8Ëîù3JŠxäf�0é¶ tQ™)’½šÇì\u0005\u000b‹ÚôE�(¦St®�\u001a–\u0005w©Y)‹î\"\u000biä �”ÄЭ¬+yÖ˜×b²–>}ö�;ì7\\¤N±æâ½eéy\u0006s(¸¤ßå•W…¬�½…Åè¤1ÁëbJT\u0007\"ýàå•×’e½iɘù¾É\bÅf½®UŠ”íë¦É¡™\"…j\tL+I\u0017.RÌ'›4‰\u0003‚pš¼Ã¤vÚĈÍä\u0013·=R\u000eõ‰Dª`ÌJ>¦\t”Ë4Þ´\u0017gjÅ’�‘\u0018“·˜:Òäu\u0013‡‰h&\"\u0002!\u0005¥pµ\u0002W\u0014.+´æâŸuø®\u0002—Zªå%…K\rzËÅ�l©FK¥~ñB\u0017y1„‹\u0001ýB\u0017|{>G~ÛŠó9ø‡Â9…orqÖ…¿×¢™ClVhŽ\\;\u0018¸¦=\u0012_�)”_ÕâL!þ¦púË\fyZáË\f|¡ðù]øLáÓ:œ:™.Oµâd:NÔâ\u0013…�\u0015Ž\u001fK‘Ç\u0015Ž¥àh->ú0E~¤ðáê\u0004ùa\n>¨À‘Ahb¡i\u0010\u000e+\u001cz?^\u001eRx?\u001e\u0007\u0015ÞS8På”\u00072ñ×TìWx·\u0016�«|²Qá/" },+      { "line": 66, "column": 95, "offset": 3301, "match": "ñä\u0013\u000eùd:žpà7ñجð8;y\\aS\"6nè)7*lè‰ÇØÿcµ¨]_'k\u0015Öó³µ¾\u000eë+õuk|rÝ4¬\u000bè�*üZa-Ëkë°Æ‡\u001a.FÍP<ÂÙ>âÂê\u0004T3P]ˆU\\´U>T9±Ráa…‡\u0014\u001e\\á”\u000f*¬pâW\nË\u0015\u001ep\u000e“\u000fLÂ/\u0015*ïŲ¥\u0015r™ÂÒ" },+      { "line": 70, "column": 35, "offset": 3383, "match": "‹Ë¬r±\u001d‹#‚\u0002Gõ2+Ê\u001aôEIX\u0014Ð\u0017*Ü­°@¡tþ$YZ‹ù%ÝäüI(é†y\nwåâN…¹¹(nÅœ:ÌV(R(T˜5³£œ¥0“\u001crfGÌP˜®p‡ÂíS\u0012äí6L+Ämû0•…©.LI\u0000?ÑA\u0017nUø¹Â-\u0019éò–\\LV˜¤0QaB\u0005Æ+ÜìÂ8…±Â/Ç*ÜT‡1Ýpãè4ycŒ\u001ež$G§aTAš\u001c¥0’¥‘…\u0018ÁÒˆ:\u0014¤!Ÿ�üþ\u0018>Ì)‡'axD\u000b\u0004âôaCír˜\u0013Ã\"\u001a±44`“Cí\u0018\u001a\u0011\r,\u0005†XeÀ†@DT²4Ä\u001a'‡X1$\"\u0002�Býg" },+      { "line": 71, "column": 146, "offset": 3575, "match": "wåâN…¹¹(nÅœ:ÌV(R(T˜5³£œ¥0“\u001crfGÌP˜®p‡ÂíS\u0012äí6L+Ämû0•…©.LI\u0000?ÑA\u0017nUø¹Â-\u0019éò–\\LV˜¤0QaB\u0005Æ+ÜìÂ8…±Â/Ç*ÜT‡1Ýpãè4ycŒ\u001ež$G§aTAš\u001c¥0’¥‘…\u0018ÁÒˆ:\u0014¤!Ÿ�üþ\u0018>Ì)‡'axD\u000b\u0004âôaCír˜\u0013Ã\"\u001a±44`“Cí\u0018\u001a\u0011\r,\u0005†XeÀ†@DT²4Ä\u001a'‡X1$\"\u0002�Býg\nƒ9„Á­¸Aáún\u0018¤0�\u000b<°\u0010\u0003z·—\u0003Æ ¿B?¿KöSè;\u0006}zµ—}Æ �‡<…\\VÌUèÍÓ½Û£W{ä0—“†žq©²g\u001düÙÉÒï‚?¢\u0019n³\u001dN™�Œl#ÜZ=«‡Of)ô`Í\u001e>t×\u0006Éî" },+      { "line": 74, "column": 36, "offset": 3743, "match": "p�\u001d^…Îv»ì¬àqû¥§\u0002n?:�AGöÜQ¡ƒB&×6S!ƒïJF:Ú+¤+¤)´c\u000bíF 5Å/S‡!Åå�)~¸\u001cHf½d\u0017’x}’‚“3w\u000eƒƒ=8œpDkg·Y¥Ý\u000e{´v¶Äxi³Â\u0016­]\"×.1\u001e‰\\»\u001dº5\u000eVãÙê¯'(Äs&ñ" },+      { "line": 75, "column": 2, "offset": 3825, "match": "q©ˆu FÁ¦-" },+      { "line": 79, "column": 1, "offset": 5169, "match": "endstream\nendobj" },+      { "line": 81, "column": 1, "offset": 5186, "match": "14 0 obj" },+      { "line": 81, "column": 6, "offset": 5191, "match": "14 0 obj\n2734" },+      { "line": 83, "column": 1, "offset": 5200, "match": "endobj\n15 0 obj" },+      { "line": 84, "column": 4, "offset": 5210, "match": "15 0 obj" },+      { "line": 86, "column": 1, "offset": 5224, "match": "endobj\n16 0 obj" },+      { "line": 87, "column": 4, "offset": 5234, "match": "16 0 obj" },+      { "line": 88, "column": 2, "offset": 5241, "match": "(Mac OS X 10.12.6 Quartz PDFContext)" },+      { "line": 89, "column": 1, "offset": 5277, "match": "endobj\n17 0 obj" },+      { "line": 90, "column": 4, "offset": 5287, "match": "17 0 obj" },+      { "line": 92, "column": 1, "offset": 5304, "match": "endobj\n18 0 obj" },+      { "line": 93, "column": 4, "offset": 5314, "match": "18 0 obj" },+      { "line": 95, "column": 1, "offset": 5346, "match": "endobj\n19 0 obj" },+      { "line": 96, "column": 4, "offset": 5356, "match": "19 0 obj" },+      { "line": 98, "column": 1, "offset": 5365, "match": "endobj\n20 0 obj" },+      { "line": 99, "column": 4, "offset": 5375, "match": "20 0 obj" },+      { "line": 101, "column": 1, "offset": 5385, "match": "endobj\n1 0 obj" },+      { "line": 102, "column": 3, "offset": 5394, "match": "1 0 obj" },+      { "line": 103, "column": 5, "offset": 5404, "match": "<< /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate" },+      { "line": 103, "column": 73, "offset": 5472, "match": "<< /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate\n18 0 R /Keywords 19 0 R /AAPL:Keywords 20 0 R >>" },+      { "line": 104, "column": 4, "offset": 5483, "match": "18 0 R /Keywords 19 0 R /AAPL:Keywords 20 0 R >>" },+      { "line": 105, "column": 1, "offset": 5529, "match": "endobj\nxref" },+      { "line": 107, "column": 1, "offset": 5541, "match": "0 21" },+      { "line": 108, "column": 1, "offset": 5546, "match": "0000000000 65535 f " },+      { "line": 108, "column": 18, "offset": 5563, "match": "0000000000 65535 f \n0000005392 00000 n " },+      { "line": 109, "column": 12, "offset": 5577, "match": "0000005392 00000 n " },+      { "line": 110, "column": 1, "offset": 5586, "match": "0000000238 00000 n " },+      { "line": 110, "column": 18, "offset": 5603, "match": "0000000238 00000 n \n0000001714 00000 n " },+      { "line": 111, "column": 12, "offset": 5617, "match": "0000001714 00000 n " },+      { "line": 112, "column": 1, "offset": 5626, "match": "0000000022 00000 n " },+      { "line": 112, "column": 18, "offset": 5643, "match": "0000000022 00000 n \n0000000219 00000 n " },+      { "line": 113, "column": 12, "offset": 5657, "match": "0000000219 00000 n " },+      { "line": 114, "column": 1, "offset": 5666, "match": "0000000342 00000 n " },+      { "line": 114, "column": 18, "offset": 5683, "match": "0000000342 00000 n \n0000001679 00000 n " },+      { "line": 115, "column": 12, "offset": 5697, "match": "0000001679 00000 n " },+      { "line": 116, "column": 1, "offset": 5706, "match": "0000001847 00000 n " },+      { "line": 116, "column": 18, "offset": 5723, "match": "0000001847 00000 n \n0000000439 00000 n " },+      { "line": 117, "column": 12, "offset": 5737, "match": "0000000439 00000 n " },+      { "line": 118, "column": 1, "offset": 5746, "match": "0000001658 00000 n " },+      { "line": 118, "column": 18, "offset": 5763, "match": "0000001658 00000 n \n0000001797 00000 n " },+      { "line": 119, "column": 12, "offset": 5777, "match": "0000001797 00000 n " },+      { "line": 120, "column": 1, "offset": 5786, "match": "0000002110 00000 n " },+      { "line": 120, "column": 18, "offset": 5803, "match": "0000002110 00000 n \n0000002362 00000 n " },+      { "line": 121, "column": 12, "offset": 5817, "match": "0000002362 00000 n " },+      { "line": 122, "column": 1, "offset": 5826, "match": "0000005186 00000 n " },+      { "line": 122, "column": 18, "offset": 5843, "match": "0000005186 00000 n \n0000005207 00000 n " },+      { "line": 123, "column": 12, "offset": 5857, "match": "0000005207 00000 n " },+      { "line": 124, "column": 1, "offset": 5866, "match": "0000005231 00000 n " },+      { "line": 124, "column": 18, "offset": 5883, "match": "0000005231 00000 n \n0000005284 00000 n " },+      { "line": 125, "column": 12, "offset": 5897, "match": "0000005284 00000 n " },+      { "line": 126, "column": 1, "offset": 5906, "match": "0000005311 00000 n " },+      { "line": 126, "column": 18, "offset": 5923, "match": "0000005311 00000 n \n0000005353 00000 n " },+      { "line": 127, "column": 12, "offset": 5937, "match": "0000005353 00000 n " },+      { "line": 128, "column": 1, "offset": 5946, "match": "0000005372 00000 n " },+      { "line": 128, "column": 18, "offset": 5963, "match": "0000005372 00000 n \ntrailer" },+      { "line": 130, "column": 5, "offset": 5978, "match": "<< /Size 21 /Root 11 0 R /Info 1 0 R /ID [ <8db88d3335070bd9583341583cf769a3>" },+      { "line": 132, "column": 1, "offset": 6092, "match": "startxref\n5536" }+    ]+  },+  {+    "file": "Hello.sh",+    "matches": [+      { "line": 1, "column": 8, "offset": 7, "match": "#!/bin/sh\necho \"Hello World!\"" },+      { "line": 2, "column": 7, "offset": 16, "match": "echo \"Hello World!\"" }+    ]+  }+]

tests/out/Hello_wnhS--json-nv.out

new file mode 100644@@ -0,0 +1,61 @@+[+  {+    "file": "Hello.class",+    "matches": [+      { "line": 1, "match": "Êþº¾\u0000\u0000\u00004\u0000\u001d" },+      { "line": 2, "match": "\u0000\u0006\u0000\u000f\t\u0000\u0010\u0000\u0011\b\u0000\u0012" },+      { "line": 3, "match": "\u0000\u0013\u0000\u0014\u0007\u0000\u0015\u0007\u0000\u0016\u0001\u0000\u0006<init>\u0001\u0000\u0003()V\u0001\u0000\u0004Code\u0001\u0000\u000fLineNumberTable\u0001\u0000\u0004main\u0001\u0000\u0016([Ljava/lang/String;)V\u0001\u0000" },+      { "line": 4, "match": "SourceFile\u0001\u0000" },+      { "line": 6, "match": "\u0000\u0000\u0000\u0006\u0000\u0001\u0000\u0000\u0000\u0003\u0000\t\u0000\u000b\u0000\f\u0000\u0001\u0000\t\u0000\u0000\u0000%\u0000\u0002\u0000\u0001\u0000\u0000\u0000\t²\u0000\u0002\u0012\u0003¶\u0000\u0004±\u0000\u0000\u0000\u0001\u0000" },+      { "line": 7, "match": "\u0000\u0000\u0000" },+      { "line": 8, "match": "\u0000\u0002\u0000\u0000\u0000\u0005\u0000\b\u0000\u0006\u0000\u0001\u0000\r\u0000\u0000\u0000\u0002\u0000\u000e" }+    ]+  },+  {+    "file": "Hello.java",+    "matches": [+      { "line": 2, "match": "" },+      { "line": 6, "match": "  }" },+      { "line": 7, "match": "}" }+    ]+  },+  {+    "file": "Hello.pdf",+    "matches": [+      { "line": 16, "match": ">>" },+      { "line": 20, "match": ">> >>" },+      { "line": 27, "match": "ÐpÐ|ô\fh\u0015€tZ\u0000*%´LôX'ž£R\u0015=•f¢YA„ØÊý¨oP~×§Ô€´Në�Ö�^£_\"É<ýJsèç!m`l¦Ãn\u001e^8´\b\u000fØ\u0013¶ù eÓ\u0015Û…&žG;(&Ä+bP\f‘*^\u0015‡Å!1\fé�8\u0018͉½OúÎ~>ذô.ÖMú¾\f\u000eB¬gÃ3\u0007¬p4\u0001<ø\u0007ëÎFš\t¶.îhìó¼�Þ?ï¿c\u0019·>ø³�½\u0000ú1'¿Á¢\u000bk&%æ^?÷MOÂCuE|õÖ�îëçèx2KQÞª�Y’×äûò" },+      { "line": 28, "match": "¾÷äÕ¤\rùgy\u0015ï½¶\\=Ê\u000bÿ“¹Í!F;’ÍAÎ<›Q´qÆ\u001bÀ!¸©Esö·YL²é¶b´`ÉB”�«¸ÿË\tóÃ<·±Rs.îð¼·?c6Í÷Š\u000f‹t¾O»¬­kŸh?jh+ÚÇ@¿K\u001fJ_JßJW¤«Ò\rR¥kÒ²ô�ô½ô¹ô5z_@º,]éØIqì\u001b»\u0007~Æ{Öhí0f†³\u0014\u0010óÂÚÌ" },+      { "line": 29, "match": "K\u001fñw\u0006c›ù3¡Õ^\u0003�»c-刲SyF\u0019Vv+Ï)\u0013J¯r@9¬lW\u0006Ðú•Qe/Fvn°dc=΀…’g‹¦#®â<±Wu°çÃK\u001dï¦_\\ÃÖ†5ØI=\u000ežÙÚ¦\u000e¯\u0011W¿\u0015Uc¼;]œ\u0006:M!b‹Î\"r\u001f:œ\u001f'ªþÎÙ\\“85Roâ”°Ä.Ñ/ÆZ5˜\u0013\u0007P…ãmõ8ÈUš\u0019É\fgr¤fz3C™þÌ1ÆQ¬Ñù’Ù‹Ñ!|G\u0012Þ3Ë1ÿ›5Äg\u0018ï\u001dæ¨\tl£‡[+4çqß\u0011å]oÁ·fê¡: i/©9\\¯¦:æ\u0018Ù>U·m5\u001a" },+      { "line": 55, "match": ">>" },+      { "line": 63, "match": "ïT`ŸÂÛ" },+      { "line": 64, "match": "VØ»)Q¾¥°GáM…?)4°½\u0006\u0017Þ°¢~w�¬WؽkšÜ]‡Ý•ú®:ŸÜ5\r»\u0002z�\u000f;\u0015^¯E¤f¨|MáU\u001e^mÅ+lk‡Â\u001f\u000b±½\u0010/Û\u0010NÂ\u001f\u0014^R�«ø½Â‹" },+      { "line": 65, "match": "¿KÂ6…\u0017ž·É\u0017rñ¼\rÏmuÊçºa«\u0013ÏnñËg+°Å�ß*<£ð´ÂSO¦Ë§" },+      { "line": 68, "match": "TtÄý" },+      { "line": 69, "match": "å6üBa‰Â=" },+      { "line": 73, "match": "Ý\u0014º*t±Ã—:Lú" },+      { "line": 76, "match": "Ò\u0005prh…Æ€6\b‚\u0003\u0010~�\u0003\"\"" },+      { "line": 77, "match": "W¬\u0016Yÿ?�þÇSáOg„\u001a;M¬åÑØGDè!m\u0019¥¿¿\"´‡u4S/\"\u001aÅJ±“ù­¼·h¤åt^ÄãmÑŸ¹z^\u001bÔ=ŒÖÐfsu\rNÓbì¢Cô\u000e\u001dcî´\u0018\b^+\u000e‘Gœ`?+ð¡¡ž¥=LËQ� è$Jh‹x‰-–SD”Ò2�Gm\"[Þ¯\u001fdt?=Ä×£´…J™72XÎñL;h\u0015] \rÚ\u0019šÂüNÚËñ(þüš¹ˆ&jaKÛ´ÁÚlÖÛËÖ6Ñ&±œšh‘Nü)WtJ6iYlu\u0007g@4“6Ë&¹Á¨\u0007�Mò\u001cÏ\u0010u°D,®\u0018/gaÔn«Ø%zkãè\u0010¯/§É¸\rwã˜X¡{õ%8C5\u001aa:ÝI\u0007d“ÅE51^ª±Ì\u0016÷éÓÍ«œ­•kKôéb\u001b�a›3ñ\u001dË\u001eŽl³™1Ñ\u000em¢\u001c'Çqγ\u0019ÛlÒš(µ8h?Z¹îk5%Fé#0„ó)×o¢\rô\fÛíÊ•!*E_ö^Jåruô¢m|ùåjÔrEÍjˆ<m0mÖf‹U\u001cm\u000bW³\u0014ùÔŸ}t�gi…ØÁqSL\u0005-’M¼U$êAôZŒEêü÷¦l·#¬ùF\u0017†\u0003\u0013‚î}!�?û'¢Û\u0011ã\u000eÓøpâ}îȵkãƒz†\f…ef\u0018¾Ø°îóžúO“§üÙcÆ\u0007Ý\u0011Ñ® ¿ÍlÁô|\u0006'\u0005Ù\u0003ÿ\f˜Ý\u00150\u0016\u0005F‡¥�£§‡Ý³ŠÝUŽ*ï *GÑ ?ïÿ²Ç0\u0019\u001f|YˆGB\u0011qmE„ò;¼Î»HÜq;OÇe»Ý\u0005sóÃb:\u000bñÙ\fôð0—�í\u001eÁaŽ˜\u0018ô†ÜUîªÑ…Uî\u0011îâ\u0019…\u001c·9òDQU(‡3˜\u0014œËtrÐ\u0013\u000e„2~`‹B!ûհÃKX½*Ä\u0016îl³À£\tå\\e¥Äì1î0ºŒ\u000fN\b†+ó3Â�üP†Çã.\b7Œ\u000f†\u001bò3<¡\u0010kÙ~ˆ”#®˜›Ö\u0016³�c¶õàyGÔ" },+      { "line": 78, "match": "—(�\u0011¦PU•asRÐë\tWVUeTq\u001emr„\u001a~\u0002\bú)\u0010h\u0003\"dØàJ\u0014ð÷`<\u001bãÁëÉ0\u0000¯Çëá8CùìÛiÜš\u0002ŽÔ\u0013òónœŠ¹¯ä^ÎýœÁó³\u0018Ýçóù‚Ï\u0000SX\u001eEÝþm¿ÎðÙ´\u001féÁ”t“vágw;�\u0014™ü¯/Vµz±Ü§ª\u0018ê´ËÜó\u0013Y„ëU\u0011+—k:å¼u¸¹79\u000e7\u001fnî•ìô8}\u001e§§X§+‹�qå\u000bU\u001bcûîüBKwì0rÐGñ¿ �n6N\u0015|osøÖq·:øXô\u001ewæÅqÆX–<êÜc\u0018\u0017,ǽÇo\u000bCAçná\u001eŸ³“£Š¥„¬^½“óØužÓËÔ»²QëÞØxõƒFÙtõ-í†Ö,훫Nö¯QùµÏø­QN)”IyF\u0004;\u0019t°�\biì!“=eæð;ÏB‰\fî¤dJ7G£\u000e†\u0017‘âI±¤æåöëŸb\u0013^79\u001d”—›\u0014ÓSx;[bôéW>‹}ã¥`CÉÜ=SÕeuT¸Ï\u001d¹\u0014¶®}xÅ‹±Zõ\u0014Ë\u0017û\u0006\f|-+K\f\u0014ÉÂ*\u0002ê“ÇÊ^\bÏ7êrŽë2ÅÒž½v�F•ȷ؈ʨCÜqŽHçSž\u0011Q\"ÅG#q¥^/R¼�»ôuzúz´\u0003SC\u001fœyö\u0015õ‘8!Öß¿ôñCoââ\u001a£æ\u001a­äœGqÎ\tÔŽ¼�dKu\u0012U[ë“6¦Å%Ùó‘”ò³4Ç…æ+Æ-üüB³ãl/ÑÙ’â2rìÛ§K×Ü$§CóvÖœŽ$­¸zÍšêÕkÖ¬>s©å«3--8qôHÓ±cMGŽnVï«OÕ)uHøù³ÓQô4üšíÚRó95N§?n’Å,~~o¦‰Ì\t>:Fu,Æ\u000brä„Éc§ŒÈ\u001a[4^©bÑœÅóf,$ú\u0017 -\u0006ä" },+      { "line": 85, "match": "(Hello)" },+      { "line": 91, "match": "(TextEdit)" },+      { "line": 94, "match": "(D:20200124010711Z00'00')" },+      { "line": 97, "match": "()" },+      { "line": 100, "match": "[ ]" },+      { "line": 131, "match": "<8db88d3335070bd9583341583cf769a3> ] >>" },+      { "line": 134, "match": "%%EOF" }+    ]+  },+  {+    "file": "Hello.txt",+    "matches": [+      { "line": 1, "match": "Hello" }+    ]+  },+  {+    "file": "emptyline.txt",+    "matches": [+      { "line": 1, "match": "" }+    ]+  }+]

tests/out/Hello_wnhS--json-o.out

new file mode 100644@@ -0,0 +1,244 @@+[+  {+    "file": "Hello.bat",+    "matches": [+      { "match": "sh\necho" },+      { "match": "Hello World!\"" }+    ]+  },+  {+    "file": "Hello.class",+    "matches": [+      { "match": "Hello World!\u0007\u0000\u001a" }+    ]+  },+  {+    "file": "Hello.java",+    "matches": [+      { "match": "import java.lang.*;" },+      { "match": "public class" },+      { "match": "Hello //" },+      { "match": "prints a" },+      { "match": "Hello World!" },+      { "match": "greeting\n{" },+      { "match": "public static" },+      { "match": "void main(String[]" },+      { "match": "Hello World!\");" }+    ]+  },+  {+    "file": "Hello.pdf",+    "matches": [+      { "match": "3\n%Äåòåë§ó ÐÄÆ" },+      { "match": "4 0" },+      { "match": "obj\n<<" },+      { "match": "Length 5" },+      { "match": "0 R" },+      { "match": "Filter /FlateDecode" },+      { "match": "stream\nx\u0001EŽ»" },+      { "match": "LY\nŸ‰\u0007o†k÷´ŽÐ›áâj©Rj²@8þ­í”" },+      { "match": "endstream\nendobj" },+      { "match": "5 0" },+      { "match": "obj\n123" },+      { "match": "endobj\n2" },+      { "match": "0 obj" },+      { "match": "Type /Page" },+      { "match": "Parent 3" },+      { "match": "0 R" },+      { "match": "Resources 6" },+      { "match": "0 R" },+      { "match": "Contents 4" },+      { "match": "0 R" },+      { "match": "MediaBox [0" },+      { "match": "0 612" },+      { "match": "endobj\n6" },+      { "match": "0 obj" },+      { "match": "ProcSet [" },+      { "match": "PDF /Text" },+      { "match": "ColorSpace <<" },+      { "match": "Cs1 7" },+      { "match": "0 R" },+      { "match": "Font <<" },+      { "match": "TT1 8" },+      { "match": "0 R" },+      { "match": "endobj\n9" },+      { "match": "0 obj" },+      { "match": "Length 10" },+      { "match": "0 R" },+      { "match": "N 1" },+      { "match": "Alternate /DeviceGray" },+      { "match": "Filter /FlateDecode" },+      { "match": "stream\nx\u0001…U]h\u001cU\u0014>»sg\u0003\u0012\u0007\u001f´" },+      { "match": "m\té2‰V\u0013‹µÛMºI\u0013·ëfS›*Êtv6;Ídfœ™Ý&¡O¥à›\u0016\u0004é« >Æ‚\b¶*6/ö¥¥Å’J5\u000f" },+      { "match": "7 ‹š\u0011òÈÇX" },+      { "match": "4\nendstream" },+      { "match": "endobj\n10" },+      { "match": "0 obj" },+      { "match": "1116\nendobj" },+      { "match": "7 0" },+      { "match": "obj\n[" },+      { "match": "ICCBased 9" },+      { "match": "0 R" },+      { "match": "endobj\n3" },+      { "match": "0 obj" },+      { "match": "Type /Pages" },+      { "match": "MediaBox [0" },+      { "match": "0 612" },+      { "match": "Count 1" },+      { "match": "Kids [" },+      { "match": "2 0" },+      { "match": "R ]" },+      { "match": "endobj\n11" },+      { "match": "0 obj" },+      { "match": "Type /Catalog" },+      { "match": "Pages 3" },+      { "match": "0 R" },+      { "match": "endobj\n8" },+      { "match": "0 obj" },+      { "match": "Type /Font" },+      { "match": "Subtype /TrueType" },+      { "match": "BaseFont /GQTMZF+Menlo-Regular" },+      { "match": "FontDescriptor\n12" },+      { "match": "0 R" },+      { "match": "Encoding /MacRomanEncoding" },+      { "match": "FirstChar 72" },+      { "match": "LastChar 111" },+      { "match": "Widths [" },+      { "match": "602\n0" },+      { "match": "0 0" },+      { "match": "0 0" },+      { "match": "0 0" },+      { "match": "0 0" },+      { "match": "0 0" },+      { "match": "0 0" },+      { "match": "0 0" },+      { "match": "0 0" },+      { "match": "0 0" },+      { "match": "0 0" },+      { "match": "0 0" },+      { "match": "0 0" },+      { "match": "0 0" },+      { "match": "0 602" },+      { "match": "0 0" },+      { "match": "0 0" },+      { "match": "0 0" },+      { "match": "602\n0" },+      { "match": "0 602" },+      { "match": "endobj\n12" },+      { "match": "0 obj" },+      { "match": "Type /FontDescriptor" },+      { "match": "FontName /GQTMZF+Menlo-Regular" },+      { "match": "Flags 33" },+      { "match": "FontBBox\n[-558" },+      { "match": "375 718" },+      { "match": "ItalicAngle 0" },+      { "match": "Ascent 928" },+      { "match": "Descent -236" },+      { "match": "CapHeight 729" },+      { "match": "StemV 99" },+      { "match": "XHeight 547" },+      { "match": "StemH 83" },+      { "match": "AvgWidth 602" },+      { "match": "MaxWidth 602" },+      { "match": "FontFile2 13" },+      { "match": "0 R" },+      { "match": "endobj\n13" },+      { "match": "0 obj" },+      { "match": "Length 14" },+      { "match": "0 R" },+      { "match": "Length1 4064" },+      { "match": "Filter /FlateDecode" },+      { "match": "stream\nx\u0001ÝW{xTÅ\u0015?sw6¯Í>’MHH€]Öå•,�„·R\u0016Hxˆ" },+      { "match": "H (!\bA´1�JQ" },+      { "match": "j\tL+I\u0017.RÌ'›4‰\u0003‚pš¼Ã¤vÚĈÍä\u0013·=R\u000eõ‰Dª`ÌJ>¦" },+      { "match": "a\n>¨À‘Ahb¡i\u0010\u000e+\u001cz?^\u001eRx?\u001e\u0007\u0015ÞS8På”\u00072ñ×TìWx·\u0016�«|²Qá/" },+      { "match": "W\nË\u0015\u001ep\u000e“\u000fLÂ/\u0015*ïŲ¥\u0015r™ÂÒ" },+      { "match": "y\nwåâN…¹¹(nÅœ:ÌV(R(T˜5³£œ¥0“\u001crfGÌP˜®p‡ÂíS\u0012äí6L+Ämû0•…©.LI\u0000?ÑA\u0017nUø¹Â-\u0019éò–\\LV˜¤0QaB\u0005Æ+ÜìÂ8…±Â/Ç*ÜT‡1Ýpãè4ycŒ\u001ež$G§aTAš\u001c¥0’¥‘…\u0018ÁÒˆ:\u0014¤!Ÿ�üþ\u0018>Ì)‡'axD" },+      { "match": "g\nƒ9„Á­¸Aáún\u0018¤0�" },+      { "match": "F 5Å/S‡!Åå�)~¸\u001cHf½d\u0017’x}’‚“3w\u000eƒƒ=8œpDkg·Y¥Ý\u000e{´v¶Äxi³Â\u0016­]\"×.1\u001e‰\\»\u001dº5\u000eVãÙê¯'(Äs&ñ" },+      { "match": "u FÁ¦-" },+      { "match": "endstream\nendobj" },+      { "match": "14 0" },+      { "match": "obj\n2734" },+      { "match": "endobj\n15" },+      { "match": "0 obj" },+      { "match": "endobj\n16" },+      { "match": "0 obj" },+      { "match": "Mac OS" },+      { "match": "X 10.12.6" },+      { "match": "Quartz PDFContext)" },+      { "match": "endobj\n17" },+      { "match": "0 obj" },+      { "match": "endobj\n18" },+      { "match": "0 obj" },+      { "match": "endobj\n19" },+      { "match": "0 obj" },+      { "match": "endobj\n20" },+      { "match": "0 obj" },+      { "match": "endobj\n1" },+      { "match": "0 obj" },+      { "match": "Title 15" },+      { "match": "0 R" },+      { "match": "Producer 16" },+      { "match": "0 R" },+      { "match": "Creator 17" },+      { "match": "0 R" },+      { "match": "CreationDate 18" },+      { "match": "0 R" },+      { "match": "ModDate\n18" },+      { "match": "0 R" },+      { "match": "Keywords 19" },+      { "match": "0 R" },+      { "match": "Keywords 20" },+      { "match": "0 R" },+      { "match": "endobj\nxref" },+      { "match": "0 21" },+      { "match": "0000000000 65535" },+      { "match": "f \n0000005392" },+      { "match": "00000 n" },+      { "match": "0000000238 00000" },+      { "match": "n \n0000001714" },+      { "match": "00000 n" },+      { "match": "0000000022 00000" },+      { "match": "n \n0000000219" },+      { "match": "00000 n" },+      { "match": "0000000342 00000" },+      { "match": "n \n0000001679" },+      { "match": "00000 n" },+      { "match": "0000001847 00000" },+      { "match": "n \n0000000439" },+      { "match": "00000 n" },+      { "match": "0000001658 00000" },+      { "match": "n \n0000001797" },+      { "match": "00000 n" },+      { "match": "0000002110 00000" },+      { "match": "n \n0000002362" },+      { "match": "00000 n" },+      { "match": "0000005186 00000" },+      { "match": "n \n0000005207" },+      { "match": "00000 n" },+      { "match": "0000005231 00000" },+      { "match": "n \n0000005284" },+      { "match": "00000 n" },+      { "match": "0000005311 00000" },+      { "match": "n \n0000005353" },+      { "match": "00000 n" },+      { "match": "0000005372 00000" },+      { "match": "n \ntrailer" },+      { "match": "Size 21" },+      { "match": "Root 11" },+      { "match": "0 R" },+      { "match": "Info 1" },+      { "match": "0 R" },+      { "match": "ID [" },+      { "match": "startxref\n5536" }+    ]+  },+  {+    "file": "Hello.sh",+    "matches": [+      { "match": "sh\necho" },+      { "match": "Hello World!\"" }+    ]+  }+]

tests/out/Hello_wnhS--json-on.out

new file mode 100644@@ -0,0 +1,244 @@+[+  {+    "file": "Hello.bat",+    "matches": [+      { "line": 1, "match": "sh\necho" },+      { "line": 2, "match": "Hello World!\"" }+    ]+  },+  {+    "file": "Hello.class",+    "matches": [+      { "line": 5, "match": "Hello World!\u0007\u0000\u001a" }+    ]+  },+  {+    "file": "Hello.java",+    "matches": [+      { "line": 1, "match": "import java.lang.*;" },+      { "line": 3, "match": "public class" },+      { "line": 3, "match": "Hello //" },+      { "line": 3, "match": "prints a" },+      { "line": 3, "match": "Hello World!" },+      { "line": 3, "match": "greeting\n{" },+      { "line": 4, "match": "public static" },+      { "line": 4, "match": "void main(String[]" },+      { "line": 5, "match": "Hello World!\");" }+    ]+  },+  {+    "file": "Hello.pdf",+    "matches": [+      { "line": 1, "match": "3\n%Äåòåë§ó ÐÄÆ" },+      { "line": 3, "match": "4 0" },+      { "line": 3, "match": "obj\n<<" },+      { "line": 4, "match": "Length 5" },+      { "line": 4, "match": "0 R" },+      { "line": 4, "match": "Filter /FlateDecode" },+      { "line": 5, "match": "stream\nx\u0001EŽ»" },+      { "line": 7, "match": "LY\nŸ‰\u0007o†k÷´ŽÐ›áâj©Rj²@8þ­í”" },+      { "line": 9, "match": "endstream\nendobj" },+      { "line": 11, "match": "5 0" },+      { "line": 11, "match": "obj\n123" },+      { "line": 13, "match": "endobj\n2" },+      { "line": 14, "match": "0 obj" },+      { "line": 15, "match": "Type /Page" },+      { "line": 15, "match": "Parent 3" },+      { "line": 15, "match": "0 R" },+      { "line": 15, "match": "Resources 6" },+      { "line": 15, "match": "0 R" },+      { "line": 15, "match": "Contents 4" },+      { "line": 15, "match": "0 R" },+      { "line": 15, "match": "MediaBox [0" },+      { "line": 15, "match": "0 612" },+      { "line": 17, "match": "endobj\n6" },+      { "line": 18, "match": "0 obj" },+      { "line": 19, "match": "ProcSet [" },+      { "line": 19, "match": "PDF /Text" },+      { "line": 19, "match": "ColorSpace <<" },+      { "line": 19, "match": "Cs1 7" },+      { "line": 19, "match": "0 R" },+      { "line": 19, "match": "Font <<" },+      { "line": 19, "match": "TT1 8" },+      { "line": 19, "match": "0 R" },+      { "line": 21, "match": "endobj\n9" },+      { "line": 22, "match": "0 obj" },+      { "line": 23, "match": "Length 10" },+      { "line": 23, "match": "0 R" },+      { "line": 23, "match": "N 1" },+      { "line": 23, "match": "Alternate /DeviceGray" },+      { "line": 23, "match": "Filter /FlateDecode" },+      { "line": 24, "match": "stream\nx\u0001…U]h\u001cU\u0014>»sg\u0003\u0012\u0007\u001f´" },+      { "line": 25, "match": "m\té2‰V\u0013‹µÛMºI\u0013·ëfS›*Êtv6;Ídfœ™Ý&¡O¥à›\u0016\u0004é« >Æ‚\b¶*6/ö¥¥Å’J5\u000f" },+      { "line": 26, "match": "7 ‹š\u0011òÈÇX" },+      { "line": 30, "match": "4\nendstream" },+      { "line": 32, "match": "endobj\n10" },+      { "line": 33, "match": "0 obj" },+      { "line": 34, "match": "1116\nendobj" },+      { "line": 36, "match": "7 0" },+      { "line": 36, "match": "obj\n[" },+      { "line": 37, "match": "ICCBased 9" },+      { "line": 37, "match": "0 R" },+      { "line": 38, "match": "endobj\n3" },+      { "line": 39, "match": "0 obj" },+      { "line": 40, "match": "Type /Pages" },+      { "line": 40, "match": "MediaBox [0" },+      { "line": 40, "match": "0 612" },+      { "line": 40, "match": "Count 1" },+      { "line": 40, "match": "Kids [" },+      { "line": 40, "match": "2 0" },+      { "line": 40, "match": "R ]" },+      { "line": 41, "match": "endobj\n11" },+      { "line": 42, "match": "0 obj" },+      { "line": 43, "match": "Type /Catalog" },+      { "line": 43, "match": "Pages 3" },+      { "line": 43, "match": "0 R" },+      { "line": 44, "match": "endobj\n8" },+      { "line": 45, "match": "0 obj" },+      { "line": 46, "match": "Type /Font" },+      { "line": 46, "match": "Subtype /TrueType" },+      { "line": 46, "match": "BaseFont /GQTMZF+Menlo-Regular" },+      { "line": 46, "match": "FontDescriptor\n12" },+      { "line": 47, "match": "0 R" },+      { "line": 47, "match": "Encoding /MacRomanEncoding" },+      { "line": 47, "match": "FirstChar 72" },+      { "line": 47, "match": "LastChar 111" },+      { "line": 47, "match": "Widths [" },+      { "line": 47, "match": "602\n0" },+      { "line": 48, "match": "0 0" },+      { "line": 48, "match": "0 0" },+      { "line": 48, "match": "0 0" },+      { "line": 48, "match": "0 0" },+      { "line": 48, "match": "0 0" },+      { "line": 48, "match": "0 0" },+      { "line": 48, "match": "0 0" },+      { "line": 48, "match": "0 0" },+      { "line": 48, "match": "0 0" },+      { "line": 48, "match": "0 0" },+      { "line": 48, "match": "0 0" },+      { "line": 48, "match": "0 0" },+      { "line": 48, "match": "0 0" },+      { "line": 48, "match": "0 602" },+      { "line": 48, "match": "0 0" },+      { "line": 48, "match": "0 0" },+      { "line": 48, "match": "0 0" },+      { "line": 48, "match": "602\n0" },+      { "line": 49, "match": "0 602" },+      { "line": 50, "match": "endobj\n12" },+      { "line": 51, "match": "0 obj" },+      { "line": 52, "match": "Type /FontDescriptor" },+      { "line": 52, "match": "FontName /GQTMZF+Menlo-Regular" },+      { "line": 52, "match": "Flags 33" },+      { "line": 52, "match": "FontBBox\n[-558" },+      { "line": 53, "match": "375 718" },+      { "line": 53, "match": "ItalicAngle 0" },+      { "line": 53, "match": "Ascent 928" },+      { "line": 53, "match": "Descent -236" },+      { "line": 53, "match": "CapHeight 729" },+      { "line": 54, "match": "StemV 99" },+      { "line": 54, "match": "XHeight 547" },+      { "line": 54, "match": "StemH 83" },+      { "line": 54, "match": "AvgWidth 602" },+      { "line": 54, "match": "MaxWidth 602" },+      { "line": 54, "match": "FontFile2 13" },+      { "line": 54, "match": "0 R" },+      { "line": 56, "match": "endobj\n13" },+      { "line": 57, "match": "0 obj" },+      { "line": 58, "match": "Length 14" },+      { "line": 58, "match": "0 R" },+      { "line": 58, "match": "Length1 4064" },+      { "line": 58, "match": "Filter /FlateDecode" },+      { "line": 59, "match": "stream\nx\u0001ÝW{xTÅ\u0015?sw6¯Í>’MHH€]Öå•,�„·R\u0016Hxˆ" },+      { "line": 60, "match": "H (!\bA´1�JQ" },+      { "line": 61, "match": "j\tL+I\u0017.RÌ'›4‰\u0003‚pš¼Ã¤vÚĈÍä\u0013·=R\u000eõ‰Dª`ÌJ>¦" },+      { "line": 61, "match": "a\n>¨À‘Ahb¡i\u0010\u000e+\u001cz?^\u001eRx?\u001e\u0007\u0015ÞS8På”\u00072ñ×TìWx·\u0016�«|²Qá/" },+      { "line": 66, "match": "W\nË\u0015\u001ep\u000e“\u000fLÂ/\u0015*ïŲ¥\u0015r™ÂÒ" },+      { "line": 70, "match": "y\nwåâN…¹¹(nÅœ:ÌV(R(T˜5³£œ¥0“\u001crfGÌP˜®p‡ÂíS\u0012äí6L+Ämû0•…©.LI\u0000?ÑA\u0017nUø¹Â-\u0019éò–\\LV˜¤0QaB\u0005Æ+ÜìÂ8…±Â/Ç*ÜT‡1Ýpãè4ycŒ\u001ež$G§aTAš\u001c¥0’¥‘…\u0018ÁÒˆ:\u0014¤!Ÿ�üþ\u0018>Ì)‡'axD" },+      { "line": 71, "match": "g\nƒ9„Á­¸Aáún\u0018¤0�" },+      { "line": 74, "match": "F 5Å/S‡!Åå�)~¸\u001cHf½d\u0017’x}’‚“3w\u000eƒƒ=8œpDkg·Y¥Ý\u000e{´v¶Äxi³Â\u0016­]\"×.1\u001e‰\\»\u001dº5\u000eVãÙê¯'(Äs&ñ" },+      { "line": 75, "match": "u FÁ¦-" },+      { "line": 79, "match": "endstream\nendobj" },+      { "line": 81, "match": "14 0" },+      { "line": 81, "match": "obj\n2734" },+      { "line": 83, "match": "endobj\n15" },+      { "line": 84, "match": "0 obj" },+      { "line": 86, "match": "endobj\n16" },+      { "line": 87, "match": "0 obj" },+      { "line": 88, "match": "Mac OS" },+      { "line": 88, "match": "X 10.12.6" },+      { "line": 88, "match": "Quartz PDFContext)" },+      { "line": 89, "match": "endobj\n17" },+      { "line": 90, "match": "0 obj" },+      { "line": 92, "match": "endobj\n18" },+      { "line": 93, "match": "0 obj" },+      { "line": 95, "match": "endobj\n19" },+      { "line": 96, "match": "0 obj" },+      { "line": 98, "match": "endobj\n20" },+      { "line": 99, "match": "0 obj" },+      { "line": 101, "match": "endobj\n1" },+      { "line": 102, "match": "0 obj" },+      { "line": 103, "match": "Title 15" },+      { "line": 103, "match": "0 R" },+      { "line": 103, "match": "Producer 16" },+      { "line": 103, "match": "0 R" },+      { "line": 103, "match": "Creator 17" },+      { "line": 103, "match": "0 R" },+      { "line": 103, "match": "CreationDate 18" },+      { "line": 103, "match": "0 R" },+      { "line": 103, "match": "ModDate\n18" },+      { "line": 104, "match": "0 R" },+      { "line": 104, "match": "Keywords 19" },+      { "line": 104, "match": "0 R" },+      { "line": 104, "match": "Keywords 20" },+      { "line": 104, "match": "0 R" },+      { "line": 105, "match": "endobj\nxref" },+      { "line": 107, "match": "0 21" },+      { "line": 108, "match": "0000000000 65535" },+      { "line": 108, "match": "f \n0000005392" },+      { "line": 109, "match": "00000 n" },+      { "line": 110, "match": "0000000238 00000" },+      { "line": 110, "match": "n \n0000001714" },+      { "line": 111, "match": "00000 n" },+      { "line": 112, "match": "0000000022 00000" },+      { "line": 112, "match": "n \n0000000219" },+      { "line": 113, "match": "00000 n" },+      { "line": 114, "match": "0000000342 00000" },+      { "line": 114, "match": "n \n0000001679" },+      { "line": 115, "match": "00000 n" },+      { "line": 116, "match": "0000001847 00000" },+      { "line": 116, "match": "n \n0000000439" },+      { "line": 117, "match": "00000 n" },+      { "line": 118, "match": "0000001658 00000" },+      { "line": 118, "match": "n \n0000001797" },+      { "line": 119, "match": "00000 n" },+      { "line": 120, "match": "0000002110 00000" },+      { "line": 120, "match": "n \n0000002362" },+      { "line": 121, "match": "00000 n" },+      { "line": 122, "match": "0000005186 00000" },+      { "line": 122, "match": "n \n0000005207" },+      { "line": 123, "match": "00000 n" },+      { "line": 124, "match": "0000005231 00000" },+      { "line": 124, "match": "n \n0000005284" },+      { "line": 125, "match": "00000 n" },+      { "line": 126, "match": "0000005311 00000" },+      { "line": 126, "match": "n \n0000005353" },+      { "line": 127, "match": "00000 n" },+      { "line": 128, "match": "0000005372 00000" },+      { "line": 128, "match": "n \ntrailer" },+      { "line": 130, "match": "Size 21" },+      { "line": 130, "match": "Root 11" },+      { "line": 130, "match": "0 R" },+      { "line": 130, "match": "Info 1" },+      { "line": 130, "match": "0 R" },+      { "line": 130, "match": "ID [" },+      { "line": 132, "match": "startxref\n5536" }+    ]+  },+  {+    "file": "Hello.sh",+    "matches": [+      { "line": 1, "match": "sh\necho" },+      { "line": 2, "match": "Hello World!\"" }+    ]+  }+]

tests/out/Hello_wnhS--json-onkb.out

new file mode 100644@@ -0,0 +1,244 @@+[+  {+    "file": "Hello.bat",+    "matches": [+      { "line": 1, "column": 8, "offset": 7, "match": "sh\necho" },+      { "line": 2, "column": 7, "offset": 16, "match": "Hello World!\"" }+    ]+  },+  {+    "file": "Hello.class",+    "matches": [+      { "line": 5, "column": 27, "offset": 148, "match": "Hello World!\u0007\u0000\u001a" }+    ]+  },+  {+    "file": "Hello.java",+    "matches": [+      { "line": 1, "column": 1, "offset": 0, "match": "import java.lang.*;" },+      { "line": 3, "column": 1, "offset": 21, "match": "public class" },+      { "line": 3, "column": 14, "offset": 34, "match": "Hello //" },+      { "line": 3, "column": 23, "offset": 43, "match": "prints a" },+      { "line": 3, "column": 32, "offset": 52, "match": "Hello World!" },+      { "line": 3, "column": 45, "offset": 65, "match": "greeting\n{" },+      { "line": 4, "column": 3, "offset": 76, "match": "public static" },+      { "line": 4, "column": 17, "offset": 90, "match": "void main(String[]" },+      { "line": 5, "column": 25, "offset": 138, "match": "Hello World!\");" }+    ]+  },+  {+    "file": "Hello.pdf",+    "matches": [+      { "line": 1, "column": 8, "offset": 7, "match": "3\n%Äåòåë§ó ÐÄÆ" },+      { "line": 3, "column": 1, "offset": 22, "match": "4 0" },+      { "line": 3, "column": 5, "offset": 26, "match": "obj\n<<" },+      { "line": 4, "column": 5, "offset": 34, "match": "Length 5" },+      { "line": 4, "column": 14, "offset": 43, "match": "0 R" },+      { "line": 4, "column": 19, "offset": 48, "match": "Filter /FlateDecode" },+      { "line": 5, "column": 1, "offset": 71, "match": "stream\nx\u0001EŽ»" },+      { "line": 7, "column": 35, "offset": 135, "match": "LY\nŸ‰\u0007o†k÷´ŽÐ›áâj©Rj²@8þ­í”" },+      { "line": 9, "column": 1, "offset": 202, "match": "endstream\nendobj" },+      { "line": 11, "column": 1, "offset": 219, "match": "5 0" },+      { "line": 11, "column": 5, "offset": 223, "match": "obj\n123" },+      { "line": 13, "column": 1, "offset": 231, "match": "endobj\n2" },+      { "line": 14, "column": 3, "offset": 240, "match": "0 obj" },+      { "line": 15, "column": 5, "offset": 250, "match": "Type /Page" },+      { "line": 15, "column": 17, "offset": 262, "match": "Parent 3" },+      { "line": 15, "column": 26, "offset": 271, "match": "0 R" },+      { "line": 15, "column": 31, "offset": 276, "match": "Resources 6" },+      { "line": 15, "column": 43, "offset": 288, "match": "0 R" },+      { "line": 15, "column": 48, "offset": 293, "match": "Contents 4" },+      { "line": 15, "column": 59, "offset": 304, "match": "0 R" },+      { "line": 15, "column": 64, "offset": 309, "match": "MediaBox [0" },+      { "line": 15, "column": 76, "offset": 321, "match": "0 612" },+      { "line": 17, "column": 1, "offset": 335, "match": "endobj\n6" },+      { "line": 18, "column": 3, "offset": 344, "match": "0 obj" },+      { "line": 19, "column": 5, "offset": 354, "match": "ProcSet [" },+      { "line": 19, "column": 16, "offset": 365, "match": "PDF /Text" },+      { "line": 19, "column": 29, "offset": 378, "match": "ColorSpace <<" },+      { "line": 19, "column": 44, "offset": 393, "match": "Cs1 7" },+      { "line": 19, "column": 50, "offset": 399, "match": "0 R" },+      { "line": 19, "column": 58, "offset": 407, "match": "Font <<" },+      { "line": 19, "column": 67, "offset": 416, "match": "TT1 8" },+      { "line": 19, "column": 73, "offset": 422, "match": "0 R" },+      { "line": 21, "column": 1, "offset": 432, "match": "endobj\n9" },+      { "line": 22, "column": 3, "offset": 441, "match": "0 obj" },+      { "line": 23, "column": 5, "offset": 451, "match": "Length 10" },+      { "line": 23, "column": 15, "offset": 461, "match": "0 R" },+      { "line": 23, "column": 20, "offset": 466, "match": "N 1" },+      { "line": 23, "column": 25, "offset": 471, "match": "Alternate /DeviceGray" },+      { "line": 23, "column": 48, "offset": 494, "match": "Filter /FlateDecode" },+      { "line": 24, "column": 1, "offset": 517, "match": "stream\nx\u0001…U]h\u001cU\u0014>»sg\u0003\u0012\u0007\u001f´" },+      { "line": 25, "column": 19, "offset": 547, "match": "m\té2‰V\u0013‹µÛMºI\u0013·ëfS›*Êtv6;Ídfœ™Ý&¡O¥à›\u0016\u0004é« >Æ‚\b¶*6/ö¥¥Å’J5\u000f" },+      { "line": 26, "column": 307, "offset": 1006, "match": "7 ‹š\u0011òÈÇX" },+      { "line": 30, "column": 29, "offset": 1639, "match": "4\nendstream" },+      { "line": 32, "column": 1, "offset": 1651, "match": "endobj\n10" },+      { "line": 33, "column": 4, "offset": 1661, "match": "0 obj" },+      { "line": 34, "column": 1, "offset": 1667, "match": "1116\nendobj" },+      { "line": 36, "column": 1, "offset": 1679, "match": "7 0" },+      { "line": 36, "column": 5, "offset": 1683, "match": "obj\n[" },+      { "line": 37, "column": 4, "offset": 1690, "match": "ICCBased 9" },+      { "line": 37, "column": 15, "offset": 1701, "match": "0 R" },+      { "line": 38, "column": 1, "offset": 1707, "match": "endobj\n3" },+      { "line": 39, "column": 3, "offset": 1716, "match": "0 obj" },+      { "line": 40, "column": 5, "offset": 1726, "match": "Type /Pages" },+      { "line": 40, "column": 18, "offset": 1739, "match": "MediaBox [0" },+      { "line": 40, "column": 30, "offset": 1751, "match": "0 612" },+      { "line": 40, "column": 42, "offset": 1763, "match": "Count 1" },+      { "line": 40, "column": 51, "offset": 1772, "match": "Kids [" },+      { "line": 40, "column": 58, "offset": 1779, "match": "2 0" },+      { "line": 40, "column": 62, "offset": 1783, "match": "R ]" },+      { "line": 41, "column": 1, "offset": 1790, "match": "endobj\n11" },+      { "line": 42, "column": 4, "offset": 1800, "match": "0 obj" },+      { "line": 43, "column": 5, "offset": 1810, "match": "Type /Catalog" },+      { "line": 43, "column": 20, "offset": 1825, "match": "Pages 3" },+      { "line": 43, "column": 28, "offset": 1833, "match": "0 R" },+      { "line": 44, "column": 1, "offset": 1840, "match": "endobj\n8" },+      { "line": 45, "column": 3, "offset": 1849, "match": "0 obj" },+      { "line": 46, "column": 5, "offset": 1859, "match": "Type /Font" },+      { "line": 46, "column": 17, "offset": 1871, "match": "Subtype /TrueType" },+      { "line": 46, "column": 36, "offset": 1890, "match": "BaseFont /GQTMZF+Menlo-Regular" },+      { "line": 46, "column": 68, "offset": 1922, "match": "FontDescriptor\n12" },+      { "line": 47, "column": 4, "offset": 1940, "match": "0 R" },+      { "line": 47, "column": 9, "offset": 1945, "match": "Encoding /MacRomanEncoding" },+      { "line": 47, "column": 37, "offset": 1973, "match": "FirstChar 72" },+      { "line": 47, "column": 51, "offset": 1987, "match": "LastChar 111" },+      { "line": 47, "column": 65, "offset": 2001, "match": "Widths [" },+      { "line": 47, "column": 74, "offset": 2010, "match": "602\n0" },+      { "line": 48, "column": 3, "offset": 2016, "match": "0 0" },+      { "line": 48, "column": 7, "offset": 2020, "match": "0 0" },+      { "line": 48, "column": 11, "offset": 2024, "match": "0 0" },+      { "line": 48, "column": 15, "offset": 2028, "match": "0 0" },+      { "line": 48, "column": 19, "offset": 2032, "match": "0 0" },+      { "line": 48, "column": 23, "offset": 2036, "match": "0 0" },+      { "line": 48, "column": 27, "offset": 2040, "match": "0 0" },+      { "line": 48, "column": 31, "offset": 2044, "match": "0 0" },+      { "line": 48, "column": 35, "offset": 2048, "match": "0 0" },+      { "line": 48, "column": 39, "offset": 2052, "match": "0 0" },+      { "line": 48, "column": 43, "offset": 2056, "match": "0 0" },+      { "line": 48, "column": 47, "offset": 2060, "match": "0 0" },+      { "line": 48, "column": 51, "offset": 2064, "match": "0 0" },+      { "line": 48, "column": 55, "offset": 2068, "match": "0 602" },+      { "line": 48, "column": 61, "offset": 2074, "match": "0 0" },+      { "line": 48, "column": 65, "offset": 2078, "match": "0 0" },+      { "line": 48, "column": 69, "offset": 2082, "match": "0 0" },+      { "line": 48, "column": 73, "offset": 2086, "match": "602\n0" },+      { "line": 49, "column": 3, "offset": 2092, "match": "0 602" },+      { "line": 50, "column": 1, "offset": 2103, "match": "endobj\n12" },+      { "line": 51, "column": 4, "offset": 2113, "match": "0 obj" },+      { "line": 52, "column": 5, "offset": 2123, "match": "Type /FontDescriptor" },+      { "line": 52, "column": 27, "offset": 2145, "match": "FontName /GQTMZF+Menlo-Regular" },+      { "line": 52, "column": 59, "offset": 2177, "match": "Flags 33" },+      { "line": 52, "column": 69, "offset": 2187, "match": "FontBBox\n[-558" },+      { "line": 53, "column": 8, "offset": 2203, "match": "375 718" },+      { "line": 53, "column": 23, "offset": 2218, "match": "ItalicAngle 0" },+      { "line": 53, "column": 38, "offset": 2233, "match": "Ascent 928" },+      { "line": 53, "column": 50, "offset": 2245, "match": "Descent -236" },+      { "line": 53, "column": 64, "offset": 2259, "match": "CapHeight 729" },+      { "line": 54, "column": 2, "offset": 2274, "match": "StemV 99" },+      { "line": 54, "column": 12, "offset": 2284, "match": "XHeight 547" },+      { "line": 54, "column": 25, "offset": 2297, "match": "StemH 83" },+      { "line": 54, "column": 35, "offset": 2307, "match": "AvgWidth 602" },+      { "line": 54, "column": 49, "offset": 2321, "match": "MaxWidth 602" },+      { "line": 54, "column": 63, "offset": 2335, "match": "FontFile2 13" },+      { "line": 54, "column": 76, "offset": 2348, "match": "0 R" },+      { "line": 56, "column": 1, "offset": 2355, "match": "endobj\n13" },+      { "line": 57, "column": 4, "offset": 2365, "match": "0 obj" },+      { "line": 58, "column": 5, "offset": 2375, "match": "Length 14" },+      { "line": 58, "column": 15, "offset": 2385, "match": "0 R" },+      { "line": 58, "column": 20, "offset": 2390, "match": "Length1 4064" },+      { "line": 58, "column": 34, "offset": 2404, "match": "Filter /FlateDecode" },+      { "line": 59, "column": 1, "offset": 2427, "match": "stream\nx\u0001ÝW{xTÅ\u0015?sw6¯Í>’MHH€]Öå•,�„·R\u0016Hxˆ" },+      { "line": 60, "column": 33, "offset": 2475, "match": "H (!\bA´1�JQ" },+      { "line": 61, "column": 187, "offset": 2776, "match": "j\tL+I\u0017.RÌ'›4‰\u0003‚pš¼Ã¤vÚĈÍä\u0013·=R\u000eõ‰Dª`ÌJ>¦" },+      { "line": 61, "column": 356, "offset": 2996, "match": "a\n>¨À‘Ahb¡i\u0010\u000e+\u001cz?^\u001eRx?\u001e\u0007\u0015ÞS8På”\u00072ñ×TìWx·\u0016�«|²Qá/" },+      { "line": 66, "column": 95, "offset": 3301, "match": "W\nË\u0015\u001ep\u000e“\u000fLÂ/\u0015*ïŲ¥\u0015r™ÂÒ" },+      { "line": 70, "column": 35, "offset": 3383, "match": "y\nwåâN…¹¹(nÅœ:ÌV(R(T˜5³£œ¥0“\u001crfGÌP˜®p‡ÂíS\u0012äí6L+Ämû0•…©.LI\u0000?ÑA\u0017nUø¹Â-\u0019éò–\\LV˜¤0QaB\u0005Æ+ÜìÂ8…±Â/Ç*ÜT‡1Ýpãè4ycŒ\u001ež$G§aTAš\u001c¥0’¥‘…\u0018ÁÒˆ:\u0014¤!Ÿ�üþ\u0018>Ì)‡'axD" },+      { "line": 71, "column": 146, "offset": 3575, "match": "g\nƒ9„Á­¸Aáún\u0018¤0�" },+      { "line": 74, "column": 36, "offset": 3743, "match": "F 5Å/S‡!Åå�)~¸\u001cHf½d\u0017’x}’‚“3w\u000eƒƒ=8œpDkg·Y¥Ý\u000e{´v¶Äxi³Â\u0016­]\"×.1\u001e‰\\»\u001dº5\u000eVãÙê¯'(Äs&ñ" },+      { "line": 75, "column": 2, "offset": 3825, "match": "u FÁ¦-" },+      { "line": 79, "column": 1, "offset": 5169, "match": "endstream\nendobj" },+      { "line": 81, "column": 1, "offset": 5186, "match": "14 0" },+      { "line": 81, "column": 6, "offset": 5191, "match": "obj\n2734" },+      { "line": 83, "column": 1, "offset": 5200, "match": "endobj\n15" },+      { "line": 84, "column": 4, "offset": 5210, "match": "0 obj" },+      { "line": 86, "column": 1, "offset": 5224, "match": "endobj\n16" },+      { "line": 87, "column": 4, "offset": 5234, "match": "0 obj" },+      { "line": 88, "column": 2, "offset": 5241, "match": "Mac OS" },+      { "line": 88, "column": 9, "offset": 5248, "match": "X 10.12.6" },+      { "line": 88, "column": 19, "offset": 5258, "match": "Quartz PDFContext)" },+      { "line": 89, "column": 1, "offset": 5277, "match": "endobj\n17" },+      { "line": 90, "column": 4, "offset": 5287, "match": "0 obj" },+      { "line": 92, "column": 1, "offset": 5304, "match": "endobj\n18" },+      { "line": 93, "column": 4, "offset": 5314, "match": "0 obj" },+      { "line": 95, "column": 1, "offset": 5346, "match": "endobj\n19" },+      { "line": 96, "column": 4, "offset": 5356, "match": "0 obj" },+      { "line": 98, "column": 1, "offset": 5365, "match": "endobj\n20" },+      { "line": 99, "column": 4, "offset": 5375, "match": "0 obj" },+      { "line": 101, "column": 1, "offset": 5385, "match": "endobj\n1" },+      { "line": 102, "column": 3, "offset": 5394, "match": "0 obj" },+      { "line": 103, "column": 5, "offset": 5404, "match": "Title 15" },+      { "line": 103, "column": 14, "offset": 5413, "match": "0 R" },+      { "line": 103, "column": 19, "offset": 5418, "match": "Producer 16" },+      { "line": 103, "column": 31, "offset": 5430, "match": "0 R" },+      { "line": 103, "column": 36, "offset": 5435, "match": "Creator 17" },+      { "line": 103, "column": 47, "offset": 5446, "match": "0 R" },+      { "line": 103, "column": 52, "offset": 5451, "match": "CreationDate 18" },+      { "line": 103, "column": 68, "offset": 5467, "match": "0 R" },+      { "line": 103, "column": 73, "offset": 5472, "match": "ModDate\n18" },+      { "line": 104, "column": 4, "offset": 5483, "match": "0 R" },+      { "line": 104, "column": 9, "offset": 5488, "match": "Keywords 19" },+      { "line": 104, "column": 21, "offset": 5500, "match": "0 R" },+      { "line": 104, "column": 31, "offset": 5510, "match": "Keywords 20" },+      { "line": 104, "column": 43, "offset": 5522, "match": "0 R" },+      { "line": 105, "column": 1, "offset": 5529, "match": "endobj\nxref" },+      { "line": 107, "column": 1, "offset": 5541, "match": "0 21" },+      { "line": 108, "column": 1, "offset": 5546, "match": "0000000000 65535" },+      { "line": 108, "column": 18, "offset": 5563, "match": "f \n0000005392" },+      { "line": 109, "column": 12, "offset": 5577, "match": "00000 n" },+      { "line": 110, "column": 1, "offset": 5586, "match": "0000000238 00000" },+      { "line": 110, "column": 18, "offset": 5603, "match": "n \n0000001714" },+      { "line": 111, "column": 12, "offset": 5617, "match": "00000 n" },+      { "line": 112, "column": 1, "offset": 5626, "match": "0000000022 00000" },+      { "line": 112, "column": 18, "offset": 5643, "match": "n \n0000000219" },+      { "line": 113, "column": 12, "offset": 5657, "match": "00000 n" },+      { "line": 114, "column": 1, "offset": 5666, "match": "0000000342 00000" },+      { "line": 114, "column": 18, "offset": 5683, "match": "n \n0000001679" },+      { "line": 115, "column": 12, "offset": 5697, "match": "00000 n" },+      { "line": 116, "column": 1, "offset": 5706, "match": "0000001847 00000" },+      { "line": 116, "column": 18, "offset": 5723, "match": "n \n0000000439" },+      { "line": 117, "column": 12, "offset": 5737, "match": "00000 n" },+      { "line": 118, "column": 1, "offset": 5746, "match": "0000001658 00000" },+      { "line": 118, "column": 18, "offset": 5763, "match": "n \n0000001797" },+      { "line": 119, "column": 12, "offset": 5777, "match": "00000 n" },+      { "line": 120, "column": 1, "offset": 5786, "match": "0000002110 00000" },+      { "line": 120, "column": 18, "offset": 5803, "match": "n \n0000002362" },+      { "line": 121, "column": 12, "offset": 5817, "match": "00000 n" },+      { "line": 122, "column": 1, "offset": 5826, "match": "0000005186 00000" },+      { "line": 122, "column": 18, "offset": 5843, "match": "n \n0000005207" },+      { "line": 123, "column": 12, "offset": 5857, "match": "00000 n" },+      { "line": 124, "column": 1, "offset": 5866, "match": "0000005231 00000" },+      { "line": 124, "column": 18, "offset": 5883, "match": "n \n0000005284" },+      { "line": 125, "column": 12, "offset": 5897, "match": "00000 n" },+      { "line": 126, "column": 1, "offset": 5906, "match": "0000005311 00000" },+      { "line": 126, "column": 18, "offset": 5923, "match": "n \n0000005353" },+      { "line": 127, "column": 12, "offset": 5937, "match": "00000 n" },+      { "line": 128, "column": 1, "offset": 5946, "match": "0000005372 00000" },+      { "line": 128, "column": 18, "offset": 5963, "match": "n \ntrailer" },+      { "line": 130, "column": 5, "offset": 5978, "match": "Size 21" },+      { "line": 130, "column": 14, "offset": 5987, "match": "Root 11" },+      { "line": 130, "column": 22, "offset": 5995, "match": "0 R" },+      { "line": 130, "column": 27, "offset": 6000, "match": "Info 1" },+      { "line": 130, "column": 34, "offset": 6007, "match": "0 R" },+      { "line": 130, "column": 39, "offset": 6012, "match": "ID [" },+      { "line": 132, "column": 1, "offset": 6092, "match": "startxref\n5536" }+    ]+  },+  {+    "file": "Hello.sh",+    "matches": [+      { "line": 1, "column": 8, "offset": 7, "match": "sh\necho" },+      { "line": 2, "column": 7, "offset": 16, "match": "Hello World!\"" }+    ]+  }+]

tests/out/Hello_wnhS--json-ounkb.out

new file mode 100644@@ -0,0 +1,244 @@+[+  {+    "file": "Hello.bat",+    "matches": [+      { "line": 1, "column": 8, "offset": 7, "match": "sh\necho" },+      { "line": 2, "column": 7, "offset": 16, "match": "Hello World!\"" }+    ]+  },+  {+    "file": "Hello.class",+    "matches": [+      { "line": 5, "column": 27, "offset": 148, "match": "Hello World!\u0007\u0000\u001a" }+    ]+  },+  {+    "file": "Hello.java",+    "matches": [+      { "line": 1, "column": 1, "offset": 0, "match": "import java.lang.*;" },+      { "line": 3, "column": 1, "offset": 21, "match": "public class" },+      { "line": 3, "column": 14, "offset": 34, "match": "Hello //" },+      { "line": 3, "column": 23, "offset": 43, "match": "prints a" },+      { "line": 3, "column": 32, "offset": 52, "match": "Hello World!" },+      { "line": 3, "column": 45, "offset": 65, "match": "greeting\n{" },+      { "line": 4, "column": 3, "offset": 76, "match": "public static" },+      { "line": 4, "column": 17, "offset": 90, "match": "void main(String[]" },+      { "line": 5, "column": 25, "offset": 138, "match": "Hello World!\");" }+    ]+  },+  {+    "file": "Hello.pdf",+    "matches": [+      { "line": 1, "column": 8, "offset": 7, "match": "3\n%Äåòåë§ó ÐÄÆ" },+      { "line": 3, "column": 1, "offset": 22, "match": "4 0" },+      { "line": 3, "column": 5, "offset": 26, "match": "obj\n<<" },+      { "line": 4, "column": 5, "offset": 34, "match": "Length 5" },+      { "line": 4, "column": 14, "offset": 43, "match": "0 R" },+      { "line": 4, "column": 19, "offset": 48, "match": "Filter /FlateDecode" },+      { "line": 5, "column": 1, "offset": 71, "match": "stream\nx\u0001EŽ»" },+      { "line": 7, "column": 35, "offset": 135, "match": "LY\nŸ‰\u0007o†k÷´ŽÐ›áâj©Rj²@8þ­í”" },+      { "line": 9, "column": 1, "offset": 202, "match": "endstream\nendobj" },+      { "line": 11, "column": 1, "offset": 219, "match": "5 0" },+      { "line": 11, "column": 5, "offset": 223, "match": "obj\n123" },+      { "line": 13, "column": 1, "offset": 231, "match": "endobj\n2" },+      { "line": 14, "column": 3, "offset": 240, "match": "0 obj" },+      { "line": 15, "column": 5, "offset": 250, "match": "Type /Page" },+      { "line": 15, "column": 17, "offset": 262, "match": "Parent 3" },+      { "line": 15, "column": 26, "offset": 271, "match": "0 R" },+      { "line": 15, "column": 31, "offset": 276, "match": "Resources 6" },+      { "line": 15, "column": 43, "offset": 288, "match": "0 R" },+      { "line": 15, "column": 48, "offset": 293, "match": "Contents 4" },+      { "line": 15, "column": 59, "offset": 304, "match": "0 R" },+      { "line": 15, "column": 64, "offset": 309, "match": "MediaBox [0" },+      { "line": 15, "column": 76, "offset": 321, "match": "0 612" },+      { "line": 17, "column": 1, "offset": 335, "match": "endobj\n6" },+      { "line": 18, "column": 3, "offset": 344, "match": "0 obj" },+      { "line": 19, "column": 5, "offset": 354, "match": "ProcSet [" },+      { "line": 19, "column": 16, "offset": 365, "match": "PDF /Text" },+      { "line": 19, "column": 29, "offset": 378, "match": "ColorSpace <<" },+      { "line": 19, "column": 44, "offset": 393, "match": "Cs1 7" },+      { "line": 19, "column": 50, "offset": 399, "match": "0 R" },+      { "line": 19, "column": 58, "offset": 407, "match": "Font <<" },+      { "line": 19, "column": 67, "offset": 416, "match": "TT1 8" },+      { "line": 19, "column": 73, "offset": 422, "match": "0 R" },+      { "line": 21, "column": 1, "offset": 432, "match": "endobj\n9" },+      { "line": 22, "column": 3, "offset": 441, "match": "0 obj" },+      { "line": 23, "column": 5, "offset": 451, "match": "Length 10" },+      { "line": 23, "column": 15, "offset": 461, "match": "0 R" },+      { "line": 23, "column": 20, "offset": 466, "match": "N 1" },+      { "line": 23, "column": 25, "offset": 471, "match": "Alternate /DeviceGray" },+      { "line": 23, "column": 48, "offset": 494, "match": "Filter /FlateDecode" },+      { "line": 24, "column": 1, "offset": 517, "match": "stream\nx\u0001…U]h\u001cU\u0014>»sg\u0003\u0012\u0007\u001f´" },+      { "line": 25, "column": 19, "offset": 547, "match": "m\té2‰V\u0013‹µÛMºI\u0013·ëfS›*Êtv6;Ídfœ™Ý&¡O¥à›\u0016\u0004é« >Æ‚\b¶*6/ö¥¥Å’J5\u000f" },+      { "line": 26, "column": 307, "offset": 1006, "match": "7 ‹š\u0011òÈÇX" },+      { "line": 30, "column": 29, "offset": 1639, "match": "4\nendstream" },+      { "line": 32, "column": 1, "offset": 1651, "match": "endobj\n10" },+      { "line": 33, "column": 4, "offset": 1661, "match": "0 obj" },+      { "line": 34, "column": 1, "offset": 1667, "match": "1116\nendobj" },+      { "line": 36, "column": 1, "offset": 1679, "match": "7 0" },+      { "line": 36, "column": 5, "offset": 1683, "match": "obj\n[" },+      { "line": 37, "column": 4, "offset": 1690, "match": "ICCBased 9" },+      { "line": 37, "column": 15, "offset": 1701, "match": "0 R" },+      { "line": 38, "column": 1, "offset": 1707, "match": "endobj\n3" },+      { "line": 39, "column": 3, "offset": 1716, "match": "0 obj" },+      { "line": 40, "column": 5, "offset": 1726, "match": "Type /Pages" },+      { "line": 40, "column": 18, "offset": 1739, "match": "MediaBox [0" },+      { "line": 40, "column": 30, "offset": 1751, "match": "0 612" },+      { "line": 40, "column": 42, "offset": 1763, "match": "Count 1" },+      { "line": 40, "column": 51, "offset": 1772, "match": "Kids [" },+      { "line": 40, "column": 58, "offset": 1779, "match": "2 0" },+      { "line": 40, "column": 62, "offset": 1783, "match": "R ]" },+      { "line": 41, "column": 1, "offset": 1790, "match": "endobj\n11" },+      { "line": 42, "column": 4, "offset": 1800, "match": "0 obj" },+      { "line": 43, "column": 5, "offset": 1810, "match": "Type /Catalog" },+      { "line": 43, "column": 20, "offset": 1825, "match": "Pages 3" },+      { "line": 43, "column": 28, "offset": 1833, "match": "0 R" },+      { "line": 44, "column": 1, "offset": 1840, "match": "endobj\n8" },+      { "line": 45, "column": 3, "offset": 1849, "match": "0 obj" },+      { "line": 46, "column": 5, "offset": 1859, "match": "Type /Font" },+      { "line": 46, "column": 17, "offset": 1871, "match": "Subtype /TrueType" },+      { "line": 46, "column": 36, "offset": 1890, "match": "BaseFont /GQTMZF+Menlo-Regular" },+      { "line": 46, "column": 68, "offset": 1922, "match": "FontDescriptor\n12" },+      { "line": 47, "column": 4, "offset": 1940, "match": "0 R" },+      { "line": 47, "column": 9, "offset": 1945, "match": "Encoding /MacRomanEncoding" },+      { "line": 47, "column": 37, "offset": 1973, "match": "FirstChar 72" },+      { "line": 47, "column": 51, "offset": 1987, "match": "LastChar 111" },+      { "line": 47, "column": 65, "offset": 2001, "match": "Widths [" },+      { "line": 47, "column": 74, "offset": 2010, "match": "602\n0" },+      { "line": 48, "column": 3, "offset": 2016, "match": "0 0" },+      { "line": 48, "column": 7, "offset": 2020, "match": "0 0" },+      { "line": 48, "column": 11, "offset": 2024, "match": "0 0" },+      { "line": 48, "column": 15, "offset": 2028, "match": "0 0" },+      { "line": 48, "column": 19, "offset": 2032, "match": "0 0" },+      { "line": 48, "column": 23, "offset": 2036, "match": "0 0" },+      { "line": 48, "column": 27, "offset": 2040, "match": "0 0" },+      { "line": 48, "column": 31, "offset": 2044, "match": "0 0" },+      { "line": 48, "column": 35, "offset": 2048, "match": "0 0" },+      { "line": 48, "column": 39, "offset": 2052, "match": "0 0" },+      { "line": 48, "column": 43, "offset": 2056, "match": "0 0" },+      { "line": 48, "column": 47, "offset": 2060, "match": "0 0" },+      { "line": 48, "column": 51, "offset": 2064, "match": "0 0" },+      { "line": 48, "column": 55, "offset": 2068, "match": "0 602" },+      { "line": 48, "column": 61, "offset": 2074, "match": "0 0" },+      { "line": 48, "column": 65, "offset": 2078, "match": "0 0" },+      { "line": 48, "column": 69, "offset": 2082, "match": "0 0" },+      { "line": 48, "column": 73, "offset": 2086, "match": "602\n0" },+      { "line": 49, "column": 3, "offset": 2092, "match": "0 602" },+      { "line": 50, "column": 1, "offset": 2103, "match": "endobj\n12" },+      { "line": 51, "column": 4, "offset": 2113, "match": "0 obj" },+      { "line": 52, "column": 5, "offset": 2123, "match": "Type /FontDescriptor" },+      { "line": 52, "column": 27, "offset": 2145, "match": "FontName /GQTMZF+Menlo-Regular" },+      { "line": 52, "column": 59, "offset": 2177, "match": "Flags 33" },+      { "line": 52, "column": 69, "offset": 2187, "match": "FontBBox\n[-558" },+      { "line": 53, "column": 8, "offset": 2203, "match": "375 718" },+      { "line": 53, "column": 23, "offset": 2218, "match": "ItalicAngle 0" },+      { "line": 53, "column": 38, "offset": 2233, "match": "Ascent 928" },+      { "line": 53, "column": 50, "offset": 2245, "match": "Descent -236" },+      { "line": 53, "column": 64, "offset": 2259, "match": "CapHeight 729" },+      { "line": 54, "column": 2, "offset": 2274, "match": "StemV 99" },+      { "line": 54, "column": 12, "offset": 2284, "match": "XHeight 547" },+      { "line": 54, "column": 25, "offset": 2297, "match": "StemH 83" },+      { "line": 54, "column": 35, "offset": 2307, "match": "AvgWidth 602" },+      { "line": 54, "column": 49, "offset": 2321, "match": "MaxWidth 602" },+      { "line": 54, "column": 63, "offset": 2335, "match": "FontFile2 13" },+      { "line": 54, "column": 76, "offset": 2348, "match": "0 R" },+      { "line": 56, "column": 1, "offset": 2355, "match": "endobj\n13" },+      { "line": 57, "column": 4, "offset": 2365, "match": "0 obj" },+      { "line": 58, "column": 5, "offset": 2375, "match": "Length 14" },+      { "line": 58, "column": 15, "offset": 2385, "match": "0 R" },+      { "line": 58, "column": 20, "offset": 2390, "match": "Length1 4064" },+      { "line": 58, "column": 34, "offset": 2404, "match": "Filter /FlateDecode" },+      { "line": 59, "column": 1, "offset": 2427, "match": "stream\nx\u0001ÝW{xTÅ\u0015?sw6¯Í>’MHH€]Öå•,�„·R\u0016Hxˆ" },+      { "line": 60, "column": 33, "offset": 2475, "match": "H (!\bA´1�JQ" },+      { "line": 61, "column": 187, "offset": 2776, "match": "j\tL+I\u0017.RÌ'›4‰\u0003‚pš¼Ã¤vÚĈÍä\u0013·=R\u000eõ‰Dª`ÌJ>¦" },+      { "line": 61, "column": 356, "offset": 2996, "match": "a\n>¨À‘Ahb¡i\u0010\u000e+\u001cz?^\u001eRx?\u001e\u0007\u0015ÞS8På”\u00072ñ×TìWx·\u0016�«|²Qá/" },+      { "line": 66, "column": 95, "offset": 3301, "match": "W\nË\u0015\u001ep\u000e“\u000fLÂ/\u0015*ïŲ¥\u0015r™ÂÒ" },+      { "line": 70, "column": 35, "offset": 3383, "match": "y\nwåâN…¹¹(nÅœ:ÌV(R(T˜5³£œ¥0“\u001crfGÌP˜®p‡ÂíS\u0012äí6L+Ämû0•…©.LI\u0000?ÑA\u0017nUø¹Â-\u0019éò–\\LV˜¤0QaB\u0005Æ+ÜìÂ8…±Â/Ç*ÜT‡1Ýpãè4ycŒ\u001ež$G§aTAš\u001c¥0’¥‘…\u0018ÁÒˆ:\u0014¤!Ÿ�üþ\u0018>Ì)‡'axD" },+      { "line": 71, "column": 146, "offset": 3575, "match": "g\nƒ9„Á­¸Aáún\u0018¤0�" },+      { "line": 74, "column": 36, "offset": 3743, "match": "F 5Å/S‡!Åå�)~¸\u001cHf½d\u0017’x}’‚“3w\u000eƒƒ=8œpDkg·Y¥Ý\u000e{´v¶Äxi³Â\u0016­]\"×.1\u001e‰\\»\u001dº5\u000eVãÙê¯'(Äs&ñ" },+      { "line": 75, "column": 2, "offset": 3825, "match": "u FÁ¦-" },+      { "line": 79, "column": 1, "offset": 5169, "match": "endstream\nendobj" },+      { "line": 81, "column": 1, "offset": 5186, "match": "14 0" },+      { "line": 81, "column": 6, "offset": 5191, "match": "obj\n2734" },+      { "line": 83, "column": 1, "offset": 5200, "match": "endobj\n15" },+      { "line": 84, "column": 4, "offset": 5210, "match": "0 obj" },+      { "line": 86, "column": 1, "offset": 5224, "match": "endobj\n16" },+      { "line": 87, "column": 4, "offset": 5234, "match": "0 obj" },+      { "line": 88, "column": 2, "offset": 5241, "match": "Mac OS" },+      { "line": 88, "column": 9, "offset": 5248, "match": "X 10.12.6" },+      { "line": 88, "column": 19, "offset": 5258, "match": "Quartz PDFContext)" },+      { "line": 89, "column": 1, "offset": 5277, "match": "endobj\n17" },+      { "line": 90, "column": 4, "offset": 5287, "match": "0 obj" },+      { "line": 92, "column": 1, "offset": 5304, "match": "endobj\n18" },+      { "line": 93, "column": 4, "offset": 5314, "match": "0 obj" },+      { "line": 95, "column": 1, "offset": 5346, "match": "endobj\n19" },+      { "line": 96, "column": 4, "offset": 5356, "match": "0 obj" },+      { "line": 98, "column": 1, "offset": 5365, "match": "endobj\n20" },+      { "line": 99, "column": 4, "offset": 5375, "match": "0 obj" },+      { "line": 101, "column": 1, "offset": 5385, "match": "endobj\n1" },+      { "line": 102, "column": 3, "offset": 5394, "match": "0 obj" },+      { "line": 103, "column": 5, "offset": 5404, "match": "Title 15" },+      { "line": 103, "column": 14, "offset": 5413, "match": "0 R" },+      { "line": 103, "column": 19, "offset": 5418, "match": "Producer 16" },+      { "line": 103, "column": 31, "offset": 5430, "match": "0 R" },+      { "line": 103, "column": 36, "offset": 5435, "match": "Creator 17" },+      { "line": 103, "column": 47, "offset": 5446, "match": "0 R" },+      { "line": 103, "column": 52, "offset": 5451, "match": "CreationDate 18" },+      { "line": 103, "column": 68, "offset": 5467, "match": "0 R" },+      { "line": 103, "column": 73, "offset": 5472, "match": "ModDate\n18" },+      { "line": 104, "column": 4, "offset": 5483, "match": "0 R" },+      { "line": 104, "column": 9, "offset": 5488, "match": "Keywords 19" },+      { "line": 104, "column": 21, "offset": 5500, "match": "0 R" },+      { "line": 104, "column": 31, "offset": 5510, "match": "Keywords 20" },+      { "line": 104, "column": 43, "offset": 5522, "match": "0 R" },+      { "line": 105, "column": 1, "offset": 5529, "match": "endobj\nxref" },+      { "line": 107, "column": 1, "offset": 5541, "match": "0 21" },+      { "line": 108, "column": 1, "offset": 5546, "match": "0000000000 65535" },+      { "line": 108, "column": 18, "offset": 5563, "match": "f \n0000005392" },+      { "line": 109, "column": 12, "offset": 5577, "match": "00000 n" },+      { "line": 110, "column": 1, "offset": 5586, "match": "0000000238 00000" },+      { "line": 110, "column": 18, "offset": 5603, "match": "n \n0000001714" },+      { "line": 111, "column": 12, "offset": 5617, "match": "00000 n" },+      { "line": 112, "column": 1, "offset": 5626, "match": "0000000022 00000" },+      { "line": 112, "column": 18, "offset": 5643, "match": "n \n0000000219" },+      { "line": 113, "column": 12, "offset": 5657, "match": "00000 n" },+      { "line": 114, "column": 1, "offset": 5666, "match": "0000000342 00000" },+      { "line": 114, "column": 18, "offset": 5683, "match": "n \n0000001679" },+      { "line": 115, "column": 12, "offset": 5697, "match": "00000 n" },+      { "line": 116, "column": 1, "offset": 5706, "match": "0000001847 00000" },+      { "line": 116, "column": 18, "offset": 5723, "match": "n \n0000000439" },+      { "line": 117, "column": 12, "offset": 5737, "match": "00000 n" },+      { "line": 118, "column": 1, "offset": 5746, "match": "0000001658 00000" },+      { "line": 118, "column": 18, "offset": 5763, "match": "n \n0000001797" },+      { "line": 119, "column": 12, "offset": 5777, "match": "00000 n" },+      { "line": 120, "column": 1, "offset": 5786, "match": "0000002110 00000" },+      { "line": 120, "column": 18, "offset": 5803, "match": "n \n0000002362" },+      { "line": 121, "column": 12, "offset": 5817, "match": "00000 n" },+      { "line": 122, "column": 1, "offset": 5826, "match": "0000005186 00000" },+      { "line": 122, "column": 18, "offset": 5843, "match": "n \n0000005207" },+      { "line": 123, "column": 12, "offset": 5857, "match": "00000 n" },+      { "line": 124, "column": 1, "offset": 5866, "match": "0000005231 00000" },+      { "line": 124, "column": 18, "offset": 5883, "match": "n \n0000005284" },+      { "line": 125, "column": 12, "offset": 5897, "match": "00000 n" },+      { "line": 126, "column": 1, "offset": 5906, "match": "0000005311 00000" },+      { "line": 126, "column": 18, "offset": 5923, "match": "n \n0000005353" },+      { "line": 127, "column": 12, "offset": 5937, "match": "00000 n" },+      { "line": 128, "column": 1, "offset": 5946, "match": "0000005372 00000" },+      { "line": 128, "column": 18, "offset": 5963, "match": "n \ntrailer" },+      { "line": 130, "column": 5, "offset": 5978, "match": "Size 21" },+      { "line": 130, "column": 14, "offset": 5987, "match": "Root 11" },+      { "line": 130, "column": 22, "offset": 5995, "match": "0 R" },+      { "line": 130, "column": 27, "offset": 6000, "match": "Info 1" },+      { "line": 130, "column": 34, "offset": 6007, "match": "0 R" },+      { "line": 130, "column": 39, "offset": 6012, "match": "ID [" },+      { "line": 132, "column": 1, "offset": 6092, "match": "startxref\n5536" }+    ]+  },+  {+    "file": "Hello.sh",+    "matches": [+      { "line": 1, "column": 8, "offset": 7, "match": "sh\necho" },+      { "line": 2, "column": 7, "offset": 16, "match": "Hello World!\"" }+    ]+  }+]

tests/out/Hello_wnhS--json-unkb.out

new file mode 100644@@ -0,0 +1,244 @@+[+  {+    "file": "Hello.bat",+    "matches": [+      { "line": 1, "column": 8, "offset": 7, "match": "#!/bin/sh\necho \"Hello World!\"" },+      { "line": 2, "column": 7, "offset": 16, "match": "echo \"Hello World!\"" }+    ]+  },+  {+    "file": "Hello.class",+    "matches": [+      { "line": 5, "column": 27, "offset": 148, "match": "Hello.java\f\u0000\u0007\u0000\b\u0007\u0000\u0017\f\u0000\u0018\u0000\u0019\u0001\u0000\fHello World!\u0007\u0000\u001a\f\u0000\u001b\u0000\u001c\u0001\u0000\u0005Hello\u0001\u0000\u0010java/lang/Object\u0001\u0000\u0010java/lang/System\u0001\u0000\u0003out\u0001\u0000\u0015Ljava/io/PrintStream;\u0001\u0000\u0013java/io/PrintStream\u0001\u0000\u0007println\u0001\u0000\u0015(Ljava/lang/String;)V\u0000!\u0000\u0005\u0000\u0006\u0000\u0000\u0000\u0000\u0000\u0002\u0000\u0001\u0000\u0007\u0000\b\u0000\u0001\u0000\t\u0000\u0000\u0000\u001d\u0000\u0001\u0000\u0001\u0000\u0000\u0000\u0005*·\u0000\u0001±\u0000\u0000\u0000\u0001\u0000" }+    ]+  },+  {+    "file": "Hello.java",+    "matches": [+      { "line": 1, "column": 1, "offset": 0, "match": "import java.lang.*;" },+      { "line": 3, "column": 1, "offset": 21, "match": "public class Hello // prints a Hello World! greeting" },+      { "line": 3, "column": 14, "offset": 34, "match": "public class Hello // prints a Hello World! greeting" },+      { "line": 3, "column": 23, "offset": 43, "match": "public class Hello // prints a Hello World! greeting" },+      { "line": 3, "column": 32, "offset": 52, "match": "public class Hello // prints a Hello World! greeting" },+      { "line": 3, "column": 45, "offset": 65, "match": "public class Hello // prints a Hello World! greeting\n{ public static void main(String[] arg)" },+      { "line": 4, "column": 3, "offset": 76, "match": "{ public static void main(String[] arg)" },+      { "line": 4, "column": 17, "offset": 90, "match": "{ public static void main(String[] arg)" },+      { "line": 5, "column": 25, "offset": 138, "match": "  { System.out.println(\"Hello World!\");" }+    ]+  },+  {+    "file": "Hello.pdf",+    "matches": [+      { "line": 1, "column": 8, "offset": 7, "match": "%PDF-1.3\n%Äåòåë§ó ÐÄÆ" },+      { "line": 3, "column": 1, "offset": 22, "match": "4 0 obj" },+      { "line": 3, "column": 5, "offset": 26, "match": "4 0 obj\n<< /Length 5 0 R /Filter /FlateDecode >>" },+      { "line": 4, "column": 5, "offset": 34, "match": "<< /Length 5 0 R /Filter /FlateDecode >>" },+      { "line": 4, "column": 14, "offset": 43, "match": "<< /Length 5 0 R /Filter /FlateDecode >>" },+      { "line": 4, "column": 19, "offset": 48, "match": "<< /Length 5 0 R /Filter /FlateDecode >>" },+      { "line": 5, "column": 1, "offset": 71, "match": "stream\nx\u0001EŽ»" },+      { "line": 7, "column": 35, "offset": 135, "match": "\u00021\u0014D{¿â”Z˜½‰y˜V\u0011l\u0017.ø\u0001a-d×eÍÿƒ\u0017,¬†™9\f³1²Q\u0002¹F—â©\u0012ó™�\\LY\nŸ‰\u0007o†k÷´ŽÐ›áâj©Rj²@8þ­í” »¶pQ£DÄ£\rï iÂ\u000bº0¨z¬|²¿Oó¼\u001eÐ\u00177µ7ã\u0017Nÿ ¥" },+      { "line": 9, "column": 1, "offset": 202, "match": "endstream\nendobj" },+      { "line": 11, "column": 1, "offset": 219, "match": "5 0 obj" },+      { "line": 11, "column": 5, "offset": 223, "match": "5 0 obj\n123" },+      { "line": 13, "column": 1, "offset": 231, "match": "endobj\n2 0 obj" },+      { "line": 14, "column": 3, "offset": 240, "match": "2 0 obj" },+      { "line": 15, "column": 5, "offset": 250, "match": "<< /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]" },+      { "line": 15, "column": 17, "offset": 262, "match": "<< /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]" },+      { "line": 15, "column": 26, "offset": 271, "match": "<< /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]" },+      { "line": 15, "column": 31, "offset": 276, "match": "<< /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]" },+      { "line": 15, "column": 43, "offset": 288, "match": "<< /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]" },+      { "line": 15, "column": 48, "offset": 293, "match": "<< /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]" },+      { "line": 15, "column": 59, "offset": 304, "match": "<< /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]" },+      { "line": 15, "column": 64, "offset": 309, "match": "<< /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]" },+      { "line": 15, "column": 76, "offset": 321, "match": "<< /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]" },+      { "line": 17, "column": 1, "offset": 335, "match": "endobj\n6 0 obj" },+      { "line": 18, "column": 3, "offset": 344, "match": "6 0 obj" },+      { "line": 19, "column": 5, "offset": 354, "match": "<< /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R >> /Font << /TT1 8 0 R" },+      { "line": 19, "column": 16, "offset": 365, "match": "<< /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R >> /Font << /TT1 8 0 R" },+      { "line": 19, "column": 29, "offset": 378, "match": "<< /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R >> /Font << /TT1 8 0 R" },+      { "line": 19, "column": 44, "offset": 393, "match": "<< /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R >> /Font << /TT1 8 0 R" },+      { "line": 19, "column": 50, "offset": 399, "match": "<< /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R >> /Font << /TT1 8 0 R" },+      { "line": 19, "column": 58, "offset": 407, "match": "<< /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R >> /Font << /TT1 8 0 R" },+      { "line": 19, "column": 67, "offset": 416, "match": "<< /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R >> /Font << /TT1 8 0 R" },+      { "line": 19, "column": 73, "offset": 422, "match": "<< /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R >> /Font << /TT1 8 0 R" },+      { "line": 21, "column": 1, "offset": 432, "match": "endobj\n9 0 obj" },+      { "line": 22, "column": 3, "offset": 441, "match": "9 0 obj" },+      { "line": 23, "column": 5, "offset": 451, "match": "<< /Length 10 0 R /N 1 /Alternate /DeviceGray /Filter /FlateDecode >>" },+      { "line": 23, "column": 15, "offset": 461, "match": "<< /Length 10 0 R /N 1 /Alternate /DeviceGray /Filter /FlateDecode >>" },+      { "line": 23, "column": 20, "offset": 466, "match": "<< /Length 10 0 R /N 1 /Alternate /DeviceGray /Filter /FlateDecode >>" },+      { "line": 23, "column": 25, "offset": 471, "match": "<< /Length 10 0 R /N 1 /Alternate /DeviceGray /Filter /FlateDecode >>" },+      { "line": 23, "column": 48, "offset": 494, "match": "<< /Length 10 0 R /N 1 /Alternate /DeviceGray /Filter /FlateDecode >>" },+      { "line": 24, "column": 1, "offset": 517, "match": "stream\nx\u0001…U]h\u001cU\u0014>»sg\u0003\u0012\u0007\u001f´\r-´ƒ?m\té2‰V\u0013‹µÛMºI\u0013·ëfS›*Êtv6;Ídfœ™Ý&¡O¥à›\u0016\u0004é« >Æ‚\b¶*6/ö¥¥Å’J5\u000f" },+      { "line": 25, "column": 19, "offset": 547, "match": "x\u0001…U]h\u001cU\u0014>»sg\u0003\u0012\u0007\u001f´\r-´ƒ?m\té2‰V\u0013‹µÛMºI\u0013·ëfS›*Êtv6;Ídfœ™Ý&¡O¥à›\u0016\u0004é« >Æ‚\b¶*6/ö¥¥Å’J5\u000f" },+      { "line": 26, "column": 307, "offset": 1006, "match": "\u0011ZŒ (}Rð;3ÛdvA2Ã�ùî¹çž{Îwî¹—¨ëoÝóì´J4ç„~¡œ›>9}JíºMiR¨›ðèFàåJ¥\tÆŽë˜üo\u001eÞ¥\u0014Kîìg[íc[öäª\u0019\u0018к†æV\u0003cŽ(¥\u0011ej†ç‡D]— \u001f<\u001bzŒo\u0003?9[)ç�×€•Ö\\@zª`:¦o\u0019jÁ×\u0017Ô’ïÖ,;éëVãlcËgÎn°¯üìFë\u000ef'Çñï…Ï\u0017Lgj\u0012x\u001fð’¡�0î\u0003¾Û´N\u0014cœN{á‘r¬ŸÎ6f§r-ùÉštª%¿PoŒ2Î\u0012¥—\u0016ë•7€Ÿ\u0000^uN\u0017�·ô×gÝq¶ÓC$õ\u0018Aþ\u0014ð³ÀZÝ\u001cã<©À\u0015ß-³>Ëê9<\u0002ü2ð%+\u001c«\u0000þôCМd9° ÅzžýÄZ\"{F?V\u0002Þ\u0006|È´\u000b¼\u0016숊\u0017–Øæ ð¼c\u0017y-Ä..›A\u0014/b\u0017?…õÊh¬/§C¿ÂsŸ&’÷Ô¬£cÀàD\u001e­û£,‡?rèÙÑÞz\u0011xÉo”9ö=Àkº?R\u0000†ÍÌcU}˜y~\u0001x€N¤t2É¥Óø\u001aäпˆ7 ‹š\u0011òÈÇX\r}›" },+      { "line": 30, "column": 29, "offset": 1639, "match": "Tß\fL¿iV³Äw7Ï#úëõèNNm»a4üf,£Tê&Ñ·�“4\nendstream" },+      { "line": 32, "column": 1, "offset": 1651, "match": "endobj\n10 0 obj" },+      { "line": 33, "column": 4, "offset": 1661, "match": "10 0 obj" },+      { "line": 34, "column": 1, "offset": 1667, "match": "1116\nendobj" },+      { "line": 36, "column": 1, "offset": 1679, "match": "7 0 obj" },+      { "line": 36, "column": 5, "offset": 1683, "match": "7 0 obj\n[ /ICCBased 9 0 R ]" },+      { "line": 37, "column": 4, "offset": 1690, "match": "[ /ICCBased 9 0 R ]" },+      { "line": 37, "column": 15, "offset": 1701, "match": "[ /ICCBased 9 0 R ]" },+      { "line": 38, "column": 1, "offset": 1707, "match": "endobj\n3 0 obj" },+      { "line": 39, "column": 3, "offset": 1716, "match": "3 0 obj" },+      { "line": 40, "column": 5, "offset": 1726, "match": "<< /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 2 0 R ] >>" },+      { "line": 40, "column": 18, "offset": 1739, "match": "<< /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 2 0 R ] >>" },+      { "line": 40, "column": 30, "offset": 1751, "match": "<< /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 2 0 R ] >>" },+      { "line": 40, "column": 42, "offset": 1763, "match": "<< /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 2 0 R ] >>" },+      { "line": 40, "column": 51, "offset": 1772, "match": "<< /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 2 0 R ] >>" },+      { "line": 40, "column": 58, "offset": 1779, "match": "<< /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 2 0 R ] >>" },+      { "line": 40, "column": 62, "offset": 1783, "match": "<< /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 2 0 R ] >>" },+      { "line": 41, "column": 1, "offset": 1790, "match": "endobj\n11 0 obj" },+      { "line": 42, "column": 4, "offset": 1800, "match": "11 0 obj" },+      { "line": 43, "column": 5, "offset": 1810, "match": "<< /Type /Catalog /Pages 3 0 R >>" },+      { "line": 43, "column": 20, "offset": 1825, "match": "<< /Type /Catalog /Pages 3 0 R >>" },+      { "line": 43, "column": 28, "offset": 1833, "match": "<< /Type /Catalog /Pages 3 0 R >>" },+      { "line": 44, "column": 1, "offset": 1840, "match": "endobj\n8 0 obj" },+      { "line": 45, "column": 3, "offset": 1849, "match": "8 0 obj" },+      { "line": 46, "column": 5, "offset": 1859, "match": "<< /Type /Font /Subtype /TrueType /BaseFont /GQTMZF+Menlo-Regular /FontDescriptor" },+      { "line": 46, "column": 17, "offset": 1871, "match": "<< /Type /Font /Subtype /TrueType /BaseFont /GQTMZF+Menlo-Regular /FontDescriptor" },+      { "line": 46, "column": 36, "offset": 1890, "match": "<< /Type /Font /Subtype /TrueType /BaseFont /GQTMZF+Menlo-Regular /FontDescriptor" },+      { "line": 46, "column": 68, "offset": 1922, "match": "<< /Type /Font /Subtype /TrueType /BaseFont /GQTMZF+Menlo-Regular /FontDescriptor\n12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602" },+      { "line": 47, "column": 4, "offset": 1940, "match": "12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602" },+      { "line": 47, "column": 9, "offset": 1945, "match": "12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602" },+      { "line": 47, "column": 37, "offset": 1973, "match": "12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602" },+      { "line": 47, "column": 51, "offset": 1987, "match": "12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602" },+      { "line": 47, "column": 65, "offset": 2001, "match": "12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602" },+      { "line": 47, "column": 74, "offset": 2010, "match": "12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602\n0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602" },+      { "line": 48, "column": 3, "offset": 2016, "match": "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602" },+      { "line": 48, "column": 7, "offset": 2020, "match": "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602" },+      { "line": 48, "column": 11, "offset": 2024, "match": "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602" },+      { "line": 48, "column": 15, "offset": 2028, "match": "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602" },+      { "line": 48, "column": 19, "offset": 2032, "match": "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602" },+      { "line": 48, "column": 23, "offset": 2036, "match": "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602" },+      { "line": 48, "column": 27, "offset": 2040, "match": "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602" },+      { "line": 48, "column": 31, "offset": 2044, "match": "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602" },+      { "line": 48, "column": 35, "offset": 2048, "match": "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602" },+      { "line": 48, "column": 39, "offset": 2052, "match": "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602" },+      { "line": 48, "column": 43, "offset": 2056, "match": "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602" },+      { "line": 48, "column": 47, "offset": 2060, "match": "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602" },+      { "line": 48, "column": 51, "offset": 2064, "match": "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602" },+      { "line": 48, "column": 55, "offset": 2068, "match": "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602" },+      { "line": 48, "column": 61, "offset": 2074, "match": "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602" },+      { "line": 48, "column": 65, "offset": 2078, "match": "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602" },+      { "line": 48, "column": 69, "offset": 2082, "match": "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602" },+      { "line": 48, "column": 73, "offset": 2086, "match": "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602\n0 0 602 ] >>" },+      { "line": 49, "column": 3, "offset": 2092, "match": "0 0 602 ] >>" },+      { "line": 50, "column": 1, "offset": 2103, "match": "endobj\n12 0 obj" },+      { "line": 51, "column": 4, "offset": 2113, "match": "12 0 obj" },+      { "line": 52, "column": 5, "offset": 2123, "match": "<< /Type /FontDescriptor /FontName /GQTMZF+Menlo-Regular /Flags 33 /FontBBox" },+      { "line": 52, "column": 27, "offset": 2145, "match": "<< /Type /FontDescriptor /FontName /GQTMZF+Menlo-Regular /Flags 33 /FontBBox" },+      { "line": 52, "column": 59, "offset": 2177, "match": "<< /Type /FontDescriptor /FontName /GQTMZF+Menlo-Regular /Flags 33 /FontBBox" },+      { "line": 52, "column": 69, "offset": 2187, "match": "<< /Type /FontDescriptor /FontName /GQTMZF+Menlo-Regular /Flags 33 /FontBBox\n[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729" },+      { "line": 53, "column": 8, "offset": 2203, "match": "[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729" },+      { "line": 53, "column": 23, "offset": 2218, "match": "[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729" },+      { "line": 53, "column": 38, "offset": 2233, "match": "[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729" },+      { "line": 53, "column": 50, "offset": 2245, "match": "[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729" },+      { "line": 53, "column": 64, "offset": 2259, "match": "[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729" },+      { "line": 54, "column": 2, "offset": 2274, "match": "/StemV 99 /XHeight 547 /StemH 83 /AvgWidth 602 /MaxWidth 602 /FontFile2 13 0 R" },+      { "line": 54, "column": 12, "offset": 2284, "match": "/StemV 99 /XHeight 547 /StemH 83 /AvgWidth 602 /MaxWidth 602 /FontFile2 13 0 R" },+      { "line": 54, "column": 25, "offset": 2297, "match": "/StemV 99 /XHeight 547 /StemH 83 /AvgWidth 602 /MaxWidth 602 /FontFile2 13 0 R" },+      { "line": 54, "column": 35, "offset": 2307, "match": "/StemV 99 /XHeight 547 /StemH 83 /AvgWidth 602 /MaxWidth 602 /FontFile2 13 0 R" },+      { "line": 54, "column": 49, "offset": 2321, "match": "/StemV 99 /XHeight 547 /StemH 83 /AvgWidth 602 /MaxWidth 602 /FontFile2 13 0 R" },+      { "line": 54, "column": 63, "offset": 2335, "match": "/StemV 99 /XHeight 547 /StemH 83 /AvgWidth 602 /MaxWidth 602 /FontFile2 13 0 R" },+      { "line": 54, "column": 76, "offset": 2348, "match": "/StemV 99 /XHeight 547 /StemH 83 /AvgWidth 602 /MaxWidth 602 /FontFile2 13 0 R" },+      { "line": 56, "column": 1, "offset": 2355, "match": "endobj\n13 0 obj" },+      { "line": 57, "column": 4, "offset": 2365, "match": "13 0 obj" },+      { "line": 58, "column": 5, "offset": 2375, "match": "<< /Length 14 0 R /Length1 4064 /Filter /FlateDecode >>" },+      { "line": 58, "column": 15, "offset": 2385, "match": "<< /Length 14 0 R /Length1 4064 /Filter /FlateDecode >>" },+      { "line": 58, "column": 20, "offset": 2390, "match": "<< /Length 14 0 R /Length1 4064 /Filter /FlateDecode >>" },+      { "line": 58, "column": 34, "offset": 2404, "match": "<< /Length 14 0 R /Length1 4064 /Filter /FlateDecode >>" },+      { "line": 59, "column": 1, "offset": 2427, "match": "stream\nx\u0001ÝW{xTÅ\u0015?sw6¯Í>’MHH€]Öå•,�„·R\u0016Hxˆ /ë.ˆòH (!\bA´1�JQ\tÁ@…\bH}\u0015Q©µ+E]\tÄT¤b#E„ \u0002" },+      { "line": 60, "column": 33, "offset": 2475, "match": "x\u0001ÝW{xTÅ\u0015?sw6¯Í>’MHH€]Öå•,�„·R\u0016Hxˆ /ë.ˆòH (!\bA´1�JQ\tÁ@…\bH}\u0015Q©µ+E]\tÄT¤b#E„ \u0002" },+      { "line": 61, "column": 187, "offset": 2776, "match": "ø¢hŠ\u0014!Ø\u0000CϽ\u001bý>í×ïë¿íÜ�3çüæÌyÝ»÷Δ-\\\\DVª$P`VÉŒ\u0005d6ëI\u001eŠgÝSæ6Eн—HË�½`NITŽ‘åNsæÝ7;*'Nfy@qь¨LWxìWÌ@T\u0016}x¼®¸¤Œí\u0018Íú.\u0013×¼ÒYmó‰£\f°dƽmþé8Ëîù3JŠxäf�0é¶ tQ™)’½šÇì\u0005\u000b‹ÚôE�(¦St®�\u001a–\u0005w©Y)‹î\"\u000biä �”ÄЭ¬+yÖ˜×b²–>}ö�;ì7\\¤N±æâ½eéy\u0006s(¸¤ßå•W…¬�½…Åè¤1ÁëbJT\u0007\"ýàå•×’e½iɘù¾É\bÅf½®UŠ”íë¦É¡™\"…j\tL+I\u0017.RÌ'›4‰\u0003‚pš¼Ã¤vÚĈÍä\u0013·=R\u000eõ‰Dª`ÌJ>¦\t”Ë4Þ´\u0017gjÅ’�‘\u0018“·˜:Òäu\u0013‡‰h&\"\u0002!\u0005¥pµ\u0002W\u0014.+´æâŸuø®\u0002—Zªå%…K\rzËÅ�l©FK¥~ñB\u0017y1„‹\u0001ýB\u0017|{>G~ÛŠó9ø‡Â9…orqÖ…¿×¢™ClVhŽ\\;\u0018¸¦=\u0012_�)”_ÕâL!þ¦púË\fyZáË\f|¡ðù]øLáÓ:œ:™.Oµâd:NÔâ\u0013…�\u0015Ž\u001fK‘Ç\u0015Ž¥àh->ú0E~¤ðáê\u0004ùa" },+      { "line": 61, "column": 356, "offset": 2996, "match": "ø¢hŠ\u0014!Ø\u0000CϽ\u001bý>í×ïë¿íÜ�3çüæÌyÝ»÷Δ-\\\\DVª$P`VÉŒ\u0005d6ëI\u001eŠgÝSæ6Eн—HË�½`NITŽ‘åNsæÝ7;*'Nfy@qь¨LWxìWÌ@T\u0016}x¼®¸¤Œí\u0018Íú.\u0013×¼ÒYmó‰£\f°dƽmþé8Ëîù3JŠxäf�0é¶ tQ™)’½šÇì\u0005\u000b‹ÚôE�(¦St®�\u001a–\u0005w©Y)‹î\"\u000biä �”ÄЭ¬+yÖ˜×b²–>}ö�;ì7\\¤N±æâ½eéy\u0006s(¸¤ßå•W…¬�½…Åè¤1ÁëbJT\u0007\"ýàå•×’e½iɘù¾É\bÅf½®UŠ”íë¦É¡™\"…j\tL+I\u0017.RÌ'›4‰\u0003‚pš¼Ã¤vÚĈÍä\u0013·=R\u000eõ‰Dª`ÌJ>¦\t”Ë4Þ´\u0017gjÅ’�‘\u0018“·˜:Òäu\u0013‡‰h&\"\u0002!\u0005¥pµ\u0002W\u0014.+´æâŸuø®\u0002—Zªå%…K\rzËÅ�l©FK¥~ñB\u0017y1„‹\u0001ýB\u0017|{>G~ÛŠó9ø‡Â9…orqÖ…¿×¢™ClVhŽ\\;\u0018¸¦=\u0012_�)”_ÕâL!þ¦púË\fyZáË\f|¡ðù]øLáÓ:œ:™.Oµâd:NÔâ\u0013…�\u0015Ž\u001fK‘Ç\u0015Ž¥àh->ú0E~¤ðáê\u0004ùa\n>¨À‘Ahb¡i\u0010\u000e+\u001cz?^\u001eRx?\u001e\u0007\u0015ÞS8På”\u00072ñ×TìWx·\u0016�«|²Qá/" },+      { "line": 66, "column": 95, "offset": 3301, "match": "ñä\u0013\u000eùd:žpà7ñجð8;y\\aS\"6nè)7*lè‰ÇØÿcµ¨]_'k\u0015Öó³µ¾\u000eë+õuk|rÝ4¬\u000bè�*üZa-Ëkë°Æ‡\u001a.FÍP<ÂÙ>âÂê\u0004T3P]ˆU\\´U>T9±Ráa…‡\u0014\u001e\\á”\u000f*¬pâW\nË\u0015\u001ep\u000e“\u000fLÂ/\u0015*ïŲ¥\u0015r™ÂÒ" },+      { "line": 70, "column": 35, "offset": 3383, "match": "‹Ë¬r±\u001d‹#‚\u0002Gõ2+Ê\u001aôEIX\u0014Ð\u0017*Ü­°@¡tþ$YZ‹ù%ÝäüI(é†y\nwåâN…¹¹(nÅœ:ÌV(R(T˜5³£œ¥0“\u001crfGÌP˜®p‡ÂíS\u0012äí6L+Ämû0•…©.LI\u0000?ÑA\u0017nUø¹Â-\u0019éò–\\LV˜¤0QaB\u0005Æ+ÜìÂ8…±Â/Ç*ÜT‡1Ýpãè4ycŒ\u001ež$G§aTAš\u001c¥0’¥‘…\u0018ÁÒˆ:\u0014¤!Ÿ�üþ\u0018>Ì)‡'axD\u000b\u0004âôaCír˜\u0013Ã\"\u001a±44`“Cí\u0018\u001a\u0011\r,\u0005†XeÀ†@DT²4Ä\u001a'‡X1$\"\u0002�Býg" },+      { "line": 71, "column": 146, "offset": 3575, "match": "wåâN…¹¹(nÅœ:ÌV(R(T˜5³£œ¥0“\u001crfGÌP˜®p‡ÂíS\u0012äí6L+Ämû0•…©.LI\u0000?ÑA\u0017nUø¹Â-\u0019éò–\\LV˜¤0QaB\u0005Æ+ÜìÂ8…±Â/Ç*ÜT‡1Ýpãè4ycŒ\u001ež$G§aTAš\u001c¥0’¥‘…\u0018ÁÒˆ:\u0014¤!Ÿ�üþ\u0018>Ì)‡'axD\u000b\u0004âôaCír˜\u0013Ã\"\u001a±44`“Cí\u0018\u001a\u0011\r,\u0005†XeÀ†@DT²4Ä\u001a'‡X1$\"\u0002�Býg\nƒ9„Á­¸Aáún\u0018¤0�\u000b<°\u0010\u0003z·—\u0003Æ ¿B?¿KöSè;\u0006}zµ—}Æ �‡<…\\VÌUèÍÓ½Û£W{ä0—“†žq©²g\u001düÙÉÒï‚?¢\u0019n³\u001dN™�Œl#ÜZ=«‡Of)ô`Í\u001e>t×\u0006Éî" },+      { "line": 74, "column": 36, "offset": 3743, "match": "p�\u001d^…Îv»ì¬àqû¥§\u0002n?:�AGöÜQ¡ƒB&×6S!ƒïJF:Ú+¤+¤)´c\u000bíF 5Å/S‡!Åå�)~¸\u001cHf½d\u0017’x}’‚“3w\u000eƒƒ=8œpDkg·Y¥Ý\u000e{´v¶Äxi³Â\u0016­]\"×.1\u001e‰\\»\u001dº5\u000eVãÙê¯'(Äs&ñ" },+      { "line": 75, "column": 2, "offset": 3825, "match": "q©ˆu FÁ¦-" },+      { "line": 79, "column": 1, "offset": 5169, "match": "endstream\nendobj" },+      { "line": 81, "column": 1, "offset": 5186, "match": "14 0 obj" },+      { "line": 81, "column": 6, "offset": 5191, "match": "14 0 obj\n2734" },+      { "line": 83, "column": 1, "offset": 5200, "match": "endobj\n15 0 obj" },+      { "line": 84, "column": 4, "offset": 5210, "match": "15 0 obj" },+      { "line": 86, "column": 1, "offset": 5224, "match": "endobj\n16 0 obj" },+      { "line": 87, "column": 4, "offset": 5234, "match": "16 0 obj" },+      { "line": 88, "column": 2, "offset": 5241, "match": "(Mac OS X 10.12.6 Quartz PDFContext)" },+      { "line": 88, "column": 9, "offset": 5248, "match": "(Mac OS X 10.12.6 Quartz PDFContext)" },+      { "line": 88, "column": 19, "offset": 5258, "match": "(Mac OS X 10.12.6 Quartz PDFContext)" },+      { "line": 89, "column": 1, "offset": 5277, "match": "endobj\n17 0 obj" },+      { "line": 90, "column": 4, "offset": 5287, "match": "17 0 obj" },+      { "line": 92, "column": 1, "offset": 5304, "match": "endobj\n18 0 obj" },+      { "line": 93, "column": 4, "offset": 5314, "match": "18 0 obj" },+      { "line": 95, "column": 1, "offset": 5346, "match": "endobj\n19 0 obj" },+      { "line": 96, "column": 4, "offset": 5356, "match": "19 0 obj" },+      { "line": 98, "column": 1, "offset": 5365, "match": "endobj\n20 0 obj" },+      { "line": 99, "column": 4, "offset": 5375, "match": "20 0 obj" },+      { "line": 101, "column": 1, "offset": 5385, "match": "endobj\n1 0 obj" },+      { "line": 102, "column": 3, "offset": 5394, "match": "1 0 obj" },+      { "line": 103, "column": 5, "offset": 5404, "match": "<< /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate" },+      { "line": 103, "column": 14, "offset": 5413, "match": "<< /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate" },+      { "line": 103, "column": 19, "offset": 5418, "match": "<< /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate" },+      { "line": 103, "column": 31, "offset": 5430, "match": "<< /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate" },+      { "line": 103, "column": 36, "offset": 5435, "match": "<< /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate" },+      { "line": 103, "column": 47, "offset": 5446, "match": "<< /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate" },+      { "line": 103, "column": 52, "offset": 5451, "match": "<< /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate" },+      { "line": 103, "column": 68, "offset": 5467, "match": "<< /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate" },+      { "line": 103, "column": 73, "offset": 5472, "match": "<< /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate\n18 0 R /Keywords 19 0 R /AAPL:Keywords 20 0 R >>" },+      { "line": 104, "column": 4, "offset": 5483, "match": "18 0 R /Keywords 19 0 R /AAPL:Keywords 20 0 R >>" },+      { "line": 104, "column": 9, "offset": 5488, "match": "18 0 R /Keywords 19 0 R /AAPL:Keywords 20 0 R >>" },+      { "line": 104, "column": 21, "offset": 5500, "match": "18 0 R /Keywords 19 0 R /AAPL:Keywords 20 0 R >>" },+      { "line": 104, "column": 31, "offset": 5510, "match": "18 0 R /Keywords 19 0 R /AAPL:Keywords 20 0 R >>" },+      { "line": 104, "column": 43, "offset": 5522, "match": "18 0 R /Keywords 19 0 R /AAPL:Keywords 20 0 R >>" },+      { "line": 105, "column": 1, "offset": 5529, "match": "endobj\nxref" },+      { "line": 107, "column": 1, "offset": 5541, "match": "0 21" },+      { "line": 108, "column": 1, "offset": 5546, "match": "0000000000 65535 f " },+      { "line": 108, "column": 18, "offset": 5563, "match": "0000000000 65535 f \n0000005392 00000 n " },+      { "line": 109, "column": 12, "offset": 5577, "match": "0000005392 00000 n " },+      { "line": 110, "column": 1, "offset": 5586, "match": "0000000238 00000 n " },+      { "line": 110, "column": 18, "offset": 5603, "match": "0000000238 00000 n \n0000001714 00000 n " },+      { "line": 111, "column": 12, "offset": 5617, "match": "0000001714 00000 n " },+      { "line": 112, "column": 1, "offset": 5626, "match": "0000000022 00000 n " },+      { "line": 112, "column": 18, "offset": 5643, "match": "0000000022 00000 n \n0000000219 00000 n " },+      { "line": 113, "column": 12, "offset": 5657, "match": "0000000219 00000 n " },+      { "line": 114, "column": 1, "offset": 5666, "match": "0000000342 00000 n " },+      { "line": 114, "column": 18, "offset": 5683, "match": "0000000342 00000 n \n0000001679 00000 n " },+      { "line": 115, "column": 12, "offset": 5697, "match": "0000001679 00000 n " },+      { "line": 116, "column": 1, "offset": 5706, "match": "0000001847 00000 n " },+      { "line": 116, "column": 18, "offset": 5723, "match": "0000001847 00000 n \n0000000439 00000 n " },+      { "line": 117, "column": 12, "offset": 5737, "match": "0000000439 00000 n " },+      { "line": 118, "column": 1, "offset": 5746, "match": "0000001658 00000 n " },+      { "line": 118, "column": 18, "offset": 5763, "match": "0000001658 00000 n \n0000001797 00000 n " },+      { "line": 119, "column": 12, "offset": 5777, "match": "0000001797 00000 n " },+      { "line": 120, "column": 1, "offset": 5786, "match": "0000002110 00000 n " },+      { "line": 120, "column": 18, "offset": 5803, "match": "0000002110 00000 n \n0000002362 00000 n " },+      { "line": 121, "column": 12, "offset": 5817, "match": "0000002362 00000 n " },+      { "line": 122, "column": 1, "offset": 5826, "match": "0000005186 00000 n " },+      { "line": 122, "column": 18, "offset": 5843, "match": "0000005186 00000 n \n0000005207 00000 n " },+      { "line": 123, "column": 12, "offset": 5857, "match": "0000005207 00000 n " },+      { "line": 124, "column": 1, "offset": 5866, "match": "0000005231 00000 n " },+      { "line": 124, "column": 18, "offset": 5883, "match": "0000005231 00000 n \n0000005284 00000 n " },+      { "line": 125, "column": 12, "offset": 5897, "match": "0000005284 00000 n " },+      { "line": 126, "column": 1, "offset": 5906, "match": "0000005311 00000 n " },+      { "line": 126, "column": 18, "offset": 5923, "match": "0000005311 00000 n \n0000005353 00000 n " },+      { "line": 127, "column": 12, "offset": 5937, "match": "0000005353 00000 n " },+      { "line": 128, "column": 1, "offset": 5946, "match": "0000005372 00000 n " },+      { "line": 128, "column": 18, "offset": 5963, "match": "0000005372 00000 n \ntrailer" },+      { "line": 130, "column": 5, "offset": 5978, "match": "<< /Size 21 /Root 11 0 R /Info 1 0 R /ID [ <8db88d3335070bd9583341583cf769a3>" },+      { "line": 130, "column": 14, "offset": 5987, "match": "<< /Size 21 /Root 11 0 R /Info 1 0 R /ID [ <8db88d3335070bd9583341583cf769a3>" },+      { "line": 130, "column": 22, "offset": 5995, "match": "<< /Size 21 /Root 11 0 R /Info 1 0 R /ID [ <8db88d3335070bd9583341583cf769a3>" },+      { "line": 130, "column": 27, "offset": 6000, "match": "<< /Size 21 /Root 11 0 R /Info 1 0 R /ID [ <8db88d3335070bd9583341583cf769a3>" },+      { "line": 130, "column": 34, "offset": 6007, "match": "<< /Size 21 /Root 11 0 R /Info 1 0 R /ID [ <8db88d3335070bd9583341583cf769a3>" },+      { "line": 130, "column": 39, "offset": 6012, "match": "<< /Size 21 /Root 11 0 R /Info 1 0 R /ID [ <8db88d3335070bd9583341583cf769a3>" },+      { "line": 132, "column": 1, "offset": 6092, "match": "startxref\n5536" }+    ]+  },+  {+    "file": "Hello.sh",+    "matches": [+      { "line": 1, "column": 8, "offset": 7, "match": "#!/bin/sh\necho \"Hello World!\"" },+      { "line": 2, "column": 7, "offset": 16, "match": "echo \"Hello World!\"" }+    ]+  }+]

tests/out/Hello_wnhS--json-v.out

new file mode 100644@@ -0,0 +1,61 @@+[+  {+    "file": "Hello.class",+    "matches": [+      { "match": "Êþº¾\u0000\u0000\u00004\u0000\u001d" },+      { "match": "\u0000\u0006\u0000\u000f\t\u0000\u0010\u0000\u0011\b\u0000\u0012" },+      { "match": "\u0000\u0013\u0000\u0014\u0007\u0000\u0015\u0007\u0000\u0016\u0001\u0000\u0006<init>\u0001\u0000\u0003()V\u0001\u0000\u0004Code\u0001\u0000\u000fLineNumberTable\u0001\u0000\u0004main\u0001\u0000\u0016([Ljava/lang/String;)V\u0001\u0000" },+      { "match": "SourceFile\u0001\u0000" },+      { "match": "\u0000\u0000\u0000\u0006\u0000\u0001\u0000\u0000\u0000\u0003\u0000\t\u0000\u000b\u0000\f\u0000\u0001\u0000\t\u0000\u0000\u0000%\u0000\u0002\u0000\u0001\u0000\u0000\u0000\t²\u0000\u0002\u0012\u0003¶\u0000\u0004±\u0000\u0000\u0000\u0001\u0000" },+      { "match": "\u0000\u0000\u0000" },+      { "match": "\u0000\u0002\u0000\u0000\u0000\u0005\u0000\b\u0000\u0006\u0000\u0001\u0000\r\u0000\u0000\u0000\u0002\u0000\u000e" }+    ]+  },+  {+    "file": "Hello.java",+    "matches": [+      { "match": "" },+      { "match": "  }" },+      { "match": "}" }+    ]+  },+  {+    "file": "Hello.pdf",+    "matches": [+      { "match": ">>" },+      { "match": ">> >>" },+      { "match": "ÐpÐ|ô\fh\u0015€tZ\u0000*%´LôX'ž£R\u0015=•f¢YA„ØÊý¨oP~×§Ô€´Në�Ö�^£_\"É<ýJsèç!m`l¦Ãn\u001e^8´\b\u000fØ\u0013¶ù eÓ\u0015Û…&žG;(&Ä+bP\f‘*^\u0015‡Å!1\fé�8\u0018͉½OúÎ~>ذô.ÖMú¾\f\u000eB¬gÃ3\u0007¬p4\u0001<ø\u0007ëÎFš\t¶.îhìó¼�Þ?ï¿c\u0019·>ø³�½\u0000ú1'¿Á¢\u000bk&%æ^?÷MOÂCuE|õÖ�îëçèx2KQÞª�Y’×äûò" },+      { "match": "¾÷äÕ¤\rùgy\u0015ï½¶\\=Ê\u000bÿ“¹Í!F;’ÍAÎ<›Q´qÆ\u001bÀ!¸©Esö·YL²é¶b´`ÉB”�«¸ÿË\tóÃ<·±Rs.îð¼·?c6Í÷Š\u000f‹t¾O»¬­kŸh?jh+ÚÇ@¿K\u001fJ_JßJW¤«Ò\rR¥kÒ²ô�ô½ô¹ô5z_@º,]éØIqì\u001b»\u0007~Æ{Öhí0f†³\u0014\u0010óÂÚÌ" },+      { "match": "K\u001fñw\u0006c›ù3¡Õ^\u0003�»c-刲SyF\u0019Vv+Ï)\u0013J¯r@9¬lW\u0006Ðú•Qe/Fvn°dc=΀…’g‹¦#®â<±Wu°çÃK\u001dï¦_\\ÃÖ†5ØI=\u000ežÙÚ¦\u000e¯\u0011W¿\u0015Uc¼;]œ\u0006:M!b‹Î\"r\u001f:œ\u001f'ªþÎÙ\\“85Roâ”°Ä.Ñ/ÆZ5˜\u0013\u0007P…ãmõ8ÈUš\u0019É\fgr¤fz3C™þÌ1ÆQ¬Ñù’Ù‹Ñ!|G\u0012Þ3Ë1ÿ›5Äg\u0018ï\u001dæ¨\tl£‡[+4çqß\u0011å]oÁ·fê¡: i/©9\\¯¦:æ\u0018Ù>U·m5\u001a" },+      { "match": ">>" },+      { "match": "ïT`ŸÂÛ" },+      { "match": "VØ»)Q¾¥°GáM…?)4°½\u0006\u0017Þ°¢~w�¬WؽkšÜ]‡Ý•ú®:ŸÜ5\r»\u0002z�\u000f;\u0015^¯E¤f¨|MáU\u001e^mÅ+lk‡Â\u001f\u000b±½\u0010/Û\u0010NÂ\u001f\u0014^R�«ø½Â‹" },+      { "match": "¿KÂ6…\u0017ž·É\u0017rñ¼\rÏmuÊçºa«\u0013ÏnñËg+°Å�ß*<£ð´ÂSO¦Ë§" },+      { "match": "TtÄý" },+      { "match": "å6üBa‰Â=" },+      { "match": "Ý\u0014º*t±Ã—:Lú" },+      { "match": "Ò\u0005prh…Æ€6\b‚\u0003\u0010~�\u0003\"\"" },+      { "match": "W¬\u0016Yÿ?�þÇSáOg„\u001a;M¬åÑØGDè!m\u0019¥¿¿\"´‡u4S/\"\u001aÅJ±“ù­¼·h¤åt^ÄãmÑŸ¹z^\u001bÔ=ŒÖÐfsu\rNÓbì¢Cô\u000e\u001dcî´\u0018\b^+\u000e‘Gœ`?+ð¡¡ž¥=LËQ� è$Jh‹x‰-–SD”Ò2�Gm\"[Þ¯\u001fdt?=Ä×£´…J™72XÎñL;h\u0015] \rÚ\u0019šÂüNÚËñ(þüš¹ˆ&jaKÛ´ÁÚlÖÛËÖ6Ñ&±œšh‘Nü)WtJ6iYlu\u0007g@4“6Ë&¹Á¨\u0007�Mò\u001cÏ\u0010u°D,®\u0018/gaÔn«Ø%zkãè\u0010¯/§É¸\rwã˜X¡{õ%8C5\u001aa:ÝI\u0007d“ÅE51^ª±Ì\u0016÷éÓÍ«œ­•kKôéb\u001b�a›3ñ\u001dË\u001eŽl³™1Ñ\u000em¢\u001c'Çqγ\u0019ÛlÒš(µ8h?Z¹îk5%Fé#0„ó)×o¢\rô\fÛíÊ•!*E_ö^Jåruô¢m|ùåjÔrEÍjˆ<m0mÖf‹U\u001cm\u000bW³\u0014ùÔŸ}t�gi…ØÁqSL\u0005-’M¼U$êAôZŒEêü÷¦l·#¬ùF\u0017†\u0003\u0013‚î}!�?û'¢Û\u0011ã\u000eÓøpâ}îȵkãƒz†\f…ef\u0018¾Ø°îóžúO“§üÙcÆ\u0007Ý\u0011Ñ® ¿ÍlÁô|\u0006'\u0005Ù\u0003ÿ\f˜Ý\u00150\u0016\u0005F‡¥�£§‡Ý³ŠÝUŽ*ï *GÑ ?ïÿ²Ç0\u0019\u001f|YˆGB\u0011qmE„ò;¼Î»HÜq;OÇe»Ý\u0005sóÃb:\u000bñÙ\fôð0—�í\u001eÁaŽ˜\u0018ô†ÜUîªÑ…Uî\u0011îâ\u0019…\u001c·9òDQU(‡3˜\u0014œËtrÐ\u0013\u000e„2~`‹B!ûհÃKX½*Ä\u0016îl³À£\tå\\e¥Äì1î0ºŒ\u000fN\b†+ó3Â�üP†Çã.\b7Œ\u000f†\u001bò3<¡\u0010kÙ~ˆ”#®˜›Ö\u0016³�c¶õàyGÔ" },+      { "match": "—(�\u0011¦PU•asRÐë\tWVUeTq\u001emr„\u001a~\u0002\bú)\u0010h\u0003\"dØàJ\u0014ð÷`<\u001bãÁëÉ0\u0000¯Çëá8CùìÛiÜš\u0002ŽÔ\u0013òónœŠ¹¯ä^ÎýœÁó³\u0018Ýçóù‚Ï\u0000SX\u001eEÝþm¿ÎðÙ´\u001féÁ”t“vágw;�\u0014™ü¯/Vµz±Ü§ª\u0018ê´ËÜó\u0013Y„ëU\u0011+—k:å¼u¸¹79\u000e7\u001fnî•ìô8}\u001e§§X§+‹�qå\u000bU\u001bcûîüBKwì0rÐGñ¿ �n6N\u0015|osøÖq·:øXô\u001ewæÅqÆX–<êÜc\u0018\u0017,ǽÇo\u000bCAçná\u001eŸ³“£Š¥„¬^½“óØužÓËÔ»²QëÞØxõƒFÙtõ-í†Ö,훫Nö¯QùµÏø­QN)”IyF\u0004;\u0019t°�\biì!“=eæð;ÏB‰\fî¤dJ7G£\u000e†\u0017‘âI±¤æåöëŸb\u0013^79\u001d”—›\u0014ÓSx;[bôéW>‹}ã¥`CÉÜ=SÕeuT¸Ï\u001d¹\u0014¶®}xÅ‹±Zõ\u0014Ë\u0017û\u0006\f|-+K\f\u0014ÉÂ*\u0002ê“ÇÊ^\bÏ7êrŽë2ÅÒž½v�F•ȷ؈ʨCÜqŽHçSž\u0011Q\"ÅG#q¥^/R¼�»ôuzúz´\u0003SC\u001fœyö\u0015õ‘8!Öß¿ôñCoââ\u001a£æ\u001a­äœGqÎ\tÔŽ¼�dKu\u0012U[ë“6¦Å%Ùó‘”ò³4Ç…æ+Æ-üüB³ãl/ÑÙ’â2rìÛ§K×Ü$§CóvÖœŽ$­¸zÍšêÕkÖ¬>s©å«3--8qôHÓ±cMGŽnVï«OÕ)uHøù³ÓQô4üšíÚRó95N§?n’Å,~~o¦‰Ì\t>:Fu,Æ\u000brä„Éc§ŒÈ\u001a[4^©bÑœÅóf,$ú\u0017 -\u0006ä" },+      { "match": "(Hello)" },+      { "match": "(TextEdit)" },+      { "match": "(D:20200124010711Z00'00')" },+      { "match": "()" },+      { "match": "[ ]" },+      { "match": "<8db88d3335070bd9583341583cf769a3> ] >>" },+      { "match": "%%EOF" }+    ]+  },+  {+    "file": "Hello.txt",+    "matches": [+      { "match": "Hello" }+    ]+  },+  {+    "file": "emptyline.txt",+    "matches": [+      { "match": "" }+    ]+  }+]

tests/out/Hello_wnhS--json.out

new file mode 100644@@ -0,0 +1,155 @@+[+  {+    "file": "Hello.bat",+    "matches": [+      { "match": "#!/bin/sh\necho \"Hello World!\"" },+      { "match": "echo \"Hello World!\"" }+    ]+  },+  {+    "file": "Hello.class",+    "matches": [+      { "match": "Hello.java\f\u0000\u0007\u0000\b\u0007\u0000\u0017\f\u0000\u0018\u0000\u0019\u0001\u0000\fHello World!\u0007\u0000\u001a\f\u0000\u001b\u0000\u001c\u0001\u0000\u0005Hello\u0001\u0000\u0010java/lang/Object\u0001\u0000\u0010java/lang/System\u0001\u0000\u0003out\u0001\u0000\u0015Ljava/io/PrintStream;\u0001\u0000\u0013java/io/PrintStream\u0001\u0000\u0007println\u0001\u0000\u0015(Ljava/lang/String;)V\u0000!\u0000\u0005\u0000\u0006\u0000\u0000\u0000\u0000\u0000\u0002\u0000\u0001\u0000\u0007\u0000\b\u0000\u0001\u0000\t\u0000\u0000\u0000\u001d\u0000\u0001\u0000\u0001\u0000\u0000\u0000\u0005*·\u0000\u0001±\u0000\u0000\u0000\u0001\u0000" }+    ]+  },+  {+    "file": "Hello.java",+    "matches": [+      { "match": "import java.lang.*;" },+      { "match": "public class Hello // prints a Hello World! greeting" },+      { "match": "public class Hello // prints a Hello World! greeting\n{ public static void main(String[] arg)" },+      { "match": "{ public static void main(String[] arg)" },+      { "match": "  { System.out.println(\"Hello World!\");" }+    ]+  },+  {+    "file": "Hello.pdf",+    "matches": [+      { "match": "%PDF-1.3\n%Äåòåë§ó ÐÄÆ" },+      { "match": "4 0 obj" },+      { "match": "4 0 obj\n<< /Length 5 0 R /Filter /FlateDecode >>" },+      { "match": "<< /Length 5 0 R /Filter /FlateDecode >>" },+      { "match": "stream\nx\u0001EŽ»" },+      { "match": "\u00021\u0014D{¿â”Z˜½‰y˜V\u0011l\u0017.ø\u0001a-d×eÍÿƒ\u0017,¬†™9\f³1²Q\u0002¹F—â©\u0012ó™�\\LY\nŸ‰\u0007o†k÷´ŽÐ›áâj©Rj²@8þ­í” »¶pQ£DÄ£\rï iÂ\u000bº0¨z¬|²¿Oó¼\u001eÐ\u00177µ7ã\u0017Nÿ ¥" },+      { "match": "endstream\nendobj" },+      { "match": "5 0 obj" },+      { "match": "5 0 obj\n123" },+      { "match": "endobj\n2 0 obj" },+      { "match": "2 0 obj" },+      { "match": "<< /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]" },+      { "match": "endobj\n6 0 obj" },+      { "match": "6 0 obj" },+      { "match": "<< /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R >> /Font << /TT1 8 0 R" },+      { "match": "endobj\n9 0 obj" },+      { "match": "9 0 obj" },+      { "match": "<< /Length 10 0 R /N 1 /Alternate /DeviceGray /Filter /FlateDecode >>" },+      { "match": "stream\nx\u0001…U]h\u001cU\u0014>»sg\u0003\u0012\u0007\u001f´\r-´ƒ?m\té2‰V\u0013‹µÛMºI\u0013·ëfS›*Êtv6;Ídfœ™Ý&¡O¥à›\u0016\u0004é« >Æ‚\b¶*6/ö¥¥Å’J5\u000f" },+      { "match": "x\u0001…U]h\u001cU\u0014>»sg\u0003\u0012\u0007\u001f´\r-´ƒ?m\té2‰V\u0013‹µÛMºI\u0013·ëfS›*Êtv6;Ídfœ™Ý&¡O¥à›\u0016\u0004é« >Æ‚\b¶*6/ö¥¥Å’J5\u000f" },+      { "match": "\u0011ZŒ (}Rð;3ÛdvA2Ã�ùî¹çž{Îwî¹—¨ëoÝóì´J4ç„~¡œ›>9}JíºMiR¨›ðèFàåJ¥\tÆŽë˜üo\u001eÞ¥\u0014Kîìg[íc[öäª\u0019\u0018к†æV\u0003cŽ(¥\u0011ej†ç‡D]— \u001f<\u001bzŒo\u0003?9[)ç�×€•Ö\\@zª`:¦o\u0019jÁ×\u0017Ô’ïÖ,;éëVãlcËgÎn°¯üìFë\u000ef'Çñï…Ï\u0017Lgj\u0012x\u001fð’¡�0î\u0003¾Û´N\u0014cœN{á‘r¬ŸÎ6f§r-ùÉštª%¿PoŒ2Î\u0012¥—\u0016ë•7€Ÿ\u0000^uN\u0017�·ô×gÝq¶ÓC$õ\u0018Aþ\u0014ð³ÀZÝ\u001cã<©À\u0015ß-³>Ëê9<\u0002ü2ð%+\u001c«\u0000þôCМd9° ÅzžýÄZ\"{F?V\u0002Þ\u0006|È´\u000b¼\u0016숊\u0017–Øæ ð¼c\u0017y-Ä..›A\u0014/b\u0017?…õÊh¬/§C¿ÂsŸ&’÷Ô¬£cÀàD\u001e­û£,‡?rèÙÑÞz\u0011xÉo”9ö=Àkº?R\u0000†ÍÌcU}˜y~\u0001x€N¤t2É¥Óø\u001aäпˆ7 ‹š\u0011òÈÇX\r}›" },+      { "match": "Tß\fL¿iV³Äw7Ï#úëõèNNm»a4üf,£Tê&Ñ·�“4\nendstream" },+      { "match": "endobj\n10 0 obj" },+      { "match": "10 0 obj" },+      { "match": "1116\nendobj" },+      { "match": "7 0 obj" },+      { "match": "7 0 obj\n[ /ICCBased 9 0 R ]" },+      { "match": "[ /ICCBased 9 0 R ]" },+      { "match": "endobj\n3 0 obj" },+      { "match": "3 0 obj" },+      { "match": "<< /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 2 0 R ] >>" },+      { "match": "endobj\n11 0 obj" },+      { "match": "11 0 obj" },+      { "match": "<< /Type /Catalog /Pages 3 0 R >>" },+      { "match": "endobj\n8 0 obj" },+      { "match": "8 0 obj" },+      { "match": "<< /Type /Font /Subtype /TrueType /BaseFont /GQTMZF+Menlo-Regular /FontDescriptor" },+      { "match": "<< /Type /Font /Subtype /TrueType /BaseFont /GQTMZF+Menlo-Regular /FontDescriptor\n12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602" },+      { "match": "12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602" },+      { "match": "12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602\n0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602" },+      { "match": "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602" },+      { "match": "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602\n0 0 602 ] >>" },+      { "match": "0 0 602 ] >>" },+      { "match": "endobj\n12 0 obj" },+      { "match": "12 0 obj" },+      { "match": "<< /Type /FontDescriptor /FontName /GQTMZF+Menlo-Regular /Flags 33 /FontBBox" },+      { "match": "<< /Type /FontDescriptor /FontName /GQTMZF+Menlo-Regular /Flags 33 /FontBBox\n[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729" },+      { "match": "[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729" },+      { "match": "/StemV 99 /XHeight 547 /StemH 83 /AvgWidth 602 /MaxWidth 602 /FontFile2 13 0 R" },+      { "match": "endobj\n13 0 obj" },+      { "match": "13 0 obj" },+      { "match": "<< /Length 14 0 R /Length1 4064 /Filter /FlateDecode >>" },+      { "match": "stream\nx\u0001ÝW{xTÅ\u0015?sw6¯Í>’MHH€]Öå•,�„·R\u0016Hxˆ /ë.ˆòH (!\bA´1�JQ\tÁ@…\bH}\u0015Q©µ+E]\tÄT¤b#E„ \u0002" },+      { "match": "x\u0001ÝW{xTÅ\u0015?sw6¯Í>’MHH€]Öå•,�„·R\u0016Hxˆ /ë.ˆòH (!\bA´1�JQ\tÁ@…\bH}\u0015Q©µ+E]\tÄT¤b#E„ \u0002" },+      { "match": "ø¢hŠ\u0014!Ø\u0000CϽ\u001bý>í×ïë¿íÜ�3çüæÌyÝ»÷Δ-\\\\DVª$P`VÉŒ\u0005d6ëI\u001eŠgÝSæ6Eн—HË�½`NITŽ‘åNsæÝ7;*'Nfy@qь¨LWxìWÌ@T\u0016}x¼®¸¤Œí\u0018Íú.\u0013×¼ÒYmó‰£\f°dƽmþé8Ëîù3JŠxäf�0é¶ tQ™)’½šÇì\u0005\u000b‹ÚôE�(¦St®�\u001a–\u0005w©Y)‹î\"\u000biä �”ÄЭ¬+yÖ˜×b²–>}ö�;ì7\\¤N±æâ½eéy\u0006s(¸¤ßå•W…¬�½…Åè¤1ÁëbJT\u0007\"ýàå•×’e½iɘù¾É\bÅf½®UŠ”íë¦É¡™\"…j\tL+I\u0017.RÌ'›4‰\u0003‚pš¼Ã¤vÚĈÍä\u0013·=R\u000eõ‰Dª`ÌJ>¦\t”Ë4Þ´\u0017gjÅ’�‘\u0018“·˜:Òäu\u0013‡‰h&\"\u0002!\u0005¥pµ\u0002W\u0014.+´æâŸuø®\u0002—Zªå%…K\rzËÅ�l©FK¥~ñB\u0017y1„‹\u0001ýB\u0017|{>G~ÛŠó9ø‡Â9…orqÖ…¿×¢™ClVhŽ\\;\u0018¸¦=\u0012_�)”_ÕâL!þ¦púË\fyZáË\f|¡ðù]øLáÓ:œ:™.Oµâd:NÔâ\u0013…�\u0015Ž\u001fK‘Ç\u0015Ž¥àh->ú0E~¤ðáê\u0004ùa" },+      { "match": "ø¢hŠ\u0014!Ø\u0000CϽ\u001bý>í×ïë¿íÜ�3çüæÌyÝ»÷Δ-\\\\DVª$P`VÉŒ\u0005d6ëI\u001eŠgÝSæ6Eн—HË�½`NITŽ‘åNsæÝ7;*'Nfy@qь¨LWxìWÌ@T\u0016}x¼®¸¤Œí\u0018Íú.\u0013×¼ÒYmó‰£\f°dƽmþé8Ëîù3JŠxäf�0é¶ tQ™)’½šÇì\u0005\u000b‹ÚôE�(¦St®�\u001a–\u0005w©Y)‹î\"\u000biä �”ÄЭ¬+yÖ˜×b²–>}ö�;ì7\\¤N±æâ½eéy\u0006s(¸¤ßå•W…¬�½…Åè¤1ÁëbJT\u0007\"ýàå•×’e½iɘù¾É\bÅf½®UŠ”íë¦É¡™\"…j\tL+I\u0017.RÌ'›4‰\u0003‚pš¼Ã¤vÚĈÍä\u0013·=R\u000eõ‰Dª`ÌJ>¦\t”Ë4Þ´\u0017gjÅ’�‘\u0018“·˜:Òäu\u0013‡‰h&\"\u0002!\u0005¥pµ\u0002W\u0014.+´æâŸuø®\u0002—Zªå%…K\rzËÅ�l©FK¥~ñB\u0017y1„‹\u0001ýB\u0017|{>G~ÛŠó9ø‡Â9…orqÖ…¿×¢™ClVhŽ\\;\u0018¸¦=\u0012_�)”_ÕâL!þ¦púË\fyZáË\f|¡ðù]øLáÓ:œ:™.Oµâd:NÔâ\u0013…�\u0015Ž\u001fK‘Ç\u0015Ž¥àh->ú0E~¤ðáê\u0004ùa\n>¨À‘Ahb¡i\u0010\u000e+\u001cz?^\u001eRx?\u001e\u0007\u0015ÞS8På”\u00072ñ×TìWx·\u0016�«|²Qá/" },+      { "match": "ñä\u0013\u000eùd:žpà7ñجð8;y\\aS\"6nè)7*lè‰ÇØÿcµ¨]_'k\u0015Öó³µ¾\u000eë+õuk|rÝ4¬\u000bè�*üZa-Ëkë°Æ‡\u001a.FÍP<ÂÙ>âÂê\u0004T3P]ˆU\\´U>T9±Ráa…‡\u0014\u001e\\á”\u000f*¬pâW\nË\u0015\u001ep\u000e“\u000fLÂ/\u0015*ïŲ¥\u0015r™ÂÒ" },+      { "match": "‹Ë¬r±\u001d‹#‚\u0002Gõ2+Ê\u001aôEIX\u0014Ð\u0017*Ü­°@¡tþ$YZ‹ù%ÝäüI(é†y\nwåâN…¹¹(nÅœ:ÌV(R(T˜5³£œ¥0“\u001crfGÌP˜®p‡ÂíS\u0012äí6L+Ämû0•…©.LI\u0000?ÑA\u0017nUø¹Â-\u0019éò–\\LV˜¤0QaB\u0005Æ+ÜìÂ8…±Â/Ç*ÜT‡1Ýpãè4ycŒ\u001ež$G§aTAš\u001c¥0’¥‘…\u0018ÁÒˆ:\u0014¤!Ÿ�üþ\u0018>Ì)‡'axD\u000b\u0004âôaCír˜\u0013Ã\"\u001a±44`“Cí\u0018\u001a\u0011\r,\u0005†XeÀ†@DT²4Ä\u001a'‡X1$\"\u0002�Býg" },+      { "match": "wåâN…¹¹(nÅœ:ÌV(R(T˜5³£œ¥0“\u001crfGÌP˜®p‡ÂíS\u0012äí6L+Ämû0•…©.LI\u0000?ÑA\u0017nUø¹Â-\u0019éò–\\LV˜¤0QaB\u0005Æ+ÜìÂ8…±Â/Ç*ÜT‡1Ýpãè4ycŒ\u001ež$G§aTAš\u001c¥0’¥‘…\u0018ÁÒˆ:\u0014¤!Ÿ�üþ\u0018>Ì)‡'axD\u000b\u0004âôaCír˜\u0013Ã\"\u001a±44`“Cí\u0018\u001a\u0011\r,\u0005†XeÀ†@DT²4Ä\u001a'‡X1$\"\u0002�Býg\nƒ9„Á­¸Aáún\u0018¤0�\u000b<°\u0010\u0003z·—\u0003Æ ¿B?¿KöSè;\u0006}zµ—}Æ �‡<…\\VÌUèÍÓ½Û£W{ä0—“†žq©²g\u001düÙÉÒï‚?¢\u0019n³\u001dN™�Œl#ÜZ=«‡Of)ô`Í\u001e>t×\u0006Éî" },+      { "match": "p�\u001d^…Îv»ì¬àqû¥§\u0002n?:�AGöÜQ¡ƒB&×6S!ƒïJF:Ú+¤+¤)´c\u000bíF 5Å/S‡!Åå�)~¸\u001cHf½d\u0017’x}’‚“3w\u000eƒƒ=8œpDkg·Y¥Ý\u000e{´v¶Äxi³Â\u0016­]\"×.1\u001e‰\\»\u001dº5\u000eVãÙê¯'(Äs&ñ" },+      { "match": "q©ˆu FÁ¦-" },+      { "match": "endstream\nendobj" },+      { "match": "14 0 obj" },+      { "match": "14 0 obj\n2734" },+      { "match": "endobj\n15 0 obj" },+      { "match": "15 0 obj" },+      { "match": "endobj\n16 0 obj" },+      { "match": "16 0 obj" },+      { "match": "(Mac OS X 10.12.6 Quartz PDFContext)" },+      { "match": "endobj\n17 0 obj" },+      { "match": "17 0 obj" },+      { "match": "endobj\n18 0 obj" },+      { "match": "18 0 obj" },+      { "match": "endobj\n19 0 obj" },+      { "match": "19 0 obj" },+      { "match": "endobj\n20 0 obj" },+      { "match": "20 0 obj" },+      { "match": "endobj\n1 0 obj" },+      { "match": "1 0 obj" },+      { "match": "<< /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate" },+      { "match": "<< /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate\n18 0 R /Keywords 19 0 R /AAPL:Keywords 20 0 R >>" },+      { "match": "18 0 R /Keywords 19 0 R /AAPL:Keywords 20 0 R >>" },+      { "match": "endobj\nxref" },+      { "match": "0 21" },+      { "match": "0000000000 65535 f " },+      { "match": "0000000000 65535 f \n0000005392 00000 n " },+      { "match": "0000005392 00000 n " },+      { "match": "0000000238 00000 n " },+      { "match": "0000000238 00000 n \n0000001714 00000 n " },+      { "match": "0000001714 00000 n " },+      { "match": "0000000022 00000 n " },+      { "match": "0000000022 00000 n \n0000000219 00000 n " },+      { "match": "0000000219 00000 n " },+      { "match": "0000000342 00000 n " },+      { "match": "0000000342 00000 n \n0000001679 00000 n " },+      { "match": "0000001679 00000 n " },+      { "match": "0000001847 00000 n " },+      { "match": "0000001847 00000 n \n0000000439 00000 n " },+      { "match": "0000000439 00000 n " },+      { "match": "0000001658 00000 n " },+      { "match": "0000001658 00000 n \n0000001797 00000 n " },+      { "match": "0000001797 00000 n " },+      { "match": "0000002110 00000 n " },+      { "match": "0000002110 00000 n \n0000002362 00000 n " },+      { "match": "0000002362 00000 n " },+      { "match": "0000005186 00000 n " },+      { "match": "0000005186 00000 n \n0000005207 00000 n " },+      { "match": "0000005207 00000 n " },+      { "match": "0000005231 00000 n " },+      { "match": "0000005231 00000 n \n0000005284 00000 n " },+      { "match": "0000005284 00000 n " },+      { "match": "0000005311 00000 n " },+      { "match": "0000005311 00000 n \n0000005353 00000 n " },+      { "match": "0000005353 00000 n " },+      { "match": "0000005372 00000 n " },+      { "match": "0000005372 00000 n \ntrailer" },+      { "match": "<< /Size 21 /Root 11 0 R /Info 1 0 R /ID [ <8db88d3335070bd9583341583cf769a3>" },+      { "match": "startxref\n5536" }+    ]+  },+  {+    "file": "Hello.sh",+    "matches": [+      { "match": "#!/bin/sh\necho \"Hello World!\"" },+      { "match": "echo \"Hello World!\"" }+    ]+  }+]

tests/out/Hello_wnhS--replace.out

new file mode 100644@@ -0,0 +1,12 @@+Hello.bat:#!/bin/(1:sh+echo) "Hello World!"+Hello.bat:echo "(2:Hello World!")+Binary file Hello.class matches+Hello.java:(1:import java.lang.*;)+Hello.java:(2:public class) (3:Hello //) (4:prints a) (5:Hello World!) (6:greeting+{) (7:public static) (8:void main(String[]) arg)+Hello.java:  { System.out.println("(9:Hello World!");)+Binary file Hello.pdf matches+Hello.sh:#!/bin/(1:sh+echo) "Hello World!"+Hello.sh:echo "(2:Hello World!")

tests/out/Hello_wnhS--tag.out

new file mode 100644@@ -0,0 +1,10 @@+Hello.bat:#!/bin/___sh___+Hello.bat|___echo___ "___Hello World!"___+Binary file Hello.class matches+Hello.java:___import java.lang.*;___+Hello.java:___public class___ ___Hello //___ ___prints a___ ___Hello World!___ ___greeting___+Hello.java|___{___ ___public static___ ___void main(String[]___ arg)+Hello.java:  { System.out.println("___Hello World!");___+Binary file Hello.pdf matches+Hello.sh:#!/bin/___sh___+Hello.sh|___echo___ "___Hello World!"___

tests/out/Hello_wnhS--xml-c.out

new file mode 100644@@ -0,0 +1,26 @@+<grep>+  <file name="Hello.bat">+    <match>2</match>+  </file>+  <file name="Hello.class">+    <match>1</match>+  </file>+  <file name="Hello.java">+    <match>4</match>+  </file>+  <file name="Hello.pdf">+    <match>97</match>+  </file>+  <file name="Hello.sh">+    <match>2</match>+  </file>+  <file name="Hello.txt">+    <match>0</match>+  </file>+  <file name="empty.txt">+    <match>0</match>+  </file>+  <file name="emptyline.txt">+    <match>0</match>+  </file>+</grep>

tests/out/Hello_wnhS--xml-co.out

new file mode 100644@@ -0,0 +1,26 @@+<grep>+  <file name="Hello.bat">+    <match>2</match>+  </file>+  <file name="Hello.class">+    <match>1</match>+  </file>+  <file name="Hello.java">+    <match>9</match>+  </file>+  <file name="Hello.pdf">+    <match>203</match>+  </file>+  <file name="Hello.sh">+    <match>2</match>+  </file>+  <file name="Hello.txt">+    <match>0</match>+  </file>+  <file name="empty.txt">+    <match>0</match>+  </file>+  <file name="emptyline.txt">+    <match>0</match>+  </file>+</grep>

tests/out/Hello_wnhS--xml-cv.out

new file mode 100644@@ -0,0 +1,26 @@+<grep>+  <file name="Hello.bat">+    <match>0</match>+  </file>+  <file name="Hello.class">+    <match>6</match>+  </file>+  <file name="Hello.java">+    <match>3</match>+  </file>+  <file name="Hello.pdf">+    <match>37</match>+  </file>+  <file name="Hello.sh">+    <match>0</match>+  </file>+  <file name="Hello.txt">+    <match>0</match>+  </file>+  <file name="empty.txt">+    <match>0</match>+  </file>+  <file name="emptyline.txt">+    <match>1</match>+  </file>+</grep>

tests/out/Hello_wnhS--xml-l.out

new file mode 100644@@ -0,0 +1,17 @@+<grep>+  <file name="Hello.bat">+    <match>true</match>+  </file>+  <file name="Hello.class">+    <match>true</match>+  </file>+  <file name="Hello.java">+    <match>true</match>+  </file>+  <file name="Hello.pdf">+    <match>true</match>+  </file>+  <file name="Hello.sh">+    <match>true</match>+  </file>+</grep>

tests/out/Hello_wnhS--xml-lv.out

new file mode 100644@@ -0,0 +1,11 @@+<grep>+  <file name="Hello.txt">+    <match>false</match>+  </file>+  <file name="empty.txt">+    <match>false</match>+  </file>+  <file name="emptyline.txt">+    <match>false</match>+  </file>+</grep>

tests/out/Hello_wnhS--xml-n.out

new file mode 100644@@ -0,0 +1,140 @@+<grep>+  <file name="Hello.bat">+    <match line="1">#!/bin/sh&#10;echo &quot;Hello World!&quot;</match>+    <match line="2">echo &quot;Hello World!&quot;</match>+  </file>+  <file name="Hello.class">+    <match line="5">Hello.java&#12;&#0;&#7;&#0;&#8;&#7;&#0;&#23;&#12;&#0;&#24;&#0;&#25;&#1;&#0;&#12;Hello World!&#7;&#0;&#26;&#12;&#0;&#27;&#0;&#28;&#1;&#0;&#5;Hello&#1;&#0;&#16;java/lang/Object&#1;&#0;&#16;java/lang/System&#1;&#0;&#3;out&#1;&#0;&#21;Ljava/io/PrintStream;&#1;&#0;&#19;java/io/PrintStream&#1;&#0;&#7;println&#1;&#0;&#21;(Ljava/lang/String;)V&#0;!&#0;&#5;&#0;&#6;&#0;&#0;&#0;&#0;&#0;&#2;&#0;&#1;&#0;&#7;&#0;&#8;&#0;&#1;&#0;&#9;&#0;&#0;&#0;&#29;&#0;&#1;&#0;&#1;&#0;&#0;&#0;&#5;*·&#0;&#1;±&#0;&#0;&#0;&#1;&#0;</match>+  </file>+  <file name="Hello.java">+    <match line="1">import java.lang.*;</match>+    <match line="3">public class Hello // prints a Hello World! greeting</match>+    <match line="3">public class Hello // prints a Hello World! greeting&#10;{ public static void main(String[] arg)</match>+    <match line="4">{ public static void main(String[] arg)</match>+    <match line="5">  { System.out.println(&quot;Hello World!&quot;);</match>+  </file>+  <file name="Hello.pdf">+    <match line="1">%PDF-1.3&#10;%Äåòåë§ó ÐÄÆ</match>+    <match line="3">4 0 obj</match>+    <match line="3">4 0 obj&#10;&lt;&lt; /Length 5 0 R /Filter /FlateDecode &gt;&gt;</match>+    <match line="4">&lt;&lt; /Length 5 0 R /Filter /FlateDecode &gt;&gt;</match>+    <match line="5">stream&#10;x&#1;EŽ»</match>+    <match line="7">&#2;1&#20;D{¿â”Z˜½‰y˜V&#17;l&#23;.ø&#1;a-d×eÍÿƒ&#23;,¬†™9&#12;³1²Q&#2;¹F—â©&#18;ó™�\LY&#10;Ÿ‰&#7;o†k÷´ŽÐ›áâj©Rj²@8þ­í” »¶pQ£DÄ£&#13;ï&#x7f; iÂ&#11;º0¨z¬|²¿Oó¼&#30;Ð&#23;7µ7ã&#23;Nÿ ¥</match>+    <match line="9">endstream&#10;endobj</match>+    <match line="11">5 0 obj</match>+    <match line="11">5 0 obj&#10;123</match>+    <match line="13">endobj&#10;2 0 obj</match>+    <match line="14">2 0 obj</match>+    <match line="15">&lt;&lt; /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]</match>+    <match line="17">endobj&#10;6 0 obj</match>+    <match line="18">6 0 obj</match>+    <match line="19">&lt;&lt; /ProcSet [ /PDF /Text ] /ColorSpace &lt;&lt; /Cs1 7 0 R &gt;&gt; /Font &lt;&lt; /TT1 8 0 R</match>+    <match line="21">endobj&#10;9 0 obj</match>+    <match line="22">9 0 obj</match>+    <match line="23">&lt;&lt; /Length 10 0 R /N 1 /Alternate /DeviceGray /Filter /FlateDecode &gt;&gt;</match>+    <match line="24">stream&#10;x&#1;…U]h&#28;U&#20;&gt;»sg&#3;&#18;&#7;&#31;´&#13;-´ƒ?m&#9;é2‰V&#19;‹µÛMºI&#19;·ëfS›*Êtv6;Ídfœ™Ý&amp;¡O¥à›&#22;&#4;é« &gt;Æ‚&#8;¶*6/ö¥¥Å’J5&#15;</match>+    <match line="25">x&#1;…U]h&#28;U&#20;&gt;»sg&#3;&#18;&#7;&#31;´&#13;-´ƒ?m&#9;é2‰V&#19;‹µÛMºI&#19;·ëfS›*Êtv6;Ídfœ™Ý&amp;¡O¥à›&#22;&#4;é« &gt;Æ‚&#8;¶*6/ö¥¥Å’J5&#15;</match>+    <match line="26">&#17;ZŒ (}Rð;3ÛdvA2Ã�ùî¹çž{Îwî¹—¨ëoÝóì´J4ç„~¡œ›&gt;9}JíºMiR¨›ðèFàåJ¥&#9;ÆŽë˜üo&#x7f;&#30;Þ¥&#20;Kîìg[íc[öäª&#25;&#24;к†æV&#3;cŽ(¥&#17;ej†ç‡D]— &#31;&lt;&#27;zŒo&#3;?9[)ç�×€•Ö\@zª`:¦o&#25;jÁ×&#23;Ô’ïÖ,;éëVãlcËgÎn°¯üìFë&#14;f'Çñï…Ï&#23;Lgj&#18;x&#31;ð’¡�0î&#3;¾Û´N&#20;cœN{á‘r¬ŸÎ6f§r-ùÉš&#x7f;tª%¿PoŒ2Î&#18;¥—&#22;ë•7€Ÿ&#0;^uN&#23;�·ô×gÝq¶ÓC$õ&#24;Aþ&#20;ð³ÀZÝ&#28;ã&lt;©À&#21;ß-³&gt;Ëê9&lt;&#2;ü2ð%+&#28;«&#0;þôCМd9° ÅzžýÄZ&quot;{F?V&#2;Þ&#6;|È´&#11;¼&#22;숊&#23;–Øæ ð¼c&#23;y-Ä..›A&#20;/b&#23;?…õÊh¬/§C¿ÂsŸ&amp;’÷Ô¬£cÀàD&#30;­û£,‡?rèÙÑÞz&#17;xÉo”9ö=Àkº?R&#0;†ÍÌcU}˜y~&#1;x€N¤t2É¥Óø&#26;äпˆ7 ‹š&#17;òÈÇX&#13;}›</match>+    <match line="30">Tß&#12;L¿iV³Äw7Ï#úëõèNNm»a4üf,£Tê&amp;Ñ&#x7f;·�“4&#10;endstream</match>+    <match line="32">endobj&#10;10 0 obj</match>+    <match line="33">10 0 obj</match>+    <match line="34">1116&#10;endobj</match>+    <match line="36">7 0 obj</match>+    <match line="36">7 0 obj&#10;[ /ICCBased 9 0 R ]</match>+    <match line="37">[ /ICCBased 9 0 R ]</match>+    <match line="38">endobj&#10;3 0 obj</match>+    <match line="39">3 0 obj</match>+    <match line="40">&lt;&lt; /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 2 0 R ] &gt;&gt;</match>+    <match line="41">endobj&#10;11 0 obj</match>+    <match line="42">11 0 obj</match>+    <match line="43">&lt;&lt; /Type /Catalog /Pages 3 0 R &gt;&gt;</match>+    <match line="44">endobj&#10;8 0 obj</match>+    <match line="45">8 0 obj</match>+    <match line="46">&lt;&lt; /Type /Font /Subtype /TrueType /BaseFont /GQTMZF+Menlo-Regular /FontDescriptor</match>+    <match line="46">&lt;&lt; /Type /Font /Subtype /TrueType /BaseFont /GQTMZF+Menlo-Regular /FontDescriptor&#10;12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602</match>+    <match line="47">12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602</match>+    <match line="47">12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602&#10;0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602</match>+    <match line="48">0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602</match>+    <match line="48">0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602&#10;0 0 602 ] &gt;&gt;</match>+    <match line="49">0 0 602 ] &gt;&gt;</match>+    <match line="50">endobj&#10;12 0 obj</match>+    <match line="51">12 0 obj</match>+    <match line="52">&lt;&lt; /Type /FontDescriptor /FontName /GQTMZF+Menlo-Regular /Flags 33 /FontBBox</match>+    <match line="52">&lt;&lt; /Type /FontDescriptor /FontName /GQTMZF+Menlo-Regular /Flags 33 /FontBBox&#10;[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729</match>+    <match line="53">[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729</match>+    <match line="54">/StemV 99 /XHeight 547 /StemH 83 /AvgWidth 602 /MaxWidth 602 /FontFile2 13 0 R</match>+    <match line="56">endobj&#10;13 0 obj</match>+    <match line="57">13 0 obj</match>+    <match line="58">&lt;&lt; /Length 14 0 R /Length1 4064 /Filter /FlateDecode &gt;&gt;</match>+    <match line="59">stream&#10;x&#1;ÝW{xTÅ&#21;?s&#x7f;w6¯Í&gt;’MHH€]Öå•,�„·R&#22;Hxˆ /ë.ˆòH (!&#8;A´1�JQ&#9;Á@…&#8;H}&#21;Q©µ+E]&#9;ÄT¤b#E„ &#2;</match>+    <match line="60">x&#1;ÝW{xTÅ&#21;?s&#x7f;w6¯Í&gt;’MHH€]Öå•,�„·R&#22;Hxˆ /ë.ˆòH (!&#8;A´1�JQ&#9;Á@…&#8;H}&#21;Q©µ+E]&#9;ÄT¤b#E„ &#2;</match>+    <match line="61">ø¢hŠ&#20;!Ø&#0;CϽ&#27;ý&gt;í×ïë¿íÜ�3çüæÌyÝ»÷Δ-\\DVª$P`VÉŒ&#5;d6ëI&#30;ŠgÝSæ6Eн—HË�½`NITŽ&#x7f;‘åNsæÝ7;*'Nfy@qь¨LWxìWÌ@T&#22;}x¼®¸¤Œí&#24;Íú.&#19;×¼ÒYmó‰£&#12;°dƽmþé8Ëîù3JŠxäf�0é¶ tQ™)’½šÇì&#5;&#11;‹ÚôE�(¦St®�&#26;–&#5;w©Y)‹î&quot;&#11;iä �”ÄЭ¬+yÖ˜×b²–&gt;}ö�;ì7\¤N±æâ½eéy&#6;s(¸¤ßå•W…¬�½…Åè¤1ÁëbJT&#7;&quot;ýàå•×’e½iɘù¾É&#8;Åf½®UŠ”íë¦É¡™&quot;…j&#9;L+I&#23;.RÌ'›4‰&#3;‚pš¼Ã¤vÚĈÍä&#19;·&#x7f;=R&#14;õ‰Dª`ÌJ&gt;¦&#9;”Ë4Þ´&#23;gjÅ’�‘&#24;“·˜:Òäu&#19;‡‰h&amp;&quot;&#2;!&#5;¥pµ&#2;W&#20;.+´æâŸuø®&#2;—Zªå%…K&#13;zËÅ�l©FK¥~ñB&#23;y1„‹&#1;ýB&#23;|{&gt;G~ÛŠó9ø‡Â9…orqÖ…¿×¢™ClVhŽ\;&#24;¸¦&#x7f;=&#18;_�)”_ÕâL!þ¦púË&#12;yZáË&#12;|¡ðù]øLáÓ:œ:™.Oµâd:NÔâ&#19;…�&#21;Ž&#31;K‘Ç&#21;Ž¥àh-&gt;ú0E~¤ðáê&#4;ùa</match>+    <match line="61">ø¢hŠ&#20;!Ø&#0;CϽ&#27;ý&gt;í×ïë¿íÜ�3çüæÌyÝ»÷Δ-\\DVª$P`VÉŒ&#5;d6ëI&#30;ŠgÝSæ6Eн—HË�½`NITŽ&#x7f;‘åNsæÝ7;*'Nfy@qь¨LWxìWÌ@T&#22;}x¼®¸¤Œí&#24;Íú.&#19;×¼ÒYmó‰£&#12;°dƽmþé8Ëîù3JŠxäf�0é¶ tQ™)’½šÇì&#5;&#11;‹ÚôE�(¦St®�&#26;–&#5;w©Y)‹î&quot;&#11;iä �”ÄЭ¬+yÖ˜×b²–&gt;}ö�;ì7\¤N±æâ½eéy&#6;s(¸¤ßå•W…¬�½…Åè¤1ÁëbJT&#7;&quot;ýàå•×’e½iɘù¾É&#8;Åf½®UŠ”íë¦É¡™&quot;…j&#9;L+I&#23;.RÌ'›4‰&#3;‚pš¼Ã¤vÚĈÍä&#19;·&#x7f;=R&#14;õ‰Dª`ÌJ&gt;¦&#9;”Ë4Þ´&#23;gjÅ’�‘&#24;“·˜:Òäu&#19;‡‰h&amp;&quot;&#2;!&#5;¥pµ&#2;W&#20;.+´æâŸuø®&#2;—Zªå%…K&#13;zËÅ�l©FK¥~ñB&#23;y1„‹&#1;ýB&#23;|{&gt;G~ÛŠó9ø‡Â9…orqÖ…¿×¢™ClVhŽ\;&#24;¸¦&#x7f;=&#18;_�)”_ÕâL!þ¦púË&#12;yZáË&#12;|¡ðù]øLáÓ:œ:™.Oµâd:NÔâ&#19;…�&#21;Ž&#31;K‘Ç&#21;Ž¥àh-&gt;ú0E~¤ðáê&#4;ùa&#10;&gt;¨À‘Ahb¡i&#16;&#14;+&#28;z?^&#30;Rx?&#30;&#7;&#21;ÞS8På”&#7;2ñ×TìWx·&#22;�«|²Qá/</match>+    <match line="66">ñä&#19;&#14;ùd:žpà7ñجð8;y\aS&quot;6nè)7*lè‰ÇØÿcµ¨]_'k&#21;Öó³µ¾&#14;ë+õuk|rÝ4¬&#11;è�*üZa-Ëkë°Æ‡&#26;.FÍP&lt;ÂÙ&gt;âÂê&#4;T3P]ˆU\´U&gt;T9±Ráa…‡&#20;&#30;\á”&#15;*¬pâW&#10;Ë&#21;&#30;p&#14;“&#15;LÂ/&#21;*ïŲ¥&#21;r™ÂÒ</match>+    <match line="70">‹Ë¬r±&#29;‹#‚&#2;Gõ2+Ê&#26;ôEIX&#20;Ð&#23;*Ü­°@¡tþ$YZ‹ù%ÝäüI(é†y&#10;wåâN…¹¹(nÅœ:ÌV(R(T˜5³£œ¥0“&#28;rfGÌP˜®p‡ÂíS&#18;äí6L+Ämû0•…©.LI&#0;?ÑA&#23;nUø¹Â-&#25;éò–\LV˜¤0QaB&#5;Æ+ÜìÂ8…±Â/Ç*ÜT‡1Ýpãè4yc&#x7f;Œ&#30;ž$G§aTAš&#28;¥0’¥‘…&#24;ÁÒˆ:&#20;¤!Ÿ�üþ&#24;&gt;Ì)‡'axD&#11;&#4;âôaCír˜&#19;Ã&quot;&#26;±44`“Cí&#24;&#26;&#17;&#13;,&#5;†XeÀ†@DT²4Ä&#26;'‡X1$&quot;&#2;�Býg</match>+    <match line="71">wåâN…¹¹(nÅœ:ÌV(R(T˜5³£œ¥0“&#28;rfGÌP˜®p‡ÂíS&#18;äí6L+Ämû0•…©.LI&#0;?ÑA&#23;nUø¹Â-&#25;éò–\LV˜¤0QaB&#5;Æ+ÜìÂ8…±Â/Ç*ÜT‡1Ýpãè4yc&#x7f;Œ&#30;ž$G§aTAš&#28;¥0’¥‘…&#24;ÁÒˆ:&#20;¤!Ÿ�üþ&#24;&gt;Ì)‡'axD&#11;&#4;âôaCír˜&#19;Ã&quot;&#26;±44`“Cí&#24;&#26;&#17;&#13;,&#5;†XeÀ†@DT²4Ä&#26;'‡X1$&quot;&#2;�Býg&#10;ƒ9„Á­¸Aáún&#24;¤0�&#11;&lt;°&#16;&#3;z·—&#3;Æ ¿B?¿KöSè;&#6;}zµ—}Æ �‡&lt;…\VÌUèÍÓ½Û£W{ä0—“†žq©²g&#29;üÙÉÒï‚?¢&#25;n³&#29;N™�Œl#ÜZ=«‡Of)ô`Í&#30;&gt;t×&#6;Éî</match>+    <match line="74">p�&#29;^…Îv»ì¬àqû¥§&#2;n?:�AGöÜQ¡ƒB&amp;×6S!ƒïJF:Ú+¤+¤)´c&#11;íF 5Å/S‡!Åå�)~¸&#28;Hf½d&#23;’x}’‚“3w&#14;ƒƒ=8œpDkg·Y¥Ý&#14;{´v¶Äxi³Â&#22;­]&quot;×.1&#30;‰\»&#29;º5&#14;VãÙê¯'(Äs&amp;ñ</match>+    <match line="75">q©ˆu FÁ¦-</match>+    <match line="79">endstream&#10;endobj</match>+    <match line="81">14 0 obj</match>+    <match line="81">14 0 obj&#10;2734</match>+    <match line="83">endobj&#10;15 0 obj</match>+    <match line="84">15 0 obj</match>+    <match line="86">endobj&#10;16 0 obj</match>+    <match line="87">16 0 obj</match>+    <match line="88">(Mac OS X 10.12.6 Quartz PDFContext)</match>+    <match line="89">endobj&#10;17 0 obj</match>+    <match line="90">17 0 obj</match>+    <match line="92">endobj&#10;18 0 obj</match>+    <match line="93">18 0 obj</match>+    <match line="95">endobj&#10;19 0 obj</match>+    <match line="96">19 0 obj</match>+    <match line="98">endobj&#10;20 0 obj</match>+    <match line="99">20 0 obj</match>+    <match line="101">endobj&#10;1 0 obj</match>+    <match line="102">1 0 obj</match>+    <match line="103">&lt;&lt; /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate</match>+    <match line="103">&lt;&lt; /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate&#10;18 0 R /Keywords 19 0 R /AAPL:Keywords 20 0 R &gt;&gt;</match>+    <match line="104">18 0 R /Keywords 19 0 R /AAPL:Keywords 20 0 R &gt;&gt;</match>+    <match line="105">endobj&#10;xref</match>+    <match line="107">0 21</match>+    <match line="108">0000000000 65535 f </match>+    <match line="108">0000000000 65535 f &#10;0000005392 00000 n </match>+    <match line="109">0000005392 00000 n </match>+    <match line="110">0000000238 00000 n </match>+    <match line="110">0000000238 00000 n &#10;0000001714 00000 n </match>+    <match line="111">0000001714 00000 n </match>+    <match line="112">0000000022 00000 n </match>+    <match line="112">0000000022 00000 n &#10;0000000219 00000 n </match>+    <match line="113">0000000219 00000 n </match>+    <match line="114">0000000342 00000 n </match>+    <match line="114">0000000342 00000 n &#10;0000001679 00000 n </match>+    <match line="115">0000001679 00000 n </match>+    <match line="116">0000001847 00000 n </match>+    <match line="116">0000001847 00000 n &#10;0000000439 00000 n </match>+    <match line="117">0000000439 00000 n </match>+    <match line="118">0000001658 00000 n </match>+    <match line="118">0000001658 00000 n &#10;0000001797 00000 n </match>+    <match line="119">0000001797 00000 n </match>+    <match line="120">0000002110 00000 n </match>+    <match line="120">0000002110 00000 n &#10;0000002362 00000 n </match>+    <match line="121">0000002362 00000 n </match>+    <match line="122">0000005186 00000 n </match>+    <match line="122">0000005186 00000 n &#10;0000005207 00000 n </match>+    <match line="123">0000005207 00000 n </match>+    <match line="124">0000005231 00000 n </match>+    <match line="124">0000005231 00000 n &#10;0000005284 00000 n </match>+    <match line="125">0000005284 00000 n </match>+    <match line="126">0000005311 00000 n </match>+    <match line="126">0000005311 00000 n &#10;0000005353 00000 n </match>+    <match line="127">0000005353 00000 n </match>+    <match line="128">0000005372 00000 n </match>+    <match line="128">0000005372 00000 n &#10;trailer</match>+    <match line="130">&lt;&lt; /Size 21 /Root 11 0 R /Info 1 0 R /ID [ &lt;8db88d3335070bd9583341583cf769a3&gt;</match>+    <match line="132">startxref&#10;5536</match>+  </file>+  <file name="Hello.sh">+    <match line="1">#!/bin/sh&#10;echo &quot;Hello World!&quot;</match>+    <match line="2">echo &quot;Hello World!&quot;</match>+  </file>+</grep>

tests/out/Hello_wnhS--xml-nkb.out

new file mode 100644@@ -0,0 +1,140 @@+<grep>+  <file name="Hello.bat">+    <match line="1" column="8" offset="7">#!/bin/sh&#10;echo &quot;Hello World!&quot;</match>+    <match line="2" column="7" offset="16">echo &quot;Hello World!&quot;</match>+  </file>+  <file name="Hello.class">+    <match line="5" column="27" offset="148">Hello.java&#12;&#0;&#7;&#0;&#8;&#7;&#0;&#23;&#12;&#0;&#24;&#0;&#25;&#1;&#0;&#12;Hello World!&#7;&#0;&#26;&#12;&#0;&#27;&#0;&#28;&#1;&#0;&#5;Hello&#1;&#0;&#16;java/lang/Object&#1;&#0;&#16;java/lang/System&#1;&#0;&#3;out&#1;&#0;&#21;Ljava/io/PrintStream;&#1;&#0;&#19;java/io/PrintStream&#1;&#0;&#7;println&#1;&#0;&#21;(Ljava/lang/String;)V&#0;!&#0;&#5;&#0;&#6;&#0;&#0;&#0;&#0;&#0;&#2;&#0;&#1;&#0;&#7;&#0;&#8;&#0;&#1;&#0;&#9;&#0;&#0;&#0;&#29;&#0;&#1;&#0;&#1;&#0;&#0;&#0;&#5;*·&#0;&#1;±&#0;&#0;&#0;&#1;&#0;</match>+  </file>+  <file name="Hello.java">+    <match line="1" column="1" offset="0">import java.lang.*;</match>+    <match line="3" column="1" offset="21">public class Hello // prints a Hello World! greeting</match>+    <match line="3" column="45" offset="65">public class Hello // prints a Hello World! greeting&#10;{ public static void main(String[] arg)</match>+    <match line="4" column="3" offset="76">{ public static void main(String[] arg)</match>+    <match line="5" column="25" offset="138">  { System.out.println(&quot;Hello World!&quot;);</match>+  </file>+  <file name="Hello.pdf">+    <match line="1" column="8" offset="7">%PDF-1.3&#10;%Äåòåë§ó ÐÄÆ</match>+    <match line="3" column="1" offset="22">4 0 obj</match>+    <match line="3" column="5" offset="26">4 0 obj&#10;&lt;&lt; /Length 5 0 R /Filter /FlateDecode &gt;&gt;</match>+    <match line="4" column="5" offset="34">&lt;&lt; /Length 5 0 R /Filter /FlateDecode &gt;&gt;</match>+    <match line="5" column="1" offset="71">stream&#10;x&#1;EŽ»</match>+    <match line="7" column="35" offset="135">&#2;1&#20;D{¿â”Z˜½‰y˜V&#17;l&#23;.ø&#1;a-d×eÍÿƒ&#23;,¬†™9&#12;³1²Q&#2;¹F—â©&#18;ó™�\LY&#10;Ÿ‰&#7;o†k÷´ŽÐ›áâj©Rj²@8þ­í” »¶pQ£DÄ£&#13;ï&#x7f; iÂ&#11;º0¨z¬|²¿Oó¼&#30;Ð&#23;7µ7ã&#23;Nÿ ¥</match>+    <match line="9" column="1" offset="202">endstream&#10;endobj</match>+    <match line="11" column="1" offset="219">5 0 obj</match>+    <match line="11" column="5" offset="223">5 0 obj&#10;123</match>+    <match line="13" column="1" offset="231">endobj&#10;2 0 obj</match>+    <match line="14" column="3" offset="240">2 0 obj</match>+    <match line="15" column="5" offset="250">&lt;&lt; /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]</match>+    <match line="17" column="1" offset="335">endobj&#10;6 0 obj</match>+    <match line="18" column="3" offset="344">6 0 obj</match>+    <match line="19" column="5" offset="354">&lt;&lt; /ProcSet [ /PDF /Text ] /ColorSpace &lt;&lt; /Cs1 7 0 R &gt;&gt; /Font &lt;&lt; /TT1 8 0 R</match>+    <match line="21" column="1" offset="432">endobj&#10;9 0 obj</match>+    <match line="22" column="3" offset="441">9 0 obj</match>+    <match line="23" column="5" offset="451">&lt;&lt; /Length 10 0 R /N 1 /Alternate /DeviceGray /Filter /FlateDecode &gt;&gt;</match>+    <match line="24" column="1" offset="517">stream&#10;x&#1;…U]h&#28;U&#20;&gt;»sg&#3;&#18;&#7;&#31;´&#13;-´ƒ?m&#9;é2‰V&#19;‹µÛMºI&#19;·ëfS›*Êtv6;Ídfœ™Ý&amp;¡O¥à›&#22;&#4;é« &gt;Æ‚&#8;¶*6/ö¥¥Å’J5&#15;</match>+    <match line="25" column="19" offset="547">x&#1;…U]h&#28;U&#20;&gt;»sg&#3;&#18;&#7;&#31;´&#13;-´ƒ?m&#9;é2‰V&#19;‹µÛMºI&#19;·ëfS›*Êtv6;Ídfœ™Ý&amp;¡O¥à›&#22;&#4;é« &gt;Æ‚&#8;¶*6/ö¥¥Å’J5&#15;</match>+    <match line="26" column="307" offset="1006">&#17;ZŒ (}Rð;3ÛdvA2Ã�ùî¹çž{Îwî¹—¨ëoÝóì´J4ç„~¡œ›&gt;9}JíºMiR¨›ðèFàåJ¥&#9;ÆŽë˜üo&#x7f;&#30;Þ¥&#20;Kîìg[íc[öäª&#25;&#24;к†æV&#3;cŽ(¥&#17;ej†ç‡D]— &#31;&lt;&#27;zŒo&#3;?9[)ç�×€•Ö\@zª`:¦o&#25;jÁ×&#23;Ô’ïÖ,;éëVãlcËgÎn°¯üìFë&#14;f'Çñï…Ï&#23;Lgj&#18;x&#31;ð’¡�0î&#3;¾Û´N&#20;cœN{á‘r¬ŸÎ6f§r-ùÉš&#x7f;tª%¿PoŒ2Î&#18;¥—&#22;ë•7€Ÿ&#0;^uN&#23;�·ô×gÝq¶ÓC$õ&#24;Aþ&#20;ð³ÀZÝ&#28;ã&lt;©À&#21;ß-³&gt;Ëê9&lt;&#2;ü2ð%+&#28;«&#0;þôCМd9° ÅzžýÄZ&quot;{F?V&#2;Þ&#6;|È´&#11;¼&#22;숊&#23;–Øæ ð¼c&#23;y-Ä..›A&#20;/b&#23;?…õÊh¬/§C¿ÂsŸ&amp;’÷Ô¬£cÀàD&#30;­û£,‡?rèÙÑÞz&#17;xÉo”9ö=Àkº?R&#0;†ÍÌcU}˜y~&#1;x€N¤t2É¥Óø&#26;äпˆ7 ‹š&#17;òÈÇX&#13;}›</match>+    <match line="30" column="29" offset="1639">Tß&#12;L¿iV³Äw7Ï#úëõèNNm»a4üf,£Tê&amp;Ñ&#x7f;·�“4&#10;endstream</match>+    <match line="32" column="1" offset="1651">endobj&#10;10 0 obj</match>+    <match line="33" column="4" offset="1661">10 0 obj</match>+    <match line="34" column="1" offset="1667">1116&#10;endobj</match>+    <match line="36" column="1" offset="1679">7 0 obj</match>+    <match line="36" column="5" offset="1683">7 0 obj&#10;[ /ICCBased 9 0 R ]</match>+    <match line="37" column="4" offset="1690">[ /ICCBased 9 0 R ]</match>+    <match line="38" column="1" offset="1707">endobj&#10;3 0 obj</match>+    <match line="39" column="3" offset="1716">3 0 obj</match>+    <match line="40" column="5" offset="1726">&lt;&lt; /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 2 0 R ] &gt;&gt;</match>+    <match line="41" column="1" offset="1790">endobj&#10;11 0 obj</match>+    <match line="42" column="4" offset="1800">11 0 obj</match>+    <match line="43" column="5" offset="1810">&lt;&lt; /Type /Catalog /Pages 3 0 R &gt;&gt;</match>+    <match line="44" column="1" offset="1840">endobj&#10;8 0 obj</match>+    <match line="45" column="3" offset="1849">8 0 obj</match>+    <match line="46" column="5" offset="1859">&lt;&lt; /Type /Font /Subtype /TrueType /BaseFont /GQTMZF+Menlo-Regular /FontDescriptor</match>+    <match line="46" column="68" offset="1922">&lt;&lt; /Type /Font /Subtype /TrueType /BaseFont /GQTMZF+Menlo-Regular /FontDescriptor&#10;12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602</match>+    <match line="47" column="4" offset="1940">12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602</match>+    <match line="47" column="74" offset="2010">12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602&#10;0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602</match>+    <match line="48" column="3" offset="2016">0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602</match>+    <match line="48" column="73" offset="2086">0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602&#10;0 0 602 ] &gt;&gt;</match>+    <match line="49" column="3" offset="2092">0 0 602 ] &gt;&gt;</match>+    <match line="50" column="1" offset="2103">endobj&#10;12 0 obj</match>+    <match line="51" column="4" offset="2113">12 0 obj</match>+    <match line="52" column="5" offset="2123">&lt;&lt; /Type /FontDescriptor /FontName /GQTMZF+Menlo-Regular /Flags 33 /FontBBox</match>+    <match line="52" column="69" offset="2187">&lt;&lt; /Type /FontDescriptor /FontName /GQTMZF+Menlo-Regular /Flags 33 /FontBBox&#10;[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729</match>+    <match line="53" column="8" offset="2203">[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729</match>+    <match line="54" column="2" offset="2274">/StemV 99 /XHeight 547 /StemH 83 /AvgWidth 602 /MaxWidth 602 /FontFile2 13 0 R</match>+    <match line="56" column="1" offset="2355">endobj&#10;13 0 obj</match>+    <match line="57" column="4" offset="2365">13 0 obj</match>+    <match line="58" column="5" offset="2375">&lt;&lt; /Length 14 0 R /Length1 4064 /Filter /FlateDecode &gt;&gt;</match>+    <match line="59" column="1" offset="2427">stream&#10;x&#1;ÝW{xTÅ&#21;?s&#x7f;w6¯Í&gt;’MHH€]Öå•,�„·R&#22;Hxˆ /ë.ˆòH (!&#8;A´1�JQ&#9;Á@…&#8;H}&#21;Q©µ+E]&#9;ÄT¤b#E„ &#2;</match>+    <match line="60" column="33" offset="2475">x&#1;ÝW{xTÅ&#21;?s&#x7f;w6¯Í&gt;’MHH€]Öå•,�„·R&#22;Hxˆ /ë.ˆòH (!&#8;A´1�JQ&#9;Á@…&#8;H}&#21;Q©µ+E]&#9;ÄT¤b#E„ &#2;</match>+    <match line="61" column="187" offset="2776">ø¢hŠ&#20;!Ø&#0;CϽ&#27;ý&gt;í×ïë¿íÜ�3çüæÌyÝ»÷Δ-\\DVª$P`VÉŒ&#5;d6ëI&#30;ŠgÝSæ6Eн—HË�½`NITŽ&#x7f;‘åNsæÝ7;*'Nfy@qь¨LWxìWÌ@T&#22;}x¼®¸¤Œí&#24;Íú.&#19;×¼ÒYmó‰£&#12;°dƽmþé8Ëîù3JŠxäf�0é¶ tQ™)’½šÇì&#5;&#11;‹ÚôE�(¦St®�&#26;–&#5;w©Y)‹î&quot;&#11;iä �”ÄЭ¬+yÖ˜×b²–&gt;}ö�;ì7\¤N±æâ½eéy&#6;s(¸¤ßå•W…¬�½…Åè¤1ÁëbJT&#7;&quot;ýàå•×’e½iɘù¾É&#8;Åf½®UŠ”íë¦É¡™&quot;…j&#9;L+I&#23;.RÌ'›4‰&#3;‚pš¼Ã¤vÚĈÍä&#19;·&#x7f;=R&#14;õ‰Dª`ÌJ&gt;¦&#9;”Ë4Þ´&#23;gjÅ’�‘&#24;“·˜:Òäu&#19;‡‰h&amp;&quot;&#2;!&#5;¥pµ&#2;W&#20;.+´æâŸuø®&#2;—Zªå%…K&#13;zËÅ�l©FK¥~ñB&#23;y1„‹&#1;ýB&#23;|{&gt;G~ÛŠó9ø‡Â9…orqÖ…¿×¢™ClVhŽ\;&#24;¸¦&#x7f;=&#18;_�)”_ÕâL!þ¦púË&#12;yZáË&#12;|¡ðù]øLáÓ:œ:™.Oµâd:NÔâ&#19;…�&#21;Ž&#31;K‘Ç&#21;Ž¥àh-&gt;ú0E~¤ðáê&#4;ùa</match>+    <match line="61" column="356" offset="2996">ø¢hŠ&#20;!Ø&#0;CϽ&#27;ý&gt;í×ïë¿íÜ�3çüæÌyÝ»÷Δ-\\DVª$P`VÉŒ&#5;d6ëI&#30;ŠgÝSæ6Eн—HË�½`NITŽ&#x7f;‘åNsæÝ7;*'Nfy@qь¨LWxìWÌ@T&#22;}x¼®¸¤Œí&#24;Íú.&#19;×¼ÒYmó‰£&#12;°dƽmþé8Ëîù3JŠxäf�0é¶ tQ™)’½šÇì&#5;&#11;‹ÚôE�(¦St®�&#26;–&#5;w©Y)‹î&quot;&#11;iä �”ÄЭ¬+yÖ˜×b²–&gt;}ö�;ì7\¤N±æâ½eéy&#6;s(¸¤ßå•W…¬�½…Åè¤1ÁëbJT&#7;&quot;ýàå•×’e½iɘù¾É&#8;Åf½®UŠ”íë¦É¡™&quot;…j&#9;L+I&#23;.RÌ'›4‰&#3;‚pš¼Ã¤vÚĈÍä&#19;·&#x7f;=R&#14;õ‰Dª`ÌJ&gt;¦&#9;”Ë4Þ´&#23;gjÅ’�‘&#24;“·˜:Òäu&#19;‡‰h&amp;&quot;&#2;!&#5;¥pµ&#2;W&#20;.+´æâŸuø®&#2;—Zªå%…K&#13;zËÅ�l©FK¥~ñB&#23;y1„‹&#1;ýB&#23;|{&gt;G~ÛŠó9ø‡Â9…orqÖ…¿×¢™ClVhŽ\;&#24;¸¦&#x7f;=&#18;_�)”_ÕâL!þ¦púË&#12;yZáË&#12;|¡ðù]øLáÓ:œ:™.Oµâd:NÔâ&#19;…�&#21;Ž&#31;K‘Ç&#21;Ž¥àh-&gt;ú0E~¤ðáê&#4;ùa&#10;&gt;¨À‘Ahb¡i&#16;&#14;+&#28;z?^&#30;Rx?&#30;&#7;&#21;ÞS8På”&#7;2ñ×TìWx·&#22;�«|²Qá/</match>+    <match line="66" column="95" offset="3301">ñä&#19;&#14;ùd:žpà7ñجð8;y\aS&quot;6nè)7*lè‰ÇØÿcµ¨]_'k&#21;Öó³µ¾&#14;ë+õuk|rÝ4¬&#11;è�*üZa-Ëkë°Æ‡&#26;.FÍP&lt;ÂÙ&gt;âÂê&#4;T3P]ˆU\´U&gt;T9±Ráa…‡&#20;&#30;\á”&#15;*¬pâW&#10;Ë&#21;&#30;p&#14;“&#15;LÂ/&#21;*ïŲ¥&#21;r™ÂÒ</match>+    <match line="70" column="35" offset="3383">‹Ë¬r±&#29;‹#‚&#2;Gõ2+Ê&#26;ôEIX&#20;Ð&#23;*Ü­°@¡tþ$YZ‹ù%ÝäüI(é†y&#10;wåâN…¹¹(nÅœ:ÌV(R(T˜5³£œ¥0“&#28;rfGÌP˜®p‡ÂíS&#18;äí6L+Ämû0•…©.LI&#0;?ÑA&#23;nUø¹Â-&#25;éò–\LV˜¤0QaB&#5;Æ+ÜìÂ8…±Â/Ç*ÜT‡1Ýpãè4yc&#x7f;Œ&#30;ž$G§aTAš&#28;¥0’¥‘…&#24;ÁÒˆ:&#20;¤!Ÿ�üþ&#24;&gt;Ì)‡'axD&#11;&#4;âôaCír˜&#19;Ã&quot;&#26;±44`“Cí&#24;&#26;&#17;&#13;,&#5;†XeÀ†@DT²4Ä&#26;'‡X1$&quot;&#2;�Býg</match>+    <match line="71" column="146" offset="3575">wåâN…¹¹(nÅœ:ÌV(R(T˜5³£œ¥0“&#28;rfGÌP˜®p‡ÂíS&#18;äí6L+Ämû0•…©.LI&#0;?ÑA&#23;nUø¹Â-&#25;éò–\LV˜¤0QaB&#5;Æ+ÜìÂ8…±Â/Ç*ÜT‡1Ýpãè4yc&#x7f;Œ&#30;ž$G§aTAš&#28;¥0’¥‘…&#24;ÁÒˆ:&#20;¤!Ÿ�üþ&#24;&gt;Ì)‡'axD&#11;&#4;âôaCír˜&#19;Ã&quot;&#26;±44`“Cí&#24;&#26;&#17;&#13;,&#5;†XeÀ†@DT²4Ä&#26;'‡X1$&quot;&#2;�Býg&#10;ƒ9„Á­¸Aáún&#24;¤0�&#11;&lt;°&#16;&#3;z·—&#3;Æ ¿B?¿KöSè;&#6;}zµ—}Æ �‡&lt;…\VÌUèÍÓ½Û£W{ä0—“†žq©²g&#29;üÙÉÒï‚?¢&#25;n³&#29;N™�Œl#ÜZ=«‡Of)ô`Í&#30;&gt;t×&#6;Éî</match>+    <match line="74" column="36" offset="3743">p�&#29;^…Îv»ì¬àqû¥§&#2;n?:�AGöÜQ¡ƒB&amp;×6S!ƒïJF:Ú+¤+¤)´c&#11;íF 5Å/S‡!Åå�)~¸&#28;Hf½d&#23;’x}’‚“3w&#14;ƒƒ=8œpDkg·Y¥Ý&#14;{´v¶Äxi³Â&#22;­]&quot;×.1&#30;‰\»&#29;º5&#14;VãÙê¯'(Äs&amp;ñ</match>+    <match line="75" column="2" offset="3825">q©ˆu FÁ¦-</match>+    <match line="79" column="1" offset="5169">endstream&#10;endobj</match>+    <match line="81" column="1" offset="5186">14 0 obj</match>+    <match line="81" column="6" offset="5191">14 0 obj&#10;2734</match>+    <match line="83" column="1" offset="5200">endobj&#10;15 0 obj</match>+    <match line="84" column="4" offset="5210">15 0 obj</match>+    <match line="86" column="1" offset="5224">endobj&#10;16 0 obj</match>+    <match line="87" column="4" offset="5234">16 0 obj</match>+    <match line="88" column="2" offset="5241">(Mac OS X 10.12.6 Quartz PDFContext)</match>+    <match line="89" column="1" offset="5277">endobj&#10;17 0 obj</match>+    <match line="90" column="4" offset="5287">17 0 obj</match>+    <match line="92" column="1" offset="5304">endobj&#10;18 0 obj</match>+    <match line="93" column="4" offset="5314">18 0 obj</match>+    <match line="95" column="1" offset="5346">endobj&#10;19 0 obj</match>+    <match line="96" column="4" offset="5356">19 0 obj</match>+    <match line="98" column="1" offset="5365">endobj&#10;20 0 obj</match>+    <match line="99" column="4" offset="5375">20 0 obj</match>+    <match line="101" column="1" offset="5385">endobj&#10;1 0 obj</match>+    <match line="102" column="3" offset="5394">1 0 obj</match>+    <match line="103" column="5" offset="5404">&lt;&lt; /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate</match>+    <match line="103" column="73" offset="5472">&lt;&lt; /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate&#10;18 0 R /Keywords 19 0 R /AAPL:Keywords 20 0 R &gt;&gt;</match>+    <match line="104" column="4" offset="5483">18 0 R /Keywords 19 0 R /AAPL:Keywords 20 0 R &gt;&gt;</match>+    <match line="105" column="1" offset="5529">endobj&#10;xref</match>+    <match line="107" column="1" offset="5541">0 21</match>+    <match line="108" column="1" offset="5546">0000000000 65535 f </match>+    <match line="108" column="18" offset="5563">0000000000 65535 f &#10;0000005392 00000 n </match>+    <match line="109" column="12" offset="5577">0000005392 00000 n </match>+    <match line="110" column="1" offset="5586">0000000238 00000 n </match>+    <match line="110" column="18" offset="5603">0000000238 00000 n &#10;0000001714 00000 n </match>+    <match line="111" column="12" offset="5617">0000001714 00000 n </match>+    <match line="112" column="1" offset="5626">0000000022 00000 n </match>+    <match line="112" column="18" offset="5643">0000000022 00000 n &#10;0000000219 00000 n </match>+    <match line="113" column="12" offset="5657">0000000219 00000 n </match>+    <match line="114" column="1" offset="5666">0000000342 00000 n </match>+    <match line="114" column="18" offset="5683">0000000342 00000 n &#10;0000001679 00000 n </match>+    <match line="115" column="12" offset="5697">0000001679 00000 n </match>+    <match line="116" column="1" offset="5706">0000001847 00000 n </match>+    <match line="116" column="18" offset="5723">0000001847 00000 n &#10;0000000439 00000 n </match>+    <match line="117" column="12" offset="5737">0000000439 00000 n </match>+    <match line="118" column="1" offset="5746">0000001658 00000 n </match>+    <match line="118" column="18" offset="5763">0000001658 00000 n &#10;0000001797 00000 n </match>+    <match line="119" column="12" offset="5777">0000001797 00000 n </match>+    <match line="120" column="1" offset="5786">0000002110 00000 n </match>+    <match line="120" column="18" offset="5803">0000002110 00000 n &#10;0000002362 00000 n </match>+    <match line="121" column="12" offset="5817">0000002362 00000 n </match>+    <match line="122" column="1" offset="5826">0000005186 00000 n </match>+    <match line="122" column="18" offset="5843">0000005186 00000 n &#10;0000005207 00000 n </match>+    <match line="123" column="12" offset="5857">0000005207 00000 n </match>+    <match line="124" column="1" offset="5866">0000005231 00000 n </match>+    <match line="124" column="18" offset="5883">0000005231 00000 n &#10;0000005284 00000 n </match>+    <match line="125" column="12" offset="5897">0000005284 00000 n </match>+    <match line="126" column="1" offset="5906">0000005311 00000 n </match>+    <match line="126" column="18" offset="5923">0000005311 00000 n &#10;0000005353 00000 n </match>+    <match line="127" column="12" offset="5937">0000005353 00000 n </match>+    <match line="128" column="1" offset="5946">0000005372 00000 n </match>+    <match line="128" column="18" offset="5963">0000005372 00000 n &#10;trailer</match>+    <match line="130" column="5" offset="5978">&lt;&lt; /Size 21 /Root 11 0 R /Info 1 0 R /ID [ &lt;8db88d3335070bd9583341583cf769a3&gt;</match>+    <match line="132" column="1" offset="6092">startxref&#10;5536</match>+  </file>+  <file name="Hello.sh">+    <match line="1" column="8" offset="7">#!/bin/sh&#10;echo &quot;Hello World!&quot;</match>+    <match line="2" column="7" offset="16">echo &quot;Hello World!&quot;</match>+  </file>+</grep>

tests/out/Hello_wnhS--xml-nv.out

new file mode 100644@@ -0,0 +1,46 @@+<grep>+  <file name="Hello.class">+    <match line="1">Êþº¾&#0;&#0;&#0;4&#0;&#29;</match>+    <match line="2">&#0;&#6;&#0;&#15;&#9;&#0;&#16;&#0;&#17;&#8;&#0;&#18;</match>+    <match line="3">&#0;&#19;&#0;&#20;&#7;&#0;&#21;&#7;&#0;&#22;&#1;&#0;&#6;&lt;init&gt;&#1;&#0;&#3;()V&#1;&#0;&#4;Code&#1;&#0;&#15;LineNumberTable&#1;&#0;&#4;main&#1;&#0;&#22;([Ljava/lang/String;)V&#1;&#0;</match>+    <match line="4">SourceFile&#1;&#0;</match>+    <match line="6">&#0;&#0;&#0;&#6;&#0;&#1;&#0;&#0;&#0;&#3;&#0;&#9;&#0;&#11;&#0;&#12;&#0;&#1;&#0;&#9;&#0;&#0;&#0;%&#0;&#2;&#0;&#1;&#0;&#0;&#0;&#9;²&#0;&#2;&#18;&#3;¶&#0;&#4;±&#0;&#0;&#0;&#1;&#0;</match>+    <match line="7">&#0;&#0;&#0;</match>+    <match line="8">&#0;&#2;&#0;&#0;&#0;&#5;&#0;&#8;&#0;&#6;&#0;&#1;&#0;&#13;&#0;&#0;&#0;&#2;&#0;&#14;</match>+  </file>+  <file name="Hello.java">+    <match line="2"></match>+    <match line="6">  }</match>+    <match line="7">}</match>+  </file>+  <file name="Hello.pdf">+    <match line="16">&gt;&gt;</match>+    <match line="20">&gt;&gt; &gt;&gt;</match>+    <match line="27">ÐpÐ|ô&#12;h&#21;€tZ&#0;*%´LôX'ž£R&#21;=•f¢YA„ØÊý¨oP~×§Ô€´Në�Ö�^£_&quot;É&lt;ýJsèç!m`l¦Ãn&#30;^8´&#8;&#15;Ø&#19;¶ù eÓ&#21;Û…&amp;žG;(&amp;Ä+bP&#12;‘*^&#21;‡Å!1&#12;é�8&#24;͉½OúÎ~&gt;ذô.ÖMú¾&#12;&#14;B¬gÃ3&#7;¬p4&#1;&lt;ø&#7;ëÎFš&#9;¶.îhìó¼�Þ?ï¿c&#25;·&gt;ø³�½&#0;ú1'¿Á¢&#11;k&amp;%æ^?÷MOÂCuE|õÖ�îëçèx2KQÞª�Y’×äûò</match>+    <match line="28">¾÷äÕ¤&#13;ùgy&#21;ï½¶\=Ê&#11;ÿ“¹Í!F;’ÍAÎ&lt;›Q´qÆ&#27;À!¸©Esö·YL²é¶b´`ÉB”�«¸ÿË&#9;óÃ&lt;·±Rs.îð¼·?c6Í÷Š&#15;‹t¾O»¬­kŸh?j&#x7f;h+ÚÇ@¿K&#31;J_JßJW¤«Ò&#13;R¥kÒ²ô�ô½ô¹ô5z_@º,]éØIqì&#27;»&#7;~Æ{Öhí0f†³&#20;&#16;óÂÚÌ</match>+    <match line="29">K&#31;ñw&#6;c›ù3¡Õ^&#3;�»&#x7f;c-刲SyF&#25;Vv+Ï)&#19;J¯r@9¬lW&#6;Ðú•Qe/Fvn°dc=΀…&#x7f;’g‹¦#®â&lt;±Wu°çÃK&#29;ï¦_\ÃÖ†5ØI=&#14;žÙÚ¦&#14;¯&#17;W¿&#21;Uc¼;]œ&#6;:M!b‹Î&quot;r&#31;:œ&#31;'ªþÎÙ\“85Roâ”°Ä.Ñ/ÆZ5˜&#19;&#7;P…ãmõ8ÈUš&#25;É&#12;gr¤fz3C™þÌ1ÆQ¬Ñù’Ù‹Ñ!|G&#18;Þ3Ë1ÿ›5Äg&#24;ï&#29;æ¨&#9;l£‡[+4çqß&#17;å]oÁ·fê¡: i/©9\¯¦:æ&#24;Ù&gt;U·m5&#26;</match>+    <match line="55">&gt;&gt;</match>+    <match line="63">ïT`ŸÂÛ</match>+    <match line="64">&#x7f;VØ»)Q¾¥°GáM…?)4°½&#6;&#23;Þ°¢~w�¬WؽkšÜ]‡Ý•ú®:ŸÜ5&#13;»&#2;z�&#15;;&#21;^¯E¤f¨|MáU&#30;^mÅ+lk‡Â&#31;&#11;±½&#16;/Û&#16;NÂ&#31;&#20;^R�«ø½Â‹</match>+    <match line="65">¿KÂ6…&#23;ž·É&#23;rñ¼&#13;ÏmuÊçºa«&#19;ÏnñËg+°Å�ß*&lt;£ð´ÂSO¦Ë§</match>+    <match line="68">TtÄý</match>+    <match line="69">å6üBa‰Â=</match>+    <match line="73">Ý&#20;º*t±Ã—:Lú</match>+    <match line="76">Ò&#5;prh…Æ€6&#8;‚&#3;&#16;~�&#3;&quot;&quot;</match>+    <match line="77">W¬&#22;Yÿ?�þÇSáOg„&#26;;M¬åÑØGDè!m&#25;&#x7f;¥¿¿&quot;´‡u4S/&quot;&#26;ÅJ±“ù­¼·h¤åt^ÄãmÑŸ¹z^&#27;Ô=ŒÖÐfsu&#13;NÓbì¢Cô&#14;&#29;cî´&#24;&#8;^+&#14;‘Gœ`?+&#x7f;ð¡¡ž¥=LËQ� è$Jh‹x‰-–SD”Ò2�Gm&quot;[Þ¯&#31;dt?=Ä×£´…J™72XÎñ&#x7f;L;h&#21;] &#13;Ú&#25;šÂüNÚËñ(þüš¹ˆ&amp;jaKÛ´ÁÚlÖÛËÖ6Ñ&amp;±œšh‘Nü)WtJ6iYlu&#7;g@4“6Ë&amp;¹Á¨&#7;�Mò&#28;Ï&#16;u°D,®&#24;/gaÔn«Ø%zkãè&#16;¯/§É¸&#13;wã˜X¡{õ%8C5&#26;a:ÝI&#7;d“ÅE51^ª±Ì&#22;÷éÓÍ«œ­•kKôéb&#27;�a›3ñ&#29;Ë&#30;Žl³™1Ñ&#14;m¢&#28;'Çqγ&#25;ÛlÒš(µ8h?Z¹îk5%Fé#0„ó)×o¢&#13;ô&#12;ÛíÊ•!*E_ö^Jåruô¢m|ùåjÔrEÍjˆ&lt;m0mÖf‹U&#28;m&#11;W³&#20;ùÔŸ}t�gi…ØÁqSL&#5;-’M¼U$êAôZŒEêü÷¦l·#¬ùF&#23;†&#3;&#19;‚î}!�?û'¢Û&#17;ã&#14;Óøpâ}îȵkãƒz†&#12;…ef&#24;¾Ø°îóžúO“§üÙcÆ&#7;Ý&#17;Ñ® ¿ÍlÁô|&#6;'&#5;Ù&#3;ÿ&#12;˜Ý&#21;0&#22;&#5;F‡¥�&#x7f;£§‡Ý³ŠÝUŽ*ï *GÑ ?ïÿ²Ç0&#25;&#31;|YˆGB&#17;qmE„ò;¼Î»HÜq;OÇe»Ý&#5;sóÃb:&#11;ñÙ&#12;ôð0—�í&#30;ÁaŽ˜&#24;ô†ÜUîªÑ…Uî&#17;îâ&#25;…&#28;·9òDQU(‡3˜&#20;œËtrÐ&#19;&#14;„2~`‹B!ûհÃKX½*Ä&#22;îl³À£&#9;å\e¥Äì1î0ºŒ&#15;N&#8;†+ó3Â�üP†Çã.&#8;7Œ&#15;†&#27;ò3&lt;¡&#16;kÙ~ˆ”#®˜›Ö&#22;³�c¶õàyGÔ</match>+    <match line="78">—(�&#17;¦PU•asRÐë&#9;WVUeTq&#30;mr„&#26;~&#2;&#8;ú)&#16;h&#3;&quot;dØàJ&#20;ð÷`&lt;&#27;ãÁëÉ0&#0;¯Çëá8CùìÛiÜš&#2;ŽÔ&#19;òónœŠ¹¯ä^ÎýœÁó³&#24;Ýçóù‚Ï&#0;SX&#30;EÝþm¿Îð&#x7f;Ù´&#31;éÁ”t“vágw;�&#20;™ü¯/Vµz±Ü§ª&#24;ê´ËÜó&#19;Y„ëU&#17;+—k:å¼u¸¹79&#14;7&#31;nî•ìô8}&#30;§§X§+‹�qå&#11;U&#27;cûîüBKwì0rÐGñ¿ �n6N&#21;|osøÖq·:øXô&#30;wæÅqÆX–&lt;êÜc&#24;&#23;,ǽÇo&#11;CAçná&#30;Ÿ³“£Š¥„¬^½“óØužÓËÔ»²QëÞØxõƒFÙtõ-í†Ö,훫Nö¯QùµÏø­QN)”IyF&#4;;&#25;t°�&#8;iì!“=eæð;ÏB‰&#12;î¤dJ7G£&#14;†&#23;‘âI±¤æåöëŸb&#19;^79&#29;”—›&#20;ÓSx;[bôéW&gt;‹}ã¥`CÉÜ=SÕeuT¸Ï&#29;¹&#20;¶®}xÅ‹±Zõ&#20;Ë&#23;û&#6;&#12;|-+K&#12;&#20;ÉÂ*&#2;ê“ÇÊ^&#8;Ï7êrŽë2ÅÒž½v�F•ȷ؈ʨCÜqŽHçSž&#17;Q&quot;ÅG#q¥^/R¼�»ôuzúz´&#3;SC&#31;œyö&#21;õ‘8!Öß¿ôñCoââ&#26;£æ&#26;­äœGqÎ&#9;ÔŽ¼�dKu&#18;U[ë“6¦Å%Ùó‘”ò³4Ç…æ+Æ-üüB³ãl/ÑÙ’â2rìÛ§K×Ü$§CóvÖœŽ$­¸zÍšêÕkÖ¬&gt;s©å«3--8qôHÓ±cMGŽnVï«OÕ)uHøù³ÓQô4üšíÚRó95N§?n’Å,~~o¦‰Ì&#9;&gt;:Fu,Æ&#11;rä„Éc§ŒÈ&#26;[4&#x7f;^©&#x7f;bÑœÅóf,$ú&#23; -&#6;ä</match>+    <match line="85">(Hello)</match>+    <match line="91">(TextEdit)</match>+    <match line="94">(D:20200124010711Z00'00')</match>+    <match line="97">()</match>+    <match line="100">[ ]</match>+    <match line="131">&lt;8db88d3335070bd9583341583cf769a3&gt; ] &gt;&gt;</match>+    <match line="134">%%EOF</match>+  </file>+  <file name="Hello.txt">+    <match line="1">Hello</match>+  </file>+  <file name="emptyline.txt">+    <match line="1"></match>+  </file>+</grep>

tests/out/Hello_wnhS--xml-o.out

new file mode 100644@@ -0,0 +1,229 @@+<grep>+  <file name="Hello.bat">+    <match>sh&#10;echo</match>+    <match>Hello World!&quot;</match>+  </file>+  <file name="Hello.class">+    <match>Hello World!&#7;&#0;&#26;</match>+  </file>+  <file name="Hello.java">+    <match>import java.lang.*;</match>+    <match>public class</match>+    <match>Hello //</match>+    <match>prints a</match>+    <match>Hello World!</match>+    <match>greeting&#10;{</match>+    <match>public static</match>+    <match>void main(String[]</match>+    <match>Hello World!&quot;);</match>+  </file>+  <file name="Hello.pdf">+    <match>3&#10;%Äåòåë§ó ÐÄÆ</match>+    <match>4 0</match>+    <match>obj&#10;&lt;&lt;</match>+    <match>Length 5</match>+    <match>0 R</match>+    <match>Filter /FlateDecode</match>+    <match>stream&#10;x&#1;EŽ»</match>+    <match>LY&#10;Ÿ‰&#7;o†k÷´ŽÐ›áâj©Rj²@8þ­í”</match>+    <match>endstream&#10;endobj</match>+    <match>5 0</match>+    <match>obj&#10;123</match>+    <match>endobj&#10;2</match>+    <match>0 obj</match>+    <match>Type /Page</match>+    <match>Parent 3</match>+    <match>0 R</match>+    <match>Resources 6</match>+    <match>0 R</match>+    <match>Contents 4</match>+    <match>0 R</match>+    <match>MediaBox [0</match>+    <match>0 612</match>+    <match>endobj&#10;6</match>+    <match>0 obj</match>+    <match>ProcSet [</match>+    <match>PDF /Text</match>+    <match>ColorSpace &lt;&lt;</match>+    <match>Cs1 7</match>+    <match>0 R</match>+    <match>Font &lt;&lt;</match>+    <match>TT1 8</match>+    <match>0 R</match>+    <match>endobj&#10;9</match>+    <match>0 obj</match>+    <match>Length 10</match>+    <match>0 R</match>+    <match>N 1</match>+    <match>Alternate /DeviceGray</match>+    <match>Filter /FlateDecode</match>+    <match>stream&#10;x&#1;…U]h&#28;U&#20;&gt;»sg&#3;&#18;&#7;&#31;´</match>+    <match>m&#9;é2‰V&#19;‹µÛMºI&#19;·ëfS›*Êtv6;Ídfœ™Ý&amp;¡O¥à›&#22;&#4;é« &gt;Æ‚&#8;¶*6/ö¥¥Å’J5&#15;</match>+    <match>7 ‹š&#17;òÈÇX</match>+    <match>4&#10;endstream</match>+    <match>endobj&#10;10</match>+    <match>0 obj</match>+    <match>1116&#10;endobj</match>+    <match>7 0</match>+    <match>obj&#10;[</match>+    <match>ICCBased 9</match>+    <match>0 R</match>+    <match>endobj&#10;3</match>+    <match>0 obj</match>+    <match>Type /Pages</match>+    <match>MediaBox [0</match>+    <match>0 612</match>+    <match>Count 1</match>+    <match>Kids [</match>+    <match>2 0</match>+    <match>R ]</match>+    <match>endobj&#10;11</match>+    <match>0 obj</match>+    <match>Type /Catalog</match>+    <match>Pages 3</match>+    <match>0 R</match>+    <match>endobj&#10;8</match>+    <match>0 obj</match>+    <match>Type /Font</match>+    <match>Subtype /TrueType</match>+    <match>BaseFont /GQTMZF+Menlo-Regular</match>+    <match>FontDescriptor&#10;12</match>+    <match>0 R</match>+    <match>Encoding /MacRomanEncoding</match>+    <match>FirstChar 72</match>+    <match>LastChar 111</match>+    <match>Widths [</match>+    <match>602&#10;0</match>+    <match>0 0</match>+    <match>0 0</match>+    <match>0 0</match>+    <match>0 0</match>+    <match>0 0</match>+    <match>0 0</match>+    <match>0 0</match>+    <match>0 0</match>+    <match>0 0</match>+    <match>0 0</match>+    <match>0 0</match>+    <match>0 0</match>+    <match>0 0</match>+    <match>0 602</match>+    <match>0 0</match>+    <match>0 0</match>+    <match>0 0</match>+    <match>602&#10;0</match>+    <match>0 602</match>+    <match>endobj&#10;12</match>+    <match>0 obj</match>+    <match>Type /FontDescriptor</match>+    <match>FontName /GQTMZF+Menlo-Regular</match>+    <match>Flags 33</match>+    <match>FontBBox&#10;[-558</match>+    <match>375 718</match>+    <match>ItalicAngle 0</match>+    <match>Ascent 928</match>+    <match>Descent -236</match>+    <match>CapHeight 729</match>+    <match>StemV 99</match>+    <match>XHeight 547</match>+    <match>StemH 83</match>+    <match>AvgWidth 602</match>+    <match>MaxWidth 602</match>+    <match>FontFile2 13</match>+    <match>0 R</match>+    <match>endobj&#10;13</match>+    <match>0 obj</match>+    <match>Length 14</match>+    <match>0 R</match>+    <match>Length1 4064</match>+    <match>Filter /FlateDecode</match>+    <match>stream&#10;x&#1;ÝW{xTÅ&#21;?s&#x7f;w6¯Í&gt;’MHH€]Öå•,�„·R&#22;Hxˆ</match>+    <match>H (!&#8;A´1�JQ</match>+    <match>j&#9;L+I&#23;.RÌ'›4‰&#3;‚pš¼Ã¤vÚĈÍä&#19;·&#x7f;=R&#14;õ‰Dª`ÌJ&gt;¦</match>+    <match>a&#10;&gt;¨À‘Ahb¡i&#16;&#14;+&#28;z?^&#30;Rx?&#30;&#7;&#21;ÞS8På”&#7;2ñ×TìWx·&#22;�«|²Qá/</match>+    <match>W&#10;Ë&#21;&#30;p&#14;“&#15;LÂ/&#21;*ïŲ¥&#21;r™ÂÒ</match>+    <match>y&#10;wåâN…¹¹(nÅœ:ÌV(R(T˜5³£œ¥0“&#28;rfGÌP˜®p‡ÂíS&#18;äí6L+Ämû0•…©.LI&#0;?ÑA&#23;nUø¹Â-&#25;éò–\LV˜¤0QaB&#5;Æ+ÜìÂ8…±Â/Ç*ÜT‡1Ýpãè4yc&#x7f;Œ&#30;ž$G§aTAš&#28;¥0’¥‘…&#24;ÁÒˆ:&#20;¤!Ÿ�üþ&#24;&gt;Ì)‡'axD</match>+    <match>g&#10;ƒ9„Á­¸Aáún&#24;¤0�</match>+    <match>F 5Å/S‡!Åå�)~¸&#28;Hf½d&#23;’x}’‚“3w&#14;ƒƒ=8œpDkg·Y¥Ý&#14;{´v¶Äxi³Â&#22;­]&quot;×.1&#30;‰\»&#29;º5&#14;VãÙê¯'(Äs&amp;ñ</match>+    <match>u FÁ¦-</match>+    <match>endstream&#10;endobj</match>+    <match>14 0</match>+    <match>obj&#10;2734</match>+    <match>endobj&#10;15</match>+    <match>0 obj</match>+    <match>endobj&#10;16</match>+    <match>0 obj</match>+    <match>Mac OS</match>+    <match>X 10.12.6</match>+    <match>Quartz PDFContext)</match>+    <match>endobj&#10;17</match>+    <match>0 obj</match>+    <match>endobj&#10;18</match>+    <match>0 obj</match>+    <match>endobj&#10;19</match>+    <match>0 obj</match>+    <match>endobj&#10;20</match>+    <match>0 obj</match>+    <match>endobj&#10;1</match>+    <match>0 obj</match>+    <match>Title 15</match>+    <match>0 R</match>+    <match>Producer 16</match>+    <match>0 R</match>+    <match>Creator 17</match>+    <match>0 R</match>+    <match>CreationDate 18</match>+    <match>0 R</match>+    <match>ModDate&#10;18</match>+    <match>0 R</match>+    <match>Keywords 19</match>+    <match>0 R</match>+    <match>Keywords 20</match>+    <match>0 R</match>+    <match>endobj&#10;xref</match>+    <match>0 21</match>+    <match>0000000000 65535</match>+    <match>f &#10;0000005392</match>+    <match>00000 n</match>+    <match>0000000238 00000</match>+    <match>n &#10;0000001714</match>+    <match>00000 n</match>+    <match>0000000022 00000</match>+    <match>n &#10;0000000219</match>+    <match>00000 n</match>+    <match>0000000342 00000</match>+    <match>n &#10;0000001679</match>+    <match>00000 n</match>+    <match>0000001847 00000</match>+    <match>n &#10;0000000439</match>+    <match>00000 n</match>+    <match>0000001658 00000</match>+    <match>n &#10;0000001797</match>+    <match>00000 n</match>+    <match>0000002110 00000</match>+    <match>n &#10;0000002362</match>+    <match>00000 n</match>+    <match>0000005186 00000</match>+    <match>n &#10;0000005207</match>+    <match>00000 n</match>+    <match>0000005231 00000</match>+    <match>n &#10;0000005284</match>+    <match>00000 n</match>+    <match>0000005311 00000</match>+    <match>n &#10;0000005353</match>+    <match>00000 n</match>+    <match>0000005372 00000</match>+    <match>n &#10;trailer</match>+    <match>Size 21</match>+    <match>Root 11</match>+    <match>0 R</match>+    <match>Info 1</match>+    <match>0 R</match>+    <match>ID [</match>+    <match>startxref&#10;5536</match>+  </file>+  <file name="Hello.sh">+    <match>sh&#10;echo</match>+    <match>Hello World!&quot;</match>+  </file>+</grep>

tests/out/Hello_wnhS--xml-on.out

new file mode 100644@@ -0,0 +1,229 @@+<grep>+  <file name="Hello.bat">+    <match line="1">sh&#10;echo</match>+    <match line="2">Hello World!&quot;</match>+  </file>+  <file name="Hello.class">+    <match line="5">Hello World!&#7;&#0;&#26;</match>+  </file>+  <file name="Hello.java">+    <match line="1">import java.lang.*;</match>+    <match line="3">public class</match>+    <match line="3">Hello //</match>+    <match line="3">prints a</match>+    <match line="3">Hello World!</match>+    <match line="3">greeting&#10;{</match>+    <match line="4">public static</match>+    <match line="4">void main(String[]</match>+    <match line="5">Hello World!&quot;);</match>+  </file>+  <file name="Hello.pdf">+    <match line="1">3&#10;%Äåòåë§ó ÐÄÆ</match>+    <match line="3">4 0</match>+    <match line="3">obj&#10;&lt;&lt;</match>+    <match line="4">Length 5</match>+    <match line="4">0 R</match>+    <match line="4">Filter /FlateDecode</match>+    <match line="5">stream&#10;x&#1;EŽ»</match>+    <match line="7">LY&#10;Ÿ‰&#7;o†k÷´ŽÐ›áâj©Rj²@8þ­í”</match>+    <match line="9">endstream&#10;endobj</match>+    <match line="11">5 0</match>+    <match line="11">obj&#10;123</match>+    <match line="13">endobj&#10;2</match>+    <match line="14">0 obj</match>+    <match line="15">Type /Page</match>+    <match line="15">Parent 3</match>+    <match line="15">0 R</match>+    <match line="15">Resources 6</match>+    <match line="15">0 R</match>+    <match line="15">Contents 4</match>+    <match line="15">0 R</match>+    <match line="15">MediaBox [0</match>+    <match line="15">0 612</match>+    <match line="17">endobj&#10;6</match>+    <match line="18">0 obj</match>+    <match line="19">ProcSet [</match>+    <match line="19">PDF /Text</match>+    <match line="19">ColorSpace &lt;&lt;</match>+    <match line="19">Cs1 7</match>+    <match line="19">0 R</match>+    <match line="19">Font &lt;&lt;</match>+    <match line="19">TT1 8</match>+    <match line="19">0 R</match>+    <match line="21">endobj&#10;9</match>+    <match line="22">0 obj</match>+    <match line="23">Length 10</match>+    <match line="23">0 R</match>+    <match line="23">N 1</match>+    <match line="23">Alternate /DeviceGray</match>+    <match line="23">Filter /FlateDecode</match>+    <match line="24">stream&#10;x&#1;…U]h&#28;U&#20;&gt;»sg&#3;&#18;&#7;&#31;´</match>+    <match line="25">m&#9;é2‰V&#19;‹µÛMºI&#19;·ëfS›*Êtv6;Ídfœ™Ý&amp;¡O¥à›&#22;&#4;é« &gt;Æ‚&#8;¶*6/ö¥¥Å’J5&#15;</match>+    <match line="26">7 ‹š&#17;òÈÇX</match>+    <match line="30">4&#10;endstream</match>+    <match line="32">endobj&#10;10</match>+    <match line="33">0 obj</match>+    <match line="34">1116&#10;endobj</match>+    <match line="36">7 0</match>+    <match line="36">obj&#10;[</match>+    <match line="37">ICCBased 9</match>+    <match line="37">0 R</match>+    <match line="38">endobj&#10;3</match>+    <match line="39">0 obj</match>+    <match line="40">Type /Pages</match>+    <match line="40">MediaBox [0</match>+    <match line="40">0 612</match>+    <match line="40">Count 1</match>+    <match line="40">Kids [</match>+    <match line="40">2 0</match>+    <match line="40">R ]</match>+    <match line="41">endobj&#10;11</match>+    <match line="42">0 obj</match>+    <match line="43">Type /Catalog</match>+    <match line="43">Pages 3</match>+    <match line="43">0 R</match>+    <match line="44">endobj&#10;8</match>+    <match line="45">0 obj</match>+    <match line="46">Type /Font</match>+    <match line="46">Subtype /TrueType</match>+    <match line="46">BaseFont /GQTMZF+Menlo-Regular</match>+    <match line="46">FontDescriptor&#10;12</match>+    <match line="47">0 R</match>+    <match line="47">Encoding /MacRomanEncoding</match>+    <match line="47">FirstChar 72</match>+    <match line="47">LastChar 111</match>+    <match line="47">Widths [</match>+    <match line="47">602&#10;0</match>+    <match line="48">0 0</match>+    <match line="48">0 0</match>+    <match line="48">0 0</match>+    <match line="48">0 0</match>+    <match line="48">0 0</match>+    <match line="48">0 0</match>+    <match line="48">0 0</match>+    <match line="48">0 0</match>+    <match line="48">0 0</match>+    <match line="48">0 0</match>+    <match line="48">0 0</match>+    <match line="48">0 0</match>+    <match line="48">0 0</match>+    <match line="48">0 602</match>+    <match line="48">0 0</match>+    <match line="48">0 0</match>+    <match line="48">0 0</match>+    <match line="48">602&#10;0</match>+    <match line="49">0 602</match>+    <match line="50">endobj&#10;12</match>+    <match line="51">0 obj</match>+    <match line="52">Type /FontDescriptor</match>+    <match line="52">FontName /GQTMZF+Menlo-Regular</match>+    <match line="52">Flags 33</match>+    <match line="52">FontBBox&#10;[-558</match>+    <match line="53">375 718</match>+    <match line="53">ItalicAngle 0</match>+    <match line="53">Ascent 928</match>+    <match line="53">Descent -236</match>+    <match line="53">CapHeight 729</match>+    <match line="54">StemV 99</match>+    <match line="54">XHeight 547</match>+    <match line="54">StemH 83</match>+    <match line="54">AvgWidth 602</match>+    <match line="54">MaxWidth 602</match>+    <match line="54">FontFile2 13</match>+    <match line="54">0 R</match>+    <match line="56">endobj&#10;13</match>+    <match line="57">0 obj</match>+    <match line="58">Length 14</match>+    <match line="58">0 R</match>+    <match line="58">Length1 4064</match>+    <match line="58">Filter /FlateDecode</match>+    <match line="59">stream&#10;x&#1;ÝW{xTÅ&#21;?s&#x7f;w6¯Í&gt;’MHH€]Öå•,�„·R&#22;Hxˆ</match>+    <match line="60">H (!&#8;A´1�JQ</match>+    <match line="61">j&#9;L+I&#23;.RÌ'›4‰&#3;‚pš¼Ã¤vÚĈÍä&#19;·&#x7f;=R&#14;õ‰Dª`ÌJ&gt;¦</match>+    <match line="61">a&#10;&gt;¨À‘Ahb¡i&#16;&#14;+&#28;z?^&#30;Rx?&#30;&#7;&#21;ÞS8På”&#7;2ñ×TìWx·&#22;�«|²Qá/</match>+    <match line="66">W&#10;Ë&#21;&#30;p&#14;“&#15;LÂ/&#21;*ïŲ¥&#21;r™ÂÒ</match>+    <match line="70">y&#10;wåâN…¹¹(nÅœ:ÌV(R(T˜5³£œ¥0“&#28;rfGÌP˜®p‡ÂíS&#18;äí6L+Ämû0•…©.LI&#0;?ÑA&#23;nUø¹Â-&#25;éò–\LV˜¤0QaB&#5;Æ+ÜìÂ8…±Â/Ç*ÜT‡1Ýpãè4yc&#x7f;Œ&#30;ž$G§aTAš&#28;¥0’¥‘…&#24;ÁÒˆ:&#20;¤!Ÿ�üþ&#24;&gt;Ì)‡'axD</match>+    <match line="71">g&#10;ƒ9„Á­¸Aáún&#24;¤0�</match>+    <match line="74">F 5Å/S‡!Åå�)~¸&#28;Hf½d&#23;’x}’‚“3w&#14;ƒƒ=8œpDkg·Y¥Ý&#14;{´v¶Äxi³Â&#22;­]&quot;×.1&#30;‰\»&#29;º5&#14;VãÙê¯'(Äs&amp;ñ</match>+    <match line="75">u FÁ¦-</match>+    <match line="79">endstream&#10;endobj</match>+    <match line="81">14 0</match>+    <match line="81">obj&#10;2734</match>+    <match line="83">endobj&#10;15</match>+    <match line="84">0 obj</match>+    <match line="86">endobj&#10;16</match>+    <match line="87">0 obj</match>+    <match line="88">Mac OS</match>+    <match line="88">X 10.12.6</match>+    <match line="88">Quartz PDFContext)</match>+    <match line="89">endobj&#10;17</match>+    <match line="90">0 obj</match>+    <match line="92">endobj&#10;18</match>+    <match line="93">0 obj</match>+    <match line="95">endobj&#10;19</match>+    <match line="96">0 obj</match>+    <match line="98">endobj&#10;20</match>+    <match line="99">0 obj</match>+    <match line="101">endobj&#10;1</match>+    <match line="102">0 obj</match>+    <match line="103">Title 15</match>+    <match line="103">0 R</match>+    <match line="103">Producer 16</match>+    <match line="103">0 R</match>+    <match line="103">Creator 17</match>+    <match line="103">0 R</match>+    <match line="103">CreationDate 18</match>+    <match line="103">0 R</match>+    <match line="103">ModDate&#10;18</match>+    <match line="104">0 R</match>+    <match line="104">Keywords 19</match>+    <match line="104">0 R</match>+    <match line="104">Keywords 20</match>+    <match line="104">0 R</match>+    <match line="105">endobj&#10;xref</match>+    <match line="107">0 21</match>+    <match line="108">0000000000 65535</match>+    <match line="108">f &#10;0000005392</match>+    <match line="109">00000 n</match>+    <match line="110">0000000238 00000</match>+    <match line="110">n &#10;0000001714</match>+    <match line="111">00000 n</match>+    <match line="112">0000000022 00000</match>+    <match line="112">n &#10;0000000219</match>+    <match line="113">00000 n</match>+    <match line="114">0000000342 00000</match>+    <match line="114">n &#10;0000001679</match>+    <match line="115">00000 n</match>+    <match line="116">0000001847 00000</match>+    <match line="116">n &#10;0000000439</match>+    <match line="117">00000 n</match>+    <match line="118">0000001658 00000</match>+    <match line="118">n &#10;0000001797</match>+    <match line="119">00000 n</match>+    <match line="120">0000002110 00000</match>+    <match line="120">n &#10;0000002362</match>+    <match line="121">00000 n</match>+    <match line="122">0000005186 00000</match>+    <match line="122">n &#10;0000005207</match>+    <match line="123">00000 n</match>+    <match line="124">0000005231 00000</match>+    <match line="124">n &#10;0000005284</match>+    <match line="125">00000 n</match>+    <match line="126">0000005311 00000</match>+    <match line="126">n &#10;0000005353</match>+    <match line="127">00000 n</match>+    <match line="128">0000005372 00000</match>+    <match line="128">n &#10;trailer</match>+    <match line="130">Size 21</match>+    <match line="130">Root 11</match>+    <match line="130">0 R</match>+    <match line="130">Info 1</match>+    <match line="130">0 R</match>+    <match line="130">ID [</match>+    <match line="132">startxref&#10;5536</match>+  </file>+  <file name="Hello.sh">+    <match line="1">sh&#10;echo</match>+    <match line="2">Hello World!&quot;</match>+  </file>+</grep>

tests/out/Hello_wnhS--xml-onkb.out

new file mode 100644@@ -0,0 +1,229 @@+<grep>+  <file name="Hello.bat">+    <match line="1" column="8" offset="7">sh&#10;echo</match>+    <match line="2" column="7" offset="16">Hello World!&quot;</match>+  </file>+  <file name="Hello.class">+    <match line="5" column="27" offset="148">Hello World!&#7;&#0;&#26;</match>+  </file>+  <file name="Hello.java">+    <match line="1" column="1" offset="0">import java.lang.*;</match>+    <match line="3" column="1" offset="21">public class</match>+    <match line="3" column="14" offset="34">Hello //</match>+    <match line="3" column="23" offset="43">prints a</match>+    <match line="3" column="32" offset="52">Hello World!</match>+    <match line="3" column="45" offset="65">greeting&#10;{</match>+    <match line="4" column="3" offset="76">public static</match>+    <match line="4" column="17" offset="90">void main(String[]</match>+    <match line="5" column="25" offset="138">Hello World!&quot;);</match>+  </file>+  <file name="Hello.pdf">+    <match line="1" column="8" offset="7">3&#10;%Äåòåë§ó ÐÄÆ</match>+    <match line="3" column="1" offset="22">4 0</match>+    <match line="3" column="5" offset="26">obj&#10;&lt;&lt;</match>+    <match line="4" column="5" offset="34">Length 5</match>+    <match line="4" column="14" offset="43">0 R</match>+    <match line="4" column="19" offset="48">Filter /FlateDecode</match>+    <match line="5" column="1" offset="71">stream&#10;x&#1;EŽ»</match>+    <match line="7" column="35" offset="135">LY&#10;Ÿ‰&#7;o†k÷´ŽÐ›áâj©Rj²@8þ­í”</match>+    <match line="9" column="1" offset="202">endstream&#10;endobj</match>+    <match line="11" column="1" offset="219">5 0</match>+    <match line="11" column="5" offset="223">obj&#10;123</match>+    <match line="13" column="1" offset="231">endobj&#10;2</match>+    <match line="14" column="3" offset="240">0 obj</match>+    <match line="15" column="5" offset="250">Type /Page</match>+    <match line="15" column="17" offset="262">Parent 3</match>+    <match line="15" column="26" offset="271">0 R</match>+    <match line="15" column="31" offset="276">Resources 6</match>+    <match line="15" column="43" offset="288">0 R</match>+    <match line="15" column="48" offset="293">Contents 4</match>+    <match line="15" column="59" offset="304">0 R</match>+    <match line="15" column="64" offset="309">MediaBox [0</match>+    <match line="15" column="76" offset="321">0 612</match>+    <match line="17" column="1" offset="335">endobj&#10;6</match>+    <match line="18" column="3" offset="344">0 obj</match>+    <match line="19" column="5" offset="354">ProcSet [</match>+    <match line="19" column="16" offset="365">PDF /Text</match>+    <match line="19" column="29" offset="378">ColorSpace &lt;&lt;</match>+    <match line="19" column="44" offset="393">Cs1 7</match>+    <match line="19" column="50" offset="399">0 R</match>+    <match line="19" column="58" offset="407">Font &lt;&lt;</match>+    <match line="19" column="67" offset="416">TT1 8</match>+    <match line="19" column="73" offset="422">0 R</match>+    <match line="21" column="1" offset="432">endobj&#10;9</match>+    <match line="22" column="3" offset="441">0 obj</match>+    <match line="23" column="5" offset="451">Length 10</match>+    <match line="23" column="15" offset="461">0 R</match>+    <match line="23" column="20" offset="466">N 1</match>+    <match line="23" column="25" offset="471">Alternate /DeviceGray</match>+    <match line="23" column="48" offset="494">Filter /FlateDecode</match>+    <match line="24" column="1" offset="517">stream&#10;x&#1;…U]h&#28;U&#20;&gt;»sg&#3;&#18;&#7;&#31;´</match>+    <match line="25" column="19" offset="547">m&#9;é2‰V&#19;‹µÛMºI&#19;·ëfS›*Êtv6;Ídfœ™Ý&amp;¡O¥à›&#22;&#4;é« &gt;Æ‚&#8;¶*6/ö¥¥Å’J5&#15;</match>+    <match line="26" column="307" offset="1006">7 ‹š&#17;òÈÇX</match>+    <match line="30" column="29" offset="1639">4&#10;endstream</match>+    <match line="32" column="1" offset="1651">endobj&#10;10</match>+    <match line="33" column="4" offset="1661">0 obj</match>+    <match line="34" column="1" offset="1667">1116&#10;endobj</match>+    <match line="36" column="1" offset="1679">7 0</match>+    <match line="36" column="5" offset="1683">obj&#10;[</match>+    <match line="37" column="4" offset="1690">ICCBased 9</match>+    <match line="37" column="15" offset="1701">0 R</match>+    <match line="38" column="1" offset="1707">endobj&#10;3</match>+    <match line="39" column="3" offset="1716">0 obj</match>+    <match line="40" column="5" offset="1726">Type /Pages</match>+    <match line="40" column="18" offset="1739">MediaBox [0</match>+    <match line="40" column="30" offset="1751">0 612</match>+    <match line="40" column="42" offset="1763">Count 1</match>+    <match line="40" column="51" offset="1772">Kids [</match>+    <match line="40" column="58" offset="1779">2 0</match>+    <match line="40" column="62" offset="1783">R ]</match>+    <match line="41" column="1" offset="1790">endobj&#10;11</match>+    <match line="42" column="4" offset="1800">0 obj</match>+    <match line="43" column="5" offset="1810">Type /Catalog</match>+    <match line="43" column="20" offset="1825">Pages 3</match>+    <match line="43" column="28" offset="1833">0 R</match>+    <match line="44" column="1" offset="1840">endobj&#10;8</match>+    <match line="45" column="3" offset="1849">0 obj</match>+    <match line="46" column="5" offset="1859">Type /Font</match>+    <match line="46" column="17" offset="1871">Subtype /TrueType</match>+    <match line="46" column="36" offset="1890">BaseFont /GQTMZF+Menlo-Regular</match>+    <match line="46" column="68" offset="1922">FontDescriptor&#10;12</match>+    <match line="47" column="4" offset="1940">0 R</match>+    <match line="47" column="9" offset="1945">Encoding /MacRomanEncoding</match>+    <match line="47" column="37" offset="1973">FirstChar 72</match>+    <match line="47" column="51" offset="1987">LastChar 111</match>+    <match line="47" column="65" offset="2001">Widths [</match>+    <match line="47" column="74" offset="2010">602&#10;0</match>+    <match line="48" column="3" offset="2016">0 0</match>+    <match line="48" column="7" offset="2020">0 0</match>+    <match line="48" column="11" offset="2024">0 0</match>+    <match line="48" column="15" offset="2028">0 0</match>+    <match line="48" column="19" offset="2032">0 0</match>+    <match line="48" column="23" offset="2036">0 0</match>+    <match line="48" column="27" offset="2040">0 0</match>+    <match line="48" column="31" offset="2044">0 0</match>+    <match line="48" column="35" offset="2048">0 0</match>+    <match line="48" column="39" offset="2052">0 0</match>+    <match line="48" column="43" offset="2056">0 0</match>+    <match line="48" column="47" offset="2060">0 0</match>+    <match line="48" column="51" offset="2064">0 0</match>+    <match line="48" column="55" offset="2068">0 602</match>+    <match line="48" column="61" offset="2074">0 0</match>+    <match line="48" column="65" offset="2078">0 0</match>+    <match line="48" column="69" offset="2082">0 0</match>+    <match line="48" column="73" offset="2086">602&#10;0</match>+    <match line="49" column="3" offset="2092">0 602</match>+    <match line="50" column="1" offset="2103">endobj&#10;12</match>+    <match line="51" column="4" offset="2113">0 obj</match>+    <match line="52" column="5" offset="2123">Type /FontDescriptor</match>+    <match line="52" column="27" offset="2145">FontName /GQTMZF+Menlo-Regular</match>+    <match line="52" column="59" offset="2177">Flags 33</match>+    <match line="52" column="69" offset="2187">FontBBox&#10;[-558</match>+    <match line="53" column="8" offset="2203">375 718</match>+    <match line="53" column="23" offset="2218">ItalicAngle 0</match>+    <match line="53" column="38" offset="2233">Ascent 928</match>+    <match line="53" column="50" offset="2245">Descent -236</match>+    <match line="53" column="64" offset="2259">CapHeight 729</match>+    <match line="54" column="2" offset="2274">StemV 99</match>+    <match line="54" column="12" offset="2284">XHeight 547</match>+    <match line="54" column="25" offset="2297">StemH 83</match>+    <match line="54" column="35" offset="2307">AvgWidth 602</match>+    <match line="54" column="49" offset="2321">MaxWidth 602</match>+    <match line="54" column="63" offset="2335">FontFile2 13</match>+    <match line="54" column="76" offset="2348">0 R</match>+    <match line="56" column="1" offset="2355">endobj&#10;13</match>+    <match line="57" column="4" offset="2365">0 obj</match>+    <match line="58" column="5" offset="2375">Length 14</match>+    <match line="58" column="15" offset="2385">0 R</match>+    <match line="58" column="20" offset="2390">Length1 4064</match>+    <match line="58" column="34" offset="2404">Filter /FlateDecode</match>+    <match line="59" column="1" offset="2427">stream&#10;x&#1;ÝW{xTÅ&#21;?s&#x7f;w6¯Í&gt;’MHH€]Öå•,�„·R&#22;Hxˆ</match>+    <match line="60" column="33" offset="2475">H (!&#8;A´1�JQ</match>+    <match line="61" column="187" offset="2776">j&#9;L+I&#23;.RÌ'›4‰&#3;‚pš¼Ã¤vÚĈÍä&#19;·&#x7f;=R&#14;õ‰Dª`ÌJ&gt;¦</match>+    <match line="61" column="356" offset="2996">a&#10;&gt;¨À‘Ahb¡i&#16;&#14;+&#28;z?^&#30;Rx?&#30;&#7;&#21;ÞS8På”&#7;2ñ×TìWx·&#22;�«|²Qá/</match>+    <match line="66" column="95" offset="3301">W&#10;Ë&#21;&#30;p&#14;“&#15;LÂ/&#21;*ïŲ¥&#21;r™ÂÒ</match>+    <match line="70" column="35" offset="3383">y&#10;wåâN…¹¹(nÅœ:ÌV(R(T˜5³£œ¥0“&#28;rfGÌP˜®p‡ÂíS&#18;äí6L+Ämû0•…©.LI&#0;?ÑA&#23;nUø¹Â-&#25;éò–\LV˜¤0QaB&#5;Æ+ÜìÂ8…±Â/Ç*ÜT‡1Ýpãè4yc&#x7f;Œ&#30;ž$G§aTAš&#28;¥0’¥‘…&#24;ÁÒˆ:&#20;¤!Ÿ�üþ&#24;&gt;Ì)‡'axD</match>+    <match line="71" column="146" offset="3575">g&#10;ƒ9„Á­¸Aáún&#24;¤0�</match>+    <match line="74" column="36" offset="3743">F 5Å/S‡!Åå�)~¸&#28;Hf½d&#23;’x}’‚“3w&#14;ƒƒ=8œpDkg·Y¥Ý&#14;{´v¶Äxi³Â&#22;­]&quot;×.1&#30;‰\»&#29;º5&#14;VãÙê¯'(Äs&amp;ñ</match>+    <match line="75" column="2" offset="3825">u FÁ¦-</match>+    <match line="79" column="1" offset="5169">endstream&#10;endobj</match>+    <match line="81" column="1" offset="5186">14 0</match>+    <match line="81" column="6" offset="5191">obj&#10;2734</match>+    <match line="83" column="1" offset="5200">endobj&#10;15</match>+    <match line="84" column="4" offset="5210">0 obj</match>+    <match line="86" column="1" offset="5224">endobj&#10;16</match>+    <match line="87" column="4" offset="5234">0 obj</match>+    <match line="88" column="2" offset="5241">Mac OS</match>+    <match line="88" column="9" offset="5248">X 10.12.6</match>+    <match line="88" column="19" offset="5258">Quartz PDFContext)</match>+    <match line="89" column="1" offset="5277">endobj&#10;17</match>+    <match line="90" column="4" offset="5287">0 obj</match>+    <match line="92" column="1" offset="5304">endobj&#10;18</match>+    <match line="93" column="4" offset="5314">0 obj</match>+    <match line="95" column="1" offset="5346">endobj&#10;19</match>+    <match line="96" column="4" offset="5356">0 obj</match>+    <match line="98" column="1" offset="5365">endobj&#10;20</match>+    <match line="99" column="4" offset="5375">0 obj</match>+    <match line="101" column="1" offset="5385">endobj&#10;1</match>+    <match line="102" column="3" offset="5394">0 obj</match>+    <match line="103" column="5" offset="5404">Title 15</match>+    <match line="103" column="14" offset="5413">0 R</match>+    <match line="103" column="19" offset="5418">Producer 16</match>+    <match line="103" column="31" offset="5430">0 R</match>+    <match line="103" column="36" offset="5435">Creator 17</match>+    <match line="103" column="47" offset="5446">0 R</match>+    <match line="103" column="52" offset="5451">CreationDate 18</match>+    <match line="103" column="68" offset="5467">0 R</match>+    <match line="103" column="73" offset="5472">ModDate&#10;18</match>+    <match line="104" column="4" offset="5483">0 R</match>+    <match line="104" column="9" offset="5488">Keywords 19</match>+    <match line="104" column="21" offset="5500">0 R</match>+    <match line="104" column="31" offset="5510">Keywords 20</match>+    <match line="104" column="43" offset="5522">0 R</match>+    <match line="105" column="1" offset="5529">endobj&#10;xref</match>+    <match line="107" column="1" offset="5541">0 21</match>+    <match line="108" column="1" offset="5546">0000000000 65535</match>+    <match line="108" column="18" offset="5563">f &#10;0000005392</match>+    <match line="109" column="12" offset="5577">00000 n</match>+    <match line="110" column="1" offset="5586">0000000238 00000</match>+    <match line="110" column="18" offset="5603">n &#10;0000001714</match>+    <match line="111" column="12" offset="5617">00000 n</match>+    <match line="112" column="1" offset="5626">0000000022 00000</match>+    <match line="112" column="18" offset="5643">n &#10;0000000219</match>+    <match line="113" column="12" offset="5657">00000 n</match>+    <match line="114" column="1" offset="5666">0000000342 00000</match>+    <match line="114" column="18" offset="5683">n &#10;0000001679</match>+    <match line="115" column="12" offset="5697">00000 n</match>+    <match line="116" column="1" offset="5706">0000001847 00000</match>+    <match line="116" column="18" offset="5723">n &#10;0000000439</match>+    <match line="117" column="12" offset="5737">00000 n</match>+    <match line="118" column="1" offset="5746">0000001658 00000</match>+    <match line="118" column="18" offset="5763">n &#10;0000001797</match>+    <match line="119" column="12" offset="5777">00000 n</match>+    <match line="120" column="1" offset="5786">0000002110 00000</match>+    <match line="120" column="18" offset="5803">n &#10;0000002362</match>+    <match line="121" column="12" offset="5817">00000 n</match>+    <match line="122" column="1" offset="5826">0000005186 00000</match>+    <match line="122" column="18" offset="5843">n &#10;0000005207</match>+    <match line="123" column="12" offset="5857">00000 n</match>+    <match line="124" column="1" offset="5866">0000005231 00000</match>+    <match line="124" column="18" offset="5883">n &#10;0000005284</match>+    <match line="125" column="12" offset="5897">00000 n</match>+    <match line="126" column="1" offset="5906">0000005311 00000</match>+    <match line="126" column="18" offset="5923">n &#10;0000005353</match>+    <match line="127" column="12" offset="5937">00000 n</match>+    <match line="128" column="1" offset="5946">0000005372 00000</match>+    <match line="128" column="18" offset="5963">n &#10;trailer</match>+    <match line="130" column="5" offset="5978">Size 21</match>+    <match line="130" column="14" offset="5987">Root 11</match>+    <match line="130" column="22" offset="5995">0 R</match>+    <match line="130" column="27" offset="6000">Info 1</match>+    <match line="130" column="34" offset="6007">0 R</match>+    <match line="130" column="39" offset="6012">ID [</match>+    <match line="132" column="1" offset="6092">startxref&#10;5536</match>+  </file>+  <file name="Hello.sh">+    <match line="1" column="8" offset="7">sh&#10;echo</match>+    <match line="2" column="7" offset="16">Hello World!&quot;</match>+  </file>+</grep>

tests/out/Hello_wnhS--xml-ounkb.out

new file mode 100644@@ -0,0 +1,229 @@+<grep>+  <file name="Hello.bat">+    <match line="1" column="8" offset="7">sh&#10;echo</match>+    <match line="2" column="7" offset="16">Hello World!&quot;</match>+  </file>+  <file name="Hello.class">+    <match line="5" column="27" offset="148">Hello World!&#7;&#0;&#26;</match>+  </file>+  <file name="Hello.java">+    <match line="1" column="1" offset="0">import java.lang.*;</match>+    <match line="3" column="1" offset="21">public class</match>+    <match line="3" column="14" offset="34">Hello //</match>+    <match line="3" column="23" offset="43">prints a</match>+    <match line="3" column="32" offset="52">Hello World!</match>+    <match line="3" column="45" offset="65">greeting&#10;{</match>+    <match line="4" column="3" offset="76">public static</match>+    <match line="4" column="17" offset="90">void main(String[]</match>+    <match line="5" column="25" offset="138">Hello World!&quot;);</match>+  </file>+  <file name="Hello.pdf">+    <match line="1" column="8" offset="7">3&#10;%Äåòåë§ó ÐÄÆ</match>+    <match line="3" column="1" offset="22">4 0</match>+    <match line="3" column="5" offset="26">obj&#10;&lt;&lt;</match>+    <match line="4" column="5" offset="34">Length 5</match>+    <match line="4" column="14" offset="43">0 R</match>+    <match line="4" column="19" offset="48">Filter /FlateDecode</match>+    <match line="5" column="1" offset="71">stream&#10;x&#1;EŽ»</match>+    <match line="7" column="35" offset="135">LY&#10;Ÿ‰&#7;o†k÷´ŽÐ›áâj©Rj²@8þ­í”</match>+    <match line="9" column="1" offset="202">endstream&#10;endobj</match>+    <match line="11" column="1" offset="219">5 0</match>+    <match line="11" column="5" offset="223">obj&#10;123</match>+    <match line="13" column="1" offset="231">endobj&#10;2</match>+    <match line="14" column="3" offset="240">0 obj</match>+    <match line="15" column="5" offset="250">Type /Page</match>+    <match line="15" column="17" offset="262">Parent 3</match>+    <match line="15" column="26" offset="271">0 R</match>+    <match line="15" column="31" offset="276">Resources 6</match>+    <match line="15" column="43" offset="288">0 R</match>+    <match line="15" column="48" offset="293">Contents 4</match>+    <match line="15" column="59" offset="304">0 R</match>+    <match line="15" column="64" offset="309">MediaBox [0</match>+    <match line="15" column="76" offset="321">0 612</match>+    <match line="17" column="1" offset="335">endobj&#10;6</match>+    <match line="18" column="3" offset="344">0 obj</match>+    <match line="19" column="5" offset="354">ProcSet [</match>+    <match line="19" column="16" offset="365">PDF /Text</match>+    <match line="19" column="29" offset="378">ColorSpace &lt;&lt;</match>+    <match line="19" column="44" offset="393">Cs1 7</match>+    <match line="19" column="50" offset="399">0 R</match>+    <match line="19" column="58" offset="407">Font &lt;&lt;</match>+    <match line="19" column="67" offset="416">TT1 8</match>+    <match line="19" column="73" offset="422">0 R</match>+    <match line="21" column="1" offset="432">endobj&#10;9</match>+    <match line="22" column="3" offset="441">0 obj</match>+    <match line="23" column="5" offset="451">Length 10</match>+    <match line="23" column="15" offset="461">0 R</match>+    <match line="23" column="20" offset="466">N 1</match>+    <match line="23" column="25" offset="471">Alternate /DeviceGray</match>+    <match line="23" column="48" offset="494">Filter /FlateDecode</match>+    <match line="24" column="1" offset="517">stream&#10;x&#1;…U]h&#28;U&#20;&gt;»sg&#3;&#18;&#7;&#31;´</match>+    <match line="25" column="19" offset="547">m&#9;é2‰V&#19;‹µÛMºI&#19;·ëfS›*Êtv6;Ídfœ™Ý&amp;¡O¥à›&#22;&#4;é« &gt;Æ‚&#8;¶*6/ö¥¥Å’J5&#15;</match>+    <match line="26" column="307" offset="1006">7 ‹š&#17;òÈÇX</match>+    <match line="30" column="29" offset="1639">4&#10;endstream</match>+    <match line="32" column="1" offset="1651">endobj&#10;10</match>+    <match line="33" column="4" offset="1661">0 obj</match>+    <match line="34" column="1" offset="1667">1116&#10;endobj</match>+    <match line="36" column="1" offset="1679">7 0</match>+    <match line="36" column="5" offset="1683">obj&#10;[</match>+    <match line="37" column="4" offset="1690">ICCBased 9</match>+    <match line="37" column="15" offset="1701">0 R</match>+    <match line="38" column="1" offset="1707">endobj&#10;3</match>+    <match line="39" column="3" offset="1716">0 obj</match>+    <match line="40" column="5" offset="1726">Type /Pages</match>+    <match line="40" column="18" offset="1739">MediaBox [0</match>+    <match line="40" column="30" offset="1751">0 612</match>+    <match line="40" column="42" offset="1763">Count 1</match>+    <match line="40" column="51" offset="1772">Kids [</match>+    <match line="40" column="58" offset="1779">2 0</match>+    <match line="40" column="62" offset="1783">R ]</match>+    <match line="41" column="1" offset="1790">endobj&#10;11</match>+    <match line="42" column="4" offset="1800">0 obj</match>+    <match line="43" column="5" offset="1810">Type /Catalog</match>+    <match line="43" column="20" offset="1825">Pages 3</match>+    <match line="43" column="28" offset="1833">0 R</match>+    <match line="44" column="1" offset="1840">endobj&#10;8</match>+    <match line="45" column="3" offset="1849">0 obj</match>+    <match line="46" column="5" offset="1859">Type /Font</match>+    <match line="46" column="17" offset="1871">Subtype /TrueType</match>+    <match line="46" column="36" offset="1890">BaseFont /GQTMZF+Menlo-Regular</match>+    <match line="46" column="68" offset="1922">FontDescriptor&#10;12</match>+    <match line="47" column="4" offset="1940">0 R</match>+    <match line="47" column="9" offset="1945">Encoding /MacRomanEncoding</match>+    <match line="47" column="37" offset="1973">FirstChar 72</match>+    <match line="47" column="51" offset="1987">LastChar 111</match>+    <match line="47" column="65" offset="2001">Widths [</match>+    <match line="47" column="74" offset="2010">602&#10;0</match>+    <match line="48" column="3" offset="2016">0 0</match>+    <match line="48" column="7" offset="2020">0 0</match>+    <match line="48" column="11" offset="2024">0 0</match>+    <match line="48" column="15" offset="2028">0 0</match>+    <match line="48" column="19" offset="2032">0 0</match>+    <match line="48" column="23" offset="2036">0 0</match>+    <match line="48" column="27" offset="2040">0 0</match>+    <match line="48" column="31" offset="2044">0 0</match>+    <match line="48" column="35" offset="2048">0 0</match>+    <match line="48" column="39" offset="2052">0 0</match>+    <match line="48" column="43" offset="2056">0 0</match>+    <match line="48" column="47" offset="2060">0 0</match>+    <match line="48" column="51" offset="2064">0 0</match>+    <match line="48" column="55" offset="2068">0 602</match>+    <match line="48" column="61" offset="2074">0 0</match>+    <match line="48" column="65" offset="2078">0 0</match>+    <match line="48" column="69" offset="2082">0 0</match>+    <match line="48" column="73" offset="2086">602&#10;0</match>+    <match line="49" column="3" offset="2092">0 602</match>+    <match line="50" column="1" offset="2103">endobj&#10;12</match>+    <match line="51" column="4" offset="2113">0 obj</match>+    <match line="52" column="5" offset="2123">Type /FontDescriptor</match>+    <match line="52" column="27" offset="2145">FontName /GQTMZF+Menlo-Regular</match>+    <match line="52" column="59" offset="2177">Flags 33</match>+    <match line="52" column="69" offset="2187">FontBBox&#10;[-558</match>+    <match line="53" column="8" offset="2203">375 718</match>+    <match line="53" column="23" offset="2218">ItalicAngle 0</match>+    <match line="53" column="38" offset="2233">Ascent 928</match>+    <match line="53" column="50" offset="2245">Descent -236</match>+    <match line="53" column="64" offset="2259">CapHeight 729</match>+    <match line="54" column="2" offset="2274">StemV 99</match>+    <match line="54" column="12" offset="2284">XHeight 547</match>+    <match line="54" column="25" offset="2297">StemH 83</match>+    <match line="54" column="35" offset="2307">AvgWidth 602</match>+    <match line="54" column="49" offset="2321">MaxWidth 602</match>+    <match line="54" column="63" offset="2335">FontFile2 13</match>+    <match line="54" column="76" offset="2348">0 R</match>+    <match line="56" column="1" offset="2355">endobj&#10;13</match>+    <match line="57" column="4" offset="2365">0 obj</match>+    <match line="58" column="5" offset="2375">Length 14</match>+    <match line="58" column="15" offset="2385">0 R</match>+    <match line="58" column="20" offset="2390">Length1 4064</match>+    <match line="58" column="34" offset="2404">Filter /FlateDecode</match>+    <match line="59" column="1" offset="2427">stream&#10;x&#1;ÝW{xTÅ&#21;?s&#x7f;w6¯Í&gt;’MHH€]Öå•,�„·R&#22;Hxˆ</match>+    <match line="60" column="33" offset="2475">H (!&#8;A´1�JQ</match>+    <match line="61" column="187" offset="2776">j&#9;L+I&#23;.RÌ'›4‰&#3;‚pš¼Ã¤vÚĈÍä&#19;·&#x7f;=R&#14;õ‰Dª`ÌJ&gt;¦</match>+    <match line="61" column="356" offset="2996">a&#10;&gt;¨À‘Ahb¡i&#16;&#14;+&#28;z?^&#30;Rx?&#30;&#7;&#21;ÞS8På”&#7;2ñ×TìWx·&#22;�«|²Qá/</match>+    <match line="66" column="95" offset="3301">W&#10;Ë&#21;&#30;p&#14;“&#15;LÂ/&#21;*ïŲ¥&#21;r™ÂÒ</match>+    <match line="70" column="35" offset="3383">y&#10;wåâN…¹¹(nÅœ:ÌV(R(T˜5³£œ¥0“&#28;rfGÌP˜®p‡ÂíS&#18;äí6L+Ämû0•…©.LI&#0;?ÑA&#23;nUø¹Â-&#25;éò–\LV˜¤0QaB&#5;Æ+ÜìÂ8…±Â/Ç*ÜT‡1Ýpãè4yc&#x7f;Œ&#30;ž$G§aTAš&#28;¥0’¥‘…&#24;ÁÒˆ:&#20;¤!Ÿ�üþ&#24;&gt;Ì)‡'axD</match>+    <match line="71" column="146" offset="3575">g&#10;ƒ9„Á­¸Aáún&#24;¤0�</match>+    <match line="74" column="36" offset="3743">F 5Å/S‡!Åå�)~¸&#28;Hf½d&#23;’x}’‚“3w&#14;ƒƒ=8œpDkg·Y¥Ý&#14;{´v¶Äxi³Â&#22;­]&quot;×.1&#30;‰\»&#29;º5&#14;VãÙê¯'(Äs&amp;ñ</match>+    <match line="75" column="2" offset="3825">u FÁ¦-</match>+    <match line="79" column="1" offset="5169">endstream&#10;endobj</match>+    <match line="81" column="1" offset="5186">14 0</match>+    <match line="81" column="6" offset="5191">obj&#10;2734</match>+    <match line="83" column="1" offset="5200">endobj&#10;15</match>+    <match line="84" column="4" offset="5210">0 obj</match>+    <match line="86" column="1" offset="5224">endobj&#10;16</match>+    <match line="87" column="4" offset="5234">0 obj</match>+    <match line="88" column="2" offset="5241">Mac OS</match>+    <match line="88" column="9" offset="5248">X 10.12.6</match>+    <match line="88" column="19" offset="5258">Quartz PDFContext)</match>+    <match line="89" column="1" offset="5277">endobj&#10;17</match>+    <match line="90" column="4" offset="5287">0 obj</match>+    <match line="92" column="1" offset="5304">endobj&#10;18</match>+    <match line="93" column="4" offset="5314">0 obj</match>+    <match line="95" column="1" offset="5346">endobj&#10;19</match>+    <match line="96" column="4" offset="5356">0 obj</match>+    <match line="98" column="1" offset="5365">endobj&#10;20</match>+    <match line="99" column="4" offset="5375">0 obj</match>+    <match line="101" column="1" offset="5385">endobj&#10;1</match>+    <match line="102" column="3" offset="5394">0 obj</match>+    <match line="103" column="5" offset="5404">Title 15</match>+    <match line="103" column="14" offset="5413">0 R</match>+    <match line="103" column="19" offset="5418">Producer 16</match>+    <match line="103" column="31" offset="5430">0 R</match>+    <match line="103" column="36" offset="5435">Creator 17</match>+    <match line="103" column="47" offset="5446">0 R</match>+    <match line="103" column="52" offset="5451">CreationDate 18</match>+    <match line="103" column="68" offset="5467">0 R</match>+    <match line="103" column="73" offset="5472">ModDate&#10;18</match>+    <match line="104" column="4" offset="5483">0 R</match>+    <match line="104" column="9" offset="5488">Keywords 19</match>+    <match line="104" column="21" offset="5500">0 R</match>+    <match line="104" column="31" offset="5510">Keywords 20</match>+    <match line="104" column="43" offset="5522">0 R</match>+    <match line="105" column="1" offset="5529">endobj&#10;xref</match>+    <match line="107" column="1" offset="5541">0 21</match>+    <match line="108" column="1" offset="5546">0000000000 65535</match>+    <match line="108" column="18" offset="5563">f &#10;0000005392</match>+    <match line="109" column="12" offset="5577">00000 n</match>+    <match line="110" column="1" offset="5586">0000000238 00000</match>+    <match line="110" column="18" offset="5603">n &#10;0000001714</match>+    <match line="111" column="12" offset="5617">00000 n</match>+    <match line="112" column="1" offset="5626">0000000022 00000</match>+    <match line="112" column="18" offset="5643">n &#10;0000000219</match>+    <match line="113" column="12" offset="5657">00000 n</match>+    <match line="114" column="1" offset="5666">0000000342 00000</match>+    <match line="114" column="18" offset="5683">n &#10;0000001679</match>+    <match line="115" column="12" offset="5697">00000 n</match>+    <match line="116" column="1" offset="5706">0000001847 00000</match>+    <match line="116" column="18" offset="5723">n &#10;0000000439</match>+    <match line="117" column="12" offset="5737">00000 n</match>+    <match line="118" column="1" offset="5746">0000001658 00000</match>+    <match line="118" column="18" offset="5763">n &#10;0000001797</match>+    <match line="119" column="12" offset="5777">00000 n</match>+    <match line="120" column="1" offset="5786">0000002110 00000</match>+    <match line="120" column="18" offset="5803">n &#10;0000002362</match>+    <match line="121" column="12" offset="5817">00000 n</match>+    <match line="122" column="1" offset="5826">0000005186 00000</match>+    <match line="122" column="18" offset="5843">n &#10;0000005207</match>+    <match line="123" column="12" offset="5857">00000 n</match>+    <match line="124" column="1" offset="5866">0000005231 00000</match>+    <match line="124" column="18" offset="5883">n &#10;0000005284</match>+    <match line="125" column="12" offset="5897">00000 n</match>+    <match line="126" column="1" offset="5906">0000005311 00000</match>+    <match line="126" column="18" offset="5923">n &#10;0000005353</match>+    <match line="127" column="12" offset="5937">00000 n</match>+    <match line="128" column="1" offset="5946">0000005372 00000</match>+    <match line="128" column="18" offset="5963">n &#10;trailer</match>+    <match line="130" column="5" offset="5978">Size 21</match>+    <match line="130" column="14" offset="5987">Root 11</match>+    <match line="130" column="22" offset="5995">0 R</match>+    <match line="130" column="27" offset="6000">Info 1</match>+    <match line="130" column="34" offset="6007">0 R</match>+    <match line="130" column="39" offset="6012">ID [</match>+    <match line="132" column="1" offset="6092">startxref&#10;5536</match>+  </file>+  <file name="Hello.sh">+    <match line="1" column="8" offset="7">sh&#10;echo</match>+    <match line="2" column="7" offset="16">Hello World!&quot;</match>+  </file>+</grep>

tests/out/Hello_wnhS--xml-unkb.out

new file mode 100644@@ -0,0 +1,229 @@+<grep>+  <file name="Hello.bat">+    <match line="1" column="8" offset="7">#!/bin/sh&#10;echo &quot;Hello World!&quot;</match>+    <match line="2" column="7" offset="16">echo &quot;Hello World!&quot;</match>+  </file>+  <file name="Hello.class">+    <match line="5" column="27" offset="148">Hello.java&#12;&#0;&#7;&#0;&#8;&#7;&#0;&#23;&#12;&#0;&#24;&#0;&#25;&#1;&#0;&#12;Hello World!&#7;&#0;&#26;&#12;&#0;&#27;&#0;&#28;&#1;&#0;&#5;Hello&#1;&#0;&#16;java/lang/Object&#1;&#0;&#16;java/lang/System&#1;&#0;&#3;out&#1;&#0;&#21;Ljava/io/PrintStream;&#1;&#0;&#19;java/io/PrintStream&#1;&#0;&#7;println&#1;&#0;&#21;(Ljava/lang/String;)V&#0;!&#0;&#5;&#0;&#6;&#0;&#0;&#0;&#0;&#0;&#2;&#0;&#1;&#0;&#7;&#0;&#8;&#0;&#1;&#0;&#9;&#0;&#0;&#0;&#29;&#0;&#1;&#0;&#1;&#0;&#0;&#0;&#5;*·&#0;&#1;±&#0;&#0;&#0;&#1;&#0;</match>+  </file>+  <file name="Hello.java">+    <match line="1" column="1" offset="0">import java.lang.*;</match>+    <match line="3" column="1" offset="21">public class Hello // prints a Hello World! greeting</match>+    <match line="3" column="14" offset="34">public class Hello // prints a Hello World! greeting</match>+    <match line="3" column="23" offset="43">public class Hello // prints a Hello World! greeting</match>+    <match line="3" column="32" offset="52">public class Hello // prints a Hello World! greeting</match>+    <match line="3" column="45" offset="65">public class Hello // prints a Hello World! greeting&#10;{ public static void main(String[] arg)</match>+    <match line="4" column="3" offset="76">{ public static void main(String[] arg)</match>+    <match line="4" column="17" offset="90">{ public static void main(String[] arg)</match>+    <match line="5" column="25" offset="138">  { System.out.println(&quot;Hello World!&quot;);</match>+  </file>+  <file name="Hello.pdf">+    <match line="1" column="8" offset="7">%PDF-1.3&#10;%Äåòåë§ó ÐÄÆ</match>+    <match line="3" column="1" offset="22">4 0 obj</match>+    <match line="3" column="5" offset="26">4 0 obj&#10;&lt;&lt; /Length 5 0 R /Filter /FlateDecode &gt;&gt;</match>+    <match line="4" column="5" offset="34">&lt;&lt; /Length 5 0 R /Filter /FlateDecode &gt;&gt;</match>+    <match line="4" column="14" offset="43">&lt;&lt; /Length 5 0 R /Filter /FlateDecode &gt;&gt;</match>+    <match line="4" column="19" offset="48">&lt;&lt; /Length 5 0 R /Filter /FlateDecode &gt;&gt;</match>+    <match line="5" column="1" offset="71">stream&#10;x&#1;EŽ»</match>+    <match line="7" column="35" offset="135">&#2;1&#20;D{¿â”Z˜½‰y˜V&#17;l&#23;.ø&#1;a-d×eÍÿƒ&#23;,¬†™9&#12;³1²Q&#2;¹F—â©&#18;ó™�\LY&#10;Ÿ‰&#7;o†k÷´ŽÐ›áâj©Rj²@8þ­í” »¶pQ£DÄ£&#13;ï&#x7f; iÂ&#11;º0¨z¬|²¿Oó¼&#30;Ð&#23;7µ7ã&#23;Nÿ ¥</match>+    <match line="9" column="1" offset="202">endstream&#10;endobj</match>+    <match line="11" column="1" offset="219">5 0 obj</match>+    <match line="11" column="5" offset="223">5 0 obj&#10;123</match>+    <match line="13" column="1" offset="231">endobj&#10;2 0 obj</match>+    <match line="14" column="3" offset="240">2 0 obj</match>+    <match line="15" column="5" offset="250">&lt;&lt; /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]</match>+    <match line="15" column="17" offset="262">&lt;&lt; /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]</match>+    <match line="15" column="26" offset="271">&lt;&lt; /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]</match>+    <match line="15" column="31" offset="276">&lt;&lt; /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]</match>+    <match line="15" column="43" offset="288">&lt;&lt; /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]</match>+    <match line="15" column="48" offset="293">&lt;&lt; /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]</match>+    <match line="15" column="59" offset="304">&lt;&lt; /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]</match>+    <match line="15" column="64" offset="309">&lt;&lt; /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]</match>+    <match line="15" column="76" offset="321">&lt;&lt; /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]</match>+    <match line="17" column="1" offset="335">endobj&#10;6 0 obj</match>+    <match line="18" column="3" offset="344">6 0 obj</match>+    <match line="19" column="5" offset="354">&lt;&lt; /ProcSet [ /PDF /Text ] /ColorSpace &lt;&lt; /Cs1 7 0 R &gt;&gt; /Font &lt;&lt; /TT1 8 0 R</match>+    <match line="19" column="16" offset="365">&lt;&lt; /ProcSet [ /PDF /Text ] /ColorSpace &lt;&lt; /Cs1 7 0 R &gt;&gt; /Font &lt;&lt; /TT1 8 0 R</match>+    <match line="19" column="29" offset="378">&lt;&lt; /ProcSet [ /PDF /Text ] /ColorSpace &lt;&lt; /Cs1 7 0 R &gt;&gt; /Font &lt;&lt; /TT1 8 0 R</match>+    <match line="19" column="44" offset="393">&lt;&lt; /ProcSet [ /PDF /Text ] /ColorSpace &lt;&lt; /Cs1 7 0 R &gt;&gt; /Font &lt;&lt; /TT1 8 0 R</match>+    <match line="19" column="50" offset="399">&lt;&lt; /ProcSet [ /PDF /Text ] /ColorSpace &lt;&lt; /Cs1 7 0 R &gt;&gt; /Font &lt;&lt; /TT1 8 0 R</match>+    <match line="19" column="58" offset="407">&lt;&lt; /ProcSet [ /PDF /Text ] /ColorSpace &lt;&lt; /Cs1 7 0 R &gt;&gt; /Font &lt;&lt; /TT1 8 0 R</match>+    <match line="19" column="67" offset="416">&lt;&lt; /ProcSet [ /PDF /Text ] /ColorSpace &lt;&lt; /Cs1 7 0 R &gt;&gt; /Font &lt;&lt; /TT1 8 0 R</match>+    <match line="19" column="73" offset="422">&lt;&lt; /ProcSet [ /PDF /Text ] /ColorSpace &lt;&lt; /Cs1 7 0 R &gt;&gt; /Font &lt;&lt; /TT1 8 0 R</match>+    <match line="21" column="1" offset="432">endobj&#10;9 0 obj</match>+    <match line="22" column="3" offset="441">9 0 obj</match>+    <match line="23" column="5" offset="451">&lt;&lt; /Length 10 0 R /N 1 /Alternate /DeviceGray /Filter /FlateDecode &gt;&gt;</match>+    <match line="23" column="15" offset="461">&lt;&lt; /Length 10 0 R /N 1 /Alternate /DeviceGray /Filter /FlateDecode &gt;&gt;</match>+    <match line="23" column="20" offset="466">&lt;&lt; /Length 10 0 R /N 1 /Alternate /DeviceGray /Filter /FlateDecode &gt;&gt;</match>+    <match line="23" column="25" offset="471">&lt;&lt; /Length 10 0 R /N 1 /Alternate /DeviceGray /Filter /FlateDecode &gt;&gt;</match>+    <match line="23" column="48" offset="494">&lt;&lt; /Length 10 0 R /N 1 /Alternate /DeviceGray /Filter /FlateDecode &gt;&gt;</match>+    <match line="24" column="1" offset="517">stream&#10;x&#1;…U]h&#28;U&#20;&gt;»sg&#3;&#18;&#7;&#31;´&#13;-´ƒ?m&#9;é2‰V&#19;‹µÛMºI&#19;·ëfS›*Êtv6;Ídfœ™Ý&amp;¡O¥à›&#22;&#4;é« &gt;Æ‚&#8;¶*6/ö¥¥Å’J5&#15;</match>+    <match line="25" column="19" offset="547">x&#1;…U]h&#28;U&#20;&gt;»sg&#3;&#18;&#7;&#31;´&#13;-´ƒ?m&#9;é2‰V&#19;‹µÛMºI&#19;·ëfS›*Êtv6;Ídfœ™Ý&amp;¡O¥à›&#22;&#4;é« &gt;Æ‚&#8;¶*6/ö¥¥Å’J5&#15;</match>+    <match line="26" column="307" offset="1006">&#17;ZŒ (}Rð;3ÛdvA2Ã�ùî¹çž{Îwî¹—¨ëoÝóì´J4ç„~¡œ›&gt;9}JíºMiR¨›ðèFàåJ¥&#9;ÆŽë˜üo&#x7f;&#30;Þ¥&#20;Kîìg[íc[öäª&#25;&#24;к†æV&#3;cŽ(¥&#17;ej†ç‡D]— &#31;&lt;&#27;zŒo&#3;?9[)ç�×€•Ö\@zª`:¦o&#25;jÁ×&#23;Ô’ïÖ,;éëVãlcËgÎn°¯üìFë&#14;f'Çñï…Ï&#23;Lgj&#18;x&#31;ð’¡�0î&#3;¾Û´N&#20;cœN{á‘r¬ŸÎ6f§r-ùÉš&#x7f;tª%¿PoŒ2Î&#18;¥—&#22;ë•7€Ÿ&#0;^uN&#23;�·ô×gÝq¶ÓC$õ&#24;Aþ&#20;ð³ÀZÝ&#28;ã&lt;©À&#21;ß-³&gt;Ëê9&lt;&#2;ü2ð%+&#28;«&#0;þôCМd9° ÅzžýÄZ&quot;{F?V&#2;Þ&#6;|È´&#11;¼&#22;숊&#23;–Øæ ð¼c&#23;y-Ä..›A&#20;/b&#23;?…õÊh¬/§C¿ÂsŸ&amp;’÷Ô¬£cÀàD&#30;­û£,‡?rèÙÑÞz&#17;xÉo”9ö=Àkº?R&#0;†ÍÌcU}˜y~&#1;x€N¤t2É¥Óø&#26;äпˆ7 ‹š&#17;òÈÇX&#13;}›</match>+    <match line="30" column="29" offset="1639">Tß&#12;L¿iV³Äw7Ï#úëõèNNm»a4üf,£Tê&amp;Ñ&#x7f;·�“4&#10;endstream</match>+    <match line="32" column="1" offset="1651">endobj&#10;10 0 obj</match>+    <match line="33" column="4" offset="1661">10 0 obj</match>+    <match line="34" column="1" offset="1667">1116&#10;endobj</match>+    <match line="36" column="1" offset="1679">7 0 obj</match>+    <match line="36" column="5" offset="1683">7 0 obj&#10;[ /ICCBased 9 0 R ]</match>+    <match line="37" column="4" offset="1690">[ /ICCBased 9 0 R ]</match>+    <match line="37" column="15" offset="1701">[ /ICCBased 9 0 R ]</match>+    <match line="38" column="1" offset="1707">endobj&#10;3 0 obj</match>+    <match line="39" column="3" offset="1716">3 0 obj</match>+    <match line="40" column="5" offset="1726">&lt;&lt; /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 2 0 R ] &gt;&gt;</match>+    <match line="40" column="18" offset="1739">&lt;&lt; /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 2 0 R ] &gt;&gt;</match>+    <match line="40" column="30" offset="1751">&lt;&lt; /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 2 0 R ] &gt;&gt;</match>+    <match line="40" column="42" offset="1763">&lt;&lt; /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 2 0 R ] &gt;&gt;</match>+    <match line="40" column="51" offset="1772">&lt;&lt; /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 2 0 R ] &gt;&gt;</match>+    <match line="40" column="58" offset="1779">&lt;&lt; /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 2 0 R ] &gt;&gt;</match>+    <match line="40" column="62" offset="1783">&lt;&lt; /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 2 0 R ] &gt;&gt;</match>+    <match line="41" column="1" offset="1790">endobj&#10;11 0 obj</match>+    <match line="42" column="4" offset="1800">11 0 obj</match>+    <match line="43" column="5" offset="1810">&lt;&lt; /Type /Catalog /Pages 3 0 R &gt;&gt;</match>+    <match line="43" column="20" offset="1825">&lt;&lt; /Type /Catalog /Pages 3 0 R &gt;&gt;</match>+    <match line="43" column="28" offset="1833">&lt;&lt; /Type /Catalog /Pages 3 0 R &gt;&gt;</match>+    <match line="44" column="1" offset="1840">endobj&#10;8 0 obj</match>+    <match line="45" column="3" offset="1849">8 0 obj</match>+    <match line="46" column="5" offset="1859">&lt;&lt; /Type /Font /Subtype /TrueType /BaseFont /GQTMZF+Menlo-Regular /FontDescriptor</match>+    <match line="46" column="17" offset="1871">&lt;&lt; /Type /Font /Subtype /TrueType /BaseFont /GQTMZF+Menlo-Regular /FontDescriptor</match>+    <match line="46" column="36" offset="1890">&lt;&lt; /Type /Font /Subtype /TrueType /BaseFont /GQTMZF+Menlo-Regular /FontDescriptor</match>+    <match line="46" column="68" offset="1922">&lt;&lt; /Type /Font /Subtype /TrueType /BaseFont /GQTMZF+Menlo-Regular /FontDescriptor&#10;12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602</match>+    <match line="47" column="4" offset="1940">12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602</match>+    <match line="47" column="9" offset="1945">12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602</match>+    <match line="47" column="37" offset="1973">12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602</match>+    <match line="47" column="51" offset="1987">12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602</match>+    <match line="47" column="65" offset="2001">12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602</match>+    <match line="47" column="74" offset="2010">12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602&#10;0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602</match>+    <match line="48" column="3" offset="2016">0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602</match>+    <match line="48" column="7" offset="2020">0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602</match>+    <match line="48" column="11" offset="2024">0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602</match>+    <match line="48" column="15" offset="2028">0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602</match>+    <match line="48" column="19" offset="2032">0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602</match>+    <match line="48" column="23" offset="2036">0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602</match>+    <match line="48" column="27" offset="2040">0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602</match>+    <match line="48" column="31" offset="2044">0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602</match>+    <match line="48" column="35" offset="2048">0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602</match>+    <match line="48" column="39" offset="2052">0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602</match>+    <match line="48" column="43" offset="2056">0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602</match>+    <match line="48" column="47" offset="2060">0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602</match>+    <match line="48" column="51" offset="2064">0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602</match>+    <match line="48" column="55" offset="2068">0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602</match>+    <match line="48" column="61" offset="2074">0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602</match>+    <match line="48" column="65" offset="2078">0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602</match>+    <match line="48" column="69" offset="2082">0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602</match>+    <match line="48" column="73" offset="2086">0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602&#10;0 0 602 ] &gt;&gt;</match>+    <match line="49" column="3" offset="2092">0 0 602 ] &gt;&gt;</match>+    <match line="50" column="1" offset="2103">endobj&#10;12 0 obj</match>+    <match line="51" column="4" offset="2113">12 0 obj</match>+    <match line="52" column="5" offset="2123">&lt;&lt; /Type /FontDescriptor /FontName /GQTMZF+Menlo-Regular /Flags 33 /FontBBox</match>+    <match line="52" column="27" offset="2145">&lt;&lt; /Type /FontDescriptor /FontName /GQTMZF+Menlo-Regular /Flags 33 /FontBBox</match>+    <match line="52" column="59" offset="2177">&lt;&lt; /Type /FontDescriptor /FontName /GQTMZF+Menlo-Regular /Flags 33 /FontBBox</match>+    <match line="52" column="69" offset="2187">&lt;&lt; /Type /FontDescriptor /FontName /GQTMZF+Menlo-Regular /Flags 33 /FontBBox&#10;[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729</match>+    <match line="53" column="8" offset="2203">[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729</match>+    <match line="53" column="23" offset="2218">[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729</match>+    <match line="53" column="38" offset="2233">[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729</match>+    <match line="53" column="50" offset="2245">[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729</match>+    <match line="53" column="64" offset="2259">[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729</match>+    <match line="54" column="2" offset="2274">/StemV 99 /XHeight 547 /StemH 83 /AvgWidth 602 /MaxWidth 602 /FontFile2 13 0 R</match>+    <match line="54" column="12" offset="2284">/StemV 99 /XHeight 547 /StemH 83 /AvgWidth 602 /MaxWidth 602 /FontFile2 13 0 R</match>+    <match line="54" column="25" offset="2297">/StemV 99 /XHeight 547 /StemH 83 /AvgWidth 602 /MaxWidth 602 /FontFile2 13 0 R</match>+    <match line="54" column="35" offset="2307">/StemV 99 /XHeight 547 /StemH 83 /AvgWidth 602 /MaxWidth 602 /FontFile2 13 0 R</match>+    <match line="54" column="49" offset="2321">/StemV 99 /XHeight 547 /StemH 83 /AvgWidth 602 /MaxWidth 602 /FontFile2 13 0 R</match>+    <match line="54" column="63" offset="2335">/StemV 99 /XHeight 547 /StemH 83 /AvgWidth 602 /MaxWidth 602 /FontFile2 13 0 R</match>+    <match line="54" column="76" offset="2348">/StemV 99 /XHeight 547 /StemH 83 /AvgWidth 602 /MaxWidth 602 /FontFile2 13 0 R</match>+    <match line="56" column="1" offset="2355">endobj&#10;13 0 obj</match>+    <match line="57" column="4" offset="2365">13 0 obj</match>+    <match line="58" column="5" offset="2375">&lt;&lt; /Length 14 0 R /Length1 4064 /Filter /FlateDecode &gt;&gt;</match>+    <match line="58" column="15" offset="2385">&lt;&lt; /Length 14 0 R /Length1 4064 /Filter /FlateDecode &gt;&gt;</match>+    <match line="58" column="20" offset="2390">&lt;&lt; /Length 14 0 R /Length1 4064 /Filter /FlateDecode &gt;&gt;</match>+    <match line="58" column="34" offset="2404">&lt;&lt; /Length 14 0 R /Length1 4064 /Filter /FlateDecode &gt;&gt;</match>+    <match line="59" column="1" offset="2427">stream&#10;x&#1;ÝW{xTÅ&#21;?s&#x7f;w6¯Í&gt;’MHH€]Öå•,�„·R&#22;Hxˆ /ë.ˆòH (!&#8;A´1�JQ&#9;Á@…&#8;H}&#21;Q©µ+E]&#9;ÄT¤b#E„ &#2;</match>+    <match line="60" column="33" offset="2475">x&#1;ÝW{xTÅ&#21;?s&#x7f;w6¯Í&gt;’MHH€]Öå•,�„·R&#22;Hxˆ /ë.ˆòH (!&#8;A´1�JQ&#9;Á@…&#8;H}&#21;Q©µ+E]&#9;ÄT¤b#E„ &#2;</match>+    <match line="61" column="187" offset="2776">ø¢hŠ&#20;!Ø&#0;CϽ&#27;ý&gt;í×ïë¿íÜ�3çüæÌyÝ»÷Δ-\\DVª$P`VÉŒ&#5;d6ëI&#30;ŠgÝSæ6Eн—HË�½`NITŽ&#x7f;‘åNsæÝ7;*'Nfy@qь¨LWxìWÌ@T&#22;}x¼®¸¤Œí&#24;Íú.&#19;×¼ÒYmó‰£&#12;°dƽmþé8Ëîù3JŠxäf�0é¶ tQ™)’½šÇì&#5;&#11;‹ÚôE�(¦St®�&#26;–&#5;w©Y)‹î&quot;&#11;iä �”ÄЭ¬+yÖ˜×b²–&gt;}ö�;ì7\¤N±æâ½eéy&#6;s(¸¤ßå•W…¬�½…Åè¤1ÁëbJT&#7;&quot;ýàå•×’e½iɘù¾É&#8;Åf½®UŠ”íë¦É¡™&quot;…j&#9;L+I&#23;.RÌ'›4‰&#3;‚pš¼Ã¤vÚĈÍä&#19;·&#x7f;=R&#14;õ‰Dª`ÌJ&gt;¦&#9;”Ë4Þ´&#23;gjÅ’�‘&#24;“·˜:Òäu&#19;‡‰h&amp;&quot;&#2;!&#5;¥pµ&#2;W&#20;.+´æâŸuø®&#2;—Zªå%…K&#13;zËÅ�l©FK¥~ñB&#23;y1„‹&#1;ýB&#23;|{&gt;G~ÛŠó9ø‡Â9…orqÖ…¿×¢™ClVhŽ\;&#24;¸¦&#x7f;=&#18;_�)”_ÕâL!þ¦púË&#12;yZáË&#12;|¡ðù]øLáÓ:œ:™.Oµâd:NÔâ&#19;…�&#21;Ž&#31;K‘Ç&#21;Ž¥àh-&gt;ú0E~¤ðáê&#4;ùa</match>+    <match line="61" column="356" offset="2996">ø¢hŠ&#20;!Ø&#0;CϽ&#27;ý&gt;í×ïë¿íÜ�3çüæÌyÝ»÷Δ-\\DVª$P`VÉŒ&#5;d6ëI&#30;ŠgÝSæ6Eн—HË�½`NITŽ&#x7f;‘åNsæÝ7;*'Nfy@qь¨LWxìWÌ@T&#22;}x¼®¸¤Œí&#24;Íú.&#19;×¼ÒYmó‰£&#12;°dƽmþé8Ëîù3JŠxäf�0é¶ tQ™)’½šÇì&#5;&#11;‹ÚôE�(¦St®�&#26;–&#5;w©Y)‹î&quot;&#11;iä �”ÄЭ¬+yÖ˜×b²–&gt;}ö�;ì7\¤N±æâ½eéy&#6;s(¸¤ßå•W…¬�½…Åè¤1ÁëbJT&#7;&quot;ýàå•×’e½iɘù¾É&#8;Åf½®UŠ”íë¦É¡™&quot;…j&#9;L+I&#23;.RÌ'›4‰&#3;‚pš¼Ã¤vÚĈÍä&#19;·&#x7f;=R&#14;õ‰Dª`ÌJ&gt;¦&#9;”Ë4Þ´&#23;gjÅ’�‘&#24;“·˜:Òäu&#19;‡‰h&amp;&quot;&#2;!&#5;¥pµ&#2;W&#20;.+´æâŸuø®&#2;—Zªå%…K&#13;zËÅ�l©FK¥~ñB&#23;y1„‹&#1;ýB&#23;|{&gt;G~ÛŠó9ø‡Â9…orqÖ…¿×¢™ClVhŽ\;&#24;¸¦&#x7f;=&#18;_�)”_ÕâL!þ¦púË&#12;yZáË&#12;|¡ðù]øLáÓ:œ:™.Oµâd:NÔâ&#19;…�&#21;Ž&#31;K‘Ç&#21;Ž¥àh-&gt;ú0E~¤ðáê&#4;ùa&#10;&gt;¨À‘Ahb¡i&#16;&#14;+&#28;z?^&#30;Rx?&#30;&#7;&#21;ÞS8På”&#7;2ñ×TìWx·&#22;�«|²Qá/</match>+    <match line="66" column="95" offset="3301">ñä&#19;&#14;ùd:žpà7ñجð8;y\aS&quot;6nè)7*lè‰ÇØÿcµ¨]_'k&#21;Öó³µ¾&#14;ë+õuk|rÝ4¬&#11;è�*üZa-Ëkë°Æ‡&#26;.FÍP&lt;ÂÙ&gt;âÂê&#4;T3P]ˆU\´U&gt;T9±Ráa…‡&#20;&#30;\á”&#15;*¬pâW&#10;Ë&#21;&#30;p&#14;“&#15;LÂ/&#21;*ïŲ¥&#21;r™ÂÒ</match>+    <match line="70" column="35" offset="3383">‹Ë¬r±&#29;‹#‚&#2;Gõ2+Ê&#26;ôEIX&#20;Ð&#23;*Ü­°@¡tþ$YZ‹ù%ÝäüI(é†y&#10;wåâN…¹¹(nÅœ:ÌV(R(T˜5³£œ¥0“&#28;rfGÌP˜®p‡ÂíS&#18;äí6L+Ämû0•…©.LI&#0;?ÑA&#23;nUø¹Â-&#25;éò–\LV˜¤0QaB&#5;Æ+ÜìÂ8…±Â/Ç*ÜT‡1Ýpãè4yc&#x7f;Œ&#30;ž$G§aTAš&#28;¥0’¥‘…&#24;ÁÒˆ:&#20;¤!Ÿ�üþ&#24;&gt;Ì)‡'axD&#11;&#4;âôaCír˜&#19;Ã&quot;&#26;±44`“Cí&#24;&#26;&#17;&#13;,&#5;†XeÀ†@DT²4Ä&#26;'‡X1$&quot;&#2;�Býg</match>+    <match line="71" column="146" offset="3575">wåâN…¹¹(nÅœ:ÌV(R(T˜5³£œ¥0“&#28;rfGÌP˜®p‡ÂíS&#18;äí6L+Ämû0•…©.LI&#0;?ÑA&#23;nUø¹Â-&#25;éò–\LV˜¤0QaB&#5;Æ+ÜìÂ8…±Â/Ç*ÜT‡1Ýpãè4yc&#x7f;Œ&#30;ž$G§aTAš&#28;¥0’¥‘…&#24;ÁÒˆ:&#20;¤!Ÿ�üþ&#24;&gt;Ì)‡'axD&#11;&#4;âôaCír˜&#19;Ã&quot;&#26;±44`“Cí&#24;&#26;&#17;&#13;,&#5;†XeÀ†@DT²4Ä&#26;'‡X1$&quot;&#2;�Býg&#10;ƒ9„Á­¸Aáún&#24;¤0�&#11;&lt;°&#16;&#3;z·—&#3;Æ ¿B?¿KöSè;&#6;}zµ—}Æ �‡&lt;…\VÌUèÍÓ½Û£W{ä0—“†žq©²g&#29;üÙÉÒï‚?¢&#25;n³&#29;N™�Œl#ÜZ=«‡Of)ô`Í&#30;&gt;t×&#6;Éî</match>+    <match line="74" column="36" offset="3743">p�&#29;^…Îv»ì¬àqû¥§&#2;n?:�AGöÜQ¡ƒB&amp;×6S!ƒïJF:Ú+¤+¤)´c&#11;íF 5Å/S‡!Åå�)~¸&#28;Hf½d&#23;’x}’‚“3w&#14;ƒƒ=8œpDkg·Y¥Ý&#14;{´v¶Äxi³Â&#22;­]&quot;×.1&#30;‰\»&#29;º5&#14;VãÙê¯'(Äs&amp;ñ</match>+    <match line="75" column="2" offset="3825">q©ˆu FÁ¦-</match>+    <match line="79" column="1" offset="5169">endstream&#10;endobj</match>+    <match line="81" column="1" offset="5186">14 0 obj</match>+    <match line="81" column="6" offset="5191">14 0 obj&#10;2734</match>+    <match line="83" column="1" offset="5200">endobj&#10;15 0 obj</match>+    <match line="84" column="4" offset="5210">15 0 obj</match>+    <match line="86" column="1" offset="5224">endobj&#10;16 0 obj</match>+    <match line="87" column="4" offset="5234">16 0 obj</match>+    <match line="88" column="2" offset="5241">(Mac OS X 10.12.6 Quartz PDFContext)</match>+    <match line="88" column="9" offset="5248">(Mac OS X 10.12.6 Quartz PDFContext)</match>+    <match line="88" column="19" offset="5258">(Mac OS X 10.12.6 Quartz PDFContext)</match>+    <match line="89" column="1" offset="5277">endobj&#10;17 0 obj</match>+    <match line="90" column="4" offset="5287">17 0 obj</match>+    <match line="92" column="1" offset="5304">endobj&#10;18 0 obj</match>+    <match line="93" column="4" offset="5314">18 0 obj</match>+    <match line="95" column="1" offset="5346">endobj&#10;19 0 obj</match>+    <match line="96" column="4" offset="5356">19 0 obj</match>+    <match line="98" column="1" offset="5365">endobj&#10;20 0 obj</match>+    <match line="99" column="4" offset="5375">20 0 obj</match>+    <match line="101" column="1" offset="5385">endobj&#10;1 0 obj</match>+    <match line="102" column="3" offset="5394">1 0 obj</match>+    <match line="103" column="5" offset="5404">&lt;&lt; /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate</match>+    <match line="103" column="14" offset="5413">&lt;&lt; /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate</match>+    <match line="103" column="19" offset="5418">&lt;&lt; /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate</match>+    <match line="103" column="31" offset="5430">&lt;&lt; /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate</match>+    <match line="103" column="36" offset="5435">&lt;&lt; /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate</match>+    <match line="103" column="47" offset="5446">&lt;&lt; /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate</match>+    <match line="103" column="52" offset="5451">&lt;&lt; /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate</match>+    <match line="103" column="68" offset="5467">&lt;&lt; /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate</match>+    <match line="103" column="73" offset="5472">&lt;&lt; /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate&#10;18 0 R /Keywords 19 0 R /AAPL:Keywords 20 0 R &gt;&gt;</match>+    <match line="104" column="4" offset="5483">18 0 R /Keywords 19 0 R /AAPL:Keywords 20 0 R &gt;&gt;</match>+    <match line="104" column="9" offset="5488">18 0 R /Keywords 19 0 R /AAPL:Keywords 20 0 R &gt;&gt;</match>+    <match line="104" column="21" offset="5500">18 0 R /Keywords 19 0 R /AAPL:Keywords 20 0 R &gt;&gt;</match>+    <match line="104" column="31" offset="5510">18 0 R /Keywords 19 0 R /AAPL:Keywords 20 0 R &gt;&gt;</match>+    <match line="104" column="43" offset="5522">18 0 R /Keywords 19 0 R /AAPL:Keywords 20 0 R &gt;&gt;</match>+    <match line="105" column="1" offset="5529">endobj&#10;xref</match>+    <match line="107" column="1" offset="5541">0 21</match>+    <match line="108" column="1" offset="5546">0000000000 65535 f </match>+    <match line="108" column="18" offset="5563">0000000000 65535 f &#10;0000005392 00000 n </match>+    <match line="109" column="12" offset="5577">0000005392 00000 n </match>+    <match line="110" column="1" offset="5586">0000000238 00000 n </match>+    <match line="110" column="18" offset="5603">0000000238 00000 n &#10;0000001714 00000 n </match>+    <match line="111" column="12" offset="5617">0000001714 00000 n </match>+    <match line="112" column="1" offset="5626">0000000022 00000 n </match>+    <match line="112" column="18" offset="5643">0000000022 00000 n &#10;0000000219 00000 n </match>+    <match line="113" column="12" offset="5657">0000000219 00000 n </match>+    <match line="114" column="1" offset="5666">0000000342 00000 n </match>+    <match line="114" column="18" offset="5683">0000000342 00000 n &#10;0000001679 00000 n </match>+    <match line="115" column="12" offset="5697">0000001679 00000 n </match>+    <match line="116" column="1" offset="5706">0000001847 00000 n </match>+    <match line="116" column="18" offset="5723">0000001847 00000 n &#10;0000000439 00000 n </match>+    <match line="117" column="12" offset="5737">0000000439 00000 n </match>+    <match line="118" column="1" offset="5746">0000001658 00000 n </match>+    <match line="118" column="18" offset="5763">0000001658 00000 n &#10;0000001797 00000 n </match>+    <match line="119" column="12" offset="5777">0000001797 00000 n </match>+    <match line="120" column="1" offset="5786">0000002110 00000 n </match>+    <match line="120" column="18" offset="5803">0000002110 00000 n &#10;0000002362 00000 n </match>+    <match line="121" column="12" offset="5817">0000002362 00000 n </match>+    <match line="122" column="1" offset="5826">0000005186 00000 n </match>+    <match line="122" column="18" offset="5843">0000005186 00000 n &#10;0000005207 00000 n </match>+    <match line="123" column="12" offset="5857">0000005207 00000 n </match>+    <match line="124" column="1" offset="5866">0000005231 00000 n </match>+    <match line="124" column="18" offset="5883">0000005231 00000 n &#10;0000005284 00000 n </match>+    <match line="125" column="12" offset="5897">0000005284 00000 n </match>+    <match line="126" column="1" offset="5906">0000005311 00000 n </match>+    <match line="126" column="18" offset="5923">0000005311 00000 n &#10;0000005353 00000 n </match>+    <match line="127" column="12" offset="5937">0000005353 00000 n </match>+    <match line="128" column="1" offset="5946">0000005372 00000 n </match>+    <match line="128" column="18" offset="5963">0000005372 00000 n &#10;trailer</match>+    <match line="130" column="5" offset="5978">&lt;&lt; /Size 21 /Root 11 0 R /Info 1 0 R /ID [ &lt;8db88d3335070bd9583341583cf769a3&gt;</match>+    <match line="130" column="14" offset="5987">&lt;&lt; /Size 21 /Root 11 0 R /Info 1 0 R /ID [ &lt;8db88d3335070bd9583341583cf769a3&gt;</match>+    <match line="130" column="22" offset="5995">&lt;&lt; /Size 21 /Root 11 0 R /Info 1 0 R /ID [ &lt;8db88d3335070bd9583341583cf769a3&gt;</match>+    <match line="130" column="27" offset="6000">&lt;&lt; /Size 21 /Root 11 0 R /Info 1 0 R /ID [ &lt;8db88d3335070bd9583341583cf769a3&gt;</match>+    <match line="130" column="34" offset="6007">&lt;&lt; /Size 21 /Root 11 0 R /Info 1 0 R /ID [ &lt;8db88d3335070bd9583341583cf769a3&gt;</match>+    <match line="130" column="39" offset="6012">&lt;&lt; /Size 21 /Root 11 0 R /Info 1 0 R /ID [ &lt;8db88d3335070bd9583341583cf769a3&gt;</match>+    <match line="132" column="1" offset="6092">startxref&#10;5536</match>+  </file>+  <file name="Hello.sh">+    <match line="1" column="8" offset="7">#!/bin/sh&#10;echo &quot;Hello World!&quot;</match>+    <match line="2" column="7" offset="16">echo &quot;Hello World!&quot;</match>+  </file>+</grep>

tests/out/Hello_wnhS--xml-v.out

new file mode 100644@@ -0,0 +1,46 @@+<grep>+  <file name="Hello.class">+    <match>Êþº¾&#0;&#0;&#0;4&#0;&#29;</match>+    <match>&#0;&#6;&#0;&#15;&#9;&#0;&#16;&#0;&#17;&#8;&#0;&#18;</match>+    <match>&#0;&#19;&#0;&#20;&#7;&#0;&#21;&#7;&#0;&#22;&#1;&#0;&#6;&lt;init&gt;&#1;&#0;&#3;()V&#1;&#0;&#4;Code&#1;&#0;&#15;LineNumberTable&#1;&#0;&#4;main&#1;&#0;&#22;([Ljava/lang/String;)V&#1;&#0;</match>+    <match>SourceFile&#1;&#0;</match>+    <match>&#0;&#0;&#0;&#6;&#0;&#1;&#0;&#0;&#0;&#3;&#0;&#9;&#0;&#11;&#0;&#12;&#0;&#1;&#0;&#9;&#0;&#0;&#0;%&#0;&#2;&#0;&#1;&#0;&#0;&#0;&#9;²&#0;&#2;&#18;&#3;¶&#0;&#4;±&#0;&#0;&#0;&#1;&#0;</match>+    <match>&#0;&#0;&#0;</match>+    <match>&#0;&#2;&#0;&#0;&#0;&#5;&#0;&#8;&#0;&#6;&#0;&#1;&#0;&#13;&#0;&#0;&#0;&#2;&#0;&#14;</match>+  </file>+  <file name="Hello.java">+    <match></match>+    <match>  }</match>+    <match>}</match>+  </file>+  <file name="Hello.pdf">+    <match>&gt;&gt;</match>+    <match>&gt;&gt; &gt;&gt;</match>+    <match>ÐpÐ|ô&#12;h&#21;€tZ&#0;*%´LôX'ž£R&#21;=•f¢YA„ØÊý¨oP~×§Ô€´Në�Ö�^£_&quot;É&lt;ýJsèç!m`l¦Ãn&#30;^8´&#8;&#15;Ø&#19;¶ù eÓ&#21;Û…&amp;žG;(&amp;Ä+bP&#12;‘*^&#21;‡Å!1&#12;é�8&#24;͉½OúÎ~&gt;ذô.ÖMú¾&#12;&#14;B¬gÃ3&#7;¬p4&#1;&lt;ø&#7;ëÎFš&#9;¶.îhìó¼�Þ?ï¿c&#25;·&gt;ø³�½&#0;ú1'¿Á¢&#11;k&amp;%æ^?÷MOÂCuE|õÖ�îëçèx2KQÞª�Y’×äûò</match>+    <match>¾÷äÕ¤&#13;ùgy&#21;ï½¶\=Ê&#11;ÿ“¹Í!F;’ÍAÎ&lt;›Q´qÆ&#27;À!¸©Esö·YL²é¶b´`ÉB”�«¸ÿË&#9;óÃ&lt;·±Rs.îð¼·?c6Í÷Š&#15;‹t¾O»¬­kŸh?j&#x7f;h+ÚÇ@¿K&#31;J_JßJW¤«Ò&#13;R¥kÒ²ô�ô½ô¹ô5z_@º,]éØIqì&#27;»&#7;~Æ{Öhí0f†³&#20;&#16;óÂÚÌ</match>+    <match>K&#31;ñw&#6;c›ù3¡Õ^&#3;�»&#x7f;c-刲SyF&#25;Vv+Ï)&#19;J¯r@9¬lW&#6;Ðú•Qe/Fvn°dc=΀…&#x7f;’g‹¦#®â&lt;±Wu°çÃK&#29;ï¦_\ÃÖ†5ØI=&#14;žÙÚ¦&#14;¯&#17;W¿&#21;Uc¼;]œ&#6;:M!b‹Î&quot;r&#31;:œ&#31;'ªþÎÙ\“85Roâ”°Ä.Ñ/ÆZ5˜&#19;&#7;P…ãmõ8ÈUš&#25;É&#12;gr¤fz3C™þÌ1ÆQ¬Ñù’Ù‹Ñ!|G&#18;Þ3Ë1ÿ›5Äg&#24;ï&#29;æ¨&#9;l£‡[+4çqß&#17;å]oÁ·fê¡: i/©9\¯¦:æ&#24;Ù&gt;U·m5&#26;</match>+    <match>&gt;&gt;</match>+    <match>ïT`ŸÂÛ</match>+    <match>&#x7f;VØ»)Q¾¥°GáM…?)4°½&#6;&#23;Þ°¢~w�¬WؽkšÜ]‡Ý•ú®:ŸÜ5&#13;»&#2;z�&#15;;&#21;^¯E¤f¨|MáU&#30;^mÅ+lk‡Â&#31;&#11;±½&#16;/Û&#16;NÂ&#31;&#20;^R�«ø½Â‹</match>+    <match>¿KÂ6…&#23;ž·É&#23;rñ¼&#13;ÏmuÊçºa«&#19;ÏnñËg+°Å�ß*&lt;£ð´ÂSO¦Ë§</match>+    <match>TtÄý</match>+    <match>å6üBa‰Â=</match>+    <match>Ý&#20;º*t±Ã—:Lú</match>+    <match>Ò&#5;prh…Æ€6&#8;‚&#3;&#16;~�&#3;&quot;&quot;</match>+    <match>W¬&#22;Yÿ?�þÇSáOg„&#26;;M¬åÑØGDè!m&#25;&#x7f;¥¿¿&quot;´‡u4S/&quot;&#26;ÅJ±“ù­¼·h¤åt^ÄãmÑŸ¹z^&#27;Ô=ŒÖÐfsu&#13;NÓbì¢Cô&#14;&#29;cî´&#24;&#8;^+&#14;‘Gœ`?+&#x7f;ð¡¡ž¥=LËQ� è$Jh‹x‰-–SD”Ò2�Gm&quot;[Þ¯&#31;dt?=Ä×£´…J™72XÎñ&#x7f;L;h&#21;] &#13;Ú&#25;šÂüNÚËñ(þüš¹ˆ&amp;jaKÛ´ÁÚlÖÛËÖ6Ñ&amp;±œšh‘Nü)WtJ6iYlu&#7;g@4“6Ë&amp;¹Á¨&#7;�Mò&#28;Ï&#16;u°D,®&#24;/gaÔn«Ø%zkãè&#16;¯/§É¸&#13;wã˜X¡{õ%8C5&#26;a:ÝI&#7;d“ÅE51^ª±Ì&#22;÷éÓÍ«œ­•kKôéb&#27;�a›3ñ&#29;Ë&#30;Žl³™1Ñ&#14;m¢&#28;'Çqγ&#25;ÛlÒš(µ8h?Z¹îk5%Fé#0„ó)×o¢&#13;ô&#12;ÛíÊ•!*E_ö^Jåruô¢m|ùåjÔrEÍjˆ&lt;m0mÖf‹U&#28;m&#11;W³&#20;ùÔŸ}t�gi…ØÁqSL&#5;-’M¼U$êAôZŒEêü÷¦l·#¬ùF&#23;†&#3;&#19;‚î}!�?û'¢Û&#17;ã&#14;Óøpâ}îȵkãƒz†&#12;…ef&#24;¾Ø°îóžúO“§üÙcÆ&#7;Ý&#17;Ñ® ¿ÍlÁô|&#6;'&#5;Ù&#3;ÿ&#12;˜Ý&#21;0&#22;&#5;F‡¥�&#x7f;£§‡Ý³ŠÝUŽ*ï *GÑ ?ïÿ²Ç0&#25;&#31;|YˆGB&#17;qmE„ò;¼Î»HÜq;OÇe»Ý&#5;sóÃb:&#11;ñÙ&#12;ôð0—�í&#30;ÁaŽ˜&#24;ô†ÜUîªÑ…Uî&#17;îâ&#25;…&#28;·9òDQU(‡3˜&#20;œËtrÐ&#19;&#14;„2~`‹B!ûհÃKX½*Ä&#22;îl³À£&#9;å\e¥Äì1î0ºŒ&#15;N&#8;†+ó3Â�üP†Çã.&#8;7Œ&#15;†&#27;ò3&lt;¡&#16;kÙ~ˆ”#®˜›Ö&#22;³�c¶õàyGÔ</match>+    <match>—(�&#17;¦PU•asRÐë&#9;WVUeTq&#30;mr„&#26;~&#2;&#8;ú)&#16;h&#3;&quot;dØàJ&#20;ð÷`&lt;&#27;ãÁëÉ0&#0;¯Çëá8CùìÛiÜš&#2;ŽÔ&#19;òónœŠ¹¯ä^ÎýœÁó³&#24;Ýçóù‚Ï&#0;SX&#30;EÝþm¿Îð&#x7f;Ù´&#31;éÁ”t“vágw;�&#20;™ü¯/Vµz±Ü§ª&#24;ê´ËÜó&#19;Y„ëU&#17;+—k:å¼u¸¹79&#14;7&#31;nî•ìô8}&#30;§§X§+‹�qå&#11;U&#27;cûîüBKwì0rÐGñ¿ �n6N&#21;|osøÖq·:øXô&#30;wæÅqÆX–&lt;êÜc&#24;&#23;,ǽÇo&#11;CAçná&#30;Ÿ³“£Š¥„¬^½“óØužÓËÔ»²QëÞØxõƒFÙtõ-í†Ö,훫Nö¯QùµÏø­QN)”IyF&#4;;&#25;t°�&#8;iì!“=eæð;ÏB‰&#12;î¤dJ7G£&#14;†&#23;‘âI±¤æåöëŸb&#19;^79&#29;”—›&#20;ÓSx;[bôéW&gt;‹}ã¥`CÉÜ=SÕeuT¸Ï&#29;¹&#20;¶®}xÅ‹±Zõ&#20;Ë&#23;û&#6;&#12;|-+K&#12;&#20;ÉÂ*&#2;ê“ÇÊ^&#8;Ï7êrŽë2ÅÒž½v�F•ȷ؈ʨCÜqŽHçSž&#17;Q&quot;ÅG#q¥^/R¼�»ôuzúz´&#3;SC&#31;œyö&#21;õ‘8!Öß¿ôñCoââ&#26;£æ&#26;­äœGqÎ&#9;ÔŽ¼�dKu&#18;U[ë“6¦Å%Ùó‘”ò³4Ç…æ+Æ-üüB³ãl/ÑÙ’â2rìÛ§K×Ü$§CóvÖœŽ$­¸zÍšêÕkÖ¬&gt;s©å«3--8qôHÓ±cMGŽnVï«OÕ)uHøù³ÓQô4üšíÚRó95N§?n’Å,~~o¦‰Ì&#9;&gt;:Fu,Æ&#11;rä„Éc§ŒÈ&#26;[4&#x7f;^©&#x7f;bÑœÅóf,$ú&#23; -&#6;ä</match>+    <match>(Hello)</match>+    <match>(TextEdit)</match>+    <match>(D:20200124010711Z00'00')</match>+    <match>()</match>+    <match>[ ]</match>+    <match>&lt;8db88d3335070bd9583341583cf769a3&gt; ] &gt;&gt;</match>+    <match>%%EOF</match>+  </file>+  <file name="Hello.txt">+    <match>Hello</match>+  </file>+  <file name="emptyline.txt">+    <match></match>+  </file>+</grep>

tests/out/Hello_wnhS--xml.out

new file mode 100644@@ -0,0 +1,140 @@+<grep>+  <file name="Hello.bat">+    <match>#!/bin/sh&#10;echo &quot;Hello World!&quot;</match>+    <match>echo &quot;Hello World!&quot;</match>+  </file>+  <file name="Hello.class">+    <match>Hello.java&#12;&#0;&#7;&#0;&#8;&#7;&#0;&#23;&#12;&#0;&#24;&#0;&#25;&#1;&#0;&#12;Hello World!&#7;&#0;&#26;&#12;&#0;&#27;&#0;&#28;&#1;&#0;&#5;Hello&#1;&#0;&#16;java/lang/Object&#1;&#0;&#16;java/lang/System&#1;&#0;&#3;out&#1;&#0;&#21;Ljava/io/PrintStream;&#1;&#0;&#19;java/io/PrintStream&#1;&#0;&#7;println&#1;&#0;&#21;(Ljava/lang/String;)V&#0;!&#0;&#5;&#0;&#6;&#0;&#0;&#0;&#0;&#0;&#2;&#0;&#1;&#0;&#7;&#0;&#8;&#0;&#1;&#0;&#9;&#0;&#0;&#0;&#29;&#0;&#1;&#0;&#1;&#0;&#0;&#0;&#5;*·&#0;&#1;±&#0;&#0;&#0;&#1;&#0;</match>+  </file>+  <file name="Hello.java">+    <match>import java.lang.*;</match>+    <match>public class Hello // prints a Hello World! greeting</match>+    <match>public class Hello // prints a Hello World! greeting&#10;{ public static void main(String[] arg)</match>+    <match>{ public static void main(String[] arg)</match>+    <match>  { System.out.println(&quot;Hello World!&quot;);</match>+  </file>+  <file name="Hello.pdf">+    <match>%PDF-1.3&#10;%Äåòåë§ó ÐÄÆ</match>+    <match>4 0 obj</match>+    <match>4 0 obj&#10;&lt;&lt; /Length 5 0 R /Filter /FlateDecode &gt;&gt;</match>+    <match>&lt;&lt; /Length 5 0 R /Filter /FlateDecode &gt;&gt;</match>+    <match>stream&#10;x&#1;EŽ»</match>+    <match>&#2;1&#20;D{¿â”Z˜½‰y˜V&#17;l&#23;.ø&#1;a-d×eÍÿƒ&#23;,¬†™9&#12;³1²Q&#2;¹F—â©&#18;ó™�\LY&#10;Ÿ‰&#7;o†k÷´ŽÐ›áâj©Rj²@8þ­í” »¶pQ£DÄ£&#13;ï&#x7f; iÂ&#11;º0¨z¬|²¿Oó¼&#30;Ð&#23;7µ7ã&#23;Nÿ ¥</match>+    <match>endstream&#10;endobj</match>+    <match>5 0 obj</match>+    <match>5 0 obj&#10;123</match>+    <match>endobj&#10;2 0 obj</match>+    <match>2 0 obj</match>+    <match>&lt;&lt; /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]</match>+    <match>endobj&#10;6 0 obj</match>+    <match>6 0 obj</match>+    <match>&lt;&lt; /ProcSet [ /PDF /Text ] /ColorSpace &lt;&lt; /Cs1 7 0 R &gt;&gt; /Font &lt;&lt; /TT1 8 0 R</match>+    <match>endobj&#10;9 0 obj</match>+    <match>9 0 obj</match>+    <match>&lt;&lt; /Length 10 0 R /N 1 /Alternate /DeviceGray /Filter /FlateDecode &gt;&gt;</match>+    <match>stream&#10;x&#1;…U]h&#28;U&#20;&gt;»sg&#3;&#18;&#7;&#31;´&#13;-´ƒ?m&#9;é2‰V&#19;‹µÛMºI&#19;·ëfS›*Êtv6;Ídfœ™Ý&amp;¡O¥à›&#22;&#4;é« &gt;Æ‚&#8;¶*6/ö¥¥Å’J5&#15;</match>+    <match>x&#1;…U]h&#28;U&#20;&gt;»sg&#3;&#18;&#7;&#31;´&#13;-´ƒ?m&#9;é2‰V&#19;‹µÛMºI&#19;·ëfS›*Êtv6;Ídfœ™Ý&amp;¡O¥à›&#22;&#4;é« &gt;Æ‚&#8;¶*6/ö¥¥Å’J5&#15;</match>+    <match>&#17;ZŒ (}Rð;3ÛdvA2Ã�ùî¹çž{Îwî¹—¨ëoÝóì´J4ç„~¡œ›&gt;9}JíºMiR¨›ðèFàåJ¥&#9;ÆŽë˜üo&#x7f;&#30;Þ¥&#20;Kîìg[íc[öäª&#25;&#24;к†æV&#3;cŽ(¥&#17;ej†ç‡D]— &#31;&lt;&#27;zŒo&#3;?9[)ç�×€•Ö\@zª`:¦o&#25;jÁ×&#23;Ô’ïÖ,;éëVãlcËgÎn°¯üìFë&#14;f'Çñï…Ï&#23;Lgj&#18;x&#31;ð’¡�0î&#3;¾Û´N&#20;cœN{á‘r¬ŸÎ6f§r-ùÉš&#x7f;tª%¿PoŒ2Î&#18;¥—&#22;ë•7€Ÿ&#0;^uN&#23;�·ô×gÝq¶ÓC$õ&#24;Aþ&#20;ð³ÀZÝ&#28;ã&lt;©À&#21;ß-³&gt;Ëê9&lt;&#2;ü2ð%+&#28;«&#0;þôCМd9° ÅzžýÄZ&quot;{F?V&#2;Þ&#6;|È´&#11;¼&#22;숊&#23;–Øæ ð¼c&#23;y-Ä..›A&#20;/b&#23;?…õÊh¬/§C¿ÂsŸ&amp;’÷Ô¬£cÀàD&#30;­û£,‡?rèÙÑÞz&#17;xÉo”9ö=Àkº?R&#0;†ÍÌcU}˜y~&#1;x€N¤t2É¥Óø&#26;äпˆ7 ‹š&#17;òÈÇX&#13;}›</match>+    <match>Tß&#12;L¿iV³Äw7Ï#úëõèNNm»a4üf,£Tê&amp;Ñ&#x7f;·�“4&#10;endstream</match>+    <match>endobj&#10;10 0 obj</match>+    <match>10 0 obj</match>+    <match>1116&#10;endobj</match>+    <match>7 0 obj</match>+    <match>7 0 obj&#10;[ /ICCBased 9 0 R ]</match>+    <match>[ /ICCBased 9 0 R ]</match>+    <match>endobj&#10;3 0 obj</match>+    <match>3 0 obj</match>+    <match>&lt;&lt; /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 2 0 R ] &gt;&gt;</match>+    <match>endobj&#10;11 0 obj</match>+    <match>11 0 obj</match>+    <match>&lt;&lt; /Type /Catalog /Pages 3 0 R &gt;&gt;</match>+    <match>endobj&#10;8 0 obj</match>+    <match>8 0 obj</match>+    <match>&lt;&lt; /Type /Font /Subtype /TrueType /BaseFont /GQTMZF+Menlo-Regular /FontDescriptor</match>+    <match>&lt;&lt; /Type /Font /Subtype /TrueType /BaseFont /GQTMZF+Menlo-Regular /FontDescriptor&#10;12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602</match>+    <match>12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602</match>+    <match>12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602&#10;0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602</match>+    <match>0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602</match>+    <match>0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602&#10;0 0 602 ] &gt;&gt;</match>+    <match>0 0 602 ] &gt;&gt;</match>+    <match>endobj&#10;12 0 obj</match>+    <match>12 0 obj</match>+    <match>&lt;&lt; /Type /FontDescriptor /FontName /GQTMZF+Menlo-Regular /Flags 33 /FontBBox</match>+    <match>&lt;&lt; /Type /FontDescriptor /FontName /GQTMZF+Menlo-Regular /Flags 33 /FontBBox&#10;[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729</match>+    <match>[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729</match>+    <match>/StemV 99 /XHeight 547 /StemH 83 /AvgWidth 602 /MaxWidth 602 /FontFile2 13 0 R</match>+    <match>endobj&#10;13 0 obj</match>+    <match>13 0 obj</match>+    <match>&lt;&lt; /Length 14 0 R /Length1 4064 /Filter /FlateDecode &gt;&gt;</match>+    <match>stream&#10;x&#1;ÝW{xTÅ&#21;?s&#x7f;w6¯Í&gt;’MHH€]Öå•,�„·R&#22;Hxˆ /ë.ˆòH (!&#8;A´1�JQ&#9;Á@…&#8;H}&#21;Q©µ+E]&#9;ÄT¤b#E„ &#2;</match>+    <match>x&#1;ÝW{xTÅ&#21;?s&#x7f;w6¯Í&gt;’MHH€]Öå•,�„·R&#22;Hxˆ /ë.ˆòH (!&#8;A´1�JQ&#9;Á@…&#8;H}&#21;Q©µ+E]&#9;ÄT¤b#E„ &#2;</match>+    <match>ø¢hŠ&#20;!Ø&#0;CϽ&#27;ý&gt;í×ïë¿íÜ�3çüæÌyÝ»÷Δ-\\DVª$P`VÉŒ&#5;d6ëI&#30;ŠgÝSæ6Eн—HË�½`NITŽ&#x7f;‘åNsæÝ7;*'Nfy@qь¨LWxìWÌ@T&#22;}x¼®¸¤Œí&#24;Íú.&#19;×¼ÒYmó‰£&#12;°dƽmþé8Ëîù3JŠxäf�0é¶ tQ™)’½šÇì&#5;&#11;‹ÚôE�(¦St®�&#26;–&#5;w©Y)‹î&quot;&#11;iä �”ÄЭ¬+yÖ˜×b²–&gt;}ö�;ì7\¤N±æâ½eéy&#6;s(¸¤ßå•W…¬�½…Åè¤1ÁëbJT&#7;&quot;ýàå•×’e½iɘù¾É&#8;Åf½®UŠ”íë¦É¡™&quot;…j&#9;L+I&#23;.RÌ'›4‰&#3;‚pš¼Ã¤vÚĈÍä&#19;·&#x7f;=R&#14;õ‰Dª`ÌJ&gt;¦&#9;”Ë4Þ´&#23;gjÅ’�‘&#24;“·˜:Òäu&#19;‡‰h&amp;&quot;&#2;!&#5;¥pµ&#2;W&#20;.+´æâŸuø®&#2;—Zªå%…K&#13;zËÅ�l©FK¥~ñB&#23;y1„‹&#1;ýB&#23;|{&gt;G~ÛŠó9ø‡Â9…orqÖ…¿×¢™ClVhŽ\;&#24;¸¦&#x7f;=&#18;_�)”_ÕâL!þ¦púË&#12;yZáË&#12;|¡ðù]øLáÓ:œ:™.Oµâd:NÔâ&#19;…�&#21;Ž&#31;K‘Ç&#21;Ž¥àh-&gt;ú0E~¤ðáê&#4;ùa</match>+    <match>ø¢hŠ&#20;!Ø&#0;CϽ&#27;ý&gt;í×ïë¿íÜ�3çüæÌyÝ»÷Δ-\\DVª$P`VÉŒ&#5;d6ëI&#30;ŠgÝSæ6Eн—HË�½`NITŽ&#x7f;‘åNsæÝ7;*'Nfy@qь¨LWxìWÌ@T&#22;}x¼®¸¤Œí&#24;Íú.&#19;×¼ÒYmó‰£&#12;°dƽmþé8Ëîù3JŠxäf�0é¶ tQ™)’½šÇì&#5;&#11;‹ÚôE�(¦St®�&#26;–&#5;w©Y)‹î&quot;&#11;iä �”ÄЭ¬+yÖ˜×b²–&gt;}ö�;ì7\¤N±æâ½eéy&#6;s(¸¤ßå•W…¬�½…Åè¤1ÁëbJT&#7;&quot;ýàå•×’e½iɘù¾É&#8;Åf½®UŠ”íë¦É¡™&quot;…j&#9;L+I&#23;.RÌ'›4‰&#3;‚pš¼Ã¤vÚĈÍä&#19;·&#x7f;=R&#14;õ‰Dª`ÌJ&gt;¦&#9;”Ë4Þ´&#23;gjÅ’�‘&#24;“·˜:Òäu&#19;‡‰h&amp;&quot;&#2;!&#5;¥pµ&#2;W&#20;.+´æâŸuø®&#2;—Zªå%…K&#13;zËÅ�l©FK¥~ñB&#23;y1„‹&#1;ýB&#23;|{&gt;G~ÛŠó9ø‡Â9…orqÖ…¿×¢™ClVhŽ\;&#24;¸¦&#x7f;=&#18;_�)”_ÕâL!þ¦púË&#12;yZáË&#12;|¡ðù]øLáÓ:œ:™.Oµâd:NÔâ&#19;…�&#21;Ž&#31;K‘Ç&#21;Ž¥àh-&gt;ú0E~¤ðáê&#4;ùa&#10;&gt;¨À‘Ahb¡i&#16;&#14;+&#28;z?^&#30;Rx?&#30;&#7;&#21;ÞS8På”&#7;2ñ×TìWx·&#22;�«|²Qá/</match>+    <match>ñä&#19;&#14;ùd:žpà7ñجð8;y\aS&quot;6nè)7*lè‰ÇØÿcµ¨]_'k&#21;Öó³µ¾&#14;ë+õuk|rÝ4¬&#11;è�*üZa-Ëkë°Æ‡&#26;.FÍP&lt;ÂÙ&gt;âÂê&#4;T3P]ˆU\´U&gt;T9±Ráa…‡&#20;&#30;\á”&#15;*¬pâW&#10;Ë&#21;&#30;p&#14;“&#15;LÂ/&#21;*ïŲ¥&#21;r™ÂÒ</match>+    <match>‹Ë¬r±&#29;‹#‚&#2;Gõ2+Ê&#26;ôEIX&#20;Ð&#23;*Ü­°@¡tþ$YZ‹ù%ÝäüI(é†y&#10;wåâN…¹¹(nÅœ:ÌV(R(T˜5³£œ¥0“&#28;rfGÌP˜®p‡ÂíS&#18;äí6L+Ämû0•…©.LI&#0;?ÑA&#23;nUø¹Â-&#25;éò–\LV˜¤0QaB&#5;Æ+ÜìÂ8…±Â/Ç*ÜT‡1Ýpãè4yc&#x7f;Œ&#30;ž$G§aTAš&#28;¥0’¥‘…&#24;ÁÒˆ:&#20;¤!Ÿ�üþ&#24;&gt;Ì)‡'axD&#11;&#4;âôaCír˜&#19;Ã&quot;&#26;±44`“Cí&#24;&#26;&#17;&#13;,&#5;†XeÀ†@DT²4Ä&#26;'‡X1$&quot;&#2;�Býg</match>+    <match>wåâN…¹¹(nÅœ:ÌV(R(T˜5³£œ¥0“&#28;rfGÌP˜®p‡ÂíS&#18;äí6L+Ämû0•…©.LI&#0;?ÑA&#23;nUø¹Â-&#25;éò–\LV˜¤0QaB&#5;Æ+ÜìÂ8…±Â/Ç*ÜT‡1Ýpãè4yc&#x7f;Œ&#30;ž$G§aTAš&#28;¥0’¥‘…&#24;ÁÒˆ:&#20;¤!Ÿ�üþ&#24;&gt;Ì)‡'axD&#11;&#4;âôaCír˜&#19;Ã&quot;&#26;±44`“Cí&#24;&#26;&#17;&#13;,&#5;†XeÀ†@DT²4Ä&#26;'‡X1$&quot;&#2;�Býg&#10;ƒ9„Á­¸Aáún&#24;¤0�&#11;&lt;°&#16;&#3;z·—&#3;Æ ¿B?¿KöSè;&#6;}zµ—}Æ �‡&lt;…\VÌUèÍÓ½Û£W{ä0—“†žq©²g&#29;üÙÉÒï‚?¢&#25;n³&#29;N™�Œl#ÜZ=«‡Of)ô`Í&#30;&gt;t×&#6;Éî</match>+    <match>p�&#29;^…Îv»ì¬àqû¥§&#2;n?:�AGöÜQ¡ƒB&amp;×6S!ƒïJF:Ú+¤+¤)´c&#11;íF 5Å/S‡!Åå�)~¸&#28;Hf½d&#23;’x}’‚“3w&#14;ƒƒ=8œpDkg·Y¥Ý&#14;{´v¶Äxi³Â&#22;­]&quot;×.1&#30;‰\»&#29;º5&#14;VãÙê¯'(Äs&amp;ñ</match>+    <match>q©ˆu FÁ¦-</match>+    <match>endstream&#10;endobj</match>+    <match>14 0 obj</match>+    <match>14 0 obj&#10;2734</match>+    <match>endobj&#10;15 0 obj</match>+    <match>15 0 obj</match>+    <match>endobj&#10;16 0 obj</match>+    <match>16 0 obj</match>+    <match>(Mac OS X 10.12.6 Quartz PDFContext)</match>+    <match>endobj&#10;17 0 obj</match>+    <match>17 0 obj</match>+    <match>endobj&#10;18 0 obj</match>+    <match>18 0 obj</match>+    <match>endobj&#10;19 0 obj</match>+    <match>19 0 obj</match>+    <match>endobj&#10;20 0 obj</match>+    <match>20 0 obj</match>+    <match>endobj&#10;1 0 obj</match>+    <match>1 0 obj</match>+    <match>&lt;&lt; /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate</match>+    <match>&lt;&lt; /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate&#10;18 0 R /Keywords 19 0 R /AAPL:Keywords 20 0 R &gt;&gt;</match>+    <match>18 0 R /Keywords 19 0 R /AAPL:Keywords 20 0 R &gt;&gt;</match>+    <match>endobj&#10;xref</match>+    <match>0 21</match>+    <match>0000000000 65535 f </match>+    <match>0000000000 65535 f &#10;0000005392 00000 n </match>+    <match>0000005392 00000 n </match>+    <match>0000000238 00000 n </match>+    <match>0000000238 00000 n &#10;0000001714 00000 n </match>+    <match>0000001714 00000 n </match>+    <match>0000000022 00000 n </match>+    <match>0000000022 00000 n &#10;0000000219 00000 n </match>+    <match>0000000219 00000 n </match>+    <match>0000000342 00000 n </match>+    <match>0000000342 00000 n &#10;0000001679 00000 n </match>+    <match>0000001679 00000 n </match>+    <match>0000001847 00000 n </match>+    <match>0000001847 00000 n &#10;0000000439 00000 n </match>+    <match>0000000439 00000 n </match>+    <match>0000001658 00000 n </match>+    <match>0000001658 00000 n &#10;0000001797 00000 n </match>+    <match>0000001797 00000 n </match>+    <match>0000002110 00000 n </match>+    <match>0000002110 00000 n &#10;0000002362 00000 n </match>+    <match>0000002362 00000 n </match>+    <match>0000005186 00000 n </match>+    <match>0000005186 00000 n &#10;0000005207 00000 n </match>+    <match>0000005207 00000 n </match>+    <match>0000005231 00000 n </match>+    <match>0000005231 00000 n &#10;0000005284 00000 n </match>+    <match>0000005284 00000 n </match>+    <match>0000005311 00000 n </match>+    <match>0000005311 00000 n &#10;0000005353 00000 n </match>+    <match>0000005353 00000 n </match>+    <match>0000005372 00000 n </match>+    <match>0000005372 00000 n &#10;trailer</match>+    <match>&lt;&lt; /Size 21 /Root 11 0 R /Info 1 0 R /ID [ &lt;8db88d3335070bd9583341583cf769a3&gt;</match>+    <match>startxref&#10;5536</match>+  </file>+  <file name="Hello.sh">+    <match>#!/bin/sh&#10;echo &quot;Hello World!&quot;</match>+    <match>echo &quot;Hello World!&quot;</match>+  </file>+</grep>

tests/out/Hello_wnhS-C2.out

new file mode 100644@@ -0,0 +1,13 @@+Hello.bat:#!/bin/sh+Hello.bat|echo "Hello World!"+Binary file Hello.class matches+Hello.java:import java.lang.*;+Hello.java-+Hello.java:public class Hello // prints a Hello World! greeting+Hello.java|{ public static void main(String[] arg)+Hello.java:  { System.out.println("Hello World!");+Hello.java-  }+Hello.java-}+Binary file Hello.pdf matches+Hello.sh:#!/bin/sh+Hello.sh|echo "Hello World!"

tests/out/Hello_wnhS-F.out

new file mode 100644

tests/out/Hello_wnhS-Fw.out

new file mode 100644

tests/out/Hello_wnhS-Fx.out

new file mode 100644

tests/out/Hello_wnhS-G.out

new file mode 100644@@ -0,0 +1,10 @@+Hello.bat:#!/bin/sh+Hello.bat|echo "Hello World!"+Binary file Hello.class matches+Hello.java:import java.lang.*;+Hello.java:public class Hello // prints a Hello World! greeting+Hello.java|{ public static void main(String[] arg)+Hello.java:  { System.out.println("Hello World!");+Binary file Hello.pdf matches+Hello.sh:#!/bin/sh+Hello.sh|echo "Hello World!"

tests/out/Hello_wnhS-Gw.out

new file mode 100644@@ -0,0 +1,10 @@+Hello.bat:#!/bin/sh+Hello.bat|echo "Hello World!"+Binary file Hello.class matches+Hello.java:import java.lang.*;+Hello.java:public class Hello // prints a Hello World! greeting+Hello.java|{ public static void main(String[] arg)+Hello.java:  { System.out.println("Hello World!");+Binary file Hello.pdf matches+Hello.sh:#!/bin/sh+Hello.sh|echo "Hello World!"

tests/out/Hello_wnhS-Gx.out

new file mode 100644@@ -0,0 +1,2 @@+Hello.java:import java.lang.*;+Binary file Hello.pdf matches

tests/out/Hello_wnhS-I-C2.out

new file mode 100644@@ -0,0 +1,11 @@+Hello.bat:#!/bin/sh+Hello.bat|echo "Hello World!"+Hello.java:import java.lang.*;+Hello.java-+Hello.java:public class Hello // prints a Hello World! greeting+Hello.java|{ public static void main(String[] arg)+Hello.java:  { System.out.println("Hello World!");+Hello.java-  }+Hello.java-}+Hello.sh:#!/bin/sh+Hello.sh|echo "Hello World!"

tests/out/Hello_wnhS-I-c.out

new file mode 100644@@ -0,0 +1,6 @@+Hello.bat:2+Hello.java:4+Hello.sh:2+Hello.txt:0+empty.txt:0+emptyline.txt:0

tests/out/Hello_wnhS-I-co.out

new file mode 100644@@ -0,0 +1,6 @@+Hello.bat:2+Hello.java:9+Hello.sh:2+Hello.txt:0+empty.txt:0+emptyline.txt:0

tests/out/Hello_wnhS-I-cv.out

new file mode 100644@@ -0,0 +1,6 @@+Hello.bat:0+Hello.java:3+Hello.sh:0+Hello.txt:0+empty.txt:0+emptyline.txt:1

tests/out/Hello_wnhS-I-l.out

new file mode 100644@@ -0,0 +1,3 @@+Hello.bat+Hello.java+Hello.sh

tests/out/Hello_wnhS-I-lv.out

new file mode 100644@@ -0,0 +1,3 @@+Hello.txt+empty.txt+emptyline.txt

tests/out/Hello_wnhS-I-n.out

new file mode 100644@@ -0,0 +1,8 @@+Hello.bat:1:#!/bin/sh+Hello.bat|2|echo "Hello World!"+Hello.java:1:import java.lang.*;+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java|4|{ public static void main(String[] arg)+Hello.java:5:  { System.out.println("Hello World!");+Hello.sh:1:#!/bin/sh+Hello.sh|2|echo "Hello World!"

tests/out/Hello_wnhS-I-nC2.out

new file mode 100644@@ -0,0 +1,11 @@+Hello.bat:1:#!/bin/sh+Hello.bat|2|echo "Hello World!"+Hello.java:1:import java.lang.*;+Hello.java-2-+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java|4|{ public static void main(String[] arg)+Hello.java:5:  { System.out.println("Hello World!");+Hello.java-6-  }+Hello.java-7-}+Hello.sh:1:#!/bin/sh+Hello.sh|2|echo "Hello World!"

tests/out/Hello_wnhS-I-nkbT.out

new file mode 100644@@ -0,0 +1,8 @@+Hello.bat:     1:  8:      7:	#!/bin/sh+Hello.bat|     2|  1|     10|	echo "Hello World!"+Hello.java:     1:  1:      0:	import java.lang.*;+Hello.java:     3:  1:     21:	public class Hello // prints a Hello World! greeting+Hello.java|     4|  1|     74|	{ public static void main(String[] arg)+Hello.java:     5: 25:    138:	  { System.out.println("Hello World!");+Hello.sh:     1:  8:      7:	#!/bin/sh+Hello.sh|     2|  1|     10|	echo "Hello World!"

tests/out/Hello_wnhS-I-nv.out

new file mode 100644@@ -0,0 +1,5 @@+Hello.java:2:+Hello.java:6:  }+Hello.java:7:}+Hello.txt:1:Hello+emptyline.txt:1:

tests/out/Hello_wnhS-I-nvC2.out

new file mode 100644@@ -0,0 +1,9 @@+Hello.java-1-import java.lang.*;+Hello.java:2:+Hello.java-3-public class Hello // prints a Hello World! greeting+Hello.java-4-{ public static void main(String[] arg)+Hello.java-5-  { System.out.println("Hello World!");+Hello.java:6:  }+Hello.java:7:}+Hello.txt:1:Hello+emptyline.txt:1:

tests/out/Hello_wnhS-I-nvy.out

new file mode 100644@@ -0,0 +1,13 @@+Hello.bat-1-#!/bin/sh+Hello.bat|2|echo "Hello World!"+Hello.java-1-import java.lang.*;+Hello.java:2:+Hello.java-3-public class Hello // prints a Hello World! greeting+Hello.java|4|{ public static void main(String[] arg)+Hello.java-5-  { System.out.println("Hello World!");+Hello.java:6:  }+Hello.java:7:}+Hello.sh-1-#!/bin/sh+Hello.sh|2|echo "Hello World!"+Hello.txt:1:Hello+emptyline.txt:1:

tests/out/Hello_wnhS-I-ny.out

new file mode 100644@@ -0,0 +1,13 @@+Hello.bat:1:#!/bin/sh+Hello.bat|2|echo "Hello World!"+Hello.java:1:import java.lang.*;+Hello.java-2-+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java|4|{ public static void main(String[] arg)+Hello.java:5:  { System.out.println("Hello World!");+Hello.java-6-  }+Hello.java-7-}+Hello.sh:1:#!/bin/sh+Hello.sh|2|echo "Hello World!"+Hello.txt-1-Hello+emptyline.txt-1-

tests/out/Hello_wnhS-I-o.out

new file mode 100644@@ -0,0 +1,16 @@+Hello.bat:sh+Hello.bat|echo+Hello.bat+Hello World!"+Hello.java:import java.lang.*;+Hello.java:public class+Hello.java+Hello //+Hello.java+prints a+Hello.java+Hello World!+Hello.java+greeting+Hello.java|{+Hello.java+public static+Hello.java+void main(String[]+Hello.java:Hello World!");+Hello.sh:sh+Hello.sh|echo+Hello.sh+Hello World!"

tests/out/Hello_wnhS-I-on.out

new file mode 100644@@ -0,0 +1,16 @@+Hello.bat:1:sh+Hello.bat|2|echo+Hello.bat+2+Hello World!"+Hello.java:1:import java.lang.*;+Hello.java:3:public class+Hello.java+3+Hello //+Hello.java+3+prints a+Hello.java+3+Hello World!+Hello.java+3+greeting+Hello.java|4|{+Hello.java+4+public static+Hello.java+4+void main(String[]+Hello.java:5:Hello World!");+Hello.sh:1:sh+Hello.sh|2|echo+Hello.sh+2+Hello World!"

tests/out/Hello_wnhS-I-onC10.out

new file mode 100644@@ -0,0 +1,13 @@+Hello.bat:1:#!/bin/sh "Hello Wor...+Hello.bat:2:...ho "Hello World!"+Hello.java:1:import java.lang.*;+Hello.java:3:public class Hello /...+Hello.java+3+...class Hello // print...+Hello.java+3+...lo // prints a Hello...+Hello.java+3+...s a Hello World! gre...+Hello.java+3+...orld! greeting publi...+Hello.java:4:{ public static void...+Hello.java+4+... void main(String[] ...+Hello.java:5:...n("Hello World!");+Hello.sh:1:#!/bin/sh "Hello Wor...+Hello.sh:2:...ho "Hello World!"

tests/out/Hello_wnhS-I-onkbT.out

new file mode 100644@@ -0,0 +1,16 @@+Hello.bat:     1:  8:      7:	sh+Hello.bat|     2|  1|     10|	echo+Hello.bat+     2+  7+     16+	Hello World!"+Hello.java:     1:  1:      0:	import java.lang.*;+Hello.java:     3:  1:     21:	public class+Hello.java+     3+ 14+     34+	Hello //+Hello.java+     3+ 23+     43+	prints a+Hello.java+     3+ 32+     52+	Hello World!+Hello.java+     3+ 45+     65+	greeting+Hello.java|     4|  1|     74|	{+Hello.java+     4+  3+     76+	public static+Hello.java+     4+ 17+     90+	void main(String[]+Hello.java:     5: 25:    138:	Hello World!");+Hello.sh:     1:  8:      7:	sh+Hello.sh|     2|  1|     10|	echo+Hello.sh+     2+  7+     16+	Hello World!"

tests/out/Hello_wnhS-I-ounkbT.out

new file mode 100644@@ -0,0 +1,16 @@+Hello.bat:     1:  8:      7:	sh+Hello.bat|     2|  1|     10|	echo+Hello.bat+     2+  7+     16+	Hello World!"+Hello.java:     1:  1:      0:	import java.lang.*;+Hello.java:     3:  1:     21:	public class+Hello.java+     3+ 14+     34+	Hello //+Hello.java+     3+ 23+     43+	prints a+Hello.java+     3+ 32+     52+	Hello World!+Hello.java+     3+ 45+     65+	greeting+Hello.java|     4|  1|     74|	{+Hello.java+     4+  3+     76+	public static+Hello.java+     4+ 17+     90+	void main(String[]+Hello.java:     5: 25:    138:	Hello World!");+Hello.sh:     1:  8:      7:	sh+Hello.sh|     2|  1|     10|	echo+Hello.sh+     2+  7+     16+	Hello World!"

tests/out/Hello_wnhS-I-unkbT.out

new file mode 100644@@ -0,0 +1,16 @@+Hello.bat:     1:  8:      7:	#!/bin/sh+Hello.bat|     2|  1|     10|	echo "Hello World!"+Hello.bat+     2+  7+     16+	echo "Hello World!"+Hello.java:     1:  1:      0:	import java.lang.*;+Hello.java:     3:  1:     21:	public class Hello // prints a Hello World! greeting+Hello.java+     3+ 14+     34+	public class Hello // prints a Hello World! greeting+Hello.java+     3+ 23+     43+	public class Hello // prints a Hello World! greeting+Hello.java+     3+ 32+     52+	public class Hello // prints a Hello World! greeting+Hello.java+     3+ 45+     65+	public class Hello // prints a Hello World! greeting+Hello.java|     4|  1|     74|	{ public static void main(String[] arg)+Hello.java+     4+  3+     76+	{ public static void main(String[] arg)+Hello.java+     4+ 17+     90+	{ public static void main(String[] arg)+Hello.java:     5: 25:    138:	  { System.out.println("Hello World!");+Hello.sh:     1:  8:      7:	#!/bin/sh+Hello.sh|     2|  1|     10|	echo "Hello World!"+Hello.sh+     2+  7+     16+	echo "Hello World!"

tests/out/Hello_wnhS-I-v.out

new file mode 100644@@ -0,0 +1,5 @@+Hello.java:+Hello.java:  }+Hello.java:}+Hello.txt:Hello+emptyline.txt:

tests/out/Hello_wnhS-I-vC2.out

new file mode 100644@@ -0,0 +1,9 @@+Hello.java-import java.lang.*;+Hello.java:+Hello.java-public class Hello // prints a Hello World! greeting+Hello.java-{ public static void main(String[] arg)+Hello.java-  { System.out.println("Hello World!");+Hello.java:  }+Hello.java:}+Hello.txt:Hello+emptyline.txt:

tests/out/Hello_wnhS-I-vy.out

new file mode 100644@@ -0,0 +1,13 @@+Hello.bat-#!/bin/sh+Hello.bat|echo "Hello World!"+Hello.java-import java.lang.*;+Hello.java:+Hello.java-public class Hello // prints a Hello World! greeting+Hello.java|{ public static void main(String[] arg)+Hello.java-  { System.out.println("Hello World!");+Hello.java:  }+Hello.java:}+Hello.sh-#!/bin/sh+Hello.sh|echo "Hello World!"+Hello.txt:Hello+emptyline.txt:

tests/out/Hello_wnhS-I-y.out

new file mode 100644@@ -0,0 +1,13 @@+Hello.bat:#!/bin/sh+Hello.bat|echo "Hello World!"+Hello.java:import java.lang.*;+Hello.java-+Hello.java:public class Hello // prints a Hello World! greeting+Hello.java|{ public static void main(String[] arg)+Hello.java:  { System.out.println("Hello World!");+Hello.java-  }+Hello.java-}+Hello.sh:#!/bin/sh+Hello.sh|echo "Hello World!"+Hello.txt-Hello+emptyline.txt-

tests/out/Hello_wnhS-I.out

new file mode 100644@@ -0,0 +1,8 @@+Hello.bat:#!/bin/sh+Hello.bat|echo "Hello World!"+Hello.java:import java.lang.*;+Hello.java:public class Hello // prints a Hello World! greeting+Hello.java|{ public static void main(String[] arg)+Hello.java:  { System.out.println("Hello World!");+Hello.sh:#!/bin/sh+Hello.sh|echo "Hello World!"

tests/out/Hello_wnhS-IP.out

new file mode 100644@@ -0,0 +1,8 @@+Hello.bat:#!/bin/sh+Hello.bat|echo "Hello World!"+Hello.java:import java.lang.*;+Hello.java:public class Hello // prints a Hello World! greeting+Hello.java|{ public static void main(String[] arg)+Hello.java:  { System.out.println("Hello World!");+Hello.sh:#!/bin/sh+Hello.sh|echo "Hello World!"

tests/out/Hello_wnhS-IPw.out

new file mode 100644@@ -0,0 +1,8 @@+Hello.bat:#!/bin/sh+Hello.bat|echo "Hello World!"+Hello.java:import java.lang.*;+Hello.java:public class Hello // prints a Hello World! greeting+Hello.java|{ public static void main(String[] arg)+Hello.java:  { System.out.println("Hello World!");+Hello.sh:#!/bin/sh+Hello.sh|echo "Hello World!"

tests/out/Hello_wnhS-IPx.out

new file mode 100644@@ -0,0 +1 @@+Hello.java:import java.lang.*;

tests/out/Hello_wnhS-Iw.out

new file mode 100644@@ -0,0 +1,8 @@+Hello.bat:#!/bin/sh+Hello.bat|echo "Hello World!"+Hello.java:import java.lang.*;+Hello.java:public class Hello // prints a Hello World! greeting+Hello.java|{ public static void main(String[] arg)+Hello.java:  { System.out.println("Hello World!");+Hello.sh:#!/bin/sh+Hello.sh|echo "Hello World!"

tests/out/Hello_wnhS-Ix.out

new file mode 100644@@ -0,0 +1 @@+Hello.java:import java.lang.*;

tests/out/Hello_wnhS-W-C2.out

new file mode 100644@@ -0,0 +1,445 @@+Hello.bat:#!/bin/sh+Hello.bat|echo "Hello World!"+Hello.class-+00000010  -- -- -- -- -- -- -- --  00 13 00 14 07 00 15 07  |--------@S@TG@UG|+00000020  00 16 01 00 06 3c 69 6e  69 74 3e 01 00 03 28 29  |@VA@F<init>A@C()|+00000030  56 01 00 04 43 6f 64 65  01 00 0f 4c 69 6e 65 4e  |VA@DCodeA@OLineN|+00000040  75 6d 62 65 72 54 61 62  6c 65 01 00 04 6d 61 69  |umberTableA@Dmai|+00000050  6e 01 00 16 28 5b 4c 6a  61 76 61 2f 6c 61 6e 67  |nA@V([Ljava/lang|+00000060  2f 53 74 72 69 6e 67 3b  29 56 01 00 0a -- -- --  |/String;)VA@J---|+Hello.class-+00000060  -- -- -- -- -- -- -- --  -- -- -- -- -- 53 6f 75  |-------------Sou|+00000070  72 63 65 46 69 6c 65 01  00 0a -- -- -- -- -- --  |rceFileA@J------|+Hello.class:+00000070  -- -- -- -- -- -- -- --  -- -- 48 65 6c 6c 6f 2e  |----------Hello.|+00000080  6a 61 76 61 0c 00 07 00  08 07 00 17 0c 00 18 00  |javaL@G@HG@WL@X@|+00000090  19 01 00 0c 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |YA@LHello World!|+000000a0  07 00 1a 0c 00 1b 00 1c  01 00 05 48 65 6c 6c 6f  |G@ZL@[@\A@EHello|+000000b0  01 00 10 6a 61 76 61 2f  6c 61 6e 67 2f 4f 62 6a  |A@Pjava/lang/Obj|+000000c0  65 63 74 01 00 10 6a 61  76 61 2f 6c 61 6e 67 2f  |ectA@Pjava/lang/|+000000d0  53 79 73 74 65 6d 01 00  03 6f 75 74 01 00 15 4c  |SystemA@CoutA@UL|+000000e0  6a 61 76 61 2f 69 6f 2f  50 72 69 6e 74 53 74 72  |java/io/PrintStr|+000000f0  65 61 6d 3b 01 00 13 6a  61 76 61 2f 69 6f 2f 50  |eam;A@Sjava/io/P|+00000100  72 69 6e 74 53 74 72 65  61 6d 01 00 07 70 72 69  |rintStreamA@Gpri|+00000110  6e 74 6c 6e 01 00 15 28  4c 6a 61 76 61 2f 6c 61  |ntlnA@U(Ljava/la|+00000120  6e 67 2f 53 74 72 69 6e  67 3b 29 56 00 21 00 05  |ng/String;)V@!@E|+00000130  00 06 00 00 00 00 00 02  00 01 00 07 00 08 00 01  |@F@@@@@B@A@G@H@A|+00000140  00 09 00 00 00 1d 00 01  00 01 00 00 00 05 2a b7  |@I@@@]@A@A@@@E*.|+00000150  00 01 b1 00 00 00 01 00  0a -- -- -- -- -- -- --  |@A.@@@A@J-------|+Hello.class-+00000150  -- -- -- -- -- -- -- --  -- 00 00 00 06 00 01 00  |---------@@@F@A@|+00000160  00 00 03 00 09 00 0b 00  0c 00 01 00 09 00 00 00  |@@C@I@K@L@A@I@@@|+00000170  25 00 02 00 01 00 00 00  09 b2 00 02 12 03 b6 00  |%@B@A@@@I.@BRC.@|+00000180  04 b1 00 00 00 01 00 0a  -- -- -- -- -- -- -- --  |D.@@@A@J--------|+Hello.class-+00000180  -- -- -- -- -- -- -- --  00 00 00 0a -- -- -- --  |--------@@@J----|+Hello.java:import java.lang.*;+Hello.java-+Hello.java:public class Hello // prints a Hello World! greeting+Hello.java|{ public static void main(String[] arg)+Hello.java:  { System.out.println("Hello World!");+Hello.java-  }+Hello.java-}+Hello.pdf:+00000000  25 50 44 46 2d 31 2e 33  0a 25 c4 e5 f2 e5 eb a7  |%PDF-1.3J%......|+00000010  f3 a0 d0 c4 c6 0a -- --  -- -- -- -- -- -- -- --  |.....J----------|+Hello.pdf:4 0 obj+Hello.pdf|<< /Length 5 0 R /Filter /FlateDecode >>+Hello.pdf:+00000040  -- -- -- -- -- -- -- 73  74 72 65 61 6d 0a 78 01  |-------streamJxA|+00000050  45 8e bb 0a -- -- -- --  -- -- -- -- -- -- -- --  |E..J------------|+Hello.pdf:+00000050  -- -- -- -- 02 31 14 44  7b bf e2 94 5a 98 bd 89  |----B1TD{...Z...|+00000060  79 98 56 11 6c 17 2e f8  01 61 2d 64 d7 65 cd ff  |y.VQlW..Aa-d.e..|+00000070  83 17 2c ac 86 99 39 0c  b3 31 b2 51 02 b9 46 97  |.W,...9L.1.QB.F.|+00000080  e2 a9 12 f3 99 90 5c 4c  59 0a 9f 89 07 6f 86 6b  |..R...\LYJ..Go.k|+00000090  f7 b4 8e d0 9b e1 e2 6a  a9 52 6a b2 40 38 fe ad  |.......j.Rj.@8..|+000000a0  ed 94 20 bb b6 70 51 a3  44 c4 a3 0d ef 7f a0 69  |.. ..pQ.D..M.~.i|+000000b0  c2 0b ba 30 a8 7a ac 7c  b2 bf 4f f3 bc 1e d0 17  |.K.0.z.|..O..^.W|+000000c0  37 b5 37 e3 17 4e ff 20  a5 0a -- -- -- -- -- --  |7.7.WN. .J------|+Hello.pdf:endstream+Hello.pdf|endobj+Hello.pdf:5 0 obj+Hello.pdf|123+Hello.pdf:endobj+Hello.pdf|2 0 obj+Hello.pdf:<< /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]+Hello.pdf->>+Hello.pdf:endobj+Hello.pdf|6 0 obj+Hello.pdf:<< /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R >> /Font << /TT1 8 0 R+Hello.pdf->> >>+Hello.pdf:endobj+Hello.pdf|9 0 obj+Hello.pdf:<< /Length 10 0 R /N 1 /Alternate /DeviceGray /Filter /FlateDecode >>+Hello.pdf:+00000200  -- -- -- -- -- 73 74 72  65 61 6d 0a 78 01 85 55  |-----streamJxA.U|+00000210  5d 68 1c 55 14 3e bb 73  67 03 12 07 1f b4 0d 2d  |]h\UT>.sgCRG_.M-|+00000220  b4 83 3f 6d 09 e9 32 89  56 13 8b b5 db 4d ba 49  |..?mI.2.VS...M.I|+00000230  13 b7 eb 66 53 9b 2a ca  74 76 36 3b cd 64 66 9c  |S..fS.*.tv6;.df.|+00000240  99 dd 26 a1 4f a5 e0 9b  16 04 e9 ab a0 3e c6 82  |..&.O...VD...>..|+00000250  08 b6 2a 36 2f f6 a5 a5  c5 92 4a 35 0f 0a -- --  |H.*6/.....J5OJ--|+Hello.pdf:+00000250  -- -- -- -- -- -- -- --  -- -- -- -- -- -- 11 5a  |--------------QZ|+00000260  8c 20 28 7d 52 f0 3b 33  db 64 76 41 32 c3 9d f9  |. (}R.;3.dvA2...|+00000270  ee b9 e7 9e 7b ce 77 ee  b9 97 a8 eb 6f dd f3 ec  |....{.w.....o...|+00000280  b4 4a 34 e7 84 7e a1 9c  9b 3e 39 7d 4a ed ba 4d  |.J4..~...>9}J..M|+00000290  69 52 a8 9b f0 e8 46 e0  e5 4a a5 09 c6 8e eb 98  |iR....F..J.I....|+000002a0  fc 6f 7f 1e de a5 14 4b  ee ec 67 5b ed 63 5b f6  |.o~^..TK..g[.c[.|+000002b0  e4 aa 19 18 d0 ba 86 e6  56 03 63 8e 28 a5 11 65  |..YX....VCc.(.Qe|+000002c0  6a 86 e7 87 44 5d 97 20  1f 3c 1b 7a 8c 6f 03 3f  |j...D]. _<[z.oC?|+000002d0  39 5b 29 e7 81 d7 80 95  d6 5c 40 7a aa 60 3a a6  |9[)......\@z.`:.|+000002e0  6f 19 6a c1 d7 17 d4 92  ef d6 2c 3b e9 eb 56 e3  |oYj..W....,;..V.|+000002f0  6c 63 cb 67 ce 6e b0 af  fc ec 46 eb 0e 66 27 c7  |lc.g.n....F.Nf'.|+00000300  f1 ef 85 cf 17 4c 67 6a  12 78 1f f0 92 a1 8f 30  |....WLgjRx_....0|+00000310  ee 03 be db b4 4e 14 63  9c 4e 7b e1 91 72 ac 9f  |.C...NTc.N{..r..|+00000320  ce 36 66 a7 72 2d f9 c9  9a 7f 74 aa 25 bf 50 6f  |.6f.r-...~t.%.Po|+00000330  8c 32 ce 12 a5 97 16 eb  95 37 80 9f 00 5e 75 4e  |.2.R..V..7..@^uN|+00000340  17 8f b7 f4 d7 67 dd 71  b6 d3 43 24 f5 18 41 fe  |W....g.q..C$.XA.|+00000350  14 f0 b3 c0 5a dd 1c e3  3c a9 c0 15 df 2d b3 3e  |T...Z.\.<..U.-.>|+00000360  cb c3 aa 39 3c 02 fc 32  f0 25 2b 1c ab 00 c3 be  |...9<B.2.%+\.@..|+00000370  f4 43 d0 9c 64 39 b0 a0  c5 7a 9e fd c4 5a 22 7b  |.C..d9...z...Z"{|+00000380  46 3f 56 02 de 06 7c c8  b4 0b bc 16 ec 88 8a 17  |F?VB.F|..K.V...W|+00000390  96 d8 e6 20 f0 bc 63 17  79 2d c4 2e 2e 9b 41 14  |... ..cWy-....AT|+000003a0  2f 62 17 3f 85 f5 ca 68  ac 2f a7 43 bf c2 73 9f  |/bW?...h./.C..s.|+000003b0  26 92 f7 d4 ac a3 63 c0  e0 44 1e ad fb a3 2c 87  |&.....c..D^...,.|+000003c0  3f 72 e8 d9 d1 de 7a 11  78 c9 6f 94 39 f6 3d c0  |?r....zQx.o.9.=.|+000003d0  6b ba 3f 52 00 86 cd cc  63 55 7d 98 79 7e 01 78  |k.?R@...cU}.y~Ax|+000003e0  80 4e a4 74 32 c9 a5 d3  f8 1a e4 d0 bf 88 37 20  |.N.t2....Z....7 |+000003f0  8b 9a 11 f2 c8 c7 58 0d  7d 9b 0a -- -- -- -- --  |..Q...XM}.J-----|+Hello.pdf-+000003f0  -- -- -- -- -- -- -- --  -- -- -- d0 70 d0 7c f4  |-----------.p.|.|+00000400  0c 68 15 80 74 5a 00 2a  25 b4 4c f4 58 27 9e a3  |LhU.tZ@*%.L.X'..|+00000410  52 15 3d 95 66 a2 59 41  84 d8 ca fd a8 6f 50 7e  |RU=.f.YA.....oP~|+00000420  d7 a7 d4 80 b4 4e eb 90  d6 81 5e a3 5f 22 c9 3c  |.....N....^._".<|+00000430  fd 4a 73 e8 e7 21 6d 60  6c a6 c3 6e 1e 5e 38 b4  |.Js..!m`l..n^^8.|+00000440  08 0f d8 13 b6 f9 a0 65  d3 15 db 85 26 9e 47 3b  |HO.S...e.U..&.G;|+00000450  28 26 c4 2b 62 50 0c 91  2a 5e 15 87 c5 21 31 0c  |(&.+bPL.*^U..!1L|+00000460  e9 90 38 18 cd 89 bd 4f  fa ce 7e 3e d8 b0 f4 2e  |..8X...O..~>....|+00000470  d6 4d fa be 0c 0e 42 ac  67 c3 33 07 ac 70 34 01  |.M..LNB.g.3G.p4A|+00000480  3c f8 07 eb ce 46 9a 09  b6 2e ee 68 ec f3 bc 8f  |<.G..F.I...h....|+00000490  de 3f ef bf 63 19 b7 3e  f8 b3 8d bd 00 fa 31 27  |.?..cY.>....@.1'|+000004a0  bf c1 a2 0b 6b 26 25 e6  5e 3f f7 4d 4f c2 43 75  |...Kk&%.^?.MO.Cu|+000004b0  45 7c f5 d6 9d ee eb e7  e8 78 32 4b 51 de aa 9d  |E|.......x2KQ...|+000004c0  59 92 d7 e4 fb f2 0a --  -- -- -- -- -- -- -- --  |Y.....J---------|+Hello.pdf-+000004c0  -- -- -- -- -- -- -- be  f7 e4 d5 a4 0d f9 67 79  |-------.....M.gy|+000004d0  15 ef bd b6 5c 3d ca 0b  ff 93 b9 cd 21 46 3b 92  |U...\=.K....!F;.|+000004e0  cd 41 ce 3c 9b 51 b4 71  c6 1b c0 21 b8 a9 45 73  |.A.<.Q.q.[.!..Es|+000004f0  f6 b7 59 4c b2 e9 b6 62  b4 60 c9 42 94 9d ab b8  |..YL...b.`.B....|+00000500  ff cb 09 f3 c3 3c b7 b1  52 73 2e ee f0 bc b7 3f  |..I..<..Rs.....?|+00000510  63 36 cd f7 8a 0f 8b 74  be 4f bb ac ad 6b 9f 68  |c6...O.t.O...k.h|+00000520  3f 6a 7f 68 2b da c7 40  bf 4b 1f 4a 5f 4a df 4a  |?j~h+..@.K_J_J.J|+00000530  57 a4 ab d2 0d 52 a5 6b  d2 b2 f4 9d f4 bd f4 b9  |W...MR.k........|+00000540  f4 35 7a 5f 40 ba 2c 5d  e9 d8 49 71 ec 1b bb 07  |.5z_@.,]..Iq.[.G|+00000550  7e c6 7b d6 68 ed 30 66  86 b3 14 10 f3 c2 da cc  |~.{.h.0f..TP....|+00000560  0a -- -- -- -- -- -- --  -- -- -- -- -- -- -- --  |J---------------|+Hello.pdf-+00000560  -- 4b 1f f1 77 06 63 9b  f9 33 a1 d5 5e 03 9d bb  |-K_.wFc..3..^C..|+00000570  7f 63 2d e5 88 b2 53 79  46 19 56 76 2b cf 29 13  |~c-...SyFYVv+.)S|+00000580  4a af 72 40 39 ac 6c 57  06 d0 fa 95 51 65 2f 46  |J.r@9.lWF...Qe/F|+00000590  76 6e b0 64 63 3d ce 80  85 7f 92 67 8b a6 23 ae  |vn.dc=...~.g..#.|+000005a0  e2 3c b1 57 75 b0 e7 c3  4b 1d ef a6 5f 5c c3 d6  |.<.Wu...K].._\..|+000005b0  86 35 d8 49 3d 0e 9e d9  da a6 0e af 11 57 bf 15  |.5.I=N....N.QW.U|+000005c0  55 63 bc 3b 5d 9c 06 3a  4d 21 62 8b ce 22 72 1f  |Uc.;].F:M!b.."r_|+000005d0  3a 9c 1f 27 aa fe ce d9  5c 93 38 35 52 6f e2 94  |:._'....\.85Ro..|+000005e0  b0 c4 2e d1 2f c6 5a 35  98 13 07 50 85 e3 6d f5  |..../.Z5.SGP..m.|+000005f0  38 c8 55 9a 19 c9 0c 67  72 a4 66 7a 33 43 99 fe  |8.U.Y.Lgr.fz3C..|+00000600  cc 31 c6 51 ac d1 f9 92  d9 8b d1 21 7c 47 12 de  |.1.Q.......!|GR.|+00000610  33 cb 31 ff 9b 35 c4 67  18 ef 1d e6 a8 09 6c a3  |3.1..5.gX.]..Il.|+00000620  87 5b 2b 34 e7 71 df 11  e5 5d 6f c1 b7 66 ea a1  |.[+4.q.Q.]o..f..|+00000630  3a a0 69 2f a9 39 5c af  a6 3a e6 18 d9 3e 55 b7  |:.i/.9\..:.X.>U.|+00000640  6d 35 1a 0a -- -- -- --  -- -- -- -- -- -- -- --  |m5ZJ------------|+Hello.pdf:+00000640  -- -- -- -- 54 df 0c 4c  bf 69 56 b3 c4 77 37 cf  |----T.LL.iV..w7.|+00000650  23 fa eb f5 e8 4e 4e 6d  bb 61 34 fc 66 2c a3 54  |#....NNm.a4.f,.T|+00000660  ea 26 d1 7f b7 8f 93 34  0a 65 6e 64 73 74 72 65  |.&.~...4Jendstre|+00000670  61 6d 0a -- -- -- -- --  -- -- -- -- -- -- -- --  |amJ-------------|+Hello.pdf:endobj+Hello.pdf|10 0 obj+Hello.pdf:1116+Hello.pdf|endobj+Hello.pdf:7 0 obj+Hello.pdf|[ /ICCBased 9 0 R ]+Hello.pdf:endobj+Hello.pdf|3 0 obj+Hello.pdf:<< /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 2 0 R ] >>+Hello.pdf:endobj+Hello.pdf|11 0 obj+Hello.pdf:<< /Type /Catalog /Pages 3 0 R >>+Hello.pdf:endobj+Hello.pdf|8 0 obj+Hello.pdf:<< /Type /Font /Subtype /TrueType /BaseFont /GQTMZF+Menlo-Regular /FontDescriptor+Hello.pdf|12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602+Hello.pdf|0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602+Hello.pdf|0 0 602 ] >>+Hello.pdf:endobj+Hello.pdf|12 0 obj+Hello.pdf:<< /Type /FontDescriptor /FontName /GQTMZF+Menlo-Regular /Flags 33 /FontBBox+Hello.pdf|[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729+Hello.pdf:/StemV 99 /XHeight 547 /StemH 83 /AvgWidth 602 /MaxWidth 602 /FontFile2 13 0 R+Hello.pdf->>+Hello.pdf:endobj+Hello.pdf|13 0 obj+Hello.pdf:<< /Length 14 0 R /Length1 4064 /Filter /FlateDecode >>+Hello.pdf:+00000970  -- -- -- -- -- -- -- --  -- -- -- 73 74 72 65 61  |-----------strea|+00000980  6d 0a 78 01 dd 57 7b 78  54 c5 15 3f 73 7f 77 36  |mJxA.W{xT.U?s~w6|+00000990  af cd 3e 92 4d 48 48 80  5d d6 e5 95 2c 81 84 b7  |..>.MHH.]...,...|+000009a0  52 16 48 78 88 20 2f eb  2e 88 f2 48 20 28 21 08  |RVHx. /....H (!H|+000009b0  41 b4 31 90 4a 51 09 c1  40 85 08 48 7d 15 51 a9  |A.1.JQI.@.HH}UQ.|+000009c0  b5 2b 45 5d 09 c4 54 a4  62 23 45 84 a0 02 0a --  |.+E]I.T.b#E..BJ-|+Hello.pdf:+000009c0  -- -- -- -- -- -- -- --  -- -- -- -- -- -- -- f8  |---------------.|+000009d0  a2 68 8a 14 21 d8 00 43  cf bd 1b fd 3e ed d7 ef  |.h.T!.@C..[.>...|+000009e0  eb bf ed dc 9d 33 e7 fc  e6 cc 79 dd bb f7 ce 94  |.....3....y.....|+000009f0  2d 5c 5c 44 56 aa 24 50  60 56 c9 8c 05 64 36 eb  |-\\DV.$P`V..Ed6.|+00000a00  49 1e 8a 67 dd 53 e6 36  45 8a bd 97 48 cb 9d bd  |I^.g.S.6E...H...|+00000a10  60 4e 49 54 8e 7f 91 e5  4e 73 e6 dd 37 3b 2a 27  |`NIT.~..Ns..7;*'|+00000a20  4e 66 79 40 71 d1 8c c2  a8 4c 57 78 ec 57 cc 40  |Nfy@q....LWx.W.@|+00000a30  54 16 7d 78 bc ae b8 a4  8c ed 18 cd fa 2e 13 d7  |TV}x......X...S.|+00000a40  bc d2 59 6d f3 89 a3 0c  b0 64 c6 bd 6d fe e9 38  |..Ym...L.d..m..8|+00000a50  cb ee f9 33 4a 8a 78 e4  66 8f 30 e9 b6 a0 74 51  |...3J.x.f.0...tQ|+00000a60  99 29 92 bd 9a c7 ec 05  0b 8b da f4 45 90 28 a6  |.).....EK...E.(.|+00000a70  53 74 ae 8d 1a 96 05 77  a9 59 29 8b ee 22 0b 69  |St..Z.Ew.Y).."Ki|+00000a80  e4 a0 8d 94 c4 d0 ad ac  2b 79 d6 98 d7 62 b2 96  |........+y...b..|+00000a90  3e 7d f6 8d 3b ec 37 5c  a4 4e b1 e6 e2 bd 65 e9  |>}..;.7\.N....e.|+00000aa0  79 06 73 28 b8 a4 df e5  95 57 85 ac 8f bd 85 c5  |yFs(.....W......|+00000ab0  e8 a4 31 c1 eb 62 4a 54  07 22 fd e0 e5 95 d7 92  |..1..bJTG"......|+00000ac0  65 bd 69 c9 98 f9 be c9  08 c5 66 bd ae 55 8a 94  |e.i.....H.f..U..|+00000ad0  ed eb a6 c9 a1 99 22 85  6a 09 4c 2b 49 17 2e 52  |......".jIL+IW.R|+00000ae0  cc 27 9b 34 89 03 82 70  9a bc c3 a4 76 da c4 88  |.'.4.C.p....v...|+00000af0  cd e4 13 b7 7f 3d 52 0e  f5 89 44 aa 60 cc 4a 3e  |..S.~=RN..D.`.J>|+00000b00  a6 09 94 cb 34 de b4 17  67 6a c5 92 8d 91 18 93  |.I..4..Wgj....X.|+00000b10  b7 98 3a d2 e4 75 13 87  89 68 26 22 02 21 05 a5  |..:..uS..h&"B!E.|+00000b20  70 b5 02 57 14 2e 2b b4  e6 e2 9f 75 f8 ae 02 97  |p.BWT.+....u..B.|+00000b30  5a aa e5 25 85 4b 0d 7a  cb c5 90 6c a9 46 4b a5  |Z..%.KMz...l.FK.|+00000b40  7e f1 42 17 79 31 84 8b  01 fd 42 17 7c 7b 3e 47  |~.BWy1..A.BW|{>G|+00000b50  7e db 8a f3 39 f8 87 c2  39 85 6f 72 71 d6 85 bf  |~...9...9.orq...|+00000b60  d7 a2 99 43 6c 56 68 8e  5c 3b 18 b8 a6 7f 3d 12  |...ClVh.\;X..~=R|+00000b70  5f 9d 29 94 5f d5 e2 4c  21 fe a6 70 fa cb 0c 79  |_.)._..L!..p..Ly|+00000b80  5a e1 cb 0c 7c a1 f0 f9  5d f8 4c e1 d3 3a 9c 3a  |Z..L|...].L..:.:|+00000b90  99 2e 4f b5 e2 64 3a 4e  d4 e2 13 85 8f 15 8e 1f  |..O..d:N..S..U._|+00000ba0  4b 91 c7 15 8e a5 e0 68  2d 3e fa 30 45 7e a4 f0  |K..U...h->.0E~..|+00000bb0  e1 ea 04 f9 61 0a 3e a8  c0 91 41 68 62 a1 69 10  |..D.aJ>...Ahb.iP|+00000bc0  0e 2b 1c 7a 3f 5e 1e 52  78 3f 1e 07 15 de 53 38  |N+\z?^^Rx?^GU.S8|+00000bd0  50 e5 94 07 32 f1 d7 54  ec 57 78 b7 16 8d ab 7c  |P..G2..T.Wx.V..||+00000be0  b2 51 e1 2f -- -- -- --  -- -- -- -- -- -- -- --  |.Q./------------|+Hello.pdf:+Hello.pdf-+00000be0  -- -- -- -- -- ef 54 60  9f c2 db 0a -- -- -- --  |-----.T`...J----|+Hello.pdf-+00000be0  -- -- -- -- -- -- -- --  -- -- -- -- 7f 56 d8 bb  |------------~V..|+00000bf0  29 51 be a5 b0 47 e1 4d  85 3f 29 34 b0 bd 06 17  |)Q...G.M.?)4..FW|+00000c00  de b0 a2 7e 77 9d ac 57  d8 bd 6b 9a dc 5d 87 dd  |...~w..W..k..]..|+00000c10  95 fa ae 3a 9f dc 35 0d  bb 02 7a 9d 0f 3b 15 5e  |...:..5M.Bz.O;U^|+00000c20  af 45 a4 66 a8 7c 4d e1  55 1e 5e 6d c5 2b 6c 6b  |.E.f.|M.U^^m.+lk|+00000c30  87 c2 1f 0b b1 bd 10 2f  db 10 4e c2 1f 14 5e 52  |.._K..P/.PN._T^R|+00000c40  81 ab f8 bd c2 8b 0a --  -- -- -- -- -- -- -- --  |......J---------|+Hello.pdf-+00000c40  -- -- -- -- -- -- -- bf  4b c2 36 85 17 9e b7 c9  |-------.K.6.W...|+00000c50  17 72 f1 bc 0d cf 6d 75  ca e7 ba 61 ab 13 cf 6e  |Wr..M.mu...a.S.n|+00000c60  f1 cb 67 2b b0 c5 8f df  2a 3c a3 f0 b4 c2 53 4f  |..g+....*<....SO|+00000c70  a6 cb a7 0a -- -- -- --  -- -- -- -- -- -- -- --  |...J------------|+Hello.pdf:+00000c70  -- -- -- -- f1 e4 13 0e  f9 64 3a 9e 70 e0 37 f1  |----..SN.d:.p.7.|+00000c80  d8 ac f0 38 3b 79 5c 61  53 22 36 6e e8 29 37 2a  |...8;y\aS"6n.)7*|+00000c90  6c e8 89 c7 d8 ff 63 b5  a8 5d 5f 27 6b 15 d6 f3  |l.....c..]_'kU..|+00000ca0  b3 b5 be 0e eb 2b f5 75  6b 7c 72 dd 34 ac 0b e8  |...N.+.uk|r.4.K.|+00000cb0  8f 2a fc 5a 61 2d cb 6b  eb b0 c6 87 1a 2e 46 cd  |.*.Za-.k....Z.F.|+00000cc0  50 3c c2 d9 3e e2 c2 ea  04 54 33 50 5d 88 55 5c  |P<..>...DT3P].U\|+00000cd0  b4 55 3e 54 39 b1 52 e1  61 85 87 14 1e 5c e1 94  |.U>T9.R.a..T^\..|+00000ce0  0f 2a ac 70 e2 57 0a cb  15 1e 70 0e 93 0f 4c c2  |O*.p.WJ.U^pN.OL.|+00000cf0  2f 15 2a ef c5 b2 a5 15  72 99 c2 d2 0a -- -- --  |/U*....Ur...J---|+Hello.pdf-+00000cf0  -- -- -- -- -- -- -- --  -- -- -- -- -- 54 74 c4  |-------------Tt.|+00000d00  fd 0a -- -- -- -- -- --  -- -- -- -- -- -- -- --  |.J--------------|+Hello.pdf-+00000d00  -- -- e5 36 fc 42 61 89  c2 3d 0a -- -- -- -- --  |--.6.Ba..=J-----|+Hello.pdf:+00000d00  -- -- -- -- -- -- -- --  -- -- -- 8b cb ac 72 b1  |-----------...r.|+00000d10  1d 8b 23 82 02 47 f5 32  2b ca 1a f4 45 49 58 14  |].#.BG.2+.Z.EIXT|+00000d20  d0 17 2a dc ad b0 40 a1  74 fe 24 59 5a 8b f9 25  |.W*...@.t.$YZ..%|+00000d30  dd e4 fc 49 28 e9 86 79  0a 77 e5 e2 4e 85 b9 b9  |...I(..yJw..N...|+00000d40  28 6e c5 9c 3a cc 56 28  52 28 54 98 35 b3 a3 9c  |(n..:.V(R(T.5...|+00000d50  a5 30 93 1c 72 66 47 cc  50 98 ae 70 87 c2 ed 53  |.0.\rfG.P..p...S|+00000d60  12 e4 ed 36 4c 2b c4 6d  fb 30 95 85 a9 2e 4c 49  |R..6L+.m.0....LI|+00000d70  00 3f d1 41 17 6e 55 f8  b9 c2 2d 19 e9 f2 96 5c  |@?.AWnU...-Y...\|+00000d80  4c 56 98 a4 30 51 61 42  05 c6 2b dc ec c2 38 85  |LV..0QaBE.+...8.|+00000d90  b1 c2 2f c7 2a dc 54 87  31 dd 70 e3 e8 34 79 63  |../.*.T.1.p..4yc|+00000da0  7f 8c 1e 9e 24 47 a7 61  54 41 9a 1c a5 30 92 a5  |~.^.$G.aTA.\.0..|+00000db0  91 85 18 c1 d2 88 3a 14  a4 21 9f 81 fc fe 18 3e  |..X...:T.!....X>|+00000dc0  cc 29 87 27 61 78 44 0b  04 e2 f4 61 43 ed 72 98  |.).'axDKD..aC.r.|+00000dd0  13 c3 22 1a b1 34 34 60  93 43 ed 18 1a 11 0d 2c  |S."Z.44`.C.XZQM,|+00000de0  05 86 58 65 c0 86 40 44  54 b2 34 c4 1a 27 87 58  |E.Xe..@DT.4.Z'.X|+00000df0  31 24 22 02 81 42 fd 67  0a 83 39 84 c1 ad b8 41  |1$"B.B.gJ.9....A|+00000e00  e1 fa 6e 18 a4 30 90 0b  3c b0 10 03 7a b7 97 03  |..nX.0.K<.PCz..C|+00000e10  c6 a0 bf 42 3f bf 4b f6  53 e8 3b 06 7d 7a b5 97  |...B?.K.S.;F}z..|+00000e20  7d c6 20 8f 87 3c 85 5c  56 cc 55 e8 cd d3 bd db  |}. ..<.\V.U.....|+00000e30  a3 57 7b e4 30 97 93 86  9e 71 a9 b2 67 1d fc d9  |.W{.0....q..g]..|+00000e40  c9 d2 ef 82 3f a2 19 6e  b3 1d 4e 99 9d 8c 6c 23  |....?.Yn.]N...l#|+00000e50  dc 5a 3d ab 87 4f 66 29  f4 60 cd 1e 3e 74 d7 06  |.Z=..Of).`.^>t.F|+00000e60  c9 ee 0a -- -- -- -- --  -- -- -- -- -- -- -- --  |..J-------------|+Hello.pdf-+00000e60  -- -- -- dd 14 ba 2a 74  b1 c3 97 3a 4c fa 0a --  |---.T.*t...:L.J-|+Hello.pdf:+00000e60  -- -- -- -- -- -- -- --  -- -- -- -- -- -- -- 70  |---------------p|+00000e70  9d 1d 5e 85 ce 76 bb ec  ac e0 71 fb a5 a7 02 6e  |.]^..v....q...Bn|+00000e80  3f 3a 8d 41 47 f6 dc 51  a1 83 42 26 d7 36 53 21  |?:.AG..Q..B&.6S!|+00000e90  83 ef 4a 46 3a da 2b a4  2b a4 29 b4 63 0b ed 46  |..JF:.+.+.).cK.F|+00000ea0  20 35 c5 2f 53 87 21 c5  e5 90 29 7e b8 1c 48 66  | 5./S.!...)~.\Hf|+00000eb0  bd 64 17 92 78 7d 92 82  93 33 77 0e 83 83 3d 38  |.dW.x}...3wN..=8|+00000ec0  9c 70 44 6b 67 b7 59 a5  dd 0e 7b b4 76 b6 c4 78  |.pDkg.Y..N{.v..x|+00000ed0  69 b3 c2 16 ad 5d 22 d7  2e 31 1e 89 5c bb 1d ba  |i..V.]"..1^.\.].|+00000ee0  35 0e 56 e3 d9 ea af 27  28 c4 73 26 f1 0a -- --  |5NV....'(.s&.J--|+Hello.pdf:+00000ee0  -- -- -- -- -- -- -- --  -- -- -- -- -- -- 71 a9  |--------------q.|+00000ef0  88 75 20 46 c1 c2 a6 2d  0a -- -- -- -- -- -- --  |.u F...-J-------|+Hello.pdf-+00000ef0  -- -- -- -- -- -- -- --  -- d2 05 70 72 68 85 c6  |---------.Eprh..|+00000f00  80 36 08 82 03 10 7e 90  03 22 22 0a -- -- -- --  |.6H.CP~.C""J----|+Hello.pdf-+00000f00  -- -- -- -- -- -- -- --  -- -- -- -- 57 ac 16 59  |------------W.VY|+00000f10  ff 3f 8d fe c7 53 e1 4f  67 84 1a cd be 4d ac e5  |.?...S.Og.Z..M..|+00000f20  d1 d8 47 44 e8 21 6d 19  7f a5 bf bf 22 b4 87 75  |..GD.!mY~..."..u|+00000f30  34 53 2f 22 1a c5 4a b1  93 f9 ad bc b7 68 a4 e5  |4S/"Z.J......h..|+00000f40  74 5e c4 e3 6d d1 9f b9  7a 5e 1b d4 3d 8c d6 d0  |t^..m...z^[.=...|+00000f50  66 73 75 0d 4e d3 62 ec  a2 43 f4 0e 1d 63 ee b4  |fsuMN.b..C.N]c..|+00000f60  18 08 5e 2b 0e 91 47 9c  60 3f 2b 7f f0 a1 a1 9e  |XH^+N.G.`?+~....|+00000f70  a5 3d 4c cb 51 8f a0 e8  24 4a 68 8b 78 89 2d 96  |.=L.Q...$Jh.x.-.|+00000f80  53 44 94 d2 32 8d 47 6d  22 5b de af 1f 64 74 3f  |SD..2.Gm"[.._dt?|+00000f90  3d c4 d7 a3 b4 85 4a 99  37 32 58 ce f1 7f 4c 3b  |=.....J.72X..~L;|+00000fa0  68 15 5d a0 0d da 19 9a  c2 fc 4e da cb f1 28 fe  |hU].M.Y...N...(.|+00000fb0  fc 9a b9 88 26 6a 61 4b  db b4 c1 da 6c d6 db cb  |....&jaK....l...|+00000fc0  d6 36 d1 26 b1 9c 9a 68  91 4e fc 29 57 74 4a 36  |.6.&...h.N.)WtJ6|+00000fd0  69 59 6c 75 07 67 40 34  93 36 cb 26 b9 c1 a8 07  |iYluGg@4.6.&...G|+00000fe0  8f 4d f2 1c cf 10 75 b0  44 2c ae 18 2f 67 61 d4  |.M.\.Pu.D,.X/ga.|+00000ff0  6e ab d8 25 7a 6b e3 e8  10 af 2f a7 c9 b8 0d 77  |n..%zk..P./...Mw|+00001000  e3 98 58 a1 7b f5 25 38  43 35 1a 61 3a dd 49 07  |..X.{.%8C5Za:.IG|+00001010  64 93 c5 45 35 31 5e aa  b1 cc 16 f7 e9 d3 cd ab  |d..E51^...V.....|+00001020  9c ad 95 6b 4b f4 e9 62  1b 9d 61 9b 33 f1 1d cb  |...kK..b[.a.3.].|+00001030  1e 8e 6c b3 99 31 d1 0e  6d a2 1c 27 c7 71 ce b3  |^.l..1.Nm.\'.q..|+00001040  19 db 6c d2 9a 28 b5 38  68 3f 5a b9 ee 6b 35 25  |Y.l..(.8h?Z..k5%|+00001050  46 e9 23 30 84 f3 29 d7  6f a2 0d f4 0c db ed ca  |F.#0..).o.M.L...|+00001060  95 21 2a 45 5f f6 5e 4a  e5 72 75 f4 a2 6d 7c f9  |.!*E_.^J.ru..m|.|+00001070  e5 6a d4 72 45 cd 6a 88  3c 6d 30 6d d6 66 8b 55  |.j.rE.j.<m0m.f.U|+00001080  1c 6d 0b 57 b3 14 f9 d4  9f 7d 74 90 67 69 85 d8  |\mKW.T...}t.gi..|+00001090  c1 71 53 4c 05 2d 92 4d  bc 55 24 ea 41 f4 5a 8c  |.qSLE-.M.U$.A.Z.|+000010a0  45 ea fc f7 a6 6c b7 23  ac f9 46 17 86 03 13 82  |E....l.#..FW.CS.|+000010b0  ee 7d 21 8f 3f fb 27 a2  db 11 e3 0e d3 f8 70 e2  |.}!.?.'..Q.N..p.|+000010c0  7d ee c8 b5 6b e3 83 7a  86 0c 85 65 66 18 be d8  |}...k..z.L.efX..|+000010d0  b0 ee f3 9e fa 4f 93 a7  fc d9 63 c6 07 dd 11 d1  |.....O....c.G.Q.|+000010e0  ae 20 bf cd 6c c1 f4 7c  06 27 05 d9 03 ff 0c 98  |. ..l..|F'E.C.L.|+000010f0  dd 15 30 16 05 46 87 a5  8f 7f a3 a7 87 dd b3 8a  |.U0VEF...~......|+00001100  dd 55 8e 2a ef a0 2a 47  d1 20 3f ef ff b2 c7 30  |.U.*..*G. ?....0|+00001110  19 1f 7c 59 88 47 42 11  71 6d 45 84 f2 3b bc ce  |Y_|Y.GBQqmE..;..|+00001120  bb 48 dc 71 3b 4f c7 65  bb dd 05 73 f3 c3 62 3a  |.H.q;O.e..Es..b:|+00001130  0b f1 d9 0c f4 f0 30 97  90 ed 1e c1 61 8e 98 18  |K..L..0...^.a..X|+00001140  f4 86 dc 55 ee aa d1 85  55 ee 11 ee e2 19 85 1c  |...U....U.Q..Y.\|+00001150  b7 39 f2 44 51 55 28 87  33 98 14 9c cb 74 72 d0  |.9.DQU(.3.T..tr.|+00001160  13 0e 84 32 7e 60 8b 42  21 c3 bb d5 b0 c3 4b 58  |SN.2~`.B!.....KX|+00001170  bd 2a c4 16 ee 6c b3 c0  a3 09 e5 5c 65 a5 c4 ec  |.*.V.l...I.\e...|+00001180  31 ee 30 ba 8c 0f 4e 08  86 2b f3 33 c2 81 fc 50  |1.0..ONH.+.3...P|+00001190  86 c7 e3 2e 08 37 8c 0f  86 1b f2 33 3c a1 10 6b  |....H7.O.[.3<.Pk|+000011a0  d9 7e 88 94 23 ae 98 9b  d6 16 b3 9d 63 b6 f5 e0  |.~..#....V..c...|+000011b0  79 47 d4 0a -- -- -- --  -- -- -- -- -- -- -- --  |yG.J------------|+Hello.pdf-+000011b0  -- -- -- -- 97 28 90 11  a6 50 55 95 61 73 52 d0  |----.(.Q.PU.asR.|+000011c0  eb 09 57 56 55 65 54 71  1e 6d 72 84 1a 7e 02 08  |.IWVUeTq^mr.Z~BH|+000011d0  fa 29 10 68 03 22 64 d8  e0 4a 14 f0 f7 60 3c 1b  |.)PhC"d..JT..`<[|+000011e0  e3 c1 eb c9 30 00 af c7  eb e1 38 43 f9 ec db 69  |....0@....8C...i|+000011f0  dc 9a 02 8e d4 13 f2 f3  6e 9c 8a b9 af e4 5e ce  |..B..S..n.....^.|+00001200  fd 9c c1 f3 b3 18 dd e7  f3 f9 82 cf 00 53 58 1e  |.....X......@SX^|+00001210  45 dd fe 6d bf ce f0 7f  d9 b4 1f e9 c1 94 74 93  |E..m...~.._...t.|+00001220  76 e1 67 77 3b 9d 14 99  fc af 2f 56 b5 7a b1 dc  |v.gw;.T.../V.z..|+00001230  c2 a7 aa 18 ea b4 cb dc  f3 13 59 84 eb 55 11 2b  |...X.....SY..UQ+|+00001240  97 6b 3a e5 bc 75 b8 b9  37 39 0e 37 1f 6e ee 95  |.k:..u..79N7_n..|+00001250  ec f4 38 7d 1e a7 a7 58  a7 2b 8b 90 71 e5 0b 55  |..8}^..X.+..q.KU|+00001260  1b 63 fb ee fc 42 4b 77  c3 ac 30 72 d0 47 f1 bf  |[c...BKw..0r.G..|+00001270  20 81 6e 36 4e 15 7c 6f  73 f8 d6 71 b7 3a f8 58  | .n6NU|os..q.:.X|+00001280  f4 1e 77 e6 c5 71 c6 58  96 3c ea dc 63 18 17 2c  |.^w..q.X.<..cXW,|+00001290  c7 bd c7 6f 0b 43 41 e7  6e e1 1e 9f b3 93 a3 8a  |...oKCA.n.^.....|+000012a0  a5 84 ac 5e bd 93 f3 d8  75 9e d3 cb d4 bb b2 51  |...^....u......Q|+000012b0  eb de d8 78 f5 83 46 d9  74 f5 2d ed 86 d6 2c ed  |...x..F.t.-...,.|+000012c0  9b ab 4e f6 af 51 f9 b5  cf f8 ad 51 4e 29 94 49  |..N..Q.....QN).I|+000012d0  79 46 04 3b 19 74 b0 81  08 69 ec 21 93 3d 65 e6  |yFD;Yt..Hi.!.=e.|+000012e0  f0 3b cf 42 89 0c ee a4  64 4a 37 47 a3 0e 86 17  |.;.B.L..dJ7G.N.W|+000012f0  91 e2 49 b1 a4 e6 e5 f6  eb 9f 62 13 5e 37 39 1d  |..I.......bS^79]|+00001300  94 97 9b 14 d3 53 78 3b  5b 62 f4 e9 57 3e 8b 7d  |...T.Sx;[b..W>.}|+00001310  e3 a5 60 43 c9 dc 3d 53  d5 65 75 54 b8 cf 1d b9  |..`C..=S.euT..].|+00001320  14 b6 ae 7d 78 c5 8b b1  5a f5 14 cb 17 fb 06 0c  |T..}x...Z.T.W.FL|+00001330  7c 2d 2b 4b 0c 14 c9 c2  2a 02 ea 93 c7 ca 5e 08  ||-+KLT..*B....^H|+00001340  cf 37 ea 72 8e eb 32 c5  d2 9e bd 76 8d 46 95 c8  |.7.r..2....v.F..|+00001350  b7 d8 88 ca a8 43 dc 71  8e 48 e7 53 9e 11 51 22  |.....C.q.H.S.QQ"|+00001360  c5 47 23 71 a5 5e 2f 52  bc 9d bb f4 75 7a fa 7a  |.G#q.^/R....uz.z|+00001370  b4 03 53 43 1f 9c 79 f6  15 f5 91 38 21 d6 df bf  |.CSC_.y.U..8!...|+00001380  f4 f1 43 6f e2 e2 1a a3  e6 1a ad e4 9c 47 71 ce  |..Co..Z..Z...Gq.|+00001390  09 d4 8e bc 81 64 4b 75  12 55 5b eb 93 36 a6 c5  |I....dKuRU[..6..|+000013a0  25 d9 f3 91 94 f2 b3 34  c7 85 e6 2b c6 2d fc fc  |%......4...+.-..|+000013b0  42 b3 e3 6c 2f d1 d9 92  e2 32 72 ec db a7 4b d7  |B..l/....2r...K.|+000013c0  dc 24 a7 43 f3 76 d6 9c  8e 24 ad b8 7a cd 9a ea  |.$.C.v...$..z...|+000013d0  d5 6b d6 ac 3e 73 a9 e5  ab 33 2d 2d 38 71 f4 48  |.k..>s...3--8q.H|+000013e0  d3 b1 63 4d 47 8e 6e 56  ef ab 4f d5 29 75 48 f8  |..cMG.nV..O.)uH.|+000013f0  f9 b3 d3 51 f4 34 fc 9a  ed da 52 f3 39 35 4e a7  |...Q.4....R.95N.|+00001400  3f 6e 92 c5 2c 7e 7e 6f  a6 89 cc 09 3e 3a 46 75  |?n..,~~o...I>:Fu|+00001410  2c c6 0b 72 e4 84 c9 63  a7 8c c8 1a 5b 34 7f 5e  |,.Kr...c...Z[4~^|+00001420  a9 7f 62 d1 9c c5 f3 66  2c 24 fa 17 20 2d 06 e4  |.~b....f,$.W -F.|+00001430  0a -- -- -- -- -- -- --  -- -- -- -- -- -- -- --  |J---------------|+Hello.pdf:endstream+Hello.pdf|endobj+Hello.pdf:14 0 obj+Hello.pdf|2734+Hello.pdf:endobj+Hello.pdf|15 0 obj+Hello.pdf-(Hello)+Hello.pdf:endobj+Hello.pdf|16 0 obj+Hello.pdf:(Mac OS X 10.12.6 Quartz PDFContext)+Hello.pdf:endobj+Hello.pdf|17 0 obj+Hello.pdf-(TextEdit)+Hello.pdf:endobj+Hello.pdf|18 0 obj+Hello.pdf-(D:20200124010711Z00'00')+Hello.pdf:endobj+Hello.pdf|19 0 obj+Hello.pdf-()+Hello.pdf:endobj+Hello.pdf|20 0 obj+Hello.pdf-[ ]+Hello.pdf:endobj+Hello.pdf|1 0 obj+Hello.pdf:<< /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate+Hello.pdf|18 0 R /Keywords 19 0 R /AAPL:Keywords 20 0 R >>+Hello.pdf:endobj+Hello.pdf|xref+Hello.pdf:0 21+Hello.pdf:0000000000 65535 f +Hello.pdf|0000005392 00000 n +Hello.pdf:0000000238 00000 n +Hello.pdf|0000001714 00000 n +Hello.pdf:0000000022 00000 n +Hello.pdf|0000000219 00000 n +Hello.pdf:0000000342 00000 n +Hello.pdf|0000001679 00000 n +Hello.pdf:0000001847 00000 n +Hello.pdf|0000000439 00000 n +Hello.pdf:0000001658 00000 n +Hello.pdf|0000001797 00000 n +Hello.pdf:0000002110 00000 n +Hello.pdf|0000002362 00000 n +Hello.pdf:0000005186 00000 n +Hello.pdf|0000005207 00000 n +Hello.pdf:0000005231 00000 n +Hello.pdf|0000005284 00000 n +Hello.pdf:0000005311 00000 n +Hello.pdf|0000005353 00000 n +Hello.pdf:0000005372 00000 n +Hello.pdf|trailer+Hello.pdf:<< /Size 21 /Root 11 0 R /Info 1 0 R /ID [ <8db88d3335070bd9583341583cf769a3>+Hello.pdf-<8db88d3335070bd9583341583cf769a3> ] >>+Hello.pdf:startxref+Hello.pdf|5536+Hello.pdf-%%EOF+Hello.sh:#!/bin/sh+Hello.sh|echo "Hello World!"

tests/out/Hello_wnhS-W-c.out

new file mode 100644@@ -0,0 +1,8 @@+Hello.bat:2+Hello.class:1+Hello.java:4+Hello.pdf:97+Hello.sh:2+Hello.txt:0+empty.txt:0+emptyline.txt:0

tests/out/Hello_wnhS-W-co.out

new file mode 100644@@ -0,0 +1,8 @@+Hello.bat:2+Hello.class:1+Hello.java:9+Hello.pdf:203+Hello.sh:2+Hello.txt:0+empty.txt:0+emptyline.txt:0

tests/out/Hello_wnhS-W-cv.out

new file mode 100644@@ -0,0 +1,8 @@+Hello.bat:0+Hello.class:6+Hello.java:3+Hello.pdf:37+Hello.sh:0+Hello.txt:0+empty.txt:0+emptyline.txt:1

tests/out/Hello_wnhS-W-l.out

new file mode 100644@@ -0,0 +1,5 @@+Hello.bat+Hello.class+Hello.java+Hello.pdf+Hello.sh

tests/out/Hello_wnhS-W-lv.out

new file mode 100644@@ -0,0 +1,3 @@+Hello.txt+empty.txt+emptyline.txt

tests/out/Hello_wnhS-W-n.out

new file mode 100644@@ -0,0 +1,260 @@+Hello.bat:1:#!/bin/sh+Hello.bat|2|echo "Hello World!"+Hello.class:5:+00000070  -- -- -- -- -- -- -- --  -- -- 48 65 6c 6c 6f 2e  |----------Hello.|+00000080  6a 61 76 61 0c 00 07 00  08 07 00 17 0c 00 18 00  |javaL@G@HG@WL@X@|+00000090  19 01 00 0c 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |YA@LHello World!|+000000a0  07 00 1a 0c 00 1b 00 1c  01 00 05 48 65 6c 6c 6f  |G@ZL@[@\A@EHello|+000000b0  01 00 10 6a 61 76 61 2f  6c 61 6e 67 2f 4f 62 6a  |A@Pjava/lang/Obj|+000000c0  65 63 74 01 00 10 6a 61  76 61 2f 6c 61 6e 67 2f  |ectA@Pjava/lang/|+000000d0  53 79 73 74 65 6d 01 00  03 6f 75 74 01 00 15 4c  |SystemA@CoutA@UL|+000000e0  6a 61 76 61 2f 69 6f 2f  50 72 69 6e 74 53 74 72  |java/io/PrintStr|+000000f0  65 61 6d 3b 01 00 13 6a  61 76 61 2f 69 6f 2f 50  |eam;A@Sjava/io/P|+00000100  72 69 6e 74 53 74 72 65  61 6d 01 00 07 70 72 69  |rintStreamA@Gpri|+00000110  6e 74 6c 6e 01 00 15 28  4c 6a 61 76 61 2f 6c 61  |ntlnA@U(Ljava/la|+00000120  6e 67 2f 53 74 72 69 6e  67 3b 29 56 00 21 00 05  |ng/String;)V@!@E|+00000130  00 06 00 00 00 00 00 02  00 01 00 07 00 08 00 01  |@F@@@@@B@A@G@H@A|+00000140  00 09 00 00 00 1d 00 01  00 01 00 00 00 05 2a b7  |@I@@@]@A@A@@@E*.|+00000150  00 01 b1 00 00 00 01 00  0a -- -- -- -- -- -- --  |@A.@@@A@J-------|+Hello.java:1:import java.lang.*;+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java|4|{ public static void main(String[] arg)+Hello.java:5:  { System.out.println("Hello World!");+Hello.pdf:1:+00000000  25 50 44 46 2d 31 2e 33  0a 25 c4 e5 f2 e5 eb a7  |%PDF-1.3J%......|+00000010  f3 a0 d0 c4 c6 0a -- --  -- -- -- -- -- -- -- --  |.....J----------|+Hello.pdf:3:4 0 obj+Hello.pdf|4|<< /Length 5 0 R /Filter /FlateDecode >>+Hello.pdf:5:+00000040  -- -- -- -- -- -- -- 73  74 72 65 61 6d 0a 78 01  |-------streamJxA|+00000050  45 8e bb 0a -- -- -- --  -- -- -- -- -- -- -- --  |E..J------------|+Hello.pdf:7:+00000050  -- -- -- -- 02 31 14 44  7b bf e2 94 5a 98 bd 89  |----B1TD{...Z...|+00000060  79 98 56 11 6c 17 2e f8  01 61 2d 64 d7 65 cd ff  |y.VQlW..Aa-d.e..|+00000070  83 17 2c ac 86 99 39 0c  b3 31 b2 51 02 b9 46 97  |.W,...9L.1.QB.F.|+00000080  e2 a9 12 f3 99 90 5c 4c  59 0a 9f 89 07 6f 86 6b  |..R...\LYJ..Go.k|+00000090  f7 b4 8e d0 9b e1 e2 6a  a9 52 6a b2 40 38 fe ad  |.......j.Rj.@8..|+000000a0  ed 94 20 bb b6 70 51 a3  44 c4 a3 0d ef 7f a0 69  |.. ..pQ.D..M.~.i|+000000b0  c2 0b ba 30 a8 7a ac 7c  b2 bf 4f f3 bc 1e d0 17  |.K.0.z.|..O..^.W|+000000c0  37 b5 37 e3 17 4e ff 20  a5 0a -- -- -- -- -- --  |7.7.WN. .J------|+Hello.pdf:9:endstream+Hello.pdf|10|endobj+Hello.pdf:11:5 0 obj+Hello.pdf|12|123+Hello.pdf:13:endobj+Hello.pdf|14|2 0 obj+Hello.pdf:15:<< /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]+Hello.pdf:17:endobj+Hello.pdf|18|6 0 obj+Hello.pdf:19:<< /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R >> /Font << /TT1 8 0 R+Hello.pdf:21:endobj+Hello.pdf|22|9 0 obj+Hello.pdf:23:<< /Length 10 0 R /N 1 /Alternate /DeviceGray /Filter /FlateDecode >>+Hello.pdf:24:+00000200  -- -- -- -- -- 73 74 72  65 61 6d 0a 78 01 85 55  |-----streamJxA.U|+00000210  5d 68 1c 55 14 3e bb 73  67 03 12 07 1f b4 0d 2d  |]h\UT>.sgCRG_.M-|+00000220  b4 83 3f 6d 09 e9 32 89  56 13 8b b5 db 4d ba 49  |..?mI.2.VS...M.I|+00000230  13 b7 eb 66 53 9b 2a ca  74 76 36 3b cd 64 66 9c  |S..fS.*.tv6;.df.|+00000240  99 dd 26 a1 4f a5 e0 9b  16 04 e9 ab a0 3e c6 82  |..&.O...VD...>..|+00000250  08 b6 2a 36 2f f6 a5 a5  c5 92 4a 35 0f 0a -- --  |H.*6/.....J5OJ--|+Hello.pdf:26:+00000250  -- -- -- -- -- -- -- --  -- -- -- -- -- -- 11 5a  |--------------QZ|+00000260  8c 20 28 7d 52 f0 3b 33  db 64 76 41 32 c3 9d f9  |. (}R.;3.dvA2...|+00000270  ee b9 e7 9e 7b ce 77 ee  b9 97 a8 eb 6f dd f3 ec  |....{.w.....o...|+00000280  b4 4a 34 e7 84 7e a1 9c  9b 3e 39 7d 4a ed ba 4d  |.J4..~...>9}J..M|+00000290  69 52 a8 9b f0 e8 46 e0  e5 4a a5 09 c6 8e eb 98  |iR....F..J.I....|+000002a0  fc 6f 7f 1e de a5 14 4b  ee ec 67 5b ed 63 5b f6  |.o~^..TK..g[.c[.|+000002b0  e4 aa 19 18 d0 ba 86 e6  56 03 63 8e 28 a5 11 65  |..YX....VCc.(.Qe|+000002c0  6a 86 e7 87 44 5d 97 20  1f 3c 1b 7a 8c 6f 03 3f  |j...D]. _<[z.oC?|+000002d0  39 5b 29 e7 81 d7 80 95  d6 5c 40 7a aa 60 3a a6  |9[)......\@z.`:.|+000002e0  6f 19 6a c1 d7 17 d4 92  ef d6 2c 3b e9 eb 56 e3  |oYj..W....,;..V.|+000002f0  6c 63 cb 67 ce 6e b0 af  fc ec 46 eb 0e 66 27 c7  |lc.g.n....F.Nf'.|+00000300  f1 ef 85 cf 17 4c 67 6a  12 78 1f f0 92 a1 8f 30  |....WLgjRx_....0|+00000310  ee 03 be db b4 4e 14 63  9c 4e 7b e1 91 72 ac 9f  |.C...NTc.N{..r..|+00000320  ce 36 66 a7 72 2d f9 c9  9a 7f 74 aa 25 bf 50 6f  |.6f.r-...~t.%.Po|+00000330  8c 32 ce 12 a5 97 16 eb  95 37 80 9f 00 5e 75 4e  |.2.R..V..7..@^uN|+00000340  17 8f b7 f4 d7 67 dd 71  b6 d3 43 24 f5 18 41 fe  |W....g.q..C$.XA.|+00000350  14 f0 b3 c0 5a dd 1c e3  3c a9 c0 15 df 2d b3 3e  |T...Z.\.<..U.-.>|+00000360  cb c3 aa 39 3c 02 fc 32  f0 25 2b 1c ab 00 c3 be  |...9<B.2.%+\.@..|+00000370  f4 43 d0 9c 64 39 b0 a0  c5 7a 9e fd c4 5a 22 7b  |.C..d9...z...Z"{|+00000380  46 3f 56 02 de 06 7c c8  b4 0b bc 16 ec 88 8a 17  |F?VB.F|..K.V...W|+00000390  96 d8 e6 20 f0 bc 63 17  79 2d c4 2e 2e 9b 41 14  |... ..cWy-....AT|+000003a0  2f 62 17 3f 85 f5 ca 68  ac 2f a7 43 bf c2 73 9f  |/bW?...h./.C..s.|+000003b0  26 92 f7 d4 ac a3 63 c0  e0 44 1e ad fb a3 2c 87  |&.....c..D^...,.|+000003c0  3f 72 e8 d9 d1 de 7a 11  78 c9 6f 94 39 f6 3d c0  |?r....zQx.o.9.=.|+000003d0  6b ba 3f 52 00 86 cd cc  63 55 7d 98 79 7e 01 78  |k.?R@...cU}.y~Ax|+000003e0  80 4e a4 74 32 c9 a5 d3  f8 1a e4 d0 bf 88 37 20  |.N.t2....Z....7 |+000003f0  8b 9a 11 f2 c8 c7 58 0d  7d 9b 0a -- -- -- -- --  |..Q...XM}.J-----|+Hello.pdf:30:+00000640  -- -- -- -- 54 df 0c 4c  bf 69 56 b3 c4 77 37 cf  |----T.LL.iV..w7.|+00000650  23 fa eb f5 e8 4e 4e 6d  bb 61 34 fc 66 2c a3 54  |#....NNm.a4.f,.T|+00000660  ea 26 d1 7f b7 8f 93 34  0a 65 6e 64 73 74 72 65  |.&.~...4Jendstre|+00000670  61 6d 0a -- -- -- -- --  -- -- -- -- -- -- -- --  |amJ-------------|+Hello.pdf:32:endobj+Hello.pdf|33|10 0 obj+Hello.pdf:34:1116+Hello.pdf|35|endobj+Hello.pdf:36:7 0 obj+Hello.pdf|37|[ /ICCBased 9 0 R ]+Hello.pdf:38:endobj+Hello.pdf|39|3 0 obj+Hello.pdf:40:<< /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 2 0 R ] >>+Hello.pdf:41:endobj+Hello.pdf|42|11 0 obj+Hello.pdf:43:<< /Type /Catalog /Pages 3 0 R >>+Hello.pdf:44:endobj+Hello.pdf|45|8 0 obj+Hello.pdf:46:<< /Type /Font /Subtype /TrueType /BaseFont /GQTMZF+Menlo-Regular /FontDescriptor+Hello.pdf|47|12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602+Hello.pdf|48|0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602+Hello.pdf|49|0 0 602 ] >>+Hello.pdf:50:endobj+Hello.pdf|51|12 0 obj+Hello.pdf:52:<< /Type /FontDescriptor /FontName /GQTMZF+Menlo-Regular /Flags 33 /FontBBox+Hello.pdf|53|[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729+Hello.pdf:54:/StemV 99 /XHeight 547 /StemH 83 /AvgWidth 602 /MaxWidth 602 /FontFile2 13 0 R+Hello.pdf:56:endobj+Hello.pdf|57|13 0 obj+Hello.pdf:58:<< /Length 14 0 R /Length1 4064 /Filter /FlateDecode >>+Hello.pdf:59:+00000970  -- -- -- -- -- -- -- --  -- -- -- 73 74 72 65 61  |-----------strea|+00000980  6d 0a 78 01 dd 57 7b 78  54 c5 15 3f 73 7f 77 36  |mJxA.W{xT.U?s~w6|+00000990  af cd 3e 92 4d 48 48 80  5d d6 e5 95 2c 81 84 b7  |..>.MHH.]...,...|+000009a0  52 16 48 78 88 20 2f eb  2e 88 f2 48 20 28 21 08  |RVHx. /....H (!H|+000009b0  41 b4 31 90 4a 51 09 c1  40 85 08 48 7d 15 51 a9  |A.1.JQI.@.HH}UQ.|+000009c0  b5 2b 45 5d 09 c4 54 a4  62 23 45 84 a0 02 0a --  |.+E]I.T.b#E..BJ-|+Hello.pdf:61:+000009c0  -- -- -- -- -- -- -- --  -- -- -- -- -- -- -- f8  |---------------.|+000009d0  a2 68 8a 14 21 d8 00 43  cf bd 1b fd 3e ed d7 ef  |.h.T!.@C..[.>...|+000009e0  eb bf ed dc 9d 33 e7 fc  e6 cc 79 dd bb f7 ce 94  |.....3....y.....|+000009f0  2d 5c 5c 44 56 aa 24 50  60 56 c9 8c 05 64 36 eb  |-\\DV.$P`V..Ed6.|+00000a00  49 1e 8a 67 dd 53 e6 36  45 8a bd 97 48 cb 9d bd  |I^.g.S.6E...H...|+00000a10  60 4e 49 54 8e 7f 91 e5  4e 73 e6 dd 37 3b 2a 27  |`NIT.~..Ns..7;*'|+00000a20  4e 66 79 40 71 d1 8c c2  a8 4c 57 78 ec 57 cc 40  |Nfy@q....LWx.W.@|+00000a30  54 16 7d 78 bc ae b8 a4  8c ed 18 cd fa 2e 13 d7  |TV}x......X...S.|+00000a40  bc d2 59 6d f3 89 a3 0c  b0 64 c6 bd 6d fe e9 38  |..Ym...L.d..m..8|+00000a50  cb ee f9 33 4a 8a 78 e4  66 8f 30 e9 b6 a0 74 51  |...3J.x.f.0...tQ|+00000a60  99 29 92 bd 9a c7 ec 05  0b 8b da f4 45 90 28 a6  |.).....EK...E.(.|+00000a70  53 74 ae 8d 1a 96 05 77  a9 59 29 8b ee 22 0b 69  |St..Z.Ew.Y).."Ki|+00000a80  e4 a0 8d 94 c4 d0 ad ac  2b 79 d6 98 d7 62 b2 96  |........+y...b..|+00000a90  3e 7d f6 8d 3b ec 37 5c  a4 4e b1 e6 e2 bd 65 e9  |>}..;.7\.N....e.|+00000aa0  79 06 73 28 b8 a4 df e5  95 57 85 ac 8f bd 85 c5  |yFs(.....W......|+00000ab0  e8 a4 31 c1 eb 62 4a 54  07 22 fd e0 e5 95 d7 92  |..1..bJTG"......|+00000ac0  65 bd 69 c9 98 f9 be c9  08 c5 66 bd ae 55 8a 94  |e.i.....H.f..U..|+00000ad0  ed eb a6 c9 a1 99 22 85  6a 09 4c 2b 49 17 2e 52  |......".jIL+IW.R|+00000ae0  cc 27 9b 34 89 03 82 70  9a bc c3 a4 76 da c4 88  |.'.4.C.p....v...|+00000af0  cd e4 13 b7 7f 3d 52 0e  f5 89 44 aa 60 cc 4a 3e  |..S.~=RN..D.`.J>|+00000b00  a6 09 94 cb 34 de b4 17  67 6a c5 92 8d 91 18 93  |.I..4..Wgj....X.|+00000b10  b7 98 3a d2 e4 75 13 87  89 68 26 22 02 21 05 a5  |..:..uS..h&"B!E.|+00000b20  70 b5 02 57 14 2e 2b b4  e6 e2 9f 75 f8 ae 02 97  |p.BWT.+....u..B.|+00000b30  5a aa e5 25 85 4b 0d 7a  cb c5 90 6c a9 46 4b a5  |Z..%.KMz...l.FK.|+00000b40  7e f1 42 17 79 31 84 8b  01 fd 42 17 7c 7b 3e 47  |~.BWy1..A.BW|{>G|+00000b50  7e db 8a f3 39 f8 87 c2  39 85 6f 72 71 d6 85 bf  |~...9...9.orq...|+00000b60  d7 a2 99 43 6c 56 68 8e  5c 3b 18 b8 a6 7f 3d 12  |...ClVh.\;X..~=R|+00000b70  5f 9d 29 94 5f d5 e2 4c  21 fe a6 70 fa cb 0c 79  |_.)._..L!..p..Ly|+00000b80  5a e1 cb 0c 7c a1 f0 f9  5d f8 4c e1 d3 3a 9c 3a  |Z..L|...].L..:.:|+00000b90  99 2e 4f b5 e2 64 3a 4e  d4 e2 13 85 8f 15 8e 1f  |..O..d:N..S..U._|+00000ba0  4b 91 c7 15 8e a5 e0 68  2d 3e fa 30 45 7e a4 f0  |K..U...h->.0E~..|+00000bb0  e1 ea 04 f9 61 0a 3e a8  c0 91 41 68 62 a1 69 10  |..D.aJ>...Ahb.iP|+00000bc0  0e 2b 1c 7a 3f 5e 1e 52  78 3f 1e 07 15 de 53 38  |N+\z?^^Rx?^GU.S8|+00000bd0  50 e5 94 07 32 f1 d7 54  ec 57 78 b7 16 8d ab 7c  |P..G2..T.Wx.V..||+00000be0  b2 51 e1 2f -- -- -- --  -- -- -- -- -- -- -- --  |.Q./------------|+Hello.pdf:62:+Hello.pdf:66:+00000c70  -- -- -- -- f1 e4 13 0e  f9 64 3a 9e 70 e0 37 f1  |----..SN.d:.p.7.|+00000c80  d8 ac f0 38 3b 79 5c 61  53 22 36 6e e8 29 37 2a  |...8;y\aS"6n.)7*|+00000c90  6c e8 89 c7 d8 ff 63 b5  a8 5d 5f 27 6b 15 d6 f3  |l.....c..]_'kU..|+00000ca0  b3 b5 be 0e eb 2b f5 75  6b 7c 72 dd 34 ac 0b e8  |...N.+.uk|r.4.K.|+00000cb0  8f 2a fc 5a 61 2d cb 6b  eb b0 c6 87 1a 2e 46 cd  |.*.Za-.k....Z.F.|+00000cc0  50 3c c2 d9 3e e2 c2 ea  04 54 33 50 5d 88 55 5c  |P<..>...DT3P].U\|+00000cd0  b4 55 3e 54 39 b1 52 e1  61 85 87 14 1e 5c e1 94  |.U>T9.R.a..T^\..|+00000ce0  0f 2a ac 70 e2 57 0a cb  15 1e 70 0e 93 0f 4c c2  |O*.p.WJ.U^pN.OL.|+00000cf0  2f 15 2a ef c5 b2 a5 15  72 99 c2 d2 0a -- -- --  |/U*....Ur...J---|+Hello.pdf:70:+00000d00  -- -- -- -- -- -- -- --  -- -- -- 8b cb ac 72 b1  |-----------...r.|+00000d10  1d 8b 23 82 02 47 f5 32  2b ca 1a f4 45 49 58 14  |].#.BG.2+.Z.EIXT|+00000d20  d0 17 2a dc ad b0 40 a1  74 fe 24 59 5a 8b f9 25  |.W*...@.t.$YZ..%|+00000d30  dd e4 fc 49 28 e9 86 79  0a 77 e5 e2 4e 85 b9 b9  |...I(..yJw..N...|+00000d40  28 6e c5 9c 3a cc 56 28  52 28 54 98 35 b3 a3 9c  |(n..:.V(R(T.5...|+00000d50  a5 30 93 1c 72 66 47 cc  50 98 ae 70 87 c2 ed 53  |.0.\rfG.P..p...S|+00000d60  12 e4 ed 36 4c 2b c4 6d  fb 30 95 85 a9 2e 4c 49  |R..6L+.m.0....LI|+00000d70  00 3f d1 41 17 6e 55 f8  b9 c2 2d 19 e9 f2 96 5c  |@?.AWnU...-Y...\|+00000d80  4c 56 98 a4 30 51 61 42  05 c6 2b dc ec c2 38 85  |LV..0QaBE.+...8.|+00000d90  b1 c2 2f c7 2a dc 54 87  31 dd 70 e3 e8 34 79 63  |../.*.T.1.p..4yc|+00000da0  7f 8c 1e 9e 24 47 a7 61  54 41 9a 1c a5 30 92 a5  |~.^.$G.aTA.\.0..|+00000db0  91 85 18 c1 d2 88 3a 14  a4 21 9f 81 fc fe 18 3e  |..X...:T.!....X>|+00000dc0  cc 29 87 27 61 78 44 0b  04 e2 f4 61 43 ed 72 98  |.).'axDKD..aC.r.|+00000dd0  13 c3 22 1a b1 34 34 60  93 43 ed 18 1a 11 0d 2c  |S."Z.44`.C.XZQM,|+00000de0  05 86 58 65 c0 86 40 44  54 b2 34 c4 1a 27 87 58  |E.Xe..@DT.4.Z'.X|+00000df0  31 24 22 02 81 42 fd 67  0a 83 39 84 c1 ad b8 41  |1$"B.B.gJ.9....A|+00000e00  e1 fa 6e 18 a4 30 90 0b  3c b0 10 03 7a b7 97 03  |..nX.0.K<.PCz..C|+00000e10  c6 a0 bf 42 3f bf 4b f6  53 e8 3b 06 7d 7a b5 97  |...B?.K.S.;F}z..|+00000e20  7d c6 20 8f 87 3c 85 5c  56 cc 55 e8 cd d3 bd db  |}. ..<.\V.U.....|+00000e30  a3 57 7b e4 30 97 93 86  9e 71 a9 b2 67 1d fc d9  |.W{.0....q..g]..|+00000e40  c9 d2 ef 82 3f a2 19 6e  b3 1d 4e 99 9d 8c 6c 23  |....?.Yn.]N...l#|+00000e50  dc 5a 3d ab 87 4f 66 29  f4 60 cd 1e 3e 74 d7 06  |.Z=..Of).`.^>t.F|+00000e60  c9 ee 0a -- -- -- -- --  -- -- -- -- -- -- -- --  |..J-------------|+Hello.pdf:74:+00000e60  -- -- -- -- -- -- -- --  -- -- -- -- -- -- -- 70  |---------------p|+00000e70  9d 1d 5e 85 ce 76 bb ec  ac e0 71 fb a5 a7 02 6e  |.]^..v....q...Bn|+00000e80  3f 3a 8d 41 47 f6 dc 51  a1 83 42 26 d7 36 53 21  |?:.AG..Q..B&.6S!|+00000e90  83 ef 4a 46 3a da 2b a4  2b a4 29 b4 63 0b ed 46  |..JF:.+.+.).cK.F|+00000ea0  20 35 c5 2f 53 87 21 c5  e5 90 29 7e b8 1c 48 66  | 5./S.!...)~.\Hf|+00000eb0  bd 64 17 92 78 7d 92 82  93 33 77 0e 83 83 3d 38  |.dW.x}...3wN..=8|+00000ec0  9c 70 44 6b 67 b7 59 a5  dd 0e 7b b4 76 b6 c4 78  |.pDkg.Y..N{.v..x|+00000ed0  69 b3 c2 16 ad 5d 22 d7  2e 31 1e 89 5c bb 1d ba  |i..V.]"..1^.\.].|+00000ee0  35 0e 56 e3 d9 ea af 27  28 c4 73 26 f1 0a -- --  |5NV....'(.s&.J--|+Hello.pdf:75:+00000ee0  -- -- -- -- -- -- -- --  -- -- -- -- -- -- 71 a9  |--------------q.|+00000ef0  88 75 20 46 c1 c2 a6 2d  0a -- -- -- -- -- -- --  |.u F...-J-------|+Hello.pdf:79:endstream+Hello.pdf|80|endobj+Hello.pdf:81:14 0 obj+Hello.pdf|82|2734+Hello.pdf:83:endobj+Hello.pdf|84|15 0 obj+Hello.pdf:86:endobj+Hello.pdf|87|16 0 obj+Hello.pdf:88:(Mac OS X 10.12.6 Quartz PDFContext)+Hello.pdf:89:endobj+Hello.pdf|90|17 0 obj+Hello.pdf:92:endobj+Hello.pdf|93|18 0 obj+Hello.pdf:95:endobj+Hello.pdf|96|19 0 obj+Hello.pdf:98:endobj+Hello.pdf|99|20 0 obj+Hello.pdf:101:endobj+Hello.pdf|102|1 0 obj+Hello.pdf:103:<< /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate+Hello.pdf|104|18 0 R /Keywords 19 0 R /AAPL:Keywords 20 0 R >>+Hello.pdf:105:endobj+Hello.pdf|106|xref+Hello.pdf:107:0 21+Hello.pdf:108:0000000000 65535 f +Hello.pdf|109|0000005392 00000 n +Hello.pdf:110:0000000238 00000 n +Hello.pdf|111|0000001714 00000 n +Hello.pdf:112:0000000022 00000 n +Hello.pdf|113|0000000219 00000 n +Hello.pdf:114:0000000342 00000 n +Hello.pdf|115|0000001679 00000 n +Hello.pdf:116:0000001847 00000 n +Hello.pdf|117|0000000439 00000 n +Hello.pdf:118:0000001658 00000 n +Hello.pdf|119|0000001797 00000 n +Hello.pdf:120:0000002110 00000 n +Hello.pdf|121|0000002362 00000 n +Hello.pdf:122:0000005186 00000 n +Hello.pdf|123|0000005207 00000 n +Hello.pdf:124:0000005231 00000 n +Hello.pdf|125|0000005284 00000 n +Hello.pdf:126:0000005311 00000 n +Hello.pdf|127|0000005353 00000 n +Hello.pdf:128:0000005372 00000 n +Hello.pdf|129|trailer+Hello.pdf:130:<< /Size 21 /Root 11 0 R /Info 1 0 R /ID [ <8db88d3335070bd9583341583cf769a3>+Hello.pdf:132:startxref+Hello.pdf|133|5536+Hello.sh:1:#!/bin/sh+Hello.sh|2|echo "Hello World!"

tests/out/Hello_wnhS-W-nC2.out

new file mode 100644@@ -0,0 +1,445 @@+Hello.bat:1:#!/bin/sh+Hello.bat|2|echo "Hello World!"+Hello.class-3-+00000010  -- -- -- -- -- -- -- --  00 13 00 14 07 00 15 07  |--------@S@TG@UG|+00000020  00 16 01 00 06 3c 69 6e  69 74 3e 01 00 03 28 29  |@VA@F<init>A@C()|+00000030  56 01 00 04 43 6f 64 65  01 00 0f 4c 69 6e 65 4e  |VA@DCodeA@OLineN|+00000040  75 6d 62 65 72 54 61 62  6c 65 01 00 04 6d 61 69  |umberTableA@Dmai|+00000050  6e 01 00 16 28 5b 4c 6a  61 76 61 2f 6c 61 6e 67  |nA@V([Ljava/lang|+00000060  2f 53 74 72 69 6e 67 3b  29 56 01 00 0a -- -- --  |/String;)VA@J---|+Hello.class-4-+00000060  -- -- -- -- -- -- -- --  -- -- -- -- -- 53 6f 75  |-------------Sou|+00000070  72 63 65 46 69 6c 65 01  00 0a -- -- -- -- -- --  |rceFileA@J------|+Hello.class:5:+00000070  -- -- -- -- -- -- -- --  -- -- 48 65 6c 6c 6f 2e  |----------Hello.|+00000080  6a 61 76 61 0c 00 07 00  08 07 00 17 0c 00 18 00  |javaL@G@HG@WL@X@|+00000090  19 01 00 0c 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |YA@LHello World!|+000000a0  07 00 1a 0c 00 1b 00 1c  01 00 05 48 65 6c 6c 6f  |G@ZL@[@\A@EHello|+000000b0  01 00 10 6a 61 76 61 2f  6c 61 6e 67 2f 4f 62 6a  |A@Pjava/lang/Obj|+000000c0  65 63 74 01 00 10 6a 61  76 61 2f 6c 61 6e 67 2f  |ectA@Pjava/lang/|+000000d0  53 79 73 74 65 6d 01 00  03 6f 75 74 01 00 15 4c  |SystemA@CoutA@UL|+000000e0  6a 61 76 61 2f 69 6f 2f  50 72 69 6e 74 53 74 72  |java/io/PrintStr|+000000f0  65 61 6d 3b 01 00 13 6a  61 76 61 2f 69 6f 2f 50  |eam;A@Sjava/io/P|+00000100  72 69 6e 74 53 74 72 65  61 6d 01 00 07 70 72 69  |rintStreamA@Gpri|+00000110  6e 74 6c 6e 01 00 15 28  4c 6a 61 76 61 2f 6c 61  |ntlnA@U(Ljava/la|+00000120  6e 67 2f 53 74 72 69 6e  67 3b 29 56 00 21 00 05  |ng/String;)V@!@E|+00000130  00 06 00 00 00 00 00 02  00 01 00 07 00 08 00 01  |@F@@@@@B@A@G@H@A|+00000140  00 09 00 00 00 1d 00 01  00 01 00 00 00 05 2a b7  |@I@@@]@A@A@@@E*.|+00000150  00 01 b1 00 00 00 01 00  0a -- -- -- -- -- -- --  |@A.@@@A@J-------|+Hello.class-6-+00000150  -- -- -- -- -- -- -- --  -- 00 00 00 06 00 01 00  |---------@@@F@A@|+00000160  00 00 03 00 09 00 0b 00  0c 00 01 00 09 00 00 00  |@@C@I@K@L@A@I@@@|+00000170  25 00 02 00 01 00 00 00  09 b2 00 02 12 03 b6 00  |%@B@A@@@I.@BRC.@|+00000180  04 b1 00 00 00 01 00 0a  -- -- -- -- -- -- -- --  |D.@@@A@J--------|+Hello.class-7-+00000180  -- -- -- -- -- -- -- --  00 00 00 0a -- -- -- --  |--------@@@J----|+Hello.java:1:import java.lang.*;+Hello.java-2-+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java|4|{ public static void main(String[] arg)+Hello.java:5:  { System.out.println("Hello World!");+Hello.java-6-  }+Hello.java-7-}+Hello.pdf:1:+00000000  25 50 44 46 2d 31 2e 33  0a 25 c4 e5 f2 e5 eb a7  |%PDF-1.3J%......|+00000010  f3 a0 d0 c4 c6 0a -- --  -- -- -- -- -- -- -- --  |.....J----------|+Hello.pdf:3:4 0 obj+Hello.pdf|4|<< /Length 5 0 R /Filter /FlateDecode >>+Hello.pdf:5:+00000040  -- -- -- -- -- -- -- 73  74 72 65 61 6d 0a 78 01  |-------streamJxA|+00000050  45 8e bb 0a -- -- -- --  -- -- -- -- -- -- -- --  |E..J------------|+Hello.pdf:7:+00000050  -- -- -- -- 02 31 14 44  7b bf e2 94 5a 98 bd 89  |----B1TD{...Z...|+00000060  79 98 56 11 6c 17 2e f8  01 61 2d 64 d7 65 cd ff  |y.VQlW..Aa-d.e..|+00000070  83 17 2c ac 86 99 39 0c  b3 31 b2 51 02 b9 46 97  |.W,...9L.1.QB.F.|+00000080  e2 a9 12 f3 99 90 5c 4c  59 0a 9f 89 07 6f 86 6b  |..R...\LYJ..Go.k|+00000090  f7 b4 8e d0 9b e1 e2 6a  a9 52 6a b2 40 38 fe ad  |.......j.Rj.@8..|+000000a0  ed 94 20 bb b6 70 51 a3  44 c4 a3 0d ef 7f a0 69  |.. ..pQ.D..M.~.i|+000000b0  c2 0b ba 30 a8 7a ac 7c  b2 bf 4f f3 bc 1e d0 17  |.K.0.z.|..O..^.W|+000000c0  37 b5 37 e3 17 4e ff 20  a5 0a -- -- -- -- -- --  |7.7.WN. .J------|+Hello.pdf:9:endstream+Hello.pdf|10|endobj+Hello.pdf:11:5 0 obj+Hello.pdf|12|123+Hello.pdf:13:endobj+Hello.pdf|14|2 0 obj+Hello.pdf:15:<< /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]+Hello.pdf-16->>+Hello.pdf:17:endobj+Hello.pdf|18|6 0 obj+Hello.pdf:19:<< /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R >> /Font << /TT1 8 0 R+Hello.pdf-20->> >>+Hello.pdf:21:endobj+Hello.pdf|22|9 0 obj+Hello.pdf:23:<< /Length 10 0 R /N 1 /Alternate /DeviceGray /Filter /FlateDecode >>+Hello.pdf:24:+00000200  -- -- -- -- -- 73 74 72  65 61 6d 0a 78 01 85 55  |-----streamJxA.U|+00000210  5d 68 1c 55 14 3e bb 73  67 03 12 07 1f b4 0d 2d  |]h\UT>.sgCRG_.M-|+00000220  b4 83 3f 6d 09 e9 32 89  56 13 8b b5 db 4d ba 49  |..?mI.2.VS...M.I|+00000230  13 b7 eb 66 53 9b 2a ca  74 76 36 3b cd 64 66 9c  |S..fS.*.tv6;.df.|+00000240  99 dd 26 a1 4f a5 e0 9b  16 04 e9 ab a0 3e c6 82  |..&.O...VD...>..|+00000250  08 b6 2a 36 2f f6 a5 a5  c5 92 4a 35 0f 0a -- --  |H.*6/.....J5OJ--|+Hello.pdf:26:+00000250  -- -- -- -- -- -- -- --  -- -- -- -- -- -- 11 5a  |--------------QZ|+00000260  8c 20 28 7d 52 f0 3b 33  db 64 76 41 32 c3 9d f9  |. (}R.;3.dvA2...|+00000270  ee b9 e7 9e 7b ce 77 ee  b9 97 a8 eb 6f dd f3 ec  |....{.w.....o...|+00000280  b4 4a 34 e7 84 7e a1 9c  9b 3e 39 7d 4a ed ba 4d  |.J4..~...>9}J..M|+00000290  69 52 a8 9b f0 e8 46 e0  e5 4a a5 09 c6 8e eb 98  |iR....F..J.I....|+000002a0  fc 6f 7f 1e de a5 14 4b  ee ec 67 5b ed 63 5b f6  |.o~^..TK..g[.c[.|+000002b0  e4 aa 19 18 d0 ba 86 e6  56 03 63 8e 28 a5 11 65  |..YX....VCc.(.Qe|+000002c0  6a 86 e7 87 44 5d 97 20  1f 3c 1b 7a 8c 6f 03 3f  |j...D]. _<[z.oC?|+000002d0  39 5b 29 e7 81 d7 80 95  d6 5c 40 7a aa 60 3a a6  |9[)......\@z.`:.|+000002e0  6f 19 6a c1 d7 17 d4 92  ef d6 2c 3b e9 eb 56 e3  |oYj..W....,;..V.|+000002f0  6c 63 cb 67 ce 6e b0 af  fc ec 46 eb 0e 66 27 c7  |lc.g.n....F.Nf'.|+00000300  f1 ef 85 cf 17 4c 67 6a  12 78 1f f0 92 a1 8f 30  |....WLgjRx_....0|+00000310  ee 03 be db b4 4e 14 63  9c 4e 7b e1 91 72 ac 9f  |.C...NTc.N{..r..|+00000320  ce 36 66 a7 72 2d f9 c9  9a 7f 74 aa 25 bf 50 6f  |.6f.r-...~t.%.Po|+00000330  8c 32 ce 12 a5 97 16 eb  95 37 80 9f 00 5e 75 4e  |.2.R..V..7..@^uN|+00000340  17 8f b7 f4 d7 67 dd 71  b6 d3 43 24 f5 18 41 fe  |W....g.q..C$.XA.|+00000350  14 f0 b3 c0 5a dd 1c e3  3c a9 c0 15 df 2d b3 3e  |T...Z.\.<..U.-.>|+00000360  cb c3 aa 39 3c 02 fc 32  f0 25 2b 1c ab 00 c3 be  |...9<B.2.%+\.@..|+00000370  f4 43 d0 9c 64 39 b0 a0  c5 7a 9e fd c4 5a 22 7b  |.C..d9...z...Z"{|+00000380  46 3f 56 02 de 06 7c c8  b4 0b bc 16 ec 88 8a 17  |F?VB.F|..K.V...W|+00000390  96 d8 e6 20 f0 bc 63 17  79 2d c4 2e 2e 9b 41 14  |... ..cWy-....AT|+000003a0  2f 62 17 3f 85 f5 ca 68  ac 2f a7 43 bf c2 73 9f  |/bW?...h./.C..s.|+000003b0  26 92 f7 d4 ac a3 63 c0  e0 44 1e ad fb a3 2c 87  |&.....c..D^...,.|+000003c0  3f 72 e8 d9 d1 de 7a 11  78 c9 6f 94 39 f6 3d c0  |?r....zQx.o.9.=.|+000003d0  6b ba 3f 52 00 86 cd cc  63 55 7d 98 79 7e 01 78  |k.?R@...cU}.y~Ax|+000003e0  80 4e a4 74 32 c9 a5 d3  f8 1a e4 d0 bf 88 37 20  |.N.t2....Z....7 |+000003f0  8b 9a 11 f2 c8 c7 58 0d  7d 9b 0a -- -- -- -- --  |..Q...XM}.J-----|+Hello.pdf-27-+000003f0  -- -- -- -- -- -- -- --  -- -- -- d0 70 d0 7c f4  |-----------.p.|.|+00000400  0c 68 15 80 74 5a 00 2a  25 b4 4c f4 58 27 9e a3  |LhU.tZ@*%.L.X'..|+00000410  52 15 3d 95 66 a2 59 41  84 d8 ca fd a8 6f 50 7e  |RU=.f.YA.....oP~|+00000420  d7 a7 d4 80 b4 4e eb 90  d6 81 5e a3 5f 22 c9 3c  |.....N....^._".<|+00000430  fd 4a 73 e8 e7 21 6d 60  6c a6 c3 6e 1e 5e 38 b4  |.Js..!m`l..n^^8.|+00000440  08 0f d8 13 b6 f9 a0 65  d3 15 db 85 26 9e 47 3b  |HO.S...e.U..&.G;|+00000450  28 26 c4 2b 62 50 0c 91  2a 5e 15 87 c5 21 31 0c  |(&.+bPL.*^U..!1L|+00000460  e9 90 38 18 cd 89 bd 4f  fa ce 7e 3e d8 b0 f4 2e  |..8X...O..~>....|+00000470  d6 4d fa be 0c 0e 42 ac  67 c3 33 07 ac 70 34 01  |.M..LNB.g.3G.p4A|+00000480  3c f8 07 eb ce 46 9a 09  b6 2e ee 68 ec f3 bc 8f  |<.G..F.I...h....|+00000490  de 3f ef bf 63 19 b7 3e  f8 b3 8d bd 00 fa 31 27  |.?..cY.>....@.1'|+000004a0  bf c1 a2 0b 6b 26 25 e6  5e 3f f7 4d 4f c2 43 75  |...Kk&%.^?.MO.Cu|+000004b0  45 7c f5 d6 9d ee eb e7  e8 78 32 4b 51 de aa 9d  |E|.......x2KQ...|+000004c0  59 92 d7 e4 fb f2 0a --  -- -- -- -- -- -- -- --  |Y.....J---------|+Hello.pdf-28-+000004c0  -- -- -- -- -- -- -- be  f7 e4 d5 a4 0d f9 67 79  |-------.....M.gy|+000004d0  15 ef bd b6 5c 3d ca 0b  ff 93 b9 cd 21 46 3b 92  |U...\=.K....!F;.|+000004e0  cd 41 ce 3c 9b 51 b4 71  c6 1b c0 21 b8 a9 45 73  |.A.<.Q.q.[.!..Es|+000004f0  f6 b7 59 4c b2 e9 b6 62  b4 60 c9 42 94 9d ab b8  |..YL...b.`.B....|+00000500  ff cb 09 f3 c3 3c b7 b1  52 73 2e ee f0 bc b7 3f  |..I..<..Rs.....?|+00000510  63 36 cd f7 8a 0f 8b 74  be 4f bb ac ad 6b 9f 68  |c6...O.t.O...k.h|+00000520  3f 6a 7f 68 2b da c7 40  bf 4b 1f 4a 5f 4a df 4a  |?j~h+..@.K_J_J.J|+00000530  57 a4 ab d2 0d 52 a5 6b  d2 b2 f4 9d f4 bd f4 b9  |W...MR.k........|+00000540  f4 35 7a 5f 40 ba 2c 5d  e9 d8 49 71 ec 1b bb 07  |.5z_@.,]..Iq.[.G|+00000550  7e c6 7b d6 68 ed 30 66  86 b3 14 10 f3 c2 da cc  |~.{.h.0f..TP....|+00000560  0a -- -- -- -- -- -- --  -- -- -- -- -- -- -- --  |J---------------|+Hello.pdf-29-+00000560  -- 4b 1f f1 77 06 63 9b  f9 33 a1 d5 5e 03 9d bb  |-K_.wFc..3..^C..|+00000570  7f 63 2d e5 88 b2 53 79  46 19 56 76 2b cf 29 13  |~c-...SyFYVv+.)S|+00000580  4a af 72 40 39 ac 6c 57  06 d0 fa 95 51 65 2f 46  |J.r@9.lWF...Qe/F|+00000590  76 6e b0 64 63 3d ce 80  85 7f 92 67 8b a6 23 ae  |vn.dc=...~.g..#.|+000005a0  e2 3c b1 57 75 b0 e7 c3  4b 1d ef a6 5f 5c c3 d6  |.<.Wu...K].._\..|+000005b0  86 35 d8 49 3d 0e 9e d9  da a6 0e af 11 57 bf 15  |.5.I=N....N.QW.U|+000005c0  55 63 bc 3b 5d 9c 06 3a  4d 21 62 8b ce 22 72 1f  |Uc.;].F:M!b.."r_|+000005d0  3a 9c 1f 27 aa fe ce d9  5c 93 38 35 52 6f e2 94  |:._'....\.85Ro..|+000005e0  b0 c4 2e d1 2f c6 5a 35  98 13 07 50 85 e3 6d f5  |..../.Z5.SGP..m.|+000005f0  38 c8 55 9a 19 c9 0c 67  72 a4 66 7a 33 43 99 fe  |8.U.Y.Lgr.fz3C..|+00000600  cc 31 c6 51 ac d1 f9 92  d9 8b d1 21 7c 47 12 de  |.1.Q.......!|GR.|+00000610  33 cb 31 ff 9b 35 c4 67  18 ef 1d e6 a8 09 6c a3  |3.1..5.gX.]..Il.|+00000620  87 5b 2b 34 e7 71 df 11  e5 5d 6f c1 b7 66 ea a1  |.[+4.q.Q.]o..f..|+00000630  3a a0 69 2f a9 39 5c af  a6 3a e6 18 d9 3e 55 b7  |:.i/.9\..:.X.>U.|+00000640  6d 35 1a 0a -- -- -- --  -- -- -- -- -- -- -- --  |m5ZJ------------|+Hello.pdf:30:+00000640  -- -- -- -- 54 df 0c 4c  bf 69 56 b3 c4 77 37 cf  |----T.LL.iV..w7.|+00000650  23 fa eb f5 e8 4e 4e 6d  bb 61 34 fc 66 2c a3 54  |#....NNm.a4.f,.T|+00000660  ea 26 d1 7f b7 8f 93 34  0a 65 6e 64 73 74 72 65  |.&.~...4Jendstre|+00000670  61 6d 0a -- -- -- -- --  -- -- -- -- -- -- -- --  |amJ-------------|+Hello.pdf:32:endobj+Hello.pdf|33|10 0 obj+Hello.pdf:34:1116+Hello.pdf|35|endobj+Hello.pdf:36:7 0 obj+Hello.pdf|37|[ /ICCBased 9 0 R ]+Hello.pdf:38:endobj+Hello.pdf|39|3 0 obj+Hello.pdf:40:<< /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 2 0 R ] >>+Hello.pdf:41:endobj+Hello.pdf|42|11 0 obj+Hello.pdf:43:<< /Type /Catalog /Pages 3 0 R >>+Hello.pdf:44:endobj+Hello.pdf|45|8 0 obj+Hello.pdf:46:<< /Type /Font /Subtype /TrueType /BaseFont /GQTMZF+Menlo-Regular /FontDescriptor+Hello.pdf|47|12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602+Hello.pdf|48|0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602+Hello.pdf|49|0 0 602 ] >>+Hello.pdf:50:endobj+Hello.pdf|51|12 0 obj+Hello.pdf:52:<< /Type /FontDescriptor /FontName /GQTMZF+Menlo-Regular /Flags 33 /FontBBox+Hello.pdf|53|[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729+Hello.pdf:54:/StemV 99 /XHeight 547 /StemH 83 /AvgWidth 602 /MaxWidth 602 /FontFile2 13 0 R+Hello.pdf-55->>+Hello.pdf:56:endobj+Hello.pdf|57|13 0 obj+Hello.pdf:58:<< /Length 14 0 R /Length1 4064 /Filter /FlateDecode >>+Hello.pdf:59:+00000970  -- -- -- -- -- -- -- --  -- -- -- 73 74 72 65 61  |-----------strea|+00000980  6d 0a 78 01 dd 57 7b 78  54 c5 15 3f 73 7f 77 36  |mJxA.W{xT.U?s~w6|+00000990  af cd 3e 92 4d 48 48 80  5d d6 e5 95 2c 81 84 b7  |..>.MHH.]...,...|+000009a0  52 16 48 78 88 20 2f eb  2e 88 f2 48 20 28 21 08  |RVHx. /....H (!H|+000009b0  41 b4 31 90 4a 51 09 c1  40 85 08 48 7d 15 51 a9  |A.1.JQI.@.HH}UQ.|+000009c0  b5 2b 45 5d 09 c4 54 a4  62 23 45 84 a0 02 0a --  |.+E]I.T.b#E..BJ-|+Hello.pdf:61:+000009c0  -- -- -- -- -- -- -- --  -- -- -- -- -- -- -- f8  |---------------.|+000009d0  a2 68 8a 14 21 d8 00 43  cf bd 1b fd 3e ed d7 ef  |.h.T!.@C..[.>...|+000009e0  eb bf ed dc 9d 33 e7 fc  e6 cc 79 dd bb f7 ce 94  |.....3....y.....|+000009f0  2d 5c 5c 44 56 aa 24 50  60 56 c9 8c 05 64 36 eb  |-\\DV.$P`V..Ed6.|+00000a00  49 1e 8a 67 dd 53 e6 36  45 8a bd 97 48 cb 9d bd  |I^.g.S.6E...H...|+00000a10  60 4e 49 54 8e 7f 91 e5  4e 73 e6 dd 37 3b 2a 27  |`NIT.~..Ns..7;*'|+00000a20  4e 66 79 40 71 d1 8c c2  a8 4c 57 78 ec 57 cc 40  |Nfy@q....LWx.W.@|+00000a30  54 16 7d 78 bc ae b8 a4  8c ed 18 cd fa 2e 13 d7  |TV}x......X...S.|+00000a40  bc d2 59 6d f3 89 a3 0c  b0 64 c6 bd 6d fe e9 38  |..Ym...L.d..m..8|+00000a50  cb ee f9 33 4a 8a 78 e4  66 8f 30 e9 b6 a0 74 51  |...3J.x.f.0...tQ|+00000a60  99 29 92 bd 9a c7 ec 05  0b 8b da f4 45 90 28 a6  |.).....EK...E.(.|+00000a70  53 74 ae 8d 1a 96 05 77  a9 59 29 8b ee 22 0b 69  |St..Z.Ew.Y).."Ki|+00000a80  e4 a0 8d 94 c4 d0 ad ac  2b 79 d6 98 d7 62 b2 96  |........+y...b..|+00000a90  3e 7d f6 8d 3b ec 37 5c  a4 4e b1 e6 e2 bd 65 e9  |>}..;.7\.N....e.|+00000aa0  79 06 73 28 b8 a4 df e5  95 57 85 ac 8f bd 85 c5  |yFs(.....W......|+00000ab0  e8 a4 31 c1 eb 62 4a 54  07 22 fd e0 e5 95 d7 92  |..1..bJTG"......|+00000ac0  65 bd 69 c9 98 f9 be c9  08 c5 66 bd ae 55 8a 94  |e.i.....H.f..U..|+00000ad0  ed eb a6 c9 a1 99 22 85  6a 09 4c 2b 49 17 2e 52  |......".jIL+IW.R|+00000ae0  cc 27 9b 34 89 03 82 70  9a bc c3 a4 76 da c4 88  |.'.4.C.p....v...|+00000af0  cd e4 13 b7 7f 3d 52 0e  f5 89 44 aa 60 cc 4a 3e  |..S.~=RN..D.`.J>|+00000b00  a6 09 94 cb 34 de b4 17  67 6a c5 92 8d 91 18 93  |.I..4..Wgj....X.|+00000b10  b7 98 3a d2 e4 75 13 87  89 68 26 22 02 21 05 a5  |..:..uS..h&"B!E.|+00000b20  70 b5 02 57 14 2e 2b b4  e6 e2 9f 75 f8 ae 02 97  |p.BWT.+....u..B.|+00000b30  5a aa e5 25 85 4b 0d 7a  cb c5 90 6c a9 46 4b a5  |Z..%.KMz...l.FK.|+00000b40  7e f1 42 17 79 31 84 8b  01 fd 42 17 7c 7b 3e 47  |~.BWy1..A.BW|{>G|+00000b50  7e db 8a f3 39 f8 87 c2  39 85 6f 72 71 d6 85 bf  |~...9...9.orq...|+00000b60  d7 a2 99 43 6c 56 68 8e  5c 3b 18 b8 a6 7f 3d 12  |...ClVh.\;X..~=R|+00000b70  5f 9d 29 94 5f d5 e2 4c  21 fe a6 70 fa cb 0c 79  |_.)._..L!..p..Ly|+00000b80  5a e1 cb 0c 7c a1 f0 f9  5d f8 4c e1 d3 3a 9c 3a  |Z..L|...].L..:.:|+00000b90  99 2e 4f b5 e2 64 3a 4e  d4 e2 13 85 8f 15 8e 1f  |..O..d:N..S..U._|+00000ba0  4b 91 c7 15 8e a5 e0 68  2d 3e fa 30 45 7e a4 f0  |K..U...h->.0E~..|+00000bb0  e1 ea 04 f9 61 0a 3e a8  c0 91 41 68 62 a1 69 10  |..D.aJ>...Ahb.iP|+00000bc0  0e 2b 1c 7a 3f 5e 1e 52  78 3f 1e 07 15 de 53 38  |N+\z?^^Rx?^GU.S8|+00000bd0  50 e5 94 07 32 f1 d7 54  ec 57 78 b7 16 8d ab 7c  |P..G2..T.Wx.V..||+00000be0  b2 51 e1 2f -- -- -- --  -- -- -- -- -- -- -- --  |.Q./------------|+Hello.pdf:62:+Hello.pdf-63-+00000be0  -- -- -- -- -- ef 54 60  9f c2 db 0a -- -- -- --  |-----.T`...J----|+Hello.pdf-64-+00000be0  -- -- -- -- -- -- -- --  -- -- -- -- 7f 56 d8 bb  |------------~V..|+00000bf0  29 51 be a5 b0 47 e1 4d  85 3f 29 34 b0 bd 06 17  |)Q...G.M.?)4..FW|+00000c00  de b0 a2 7e 77 9d ac 57  d8 bd 6b 9a dc 5d 87 dd  |...~w..W..k..]..|+00000c10  95 fa ae 3a 9f dc 35 0d  bb 02 7a 9d 0f 3b 15 5e  |...:..5M.Bz.O;U^|+00000c20  af 45 a4 66 a8 7c 4d e1  55 1e 5e 6d c5 2b 6c 6b  |.E.f.|M.U^^m.+lk|+00000c30  87 c2 1f 0b b1 bd 10 2f  db 10 4e c2 1f 14 5e 52  |.._K..P/.PN._T^R|+00000c40  81 ab f8 bd c2 8b 0a --  -- -- -- -- -- -- -- --  |......J---------|+Hello.pdf-65-+00000c40  -- -- -- -- -- -- -- bf  4b c2 36 85 17 9e b7 c9  |-------.K.6.W...|+00000c50  17 72 f1 bc 0d cf 6d 75  ca e7 ba 61 ab 13 cf 6e  |Wr..M.mu...a.S.n|+00000c60  f1 cb 67 2b b0 c5 8f df  2a 3c a3 f0 b4 c2 53 4f  |..g+....*<....SO|+00000c70  a6 cb a7 0a -- -- -- --  -- -- -- -- -- -- -- --  |...J------------|+Hello.pdf:66:+00000c70  -- -- -- -- f1 e4 13 0e  f9 64 3a 9e 70 e0 37 f1  |----..SN.d:.p.7.|+00000c80  d8 ac f0 38 3b 79 5c 61  53 22 36 6e e8 29 37 2a  |...8;y\aS"6n.)7*|+00000c90  6c e8 89 c7 d8 ff 63 b5  a8 5d 5f 27 6b 15 d6 f3  |l.....c..]_'kU..|+00000ca0  b3 b5 be 0e eb 2b f5 75  6b 7c 72 dd 34 ac 0b e8  |...N.+.uk|r.4.K.|+00000cb0  8f 2a fc 5a 61 2d cb 6b  eb b0 c6 87 1a 2e 46 cd  |.*.Za-.k....Z.F.|+00000cc0  50 3c c2 d9 3e e2 c2 ea  04 54 33 50 5d 88 55 5c  |P<..>...DT3P].U\|+00000cd0  b4 55 3e 54 39 b1 52 e1  61 85 87 14 1e 5c e1 94  |.U>T9.R.a..T^\..|+00000ce0  0f 2a ac 70 e2 57 0a cb  15 1e 70 0e 93 0f 4c c2  |O*.p.WJ.U^pN.OL.|+00000cf0  2f 15 2a ef c5 b2 a5 15  72 99 c2 d2 0a -- -- --  |/U*....Ur...J---|+Hello.pdf-68-+00000cf0  -- -- -- -- -- -- -- --  -- -- -- -- -- 54 74 c4  |-------------Tt.|+00000d00  fd 0a -- -- -- -- -- --  -- -- -- -- -- -- -- --  |.J--------------|+Hello.pdf-69-+00000d00  -- -- e5 36 fc 42 61 89  c2 3d 0a -- -- -- -- --  |--.6.Ba..=J-----|+Hello.pdf:70:+00000d00  -- -- -- -- -- -- -- --  -- -- -- 8b cb ac 72 b1  |-----------...r.|+00000d10  1d 8b 23 82 02 47 f5 32  2b ca 1a f4 45 49 58 14  |].#.BG.2+.Z.EIXT|+00000d20  d0 17 2a dc ad b0 40 a1  74 fe 24 59 5a 8b f9 25  |.W*...@.t.$YZ..%|+00000d30  dd e4 fc 49 28 e9 86 79  0a 77 e5 e2 4e 85 b9 b9  |...I(..yJw..N...|+00000d40  28 6e c5 9c 3a cc 56 28  52 28 54 98 35 b3 a3 9c  |(n..:.V(R(T.5...|+00000d50  a5 30 93 1c 72 66 47 cc  50 98 ae 70 87 c2 ed 53  |.0.\rfG.P..p...S|+00000d60  12 e4 ed 36 4c 2b c4 6d  fb 30 95 85 a9 2e 4c 49  |R..6L+.m.0....LI|+00000d70  00 3f d1 41 17 6e 55 f8  b9 c2 2d 19 e9 f2 96 5c  |@?.AWnU...-Y...\|+00000d80  4c 56 98 a4 30 51 61 42  05 c6 2b dc ec c2 38 85  |LV..0QaBE.+...8.|+00000d90  b1 c2 2f c7 2a dc 54 87  31 dd 70 e3 e8 34 79 63  |../.*.T.1.p..4yc|+00000da0  7f 8c 1e 9e 24 47 a7 61  54 41 9a 1c a5 30 92 a5  |~.^.$G.aTA.\.0..|+00000db0  91 85 18 c1 d2 88 3a 14  a4 21 9f 81 fc fe 18 3e  |..X...:T.!....X>|+00000dc0  cc 29 87 27 61 78 44 0b  04 e2 f4 61 43 ed 72 98  |.).'axDKD..aC.r.|+00000dd0  13 c3 22 1a b1 34 34 60  93 43 ed 18 1a 11 0d 2c  |S."Z.44`.C.XZQM,|+00000de0  05 86 58 65 c0 86 40 44  54 b2 34 c4 1a 27 87 58  |E.Xe..@DT.4.Z'.X|+00000df0  31 24 22 02 81 42 fd 67  0a 83 39 84 c1 ad b8 41  |1$"B.B.gJ.9....A|+00000e00  e1 fa 6e 18 a4 30 90 0b  3c b0 10 03 7a b7 97 03  |..nX.0.K<.PCz..C|+00000e10  c6 a0 bf 42 3f bf 4b f6  53 e8 3b 06 7d 7a b5 97  |...B?.K.S.;F}z..|+00000e20  7d c6 20 8f 87 3c 85 5c  56 cc 55 e8 cd d3 bd db  |}. ..<.\V.U.....|+00000e30  a3 57 7b e4 30 97 93 86  9e 71 a9 b2 67 1d fc d9  |.W{.0....q..g]..|+00000e40  c9 d2 ef 82 3f a2 19 6e  b3 1d 4e 99 9d 8c 6c 23  |....?.Yn.]N...l#|+00000e50  dc 5a 3d ab 87 4f 66 29  f4 60 cd 1e 3e 74 d7 06  |.Z=..Of).`.^>t.F|+00000e60  c9 ee 0a -- -- -- -- --  -- -- -- -- -- -- -- --  |..J-------------|+Hello.pdf-73-+00000e60  -- -- -- dd 14 ba 2a 74  b1 c3 97 3a 4c fa 0a --  |---.T.*t...:L.J-|+Hello.pdf:74:+00000e60  -- -- -- -- -- -- -- --  -- -- -- -- -- -- -- 70  |---------------p|+00000e70  9d 1d 5e 85 ce 76 bb ec  ac e0 71 fb a5 a7 02 6e  |.]^..v....q...Bn|+00000e80  3f 3a 8d 41 47 f6 dc 51  a1 83 42 26 d7 36 53 21  |?:.AG..Q..B&.6S!|+00000e90  83 ef 4a 46 3a da 2b a4  2b a4 29 b4 63 0b ed 46  |..JF:.+.+.).cK.F|+00000ea0  20 35 c5 2f 53 87 21 c5  e5 90 29 7e b8 1c 48 66  | 5./S.!...)~.\Hf|+00000eb0  bd 64 17 92 78 7d 92 82  93 33 77 0e 83 83 3d 38  |.dW.x}...3wN..=8|+00000ec0  9c 70 44 6b 67 b7 59 a5  dd 0e 7b b4 76 b6 c4 78  |.pDkg.Y..N{.v..x|+00000ed0  69 b3 c2 16 ad 5d 22 d7  2e 31 1e 89 5c bb 1d ba  |i..V.]"..1^.\.].|+00000ee0  35 0e 56 e3 d9 ea af 27  28 c4 73 26 f1 0a -- --  |5NV....'(.s&.J--|+Hello.pdf:75:+00000ee0  -- -- -- -- -- -- -- --  -- -- -- -- -- -- 71 a9  |--------------q.|+00000ef0  88 75 20 46 c1 c2 a6 2d  0a -- -- -- -- -- -- --  |.u F...-J-------|+Hello.pdf-76-+00000ef0  -- -- -- -- -- -- -- --  -- d2 05 70 72 68 85 c6  |---------.Eprh..|+00000f00  80 36 08 82 03 10 7e 90  03 22 22 0a -- -- -- --  |.6H.CP~.C""J----|+Hello.pdf-77-+00000f00  -- -- -- -- -- -- -- --  -- -- -- -- 57 ac 16 59  |------------W.VY|+00000f10  ff 3f 8d fe c7 53 e1 4f  67 84 1a cd be 4d ac e5  |.?...S.Og.Z..M..|+00000f20  d1 d8 47 44 e8 21 6d 19  7f a5 bf bf 22 b4 87 75  |..GD.!mY~..."..u|+00000f30  34 53 2f 22 1a c5 4a b1  93 f9 ad bc b7 68 a4 e5  |4S/"Z.J......h..|+00000f40  74 5e c4 e3 6d d1 9f b9  7a 5e 1b d4 3d 8c d6 d0  |t^..m...z^[.=...|+00000f50  66 73 75 0d 4e d3 62 ec  a2 43 f4 0e 1d 63 ee b4  |fsuMN.b..C.N]c..|+00000f60  18 08 5e 2b 0e 91 47 9c  60 3f 2b 7f f0 a1 a1 9e  |XH^+N.G.`?+~....|+00000f70  a5 3d 4c cb 51 8f a0 e8  24 4a 68 8b 78 89 2d 96  |.=L.Q...$Jh.x.-.|+00000f80  53 44 94 d2 32 8d 47 6d  22 5b de af 1f 64 74 3f  |SD..2.Gm"[.._dt?|+00000f90  3d c4 d7 a3 b4 85 4a 99  37 32 58 ce f1 7f 4c 3b  |=.....J.72X..~L;|+00000fa0  68 15 5d a0 0d da 19 9a  c2 fc 4e da cb f1 28 fe  |hU].M.Y...N...(.|+00000fb0  fc 9a b9 88 26 6a 61 4b  db b4 c1 da 6c d6 db cb  |....&jaK....l...|+00000fc0  d6 36 d1 26 b1 9c 9a 68  91 4e fc 29 57 74 4a 36  |.6.&...h.N.)WtJ6|+00000fd0  69 59 6c 75 07 67 40 34  93 36 cb 26 b9 c1 a8 07  |iYluGg@4.6.&...G|+00000fe0  8f 4d f2 1c cf 10 75 b0  44 2c ae 18 2f 67 61 d4  |.M.\.Pu.D,.X/ga.|+00000ff0  6e ab d8 25 7a 6b e3 e8  10 af 2f a7 c9 b8 0d 77  |n..%zk..P./...Mw|+00001000  e3 98 58 a1 7b f5 25 38  43 35 1a 61 3a dd 49 07  |..X.{.%8C5Za:.IG|+00001010  64 93 c5 45 35 31 5e aa  b1 cc 16 f7 e9 d3 cd ab  |d..E51^...V.....|+00001020  9c ad 95 6b 4b f4 e9 62  1b 9d 61 9b 33 f1 1d cb  |...kK..b[.a.3.].|+00001030  1e 8e 6c b3 99 31 d1 0e  6d a2 1c 27 c7 71 ce b3  |^.l..1.Nm.\'.q..|+00001040  19 db 6c d2 9a 28 b5 38  68 3f 5a b9 ee 6b 35 25  |Y.l..(.8h?Z..k5%|+00001050  46 e9 23 30 84 f3 29 d7  6f a2 0d f4 0c db ed ca  |F.#0..).o.M.L...|+00001060  95 21 2a 45 5f f6 5e 4a  e5 72 75 f4 a2 6d 7c f9  |.!*E_.^J.ru..m|.|+00001070  e5 6a d4 72 45 cd 6a 88  3c 6d 30 6d d6 66 8b 55  |.j.rE.j.<m0m.f.U|+00001080  1c 6d 0b 57 b3 14 f9 d4  9f 7d 74 90 67 69 85 d8  |\mKW.T...}t.gi..|+00001090  c1 71 53 4c 05 2d 92 4d  bc 55 24 ea 41 f4 5a 8c  |.qSLE-.M.U$.A.Z.|+000010a0  45 ea fc f7 a6 6c b7 23  ac f9 46 17 86 03 13 82  |E....l.#..FW.CS.|+000010b0  ee 7d 21 8f 3f fb 27 a2  db 11 e3 0e d3 f8 70 e2  |.}!.?.'..Q.N..p.|+000010c0  7d ee c8 b5 6b e3 83 7a  86 0c 85 65 66 18 be d8  |}...k..z.L.efX..|+000010d0  b0 ee f3 9e fa 4f 93 a7  fc d9 63 c6 07 dd 11 d1  |.....O....c.G.Q.|+000010e0  ae 20 bf cd 6c c1 f4 7c  06 27 05 d9 03 ff 0c 98  |. ..l..|F'E.C.L.|+000010f0  dd 15 30 16 05 46 87 a5  8f 7f a3 a7 87 dd b3 8a  |.U0VEF...~......|+00001100  dd 55 8e 2a ef a0 2a 47  d1 20 3f ef ff b2 c7 30  |.U.*..*G. ?....0|+00001110  19 1f 7c 59 88 47 42 11  71 6d 45 84 f2 3b bc ce  |Y_|Y.GBQqmE..;..|+00001120  bb 48 dc 71 3b 4f c7 65  bb dd 05 73 f3 c3 62 3a  |.H.q;O.e..Es..b:|+00001130  0b f1 d9 0c f4 f0 30 97  90 ed 1e c1 61 8e 98 18  |K..L..0...^.a..X|+00001140  f4 86 dc 55 ee aa d1 85  55 ee 11 ee e2 19 85 1c  |...U....U.Q..Y.\|+00001150  b7 39 f2 44 51 55 28 87  33 98 14 9c cb 74 72 d0  |.9.DQU(.3.T..tr.|+00001160  13 0e 84 32 7e 60 8b 42  21 c3 bb d5 b0 c3 4b 58  |SN.2~`.B!.....KX|+00001170  bd 2a c4 16 ee 6c b3 c0  a3 09 e5 5c 65 a5 c4 ec  |.*.V.l...I.\e...|+00001180  31 ee 30 ba 8c 0f 4e 08  86 2b f3 33 c2 81 fc 50  |1.0..ONH.+.3...P|+00001190  86 c7 e3 2e 08 37 8c 0f  86 1b f2 33 3c a1 10 6b  |....H7.O.[.3<.Pk|+000011a0  d9 7e 88 94 23 ae 98 9b  d6 16 b3 9d 63 b6 f5 e0  |.~..#....V..c...|+000011b0  79 47 d4 0a -- -- -- --  -- -- -- -- -- -- -- --  |yG.J------------|+Hello.pdf-78-+000011b0  -- -- -- -- 97 28 90 11  a6 50 55 95 61 73 52 d0  |----.(.Q.PU.asR.|+000011c0  eb 09 57 56 55 65 54 71  1e 6d 72 84 1a 7e 02 08  |.IWVUeTq^mr.Z~BH|+000011d0  fa 29 10 68 03 22 64 d8  e0 4a 14 f0 f7 60 3c 1b  |.)PhC"d..JT..`<[|+000011e0  e3 c1 eb c9 30 00 af c7  eb e1 38 43 f9 ec db 69  |....0@....8C...i|+000011f0  dc 9a 02 8e d4 13 f2 f3  6e 9c 8a b9 af e4 5e ce  |..B..S..n.....^.|+00001200  fd 9c c1 f3 b3 18 dd e7  f3 f9 82 cf 00 53 58 1e  |.....X......@SX^|+00001210  45 dd fe 6d bf ce f0 7f  d9 b4 1f e9 c1 94 74 93  |E..m...~.._...t.|+00001220  76 e1 67 77 3b 9d 14 99  fc af 2f 56 b5 7a b1 dc  |v.gw;.T.../V.z..|+00001230  c2 a7 aa 18 ea b4 cb dc  f3 13 59 84 eb 55 11 2b  |...X.....SY..UQ+|+00001240  97 6b 3a e5 bc 75 b8 b9  37 39 0e 37 1f 6e ee 95  |.k:..u..79N7_n..|+00001250  ec f4 38 7d 1e a7 a7 58  a7 2b 8b 90 71 e5 0b 55  |..8}^..X.+..q.KU|+00001260  1b 63 fb ee fc 42 4b 77  c3 ac 30 72 d0 47 f1 bf  |[c...BKw..0r.G..|+00001270  20 81 6e 36 4e 15 7c 6f  73 f8 d6 71 b7 3a f8 58  | .n6NU|os..q.:.X|+00001280  f4 1e 77 e6 c5 71 c6 58  96 3c ea dc 63 18 17 2c  |.^w..q.X.<..cXW,|+00001290  c7 bd c7 6f 0b 43 41 e7  6e e1 1e 9f b3 93 a3 8a  |...oKCA.n.^.....|+000012a0  a5 84 ac 5e bd 93 f3 d8  75 9e d3 cb d4 bb b2 51  |...^....u......Q|+000012b0  eb de d8 78 f5 83 46 d9  74 f5 2d ed 86 d6 2c ed  |...x..F.t.-...,.|+000012c0  9b ab 4e f6 af 51 f9 b5  cf f8 ad 51 4e 29 94 49  |..N..Q.....QN).I|+000012d0  79 46 04 3b 19 74 b0 81  08 69 ec 21 93 3d 65 e6  |yFD;Yt..Hi.!.=e.|+000012e0  f0 3b cf 42 89 0c ee a4  64 4a 37 47 a3 0e 86 17  |.;.B.L..dJ7G.N.W|+000012f0  91 e2 49 b1 a4 e6 e5 f6  eb 9f 62 13 5e 37 39 1d  |..I.......bS^79]|+00001300  94 97 9b 14 d3 53 78 3b  5b 62 f4 e9 57 3e 8b 7d  |...T.Sx;[b..W>.}|+00001310  e3 a5 60 43 c9 dc 3d 53  d5 65 75 54 b8 cf 1d b9  |..`C..=S.euT..].|+00001320  14 b6 ae 7d 78 c5 8b b1  5a f5 14 cb 17 fb 06 0c  |T..}x...Z.T.W.FL|+00001330  7c 2d 2b 4b 0c 14 c9 c2  2a 02 ea 93 c7 ca 5e 08  ||-+KLT..*B....^H|+00001340  cf 37 ea 72 8e eb 32 c5  d2 9e bd 76 8d 46 95 c8  |.7.r..2....v.F..|+00001350  b7 d8 88 ca a8 43 dc 71  8e 48 e7 53 9e 11 51 22  |.....C.q.H.S.QQ"|+00001360  c5 47 23 71 a5 5e 2f 52  bc 9d bb f4 75 7a fa 7a  |.G#q.^/R....uz.z|+00001370  b4 03 53 43 1f 9c 79 f6  15 f5 91 38 21 d6 df bf  |.CSC_.y.U..8!...|+00001380  f4 f1 43 6f e2 e2 1a a3  e6 1a ad e4 9c 47 71 ce  |..Co..Z..Z...Gq.|+00001390  09 d4 8e bc 81 64 4b 75  12 55 5b eb 93 36 a6 c5  |I....dKuRU[..6..|+000013a0  25 d9 f3 91 94 f2 b3 34  c7 85 e6 2b c6 2d fc fc  |%......4...+.-..|+000013b0  42 b3 e3 6c 2f d1 d9 92  e2 32 72 ec db a7 4b d7  |B..l/....2r...K.|+000013c0  dc 24 a7 43 f3 76 d6 9c  8e 24 ad b8 7a cd 9a ea  |.$.C.v...$..z...|+000013d0  d5 6b d6 ac 3e 73 a9 e5  ab 33 2d 2d 38 71 f4 48  |.k..>s...3--8q.H|+000013e0  d3 b1 63 4d 47 8e 6e 56  ef ab 4f d5 29 75 48 f8  |..cMG.nV..O.)uH.|+000013f0  f9 b3 d3 51 f4 34 fc 9a  ed da 52 f3 39 35 4e a7  |...Q.4....R.95N.|+00001400  3f 6e 92 c5 2c 7e 7e 6f  a6 89 cc 09 3e 3a 46 75  |?n..,~~o...I>:Fu|+00001410  2c c6 0b 72 e4 84 c9 63  a7 8c c8 1a 5b 34 7f 5e  |,.Kr...c...Z[4~^|+00001420  a9 7f 62 d1 9c c5 f3 66  2c 24 fa 17 20 2d 06 e4  |.~b....f,$.W -F.|+00001430  0a -- -- -- -- -- -- --  -- -- -- -- -- -- -- --  |J---------------|+Hello.pdf:79:endstream+Hello.pdf|80|endobj+Hello.pdf:81:14 0 obj+Hello.pdf|82|2734+Hello.pdf:83:endobj+Hello.pdf|84|15 0 obj+Hello.pdf-85-(Hello)+Hello.pdf:86:endobj+Hello.pdf|87|16 0 obj+Hello.pdf:88:(Mac OS X 10.12.6 Quartz PDFContext)+Hello.pdf:89:endobj+Hello.pdf|90|17 0 obj+Hello.pdf-91-(TextEdit)+Hello.pdf:92:endobj+Hello.pdf|93|18 0 obj+Hello.pdf-94-(D:20200124010711Z00'00')+Hello.pdf:95:endobj+Hello.pdf|96|19 0 obj+Hello.pdf-97-()+Hello.pdf:98:endobj+Hello.pdf|99|20 0 obj+Hello.pdf-100-[ ]+Hello.pdf:101:endobj+Hello.pdf|102|1 0 obj+Hello.pdf:103:<< /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate+Hello.pdf|104|18 0 R /Keywords 19 0 R /AAPL:Keywords 20 0 R >>+Hello.pdf:105:endobj+Hello.pdf|106|xref+Hello.pdf:107:0 21+Hello.pdf:108:0000000000 65535 f +Hello.pdf|109|0000005392 00000 n +Hello.pdf:110:0000000238 00000 n +Hello.pdf|111|0000001714 00000 n +Hello.pdf:112:0000000022 00000 n +Hello.pdf|113|0000000219 00000 n +Hello.pdf:114:0000000342 00000 n +Hello.pdf|115|0000001679 00000 n +Hello.pdf:116:0000001847 00000 n +Hello.pdf|117|0000000439 00000 n +Hello.pdf:118:0000001658 00000 n +Hello.pdf|119|0000001797 00000 n +Hello.pdf:120:0000002110 00000 n +Hello.pdf|121|0000002362 00000 n +Hello.pdf:122:0000005186 00000 n +Hello.pdf|123|0000005207 00000 n +Hello.pdf:124:0000005231 00000 n +Hello.pdf|125|0000005284 00000 n +Hello.pdf:126:0000005311 00000 n +Hello.pdf|127|0000005353 00000 n +Hello.pdf:128:0000005372 00000 n +Hello.pdf|129|trailer+Hello.pdf:130:<< /Size 21 /Root 11 0 R /Info 1 0 R /ID [ <8db88d3335070bd9583341583cf769a3>+Hello.pdf-131-<8db88d3335070bd9583341583cf769a3> ] >>+Hello.pdf:132:startxref+Hello.pdf|133|5536+Hello.pdf-134-%%EOF+Hello.sh:1:#!/bin/sh+Hello.sh|2|echo "Hello World!"

tests/out/Hello_wnhS-W-nkbT.out

new file mode 100644@@ -0,0 +1,260 @@+Hello.bat:     1:  8:      7:	#!/bin/sh+Hello.bat|     2|  1|     10|	echo "Hello World!"+Hello.class:     5: 27:    148:	+00000070  -- -- -- -- -- -- -- --  -- -- 48 65 6c 6c 6f 2e  |----------Hello.|+00000080  6a 61 76 61 0c 00 07 00  08 07 00 17 0c 00 18 00  |javaL@G@HG@WL@X@|+00000090  19 01 00 0c 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |YA@LHello World!|+000000a0  07 00 1a 0c 00 1b 00 1c  01 00 05 48 65 6c 6c 6f  |G@ZL@[@\A@EHello|+000000b0  01 00 10 6a 61 76 61 2f  6c 61 6e 67 2f 4f 62 6a  |A@Pjava/lang/Obj|+000000c0  65 63 74 01 00 10 6a 61  76 61 2f 6c 61 6e 67 2f  |ectA@Pjava/lang/|+000000d0  53 79 73 74 65 6d 01 00  03 6f 75 74 01 00 15 4c  |SystemA@CoutA@UL|+000000e0  6a 61 76 61 2f 69 6f 2f  50 72 69 6e 74 53 74 72  |java/io/PrintStr|+000000f0  65 61 6d 3b 01 00 13 6a  61 76 61 2f 69 6f 2f 50  |eam;A@Sjava/io/P|+00000100  72 69 6e 74 53 74 72 65  61 6d 01 00 07 70 72 69  |rintStreamA@Gpri|+00000110  6e 74 6c 6e 01 00 15 28  4c 6a 61 76 61 2f 6c 61  |ntlnA@U(Ljava/la|+00000120  6e 67 2f 53 74 72 69 6e  67 3b 29 56 00 21 00 05  |ng/String;)V@!@E|+00000130  00 06 00 00 00 00 00 02  00 01 00 07 00 08 00 01  |@F@@@@@B@A@G@H@A|+00000140  00 09 00 00 00 1d 00 01  00 01 00 00 00 05 2a b7  |@I@@@]@A@A@@@E*.|+00000150  00 01 b1 00 00 00 01 00  0a -- -- -- -- -- -- --  |@A.@@@A@J-------|+Hello.java:     1:  1:      0:	import java.lang.*;+Hello.java:     3:  1:     21:	public class Hello // prints a Hello World! greeting+Hello.java|     4|  1|     74|	{ public static void main(String[] arg)+Hello.java:     5: 25:    138:	  { System.out.println("Hello World!");+Hello.pdf:     1:  8:      7:	+00000000  25 50 44 46 2d 31 2e 33  0a 25 c4 e5 f2 e5 eb a7  |%PDF-1.3J%......|+00000010  f3 a0 d0 c4 c6 0a -- --  -- -- -- -- -- -- -- --  |.....J----------|+Hello.pdf:     3:  1:     22:	4 0 obj+Hello.pdf|     4|  1|     30|	<< /Length 5 0 R /Filter /FlateDecode >>+Hello.pdf:     5:  1:     71:	+00000040  -- -- -- -- -- -- -- 73  74 72 65 61 6d 0a 78 01  |-------streamJxA|+00000050  45 8e bb 0a -- -- -- --  -- -- -- -- -- -- -- --  |E..J------------|+Hello.pdf:     7: 35:    135:	+00000050  -- -- -- -- 02 31 14 44  7b bf e2 94 5a 98 bd 89  |----B1TD{...Z...|+00000060  79 98 56 11 6c 17 2e f8  01 61 2d 64 d7 65 cd ff  |y.VQlW..Aa-d.e..|+00000070  83 17 2c ac 86 99 39 0c  b3 31 b2 51 02 b9 46 97  |.W,...9L.1.QB.F.|+00000080  e2 a9 12 f3 99 90 5c 4c  59 0a 9f 89 07 6f 86 6b  |..R...\LYJ..Go.k|+00000090  f7 b4 8e d0 9b e1 e2 6a  a9 52 6a b2 40 38 fe ad  |.......j.Rj.@8..|+000000a0  ed 94 20 bb b6 70 51 a3  44 c4 a3 0d ef 7f a0 69  |.. ..pQ.D..M.~.i|+000000b0  c2 0b ba 30 a8 7a ac 7c  b2 bf 4f f3 bc 1e d0 17  |.K.0.z.|..O..^.W|+000000c0  37 b5 37 e3 17 4e ff 20  a5 0a -- -- -- -- -- --  |7.7.WN. .J------|+Hello.pdf:     9:  1:    202:	endstream+Hello.pdf|    10|  1|    212|	endobj+Hello.pdf:    11:  1:    219:	5 0 obj+Hello.pdf|    12|  1|    227|	123+Hello.pdf:    13:  1:    231:	endobj+Hello.pdf|    14|  1|    238|	2 0 obj+Hello.pdf:    15:  5:    250:	<< /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]+Hello.pdf:    17:  1:    335:	endobj+Hello.pdf|    18|  1|    342|	6 0 obj+Hello.pdf:    19:  5:    354:	<< /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R >> /Font << /TT1 8 0 R+Hello.pdf:    21:  1:    432:	endobj+Hello.pdf|    22|  1|    439|	9 0 obj+Hello.pdf:    23:  5:    451:	<< /Length 10 0 R /N 1 /Alternate /DeviceGray /Filter /FlateDecode >>+Hello.pdf:    24:  1:    517:	+00000200  -- -- -- -- -- 73 74 72  65 61 6d 0a 78 01 85 55  |-----streamJxA.U|+00000210  5d 68 1c 55 14 3e bb 73  67 03 12 07 1f b4 0d 2d  |]h\UT>.sgCRG_.M-|+00000220  b4 83 3f 6d 09 e9 32 89  56 13 8b b5 db 4d ba 49  |..?mI.2.VS...M.I|+00000230  13 b7 eb 66 53 9b 2a ca  74 76 36 3b cd 64 66 9c  |S..fS.*.tv6;.df.|+00000240  99 dd 26 a1 4f a5 e0 9b  16 04 e9 ab a0 3e c6 82  |..&.O...VD...>..|+00000250  08 b6 2a 36 2f f6 a5 a5  c5 92 4a 35 0f 0a -- --  |H.*6/.....J5OJ--|+Hello.pdf:    26:307:   1006:	+00000250  -- -- -- -- -- -- -- --  -- -- -- -- -- -- 11 5a  |--------------QZ|+00000260  8c 20 28 7d 52 f0 3b 33  db 64 76 41 32 c3 9d f9  |. (}R.;3.dvA2...|+00000270  ee b9 e7 9e 7b ce 77 ee  b9 97 a8 eb 6f dd f3 ec  |....{.w.....o...|+00000280  b4 4a 34 e7 84 7e a1 9c  9b 3e 39 7d 4a ed ba 4d  |.J4..~...>9}J..M|+00000290  69 52 a8 9b f0 e8 46 e0  e5 4a a5 09 c6 8e eb 98  |iR....F..J.I....|+000002a0  fc 6f 7f 1e de a5 14 4b  ee ec 67 5b ed 63 5b f6  |.o~^..TK..g[.c[.|+000002b0  e4 aa 19 18 d0 ba 86 e6  56 03 63 8e 28 a5 11 65  |..YX....VCc.(.Qe|+000002c0  6a 86 e7 87 44 5d 97 20  1f 3c 1b 7a 8c 6f 03 3f  |j...D]. _<[z.oC?|+000002d0  39 5b 29 e7 81 d7 80 95  d6 5c 40 7a aa 60 3a a6  |9[)......\@z.`:.|+000002e0  6f 19 6a c1 d7 17 d4 92  ef d6 2c 3b e9 eb 56 e3  |oYj..W....,;..V.|+000002f0  6c 63 cb 67 ce 6e b0 af  fc ec 46 eb 0e 66 27 c7  |lc.g.n....F.Nf'.|+00000300  f1 ef 85 cf 17 4c 67 6a  12 78 1f f0 92 a1 8f 30  |....WLgjRx_....0|+00000310  ee 03 be db b4 4e 14 63  9c 4e 7b e1 91 72 ac 9f  |.C...NTc.N{..r..|+00000320  ce 36 66 a7 72 2d f9 c9  9a 7f 74 aa 25 bf 50 6f  |.6f.r-...~t.%.Po|+00000330  8c 32 ce 12 a5 97 16 eb  95 37 80 9f 00 5e 75 4e  |.2.R..V..7..@^uN|+00000340  17 8f b7 f4 d7 67 dd 71  b6 d3 43 24 f5 18 41 fe  |W....g.q..C$.XA.|+00000350  14 f0 b3 c0 5a dd 1c e3  3c a9 c0 15 df 2d b3 3e  |T...Z.\.<..U.-.>|+00000360  cb c3 aa 39 3c 02 fc 32  f0 25 2b 1c ab 00 c3 be  |...9<B.2.%+\.@..|+00000370  f4 43 d0 9c 64 39 b0 a0  c5 7a 9e fd c4 5a 22 7b  |.C..d9...z...Z"{|+00000380  46 3f 56 02 de 06 7c c8  b4 0b bc 16 ec 88 8a 17  |F?VB.F|..K.V...W|+00000390  96 d8 e6 20 f0 bc 63 17  79 2d c4 2e 2e 9b 41 14  |... ..cWy-....AT|+000003a0  2f 62 17 3f 85 f5 ca 68  ac 2f a7 43 bf c2 73 9f  |/bW?...h./.C..s.|+000003b0  26 92 f7 d4 ac a3 63 c0  e0 44 1e ad fb a3 2c 87  |&.....c..D^...,.|+000003c0  3f 72 e8 d9 d1 de 7a 11  78 c9 6f 94 39 f6 3d c0  |?r....zQx.o.9.=.|+000003d0  6b ba 3f 52 00 86 cd cc  63 55 7d 98 79 7e 01 78  |k.?R@...cU}.y~Ax|+000003e0  80 4e a4 74 32 c9 a5 d3  f8 1a e4 d0 bf 88 37 20  |.N.t2....Z....7 |+000003f0  8b 9a 11 f2 c8 c7 58 0d  7d 9b 0a -- -- -- -- --  |..Q...XM}.J-----|+Hello.pdf:    30: 29:   1639:	+00000640  -- -- -- -- 54 df 0c 4c  bf 69 56 b3 c4 77 37 cf  |----T.LL.iV..w7.|+00000650  23 fa eb f5 e8 4e 4e 6d  bb 61 34 fc 66 2c a3 54  |#....NNm.a4.f,.T|+00000660  ea 26 d1 7f b7 8f 93 34  0a 65 6e 64 73 74 72 65  |.&.~...4Jendstre|+00000670  61 6d 0a -- -- -- -- --  -- -- -- -- -- -- -- --  |amJ-------------|+Hello.pdf:    32:  1:   1651:	endobj+Hello.pdf|    33|  1|   1658|	10 0 obj+Hello.pdf:    34:  1:   1667:	1116+Hello.pdf|    35|  1|   1672|	endobj+Hello.pdf:    36:  1:   1679:	7 0 obj+Hello.pdf|    37|  1|   1687|	[ /ICCBased 9 0 R ]+Hello.pdf:    38:  1:   1707:	endobj+Hello.pdf|    39|  1|   1714|	3 0 obj+Hello.pdf:    40:  5:   1726:	<< /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 2 0 R ] >>+Hello.pdf:    41:  1:   1790:	endobj+Hello.pdf|    42|  1|   1797|	11 0 obj+Hello.pdf:    43:  5:   1810:	<< /Type /Catalog /Pages 3 0 R >>+Hello.pdf:    44:  1:   1840:	endobj+Hello.pdf|    45|  1|   1847|	8 0 obj+Hello.pdf:    46:  5:   1859:	<< /Type /Font /Subtype /TrueType /BaseFont /GQTMZF+Menlo-Regular /FontDescriptor+Hello.pdf|    47|  1|   1937|	12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602+Hello.pdf|    48|  1|   2014|	0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602+Hello.pdf|    49|  1|   2090|	0 0 602 ] >>+Hello.pdf:    50:  1:   2103:	endobj+Hello.pdf|    51|  1|   2110|	12 0 obj+Hello.pdf:    52:  5:   2123:	<< /Type /FontDescriptor /FontName /GQTMZF+Menlo-Regular /Flags 33 /FontBBox+Hello.pdf|    53|  1|   2196|	[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729+Hello.pdf:    54:  2:   2274:	/StemV 99 /XHeight 547 /StemH 83 /AvgWidth 602 /MaxWidth 602 /FontFile2 13 0 R+Hello.pdf:    56:  1:   2355:	endobj+Hello.pdf|    57|  1|   2362|	13 0 obj+Hello.pdf:    58:  5:   2375:	<< /Length 14 0 R /Length1 4064 /Filter /FlateDecode >>+Hello.pdf:    59:  1:   2427:	+00000970  -- -- -- -- -- -- -- --  -- -- -- 73 74 72 65 61  |-----------strea|+00000980  6d 0a 78 01 dd 57 7b 78  54 c5 15 3f 73 7f 77 36  |mJxA.W{xT.U?s~w6|+00000990  af cd 3e 92 4d 48 48 80  5d d6 e5 95 2c 81 84 b7  |..>.MHH.]...,...|+000009a0  52 16 48 78 88 20 2f eb  2e 88 f2 48 20 28 21 08  |RVHx. /....H (!H|+000009b0  41 b4 31 90 4a 51 09 c1  40 85 08 48 7d 15 51 a9  |A.1.JQI.@.HH}UQ.|+000009c0  b5 2b 45 5d 09 c4 54 a4  62 23 45 84 a0 02 0a --  |.+E]I.T.b#E..BJ-|+Hello.pdf:    61:187:   2776:	+000009c0  -- -- -- -- -- -- -- --  -- -- -- -- -- -- -- f8  |---------------.|+000009d0  a2 68 8a 14 21 d8 00 43  cf bd 1b fd 3e ed d7 ef  |.h.T!.@C..[.>...|+000009e0  eb bf ed dc 9d 33 e7 fc  e6 cc 79 dd bb f7 ce 94  |.....3....y.....|+000009f0  2d 5c 5c 44 56 aa 24 50  60 56 c9 8c 05 64 36 eb  |-\\DV.$P`V..Ed6.|+00000a00  49 1e 8a 67 dd 53 e6 36  45 8a bd 97 48 cb 9d bd  |I^.g.S.6E...H...|+00000a10  60 4e 49 54 8e 7f 91 e5  4e 73 e6 dd 37 3b 2a 27  |`NIT.~..Ns..7;*'|+00000a20  4e 66 79 40 71 d1 8c c2  a8 4c 57 78 ec 57 cc 40  |Nfy@q....LWx.W.@|+00000a30  54 16 7d 78 bc ae b8 a4  8c ed 18 cd fa 2e 13 d7  |TV}x......X...S.|+00000a40  bc d2 59 6d f3 89 a3 0c  b0 64 c6 bd 6d fe e9 38  |..Ym...L.d..m..8|+00000a50  cb ee f9 33 4a 8a 78 e4  66 8f 30 e9 b6 a0 74 51  |...3J.x.f.0...tQ|+00000a60  99 29 92 bd 9a c7 ec 05  0b 8b da f4 45 90 28 a6  |.).....EK...E.(.|+00000a70  53 74 ae 8d 1a 96 05 77  a9 59 29 8b ee 22 0b 69  |St..Z.Ew.Y).."Ki|+00000a80  e4 a0 8d 94 c4 d0 ad ac  2b 79 d6 98 d7 62 b2 96  |........+y...b..|+00000a90  3e 7d f6 8d 3b ec 37 5c  a4 4e b1 e6 e2 bd 65 e9  |>}..;.7\.N....e.|+00000aa0  79 06 73 28 b8 a4 df e5  95 57 85 ac 8f bd 85 c5  |yFs(.....W......|+00000ab0  e8 a4 31 c1 eb 62 4a 54  07 22 fd e0 e5 95 d7 92  |..1..bJTG"......|+00000ac0  65 bd 69 c9 98 f9 be c9  08 c5 66 bd ae 55 8a 94  |e.i.....H.f..U..|+00000ad0  ed eb a6 c9 a1 99 22 85  6a 09 4c 2b 49 17 2e 52  |......".jIL+IW.R|+00000ae0  cc 27 9b 34 89 03 82 70  9a bc c3 a4 76 da c4 88  |.'.4.C.p....v...|+00000af0  cd e4 13 b7 7f 3d 52 0e  f5 89 44 aa 60 cc 4a 3e  |..S.~=RN..D.`.J>|+00000b00  a6 09 94 cb 34 de b4 17  67 6a c5 92 8d 91 18 93  |.I..4..Wgj....X.|+00000b10  b7 98 3a d2 e4 75 13 87  89 68 26 22 02 21 05 a5  |..:..uS..h&"B!E.|+00000b20  70 b5 02 57 14 2e 2b b4  e6 e2 9f 75 f8 ae 02 97  |p.BWT.+....u..B.|+00000b30  5a aa e5 25 85 4b 0d 7a  cb c5 90 6c a9 46 4b a5  |Z..%.KMz...l.FK.|+00000b40  7e f1 42 17 79 31 84 8b  01 fd 42 17 7c 7b 3e 47  |~.BWy1..A.BW|{>G|+00000b50  7e db 8a f3 39 f8 87 c2  39 85 6f 72 71 d6 85 bf  |~...9...9.orq...|+00000b60  d7 a2 99 43 6c 56 68 8e  5c 3b 18 b8 a6 7f 3d 12  |...ClVh.\;X..~=R|+00000b70  5f 9d 29 94 5f d5 e2 4c  21 fe a6 70 fa cb 0c 79  |_.)._..L!..p..Ly|+00000b80  5a e1 cb 0c 7c a1 f0 f9  5d f8 4c e1 d3 3a 9c 3a  |Z..L|...].L..:.:|+00000b90  99 2e 4f b5 e2 64 3a 4e  d4 e2 13 85 8f 15 8e 1f  |..O..d:N..S..U._|+00000ba0  4b 91 c7 15 8e a5 e0 68  2d 3e fa 30 45 7e a4 f0  |K..U...h->.0E~..|+00000bb0  e1 ea 04 f9 61 0a 3e a8  c0 91 41 68 62 a1 69 10  |..D.aJ>...Ahb.iP|+00000bc0  0e 2b 1c 7a 3f 5e 1e 52  78 3f 1e 07 15 de 53 38  |N+\z?^^Rx?^GU.S8|+00000bd0  50 e5 94 07 32 f1 d7 54  ec 57 78 b7 16 8d ab 7c  |P..G2..T.Wx.V..||+00000be0  b2 51 e1 2f -- -- -- --  -- -- -- -- -- -- -- --  |.Q./------------|+Hello.pdf:    62:356:   3044:	+Hello.pdf:    66: 95:   3301:	+00000c70  -- -- -- -- f1 e4 13 0e  f9 64 3a 9e 70 e0 37 f1  |----..SN.d:.p.7.|+00000c80  d8 ac f0 38 3b 79 5c 61  53 22 36 6e e8 29 37 2a  |...8;y\aS"6n.)7*|+00000c90  6c e8 89 c7 d8 ff 63 b5  a8 5d 5f 27 6b 15 d6 f3  |l.....c..]_'kU..|+00000ca0  b3 b5 be 0e eb 2b f5 75  6b 7c 72 dd 34 ac 0b e8  |...N.+.uk|r.4.K.|+00000cb0  8f 2a fc 5a 61 2d cb 6b  eb b0 c6 87 1a 2e 46 cd  |.*.Za-.k....Z.F.|+00000cc0  50 3c c2 d9 3e e2 c2 ea  04 54 33 50 5d 88 55 5c  |P<..>...DT3P].U\|+00000cd0  b4 55 3e 54 39 b1 52 e1  61 85 87 14 1e 5c e1 94  |.U>T9.R.a..T^\..|+00000ce0  0f 2a ac 70 e2 57 0a cb  15 1e 70 0e 93 0f 4c c2  |O*.p.WJ.U^pN.OL.|+00000cf0  2f 15 2a ef c5 b2 a5 15  72 99 c2 d2 0a -- -- --  |/U*....Ur...J---|+Hello.pdf:    70: 35:   3383:	+00000d00  -- -- -- -- -- -- -- --  -- -- -- 8b cb ac 72 b1  |-----------...r.|+00000d10  1d 8b 23 82 02 47 f5 32  2b ca 1a f4 45 49 58 14  |].#.BG.2+.Z.EIXT|+00000d20  d0 17 2a dc ad b0 40 a1  74 fe 24 59 5a 8b f9 25  |.W*...@.t.$YZ..%|+00000d30  dd e4 fc 49 28 e9 86 79  0a 77 e5 e2 4e 85 b9 b9  |...I(..yJw..N...|+00000d40  28 6e c5 9c 3a cc 56 28  52 28 54 98 35 b3 a3 9c  |(n..:.V(R(T.5...|+00000d50  a5 30 93 1c 72 66 47 cc  50 98 ae 70 87 c2 ed 53  |.0.\rfG.P..p...S|+00000d60  12 e4 ed 36 4c 2b c4 6d  fb 30 95 85 a9 2e 4c 49  |R..6L+.m.0....LI|+00000d70  00 3f d1 41 17 6e 55 f8  b9 c2 2d 19 e9 f2 96 5c  |@?.AWnU...-Y...\|+00000d80  4c 56 98 a4 30 51 61 42  05 c6 2b dc ec c2 38 85  |LV..0QaBE.+...8.|+00000d90  b1 c2 2f c7 2a dc 54 87  31 dd 70 e3 e8 34 79 63  |../.*.T.1.p..4yc|+00000da0  7f 8c 1e 9e 24 47 a7 61  54 41 9a 1c a5 30 92 a5  |~.^.$G.aTA.\.0..|+00000db0  91 85 18 c1 d2 88 3a 14  a4 21 9f 81 fc fe 18 3e  |..X...:T.!....X>|+00000dc0  cc 29 87 27 61 78 44 0b  04 e2 f4 61 43 ed 72 98  |.).'axDKD..aC.r.|+00000dd0  13 c3 22 1a b1 34 34 60  93 43 ed 18 1a 11 0d 2c  |S."Z.44`.C.XZQM,|+00000de0  05 86 58 65 c0 86 40 44  54 b2 34 c4 1a 27 87 58  |E.Xe..@DT.4.Z'.X|+00000df0  31 24 22 02 81 42 fd 67  0a 83 39 84 c1 ad b8 41  |1$"B.B.gJ.9....A|+00000e00  e1 fa 6e 18 a4 30 90 0b  3c b0 10 03 7a b7 97 03  |..nX.0.K<.PCz..C|+00000e10  c6 a0 bf 42 3f bf 4b f6  53 e8 3b 06 7d 7a b5 97  |...B?.K.S.;F}z..|+00000e20  7d c6 20 8f 87 3c 85 5c  56 cc 55 e8 cd d3 bd db  |}. ..<.\V.U.....|+00000e30  a3 57 7b e4 30 97 93 86  9e 71 a9 b2 67 1d fc d9  |.W{.0....q..g]..|+00000e40  c9 d2 ef 82 3f a2 19 6e  b3 1d 4e 99 9d 8c 6c 23  |....?.Yn.]N...l#|+00000e50  dc 5a 3d ab 87 4f 66 29  f4 60 cd 1e 3e 74 d7 06  |.Z=..Of).`.^>t.F|+00000e60  c9 ee 0a -- -- -- -- --  -- -- -- -- -- -- -- --  |..J-------------|+Hello.pdf:    74: 36:   3743:	+00000e60  -- -- -- -- -- -- -- --  -- -- -- -- -- -- -- 70  |---------------p|+00000e70  9d 1d 5e 85 ce 76 bb ec  ac e0 71 fb a5 a7 02 6e  |.]^..v....q...Bn|+00000e80  3f 3a 8d 41 47 f6 dc 51  a1 83 42 26 d7 36 53 21  |?:.AG..Q..B&.6S!|+00000e90  83 ef 4a 46 3a da 2b a4  2b a4 29 b4 63 0b ed 46  |..JF:.+.+.).cK.F|+00000ea0  20 35 c5 2f 53 87 21 c5  e5 90 29 7e b8 1c 48 66  | 5./S.!...)~.\Hf|+00000eb0  bd 64 17 92 78 7d 92 82  93 33 77 0e 83 83 3d 38  |.dW.x}...3wN..=8|+00000ec0  9c 70 44 6b 67 b7 59 a5  dd 0e 7b b4 76 b6 c4 78  |.pDkg.Y..N{.v..x|+00000ed0  69 b3 c2 16 ad 5d 22 d7  2e 31 1e 89 5c bb 1d ba  |i..V.]"..1^.\.].|+00000ee0  35 0e 56 e3 d9 ea af 27  28 c4 73 26 f1 0a -- --  |5NV....'(.s&.J--|+Hello.pdf:    75:  2:   3825:	+00000ee0  -- -- -- -- -- -- -- --  -- -- -- -- -- -- 71 a9  |--------------q.|+00000ef0  88 75 20 46 c1 c2 a6 2d  0a -- -- -- -- -- -- --  |.u F...-J-------|+Hello.pdf:    79:  1:   5169:	endstream+Hello.pdf|    80|  1|   5179|	endobj+Hello.pdf:    81:  1:   5186:	14 0 obj+Hello.pdf|    82|  1|   5195|	2734+Hello.pdf:    83:  1:   5200:	endobj+Hello.pdf|    84|  1|   5207|	15 0 obj+Hello.pdf:    86:  1:   5224:	endobj+Hello.pdf|    87|  1|   5231|	16 0 obj+Hello.pdf:    88:  2:   5241:	(Mac OS X 10.12.6 Quartz PDFContext)+Hello.pdf:    89:  1:   5277:	endobj+Hello.pdf|    90|  1|   5284|	17 0 obj+Hello.pdf:    92:  1:   5304:	endobj+Hello.pdf|    93|  1|   5311|	18 0 obj+Hello.pdf:    95:  1:   5346:	endobj+Hello.pdf|    96|  1|   5353|	19 0 obj+Hello.pdf:    98:  1:   5365:	endobj+Hello.pdf|    99|  1|   5372|	20 0 obj+Hello.pdf:   101:  1:   5385:	endobj+Hello.pdf|   102|  1|   5392|	1 0 obj+Hello.pdf:   103:  5:   5404:	<< /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate+Hello.pdf|   104|  1|   5480|	18 0 R /Keywords 19 0 R /AAPL:Keywords 20 0 R >>+Hello.pdf:   105:  1:   5529:	endobj+Hello.pdf|   106|  1|   5536|	xref+Hello.pdf:   107:  1:   5541:	0 21+Hello.pdf:   108:  1:   5546:	0000000000 65535 f +Hello.pdf|   109|  1|   5566|	0000005392 00000 n +Hello.pdf:   110:  1:   5586:	0000000238 00000 n +Hello.pdf|   111|  1|   5606|	0000001714 00000 n +Hello.pdf:   112:  1:   5626:	0000000022 00000 n +Hello.pdf|   113|  1|   5646|	0000000219 00000 n +Hello.pdf:   114:  1:   5666:	0000000342 00000 n +Hello.pdf|   115|  1|   5686|	0000001679 00000 n +Hello.pdf:   116:  1:   5706:	0000001847 00000 n +Hello.pdf|   117|  1|   5726|	0000000439 00000 n +Hello.pdf:   118:  1:   5746:	0000001658 00000 n +Hello.pdf|   119|  1|   5766|	0000001797 00000 n +Hello.pdf:   120:  1:   5786:	0000002110 00000 n +Hello.pdf|   121|  1|   5806|	0000002362 00000 n +Hello.pdf:   122:  1:   5826:	0000005186 00000 n +Hello.pdf|   123|  1|   5846|	0000005207 00000 n +Hello.pdf:   124:  1:   5866:	0000005231 00000 n +Hello.pdf|   125|  1|   5886|	0000005284 00000 n +Hello.pdf:   126:  1:   5906:	0000005311 00000 n +Hello.pdf|   127|  1|   5926|	0000005353 00000 n +Hello.pdf:   128:  1:   5946:	0000005372 00000 n +Hello.pdf|   129|  1|   5966|	trailer+Hello.pdf:   130:  5:   5978:	<< /Size 21 /Root 11 0 R /Info 1 0 R /ID [ <8db88d3335070bd9583341583cf769a3>+Hello.pdf:   132:  1:   6092:	startxref+Hello.pdf|   133|  1|   6102|	5536+Hello.sh:     1:  8:      7:	#!/bin/sh+Hello.sh|     2|  1|     10|	echo "Hello World!"

tests/out/Hello_wnhS-W-nv.out

new file mode 100644@@ -0,0 +1,195 @@+Hello.class:1:+00000000  ca fe ba be 00 00 00 34  00 1d 0a -- -- -- -- --  |....@@@4@]J-----|+Hello.class:2:+00000000  -- -- -- -- -- -- -- --  -- -- -- 00 06 00 0f 09  |-----------@F@OI|+00000010  00 10 00 11 08 00 12 0a  -- -- -- -- -- -- -- --  |@P@QH@RJ--------|+Hello.class:3:+00000010  -- -- -- -- -- -- -- --  00 13 00 14 07 00 15 07  |--------@S@TG@UG|+00000020  00 16 01 00 06 3c 69 6e  69 74 3e 01 00 03 28 29  |@VA@F<init>A@C()|+00000030  56 01 00 04 43 6f 64 65  01 00 0f 4c 69 6e 65 4e  |VA@DCodeA@OLineN|+00000040  75 6d 62 65 72 54 61 62  6c 65 01 00 04 6d 61 69  |umberTableA@Dmai|+00000050  6e 01 00 16 28 5b 4c 6a  61 76 61 2f 6c 61 6e 67  |nA@V([Ljava/lang|+00000060  2f 53 74 72 69 6e 67 3b  29 56 01 00 0a -- -- --  |/String;)VA@J---|+Hello.class:4:+00000060  -- -- -- -- -- -- -- --  -- -- -- -- -- 53 6f 75  |-------------Sou|+00000070  72 63 65 46 69 6c 65 01  00 0a -- -- -- -- -- --  |rceFileA@J------|+Hello.class:6:+00000150  -- -- -- -- -- -- -- --  -- 00 00 00 06 00 01 00  |---------@@@F@A@|+00000160  00 00 03 00 09 00 0b 00  0c 00 01 00 09 00 00 00  |@@C@I@K@L@A@I@@@|+00000170  25 00 02 00 01 00 00 00  09 b2 00 02 12 03 b6 00  |%@B@A@@@I.@BRC.@|+00000180  04 b1 00 00 00 01 00 0a  -- -- -- -- -- -- -- --  |D.@@@A@J--------|+Hello.class:7:+00000180  -- -- -- -- -- -- -- --  00 00 00 0a -- -- -- --  |--------@@@J----|+Hello.class:8:+00000180  -- -- -- -- -- -- -- --  -- -- -- -- 00 02 00 00  |------------@B@@|+00000190  00 05 00 08 00 06 00 01  00 0d 00 00 00 02 00 0e  |@E@H@F@A@M@@@B@N|+Hello.java:2:+Hello.java:6:  }+Hello.java:7:}+Hello.pdf:16:>>+Hello.pdf:20:>> >>+Hello.pdf:27:+000003f0  -- -- -- -- -- -- -- --  -- -- -- d0 70 d0 7c f4  |-----------.p.|.|+00000400  0c 68 15 80 74 5a 00 2a  25 b4 4c f4 58 27 9e a3  |LhU.tZ@*%.L.X'..|+00000410  52 15 3d 95 66 a2 59 41  84 d8 ca fd a8 6f 50 7e  |RU=.f.YA.....oP~|+00000420  d7 a7 d4 80 b4 4e eb 90  d6 81 5e a3 5f 22 c9 3c  |.....N....^._".<|+00000430  fd 4a 73 e8 e7 21 6d 60  6c a6 c3 6e 1e 5e 38 b4  |.Js..!m`l..n^^8.|+00000440  08 0f d8 13 b6 f9 a0 65  d3 15 db 85 26 9e 47 3b  |HO.S...e.U..&.G;|+00000450  28 26 c4 2b 62 50 0c 91  2a 5e 15 87 c5 21 31 0c  |(&.+bPL.*^U..!1L|+00000460  e9 90 38 18 cd 89 bd 4f  fa ce 7e 3e d8 b0 f4 2e  |..8X...O..~>....|+00000470  d6 4d fa be 0c 0e 42 ac  67 c3 33 07 ac 70 34 01  |.M..LNB.g.3G.p4A|+00000480  3c f8 07 eb ce 46 9a 09  b6 2e ee 68 ec f3 bc 8f  |<.G..F.I...h....|+00000490  de 3f ef bf 63 19 b7 3e  f8 b3 8d bd 00 fa 31 27  |.?..cY.>....@.1'|+000004a0  bf c1 a2 0b 6b 26 25 e6  5e 3f f7 4d 4f c2 43 75  |...Kk&%.^?.MO.Cu|+000004b0  45 7c f5 d6 9d ee eb e7  e8 78 32 4b 51 de aa 9d  |E|.......x2KQ...|+000004c0  59 92 d7 e4 fb f2 0a --  -- -- -- -- -- -- -- --  |Y.....J---------|+Hello.pdf:28:+000004c0  -- -- -- -- -- -- -- be  f7 e4 d5 a4 0d f9 67 79  |-------.....M.gy|+000004d0  15 ef bd b6 5c 3d ca 0b  ff 93 b9 cd 21 46 3b 92  |U...\=.K....!F;.|+000004e0  cd 41 ce 3c 9b 51 b4 71  c6 1b c0 21 b8 a9 45 73  |.A.<.Q.q.[.!..Es|+000004f0  f6 b7 59 4c b2 e9 b6 62  b4 60 c9 42 94 9d ab b8  |..YL...b.`.B....|+00000500  ff cb 09 f3 c3 3c b7 b1  52 73 2e ee f0 bc b7 3f  |..I..<..Rs.....?|+00000510  63 36 cd f7 8a 0f 8b 74  be 4f bb ac ad 6b 9f 68  |c6...O.t.O...k.h|+00000520  3f 6a 7f 68 2b da c7 40  bf 4b 1f 4a 5f 4a df 4a  |?j~h+..@.K_J_J.J|+00000530  57 a4 ab d2 0d 52 a5 6b  d2 b2 f4 9d f4 bd f4 b9  |W...MR.k........|+00000540  f4 35 7a 5f 40 ba 2c 5d  e9 d8 49 71 ec 1b bb 07  |.5z_@.,]..Iq.[.G|+00000550  7e c6 7b d6 68 ed 30 66  86 b3 14 10 f3 c2 da cc  |~.{.h.0f..TP....|+00000560  0a -- -- -- -- -- -- --  -- -- -- -- -- -- -- --  |J---------------|+Hello.pdf:29:+00000560  -- 4b 1f f1 77 06 63 9b  f9 33 a1 d5 5e 03 9d bb  |-K_.wFc..3..^C..|+00000570  7f 63 2d e5 88 b2 53 79  46 19 56 76 2b cf 29 13  |~c-...SyFYVv+.)S|+00000580  4a af 72 40 39 ac 6c 57  06 d0 fa 95 51 65 2f 46  |J.r@9.lWF...Qe/F|+00000590  76 6e b0 64 63 3d ce 80  85 7f 92 67 8b a6 23 ae  |vn.dc=...~.g..#.|+000005a0  e2 3c b1 57 75 b0 e7 c3  4b 1d ef a6 5f 5c c3 d6  |.<.Wu...K].._\..|+000005b0  86 35 d8 49 3d 0e 9e d9  da a6 0e af 11 57 bf 15  |.5.I=N....N.QW.U|+000005c0  55 63 bc 3b 5d 9c 06 3a  4d 21 62 8b ce 22 72 1f  |Uc.;].F:M!b.."r_|+000005d0  3a 9c 1f 27 aa fe ce d9  5c 93 38 35 52 6f e2 94  |:._'....\.85Ro..|+000005e0  b0 c4 2e d1 2f c6 5a 35  98 13 07 50 85 e3 6d f5  |..../.Z5.SGP..m.|+000005f0  38 c8 55 9a 19 c9 0c 67  72 a4 66 7a 33 43 99 fe  |8.U.Y.Lgr.fz3C..|+00000600  cc 31 c6 51 ac d1 f9 92  d9 8b d1 21 7c 47 12 de  |.1.Q.......!|GR.|+00000610  33 cb 31 ff 9b 35 c4 67  18 ef 1d e6 a8 09 6c a3  |3.1..5.gX.]..Il.|+00000620  87 5b 2b 34 e7 71 df 11  e5 5d 6f c1 b7 66 ea a1  |.[+4.q.Q.]o..f..|+00000630  3a a0 69 2f a9 39 5c af  a6 3a e6 18 d9 3e 55 b7  |:.i/.9\..:.X.>U.|+00000640  6d 35 1a 0a -- -- -- --  -- -- -- -- -- -- -- --  |m5ZJ------------|+Hello.pdf:55:>>+Hello.pdf:63:+00000be0  -- -- -- -- -- ef 54 60  9f c2 db 0a -- -- -- --  |-----.T`...J----|+Hello.pdf:64:+00000be0  -- -- -- -- -- -- -- --  -- -- -- -- 7f 56 d8 bb  |------------~V..|+00000bf0  29 51 be a5 b0 47 e1 4d  85 3f 29 34 b0 bd 06 17  |)Q...G.M.?)4..FW|+00000c00  de b0 a2 7e 77 9d ac 57  d8 bd 6b 9a dc 5d 87 dd  |...~w..W..k..]..|+00000c10  95 fa ae 3a 9f dc 35 0d  bb 02 7a 9d 0f 3b 15 5e  |...:..5M.Bz.O;U^|+00000c20  af 45 a4 66 a8 7c 4d e1  55 1e 5e 6d c5 2b 6c 6b  |.E.f.|M.U^^m.+lk|+00000c30  87 c2 1f 0b b1 bd 10 2f  db 10 4e c2 1f 14 5e 52  |.._K..P/.PN._T^R|+00000c40  81 ab f8 bd c2 8b 0a --  -- -- -- -- -- -- -- --  |......J---------|+Hello.pdf:65:+00000c40  -- -- -- -- -- -- -- bf  4b c2 36 85 17 9e b7 c9  |-------.K.6.W...|+00000c50  17 72 f1 bc 0d cf 6d 75  ca e7 ba 61 ab 13 cf 6e  |Wr..M.mu...a.S.n|+00000c60  f1 cb 67 2b b0 c5 8f df  2a 3c a3 f0 b4 c2 53 4f  |..g+....*<....SO|+00000c70  a6 cb a7 0a -- -- -- --  -- -- -- -- -- -- -- --  |...J------------|+Hello.pdf:68:+00000cf0  -- -- -- -- -- -- -- --  -- -- -- -- -- 54 74 c4  |-------------Tt.|+00000d00  fd 0a -- -- -- -- -- --  -- -- -- -- -- -- -- --  |.J--------------|+Hello.pdf:69:+00000d00  -- -- e5 36 fc 42 61 89  c2 3d 0a -- -- -- -- --  |--.6.Ba..=J-----|+Hello.pdf:73:+00000e60  -- -- -- dd 14 ba 2a 74  b1 c3 97 3a 4c fa 0a --  |---.T.*t...:L.J-|+Hello.pdf:76:+00000ef0  -- -- -- -- -- -- -- --  -- d2 05 70 72 68 85 c6  |---------.Eprh..|+00000f00  80 36 08 82 03 10 7e 90  03 22 22 0a -- -- -- --  |.6H.CP~.C""J----|+Hello.pdf:77:+00000f00  -- -- -- -- -- -- -- --  -- -- -- -- 57 ac 16 59  |------------W.VY|+00000f10  ff 3f 8d fe c7 53 e1 4f  67 84 1a cd be 4d ac e5  |.?...S.Og.Z..M..|+00000f20  d1 d8 47 44 e8 21 6d 19  7f a5 bf bf 22 b4 87 75  |..GD.!mY~..."..u|+00000f30  34 53 2f 22 1a c5 4a b1  93 f9 ad bc b7 68 a4 e5  |4S/"Z.J......h..|+00000f40  74 5e c4 e3 6d d1 9f b9  7a 5e 1b d4 3d 8c d6 d0  |t^..m...z^[.=...|+00000f50  66 73 75 0d 4e d3 62 ec  a2 43 f4 0e 1d 63 ee b4  |fsuMN.b..C.N]c..|+00000f60  18 08 5e 2b 0e 91 47 9c  60 3f 2b 7f f0 a1 a1 9e  |XH^+N.G.`?+~....|+00000f70  a5 3d 4c cb 51 8f a0 e8  24 4a 68 8b 78 89 2d 96  |.=L.Q...$Jh.x.-.|+00000f80  53 44 94 d2 32 8d 47 6d  22 5b de af 1f 64 74 3f  |SD..2.Gm"[.._dt?|+00000f90  3d c4 d7 a3 b4 85 4a 99  37 32 58 ce f1 7f 4c 3b  |=.....J.72X..~L;|+00000fa0  68 15 5d a0 0d da 19 9a  c2 fc 4e da cb f1 28 fe  |hU].M.Y...N...(.|+00000fb0  fc 9a b9 88 26 6a 61 4b  db b4 c1 da 6c d6 db cb  |....&jaK....l...|+00000fc0  d6 36 d1 26 b1 9c 9a 68  91 4e fc 29 57 74 4a 36  |.6.&...h.N.)WtJ6|+00000fd0  69 59 6c 75 07 67 40 34  93 36 cb 26 b9 c1 a8 07  |iYluGg@4.6.&...G|+00000fe0  8f 4d f2 1c cf 10 75 b0  44 2c ae 18 2f 67 61 d4  |.M.\.Pu.D,.X/ga.|+00000ff0  6e ab d8 25 7a 6b e3 e8  10 af 2f a7 c9 b8 0d 77  |n..%zk..P./...Mw|+00001000  e3 98 58 a1 7b f5 25 38  43 35 1a 61 3a dd 49 07  |..X.{.%8C5Za:.IG|+00001010  64 93 c5 45 35 31 5e aa  b1 cc 16 f7 e9 d3 cd ab  |d..E51^...V.....|+00001020  9c ad 95 6b 4b f4 e9 62  1b 9d 61 9b 33 f1 1d cb  |...kK..b[.a.3.].|+00001030  1e 8e 6c b3 99 31 d1 0e  6d a2 1c 27 c7 71 ce b3  |^.l..1.Nm.\'.q..|+00001040  19 db 6c d2 9a 28 b5 38  68 3f 5a b9 ee 6b 35 25  |Y.l..(.8h?Z..k5%|+00001050  46 e9 23 30 84 f3 29 d7  6f a2 0d f4 0c db ed ca  |F.#0..).o.M.L...|+00001060  95 21 2a 45 5f f6 5e 4a  e5 72 75 f4 a2 6d 7c f9  |.!*E_.^J.ru..m|.|+00001070  e5 6a d4 72 45 cd 6a 88  3c 6d 30 6d d6 66 8b 55  |.j.rE.j.<m0m.f.U|+00001080  1c 6d 0b 57 b3 14 f9 d4  9f 7d 74 90 67 69 85 d8  |\mKW.T...}t.gi..|+00001090  c1 71 53 4c 05 2d 92 4d  bc 55 24 ea 41 f4 5a 8c  |.qSLE-.M.U$.A.Z.|+000010a0  45 ea fc f7 a6 6c b7 23  ac f9 46 17 86 03 13 82  |E....l.#..FW.CS.|+000010b0  ee 7d 21 8f 3f fb 27 a2  db 11 e3 0e d3 f8 70 e2  |.}!.?.'..Q.N..p.|+000010c0  7d ee c8 b5 6b e3 83 7a  86 0c 85 65 66 18 be d8  |}...k..z.L.efX..|+000010d0  b0 ee f3 9e fa 4f 93 a7  fc d9 63 c6 07 dd 11 d1  |.....O....c.G.Q.|+000010e0  ae 20 bf cd 6c c1 f4 7c  06 27 05 d9 03 ff 0c 98  |. ..l..|F'E.C.L.|+000010f0  dd 15 30 16 05 46 87 a5  8f 7f a3 a7 87 dd b3 8a  |.U0VEF...~......|+00001100  dd 55 8e 2a ef a0 2a 47  d1 20 3f ef ff b2 c7 30  |.U.*..*G. ?....0|+00001110  19 1f 7c 59 88 47 42 11  71 6d 45 84 f2 3b bc ce  |Y_|Y.GBQqmE..;..|+00001120  bb 48 dc 71 3b 4f c7 65  bb dd 05 73 f3 c3 62 3a  |.H.q;O.e..Es..b:|+00001130  0b f1 d9 0c f4 f0 30 97  90 ed 1e c1 61 8e 98 18  |K..L..0...^.a..X|+00001140  f4 86 dc 55 ee aa d1 85  55 ee 11 ee e2 19 85 1c  |...U....U.Q..Y.\|+00001150  b7 39 f2 44 51 55 28 87  33 98 14 9c cb 74 72 d0  |.9.DQU(.3.T..tr.|+00001160  13 0e 84 32 7e 60 8b 42  21 c3 bb d5 b0 c3 4b 58  |SN.2~`.B!.....KX|+00001170  bd 2a c4 16 ee 6c b3 c0  a3 09 e5 5c 65 a5 c4 ec  |.*.V.l...I.\e...|+00001180  31 ee 30 ba 8c 0f 4e 08  86 2b f3 33 c2 81 fc 50  |1.0..ONH.+.3...P|+00001190  86 c7 e3 2e 08 37 8c 0f  86 1b f2 33 3c a1 10 6b  |....H7.O.[.3<.Pk|+000011a0  d9 7e 88 94 23 ae 98 9b  d6 16 b3 9d 63 b6 f5 e0  |.~..#....V..c...|+000011b0  79 47 d4 0a -- -- -- --  -- -- -- -- -- -- -- --  |yG.J------------|+Hello.pdf:78:+000011b0  -- -- -- -- 97 28 90 11  a6 50 55 95 61 73 52 d0  |----.(.Q.PU.asR.|+000011c0  eb 09 57 56 55 65 54 71  1e 6d 72 84 1a 7e 02 08  |.IWVUeTq^mr.Z~BH|+000011d0  fa 29 10 68 03 22 64 d8  e0 4a 14 f0 f7 60 3c 1b  |.)PhC"d..JT..`<[|+000011e0  e3 c1 eb c9 30 00 af c7  eb e1 38 43 f9 ec db 69  |....0@....8C...i|+000011f0  dc 9a 02 8e d4 13 f2 f3  6e 9c 8a b9 af e4 5e ce  |..B..S..n.....^.|+00001200  fd 9c c1 f3 b3 18 dd e7  f3 f9 82 cf 00 53 58 1e  |.....X......@SX^|+00001210  45 dd fe 6d bf ce f0 7f  d9 b4 1f e9 c1 94 74 93  |E..m...~.._...t.|+00001220  76 e1 67 77 3b 9d 14 99  fc af 2f 56 b5 7a b1 dc  |v.gw;.T.../V.z..|+00001230  c2 a7 aa 18 ea b4 cb dc  f3 13 59 84 eb 55 11 2b  |...X.....SY..UQ+|+00001240  97 6b 3a e5 bc 75 b8 b9  37 39 0e 37 1f 6e ee 95  |.k:..u..79N7_n..|+00001250  ec f4 38 7d 1e a7 a7 58  a7 2b 8b 90 71 e5 0b 55  |..8}^..X.+..q.KU|+00001260  1b 63 fb ee fc 42 4b 77  c3 ac 30 72 d0 47 f1 bf  |[c...BKw..0r.G..|+00001270  20 81 6e 36 4e 15 7c 6f  73 f8 d6 71 b7 3a f8 58  | .n6NU|os..q.:.X|+00001280  f4 1e 77 e6 c5 71 c6 58  96 3c ea dc 63 18 17 2c  |.^w..q.X.<..cXW,|+00001290  c7 bd c7 6f 0b 43 41 e7  6e e1 1e 9f b3 93 a3 8a  |...oKCA.n.^.....|+000012a0  a5 84 ac 5e bd 93 f3 d8  75 9e d3 cb d4 bb b2 51  |...^....u......Q|+000012b0  eb de d8 78 f5 83 46 d9  74 f5 2d ed 86 d6 2c ed  |...x..F.t.-...,.|+000012c0  9b ab 4e f6 af 51 f9 b5  cf f8 ad 51 4e 29 94 49  |..N..Q.....QN).I|+000012d0  79 46 04 3b 19 74 b0 81  08 69 ec 21 93 3d 65 e6  |yFD;Yt..Hi.!.=e.|+000012e0  f0 3b cf 42 89 0c ee a4  64 4a 37 47 a3 0e 86 17  |.;.B.L..dJ7G.N.W|+000012f0  91 e2 49 b1 a4 e6 e5 f6  eb 9f 62 13 5e 37 39 1d  |..I.......bS^79]|+00001300  94 97 9b 14 d3 53 78 3b  5b 62 f4 e9 57 3e 8b 7d  |...T.Sx;[b..W>.}|+00001310  e3 a5 60 43 c9 dc 3d 53  d5 65 75 54 b8 cf 1d b9  |..`C..=S.euT..].|+00001320  14 b6 ae 7d 78 c5 8b b1  5a f5 14 cb 17 fb 06 0c  |T..}x...Z.T.W.FL|+00001330  7c 2d 2b 4b 0c 14 c9 c2  2a 02 ea 93 c7 ca 5e 08  ||-+KLT..*B....^H|+00001340  cf 37 ea 72 8e eb 32 c5  d2 9e bd 76 8d 46 95 c8  |.7.r..2....v.F..|+00001350  b7 d8 88 ca a8 43 dc 71  8e 48 e7 53 9e 11 51 22  |.....C.q.H.S.QQ"|+00001360  c5 47 23 71 a5 5e 2f 52  bc 9d bb f4 75 7a fa 7a  |.G#q.^/R....uz.z|+00001370  b4 03 53 43 1f 9c 79 f6  15 f5 91 38 21 d6 df bf  |.CSC_.y.U..8!...|+00001380  f4 f1 43 6f e2 e2 1a a3  e6 1a ad e4 9c 47 71 ce  |..Co..Z..Z...Gq.|+00001390  09 d4 8e bc 81 64 4b 75  12 55 5b eb 93 36 a6 c5  |I....dKuRU[..6..|+000013a0  25 d9 f3 91 94 f2 b3 34  c7 85 e6 2b c6 2d fc fc  |%......4...+.-..|+000013b0  42 b3 e3 6c 2f d1 d9 92  e2 32 72 ec db a7 4b d7  |B..l/....2r...K.|+000013c0  dc 24 a7 43 f3 76 d6 9c  8e 24 ad b8 7a cd 9a ea  |.$.C.v...$..z...|+000013d0  d5 6b d6 ac 3e 73 a9 e5  ab 33 2d 2d 38 71 f4 48  |.k..>s...3--8q.H|+000013e0  d3 b1 63 4d 47 8e 6e 56  ef ab 4f d5 29 75 48 f8  |..cMG.nV..O.)uH.|+000013f0  f9 b3 d3 51 f4 34 fc 9a  ed da 52 f3 39 35 4e a7  |...Q.4....R.95N.|+00001400  3f 6e 92 c5 2c 7e 7e 6f  a6 89 cc 09 3e 3a 46 75  |?n..,~~o...I>:Fu|+00001410  2c c6 0b 72 e4 84 c9 63  a7 8c c8 1a 5b 34 7f 5e  |,.Kr...c...Z[4~^|+00001420  a9 7f 62 d1 9c c5 f3 66  2c 24 fa 17 20 2d 06 e4  |.~b....f,$.W -F.|+00001430  0a -- -- -- -- -- -- --  -- -- -- -- -- -- -- --  |J---------------|+Hello.pdf:85:(Hello)+Hello.pdf:91:(TextEdit)+Hello.pdf:94:(D:20200124010711Z00'00')+Hello.pdf:97:()+Hello.pdf:100:[ ]+Hello.pdf:131:<8db88d3335070bd9583341583cf769a3> ] >>+Hello.pdf:134:%%EOF+Hello.txt:1:Hello+emptyline.txt:1:

tests/out/Hello_wnhS-W-nvC2.out

new file mode 100644@@ -0,0 +1,377 @@+Hello.class:1:+00000000  ca fe ba be 00 00 00 34  00 1d 0a -- -- -- -- --  |....@@@4@]J-----|+Hello.class:2:+00000000  -- -- -- -- -- -- -- --  -- -- -- 00 06 00 0f 09  |-----------@F@OI|+00000010  00 10 00 11 08 00 12 0a  -- -- -- -- -- -- -- --  |@P@QH@RJ--------|+Hello.class:3:+00000010  -- -- -- -- -- -- -- --  00 13 00 14 07 00 15 07  |--------@S@TG@UG|+00000020  00 16 01 00 06 3c 69 6e  69 74 3e 01 00 03 28 29  |@VA@F<init>A@C()|+00000030  56 01 00 04 43 6f 64 65  01 00 0f 4c 69 6e 65 4e  |VA@DCodeA@OLineN|+00000040  75 6d 62 65 72 54 61 62  6c 65 01 00 04 6d 61 69  |umberTableA@Dmai|+00000050  6e 01 00 16 28 5b 4c 6a  61 76 61 2f 6c 61 6e 67  |nA@V([Ljava/lang|+00000060  2f 53 74 72 69 6e 67 3b  29 56 01 00 0a -- -- --  |/String;)VA@J---|+Hello.class:4:+00000060  -- -- -- -- -- -- -- --  -- -- -- -- -- 53 6f 75  |-------------Sou|+00000070  72 63 65 46 69 6c 65 01  00 0a -- -- -- -- -- --  |rceFileA@J------|+Hello.class-5-+00000070  -- -- -- -- -- -- -- --  -- -- 48 65 6c 6c 6f 2e  |----------Hello.|+00000080  6a 61 76 61 0c 00 07 00  08 07 00 17 0c 00 18 00  |javaL@G@HG@WL@X@|+00000090  19 01 00 0c 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |YA@LHello World!|+000000a0  07 00 1a 0c 00 1b 00 1c  01 00 05 48 65 6c 6c 6f  |G@ZL@[@\A@EHello|+000000b0  01 00 10 6a 61 76 61 2f  6c 61 6e 67 2f 4f 62 6a  |A@Pjava/lang/Obj|+000000c0  65 63 74 01 00 10 6a 61  76 61 2f 6c 61 6e 67 2f  |ectA@Pjava/lang/|+000000d0  53 79 73 74 65 6d 01 00  03 6f 75 74 01 00 15 4c  |SystemA@CoutA@UL|+000000e0  6a 61 76 61 2f 69 6f 2f  50 72 69 6e 74 53 74 72  |java/io/PrintStr|+000000f0  65 61 6d 3b 01 00 13 6a  61 76 61 2f 69 6f 2f 50  |eam;A@Sjava/io/P|+00000100  72 69 6e 74 53 74 72 65  61 6d 01 00 07 70 72 69  |rintStreamA@Gpri|+00000110  6e 74 6c 6e 01 00 15 28  4c 6a 61 76 61 2f 6c 61  |ntlnA@U(Ljava/la|+00000120  6e 67 2f 53 74 72 69 6e  67 3b 29 56 00 21 00 05  |ng/String;)V@!@E|+00000130  00 06 00 00 00 00 00 02  00 01 00 07 00 08 00 01  |@F@@@@@B@A@G@H@A|+00000140  00 09 00 00 00 1d 00 01  00 01 00 00 00 05 2a b7  |@I@@@]@A@A@@@E*.|+00000150  00 01 b1 00 00 00 01 00  0a -- -- -- -- -- -- --  |@A.@@@A@J-------|+Hello.class:6:+00000150  -- -- -- -- -- -- -- --  -- 00 00 00 06 00 01 00  |---------@@@F@A@|+00000160  00 00 03 00 09 00 0b 00  0c 00 01 00 09 00 00 00  |@@C@I@K@L@A@I@@@|+00000170  25 00 02 00 01 00 00 00  09 b2 00 02 12 03 b6 00  |%@B@A@@@I.@BRC.@|+00000180  04 b1 00 00 00 01 00 0a  -- -- -- -- -- -- -- --  |D.@@@A@J--------|+Hello.class:7:+00000180  -- -- -- -- -- -- -- --  00 00 00 0a -- -- -- --  |--------@@@J----|+Hello.class:8:+00000180  -- -- -- -- -- -- -- --  -- -- -- -- 00 02 00 00  |------------@B@@|+00000190  00 05 00 08 00 06 00 01  00 0d 00 00 00 02 00 0e  |@E@H@F@A@M@@@B@N|+Hello.java-1-import java.lang.*;+Hello.java:2:+Hello.java-3-public class Hello // prints a Hello World! greeting+Hello.java-4-{ public static void main(String[] arg)+Hello.java-5-  { System.out.println("Hello World!");+Hello.java:6:  }+Hello.java:7:}+Hello.pdf-14-2 0 obj+Hello.pdf-15-<< /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]+Hello.pdf:16:>>+Hello.pdf-17-endobj+Hello.pdf-18-6 0 obj+Hello.pdf-19-<< /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R >> /Font << /TT1 8 0 R+Hello.pdf:20:>> >>+Hello.pdf-21-endobj+Hello.pdf-22-9 0 obj+--+Hello.pdf-25-+00000200  -- -- -- -- -- -- -- --  -- -- -- -- 78 01 85 55  |------------xA.U|+00000210  5d 68 1c 55 14 3e bb 73  67 03 12 07 1f b4 0d 2d  |]h\UT>.sgCRG_.M-|+00000220  b4 83 3f 6d 09 e9 32 89  56 13 8b b5 db 4d ba 49  |..?mI.2.VS...M.I|+00000230  13 b7 eb 66 53 9b 2a ca  74 76 36 3b cd 64 66 9c  |S..fS.*.tv6;.df.|+00000240  99 dd 26 a1 4f a5 e0 9b  16 04 e9 ab a0 3e c6 82  |..&.O...VD...>..|+00000250  08 b6 2a 36 2f f6 a5 a5  c5 92 4a 35 0f 0a -- --  |H.*6/.....J5OJ--|+Hello.pdf-26-+00000250  -- -- -- -- -- -- -- --  -- -- -- -- -- -- 11 5a  |--------------QZ|+00000260  8c 20 28 7d 52 f0 3b 33  db 64 76 41 32 c3 9d f9  |. (}R.;3.dvA2...|+00000270  ee b9 e7 9e 7b ce 77 ee  b9 97 a8 eb 6f dd f3 ec  |....{.w.....o...|+00000280  b4 4a 34 e7 84 7e a1 9c  9b 3e 39 7d 4a ed ba 4d  |.J4..~...>9}J..M|+00000290  69 52 a8 9b f0 e8 46 e0  e5 4a a5 09 c6 8e eb 98  |iR....F..J.I....|+000002a0  fc 6f 7f 1e de a5 14 4b  ee ec 67 5b ed 63 5b f6  |.o~^..TK..g[.c[.|+000002b0  e4 aa 19 18 d0 ba 86 e6  56 03 63 8e 28 a5 11 65  |..YX....VCc.(.Qe|+000002c0  6a 86 e7 87 44 5d 97 20  1f 3c 1b 7a 8c 6f 03 3f  |j...D]. _<[z.oC?|+000002d0  39 5b 29 e7 81 d7 80 95  d6 5c 40 7a aa 60 3a a6  |9[)......\@z.`:.|+000002e0  6f 19 6a c1 d7 17 d4 92  ef d6 2c 3b e9 eb 56 e3  |oYj..W....,;..V.|+000002f0  6c 63 cb 67 ce 6e b0 af  fc ec 46 eb 0e 66 27 c7  |lc.g.n....F.Nf'.|+00000300  f1 ef 85 cf 17 4c 67 6a  12 78 1f f0 92 a1 8f 30  |....WLgjRx_....0|+00000310  ee 03 be db b4 4e 14 63  9c 4e 7b e1 91 72 ac 9f  |.C...NTc.N{..r..|+00000320  ce 36 66 a7 72 2d f9 c9  9a 7f 74 aa 25 bf 50 6f  |.6f.r-...~t.%.Po|+00000330  8c 32 ce 12 a5 97 16 eb  95 37 80 9f 00 5e 75 4e  |.2.R..V..7..@^uN|+00000340  17 8f b7 f4 d7 67 dd 71  b6 d3 43 24 f5 18 41 fe  |W....g.q..C$.XA.|+00000350  14 f0 b3 c0 5a dd 1c e3  3c a9 c0 15 df 2d b3 3e  |T...Z.\.<..U.-.>|+00000360  cb c3 aa 39 3c 02 fc 32  f0 25 2b 1c ab 00 c3 be  |...9<B.2.%+\.@..|+00000370  f4 43 d0 9c 64 39 b0 a0  c5 7a 9e fd c4 5a 22 7b  |.C..d9...z...Z"{|+00000380  46 3f 56 02 de 06 7c c8  b4 0b bc 16 ec 88 8a 17  |F?VB.F|..K.V...W|+00000390  96 d8 e6 20 f0 bc 63 17  79 2d c4 2e 2e 9b 41 14  |... ..cWy-....AT|+000003a0  2f 62 17 3f 85 f5 ca 68  ac 2f a7 43 bf c2 73 9f  |/bW?...h./.C..s.|+000003b0  26 92 f7 d4 ac a3 63 c0  e0 44 1e ad fb a3 2c 87  |&.....c..D^...,.|+000003c0  3f 72 e8 d9 d1 de 7a 11  78 c9 6f 94 39 f6 3d c0  |?r....zQx.o.9.=.|+000003d0  6b ba 3f 52 00 86 cd cc  63 55 7d 98 79 7e 01 78  |k.?R@...cU}.y~Ax|+000003e0  80 4e a4 74 32 c9 a5 d3  f8 1a e4 d0 bf 88 37 20  |.N.t2....Z....7 |+000003f0  8b 9a 11 f2 c8 c7 58 0d  7d 9b 0a -- -- -- -- --  |..Q...XM}.J-----|+Hello.pdf:27:+000003f0  -- -- -- -- -- -- -- --  -- -- -- d0 70 d0 7c f4  |-----------.p.|.|+00000400  0c 68 15 80 74 5a 00 2a  25 b4 4c f4 58 27 9e a3  |LhU.tZ@*%.L.X'..|+00000410  52 15 3d 95 66 a2 59 41  84 d8 ca fd a8 6f 50 7e  |RU=.f.YA.....oP~|+00000420  d7 a7 d4 80 b4 4e eb 90  d6 81 5e a3 5f 22 c9 3c  |.....N....^._".<|+00000430  fd 4a 73 e8 e7 21 6d 60  6c a6 c3 6e 1e 5e 38 b4  |.Js..!m`l..n^^8.|+00000440  08 0f d8 13 b6 f9 a0 65  d3 15 db 85 26 9e 47 3b  |HO.S...e.U..&.G;|+00000450  28 26 c4 2b 62 50 0c 91  2a 5e 15 87 c5 21 31 0c  |(&.+bPL.*^U..!1L|+00000460  e9 90 38 18 cd 89 bd 4f  fa ce 7e 3e d8 b0 f4 2e  |..8X...O..~>....|+00000470  d6 4d fa be 0c 0e 42 ac  67 c3 33 07 ac 70 34 01  |.M..LNB.g.3G.p4A|+00000480  3c f8 07 eb ce 46 9a 09  b6 2e ee 68 ec f3 bc 8f  |<.G..F.I...h....|+00000490  de 3f ef bf 63 19 b7 3e  f8 b3 8d bd 00 fa 31 27  |.?..cY.>....@.1'|+000004a0  bf c1 a2 0b 6b 26 25 e6  5e 3f f7 4d 4f c2 43 75  |...Kk&%.^?.MO.Cu|+000004b0  45 7c f5 d6 9d ee eb e7  e8 78 32 4b 51 de aa 9d  |E|.......x2KQ...|+000004c0  59 92 d7 e4 fb f2 0a --  -- -- -- -- -- -- -- --  |Y.....J---------|+Hello.pdf:28:+000004c0  -- -- -- -- -- -- -- be  f7 e4 d5 a4 0d f9 67 79  |-------.....M.gy|+000004d0  15 ef bd b6 5c 3d ca 0b  ff 93 b9 cd 21 46 3b 92  |U...\=.K....!F;.|+000004e0  cd 41 ce 3c 9b 51 b4 71  c6 1b c0 21 b8 a9 45 73  |.A.<.Q.q.[.!..Es|+000004f0  f6 b7 59 4c b2 e9 b6 62  b4 60 c9 42 94 9d ab b8  |..YL...b.`.B....|+00000500  ff cb 09 f3 c3 3c b7 b1  52 73 2e ee f0 bc b7 3f  |..I..<..Rs.....?|+00000510  63 36 cd f7 8a 0f 8b 74  be 4f bb ac ad 6b 9f 68  |c6...O.t.O...k.h|+00000520  3f 6a 7f 68 2b da c7 40  bf 4b 1f 4a 5f 4a df 4a  |?j~h+..@.K_J_J.J|+00000530  57 a4 ab d2 0d 52 a5 6b  d2 b2 f4 9d f4 bd f4 b9  |W...MR.k........|+00000540  f4 35 7a 5f 40 ba 2c 5d  e9 d8 49 71 ec 1b bb 07  |.5z_@.,]..Iq.[.G|+00000550  7e c6 7b d6 68 ed 30 66  86 b3 14 10 f3 c2 da cc  |~.{.h.0f..TP....|+00000560  0a -- -- -- -- -- -- --  -- -- -- -- -- -- -- --  |J---------------|+Hello.pdf:29:+00000560  -- 4b 1f f1 77 06 63 9b  f9 33 a1 d5 5e 03 9d bb  |-K_.wFc..3..^C..|+00000570  7f 63 2d e5 88 b2 53 79  46 19 56 76 2b cf 29 13  |~c-...SyFYVv+.)S|+00000580  4a af 72 40 39 ac 6c 57  06 d0 fa 95 51 65 2f 46  |J.r@9.lWF...Qe/F|+00000590  76 6e b0 64 63 3d ce 80  85 7f 92 67 8b a6 23 ae  |vn.dc=...~.g..#.|+000005a0  e2 3c b1 57 75 b0 e7 c3  4b 1d ef a6 5f 5c c3 d6  |.<.Wu...K].._\..|+000005b0  86 35 d8 49 3d 0e 9e d9  da a6 0e af 11 57 bf 15  |.5.I=N....N.QW.U|+000005c0  55 63 bc 3b 5d 9c 06 3a  4d 21 62 8b ce 22 72 1f  |Uc.;].F:M!b.."r_|+000005d0  3a 9c 1f 27 aa fe ce d9  5c 93 38 35 52 6f e2 94  |:._'....\.85Ro..|+000005e0  b0 c4 2e d1 2f c6 5a 35  98 13 07 50 85 e3 6d f5  |..../.Z5.SGP..m.|+000005f0  38 c8 55 9a 19 c9 0c 67  72 a4 66 7a 33 43 99 fe  |8.U.Y.Lgr.fz3C..|+00000600  cc 31 c6 51 ac d1 f9 92  d9 8b d1 21 7c 47 12 de  |.1.Q.......!|GR.|+00000610  33 cb 31 ff 9b 35 c4 67  18 ef 1d e6 a8 09 6c a3  |3.1..5.gX.]..Il.|+00000620  87 5b 2b 34 e7 71 df 11  e5 5d 6f c1 b7 66 ea a1  |.[+4.q.Q.]o..f..|+00000630  3a a0 69 2f a9 39 5c af  a6 3a e6 18 d9 3e 55 b7  |:.i/.9\..:.X.>U.|+00000640  6d 35 1a 0a -- -- -- --  -- -- -- -- -- -- -- --  |m5ZJ------------|+Hello.pdf-30-+00000640  -- -- -- -- 54 df 0c 4c  bf 69 56 b3 c4 77 37 cf  |----T.LL.iV..w7.|+00000650  23 fa eb f5 e8 4e 4e 6d  bb 61 34 fc 66 2c a3 54  |#....NNm.a4.f,.T|+00000660  ea 26 d1 7f b7 8f 93 34  0a 65 6e 64 73 74 72 65  |.&.~...4Jendstre|+00000670  61 6d 0a -- -- -- -- --  -- -- -- -- -- -- -- --  |amJ-------------|+--+Hello.pdf-53-[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729+Hello.pdf-54-/StemV 99 /XHeight 547 /StemH 83 /AvgWidth 602 /MaxWidth 602 /FontFile2 13 0 R+Hello.pdf:55:>>+Hello.pdf-56-endobj+Hello.pdf-57-13 0 obj+--+Hello.pdf-61-+000009c0  -- -- -- -- -- -- -- --  -- -- -- -- -- -- -- f8  |---------------.|+000009d0  a2 68 8a 14 21 d8 00 43  cf bd 1b fd 3e ed d7 ef  |.h.T!.@C..[.>...|+000009e0  eb bf ed dc 9d 33 e7 fc  e6 cc 79 dd bb f7 ce 94  |.....3....y.....|+000009f0  2d 5c 5c 44 56 aa 24 50  60 56 c9 8c 05 64 36 eb  |-\\DV.$P`V..Ed6.|+00000a00  49 1e 8a 67 dd 53 e6 36  45 8a bd 97 48 cb 9d bd  |I^.g.S.6E...H...|+00000a10  60 4e 49 54 8e 7f 91 e5  4e 73 e6 dd 37 3b 2a 27  |`NIT.~..Ns..7;*'|+00000a20  4e 66 79 40 71 d1 8c c2  a8 4c 57 78 ec 57 cc 40  |Nfy@q....LWx.W.@|+00000a30  54 16 7d 78 bc ae b8 a4  8c ed 18 cd fa 2e 13 d7  |TV}x......X...S.|+00000a40  bc d2 59 6d f3 89 a3 0c  b0 64 c6 bd 6d fe e9 38  |..Ym...L.d..m..8|+00000a50  cb ee f9 33 4a 8a 78 e4  66 8f 30 e9 b6 a0 74 51  |...3J.x.f.0...tQ|+00000a60  99 29 92 bd 9a c7 ec 05  0b 8b da f4 45 90 28 a6  |.).....EK...E.(.|+00000a70  53 74 ae 8d 1a 96 05 77  a9 59 29 8b ee 22 0b 69  |St..Z.Ew.Y).."Ki|+00000a80  e4 a0 8d 94 c4 d0 ad ac  2b 79 d6 98 d7 62 b2 96  |........+y...b..|+00000a90  3e 7d f6 8d 3b ec 37 5c  a4 4e b1 e6 e2 bd 65 e9  |>}..;.7\.N....e.|+00000aa0  79 06 73 28 b8 a4 df e5  95 57 85 ac 8f bd 85 c5  |yFs(.....W......|+00000ab0  e8 a4 31 c1 eb 62 4a 54  07 22 fd e0 e5 95 d7 92  |..1..bJTG"......|+00000ac0  65 bd 69 c9 98 f9 be c9  08 c5 66 bd ae 55 8a 94  |e.i.....H.f..U..|+00000ad0  ed eb a6 c9 a1 99 22 85  6a 09 4c 2b 49 17 2e 52  |......".jIL+IW.R|+00000ae0  cc 27 9b 34 89 03 82 70  9a bc c3 a4 76 da c4 88  |.'.4.C.p....v...|+00000af0  cd e4 13 b7 7f 3d 52 0e  f5 89 44 aa 60 cc 4a 3e  |..S.~=RN..D.`.J>|+00000b00  a6 09 94 cb 34 de b4 17  67 6a c5 92 8d 91 18 93  |.I..4..Wgj....X.|+00000b10  b7 98 3a d2 e4 75 13 87  89 68 26 22 02 21 05 a5  |..:..uS..h&"B!E.|+00000b20  70 b5 02 57 14 2e 2b b4  e6 e2 9f 75 f8 ae 02 97  |p.BWT.+....u..B.|+00000b30  5a aa e5 25 85 4b 0d 7a  cb c5 90 6c a9 46 4b a5  |Z..%.KMz...l.FK.|+00000b40  7e f1 42 17 79 31 84 8b  01 fd 42 17 7c 7b 3e 47  |~.BWy1..A.BW|{>G|+00000b50  7e db 8a f3 39 f8 87 c2  39 85 6f 72 71 d6 85 bf  |~...9...9.orq...|+00000b60  d7 a2 99 43 6c 56 68 8e  5c 3b 18 b8 a6 7f 3d 12  |...ClVh.\;X..~=R|+00000b70  5f 9d 29 94 5f d5 e2 4c  21 fe a6 70 fa cb 0c 79  |_.)._..L!..p..Ly|+00000b80  5a e1 cb 0c 7c a1 f0 f9  5d f8 4c e1 d3 3a 9c 3a  |Z..L|...].L..:.:|+00000b90  99 2e 4f b5 e2 64 3a 4e  d4 e2 13 85 8f 15 8e 1f  |..O..d:N..S..U._|+00000ba0  4b 91 c7 15 8e a5 e0 68  2d 3e fa 30 45 7e a4 f0  |K..U...h->.0E~..|+00000bb0  e1 ea 04 f9 61 0a -- --  -- -- -- -- -- -- -- --  |..D.aJ----------|+Hello.pdf-62->¨À‘Ahb¡i+z?^Rx?ÞS8På”2ñ×TìWx·�«|²Qá/+Hello.pdf:63:+00000be0  -- -- -- -- -- ef 54 60  9f c2 db 0a -- -- -- --  |-----.T`...J----|+Hello.pdf:64:+00000be0  -- -- -- -- -- -- -- --  -- -- -- -- 7f 56 d8 bb  |------------~V..|+00000bf0  29 51 be a5 b0 47 e1 4d  85 3f 29 34 b0 bd 06 17  |)Q...G.M.?)4..FW|+00000c00  de b0 a2 7e 77 9d ac 57  d8 bd 6b 9a dc 5d 87 dd  |...~w..W..k..]..|+00000c10  95 fa ae 3a 9f dc 35 0d  bb 02 7a 9d 0f 3b 15 5e  |...:..5M.Bz.O;U^|+00000c20  af 45 a4 66 a8 7c 4d e1  55 1e 5e 6d c5 2b 6c 6b  |.E.f.|M.U^^m.+lk|+00000c30  87 c2 1f 0b b1 bd 10 2f  db 10 4e c2 1f 14 5e 52  |.._K..P/.PN._T^R|+00000c40  81 ab f8 bd c2 8b 0a --  -- -- -- -- -- -- -- --  |......J---------|+Hello.pdf:65:+00000c40  -- -- -- -- -- -- -- bf  4b c2 36 85 17 9e b7 c9  |-------.K.6.W...|+00000c50  17 72 f1 bc 0d cf 6d 75  ca e7 ba 61 ab 13 cf 6e  |Wr..M.mu...a.S.n|+00000c60  f1 cb 67 2b b0 c5 8f df  2a 3c a3 f0 b4 c2 53 4f  |..g+....*<....SO|+00000c70  a6 cb a7 0a -- -- -- --  -- -- -- -- -- -- -- --  |...J------------|+Hello.pdf-66-+00000c70  -- -- -- -- f1 e4 13 0e  f9 64 3a 9e 70 e0 37 f1  |----..SN.d:.p.7.|+00000c80  d8 ac f0 38 3b 79 5c 61  53 22 36 6e e8 29 37 2a  |...8;y\aS"6n.)7*|+00000c90  6c e8 89 c7 d8 ff 63 b5  a8 5d 5f 27 6b 15 d6 f3  |l.....c..]_'kU..|+00000ca0  b3 b5 be 0e eb 2b f5 75  6b 7c 72 dd 34 ac 0b e8  |...N.+.uk|r.4.K.|+00000cb0  8f 2a fc 5a 61 2d cb 6b  eb b0 c6 87 1a 2e 46 cd  |.*.Za-.k....Z.F.|+00000cc0  50 3c c2 d9 3e e2 c2 ea  04 54 33 50 5d 88 55 5c  |P<..>...DT3P].U\|+00000cd0  b4 55 3e 54 39 b1 52 e1  61 85 87 14 1e 5c e1 94  |.U>T9.R.a..T^\..|+00000ce0  0f 2a ac 70 e2 57 0a cb  15 1e 70 0e 93 0f 4c c2  |O*.p.WJ.U^pN.OL.|+00000cf0  2f 15 2a ef c5 b2 a5 15  72 99 c2 d2 0a -- -- --  |/U*....Ur...J---|+Hello.pdf:68:+00000cf0  -- -- -- -- -- -- -- --  -- -- -- -- -- 54 74 c4  |-------------Tt.|+00000d00  fd 0a -- -- -- -- -- --  -- -- -- -- -- -- -- --  |.J--------------|+Hello.pdf:69:+00000d00  -- -- e5 36 fc 42 61 89  c2 3d 0a -- -- -- -- --  |--.6.Ba..=J-----|+Hello.pdf-70-+00000d00  -- -- -- -- -- -- -- --  -- -- -- 8b cb ac 72 b1  |-----------...r.|+00000d10  1d 8b 23 82 02 47 f5 32  2b ca 1a f4 45 49 58 14  |].#.BG.2+.Z.EIXT|+00000d20  d0 17 2a dc ad b0 40 a1  74 fe 24 59 5a 8b f9 25  |.W*...@.t.$YZ..%|+00000d30  dd e4 fc 49 28 e9 86 79  0a 77 e5 e2 4e 85 b9 b9  |...I(..yJw..N...|+00000d40  28 6e c5 9c 3a cc 56 28  52 28 54 98 35 b3 a3 9c  |(n..:.V(R(T.5...|+00000d50  a5 30 93 1c 72 66 47 cc  50 98 ae 70 87 c2 ed 53  |.0.\rfG.P..p...S|+00000d60  12 e4 ed 36 4c 2b c4 6d  fb 30 95 85 a9 2e 4c 49  |R..6L+.m.0....LI|+00000d70  00 3f d1 41 17 6e 55 f8  b9 c2 2d 19 e9 f2 96 5c  |@?.AWnU...-Y...\|+00000d80  4c 56 98 a4 30 51 61 42  05 c6 2b dc ec c2 38 85  |LV..0QaBE.+...8.|+00000d90  b1 c2 2f c7 2a dc 54 87  31 dd 70 e3 e8 34 79 63  |../.*.T.1.p..4yc|+00000da0  7f 8c 1e 9e 24 47 a7 61  54 41 9a 1c a5 30 92 a5  |~.^.$G.aTA.\.0..|+00000db0  91 85 18 c1 d2 88 3a 14  a4 21 9f 81 fc fe 18 3e  |..X...:T.!....X>|+00000dc0  cc 29 87 27 61 78 44 0b  04 e2 f4 61 43 ed 72 98  |.).'axDKD..aC.r.|+00000dd0  13 c3 22 1a b1 34 34 60  93 43 ed 18 1a 11 0d 2c  |S."Z.44`.C.XZQM,|+00000de0  05 86 58 65 c0 86 40 44  54 b2 34 c4 1a 27 87 58  |E.Xe..@DT.4.Z'.X|+00000df0  31 24 22 02 81 42 fd 67  0a -- -- -- -- -- -- --  |1$"B.B.gJ-------|+Hello.pdf-72-+00000df0  -- -- -- -- -- -- -- --  -- 83 39 84 c1 ad b8 41  |---------.9....A|+00000e00  e1 fa 6e 18 a4 30 90 0b  3c b0 10 03 7a b7 97 03  |..nX.0.K<.PCz..C|+00000e10  c6 a0 bf 42 3f bf 4b f6  53 e8 3b 06 7d 7a b5 97  |...B?.K.S.;F}z..|+00000e20  7d c6 20 8f 87 3c 85 5c  56 cc 55 e8 cd d3 bd db  |}. ..<.\V.U.....|+00000e30  a3 57 7b e4 30 97 93 86  9e 71 a9 b2 67 1d fc d9  |.W{.0....q..g]..|+00000e40  c9 d2 ef 82 3f a2 19 6e  b3 1d 4e 99 9d 8c 6c 23  |....?.Yn.]N...l#|+00000e50  dc 5a 3d ab 87 4f 66 29  f4 60 cd 1e 3e 74 d7 06  |.Z=..Of).`.^>t.F|+00000e60  c9 ee 0a -- -- -- -- --  -- -- -- -- -- -- -- --  |..J-------------|+Hello.pdf:73:+00000e60  -- -- -- dd 14 ba 2a 74  b1 c3 97 3a 4c fa 0a --  |---.T.*t...:L.J-|+Hello.pdf-74-+00000e60  -- -- -- -- -- -- -- --  -- -- -- -- -- -- -- 70  |---------------p|+00000e70  9d 1d 5e 85 ce 76 bb ec  ac e0 71 fb a5 a7 02 6e  |.]^..v....q...Bn|+00000e80  3f 3a 8d 41 47 f6 dc 51  a1 83 42 26 d7 36 53 21  |?:.AG..Q..B&.6S!|+00000e90  83 ef 4a 46 3a da 2b a4  2b a4 29 b4 63 0b ed 46  |..JF:.+.+.).cK.F|+00000ea0  20 35 c5 2f 53 87 21 c5  e5 90 29 7e b8 1c 48 66  | 5./S.!...)~.\Hf|+00000eb0  bd 64 17 92 78 7d 92 82  93 33 77 0e 83 83 3d 38  |.dW.x}...3wN..=8|+00000ec0  9c 70 44 6b 67 b7 59 a5  dd 0e 7b b4 76 b6 c4 78  |.pDkg.Y..N{.v..x|+00000ed0  69 b3 c2 16 ad 5d 22 d7  2e 31 1e 89 5c bb 1d ba  |i..V.]"..1^.\.].|+00000ee0  35 0e 56 e3 d9 ea af 27  28 c4 73 26 f1 0a -- --  |5NV....'(.s&.J--|+Hello.pdf-75-+00000ee0  -- -- -- -- -- -- -- --  -- -- -- -- -- -- 71 a9  |--------------q.|+00000ef0  88 75 20 46 c1 c2 a6 2d  0a -- -- -- -- -- -- --  |.u F...-J-------|+Hello.pdf:76:+00000ef0  -- -- -- -- -- -- -- --  -- d2 05 70 72 68 85 c6  |---------.Eprh..|+00000f00  80 36 08 82 03 10 7e 90  03 22 22 0a -- -- -- --  |.6H.CP~.C""J----|+Hello.pdf:77:+00000f00  -- -- -- -- -- -- -- --  -- -- -- -- 57 ac 16 59  |------------W.VY|+00000f10  ff 3f 8d fe c7 53 e1 4f  67 84 1a cd be 4d ac e5  |.?...S.Og.Z..M..|+00000f20  d1 d8 47 44 e8 21 6d 19  7f a5 bf bf 22 b4 87 75  |..GD.!mY~..."..u|+00000f30  34 53 2f 22 1a c5 4a b1  93 f9 ad bc b7 68 a4 e5  |4S/"Z.J......h..|+00000f40  74 5e c4 e3 6d d1 9f b9  7a 5e 1b d4 3d 8c d6 d0  |t^..m...z^[.=...|+00000f50  66 73 75 0d 4e d3 62 ec  a2 43 f4 0e 1d 63 ee b4  |fsuMN.b..C.N]c..|+00000f60  18 08 5e 2b 0e 91 47 9c  60 3f 2b 7f f0 a1 a1 9e  |XH^+N.G.`?+~....|+00000f70  a5 3d 4c cb 51 8f a0 e8  24 4a 68 8b 78 89 2d 96  |.=L.Q...$Jh.x.-.|+00000f80  53 44 94 d2 32 8d 47 6d  22 5b de af 1f 64 74 3f  |SD..2.Gm"[.._dt?|+00000f90  3d c4 d7 a3 b4 85 4a 99  37 32 58 ce f1 7f 4c 3b  |=.....J.72X..~L;|+00000fa0  68 15 5d a0 0d da 19 9a  c2 fc 4e da cb f1 28 fe  |hU].M.Y...N...(.|+00000fb0  fc 9a b9 88 26 6a 61 4b  db b4 c1 da 6c d6 db cb  |....&jaK....l...|+00000fc0  d6 36 d1 26 b1 9c 9a 68  91 4e fc 29 57 74 4a 36  |.6.&...h.N.)WtJ6|+00000fd0  69 59 6c 75 07 67 40 34  93 36 cb 26 b9 c1 a8 07  |iYluGg@4.6.&...G|+00000fe0  8f 4d f2 1c cf 10 75 b0  44 2c ae 18 2f 67 61 d4  |.M.\.Pu.D,.X/ga.|+00000ff0  6e ab d8 25 7a 6b e3 e8  10 af 2f a7 c9 b8 0d 77  |n..%zk..P./...Mw|+00001000  e3 98 58 a1 7b f5 25 38  43 35 1a 61 3a dd 49 07  |..X.{.%8C5Za:.IG|+00001010  64 93 c5 45 35 31 5e aa  b1 cc 16 f7 e9 d3 cd ab  |d..E51^...V.....|+00001020  9c ad 95 6b 4b f4 e9 62  1b 9d 61 9b 33 f1 1d cb  |...kK..b[.a.3.].|+00001030  1e 8e 6c b3 99 31 d1 0e  6d a2 1c 27 c7 71 ce b3  |^.l..1.Nm.\'.q..|+00001040  19 db 6c d2 9a 28 b5 38  68 3f 5a b9 ee 6b 35 25  |Y.l..(.8h?Z..k5%|+00001050  46 e9 23 30 84 f3 29 d7  6f a2 0d f4 0c db ed ca  |F.#0..).o.M.L...|+00001060  95 21 2a 45 5f f6 5e 4a  e5 72 75 f4 a2 6d 7c f9  |.!*E_.^J.ru..m|.|+00001070  e5 6a d4 72 45 cd 6a 88  3c 6d 30 6d d6 66 8b 55  |.j.rE.j.<m0m.f.U|+00001080  1c 6d 0b 57 b3 14 f9 d4  9f 7d 74 90 67 69 85 d8  |\mKW.T...}t.gi..|+00001090  c1 71 53 4c 05 2d 92 4d  bc 55 24 ea 41 f4 5a 8c  |.qSLE-.M.U$.A.Z.|+000010a0  45 ea fc f7 a6 6c b7 23  ac f9 46 17 86 03 13 82  |E....l.#..FW.CS.|+000010b0  ee 7d 21 8f 3f fb 27 a2  db 11 e3 0e d3 f8 70 e2  |.}!.?.'..Q.N..p.|+000010c0  7d ee c8 b5 6b e3 83 7a  86 0c 85 65 66 18 be d8  |}...k..z.L.efX..|+000010d0  b0 ee f3 9e fa 4f 93 a7  fc d9 63 c6 07 dd 11 d1  |.....O....c.G.Q.|+000010e0  ae 20 bf cd 6c c1 f4 7c  06 27 05 d9 03 ff 0c 98  |. ..l..|F'E.C.L.|+000010f0  dd 15 30 16 05 46 87 a5  8f 7f a3 a7 87 dd b3 8a  |.U0VEF...~......|+00001100  dd 55 8e 2a ef a0 2a 47  d1 20 3f ef ff b2 c7 30  |.U.*..*G. ?....0|+00001110  19 1f 7c 59 88 47 42 11  71 6d 45 84 f2 3b bc ce  |Y_|Y.GBQqmE..;..|+00001120  bb 48 dc 71 3b 4f c7 65  bb dd 05 73 f3 c3 62 3a  |.H.q;O.e..Es..b:|+00001130  0b f1 d9 0c f4 f0 30 97  90 ed 1e c1 61 8e 98 18  |K..L..0...^.a..X|+00001140  f4 86 dc 55 ee aa d1 85  55 ee 11 ee e2 19 85 1c  |...U....U.Q..Y.\|+00001150  b7 39 f2 44 51 55 28 87  33 98 14 9c cb 74 72 d0  |.9.DQU(.3.T..tr.|+00001160  13 0e 84 32 7e 60 8b 42  21 c3 bb d5 b0 c3 4b 58  |SN.2~`.B!.....KX|+00001170  bd 2a c4 16 ee 6c b3 c0  a3 09 e5 5c 65 a5 c4 ec  |.*.V.l...I.\e...|+00001180  31 ee 30 ba 8c 0f 4e 08  86 2b f3 33 c2 81 fc 50  |1.0..ONH.+.3...P|+00001190  86 c7 e3 2e 08 37 8c 0f  86 1b f2 33 3c a1 10 6b  |....H7.O.[.3<.Pk|+000011a0  d9 7e 88 94 23 ae 98 9b  d6 16 b3 9d 63 b6 f5 e0  |.~..#....V..c...|+000011b0  79 47 d4 0a -- -- -- --  -- -- -- -- -- -- -- --  |yG.J------------|+Hello.pdf:78:+000011b0  -- -- -- -- 97 28 90 11  a6 50 55 95 61 73 52 d0  |----.(.Q.PU.asR.|+000011c0  eb 09 57 56 55 65 54 71  1e 6d 72 84 1a 7e 02 08  |.IWVUeTq^mr.Z~BH|+000011d0  fa 29 10 68 03 22 64 d8  e0 4a 14 f0 f7 60 3c 1b  |.)PhC"d..JT..`<[|+000011e0  e3 c1 eb c9 30 00 af c7  eb e1 38 43 f9 ec db 69  |....0@....8C...i|+000011f0  dc 9a 02 8e d4 13 f2 f3  6e 9c 8a b9 af e4 5e ce  |..B..S..n.....^.|+00001200  fd 9c c1 f3 b3 18 dd e7  f3 f9 82 cf 00 53 58 1e  |.....X......@SX^|+00001210  45 dd fe 6d bf ce f0 7f  d9 b4 1f e9 c1 94 74 93  |E..m...~.._...t.|+00001220  76 e1 67 77 3b 9d 14 99  fc af 2f 56 b5 7a b1 dc  |v.gw;.T.../V.z..|+00001230  c2 a7 aa 18 ea b4 cb dc  f3 13 59 84 eb 55 11 2b  |...X.....SY..UQ+|+00001240  97 6b 3a e5 bc 75 b8 b9  37 39 0e 37 1f 6e ee 95  |.k:..u..79N7_n..|+00001250  ec f4 38 7d 1e a7 a7 58  a7 2b 8b 90 71 e5 0b 55  |..8}^..X.+..q.KU|+00001260  1b 63 fb ee fc 42 4b 77  c3 ac 30 72 d0 47 f1 bf  |[c...BKw..0r.G..|+00001270  20 81 6e 36 4e 15 7c 6f  73 f8 d6 71 b7 3a f8 58  | .n6NU|os..q.:.X|+00001280  f4 1e 77 e6 c5 71 c6 58  96 3c ea dc 63 18 17 2c  |.^w..q.X.<..cXW,|+00001290  c7 bd c7 6f 0b 43 41 e7  6e e1 1e 9f b3 93 a3 8a  |...oKCA.n.^.....|+000012a0  a5 84 ac 5e bd 93 f3 d8  75 9e d3 cb d4 bb b2 51  |...^....u......Q|+000012b0  eb de d8 78 f5 83 46 d9  74 f5 2d ed 86 d6 2c ed  |...x..F.t.-...,.|+000012c0  9b ab 4e f6 af 51 f9 b5  cf f8 ad 51 4e 29 94 49  |..N..Q.....QN).I|+000012d0  79 46 04 3b 19 74 b0 81  08 69 ec 21 93 3d 65 e6  |yFD;Yt..Hi.!.=e.|+000012e0  f0 3b cf 42 89 0c ee a4  64 4a 37 47 a3 0e 86 17  |.;.B.L..dJ7G.N.W|+000012f0  91 e2 49 b1 a4 e6 e5 f6  eb 9f 62 13 5e 37 39 1d  |..I.......bS^79]|+00001300  94 97 9b 14 d3 53 78 3b  5b 62 f4 e9 57 3e 8b 7d  |...T.Sx;[b..W>.}|+00001310  e3 a5 60 43 c9 dc 3d 53  d5 65 75 54 b8 cf 1d b9  |..`C..=S.euT..].|+00001320  14 b6 ae 7d 78 c5 8b b1  5a f5 14 cb 17 fb 06 0c  |T..}x...Z.T.W.FL|+00001330  7c 2d 2b 4b 0c 14 c9 c2  2a 02 ea 93 c7 ca 5e 08  ||-+KLT..*B....^H|+00001340  cf 37 ea 72 8e eb 32 c5  d2 9e bd 76 8d 46 95 c8  |.7.r..2....v.F..|+00001350  b7 d8 88 ca a8 43 dc 71  8e 48 e7 53 9e 11 51 22  |.....C.q.H.S.QQ"|+00001360  c5 47 23 71 a5 5e 2f 52  bc 9d bb f4 75 7a fa 7a  |.G#q.^/R....uz.z|+00001370  b4 03 53 43 1f 9c 79 f6  15 f5 91 38 21 d6 df bf  |.CSC_.y.U..8!...|+00001380  f4 f1 43 6f e2 e2 1a a3  e6 1a ad e4 9c 47 71 ce  |..Co..Z..Z...Gq.|+00001390  09 d4 8e bc 81 64 4b 75  12 55 5b eb 93 36 a6 c5  |I....dKuRU[..6..|+000013a0  25 d9 f3 91 94 f2 b3 34  c7 85 e6 2b c6 2d fc fc  |%......4...+.-..|+000013b0  42 b3 e3 6c 2f d1 d9 92  e2 32 72 ec db a7 4b d7  |B..l/....2r...K.|+000013c0  dc 24 a7 43 f3 76 d6 9c  8e 24 ad b8 7a cd 9a ea  |.$.C.v...$..z...|+000013d0  d5 6b d6 ac 3e 73 a9 e5  ab 33 2d 2d 38 71 f4 48  |.k..>s...3--8q.H|+000013e0  d3 b1 63 4d 47 8e 6e 56  ef ab 4f d5 29 75 48 f8  |..cMG.nV..O.)uH.|+000013f0  f9 b3 d3 51 f4 34 fc 9a  ed da 52 f3 39 35 4e a7  |...Q.4....R.95N.|+00001400  3f 6e 92 c5 2c 7e 7e 6f  a6 89 cc 09 3e 3a 46 75  |?n..,~~o...I>:Fu|+00001410  2c c6 0b 72 e4 84 c9 63  a7 8c c8 1a 5b 34 7f 5e  |,.Kr...c...Z[4~^|+00001420  a9 7f 62 d1 9c c5 f3 66  2c 24 fa 17 20 2d 06 e4  |.~b....f,$.W -F.|+00001430  0a -- -- -- -- -- -- --  -- -- -- -- -- -- -- --  |J---------------|+Hello.pdf-79-endstream+Hello.pdf-80-endobj+Hello.pdf-81-14 0 obj+Hello.pdf-82-2734+--+Hello.pdf-83-endobj+Hello.pdf-84-15 0 obj+Hello.pdf:85:(Hello)+Hello.pdf-86-endobj+Hello.pdf-87-16 0 obj+--+Hello.pdf-89-endobj+Hello.pdf-90-17 0 obj+Hello.pdf:91:(TextEdit)+Hello.pdf-92-endobj+Hello.pdf-93-18 0 obj+Hello.pdf:94:(D:20200124010711Z00'00')+Hello.pdf-95-endobj+Hello.pdf-96-19 0 obj+Hello.pdf:97:()+Hello.pdf-98-endobj+Hello.pdf-99-20 0 obj+Hello.pdf:100:[ ]+Hello.pdf-101-endobj+Hello.pdf-102-1 0 obj+--+Hello.pdf-129-trailer+Hello.pdf-130-<< /Size 21 /Root 11 0 R /Info 1 0 R /ID [ <8db88d3335070bd9583341583cf769a3>+Hello.pdf:131:<8db88d3335070bd9583341583cf769a3> ] >>+Hello.pdf-132-startxref+Hello.pdf-133-5536+Hello.pdf:134:%%EOF+Hello.txt:1:Hello+emptyline.txt:1:

tests/out/Hello_wnhS-W-nvy.out

new file mode 100644@@ -0,0 +1,455 @@+Hello.bat-1-#!/bin/sh+Hello.bat|2|echo "Hello World!"+Hello.class:1:+00000000  ca fe ba be 00 00 00 34  00 1d 0a -- -- -- -- --  |....@@@4@]J-----|+Hello.class:2:+00000000  -- -- -- -- -- -- -- --  -- -- -- 00 06 00 0f 09  |-----------@F@OI|+00000010  00 10 00 11 08 00 12 0a  -- -- -- -- -- -- -- --  |@P@QH@RJ--------|+Hello.class:3:+00000010  -- -- -- -- -- -- -- --  00 13 00 14 07 00 15 07  |--------@S@TG@UG|+00000020  00 16 01 00 06 3c 69 6e  69 74 3e 01 00 03 28 29  |@VA@F<init>A@C()|+00000030  56 01 00 04 43 6f 64 65  01 00 0f 4c 69 6e 65 4e  |VA@DCodeA@OLineN|+00000040  75 6d 62 65 72 54 61 62  6c 65 01 00 04 6d 61 69  |umberTableA@Dmai|+00000050  6e 01 00 16 28 5b 4c 6a  61 76 61 2f 6c 61 6e 67  |nA@V([Ljava/lang|+00000060  2f 53 74 72 69 6e 67 3b  29 56 01 00 0a -- -- --  |/String;)VA@J---|+Hello.class:4:+00000060  -- -- -- -- -- -- -- --  -- -- -- -- -- 53 6f 75  |-------------Sou|+00000070  72 63 65 46 69 6c 65 01  00 0a -- -- -- -- -- --  |rceFileA@J------|+Hello.class-5-+00000070  -- -- -- -- -- -- -- --  -- -- 48 65 6c 6c 6f 2e  |----------Hello.|+00000080  6a 61 76 61 0c 00 07 00  08 07 00 17 0c 00 18 00  |javaL@G@HG@WL@X@|+00000090  19 01 00 0c 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |YA@LHello World!|+000000a0  07 00 1a 0c 00 1b 00 1c  01 00 05 48 65 6c 6c 6f  |G@ZL@[@\A@EHello|+000000b0  01 00 10 6a 61 76 61 2f  6c 61 6e 67 2f 4f 62 6a  |A@Pjava/lang/Obj|+000000c0  65 63 74 01 00 10 6a 61  76 61 2f 6c 61 6e 67 2f  |ectA@Pjava/lang/|+000000d0  53 79 73 74 65 6d 01 00  03 6f 75 74 01 00 15 4c  |SystemA@CoutA@UL|+000000e0  6a 61 76 61 2f 69 6f 2f  50 72 69 6e 74 53 74 72  |java/io/PrintStr|+000000f0  65 61 6d 3b 01 00 13 6a  61 76 61 2f 69 6f 2f 50  |eam;A@Sjava/io/P|+00000100  72 69 6e 74 53 74 72 65  61 6d 01 00 07 70 72 69  |rintStreamA@Gpri|+00000110  6e 74 6c 6e 01 00 15 28  4c 6a 61 76 61 2f 6c 61  |ntlnA@U(Ljava/la|+00000120  6e 67 2f 53 74 72 69 6e  67 3b 29 56 00 21 00 05  |ng/String;)V@!@E|+00000130  00 06 00 00 00 00 00 02  00 01 00 07 00 08 00 01  |@F@@@@@B@A@G@H@A|+00000140  00 09 00 00 00 1d 00 01  00 01 00 00 00 05 2a b7  |@I@@@]@A@A@@@E*.|+00000150  00 01 b1 00 00 00 01 00  0a -- -- -- -- -- -- --  |@A.@@@A@J-------|+Hello.class:6:+00000150  -- -- -- -- -- -- -- --  -- 00 00 00 06 00 01 00  |---------@@@F@A@|+00000160  00 00 03 00 09 00 0b 00  0c 00 01 00 09 00 00 00  |@@C@I@K@L@A@I@@@|+00000170  25 00 02 00 01 00 00 00  09 b2 00 02 12 03 b6 00  |%@B@A@@@I.@BRC.@|+00000180  04 b1 00 00 00 01 00 0a  -- -- -- -- -- -- -- --  |D.@@@A@J--------|+Hello.class:7:+00000180  -- -- -- -- -- -- -- --  00 00 00 0a -- -- -- --  |--------@@@J----|+Hello.class:8:+00000180  -- -- -- -- -- -- -- --  -- -- -- -- 00 02 00 00  |------------@B@@|+00000190  00 05 00 08 00 06 00 01  00 0d 00 00 00 02 00 0e  |@E@H@F@A@M@@@B@N|+Hello.java-1-import java.lang.*;+Hello.java:2:+Hello.java-3-public class Hello // prints a Hello World! greeting+Hello.java|4|{ public static void main(String[] arg)+Hello.java-5-  { System.out.println("Hello World!");+Hello.java:6:  }+Hello.java:7:}+Hello.pdf-1-+00000000  25 50 44 46 2d 31 2e 33  0a 25 c4 e5 f2 e5 eb a7  |%PDF-1.3J%......|+00000010  f3 a0 d0 c4 c6 0a -- --  -- -- -- -- -- -- -- --  |.....J----------|+Hello.pdf-3-4 0 obj+Hello.pdf|4|<< /Length 5 0 R /Filter /FlateDecode >>+Hello.pdf-5-+00000040  -- -- -- -- -- -- -- 73  74 72 65 61 6d 0a 78 01  |-------streamJxA|+00000050  45 8e bb 0a -- -- -- --  -- -- -- -- -- -- -- --  |E..J------------|+Hello.pdf-7-+00000050  -- -- -- -- 02 31 14 44  7b bf e2 94 5a 98 bd 89  |----B1TD{...Z...|+00000060  79 98 56 11 6c 17 2e f8  01 61 2d 64 d7 65 cd ff  |y.VQlW..Aa-d.e..|+00000070  83 17 2c ac 86 99 39 0c  b3 31 b2 51 02 b9 46 97  |.W,...9L.1.QB.F.|+00000080  e2 a9 12 f3 99 90 5c 4c  59 0a 9f 89 07 6f 86 6b  |..R...\LYJ..Go.k|+00000090  f7 b4 8e d0 9b e1 e2 6a  a9 52 6a b2 40 38 fe ad  |.......j.Rj.@8..|+000000a0  ed 94 20 bb b6 70 51 a3  44 c4 a3 0d ef 7f a0 69  |.. ..pQ.D..M.~.i|+000000b0  c2 0b ba 30 a8 7a ac 7c  b2 bf 4f f3 bc 1e d0 17  |.K.0.z.|..O..^.W|+000000c0  37 b5 37 e3 17 4e ff 20  a5 0a -- -- -- -- -- --  |7.7.WN. .J------|+Hello.pdf-9-endstream+Hello.pdf|10|endobj+Hello.pdf-11-5 0 obj+Hello.pdf|12|123+Hello.pdf-13-endobj+Hello.pdf|14|2 0 obj+Hello.pdf-15-<< /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]+Hello.pdf:16:>>+Hello.pdf-17-endobj+Hello.pdf|18|6 0 obj+Hello.pdf-19-<< /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R >> /Font << /TT1 8 0 R+Hello.pdf:20:>> >>+Hello.pdf-21-endobj+Hello.pdf|22|9 0 obj+Hello.pdf-23-<< /Length 10 0 R /N 1 /Alternate /DeviceGray /Filter /FlateDecode >>+Hello.pdf-24-+00000200  -- -- -- -- -- 73 74 72  65 61 6d 0a 78 01 85 55  |-----streamJxA.U|+00000210  5d 68 1c 55 14 3e bb 73  67 03 12 07 1f b4 0d 2d  |]h\UT>.sgCRG_.M-|+00000220  b4 83 3f 6d 09 e9 32 89  56 13 8b b5 db 4d ba 49  |..?mI.2.VS...M.I|+00000230  13 b7 eb 66 53 9b 2a ca  74 76 36 3b cd 64 66 9c  |S..fS.*.tv6;.df.|+00000240  99 dd 26 a1 4f a5 e0 9b  16 04 e9 ab a0 3e c6 82  |..&.O...VD...>..|+00000250  08 b6 2a 36 2f f6 a5 a5  c5 92 4a 35 0f 0a -- --  |H.*6/.....J5OJ--|+Hello.pdf-26-+00000250  -- -- -- -- -- -- -- --  -- -- -- -- -- -- 11 5a  |--------------QZ|+00000260  8c 20 28 7d 52 f0 3b 33  db 64 76 41 32 c3 9d f9  |. (}R.;3.dvA2...|+00000270  ee b9 e7 9e 7b ce 77 ee  b9 97 a8 eb 6f dd f3 ec  |....{.w.....o...|+00000280  b4 4a 34 e7 84 7e a1 9c  9b 3e 39 7d 4a ed ba 4d  |.J4..~...>9}J..M|+00000290  69 52 a8 9b f0 e8 46 e0  e5 4a a5 09 c6 8e eb 98  |iR....F..J.I....|+000002a0  fc 6f 7f 1e de a5 14 4b  ee ec 67 5b ed 63 5b f6  |.o~^..TK..g[.c[.|+000002b0  e4 aa 19 18 d0 ba 86 e6  56 03 63 8e 28 a5 11 65  |..YX....VCc.(.Qe|+000002c0  6a 86 e7 87 44 5d 97 20  1f 3c 1b 7a 8c 6f 03 3f  |j...D]. _<[z.oC?|+000002d0  39 5b 29 e7 81 d7 80 95  d6 5c 40 7a aa 60 3a a6  |9[)......\@z.`:.|+000002e0  6f 19 6a c1 d7 17 d4 92  ef d6 2c 3b e9 eb 56 e3  |oYj..W....,;..V.|+000002f0  6c 63 cb 67 ce 6e b0 af  fc ec 46 eb 0e 66 27 c7  |lc.g.n....F.Nf'.|+00000300  f1 ef 85 cf 17 4c 67 6a  12 78 1f f0 92 a1 8f 30  |....WLgjRx_....0|+00000310  ee 03 be db b4 4e 14 63  9c 4e 7b e1 91 72 ac 9f  |.C...NTc.N{..r..|+00000320  ce 36 66 a7 72 2d f9 c9  9a 7f 74 aa 25 bf 50 6f  |.6f.r-...~t.%.Po|+00000330  8c 32 ce 12 a5 97 16 eb  95 37 80 9f 00 5e 75 4e  |.2.R..V..7..@^uN|+00000340  17 8f b7 f4 d7 67 dd 71  b6 d3 43 24 f5 18 41 fe  |W....g.q..C$.XA.|+00000350  14 f0 b3 c0 5a dd 1c e3  3c a9 c0 15 df 2d b3 3e  |T...Z.\.<..U.-.>|+00000360  cb c3 aa 39 3c 02 fc 32  f0 25 2b 1c ab 00 c3 be  |...9<B.2.%+\.@..|+00000370  f4 43 d0 9c 64 39 b0 a0  c5 7a 9e fd c4 5a 22 7b  |.C..d9...z...Z"{|+00000380  46 3f 56 02 de 06 7c c8  b4 0b bc 16 ec 88 8a 17  |F?VB.F|..K.V...W|+00000390  96 d8 e6 20 f0 bc 63 17  79 2d c4 2e 2e 9b 41 14  |... ..cWy-....AT|+000003a0  2f 62 17 3f 85 f5 ca 68  ac 2f a7 43 bf c2 73 9f  |/bW?...h./.C..s.|+000003b0  26 92 f7 d4 ac a3 63 c0  e0 44 1e ad fb a3 2c 87  |&.....c..D^...,.|+000003c0  3f 72 e8 d9 d1 de 7a 11  78 c9 6f 94 39 f6 3d c0  |?r....zQx.o.9.=.|+000003d0  6b ba 3f 52 00 86 cd cc  63 55 7d 98 79 7e 01 78  |k.?R@...cU}.y~Ax|+000003e0  80 4e a4 74 32 c9 a5 d3  f8 1a e4 d0 bf 88 37 20  |.N.t2....Z....7 |+000003f0  8b 9a 11 f2 c8 c7 58 0d  7d 9b 0a -- -- -- -- --  |..Q...XM}.J-----|+Hello.pdf:27:+000003f0  -- -- -- -- -- -- -- --  -- -- -- d0 70 d0 7c f4  |-----------.p.|.|+00000400  0c 68 15 80 74 5a 00 2a  25 b4 4c f4 58 27 9e a3  |LhU.tZ@*%.L.X'..|+00000410  52 15 3d 95 66 a2 59 41  84 d8 ca fd a8 6f 50 7e  |RU=.f.YA.....oP~|+00000420  d7 a7 d4 80 b4 4e eb 90  d6 81 5e a3 5f 22 c9 3c  |.....N....^._".<|+00000430  fd 4a 73 e8 e7 21 6d 60  6c a6 c3 6e 1e 5e 38 b4  |.Js..!m`l..n^^8.|+00000440  08 0f d8 13 b6 f9 a0 65  d3 15 db 85 26 9e 47 3b  |HO.S...e.U..&.G;|+00000450  28 26 c4 2b 62 50 0c 91  2a 5e 15 87 c5 21 31 0c  |(&.+bPL.*^U..!1L|+00000460  e9 90 38 18 cd 89 bd 4f  fa ce 7e 3e d8 b0 f4 2e  |..8X...O..~>....|+00000470  d6 4d fa be 0c 0e 42 ac  67 c3 33 07 ac 70 34 01  |.M..LNB.g.3G.p4A|+00000480  3c f8 07 eb ce 46 9a 09  b6 2e ee 68 ec f3 bc 8f  |<.G..F.I...h....|+00000490  de 3f ef bf 63 19 b7 3e  f8 b3 8d bd 00 fa 31 27  |.?..cY.>....@.1'|+000004a0  bf c1 a2 0b 6b 26 25 e6  5e 3f f7 4d 4f c2 43 75  |...Kk&%.^?.MO.Cu|+000004b0  45 7c f5 d6 9d ee eb e7  e8 78 32 4b 51 de aa 9d  |E|.......x2KQ...|+000004c0  59 92 d7 e4 fb f2 0a --  -- -- -- -- -- -- -- --  |Y.....J---------|+Hello.pdf:28:+000004c0  -- -- -- -- -- -- -- be  f7 e4 d5 a4 0d f9 67 79  |-------.....M.gy|+000004d0  15 ef bd b6 5c 3d ca 0b  ff 93 b9 cd 21 46 3b 92  |U...\=.K....!F;.|+000004e0  cd 41 ce 3c 9b 51 b4 71  c6 1b c0 21 b8 a9 45 73  |.A.<.Q.q.[.!..Es|+000004f0  f6 b7 59 4c b2 e9 b6 62  b4 60 c9 42 94 9d ab b8  |..YL...b.`.B....|+00000500  ff cb 09 f3 c3 3c b7 b1  52 73 2e ee f0 bc b7 3f  |..I..<..Rs.....?|+00000510  63 36 cd f7 8a 0f 8b 74  be 4f bb ac ad 6b 9f 68  |c6...O.t.O...k.h|+00000520  3f 6a 7f 68 2b da c7 40  bf 4b 1f 4a 5f 4a df 4a  |?j~h+..@.K_J_J.J|+00000530  57 a4 ab d2 0d 52 a5 6b  d2 b2 f4 9d f4 bd f4 b9  |W...MR.k........|+00000540  f4 35 7a 5f 40 ba 2c 5d  e9 d8 49 71 ec 1b bb 07  |.5z_@.,]..Iq.[.G|+00000550  7e c6 7b d6 68 ed 30 66  86 b3 14 10 f3 c2 da cc  |~.{.h.0f..TP....|+00000560  0a -- -- -- -- -- -- --  -- -- -- -- -- -- -- --  |J---------------|+Hello.pdf:29:+00000560  -- 4b 1f f1 77 06 63 9b  f9 33 a1 d5 5e 03 9d bb  |-K_.wFc..3..^C..|+00000570  7f 63 2d e5 88 b2 53 79  46 19 56 76 2b cf 29 13  |~c-...SyFYVv+.)S|+00000580  4a af 72 40 39 ac 6c 57  06 d0 fa 95 51 65 2f 46  |J.r@9.lWF...Qe/F|+00000590  76 6e b0 64 63 3d ce 80  85 7f 92 67 8b a6 23 ae  |vn.dc=...~.g..#.|+000005a0  e2 3c b1 57 75 b0 e7 c3  4b 1d ef a6 5f 5c c3 d6  |.<.Wu...K].._\..|+000005b0  86 35 d8 49 3d 0e 9e d9  da a6 0e af 11 57 bf 15  |.5.I=N....N.QW.U|+000005c0  55 63 bc 3b 5d 9c 06 3a  4d 21 62 8b ce 22 72 1f  |Uc.;].F:M!b.."r_|+000005d0  3a 9c 1f 27 aa fe ce d9  5c 93 38 35 52 6f e2 94  |:._'....\.85Ro..|+000005e0  b0 c4 2e d1 2f c6 5a 35  98 13 07 50 85 e3 6d f5  |..../.Z5.SGP..m.|+000005f0  38 c8 55 9a 19 c9 0c 67  72 a4 66 7a 33 43 99 fe  |8.U.Y.Lgr.fz3C..|+00000600  cc 31 c6 51 ac d1 f9 92  d9 8b d1 21 7c 47 12 de  |.1.Q.......!|GR.|+00000610  33 cb 31 ff 9b 35 c4 67  18 ef 1d e6 a8 09 6c a3  |3.1..5.gX.]..Il.|+00000620  87 5b 2b 34 e7 71 df 11  e5 5d 6f c1 b7 66 ea a1  |.[+4.q.Q.]o..f..|+00000630  3a a0 69 2f a9 39 5c af  a6 3a e6 18 d9 3e 55 b7  |:.i/.9\..:.X.>U.|+00000640  6d 35 1a 0a -- -- -- --  -- -- -- -- -- -- -- --  |m5ZJ------------|+Hello.pdf-30-+00000640  -- -- -- -- 54 df 0c 4c  bf 69 56 b3 c4 77 37 cf  |----T.LL.iV..w7.|+00000650  23 fa eb f5 e8 4e 4e 6d  bb 61 34 fc 66 2c a3 54  |#....NNm.a4.f,.T|+00000660  ea 26 d1 7f b7 8f 93 34  0a 65 6e 64 73 74 72 65  |.&.~...4Jendstre|+00000670  61 6d 0a -- -- -- -- --  -- -- -- -- -- -- -- --  |amJ-------------|+Hello.pdf-32-endobj+Hello.pdf|33|10 0 obj+Hello.pdf-34-1116+Hello.pdf|35|endobj+Hello.pdf-36-7 0 obj+Hello.pdf|37|[ /ICCBased 9 0 R ]+Hello.pdf-38-endobj+Hello.pdf|39|3 0 obj+Hello.pdf-40-<< /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 2 0 R ] >>+Hello.pdf-41-endobj+Hello.pdf|42|11 0 obj+Hello.pdf-43-<< /Type /Catalog /Pages 3 0 R >>+Hello.pdf-44-endobj+Hello.pdf|45|8 0 obj+Hello.pdf-46-<< /Type /Font /Subtype /TrueType /BaseFont /GQTMZF+Menlo-Regular /FontDescriptor+Hello.pdf|47|12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602+Hello.pdf|48|0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602+Hello.pdf|49|0 0 602 ] >>+Hello.pdf-50-endobj+Hello.pdf|51|12 0 obj+Hello.pdf-52-<< /Type /FontDescriptor /FontName /GQTMZF+Menlo-Regular /Flags 33 /FontBBox+Hello.pdf|53|[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729+Hello.pdf-54-/StemV 99 /XHeight 547 /StemH 83 /AvgWidth 602 /MaxWidth 602 /FontFile2 13 0 R+Hello.pdf:55:>>+Hello.pdf-56-endobj+Hello.pdf|57|13 0 obj+Hello.pdf-58-<< /Length 14 0 R /Length1 4064 /Filter /FlateDecode >>+Hello.pdf-59-+00000970  -- -- -- -- -- -- -- --  -- -- -- 73 74 72 65 61  |-----------strea|+00000980  6d 0a 78 01 dd 57 7b 78  54 c5 15 3f 73 7f 77 36  |mJxA.W{xT.U?s~w6|+00000990  af cd 3e 92 4d 48 48 80  5d d6 e5 95 2c 81 84 b7  |..>.MHH.]...,...|+000009a0  52 16 48 78 88 20 2f eb  2e 88 f2 48 20 28 21 08  |RVHx. /....H (!H|+000009b0  41 b4 31 90 4a 51 09 c1  40 85 08 48 7d 15 51 a9  |A.1.JQI.@.HH}UQ.|+000009c0  b5 2b 45 5d 09 c4 54 a4  62 23 45 84 a0 02 0a --  |.+E]I.T.b#E..BJ-|+Hello.pdf-61-+000009c0  -- -- -- -- -- -- -- --  -- -- -- -- -- -- -- f8  |---------------.|+000009d0  a2 68 8a 14 21 d8 00 43  cf bd 1b fd 3e ed d7 ef  |.h.T!.@C..[.>...|+000009e0  eb bf ed dc 9d 33 e7 fc  e6 cc 79 dd bb f7 ce 94  |.....3....y.....|+000009f0  2d 5c 5c 44 56 aa 24 50  60 56 c9 8c 05 64 36 eb  |-\\DV.$P`V..Ed6.|+00000a00  49 1e 8a 67 dd 53 e6 36  45 8a bd 97 48 cb 9d bd  |I^.g.S.6E...H...|+00000a10  60 4e 49 54 8e 7f 91 e5  4e 73 e6 dd 37 3b 2a 27  |`NIT.~..Ns..7;*'|+00000a20  4e 66 79 40 71 d1 8c c2  a8 4c 57 78 ec 57 cc 40  |Nfy@q....LWx.W.@|+00000a30  54 16 7d 78 bc ae b8 a4  8c ed 18 cd fa 2e 13 d7  |TV}x......X...S.|+00000a40  bc d2 59 6d f3 89 a3 0c  b0 64 c6 bd 6d fe e9 38  |..Ym...L.d..m..8|+00000a50  cb ee f9 33 4a 8a 78 e4  66 8f 30 e9 b6 a0 74 51  |...3J.x.f.0...tQ|+00000a60  99 29 92 bd 9a c7 ec 05  0b 8b da f4 45 90 28 a6  |.).....EK...E.(.|+00000a70  53 74 ae 8d 1a 96 05 77  a9 59 29 8b ee 22 0b 69  |St..Z.Ew.Y).."Ki|+00000a80  e4 a0 8d 94 c4 d0 ad ac  2b 79 d6 98 d7 62 b2 96  |........+y...b..|+00000a90  3e 7d f6 8d 3b ec 37 5c  a4 4e b1 e6 e2 bd 65 e9  |>}..;.7\.N....e.|+00000aa0  79 06 73 28 b8 a4 df e5  95 57 85 ac 8f bd 85 c5  |yFs(.....W......|+00000ab0  e8 a4 31 c1 eb 62 4a 54  07 22 fd e0 e5 95 d7 92  |..1..bJTG"......|+00000ac0  65 bd 69 c9 98 f9 be c9  08 c5 66 bd ae 55 8a 94  |e.i.....H.f..U..|+00000ad0  ed eb a6 c9 a1 99 22 85  6a 09 4c 2b 49 17 2e 52  |......".jIL+IW.R|+00000ae0  cc 27 9b 34 89 03 82 70  9a bc c3 a4 76 da c4 88  |.'.4.C.p....v...|+00000af0  cd e4 13 b7 7f 3d 52 0e  f5 89 44 aa 60 cc 4a 3e  |..S.~=RN..D.`.J>|+00000b00  a6 09 94 cb 34 de b4 17  67 6a c5 92 8d 91 18 93  |.I..4..Wgj....X.|+00000b10  b7 98 3a d2 e4 75 13 87  89 68 26 22 02 21 05 a5  |..:..uS..h&"B!E.|+00000b20  70 b5 02 57 14 2e 2b b4  e6 e2 9f 75 f8 ae 02 97  |p.BWT.+....u..B.|+00000b30  5a aa e5 25 85 4b 0d 7a  cb c5 90 6c a9 46 4b a5  |Z..%.KMz...l.FK.|+00000b40  7e f1 42 17 79 31 84 8b  01 fd 42 17 7c 7b 3e 47  |~.BWy1..A.BW|{>G|+00000b50  7e db 8a f3 39 f8 87 c2  39 85 6f 72 71 d6 85 bf  |~...9...9.orq...|+00000b60  d7 a2 99 43 6c 56 68 8e  5c 3b 18 b8 a6 7f 3d 12  |...ClVh.\;X..~=R|+00000b70  5f 9d 29 94 5f d5 e2 4c  21 fe a6 70 fa cb 0c 79  |_.)._..L!..p..Ly|+00000b80  5a e1 cb 0c 7c a1 f0 f9  5d f8 4c e1 d3 3a 9c 3a  |Z..L|...].L..:.:|+00000b90  99 2e 4f b5 e2 64 3a 4e  d4 e2 13 85 8f 15 8e 1f  |..O..d:N..S..U._|+00000ba0  4b 91 c7 15 8e a5 e0 68  2d 3e fa 30 45 7e a4 f0  |K..U...h->.0E~..|+00000bb0  e1 ea 04 f9 61 0a 3e a8  c0 91 41 68 62 a1 69 10  |..D.aJ>...Ahb.iP|+00000bc0  0e 2b 1c 7a 3f 5e 1e 52  78 3f 1e 07 15 de 53 38  |N+\z?^^Rx?^GU.S8|+00000bd0  50 e5 94 07 32 f1 d7 54  ec 57 78 b7 16 8d ab 7c  |P..G2..T.Wx.V..||+00000be0  b2 51 e1 2f -- -- -- --  -- -- -- -- -- -- -- --  |.Q./------------|+Hello.pdf:62:+Hello.pdf:63:+00000be0  -- -- -- -- -- ef 54 60  9f c2 db 0a -- -- -- --  |-----.T`...J----|+Hello.pdf:64:+00000be0  -- -- -- -- -- -- -- --  -- -- -- -- 7f 56 d8 bb  |------------~V..|+00000bf0  29 51 be a5 b0 47 e1 4d  85 3f 29 34 b0 bd 06 17  |)Q...G.M.?)4..FW|+00000c00  de b0 a2 7e 77 9d ac 57  d8 bd 6b 9a dc 5d 87 dd  |...~w..W..k..]..|+00000c10  95 fa ae 3a 9f dc 35 0d  bb 02 7a 9d 0f 3b 15 5e  |...:..5M.Bz.O;U^|+00000c20  af 45 a4 66 a8 7c 4d e1  55 1e 5e 6d c5 2b 6c 6b  |.E.f.|M.U^^m.+lk|+00000c30  87 c2 1f 0b b1 bd 10 2f  db 10 4e c2 1f 14 5e 52  |.._K..P/.PN._T^R|+00000c40  81 ab f8 bd c2 8b 0a --  -- -- -- -- -- -- -- --  |......J---------|+Hello.pdf:65:+00000c40  -- -- -- -- -- -- -- bf  4b c2 36 85 17 9e b7 c9  |-------.K.6.W...|+00000c50  17 72 f1 bc 0d cf 6d 75  ca e7 ba 61 ab 13 cf 6e  |Wr..M.mu...a.S.n|+00000c60  f1 cb 67 2b b0 c5 8f df  2a 3c a3 f0 b4 c2 53 4f  |..g+....*<....SO|+00000c70  a6 cb a7 0a -- -- -- --  -- -- -- -- -- -- -- --  |...J------------|+Hello.pdf-66-+00000c70  -- -- -- -- f1 e4 13 0e  f9 64 3a 9e 70 e0 37 f1  |----..SN.d:.p.7.|+00000c80  d8 ac f0 38 3b 79 5c 61  53 22 36 6e e8 29 37 2a  |...8;y\aS"6n.)7*|+00000c90  6c e8 89 c7 d8 ff 63 b5  a8 5d 5f 27 6b 15 d6 f3  |l.....c..]_'kU..|+00000ca0  b3 b5 be 0e eb 2b f5 75  6b 7c 72 dd 34 ac 0b e8  |...N.+.uk|r.4.K.|+00000cb0  8f 2a fc 5a 61 2d cb 6b  eb b0 c6 87 1a 2e 46 cd  |.*.Za-.k....Z.F.|+00000cc0  50 3c c2 d9 3e e2 c2 ea  04 54 33 50 5d 88 55 5c  |P<..>...DT3P].U\|+00000cd0  b4 55 3e 54 39 b1 52 e1  61 85 87 14 1e 5c e1 94  |.U>T9.R.a..T^\..|+00000ce0  0f 2a ac 70 e2 57 0a cb  15 1e 70 0e 93 0f 4c c2  |O*.p.WJ.U^pN.OL.|+00000cf0  2f 15 2a ef c5 b2 a5 15  72 99 c2 d2 0a -- -- --  |/U*....Ur...J---|+Hello.pdf:68:+00000cf0  -- -- -- -- -- -- -- --  -- -- -- -- -- 54 74 c4  |-------------Tt.|+00000d00  fd 0a -- -- -- -- -- --  -- -- -- -- -- -- -- --  |.J--------------|+Hello.pdf:69:+00000d00  -- -- e5 36 fc 42 61 89  c2 3d 0a -- -- -- -- --  |--.6.Ba..=J-----|+Hello.pdf-70-+00000d00  -- -- -- -- -- -- -- --  -- -- -- 8b cb ac 72 b1  |-----------...r.|+00000d10  1d 8b 23 82 02 47 f5 32  2b ca 1a f4 45 49 58 14  |].#.BG.2+.Z.EIXT|+00000d20  d0 17 2a dc ad b0 40 a1  74 fe 24 59 5a 8b f9 25  |.W*...@.t.$YZ..%|+00000d30  dd e4 fc 49 28 e9 86 79  0a 77 e5 e2 4e 85 b9 b9  |...I(..yJw..N...|+00000d40  28 6e c5 9c 3a cc 56 28  52 28 54 98 35 b3 a3 9c  |(n..:.V(R(T.5...|+00000d50  a5 30 93 1c 72 66 47 cc  50 98 ae 70 87 c2 ed 53  |.0.\rfG.P..p...S|+00000d60  12 e4 ed 36 4c 2b c4 6d  fb 30 95 85 a9 2e 4c 49  |R..6L+.m.0....LI|+00000d70  00 3f d1 41 17 6e 55 f8  b9 c2 2d 19 e9 f2 96 5c  |@?.AWnU...-Y...\|+00000d80  4c 56 98 a4 30 51 61 42  05 c6 2b dc ec c2 38 85  |LV..0QaBE.+...8.|+00000d90  b1 c2 2f c7 2a dc 54 87  31 dd 70 e3 e8 34 79 63  |../.*.T.1.p..4yc|+00000da0  7f 8c 1e 9e 24 47 a7 61  54 41 9a 1c a5 30 92 a5  |~.^.$G.aTA.\.0..|+00000db0  91 85 18 c1 d2 88 3a 14  a4 21 9f 81 fc fe 18 3e  |..X...:T.!....X>|+00000dc0  cc 29 87 27 61 78 44 0b  04 e2 f4 61 43 ed 72 98  |.).'axDKD..aC.r.|+00000dd0  13 c3 22 1a b1 34 34 60  93 43 ed 18 1a 11 0d 2c  |S."Z.44`.C.XZQM,|+00000de0  05 86 58 65 c0 86 40 44  54 b2 34 c4 1a 27 87 58  |E.Xe..@DT.4.Z'.X|+00000df0  31 24 22 02 81 42 fd 67  0a 83 39 84 c1 ad b8 41  |1$"B.B.gJ.9....A|+00000e00  e1 fa 6e 18 a4 30 90 0b  3c b0 10 03 7a b7 97 03  |..nX.0.K<.PCz..C|+00000e10  c6 a0 bf 42 3f bf 4b f6  53 e8 3b 06 7d 7a b5 97  |...B?.K.S.;F}z..|+00000e20  7d c6 20 8f 87 3c 85 5c  56 cc 55 e8 cd d3 bd db  |}. ..<.\V.U.....|+00000e30  a3 57 7b e4 30 97 93 86  9e 71 a9 b2 67 1d fc d9  |.W{.0....q..g]..|+00000e40  c9 d2 ef 82 3f a2 19 6e  b3 1d 4e 99 9d 8c 6c 23  |....?.Yn.]N...l#|+00000e50  dc 5a 3d ab 87 4f 66 29  f4 60 cd 1e 3e 74 d7 06  |.Z=..Of).`.^>t.F|+00000e60  c9 ee 0a -- -- -- -- --  -- -- -- -- -- -- -- --  |..J-------------|+Hello.pdf:73:+00000e60  -- -- -- dd 14 ba 2a 74  b1 c3 97 3a 4c fa 0a --  |---.T.*t...:L.J-|+Hello.pdf-74-+00000e60  -- -- -- -- -- -- -- --  -- -- -- -- -- -- -- 70  |---------------p|+00000e70  9d 1d 5e 85 ce 76 bb ec  ac e0 71 fb a5 a7 02 6e  |.]^..v....q...Bn|+00000e80  3f 3a 8d 41 47 f6 dc 51  a1 83 42 26 d7 36 53 21  |?:.AG..Q..B&.6S!|+00000e90  83 ef 4a 46 3a da 2b a4  2b a4 29 b4 63 0b ed 46  |..JF:.+.+.).cK.F|+00000ea0  20 35 c5 2f 53 87 21 c5  e5 90 29 7e b8 1c 48 66  | 5./S.!...)~.\Hf|+00000eb0  bd 64 17 92 78 7d 92 82  93 33 77 0e 83 83 3d 38  |.dW.x}...3wN..=8|+00000ec0  9c 70 44 6b 67 b7 59 a5  dd 0e 7b b4 76 b6 c4 78  |.pDkg.Y..N{.v..x|+00000ed0  69 b3 c2 16 ad 5d 22 d7  2e 31 1e 89 5c bb 1d ba  |i..V.]"..1^.\.].|+00000ee0  35 0e 56 e3 d9 ea af 27  28 c4 73 26 f1 0a -- --  |5NV....'(.s&.J--|+Hello.pdf-75-+00000ee0  -- -- -- -- -- -- -- --  -- -- -- -- -- -- 71 a9  |--------------q.|+00000ef0  88 75 20 46 c1 c2 a6 2d  0a -- -- -- -- -- -- --  |.u F...-J-------|+Hello.pdf:76:+00000ef0  -- -- -- -- -- -- -- --  -- d2 05 70 72 68 85 c6  |---------.Eprh..|+00000f00  80 36 08 82 03 10 7e 90  03 22 22 0a -- -- -- --  |.6H.CP~.C""J----|+Hello.pdf:77:+00000f00  -- -- -- -- -- -- -- --  -- -- -- -- 57 ac 16 59  |------------W.VY|+00000f10  ff 3f 8d fe c7 53 e1 4f  67 84 1a cd be 4d ac e5  |.?...S.Og.Z..M..|+00000f20  d1 d8 47 44 e8 21 6d 19  7f a5 bf bf 22 b4 87 75  |..GD.!mY~..."..u|+00000f30  34 53 2f 22 1a c5 4a b1  93 f9 ad bc b7 68 a4 e5  |4S/"Z.J......h..|+00000f40  74 5e c4 e3 6d d1 9f b9  7a 5e 1b d4 3d 8c d6 d0  |t^..m...z^[.=...|+00000f50  66 73 75 0d 4e d3 62 ec  a2 43 f4 0e 1d 63 ee b4  |fsuMN.b..C.N]c..|+00000f60  18 08 5e 2b 0e 91 47 9c  60 3f 2b 7f f0 a1 a1 9e  |XH^+N.G.`?+~....|+00000f70  a5 3d 4c cb 51 8f a0 e8  24 4a 68 8b 78 89 2d 96  |.=L.Q...$Jh.x.-.|+00000f80  53 44 94 d2 32 8d 47 6d  22 5b de af 1f 64 74 3f  |SD..2.Gm"[.._dt?|+00000f90  3d c4 d7 a3 b4 85 4a 99  37 32 58 ce f1 7f 4c 3b  |=.....J.72X..~L;|+00000fa0  68 15 5d a0 0d da 19 9a  c2 fc 4e da cb f1 28 fe  |hU].M.Y...N...(.|+00000fb0  fc 9a b9 88 26 6a 61 4b  db b4 c1 da 6c d6 db cb  |....&jaK....l...|+00000fc0  d6 36 d1 26 b1 9c 9a 68  91 4e fc 29 57 74 4a 36  |.6.&...h.N.)WtJ6|+00000fd0  69 59 6c 75 07 67 40 34  93 36 cb 26 b9 c1 a8 07  |iYluGg@4.6.&...G|+00000fe0  8f 4d f2 1c cf 10 75 b0  44 2c ae 18 2f 67 61 d4  |.M.\.Pu.D,.X/ga.|+00000ff0  6e ab d8 25 7a 6b e3 e8  10 af 2f a7 c9 b8 0d 77  |n..%zk..P./...Mw|+00001000  e3 98 58 a1 7b f5 25 38  43 35 1a 61 3a dd 49 07  |..X.{.%8C5Za:.IG|+00001010  64 93 c5 45 35 31 5e aa  b1 cc 16 f7 e9 d3 cd ab  |d..E51^...V.....|+00001020  9c ad 95 6b 4b f4 e9 62  1b 9d 61 9b 33 f1 1d cb  |...kK..b[.a.3.].|+00001030  1e 8e 6c b3 99 31 d1 0e  6d a2 1c 27 c7 71 ce b3  |^.l..1.Nm.\'.q..|+00001040  19 db 6c d2 9a 28 b5 38  68 3f 5a b9 ee 6b 35 25  |Y.l..(.8h?Z..k5%|+00001050  46 e9 23 30 84 f3 29 d7  6f a2 0d f4 0c db ed ca  |F.#0..).o.M.L...|+00001060  95 21 2a 45 5f f6 5e 4a  e5 72 75 f4 a2 6d 7c f9  |.!*E_.^J.ru..m|.|+00001070  e5 6a d4 72 45 cd 6a 88  3c 6d 30 6d d6 66 8b 55  |.j.rE.j.<m0m.f.U|+00001080  1c 6d 0b 57 b3 14 f9 d4  9f 7d 74 90 67 69 85 d8  |\mKW.T...}t.gi..|+00001090  c1 71 53 4c 05 2d 92 4d  bc 55 24 ea 41 f4 5a 8c  |.qSLE-.M.U$.A.Z.|+000010a0  45 ea fc f7 a6 6c b7 23  ac f9 46 17 86 03 13 82  |E....l.#..FW.CS.|+000010b0  ee 7d 21 8f 3f fb 27 a2  db 11 e3 0e d3 f8 70 e2  |.}!.?.'..Q.N..p.|+000010c0  7d ee c8 b5 6b e3 83 7a  86 0c 85 65 66 18 be d8  |}...k..z.L.efX..|+000010d0  b0 ee f3 9e fa 4f 93 a7  fc d9 63 c6 07 dd 11 d1  |.....O....c.G.Q.|+000010e0  ae 20 bf cd 6c c1 f4 7c  06 27 05 d9 03 ff 0c 98  |. ..l..|F'E.C.L.|+000010f0  dd 15 30 16 05 46 87 a5  8f 7f a3 a7 87 dd b3 8a  |.U0VEF...~......|+00001100  dd 55 8e 2a ef a0 2a 47  d1 20 3f ef ff b2 c7 30  |.U.*..*G. ?....0|+00001110  19 1f 7c 59 88 47 42 11  71 6d 45 84 f2 3b bc ce  |Y_|Y.GBQqmE..;..|+00001120  bb 48 dc 71 3b 4f c7 65  bb dd 05 73 f3 c3 62 3a  |.H.q;O.e..Es..b:|+00001130  0b f1 d9 0c f4 f0 30 97  90 ed 1e c1 61 8e 98 18  |K..L..0...^.a..X|+00001140  f4 86 dc 55 ee aa d1 85  55 ee 11 ee e2 19 85 1c  |...U....U.Q..Y.\|+00001150  b7 39 f2 44 51 55 28 87  33 98 14 9c cb 74 72 d0  |.9.DQU(.3.T..tr.|+00001160  13 0e 84 32 7e 60 8b 42  21 c3 bb d5 b0 c3 4b 58  |SN.2~`.B!.....KX|+00001170  bd 2a c4 16 ee 6c b3 c0  a3 09 e5 5c 65 a5 c4 ec  |.*.V.l...I.\e...|+00001180  31 ee 30 ba 8c 0f 4e 08  86 2b f3 33 c2 81 fc 50  |1.0..ONH.+.3...P|+00001190  86 c7 e3 2e 08 37 8c 0f  86 1b f2 33 3c a1 10 6b  |....H7.O.[.3<.Pk|+000011a0  d9 7e 88 94 23 ae 98 9b  d6 16 b3 9d 63 b6 f5 e0  |.~..#....V..c...|+000011b0  79 47 d4 0a -- -- -- --  -- -- -- -- -- -- -- --  |yG.J------------|+Hello.pdf:78:+000011b0  -- -- -- -- 97 28 90 11  a6 50 55 95 61 73 52 d0  |----.(.Q.PU.asR.|+000011c0  eb 09 57 56 55 65 54 71  1e 6d 72 84 1a 7e 02 08  |.IWVUeTq^mr.Z~BH|+000011d0  fa 29 10 68 03 22 64 d8  e0 4a 14 f0 f7 60 3c 1b  |.)PhC"d..JT..`<[|+000011e0  e3 c1 eb c9 30 00 af c7  eb e1 38 43 f9 ec db 69  |....0@....8C...i|+000011f0  dc 9a 02 8e d4 13 f2 f3  6e 9c 8a b9 af e4 5e ce  |..B..S..n.....^.|+00001200  fd 9c c1 f3 b3 18 dd e7  f3 f9 82 cf 00 53 58 1e  |.....X......@SX^|+00001210  45 dd fe 6d bf ce f0 7f  d9 b4 1f e9 c1 94 74 93  |E..m...~.._...t.|+00001220  76 e1 67 77 3b 9d 14 99  fc af 2f 56 b5 7a b1 dc  |v.gw;.T.../V.z..|+00001230  c2 a7 aa 18 ea b4 cb dc  f3 13 59 84 eb 55 11 2b  |...X.....SY..UQ+|+00001240  97 6b 3a e5 bc 75 b8 b9  37 39 0e 37 1f 6e ee 95  |.k:..u..79N7_n..|+00001250  ec f4 38 7d 1e a7 a7 58  a7 2b 8b 90 71 e5 0b 55  |..8}^..X.+..q.KU|+00001260  1b 63 fb ee fc 42 4b 77  c3 ac 30 72 d0 47 f1 bf  |[c...BKw..0r.G..|+00001270  20 81 6e 36 4e 15 7c 6f  73 f8 d6 71 b7 3a f8 58  | .n6NU|os..q.:.X|+00001280  f4 1e 77 e6 c5 71 c6 58  96 3c ea dc 63 18 17 2c  |.^w..q.X.<..cXW,|+00001290  c7 bd c7 6f 0b 43 41 e7  6e e1 1e 9f b3 93 a3 8a  |...oKCA.n.^.....|+000012a0  a5 84 ac 5e bd 93 f3 d8  75 9e d3 cb d4 bb b2 51  |...^....u......Q|+000012b0  eb de d8 78 f5 83 46 d9  74 f5 2d ed 86 d6 2c ed  |...x..F.t.-...,.|+000012c0  9b ab 4e f6 af 51 f9 b5  cf f8 ad 51 4e 29 94 49  |..N..Q.....QN).I|+000012d0  79 46 04 3b 19 74 b0 81  08 69 ec 21 93 3d 65 e6  |yFD;Yt..Hi.!.=e.|+000012e0  f0 3b cf 42 89 0c ee a4  64 4a 37 47 a3 0e 86 17  |.;.B.L..dJ7G.N.W|+000012f0  91 e2 49 b1 a4 e6 e5 f6  eb 9f 62 13 5e 37 39 1d  |..I.......bS^79]|+00001300  94 97 9b 14 d3 53 78 3b  5b 62 f4 e9 57 3e 8b 7d  |...T.Sx;[b..W>.}|+00001310  e3 a5 60 43 c9 dc 3d 53  d5 65 75 54 b8 cf 1d b9  |..`C..=S.euT..].|+00001320  14 b6 ae 7d 78 c5 8b b1  5a f5 14 cb 17 fb 06 0c  |T..}x...Z.T.W.FL|+00001330  7c 2d 2b 4b 0c 14 c9 c2  2a 02 ea 93 c7 ca 5e 08  ||-+KLT..*B....^H|+00001340  cf 37 ea 72 8e eb 32 c5  d2 9e bd 76 8d 46 95 c8  |.7.r..2....v.F..|+00001350  b7 d8 88 ca a8 43 dc 71  8e 48 e7 53 9e 11 51 22  |.....C.q.H.S.QQ"|+00001360  c5 47 23 71 a5 5e 2f 52  bc 9d bb f4 75 7a fa 7a  |.G#q.^/R....uz.z|+00001370  b4 03 53 43 1f 9c 79 f6  15 f5 91 38 21 d6 df bf  |.CSC_.y.U..8!...|+00001380  f4 f1 43 6f e2 e2 1a a3  e6 1a ad e4 9c 47 71 ce  |..Co..Z..Z...Gq.|+00001390  09 d4 8e bc 81 64 4b 75  12 55 5b eb 93 36 a6 c5  |I....dKuRU[..6..|+000013a0  25 d9 f3 91 94 f2 b3 34  c7 85 e6 2b c6 2d fc fc  |%......4...+.-..|+000013b0  42 b3 e3 6c 2f d1 d9 92  e2 32 72 ec db a7 4b d7  |B..l/....2r...K.|+000013c0  dc 24 a7 43 f3 76 d6 9c  8e 24 ad b8 7a cd 9a ea  |.$.C.v...$..z...|+000013d0  d5 6b d6 ac 3e 73 a9 e5  ab 33 2d 2d 38 71 f4 48  |.k..>s...3--8q.H|+000013e0  d3 b1 63 4d 47 8e 6e 56  ef ab 4f d5 29 75 48 f8  |..cMG.nV..O.)uH.|+000013f0  f9 b3 d3 51 f4 34 fc 9a  ed da 52 f3 39 35 4e a7  |...Q.4....R.95N.|+00001400  3f 6e 92 c5 2c 7e 7e 6f  a6 89 cc 09 3e 3a 46 75  |?n..,~~o...I>:Fu|+00001410  2c c6 0b 72 e4 84 c9 63  a7 8c c8 1a 5b 34 7f 5e  |,.Kr...c...Z[4~^|+00001420  a9 7f 62 d1 9c c5 f3 66  2c 24 fa 17 20 2d 06 e4  |.~b....f,$.W -F.|+00001430  0a -- -- -- -- -- -- --  -- -- -- -- -- -- -- --  |J---------------|+Hello.pdf-79-endstream+Hello.pdf|80|endobj+Hello.pdf-81-14 0 obj+Hello.pdf|82|2734+Hello.pdf-83-endobj+Hello.pdf|84|15 0 obj+Hello.pdf:85:(Hello)+Hello.pdf-86-endobj+Hello.pdf|87|16 0 obj+Hello.pdf-88-(Mac OS X 10.12.6 Quartz PDFContext)+Hello.pdf-89-endobj+Hello.pdf|90|17 0 obj+Hello.pdf:91:(TextEdit)+Hello.pdf-92-endobj+Hello.pdf|93|18 0 obj+Hello.pdf:94:(D:20200124010711Z00'00')+Hello.pdf-95-endobj+Hello.pdf|96|19 0 obj+Hello.pdf:97:()+Hello.pdf-98-endobj+Hello.pdf|99|20 0 obj+Hello.pdf:100:[ ]+Hello.pdf-101-endobj+Hello.pdf|102|1 0 obj+Hello.pdf-103-<< /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate+Hello.pdf|104|18 0 R /Keywords 19 0 R /AAPL:Keywords 20 0 R >>+Hello.pdf-105-endobj+Hello.pdf|106|xref+Hello.pdf-107-0 21+Hello.pdf-108-0000000000 65535 f +Hello.pdf|109|0000005392 00000 n +Hello.pdf-110-0000000238 00000 n +Hello.pdf|111|0000001714 00000 n +Hello.pdf-112-0000000022 00000 n +Hello.pdf|113|0000000219 00000 n +Hello.pdf-114-0000000342 00000 n +Hello.pdf|115|0000001679 00000 n +Hello.pdf-116-0000001847 00000 n +Hello.pdf|117|0000000439 00000 n +Hello.pdf-118-0000001658 00000 n +Hello.pdf|119|0000001797 00000 n +Hello.pdf-120-0000002110 00000 n +Hello.pdf|121|0000002362 00000 n +Hello.pdf-122-0000005186 00000 n +Hello.pdf|123|0000005207 00000 n +Hello.pdf-124-0000005231 00000 n +Hello.pdf|125|0000005284 00000 n +Hello.pdf-126-0000005311 00000 n +Hello.pdf|127|0000005353 00000 n +Hello.pdf-128-0000005372 00000 n +Hello.pdf|129|trailer+Hello.pdf-130-<< /Size 21 /Root 11 0 R /Info 1 0 R /ID [ <8db88d3335070bd9583341583cf769a3>+Hello.pdf:131:<8db88d3335070bd9583341583cf769a3> ] >>+Hello.pdf-132-startxref+Hello.pdf|133|5536+Hello.pdf:134:%%EOF+Hello.sh-1-#!/bin/sh+Hello.sh|2|echo "Hello World!"+Hello.txt:1:Hello+emptyline.txt:1:

tests/out/Hello_wnhS-W-ny.out

new file mode 100644@@ -0,0 +1,455 @@+Hello.bat:1:#!/bin/sh+Hello.bat|2|echo "Hello World!"+Hello.class-1-+00000000  ca fe ba be 00 00 00 34  00 1d 0a -- -- -- -- --  |....@@@4@]J-----|+Hello.class-2-+00000000  -- -- -- -- -- -- -- --  -- -- -- 00 06 00 0f 09  |-----------@F@OI|+00000010  00 10 00 11 08 00 12 0a  -- -- -- -- -- -- -- --  |@P@QH@RJ--------|+Hello.class-3-+00000010  -- -- -- -- -- -- -- --  00 13 00 14 07 00 15 07  |--------@S@TG@UG|+00000020  00 16 01 00 06 3c 69 6e  69 74 3e 01 00 03 28 29  |@VA@F<init>A@C()|+00000030  56 01 00 04 43 6f 64 65  01 00 0f 4c 69 6e 65 4e  |VA@DCodeA@OLineN|+00000040  75 6d 62 65 72 54 61 62  6c 65 01 00 04 6d 61 69  |umberTableA@Dmai|+00000050  6e 01 00 16 28 5b 4c 6a  61 76 61 2f 6c 61 6e 67  |nA@V([Ljava/lang|+00000060  2f 53 74 72 69 6e 67 3b  29 56 01 00 0a -- -- --  |/String;)VA@J---|+Hello.class-4-+00000060  -- -- -- -- -- -- -- --  -- -- -- -- -- 53 6f 75  |-------------Sou|+00000070  72 63 65 46 69 6c 65 01  00 0a -- -- -- -- -- --  |rceFileA@J------|+Hello.class:5:+00000070  -- -- -- -- -- -- -- --  -- -- 48 65 6c 6c 6f 2e  |----------Hello.|+00000080  6a 61 76 61 0c 00 07 00  08 07 00 17 0c 00 18 00  |javaL@G@HG@WL@X@|+00000090  19 01 00 0c 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |YA@LHello World!|+000000a0  07 00 1a 0c 00 1b 00 1c  01 00 05 48 65 6c 6c 6f  |G@ZL@[@\A@EHello|+000000b0  01 00 10 6a 61 76 61 2f  6c 61 6e 67 2f 4f 62 6a  |A@Pjava/lang/Obj|+000000c0  65 63 74 01 00 10 6a 61  76 61 2f 6c 61 6e 67 2f  |ectA@Pjava/lang/|+000000d0  53 79 73 74 65 6d 01 00  03 6f 75 74 01 00 15 4c  |SystemA@CoutA@UL|+000000e0  6a 61 76 61 2f 69 6f 2f  50 72 69 6e 74 53 74 72  |java/io/PrintStr|+000000f0  65 61 6d 3b 01 00 13 6a  61 76 61 2f 69 6f 2f 50  |eam;A@Sjava/io/P|+00000100  72 69 6e 74 53 74 72 65  61 6d 01 00 07 70 72 69  |rintStreamA@Gpri|+00000110  6e 74 6c 6e 01 00 15 28  4c 6a 61 76 61 2f 6c 61  |ntlnA@U(Ljava/la|+00000120  6e 67 2f 53 74 72 69 6e  67 3b 29 56 00 21 00 05  |ng/String;)V@!@E|+00000130  00 06 00 00 00 00 00 02  00 01 00 07 00 08 00 01  |@F@@@@@B@A@G@H@A|+00000140  00 09 00 00 00 1d 00 01  00 01 00 00 00 05 2a b7  |@I@@@]@A@A@@@E*.|+00000150  00 01 b1 00 00 00 01 00  0a -- -- -- -- -- -- --  |@A.@@@A@J-------|+Hello.class-6-+00000150  -- -- -- -- -- -- -- --  -- 00 00 00 06 00 01 00  |---------@@@F@A@|+00000160  00 00 03 00 09 00 0b 00  0c 00 01 00 09 00 00 00  |@@C@I@K@L@A@I@@@|+00000170  25 00 02 00 01 00 00 00  09 b2 00 02 12 03 b6 00  |%@B@A@@@I.@BRC.@|+00000180  04 b1 00 00 00 01 00 0a  -- -- -- -- -- -- -- --  |D.@@@A@J--------|+Hello.class-7-+00000180  -- -- -- -- -- -- -- --  00 00 00 0a -- -- -- --  |--------@@@J----|+Hello.class-8-+00000180  -- -- -- -- -- -- -- --  -- -- -- -- 00 02 00 00  |------------@B@@|+00000190  00 05 00 08 00 06 00 01  00 0d 00 00 00 02 00 0e  |@E@H@F@A@M@@@B@N|+Hello.java:1:import java.lang.*;+Hello.java-2-+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java|4|{ public static void main(String[] arg)+Hello.java:5:  { System.out.println("Hello World!");+Hello.java-6-  }+Hello.java-7-}+Hello.pdf:1:+00000000  25 50 44 46 2d 31 2e 33  0a 25 c4 e5 f2 e5 eb a7  |%PDF-1.3J%......|+00000010  f3 a0 d0 c4 c6 0a -- --  -- -- -- -- -- -- -- --  |.....J----------|+Hello.pdf:3:4 0 obj+Hello.pdf|4|<< /Length 5 0 R /Filter /FlateDecode >>+Hello.pdf:5:+00000040  -- -- -- -- -- -- -- 73  74 72 65 61 6d 0a 78 01  |-------streamJxA|+00000050  45 8e bb 0a -- -- -- --  -- -- -- -- -- -- -- --  |E..J------------|+Hello.pdf:7:+00000050  -- -- -- -- 02 31 14 44  7b bf e2 94 5a 98 bd 89  |----B1TD{...Z...|+00000060  79 98 56 11 6c 17 2e f8  01 61 2d 64 d7 65 cd ff  |y.VQlW..Aa-d.e..|+00000070  83 17 2c ac 86 99 39 0c  b3 31 b2 51 02 b9 46 97  |.W,...9L.1.QB.F.|+00000080  e2 a9 12 f3 99 90 5c 4c  59 0a 9f 89 07 6f 86 6b  |..R...\LYJ..Go.k|+00000090  f7 b4 8e d0 9b e1 e2 6a  a9 52 6a b2 40 38 fe ad  |.......j.Rj.@8..|+000000a0  ed 94 20 bb b6 70 51 a3  44 c4 a3 0d ef 7f a0 69  |.. ..pQ.D..M.~.i|+000000b0  c2 0b ba 30 a8 7a ac 7c  b2 bf 4f f3 bc 1e d0 17  |.K.0.z.|..O..^.W|+000000c0  37 b5 37 e3 17 4e ff 20  a5 0a -- -- -- -- -- --  |7.7.WN. .J------|+Hello.pdf:9:endstream+Hello.pdf|10|endobj+Hello.pdf:11:5 0 obj+Hello.pdf|12|123+Hello.pdf:13:endobj+Hello.pdf|14|2 0 obj+Hello.pdf:15:<< /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]+Hello.pdf-16->>+Hello.pdf:17:endobj+Hello.pdf|18|6 0 obj+Hello.pdf:19:<< /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R >> /Font << /TT1 8 0 R+Hello.pdf-20->> >>+Hello.pdf:21:endobj+Hello.pdf|22|9 0 obj+Hello.pdf:23:<< /Length 10 0 R /N 1 /Alternate /DeviceGray /Filter /FlateDecode >>+Hello.pdf:24:+00000200  -- -- -- -- -- 73 74 72  65 61 6d 0a 78 01 85 55  |-----streamJxA.U|+00000210  5d 68 1c 55 14 3e bb 73  67 03 12 07 1f b4 0d 2d  |]h\UT>.sgCRG_.M-|+00000220  b4 83 3f 6d 09 e9 32 89  56 13 8b b5 db 4d ba 49  |..?mI.2.VS...M.I|+00000230  13 b7 eb 66 53 9b 2a ca  74 76 36 3b cd 64 66 9c  |S..fS.*.tv6;.df.|+00000240  99 dd 26 a1 4f a5 e0 9b  16 04 e9 ab a0 3e c6 82  |..&.O...VD...>..|+00000250  08 b6 2a 36 2f f6 a5 a5  c5 92 4a 35 0f 0a -- --  |H.*6/.....J5OJ--|+Hello.pdf:26:+00000250  -- -- -- -- -- -- -- --  -- -- -- -- -- -- 11 5a  |--------------QZ|+00000260  8c 20 28 7d 52 f0 3b 33  db 64 76 41 32 c3 9d f9  |. (}R.;3.dvA2...|+00000270  ee b9 e7 9e 7b ce 77 ee  b9 97 a8 eb 6f dd f3 ec  |....{.w.....o...|+00000280  b4 4a 34 e7 84 7e a1 9c  9b 3e 39 7d 4a ed ba 4d  |.J4..~...>9}J..M|+00000290  69 52 a8 9b f0 e8 46 e0  e5 4a a5 09 c6 8e eb 98  |iR....F..J.I....|+000002a0  fc 6f 7f 1e de a5 14 4b  ee ec 67 5b ed 63 5b f6  |.o~^..TK..g[.c[.|+000002b0  e4 aa 19 18 d0 ba 86 e6  56 03 63 8e 28 a5 11 65  |..YX....VCc.(.Qe|+000002c0  6a 86 e7 87 44 5d 97 20  1f 3c 1b 7a 8c 6f 03 3f  |j...D]. _<[z.oC?|+000002d0  39 5b 29 e7 81 d7 80 95  d6 5c 40 7a aa 60 3a a6  |9[)......\@z.`:.|+000002e0  6f 19 6a c1 d7 17 d4 92  ef d6 2c 3b e9 eb 56 e3  |oYj..W....,;..V.|+000002f0  6c 63 cb 67 ce 6e b0 af  fc ec 46 eb 0e 66 27 c7  |lc.g.n....F.Nf'.|+00000300  f1 ef 85 cf 17 4c 67 6a  12 78 1f f0 92 a1 8f 30  |....WLgjRx_....0|+00000310  ee 03 be db b4 4e 14 63  9c 4e 7b e1 91 72 ac 9f  |.C...NTc.N{..r..|+00000320  ce 36 66 a7 72 2d f9 c9  9a 7f 74 aa 25 bf 50 6f  |.6f.r-...~t.%.Po|+00000330  8c 32 ce 12 a5 97 16 eb  95 37 80 9f 00 5e 75 4e  |.2.R..V..7..@^uN|+00000340  17 8f b7 f4 d7 67 dd 71  b6 d3 43 24 f5 18 41 fe  |W....g.q..C$.XA.|+00000350  14 f0 b3 c0 5a dd 1c e3  3c a9 c0 15 df 2d b3 3e  |T...Z.\.<..U.-.>|+00000360  cb c3 aa 39 3c 02 fc 32  f0 25 2b 1c ab 00 c3 be  |...9<B.2.%+\.@..|+00000370  f4 43 d0 9c 64 39 b0 a0  c5 7a 9e fd c4 5a 22 7b  |.C..d9...z...Z"{|+00000380  46 3f 56 02 de 06 7c c8  b4 0b bc 16 ec 88 8a 17  |F?VB.F|..K.V...W|+00000390  96 d8 e6 20 f0 bc 63 17  79 2d c4 2e 2e 9b 41 14  |... ..cWy-....AT|+000003a0  2f 62 17 3f 85 f5 ca 68  ac 2f a7 43 bf c2 73 9f  |/bW?...h./.C..s.|+000003b0  26 92 f7 d4 ac a3 63 c0  e0 44 1e ad fb a3 2c 87  |&.....c..D^...,.|+000003c0  3f 72 e8 d9 d1 de 7a 11  78 c9 6f 94 39 f6 3d c0  |?r....zQx.o.9.=.|+000003d0  6b ba 3f 52 00 86 cd cc  63 55 7d 98 79 7e 01 78  |k.?R@...cU}.y~Ax|+000003e0  80 4e a4 74 32 c9 a5 d3  f8 1a e4 d0 bf 88 37 20  |.N.t2....Z....7 |+000003f0  8b 9a 11 f2 c8 c7 58 0d  7d 9b 0a -- -- -- -- --  |..Q...XM}.J-----|+Hello.pdf-27-+000003f0  -- -- -- -- -- -- -- --  -- -- -- d0 70 d0 7c f4  |-----------.p.|.|+00000400  0c 68 15 80 74 5a 00 2a  25 b4 4c f4 58 27 9e a3  |LhU.tZ@*%.L.X'..|+00000410  52 15 3d 95 66 a2 59 41  84 d8 ca fd a8 6f 50 7e  |RU=.f.YA.....oP~|+00000420  d7 a7 d4 80 b4 4e eb 90  d6 81 5e a3 5f 22 c9 3c  |.....N....^._".<|+00000430  fd 4a 73 e8 e7 21 6d 60  6c a6 c3 6e 1e 5e 38 b4  |.Js..!m`l..n^^8.|+00000440  08 0f d8 13 b6 f9 a0 65  d3 15 db 85 26 9e 47 3b  |HO.S...e.U..&.G;|+00000450  28 26 c4 2b 62 50 0c 91  2a 5e 15 87 c5 21 31 0c  |(&.+bPL.*^U..!1L|+00000460  e9 90 38 18 cd 89 bd 4f  fa ce 7e 3e d8 b0 f4 2e  |..8X...O..~>....|+00000470  d6 4d fa be 0c 0e 42 ac  67 c3 33 07 ac 70 34 01  |.M..LNB.g.3G.p4A|+00000480  3c f8 07 eb ce 46 9a 09  b6 2e ee 68 ec f3 bc 8f  |<.G..F.I...h....|+00000490  de 3f ef bf 63 19 b7 3e  f8 b3 8d bd 00 fa 31 27  |.?..cY.>....@.1'|+000004a0  bf c1 a2 0b 6b 26 25 e6  5e 3f f7 4d 4f c2 43 75  |...Kk&%.^?.MO.Cu|+000004b0  45 7c f5 d6 9d ee eb e7  e8 78 32 4b 51 de aa 9d  |E|.......x2KQ...|+000004c0  59 92 d7 e4 fb f2 0a --  -- -- -- -- -- -- -- --  |Y.....J---------|+Hello.pdf-28-+000004c0  -- -- -- -- -- -- -- be  f7 e4 d5 a4 0d f9 67 79  |-------.....M.gy|+000004d0  15 ef bd b6 5c 3d ca 0b  ff 93 b9 cd 21 46 3b 92  |U...\=.K....!F;.|+000004e0  cd 41 ce 3c 9b 51 b4 71  c6 1b c0 21 b8 a9 45 73  |.A.<.Q.q.[.!..Es|+000004f0  f6 b7 59 4c b2 e9 b6 62  b4 60 c9 42 94 9d ab b8  |..YL...b.`.B....|+00000500  ff cb 09 f3 c3 3c b7 b1  52 73 2e ee f0 bc b7 3f  |..I..<..Rs.....?|+00000510  63 36 cd f7 8a 0f 8b 74  be 4f bb ac ad 6b 9f 68  |c6...O.t.O...k.h|+00000520  3f 6a 7f 68 2b da c7 40  bf 4b 1f 4a 5f 4a df 4a  |?j~h+..@.K_J_J.J|+00000530  57 a4 ab d2 0d 52 a5 6b  d2 b2 f4 9d f4 bd f4 b9  |W...MR.k........|+00000540  f4 35 7a 5f 40 ba 2c 5d  e9 d8 49 71 ec 1b bb 07  |.5z_@.,]..Iq.[.G|+00000550  7e c6 7b d6 68 ed 30 66  86 b3 14 10 f3 c2 da cc  |~.{.h.0f..TP....|+00000560  0a -- -- -- -- -- -- --  -- -- -- -- -- -- -- --  |J---------------|+Hello.pdf-29-+00000560  -- 4b 1f f1 77 06 63 9b  f9 33 a1 d5 5e 03 9d bb  |-K_.wFc..3..^C..|+00000570  7f 63 2d e5 88 b2 53 79  46 19 56 76 2b cf 29 13  |~c-...SyFYVv+.)S|+00000580  4a af 72 40 39 ac 6c 57  06 d0 fa 95 51 65 2f 46  |J.r@9.lWF...Qe/F|+00000590  76 6e b0 64 63 3d ce 80  85 7f 92 67 8b a6 23 ae  |vn.dc=...~.g..#.|+000005a0  e2 3c b1 57 75 b0 e7 c3  4b 1d ef a6 5f 5c c3 d6  |.<.Wu...K].._\..|+000005b0  86 35 d8 49 3d 0e 9e d9  da a6 0e af 11 57 bf 15  |.5.I=N....N.QW.U|+000005c0  55 63 bc 3b 5d 9c 06 3a  4d 21 62 8b ce 22 72 1f  |Uc.;].F:M!b.."r_|+000005d0  3a 9c 1f 27 aa fe ce d9  5c 93 38 35 52 6f e2 94  |:._'....\.85Ro..|+000005e0  b0 c4 2e d1 2f c6 5a 35  98 13 07 50 85 e3 6d f5  |..../.Z5.SGP..m.|+000005f0  38 c8 55 9a 19 c9 0c 67  72 a4 66 7a 33 43 99 fe  |8.U.Y.Lgr.fz3C..|+00000600  cc 31 c6 51 ac d1 f9 92  d9 8b d1 21 7c 47 12 de  |.1.Q.......!|GR.|+00000610  33 cb 31 ff 9b 35 c4 67  18 ef 1d e6 a8 09 6c a3  |3.1..5.gX.]..Il.|+00000620  87 5b 2b 34 e7 71 df 11  e5 5d 6f c1 b7 66 ea a1  |.[+4.q.Q.]o..f..|+00000630  3a a0 69 2f a9 39 5c af  a6 3a e6 18 d9 3e 55 b7  |:.i/.9\..:.X.>U.|+00000640  6d 35 1a 0a -- -- -- --  -- -- -- -- -- -- -- --  |m5ZJ------------|+Hello.pdf:30:+00000640  -- -- -- -- 54 df 0c 4c  bf 69 56 b3 c4 77 37 cf  |----T.LL.iV..w7.|+00000650  23 fa eb f5 e8 4e 4e 6d  bb 61 34 fc 66 2c a3 54  |#....NNm.a4.f,.T|+00000660  ea 26 d1 7f b7 8f 93 34  0a 65 6e 64 73 74 72 65  |.&.~...4Jendstre|+00000670  61 6d 0a -- -- -- -- --  -- -- -- -- -- -- -- --  |amJ-------------|+Hello.pdf:32:endobj+Hello.pdf|33|10 0 obj+Hello.pdf:34:1116+Hello.pdf|35|endobj+Hello.pdf:36:7 0 obj+Hello.pdf|37|[ /ICCBased 9 0 R ]+Hello.pdf:38:endobj+Hello.pdf|39|3 0 obj+Hello.pdf:40:<< /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 2 0 R ] >>+Hello.pdf:41:endobj+Hello.pdf|42|11 0 obj+Hello.pdf:43:<< /Type /Catalog /Pages 3 0 R >>+Hello.pdf:44:endobj+Hello.pdf|45|8 0 obj+Hello.pdf:46:<< /Type /Font /Subtype /TrueType /BaseFont /GQTMZF+Menlo-Regular /FontDescriptor+Hello.pdf|47|12 0 R /Encoding /MacRomanEncoding /FirstChar 72 /LastChar 111 /Widths [ 602+Hello.pdf|48|0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602 0 0 0 0 0 0 602+Hello.pdf|49|0 0 602 ] >>+Hello.pdf:50:endobj+Hello.pdf|51|12 0 obj+Hello.pdf:52:<< /Type /FontDescriptor /FontName /GQTMZF+Menlo-Regular /Flags 33 /FontBBox+Hello.pdf|53|[-558 -375 718 1041] /ItalicAngle 0 /Ascent 928 /Descent -236 /CapHeight 729+Hello.pdf:54:/StemV 99 /XHeight 547 /StemH 83 /AvgWidth 602 /MaxWidth 602 /FontFile2 13 0 R+Hello.pdf-55->>+Hello.pdf:56:endobj+Hello.pdf|57|13 0 obj+Hello.pdf:58:<< /Length 14 0 R /Length1 4064 /Filter /FlateDecode >>+Hello.pdf:59:+00000970  -- -- -- -- -- -- -- --  -- -- -- 73 74 72 65 61  |-----------strea|+00000980  6d 0a 78 01 dd 57 7b 78  54 c5 15 3f 73 7f 77 36  |mJxA.W{xT.U?s~w6|+00000990  af cd 3e 92 4d 48 48 80  5d d6 e5 95 2c 81 84 b7  |..>.MHH.]...,...|+000009a0  52 16 48 78 88 20 2f eb  2e 88 f2 48 20 28 21 08  |RVHx. /....H (!H|+000009b0  41 b4 31 90 4a 51 09 c1  40 85 08 48 7d 15 51 a9  |A.1.JQI.@.HH}UQ.|+000009c0  b5 2b 45 5d 09 c4 54 a4  62 23 45 84 a0 02 0a --  |.+E]I.T.b#E..BJ-|+Hello.pdf:61:+000009c0  -- -- -- -- -- -- -- --  -- -- -- -- -- -- -- f8  |---------------.|+000009d0  a2 68 8a 14 21 d8 00 43  cf bd 1b fd 3e ed d7 ef  |.h.T!.@C..[.>...|+000009e0  eb bf ed dc 9d 33 e7 fc  e6 cc 79 dd bb f7 ce 94  |.....3....y.....|+000009f0  2d 5c 5c 44 56 aa 24 50  60 56 c9 8c 05 64 36 eb  |-\\DV.$P`V..Ed6.|+00000a00  49 1e 8a 67 dd 53 e6 36  45 8a bd 97 48 cb 9d bd  |I^.g.S.6E...H...|+00000a10  60 4e 49 54 8e 7f 91 e5  4e 73 e6 dd 37 3b 2a 27  |`NIT.~..Ns..7;*'|+00000a20  4e 66 79 40 71 d1 8c c2  a8 4c 57 78 ec 57 cc 40  |Nfy@q....LWx.W.@|+00000a30  54 16 7d 78 bc ae b8 a4  8c ed 18 cd fa 2e 13 d7  |TV}x......X...S.|+00000a40  bc d2 59 6d f3 89 a3 0c  b0 64 c6 bd 6d fe e9 38  |..Ym...L.d..m..8|+00000a50  cb ee f9 33 4a 8a 78 e4  66 8f 30 e9 b6 a0 74 51  |...3J.x.f.0...tQ|+00000a60  99 29 92 bd 9a c7 ec 05  0b 8b da f4 45 90 28 a6  |.).....EK...E.(.|+00000a70  53 74 ae 8d 1a 96 05 77  a9 59 29 8b ee 22 0b 69  |St..Z.Ew.Y).."Ki|+00000a80  e4 a0 8d 94 c4 d0 ad ac  2b 79 d6 98 d7 62 b2 96  |........+y...b..|+00000a90  3e 7d f6 8d 3b ec 37 5c  a4 4e b1 e6 e2 bd 65 e9  |>}..;.7\.N....e.|+00000aa0  79 06 73 28 b8 a4 df e5  95 57 85 ac 8f bd 85 c5  |yFs(.....W......|+00000ab0  e8 a4 31 c1 eb 62 4a 54  07 22 fd e0 e5 95 d7 92  |..1..bJTG"......|+00000ac0  65 bd 69 c9 98 f9 be c9  08 c5 66 bd ae 55 8a 94  |e.i.....H.f..U..|+00000ad0  ed eb a6 c9 a1 99 22 85  6a 09 4c 2b 49 17 2e 52  |......".jIL+IW.R|+00000ae0  cc 27 9b 34 89 03 82 70  9a bc c3 a4 76 da c4 88  |.'.4.C.p....v...|+00000af0  cd e4 13 b7 7f 3d 52 0e  f5 89 44 aa 60 cc 4a 3e  |..S.~=RN..D.`.J>|+00000b00  a6 09 94 cb 34 de b4 17  67 6a c5 92 8d 91 18 93  |.I..4..Wgj....X.|+00000b10  b7 98 3a d2 e4 75 13 87  89 68 26 22 02 21 05 a5  |..:..uS..h&"B!E.|+00000b20  70 b5 02 57 14 2e 2b b4  e6 e2 9f 75 f8 ae 02 97  |p.BWT.+....u..B.|+00000b30  5a aa e5 25 85 4b 0d 7a  cb c5 90 6c a9 46 4b a5  |Z..%.KMz...l.FK.|+00000b40  7e f1 42 17 79 31 84 8b  01 fd 42 17 7c 7b 3e 47  |~.BWy1..A.BW|{>G|+00000b50  7e db 8a f3 39 f8 87 c2  39 85 6f 72 71 d6 85 bf  |~...9...9.orq...|+00000b60  d7 a2 99 43 6c 56 68 8e  5c 3b 18 b8 a6 7f 3d 12  |...ClVh.\;X..~=R|+00000b70  5f 9d 29 94 5f d5 e2 4c  21 fe a6 70 fa cb 0c 79  |_.)._..L!..p..Ly|+00000b80  5a e1 cb 0c 7c a1 f0 f9  5d f8 4c e1 d3 3a 9c 3a  |Z..L|...].L..:.:|+00000b90  99 2e 4f b5 e2 64 3a 4e  d4 e2 13 85 8f 15 8e 1f  |..O..d:N..S..U._|+00000ba0  4b 91 c7 15 8e a5 e0 68  2d 3e fa 30 45 7e a4 f0  |K..U...h->.0E~..|+00000bb0  e1 ea 04 f9 61 0a 3e a8  c0 91 41 68 62 a1 69 10  |..D.aJ>...Ahb.iP|+00000bc0  0e 2b 1c 7a 3f 5e 1e 52  78 3f 1e 07 15 de 53 38  |N+\z?^^Rx?^GU.S8|+00000bd0  50 e5 94 07 32 f1 d7 54  ec 57 78 b7 16 8d ab 7c  |P..G2..T.Wx.V..||+00000be0  b2 51 e1 2f -- -- -- --  -- -- -- -- -- -- -- --  |.Q./------------|+Hello.pdf:62:+Hello.pdf-63-+00000be0  -- -- -- -- -- ef 54 60  9f c2 db 0a -- -- -- --  |-----.T`...J----|+Hello.pdf-64-+00000be0  -- -- -- -- -- -- -- --  -- -- -- -- 7f 56 d8 bb  |------------~V..|+00000bf0  29 51 be a5 b0 47 e1 4d  85 3f 29 34 b0 bd 06 17  |)Q...G.M.?)4..FW|+00000c00  de b0 a2 7e 77 9d ac 57  d8 bd 6b 9a dc 5d 87 dd  |...~w..W..k..]..|+00000c10  95 fa ae 3a 9f dc 35 0d  bb 02 7a 9d 0f 3b 15 5e  |...:..5M.Bz.O;U^|+00000c20  af 45 a4 66 a8 7c 4d e1  55 1e 5e 6d c5 2b 6c 6b  |.E.f.|M.U^^m.+lk|+00000c30  87 c2 1f 0b b1 bd 10 2f  db 10 4e c2 1f 14 5e 52  |.._K..P/.PN._T^R|+00000c40  81 ab f8 bd c2 8b 0a --  -- -- -- -- -- -- -- --  |......J---------|+Hello.pdf-65-+00000c40  -- -- -- -- -- -- -- bf  4b c2 36 85 17 9e b7 c9  |-------.K.6.W...|+00000c50  17 72 f1 bc 0d cf 6d 75  ca e7 ba 61 ab 13 cf 6e  |Wr..M.mu...a.S.n|+00000c60  f1 cb 67 2b b0 c5 8f df  2a 3c a3 f0 b4 c2 53 4f  |..g+....*<....SO|+00000c70  a6 cb a7 0a -- -- -- --  -- -- -- -- -- -- -- --  |...J------------|+Hello.pdf:66:+00000c70  -- -- -- -- f1 e4 13 0e  f9 64 3a 9e 70 e0 37 f1  |----..SN.d:.p.7.|+00000c80  d8 ac f0 38 3b 79 5c 61  53 22 36 6e e8 29 37 2a  |...8;y\aS"6n.)7*|+00000c90  6c e8 89 c7 d8 ff 63 b5  a8 5d 5f 27 6b 15 d6 f3  |l.....c..]_'kU..|+00000ca0  b3 b5 be 0e eb 2b f5 75  6b 7c 72 dd 34 ac 0b e8  |...N.+.uk|r.4.K.|+00000cb0  8f 2a fc 5a 61 2d cb 6b  eb b0 c6 87 1a 2e 46 cd  |.*.Za-.k....Z.F.|+00000cc0  50 3c c2 d9 3e e2 c2 ea  04 54 33 50 5d 88 55 5c  |P<..>...DT3P].U\|+00000cd0  b4 55 3e 54 39 b1 52 e1  61 85 87 14 1e 5c e1 94  |.U>T9.R.a..T^\..|+00000ce0  0f 2a ac 70 e2 57 0a cb  15 1e 70 0e 93 0f 4c c2  |O*.p.WJ.U^pN.OL.|+00000cf0  2f 15 2a ef c5 b2 a5 15  72 99 c2 d2 0a -- -- --  |/U*....Ur...J---|+Hello.pdf-68-+00000cf0  -- -- -- -- -- -- -- --  -- -- -- -- -- 54 74 c4  |-------------Tt.|+00000d00  fd 0a -- -- -- -- -- --  -- -- -- -- -- -- -- --  |.J--------------|+Hello.pdf-69-+00000d00  -- -- e5 36 fc 42 61 89  c2 3d 0a -- -- -- -- --  |--.6.Ba..=J-----|+Hello.pdf:70:+00000d00  -- -- -- -- -- -- -- --  -- -- -- 8b cb ac 72 b1  |-----------...r.|+00000d10  1d 8b 23 82 02 47 f5 32  2b ca 1a f4 45 49 58 14  |].#.BG.2+.Z.EIXT|+00000d20  d0 17 2a dc ad b0 40 a1  74 fe 24 59 5a 8b f9 25  |.W*...@.t.$YZ..%|+00000d30  dd e4 fc 49 28 e9 86 79  0a 77 e5 e2 4e 85 b9 b9  |...I(..yJw..N...|+00000d40  28 6e c5 9c 3a cc 56 28  52 28 54 98 35 b3 a3 9c  |(n..:.V(R(T.5...|+00000d50  a5 30 93 1c 72 66 47 cc  50 98 ae 70 87 c2 ed 53  |.0.\rfG.P..p...S|+00000d60  12 e4 ed 36 4c 2b c4 6d  fb 30 95 85 a9 2e 4c 49  |R..6L+.m.0....LI|+00000d70  00 3f d1 41 17 6e 55 f8  b9 c2 2d 19 e9 f2 96 5c  |@?.AWnU...-Y...\|+00000d80  4c 56 98 a4 30 51 61 42  05 c6 2b dc ec c2 38 85  |LV..0QaBE.+...8.|+00000d90  b1 c2 2f c7 2a dc 54 87  31 dd 70 e3 e8 34 79 63  |../.*.T.1.p..4yc|+00000da0  7f 8c 1e 9e 24 47 a7 61  54 41 9a 1c a5 30 92 a5  |~.^.$G.aTA.\.0..|+00000db0  91 85 18 c1 d2 88 3a 14  a4 21 9f 81 fc fe 18 3e  |..X...:T.!....X>|+00000dc0  cc 29 87 27 61 78 44 0b  04 e2 f4 61 43 ed 72 98  |.).'axDKD..aC.r.|+00000dd0  13 c3 22 1a b1 34 34 60  93 43 ed 18 1a 11 0d 2c  |S."Z.44`.C.XZQM,|+00000de0  05 86 58 65 c0 86 40 44  54 b2 34 c4 1a 27 87 58  |E.Xe..@DT.4.Z'.X|+00000df0  31 24 22 02 81 42 fd 67  0a 83 39 84 c1 ad b8 41  |1$"B.B.gJ.9....A|+00000e00  e1 fa 6e 18 a4 30 90 0b  3c b0 10 03 7a b7 97 03  |..nX.0.K<.PCz..C|+00000e10  c6 a0 bf 42 3f bf 4b f6  53 e8 3b 06 7d 7a b5 97  |...B?.K.S.;F}z..|+00000e20  7d c6 20 8f 87 3c 85 5c  56 cc 55 e8 cd d3 bd db  |}. ..<.\V.U.....|+00000e30  a3 57 7b e4 30 97 93 86  9e 71 a9 b2 67 1d fc d9  |.W{.0....q..g]..|+00000e40  c9 d2 ef 82 3f a2 19 6e  b3 1d 4e 99 9d 8c 6c 23  |....?.Yn.]N...l#|+00000e50  dc 5a 3d ab 87 4f 66 29  f4 60 cd 1e 3e 74 d7 06  |.Z=..Of).`.^>t.F|+00000e60  c9 ee 0a -- -- -- -- --  -- -- -- -- -- -- -- --  |..J-------------|+Hello.pdf-73-+00000e60  -- -- -- dd 14 ba 2a 74  b1 c3 97 3a 4c fa 0a --  |---.T.*t...:L.J-|+Hello.pdf:74:+00000e60  -- -- -- -- -- -- -- --  -- -- -- -- -- -- -- 70  |---------------p|+00000e70  9d 1d 5e 85 ce 76 bb ec  ac e0 71 fb a5 a7 02 6e  |.]^..v....q...Bn|+00000e80  3f 3a 8d 41 47 f6 dc 51  a1 83 42 26 d7 36 53 21  |?:.AG..Q..B&.6S!|+00000e90  83 ef 4a 46 3a da 2b a4  2b a4 29 b4 63 0b ed 46  |..JF:.+.+.).cK.F|+00000ea0  20 35 c5 2f 53 87 21 c5  e5 90 29 7e b8 1c 48 66  | 5./S.!...)~.\Hf|+00000eb0  bd 64 17 92 78 7d 92 82  93 33 77 0e 83 83 3d 38  |.dW.x}...3wN..=8|+00000ec0  9c 70 44 6b 67 b7 59 a5  dd 0e 7b b4 76 b6 c4 78  |.pDkg.Y..N{.v..x|+00000ed0  69 b3 c2 16 ad 5d 22 d7  2e 31 1e 89 5c bb 1d ba  |i..V.]"..1^.\.].|+00000ee0  35 0e 56 e3 d9 ea af 27  28 c4 73 26 f1 0a -- --  |5NV....'(.s&.J--|+Hello.pdf:75:+00000ee0  -- -- -- -- -- -- -- --  -- -- -- -- -- -- 71 a9  |--------------q.|+00000ef0  88 75 20 46 c1 c2 a6 2d  0a -- -- -- -- -- -- --  |.u F...-J-------|+Hello.pdf-76-+00000ef0  -- -- -- -- -- -- -- --  -- d2 05 70 72 68 85 c6  |---------.Eprh..|+00000f00  80 36 08 82 03 10 7e 90  03 22 22 0a -- -- -- --  |.6H.CP~.C""J----|+Hello.pdf-77-+00000f00  -- -- -- -- -- -- -- --  -- -- -- -- 57 ac 16 59  |------------W.VY|+00000f10  ff 3f 8d fe c7 53 e1 4f  67 84 1a cd be 4d ac e5  |.?...S.Og.Z..M..|+00000f20  d1 d8 47 44 e8 21 6d 19  7f a5 bf bf 22 b4 87 75  |..GD.!mY~..."..u|+00000f30  34 53 2f 22 1a c5 4a b1  93 f9 ad bc b7 68 a4 e5  |4S/"Z.J......h..|+00000f40  74 5e c4 e3 6d d1 9f b9  7a 5e 1b d4 3d 8c d6 d0  |t^..m...z^[.=...|+00000f50  66 73 75 0d 4e d3 62 ec  a2 43 f4 0e 1d 63 ee b4  |fsuMN.b..C.N]c..|+00000f60  18 08 5e 2b 0e 91 47 9c  60 3f 2b 7f f0 a1 a1 9e  |XH^+N.G.`?+~....|+00000f70  a5 3d 4c cb 51 8f a0 e8  24 4a 68 8b 78 89 2d 96  |.=L.Q...$Jh.x.-.|+00000f80  53 44 94 d2 32 8d 47 6d  22 5b de af 1f 64 74 3f  |SD..2.Gm"[.._dt?|+00000f90  3d c4 d7 a3 b4 85 4a 99  37 32 58 ce f1 7f 4c 3b  |=.....J.72X..~L;|+00000fa0  68 15 5d a0 0d da 19 9a  c2 fc 4e da cb f1 28 fe  |hU].M.Y...N...(.|+00000fb0  fc 9a b9 88 26 6a 61 4b  db b4 c1 da 6c d6 db cb  |....&jaK....l...|+00000fc0  d6 36 d1 26 b1 9c 9a 68  91 4e fc 29 57 74 4a 36  |.6.&...h.N.)WtJ6|+00000fd0  69 59 6c 75 07 67 40 34  93 36 cb 26 b9 c1 a8 07  |iYluGg@4.6.&...G|+00000fe0  8f 4d f2 1c cf 10 75 b0  44 2c ae 18 2f 67 61 d4  |.M.\.Pu.D,.X/ga.|+00000ff0  6e ab d8 25 7a 6b e3 e8  10 af 2f a7 c9 b8 0d 77  |n..%zk..P./...Mw|+00001000  e3 98 58 a1 7b f5 25 38  43 35 1a 61 3a dd 49 07  |..X.{.%8C5Za:.IG|+00001010  64 93 c5 45 35 31 5e aa  b1 cc 16 f7 e9 d3 cd ab  |d..E51^...V.....|+00001020  9c ad 95 6b 4b f4 e9 62  1b 9d 61 9b 33 f1 1d cb  |...kK..b[.a.3.].|+00001030  1e 8e 6c b3 99 31 d1 0e  6d a2 1c 27 c7 71 ce b3  |^.l..1.Nm.\'.q..|+00001040  19 db 6c d2 9a 28 b5 38  68 3f 5a b9 ee 6b 35 25  |Y.l..(.8h?Z..k5%|+00001050  46 e9 23 30 84 f3 29 d7  6f a2 0d f4 0c db ed ca  |F.#0..).o.M.L...|+00001060  95 21 2a 45 5f f6 5e 4a  e5 72 75 f4 a2 6d 7c f9  |.!*E_.^J.ru..m|.|+00001070  e5 6a d4 72 45 cd 6a 88  3c 6d 30 6d d6 66 8b 55  |.j.rE.j.<m0m.f.U|+00001080  1c 6d 0b 57 b3 14 f9 d4  9f 7d 74 90 67 69 85 d8  |\mKW.T...}t.gi..|+00001090  c1 71 53 4c 05 2d 92 4d  bc 55 24 ea 41 f4 5a 8c  |.qSLE-.M.U$.A.Z.|+000010a0  45 ea fc f7 a6 6c b7 23  ac f9 46 17 86 03 13 82  |E....l.#..FW.CS.|+000010b0  ee 7d 21 8f 3f fb 27 a2  db 11 e3 0e d3 f8 70 e2  |.}!.?.'..Q.N..p.|+000010c0  7d ee c8 b5 6b e3 83 7a  86 0c 85 65 66 18 be d8  |}...k..z.L.efX..|+000010d0  b0 ee f3 9e fa 4f 93 a7  fc d9 63 c6 07 dd 11 d1  |.....O....c.G.Q.|+000010e0  ae 20 bf cd 6c c1 f4 7c  06 27 05 d9 03 ff 0c 98  |. ..l..|F'E.C.L.|+000010f0  dd 15 30 16 05 46 87 a5  8f 7f a3 a7 87 dd b3 8a  |.U0VEF...~......|+00001100  dd 55 8e 2a ef a0 2a 47  d1 20 3f ef ff b2 c7 30  |.U.*..*G. ?....0|+00001110  19 1f 7c 59 88 47 42 11  71 6d 45 84 f2 3b bc ce  |Y_|Y.GBQqmE..;..|+00001120  bb 48 dc 71 3b 4f c7 65  bb dd 05 73 f3 c3 62 3a  |.H.q;O.e..Es..b:|+00001130  0b f1 d9 0c f4 f0 30 97  90 ed 1e c1 61 8e 98 18  |K..L..0...^.a..X|+00001140  f4 86 dc 55 ee aa d1 85  55 ee 11 ee e2 19 85 1c  |...U....U.Q..Y.\|+00001150  b7 39 f2 44 51 55 28 87  33 98 14 9c cb 74 72 d0  |.9.DQU(.3.T..tr.|+00001160  13 0e 84 32 7e 60 8b 42  21 c3 bb d5 b0 c3 4b 58  |SN.2~`.B!.....KX|+00001170  bd 2a c4 16 ee 6c b3 c0  a3 09 e5 5c 65 a5 c4 ec  |.*.V.l...I.\e...|+00001180  31 ee 30 ba 8c 0f 4e 08  86 2b f3 33 c2 81 fc 50  |1.0..ONH.+.3...P|+00001190  86 c7 e3 2e 08 37 8c 0f  86 1b f2 33 3c a1 10 6b  |....H7.O.[.3<.Pk|+000011a0  d9 7e 88 94 23 ae 98 9b  d6 16 b3 9d 63 b6 f5 e0  |.~..#....V..c...|+000011b0  79 47 d4 0a -- -- -- --  -- -- -- -- -- -- -- --  |yG.J------------|+Hello.pdf-78-+000011b0  -- -- -- -- 97 28 90 11  a6 50 55 95 61 73 52 d0  |----.(.Q.PU.asR.|+000011c0  eb 09 57 56 55 65 54 71  1e 6d 72 84 1a 7e 02 08  |.IWVUeTq^mr.Z~BH|+000011d0  fa 29 10 68 03 22 64 d8  e0 4a 14 f0 f7 60 3c 1b  |.)PhC"d..JT..`<[|+000011e0  e3 c1 eb c9 30 00 af c7  eb e1 38 43 f9 ec db 69  |....0@....8C...i|+000011f0  dc 9a 02 8e d4 13 f2 f3  6e 9c 8a b9 af e4 5e ce  |..B..S..n.....^.|+00001200  fd 9c c1 f3 b3 18 dd e7  f3 f9 82 cf 00 53 58 1e  |.....X......@SX^|+00001210  45 dd fe 6d bf ce f0 7f  d9 b4 1f e9 c1 94 74 93  |E..m...~.._...t.|+00001220  76 e1 67 77 3b 9d 14 99  fc af 2f 56 b5 7a b1 dc  |v.gw;.T.../V.z..|+00001230  c2 a7 aa 18 ea b4 cb dc  f3 13 59 84 eb 55 11 2b  |...X.....SY..UQ+|+00001240  97 6b 3a e5 bc 75 b8 b9  37 39 0e 37 1f 6e ee 95  |.k:..u..79N7_n..|+00001250  ec f4 38 7d 1e a7 a7 58  a7 2b 8b 90 71 e5 0b 55  |..8}^..X.+..q.KU|+00001260  1b 63 fb ee fc 42 4b 77  c3 ac 30 72 d0 47 f1 bf  |[c...BKw..0r.G..|+00001270  20 81 6e 36 4e 15 7c 6f  73 f8 d6 71 b7 3a f8 58  | .n6NU|os..q.:.X|+00001280  f4 1e 77 e6 c5 71 c6 58  96 3c ea dc 63 18 17 2c  |.^w..q.X.<..cXW,|+00001290  c7 bd c7 6f 0b 43 41 e7  6e e1 1e 9f b3 93 a3 8a  |...oKCA.n.^.....|+000012a0  a5 84 ac 5e bd 93 f3 d8  75 9e d3 cb d4 bb b2 51  |...^....u......Q|+000012b0  eb de d8 78 f5 83 46 d9  74 f5 2d ed 86 d6 2c ed  |...x..F.t.-...,.|+000012c0  9b ab 4e f6 af 51 f9 b5  cf f8 ad 51 4e 29 94 49  |..N..Q.....QN).I|+000012d0  79 46 04 3b 19 74 b0 81  08 69 ec 21 93 3d 65 e6  |yFD;Yt..Hi.!.=e.|+000012e0  f0 3b cf 42 89 0c ee a4  64 4a 37 47 a3 0e 86 17  |.;.B.L..dJ7G.N.W|+000012f0  91 e2 49 b1 a4 e6 e5 f6  eb 9f 62 13 5e 37 39 1d  |..I.......bS^79]|+00001300  94 97 9b 14 d3 53 78 3b  5b 62 f4 e9 57 3e 8b 7d  |...T.Sx;[b..W>.}|+00001310  e3 a5 60 43 c9 dc 3d 53  d5 65 75 54 b8 cf 1d b9  |..`C..=S.euT..].|+00001320  14 b6 ae 7d 78 c5 8b b1  5a f5 14 cb 17 fb 06 0c  |T..}x...Z.T.W.FL|+00001330  7c 2d 2b 4b 0c 14 c9 c2  2a 02 ea 93 c7 ca 5e 08  ||-+KLT..*B....^H|+00001340  cf 37 ea 72 8e eb 32 c5  d2 9e bd 76 8d 46 95 c8  |.7.r..2....v.F..|+00001350  b7 d8 88 ca a8 43 dc 71  8e 48 e7 53 9e 11 51 22  |.....C.q.H.S.QQ"|+00001360  c5 47 23 71 a5 5e 2f 52  bc 9d bb f4 75 7a fa 7a  |.G#q.^/R....uz.z|+00001370  b4 03 53 43 1f 9c 79 f6  15 f5 91 38 21 d6 df bf  |.CSC_.y.U..8!...|+00001380  f4 f1 43 6f e2 e2 1a a3  e6 1a ad e4 9c 47 71 ce  |..Co..Z..Z...Gq.|+00001390  09 d4 8e bc 81 64 4b 75  12 55 5b eb 93 36 a6 c5  |I....dKuRU[..6..|+000013a0  25 d9 f3 91 94 f2 b3 34  c7 85 e6 2b c6 2d fc fc  |%......4...+.-..|+000013b0  42 b3 e3 6c 2f d1 d9 92  e2 32 72 ec db a7 4b d7  |B..l/....2r...K.|+000013c0  dc 24 a7 43 f3 76 d6 9c  8e 24 ad b8 7a cd 9a ea  |.$.C.v...$..z...|+000013d0  d5 6b d6 ac 3e 73 a9 e5  ab 33 2d 2d 38 71 f4 48  |.k..>s...3--8q.H|+000013e0  d3 b1 63 4d 47 8e 6e 56  ef ab 4f d5 29 75 48 f8  |..cMG.nV..O.)uH.|+000013f0  f9 b3 d3 51 f4 34 fc 9a  ed da 52 f3 39 35 4e a7  |...Q.4....R.95N.|+00001400  3f 6e 92 c5 2c 7e 7e 6f  a6 89 cc 09 3e 3a 46 75  |?n..,~~o...I>:Fu|+00001410  2c c6 0b 72 e4 84 c9 63  a7 8c c8 1a 5b 34 7f 5e  |,.Kr...c...Z[4~^|+00001420  a9 7f 62 d1 9c c5 f3 66  2c 24 fa 17 20 2d 06 e4  |.~b....f,$.W -F.|+00001430  0a -- -- -- -- -- -- --  -- -- -- -- -- -- -- --  |J---------------|+Hello.pdf:79:endstream+Hello.pdf|80|endobj+Hello.pdf:81:14 0 obj+Hello.pdf|82|2734+Hello.pdf:83:endobj+Hello.pdf|84|15 0 obj+Hello.pdf-85-(Hello)+Hello.pdf:86:endobj+Hello.pdf|87|16 0 obj+Hello.pdf:88:(Mac OS X 10.12.6 Quartz PDFContext)+Hello.pdf:89:endobj+Hello.pdf|90|17 0 obj+Hello.pdf-91-(TextEdit)+Hello.pdf:92:endobj+Hello.pdf|93|18 0 obj+Hello.pdf-94-(D:20200124010711Z00'00')+Hello.pdf:95:endobj+Hello.pdf|96|19 0 obj+Hello.pdf-97-()+Hello.pdf:98:endobj+Hello.pdf|99|20 0 obj+Hello.pdf-100-[ ]+Hello.pdf:101:endobj+Hello.pdf|102|1 0 obj+Hello.pdf:103:<< /Title 15 0 R /Producer 16 0 R /Creator 17 0 R /CreationDate 18 0 R /ModDate+Hello.pdf|104|18 0 R /Keywords 19 0 R /AAPL:Keywords 20 0 R >>+Hello.pdf:105:endobj+Hello.pdf|106|xref+Hello.pdf:107:0 21+Hello.pdf:108:0000000000 65535 f +Hello.pdf|109|0000005392 00000 n +Hello.pdf:110:0000000238 00000 n +Hello.pdf|111|0000001714 00000 n +Hello.pdf:112:0000000022 00000 n +Hello.pdf|113|0000000219 00000 n +Hello.pdf:114:0000000342 00000 n +Hello.pdf|115|0000001679 00000 n +Hello.pdf:116:0000001847 00000 n +Hello.pdf|117|0000000439 00000 n +Hello.pdf:118:0000001658 00000 n +Hello.pdf|119|0000001797 00000 n +Hello.pdf:120:0000002110 00000 n +Hello.pdf|121|0000002362 00000 n +Hello.pdf:122:0000005186 00000 n +Hello.pdf|123|0000005207 00000 n +Hello.pdf:124:0000005231 00000 n +Hello.pdf|125|0000005284 00000 n +Hello.pdf:126:0000005311 00000 n +Hello.pdf|127|0000005353 00000 n +Hello.pdf:128:0000005372 00000 n +Hello.pdf|129|trailer+Hello.pdf:130:<< /Size 21 /Root 11 0 R /Info 1 0 R /ID [ <8db88d3335070bd9583341583cf769a3>+Hello.pdf-131-<8db88d3335070bd9583341583cf769a3> ] >>+Hello.pdf:132:startxref+Hello.pdf|133|5536+Hello.pdf-134-%%EOF+Hello.sh:1:#!/bin/sh+Hello.sh|2|echo "Hello World!"+Hello.txt-1-Hello+emptyline.txt-1-

tests/out/Hello_wnhS-W-o.out

new file mode 100644@@ -0,0 +1,314 @@+Hello.bat:sh+Hello.bat|echo+Hello.bat+Hello World!"+Hello.class:+00000090  -- -- -- -- 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |----Hello World!|+000000a0  07 00 1a -- -- -- -- --  -- -- -- -- -- -- -- --  |G@Z-------------|+Hello.java:import java.lang.*;+Hello.java:public class+Hello.java+Hello //+Hello.java+prints a+Hello.java+Hello World!+Hello.java+greeting+Hello.java|{+Hello.java+public static+Hello.java+void main(String[]+Hello.java:Hello World!");+Hello.pdf:+00000000  -- -- -- -- -- -- -- 33  0a 25 c4 e5 f2 e5 eb a7  |-------3J%......|+00000010  f3 a0 d0 c4 c6 -- -- --  -- -- -- -- -- -- -- --  |.....-----------|+Hello.pdf:4 0+Hello.pdf+obj+Hello.pdf|<<+Hello.pdf+Length 5+Hello.pdf+0 R+Hello.pdf+Filter /FlateDecode+Hello.pdf:+00000040  -- -- -- -- -- -- -- 73  74 72 65 61 6d 0a 78 01  |-------streamJxA|+00000050  45 8e bb -- -- -- -- --  -- -- -- -- -- -- -- --  |E..-------------|+Hello.pdf:+00000080  -- -- -- -- -- -- -- 4c  59 0a 9f 89 07 6f 86 6b  |-------LYJ..Go.k|+00000090  f7 b4 8e d0 9b e1 e2 6a  a9 52 6a b2 40 38 fe ad  |.......j.Rj.@8..|+000000a0  ed 94 -- -- -- -- -- --  -- -- -- -- -- -- -- --  |..--------------|+Hello.pdf:endstream+Hello.pdf|endobj+Hello.pdf:5 0+Hello.pdf+obj+Hello.pdf|123+Hello.pdf:endobj+Hello.pdf|2+Hello.pdf+0 obj+Hello.pdf:Type /Page+Hello.pdf+Parent 3+Hello.pdf+0 R+Hello.pdf+Resources 6+Hello.pdf+0 R+Hello.pdf+Contents 4+Hello.pdf+0 R+Hello.pdf+MediaBox [0+Hello.pdf+0 612+Hello.pdf:endobj+Hello.pdf|6+Hello.pdf+0 obj+Hello.pdf:ProcSet [+Hello.pdf+PDF /Text+Hello.pdf+ColorSpace <<+Hello.pdf+Cs1 7+Hello.pdf+0 R+Hello.pdf+Font <<+Hello.pdf+TT1 8+Hello.pdf+0 R+Hello.pdf:endobj+Hello.pdf|9+Hello.pdf+0 obj+Hello.pdf:Length 10+Hello.pdf+0 R+Hello.pdf+N 1+Hello.pdf+Alternate /DeviceGray+Hello.pdf+Filter /FlateDecode+Hello.pdf:+00000200  -- -- -- -- -- 73 74 72  65 61 6d 0a 78 01 85 55  |-----streamJxA.U|+00000210  5d 68 1c 55 14 3e bb 73  67 03 12 07 1f b4 -- --  |]h\UT>.sgCRG_.--|+Hello.pdf++00000220  -- -- -- 6d 09 e9 32 89  56 13 8b b5 db 4d ba 49  |---mI.2.VS...M.I|+00000230  13 b7 eb 66 53 9b 2a ca  74 76 36 3b cd 64 66 9c  |S..fS.*.tv6;.df.|+00000240  99 dd 26 a1 4f a5 e0 9b  16 04 e9 ab a0 3e c6 82  |..&.O...VD...>..|+00000250  08 b6 2a 36 2f f6 a5 a5  c5 92 4a 35 0f -- -- --  |H.*6/.....J5O---|+Hello.pdf:+000003e0  -- -- -- -- -- -- -- --  -- -- -- -- -- -- 37 20  |--------------7 |+000003f0  8b 9a 11 f2 c8 c7 58 --  -- -- -- -- -- -- -- --  |..Q...X---------|+Hello.pdf:4+Hello.pdf|endstream+Hello.pdf:endobj+Hello.pdf|10+Hello.pdf+0 obj+Hello.pdf:1116+Hello.pdf|endobj+Hello.pdf:7 0+Hello.pdf+obj+Hello.pdf|[+Hello.pdf+ICCBased 9+Hello.pdf+0 R+Hello.pdf:endobj+Hello.pdf|3+Hello.pdf+0 obj+Hello.pdf:Type /Pages+Hello.pdf+MediaBox [0+Hello.pdf+0 612+Hello.pdf+Count 1+Hello.pdf+Kids [+Hello.pdf+2 0+Hello.pdf+R ]+Hello.pdf:endobj+Hello.pdf|11+Hello.pdf+0 obj+Hello.pdf:Type /Catalog+Hello.pdf+Pages 3+Hello.pdf+0 R+Hello.pdf:endobj+Hello.pdf|8+Hello.pdf+0 obj+Hello.pdf:Type /Font+Hello.pdf+Subtype /TrueType+Hello.pdf+BaseFont /GQTMZF+Menlo-Regular+Hello.pdf+FontDescriptor+Hello.pdf|12+Hello.pdf+0 R+Hello.pdf+Encoding /MacRomanEncoding+Hello.pdf+FirstChar 72+Hello.pdf+LastChar 111+Hello.pdf+Widths [+Hello.pdf+602+Hello.pdf|0+Hello.pdf+0 0+Hello.pdf+0 0+Hello.pdf+0 0+Hello.pdf+0 0+Hello.pdf+0 0+Hello.pdf+0 0+Hello.pdf+0 0+Hello.pdf+0 0+Hello.pdf+0 0+Hello.pdf+0 0+Hello.pdf+0 0+Hello.pdf+0 0+Hello.pdf+0 0+Hello.pdf+0 602+Hello.pdf+0 0+Hello.pdf+0 0+Hello.pdf+0 0+Hello.pdf+602+Hello.pdf|0+Hello.pdf+0 602+Hello.pdf:endobj+Hello.pdf|12+Hello.pdf+0 obj+Hello.pdf:Type /FontDescriptor+Hello.pdf+FontName /GQTMZF+Menlo-Regular+Hello.pdf+Flags 33+Hello.pdf+FontBBox+Hello.pdf|[-558+Hello.pdf+375 718+Hello.pdf+ItalicAngle 0+Hello.pdf+Ascent 928+Hello.pdf+Descent -236+Hello.pdf+CapHeight 729+Hello.pdf:StemV 99+Hello.pdf+XHeight 547+Hello.pdf+StemH 83+Hello.pdf+AvgWidth 602+Hello.pdf+MaxWidth 602+Hello.pdf+FontFile2 13+Hello.pdf+0 R+Hello.pdf:endobj+Hello.pdf|13+Hello.pdf+0 obj+Hello.pdf:Length 14+Hello.pdf+0 R+Hello.pdf+Length1 4064+Hello.pdf+Filter /FlateDecode+Hello.pdf:+00000970  -- -- -- -- -- -- -- --  -- -- -- 73 74 72 65 61  |-----------strea|+00000980  6d 0a 78 01 dd 57 7b 78  54 c5 15 3f 73 7f 77 36  |mJxA.W{xT.U?s~w6|+00000990  af cd 3e 92 4d 48 48 80  5d d6 e5 95 2c 81 84 b7  |..>.MHH.]...,...|+000009a0  52 16 48 78 88 -- -- --  -- -- -- -- -- -- -- --  |RVHx.-----------|+Hello.pdf++000009a0  -- -- -- -- -- -- -- --  -- -- -- 48 20 28 21 08  |-----------H (!H|+000009b0  41 b4 31 90 4a 51 -- --  -- -- -- -- -- -- -- --  |A.1.JQ----------|+Hello.pdf:+00000ad0  -- -- -- -- -- -- -- --  6a 09 4c 2b 49 17 2e 52  |--------jIL+IW.R|+00000ae0  cc 27 9b 34 89 03 82 70  9a bc c3 a4 76 da c4 88  |.'.4.C.p....v...|+00000af0  cd e4 13 b7 7f 3d 52 0e  f5 89 44 aa 60 cc 4a 3e  |..S.~=RN..D.`.J>|+00000b00  a6 -- -- -- -- -- -- --  -- -- -- -- -- -- -- --  |.---------------|+Hello.pdf++00000bb0  -- -- -- -- 61 0a 3e a8  c0 91 41 68 62 a1 69 10  |----aJ>...Ahb.iP|+00000bc0  0e 2b 1c 7a 3f 5e 1e 52  78 3f 1e 07 15 de 53 38  |N+\z?^^Rx?^GU.S8|+00000bd0  50 e5 94 07 32 f1 d7 54  ec 57 78 b7 16 8d ab 7c  |P..G2..T.Wx.V..||+00000be0  b2 51 e1 2f -- -- -- --  -- -- -- -- -- -- -- --  |.Q./------------|+Hello.pdf:+00000ce0  -- -- -- -- -- 57 0a cb  15 1e 70 0e 93 0f 4c c2  |-----WJ.U^pN.OL.|+00000cf0  2f 15 2a ef c5 b2 a5 15  72 99 c2 d2 -- -- -- --  |/U*....Ur...----|+Hello.pdf:+00000d30  -- -- -- -- -- -- -- 79  0a 77 e5 e2 4e 85 b9 b9  |-------yJw..N...|+00000d40  28 6e c5 9c 3a cc 56 28  52 28 54 98 35 b3 a3 9c  |(n..:.V(R(T.5...|+00000d50  a5 30 93 1c 72 66 47 cc  50 98 ae 70 87 c2 ed 53  |.0.\rfG.P..p...S|+00000d60  12 e4 ed 36 4c 2b c4 6d  fb 30 95 85 a9 2e 4c 49  |R..6L+.m.0....LI|+00000d70  00 3f d1 41 17 6e 55 f8  b9 c2 2d 19 e9 f2 96 5c  |@?.AWnU...-Y...\|+00000d80  4c 56 98 a4 30 51 61 42  05 c6 2b dc ec c2 38 85  |LV..0QaBE.+...8.|+00000d90  b1 c2 2f c7 2a dc 54 87  31 dd 70 e3 e8 34 79 63  |../.*.T.1.p..4yc|+00000da0  7f 8c 1e 9e 24 47 a7 61  54 41 9a 1c a5 30 92 a5  |~.^.$G.aTA.\.0..|+00000db0  91 85 18 c1 d2 88 3a 14  a4 21 9f 81 fc fe 18 3e  |..X...:T.!....X>|+00000dc0  cc 29 87 27 61 78 44 --  -- -- -- -- -- -- -- --  |.).'axD---------|+Hello.pdf++00000df0  -- -- -- -- -- -- -- 67  0a 83 39 84 c1 ad b8 41  |-------gJ.9....A|+00000e00  e1 fa 6e 18 a4 30 90 --  -- -- -- -- -- -- -- --  |..nX.0.---------|+Hello.pdf:+00000e90  -- -- -- -- -- -- -- --  -- -- -- -- -- -- -- 46  |---------------F|+00000ea0  20 35 c5 2f 53 87 21 c5  e5 90 29 7e b8 1c 48 66  | 5./S.!...)~.\Hf|+00000eb0  bd 64 17 92 78 7d 92 82  93 33 77 0e 83 83 3d 38  |.dW.x}...3wN..=8|+00000ec0  9c 70 44 6b 67 b7 59 a5  dd 0e 7b b4 76 b6 c4 78  |.pDkg.Y..N{.v..x|+00000ed0  69 b3 c2 16 ad 5d 22 d7  2e 31 1e 89 5c bb 1d ba  |i..V.]"..1^.\.].|+00000ee0  35 0e 56 e3 d9 ea af 27  28 c4 73 26 f1 -- -- --  |5NV....'(.s&.---|+Hello.pdf:+00000ef0  -- 75 20 46 c1 c2 a6 2d  -- -- -- -- -- -- -- --  |-u F...---------|+Hello.pdf:endstream+Hello.pdf|endobj+Hello.pdf:14 0+Hello.pdf+obj+Hello.pdf|2734+Hello.pdf:endobj+Hello.pdf|15+Hello.pdf+0 obj+Hello.pdf:endobj+Hello.pdf|16+Hello.pdf+0 obj+Hello.pdf:Mac OS+Hello.pdf+X 10.12.6+Hello.pdf+Quartz PDFContext)+Hello.pdf:endobj+Hello.pdf|17+Hello.pdf+0 obj+Hello.pdf:endobj+Hello.pdf|18+Hello.pdf+0 obj+Hello.pdf:endobj+Hello.pdf|19+Hello.pdf+0 obj+Hello.pdf:endobj+Hello.pdf|20+Hello.pdf+0 obj+Hello.pdf:endobj+Hello.pdf|1+Hello.pdf+0 obj+Hello.pdf:Title 15+Hello.pdf+0 R+Hello.pdf+Producer 16+Hello.pdf+0 R+Hello.pdf+Creator 17+Hello.pdf+0 R+Hello.pdf+CreationDate 18+Hello.pdf+0 R+Hello.pdf+ModDate+Hello.pdf|18+Hello.pdf+0 R+Hello.pdf+Keywords 19+Hello.pdf+0 R+Hello.pdf+Keywords 20+Hello.pdf+0 R+Hello.pdf:endobj+Hello.pdf|xref+Hello.pdf:0 21+Hello.pdf:0000000000 65535+Hello.pdf+f +Hello.pdf|0000005392+Hello.pdf+00000 n+Hello.pdf:0000000238 00000+Hello.pdf+n +Hello.pdf|0000001714+Hello.pdf+00000 n+Hello.pdf:0000000022 00000+Hello.pdf+n +Hello.pdf|0000000219+Hello.pdf+00000 n+Hello.pdf:0000000342 00000+Hello.pdf+n +Hello.pdf|0000001679+Hello.pdf+00000 n+Hello.pdf:0000001847 00000+Hello.pdf+n +Hello.pdf|0000000439+Hello.pdf+00000 n+Hello.pdf:0000001658 00000+Hello.pdf+n +Hello.pdf|0000001797+Hello.pdf+00000 n+Hello.pdf:0000002110 00000+Hello.pdf+n +Hello.pdf|0000002362+Hello.pdf+00000 n+Hello.pdf:0000005186 00000+Hello.pdf+n +Hello.pdf|0000005207+Hello.pdf+00000 n+Hello.pdf:0000005231 00000+Hello.pdf+n +Hello.pdf|0000005284+Hello.pdf+00000 n+Hello.pdf:0000005311 00000+Hello.pdf+n +Hello.pdf|0000005353+Hello.pdf+00000 n+Hello.pdf:0000005372 00000+Hello.pdf+n +Hello.pdf|trailer+Hello.pdf:Size 21+Hello.pdf+Root 11+Hello.pdf+0 R+Hello.pdf+Info 1+Hello.pdf+0 R+Hello.pdf+ID [+Hello.pdf:startxref+Hello.pdf|5536+Hello.sh:sh+Hello.sh|echo+Hello.sh+Hello World!"

tests/out/Hello_wnhS-W-on.out

new file mode 100644@@ -0,0 +1,314 @@+Hello.bat:1:sh+Hello.bat|2|echo+Hello.bat+2+Hello World!"+Hello.class:5:+00000090  -- -- -- -- 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |----Hello World!|+000000a0  07 00 1a -- -- -- -- --  -- -- -- -- -- -- -- --  |G@Z-------------|+Hello.java:1:import java.lang.*;+Hello.java:3:public class+Hello.java+3+Hello //+Hello.java+3+prints a+Hello.java+3+Hello World!+Hello.java+3+greeting+Hello.java|4|{+Hello.java+4+public static+Hello.java+4+void main(String[]+Hello.java:5:Hello World!");+Hello.pdf:1:+00000000  -- -- -- -- -- -- -- 33  0a 25 c4 e5 f2 e5 eb a7  |-------3J%......|+00000010  f3 a0 d0 c4 c6 -- -- --  -- -- -- -- -- -- -- --  |.....-----------|+Hello.pdf:3:4 0+Hello.pdf+3+obj+Hello.pdf|4|<<+Hello.pdf+4+Length 5+Hello.pdf+4+0 R+Hello.pdf+4+Filter /FlateDecode+Hello.pdf:5:+00000040  -- -- -- -- -- -- -- 73  74 72 65 61 6d 0a 78 01  |-------streamJxA|+00000050  45 8e bb -- -- -- -- --  -- -- -- -- -- -- -- --  |E..-------------|+Hello.pdf:7:+00000080  -- -- -- -- -- -- -- 4c  59 0a 9f 89 07 6f 86 6b  |-------LYJ..Go.k|+00000090  f7 b4 8e d0 9b e1 e2 6a  a9 52 6a b2 40 38 fe ad  |.......j.Rj.@8..|+000000a0  ed 94 -- -- -- -- -- --  -- -- -- -- -- -- -- --  |..--------------|+Hello.pdf:9:endstream+Hello.pdf|10|endobj+Hello.pdf:11:5 0+Hello.pdf+11+obj+Hello.pdf|12|123+Hello.pdf:13:endobj+Hello.pdf|14|2+Hello.pdf+14+0 obj+Hello.pdf:15:Type /Page+Hello.pdf+15+Parent 3+Hello.pdf+15+0 R+Hello.pdf+15+Resources 6+Hello.pdf+15+0 R+Hello.pdf+15+Contents 4+Hello.pdf+15+0 R+Hello.pdf+15+MediaBox [0+Hello.pdf+15+0 612+Hello.pdf:17:endobj+Hello.pdf|18|6+Hello.pdf+18+0 obj+Hello.pdf:19:ProcSet [+Hello.pdf+19+PDF /Text+Hello.pdf+19+ColorSpace <<+Hello.pdf+19+Cs1 7+Hello.pdf+19+0 R+Hello.pdf+19+Font <<+Hello.pdf+19+TT1 8+Hello.pdf+19+0 R+Hello.pdf:21:endobj+Hello.pdf|22|9+Hello.pdf+22+0 obj+Hello.pdf:23:Length 10+Hello.pdf+23+0 R+Hello.pdf+23+N 1+Hello.pdf+23+Alternate /DeviceGray+Hello.pdf+23+Filter /FlateDecode+Hello.pdf:24:+00000200  -- -- -- -- -- 73 74 72  65 61 6d 0a 78 01 85 55  |-----streamJxA.U|+00000210  5d 68 1c 55 14 3e bb 73  67 03 12 07 1f b4 -- --  |]h\UT>.sgCRG_.--|+Hello.pdf+25++00000220  -- -- -- 6d 09 e9 32 89  56 13 8b b5 db 4d ba 49  |---mI.2.VS...M.I|+00000230  13 b7 eb 66 53 9b 2a ca  74 76 36 3b cd 64 66 9c  |S..fS.*.tv6;.df.|+00000240  99 dd 26 a1 4f a5 e0 9b  16 04 e9 ab a0 3e c6 82  |..&.O...VD...>..|+00000250  08 b6 2a 36 2f f6 a5 a5  c5 92 4a 35 0f -- -- --  |H.*6/.....J5O---|+Hello.pdf:26:+000003e0  -- -- -- -- -- -- -- --  -- -- -- -- -- -- 37 20  |--------------7 |+000003f0  8b 9a 11 f2 c8 c7 58 --  -- -- -- -- -- -- -- --  |..Q...X---------|+Hello.pdf:30:4+Hello.pdf|31|endstream+Hello.pdf:32:endobj+Hello.pdf|33|10+Hello.pdf+33+0 obj+Hello.pdf:34:1116+Hello.pdf|35|endobj+Hello.pdf:36:7 0+Hello.pdf+36+obj+Hello.pdf|37|[+Hello.pdf+37+ICCBased 9+Hello.pdf+37+0 R+Hello.pdf:38:endobj+Hello.pdf|39|3+Hello.pdf+39+0 obj+Hello.pdf:40:Type /Pages+Hello.pdf+40+MediaBox [0+Hello.pdf+40+0 612+Hello.pdf+40+Count 1+Hello.pdf+40+Kids [+Hello.pdf+40+2 0+Hello.pdf+40+R ]+Hello.pdf:41:endobj+Hello.pdf|42|11+Hello.pdf+42+0 obj+Hello.pdf:43:Type /Catalog+Hello.pdf+43+Pages 3+Hello.pdf+43+0 R+Hello.pdf:44:endobj+Hello.pdf|45|8+Hello.pdf+45+0 obj+Hello.pdf:46:Type /Font+Hello.pdf+46+Subtype /TrueType+Hello.pdf+46+BaseFont /GQTMZF+Menlo-Regular+Hello.pdf+46+FontDescriptor+Hello.pdf|47|12+Hello.pdf+47+0 R+Hello.pdf+47+Encoding /MacRomanEncoding+Hello.pdf+47+FirstChar 72+Hello.pdf+47+LastChar 111+Hello.pdf+47+Widths [+Hello.pdf+47+602+Hello.pdf|48|0+Hello.pdf+48+0 0+Hello.pdf+48+0 0+Hello.pdf+48+0 0+Hello.pdf+48+0 0+Hello.pdf+48+0 0+Hello.pdf+48+0 0+Hello.pdf+48+0 0+Hello.pdf+48+0 0+Hello.pdf+48+0 0+Hello.pdf+48+0 0+Hello.pdf+48+0 0+Hello.pdf+48+0 0+Hello.pdf+48+0 0+Hello.pdf+48+0 602+Hello.pdf+48+0 0+Hello.pdf+48+0 0+Hello.pdf+48+0 0+Hello.pdf+48+602+Hello.pdf|49|0+Hello.pdf+49+0 602+Hello.pdf:50:endobj+Hello.pdf|51|12+Hello.pdf+51+0 obj+Hello.pdf:52:Type /FontDescriptor+Hello.pdf+52+FontName /GQTMZF+Menlo-Regular+Hello.pdf+52+Flags 33+Hello.pdf+52+FontBBox+Hello.pdf|53|[-558+Hello.pdf+53+375 718+Hello.pdf+53+ItalicAngle 0+Hello.pdf+53+Ascent 928+Hello.pdf+53+Descent -236+Hello.pdf+53+CapHeight 729+Hello.pdf:54:StemV 99+Hello.pdf+54+XHeight 547+Hello.pdf+54+StemH 83+Hello.pdf+54+AvgWidth 602+Hello.pdf+54+MaxWidth 602+Hello.pdf+54+FontFile2 13+Hello.pdf+54+0 R+Hello.pdf:56:endobj+Hello.pdf|57|13+Hello.pdf+57+0 obj+Hello.pdf:58:Length 14+Hello.pdf+58+0 R+Hello.pdf+58+Length1 4064+Hello.pdf+58+Filter /FlateDecode+Hello.pdf:59:+00000970  -- -- -- -- -- -- -- --  -- -- -- 73 74 72 65 61  |-----------strea|+00000980  6d 0a 78 01 dd 57 7b 78  54 c5 15 3f 73 7f 77 36  |mJxA.W{xT.U?s~w6|+00000990  af cd 3e 92 4d 48 48 80  5d d6 e5 95 2c 81 84 b7  |..>.MHH.]...,...|+000009a0  52 16 48 78 88 -- -- --  -- -- -- -- -- -- -- --  |RVHx.-----------|+Hello.pdf+60++000009a0  -- -- -- -- -- -- -- --  -- -- -- 48 20 28 21 08  |-----------H (!H|+000009b0  41 b4 31 90 4a 51 -- --  -- -- -- -- -- -- -- --  |A.1.JQ----------|+Hello.pdf:61:+00000ad0  -- -- -- -- -- -- -- --  6a 09 4c 2b 49 17 2e 52  |--------jIL+IW.R|+00000ae0  cc 27 9b 34 89 03 82 70  9a bc c3 a4 76 da c4 88  |.'.4.C.p....v...|+00000af0  cd e4 13 b7 7f 3d 52 0e  f5 89 44 aa 60 cc 4a 3e  |..S.~=RN..D.`.J>|+00000b00  a6 -- -- -- -- -- -- --  -- -- -- -- -- -- -- --  |.---------------|+Hello.pdf+61++00000bb0  -- -- -- -- 61 0a 3e a8  c0 91 41 68 62 a1 69 10  |----aJ>...Ahb.iP|+00000bc0  0e 2b 1c 7a 3f 5e 1e 52  78 3f 1e 07 15 de 53 38  |N+\z?^^Rx?^GU.S8|+00000bd0  50 e5 94 07 32 f1 d7 54  ec 57 78 b7 16 8d ab 7c  |P..G2..T.Wx.V..||+00000be0  b2 51 e1 2f -- -- -- --  -- -- -- -- -- -- -- --  |.Q./------------|+Hello.pdf:66:+00000ce0  -- -- -- -- -- 57 0a cb  15 1e 70 0e 93 0f 4c c2  |-----WJ.U^pN.OL.|+00000cf0  2f 15 2a ef c5 b2 a5 15  72 99 c2 d2 -- -- -- --  |/U*....Ur...----|+Hello.pdf:70:+00000d30  -- -- -- -- -- -- -- 79  0a 77 e5 e2 4e 85 b9 b9  |-------yJw..N...|+00000d40  28 6e c5 9c 3a cc 56 28  52 28 54 98 35 b3 a3 9c  |(n..:.V(R(T.5...|+00000d50  a5 30 93 1c 72 66 47 cc  50 98 ae 70 87 c2 ed 53  |.0.\rfG.P..p...S|+00000d60  12 e4 ed 36 4c 2b c4 6d  fb 30 95 85 a9 2e 4c 49  |R..6L+.m.0....LI|+00000d70  00 3f d1 41 17 6e 55 f8  b9 c2 2d 19 e9 f2 96 5c  |@?.AWnU...-Y...\|+00000d80  4c 56 98 a4 30 51 61 42  05 c6 2b dc ec c2 38 85  |LV..0QaBE.+...8.|+00000d90  b1 c2 2f c7 2a dc 54 87  31 dd 70 e3 e8 34 79 63  |../.*.T.1.p..4yc|+00000da0  7f 8c 1e 9e 24 47 a7 61  54 41 9a 1c a5 30 92 a5  |~.^.$G.aTA.\.0..|+00000db0  91 85 18 c1 d2 88 3a 14  a4 21 9f 81 fc fe 18 3e  |..X...:T.!....X>|+00000dc0  cc 29 87 27 61 78 44 --  -- -- -- -- -- -- -- --  |.).'axD---------|+Hello.pdf+71++00000df0  -- -- -- -- -- -- -- 67  0a 83 39 84 c1 ad b8 41  |-------gJ.9....A|+00000e00  e1 fa 6e 18 a4 30 90 --  -- -- -- -- -- -- -- --  |..nX.0.---------|+Hello.pdf:74:+00000e90  -- -- -- -- -- -- -- --  -- -- -- -- -- -- -- 46  |---------------F|+00000ea0  20 35 c5 2f 53 87 21 c5  e5 90 29 7e b8 1c 48 66  | 5./S.!...)~.\Hf|+00000eb0  bd 64 17 92 78 7d 92 82  93 33 77 0e 83 83 3d 38  |.dW.x}...3wN..=8|+00000ec0  9c 70 44 6b 67 b7 59 a5  dd 0e 7b b4 76 b6 c4 78  |.pDkg.Y..N{.v..x|+00000ed0  69 b3 c2 16 ad 5d 22 d7  2e 31 1e 89 5c bb 1d ba  |i..V.]"..1^.\.].|+00000ee0  35 0e 56 e3 d9 ea af 27  28 c4 73 26 f1 -- -- --  |5NV....'(.s&.---|+Hello.pdf:75:+00000ef0  -- 75 20 46 c1 c2 a6 2d  -- -- -- -- -- -- -- --  |-u F...---------|+Hello.pdf:79:endstream+Hello.pdf|80|endobj+Hello.pdf:81:14 0+Hello.pdf+81+obj+Hello.pdf|82|2734+Hello.pdf:83:endobj+Hello.pdf|84|15+Hello.pdf+84+0 obj+Hello.pdf:86:endobj+Hello.pdf|87|16+Hello.pdf+87+0 obj+Hello.pdf:88:Mac OS+Hello.pdf+88+X 10.12.6+Hello.pdf+88+Quartz PDFContext)+Hello.pdf:89:endobj+Hello.pdf|90|17+Hello.pdf+90+0 obj+Hello.pdf:92:endobj+Hello.pdf|93|18+Hello.pdf+93+0 obj+Hello.pdf:95:endobj+Hello.pdf|96|19+Hello.pdf+96+0 obj+Hello.pdf:98:endobj+Hello.pdf|99|20+Hello.pdf+99+0 obj+Hello.pdf:101:endobj+Hello.pdf|102|1+Hello.pdf+102+0 obj+Hello.pdf:103:Title 15+Hello.pdf+103+0 R+Hello.pdf+103+Producer 16+Hello.pdf+103+0 R+Hello.pdf+103+Creator 17+Hello.pdf+103+0 R+Hello.pdf+103+CreationDate 18+Hello.pdf+103+0 R+Hello.pdf+103+ModDate

The diff stops at 1024 KiB. git show 4af28c8 shows the rest.