A completely dissected GZIP file

My very first post on this blog, 5 years ago, was a walk-through of the source code for a sample gunzip implementation. I've gotten quite a bit of feedback on it, mostly positive; it's still the most detailed post I've been able to put up here. Part of that write-up included bits and pieces of a gunzip session of an attached gzipped file, bit-for-bit. Recently, a very attentive commenter named Djibi pointed out that the attachment didn't quite match the examples in the post. My memory from that far back is hazy, but the only way I can imagine that happening is if I wrote the post based on one version of the attachment and then made a modification to the attachment without subsequently reviewing the text to ensure that it matched. Although I've gone through and updated the text to match the attachment per Djibi's very detailed analysis, I must admit that, after 5 years, I myself found the post hard to read through, as I was jumping around from one section to another. It occurred to me that a good companion piece would be a complete walk through of the gunzip process for the sample attachment. After all, this is the web and I don't have to worry about page count here! You may want to familiarize yourself with the original post before going through this one, as I assume below that you have a good understanding of Huffman codes and the LZ77 algorithm.

If you download the Attachment in question, you'll see that it's a 4704 byte file containing the gzipped representation of the source code presented in the original post, gunzip.c. Of course, if you try to open up a gzipped file the normal way, by double-clicking on it or whatever your desktop equivalent is, your OS is likely to decompress it on your behalf — but for the purposes of following along with this post, you don't want that: you want the "before" representation, as I'll be walking through the process of going from the before to the after. If you're using a Unix-type OS, you probably have the od (objectdump) utility installed that can be used to see a byte-level representation of any file. If you run that utility (or any similar hexadecimal viewer or editor), you'll see that the unambiguous, canonical representation of the file, shown in figure 1, below.

Jump to bottom
$ od -t x1 ./gunzip.c.gz 
0000000    1f  8b  08  08  a2  42  b8  4d  00  03  67  75  6e  7a  69  70
0000020    2e  63  00  bd  1b  fd  6f  da  c8  f2  77  fe  8a  6d  4e  4d
0000040    49  02  14  43  20  a4  84  9c  7a  6d  aa  ab  74  6d  9f  fa
0000060    21  9d  5e  5f  85  8c  bd  04  a7  c6  46  b6  49  9a  bb  cb
0000100    ff  fe  66  66  3f  bc  bb  36  90  e4  4e  97  7e  04  d6  33
0000120    b3  b3  b3  f3  bd  eb  9f  a2  24  88  d7  21  67  67  79  11
0000140    46  69  67  71  de  f8  c9  1c  8a  a3  99  3b  96  45  c9  a5
0000160    3d  c6  b3  2c  71  50  fd  3c  e7  59  81  63  8d  e7  cf  d9
0000200    82  fb  21  cf  58  ce  57  7e  e6  17  3c  64  f3  2c  5d  b2
0000220    a5  1f  25  0c  e8  ad  83  82  cd  d3  8c  15  0b  ce  f6  f2
0000240    e8  0f  9e  ce  f7  d8  8c  c7  e9  4d  a3  b8  5d  f1  90  cf
0000260    25  54  e3  cf  06  63  eb  24  8f  2e  13  a0  11  2c  fc  8c
0000300    45  e1  57  d6  63  df  c6  95  07  41  ba  5c  65  3c  cf  a3
0000320    34  99  2e  79  b1  48  c3  2a  cc  3c  f6  2f  f3  ea  f0  b2
0000340    88  96  fc  2b  3b  ae  23  cb  7f  14  99  3f  dd  80  98  c2
0000360    d8  5d  e3  f2  8f  68  35  15  2b  1e  37  ea  56  60  00  30
0000400    05  67  90  ca  17  69  56  b0  1f  31  4f  aa  33  1c  d2  fc
0000420    35  e3  f3  c4  5f  f2  ba  71  90  c3  92  27  45  cd  0c  41
0000440    16  78  c3  31  83  ed  29  16  51  ce  56  59  5a  f0  a0  c8
0000460    69  1b  04  5b  26  4e  9c  26  97  88  d2  ef  8d  59  3d  4e
0000500    98  06  6b  9c  aa  82  15  e1  9e  6a  c9  cc  a3  18  be  34
0000520    7e  02  a1  44  09  67  6f  3e  5f  fc  fe  99  e1  4f  f7  47
0000540    d7  2b  87  7f  7d  f5  f1  95  1a  ee  95  c3  00  fc  f1  a5
0000560    1c  3e  2e  87  df  bf  7c  77  a1  a0  47  e5  f0  ab  0f  ef
0000600    de  5d  bc  ff  8c  c3  5e  b7  76  2f  34  a7  51  52  30  57
0000620    e4  38  16  a4  21  f2  ce  1a  45  c6  f9  34  a1  6f  0e  21
0000640    b6  58  cf  e7  4b  3f  a1  a7  53  41  57  a3  a2  ac  da  1e
0000660    e9  77  92  26  ed  98  fb  73  86  70  39  00  d5  a2  b3  c3
0000700    3f  78  96  8e  37  3f  4e  13  12  a6  39  5c  af  67  c8  03
0000720    4f  48  ef  f1  e3  2c  2a  a6  b0  c2  cb  62  61  a2  67  7e
0000740    72  89  f8  79  e1  17  51  c0  ae  d3  28  64  b3  75  14  87
0000760    53  05  81  0b  6f  5a  5c  b0  c3  2c  4d  8b  56  83  ed  f8
0001000    c1  59  89  3e  ce  bb  1b  dc  62  09  e6  a0  5f  07  7a  29
0001020    87  b3  78  1a  a4  6b  a1  cb  34  90  80  35  4c  c5  06  31
0001040    a6  f7  87  1d  e2  47  58  92  5e  76  3e  36  76  84  4d  58
0001060    57  7d  4f  d4  07  3f  28  a2  6b  ae  84  21  c6  96  fe  8f
0001100    a9  29  b3  06  e9  7d  5e  f0  15  f3  58  9b  cd  a3  cb  75
0001120    c6  59  ba  86  1d  4a  6f  84  a6  2b  0e  5b  4c  b3  d6  22
0001140    c6  18  2f  82  8e  24  b0  48  d7  31  c8  98  b3  99  9f  83
0001160    92  a5  09  59  0f  4d  4d  16  75  1d  85  9c  36  cd  66  40
0001200    f1  8d  9a  d4  64  09  7d  85  5f  67  a5  84  e1  eb  d1  11
0001220    08  8c  b1  3f  49  d6  d1  1c  00  e9  e9  57  00  fc  d6  31
0001240    68  9d  bb  c4  0f  08  e3  4f  b9  47  95  99  6b  a9  8c  09
0001260    fa  ae  21  fe  a9  b5  03  f4  d2  8f  e3  34  68  32  e1  cb
0001300    9b  24  cd  03  76  08  dc  38  84  8f  40  92  07  ec  00  09
0001320    69  81  3d  12  9f  a4  5c  45  2d  b5  42  10  90  0b  d1  32
0001340    83  8d  f4  60  51  60  26  25  31  14  3d  5f  e6  bc  68  1a
0001360    1b  fa  ec  7f  dd  67  ad  07  70  f4  a0  9d  52  d3  7c  dd
0001400    b0  5d  df  d8  d1  84  c9  bd  31  20  90  eb  36  4c  81  93
0001420    9c  b3  2e  4c  fc  73  f9  b8  5c  d8  0b  74  40  24  a4  3b
0001440    53  89  7b  2d  16  46  19  b8  ef  f8  56  c4  e3  8f  6f  5e
0001460    19  4b  37  34  f8  a1  6b  57  4b  47  d3  83  d5  7b  63  f1
0001500    e9  6c  e2  da  14  8d  5b  92  90  1a  d0  14  1f  8e  0c  c9
0001520    10  09  5a  14  4c  72  76  06  54  4b  25  77  a0  be  39  ea
0001540    ac  97  a2  9f  4f  98  72  1b  4a  81  0d  c1  f4  b7  0b  06
0001560    55  ca  95  89  ad  66  44  f6  7e  ba  c6  2c  d7  b3  c9  c6
0001600    27  5b  68  d5  5a  3d  ea  83  44  b1  e8  8b  d9  6d  e9  98
0001620    00  47  47  4a  26  15  0f  e2  d0  d9  e8  3b  50  14  42  3d
0001640    91  cd  c9  4e  f4  71  43  22  d2  64  36  f6  93  09  6a  b5
0001660    7c  ae  26  30  a7  90  ea  62  6c  b0  4d  e0  db  58  23  6d
0001700    86  51  8b  16  aa  60  2b  c4  87  ef  e0  cb  c1  bd  bf  65
0001720    0b  ff  9a  93  a7  46  1a  79  a7  d3  81  0f  c9  35  24  b9
0001740    38  b8  44  ab  48  99  0f  a4  01  2c  cb  fd  59  cc  99  a0
0001760    20  a3  1a  4d  0a  23  18  39  db  e7  92  ef  b6  f7  77  77
0002000    db  0e  cb  89  56  ea  44  4c  80  b3  19  76  62  2f  dc  de
0002020    37  cb  64  2d  40  61  a6  e2  ff  76  bb  66  3f  1c  da  b4
0002040    b8  7d  18  f2  d0  4e  9b  a5  e5  1e  e0  1f  8d  55  e2  4b
0002060    0a  4f  90  e9  f6  39  e4  37  06  94  0d  27  16  26  60  d0
0002100    4b  6c  48  91  60  1e  27  db  70  e3  82  25  37  69  89  06
0002120    b4  f2  81  6a  32  d7  de  b7  a3  6b  34  67  a3  d5  cf  5d
0002140    c3  86  a5  a5  d8  3b  09  44  35  95  12  b5  44  e4  71  ce
0002160    77  4a  12  13  c9  9d  a2  24  a0  7f  4d  96  38  db  63  84
0002200    89  78  ff  80  34  55  6a  6d  63  aa  df  a2  68  55  ac  8a
0002220    c9  26  3a  78  96  cc  28  af  e3  c4  8f  39  25  ca  3a  0f
0002240    12  81  90  c6  ca  e4  c6  18  a4  8c  e5  00  73  f1  c6  f3
0002260    43  0c  1a  87  ec  17  4c  bc  c1  8b  fc  6a  f8  0c  5d  1a
0002300    cf  53  10  fb  0d  14  df  ec  da  8f  d7  3c  7f  81  18  50
0002320    da  a0  69  1d  f7  5f  b0  6e  d7  f3  ba  f0  c3  70  00  3e
0002340    e3  0f  31  dd  1c  1d  20  a8  77  7c  0c  4f  7a  83  c1  0b
0002360    86  80  02  16  40  d5  0f  81  9e  12  68  6f  30  44  d0  93
0002400    53  a4  da  15  44  61  00  91  14  51  d6  3c  11  a0  23  24
0002420    d2  1b  9d  08  aa  9a  01  fc  ec  30  f0  32  08  d2  2c  c4
0002440    05  80  ab  c4  15  41  5c  65  de  e9  c0  63  d9  3a  86  dc
0002460    17  bb  01  10  75  a1  62  67  fd  4e  af  d3  43  9c  cf  58
0002500    66  c2  df  35  a6  ca  80  d6  0c  f9  81  2a  ed  59  8e  9a
0002520    08  68  ab  75  91  43  76  7d  f8  bc  a6  8a  99  47  3f  f8
0002540    ee  5a  46  96  19  76  05  22  bd  30  f5  01  1a  3a  f1  ea
0002560    ca  20  3a  41  a9  8f  ed  71  2b  67  1e  19  0f  3d  8d  04
0002600    f2  77  c6  2d  a4  53  e3  61  af  44  3a  71  c7  2d  a4  13
0002620    e3  61  bf  44  1a  b9  e3  2e  7b  77  b5  65  e3  9b  b7  bf
0002640    5d  b0  c3  3c  5d  67  41  4d  47  61  b6  9e  d7  74  4c  fc
0002660    fc  3b  55  ba  c1  3a  cb  b8  28  ba  d8  2a  cd  23  da  cc
0002700    9b  a8  58  c0  de  22  26  1b  e1  66  be  fb  f4  0b  cc  8d
0002720    dc  c0  b4  dc  5f  8e  c9  02  70  bb  3f  72  1f  f5  1f  d1
0002740    29  f3  42  2d  11  30  62  7f  ad  d2  9c  ac  0a  40  29  c2
0002760    48  52  c0  b8  f8  7d  50  2d  ef  91  2a  25  58  58  ad  d0
0003000    e7  a6  24  de  3e  07  e6  20  64  a9  6f  b8  1e  ca  a6  3d
0003020    48  9e  29  23  83  b5  61  f7  82  e5  2b  1e  44  f3  88  8b
0003040    96  07  45  36  b9  3c  e0  fa  b6  e0  6c  6f  e6  07  df  6f
0003060    fc  2c  cc  f7  64  c1  07  69  c2  7c  9d  63  d3  4c  d4  f4
0003100    e5  0c  67  67  98  1c  53  a1  4a  5e  db  9e  5e  c7  78  6b
0003120    78  42  7d  12  23  a6  83  33  f1  c3  26  db  37  56  d2  62
0003140    1e  fd  55  43  62  2f  31  6d  c6  20  6c  45  fd  15  cf  b2
0003160    34  6b  b2  bd  0b  fc  cd  90  16  1a  a8  32  31  92  1c  98
0003200    d7  5e  e9  02  61  45  9f  3f  bc  fe  00  d2  e7  b8  55  54
0003220    f7  5e  ad  97  2b  b4  4e  fe  03  c4  ba  e0  58  16  67  2c
0003240    4f  b1  ef  06  d4  6c  2f  99  f1  62  9d  25  28  3a  cb  f5
0003260    d1  ce  ef  91  e7  dc  13  72  75  14  a0  c5  7c  50  6b  89
0003300    0d  c3  51  26  fc  a0  50  0c  6a  35  00  09  d4  87  bc  4e
0003320    21  5a  b2  01  40  9e  59  f7  14  10  7a  4a  64  b4  66  dc
0003340    2c  22  c8  dd  9a  02  54  a6  3b  b2  4a  33  81  9b  e6  d7
0003360    33  12  2c  fb  cb  50  49  a5  86  e3  ea  ba  25  16  2d  df
0003400    e2  7b  1a  25  d7  8f  e7  5d  8c  46  e6  17  12  b2  ce  30
0003420    c5  23  f8  75  26  68  c1  47  bb  0a  25  9b  a8  5f  82  b5
0003440    fa  bf  e4  f2  71  dd  d1  ce  25  ba  c1  6d  61  05  37  dc
0003460    64  52  31  88  be  da  ba  42  37  16  9c  54  bc  3b  09  2d
0003500    bc  4d  fc  65  14  38  ee  bd  4e  80  4e  0a  b3  f1  c7  0e
0003520    0d  71  54  f0  cc  8f  f3  e9  fd  fa  5d  b5  34  c2  08  d8
0003540    4e  02  2e  88  18  fb  b7  88  23  dd  ca  5a  20  94  fe  12
0003560    c8  46  24  ed  67  8b  5d  99  ed  2b  e9  c0  73  88  1d  a7
0003600    a2  bc  b1  83  96  01  23  46  0c  48  6a  9a  f9  f1  6a  e1
0003620    cf  78  51  45  d5  8f  24  a2  09  41  6b  31  e7  9f  aa  d2
0003640    c2  5e  ad  05  22  5b  93  e8  c1  68  e3  9c  35  4c  d3  f9
0003660    1c  52  c3  fc  2b  d6  e3  42  05  bd  21  38  ae  13  f8  37
0003700    6a  b1  6e  8b  c1  ff  f0  e5  b4  c5  70  18  be  0f  e0  17
0003720    f8  b5  63  f8  d5  6b  61  9d  ee  c1  3f  f8  e4  1d  0b  97
0003740    37  60  77  34  1f  8a  16  ab  1f  db  b0  94  2e  0c  84  ca
0003760    92  cc  77  43  05  b2  8c  ad  87  3a  76  1a  46  e6  fa  dd
0004000    3c  d7  7c  66  37  4a  0c  cb  6c  ca  19  8f  88  b4  63  a1
0004020    b6  02  d4  89  12  68  7c  a3  fe  c6  06  7e  fb  76  23  e8
0004040    b3  70  a6  69  ce  65  01  4b  26  47  d5  ab  6c  48  aa  ec
0004060    d3  b2  da  2c  5d  17  51  82  05  c8  95  e0  1c  69  5d  b1
0004100    19  87  b8  21  43  a3  cc  33  d2  79  d9  dd  64  7e  96  f9
0004120    b7  75  8b  f6  4e  dd  95  52  68  43  18  d1  d7  da  df  67
0004140    4d  67  f5  b8  d0  27  93  ca  a0  ea  10  d9  61  ee  aa  6c
0004160    6c  38  72  d4  46  72  a5  13  a7  68  bc  15  c8  ca  a2  2a
0004200    3c  69  e9  2a  8d  d8  af  58  cd  7d  ea  9f  ba  16  7c  1d
0004220    a5  2b  6c  25  b5  6a  78  95  7a  09  fb  82  9a  20  b6  44
0004240    78  b3  e7  92  79  ed  08  c4  59  0e  fc  e5  09  d2  09  19
0004260    65  2b  e6  ae  0b  42  a5  c3  c6  47  90  1f  5c  47  e9  3a
0004300    a7  9e  19  3a  17  15  78  14  5d  0a  92  e4  72  60  51  aa
0004320    66  6c  0a  db  3c  92  d6  77  04  f9  f0  88  7a  66  76  77
0004340    f1  c0  24  a4  56  64  d6  75  d2  63  3d  84  b2  8d  2a  e7
0004360    a8  f8  2b  98  a5  2a  e7  b1  91  17  48  23  ad  9b  cb  6d
0004400    c2  55  22  a9  a3  95  75  93  57  c6  8c  16  80  50  5e  5d
0004420    fa  3f  90  4c  59  fb  9a  dd  bd  1a  40  2a  54  9f  88  c2
0004440    d7  9a  68  2b  c2  39  ba  df  9a  de  10  25  38  2b  ee  57
0004460    fa  7d  10  16  20  75  0e  16  5b  68  d6  37  8b  02  1f  dc
0004500    95  37  7c  61  c5  63  6b  8e  cd  fe  af  07  9b  70  c4  fa
0004520    76  8b  61  06  cf  be  8f  2b  33  9c  3c  6a  86  fe  03  66
0004540    18  3d  6a  86  13  9a  c1  f3  b6  4e  71  57  8a  59  69  ae
0004560    45  de  68  e4  d5  34  90  36  6d  c8  04  0a  96  e1  96  96
0004600    92  32  59  e1  9e  27  d6  77  f2  cc  9b  1a  37  56  3f  6b
0004620    17  d5  ee  26  2a  51  d9  ca  ad  76  77  8c  29  4a  f2  2e
0004640    e9  0d  0b  2f  a9  46  66  b7  78  8b  01  d6  3b  11  bb  b9
0004660    9c  a4  37  10  05  56  e8  4a  d0  a3  6a  c7  09  c9  6f  71
0004700    93  b2  95  9f  41  19  84  55  0f  a5  d5  dc  07  5b  91  6d
0004720    e6  8a  5f  76  da  d5  16  39  95  72  50  07  7b  c6  21  b9
0004740    40  c5  ea  30  11  fd  a7  14  fe  a7  02  5f  92  87  e4  1d
0004760    53  6c  72  94  21  0f  62  bc  b5  81  a9  38  f2  42  91  49
0005000    34  a4  a2  c4  8f  6d  56  48  49  44  4e  5f  74  74  7a  50
0005020    13  f2  27  a5  0f  ed  0d  4e  aa  99  4e  5d  fc  b7  f7  ea
0005040    49  8d  76  ed  8a  fb  4e  44  a9  09  fa  b5  10  56  c4  b7
0005060    b8  d0  d1  be  2e  5e  db  d5  03  bb  6a  55  22  9a  88  d1
0005100    51  bb  3d  ae  ca  aa  14  93  8c  31  5a  5c  a3  ad  e2  6a
0005120    92  40  25  f8  c1  bf  23  3b  3a  85  34  a7  fd  e7  85  69
0005140    97  51  5b  a4  29  9a  ab  5a  f9  8d  86  6b  0d  fc  5d  79
0005160    11  e5  dd  cb  df  a7  af  df  7e  fa  fc  f2  fd  ab  0b  c6
0005200    fa  bd  93  e1  48  df  8a  a0  42  2c  99  c7  7e  c1  35  5b
0005220    74  0c  f4  e8  62  f3  6f  d6  99  f7  28  31  eb  4f  86  70
0005240    25  79  91  ae  d4  51  7b  b7  b6  c3  f7  d5  96  46  cd  3d
0005260    a8  c3  55  91  01  3a  75  03  25  59  71  35  4a  26  a1  7e
0005300    18  82  6e  88  ca  4e  c8  03  0b  37  2c  d7  bc  81  2c  f1
0005320    a0  ac  eb  61  f9  76  22  16  dc  87  e7  7d  78  76  0c  63
0005340    03  f8  3c  c0  b2  0f  e0  46  7d  f1  fc  f4  14  8b  3f  44
0005360    46  48  6f  88  a4  4e  e1  6b  af  77  82  13  dc  8d  2d  36
0005400    50  24  16  13  44  e3  98  2a  c9  91  28  1f  b1  d6  ec  c1
0005420    48  1f  3e  1f  8f  c4  24  43  f8  7e  8a  c5  66  0f  81  4e
0005440    e1  49  6f  00  5f  fb  a3  63  f1  7c  80  88  a0  19  58  8e
0005460    22  ae  37  e8  23  95  ae  c2  ef  77  4f  90  5a  17  69  0c
0005500    bd  63  80  18  21  15  21  80  5e  6f  34  22  ce  81  1a  cc
0005520    3c  38  19  4a  c6  1b  fa  e0  c2  52  04  ab  1d  f5  a4  dc
0005540    35  c7  ec  e7  94  dd  56  7a  7d  ce  e9  de  2a  03  e1  10
0005560    5c  c8  b3  ac  c5  f6  fe  93  f1  a5  5f  e0  15  16  34  62
0005600    a8  d3  f0  62  56  e7  7f  89  d1  ea  93  fd  1c  af  9a  35
0005620    ee  4c  6d  e5  7a  ee  97  c0  5a  c0  f5  69  ea  8e  cc  14
0005640    42  cf  9b  74  9d  50  43  12  6f  58  45  e2  52  0d  5d  04
0005660    c2  08  86  78  3e  cb  6f  97  b3  34  96  28  35  87  3d  67
0005700    ac  37  1a  a2  73  35  ee  e9  24  fc  1a  af  e9  f9  ab  15
0005720    c4  cd  e6  cf  07  e5  84  fa  2a  d7  18  2f  01  61  07  2b
0005740    2a  cc  44  d9  26  3c  18  d6  24  c7  87  4d  30  a3  a3  a3
0005760    03  bd  78  33  d7  b8  db  40  6c  32  d9  40  cd  b4  6b  23
0006000    39  b4  12  c3  4d  44  cf  37  d0  94  d7  e2  f4  6d  1f  35
0006020    a6  fa  55  e5  88  b0  3b  75  db  4a  4b  49  1d  e0  f8  0c
0006040    1b  e3  ed  55  0a  b0  20  50  4a  33  f4  09  81  dc  2e  a1
0006060    4b  26  f6  5b  04  86  4a  b3  30  7b  0a  d4  60  76  bb  85
0006100    d8  25  1c  94  0c  55  37  60  38  d8  90  f0  ea  60  64  c0
0006120    e3  39  d9  f1  c3  cf  5d  1d  5d  1a  6c  c9  94  4b  71  6d
0006140    4e  f4  9b  0e  4b  43  6c  32  3f  d7  3d  a7  9a  25  18  54
0006160    8f  6a  1d  b2  4b  71  f0  c8  94  5c  cf  08  e9  48  3d  01
0006200    a3  00  21  35  d0  db  17  e5  f2  28  13  36  6e  76  2b  ae
0006220    8e  ca  00  d6  71  51  d4  03  44  12  bd  09  d8  ea  01  75
0006240    98  c5  79  c0  d2  bf  85  94  d6  44  33  69  93  04  c4  69
0006260    c2  3d  f4  c5  09  a3  60  67  ef  bf  fc  f6  db  06  ad  81
0006300    99  7e  f5  b3  50  30  a5  31  0d  00  b7  bb  58  e9  2c  ba
0006320    02  db  a8  5a  30  d5  6b  d1  e8  ae  9d  48  7a  4f  9b  7b
0006340    73  4f  54  08  a9  1e  6b  6f  dc  de  ed  4e  be  1e  67  93
0006360    d3  af  ae  b4  b2  da  9d  c4  ec  73  7b  97  da  5d  55  ec
0006400    75  a5  9b  a1  91  7a  bf  c1  f1  f5  37  15  c2  56  32  b1
0006420    cd  4a  e9  79  9b  7a  0b  cf  f1  7f  cb  3a  61  f7  2e  96
0006440    33  2e  5b  70  e9  25  a5  93  22  3a  51  9f  d5  17  be  4d
0006460    06  61  5b  2d  f5  72  0c  3e  8e  6a  32  1c  c5  c1  b1  69
0006500    cd  8e  01  e2  99  1d  a4  6e  58  d2  e1  61  a7  ac  f4  82
0006520    28  0b  d6  50  df  89  de  2c  cb  f1  60  de  37  22  99  a8
0006540    ea  fc  04  22  60  12  c6  9c  92  84  1c  19  c5  ae  1a  0a
0006560    0f  f3  64  3a  f9  cc  6b  85  e8  64  8d  18  03  44  e6  88
0006600    ff  b7  15  df  9e  25  31  a5  af  35  8d  0a  57  4d  80  b9
0006620    f7  69  c1  05  d3  48  72  9f  a9  29  90  e9  14  62  77  ec
0006640    af  2c  14  23  e6  1e  36  25  30  7c  dd  e4  c4  ec  df  f5
0006660    69  9a  82  20  89  cb  cc  18  5b  bc  f8  44  e5  5d  7b  4f
0006700    73  c8  ad  5a  24  7b  a1  20  32  bb  ea  5a  87  64  af  b9
0006720    be  dd  e0  27  f2  60  4c  5a  1f  3e  88  23  1f  b4  12  76
0006740    4e  5f  9d  80  ea  25  a6  e2  dc  ba  00  61  14  2c  4d  79
0006760    a0  5f  1e  e9  4e  05  59  51  26  80  04  f1  24  6f  c4  72
0007000    6a  3c  84  51  00  38  b9  10  a8  ea  0b  93  e6  fa  b0  53
0007020    b3  38  0d  be  6b  a4  9c  9d  80  bc  87  1a  cb  7c  e7  82
0007040    e1  c5  82  6a  69  81  f8  53  a8  6f  21  f3  a4  2e  77  59
0007060    3c  a9  9b  00  32  e5  80  d9  a6  04  5d  39  62  aa  c8  de
0007100    7a  ea  7a  c1  86  3a  3e  ef  c8  c4  78  c2  5c  41  c8  02
0007120    d1  38  44  ef  18  67  e8  55  b1  8d  4b  9a  d6  89  3c  0c
0007140    87  a9  4e  cd  cb  15  58  67  aa  fb  ce  a1  aa  21  90  aa
0007160    87  d9  37  ba  96  d2  42  74  cb  d4  c2  74  da  ca  d8  5b
0007200    04  9e  ba  65  77  51  6b  e1  97  c4  38  da  27  1a  76  ca
0007220    5f  57  29  ac  2b  38  b4  bb  60  0c  a0  9b  eb  d5  2a  cd
0007240    0a  1e  ba  64  ec  da  81  d6  6a  e6  a1  d2  70  5b  4c  5f
0007260    97  30  ce  fb  21  4e  e3  e9  08  c6  7d  7d  cb  c2  cf  b0
0007300    77  85  e7  12  28  a4  92  4a  16  5d  2e  8a  76  91  b6  63
0007320    3e  2f  3a  8e  04  bc  52  02  fa  38  c6  e9  ca  dc  f7  2a
0007340    da  e6  db  44  36  45  13  67  43  cb  40  6f  ab  cb  8b  48
0007360    37  36  48  4c  ad  a9  f7  cf  ad  49  e3  bb  cd  95  fb  12
0007400    d8  72  08  bf  71  91  fb  6e  b7  e2  f1  f2  da  42  ca  12
0007420    1d  f8  48  7f  1d  17  2f  b6  e8  38  5d  7f  69  a1  bb  52
0007440    0a  6d  6a  fa  d3  1f  1d  e1  bc  2d  a3  bb  a7  b2  ab  17
0007460    24  74  25  6f  b8  86  9a  48  60  f6  a3  7e  f9  f2  06  2f
0007500    8c  b9  d7  a3  92  75  1c  b7  41  12  cb  28  a1  b7  e9  c4
0007520    3b  79  c2  80  7c  51  c7  33  f6  1e  80  58  09  84  e8  02
0007540    8e  2e  da  89  38  9e  af  c1  fe  dd  b8  41  9b  2a  40  55
0007560    ec  88  92  96  1b  c9  0f  0b  3f  bb  e4  2a  8a  6c  e8  20
0007600    21  ff  75  cd  23  00  98  42  98  14  37  b1  c4  67  a3  99
0007620    a4  b2  95  90  fb  31  dd  ae  d2  8c  9f  2b  aa  b6  af  35
0007640    ef  41  49  72  ca  7d  c3  52  1f  70  ed  49  0a  92  ee  ae
0007660    6c  e9  83  d8  fb  79  a8  27  c5  96  ac  dc  52  25  1e  6c
0007700    e0  3a  8b  37  ce  2c  d5  da  db  2a  2d  a0  c8  12  ac  6e
0007720    9b  8a  c0  b6  84  01  b7  f4  13  70  bc  82  7c  6c  8e  e9
0007740    82  4c  0a  7a  ed  32  55  a0  4b  6b  b8  d9  ea  1d  4c  48
0007760    e3  10  2f  2c  f3  0c  c8  26  c0  0c  d2  75  51  de  a4  c2
0010000    37  33  c5  51  2c  30  01  be  58  30  0e  9f  af  bf  d2  cb
0010020    15  28  46  a5  19  c8  b4  7e  b1  8f  3e  11  b3  f8  a1  23
0010040    ea  2f  51  47  29  b8  0e  bd  aa  58  19  94  ef  29  ea  f1
0010060    86  dc  56  64  00  8b  69  a3  eb  55  b5  de  2f  b9  7f  c9
0010100    5f  b0  a7  39  3b  43  6a  2b  75  6d  8d  56  7e  4e  a6  2b
0010120    98  ef  22  fb  62  1b  f1  ae  1a  5e  51  2f  ef  43  44  78
0010140    cf  63  9e  ae  78  d2  94  e0  1e  fb  06  d4  33  a9  0a  8a
0010160    a5  27  51  b2  9d  1b  71  81  02  e4  8a  b4  84  f4  9f  3d
0010200    cd  9f  51  63  5f  aa  5a  c7  60  ca  db  c6  94  32  86  74
0010220    0d  71  0e  69  1a  56  41  af  71  22  c1  9c  7a  22  0d  db
0010240    12  f6  49  b0  62  db  4b  67  6e  be  7c  7a  50  35  11  b1
0010260    a6  0d  e6  21  d0  b4  61  5c  a6  c8  8e  ac  f3  ee  1a  fa
0010300    14  c2  98  b7  83  ef  e7  76  c5  89  43  f7  87  37  c7  4b
0010320    72  7f  d5  80  78  0a  64  34  b3  ce  d1  ab  c2  7d  4b  fb
0010340    8a  a9  07  f0  2d  b4  9b  dc  b1  99  7f  d4  33  66  ce  59
0010360    7d  3b  18  a7  1f  ed  d8  d6  0c  8c  e6  32  01  41  86  56
0010400    aa  2b  08  6c  61  a0  8e  03  7a  85  18  d2  67  f9  46  6b
0010420    39  b1  da  70  cc  82  20  29  87  10  8d  bb  ae  73  6c  2b
0010440    31  87  78  58  c4  bc  0d  25  20  18  fb  58  a1  2f  8a  34
0010460    11  17  77  66  d1  a5  7c  08  26  1d  2c  20  ac  e4  3f  57
0010500    3c  a6  d0  13  7c  df  58  dc  a5  7a  a8  d3  24  23  cf  65
0010520    b5  66  78  4d  4b  08  aa  84  b2  dc  c2  36  d7  a8  99  52
0010540    04  4d  96  4b  2a  2d  66  70  ff  48  d6  77  f1  ac  76  24
0010560    b2  9a  91  62  11  a1  5f  f8  ae  a9  02  a7  e2  85  64  98
0010600    49  bd  82  dc  aa  04  6d  f2  82  29  bd  a8  8e  8e  2f  6f
0010620    18  dd  ab  4e  a7  b3  55  67  88  ba  fb  a2  a7  19  b6  31
0010640    60  ef  1b  de  d6  6d  cf  d7  ac  73  87  9a  aa  57  a9  ef
0010660    39  ab  72  e7  7f  7f  62  7a  11  dc  3d  f2  30  35  97  de
0010700    63  7f  9c  ea  02  69  6f  b8  7d  fb  d5  ce  ba  25  90  6a
0010720    62  2a  de  75  b5  4d  1c  94  fc  56  5d  81  52  13  ba  97
0010740    85  3d  4c  3a  6d  47  db  06  76  fa  3d  58  f3  db  4f  6f
0010760    ff  7b  81  f9  05  54  7a  58  f7  88  a3  0c  1f  e2  48  26
0011000    f0  c5  0b  20  5a  47  5c  71  e0  89  56  8d  38  b6  fa  76
0011020    9a  7b  97  03  b3  26  a2  d7  fa  1f  3e  11  a1  6d  99  a8
0011040    ec  55  71  4c  bf  17  52  2c  8d  06  42  61  0a  2f  0e  73
0011060    0d  47  62  1c  f1  9a  2a  ef  8e  6a  95  2c  93  8b  79  10
0011100    a7  79  75  cf  34  e7  65  24  27  40  23  a9  30  bd  7d  35
0011120    68  8b  91  ae  38  61  fe  3f  5f  7a  96  2c  63  43  00  00

Figure 1: Full hexadecimal representation of gunzip.c.gz

The objectdump facility is byte-oriented; with the arguments shown above, you'll get a hexadecimal representation of every byte in the referenced file. However, compressed files, by their nature, need to take maximum advantage of every single bit — so, to get a good gzip-eye view of this file, you need to break it down to its individual bits. However, if you learned to program any time in the past 40 years or so, you're probably used to the big-endian representation of binary data, where the most-significant bit is shown in the left-most position and the least-significant bit is shown in the right-most position. So the first byte of this file, hexadecimal 1F would be represented in binary as 00011111 and the second byte, hexadecimal 8B, as 10001011. The LZ77 specification that the gzip format is based on, though, is centered around the little-endian format: here, the first two bytes would be represented as 1111100011010001. In other circumstances, this wouldn't make a difference, since you'd be doing byte-for-byte comparisons anyway, but since compression algorithms make optimal use of every bit, the conceptual ordering of the bits makes a big difference, as codes span bytes and you have to put the bits into the correct order to reconstruct the file. Keep in mind as you read this post that the bits shown probably appear "backwards".

The first 10 bytes of figure 1 are the standard GZIP header, which is defined in bytes so the bit-ordering is immaterial. This breaks down to the representation shown in figure 2.

1f 8bStandard GZIP declaration
08Compression method: 0x08 represents GZIP
08Flags (see below)
a2 42 b8 4dTimestamp
00Extra flags
03Operating System

Figure 2: standard 10-byte GZIP header

The flags byte, byte 4, is interpreted as shown in table 1. In the case of the attachment displayed in figure 1, only bit 8 is set, indicating that a null-terminated name string follows the header.
Bit mask (in big-endian format)Meaning
00000001Text follows
00000010Header CRC follows
00000100"Extra" follows
00001000Name follows
00010000Comment follows

Table 1: Flag bit meanings

In essence, the flags byte indicates that the header can be followed by up to five null- terminated strings, which must at least be skipped over before the actual gzipped-proper content appears. In this case, it is the 9-byte ASCII-encoded string:

67  75  6e  7a  69  70 2e  63  00

or "gunzip.c". After these first 19 bytes, bit ordering begins to matter. Figure 3 presents the binary representation of the remaining 4,685 bytes of the gzipped attachment file, in little-endian order, with the least significant bits appearing first.

Jump to bottom
                           bd       1b       fd       6f       da       c8       f2       77       fe       8a       6d       4e       4d       
                           10111101 11011000 10111111 11110110 01011011 00010011 01001111 11101110 01111111 01010001 10110110 01110010 10110010 
49       02       14       43       20       a4       84       9c       7a       6d       aa       ab       74       6d       9f       fa       
10010010 01000000 00101000 11000010 00000100 00100101 00100001 00111001 01011110 10110110 01010101 11010101 00101110 10110110 11111001 01011111 
21       9d       5e       5f       85       8c       bd       04       a7       c6       46       b6       49       9a       bb       cb       
10000100 10111001 01111010 11111010 10100001 00110001 10111101 00100000 11100101 01100011 01100010 01101101 10010010 01011001 11011101 11010011 
ff       fe       66       66       3f       bc       bb       36       90       e4       4e       97       7e       04       d6       33       
11111111 01111111 01100110 01100110 11111100 00111101 11011101 01101100 00001001 00100111 01110010 11101001 01111110 00100000 01101011 11001100 
b3       b3       b3       f3       bd       eb       9f       a2       24       88       d7       21       67       67       79       11       
11001101 11001101 11001101 11001111 10111101 11010111 11111001 01000101 00100100 00010001 11101011 10000100 11100110 11100110 10011110 10001000 
46       69       67       71       de       f8       c9       1c       8a       a3       99       3b       96       45       c9       a5       
01100010 10010110 11100110 10001110 01111011 00011111 10010011 00111000 01010001 11000101 10011001 11011100 01101001 10100010 10010011 10100101 
3d       c6       b3       2c       71       50       fd       3c       e7       59       81       63       8d       e7       cf       d9       
10111100 01100011 11001101 00110100 10001110 00001010 10111111 00111100 11100111 10011010 10000001 11000110 10110001 11100111 11110011 10011011 
82       fb       21       cf       58       ce       57       7e       e6       17       3c       64       f3       2c       5d       b2       
01000001 11011111 10000100 11110011 00011010 01110011 11101010 01111110 01100111 11101000 00111100 00100110 11001111 00110100 10111010 01001101 
a5       1f       25       0c       e8       ad       83       82       cd       d3       8c       15       0b       ce       f6       f2       
10100101 11111000 10100100 00110000 00010111 10110101 11000001 01000001 10110011 11001011 00110001 10101000 11010000 01110011 01101111 01001111 
e8       0f       9e       ce       f7       d8       8c       c7       e9       4d       a3       b8       5d       f1       90       cf       
00010111 11110000 01111001 01110011 11101111 00011011 00110001 11100011 10010111 10110010 11000101 00011101 10111010 10001111 00001001 11110011 
25       54       e3       cf       06       63       eb       24       8f       2e       13       a0       11       2c       fc       8c       
10100100 00101010 11000111 11110011 01100000 11000110 11010111 00100100 11110001 01110100 11001000 00000101 10001000 00110100 00111111 00110001 
45       e1       57       d6       63       df       c6       95       07       41       ba       5c       65       3c       cf       a3       
10100010 10000111 11101010 01101011 11000110 11111011 01100011 10101001 11100000 10000010 01011101 00111010 10100110 00111100 11110011 11000101 
34       99       2e       79       b1       48       c3       2a       cc       3c       f6       2f       f3       ea       f0       b2       
00101100 10011001 01110100 10011110 10001101 00010010 11000011 01010100 00110011 00111100 01101111 11110100 11001111 01010111 00001111 01001101 
88       96       fc       2b       3b       ae       23       cb       7f       14       99       3f       dd       80       98       c2       
00010001 01101001 00111111 11010100 11011100 01110101 11000100 11010011 11111110 00101000 10011001 11111100 10111011 00000001 00011001 01000011 
d8       5d       e3       f2       8f       68       35       15       2b       1e       37       ea       56       60       00       30       
00011011 10111010 11000111 01001111 11110001 00010110 10101100 10101000 11010100 01111000 11101100 01010111 01101010 00000110 00000000 00001100 
05       67       90       ca       17       69       56       b0       1f       31       4f       aa       33       1c       d2       fc       
10100000 11100110 00001001 01010011 11101000 10010110 01101010 00001101 11111000 10001100 11110010 01010101 11001100 00111000 01001011 00111111 
35       e3       f3       c4       5f       f2       ba       71       90       c3       92       27       45       cd       0c       41       
10101100 11000111 11001111 00100011 11111010 01001111 01011101 10001110 00001001 11000011 01001001 11100100 10100010 10110011 00110000 10000010 
16       78       c3       31       83       ed       29       16       51       ce       56       59       5a       f0       a0       c8       
01101000 00011110 11000011 10001100 11000001 10110111 10010100 01101000 10001010 01110011 01101010 10011010 01011010 00001111 00000101 00010011 
69       1b       04       5b       26       4e       9c       26       97       88       d2       ef       8d       59       3d       4e       
10010110 11011000 00100000 11011010 01100100 01110010 00111001 01100100 11101001 00010001 01001011 11110111 10110001 10011010 10111100 01110010 
98       06       6b       9c       aa       82       15       e1       9e       6a       c9       cc       a3       18       be       34       
00011001 01100000 11010110 00111001 01010101 01000001 10101000 10000111 01111001 01010110 10010011 00110011 11000101 00011000 01111101 00101100 
7e       02       a1       44       09       67       6f       3e       5f       fc       fe       99       e1       4f       f7       47       
01111110 01000000 10000101 00100010 10010000 11100110 11110110 01111100 11111010 00111111 01111111 10011001 10000111 11110010 11101111 11100010 
d7       2b       87       7f       7d       f5       f1       95       1a       ee       95       c3       00       fc       f1       a5       
11101011 11010100 11100001 11111110 10111110 10101111 10001111 10101001 01011000 01110111 10101001 11000011 00000000 00111111 10001111 10100101 
1c       3e       2e       87       df       bf       7c       77       a1       a0       47       e5       f0       ab       0f       ef       
00111000 01111100 01110100 11100001 11111011 11111101 00111110 11101110 10000101 00000101 11100010 10100111 00001111 11010101 11110000 11110111 
de       5d       bc       ff       8c       c3       5e       b7       76       2f       34       a7       51       52       30       57       
01111011 10111010 00111101 11111111 00110001 11000011 01111010 11101101 01101110 11110100 00101100 11100101 10001010 01001010 00001100 11101010 
e4       38       16       a4       21       f2       ce       1a       45       c6       f9       34       a1       6f       0e       21       
00100111 00011100 01101000 00100101 10000100 01001111 01110011 01011000 10100010 01100011 10011111 00101100 10000101 11110110 01110000 10000100 
b6       58       cf       e7       4b       3f       a1       a7       53       41       57       a3       a2       ac       da       1e       
01101101 00011010 11110011 11100111 11010010 11111100 10000101 11100101 11001010 10000010 11101010 11000101 01000101 00110101 01011011 01111000 
e9       77       92       26       ed       98       fb       73       86       70       39       00       d5       a2       b3       c3       
10010111 11101110 01001001 01100100 10110111 00011001 11011111 11001110 01100001 00001110 10011100 00000000 10101011 01000101 11001101 11000011 
3f       78       96       8e       37       3f       4e       13       12       a6       39       5c       af       67       c8       03       
11111100 00011110 01101001 01110001 11101100 11111100 01110010 11001000 01001000 01100101 10011100 00111010 11110101 11100110 00010011 11000000 
4f       48       ef       f1       e3       2c       2a       a6       b0       c2       cb       62       61       a2       67       7e       
11110010 00010010 11110111 10001111 11000111 00110100 01010100 01100101 00001101 01000011 11010011 01000110 10000110 01000101 11100110 01111110 
72       89       f8       79       e1       17       51       c0       ae       d3       28       64       b3       75       14       87       
01001110 10010001 00011111 10011110 10000111 11101000 10001010 00000011 01110101 11001011 00010100 00100110 11001101 10101110 00101000 11100001 
53       05       81       0b       6f       5a       5c       b0       c3       2c       4d       8b       56       83       ed       f8       
11001010 10100000 10000001 11010000 11110110 01011010 00111010 00001101 11000011 00110100 10110010 11010001 01101010 11000001 10110111 00011111 
c1       59       89       3e       ce       bb       1b       dc       62       09       e6       a0       5f       07       7a       29       
10000011 10011010 10010001 01111100 01110011 11011101 11011000 00111011 01000110 10010000 01100111 00000101 11111010 11100000 01011110 10010100 
87       b3       78       1a       a4       6b       a1       cb       34       90       80       35       4c       c5       06       31       
11100001 11001101 00011110 01011000 00100101 11010110 10000101 11010011 00101100 00001001 00000001 10101100 00110010 10100011 01100000 10001100 
a6       f7       87       1d       e2       47       58       92       5e       76       3e       36       76       84       4d       58       
01100101 11101111 11100001 10111000 01000111 11100010 00011010 01001001 01111010 01101110 01111100 01101100 01101110 00100001 10110010 00011010 
57       7d       4f       d4       07       3f       28       a2       6b       ae       84       21       c6       96       fe       8f       
11101010 10111110 11110010 00101011 11100000 11111100 00010100 01000101 11010110 01110101 00100001 10000100 01100011 01101001 01111111 11110001 
a9       29       b3       06       e9       7d       5e       f0       15       f3       58       9b       cd       a3       cb       75       
10010101 10010100 11001101 01100000 10010111 10111110 01111010 00001111 10101000 11001111 00011010 11011001 10110011 11000101 11010011 10101110 
c6       59       ba       86       1d       4a       6f       84       a6       2b       0e       5b       4c       b3       d6       22       
01100011 10011010 01011101 01100001 10111000 01010010 11110110 00100001 01100101 11010100 01110000 11011010 00110010 11001101 01101011 01000100 
c6       18       2f       82       8e       24       b0       48       d7       31       c8       98       b3       99       9f       83       
01100011 00011000 11110100 01000001 01110001 00100100 00001101 00010010 11101011 10001100 00010011 00011001 11001101 10011001 11111001 11000001 
92       a5       09       59       0f       4d       4d       16       75       1d       85       9c       36       cd       66       40       
01001001 10100101 10010000 10011010 11110000 10110010 10110010 01101000 10101110 10111000 10100001 00111001 01101100 10110011 01100110 00000010 
f1       8d       9a       d4       64       09       7d       85       5f       67       a5       84       e1       eb       d1       11       
10001111 10110001 01011001 00101011 00100110 10010000 10111110 10100001 11111010 11100110 10100101 00100001 10000111 11010111 10001011 10001000 
08       8c       b1       3f       49       d6       d1       1c       00       e9       e9       57       00       fc       d6       31       
00010000 00110001 10001101 11111100 10010010 01101011 10001011 00111000 00000000 10010111 10010111 11101010 00000000 00111111 01101011 10001100 
68       9d       bb       c4       0f       08       e3       4f       b9       47       95       99       6b       a9       8c       09       
00010110 10111001 11011101 00100011 11110000 00010000 11000111 11110010 10011101 11100010 10101001 10011001 11010110 10010101 00110001 10010000 
fa       ae       21       fe       a9       b5       03       f4       d2       8f       e3       34       68       32       e1       cb       
01011111 01110101 10000100 01111111 10010101 10101101 11000000 00101111 01001011 11110001 11000111 00101100 00010110 01001100 10000111 11010011 
9b       24       cd       03       76       08       dc       38       84       8f       40       92       07       ec       00       09       
11011001 00100100 10110011 11000000 01101110 00010000 00111011 00011100 00100001 11110001 00000010 01001001 11100000 00110111 00000000 10010000 
69       81       3d       12       9f       a4       5c       45       2d       b5       42       10       90       0b       d1       32       
10010110 10000001 10111100 01001000 11111001 00100101 00111010 10100010 10110100 10101101 01000010 00001000 00001001 11010000 10001011 01001100 
83       8d       f4       60       51       60       26       25       31       14       3d       5f       e6       bc       68       1a       
11000001 10110001 00101111 00000110 10001010 00000110 01100100 10100100 10001100 00101000 10111100 11111010 01100111 00111101 00010110 01011000 
1b       fa       ec       7f       dd       67       ad       07       70       f4       a0       9d       52       d3       7c       dd       
11011000 01011111 00110111 11111110 10111011 11100110 10110101 11100000 00001110 00101111 00000101 10111001 01001010 11001011 00111110 10111011 
b0       5d       df       d8       d1       84       c9       bd       31       20       90       eb       36       4c       81       93       
00001101 10111010 11111011 00011011 10001011 00100001 10010011 10111101 10001100 00000100 00001001 11010111 01101100 00110010 10000001 11001001 
9c       b3       2e       4c       fc       73       f9       b8       5c       d8       0b       74       40       24       a4       3b       
00111001 11001101 01110100 00110010 00111111 11001110 10011111 00011101 00111010 00011011 11010000 00101110 00000010 00100100 00100101 11011100 
53       89       7b       2d       16       46       19       b8       ef       f8       56       c4       e3       8f       6f       5e       
11001010 10010001 11011110 10110100 01101000 01100010 10011000 00011101 11110111 00011111 01101010 00100011 11000111 11110001 11110110 01111010 
19       4b       37       34       f8       a1       6b       57       4b       47       d3       83       d5       7b       63       f1       
10011000 11010010 11101100 00101100 00011111 10000101 11010110 11101010 11010010 11100010 11001011 11000001 10101011 11011110 11000110 10001111 
e9       6c       e2       da       14       8d       5b       92       90       1a       d0       14       1f       8e       0c       c9       
10010111 00110110 01000111 01011011 00101000 10110001 11011010 01001001 00001001 01011000 00001011 00101000 11111000 01110001 00110000 10010011 
10       09       5a       14       4c       72       76       06       54       4b       25       77       a0       be       39       ea       
00001000 10010000 01011010 00101000 00110010 01001110 01101110 01100000 00101010 11010010 10100100 11101110 00000101 01111101 10011100 01010111 
ac       97       a2       9f       4f       98       72       1b       4a       81       0d       c1       f4       b7       0b       06       
00110101 11101001 01000101 11111001 11110010 00011001 01001110 11011000 01010010 10000001 10110000 10000011 00101111 11101101 11010000 01100000 
55       ca       95       89       ad       66       44       f6       7e       ba       c6       2c       d7       b3       c9       c6       
10101010 01010011 10101001 10010001 10110101 01100110 00100010 01101111 01111110 01011101 01100011 00110100 11101011 11001101 10010011 01100011 
27       5b       68       d5       5a       3d       ea       83       44       b1       e8       8b       d9       6d       e9       98       
11100100 11011010 00010110 10101011 01011010 10111100 01010111 11000001 00100010 10001101 00010111 11010001 10011011 10110110 10010111 00011001 
00       47       47       4a       26       15       0f       e2       d0       d9       e8       3b       50       14       42       3d       
00000000 11100010 11100010 01010010 01100100 10101000 11110000 01000111 00001011 10011011 00010111 11011100 00001010 00101000 01000010 10111100 
91       cd       c9       4e       f4       71       43       22       d2       64       36       f6       93       09       6a       b5       
10001001 10110011 10010011 01110010 00101111 10001110 11000010 01000100 01001011 00100110 01101100 01101111 11001001 10010000 01010110 10101101 
7c       ae       26       30       a7       90       ea       62       6c       b0       4d       e0       db       58       23       6d       
00111110 01110101 01100100 00001100 11100101 00001001 01010111 01000110 00110110 00001101 10110010 00000111 11011011 00011010 11000100 10110110 
86       51       8b       16       aa       60       2b       c4       87       ef       e0       cb       c1       bd       bf       65       
01100001 10001010 11010001 01101000 01010101 00000110 11010100 00100011 11100001 11110111 00000111 11010011 10000011 10111101 11111101 10100110 
0b       ff       9a       93       a7       46       1a       79       a7       d3       81       0f       c9       35       24       b9       
11010000 11111111 01011001 11001001 11100101 01100010 01011000 10011110 11100101 11001011 10000001 11110000 10010011 10101100 00100100 10011101 
38       b8       44       ab       48       99       0f       a4       01       2c       cb       fd       59       cc       99       a0       
00011100 00011101 00100010 11010101 00010010 10011001 11110000 00100101 10000000 00110100 11010011 10111111 10011010 00110011 10011001 00000101 
20       a3       1a       4d       0a       23       18       39       db       e7       92       ef       b6       f7       77       77       
00000100 11000101 01011000 10110010 01010000 11000100 00011000 10011100 11011011 11100111 01001001 11110111 01101101 11101111 11101110 11101110 
db       0e       cb       89       56       ea       44       4c       80       b3       19       76       62       2f       dc       de       
11011011 01110000 11010011 10010001 01101010 01010111 00100010 00110010 00000001 11001101 10011000 01101110 01000110 11110100 00111011 01111011 
37       cb       64       2d       40       61       a6       e2       ff       76       bb       66       3f       1c       da       b4       
11101100 11010011 00100110 10110100 00000010 10000110 01100101 01000111 11111111 01101110 11011101 01100110 11111100 00111000 01011011 00101101 
b8       7d       18       f2       d0       4e       9b       a5       e5       1e       e0       1f       8d       55       e2       4b       
00011101 10111110 00011000 01001111 00001011 01110010 11011001 10100101 10100111 01111000 00000111 11111000 10110001 10101010 01000111 11010010 
0a       4f       90       e9       f6       39       e4       37       06       94       0d       27       16       26       60       d0       
01010000 11110010 00001001 10010111 01101111 10011100 00100111 11101100 01100000 00101001 10110000 11100100 01101000 01100100 00000110 00001011 
4b       6c       48       91       60       1e       27       db       70       e3       82       25       37       69       89       06       
11010010 00110110 00010010 10001001 00000110 01111000 11100100 11011011 00001110 11000111 01000001 10100100 11101100 10010110 10010001 01100000 
b4       f2       81       6a       32       d7       de       b7       a3       6b       34       67       a3       d5       cf       5d       
00101101 01001111 10000001 01010110 01001100 11101011 01111011 11101101 11000101 11010110 00101100 11100110 11000101 10101011 11110011 10111010 
c3       86       a5       a5       d8       3b       09       44       35       95       12       b5       44       e4       71       ce       
11000011 01100001 10100101 10100101 00011011 11011100 10010000 00100010 10101100 10101001 01001000 10101101 00100010 00100111 10001110 01110011 
77       4a       12       13       c9       9d       a2       24       a0       7f       4d       96       38       db       63       84       
11101110 01010010 01001000 11001000 10010011 10111001 01000101 00100100 00000101 11111110 10110010 01101001 00011100 11011011 11000110 00100001 
89       78       ff       80       34       55       6a       6d       63       aa       df       a2       68       55       ac       8a       
10010001 00011110 11111111 00000001 00101100 10101010 01010110 10110110 11000110 01010101 11111011 01000101 00010110 10101010 00110101 01010001 
c9       26       3a       78       96       cc       28       af       e3       c4       8f       39       25       ca       3a       0f       
10010011 01100100 01011100 00011110 01101001 00110011 00010100 11110101 11000111 00100011 11110001 10011100 10100100 01010011 01011100 11110000 
12       81       90       c6       ca       e4       c6       18       a4       8c       e5       00       73       f1       c6       f3       
01001000 10000001 00001001 01100011 01010011 00100111 01100011 00011000 00100101 00110001 10100111 00000000 11001110 10001111 01100011 11001111 
43       0c       1a       87       ec       17       4c       bc       c1       8b       fc       6a       f8       0c       5d       1a       
11000010 00110000 01011000 11100001 00110111 11101000 00110010 00111101 10000011 11010001 00111111 01010110 00011111 00110000 10111010 01011000 
cf       53       10       fb       0d       14       df       ec       da       8f       d7       3c       7f       81       18       50       
11110011 11001010 00001000 11011111 10110000 00101000 11111011 00110111 01011011 11110001 11101011 00111100 11111110 10000001 00011000 00001010 
da       a0       69       1d       f7       5f       b0       6e       d7       f3       ba       f0       c3       70       00       3e       
01011011 00000101 10010110 10111000 11101111 11111010 00001101 01110110 11101011 11001111 01011101 00001111 11000011 00001110 00000000 01111100 
e3       0f       31       dd       1c       1d       20       a8       77       7c       0c       4f       7a       83       c1       0b       
11000111 11110000 10001100 10111011 00111000 10111000 00000100 00010101 11101110 00111110 00110000 11110010 01011110 11000001 10000011 11010000 
86       80       02       16       40       d5       0f       81       9e       12       68       6f       30       44       d0       93       
01100001 00000001 01000000 01101000 00000010 10101011 11110000 10000001 01111001 01001000 00010110 11110110 00001100 00100010 00001011 11001001 
53       a4       da       15       44       61       00       91       14       51       d6       3c       11       a0       23       24       
11001010 00100101 01011011 10101000 00100010 10000110 00000000 10001001 00101000 10001010 01101011 00111100 10001000 00000101 11000100 00100100 
d2       1b       9d       08       aa       9a       01       fc       ec       30       f0       32       08       d2       2c       c4       
01001011 11011000 10111001 00010000 01010101 01011001 10000000 00111111 00110111 00001100 00001111 01001100 00010000 01001011 00110100 00100011 
05       80       ab       c4       15       41       5c       65       de       e9       c0       63       d9       3a       86       dc       
10100000 00000001 11010101 00100011 10101000 10000010 00111010 10100110 01111011 10010111 00000011 11000110 10011011 01011100 01100001 00111011 
17       bb       01       10       75       a1       62       67       fd       4e       af       d3       43       9c       cf       58       
11101000 11011101 10000000 00001000 10101110 10000101 01000110 11100110 10111111 01110010 11110101 11001011 11000010 00111001 11110011 00011010 
66       c2       df       35       a6       ca       80       d6       0c       f9       81       2a       ed       59       8e       9a       
01100110 01000011 11111011 10101100 01100101 01010011 00000001 01101011 00110000 10011111 10000001 01010100 10110111 10011010 01110001 01011001 
08       68       ab       75       91       43       76       7d       f8       bc       a6       8a       99       47       3f       f8       
00010000 00010110 11010101 10101110 10001001 11000010 01101110 10111110 00011111 00111101 01100101 01010001 10011001 11100010 11111100 00011111 
ee       5a       46       96       19       76       05       22       bd       30       f5       01       1a       3a       f1       ea       
01110111 01011010 01100010 01101001 10011000 01101110 10100000 01000100 10111101 00001100 10101111 10000000 01011000 01011100 10001111 01010111 
ca       20       3a       41       a9       8f       ed       71       2b       67       1e       19       0f       3d       8d       04       
01010011 00000100 01011100 10000010 10010101 11110001 10110111 10001110 11010100 11100110 01111000 10011000 11110000 10111100 10110001 00100000 
f2       77       c6       2d       a4       53       e3       61       af       44       3a       71       c7       2d       a4       13       
01001111 11101110 01100011 10110100 00100101 11001010 11000111 10000110 11110101 00100010 01011100 10001110 11100011 10110100 00100101 11001000 
e3       61       bf       44       1a       b9       e3       2e       7b       77       b5       65       e3       9b       b7       bf       
11000111 10000110 11111101 00100010 01011000 10011101 11000111 01110100 11011110 11101110 10101101 10100110 11000111 11011001 11101101 11111101 
5d       b0       c3       3c       5d       67       41       4d       47       61       b6       9e       d7       74       4c       fc       
10111010 00001101 11000011 00111100 10111010 11100110 10000010 10110010 11100010 10000110 01101101 01111001 11101011 00101110 00110010 00111111 
fc       3b       55       ba       c1       3a       cb       b8       28       ba       d8       2a       cd       23       da       cc       
00111111 11011100 10101010 01011101 10000011 01011100 11010011 00011101 00010100 01011101 00011011 01010100 10110011 11000100 01011011 00110011 
9b       a8       58       c0       de       22       26       1b       e1       66       be       fb       f4       0b       cc       8d       
11011001 00010101 00011010 00000011 01111011 01000100 01100100 11011000 10000111 01100110 01111101 11011111 00101111 11010000 00110011 10110001 
dc       c0       b4       dc       5f       8e       c9       02       70       bb       3f       72       1f       f5       1f       d1       
00111011 00000011 00101101 00111011 11111010 01110001 10010011 01000000 00001110 11011101 11111100 01001110 11111000 10101111 11111000 10001011 
29       f3       42       2d       11       30       62       7f       ad       d2       9c       ac       0a       40       29       c2       
10010100 11001111 01000010 10110100 10001000 00001100 01000110 11111110 10110101 01001011 00111001 00110101 01010000 00000010 10010100 01000011 
48       52       c0       b8       f8       7d       50       2d       ef       91       2a       25       58       58       ad       d0       
00010010 01001010 00000011 00011101 00011111 10111110 00001010 10110100 11110111 10001001 01010100 10100100 00011010 00011010 10110101 00001011 
e7       a6       24       de       3e       07       e6       20       64       a9       6f       b8       1e       ca       a6       3d       
11100111 01100101 00100100 01111011 01111100 11100000 01100111 00000100 00100110 10010101 11110110 00011101 01111000 01010011 01100101 10111100 
48       9e       29       23       83       b5       61       f7       82       e5       2b       1e       44       f3       88       8b       
00010010 01111001 10010100 11000100 11000001 10101101 10000110 11101111 01000001 10100111 11010100 01111000 00100010 11001111 00010001 11010001 
96       07       45       36       b9       3c       e0       fa       b6       e0       6c       6f       e6       07       df       6f       
01101001 11100000 10100010 01101100 10011101 00111100 00000111 01011111 01101101 00000111 00110110 11110110 01100111 11100000 11111011 11110110 
fc       2c       cc       f7       64       c1       07       69       c2       7c       9d       63       d3       4c       d4       f4       
00111111 00110100 00110011 11101111 00100110 10000011 11100000 10010110 01000011 00111110 10111001 11000110 11001011 00110010 00101011 00101111 
e5       0c       67       67       98       1c       53       a1       4a       5e       db       9e       5e       c7       78       6b       
10100111 00110000 11100110 11100110 00011001 00111000 11001010 10000101 01010010 01111010 11011011 01111001 01111010 11100011 00011110 11010110 
78       42       7d       12       23       a6       83       33       f1       c3       26       db       37       56       d2       62       
00011110 01000010 10111110 01001000 11000100 01100101 11000001 11001100 10001111 11000011 01100100 11011011 11101100 01101010 01001011 01000110 
1e       fd       55       43       62       2f       31       6d       c6       20       6c       45       fd       15       cf       b2       
01111000 10111111 10101010 11000010 01000110 11110100 10001100 10110110 01100011 00000100 00110110 10100010 10111111 10101000 11110011 01001101 
34       6b       b2       bd       0b       fc       cd       90       16       1a       a8       32       31       92       1c       98       
00101100 11010110 01001101 10111101 11010000 00111111 10110011 00001001 01101000 01011000 00010101 01001100 10001100 01001001 00111000 00011001 
d7       5e       e9       02       61       45       9f       3f       bc       fe       00       d2       e7       b8       55       54       
11101011 01111010 10010111 01000000 10000110 10100010 11111001 11111100 00111101 01111111 00000000 01001011 11100111 00011101 10101010 00101010 
f7       5e       ad       97       2b       b4       4e       fe       03       c4       ba       e0       58       16       67       2c       
11101111 01111010 10110101 11101001 11010100 00101101 01110010 01111111 11000000 00100011 01011101 00000111 00011010 01101000 11100110 00110100 
4f       b1       ef       06       d4       6c       2f       99       f1       62       9d       25       28       3a       cb       f5       
11110010 10001101 11110111 01100000 00101011 00110110 11110100 10011001 10001111 01000110 10111001 10100100 00010100 01011100 11010011 10101111 
d1       ce       ef       91       e7       dc       13       72       75       14       a0       c5       7c       50       6b       89       
10001011 01110011 11110111 10001001 11100111 00111011 11001000 01001110 10101110 00101000 00000101 10100011 00111110 00001010 11010110 10010001 
0d       c3       51       26       fc       a0       50       0c       6a       35       00       09       d4       87       bc       4e       
10110000 11000011 10001010 01100100 00111111 00000101 00001010 00110000 01010110 10101100 00000000 10010000 00101011 11100001 00111101 01110010 
21       5a       b2       01       40       9e       59       f7       14       10       7a       4a       64       b4       66       dc       
10000100 01011010 01001101 10000000 00000010 01111001 10011010 11101111 00101000 00001000 01011110 01010010 00100110 00101101 01100110 00111011 
2c       22       c8       dd       9a       02       54       a6       3b       b2       4a       33       81       9b       e6       d7       
00110100 01000100 00010011 10111011 01011001 01000000 00101010 01100101 11011100 01001101 01010010 11001100 10000001 11011001 01100111 11101011 
33       12       2c       fb       cb       50       49       a5       86       e3       ea       ba       25       16       2d       df       
11001100 01001000 00110100 11011111 11010011 00001010 10010010 10100101 01100001 11000111 01010111 01011101 10100100 01101000 10110100 11111011 
e2       7b       1a       25       d7       8f       e7       5d       8c       46       e6       17       12       b2       ce       30       
01000111 11011110 01011000 10100100 11101011 11110001 11100111 10111010 00110001 01100010 01100111 11101000 01001000 01001101 01110011 00001100 
c5       23       f8       75       26       68       c1       47       bb       0a       25       9b       a8       5f       82       b5       
10100011 11000100 00011111 10101110 01100100 00010110 10000011 11100010 11011101 01010000 10100100 11011001 00010101 11111010 01000001 10101101 
fa       bf       e4       f2       71       dd       d1       ce       25       ba       c1       6d       61       05       37       dc       
01011111 11111101 00100111 01001111 10001110 10111011 10001011 01110011 10100100 01011101 10000011 10110110 10000110 10100000 11101100 00111011 
64       52       31       88       be       da       ba       42       37       16       9c       54       bc       3b       09       2d       
00100110 01001010 10001100 00010001 01111101 01011011 01011101 01000010 11101100 01101000 00111001 00101010 00111101 11011100 10010000 10110100 
bc       4d       fc       65       14       38       ee       bd       4e       80       4e       0a       b3       f1       c7       0e       
00111101 10110010 00111111 10100110 00101000 00011100 01110111 10111101 01110010 00000001 01110010 01010000 11001101 10001111 11100011 01110000 
0d       71       54       f0       cc       8f       f3       e9       fd       fa       5d       b5       34       c2       08       d8       
10110000 10001110 00101010 00001111 00110011 11110001 11001111 10010111 10111111 01011111 10111010 10101101 00101100 01000011 00010000 00011011 
4e       02       2e       88       18       fb       b7       88       23       dd       ca       5a       20       94       fe       12       
01110010 01000000 01110100 00010001 00011000 11011111 11101101 00010001 11000100 10111011 01010011 01011010 00000100 00101001 01111111 01001000 
c8       46       24       ed       67       8b       5d       99       ed       2b       e9       c0       73       88       1d       a7       
00010011 01100010 00100100 10110111 11100110 11010001 10111010 10011001 10110111 11010100 10010111 00000011 11001110 00010001 10111000 11100101 
a2       bc       b1       83       96       01       23       46       0c       48       6a       9a       f9       f1       6a       e1       
01000101 00111101 10001101 11000001 01101001 10000000 11000100 01100010 00110000 00010010 01010110 01011001 10011111 10001111 01010110 10000111 
cf       78       51       45       d5       8f       24       a2       09       41       6b       31       e7       9f       aa       d2       
11110011 00011110 10001010 10100010 10101011 11110001 00100100 01000101 10010000 10000010 11010110 10001100 11100111 11111001 01010101 01001011 
c2       5e       ad       05       22       5b       93       e8       c1       68       e3       9c       35       4c       d3       f9       
01000011 01111010 10110101 10100000 01000100 11011010 11001001 00010111 10000011 00010110 11000111 00111001 10101100 00110010 11001011 10011111 
1c       52       c3       fc       2b       d6       e3       42       05       bd       21       38       ae       13       f8       37       
00111000 01001010 11000011 00111111 11010100 01101011 11000111 01000010 10100000 10111101 10000100 00011100 01110101 11001000 00011111 11101100 
6a       b1       6e       8b       c1       ff       f0       e5       b4       c5       70       18       be       0f       e0       17       
01010110 10001101 01110110 11010001 10000011 11111111 00001111 10100111 00101101 10100011 00001110 00011000 01111101 11110000 00000111 11101000 
f8       b5       63       f8       d5       6b       61       9d       ee       c1       3f       f8       e4       1d       0b       97       
00011111 10101101 11000110 00011111 10101011 11010110 10000110 10111001 01110111 10000011 11111100 00011111 00100111 10111000 11010000 11101001 
37       60       77       34       1f       8a       16       ab       1f       db       b0       94       2e       0c       84       ca       
11101100 00000110 11101110 00101100 11111000 01010001 01101000 11010101 11111000 11011011 00001101 00101001 01110100 00110000 00100001 01010011 
92       cc       77       43       05       b2       8c       ad       87       3a       76       1a       46       e6       fa       dd       
01001001 00110011 11101110 11000010 10100000 01001101 00110001 10110101 11100001 01011100 01101110 01011000 01100010 01100111 01011111 10111011 
3c       d7       7c       66       37       4a       0c       cb       6c       ca       19       8f       88       b4       63       a1       
00111100 11101011 00111110 01100110 11101100 01010010 00110000 11010011 00110110 01010011 10011000 11110001 00010001 00101101 11000110 10000101 
b6       02       d4       89       12       68       7c       a3       fe       c6       06       7e       fb       76       23       e8       
01101101 01000000 00101011 10010001 01001000 00010110 00111110 11000101 01111111 01100011 01100000 01111110 11011111 01101110 11000100 00010111 
b3       70       a6       69       ce       65       01       4b       26       47       d5       ab       6c       48       aa       ec       
11001101 00001110 01100101 10010110 01110011 10100110 10000000 11010010 01100100 11100010 10101011 11010101 00110110 00010010 01010101 00110111 
d3       b2       da       2c       5d       17       51       82       05       c8       95       e0       1c       69       5d       b1       
11001011 01001101 01011011 00110100 10111010 11101000 10001010 01000001 10100000 00010011 10101001 00000111 00111000 10010110 10111010 10001101 
19       87       b8       21       43       a3       cc       33       d2       79       d9       dd       64       7e       96       f9       
10011000 11100001 00011101 10000100 11000010 11000101 00110011 11001100 01001011 10011110 10011011 10111011 00100110 01111110 01101001 10011111 
b7       75       8b       f6       4e       dd       95       52       68       43       18       d1       d7       da       df       67       
11101101 10101110 11010001 01101111 01110010 10111011 10101001 01001010 00010110 11000010 00011000 10001011 11101011 01011011 11111011 11100110 
4d       67       f5       b8       d0       27       93       ca       a0       ea       10       d9       61       ee       aa       6c       
10110010 11100110 10101111 00011101 00001011 11100100 11001001 01010011 00000101 01010111 00001000 10011011 10000110 01110111 01010101 00110110 
6c       38       72       d4       46       72       a5       13       a7       68       bc       15       c8       ca       a2       2a       
00110110 00011100 01001110 00101011 01100010 01001110 10100101 11001000 11100101 00010110 00111101 10101000 00010011 01010011 01000101 01010100 
3c       69       e9       2a       8d       d8       af       58       cd       7d       ea       9f       ba       16       7c       1d       
00111100 10010110 10010111 01010100 10110001 00011011 11110101 00011010 10110011 10111110 01010111 11111001 01011101 01101000 00111110 10111000 
a5       2b       6c       25       b5       6a       78       95       7a       09       fb       82       9a       20       b6       44       
10100101 11010100 00110110 10100100 10101101 01010110 00011110 10101001 01011110 10010000 11011111 01000001 01011001 00000100 01101101 00100010 
78       b3       e7       92       79       ed       08       c4       59       0e       fc       e5       09       d2       09       19       
00011110 11001101 11100111 01001001 10011110 10110111 00010000 00100011 10011010 01110000 00111111 10100111 10010000 01001011 10010000 10011000 
65       2b       e6       ae       0b       42       a5       c3       c6       47       90       1f       5c       47       e9       3a       
10100110 11010100 01100111 01110101 11010000 01000010 10100101 11000011 01100011 11100010 00001001 11111000 00111010 11100010 10010111 01011100 
a7       9e       19       3a       17       15       78       14       5d       0a       92       e4       72       60       51       aa       
11100101 01111001 10011000 01011100 11101000 10101000 00011110 00101000 10111010 01010000 01001001 00100111 01001110 00000110 10001010 01010101 
66       6c       0a       db       3c       92       d6       77       04       f9       f0       88       7a       66       76       77       
01100110 00110110 01010000 11011011 00111100 01001001 01101011 11101110 00100000 10011111 00001111 00010001 01011110 01100110 01101110 11101110 
f1       c0       24       a4       56       64       d6       75       d2       63       3d       84       b2       8d       2a       e7       
10001111 00000011 00100100 00100101 01101010 00100110 01101011 10101110 01001011 11000110 10111100 00100001 01001101 10110001 01010100 11100111 
a8       f8       2b       98       a5       2a       e7       b1       91       17       48       23       ad       9b       cb       6d       
00010101 00011111 11010100 00011001 10100101 01010100 11100111 10001101 10001001 11101000 00010010 11000100 10110101 11011001 11010011 10110110 
c2       55       22       a9       a3       95       75       93       57       c6       8c       16       80       50       5e       5d       
01000011 10101010 01000100 10010101 11000101 10101001 10101110 11001001 11101010 01100011 00110001 01101000 00000001 00001010 01111010 10111010 
fa       3f       90       4c       59       fb       9a       dd       bd       1a       40       2a       54       9f       88       c2       
01011111 11111100 00001001 00110010 10011010 11011111 01011001 10111011 10111101 01011000 00000010 01010100 00101010 11111001 00010001 01000011 
d7       9a       68       2b       c2       39       ba       df       9a       de       10       25       38       2b       ee       57       
11101011 01011001 00010110 11010100 01000011 10011100 01011101 11111011 01011001 01111011 00001000 10100100 00011100 11010100 01110111 11101010 
fa       7d       10       16       20       75       0e       16       5b       68       d6       37       8b       02       1f       dc       
01011111 10111110 00001000 01101000 00000100 10101110 01110000 01101000 11011010 00010110 01101011 11101100 11010001 01000000 11111000 00111011 
95       37       7c       61       c5       63       6b       8e       cd       fe       af       07       9b       70       c4       fa       
10101001 11101100 00111110 10000110 10100011 11000110 11010110 01110001 10110011 01111111 11110101 11100000 11011001 00001110 00100011 01011111 
76       8b       61       06       cf       be       8f       2b       33       9c       3c       6a       86       fe       03       66       
01101110 11010001 10000110 01100000 11110011 01111101 11110001 11010100 11001100 00111001 00111100 01010110 01100001 01111111 11000000 01100110 
18       3d       6a       86       13       9a       c1       f3       b6       4e       71       57       8a       59       69       ae       
00011000 10111100 01010110 01100001 11001000 01011001 10000011 11001111 01101101 01110010 10001110 11101010 01010001 10011010 10010110 01110101 
45       de       68       e4       d5       34       90       36       6d       c8       04       0a       96       e1       96       96       
10100010 01111011 00010110 00100111 10101011 00101100 00001001 01101100 10110110 00010011 00100000 01010000 01101001 10000111 01101001 01101001 
92       32       59       e1       9e       27       d6       77       f2       cc       9b       1a       37       56       3f       6b       
01001001 01001100 10011010 10000111 01111001 11100100 01101011 11101110 01001111 00110011 11011001 01011000 11101100 01101010 11111100 11010110 
17       d5       ee       26       2a       51       d9       ca       ad       76       77       8c       29       4a       f2       2e       
11101000 10101011 01110111 01100100 01010100 10001010 10011011 01010011 10110101 01101110 11101110 00110001 10010100 01010010 01001111 01110100 
e9       0d       0b       2f       a9       46       66       b7       78       8b       01       d6       3b       11       bb       b9       
10010111 10110000 11010000 11110100 10010101 01100010 01100110 11101101 00011110 11010001 10000000 01101011 11011100 10001000 11011101 10011101 
9c       a4       37       10       05       56       e8       4a       d0       a3       6a       c7       09       c9       6f       71       
00111001 00100101 11101100 00001000 10100000 01101010 00010111 01010010 00001011 11000101 01010110 11100011 10010000 10010011 11110110 10001110 
93       b2       95       9f       41       19       84       55       0f       a5       d5       dc       07       5b       91       6d       
11001001 01001101 10101001 11111001 10000010 10011000 00100001 10101010 11110000 10100101 10101011 00111011 11100000 11011010 10001001 10110110 
e6       8a       5f       76       da       d5       16       39       95       72       50       07       7b       c6       21       b9       
01100111 01010001 11111010 01101110 01011011 10101011 01101000 10011100 10101001 01001110 00001010 11100000 11011110 01100011 10000100 10011101 
40       c5       ea       30       11       fd       a7       14       fe       a7       02       5f       92       87       e4       1d       
00000010 10100011 01010111 00001100 10001000 10111111 11100101 00101000 01111111 11100101 01000000 11111010 01001001 11100001 00100111 10111000 
53       6c       72       94       21       0f       62       bc       b5       81       a9       38       f2       42       91       49       
11001010 00110110 01001110 00101001 10000100 11110000 01000110 00111101 10101101 10000001 10010101 00011100 01001111 01000010 10001001 10010010 
34       a4       a2       c4       8f       6d       56       48       49       44       4e       5f       74       74       7a       50       
00101100 00100101 01000101 00100011 11110001 10110110 01101010 00010010 10010010 00100010 01110010 11111010 00101110 00101110 01011110 00001010 
13       f2       27       a5       0f       ed       0d       4e       aa       99       4e       5d       fc       b7       f7       ea       
11001000 01001111 11100100 10100101 11110000 10110111 10110000 01110010 01010101 10011001 01110010 10111010 00111111 11101101 11101111 01010111 
49       8d       76       ed       8a       fb       4e       44       a9       09       fa       b5       10       56       c4       b7       
10010010 10110001 01101110 10110111 01010001 11011111 01110010 00100010 10010101 10010000 01011111 10101101 00001000 01101010 00100011 11101101 
b8       d0       d1       be       2e       5e       db       d5       03       bb       6a       55       22       9a       88       d1       
00011101 00001011 10001011 01111101 01110100 01111010 11011011 10101011 11000000 11011101 01010110 10101010 01000100 01011001 00010001 10001011 
51       bb       3d       ae       ca       aa       14       93       8c       31       5a       5c       a3       ad       e2       6a       
10001010 11011101 10111100 01110101 01010011 01010101 00101000 11001001 00110001 10001100 01011010 00111010 11000101 10110101 01000111 01010110 
92       40       25       f8       c1       bf       23       3b       3a       85       34       a7       fd       e7       85       69       
01001001 00000010 10100100 00011111 10000011 11111101 11000100 11011100 01011100 10100001 00101100 11100101 10111111 11100111 10100001 10010110 
97       51       5b       a4       29       9a       ab       5a       f9       8d       86       6b       0d       fc       5d       79       
11101001 10001010 11011010 00100101 10010100 01011001 11010101 01011010 10011111 10110001 01100001 11010110 10110000 00111111 10111010 10011110 
11       e5       dd       cb       df       a7       af       df       7e       fa       fc       f2       fd       ab       0b       c6       
10001000 10100111 10111011 11010011 11111011 11100101 11110101 11111011 01111110 01011111 00111111 01001111 10111111 11010101 11010000 01100011 
fa       bd       93       e1       48       df       8a       a0       42       2c       99       c7       7e       c1       35       5b       
01011111 10111101 11001001 10000111 00010010 11111011 01010001 00000101 01000010 00110100 10011001 11100011 01111110 10000011 10101100 11011010 
74       0c       f4       e8       62       f3       6f       d6       99       f7       28       31       eb       4f       86       70       
00101110 00110000 00101111 00010111 01000110 11001111 11110110 01101011 10011001 11101111 00010100 10001100 11010111 11110010 01100001 00001110 
25       79       91       ae       d4       51       7b       b7       b6       c3       f7       d5       96       46       cd       3d       
10100100 10011110 10001001 01110101 00101011 10001010 11011110 11101101 01101101 11000011 11101111 10101011 01101001 01100010 10110011 10111100 
a8       c3       55       91       01       3a       75       03       25       59       71       35       4a       26       a1       7e       
00010101 11000011 10101010 10001001 10000000 01011100 10101110 11000000 10100100 10011010 10001110 10101100 01010010 01100100 10000101 01111110 
18       82       6e       88       ca       4e       c8       03       0b       37       2c       d7       bc       81       2c       f1       
00011000 01000001 01110110 00010001 01010011 01110010 00010011 11000000 11010000 11101100 00110100 11101011 00111101 10000001 00110100 10001111 
a0       ac       eb       61       f9       76       22       16       dc       87       e7       7d       78       76       0c       63       
00000101 00110101 11010111 10000110 10011111 01101110 01000100 01101000 00111011 11100001 11100111 10111110 00011110 01101110 00110000 11000110 
03       f8       3c       c0       b2       0f       e0       46       7d       f1       fc       f4       14       8b       3f       44       
11000000 00011111 00111100 00000011 01001101 11110000 00000111 01100010 10111110 10001111 00111111 00101111 00101000 11010001 11111100 00100010 
46       48       6f       88       a4       4e       e1       6b       af       77       82       13       dc       8d       2d       36       
01100010 00010010 11110110 00010001 00100101 01110010 10000111 11010110 11110101 11101110 01000001 11001000 00111011 10110001 10110100 01101100 
50       24       16       13       44       e3       98       2a       c9       91       28       1f       b1       d6       ec       c1       
00001010 00100100 01101000 11001000 00100010 11000111 00011001 01010100 10010011 10001001 00010100 11111000 10001101 01101011 00110111 10000011 
48       1f       3e       1f       8f       c4       24       43       f8       7e       8a       c5       66       0f       81       4e       
00010010 11111000 01111100 11111000 11110001 00100011 00100100 11000010 00011111 01111110 01010001 10100011 01100110 11110000 10000001 01110010 
e1       49       6f       00       5f       fb       a3       63       f1       7c       80       88       a0       19       58       8e       
10000111 10010010 11110110 00000000 11111010 11011111 11000101 11000110 10001111 00111110 00000001 00010001 00000101 10011000 00011010 01110001 
22       ae       37       e8       23       95       ae       c2       ef       77       4f       90       5a       17       69       0c       
01000100 01110101 11101100 00010111 11000100 10101001 01110101 01000011 11110111 11101110 11110010 00001001 01011010 11101000 10010110 00110000 
bd       63       80       18       21       15       21       80       5e       6f       34       22       ce       81       1a       cc       
10111101 11000110 00000001 00011000 10000100 10101000 10000100 00000001 01111010 11110110 00101100 01000100 01110011 10000001 01011000 00110011 
3c       38       19       4a       c6       1b       fa       e0       c2       52       04       ab       1d       f5       a4       dc       
00111100 00011100 10011000 01010010 01100011 11011000 01011111 00000111 01000011 01001010 00100000 11010101 10111000 10101111 00100101 00111011 
35       c7       ec       e7       94       dd       56       7a       7d       ce       e9       de       2a       03       e1       10       
10101100 11100011 00110111 11100111 00101001 10111011 01101010 01011110 10111110 01110011 10010111 01111011 01010100 11000000 10000111 00001000 
5c       c8       b3       ac       c5       f6       fe       93       f1       a5       5f       e0       15       16       34       62       
00111010 00010011 11001101 00110101 10100011 01101111 01111111 11001001 10001111 10100101 11111010 00000111 10101000 01101000 00101100 01000110 
a8       d3       f0       62       56       e7       7f       89       d1       ea       93       fd       1c       af       9a       35       
00010101 11001011 00001111 01000110 01101010 11100111 11111110 10010001 10001011 01010111 11001001 10111111 00111000 11110101 01011001 10101100 
ee       4c       6d       e5       7a       ee       97       c0       5a       c0       f5       69       ea       8e       cc       14       
01110111 00110010 10110110 10100111 01011110 01110111 11101001 00000011 01011010 00000011 10101111 10010110 01010111 01110001 00110011 00101000 
42       cf       9b       74       9d       50       43       12       6f       58       45       e2       52       0d       5d       04       
01000010 11110011 11011001 00101110 10111001 00001010 11000010 01001000 11110110 00011010 10100010 01000111 01001010 10110000 10111010 00100000 
c2       08       86       78       3e       cb       6f       97       b3       34       96       28       35       87       3d       67       
01000011 00010000 01100001 00011110 01111100 11010011 11110110 11101001 11001101 00101100 01101001 00010100 10101100 11100001 10111100 11100110 
ac       37       1a       a2       73       35       ee       e9       24       fc       1a       af       e9       f9       ab       15       
00110101 11101100 01011000 01000101 11001110 10101100 01110111 10010111 00100100 00111111 01011000 11110101 10010111 10011111 11010101 10101000 
c4       cd       e6       cf       07       e5       84       fa       2a       d7       18       2f       01       61       07       2b       
00100011 10110011 01100111 11110011 11100000 10100111 00100001 01011111 01010100 11101011 00011000 11110100 10000000 10000110 11100000 11010100 
2a       cc       44       d9       26       3c       18       d6       24       c7       87       4d       30       a3       a3       a3       
01010100 00110011 00100010 10011011 01100100 00111100 00011000 01101011 00100100 11100011 11100001 10110010 00001100 11000101 11000101 11000101 
03       bd       78       33       d7       b8       db       40       6c       32       d9       40       cd       b4       6b       23       
11000000 10111101 00011110 11001100 11101011 00011101 11011011 00000010 00110110 01001100 10011011 00000010 10110011 00101101 11010110 11000100 
39       b4       12       c3       4d       44       cf       37       d0       94       d7       e2       f4       6d       1f       35       
10011100 00101101 01001000 11000011 10110010 00100010 11110011 11101100 00001011 00101001 11101011 01000111 00101111 10110110 11111000 10101100 
a6       fa       55       e5       88       b0       3b       75       db       4a       4b       49       1d       e0       f8       0c       
01100101 01011111 10101010 10100111 00010001 00001101 11011100 10101110 11011011 01010010 11010010 10010010 10111000 00000111 00011111 00110000 
1b       e3       ed       55       0a       b0       20       50       4a       33       f4       09       81       dc       2e       a1       
11011000 11000111 10110111 10101010 01010000 00001101 00000100 00001010 01010010 11001100 00101111 10010000 10000001 00111011 01110100 10000101 
4b       26       f6       5b       04       86       4a       b3       30       7b       0a       d4       60       76       bb       85       
11010010 01100100 01101111 11011010 00100000 01100001 01010010 11001101 00001100 11011110 01010000 00101011 00000110 01101110 11011101 10100001 
d8       25       1c       94       0c       55       37       60       38       d8       90       f0       ea       60       64       c0       
00011011 10100100 00111000 00101001 00110000 10101010 11101100 00000110 00011100 00011011 00001001 00001111 01010111 00000110 00100110 00000011 
e3       39       d9       f1       c3       cf       5d       1d       5d       1a       6c       c9       94       4b       71       6d       
11000111 10011100 10011011 10001111 11000011 11110011 10111010 10111000 10111010 01011000 00110110 10010011 00101001 11010010 10001110 10110110 
4e       f4       9b       0e       4b       43       6c       32       3f       d7       3d       a7       9a       25       18       54       
01110010 00101111 11011001 01110000 11010010 11000010 00110110 01001100 11111100 11101011 10111100 11100101 01011001 10100100 00011000 00101010 
8f       6a       1d       b2       4b       71       f0       c8       94       5c       cf       08       e9       48       3d       01       
11110001 01010110 10111000 01001101 11010010 10001110 00001111 00010011 00101001 00111010 11110011 00010000 10010111 00010010 10111100 10000000 
a3       00       21       35       d0       db       17       e5       f2       28       13       36       6e       76       2b       ae       
11000101 00000000 10000100 10101100 00001011 11011011 11101000 10100111 01001111 00010100 11001000 01101100 01110110 01101110 11010100 01110101 
8e       ca       00       d6       71       51       d4       03       44       12       bd       09       d8       ea       01       75       
01110001 01010011 00000000 01101011 10001110 10001010 00101011 11000000 00100010 01001000 10111101 10010000 00011011 01010111 10000000 10101110 
98       c5       79       c0       d2       bf       85       94       d6       44       33       69       93       04       c4       69       
00011001 10100011 10011110 00000011 01001011 11111101 10100001 00101001 01101011 00100010 11001100 10010110 11001001 00100000 00100011 10010110 
c2       3d       f4       c5       09       a3       60       67       ef       bf       fc       f6       db       06       ad       81       
01000011 10111100 00101111 10100011 10010000 11000101 00000110 11100110 11110111 11111101 00111111 01101111 11011011 01100000 10110101 10000001 
99       7e       f5       b3       50       30       a5       31       0d       00       b7       bb       58       e9       2c       ba       
10011001 01111110 10101111 11001101 00001010 00001100 10100101 10001100 10110000 00000000 11101101 11011101 00011010 10010111 00110100 01011101 
02       db       a8       5a       30       d5       6b       d1       e8       ae       9d       48       7a       4f       9b       7b       
01000000 11011011 00010101 01011010 00001100 10101011 11010110 10001011 00010111 01110101 10111001 00010010 01011110 11110010 11011001 11011110 
73       4f       54       08       a9       1e       6b       6f       dc       de       ed       4e       be       1e       67       93       
11001110 11110010 00101010 00010000 10010101 01111000 11010110 11110110 00111011 01111011 10110111 01110010 01111101 01111000 11100110 11001001 
d3       af       ae       b4       b2       da       9d       c4       ec       73       7b       97       da       5d       55       ec       
11001011 11110101 01110101 00101101 01001101 01011011 10111001 00100011 00110111 11001110 11011110 11101001 01011011 10111010 10101010 00110111 
75       a5       9b       a1       91       7a       bf       c1       f1       f5       37       15       c2       56       32       b1       
10101110 10100101 11011001 10000101 10001001 01011110 11111101 10000011 10001111 10101111 11101100 10101000 01000011 01101010 01001100 10001101 
cd       4a       e9       79       9b       7a       0b       cf       f1       7f       cb       3a       61       f7       2e       96       
10110011 01010010 10010111 10011110 11011001 01011110 11010000 11110011 10001111 11111110 11010011 01011100 10000110 11101111 01110100 01101001 
33       2e       5b       70       e9       25       a5       93       22       3a       51       9f       d5       17       be       4d       
11001100 01110100 11011010 00001110 10010111 10100100 10100101 11001001 01000100 01011100 10001010 11111001 10101011 11101000 01111101 10110010 
06       61       5b       2d       f5       72       0c       3e       8e       6a       32       1c       c5       c1       b1       69       
01100000 10000110 11011010 10110100 10101111 01001110 00110000 01111100 01110001 01010110 01001100 00111000 10100011 10000011 10001101 10010110 
cd       8e       01       e2       99       1d       a4       6e       58       d2       e1       61       a7       ac       f4       82       
10110011 01110001 10000000 01000111 10011001 10111000 00100101 01110110 00011010 01001011 10000111 10000110 11100101 00110101 00101111 01000001 
28       0b       d6       50       df       89       de       2c       cb       f1       60       de       37       22       99       a8       
00010100 11010000 01101011 00001010 11111011 10010001 01111011 00110100 11010011 10001111 00000110 01111011 11101100 01000100 10011001 00010101 
ea       fc       04       22       60       12       c6       9c       92       84       1c       19       c5       ae       1a       0a       
01010111 00111111 00100000 01000100 00000110 01001000 01100011 00111001 01001001 00100001 00111000 10011000 10100011 01110101 01011000 01010000 
0f       f3       64       3a       f9       cc       6b       85       e8       64       8d       18       03       44       e6       88       
11110000 11001111 00100110 01011100 10011111 00110011 11010110 10100001 00010111 00100110 10110001 00011000 11000000 00100010 01100111 00010001 
ff       b7       15       df       9e       25       31       a5       af       35       8d       0a       57       4d       80       b9       
11111111 11101101 10101000 11111011 01111001 10100100 10001100 10100101 11110101 10101100 10110001 01010000 11101010 10110010 00000001 10011101 
f7       69       c1       05       d3       48       72       9f       a9       29       90       e9       14       62       77       ec       
11101111 10010110 10000011 10100000 11001011 00010010 01001110 11111001 10010101 10010100 00001001 10010111 00101000 01000110 11101110 00110111 
af       2c       14       23       e6       1e       36       25       30       7c       dd       e4       c4       ec       df       f5       
11110101 00110100 00101000 11000100 01100111 01111000 01101100 10100100 00001100 00111110 10111011 00100111 00100011 00110111 11111011 10101111 
69       9a       82       20       89       cb       cc       18       5b       bc       f8       44       e5       5d       7b       4f       
10010110 01011001 01000001 00000100 10010001 11010011 00110011 00011000 11011010 00111101 00011111 00100010 10100111 10111010 11011110 11110010 
73       c8       ad       5a       24       7b       a1       20       32       bb       ea       5a       87       64       af       b9       
11001110 00010011 10110101 01011010 00100100 11011110 10000101 00000100 01001100 11011101 01010111 01011010 11100001 00100110 11110101 10011101 
be       dd       e0       27       f2       60       4c       5a       1f       3e       88       23       1f       b4       12       76       
01111101 10111011 00000111 11100100 01001111 00000110 00110010 01011010 11111000 01111100 00010001 11000100 11111000 00101101 01001000 01101110 
4e       5f       9d       80       ea       25       a6       e2       dc       ba       00       61       14       2c       4d       79       
01110010 11111010 10111001 00000001 01010111 10100100 01100101 01000111 00111011 01011101 00000000 10000110 00101000 00110100 10110010 10011110 
a0       5f       1e       e9       4e       05       59       51       26       80       04       f1       24       6f       c4       72       
00000101 11111010 01111000 10010111 01110010 10100000 10011010 10001010 01100100 00000001 00100000 10001111 00100100 11110110 00100011 01001110 
6a       3c       84       51       00       38       b9       10       a8       ea       0b       93       e6       fa       b0       53       
01010110 00111100 00100001 10001010 00000000 00011100 10011101 00001000 00010101 01010111 11010000 11001001 01100111 01011111 00001101 11001010 
b3       38       0d       be       6b       a4       9c       9d       80       bc       87       1a       cb       7c       e7       82       
11001101 00011100 10110000 01111101 11010110 00100101 00111001 10111001 00000001 00111101 11100001 01011000 11010011 00111110 11100111 01000001 
e1       c5       82       6a       69       81       f8       53       a8       6f       21       f3       a4       2e       77       59       
10000111 10100011 01000001 01010110 10010110 10000001 00011111 11001010 00010101 11110110 10000100 11001111 00100101 01110100 11101110 10011010 
3c       a9       9b       00       32       e5       80       d9       a6       04       5d       39       62       aa       c8       de       
00111100 10010101 11011001 00000000 01001100 10100111 00000001 10011011 01100101 00100000 10111010 10011100 01000110 01010101 00010011 01111011 
7a       ea       7a       c1       86       3a       3e       ef       c8       c4       78       c2       5c       41       c8       02       
01011110 01010111 01011110 10000011 01100001 01011100 01111100 11110111 00010011 00100011 00011110 01000011 00111010 10000010 00010011 01000000 
d1       38       44       ef       18       67       e8       55       b1       8d       4b       9a       d6       89       3c       0c       
10001011 00011100 00100010 11110111 00011000 11100110 00010111 10101010 10001101 10110001 11010010 01011001 01101011 10010001 00111100 00110000 
87       a9       4e       cd       cb       15       58       67       aa       fb       ce       a1       aa       21       90       aa       
11100001 10010101 01110010 10110011 11010011 10101000 00011010 11100110 01010101 11011111 01110011 10000101 01010101 10000100 00001001 01010101 
87       d9       37       ba       96       d2       42       74       cb       d4       c2       74       da       ca       d8       5b       
11100001 10011011 11101100 01011101 01101001 01001011 01000010 00101110 11010011 00101011 01000011 00101110 01011011 01010011 00011011 11011010 
04       9e       ba       65       77       51       6b       e1       97       c4       38       da       27       1a       76       ca       
00100000 01111001 01011101 10100110 11101110 10001010 11010110 10000111 11101001 00100011 00011100 01011011 11100100 01011000 01101110 01010011 
5f       57       29       ac       2b       38       b4       bb       60       0c       a0       9b       eb       d5       2a       cd       
11111010 11101010 10010100 00110101 11010100 00011100 00101101 11011101 00000110 00110000 00000101 11011001 11010111 10101011 01010100 10110011 
0a       1e       ba       64       ec       da       81       d6       6a       e6       a1       d2       70       5b       4c       5f       
01010000 01111000 01011101 00100110 00110111 01011011 10000001 01101011 01010110 01100111 10000101 01001011 00001110 11011010 00110010 11111010 
97       30       ce       fb       21       4e       e3       e9       08       c6       7d       7d       cb       c2       cf       b0       
11101001 00001100 01110011 11011111 10000100 01110010 11000111 10010111 00010000 01100011 10111110 10111110 11010011 01000011 11110011 00001101 
77       85       e7       12       28       a4       92       4a       16       5d       2e       8a       76       91       b6       63       
11101110 10100001 11100111 01001000 00010100 00100101 01001001 01010010 01101000 10111010 01110100 01010001 01101110 10001001 01101101 11000110 
3e       2f       3a       8e       04       bc       52       02       fa       38       c6       e9       ca       dc       f7       2a       
01111100 11110100 01011100 01110001 00100000 00111101 01001010 01000000 01011111 00011100 01100011 10010111 01010011 00111011 11101111 01010100 
da       e6       db       44       36       45       13       67       43       cb       40       6f       ab       cb       8b       48       
01011011 01100111 11011011 00100010 01101100 10100010 11001000 11100110 11000010 11010011 00000010 11110110 11010101 11010011 11010001 00010010 
37       36       48       4c       ad       a9       f7       cf       ad       49       e3       bb       cd       95       fb       12       
11101100 01101100 00010010 00110010 10110101 10010101 11101111 11110011 10110101 10010010 11000111 11011101 10110011 10101001 11011111 01001000 
d8       72       08       bf       71       91       fb       6e       b7       e2       f1       f2       da       42       ca       12       
00011011 01001110 00010000 11111101 10001110 10001001 11011111 01110110 11101101 01000111 10001111 01001111 01011011 01000010 01010011 01001000 
1d       f8       48       7f       1d       17       2f       b6       e8       38       5d       7f       69       a1       bb       52       
10111000 00011111 00010010 11111110 10111000 11101000 11110100 01101101 00010111 00011100 10111010 11111110 10010110 10000101 11011101 01001010 
0a       6d       6a       fa       d3       1f       1d       e1       bc       2d       a3       bb       a7       b2       ab       17       
01010000 10110110 01010110 01011111 11001011 11111000 10111000 10000111 00111101 10110100 11000101 11011101 11100101 01001101 11010101 11101000 
24       74       25       6f       b8       86       9a       48       60       f6       a3       7e       f9       f2       06       2f       
00100100 00101110 10100100 11110110 00011101 01100001 01011001 00010010 00000110 01101111 11000101 01111110 10011111 01001111 01100000 11110100 
8c       b9       d7       a3       92       75       1c       b7       41       12       cb       28       a1       b7       e9       c4       
00110001 10011101 11101011 11000101 01001001 10101110 00111000 11101101 10000010 01001000 11010011 00010100 10000101 11101101 10010111 00100011 
3b       79       c2       80       7c       51       c7       33       f6       1e       80       58       09       84       e8       02       
11011100 10011110 01000011 00000001 00111110 10001010 11100011 11001100 01101111 01111000 00000001 00011010 10010000 00100001 00010111 01000000 
8e       2e       da       89       38       9e       af       c1       fe       dd       b8       41       9b       2a       40       55       
01110001 01110100 01011011 10010001 00011100 01111001 11110101 10000011 01111111 10111011 00011101 10000010 11011001 01010100 00000010 10101010 
ec       88       92       96       1b       c9       0f       0b       3f       bb       e4       2a       8a       6c       e8       20       
00110111 00010001 01001001 01101001 11011000 10010011 11110000 11010000 11111100 11011101 00100111 01010100 01010001 00110110 00010111 00000100 
21       ff       75       cd       23       00       98       42       98       14       37       b1       c4       67       a3       99       
10000100 11111111 10101110 10110011 11000100 00000000 00011001 01000010 00011001 00101000 11101100 10001101 00100011 11100110 11000101 10011001 
a4       b2       95       90       fb       31       dd       ae       d2       8c       9f       2b       aa       b6       af       35       
00100101 01001101 10101001 00001001 11011111 10001100 10111011 01110101 01001011 00110001 11111001 11010100 01010101 01101101 11110101 10101100 
ef       41       49       72       ca       7d       c3       52       1f       70       ed       49       0a       92       ee       ae       
11110111 10000010 10010010 01001110 01010011 10111110 11000011 01001010 11111000 00001110 10110111 10010010 01010000 01001001 01110111 01110101 
6c       e9       83       d8       fb       79       a8       27       c5       96       ac       dc       52       25       1e       6c       
00110110 10010111 11000001 00011011 11011111 10011110 00010101 11100100 10100011 01101001 00110101 00111011 01001010 10100100 01111000 00110110 
e0       3a       8b       37       ce       2c       d5       da       db       2a       2d       a0       c8       12       ac       6e       
00000111 01011100 11010001 11101100 01110011 00110100 10101011 01011011 11011011 01010100 10110100 00000101 00010011 01001000 00110101 01110110 
9b       8a       c0       b6       84       01       b7       f4       13       70       bc       82       7c       6c       8e       e9       
11011001 01010001 00000011 01101101 00100001 10000000 11101101 00101111 11001000 00001110 00111101 01000001 00111110 00110110 01110001 10010111 
82       4c       0a       7a       ed       32       55       a0       4b       6b       b8       d9       ea       1d       4c       48       
01000001 00110010 01010000 01011110 10110111 01001100 10101010 00000101 11010010 11010110 00011101 10011011 01010111 10111000 00110010 00010010 
e3       10       2f       2c       f3       0c       c8       26       c0       0c       d2       75       51       de       a4       c2       
11000111 00001000 11110100 00110100 11001111 00110000 00010011 01100100 00000011 00110000 01001011 10101110 10001010 01111011 00100101 01000011 
37       33       c5       51       2c       30       01       be       58       30       0e       9f       af       bf       d2       cb       
11101100 11001100 10100011 10001010 00110100 00001100 10000000 01111101 00011010 00001100 01110000 11111001 11110101 11111101 01001011 11010011 
15       28       46       a5       19       c8       b4       7e       b1       8f       3e       11       b3       f8       a1       23       
10101000 00010100 01100010 10100101 10011000 00010011 00101101 01111110 10001101 11110001 01111100 10001000 11001101 00011111 10000101 11000100 
ea       2f       51       47       29       b8       0e       bd       aa       58       19       94       ef       29       ea       f1       
01010111 11110100 10001010 11100010 10010100 00011101 01110000 10111101 01010101 00011010 10011000 00101001 11110111 10010100 01010111 10001111 
86       dc       56       64       00       8b       69       a3       eb       55       b5       de       2f       b9       7f       c9       
01100001 00111011 01101010 00100110 00000000 11010001 10010110 11000101 11010111 10101010 10101101 01111011 11110100 10011101 11111110 10010011 
5f       b0       a7       39       3b       43       6a       2b       75       6d       8d       56       7e       4e       a6       2b       
11111010 00001101 11100101 10011100 11011100 11000010 01010110 11010100 10101110 10110110 10110001 01101010 01111110 01110010 01100101 11010100 
98       ef       22       fb       62       1b       f1       ae       1a       5e       51       2f       ef       43       44       78       
00011001 11110111 01000100 11011111 01000110 11011000 10001111 01110101 01011000 01111010 10001010 11110100 11110111 11000010 00100010 00011110 
cf       63       9e       ae       78       d2       94       e0       1e       fb       06       d4       33       a9       0a       8a       
11110011 11000110 01111001 01110101 00011110 01001011 00101001 00000111 01111000 11011111 01100000 00101011 11001100 10010101 01010000 01010001 
a5       27       51       b2       9d       1b       71       81       02       e4       8a       b4       84       f4       9f       3d       
10100101 11100100 10001010 01001101 10111001 11011000 10001110 10000001 01000000 00100111 01010001 00101101 00100001 00101111 11111001 10111100 
cd       9f       51       63       5f       aa       5a       c7       60       ca       db       c6       94       32       86       74       
10110011 11111001 10001010 11000110 11111010 01010101 01011010 11100011 00000110 01010011 11011011 01100011 00101001 01001100 01100001 00101110 
0d       71       0e       69       1a       56       41       af       71       22       c1       9c       7a       22       0d       db       
10110000 10001110 01110000 10010110 01011000 01101010 10000010 11110101 10001110 01000100 10000011 00111001 01011110 01000100 10110000 11011011 
12       f6       49       b0       62       db       4b       67       6e       be       7c       7a       50       35       11       b1       
01001000 01101111 10010010 00001101 01000110 11011011 11010010 11100110 01110110 01111101 00111110 01011110 00001010 10101100 10001000 10001101 
a6       0d       e6       21       d0       b4       61       5c       a6       c8       8e       ac       f3       ee       1a       fa       
01100101 10110000 01100111 10000100 00001011 00101101 10000110 00111010 01100101 00010011 01110001 00110101 11001111 01110111 01011000 01011111 
14       c2       98       b7       83       ef       e7       76       c5       89       43       f7       87       37       c7       4b       
00101000 01000011 00011001 11101101 11000001 11110111 11100111 01101110 10100011 10010001 11000010 11101111 11100001 11101100 11100011 11010010 
72       7f       d5       80       78       0a       64       34       b3       ce       d1       ab       c2       7d       4b       fb       
01001110 11111110 10101011 00000001 00011110 01010000 00100110 00101100 11001101 01110011 10001011 11010101 01000011 10111110 11010010 11011111 
8a       a9       07       f0       2d       b4       9b       dc       b1       99       7f       d4       33       66       ce       59       
01010001 10010101 11100000 00001111 10110100 00101101 11011001 00111011 10001101 10011001 11111110 00101011 11001100 01100110 01110011 10011010 
7d       3b       18       a7       1f       ed       d8       d6       0c       8c       e6       32       01       41       86       56       
10111110 11011100 00011000 11100101 11111000 10110111 00011011 01101011 00110000 00110001 01100111 01001100 10000000 10000010 01100001 01101010 
aa       2b       08       6c       61       a0       8e       03       7a       85       18       d2       67       f9       46       6b       
01010101 11010100 00010000 00110110 10000110 00000101 01110001 11000000 01011110 10100001 00011000 01001011 11100110 10011111 01100010 11010110 
39       b1       da       70       cc       82       20       29       87       10       8d       bb       ae       73       6c       2b       
10011100 10001101 01011011 00001110 00110011 01000001 00000100 10010100 11100001 00001000 10110001 11011101 01110101 11001110 00110110 11010100 
31       87       78       58       c4       bc       0d       25       20       18       fb       58       a1       2f       8a       34       
10001100 11100001 00011110 00011010 00100011 00111101 10110000 10100100 00000100 00011000 11011111 00011010 10000101 11110100 01010001 00101100 
11       17       77       66       d1       a5       7c       08       26       1d       2c       20       ac       e4       3f       57       
10001000 11101000 11101110 01100110 10001011 10100101 00111110 00010000 01100100 10111000 00110100 00000100 00110101 00100111 11111100 11101010 
3c       a6       d0       13       7c       df       58       dc       a5       7a       a8       d3       24       23       cf       65       
00111100 01100101 00001011 11001000 00111110 11111011 00011010 00111011 10100101 01011110 00010101 11001011 00100100 11000100 11110011 10100110 
b5       66       78       4d       4b       08       aa       84       b2       dc       c2       36       d7       a8       99       52       
10101101 01100110 00011110 10110010 11010010 00010000 01010101 00100001 01001101 00111011 01000011 01101100 11101011 00010101 10011001 01001010 
04       4d       96       4b       2a       2d       66       70       ff       48       d6       77       f1       ac       76       24       
00100000 10110010 01101001 11010010 01010100 10110100 01100110 00001110 11111111 00010010 01101011 11101110 10001111 00110101 01101110 00100100 
b2       9a       91       62       11       a1       5f       f8       ae       a9       02       a7       e2       85       64       98       
01001101 01011001 10001001 01000110 10001000 10000101 11111010 00011111 01110101 10010101 01000000 11100101 01000111 10100001 00100110 00011001 
49       bd       82       dc       aa       04       6d       f2       82       29       bd       a8       8e       8e       2f       6f       
10010010 10111101 01000001 00111011 01010101 00100000 10110110 01001111 01000001 10010100 10111101 00010101 01110001 01110001 11110100 11110110 
18       dd       ab       4e       a7       b3       55       67       88       ba       fb       a2       a7       19       b6       31       
00011000 10111011 11010101 01110010 11100101 11001101 10101010 11100110 00010001 01011101 11011111 01000101 11100101 10011000 01101101 10001100 
60       ef       1b       de       d6       6d       cf       d7       ac       73       87       9a       aa       57       a9       ef       
00000110 11110111 11011000 01111011 01101011 10110110 11110011 11101011 00110101 11001110 11100001 01011001 01010101 11101010 10010101 11110111 
39       ab       72       e7       7f       7f       62       7a       11       dc       3d       f2       30       35       97       de       
10011100 11010101 01001110 11100111 11111110 11111110 01000110 01011110 10001000 00111011 10111100 01001111 00001100 10101100 11101001 01111011 
63       7f       9c       ea       02       69       6f       b8       7d       fb       d5       ce       ba       25       90       6a       
11000110 11111110 00111001 01010111 01000000 10010110 11110110 00011101 10111110 11011111 10101011 01110011 01011101 10100100 00001001 01010110 
62       2a       de       75       b5       4d       1c       94       fc       56       5d       81       52       13       ba       97       
01000110 01010100 01111011 10101110 10101101 10110010 00111000 00101001 00111111 01101010 10111010 10000001 01001010 11001000 01011101 11101001 
85       3d       4c       3a       6d       47       db       06       76       fa       3d       58       f3       db       4f       6f       
10100001 10111100 00110010 01011100 10110110 11100010 11011011 01100000 01101110 01011111 10111100 00011010 11001111 11011011 11110010 11110110 
ff       7b       81       f9       05       54       7a       58       f7       88       a3       0c       1f       e2       48       26       
11111111 11011110 10000001 10011111 10100000 00101010 01011110 00011010 11101111 00010001 11000101 00110000 11111000 01000111 00010010 01100100 
f0       c5       0b       20       5a       47       5c       71       e0       89       56       8d       38       b6       fa       76       
00001111 10100011 11010000 00000100 01011010 11100010 00111010 10001110 00000111 10010001 01101010 10110001 00011100 01101101 01011111 01101110 
9a       7b       97       03       b3       26       a2       d7       fa       1f       3e       11       a1       6d       99       a8       
01011001 11011110 11101001 11000000 11001101 01100100 01000101 11101011 01011111 11111000 01111100 10001000 10000101 10110110 10011001 00010101 
ec       55       71       4c       bf       17       52       2c       8d       06       42       61       0a       2f       0e       73       
00110111 10101010 10001110 00110010 11111101 11101000 01001010 00110100 10110001 01100000 01000010 10000110 01010000 11110100 01110000 11001110 
0d       47       62       1c       f1       9a       2a       ef       8e       6a       95       2c       93       8b       79       10       
10110000 11100010 01000110 00111000 10001111 01011001 01010100 11110111 01110001 01010110 10101001 00110100 11001001 11010001 10011110 00001000 
a7       79       75       cf       34       e7       65       24       27       40       23       a9       30       bd       7d       35       
11100101 10011110 10101110 11110011 00101100 11100111 10100110 00100100 11100100 00000010 11000100 10010101 00001100 10111101 10111110 10101100 
68       8b       91       ae       38       61       fe       3f       5f       7a       96       2c       63       43       00       00       
00010110 11010001 10001001 01110101 00011100 10000110 01111111 11111100 11111010 01011110 01101001 00110100 11000110 11000010 00000000 00000000 

Figure 3: Attachment #1 in little-endian bit format

I'll start by focusing on the first line of figure 3:

20       21       22       23       24       25       26       27       28       29       30       31       32
bd       1b       fd       6f       da       c8       f2       77       fe       8a       6d       4e       4d       
10111101 11011000 10111111 11110110 01011011 00010011 01001111 11101110 01111111 01010001 10110110 01110010 10110010 

As described in part 1, the first bit is a "block" indicator - if it's set to 1, which it is in this case, then this is the last "block" in the file. You'll see multiple blocks in very large gzipped files, but this one is small enough that it only needs one block. The following two bits, 01 in this case, are the block format. Here the block format is "dynamic huffman tree" indicating that the next bit sequence is a Huffman key to a Huffman coded representation of another Huffman key to the Huffman coded representation of the actual gzipped content. This is followed by the 5-bit length of the literals tree, the 5-bit length of the distance tree and the 3-bit length of the initial Huffman key.

So, bytes 20-22 of the attached file — 0xbd 0x1b 0xfd, whose little-endian bit representation is 1 01 11101 11011 0001 0111111 — are interpreted as (remember to read the bits in the table "backwards"):

1last block in this file
012: dynamic huffman table
1110123 literals codes
1101127 distance codes
00018 keys in the following huffman key table

Figure 4: Huffman key table header

where the remaining seven bits 0111111 of byte 22, 0xFD, are unused (so far).

Since there are always at least five entries in the dynamic huffman key table, add 4 to 8 to get the actual count of twelve. That means that there are 12 3-bit codes that describe a Huffman table that is itself the key to the following Huffman table.
Bit patternnumeric valuelength of huffman code
011616
111717
111718
11030
11038
01027
11039
11036
001410
00145
101511
00144

Figure 5: Dynamic Huffman table specification

Indicating that the Huffman codes that encode the subsequent table are:

010: 0
1100: 4
1101: 5
011: 6
00: 7
100: 8
101: 9
1110: 10
11110: 11
111110: 16
1111110: 17
1111111: 18

Figure 6: Dynamic Huffman table codes

At this point, I've read a little more than half-way through byte 26 of the first line of figure 3, and the file pointer is set to:

26          27       28       29       30       31       32
f2          77       fe       8a       6d       4e       4d       
01001111 11101110 01111111 01010001 10110110 01110010 10110010 
     ^

This is followed by the 308 codes-worth of Huffman-code lengths shown in figure 7 (recall that this is additionally run-length encoded, so there aren't 308 actual code values here):

Jump to bottom
Huffman codevaluerepeat countNotes
11111101710first 10 codes (0-9) are empty, don't appear
007The code for the literal value 10 is seven bits
1111111182121 more zeros; values 11-31 don't appear
11015The code for value 32 is five bits
1019The code for value 33 is 9 bits
1008...
111010
0100
1019
1008
1019
007
1008
1008
1008
007
007
007
1019
007
0116
007
007
1008
007
007
1008
007
1008
1019
007
1008
007
1008
111010
0100
1019
111010
1019
1019
1008
1019
0100
111010
1019
0100
0100
111010
1019
1019
1019
1111011
0100
1019
111110163
0100
0100
111010
0100
1111011
1019
1111011
1019
0100
007
0100
0116
007
0116
0116
11015
007
1008
007
0116
1008
1019
0116
007
0116
0116
007
0100
0116
0116
0116
007
1008
1008
1019
1008
111010
111010
111010
1008
111111118130130 consecutive 0's, indicating that the codes from 126-255 are not included in this table
1111011
11004
11004
11004
11015
111110163
0116
11015
11015
11015
0116
0116
007
007
007
1008
1008
1008
111010
111010
0100
111010
1008
1019
111110163
1008
007
007
11015
0116
11004
11004
11004
11015
11004
11015
11004
11015
11004
111110166
11015
11015
0116

Figure 7: Compressed data Huffman codes specification

Which work out to two Huffman code trees — one for the literals:

1011000: 10
00110: 32
111100100: 33
11011110: 34
1111110010: 35
111100101: 37
11011111: 38
111100110: 39
1011001: 40
11100000: 41
11100001: 42
11100010: 43
1011010: 44
1011011: 45
1011100: 46
111100111: 47
1011101: 48
011110: 49
1011110: 50
1011111: 51
11100011: 52
1100000: 53
1100001: 54
11100100: 55
1100010: 56
11100101: 57
111101000: 58
1100011: 59
11100110: 60
1100100: 61
11100111: 62
1111110011: 63
111101001: 65
1111110100: 66
111101010: 67
111101011: 68
11101000: 69
111101100: 70
1111110101: 72
111101101: 73
1111110110: 76
111101110: 77
111101111: 78
111110000: 79
11111111100: 80
111110001: 82
111110010: 83
111110011: 84
111110100: 85
1111110111: 88
11111111101: 90
111110101: 91
11111111110: 92
111110110: 93
1100101: 95
011111: 97
1100110: 98
100000: 99
100001: 100
00111: 101
1100111: 102
11101001: 103
1101000: 104
100010: 105
11101010: 106
111110111: 107
100011: 108
1101001: 109
100100: 110
100101: 111
1101010: 112
100110: 114
100111: 115
101000: 116
1101011: 117
11101011: 118
11101100: 119
111111000: 120
11101101: 121
1111111000: 122
1111111001: 123
1111111010: 124
11101110: 125
11111111111: 256
0000: 257
0001: 258
0010: 259
01000: 260
01001: 261
01010: 262
01011: 263
101001: 264
01100: 265
01101: 266
01110: 267
101010: 268
101011: 269
1101100: 270
1101101: 271
1101110: 272
11101111: 273
11110000: 274
11110001: 275
1111111011: 276
1111111100: 277
1111111101: 279

Figure 8: Compressed data literals Huffman code values

and a smaller one for the distances:

11111100: 0
111111100: 1
111111101: 2
111111110: 3
111111111: 4
11111101: 5
1111100: 6
1111101: 7
11000: 8
111100: 9
0000: 10
0001: 11
0010: 12
11001: 13
0011: 14
11010: 15
0100: 16
11011: 17
0101: 18
0110: 19
0111: 20
1000: 21
1001: 22
1010: 23
1011: 24
11100: 25
11101: 26
111101: 27

Figure 9: Compressed data distances Huffman code values

These tables make a lot of sense if you think about the nature of the file that was compressed — it's C source code, so it's ASCII-encoded. The byte value 10 appears fairly often: that's the line-ending code, so it gets a literal code. 32 is the ASCII code for a space character, so it gets a short Huffman code since it appears quite a bit. Although there are codes here for 33, 34 and 35 (ASCII !, " and #, respectively), the $ character 36 never appears in the zipped source, so no code is defined for it. There are codes here for most of the capital letters (range 65-90), but notice that their literals codes are relatively long, since there aren't many capital letters in the actual source code file. The lower-case letters (97-122) get shorter codes in the literals table, since they appear more often than the upper-case characters. The non-printable ASCII characters less than 32 (other than the CR code 10) and greater than 128 don't have codes because they don't appear in the source file.

At this point, the decompression values have read the full Huffman codes for the actual payload, which follows immediately. The last few bits that were read by the decompressor were: 1101 1101 011, which were 5, 5 and 6, according to the dynamic Huffman table from Figure 6. At this point, 86 bytes of the file have been consumed, and the file pointer is at the sixth byte of the fifth line of Figure 3 (hexadecimal eb), pointed at the very last bit of the byte (remember, this is the most significant bit, because we're working LSB to MSB):

81       82       83       84       85       86       87       88       89       90       91       92       93       94       95       96
b3       b3       b3       f3       bd       eb       9f       a2       24       88       d7       21       67       67       79       11       
11001101 11001101 11001101 11001111 10111101 11010111 11111001 01000101 00100100 00010001 11101011 10000100 11100110 11100110 10011110 10001000 
                                                    ^

Almost all of the remainder of the file (until the trailer, which begins on byte 4696) is interpreted according to the Huffman tables in figures 8 and 9. As you can see, the Huffman compression tables are very efficient; only 65 bytes of the 4,704-byte gzipped file are "dictionary" information that's needed to interpret the remainder of the file, with an additional 20 bytes of header information and 8 bytes of trailer information.

So far, though, I haven't shown any Lempel-Ziv compression! At this point, all I have are the Huffman codes that represent four types of codes: a "normal" byte that should be inflated to its representative value, a stop code that indicates that compression should halt (i.e. EOF), a length code that indicates a "back pointer" to a prior part of the uncompressed output that should be represented and length codes that indicate how much of the previous data should be copied. Figure 10, below, shows the entire process and details how each code is interpreted; again, refer to RFC 1951 or my earlier discussion of GZIP/DEFLATE to fully interpret the details below.

Jump to bottom
Byte number Bits read Corresponding (Huffman code) Type (normal, stop or distance) ASCII value (for normal codes) Extra bits (codes 265-285) Length Distance bits read Extra distance (distance codes 3+) Distance (Huffman code) copied value
86111111001035normal byte#
88100010105normal bytei
88100100110normal byten
8910000099normal bytec
90100011108normal bytel
911101011117normal byteu
92100001100normal byted
9200111101normal bytee
930011032normal byte
941110011060normal byte<
95100111115normal bytes
95101000116normal bytet
96100001100normal byted
97100010105normal bytei
98100101111normal byteo
98101110046normal byte.
991101000104normal byteh
1001110011162normal byte>
101101100010normal byte\n
102111111001035normal byte#
10301100265distance code11211000218include <std
105100011108normal bytel
106100010105normal bytei
106110011098normal byteb
10701110267distance code11611000319.h>\n#include <st
109100110114normal byter
110100010105normal bytei
111100100110normal byten
11111101001103normal byteg
11201101266distance code11411000319.h>\n#include <
11400111101normal bytee
115100110114normal byter
115100110114normal byter
116100100110normal byten
11701110267distance code01500011058o.h>\n#include <
11901111197normal bytea
119100111115normal bytes
120100111115normal bytes
12100111101normal bytee
122100110114normal byter
122101000116normal bytet
1230001258distance code411000319.h>\n
125101100010normal byte\n
12511110011147normal byte/
12711110011147normal byte/
1280011032normal byte
1281101000104normal byteh
12900111101normal bytee
13001111197normal bytea
131100001100normal byted
13100111101normal bytee
132100110114normal byter
1330011032normal byte
133100111115normal bytes
13400111101normal bytee
1351101010112normal bytep
13601111197normal bytea
136100110114normal byter
13701111197normal bytea
138101000116normal bytet
13900111101normal bytee
139100001100normal byted
1400011032normal byte
1411100111102normal bytef
141100110114normal byter
142100101111normal byteo
1431101001109normal bytem
1440011032normal byte
1441101001109normal bytem
14501111197normal bytea
146100010105normal bytei
147100100110normal byten
1480011032normal byte
1480000257distance code300101579str
1501101011117normal byteu
15110000099normal bytec
151101000116normal bytet
1520011032normal byte
1531100111102normal bytef
154100101111normal byteo
154100110114normal byter
1550011032normal byte
156101000116normal bytet
1571101000104normal byteh
15700111101normal bytee
1580011032normal byte
1591101111034normal byte"
160100111115normal bytes
160100010105normal bytei
1611111111000122normal bytez
16200111101normal bytee
163100101111normal byteo
1641100111102normal bytef
1651101111034normal byte"
1660011032normal byte
166110011098normal byteb
16700111101normal bytee
168100011108normal bytel
169100101111normal byteo
16911101100119normal bytew
170101100010normal byte\n
171101000116normal bytet
17211101101121normal bytey
1731101010112normal bytep
17400111101normal bytee
174100001100normal byted
17500111101normal bytee
1761100111102normal bytef
17701001261distance code70000537 struct
178101100010normal byte\n
1791111111001123normal byte{
180101100010normal byte\n
1810011032normal byte
1820011032normal byte
1831101011117normal byteu
183100100110normal byten
184100111115normal bytes
185100010105normal bytei
18611101001103normal byteg
187100100110normal byten
1870000257distance code30010367ed
18910000099normal bytec
1901101000104normal byteh
19101111197normal bytea
191100110114normal byter
1920011032normal byte
193100010105normal bytei
194100001100normal byted
19411111010191normal byte[
1950011032normal byte
196101111050normal byte2
1970011032normal byte
19811111011093normal byte]
199110001159normal byte;
200101010268distance code017111100024\n unsigned char
20210000099normal bytec
202100101111normal byteo
2031101001109normal bytem
2041101010112normal bytep
205100110114normal byter
20600111101normal bytee
206100111115normal bytes
207100111115normal bytes
208100010105normal bytei
208100101111normal byteo
209100100110normal byten
210110010195normal byte_
2111101001109normal bytem
21200111101normal bytee
212101000116normal bytet
2131101000104normal byteh
214100101111normal byteo
215100001100normal byted
215101010268distance code1180000335;\n unsigned char
2171100111102normal bytef
218100011108normal bytel
21901111197normal bytea
22011101001103normal byteg
221100111115normal bytes
221101010268distance code11811000622;\n unsigned char
2231101001109normal bytem
224101000116normal bytet
225100010105normal bytei
2261101001109normal bytem
22700111101normal bytee
22711111010191normal byte[
2280011032normal byte
2291110001152normal byte4
230101011269distance code12000102286 ];\n unsigned char
23200111101normal bytee
233111111000120normal bytex
234101000116normal bytet
235100110114normal byter
23501111197normal bytea
236110010195normal byte_
2371101100270distance code0230001856flags;\n unsigned char
239100101111normal byteo
2400000257distance code311000319s;\n
24111101110125normal byte}
242101100010normal byte\n
24311101001103normal byteg
2441111111000122normal bytez
245100010105normal bytei
2461101010112normal bytep
247110010195normal byte_
24801000260distance code61101049241header
250110001159normal byte;
251101100010normal byte\n
252101011269distance code120110101193\ntypedef struct\n{\n
25401100265distance code0110000032gzip_header
2560011032normal byte
25601010262distance code80000739header;\n
25801100265distance code01100101074 unsigned
260100111115normal bytes
2611101000104normal byteh
262100101111normal byteo
262100110114normal byter
263101000116normal bytet
2640011032normal byte
264111111000120normal bytex
266100011108normal bytel
26600111101normal bytee
267100100110normal byten
268101010268distance code11811001197;\n unsigned char
2701110000142normal byte*
2710010259distance code51100131127extra
273101011269distance code01911000723;\n unsigned char *
2751100111102normal bytef
275100100110normal byten
27601111197normal bytea
2771101001109normal bytem
27800111101normal bytee
278101011269distance code12011000723;\n unsigned char *f
2800000257distance code301007263com
2821101001109normal bytem
28300111101normal bytee
284100100110normal byten
285101000116normal bytet
285101011269distance code01911001197;\n unsigned short
28810000099normal bytec
288100110114normal byter
28910000099normal bytec
29001111049normal byte1
291110000154normal byte6
291110001159normal byte;
2920011032normal byte
2930000257distance code31101130414//
295101000116normal bytet
2961101000104normal byteh
297100010105normal bytei
297100111115normal bytes
2980011032normal byte
2991101010112normal bytep
300100110114normal byter
300100101111normal byteo
301101000116normal bytet
30200111101normal bytee
30210000099normal bytec
303101000116normal bytet
304100111115normal bytes
3050010259distance code5110116390 the
30701000260distance code6001122150header
30901100265distance code1120001351\n unsigned
310100011108normal bytel
311100101111normal byteo
312100100110normal byten
31311101001103normal byteg
3140001258distance code40001250 crc
315101111151normal byte3
316101111050normal byte2
317110001159normal byte;
3180011032normal byte
318101011269distance code3220001351 // this protects the
320100001100normal byted
321100101111normal byteo
32210000099normal bytec
3231101011117normal byteu
3230001258distance code41100110106ment
325101010268distance code0170001553\n unsigned long
327100010105normal bytei
3280001258distance code41101183467size
33001011263distance code9010025281;\n}\ngzip_
3321100111102normal bytef
333100010105normal bytei
333100011108normal bytel
3340000257distance code31111101012e;\n
336101100010normal byte\n
337111111001035normal byte#
3380000257distance code3010020276def
340100010105normal bytei
341100100110normal byten
34100111101normal bytee
3420011032normal byte
34311110110070normal byteF
34411111001184normal byteT
3451110100069normal byteE
346111111011188normal byteX
34711111001184normal byteT
3480011032normal byte
3490001258distance code4111111000
350101110148normal byte0
351111111000120normal bytex
352101110148normal byte0
35301111049normal byte1
354101001264distance code1011000622\n#define F
356111111010172normal byteH
35711110101067normal byteC
35811111000182normal byteR
35911110101067normal byteC
36001010262distance code811000622 0x0
362101111050normal byte2
363101001264distance code1011000622\n#define F
3650000257distance code300001244EXT
36611111000182normal byteR
36711110100165normal byteA
36801001261distance code711000622 0x0
3701110001152normal byte4
371101001264distance code1011000622\n#define F
37311110111178normal byteN
37411110100165normal byteA
37511110111077normal byteM
3761110100069normal byteE
37701010262distance code800001345 0x0
379110001056normal byte8
380101001264distance code1011000622\n#define F
38111110101067normal byteC
38211111000079normal byteO
38411110111077normal byteM
38511110111077normal byteM
3861110100069normal byteE
38711110111178normal byteN
38811111001184normal byteT
3890001258distance code411000622 0x
39101111049normal byte1
391101110148normal byte0
392101011269distance code2211101111395\n\ntypedef struct\n{\n
39501011263distance code9001141169unsigned
397100010105normal bytei
397100100110normal byten
398101000116normal bytet
3990011032normal byte
39901110267distance code1160100114370len;\n unsigned
4020001258distance code411000319int
40310000099normal bytec
404100101111normal byteo
405100001100normal byted
4050001258distance code4001159187e;\n}
4070011032normal byte
408101100010normal byte\n
409101000116normal bytet
409100110114normal byter
41000111101normal bytee
41100111101normal bytee
411110010195normal byte_
412100100110normal byten
4130010259distance code51111101113ode;\n
41501110267distance code0150010872\ntypedef struct
4160011032normal byte
4171101000104normal byteh
4181101011117normal byteu
4191100111102normal bytef
4201100111102normal bytef
4211101001109normal bytem
42101111197normal bytea
422100100110normal byten
4230010259distance code5111100529_node
425110010195normal byte_
42501000260distance code600102387t\n{\n
42701011263distance code900011058int code;
4290001258distance code4010043299 //
431101101145normal byte-
43201111049normal byte1
4320010259distance code50101223735 for
434100100110normal byten
435100101111normal byteo
436100100110normal byten
437101101145normal byte-
437100011108normal bytel
43800111101normal bytee
43901111197normal bytea
4401100111102normal bytef
4400011032normal byte
4410001258distance code40000739node
443100111115normal bytes
4430000257distance code30000436\n
445101011269distance code22100011462struct huffman_node_t
4470011032normal byte
4471110000142normal byte*
4481111111000122normal bytez
45000111101normal bytee
450100110114normal byter
451100101111normal byteo
452110001159normal byte;
4531101100270distance code326111100630\n struct huffman_node_t *
455100101111normal byteo
456100100110normal byten
4560010259distance code5010076332e;\n}\n
45801100265distance code11211000622huffman_node
460101011269distance code3220101103615;\n\ntypedef struct\n{\n
4630001258distance code400113131int
46400111101normal bytee
465100100110normal byten
4660010259distance code50101247759d;\n
4680001258distance code41111100210int
469110011098normal byteb
470100010105normal bytei
471101000116normal bytet
472110010195normal byte_
4730000257distance code31101033225len
47411101001103normal byteg
475101000116normal bytet
4761101000104normal byteh
47701100265distance code11200011462;\n}\nhuffman_
479100110114normal byter
48001111197normal bytea
480100100110normal byten
48111101001103normal byteg
4820001258distance code400011563e;\n\n
484100111115normal bytes
484101000116normal bytet
48501111197normal bytea
486101000116normal bytet
487100010105normal bytei
48710000099normal bytec
4880011032normal byte
48911101011118normal bytev
490100101111normal byteo
490100010105normal bytei
491100001100normal byted
4920011032normal byte
493110011098normal byteb
4931101011117normal byteu
494100010105normal bytei
495100011108normal bytel
496100001100normal byted
497110010195normal byte_
49701010262distance code80000133huffman_
4990001258distance code41101056248tree
501101100140normal byte(
50201101266distance code01300115133 huffman_node
5040011032normal byte
5041110000142normal byte*
505100110114normal byter
506100101111normal byteo
507100101111normal byteo
508101000116normal bytet
508101101044normal byte,
509101100010normal byte\n
5100011032normal byte
5111101110272distance code031111111000
5130001258distance code41100121117int
5150010259distance code500103195range
5160001258distance code41100123119_len
5181101110272distance code33400001446,\n
52001101266distance code013001118146huffman_range
5220000257distance code311001399 *r
5240010259distance code51111110106ange
5261110000041normal byte)
52701011263distance code91101010202\n{\n int
5291110000142normal byte*
530110011098normal byteb
530100011108normal bytel
531110010195normal byte_
53210000099normal bytec
533100101111normal byteo
5341101011117normal byteu
53401000260distance code60101203715nt;\n
5370010259distance code511000016int *
538100100110normal byten
5390000257distance code3011013781ext
541110010195normal byte_
54201000260distance code61101132416code;\n
5440011032normal byte
5440011032normal byte
54501011263distance code91101131415tree_node
5470011032normal byte
5481110000142normal byte*
5490001258distance code41111100210tree
5500000257distance code31101018210;\n\n
55201011263distance code91101054246 int bit
554100111115normal bytes
555110001159normal byte;
55601100265distance code0111101117401\n int code
5580011032normal byte
559110010061normal byte=
5600011032normal byte
560101110148normal byte0
56101010262distance code81111101315;\n int
563100100110normal byten
56401010262distance code8111110008;\n int
56501111197normal bytea
56610000099normal bytec
567101000116normal bytet
568100010105normal bytei
56811101011118normal bytev
56900111101normal bytee
57001010262distance code8010012268_range;\n
57201000260distance code611000319 int
5741101001109normal bytem
57501111197normal bytea
575111111000120normal bytex
576110010195normal byte_
57701100265distance code112010051307bit_length;\n
579101100010normal byte\n
5800010259distance code50101247759 //
582100111115normal bytes
583101000116normal bytet
58400111101normal bytee
5841101010112normal bytep
5850011032normal byte
58601111049normal byte1
5870011032normal byte
587101101145normal byte-
5880011032normal byte
5891100111102normal bytef
590100010105normal bytei
59011101001103normal byteg
5911101011117normal byteu
592100110114normal byter
59300111101normal bytee
5940011032normal byte
594100101111normal byteo
5951101011117normal byteu
5960000257distance code31101133417t h
598100101111normal byteo
59911101100119normal bytew
60001000260distance code60101233745 long
60201010262distance code8001133161bl_count
604101101044normal byte,
6050011032normal byte
60501011263distance code9001126154next_code
607101101044normal byte,
6080010259distance code5001124152 tree
6100011032normal byte
61000111101normal bytee
611101000116normal bytet
61210000099normal bytec
612101110046normal byte.
61301001261distance code70010064\n // s
6151101000104normal byteh
616100101111normal byteo
6171101011117normal byteu
618100011108normal bytel
6180000257distance code3010099355d b
62000111101normal bytee
6210011032normal byte
621110011098normal byteb
62201111197normal bytea
623100111115normal bytes
6240000257distance code30101100612ed
626100101111normal byteo
627100100110normal byten
6270010259distance code5011061829 the
6290010259distance code51100126122range
6310010259distance code5011081849s pro
63311101011118normal bytev
634100010105normal bytei
635100001100normal byted
63600111101normal bytee
6360010259distance code51101152436d;\n
63801101266distance code11400110128max_bit_length
64001010262distance code8001155183 = 0;\n
6420001258distance code4010173585for
644101100140normal byte(
6450011032normal byte
646100100110normal byten
6460010259distance code51111101214 = 0;
6480000257distance code31111110106 n
6501110011060normal byte<
651101001264distance code10010097353 range_len
6530000257distance code31111101214; n
6541110001043normal byte+
6551110001043normal byte+
6560000257distance code3010048304 )\n
6580011032normal byte
6590011032normal byte
6591111111001123normal byte{
6610010259distance code50100107363\n
663100010105normal bytei
6631100111102normal bytef
6640000257distance code30000840 (
6660010259distance code5111100529range
66711111010191normal byte[
6680000257distance code30000840 n
67011111011093normal byte]
671101110046normal byte.
67201100265distance code01100101175bit_length
6741110011162normal byte>
67501110267distance code11600102892 max_bit_length
6771110000041normal byte)
6780010259distance code50001149\n
6791111111001123normal byte{
68001001261distance code71101135419\n
683101010268distance code0171100125121max_bit_length =
685101011269distance code2210010569range[ n ].bit_length
687110001159normal byte;
6880010259distance code500001345\n
68911101110125normal byte}
690101100010normal byte\n
69101000260distance code61111111103 }\n
69301010262distance code81101059251bl_count
6950000257distance code300001345 =
6961101001109normal bytem
69701111197normal bytea
698100011108normal bytel
699100011108normal bytel
699100101111normal byteo
70010000099normal bytec
701101100140normal byte(
7020011032normal byte
70201000260distance code601114591483sizeof
705101100140normal byte(
7060010259distance code5010077333 int
7071110000041normal byte)
7080011032normal byte
7091110000142normal byte*
7100000257distance code3001113141 (
71201110267distance code01500102488max_bit_length
7141110001043normal byte+
7150000257distance code3010073329 1
7171110000041normal byte)
7180011032normal byte
7181110000041normal byte)
7190001258distance code40010872;\n
72101011263distance code9010048304next_code
72311110001275distance code45500011563 = malloc( sizeof( int ) * ( max_bit_length + 1 ) );\n
7250010259distance code50100101357tree
727101010268distance code11800011058= malloc( sizeof(
729101001264distance code10010121533tree_node
73101000260distance code60010064) * (
73301001261distance code7110108200range[
73501011263distance code9010051307range_len
7370000257distance code31101172456 -
73901111049normal byte1
7400000257distance code31101020212 ].
7420000257distance code3011038806end
744101001264distance code1000101276 + 1 ) );\n
7450001258distance code40100122378\n m
74700111101normal bytee
7481101001109normal bytem
749100111115normal bytes
75000111101normal bytee
750101000116normal bytet
751101100140normal byte(
75201100265distance code0111101180464 bl_count,
75411110011039normal byte'
7551111111111092normal byte\
757101110148normal byte0
75711110011039normal byte'
759101101044normal byte,
75911110000274distance code043001117145 sizeof( int ) * ( max_bit_length + 1 ) );\n
76211110000274distance code2451101141425\n for ( n = 0; n < range_len; n++ )\n {\n
76501010262distance code8110016102bl_count
76711111010191normal byte[
7681101100270distance code0231101146430 range[ n ].bit_length
77111111011093normal byte]
7720011032normal byte
7721110001043normal byte+
773110010061normal byte=
7740011032normal byte
77501001261distance code71101127411\n
77701100265distance code0110000133range[ n ].
7790001258distance code4001153181end
780101101145normal byte-
7810000257distance code311001298 (
7830001258distance code4110014100( n
7851110011162normal byte>
7860011032normal byte
786101110148normal byte0
7870000257distance code31100124120 )
789111111001163normal byte?
790101001264distance code10111100630 range[ n
792101001264distance code101101024216- 1 ].end
79411110100058normal byte:
7950001258distance code401111281152 -1
7980010259distance code5010036292);\n
79911101110125normal byte}
80001100265distance code1120101196708\n\n // step
803101111050normal byte2
804101101044normal byte,
8040011032normal byte
805100001100normal byted
806100010105normal bytei
807100110114normal byter
8070000257distance code301114461470ect
809100011108normal bytel
81011101101121normal bytey
81101000260distance code610003991935 from
81311111000182normal byteR
81511110110070normal byteF
81611110101067normal byteC
81701100265distance code0111101058250\n memset(
81901100265distance code0110101193705next_code,
82111110000274distance code5481101059251'\0', sizeof( int ) * ( max_bit_length + 1 ) );\n
82401010262distance code81101058250 for (
8260001258distance code40110122890bits
8280000257distance code31101061253 =
83001111049normal byte1
831110001159normal byte;
83101000260distance code6111110019 bits
8331110011060normal byte<
834110010061normal byte=
83501110267distance code116011083851 max_bit_length;
8370010259distance code511000723 bits
83901101266distance code01301009265++ )\n {\n
84101001261distance code701011513code =
843101100140normal byte(
84401000260distance code6111110008 code
8461110001043normal byte+
84701100265distance code011010025281 bl_count[
8490010259distance code50010266bits
8500010259distance code51101020212- 1 ]
8520000257distance code3110014100 )
8541110011060normal byte<
8551110011060normal byte<
8560000257distance code300102185 1;
858101001264distance code100101228740\n if (
86001110267distance code0150000537bl_count[ bits
86211111011093normal byte]
86301110267distance code0150101206718 )\n {\n
86501011263distance code91101010202next_code
86701011263distance code9111100731[ bits ]
869110010061normal byte=
8700011032normal byte
87001010262distance code80111541078code;\n
87301010262distance code80101192704 }\n }\n
87501100265distance code011010024280\n // step
877101111151normal byte3
8781101101271distance code330010024280, directly from RFC\n memset(
8800001258distance code4010182594tree
88201110267distance code116010019275, '\0', sizeof(
88401101266distance code1140101102614tree_node ) *
8870010259distance code500102286\n
88811101111273distance code3380101107619( range[ range_len - 1 ].end + 1 ) );\n
8910011032normal byte
89201101266distance code01301111221146 active_range
8941101100270distance code1240110227995 = 0;\n for ( n = 0; n <
897110010061normal byte=
8981101101271distance code02700101175 range[ range_len - 1 ].end
900101011269distance code22101102451013; n++ )\n {\n if (
9020001258distance code4010115527n >
90401001261distance code70001250range[
90601101266distance code01300103195active_range
90801000260distance code61100129125].end
91001101266distance code114010029285)\n {\n
91201100265distance code1120000032active_range
9141110001043normal byte+
9151110001043normal byte+
91601010262distance code8010019275;\n }\n
918101010268distance code0170111651089\n if ( range[
92001110267distance code0150010771active_range ].
9221101100270distance code2250111591083bit_length )\n {\n
9250001258distance code4010010266tree
92701000260distance code60101158670[ n ].
9290001258distance code4001138166len
930110010061normal byte=
9311101110272distance code23300011462 range[ active_range ].bit_length
933110001159normal byte;
934101100010normal byte\n
93501001261distance code70001856\n
9370010259distance code51100112108if (
93901101266distance code11400011361tree[ n ].len
94011110010033normal byte!
941110010061normal byte=
9420001258distance code40101213725 0 )
94401001261distance code7111100731\n
94601010262distance code811001096{\n
94801100265distance code11211001298 tree[ n ].
95001001261distance code7010146558code =
95201100265distance code0111101196480next_code[
95401101266distance code1140010064tree[ n ].len
95611111011093normal byte]
957110001159normal byte;
95801011263distance code90001452\n
9601101100270distance code3260000335next_code[ tree[ n ].len ]
96201010262distance code81101052244++;\n
96401000260distance code6010110522 }\n
96601101266distance code114010116528 }\n }\n\n //
96811111000079normal byteO
969111110111107normal bytek
9710000257distance code301114591483, n
9730000257distance code301114781502ow
97511110110173normal byteI
9760011032normal byte
9771101000104normal byteh
97701111197normal bytea
97811101011118normal bytev
97900111101normal bytee
9800010259distance code501114251449 the
9820001258distance code40010367code
984100111115normal bytes
984101110046normal byte.
985101110046normal byte.
986101110046normal byte.
9870000257distance code3111110008 co
989100100110normal byten
98911101011118normal bytev
9900000257distance code310017402788ert
9930001258distance code411000420 the
9941101001109normal bytem
9950001258distance code4011021789 int
997100101111normal byteo
9980011032normal byte
99801111197normal bytea
9990000257distance code300102690 tr
10010000257distance code30000638ave
1002100110114normal byter
1003100111115normal bytes
100401111197normal bytea
1004110011098normal byteb
1005100011108normal bytel
100600111101normal bytee
10070011032normal byte
100701000260distance code60010165\n //
100901001261distance code710002131749huffman
10110010259distance code51100120116 tree
10130000257distance code311000117\n
10150001258distance code410003131849root
1017101101145normal byte-
10181110011162normal byte>
101901001261distance code7001155183code =
1020101101145normal byte-
102101111049normal byte1
10221111111011276distance code56411011109493;\n for ( n = 0; n <= range[ range_len - 1 ].end; n++ )\n {\n
102501101266distance code11410004061942huffman_node *
1028100100110normal byten
102801011263distance code90101212724ode;\n
1030100100110normal byten
103101000260distance code611001096ode =
10330001258distance code41100113109root
103501100265distance code011011039807;\n if (
103701101266distance code1141101056248tree[ n ].len
103901101266distance code1141101155439)\n {\n
104101101266distance code0130110178946for ( bits =
104401101266distance code0130000840tree[ n ].len
104501000260distance code60110166934; bits
104801000260distance code611111111115; bits
1049101101145normal byte-
1050101101145normal byte-
1051101011269distance code0191101115399 )\n {\n
105401110267distance code01500102791if ( tree[ n ].
10560010259distance code51101028220code
10571101111138normal byte&
10580000257distance code311000218 (
106001111049normal byte1
10610001258distance code40110167935 <<
1063101100140normal byte(
1064101001264distance code100110185953 bits - 1
10661110000041normal byte)
10670001258distance code41111111001 ) )
106801011263distance code90001553\n
1070101001264distance code1000011563{\n
107201001261distance code70010165 if (
107411110010033normal byte!
10750001258distance code4001152180node
1076101101145normal byte-
10771110011162normal byte>
10780000257distance code310012232271one
108101100265distance code0110000537 )\n
108201101266distance code1140000739 {\n
108401000260distance code61101024216 node
108601000260distance code60000335->one
10880001258distance code40111371061= (
10901101100270distance code02310012902338struct huffman_node_t *
10930000257distance code3110017103 )
109401110267distance code01510011092157\n
109701110267distance code1161000231559malloc( sizeof(
109901101266distance code013010055311huffman_node
110101001261distance code70110137905) );\n
110401100265distance code01100001345 m
110501010262distance code801112591283emset( n
110801010262distance code81100112108ode->one
110901110267distance code11601102391007, '\0', sizeof(
11121101101271distance code33000011462huffman_node ) );\n
111401011263distance code90001654node->one
111501110267distance code01511011104488->code = -1;\n
111801010262distance code8111111000
111911101110125normal byte}
1120101100010normal byte\n
112101101266distance code11400001143 node
11230010259distance code51101010202 = (
112501101266distance code1141101173457huffman_node *
11270000257distance code300102084 )
112901011263distance code90010569node->one
1130101001264distance code1000011058;\n
1132101001264distance code100001856}\n
113400111101normal bytee
1135100011108normal bytel
1135100111115normal bytes
113600111101normal bytee
11371101110272distance code233010073329\n {\n if ( !node->
11390001258distance code410015842632zero
11411101110272distance code233010074330 )\n {\n node->
11440010259distance code50000436zero
11451111111101279distance code6105010075331= ( struct huffman_node_t * ) \n malloc( sizeof( huffman_node ) );\n memset( node->
11490001258distance code41100113109zero
115011110001275distance code152010076332, '\0', sizeof( huffman_node ) );\n node->
11530001258distance code40001755zero
11551111111100277distance code067010077333->code = -1;\n }\n node = ( huffman_node * ) node->
115801010262distance code810018582906zero;\n
116001101266distance code1140001957 }\n
116201010262distance code81111110117}\n
116401000260distance code610106923764assert
116601010262distance code8001142170( node->
116801000260distance code61100112108code =
1170110010061normal byte=
117101011263distance code910003161852 -1 );\n
1173101001264distance code10001112140 node->
117501010262distance code801111171141code = n
117701110267distance code0151000631599;\n }\n }\n\n
11791100111102normal bytef
11800010259distance code510018082856ree(
118301011263distance code910012632311bl_count
118501000260distance code610002641800);\n f
11870010259distance code511000319ree(
1189101001264distance code1010012202268next_code
119101100265distance code01111000420);\n free(
11930010259distance code510011772225tree
11951110000041normal byte)
11960001258distance code410019072955;\n}\n
1198101100010normal byte\n
119911110011147normal byte/
12001110000142normal byte*
12010001258distance code41000521588* \n
12041110000142normal byte*
12050011032normal byte
1205111111010066normal byteB
12060001258distance code410018882936uild
12090000257distance code30111691093 a
1211111111010172normal byteH
121201100265distance code0110111511075uffman tree
121401011263distance code910107943866 for the
12171100111102normal bytef
1218100101111normal byteo
12180000257distance code30100118374llo
122011101100119normal bytew
12210000257distance code310108923964ing
12240011032normal byte
122411101011118normal bytev
122501111197normal bytea
1226100011108normal bytel
12271101011117normal byteu
122800111101normal bytee
1228100111115normal bytes
122911110100058normal byte:
12300001258distance code40001149\n *
12320000257distance code310102183290 0
12340001258distance code4011090858 - 1
12361110001152normal byte4
1237101111151normal byte3
123811110100058normal byte:
12390011032normal byte
1239101110148normal byte0
1240101110148normal byte0
124101111049normal byte1
124201111049normal byte1
1243101110148normal byte0
12440000257distance code3111111000000
12450011032normal byte
12460001258distance code411000016 - 1
12470000257distance code31111100311011
12490001258distance code41111110001111
12500010259distance code5001152180
1252101100140normal byte(
1253110001056normal byte8
12541110000041normal byte)
12550001258distance code400001042\n *
125601111049normal byte1
12571110001152normal byte4
12581110001152normal byte4
12590000257distance code3111100125 -
1261101111050normal byte2
1262110000053normal byte5
1262110000053normal byte5
126311110100058normal byte:
12640011032normal byte
12650001258distance code400008401100
126701000260distance code60000114310000
12680000257distance code300001042- 1
127001010262distance code811111100011111111
12710010259distance code500001042 (
12731110010157normal byte9
12740010259distance code500001042)\n *
1275101111050normal byte2
1276110000053normal byte5
1277110000154normal byte6
12780001258distance code400001042 - 2
12791110010055normal byte7
12801110010157normal byte9
12810001258distance code400102185: 00
1283101110148normal byte0
128401000260distance code6001020840000
12860000257distance code311000016 -
12870001258distance code400014520010
128901010262distance code800102084111
12900011032normal byte
1291101100140normal byte(
12921110010055normal byte7
129301000260distance code600001042)\n * 2
1295110001056normal byte8
12950001258distance code400104680 -
1297101111050normal byte2
1298110001056normal byte8
12991110010055normal byte7
130001000260distance code600102185: 1100
130201011263distance code9001101280000 - 1
13030001258distance code411111003111000
130501110267distance code01500110128111 (8)\n *
130711110100165normal byteA
130810000099normal bytec
130910000099normal bytec
1310100101111normal byteo
1310100110114normal byter
1311100001100normal byted
13120001258distance code4110100192ing
13140000257distance code301112981322to
13160001258distance code41101017209the
13180000257distance code310003431879RFC
13200011032normal byte
132101111049normal byte1
13211110010157normal byte9
1322110000053normal byte5
132301111049normal byte1
13240011032normal byte
1325100110114normal byter
13251101011117normal byteu
1326100011108normal bytel
13270000257distance code310017632811es
13290001258distance code41011134109in s
13320000257distance code310003731909ect
13340000257distance code310109454017ion
13360011032normal byte
1337101111151normal byte3
1337101110046normal byte.
1338101111050normal byte2
1339101110046normal byte.
1340101111050normal byte2
13410001258distance code40001351\n *
134211111001184normal byteT
13440001258distance code410106143686his
13460000257distance code31111111012is
13471101011117normal byteu
13480001258distance code410018102858sed
13510000257distance code30001654to
1352101100140normal byte(
1353100001100normal byted
135400111101normal bytee
13541110000041normal byte)
135501010262distance code810109864058compress
13580011032normal byte
1358100111115normal bytes
13590001258distance code40101137649mall
13610000257distance code30001654 in
13631101010112normal bytep
13631101011117normal byteu
1364101000116normal bytet
1365100111115normal bytes
13660000257distance code310018612909.\n
13681110000142normal byte*
136911110011147normal byte/
1370101011269distance code01910101973269\nstatic void build_
13731100111102normal bytef
1374100010105normal bytei
1375111111000120normal bytex
137600111101normal bytee
13761101110272distance code33410102033275d_huffman_tree( huffman_node *root
137901001261distance code710101023174 )\n{\n
138201101266distance code11410101293201huffman_range
138401001261distance code701113891413range[
13860010259distance code51011741034 ];\n
1389101100010normal byte\n
139001011263distance code910013762424 range[
1392101110148normal byte0
139301001261distance code710003241860 ].end
1395110010061normal byte=
13960001258distance code40100117373 143
1398110001159normal byte;
139901101266distance code11411000723\n range[ 0 ].
140001101266distance code01310018192867bit_length =
1403110001056normal byte8
140401100265distance code011111100428;\n range[
140601111049normal byte1
140601011263distance code90001452 ].end =
14080000257distance code30100127383255
141001110267distance code01511000723;\n range[ 1 ].
141201101266distance code0130001452bit_length =
14131110010157normal byte9
141401100265distance code011111100428;\n range[
1416101111050normal byte2
1417101001264distance code100001452 ].end = 2
14191110010055normal byte7
142001110267distance code116110007239;\n range[ 2 ].
142201101266distance code0130001452bit_length =
14231110010055normal byte7
142401100265distance code011111100428;\n range[
1426101111151normal byte3
1427101001264distance code100001452 ].end = 2
1429110001056normal byte8
143001110267distance code116110007237;\n range[ 3 ].
143201110267distance code116001130158bit_length = 8;\n
143411101110125normal byte}
1435101011269distance code22110105663638\n\ntypedef struct\n{\n
143711110110070normal byteF
143811110110173normal byteI
1440111111011076normal byteL
14411110100069normal byteE
14420011032normal byte
14421110000142normal byte*
1443100111115normal bytes
1444100101111normal byteo
14451101011117normal byteu
1446100110114normal byter
144710000099normal bytec
1447101011269distance code0191011814177e;\n unsigned char
1450110011098normal byteb
14511101011117normal byteu
14521100111102normal bytef
1453101011269distance code01910113054401;\n unsigned char m
145601111197normal bytea
1456100111115normal bytes
1457111110111107normal bytek
14580010259distance code510107453817; //
146110000099normal bytec
14611101011117normal byteu
1462100110114normal byter
1463100110114normal byter
146400111101normal bytee
146401000260distance code610103723444nt bit
14670011032normal byte
14671101010112normal bytep
1468100101111normal byteo
1469100111115normal bytes
1470100010105normal bytei
14700010259distance code51101176460tion
147211101100119normal bytew
1473100010105normal bytei
1474101000116normal bytet
14751101000104normal byteh
14760000257distance code31101191475in
14780001258distance code40001957buf;
14790011032normal byte
1480110001056normal byte8
14810001258distance code41101176460 is
148311110111077normal byteM
148411111001083normal byteS
1485111111010066normal byteB
14860000257distance code31100127123\n}\n
14880001258distance code4001113141bit_
14900000257distance code31100122118str
149200111101normal bytee
149201111197normal bytea
14931101001109normal bytem
1494110001159normal byte;
14950010259distance code501101769\n\n/**
14970001258distance code411011110494\n *
149911111000182normal byteR
150000111101normal bytee
150001111197normal bytea
15010001258distance code40101255767d a
15030001258distance code400011462bit
15050010259distance code510013772425from
15070001258distance code4010137549the
150901000260distance code60000335stream
151101000260distance code61101195479.\n */\n
151301101266distance code01310109223994unsigned int
15150010259distance code5011085853next_
15170000257distance code300001042bit
15190010259distance code51000971633( bit
152101001261distance code700101074_stream
15230000257distance code3001156184 *s
152401000260distance code61111110117tream
15261110000041normal byte)
1527101010268distance code11810109904062\n{\n unsigned int
15300001258distance code400102185bit
15310010259distance code510013522400= 0;\n
15340001258distance code410101733245\n b
15360010259distance code51111100311it =
1537101100140normal byte(
153801001261distance code700102892 stream
1540101101145normal byte-
15411110011162normal byte>
15420000257distance code3001128156buf
15440000257distance code310001781714 &
154601010262distance code81111101113stream->
15480001258distance code41101015207mask
15490010259distance code510018452893 ) ?
155201111049normal byte1
15520000257distance code310018282876 :
15550010259distance code5100140124490;\n
15570000257distance code31101027219//
15590001258distance code410111894285gzip
15610011032normal byte
1562100111115normal bytes
15631101010112normal bytep
156300111101normal bytee
156410000099normal bytec
1565100010105normal bytei
15661100111102normal bytef
1566100010105normal bytei
156700111101normal bytee
156801000260distance code610112424338s the
15700010259distance code510002171753bits
157201001261distance code71101030222within
15740000257distance code3001153181a b
157611101101121normal bytey
1577101000116normal bytet
157800111101normal bytee
15790011032normal byte
15791101111034normal byte"
1580110011098normal byteb
158101111197normal bytea
158210000099normal bytec
1583111110111107normal bytek
158411101100119normal bytew
158501111197normal bytea
1585100110114normal byter
1586100001100normal byted
1587100111115normal bytes
15881101111034normal byte"
158901001261distance code710104963568.\n //
15910000257distance code31001382086con
15931100111102normal bytef
15941101011117normal byteu
1595100111115normal bytes
15960001258distance code410118204916ing.
159801000260distance code610109794051\n str
1601101001264distance code1011001197eam->mask
16031110011060normal byte<
16041110011060normal byte<
16050001258distance code410017962844= 1;
16070010259distance code510106803752\n\n i
16090010259distance code501114371461f ( !
161101101266distance code1141100130126stream->mask )
161301011263distance code910004832019\n {\n
161501101266distance code01311000622stream->mask
1617110010061normal byte=
16180010259distance code510112954391 0x01
162001100265distance code01110004672003;\n if (
16230000257distance code30111761100fre
162501111197normal bytea
1626100001100normal byted
1626101100140normal byte(
16270011032normal byte
16281101111138normal byte&
162901100265distance code011110109201stream->buf
1631101101044normal byte,
16320011032normal byte
163301111049normal byte1
16330010259distance code51111111012, 1,
163501010262distance code811000218stream->
163701000260distance code61101175459source
16390001258distance code410018222870 ) <
16410001258distance code410003881924 1 )
164301101266distance code01310005012037\n {\n
16451101010112normal bytep
164600111101normal bytee
1647100110114normal byter
1648100110114normal byter
1648100101111normal byteo
1649100110114normal byter
1650101100140normal byte(
16510011032normal byte
16511101111034normal byte"
16521110100069normal byteE
16530001258distance code41111110117rror
16550011032normal byte
16560001258distance code400101175read
16570001258distance code40110160928ing
165901010262distance code8011098866compress
16610010259distance code5010057313ed in
16630000257distance code3011094862put
16651101111034normal byte"
1666101001264distance code1001112581282 );\n
16690000257distance code31101017209//
167111111001184normal byteT
167211111000079normal byteO
167311110101168normal byteD
167411111000079normal byteO
16750000257distance code30100125381 ne
167700111101normal bytee
16780001258distance code41101142426d a
16800010259distance code510107593831long
168211101010106normal bytej
16831101011117normal byteu
16841101001109normal bytem
16851101010112normal bytep
16850001258distance code40110157925 to
168700111101normal bytee
1688111111000120normal bytex
16890000257distance code3010086342it
16911101000104normal byteh
169200111101normal bytee
16930001258distance code410107903862re o
1695100110114normal byter
16960011032normal byte
1696100111115normal bytes
1697100101111normal byteo
16980001258distance code410118874983meth
17000000257distance code300101377ing
170201101266distance code11401112931317\n }\n }\n\n
1704100110114normal byter
170500111101normal bytee
1705101000116normal bytet
17061101011117normal byteu
1707100110114normal byter
1708100100110normal byten
17090001258distance code4010058314 bit
171001101266distance code01301112501274;\n}\n\n/** \n *
17130010259distance code511011121505Read
17151101111034normal byte"
17160010259distance code501113131337count
17181101111034normal byte"
171901000260distance code6010087343 bits
172101110267distance code01501010512from the stream
1723101101044normal byte,
17240011032normal byte
172501111197normal bytea
17250000257distance code30101214726nd
172701001261distance code700011361return
17290000257distance code311000622the
1731100010105normal bytei
1731100110114normal byter
173201000260distance code601112631287 value
173401000260distance code6010124536.\n */\n
17360010259distance code510111064202int r
17390000257distance code30010266ead
17400001258distance code4010115527_bit
1742100111115normal bytes
1743101011269distance code120010116528( bit_stream *stream
1746101101044normal byte,
174701001261distance code7101104096 int co
17490010259distance code501114091433unt )
175101011263distance code91011834179\n{\n int
17540001258distance code400001345bits
1755110010195normal byte_
17560010259distance code50010670value
175801011263distance code9010125537 = 0;\n\n
176011101100119normal bytew
17611101000104normal byteh
1762100010105normal bytei
17620000257distance code310014432491le
1765101100140normal byte(
176601000260distance code600001042 count
176701001261distance code710012382286-- )\n
177001001261distance code710104213493{\n b
177201100265distance code11200001244its_value =
1774101100140normal byte(
177501100265distance code1121111101214 bits_value
17761110011060normal byte<
17770010259distance code5010088344< 1 )
17790011032normal byte
17801111111010124normal byte|
178101100265distance code0110101146658 next_bit(
178301010262distance code80101134646stream )
1786110001159normal byte;
1786101010268distance code1181101055247\n }\n\n return bit
178901001261distance code70001553s_value
17900010259distance code51101062254;\n}\n\n
179201101266distance code013001155183int read_bits
1794110010195normal byte_
1795100010105normal bytei
1796100100110normal byten
179711101011118normal bytev
179811110001275distance code758001159187( bit_stream *stream, int count )\n{\n int bits_value = 0;\n
180001000260distance code611000521 int
1802100010105normal bytei
180301100265distance code1121111101012 = 0;\n int
18040010259distance code50100100356bit;\n
180601011263distance code910016092657\n for (
180901000260distance code6111100226i = 0;
18100000257distance code31111110106 i
18121110011060normal byte<
181301000260distance code600101175 count
18150000257distance code31111100210; i
181601101266distance code11410106453717++ )\n {\n b
18190010259distance code5011019787it =
1821101011269distance code322110102194next_bit( stream );\n
182301101266distance code0131101061253 bits_value
18251111111010124normal byte|
182701001261distance code71101062254= ( bit
18290001258distance code41101055247 <<
1831100010105normal bytei
18311101110272distance code2331101034226 );\n }\n\n return bits_value;\n}\n\n
183401110267distance code11610002201756/** \n * Build a
18361101000104normal byteh
183701101266distance code01310002201756uffman tree f
18390001258distance code411011100484rom
18410010259distance code5010198610input
18430000257distance code310003811917 as
184601011263distance code9011093861 specifie
1848100001100normal byted
184801110267distance code1161000111547 in section 3.2.
18511110010055normal byte7
1852101010268distance code01701114771501\n */\nstatic void
18540010259distance code5010052308read_
1856100001100normal byted
185711101101121normal bytey
1858100100110normal byten
185901111197normal bytea
18591101001109normal bytem
1860100010105normal bytei
186110000099normal bytec
186201110267distance code01501114781502_huffman_tree(
1864101011269distance code120010064320bit_stream *stream,
186701110267distance code01510011942242\n
18691101100270distance code225111111000
187101101266distance code1141000261562huffman_node *
1874100011108normal bytel
1874100010105normal bytei
1875101000116normal bytet
187600111101normal bytee
1876100110114normal byter
187701111197normal bytea
1878100011108normal bytel
1879100111115normal bytes
1879110010195normal byte_
188011101111273distance code33810117514847root,\n
1884101011269distance code2210010367 huffman_node *
1886100001100normal byted
1886100010105normal bytei
18870000257distance code3001154182sta
1889100100110normal byten
189010000099normal bytec
189000111101normal bytee
189101000260distance code60010468s_root
189301100265distance code0111101163447 )\n{\n int
18951101000104normal byteh
1896100011108normal bytel
1897100010105normal bytei
189701011263distance code910117144810t;\n int
19001101000104normal byteh
19010001258distance code40000537dist
190201011263distance code91111101012;\n int h
190410000099normal bytec
190501001261distance code7101111605256len;\n
19070010259distance code51101179463int i
1909101101044normal byte,
19100011032normal byte
191111101010106normal bytej
191201100265distance code11210117024798;\n int code
191401001261distance code701114481472_length
1917100111115normal bytes
19170000257distance code31000591595[ 1
19201110010157normal byte9
192101000260distance code610102223294 ];\n
192301101266distance code11410001801716huffman_range
192501100265distance code0110000335code_length
192701000260distance code611000117_range
192901100265distance code0110000941s[ 19 ];\n
19300010259distance code510118204916int *
193301111197normal bytea
1934100011108normal bytel
19341101010112normal bytep
19351101000104normal byteh
193601111197normal bytea
1937110011098normal byteb
193800111101normal bytee
1938101000116normal bytet
1939101010268distance code11800011058;\n huffman_range
194101011263distance code9111100226*alphabet
194301001261distance code70001856_ranges
194401100265distance code1120000133;\n huffman_
19460010259distance code51101011203node
194801100265distance code1121100131127code_lengths
1950110010195normal byte_
195101010262distance code81010903162root;\n
195301101266distance code1141101045237huffman_node *
195501101266distance code0130000234code_lengths_
195701001261distance code7101111785274node;\n\n
19600001258distance code401111931217 st
19620010259distance code51101156440atic
196401110267distance code015110103195int code_length
1966110010195normal byte_
1967100101111normal byteo
19671100111102normal bytef
19681100111102normal bytef
19690000257distance code310015382586set
1971100111115normal bytes
197211111010191normal byte[
19730001258distance code410109113983] =
197601000260distance code60101130642{\n
197801111049normal byte1
1978110000154normal byte6
19790000257distance code301111841208, 1
19811110010055normal byte7
19820000257distance code31111111103, 1
1984110001056normal byte8
1985101101044normal byte,
19860011032normal byte
1986101110148normal byte0
1987101101044normal byte,
19880011032normal byte
19890000257distance code3111111111158,
19910000257distance code311111010127,
19921110010157normal byte9
1993101101044normal byte,
19940011032normal byte
19950001258distance code4110006226, 1
19960000257distance code311111013150,
1998110000053normal byte5
19990000257distance code31111110106, 1
20000000257distance code3011121512391,
20021110001152normal byte4
20030000257distance code31111110106, 1
2005101111050normal byte2
2006101101044normal byte,
20070001258distance code410109354007 3,
200901111049normal byte1
20100000257distance code311111111033,
20110000257distance code31111100192,
201301111049normal byte1
20141110001152normal byte4
201501000260distance code601112421266, 1, 1
2017110000053normal byte5
20180011032normal byte
201911101110125normal byte}
20200010259distance code51100115111;\n\n
20210001258distance code4010090346hlit
20230001258distance code410102533325 = r
202501101266distance code114011088856ead_bits_inv(
202801010262distance code8010111523stream,
2030110000053normal byte5
203101000260distance code60101178690 );\n
20330010259distance code50100115371hdist
20351101110272distance code3340000537 = read_bits_inv( stream, 5 );\n h
203710000099normal bytec
203801001261distance code710107103782len = r
2040101011269distance code3220000537ead_bits_inv( stream,
20421110001152normal byte4
204301110267distance code01510115604656 );\n\n memset(
204601100265distance code1121101063255code_lengths
204801110267distance code11610017432791, '\0', sizeof(
205001100265distance code112111100327code_lengths
205201101266distance code11410112964392 ) );\n for (
205501100265distance code0110110153921i = 0; i <
2057101100140normal byte(
205801001261distance code71100117113 hclen
20601110001043normal byte+
20610010259distance code500102690 4 );
206201110267distance code0150110161929 i++ )\n {\n
206501101266distance code11401010512code_lengths[
2067101011269distance code120010074330code_length_offsets[
20690000257distance code30010367 i
207111111011093normal byte]
20720010259distance code510112234319 ] =
20741101100270distance code023001147175read_bits_inv( stream,
2077101111151normal byte3
207801101266distance code11410115204616 );\n }\n\n //
208011111001184normal byteT
208101000260distance code601113321356urn th
2084100101111normal byteo
2084100111115normal bytes
208500111101normal bytee
208601001261distance code710107043776 into a
20880010259distance code50110114882ction
20900010259distance code510107013773able
209201001261distance code7101111685264ranges
209501010262distance code810016372685for the
209701101266distance code0130110181949huffman tree
2099100110114normal byter
2100100101111normal byteo
21011101011117normal byteu
2102101000116normal bytet
2103100010105normal bytei
2103100100110normal byten
21040001258distance code410101283200e\n
210611101010106normal bytej
210701000260distance code6001157185 = 0;
21090001258distance code400101175 //
211111101010106normal bytej
21120011032normal byte
2112110011098normal byteb
211300111101normal bytee
21140000257distance code31000551591com
211601001261distance code710002821818es the
211801001261distance code710011032151length
2121100101111normal byteo
21211100111102normal bytef
2122101001264distance code10101112455341 the range
21250011032normal byte
212601111197normal bytea
2126100110114normal byter
2127100110114normal byter
212801111197normal bytea
212911101101121normal bytey
2130101011269distance code1201101052244\n for ( i = 0; i <
213201111049normal byte1
21331110010157normal byte9
213401110267distance code1161101041233; i++ )\n {\n
21360010259distance code510002181754if (
21380001258distance code40000335( i
213901000260distance code610117274823> 0 )
21421101111138normal byte&
21431101111138normal byte&
21440011032normal byte
2145101100140normal byte(
214501110267distance code0151101061253 code_lengths[
21480001258distance code41101040232i ]
214911110010033normal byte!
2151110010061normal byte=
2151101010268distance code01711000420 code_lengths[ i
215301010262distance code810115454641- 1 ] )
215601101266distance code11410002301766)\n {\n
215811101010106normal bytej
2159101001264distance code1010112164312++;\n }\n
216201110267distance code015010071327 code_length
216401011263distance code9011036804_ranges[
216611101010106normal bytej
216701011263distance code910013122360 ].end =
2169100010105normal bytei
2170110001159normal byte;
21711101101271distance code2290000436\n code_length_ranges[ j ].
217301101266distance code01310013252373bit_length =
2176101010268distance code017001119147code_lengths[ i ]
217801011263distance code9010093349;\n }\n\n
218001010262distance code8010117529memset(
21821101111138normal byte&
2183101010268distance code017011053821code_lengths_root
218511101111273distance code13610102553327, '\0', sizeof( huffman_node ) );\n
2188101011269distance code120101119226018build_huffman_tree(
2191101011269distance code1200010973&code_lengths_root,
219311101010106normal bytej
21940001258distance code410115864682 + 1
2197101101044normal byte,
2198101011269distance code019001143171 code_length_ranges
220001001261distance code70101151663 );\n\n
22020000257distance code31101123407//
22040001258distance code401019521read
220601000260distance code61101118402 the l
220801000260distance code601112051229iteral
221011110011147normal byte/
221201001261distance code7001160188length
221301011263distance code9011181032alphabet;
221601000260distance code6111004596603 this
22180000257distance code31111111012is
222000111101normal bytee
2221100100110normal byten
22210001258distance code40010771code
2223100001100normal byted
22240011032normal byte
22240010259distance code510011732221using
222701100265distance code11211011117501 the huffman
222901000260distance code60010872\n //
2231101001264distance code1001114321456tree from
22330001258distance code4111100226the
22350000257distance code31001312079pre
223711101011118normal bytev
2238100010105normal bytei
2239100101111normal byteo
22391101011117normal byteu
2240100111115normal bytes
22410010259distance code510118194915 step
22430001258distance code40111921116\n i
224501010262distance code810001201656 = 0;\n
224801010262distance code800102387alphabet
22490010259distance code510002921828 = (
22520010259distance code501111141138int *
22540000257distance code31101020212 )
225601010262distance code810105633635malloc(
2258101100140normal byte(
225901000260distance code60110155923 hlit
22611110001043normal byte+
226201001261distance code70110125893 hdist
22641110001043normal byte+
22650000257distance code310017832831 25
2267110001056normal byte8
22680010259distance code510118194915 ) *
227101101266distance code114101111175213sizeof( int )
22731110000041normal byte)
227401100265distance code1120010872;\n alphabet
227601010262distance code81101017209_ranges
227801100265distance code11210104713543= ( huffman_
228101001261distance code701111771201range *
228311110000274distance code14400102589 ) malloc( ( hlit + hdist + 258 ) * sizeof(
228501101266distance code11400011058huffman_range
228701001261distance code711001399) );\n
2289101010268distance code01701111751199code_lengths_node
22910000257distance code3110015101 =
2293101010268distance code1180100103359&code_lengths_root
2295110001159normal byte;
229601100265distance code0111001232071\n while (
229901001261distance code70110164932i < ( h
2301101011269distance code1201100111107lit + hdist + 258 )
230301110267distance code11610119004996)\n {\n if ( n
2306101010268distance code01710003291865ext_bit( stream )
230801110267distance code0150101149661 )\n {\n
2311101011269distance code1201100128124code_lengths_node =
2313101010268distance code01711000319code_lengths_node
231501100265distance code011101124098->one;\n
231701000260distance code60101188700}\n
231901011263distance code9101010184090else\n
232211110000274distance code4470010670{\n code_lengths_node = code_lengths_node->
2324101001264distance code1010107633835zero;\n
232701100265distance code11210119895085}\n\n if (
2329101011269distance code0190000840code_lengths_node->
23310010259distance code510106803752code
233411110010033normal byte!
233501000260distance code610107603832= -1 )
233701101266distance code013110018104\n {\n
23391101101271distance code2290001048if ( code_lengths_node->code
23411110011162normal byte>
23420001258distance code401113821406 15
2344101011269distance code01910115394635)\n {\n i
23470010259distance code510012242272nt re
23501101010112normal bytep
235000111101normal bytee
235101111197normal bytea
2352101010268distance code017101110075103t_length;\n\n
23550000257distance code31000221558 s
23570000257distance code310018262874wit
235910000099normal bytec
23601101000104normal byteh
23611101101271distance code02700101983 ( code_lengths_node->code
2363101011269distance code32210115564652)\n {\n
236610000099normal bytec
236601111197normal bytea
23670000257distance code301111741198se
236901111049normal byte1
2370110000154normal byte6
237111110100058normal byte:
237201101266distance code01310003991935\n
237401101266distance code01311001399repeat_length
23761101100270distance code32601112551279 = read_bits_inv( stream,
2379101111050normal byte2
23800000257distance code3110114388 )
23821110001043normal byte+
23830011032normal byte
2384101111151normal byte3
238501101266distance code1141011984194;\n
2387110011098normal byteb
23880000257distance code3111100327rea
2390111110111107normal bytek
2391110001159normal byte;
2392101010268distance code01711001197\n case 1
23941110010055normal byte7
239511110001275distance code25311001197:\n repeat_length = read_bits_inv( stream,
2397101111151normal byte3
239811110000274distance code04311001197 ) + 3;\n break;\n case 1
2401110001056normal byte8
240211110001275distance code25311001197:\n repeat_length = read_bits_inv( stream,
24041110010055normal byte7
24050010259distance code511001197 ) +
240701111049normal byte1
240801111049normal byte1
24091101101271distance code22911001298;\n break;\n
241111101110125normal byte}
2412101001264distance code100100102358\n\n
241401010262distance code80101185697while (
241601101266distance code01300103094repeat_length
241801100265distance code01110119685064-- )\n
2421101011269distance code01910115764672 {\n if (
24241101100270distance code1241101116400code_lengths_node->code
2426110010061normal byte=
24270000257distance code310101763248= 1
2429110000154normal byte6
24301101101271distance code02710115944690 )\n {\n
243301010262distance code80110178946alphabet
243501000260distance code601114141438[ i ]
2438110010061normal byte=
243901101266distance code0131111101315 alphabet[ i
24400010259distance code501114091433- 1 ]
24431101100270distance code12410114404536;\n }\n
244601101266distance code01310117194815else\n
24481101110272distance code13200102185 {\n alphabet[ i ] =
2450101110148normal byte0
24511101100270distance code1240010569;\n }\n
2454100010105normal bytei
2454101001264distance code10101114825578++;\n
2457101010268distance code11810114774573 }\n }\n
246001100265distance code01111001298else\n
2462101001264distance code1000103094{\n
246401110267distance code11600102690alphabet[ i ] =
24651101100270distance code0231101056248code_lengths_node->code
2468101001264distance code1000102185;\n
2470100010105normal bytei
247101100265distance code112101115815677++;\n }\n
24731101101271distance code0270110128896\n code_lengths_node =
2476101011269distance code3220111681092&code_lengths_root;\n
247801101266distance code114101116285724 }\n }\n\n //
2481100100110normal byten
2482100101111normal byteo
248311101100119normal bytew
24840000257distance code3100051541, s
24861101010112normal bytep
24870001258distance code40111741098lit
24890001258distance code401113371361the
249101011263distance code901113121336alphabet
24930000257distance code310017642812in
2495101000116normal bytet
249611101100119normal bytew
2497100101111normal byteo
24980011032normal byte
24981101010112normal bytep
249901111197normal bytea
2500100110114normal byter
25010000257distance code310102623334ts
25030001258distance code410102453317and
25050010259distance code510018542902turn
250800111101normal bytee
250801111197normal bytea
25090000257distance code3011043811ch
251101001261distance code7101116385734into a
2513101010268distance code01701114071431huffman\n // tree
251601110267distance code015101117105806\n\n // Ok, now
251901101266distance code01300101478the alphabet
252001010262distance code810011142162lengths
25230010259distance code5101117295825have
2525110011098normal byteb
252600111101normal bytee
25270000257distance code31001922140en
25290001258distance code4010188600read
2531101110046normal byte.
25320011032normal byte
253201000260distance code610005092045 Turn
2535110010195normal byte_
25360010259distance code510005102046those
2538110010195normal byte_
253901000260distance code600011563\n //
254001001261distance code700103094into a
25420000257distance code310019563004val
25440001258distance code410018662914id r
25460010259distance code501112961320ange
2549100001100normal byted
254900111101normal bytee
255010000099normal bytec
2551100011108normal bytel
25510001258distance code4111014378629arat
25540001258distance code410019062954ion
25560001258distance code4001111139and
25580010259distance code510001531689build
256001000260distance code610116564752 the f
2563100010105normal bytei
2563100100110normal byten
256401111197normal bytea
2565100011108normal bytel
256601101266distance code114001110138 huffman\n //
25680010259distance code5010136548code
257001000260distance code610019793027from i
2572101000116normal bytet
2573101110046normal byte.
257401011263distance code91001302078\n j = 0;
2576101011269distance code01910004982034\n for ( i = 0; i <
2579110010061normal byte=
2580101001264distance code1001113231347 ( hlit +
2582101111050normal byte2
2583110000053normal byte5
25841110010055normal byte7
2585101010268distance code11810012332281 ); i++ )\n {\n
2587101011269distance code12010005112047if ( ( i > 0 ) && (
259001101266distance code1141101143427alphabet[ i ]
259211110010033normal byte!
2593101011269distance code019010193605= alphabet[ i - 1 ]
25961101110272distance code13210005032039 ) )\n {\n j++;\n }\n
259901110267distance code0151000811617alphabet_ranges
2601101011269distance code01910005002036[ j ].end = i;\n
2604101011269distance code2210000133alphabet_ranges[ j ].
260601101266distance code01310004972033bit_length =
260801101266distance code01300115133alphabet[ i ]
261001011263distance code910004932029;\n }\n\n
2612101011269distance code12010004311967build_huffman_tree(
261501101266distance code1141010613133literals_root,
26170011032normal byte
261811101010106normal bytej
2619101101044normal byte,
2620101010268distance code01710002091745 alphabet_ranges
262201000260distance code610004191955);\n\n
2625100010105normal bytei
2625101101145normal byte-
2626101101145normal byte-
2627110001159normal byte;
2628101010268distance code118010043299\n j = 0;\n for (
2630101001264distance code10010038294; i <= ( h
263201001261distance code71000991635dist +
263501011263distance code9010046302hlit + 25
2637110001056normal byte8
26371101101271distance code229010046302 ); i++ )\n {\n if ( ( i >
2640101100140normal byte(
26410010259distance code5010080336 257
264301001261distance code700001446+ hlit
26441110000041normal byte)
26451111111101279distance code3102010059315 ) && ( alphabet[ i ] != alphabet[ i - 1 ] ) )\n {\n j++;\n }\n alphabet_ranges[ j ].end = i
26480010259distance code51110011577301 - (
265101100265distance code1121100122118257 + hlit )
26531111111100277distance code1582010076332;\n alphabet_ranges[ j ].bit_length = alphabet[ i ];\n }\n\n build_huffman_tree(
265601101266distance code11410103263398distances_root
26591101101271distance code027010077333, j, alphabet_ranges );\n\n
266101000260distance code6101113725468free(
266401011263distance code90101252764alphabet
266601100265distance code011101113925488);\n free(
2668101011269distance code01900001547alphabet_ranges );\n
267011101110125normal byte}
2671101001264distance code10111016488840\n\n#define
267411110111077normal byteM
267511110100165normal byteA
2676111111011188normal byteX
2678110010195normal byte_
267911110101168normal byteD
268011110110173normal byteI
268111111001083normal byteS
268211111001184normal byteT
268311110100165normal byteA
268411110111178normal byteN
268511110101067normal byteC
26861110100069normal byteE
26870011032normal byte
26880011032normal byte
2689101111151normal byte3
2690101111050normal byte2
26901110010055normal byte7
2691110000154normal byte6
2692110001056normal byte8
269301011263distance code9111012778469\n\nstatic
26960010259distance code510103923464int i
2698100100110normal byten
26991100111102normal bytef
2700100011108normal bytel
270101111197normal bytea
2701101000116normal bytet
270200111101normal bytee
270301011263distance code9001122150_huffman_
27050010259distance code5111005186662codes
270711110001275distance code65710106203692( bit_stream *stream, \n
27101111111011276distance code46310106153687huffman_node *literals_root,\n
271411101111273distance code03510106103682huffman_node *distances_root )\n{\n
2717101011269distance code322111005376681huffman_node *node;\n
27200001258distance code4110109201int
2722100111115normal bytes
2722101000116normal bytet
2723100101111normal byteo
27241101010112normal bytep
272501010262distance code81110018988042_code =
2727101110148normal byte0
2728101011269distance code22110119935089;\n unsigned char buf
273111111010191normal byte[
273201101266distance code114010013269 MAX_DISTANCE
2734101011269distance code0191110112879479];\n unsigned char
27371110000142normal byte*
27381101010112normal bytep
2739101000116normal bytet
2740100110114normal byter
27410000257distance code300011462 =
27420010259distance code5101110375133buf;\n
274501001261distance code700102286\n int
274601000260distance code61110113069498extra_
274901001261distance code710016442692length_
275201111197normal bytea
2752100001100normal byted
2753100001100normal byted
27540000257distance code3010127539end
275601000260distance code610104733545[] = {
275801000260distance code6010015271 \n
27600001258distance code41010440351211,
27620001258distance code41010430350213,
276501111049normal byte1
2765110000053normal byte5
276601001261distance code710104823554, 17, 1
27690000257distance code3101047035429,
2771101111050normal byte2
27720001258distance code4101044635183, 2
27741110010055normal byte7
277501000260distance code61101048240,\n
2777101111151normal byte3
27780000257distance code31111007311,
2780101111151normal byte3
27800000257distance code31111003275,
27821110001152normal byte4
27830000257distance code3110003193,
2785110000053normal byte5
27850000257distance code311111003111,
2787110000053normal byte5
27880001258distance code4101050235749, 6
27900000257distance code300007397,
2792110001056normal byte8
2793101111151normal byte3
279301000260distance code6111100731,\n
27951110010157normal byte9
27961110010157normal byte9
27970001258distance code410105083580, 11
27990001258distance code4000112605, 1
28010001258distance code4000094131,
280201111049normal byte1
2803110000154normal byte6
28040001258distance code4001010743, 1
28061110010157normal byte9
28070000257distance code311111012145,
2808101111050normal byte2
2809101111050normal byte2
28101110010055normal byte7
28110001258distance code411001096 \n
281311101110125normal byte}
2814110001159normal byte;
281501101266distance code01300116134\n int extra_
28170001258distance code4010018274dist
281901101266distance code01300114132_addend[] = {
28210010259distance code50010367\n
28221110001152normal byte4
28230010259distance code510105853657, 6,
2825110001056normal byte8
282601000260distance code610105743646, 12,
28290001258distance code41010619369116,
2831101111050normal byte2
28320000257distance code3110001174,
2833101111151normal byte3
28340000257distance code311111003112,
28361110001152normal byte4
2837110001056normal byte8
283801000260distance code6110014100,\n
2840110000154normal byte6
28400000257distance code311111013154,
28421110010157normal byte9
28430001258distance code4101062036926, 1
2845101111050normal byte2
28460001258distance code400004368, 1
28481110010157normal byte9
28490000257distance code31111001252,
2850101111050normal byte2
2851110000053normal byte5
28520000257distance code311111012146,
2854101111151normal byte3
2855110001056normal byte8
28551110001152normal byte4
285601000260distance code6111100731,\n
2858110000053normal byte5
28590001258distance code4000185612,
28610000257distance code3010125537768
28630001258distance code410106543726, 10
28650001258distance code40001115924,
286601111049normal byte1
2867110000053normal byte5
2868101111151normal byte3
28690001258distance code400105696, 2
2870101110148normal byte0
287101010262distance code80001156348,\n
2873101111151normal byte3
2874101110148normal byte0
28751110010055normal byte7
28760001258distance code4001013772, 4
2877101110148normal byte0
28780001258distance code4001036796,
2880110000154normal byte6
288101111049normal byte1
28811110001152normal byte4
28820000257distance code300001334,
2884110001056normal byte8
28850001258distance code40010569192,
288601000260distance code601000256\n 1
2888101111050normal byte2
2889101111050normal byte2
2890110001056normal byte8
2891110001056normal byte8
28920010259distance code5001157185, 163
28940000257distance code30010137784,
28950000257distance code31100125121 24
2897110000053normal byte5
28981110010055normal byte7
2899110000154normal byte6
290001001261distance code7001156184 \n };\n
2902101100010normal byte\n
290301011263distance code9111001846328 node =
290501101266distance code01301018520literals_root
290701101266distance code01310116544750;\n\n while (
291011110010033normal byte!
2911101001264distance code101101153437stop_code
291301110267distance code01501102461014)\n {\n if (
29161100111102normal bytef
29170010259distance code510017332781eof(
2919101010268distance code017101110035099stream->source )
292201110267distance code015111009897133)\n {\n f
29241101010112normal bytep
2925100110114normal byter
29260000257distance code3010028284int
29280010259distance code50000739f( st
2929100001100normal byted
293000111101normal bytee
2931100110114normal byter
2931100110114normal byter
2932101101044normal byte,
29330011032normal byte
29341101111034normal byte"
29351111111110080normal byteP
2936100110114normal byter
293700111101normal bytee
29371101001109normal bytem
293801111197normal bytea
2939101000116normal bytet
29400001258distance code4111017068898ure
29420001258distance code40110196964end
29440000257distance code310104233495of
29470001258distance code41110114329624file
2949101110046normal byte.
29501111111111092normal byte\
2952100100110normal byten
295201100265distance code011101110025098" );\n
295501001261distance code710114634559return
295701111049normal byte1
2958101010268distance code11810015652613;\n }\n\n if (
29611101110272distance code23310017302778next_bit( stream ) )\n {\n
296401001261distance code71101015207node =
296611101111273distance code33810017042752node->one;\n }\n else\n {\n
296901101266distance code01300001244node = node->
2971101011269distance code32210016782726zero;\n }\n\n if (
29731101110272distance code03110016652713node->code != -1 )\n {\n
29760000257distance code310001221658//
297811110110070normal byteF
2979100101111normal byteo
29801101011117normal byteu
2981100100110normal byten
29820010259distance code5101111685264d a l
29840001258distance code41110113779569eaf
2987100010105normal bytei
298801000260distance code6111018529044n the
29900010259distance code51110110329224tree;
29930001258distance code410001931729 dec
29950001258distance code40001755ode
299701111197normal bytea
29970011032normal byte
2998100111115normal bytes
299911101101121normal bytey
30001101001109normal bytem
3001110011098normal byteb
3001100101111normal byteo
3002100011108normal bytel
300301001261distance code70001250\n
3005101011269distance code019111004926636assert( node->code
30081110011060normal byte<
30090011032normal byte
3009101111050normal byte2
3010110001056normal byte8
3011110000154normal byte6
30120001258distance code401113481372 );
301401100265distance code011111019359127 // should
3017100100110normal byten
301800111101normal bytee
301811101011118normal bytev
30190001258distance code411101195810150er h
302201111197normal bytea
30231101010112normal bytep
30231101010112normal bytep
30240000257distance code310003111847en
3026101100140normal byte(
3027111111001163normal byte?
30291110000041normal byte)
3030101001264distance code101100116112\n //
303201011263distance code91110114829674leaf node
3034110001159normal byte;
30350001258distance code41110110289220 out
30380001258distance code410117054801put
3040100010105normal bytei
3041101000116normal bytet
304201100265distance code11210018082856\n if (
304401101266distance code11400102488node->code < 2
3046110000053normal byte5
3047110000154normal byte6
3048101011269distance code01910017962844 )\n {\n
30511110000142normal byte*
3052101100140normal byte(
30520000257distance code3011070838ptr
30541110001043normal byte+
30551110001043normal byte+
30561110000041normal byte)
305701011263distance code91101060252 = node->
305901100265distance code11210011072155code;\n
306211101110125normal byte}
30631101100270distance code02300101276\n if ( node->code
3065110010061normal byte=
3066110010061normal byte=
30671101100270distance code02300101377 256 )\n {\n
306901100265distance code1120110215983stop_code =
307101100265distance code011100154025881;\n
307401101266distance code01310015362584break;\n
30761101100270distance code12400102084}\n if ( node->code
30791110011162normal byte>
30801101100270distance code02300101983 256 )\n {\n
308201001261distance code711101181410006int len
308501011263distance code91110110059197gth;\n
308701010262distance code811000319 int
308901010262distance code810116874783dist;\n
3092101001264distance code1011000117 int
309301000260distance code60110119887extra_
309501010262distance code81110113899581bits;\n
309801011263distance code9010037293 //
310001010262distance code8111004486592This is
310301111197normal bytea
31040011032normal byte
31040001258distance code4101118165912back
3107101101145normal byte-
31071101010112normal bytep
3108100101111normal byteo
31090000257distance code300001143int
31110000257distance code3010080336er
31120010259distance code510011022150to a
311501011263distance code911100336177position
311701001261distance code71101146430in the
311901000260distance code6010175587stream
312201100265distance code11200011361\n //
312311110110173normal byteI
31240001258distance code400001244nter
31260000257distance code310106173689pre
3128101000116normal bytet
312901100265distance code1121011834179 the length
31320010259distance code5101116325728here
313401110267distance code116101110695165as specified in
31370001258distance code41011106151573.2.
3139110000053normal byte5
3140101001264distance code10001116144\n i
3142101010268distance code118110110384f ( node->code < 2
3144110000154normal byte6
3145110000053normal byte5
31461101100270distance code02310017522800 )\n {\n
314901011263distance code910001401676length =
315101100265distance code01100001547node->code
31530001258distance code4111008076951- 25
31551110001152normal byte4
315611110000274distance code7501110013997543;\n }\n else\n {\n if (
316001110267distance code015010175587node->code < 28
3162110000053normal byte5
31631101101271distance code02710018092857 )\n {\n
3166101001264distance code10010046302extra_bits
31681101100270distance code326100110003048 = read_bits_inv( stream,
3171101100140normal byte(
317201110267distance code015001118146 node->code - 2
3174110000154normal byte6
31740001258distance code41011163657321 )
317711110011147normal byte/
317801011263distance code910116274723 4 );\n\n
3180101011269distance code019110102194 length =
318301100265distance code01100102185extra_bits
31851110001043normal byte+
3186101011269distance code22101114001424 extra_length_addend[
318801110267distance code11600101781 node->code - 26
3190110000053normal byte5
319111110001275distance code45510019142962 ];\n }\n else\n {\n
319401011263distance code91100117113length =
31960000257distance code310011422190258
3198101011269distance code3220010064;\n }\n
320001100265distance code01110101283200}\n\n
32030010259distance code501016518// Th
320501011263distance code91101162446e length
3207100010105normal bytei
3208100111115normal bytes
320901001261distance code71110012267370 follow
32110000257distance code31101156440ed
3213110011098normal byteb
321411101101121normal bytey
321501000260distance code611101261810810 the d
321801001261distance code710001921728istance
3220101110046normal byte.
322101110267distance code1160001250\n // The
322301010262distance code8111100024distance
32240001258distance code40001452 is
322601000260distance code610111554251coded
32280000257distance code311011106490in
3230110000053normal byte5
32310010259distance code5101116335729 bits
323401000260distance code611100156159, and
32361101001109normal bytem
323701111197normal bytea
323811101101121normal bytey
32390000257distance code310017222770 be
324101100265distance code1120001654\n //
324301100265distance code11200102791followed by
32450010259distance code501001257extra
324701000260distance code611100776221 bits
324911101111273distance code035010147559as specified in 3.2.5\n if (
325201110267distance code01510003261862distances_root
32550000257distance code30110103871==
325711110111178normal byteN
325811111010085normal byteU
3259111111011076normal byteL
3260111111011076normal byteL
32611101100270distance code023010153565 )\n {\n
32640000257distance code3110019105//
3266111111010172normal byteH
326701111197normal bytea
3268100110114normal byter
3268100001100normal byted
326901000260distance code6001120148coded
327101011263distance code90001957distances
327301100265distance code0110000032\n
327401110267distance code116101111175213dist = read_bits
3277101010268distance code017101111135209( stream, 5 );\n
328001110267distance code116010048304 }\n
32821101100270distance code225010190602else\n {\n
32850000257distance code31100110106//
328611110101168normal byteD
328701000260distance code6101117685864ynamic
3290101011269distance code221110018104 distances\n
329201001261distance code701113171341node =
329401101266distance code114001161189distances_root
329601100265distance code1121101119403;\n
329901010262distance code81000661602while (
3301101010268distance code1181110017507894node->code == -1 )
33041101100270distance code2251101194478\n {\n
33061101101271distance code33001114841508if ( next_bit( stream ) )\n
3309101011269distance code3220001351 {\n
33111101100270distance code12401115001524 node = node->one;\n
3314101010268distance code1181101041233 }\n
3316101010268distance code0171101045237 else\n
33181101110272distance code23300101276 {\n node = node->
332101101266distance code1141110019758119zero;\n
332301110267distance code11600101377 }\n
332511101110125normal byte}
3326101010268distance code1180100118374\n dist =
3329101011269distance code12010104423514node->code;\n
333101100265distance code0110101145657}\n\n
333401011263distance code911011111495if ( dist
33360000257distance code301112481272 >
3338101111151normal byte3
33391101100270distance code12410107763848 )\n {\n i
334201101266distance code0131001762124nt extra_dist
33441101101271distance code1280110165933 = read_bits_inv( stream, (
33470010259distance code5111100731dist
3348101101145normal byte-
33490010259distance code51011914187 2 )
335211110011147normal byte/
33530001258distance code411111111115 2 )
335401101266distance code0130110157925;\n\n
33570000257distance code31101161445//
33591110100069normal byteE
33601101001109normal bytem
3361110011098normal byteb
336100111101normal bytee
336201001261distance code710118984994d the l
3365100101111normal byteo
336511101001103normal byteg
33660010259distance code510015902638ic in
336901000260distance code610001571693 the t
33710010259distance code5101113835479able
337301111197normal bytea
337401000260distance code601112191243t the
337601001261distance code710003881924end of
337801101266distance code11401011506623.2.5\n
338101011263distance code91101014206 dist =
338301100265distance code01100117135extra_dist
33851110001043normal byte+
3386101011269distance code01910012252273 extra_dist_addend[
338801010262distance code800111129 dist -
33901110001152normal byte4
339101100265distance code1120110205973 ];\n
339401110267distance code0150110128896}\n\n // T
33960001258distance code4111009477091ODO
33980000257distance code310014422490cha
34010001258distance code410104663538nge
34030001258distance code41110012607404buf
340501001261distance code710104893561into a
340810000099normal bytec
3408100010105normal bytei
3409100110114normal byter
341010000099normal bytec
34111101011117normal byteu
34120000257distance code310104793551lar
341401000260distance code6101114355531 array
34160011032normal byte
3417100111115normal bytes
34180001258distance code41110019448088o th
342001111197normal bytea
342101100265distance code01110002011737t it\n
342301000260distance code610104693541 // c
342601111197normal bytea
3426100100110normal byten
34270000257distance code310002571793 ha
3429100100110normal byten
3430100001100normal byted
3431100011108normal bytel
343200111101normal bytee
34320010259distance code51001362084 file
3434100111115normal bytes
34350001258distance code4001140168 of
34370001258distance code410118534949size
34390001258distance code4010060316 > 3
34410001258distance code4100180728552768
34430010259distance code51110012737417 byte
3446100111115normal bytes
3447101011269distance code221010068324\n {\n
344901110267distance code01510015652613unsigned char *
34520001258distance code4100031539back
345401000260distance code610015692617ptr =
34560001258distance code411111111115ptr
3458101101145normal byte-
345901010262distance code8001155183 dist -
346101111049normal byte1
346101101266distance code013010049305;\n\n
346301010262distance code80101175687while (
3466101011269distance code01910111684264length-- )\n
346801110267distance code116010138550 {\n
34710000257distance code3001128156//
347211110111178normal byteN
3474100101111normal byteo
3474101000116normal bytet
347500111101normal bytee
347601000260distance code6001152180 that
34780001258distance code400101882ptr
34791101111138normal byte&
34800011032normal byte
348101010262distance code811001298backptr
34830001258distance code4001152180can
3484100101111normal byteo
34850000257distance code310004431979ver
3487100011108normal bytel
348801111197normal bytea
34891101010112normal bytep
349001101266distance code0130001250\n
349101100265distance code01110003711907*(ptr++) =
34941110000142normal byte*
3495101100140normal byte(
349601001261distance code700001244backptr
34970000257distance code31111101214++)
34991101100270distance code12401111961220;\n }\n }\n
350201101266distance code1141111110117 }\n
3504101011269distance code32210014222470node = literals_root;\n
350601010262distance code80000133 }\n
35080010259distance code50100113369}\n\n
351001001261distance code710017932841*ptr =
35120001258distance code4101115065602'\0'
35150001258distance code4111100125;\n
351601010262distance code810013752423printf(
35191101111034normal byte"
352011110010137normal byte%
3521100111115normal bytes
35210000257distance code310013472395\n"
3524101101044normal byte,
35250010259distance code50100123379 buf
352601000260distance code6010132544);\n\n
352901001261distance code710013492397return
3531101110148normal byte0
353201101266distance code013111008046948;\n}\n\n/** \n *
353511110101168normal byteD
353600111101normal bytee
353601011263distance code9111012218413compress
353901111197normal bytea
3540100100110normal byten
354101001261distance code7111007926936 input
354301001261distance code70110125893stream
35450001258distance code4111100024comp
3547100011108normal bytel
3548100010105normal bytei
354801111197normal bytea
35490000257distance code30101149661nt
35510000257distance code31101157441to
355301011263distance code9111013148506RFC 1951
35560000257distance code310101893261def
3558100011108normal bytel
35590010259distance code510109243996ation
356101101266distance code013111012568448.\n */\nstatic
356401100265distance code01110101763248int inflate
3567101100140normal byte(
356701001261distance code71110020008144 FILE *
3570101001264distance code101110014907634compressed
3573110010195normal byte_
357401000260distance code600102286input
357501000260distance code61010383110)\n{\n
35780000257distance code3010065321//
35800001258distance code4111009697113bit
3582110001056normal byte8
35830011032normal byte
3584100111115normal bytes
35840010259distance code510111204216et in
3587100001100normal byted
3588100010105normal bytei
358810000099normal bytec
35890000257distance code30001351ate
3591100111115normal bytes
359101000260distance code6010080336 that
359301010262distance code8101115595655this is
35960010259distance code50101185697the l
359801111197normal bytea
35990000257distance code31101141425st
3601110011098normal byteb
3601100011108normal bytel
3602100101111normal byteo
360310000099normal bytec
3604111110111107normal bytek
360501011263distance code90001452\n // bit
3606100111115normal bytes
36070011032normal byte
36081110010055normal byte7
36090000257distance code30100111367 &
3611110000154normal byte6
361201011263distance code90001553 indicate
361301100265distance code11211110137112659 compression
36160011032normal byte
36170001258distance code411101888280type
3619101010268distance code1181010903162\n unsigned char b
36220001258distance code400011563lock
3624110010195normal byte_
36240000257distance code310107353807for
36270000257distance code310016332681mat
36290010259distance code5101117655861;\n b
3631101001264distance code1010103163388it_stream
363401010262distance code81110198201stream;\n
363701001261distance code710011142162 int l
36390000257distance code31100113109ast
3641110010195normal byte_
36420010259distance code500001345block
3643101010268distance code017111006106754;\n huffman_node
3646101010268distance code0170100123379literals_root;\n
364801101266distance code013111100529huffman_node
365001110267distance code11601112611285distances_root;\n
3652101100010normal byte\n
365301010262distance code81110018547998 stream
3656101110046normal byte.
365701001261distance code710017922840source
3659110010061normal byte=
36600011032normal byte
366101110267distance code11601008264compressed_input
366301001261distance code710105443616;\n fre
366501100265distance code0111110018608004ad( &stream
3668101110046normal byte.
366901100265distance code0111110018598003buf, 1, 1,
3672101010268distance code118010054310compressed_input )
3674110001159normal byte;
3675101001264distance code1000101983\n stream.
367701101266distance code0131110019378081mask = 0x01;\n
36790000257distance code311000622\n
3681100001100normal byted
3682100101111normal byteo
368201011263distance code910019222970\n {\n
3685101001264distance code10110101193last_block
368701101266distance code0131110013637507 = next_bit(
36901101111138normal byte&
369101110267distance code0151110013647508stream );\n b
369301100265distance code011010016272lock_format
3695101010268distance code1180111971121 = read_bits_inv(
36981101111138normal byte&
369901100265distance code011101112055301stream, 2 )
370201001261distance code7011033801;\n\n
370401011263distance code9101113305426switch (
370601101266distance code0130001957block_format
370801110267distance code015101116225718)\n {\n c
37110001258distance code4101111155211ase
37130000257distance code30011191470x0
3715101110148normal byte0
3716101001264distance code10101111175213:\n
371801011263distance code90101133645printf( "
372011111010085normal byteU
3721100100110normal byten
372201100265distance code0111110020108154compressed
37250010259distance code50010367block
372701101266distance code114100110103058.\n" );\n
3729101011269distance code1201010413113 fprintf( stderr, "
37321101011117normal byteu
3733101010268distance code0170001351ncompressed block
37350010259distance code51101193477 type
37370000257distance code3011012780 no
37390000257distance code30101155667t s
37411101011117normal byteu
37411101010112normal bytep
37421101010112normal bytep
3743100101111normal byteo
3744100110114normal byter
3745101000116normal bytet
374500111101normal bytee
3746100001100normal byted
374701110267distance code1160010670.\n" );\n
374901101266distance code1141010593131return 1;\n
37510010259distance code51101043235 b
375301100265distance code11210016472695reak;\n
375601001261distance code70110184952// Note
3758101101044normal byte,
37590011032normal byte
375901011263distance code9111013028494backwards
376201100265distance code0111110020318175 from the s
37650000257distance code310004231959pec
37670001258distance code4111002856429, si
37690001258distance code410005032039nce
377101011263distance code9111013578549the bits
377401111197normal bytea
3775100110114normal byter
37760001258distance code410116994795e be
37780001258distance code4111001516295ing
37810001258distance code4010036292read
3782101001264distance code100010569\n //
3784100110114normal byter
3785100010105normal bytei
378611101001103normal byteg
37871101000104normal byteh
3788101000116normal bytet
3788101101145normal byte-
3789101000116normal bytet
3790100101111normal byteo
3791101101145normal byte-
3792100011108normal bytel
379200111101normal bytee
37931100111102normal bytef
3794101000116normal bytet
3795101110046normal byte.
379601110267distance code01501001257\n case 0x0
379801111049normal byte1
3798101001264distance code1001001257:\n
380101011263distance code9111003986542memset( &
380301110267distance code01510114054501literals_root,
380611101111273distance code5401110116749866'\0', sizeof( huffman_node ) );\n
38091101100270distance code3261110111019293build_fixed_huffman_tree(
381301101266distance code11400101781&literals_root
381401100265distance code1120001351 );\n
38161101100270distance code0231011504146inflate_huffman_codes(
381901011263distance code91101186470&stream,
382101110267distance code116001111139&literals_root,
382301000260distance code610011102158NULL )
38261101100270distance code023010049305;\n break;\n
382801010262distance code81101019211case 0x0
3830101111050normal byte2
38311111111100277distance code7741101019211:\n memset( &literals_root, '\0', sizeof( huffman_node ) );\n
383401011263distance code900011563memset( &
383601110267distance code11610113484444distances_root,
383811101111273distance code5400010064'\0', sizeof( huffman_node ) );\n
38411101101271distance code0271110019248068read_dynamic_huffman_tree(
38441101100270distance code2251101036228&stream, &literals_root,
38471101111138normal byte&
384801110267distance code11610111734269distances_root )
385011110001275distance code758010047303;\n inflate_huffman_codes( &stream, &literals_root,
38531101101271distance code02700101074&distances_root );\n
385501101266distance code013010058314break;\n
38570000257distance code301112911315def
385901111197normal bytea
38601101011117normal byteu
3861100011108normal bytel
3862101000116normal bytet
386311110100058normal byte:
38641101101271distance code0270101227739\n fprintf( stderr, "
38660010259distance code5111017668958Error
3869101101044normal byte,
38700001258distance code401111741198 uns
387201010262distance code80101208720upported
387401100265distance code1120101233745 block type
387611110010137normal byte%
3877111111000120normal bytex
3879101110046normal byte.
387901000260distance code601114441468\n", b
388201101266distance code0130110116884lock_format )
388411101111273distance code4390101236748;\n return 1;\n break;\n
388701010262distance code811110128812576}\n }\n
389001011263distance code910109694041while ( !
389201100265distance code0110111261050last_block
3894101011269distance code019100091545);\n\n return 0;\n}\n\n
389701100265distance code11210116554751#define MAX_
3900111111010066normal byteB
390111111010085normal byteU
390211110110070normal byteF
39030001258distance code41110115849776 255
390601110267distance code1161110113109502\n\n/**\n * Read a
3909100100110normal byten
39091101011117normal byteu
3910100011108normal bytel
3911100011108normal bytel
3912101101145normal byte-
39130000257distance code301009265ter
39151101001109normal bytem
3915100010105normal bytei
3916100100110normal byten
39170010259distance code5111101186914157ated
392001000260distance code6111101193914227string
392301000260distance code6011064832 from
392501111197normal bytea
392501000260distance code610109674039 file.
39280011032normal byte
39280011032normal byte
392911110111178normal byteN
39300000257distance code30000436ull
39320011032normal byte
3932101001264distance code100000436terminated
39340001258distance code400011462\n *
393601000260distance code60000739string
39370010259distance code511101189610088s in
394001000260distance code610004551991files
3942100111115normal bytes
39431101011117normal byteu
39440000257distance code301102551023ck.
394601110267distance code1161000551591\n */\nstatic int
39480010259distance code51101184468read_
395001000260distance code600001042string
395201010262distance code81000591595( FILE *
3954100010105normal bytei
3955100100110normal byten
3955101101044normal byte,
395601110267distance code11610004571993 unsigned char *
39591110000142normal byte*
3960101000116normal bytet
396001111197normal bytea
3961100110114normal byter
396211101001103normal byteg
396300111101normal bytee
396401010262distance code81000691605t )\n{\n
39661101100270distance code02310115774673unsigned char buf[ MAX_
39690001258distance code4001163191BUF
3971101011269distance code12010115724668];\n unsigned char *
39730000257distance code30000032buf
3975110010195normal byte_
39760000257distance code310002941830ptr
397801000260distance code61110114179609;\n\n b
398101000260distance code61111100311uf_ptr
398201100265distance code01110115884684 = buf;\n\n
398501010262distance code810011732221// TODO
3987100001100normal byted
398800111101normal bytee
398901111197normal bytea
3990100011108normal bytel
39900010259distance code51110113739565 with
399301011263distance code9001156184 strings
39951110011162normal byte>
399601010262distance code800102185 MAX_BUF
399801101266distance code11401113631387\n do\n {\n
400001100265distance code1121110112879479if ( fread(
400301001261distance code700101478buf_ptr
400501010262distance code801114461470, 1, 1,
40070000257distance code31101042234in
400911110000274distance code0431110112709462) < 1 )\n {\n perror( "Error reading
401201001261distance code7010072328string
40140010259distance code5111016998891value
40171101101271distance code02710112634359" );\n return 1;\n }\n
402001101266distance code1141101179463 }\n while (
40221110000142normal byte*
402301011263distance code91100120116( buf_ptr
40250001258distance code4101114265522++ )
402701001261distance code71101182466 );\n\n
402901010262distance code8010030286*target
40310001258distance code4101114725568= (
403401110267distance code0151101060252unsigned char *
403601100265distance code0111110012037347 ) malloc(
403901010262distance code81101059251buf_ptr
4041101101145normal byte-
404201010262distance code81001222070 buf );\n
40440010259distance code51000891625 str
404610000099normal bytec
40471101010112normal bytep
404811101101121normal bytey
4049101100140normal byte(
405001010262distance code80010064 *target
40511101101271distance code1281001482096, buf );\n\n return 0;\n}\n\n/**
40540001258distance code41101182466\n *
405611111001083normal byteS
40570000257distance code3001149177tri
40591101010112normal bytep
40600000257distance code310013992447 of
40621100111102normal bytef
40630001258distance code41001462094 an
406501001261distance code71001202068RFC 195
4068101111050normal byte2
4069101101145normal byte-
4069101001264distance code101001422090compliant
40720010259distance code51110117169908gzip
40750001258distance code411011108492file
407701010262distance code8111101243514723 header
40790000257distance code310014542502and
40820001258distance code40001755\n *
4083100001100normal byted
4084101001264distance code1010011032151ecompress
40860000257distance code31001772125to
40890000257distance code301106774std
4091100101111normal byteo
40911101011117normal byteu
4092101000116normal bytet
4093101001264distance code101110113539545.\n */\nint
40960001258distance code4111101245714745main
409901000260distance code61110014187562( int
41010000257distance code300114132arg
41030000257distance code301113951419c,
410501000260distance code6001156184char *
41070000257distance code31111100311arg
410911101011118normal bytev
411011111010191normal byte[
41110010259distance code511110134812636 ] )\n
41140001258distance code4010070326{\n
411501010262distance code8010125537FILE *in
41180001258distance code4001152180;\n
411901011263distance code9111101200814296gzip_file
41220010259distance code5111110019 gzip
41240010259distance code5001144172;\n\n
41260001258distance code4111110008gzip
4127101110046normal byte.
412801000260distance code610103833455extra
413001000260distance code610103273399= NULL
413301010262distance code80000739;\n gzip
4134101110046normal byte.
41350010259distance code5111101221814506fname
4138101010268distance code01711000420 = NULL;\n gzip.f
414001001261distance code7111101221514503comment
414301011263distance code911000723 = NULL;\n
4144101100010normal byte\n
414501001261distance code71101186470 if (
41470001258distance code400110128argc
41490001258distance code410108443916 < 2
415101100265distance code01110117574853 )\n {\n
4154101010268distance code1180110189957fprintf( stderr, "
415611111010085normal byteU
4158100111115normal bytes
415801111197normal bytea
415911101001103normal byteg
416000111101normal bytee
416111110100058normal byte:
41620011032normal byte
416211110010137normal byte%
4164100111115normal bytes
41640011032normal byte
41651110011060normal byte<
41660001258distance code400101377gzip
41681101010112normal bytep
416801010262distance code81110117189910ed input
41710010259distance code51101057249 file
41731110011162normal byte>
41740010259distance code50110186954\n",
417601000260distance code6001160188argv[
4178101110148normal byte0
41790001258distance code4001162190 ] )
418101000260distance code61101170454;\n
41830001258distance code41110117079899exit
41850001258distance code411101374611938( 1
4188101001264distance code10111012718463);\n }\n\n
4191100010105normal bytei
41920001258distance code4111014878679n =
41941100111102normal bytef
4195100101111normal byteo
41961101010112normal bytep
419700111101normal bytee
4197100100110normal byten
4198101100140normal byte(
419901001261distance code700001446 argv[
420101111049normal byte1
42010011032normal byte
420211111011093normal byte]
42030000257distance code300102993, "
4205100110114normal byter
420501001261distance code7010110522" );\n
420801010262distance code8001118146\n if (
420911110010033normal byte!
4211100010105normal bytei
4211100100110normal byten
42121101101271distance code330001113141 )\n {\n fprintf( stderr, "U
421401000260distance code6111013208512nable
42170000257distance code3010087343to
42190001258distance code400101175open
422101000260distance code60100125381 file
422311110011039normal byte'
422411110010137normal byte%
4225100111115normal bytes
422611110011039normal byte'
42270010259distance code5101120086104 for
422901001261distance code70101106618reading
4231101110046normal byte.
423201100265distance code011001120148\n", argv[
423401111049normal byte1
42351101101271distance code128001120148 ] );\n exit( 1 );\n }\n\n
423701010262distance code8011012780// TODO
4239100101111normal byteo
42401101011117normal byteu
42410000257distance code310002311767ght
42430001258distance code400101983 to
424501100265distance code011011021789deal with s
42470010259distance code5111101250214790hort
42500001258distance code400101680read
4251100111115normal bytes
42520010259distance code510112754371 here
4255101100010normal byte\n
425501101266distance code11401109777 if ( fread(
42581101111138normal byte&
42590010259distance code5010088344gzip.
426101000260distance code611011118502header
4263101001264distance code1001114601484, sizeof(
426501100265distance code112111101268414972gzip_header
42681110000041normal byte)
4269101010268distance code118011034802, 1, in ) < 1 )\n
427101000260distance code61101019211{\n
42731101100270distance code023011030798perror( "Error reading
427601000260distance code60001654header
427801011263distance code9011024792" );\n
428011101001103normal byteg
4281100101111normal byteo
42820001258distance code4001114142to d
428301001261distance code710104873559one;\n
428611101110125normal byte}
4287101100010normal byte\n
428801011263distance code9111001336277 if ( (
429001100265distance code0111100123119gzip.header
4292101110046normal byte.
42930001258distance code4111101297515263id[
4296101110148normal byte0
429701000260distance code6111001136257 ] !=
4299101110148normal byte0
4300111111000120normal bytex
430101111049normal byte1
43021100111102normal bytef
43030001258distance code411101182810020 ) |
43061111111010124normal byte|
4307101011269distance code0190000234 ( gzip.header.id[
430901111049normal byte1
431001010262distance code80000234 ] != 0x
4311110001056normal byte8
4312110011098normal byteb
431301101266distance code0131110018638007 ) )\n {\n
4316101010268distance code118010092348fprintf( stderr, "
431811110110173normal byteI
43190010259distance code51101187471nput
43210001258distance code410011222170not
43230000257distance code3001155183in
432501000260distance code60101221733gzip f
43270010259distance code501113981422ormat
432901100265distance code11210011272175.\n" );\n
4332101011269distance code322001124152goto done;\n }\n if (
433401100265distance code1121100119115gzip.header.
4336101010268distance code118111101310115389compression_method
43390001258distance code41100130126 !=
4341110001056normal byte8
43421101110272distance code0311101186470 )\n {\n fprintf( stderr, "Un
4344100110114normal byter
43450000257distance code3011052820eco
434711101001103normal byteg
4348100100110normal byten
43490000257distance code3010072328ize
4351100001100normal byted
435201101266distance code01310017462794 compression
435401000260distance code60010064method
43561101101271distance code02700110128.\n" );\n goto done;\n }\n
4358101011269distance code12000111129\n if ( gzip.header.
43600010259distance code5111101313815426flags
43630000257distance code310018302878 &
436501001261distance code7111101276915057FEXTRA
4368101001264distance code101100124120)\n {\n
437001010262distance code811011112496// TODO
43720001258distance code410012612309spec
43750000257distance code310019162964 se
43770000257distance code310004181954ems
43790001258distance code411011117501 to
438101011263distance code910018672915indicate
438301101266distance code01310019202968that this is
43860000257distance code310002711807lit
4388101000116normal bytet
4389100011108normal bytel
439000111101normal bytee
4390101101145normal byte-
43910000257distance code310105143586end
43930000257distance code301102361004ian
4395110001159normal byte;
439601010262distance code800011462\n //
43981101000104normal byteh
4399101000116normal bytet
4399100101111normal byteo
4400100100110normal byten
440101000260distance code6111019529144s for
4404110011098normal byteb
4405100010105normal bytei
440511101001103normal byteg
440601001261distance code7111100428-endian
44080000257distance code30110210978 ma
441010000099normal bytec
44111101000104normal byteh
44120000257distance code31000861622ine
4414100111115normal bytes
4415111111001163normal byte?
4416101010268distance code01701113051329\n if ( fread(
441801000260distance code6010139551&gzip.
44200001258distance code4111101318315471xlen
442301000260distance code61110113559547, 2, 1
442611110000274distance code54801113081332, in ) < 1 )\n {\n perror( "Error reading
44290010259distance code50110228996extra
4431100111115normal bytes
443201001261distance code710104293501 length
443401100265distance code01101113091333" );\n
443601101266distance code01301004260goto done;\n
443901010262distance code810103223394 }\n
444101101266distance code0130111221046gzip.extra =
44431101101271distance code12801112821306( unsigned char * ) malloc(
444601011263distance code9001120148gzip.xlen
444801010262distance code800101680 );\n
445001100265distance code112001150178if ( fread(
4452101001264distance code100010569gzip.extra
4454101101044normal byte,
44540011032normal byte
445501100265distance code011001161189gzip.xlen,
445711110001275distance code4550011581861, in ) < 1 )\n {\n perror( "Error reading extras
44601101110272distance code132001151179" );\n goto done;\n }\n
446201010262distance code81101117401// TODO
4464100010105normal bytei
446501101266distance code013101111645260nterpret the
446801000260distance code6110104196extra
4470100001100normal byted
447001111197normal bytea
4471101000116normal bytet
447201111197normal bytea
447301110267distance code1160110170938\n }\n\n // TODO
44750000257distance code3001141169if
447701000260distance code6111101321615504FNAME
44790000257distance code3110019105or
448101010262distance code8111101320215490FCOMMENT
4484101101044normal byte,
4485101010268distance code01710004361972 null-terminated
44870010259distance code501112611285name
4490100101111normal byteo
44900010259distance code5111101375216040r com
44930001258distance code401112481272ment
4495100111115normal bytes
4496101100010normal byte\n
449701100265distance code01110117014797 // follow
4499101110046normal byte.
4500101110046normal byte.
4501101110046normal byte.
45021101101271distance code229010151563\n if ( gzip.header.flags & F
45050010259distance code500102993NAME
450601110267distance code116111101253614824)\n {\n if ( r
450901100265distance code11210004381974ead_string(
45120001258distance code410004321968in,
45141101111138normal byte&
451501100265distance code01101113651389gzip.fname
451701110267distance code116101119506046) )\n {\n
4520101011269distance code0191101039231goto done;\n }\n
45221101110272distance code0310101166678}\n\n if ( gzip.header.flags & F
452501010262distance code8111101340215690COMMENT
452811101111273distance code4391100121117)\n {\n if ( read_string( in, &gzip.f
453001010262distance code801114621486comment
45331111111011276distance code7661100124120) )\n {\n goto done;\n }\n }\n\n if ( gzip.header.flags & F
45350010259distance code5111101359215880HCRC
453801110267distance code116111002426386)\n {\n if ( f
454101100265distance code1120101185697read( &gzip.
45430010259distance code5111101378316071crc16
454611110001275distance code3540101186698, 2, 1, in ) < 1 )\n {\n perror( "Error reading
45490000257distance code300102690CRC
455001111049normal byte1
4551110000154normal byte6
45521101101271distance code33011011126510" );\n goto done;\n }\n
455501010262distance code81101189473}\n\n //
455701110267distance code11610102583330compressed block
455901010262distance code8101112205316s follow
456201010262distance code8001159187\n if (
456401011263distance code910108773949inflate(
45660010259distance code500111129in )
4568101001264distance code10001147175)\n {\n
4570101010268distance code1180111101034goto done;\n }\n\n
457201010262distance code8010138550// TODO
45740010259distance code51110114319623read
45770001258distance code4101112195315and
45790010259distance code51110019018045valid
45820001258distance code40110219987ate
45840000257distance code3001114142CRC
4586101111151normal byte3
4587101111050normal byte2
45870000257distance code31101051243 &
458911110110173normal byteI
459011111001083normal byteS
459211110110173normal byteI
45931111111110190normal byteZ
45941110100069normal byteE
45950001258distance code41001952143 whi
45970000257distance code310104893561ch
46000001258distance code410102473319are
460201000260distance code6111002026346the tr
460401111197normal bytea
46050000257distance code31000711607ile
4607100110114normal byter
460801000260distance code600011563\n //
461001000260distance code611110151212800values
461301011263distance code9010135547.\n if (
461501110267distance code116010014270fread( &gzip.crc
46170001258distance code411100721686532,
4619101011269distance code0190100142702, 1, in ) < 1 )\n
46221101101271distance code22901114751499{\n perror( "Error reading
46240010259distance code51100127123CRC32
46261101110272distance code13201111921216" );\n goto done;\n }\n\n if (
462901101266distance code013110018104fread( &gzip.
46310010259distance code5111101405416342isize
463411110000274distance code750110018104, 2, 1, in ) < 1 )\n {\n perror( "Error reading
46360010259distance code50001654isize
46381101101271distance code027110018104" );\n goto done;\n }\n\n
4640101001264distance code1010116834779// TODO ch
464300111101normal bytee
46430001258distance code410018942942ck t
46461101000104normal byteh
464701001261distance code7010022278e CRC32
4649101100010normal byte\n
4649101100010normal byte\n
46500001258distance code40000537done
46520001258distance code410019623010:\n
465401000260distance code61110014847628free(
465701100265distance code0110111721096gzip.extra
465901100265distance code0111110015067650);\n free(
466201100265distance code1120101242754gzip.fname )
466401110267distance code11611000521;\n free( gzip.f
466601011263distance code90101146658comment )
4668101001264distance code101001922140;\n\n if (
46701100111102normal bytef
467110000099normal bytec
4672100011108normal bytel
4673100101111normal byteo
4674100111115normal bytes
4674101010268distance code1181101151435e( in ) )\n {\n
467701011263distance code9001157185perror( "
4679101001264distance code1010004571993Unable to
46810010259distance code50000840close
468201100265distance code0111001842132 input file
468501100265distance code11201114931517.\n" );\n
4687101010268distance code11810004361972exit( 1 );\n }\n\n
469001000260distance code611000117exit(
4691101110148normal byte0
469201000260distance code61110016337777 );\n}\n
469511111111111256stop code

Figure 10: Inflating and decompressing the Huffman codes

Here, all code values less than 256 represent their respective ASCII values. Codes in the range 257 to 265 indicate (after subtracting 254) the length of the region to be copied from a previous section of the file. This happens for the first time in this file at byte #123, when the distance code 258 appears, indicating that a prior (258 - 254 = 4) bytes of the file should be copied to the current location. However, there are distance codes before byte #123: literal codes in the range 266 - 285 indicate that the decompressor should read the subsequent n bits of the file, where n is (code - 261) / 4, and add those, along with a specific number, to get the length that should be copied (again, refer to previous references for more detail).

Of course, when a literal code > 256 appears, indicating that a range should be copied from further back in the decompressed file, the length of the range is only half the story: the decompressor also needs to know how far back to jump — that is, the distance. The distances are specified in a separate Huffman table and are also subject to "extra bits" and lookup codes as specified in RFC 1951.

As you can see from figure 10, the algorithm starts out slow but begins to build up steam as it goes along and finds redundancies until standalone characters, as opposed to back-pointers, are the exception rather than the rule.

Finally, the decompression is halted by the appearance of the stop code of 11 consecutive 1 bits. This is followed by an 8-byte trailer which consists of a 4-byte CRC32 and a 4-byte size marker.

So there you have it: a complete walk-through a non-trivial GZIP session. As always, please let me know if you spot any errors; I'll try to be more proactive in getting them addressed this time.

Add a comment:

Completely off-topic or spam comments will be removed at the discretion of the moderator.

You may preserve formatting (e.g. a code sample) by indenting with four spaces preceding the formatted line(s)

Name: Name is required
Email (will not be displayed publicly):
Comment:
Comment is required
Chris, 2016-07-27
Much appreciated. Thanks!
charstar56, 2017-06-04
This is beautiful.
Carp, 2019-01-10
Thank you for writing this post. I much enjoyed
Rishi, 2020-09-08
Hi,
Thank you for writing this blog. It's was very helpful
Quick Question: The last 8 bytes(CRC+File Size) should start from a new byte aligned location or they should be merged with 256(1111111) ? The RFC 1952 Spec doesn't mention this clearly
SomeGuy, 2021-01-30
The order of bits is the same for all computers. Endianess only deals with byte ordering.
nick, 2021-04-02




I have no idea what this code is for at all but I have had someone hacking into all of my accounts for a year now and i’m trying to find someone, anyone that can help me stop this man from doing this to me I used to live above him and I found out he was hacking into my computers and phones I just found this code on my iphone 11 can someone PLEASE tell me what it means I need help asap, please email me at nra-1988@protonmail.com. Thanks
Jakub, 2021-07-20
This is a great piece of knowledge. Huge thanks for this article. I had been trying to understand the details of gzip by watching various good youtube videos, reading some articles on the web, but nothing can compare to what you have explained here. Chapeaux bas!
maj, 2023-01-12
Dear Joshua,
this post is brilliant!
I am trying to find an easy way to locate the end of a gzip file from a memory dump. Whilst the beginning might be easy 1b8f, ending with 11x1 causes multiple matches even in your small gzip example. Is there an easier way to locate the end, short of testing all examples if they are valid gzip files?
Regards
My Book

I'm the author of the book "Implementing SSL/TLS Using Cryptography and PKI". Like the title says, this is a from-the-ground-up examination of the SSL protocol that provides security, integrity and privacy to most application-level internet protocols, most notably HTTP. I include the source code to a complete working SSL implementation, including the most popular cryptographic algorithms (DES, 3DES, RC4, AES, RSA, DSA, Diffie-Hellman, HMAC, MD5, SHA-1, SHA-256, and ECC), and show how they all fit together to provide transport-layer security.

My Picture

Joshua Davies

Past Posts