github.com/la5nta/wl2k-go@v0.11.8/lzhuf/lzhuf_test.go (about) 1 // Copyright 2016 Martin Hebnes Pedersen (LA5NTA). All rights reserved. 2 // Use of this source code is governed by the MIT-license that can be 3 // found in the LICENSE file. 4 5 package lzhuf 6 7 import ( 8 "bufio" 9 "bytes" 10 "io" 11 "io/ioutil" 12 "os" 13 "path/filepath" 14 "testing" 15 ) 16 17 var testdataPath = "testdata/" 18 19 func TestRoundtrip(t *testing.T) { 20 files, err := ioutil.ReadDir(testdataPath) 21 if err != nil { 22 t.Fatal("Unable to open testdata directory:", err) 23 } 24 25 for _, fi := range files { 26 if fi.IsDir() || filepath.Ext(fi.Name()) == ".lzh" || fi.Name()[0] == '.' { 27 continue 28 } 29 30 t.Logf("Running %s...", fi.Name()) 31 file, err := os.Open(filepath.Join(testdataPath, fi.Name())) 32 if err != nil { 33 t.Fatal(err) 34 } 35 36 var orig bytes.Buffer 37 38 // Compress (and tee to orig for comparison) 39 var compressed bytes.Buffer 40 w := NewB2Writer(&compressed) 41 io.Copy(w, io.TeeReader(file, &orig)) 42 w.Close() 43 44 r, err := NewB2Reader(&compressed) 45 if err != nil { 46 t.Errorf("%s: Unexpected NewB2Reader error: %s", fi.Name(), err) 47 continue 48 } 49 50 rd := bufio.NewReader(r) 51 for i := 0; orig.Len() > 0; i++ { 52 c, _ := orig.ReadByte() 53 d, _ := rd.ReadByte() 54 55 if c != d { 56 t.Errorf("%s: Byte idx %d not matching. Skipping rest of compare.", fi.Name(), i) 57 break 58 } 59 } 60 61 if err := r.Close(); err != nil { 62 t.Errorf("%s: Unexpected Close error: %s", fi.Name(), err) 63 } 64 65 file.Close() 66 } 67 } 68 69 func TestReaderUnexpectedEOF(t *testing.T) { 70 lz, _ := NewReader(bytes.NewReader(samples[2].compressed[:10]), true) 71 if _, err := io.Copy(ioutil.Discard, lz); err != io.ErrUnexpectedEOF { 72 t.Errorf("Read: Expected io.ErrUnexpectedEOF, got '%v'", err) 73 } 74 if err := lz.Close(); err != io.ErrUnexpectedEOF { 75 t.Errorf("Close: Expected io.ErrUnexpectedEOF, got '%s'", err) 76 } 77 } 78 79 func TestB2ReaderInvalidChecksum(t *testing.T) { 80 data := make([]byte, len(samples[0].compressed)) 81 copy(data, samples[0].compressed) 82 data[0] = 0x1 // Invalid checksum 83 84 lz, _ := NewB2Reader(bytes.NewReader(data)) 85 io.Copy(ioutil.Discard, lz) 86 if err := lz.Close(); err != ErrChecksum { 87 t.Error("Did not receive ErrChecksum from Close") 88 } 89 } 90 91 func TestReaderShortRead(t *testing.T) { 92 // With crc16 checksum 93 lz, _ := NewB2Reader(bytes.NewReader(samples[4].compressed)) 94 io.CopyN(ioutil.Discard, lz, int64(len(samples[4].compressed)-1)) 95 if err := lz.Close(); err != ErrChecksum { 96 t.Error("Did not receive ErrChecksum from Close on short read with crc16", err) 97 } 98 99 // Without crc16 checksum 100 lz, _ = NewReader(bytes.NewReader(samples[4].compressed[2:]), false) 101 io.CopyN(ioutil.Discard, lz, int64(len(samples[4].compressed[2:])-1)) 102 if err := lz.Close(); err != ErrChecksum { 103 t.Error("Did not receive ErrChecksum from Close on short read without crc16", err) 104 } 105 } 106 107 func TestReaderInvalidHeader(t *testing.T) { 108 var err error 109 110 _, err = NewB2Reader(bytes.NewReader([]byte{0x0})) 111 if err != io.ErrUnexpectedEOF { 112 t.Error("Expected io.ErrUnexpectedEOF on too short crc16 checksum, got:", err) 113 } 114 115 _, err = NewReader(bytes.NewReader([]byte{0x0}), false) 116 if err != io.ErrUnexpectedEOF { 117 t.Error("Expected io.ErrUnexpectedEOF on too filesize header, got:", err) 118 } 119 } 120 121 func TestReader(t *testing.T) { 122 for i, sample := range samples { 123 lz, err := NewReader(bytes.NewReader(sample.compressed), true) 124 if err != nil { 125 t.Errorf("Unexpected NewReader error: %s", err) 126 continue 127 } 128 129 var buf bytes.Buffer 130 _, err = io.Copy(&buf, lz) 131 if err != nil { 132 t.Errorf("Unexpected error: %s", err) 133 } 134 135 if !bytes.Equal(buf.Bytes(), sample.plain) { 136 t.Errorf("Sample %d failed", i) 137 } 138 139 if err := lz.Close(); err != nil { 140 t.Errorf("Sample %d failed on close: %s", i, err) 141 } 142 } 143 } 144 145 func TestWriterTestdata(t *testing.T) { 146 files, err := ioutil.ReadDir(testdataPath) 147 if err != nil { 148 t.Fatal("Unable to open testdata directory:", err) 149 } 150 151 for _, fi := range files { 152 if fi.IsDir() || filepath.Ext(fi.Name()) == ".lzh" || fi.Name()[0] == '.' { 153 continue 154 } 155 156 t.Logf("Running %s...", fi.Name()) 157 file, err := os.Open(filepath.Join(testdataPath, fi.Name())) 158 if err != nil { 159 t.Fatal(err) 160 } 161 162 // Compress (and tee to orig for comparison) 163 var compressed bytes.Buffer 164 w := NewB2Writer(&compressed) 165 io.Copy(w, file) 166 w.Close() 167 168 f, err := os.Open(filepath.Join("testdata", fi.Name()+".lzh")) 169 if err != nil { 170 t.Fatal(err) 171 } 172 173 rd := bufio.NewReader(f) 174 for i := 0; compressed.Len() > 0; i++ { 175 c, _ := compressed.ReadByte() 176 d, _ := rd.ReadByte() 177 178 if c != d { 179 t.Errorf("%s: Byte idx %d not matching. Skipping rest of compare.", fi.Name(), i) 180 break 181 } 182 } 183 184 file.Close() 185 f.Close() 186 } 187 } 188 189 func TestWriter(t *testing.T) { 190 for i, sample := range samples { 191 var buf bytes.Buffer 192 lz := NewWriter(&buf, true) 193 194 _, err := io.Copy(lz, bytes.NewReader(sample.plain)) 195 if err != nil { 196 t.Errorf("Unexpected error: %s", err) 197 } 198 199 if err := lz.Close(); err != nil { 200 t.Errorf("Close error on sample %d: %s", i, err) 201 } 202 203 if !bytes.Equal(buf.Bytes()[0:2], sample.compressed[0:2]) { 204 t.Errorf("Sample %d failed: checksum mismatch", i) 205 } 206 207 if !bytes.Equal(buf.Bytes()[2:6], sample.compressed[2:6]) { 208 t.Errorf("Sample %d failed: length header mismatch", i) 209 } 210 211 if !bytes.Equal(buf.Bytes()[6:], sample.compressed[6:]) { 212 t.Errorf("Sample %d failed", i) 213 } 214 } 215 } 216 217 type sample struct { 218 plain []byte 219 compressed []byte 220 } 221 222 var samples = []sample{ 223 sample{ 224 []byte("\n"), 225 []byte{0xe, 0x8f, 0x1, 0x0, 0x0, 0x0, 0xcb, 0x0}, 226 }, 227 sample{ 228 []byte("foo"), 229 []byte{0xb6, 0x47, 0x3, 0x0, 0x0, 0x0, 0xf9, 0x7e, 0xf1, 0x0}, 230 }, 231 sample{ 232 []byte("The quick brown fox jumps over the lazy dog\r\nThe quick brown fox jumps over the lazy dog"), 233 []byte{0x76, 0x25, 0x58, 0x0, 0x0, 0x0, 0xf0, 0x7d, 0x3e, 0x3a, 0xcf, 0xe8, 0xf, 0xd7, 0xdf, 0xf7, 0xc2, 0xf7, 0x7f, 0xbf, 0x60, 0x7f, 0xab, 0x7f, 0x2b, 0xa0, 0x4b, 0x7f, 0x6c, 0xf, 0xcf, 0xf3, 0xff, 0x55, 0x60, 0x2c, 0x3b, 0xba, 0x80, 0x23, 0x3, 0xdf, 0x8f, 0x68, 0x30, 0x2d, 0x3f, 0xa, 0xff, 0x3c, 0xce, 0x5b, 0xf2, 0x2c}, 234 }, 235 sample{ 236 []byte("bar"), 237 []byte{0xc7, 0xef, 0x03, 0x00, 0x00, 0x00, 0xf7, 0x7b, 0x7f, 0xc0}, 238 }, 239 sample{ // from wikipedia 240 []byte("Unicode is a computing industry standard for the consistent encoding, representation, and handling of text expressed in most of the world's writing systems. Developed in conjunction with the Universal Character Set standard and published as The Unicode Standard, the latest version of Unicode contains a repertoire of more than 110,000 characters covering 100 scripts and multiple symbol sets. The standard consists of a set of code charts for visual reference, an encoding method and set of standard character encodings, a set of reference data computer files, and a number of related items, such as character properties, rules for normalization, decomposition, collation, rendering, and bidirectional display order (for the correct display of text containing both right-to-left scripts, such as Arabic and Hebrew, and left-to-right scripts).[1] As of June 2014, the most recent version is Unicode 7.0. The standard is maintained by the Unicode Consortium."), 241 []byte{0x3f, 0x3e, 0xbd, 0x3, 0x0, 0x0, 0xf0, 0xfe, 0xbe, 0xbe, 0xff, 0xdf, 0xc3, 0xe3, 0xac, 0xc3, 0xff, 0xdf, 0x7b, 0x6e, 0x61, 0x60, 0xfe, 0x7f, 0x80, 0x20, 0x16, 0x71, 0x3e, 0x77, 0x6d, 0x57, 0xc0, 0xb7, 0xbd, 0xb6, 0xff, 0x2, 0xd1, 0x4e, 0x95, 0xe5, 0x9a, 0xb3, 0xac, 0x2a, 0xd1, 0xf2, 0x9f, 0x26, 0x8a, 0xdf, 0x4b, 0xfa, 0xa0, 0x8e, 0x5a, 0xf2, 0x41, 0x14, 0x39, 0x62, 0xa2, 0x6c, 0xb3, 0x83, 0xa8, 0x42, 0xdd, 0xc3, 0xa7, 0xbf, 0x70, 0xdc, 0x10, 0x4a, 0x9, 0xd4, 0x92, 0xa, 0x53, 0x3f, 0xb9, 0xa1, 0x9b, 0xa7, 0x5b, 0x1c, 0x7e, 0x2a, 0xa4, 0x5b, 0x14, 0xce, 0x92, 0x30, 0x48, 0x5, 0xd1, 0x11, 0x22, 0x47, 0xe3, 0x46, 0x12, 0x75, 0xd7, 0x2c, 0xc0, 0x9c, 0x40, 0x64, 0xc4, 0x90, 0x1b, 0x8c, 0xc5, 0x2d, 0xb3, 0x2b, 0x9b, 0x9a, 0x69, 0xac, 0xbc, 0x3d, 0x39, 0xc9, 0xf5, 0x68, 0xdd, 0x37, 0xa0, 0x50, 0x22, 0xa9, 0x7d, 0x5e, 0x24, 0x62, 0x72, 0xe3, 0xec, 0xa4, 0x6a, 0x94, 0x94, 0xd, 0x46, 0xe9, 0x50, 0x22, 0x33, 0x4e, 0x7f, 0x32, 0x19, 0xe3, 0x90, 0xc7, 0xfc, 0xf5, 0x45, 0x1, 0x25, 0xa4, 0x30, 0x7f, 0xdf, 0x31, 0x22, 0xe7, 0xb2, 0xc3, 0x25, 0x82, 0xe8, 0x70, 0x9e, 0x1c, 0x13, 0x10, 0xca, 0x1f, 0xd0, 0x5, 0xf1, 0xaa, 0x74, 0xd1, 0x32, 0x74, 0x8e, 0x9, 0xea, 0x63, 0xd, 0xc9, 0xe, 0x63, 0x53, 0xa9, 0x1e, 0x11, 0x46, 0x63, 0xda, 0x76, 0x27, 0x42, 0x66, 0x4e, 0x79, 0xe4, 0x65, 0x45, 0xb4, 0xa4, 0xe0, 0x2f, 0x1e, 0x80, 0xe4, 0x88, 0x1c, 0x71, 0xb0, 0x39, 0xb6, 0x94, 0xf1, 0x1a, 0x50, 0x8c, 0x2b, 0xf1, 0xd1, 0xf, 0xcd, 0x45, 0x26, 0x31, 0x36, 0x35, 0xd9, 0xb5, 0x9a, 0xcc, 0xf9, 0xd8, 0x5c, 0x9e, 0xc3, 0xfe, 0xac, 0x74, 0x81, 0xf1, 0x9f, 0xab, 0x40, 0xb8, 0x7, 0x51, 0xaf, 0xf4, 0xa3, 0xa2, 0x57, 0x35, 0xee, 0xb7, 0xc7, 0xd2, 0xcc, 0xcd, 0x88, 0xb1, 0xec, 0x90, 0xb9, 0x6b, 0x99, 0x49, 0xa6, 0xe2, 0xe, 0xc1, 0x1d, 0xc6, 0x5f, 0x8a, 0xf, 0x5, 0xfe, 0x61, 0xdb, 0xdf, 0x5b, 0x8f, 0xd3, 0x9f, 0x2d, 0xd3, 0x6f, 0x7e, 0xc2, 0xf1, 0xea, 0xf7, 0x16, 0x62, 0x9a, 0xf1, 0x9b, 0x6e, 0xe4, 0x52, 0x80, 0xe0, 0x1f, 0xa5, 0x93, 0xb8, 0x6a, 0xaf, 0x81, 0xa1, 0x5b, 0xe3, 0xbe, 0x51, 0x37, 0xa1, 0x1f, 0xae, 0xfa, 0x5e, 0x9b, 0x94, 0xf8, 0xac, 0x47, 0x95, 0xe4, 0x2, 0x79, 0x6b, 0x7a, 0xef, 0xe, 0xbe, 0xf4, 0x64, 0x27, 0xa4, 0x5d, 0x15, 0x71, 0x2d, 0x52, 0x2c, 0xce, 0x9e, 0xeb, 0xdb, 0x97, 0x29, 0xae, 0x7c, 0x62, 0x8f, 0x90, 0x61, 0xa1, 0x3e, 0xfe, 0x50, 0x78, 0xf7, 0xa0, 0x83, 0xd6, 0xf2, 0xf0, 0xd2, 0x4f, 0xef, 0x6b, 0x90, 0xde, 0xae, 0xc7, 0xbe, 0x28, 0x53, 0xed, 0x58, 0x70, 0x34, 0x7, 0x74, 0xda, 0xd8, 0x61, 0xdb, 0x43, 0x30, 0x8d, 0x34, 0xc2, 0xc7, 0xb0, 0x5d, 0x75, 0x31, 0xd9, 0x5f, 0x8e, 0x38, 0x69, 0x4e, 0xe3, 0x65, 0x79, 0x65, 0xbe, 0xc6, 0xb8, 0x84, 0x8, 0xf4, 0x4c, 0xd9, 0x84, 0x92, 0xa0, 0x8d, 0x68, 0x79, 0x9c, 0x2, 0xa0, 0xd2, 0x2a, 0xc5, 0x19, 0x2a, 0x1e, 0x14, 0x9b, 0xb5, 0xe7, 0x3f, 0xa6, 0x6a, 0x61, 0xe7, 0x86, 0xd0, 0xed, 0x2e, 0x32, 0x3a, 0x28, 0x19, 0x75, 0xfb, 0xcb, 0x72, 0x8d, 0xa6, 0x29, 0x4b, 0xd3, 0x7d, 0xf7, 0xef, 0xc5, 0x9b, 0xb, 0x2c, 0x34, 0x6c, 0x7b, 0x58, 0x6a, 0x4d, 0xe3, 0x6c, 0xe3, 0xba, 0x9c, 0xeb, 0x2a, 0x66, 0x3b, 0xb3, 0x15, 0x5f, 0x26, 0xe5, 0xa9, 0xbe, 0xd, 0x2f, 0x62, 0xd8, 0xd6, 0xe6, 0x7d, 0x64, 0xce, 0xd3, 0xdd, 0x79, 0x6f, 0xb7, 0x1, 0x6d, 0xb8, 0x26, 0xfc, 0x2b, 0x7d, 0x79, 0x8c, 0x5a, 0x1f, 0x7d, 0x4e, 0xa8, 0x86, 0x9a, 0xb6, 0xe, 0x8d, 0x58, 0xb, 0x81, 0x65, 0xcd, 0x26, 0x56, 0x72, 0xec, 0x51, 0x80}, 242 }, 243 sample{ 244 []byte(`UTF-8 encoded sample plain-text file 245 ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ 246 247 Markus Kuhn [ˈmaʳkʊs kuːn] <http://www.cl.cam.ac.uk/~mgk25/> — 2002-07-25 248 249 250 The ASCII compatible UTF-8 encoding used in this plain-text file 251 is defined in Unicode, ISO 10646-1, and RFC 2279. 252 253 254 Using Unicode/UTF-8, you can write in emails and source code things such as 255 256 Mathematics and sciences: 257 258 ∮ E⋅da = Q, n → ∞, ∑ f(i) = ∏ g(i), ⎧⎡⎛┌─────┐⎞⎤⎫ 259 ⎪⎢⎜│a²+b³ ⎟⎥⎪ 260 ∀x∈ℝ: ⌈x⌉ = −⌊−x⌋, α ∧ ¬β = ¬(¬α ∨ β), ⎪⎢⎜│───── ⎟⎥⎪ 261 ⎪⎢⎜⎷ c₈ ⎟⎥⎪ 262 ℕ ⊆ ℕ₀ ⊂ ℤ ⊂ ℚ ⊂ ℝ ⊂ ℂ, ⎨⎢⎜ ⎟⎥⎬ 263 ⎪⎢⎜ ∞ ⎟⎥⎪ 264 ⊥ < a ≠ b ≡ c ≤ d ≪ ⊤ ⇒ (⟦A⟧ ⇔ ⟪B⟫), ⎪⎢⎜ ⎲ ⎟⎥⎪ 265 ⎪⎢⎜ ⎳aⁱ-bⁱ⎟⎥⎪ 266 2H₂ + O₂ ⇌ 2H₂O, R = 4.7 kΩ, ⌀ 200 mm ⎩⎣⎝i=1 ⎠⎦⎭ 267 268 Linguistics and dictionaries: 269 270 ði ıntəˈnæʃənəl fəˈnɛtık əsoʊsiˈeıʃn 271 Y [ˈʏpsilɔn], Yen [jɛn], Yoga [ˈjoːgɑ] 272 273 APL: 274 275 ((V⍳V)=⍳⍴V)/V←,V ⌷←⍳→⍴∆∇⊃‾⍎⍕⌈ 276 277 Nicer typography in plain text files: 278 279 ╔══════════════════════════════════════════╗ 280 ║ ║ 281 ║ • ‘single’ and “double” quotes ║ 282 ║ ║ 283 ║ • Curly apostrophes: “We’ve been here” ║ 284 ║ ║ 285 ║ • Latin-1 apostrophe and accents: ║ 286 ║ ║ 287 ║ • ‚deutsche‘ „Anführungszeichen“ ║ 288 ║ ║ 289 ║ • †, ‡, ‰, •, 3–4, —, −5/+5, ™, … ║ 290 ║ ║ 291 ║ • ASCII safety test: 1lI|, 0OD, 8B ║ 292 ║ ╭─────────╮ ║ 293 ║ • the euro symbol: │ 14.95 € │ ║ 294 ║ ╰─────────╯ ║ 295 ╚══════════════════════════════════════════╝ 296 297 Combining characters: 298 299 STARGΛ̊TE SG-1, a = v̇ = r̈, a⃑ ⊥ b⃑ 300 301 Greek (in Polytonic): 302 303 The Greek anthem: 304 305 Σὲ γνωρίζω ἀπὸ τὴν κόψη 306 τοῦ σπαθιοῦ τὴν τρομερή, 307 σὲ γνωρίζω ἀπὸ τὴν ὄψη 308 ποὺ μὲ βία μετράει τὴ γῆ. 309 310 ᾿Απ᾿ τὰ κόκκαλα βγαλμένη 311 τῶν ῾Ελλήνων τὰ ἱερά 312 καὶ σὰν πρῶτα ἀνδρειωμένη 313 χαῖρε, ὦ χαῖρε, ᾿Ελευθεριά! 314 315 From a speech of Demosthenes in the 4th century BC: 316 317 Οὐχὶ ταὐτὰ παρίσταταί μοι γιγνώσκειν, ὦ ἄνδρες ᾿Αθηναῖοι, 318 ὅταν τ᾿ εἰς τὰ πράγματα ἀποβλέψω καὶ ὅταν πρὸς τοὺς 319 λόγους οὓς ἀκούω· τοὺς μὲν γὰρ λόγους περὶ τοῦ 320 τιμωρήσασθαι Φίλιππον ὁρῶ γιγνομένους, τὰ δὲ πράγματ᾿ 321 εἰς τοῦτο προήκοντα, ὥσθ᾿ ὅπως μὴ πεισόμεθ᾿ αὐτοὶ 322 πρότερον κακῶς σκέψασθαι δέον. οὐδέν οὖν ἄλλο μοι δοκοῦσιν 323 οἱ τὰ τοιαῦτα λέγοντες ἢ τὴν ὑπόθεσιν, περὶ ἧς βουλεύεσθαι, 324 οὐχὶ τὴν οὖσαν παριστάντες ὑμῖν ἁμαρτάνειν. ἐγὼ δέ, ὅτι μέν 325 ποτ᾿ ἐξῆν τῇ πόλει καὶ τὰ αὑτῆς ἔχειν ἀσφαλῶς καὶ Φίλιππον 326 τιμωρήσασθαι, καὶ μάλ᾿ ἀκριβῶς οἶδα· ἐπ᾿ ἐμοῦ γάρ, οὐ πάλαι 327 γέγονεν ταῦτ᾿ ἀμφότερα· νῦν μέντοι πέπεισμαι τοῦθ᾿ ἱκανὸν 328 προλαβεῖν ἡμῖν εἶναι τὴν πρώτην, ὅπως τοὺς συμμάχους 329 σώσομεν. ἐὰν γὰρ τοῦτο βεβαίως ὑπάρξῃ, τότε καὶ περὶ τοῦ 330 τίνα τιμωρήσεταί τις καὶ ὃν τρόπον ἐξέσται σκοπεῖν· πρὶν δὲ 331 τὴν ἀρχὴν ὀρθῶς ὑποθέσθαι, μάταιον ἡγοῦμαι περὶ τῆς 332 τελευτῆς ὁντινοῦν ποιεῖσθαι λόγον. 333 334 Δημοσθένους, Γ´ ᾿Ολυνθιακὸς 335 336 Georgian: 337 338 From a Unicode conference invitation: 339 340 გთხოვთ ახლავე გაიაროთ რეგისტრაცია Unicode-ის მეათე საერთაშორისო 341 კონფერენციაზე დასასწრებად, რომელიც გაიმართება 10-12 მარტს, 342 ქ. მაინცში, გერმანიაში. კონფერენცია შეჰკრებს ერთად მსოფლიოს 343 ექსპერტებს ისეთ დარგებში როგორიცაა ინტერნეტი და Unicode-ი, 344 ინტერნაციონალიზაცია და ლოკალიზაცია, Unicode-ის გამოყენება 345 ოპერაციულ სისტემებსა, და გამოყენებით პროგრამებში, შრიფტებში, 346 ტექსტების დამუშავებასა და მრავალენოვან კომპიუტერულ სისტემებში. 347 348 Russian: 349 350 From a Unicode conference invitation: 351 352 Зарегистрируйтесь сейчас на Десятую Международную Конференцию по 353 Unicode, которая состоится 10-12 марта 1997 года в Майнце в Германии. 354 Конференция соберет широкий круг экспертов по вопросам глобального 355 Интернета и Unicode, локализации и интернационализации, воплощению и 356 применению Unicode в различных операционных системах и программных 357 приложениях, шрифтах, верстке и многоязычных компьютерных системах. 358 359 Thai (UCS Level 2): 360 361 Excerpt from a poetry on The Romance of The Three Kingdoms (a Chinese 362 classic 'San Gua'): 363 364 [----------------------------|------------------------] 365 ๏ แผ่นดินฮั่นเสื่อมโทรมแสนสังเวช พระปกเกศกองบู๊กู้ขึ้นใหม่ 366 สิบสองกษัตริย์ก่อนหน้าแลถัดไป สององค์ไซร้โง่เขลาเบาปัญญา 367 ทรงนับถือขันทีเป็นที่พึ่ง บ้านเมืองจึงวิปริตเป็นนักหนา 368 โฮจิ๋นเรียกทัพทั่วหัวเมืองมา หมายจะฆ่ามดชั่วตัวสำคัญ 369 เหมือนขับไสไล่เสือจากเคหา รับหมาป่าเข้ามาเลยอาสัญ 370 ฝ่ายอ้องอุ้นยุแยกให้แตกกัน ใช้สาวนั้นเป็นชนวนชื่นชวนใจ 371 พลันลิฉุยกุยกีกลับก่อเหตุ ช่างอาเพศจริงหนาฟ้าร้องไห้ 372 ต้องรบราฆ่าฟันจนบรรลัย ฤๅหาใครค้ำชูกู้บรรลังก์ ฯ 373 374 (The above is a two-column text. If combining characters are handled 375 correctly, the lines of the second column should be aligned with the 376 | character above.) 377 378 Ethiopian: 379 380 Proverbs in the Amharic language: 381 382 ሰማይ አይታረስ ንጉሥ አይከሰስ። 383 ብላ ካለኝ እንደአባቴ በቆመጠኝ። 384 ጌጥ ያለቤቱ ቁምጥና ነው። 385 ደሀ በሕልሙ ቅቤ ባይጠጣ ንጣት በገደለው። 386 የአፍ ወለምታ በቅቤ አይታሽም። 387 አይጥ በበላ ዳዋ ተመታ። 388 ሲተረጉሙ ይደረግሙ። 389 ቀስ በቀስ፥ ዕንቁላል በእግሩ ይሄዳል። 390 ድር ቢያብር አንበሳ ያስር። 391 ሰው እንደቤቱ እንጅ እንደ ጉረቤቱ አይተዳደርም። 392 እግዜር የከፈተውን ጉሮሮ ሳይዘጋው አይድርም። 393 የጎረቤት ሌባ፥ ቢያዩት ይስቅ ባያዩት ያጠልቅ። 394 ሥራ ከመፍታት ልጄን ላፋታት። 395 ዓባይ ማደሪያ የለው፥ ግንድ ይዞ ይዞራል። 396 የእስላም አገሩ መካ የአሞራ አገሩ ዋርካ። 397 ተንጋሎ ቢተፉ ተመልሶ ባፉ። 398 ወዳጅህ ማር ቢሆን ጨርስህ አትላሰው። 399 እግርህን በፍራሽህ ልክ ዘርጋ። 400 401 Runes: 402 403 ᚻᛖ ᚳᚹᚫᚦ ᚦᚫᛏ ᚻᛖ ᛒᚢᛞᛖ ᚩᚾ ᚦᚫᛗ ᛚᚪᚾᛞᛖ ᚾᚩᚱᚦᚹᛖᚪᚱᛞᚢᛗ ᚹᛁᚦ ᚦᚪ ᚹᛖᛥᚫ 404 405 (Old English, which transcribed into Latin reads 'He cwaeth that he 406 bude thaem lande northweardum with tha Westsae.' and means 'He said 407 that he lived in the northern land near the Western Sea.') 408 409 Braille: 410 411 ⡌⠁⠧⠑ ⠼⠁⠒ ⡍⠜⠇⠑⠹⠰⠎ ⡣⠕⠌ 412 413 ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠙⠑⠁⠙⠒ ⠞⠕ ⠃⠑⠛⠔ ⠺⠊⠹⠲ ⡹⠻⠑ ⠊⠎ ⠝⠕ ⠙⠳⠃⠞ 414 ⠱⠁⠞⠑⠧⠻ ⠁⠃⠳⠞ ⠹⠁⠞⠲ ⡹⠑ ⠗⠑⠛⠊⠌⠻ ⠕⠋ ⠙⠊⠎ ⠃⠥⠗⠊⠁⠇ ⠺⠁⠎ 415 ⠎⠊⠛⠝⠫ ⠃⠹ ⠹⠑ ⠊⠇⠻⠛⠹⠍⠁⠝⠂ ⠹⠑ ⠊⠇⠻⠅⠂ ⠹⠑ ⠥⠝⠙⠻⠞⠁⠅⠻⠂ 416 ⠁⠝⠙ ⠹⠑ ⠡⠊⠑⠋ ⠍⠳⠗⠝⠻⠲ ⡎⠊⠗⠕⠕⠛⠑ ⠎⠊⠛⠝⠫ ⠊⠞⠲ ⡁⠝⠙ 417 ⡎⠊⠗⠕⠕⠛⠑⠰⠎ ⠝⠁⠍⠑ ⠺⠁⠎ ⠛⠕⠕⠙ ⠥⠏⠕⠝ ⠰⡡⠁⠝⠛⠑⠂ ⠋⠕⠗ ⠁⠝⠹⠹⠔⠛ ⠙⠑ 418 ⠡⠕⠎⠑ ⠞⠕ ⠏⠥⠞ ⠙⠊⠎ ⠙⠁⠝⠙ ⠞⠕⠲ 419 420 ⡕⠇⠙ ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠁⠎ ⠙⠑⠁⠙ ⠁⠎ ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ 421 422 ⡍⠔⠙⠖ ⡊ ⠙⠕⠝⠰⠞ ⠍⠑⠁⠝ ⠞⠕ ⠎⠁⠹ ⠹⠁⠞ ⡊ ⠅⠝⠪⠂ ⠕⠋ ⠍⠹ 423 ⠪⠝ ⠅⠝⠪⠇⠫⠛⠑⠂ ⠱⠁⠞ ⠹⠻⠑ ⠊⠎ ⠏⠜⠞⠊⠊⠥⠇⠜⠇⠹ ⠙⠑⠁⠙ ⠁⠃⠳⠞ 424 ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ ⡊ ⠍⠊⠣⠞ ⠙⠁⠧⠑ ⠃⠑⠲ ⠔⠊⠇⠔⠫⠂ ⠍⠹⠎⠑⠇⠋⠂ ⠞⠕ 425 ⠗⠑⠛⠜⠙ ⠁ ⠊⠕⠋⠋⠔⠤⠝⠁⠊⠇ ⠁⠎ ⠹⠑ ⠙⠑⠁⠙⠑⠌ ⠏⠊⠑⠊⠑ ⠕⠋ ⠊⠗⠕⠝⠍⠕⠝⠛⠻⠹ 426 ⠔ ⠹⠑ ⠞⠗⠁⠙⠑⠲ ⡃⠥⠞ ⠹⠑ ⠺⠊⠎⠙⠕⠍ ⠕⠋ ⠳⠗ ⠁⠝⠊⠑⠌⠕⠗⠎ 427 ⠊⠎ ⠔ ⠹⠑ ⠎⠊⠍⠊⠇⠑⠆ ⠁⠝⠙ ⠍⠹ ⠥⠝⠙⠁⠇⠇⠪⠫ ⠙⠁⠝⠙⠎ 428 ⠩⠁⠇⠇ ⠝⠕⠞ ⠙⠊⠌⠥⠗⠃ ⠊⠞⠂ ⠕⠗ ⠹⠑ ⡊⠳⠝⠞⠗⠹⠰⠎ ⠙⠕⠝⠑ ⠋⠕⠗⠲ ⡹⠳ 429 ⠺⠊⠇⠇ ⠹⠻⠑⠋⠕⠗⠑ ⠏⠻⠍⠊⠞ ⠍⠑ ⠞⠕ ⠗⠑⠏⠑⠁⠞⠂ ⠑⠍⠏⠙⠁⠞⠊⠊⠁⠇⠇⠹⠂ ⠹⠁⠞ 430 ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠁⠎ ⠙⠑⠁⠙ ⠁⠎ ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ 431 432 (The first couple of paragraphs of "A Christmas Carol" by Dickens) 433 434 Compact font selection example text: 435 436 ABCDEFGHIJKLMNOPQRSTUVWXYZ /0123456789 437 abcdefghijklmnopqrstuvwxyz £©µÀÆÖÞßéöÿ 438 –—‘“”„†•…‰™œŠŸž€ ΑΒΓΔΩαβγδω АБВГДабвгд 439 ∀∂∈ℝ∧∪≡∞ ↑↗↨↻⇣ ┐┼╔╘░►☺♀ fi�⑀₂ἠḂӥẄɐː⍎אԱა 440 441 Greetings in various languages: 442 443 Hello world, Καλημέρα κόσμε, コンニチハ 444 445 Box drawing alignment tests: █ 446 ▉ 447 ╔══╦══╗ ┌──┬──┐ ╭──┬──╮ ╭──┬──╮ ┏━━┳━━┓ ┎┒┏┑ ╷ ╻ ┏┯┓ ┌┰┐ ▊ ╱╲╱╲╳╳╳ 448 ║┌─╨─┐║ │╔═╧═╗│ │╒═╪═╕│ │╓─╁─╖│ ┃┌─╂─┐┃ ┗╃╄┙ ╶┼╴╺╋╸┠┼┨ ┝╋┥ ▋ ╲╱╲╱╳╳╳ 449 ║│╲ ╱│║ │║ ║│ ││ │ ││ │║ ┃ ║│ ┃│ ╿ │┃ ┍╅╆┓ ╵ ╹ ┗┷┛ └┸┘ ▌ ╱╲╱╲╳╳╳ 450 ╠╡ ╳ ╞╣ ├╢ ╟┤ ├┼─┼─┼┤ ├╫─╂─╫┤ ┣┿╾┼╼┿┫ ┕┛┖┚ ┌┄┄┐ ╎ ┏┅┅┓ ┋ ▍ ╲╱╲╱╳╳╳ 451 ║│╱ ╲│║ │║ ║│ ││ │ ││ │║ ┃ ║│ ┃│ ╽ │┃ ░░▒▒▓▓██ ┊ ┆ ╎ ╏ ┇ ┋ ▎ 452 ║└─╥─┘║ │╚═╤═╝│ │╘═╪═╛│ │╙─╀─╜│ ┃└─╂─┘┃ ░░▒▒▓▓██ ┊ ┆ ╎ ╏ ┇ ┋ ▏ 453 ╚══╩══╝ └──┴──┘ ╰──┴──╯ ╰──┴──╯ ┗━━┻━━┛ ▗▄▖▛▀▜ └╌╌┘ ╎ ┗╍╍┛ ┋ ▁▂▃▄▅▆▇█ 454 `), 455 []byte{0x2c, 0x55, 0xa0, 0x36, 0x0, 0x0, 0xf0, 0xf8, 0x3a, 0x5b, 0x9e, 0x26, 0xb3, 0xe3, 0xfa, 0xf7, 0xfe, 0xfe, 0x17, 0xf7, 0x78, 0x1f, 0xff, 0x6f, 0xe7, 0xf9, 0xf8, 0xb3, 0x66, 0xde, 0xda, 0xe7, 0xeb, 0x7d, 0x84, 0x1, 0x68, 0x12, 0xc2, 0xcf, 0xca, 0xc6, 0xb4, 0xf9, 0x66, 0xe0, 0xc4, 0xaf, 0x8, 0xb, 0xf0, 0x2, 0xab, 0x8f, 0xd9, 0x99, 0xfe, 0xfb, 0x80, 0xdd, 0x45, 0xd7, 0x9e, 0xfa, 0x4a, 0x8b, 0xce, 0xae, 0x29, 0x71, 0x45, 0x58, 0xfe, 0x7e, 0x48, 0x5a, 0x34, 0x8f, 0x61, 0x4c, 0xe, 0x4d, 0xf4, 0xc9, 0xc8, 0x9c, 0x7d, 0xd, 0xd7, 0x1b, 0x76, 0xc6, 0x7, 0x0, 0xaf, 0x75, 0x7b, 0x59, 0xa5, 0x9a, 0xee, 0x59, 0x30, 0xf9, 0xe4, 0x58, 0xcd, 0x82, 0x9e, 0xfc, 0xd1, 0xdf, 0x70, 0x5d, 0xf2, 0x8d, 0x55, 0x52, 0x40, 0x67, 0x2d, 0xe3, 0x52, 0x86, 0x44, 0xf8, 0x6d, 0x5b, 0x38, 0xd2, 0x15, 0x2c, 0x45, 0x9, 0x23, 0x9b, 0xdf, 0xe7, 0xf5, 0x4e, 0x50, 0x55, 0xe0, 0x90, 0x97, 0x29, 0x4f, 0xbb, 0xdc, 0x92, 0x72, 0x93, 0x95, 0xc3, 0x39, 0xa4, 0x58, 0xeb, 0x29, 0xf8, 0x4, 0xa4, 0xa6, 0x63, 0x7f, 0x8b, 0xa8, 0x1, 0x21, 0x22, 0x29, 0x57, 0x1e, 0x7f, 0x7c, 0x45, 0x8a, 0x92, 0x7d, 0x55, 0x5d, 0xb8, 0x41, 0x95, 0xf9, 0x1a, 0x37, 0xad, 0x10, 0x48, 0x2, 0xff, 0x47, 0x7, 0x9c, 0x63, 0xb5, 0x5c, 0x93, 0x61, 0xaf, 0x73, 0xc7, 0xc6, 0x56, 0x2f, 0xa5, 0x65, 0xa0, 0x61, 0x4f, 0x49, 0x64, 0xe8, 0xaf, 0xc2, 0x7c, 0xad, 0xfd, 0xe4, 0x77, 0xf0, 0x4e, 0x89, 0xa7, 0x3d, 0x7f, 0x41, 0x98, 0xea, 0x7a, 0x11, 0x79, 0x7, 0xae, 0x7a, 0xc8, 0x30, 0x1e, 0x12, 0x58, 0x6e, 0x51, 0x72, 0xca, 0x71, 0x66, 0xd4, 0x79, 0x8b, 0xb7, 0x8e, 0x1b, 0xc0, 0x81, 0xb2, 0xef, 0x4c, 0xf1, 0x29, 0x32, 0xb3, 0xf5, 0x15, 0x5b, 0x95, 0xc6, 0x22, 0xbb, 0xb2, 0x1, 0x99, 0xf3, 0xa4, 0x10, 0x2, 0x7b, 0xd9, 0xd2, 0xe6, 0xef, 0xb5, 0x43, 0x3e, 0xe1, 0x3b, 0x35, 0xfb, 0x67, 0xe9, 0x52, 0xff, 0xd, 0x82, 0xcc, 0x28, 0x1c, 0x28, 0x58, 0x21, 0x5e, 0x80, 0x20, 0x1e, 0x74, 0x3f, 0x8e, 0xbf, 0x9a, 0x83, 0x38, 0x31, 0x51, 0x33, 0xff, 0x68, 0x2a, 0xe1, 0x6, 0x66, 0xf3, 0xd1, 0x10, 0x37, 0xf5, 0xe5, 0x3d, 0xc5, 0x6b, 0xe8, 0xd0, 0xde, 0x26, 0xae, 0xae, 0xd3, 0xd7, 0x1, 0x4, 0xd9, 0xe3, 0xf2, 0xc6, 0x62, 0xf3, 0x7a, 0x67, 0x9d, 0x9, 0xff, 0x91, 0xe6, 0xf5, 0xb0, 0xf1, 0xd7, 0x36, 0x53, 0xa2, 0x49, 0x43, 0xbf, 0xca, 0xd3, 0xbc, 0x48, 0x7f, 0x6b, 0x5c, 0x62, 0x1d, 0x4a, 0x70, 0xc, 0x24, 0x5e, 0xee, 0x19, 0xb4, 0x3a, 0x7b, 0x93, 0xe1, 0xec, 0xfa, 0x5e, 0xb2, 0x4e, 0xa5, 0xa5, 0xdb, 0x97, 0x41, 0x39, 0x41, 0xe, 0xe1, 0xb1, 0xf3, 0x9e, 0xc1, 0x7, 0x0, 0x55, 0x3, 0xff, 0x13, 0x5a, 0x4c, 0x4f, 0x51, 0xf5, 0xe4, 0x6a, 0x33, 0x86, 0xbb, 0x7a, 0xb3, 0xd7, 0x5a, 0xcd, 0xee, 0x68, 0x27, 0x0, 0x48, 0x88, 0xb1, 0xb1, 0x87, 0xc7, 0xe0, 0xf4, 0xa6, 0x7, 0x1f, 0x5c, 0x31, 0x5d, 0xdc, 0x9f, 0x10, 0x7b, 0x2b, 0x5, 0x77, 0xf4, 0xdb, 0xaa, 0xe, 0x81, 0xf1, 0xb7, 0x12, 0xad, 0x64, 0x7e, 0x9a, 0x80, 0xf6, 0x7b, 0x71, 0x49, 0x97, 0x94, 0xe0, 0x57, 0x66, 0x6c, 0xf, 0xc2, 0x64, 0x81, 0xf6, 0xc8, 0x41, 0xe8, 0x9b, 0x2e, 0x1c, 0xf9, 0x43, 0xa1, 0x88, 0x28, 0x4c, 0x80, 0xf9, 0xf5, 0x2d, 0x17, 0xcf, 0x9c, 0xe6, 0x35, 0xdc, 0xf1, 0xe, 0xf9, 0x6f, 0x23, 0xdd, 0x28, 0x9a, 0xe0, 0xb6, 0xd7, 0xf5, 0x4a, 0xf6, 0xc0, 0x2f, 0x85, 0x60, 0x60, 0x15, 0xd9, 0x6a, 0x44, 0xb, 0xca, 0x90, 0x76, 0x67, 0x80, 0x25, 0x3d, 0x58, 0xad, 0xbb, 0xef, 0xb5, 0x16, 0x4c, 0x98, 0xa0, 0x30, 0xd2, 0xde, 0xd5, 0x37, 0x7e, 0xb9, 0x6e, 0xc1, 0x1, 0xca, 0x62, 0xc9, 0xf6, 0x74, 0x6e, 0x64, 0xff, 0x38, 0x73, 0xc0, 0xb1, 0x48, 0xdd, 0x7a, 0x76, 0x18, 0x94, 0x2, 0x68, 0x8, 0xb9, 0xb7, 0x20, 0xb1, 0x7a, 0xdb, 0xc6, 0xba, 0x9c, 0x6, 0x1c, 0x1, 0x92, 0x41, 0x3, 0xd6, 0xaf, 0xcd, 0xa4, 0x44, 0xe7, 0x34, 0x5e, 0x76, 0x5a, 0x59, 0x2d, 0x21, 0xf1, 0xd2, 0x86, 0x4e, 0x53, 0xcb, 0x9b, 0x15, 0x3e, 0x19, 0x84, 0x9a, 0x98, 0x4a, 0xa3, 0x1d, 0xd9, 0x3c, 0xe2, 0xc4, 0xc0, 0x84, 0xb6, 0x51, 0xfa, 0x59, 0x0, 0xf, 0x72, 0x92, 0x61, 0xfa, 0x36, 0x50, 0xe4, 0x87, 0xc, 0x6b, 0x81, 0xe0, 0x7, 0x2b, 0xba, 0xf6, 0x64, 0x92, 0xd7, 0x18, 0x77, 0xcd, 0x36, 0x20, 0x38, 0x46, 0x95, 0x58, 0xa0, 0x66, 0x86, 0x26, 0x56, 0x7b, 0xb5, 0xc1, 0x96, 0x70, 0x8d, 0x8d, 0x1c, 0x68, 0xc7, 0xc1, 0x7, 0xe8, 0x41, 0x30, 0x78, 0x85, 0xad, 0xe8, 0xae, 0xe1, 0x4d, 0xd3, 0x5f, 0xd0, 0x5d, 0x54, 0x1c, 0xf2, 0x80, 0x7f, 0x71, 0xb1, 0xbd, 0x22, 0x65, 0x42, 0x76, 0xc3, 0xbb, 0x1d, 0xa, 0xa1, 0xa4, 0xb8, 0xc2, 0x4e, 0x61, 0x6a, 0x9b, 0xa9, 0x7a, 0xf1, 0x30, 0xeb, 0xe0, 0x5a, 0x7f, 0x3c, 0xd1, 0xaa, 0x46, 0xf3, 0x6f, 0x1, 0xa0, 0xee, 0x27, 0x62, 0x1, 0x4, 0x51, 0x5d, 0x45, 0xb4, 0x15, 0xd6, 0xd8, 0xb4, 0x17, 0x9b, 0x5b, 0x6, 0x83, 0x6c, 0xb7, 0x60, 0x5f, 0x0, 0x5b, 0x3f, 0xbf, 0xd8, 0x2b, 0x2f, 0x88, 0xda, 0xf0, 0xf0, 0xf3, 0x5a, 0x67, 0xaf, 0x9a, 0x5, 0xa2, 0x18, 0x2f, 0xb7, 0xd0, 0x6f, 0xdd, 0xb7, 0x7d, 0xd8, 0x3b, 0xc5, 0x85, 0xd2, 0xb3, 0x7f, 0xde, 0x5e, 0x56, 0xb8, 0xea, 0x46, 0xcc, 0x32, 0x3c, 0xec, 0xc5, 0xb5, 0x50, 0xb6, 0x18, 0x9c, 0x2a, 0xbe, 0x31, 0x28, 0x56, 0xee, 0xbd, 0x17, 0x75, 0xa9, 0x84, 0x8a, 0xb9, 0x9b, 0xb3, 0xff, 0xf3, 0x2b, 0xe3, 0xee, 0x6, 0x68, 0xb, 0xb0, 0x2, 0xee, 0x2, 0xac, 0xc7, 0x31, 0x81, 0x60, 0x8a, 0x29, 0xbf, 0x1d, 0xce, 0x19, 0x78, 0x4c, 0xb7, 0x60, 0x3a, 0xc2, 0xdb, 0x2f, 0x72, 0xb0, 0xd, 0xbe, 0x22, 0xc3, 0x40, 0xbc, 0xb2, 0xce, 0x8d, 0x1b, 0xba, 0x80, 0xab, 0x22, 0x6d, 0xef, 0xe, 0x4, 0x54, 0xeb, 0xe6, 0x3c, 0x75, 0x8a, 0xf0, 0x3e, 0x64, 0x6d, 0x27, 0x9d, 0xca, 0x79, 0x50, 0x49, 0x11, 0x29, 0x28, 0xda, 0xc9, 0xac, 0xb1, 0x94, 0xeb, 0x2f, 0x9f, 0xca, 0x8f, 0x4a, 0xad, 0xb6, 0x39, 0xd6, 0xcf, 0x28, 0xbc, 0x4b, 0x2b, 0x73, 0x15, 0xbf, 0x1d, 0xdd, 0xcd, 0x3f, 0xf2, 0x1c, 0xe2, 0xbc, 0xb8, 0x47, 0x79, 0x4, 0xe9, 0x52, 0x1b, 0x2e, 0xab, 0x11, 0x52, 0x42, 0xc5, 0x50, 0x55, 0xd3, 0xfc, 0x73, 0xc9, 0x63, 0x6b, 0x1d, 0x21, 0xb4, 0xa3, 0x90, 0xd3, 0x8d, 0xe7, 0x78, 0xec, 0xc9, 0x5f, 0xfe, 0xf0, 0x9a, 0x90, 0x69, 0x9f, 0x82, 0xf8, 0xf9, 0x26, 0xe0, 0x58, 0xcf, 0xa1, 0x61, 0xb0, 0xf6, 0x18, 0xea, 0x72, 0xea, 0x2, 0x44, 0xad, 0x2, 0x74, 0xac, 0x13, 0x87, 0xfb, 0xab, 0xfe, 0xca, 0xf0, 0xaa, 0x6c, 0x30, 0xfd, 0x59, 0xcc, 0xb, 0xbb, 0x15, 0xf0, 0x7b, 0x93, 0xe0, 0xcf, 0xb2, 0x40, 0x80, 0x2e, 0x78, 0x8d, 0x2, 0x93, 0x72, 0x89, 0x1, 0x12, 0x53, 0xd9, 0xad, 0xa4, 0x95, 0xbf, 0x91, 0x9, 0xe5, 0x88, 0x7a, 0x7a, 0x98, 0x27, 0xe5, 0xc7, 0x9d, 0x5a, 0x3e, 0xaf, 0xb9, 0xd, 0x60, 0x74, 0x94, 0xfe, 0xe3, 0x3f, 0xee, 0xb1, 0xf2, 0x63, 0x90, 0x5e, 0xb2, 0x13, 0x2e, 0xba, 0x3f, 0x98, 0xd7, 0xe4, 0x1a, 0xbd, 0xde, 0x9c, 0x8, 0x5b, 0x3f, 0xeb, 0x7b, 0x19, 0xb0, 0xdb, 0x3d, 0xe8, 0xc7, 0xda, 0xd2, 0x89, 0xfb, 0x1, 0x79, 0xb0, 0x6a, 0x11, 0xb, 0x3a, 0x1b, 0x2a, 0x68, 0x18, 0x6a, 0x68, 0x1a, 0xfb, 0xd7, 0x9, 0x9a, 0xa6, 0x40, 0x24, 0x4, 0x6b, 0x25, 0xfb, 0xf4, 0xe0, 0x32, 0x3e, 0x33, 0xb3, 0xd3, 0x60, 0xed, 0x6a, 0xaa, 0xe5, 0x4d, 0xcd, 0xc6, 0xcf, 0xab, 0x65, 0xf, 0xba, 0x61, 0x69, 0x15, 0xb9, 0x50, 0x64, 0xcb, 0xe3, 0xe6, 0x47, 0x67, 0xfe, 0xc, 0xcf, 0x3e, 0xcf, 0x62, 0x38, 0xfd, 0x87, 0xbc, 0x12, 0x87, 0x80, 0xbc, 0xa9, 0x19, 0xbc, 0xe, 0xe1, 0x3b, 0xe3, 0x98, 0xa8, 0xfb, 0xf0, 0x21, 0x45, 0x69, 0x5d, 0xb7, 0xdc, 0xab, 0x5f, 0xfa, 0xb5, 0xd, 0x29, 0xdb, 0xde, 0x95, 0x3b, 0x33, 0x80, 0xf1, 0xc2, 0x21, 0xf7, 0xcb, 0x87, 0xe8, 0x39, 0x5e, 0x5e, 0x5d, 0xb3, 0x1d, 0xae, 0x9a, 0x7f, 0x53, 0xea, 0x7d, 0x98, 0xa6, 0xc3, 0x7f, 0xe9, 0xea, 0x7, 0xb9, 0xcb, 0x86, 0x8b, 0xea, 0x67, 0x15, 0x14, 0x65, 0xc4, 0xdb, 0xa2, 0xd3, 0x41, 0xe6, 0x3e, 0x6e, 0x9e, 0x67, 0x43, 0xef, 0x32, 0xd0, 0x8a, 0xca, 0xc7, 0xb8, 0xbe, 0x59, 0xa2, 0x73, 0xa9, 0x7d, 0x1f, 0x9, 0x31, 0x9a, 0x57, 0x3c, 0x86, 0x59, 0xc9, 0x77, 0x46, 0x3c, 0xfe, 0x31, 0x5d, 0xb9, 0x1e, 0xe, 0xf0, 0xcb, 0x2b, 0xa7, 0x8f, 0xdf, 0xc6, 0xc3, 0x7, 0xc7, 0x15, 0xa3, 0x92, 0x81, 0x35, 0x36, 0xe, 0x6c, 0xcd, 0xe, 0x41, 0x59, 0x21, 0x14, 0xe5, 0xb0, 0x65, 0x20, 0xb, 0x14, 0xbc, 0x5c, 0xb9, 0x1f, 0xc1, 0x47, 0xc0, 0x8a, 0x33, 0x1c, 0x73, 0x29, 0xb9, 0x7c, 0xde, 0x9e, 0xb4, 0xd8, 0xc9, 0x20, 0x69, 0x12, 0x64, 0x4e, 0x99, 0x4b, 0xb4, 0xe3, 0xdd, 0xd8, 0xa9, 0x93, 0x74, 0x89, 0x64, 0x7b, 0xa9, 0xe0, 0x18, 0x21, 0x8b, 0xf8, 0x31, 0xb8, 0x68, 0xc8, 0x92, 0x82, 0x38, 0xbe, 0x1a, 0xff, 0xa2, 0x3d, 0xa1, 0x82, 0x90, 0x4, 0x75, 0x3c, 0xd7, 0x2, 0x3, 0x0, 0x92, 0x9c, 0x41, 0x44, 0x4b, 0x12, 0x65, 0x61, 0xe, 0x89, 0x5b, 0xce, 0x68, 0x5e, 0x6b, 0x6c, 0x6a, 0x1a, 0x41, 0xa8, 0xc, 0x8f, 0x3d, 0x14, 0x6b, 0xe8, 0x4e, 0xa4, 0x25, 0x14, 0x83, 0x2b, 0x5f, 0x2d, 0x0, 0xab, 0xcc, 0x8a, 0xb8, 0xe2, 0x1, 0x3a, 0x22, 0x84, 0x14, 0xb0, 0x43, 0x43, 0xc5, 0x59, 0x51, 0x49, 0x98, 0xa, 0xb5, 0x42, 0x4e, 0x4e, 0xa9, 0xea, 0x9b, 0x8c, 0x40, 0x45, 0xca, 0x45, 0x6, 0x1b, 0x15, 0xe5, 0x81, 0xd, 0x66, 0x64, 0x99, 0x95, 0x66, 0xa0, 0x20, 0xc7, 0xb8, 0x8b, 0xad, 0x9c, 0x6e, 0xe9, 0x96, 0x73, 0x15, 0x76, 0xec, 0x98, 0xad, 0xd9, 0x63, 0x6f, 0xb0, 0xce, 0xc2, 0xcc, 0x66, 0xe0, 0xc1, 0xfc, 0xb2, 0x52, 0x8a, 0x11, 0x7e, 0x9a, 0xe6, 0x53, 0x9e, 0xbc, 0x5e, 0x9d, 0x5e, 0xef, 0x47, 0x8b, 0x88, 0x6a, 0x86, 0x6b, 0xd7, 0x41, 0xd7, 0xb6, 0xaf, 0xfd, 0x68, 0xe7, 0x95, 0x58, 0xd5, 0xa4, 0x2f, 0xb5, 0x7d, 0x9a, 0xcf, 0x31, 0xd3, 0x6, 0xd1, 0x81, 0x94, 0x21, 0x66, 0x66, 0x34, 0xb0, 0x8, 0x67, 0x90, 0x17, 0x5a, 0x1b, 0x19, 0x3a, 0xd8, 0x57, 0xb, 0x3e, 0x14, 0xe1, 0x2a, 0x59, 0x26, 0x3a, 0x14, 0x2a, 0x59, 0x42, 0x53, 0x28, 0x35, 0x38, 0x61, 0x1d, 0xff, 0x5a, 0x76, 0xdc, 0xc8, 0xde, 0x2, 0x31, 0xd7, 0x44, 0x9d, 0x4a, 0xf2, 0x97, 0xa5, 0x17, 0x50, 0xf5, 0x6d, 0x9f, 0xf6, 0x26, 0x62, 0xc9, 0x6b, 0xca, 0xea, 0x58, 0x2d, 0x64, 0xc1, 0xc6, 0xb4, 0x48, 0xbf, 0x2, 0x5e, 0x5f, 0x67, 0x4d, 0x72, 0xe6, 0xeb, 0x2e, 0xbd, 0x3e, 0x79, 0x2e, 0xb4, 0xdc, 0xbd, 0x5e, 0xf0, 0xd2, 0x97, 0xf5, 0xf5, 0x5c, 0x4, 0x84, 0x55, 0xa3, 0x65, 0xf5, 0xc4, 0x35, 0xce, 0x57, 0xc2, 0x17, 0x30, 0x89, 0x64, 0xef, 0x3b, 0x18, 0x7b, 0xc0, 0x48, 0x65, 0xee, 0xb7, 0x7a, 0x81, 0xb1, 0x2c, 0xb, 0x61, 0x1, 0x23, 0x36, 0x97, 0xfc, 0x97, 0x32, 0x30, 0xf8, 0xf2, 0x21, 0x12, 0x2f, 0x29, 0x9b, 0x85, 0xbb, 0x5e, 0x8f, 0xa8, 0xc4, 0xee, 0x16, 0x76, 0xab, 0x61, 0x17, 0x0, 0x8c, 0xca, 0xd6, 0x5e, 0x85, 0x22, 0xaa, 0xb4, 0xa3, 0x8a, 0xd0, 0xe, 0xdf, 0x4f, 0x1e, 0x95, 0x33, 0xc, 0x62, 0xd, 0xba, 0x9b, 0x19, 0x27, 0xec, 0xa1, 0xc7, 0xff, 0xb7, 0xc, 0xae, 0xb0, 0x67, 0x1f, 0xcb, 0x6f, 0xbd, 0x94, 0x19, 0x55, 0x20, 0x7e, 0x8a, 0x72, 0xe, 0xff, 0x50, 0xf4, 0xaa, 0x26, 0xf6, 0x1e, 0xd5, 0x57, 0xd2, 0x9b, 0x34, 0xab, 0xf5, 0x61, 0x64, 0x65, 0xf6, 0xc8, 0x9d, 0x41, 0x3a, 0x51, 0xfc, 0xf6, 0xb9, 0x1a, 0x5b, 0x32, 0xb9, 0x19, 0x78, 0xa9, 0x3d, 0xd4, 0xa9, 0x20, 0x8f, 0x82, 0x7e, 0x83, 0xd1, 0xad, 0x52, 0xdb, 0x87, 0xd6, 0x49, 0x10, 0x4, 0x92, 0x1b, 0xf7, 0x8, 0x82, 0x1, 0xca, 0xd7, 0x16, 0x73, 0xf6, 0xa3, 0xdc, 0x7d, 0x1d, 0x3f, 0x47, 0x23, 0xc2, 0x1e, 0x88, 0xba, 0xa2, 0x75, 0xbb, 0x99, 0x85, 0x60, 0x52, 0xfd, 0x3d, 0x75, 0x74, 0x4d, 0xc3, 0x34, 0xcb, 0x9d, 0xfd, 0x30, 0x7e, 0xd0, 0xa6, 0x9b, 0x58, 0x7, 0x93, 0xdd, 0x73, 0x7b, 0x26, 0xfa, 0x78, 0x3d, 0x3c, 0x74, 0x8d, 0x72, 0x1e, 0x60, 0xda, 0x83, 0xd0, 0xf9, 0xe1, 0xf9, 0x97, 0xbc, 0xd9, 0x47, 0x94, 0x71, 0x1a, 0x66, 0x6a, 0xa7, 0xe9, 0x0, 0xf2, 0x4f, 0xd3, 0x2d, 0xf6, 0xfb, 0xf6, 0x96, 0x64, 0x8c, 0xef, 0x83, 0x66, 0xf4, 0xa3, 0x42, 0xa1, 0x3a, 0x7c, 0xcb, 0x42, 0x46, 0x90, 0x47, 0x72, 0xce, 0x9d, 0x66, 0x0, 0xf9, 0xd3, 0x41, 0xaf, 0x6a, 0x83, 0x88, 0x19, 0x42, 0xe6, 0xf4, 0x81, 0x32, 0xcf, 0xa1, 0xa7, 0xb6, 0x1e, 0x59, 0x92, 0x15, 0x22, 0xb3, 0x48, 0xf8, 0x26, 0xa4, 0xc7, 0xba, 0x52, 0x22, 0x4a, 0xd0, 0xa7, 0xb7, 0xa1, 0xd7, 0x81, 0x83, 0xa2, 0x7, 0x96, 0x9f, 0x45, 0xa3, 0x47, 0xd2, 0x5b, 0xc, 0x56, 0xe4, 0x88, 0x57, 0x91, 0x7f, 0x4e, 0x39, 0x25, 0x4d, 0xe7, 0x6, 0x61, 0x50, 0x1c, 0xeb, 0x9c, 0x7d, 0xe5, 0x5e, 0xe5, 0x2e, 0xe3, 0xac, 0x67, 0x64, 0x24, 0xc5, 0x7e, 0xe, 0xaa, 0x78, 0xa4, 0x69, 0xe7, 0x41, 0xa6, 0xa2, 0x5c, 0x75, 0xa0, 0xc0, 0x2d, 0x2a, 0x44, 0xe9, 0x3a, 0x6b, 0xa4, 0x50, 0x48, 0xec, 0xd5, 0x11, 0xe7, 0xd4, 0x54, 0xd9, 0x88, 0x75, 0x97, 0xe6, 0xfd, 0x7d, 0x5a, 0xc0, 0x8d, 0x96, 0x11, 0xa8, 0xcf, 0x3c, 0x10, 0x9f, 0x30, 0xfb, 0x4a, 0x0, 0x6d, 0xd6, 0xb8, 0xa4, 0x5b, 0x8d, 0xee, 0x93, 0x75, 0x50, 0xdf, 0x6d, 0x51, 0x93, 0x5e, 0xcb, 0x8b, 0xfd, 0xa3, 0x9d, 0xf9, 0x45, 0xf3, 0xee, 0xfb, 0x54, 0x54, 0x13, 0xdb, 0xa, 0xdf, 0xe2, 0xa7, 0x1e, 0xad, 0xfc, 0x8c, 0x57, 0x22, 0xe4, 0x36, 0x16, 0xc5, 0x34, 0xb2, 0xc4, 0xbf, 0xe, 0x64, 0x69, 0xff, 0x61, 0x4b, 0x81, 0x1d, 0x2d, 0xad, 0x31, 0x54, 0x5b, 0xb6, 0x2c, 0x52, 0x1, 0x29, 0x45, 0xf4, 0xe6, 0xfd, 0xb1, 0x5e, 0x96, 0x12, 0x6b, 0x83, 0xa0, 0x81, 0x2b, 0x9a, 0xae, 0x29, 0xb3, 0x2, 0x85, 0xf9, 0xc1, 0xeb, 0xef, 0x8f, 0xff, 0x73, 0x4d, 0x7b, 0x62, 0xac, 0x79, 0xdd, 0x57, 0x84, 0x30, 0xf6, 0xc6, 0x47, 0x8, 0x71, 0x7d, 0xd9, 0xf5, 0x6d, 0xe3, 0x49, 0x6a, 0x8f, 0x17, 0xd7, 0xfc, 0x88, 0x27, 0x15, 0xd0, 0x90, 0xf6, 0x2c, 0x85, 0x66, 0xe0, 0xd1, 0x33, 0x95, 0x2d, 0xb5, 0x1e, 0x5, 0xeb, 0xbe, 0x16, 0x44, 0xca, 0xb8, 0x30, 0xcb, 0x53, 0x89, 0xf8, 0xd4, 0x6b, 0x27, 0xb6, 0x3a, 0x91, 0x71, 0xf9, 0xe0, 0x51, 0xfd, 0x32, 0x72, 0xa7, 0x2d, 0x8c, 0xf1, 0x87, 0xe6, 0xb6, 0xeb, 0x13, 0xaa, 0x45, 0x56, 0x7f, 0x61, 0xcb, 0xee, 0xeb, 0x44, 0x37, 0x52, 0x44, 0x58, 0x63, 0x83, 0xaa, 0x55, 0xe9, 0xec, 0x20, 0x25, 0xd, 0x80, 0x64, 0x67, 0x6b, 0xcc, 0x70, 0xc2, 0xd3, 0x9c, 0xe7, 0xab, 0xc9, 0x5c, 0xca, 0x39, 0x3e, 0xbd, 0x57, 0xde, 0x6, 0x85, 0xb7, 0x7c, 0x2, 0xba, 0xd5, 0x7b, 0xee, 0x88, 0xf2, 0xab, 0x75, 0x66, 0xf6, 0x75, 0x7a, 0xa4, 0x7c, 0x8c, 0x62, 0xad, 0x17, 0x2e, 0xb1, 0x9a, 0x51, 0x1, 0xa4, 0x1f, 0xb, 0x7c, 0x66, 0xca, 0x57, 0x89, 0x1f, 0x14, 0x79, 0x94, 0x4c, 0x28, 0xf4, 0xec, 0x93, 0x58, 0x6f, 0xbb, 0x2a, 0xdf, 0x25, 0x3b, 0x45, 0xe5, 0xbe, 0xad, 0xe2, 0x9a, 0x23, 0x4d, 0x49, 0xb1, 0x27, 0xd4, 0x75, 0xe6, 0x1f, 0x3e, 0x73, 0x91, 0x1c, 0x39, 0x9, 0xcd, 0x6d, 0xa7, 0x30, 0x25, 0xeb, 0xd1, 0xe6, 0xa6, 0xee, 0xa9, 0x1e, 0x8f, 0x35, 0xa, 0xac, 0xb3, 0x81, 0x71, 0x55, 0xdb, 0xc8, 0x4f, 0x58, 0x6a, 0xe2, 0x1a, 0x6e, 0xcc, 0x88, 0x2e, 0x46, 0x73, 0x4f, 0x8b, 0x2, 0x97, 0x6, 0x32, 0x53, 0xa7, 0xcb, 0x96, 0xbf, 0xac, 0xe3, 0x3c, 0xd4, 0x9d, 0x57, 0xf1, 0xc3, 0x5e, 0x1c, 0x92, 0x58, 0x35, 0xdc, 0x6e, 0x44, 0x74, 0x77, 0x94, 0xf9, 0x73, 0xd, 0x17, 0x45, 0x1e, 0xda, 0xfa, 0xe8, 0xe7, 0x8e, 0xe9, 0x34, 0xd1, 0x7e, 0x95, 0x7e, 0xd6, 0x73, 0x6, 0x0, 0x47, 0xb8, 0xfe, 0xd6, 0xf9, 0xe0, 0xa3, 0xbf, 0xf8, 0x2f, 0xa3, 0x95, 0x41, 0x27, 0xfe, 0x73, 0x53, 0xfb, 0xce, 0x63, 0xa8, 0x1, 0x60, 0x25, 0x5f, 0xb0, 0x7c, 0x37, 0x60, 0x80, 0x12, 0xfd, 0xf0, 0x4a, 0x1, 0x88, 0xd, 0x81, 0x5b, 0xdc, 0x15, 0xc8, 0xa0, 0x2, 0x48, 0xf0, 0x81, 0x1, 0x8f, 0xe1, 0xf1, 0xb3, 0x1d, 0x8, 0x81, 0xb, 0xf3, 0xc1, 0x55, 0x92, 0xfe, 0xab, 0xf1, 0x0, 0x18, 0x67, 0xba, 0x30, 0x4, 0x48, 0x2c, 0xa4, 0x96, 0x23, 0x42, 0x51, 0x92, 0xc, 0x91, 0x24, 0x24, 0x47, 0x5e, 0x8f, 0x49, 0xc2, 0xe, 0xfc, 0x92, 0x19, 0xe9, 0xc7, 0xec, 0xe8, 0x53, 0xef, 0x52, 0x8b, 0xc6, 0xe8, 0xb0, 0x81, 0x48, 0x3a, 0x32, 0x9d, 0x4b, 0x3e, 0x58, 0x8, 0xe6, 0x4f, 0x48, 0x20, 0x92, 0x84, 0xcf, 0xcb, 0x5f, 0x38, 0x69, 0x7a, 0x53, 0x52, 0x4c, 0x96, 0xc6, 0x7e, 0x4, 0xc7, 0x29, 0x9, 0x3e, 0x30, 0x23, 0xa8, 0xf1, 0x38, 0x2, 0x90, 0xc9, 0xc0, 0x21, 0xc6, 0xdb, 0xbb, 0x58, 0x31, 0x2d, 0x42, 0x3f, 0x6, 0x9e, 0x94, 0x9c, 0x42, 0x6e, 0xa9, 0x7b, 0xd0, 0xe3, 0x6a, 0xb4, 0xc, 0xc8, 0xf1, 0x6, 0x89, 0x40, 0x58, 0x52, 0x54, 0x92, 0x4d, 0x28, 0xc2, 0x43, 0xe4, 0xfd, 0x52, 0xbe, 0x90, 0xfc, 0x8d, 0x9c, 0x1a, 0x28, 0x49, 0xd2, 0x44, 0x92, 0x4, 0x3f, 0xc9, 0xff, 0x12, 0x11, 0x2b, 0x19, 0x69, 0x58, 0x72, 0xd4, 0xb5, 0xa5, 0x55, 0xf9, 0x4f, 0xa9, 0x14, 0x20, 0xb5, 0x9f, 0x2b, 0xa2, 0x40, 0x57, 0xbe, 0x1d, 0x8d, 0x67, 0x33, 0x8b, 0x25, 0x66, 0x22, 0x54, 0xb9, 0x4a, 0x8b, 0x96, 0x9c, 0xf5, 0x7c, 0x55, 0x93, 0xcf, 0xa2, 0x22, 0x94, 0x2f, 0x91, 0x5a, 0x16, 0xcf, 0xe2, 0xc6, 0x8b, 0x61, 0x25, 0xdc, 0x9c, 0x8f, 0x4d, 0xe0, 0x4a, 0x11, 0x39, 0x49, 0x89, 0x4c, 0x41, 0xd4, 0x37, 0xa2, 0x42, 0x31, 0xc2, 0x41, 0x5a, 0x2d, 0x11, 0x88, 0x37, 0x65, 0x5, 0x20, 0x55, 0x6c, 0x10, 0x52, 0xd5, 0xa1, 0x1e, 0x6c, 0xc4, 0x7f, 0xd9, 0xb9, 0x68, 0x69, 0x5f, 0xb1, 0xd1, 0x45, 0x82, 0x31, 0xfb, 0xc5, 0xaf, 0xa5, 0x4c, 0x95, 0x1d, 0xff, 0x3a, 0xe8, 0x9d, 0xaf, 0xfd, 0xa4, 0x27, 0xbc, 0x41, 0x50, 0x17, 0x33, 0x7b, 0x55, 0x20, 0x92, 0x84, 0x8f, 0x22, 0xfa, 0x1c, 0xc9, 0xdd, 0xca, 0xbf, 0xf9, 0x57, 0x0, 0xd5, 0x70, 0x45, 0x1a, 0x38, 0x65, 0x6f, 0xa6, 0x5, 0x1d, 0x64, 0xca, 0x4a, 0x2b, 0x91, 0x7b, 0xdd, 0xa2, 0x8f, 0xd4, 0x5c, 0x9, 0xa4, 0xe3, 0x65, 0x1f, 0x7a, 0x3f, 0x39, 0xaa, 0xb9, 0xaa, 0xd4, 0x33, 0x34, 0x7b, 0x12, 0x3a, 0xb3, 0xd4, 0xe2, 0x91, 0xec, 0x9d, 0xcd, 0x93, 0x77, 0xc2, 0x3e, 0x49, 0xd9, 0x4, 0xb0, 0x59, 0xcb, 0x53, 0x1, 0xce, 0xf5, 0xd7, 0x6d, 0xce, 0xec, 0x50, 0x1c, 0xc2, 0xdd, 0xd0, 0x81, 0x8a, 0x99, 0xef, 0x85, 0x1b, 0xbd, 0xb2, 0x96, 0xaa, 0x67, 0xf1, 0x8a, 0xfe, 0x54, 0xc2, 0xcd, 0xdb, 0x8d, 0xed, 0x48, 0xa7, 0xfe, 0x3c, 0x5e, 0x38, 0x37, 0x34, 0x76, 0x58, 0x40, 0x2d, 0x72, 0xb5, 0x1f, 0x64, 0xd6, 0x46, 0xbb, 0xec, 0x16, 0xaa, 0x54, 0xa2, 0xb1, 0xbd, 0xb5, 0x87, 0xda, 0x7a, 0x82, 0xd0, 0x30, 0x8a, 0x36, 0x81, 0x30, 0xd8, 0x7a, 0x1c, 0xa0, 0xc1, 0xa, 0x33, 0xf4, 0x53, 0x99, 0xd1, 0xef, 0x51, 0x82, 0x7e, 0x1a, 0xdb, 0x50, 0xbb, 0x13, 0xb4, 0x4d, 0x60, 0x1d, 0x90, 0x80, 0x63, 0x60, 0x11, 0x8d, 0x58, 0x75, 0x90, 0x3b, 0x1e, 0x52, 0x6f, 0x5c, 0xd7, 0xd, 0x58, 0x58, 0x33, 0x3c, 0xd2, 0xb3, 0x22, 0xa0, 0xa4, 0xe3, 0x6d, 0x46, 0xca, 0x66, 0x31, 0x94, 0x1c, 0x1, 0xd9, 0xbd, 0x90, 0xae, 0xa6, 0x49, 0x6e, 0x13, 0x6, 0xb2, 0xbd, 0x41, 0x99, 0x33, 0x7a, 0x20, 0x38, 0x2c, 0x57, 0xe0, 0xcc, 0x63, 0xb9, 0xe6, 0x51, 0xb2, 0xa6, 0xba, 0x15, 0x53, 0xe5, 0x4, 0xfb, 0x36, 0x6f, 0x33, 0x3c, 0x2, 0x22, 0x1b, 0xf2, 0xcf, 0x58, 0x2a, 0xd9, 0xa3, 0x8d, 0x6, 0x2e, 0x64, 0xc, 0x1f, 0x94, 0x58, 0x5f, 0x7, 0x84, 0xfc, 0xb4, 0x63, 0x16, 0x6a, 0xdd, 0x41, 0xd0, 0xc0, 0x94, 0xb5, 0x29, 0x19, 0xd6, 0x2b, 0xe9, 0xf7, 0xd8, 0x29, 0xda, 0x7, 0x3e, 0x22, 0xe5, 0x41, 0xb2, 0xf3, 0xd6, 0xc6, 0xfa, 0x4c, 0xdc, 0xfa, 0x90, 0xc2, 0xc8, 0x38, 0xc3, 0x5, 0x78, 0x33, 0xed, 0x92, 0xff, 0x37, 0x19, 0x68, 0xd0, 0x86, 0x4b, 0x65, 0xb2, 0x5a, 0x4, 0x8c, 0x9a, 0xab, 0xec, 0xb9, 0xed, 0x26, 0xbe, 0x47, 0xe4, 0x97, 0x7d, 0xfe, 0x88, 0xe5, 0x76, 0x5f, 0xdd, 0xc9, 0xd3, 0x26, 0x5, 0x45, 0xa9, 0x89, 0x5b, 0x15, 0x19, 0xa8, 0xca, 0xb9, 0x3e, 0xba, 0xe8, 0x94, 0x3c, 0x8d, 0x47, 0xa4, 0x6a, 0xcf, 0x1f, 0x63, 0x51, 0x6d, 0x57, 0x30, 0xff, 0xc0, 0x54, 0xa3, 0x8b, 0x5, 0xda, 0xd8, 0x40, 0x5, 0x2d, 0x64, 0xfc, 0xca, 0x92, 0x1d, 0x24, 0x72, 0x97, 0x85, 0x97, 0x77, 0x85, 0x27, 0x74, 0x70, 0x7b, 0xb5, 0x83, 0x41, 0x5e, 0x41, 0x9e, 0x78, 0xb2, 0x68, 0x55, 0x2f, 0xb6, 0x44, 0xb2, 0x3d, 0xb6, 0xae, 0x69, 0xb6, 0x95, 0xd9, 0xbd, 0x7c, 0x8a, 0xa6, 0x73, 0x26, 0x58, 0x58, 0x30, 0xd5, 0x87, 0xdd, 0x6b, 0x22, 0xe9, 0x88, 0xb1, 0x4b, 0x38, 0x7e, 0xa0, 0x31, 0x63, 0x1, 0xf, 0xfc, 0xc0, 0x20, 0x41, 0xc9, 0x97, 0x14, 0x8d, 0x13, 0xcc, 0x69, 0x42, 0x57, 0xf4, 0xa5, 0x35, 0xcc, 0xf, 0xb2, 0x1a, 0x94, 0x2d, 0x3, 0xd9, 0xf5, 0x4b, 0x62, 0x89, 0x64, 0x7a, 0x68, 0x4c, 0x92, 0x64, 0x25, 0x95, 0xd4, 0x8b, 0xe6, 0xd1, 0xa6, 0x5c, 0xf0, 0x36, 0x1b, 0xaf, 0x65, 0xc, 0x9, 0xb, 0xb7, 0x22, 0x76, 0x59, 0xd9, 0xd1, 0xb0, 0xe4, 0x5b, 0x39, 0xf9, 0xd3, 0xfe, 0xbb, 0x4b, 0xdf, 0x96, 0x5f, 0x45, 0xe5, 0x8d, 0xb, 0x73, 0x69, 0x52, 0x2, 0x12, 0x43, 0x8d, 0x9d, 0x74, 0xad, 0x6, 0x7b, 0x46, 0x93, 0xed, 0x9b, 0xbb, 0xad, 0x8b, 0x6e, 0x88, 0xa1, 0xad, 0x9f, 0xb5, 0xd3, 0x13, 0xe, 0x97, 0x7c, 0x7c, 0x3a, 0xd6, 0x6f, 0xb9, 0xaa, 0x0, 0x3b, 0xec, 0x86, 0x34, 0x30, 0xec, 0xa3, 0xff, 0xf9, 0x3f, 0x33, 0xbf, 0x7e, 0x7d, 0x88, 0xfa, 0xd8, 0x82, 0x30, 0xc2, 0x8b, 0x3c, 0xcd, 0x6b, 0x6b, 0xe8, 0xf4, 0xe5, 0xdb, 0x5e, 0xcb, 0xff, 0x48, 0x3, 0x76, 0xa8, 0x4c, 0x4, 0xb9, 0xb1, 0x3c, 0x78, 0x40, 0x96, 0x0, 0x0, 0x2c, 0x6b, 0x6, 0x0, 0x8c, 0xd8, 0xdf, 0x4, 0x56, 0xa7, 0x55, 0x80, 0xfa, 0x10, 0x38, 0xc5, 0x94, 0xf1, 0xaa, 0x43, 0xae, 0x37, 0xaa, 0x4b, 0x1d, 0xf3, 0x93, 0x24, 0x44, 0xf8, 0x20, 0x87, 0xb4, 0x4f, 0xd9, 0x10, 0x53, 0xba, 0x27, 0x6d, 0x76, 0x58, 0xf2, 0x9, 0xff, 0xc1, 0xd8, 0xa, 0x5c, 0x54, 0x8, 0xf, 0x4e, 0xfb, 0x2b, 0x40, 0x6c, 0xac, 0x81, 0x9f, 0x82, 0xd8, 0xf9, 0x87, 0x58, 0xc9, 0x81, 0x7b, 0x36, 0x32, 0x20, 0xfc, 0x5f, 0x64, 0xe7, 0xd0, 0x1c, 0xc9, 0xfd, 0x6a, 0x2f, 0x89, 0x79, 0xfc, 0x79, 0x59, 0xb, 0x75, 0xec, 0x10, 0xcb, 0x17, 0x7f, 0x62, 0x5, 0x64, 0x4a, 0x39, 0xce, 0xf8, 0x74, 0x1d, 0xcb, 0x22, 0x32, 0x74, 0x21, 0x16, 0x8, 0xbe, 0xac, 0x21, 0x93, 0x67, 0x2, 0x8, 0x65, 0xcd, 0x15, 0xc5, 0x5a, 0x2, 0x58, 0x18, 0x6f, 0x5c, 0x4a, 0x16, 0x6e, 0xb1, 0x93, 0x2a, 0xaa, 0x3e, 0x64, 0x6d, 0xa4, 0x25, 0xb4, 0x29, 0x15, 0xc, 0x3b, 0x74, 0x8c, 0x7e, 0x4, 0x8a, 0xba, 0x9d, 0x8c, 0xd7, 0x64, 0xb, 0x22, 0x99, 0x21, 0x8a, 0x47, 0x65, 0xd2, 0x98, 0xfe, 0x39, 0xc, 0xbd, 0x70, 0xa0, 0x84, 0x66, 0xc4, 0xa8, 0x89, 0x51, 0x77, 0xe4, 0xa5, 0x49, 0xa8, 0x99, 0x22, 0x24, 0x42, 0xa, 0x92, 0x69, 0x8f, 0xe5, 0x35, 0x68, 0xe9, 0xa2, 0x41, 0x99, 0xca, 0xc8, 0x86, 0x48, 0xb0, 0x5b, 0x34, 0x34, 0x89, 0x21, 0x64, 0xa5, 0x38, 0x80, 0x5d, 0x17, 0x5b, 0xd0, 0xaa, 0x46, 0x46, 0x35, 0xa2, 0xce, 0x46, 0x7c, 0xb2, 0xe9, 0x28, 0x8f, 0xc6, 0x40, 0x30, 0x8b, 0x56, 0xcd, 0x64, 0x44, 0x91, 0xd, 0xaa, 0xc2, 0xae, 0xe2, 0x9b, 0x84, 0x59, 0xfe, 0xd5, 0xec, 0x51, 0x51, 0x8c, 0xaf, 0x32, 0x72, 0x5c, 0x95, 0xd4, 0xb6, 0x86, 0xd0, 0xc6, 0xd2, 0x78, 0x12, 0x50, 0x7b, 0x19, 0xa, 0x11, 0x20, 0x71, 0x80, 0x45, 0x19, 0xd, 0x3b, 0xa9, 0x5a, 0x5a, 0xe0, 0xa1, 0xb9, 0x9d, 0x18, 0x21, 0x29, 0xb2, 0x3b, 0x89, 0xaa, 0x46, 0xeb, 0x8, 0x14, 0xcc, 0x8b, 0x62, 0x67, 0x72, 0x72, 0x2d, 0x4b, 0x77, 0x5a, 0x8e, 0xcd, 0xe1, 0xd3, 0x10, 0x48, 0xd4, 0x8c, 0x10, 0xe7, 0x4, 0x29, 0x63, 0x1f, 0x81, 0x4d, 0x5e, 0x9c, 0xc9, 0x86, 0xaf, 0x5b, 0xe9, 0xe6, 0x6d, 0x1a, 0x95, 0x34, 0x22, 0xa1, 0x45, 0x1c, 0x8a, 0xf1, 0xbc, 0xf8, 0x11, 0x82, 0x98, 0xfd, 0xa3, 0x82, 0xc6, 0x49, 0xd6, 0x98, 0x64, 0x9c, 0x37, 0x9, 0x78, 0x61, 0x26, 0xb6, 0x64, 0x86, 0x52, 0x6, 0xdc, 0x8c, 0xb9, 0x55, 0x21, 0xa5, 0xd6, 0x54, 0x52, 0xb0, 0x51, 0xb7, 0x30, 0x2e, 0x7f, 0x7b, 0x26, 0x38, 0x6f, 0x2, 0x6c, 0x15, 0x58, 0x80, 0x54, 0x4d, 0x4f, 0x59, 0xd, 0xd3, 0x54, 0x38, 0x63, 0x73, 0xce, 0x3a, 0xa9, 0xcc, 0xda, 0xcb, 0x68, 0x91, 0x76, 0x19, 0xfd, 0xa, 0x4a, 0xb7, 0x7a, 0x82, 0x59, 0x8, 0xa8, 0x6e, 0x63, 0x9c, 0x1b, 0x5b, 0x8, 0xee, 0x71, 0x44, 0xc, 0x3b, 0xc, 0x8b, 0x13, 0xce, 0x26, 0x58, 0xa1, 0x1, 0xaa, 0xb, 0xb0, 0x14, 0xd6, 0x8e, 0x62, 0xfc, 0x3d, 0xaa, 0xb7, 0x6c, 0x41, 0xa0, 0x5b, 0x20, 0xd0, 0xe5, 0xa4, 0x5b, 0x74, 0x48, 0x21, 0x9a, 0x11, 0xd4, 0xac, 0xa4, 0xed, 0x52, 0xc8, 0xf3, 0x66, 0x92, 0x23, 0xb7, 0x71, 0x56, 0x1d, 0x28, 0xf4, 0x20, 0xab, 0x3f, 0x53, 0x63, 0xa0, 0x5a, 0xd, 0x60, 0x8a, 0x89, 0x49, 0x9a, 0x66, 0x6a, 0x11, 0xb8, 0x5, 0x62, 0x4d, 0x74, 0x76, 0x48, 0x49, 0xe6, 0xda, 0xb4, 0x82, 0x2b, 0x7c, 0xdc, 0x99, 0xee, 0x1f, 0x73, 0x95, 0x79, 0xd8, 0x2d, 0x65, 0x5, 0xaa, 0x41, 0x9a, 0x73, 0xed, 0x74, 0x6d, 0x36, 0xda, 0xaf, 0xa5, 0x4d, 0x9f, 0x1a, 0xd6, 0x77, 0x2, 0xac, 0x1c, 0xc1, 0xfa, 0xe9, 0x2c, 0x24, 0x15, 0xb8, 0x92, 0xc1, 0xc5, 0x5f, 0xd, 0x16, 0x14, 0xa2, 0x2d, 0x3b, 0xd, 0xf6, 0x2c, 0x7b, 0x29, 0x36, 0x50, 0x29, 0x9, 0x49, 0xfd, 0xce, 0xf0, 0x44, 0x39, 0x46, 0xe5, 0x5f, 0xf0, 0x41, 0x40, 0x5c, 0x3c, 0x72, 0x45, 0xa9, 0x37, 0x2e, 0x69, 0x63, 0xbc, 0xe3, 0x7a, 0x45, 0x13, 0x5d, 0x3d, 0x99, 0xcb, 0x3c, 0xd5, 0x38, 0xaf, 0x96, 0xab, 0x6, 0xb3, 0xd5, 0xc, 0x61, 0x22, 0x52, 0x9a, 0xdf, 0xba, 0x58, 0x93, 0xed, 0x62, 0xf5, 0x8, 0x22, 0xeb, 0x42, 0x22, 0xd6, 0x75, 0x67, 0x0, 0xcd, 0xb7, 0xab, 0x34, 0xc3, 0xad, 0xcf, 0x26, 0xdd, 0x62, 0x7f, 0x41, 0xe2, 0x6b, 0x25, 0xac, 0xce, 0x78, 0x9e, 0x29, 0xe3, 0x47, 0xf0, 0x5, 0x0, 0x89, 0x6f, 0x2f, 0x3a, 0x8, 0x82, 0xbc, 0x1d, 0x5a, 0x19, 0x61, 0x45, 0x4e, 0xdd, 0xc9, 0x21, 0x46, 0x7f, 0xd8, 0x76, 0x5e, 0x2f, 0x4f, 0xfb, 0xb9, 0x4f, 0x6b, 0xd3, 0xfa, 0x66, 0xb7, 0x3a, 0xa9, 0x20, 0x22, 0x2f, 0xae, 0x30, 0x17, 0x0, 0xc9, 0xcf, 0x7d, 0x0, 0x6c, 0x3a, 0x42, 0xa1, 0x2b, 0x80, 0xe8, 0x64, 0xc8, 0x68, 0xe5, 0x42, 0x96, 0xa4, 0x42, 0x28, 0x1e, 0x4f, 0xac, 0xb1, 0x82, 0xf8, 0x7e, 0x6, 0xb4, 0x86, 0x60, 0x9f, 0xca, 0x1e, 0x1a, 0x8f, 0xc, 0xc5, 0xeb, 0xf5, 0xef, 0x8a, 0xc4, 0x15, 0xec, 0x61, 0x7, 0x4c, 0x13, 0x30, 0x13, 0x28, 0x5a, 0x6a, 0xce, 0x3c, 0x8d, 0x4e, 0x1b, 0x87, 0x89, 0x78, 0x5a, 0x69, 0xdc, 0x26, 0x9a, 0x10, 0x83, 0xc3, 0x62, 0xad, 0x48, 0x78, 0x4b, 0xd4, 0x2b, 0xa3, 0xd8, 0xae, 0x2f, 0xb2, 0x37, 0x23, 0x9f, 0xaa, 0x25, 0x3a, 0x6, 0x2, 0x59, 0x3a, 0x12, 0x12, 0x60, 0x48, 0xf0, 0x28, 0x3d, 0xe0, 0x47, 0x8c, 0x50, 0x8a, 0x36, 0x7f, 0xc3, 0x2b, 0x14, 0x2d, 0x45, 0x98, 0x4, 0xcb, 0xb6, 0x50, 0x38, 0xfd, 0x7e, 0x4b, 0x56, 0xb2, 0xa1, 0xbe, 0x41, 0x6, 0xce, 0x11, 0x6f, 0xfd, 0xd0, 0x48, 0x6c, 0xc, 0xa4, 0x1e, 0xb0, 0x44, 0x7, 0x9, 0x53, 0x2f, 0x44, 0xa2, 0x3a, 0x9, 0x65, 0x4d, 0xe2, 0xb5, 0x49, 0x15, 0x5d, 0x11, 0x4a, 0x38, 0x9a, 0xce, 0x53, 0xca, 0x92, 0x99, 0xe3, 0x1c, 0x2a, 0x28, 0x59, 0x6c, 0xde, 0xa2, 0x8e, 0x56, 0x5f, 0x82, 0xd0, 0xb3, 0x4f, 0xbb, 0x1a, 0x5c, 0x9, 0xb5, 0xeb, 0xcf, 0xca, 0x2c, 0xa4, 0x74, 0xe4, 0xc6, 0x44, 0x4e, 0x7e, 0x73, 0x27, 0x76, 0xc, 0xda, 0x8a, 0xc, 0xf9, 0xd1, 0xb5, 0x27, 0xb, 0xae, 0x6a, 0xd2, 0x67, 0xea, 0x9, 0xc3, 0xb2, 0x96, 0x74, 0xf6, 0xa5, 0x98, 0xe, 0xc6, 0x37, 0xa0, 0x5d, 0xc4, 0x32, 0xa9, 0xd0, 0x40, 0x91, 0xfa, 0x9, 0xec, 0xe5, 0xb5, 0x2b, 0x20, 0xe7, 0xf8, 0x6f, 0xf0, 0x8c, 0x8d, 0x4f, 0x20, 0x39, 0x93, 0xc1, 0xaf, 0x13, 0x77, 0x3b, 0x1d, 0x8, 0xa6, 0x15, 0x4b, 0xc2, 0xa7, 0xdd, 0x2a, 0xa9, 0xb4, 0xc5, 0x27, 0xdf, 0x30, 0x2f, 0xea, 0x8c, 0xf3, 0xe2, 0x61, 0x16, 0x69, 0xab, 0x1a, 0x71, 0x53, 0x62, 0xc, 0x1a, 0xf, 0x83, 0xcb, 0xfa, 0xb1, 0x4e, 0x6b, 0x5e, 0xb, 0x48, 0x4, 0xba, 0x99, 0xa, 0x16, 0x72, 0x15, 0xa4, 0x27, 0xc9, 0x35, 0x1e, 0x32, 0xa2, 0xac, 0x78, 0x1a, 0xea, 0xe6, 0x42, 0xfb, 0x6f, 0x82, 0xc6, 0xa7, 0x12, 0xa8, 0xed, 0x7, 0xbf, 0x56, 0x55, 0x95, 0xec, 0x85, 0x7d, 0xc, 0x7, 0x8c, 0xde, 0x8, 0x2a, 0xa8, 0x6a, 0x23, 0xb, 0x56, 0x4, 0x7f, 0x8d, 0x7f, 0x7a, 0xa0, 0xe6, 0x18, 0xd4, 0xab, 0xbb, 0x8c, 0xa8, 0x18, 0x43, 0xf8, 0x66, 0xb1, 0x6a, 0xda, 0xdf, 0xbb, 0xc4, 0x1d, 0x71, 0x74, 0x7b, 0x52, 0xea, 0x84, 0x53, 0x23, 0x7a, 0x94, 0x33, 0x79, 0x91, 0x32, 0x65, 0xdc, 0x2d, 0x7f, 0x43, 0xcc, 0xb5, 0xa3, 0xc1, 0x51, 0x50, 0xae, 0x90, 0xe1, 0x3a, 0x2, 0xaa, 0x52, 0x8e, 0xea, 0x87, 0xad, 0xf5, 0xcb, 0xa6, 0x29, 0xac, 0xe3, 0x40, 0xb1, 0x88, 0xea, 0x40, 0x92, 0x27, 0xf8, 0xb9, 0xaa, 0x77, 0xf9, 0x48, 0x6b, 0x10, 0xa6, 0xba, 0x92, 0x3e, 0xfa, 0x66, 0xd5, 0x61, 0x45, 0x70, 0xe6, 0xf3, 0xd6, 0xed, 0x7a, 0x16, 0xc, 0x4b, 0xda, 0xca, 0x7b, 0x34, 0x68, 0x53, 0x1c, 0xa5, 0x11, 0x58, 0xe5, 0xd0, 0xb2, 0xa5, 0x9b, 0x84, 0xb2, 0x23, 0x25, 0x9c, 0x1f, 0x46, 0xe6, 0x66, 0xfe, 0x5d, 0x10, 0x14, 0xbd, 0xb, 0x0, 0xe7, 0x3e, 0x5d, 0x79, 0x78, 0x4b, 0xa4, 0x27, 0x25, 0xb6, 0x8d, 0x7, 0xd, 0xd9, 0xc2, 0xf0, 0xb4, 0x2d, 0xc9, 0x94, 0xc5, 0xcf, 0x19, 0x37, 0x6a, 0x7a, 0x0, 0xd8, 0xaa, 0xa7, 0x63, 0x79, 0x45, 0xe6, 0x23, 0x99, 0xe, 0x69, 0x53, 0x21, 0xe9, 0x2, 0x25, 0xa3, 0xe7, 0x53, 0x3, 0xe2, 0x43, 0x48, 0xd7, 0xf9, 0x1a, 0xaf, 0x7, 0x7a, 0x30, 0xbb, 0x4a, 0xeb, 0x5c, 0x9, 0x57, 0xd2, 0x81, 0xa2, 0x66, 0x20, 0xc9, 0xa3, 0x68, 0xcc, 0x12, 0x93, 0x80, 0x57, 0xe1, 0x32, 0x2, 0x56, 0x91, 0xea, 0xe7, 0x9c, 0x83, 0xf7, 0x46, 0xcb, 0xcc, 0xd2, 0xdf, 0xff, 0x94, 0xe6, 0x9c, 0xaa, 0x1c, 0xf8, 0x8c, 0x9e, 0x61, 0xb9, 0x43, 0xa2, 0xba, 0x90, 0xec, 0xcc, 0xc7, 0x8d, 0xe4, 0x65, 0xac, 0x4d, 0x3e, 0x5b, 0x9, 0x2a, 0x29, 0xfd, 0x27, 0xf9, 0x5b, 0x4a, 0x31, 0xa4, 0x26, 0x49, 0x2c, 0x9c, 0xcb, 0x69, 0xc5, 0xe6, 0x96, 0xdc, 0xaf, 0x1, 0x58, 0x30, 0x5b, 0x97, 0xd5, 0x6b, 0xea, 0x3f, 0x92, 0x4b, 0xdf, 0xe7, 0x82, 0xf0, 0x1b, 0x96, 0x2e, 0x4b, 0x28, 0xbb, 0x71, 0x48, 0xc3, 0xe6, 0xb8, 0x19, 0x7a, 0xa0, 0x4f, 0xea, 0x6d, 0xc0, 0x3a, 0x40, 0xd7, 0x9c, 0xd0, 0x8e, 0xc3, 0x36, 0xb7, 0x85, 0x46, 0xfb, 0x57, 0x94, 0x38, 0x89, 0x2, 0x58, 0x3a, 0xc7, 0x6b, 0xcf, 0x4b, 0x4, 0xfa, 0x88, 0x17, 0x10, 0x47, 0x66, 0x82, 0x26, 0x58, 0x80, 0x40, 0xf7, 0x5, 0xf, 0xe8, 0x85, 0xc3, 0x1a, 0xa, 0xda, 0xf9, 0x2a, 0xbd, 0x3d, 0x8, 0x15, 0xee, 0x5d, 0x22, 0xc6, 0xa, 0x5d, 0x58, 0x2f, 0x59, 0xc7, 0xa4, 0x23, 0x1, 0x2f, 0xef, 0xd4, 0x95, 0x83, 0x81, 0x58, 0x56, 0xb5, 0x9b, 0xbd, 0x0, 0x47, 0xf6, 0x9e, 0x86, 0xb9, 0xad, 0x20, 0x41, 0x6f, 0x79, 0x78, 0x8, 0x1b, 0xda, 0xc6, 0x61, 0x32, 0x17, 0x15, 0x87, 0xac, 0xb2, 0x49, 0x98, 0x5f, 0x78, 0x86, 0xe2, 0x5a, 0xf8, 0xbc, 0xe0, 0x96, 0xc6, 0xc2, 0x57, 0xc1, 0xca, 0x7, 0x3b, 0xe1, 0x56, 0x67, 0x81, 0x63, 0x7c, 0x9b, 0xcd, 0x6d, 0xd1, 0xd2, 0x27, 0xfd, 0x95, 0xfa, 0x12, 0xe3, 0x9, 0x84, 0x66, 0x76, 0xc7, 0xab, 0x4, 0xbc, 0xd6, 0xc0, 0xcb, 0x9, 0x25, 0xfe, 0xf6, 0x29, 0x90, 0x8f, 0xb8, 0x50, 0xd5, 0x7e, 0x13, 0x11, 0xfa, 0xfa, 0x4c, 0xe8, 0x5c, 0xa5, 0xf4, 0xa1, 0x12, 0xf5, 0x91, 0xd0, 0x98, 0x91, 0x18, 0x92, 0x4b, 0xa2, 0x92, 0x2a, 0x42, 0xb1, 0x78, 0xd4, 0x6e, 0x9f, 0xf5, 0xe8, 0x41, 0x16, 0xd4, 0x18, 0x69, 0x2e, 0xdd, 0x4b, 0x81, 0x67, 0x1c, 0x67, 0x5d, 0xb8, 0xec, 0x7b, 0x39, 0x69, 0xfb, 0x51, 0xcb, 0xdb, 0xea, 0x3, 0x20, 0x72, 0x17, 0xbc, 0x70, 0x21, 0x84, 0xe8, 0xf1, 0x5e, 0xb, 0xc2, 0xa6, 0xd2, 0x15, 0xbe, 0x7a, 0x9b, 0x7, 0x60, 0xab, 0xae, 0xa6, 0xf7, 0x4a, 0xa9, 0x4f, 0x74, 0x74, 0x50, 0x11, 0x61, 0xef, 0x1d, 0x7, 0xb8, 0x4d, 0x65, 0x6c, 0x40, 0x9e, 0x22, 0xb0, 0x22, 0xcf, 0x81, 0xf0, 0x2c, 0x36, 0xc1, 0x62, 0x48, 0x16, 0x63, 0xab, 0x86, 0x97, 0xa2, 0xd7, 0x74, 0x26, 0xac, 0xb1, 0x2f, 0x80, 0xdc, 0xe, 0x98, 0x58, 0x27, 0x24, 0x8, 0xa7, 0x46, 0x38, 0x7f, 0xca, 0x83, 0x78, 0x3c, 0x9d, 0x9e, 0x3c, 0x28, 0x4a, 0x62, 0x37, 0x10, 0xd8, 0xf2, 0xf0, 0x62, 0x4f, 0x16, 0x38, 0x3d, 0x84, 0x97, 0xdc, 0x1f, 0xc7, 0x47, 0x43, 0xf0, 0x92, 0x72, 0x48, 0x18, 0x84, 0x2d, 0x31, 0x33, 0x92, 0xc9, 0x19, 0xe4, 0xb, 0x83, 0xa7, 0x2d, 0x5, 0x6e, 0x20, 0x4c, 0x14, 0x53, 0x84, 0x78, 0x90, 0x46, 0xb7, 0x43, 0x14, 0xb6, 0x20, 0xa6, 0xb6, 0x3d, 0xf1, 0xab, 0x7, 0xe8, 0xba, 0x52, 0xfa, 0xa, 0xc, 0x33, 0xca, 0x9b, 0x1f, 0xd8, 0x41, 0x82, 0x59, 0x4a, 0xe3, 0x8f, 0x1f, 0xef, 0x4f, 0x28, 0x22, 0x29, 0x4e, 0x5, 0xb1, 0x67, 0x89, 0x1c, 0x91, 0xe1, 0xe6, 0x45, 0x31, 0x73, 0x83, 0xf8, 0x4b, 0xa, 0xa5, 0xaf, 0x48, 0x5f, 0x25, 0xb8, 0xb8, 0x8d, 0x4c, 0x6c, 0x86, 0x49, 0xf9, 0x98, 0xfe, 0x4d, 0x32, 0x39, 0x8d, 0x3c, 0x3e, 0x94, 0xc3, 0xa7, 0x36, 0x9, 0x66, 0x45, 0x80, 0x59, 0x32, 0x94, 0xfc, 0x82, 0x3f, 0x30, 0x32, 0x85, 0x41, 0x49, 0x40, 0xad, 0x2d, 0xc0, 0xe, 0xc4, 0x6e, 0x92, 0x85, 0xe5, 0x15, 0x91, 0x79, 0x3c, 0xf8, 0x5b, 0x26, 0x51, 0xfe, 0x2a, 0x24, 0xe2, 0xca, 0xfa, 0xda, 0xa3, 0x91, 0x7c, 0x8b, 0xf5, 0xd6, 0x81, 0x8e, 0xbf, 0x1f, 0xfe, 0x22, 0x65, 0x45, 0xf2, 0xa8, 0xb1, 0x33, 0xc5, 0x19, 0xcd, 0xcf, 0x28, 0x7b, 0x1c, 0xc6, 0xea, 0x76, 0x2a, 0xba, 0xf2, 0x49, 0x89, 0x5c, 0x7a, 0x4a, 0x63, 0x53, 0xb7, 0xc4, 0xce, 0x55, 0x52, 0xd8, 0x3f, 0x19, 0x96, 0x67, 0x80, 0x55, 0x4, 0x89, 0xf2, 0x27, 0xe8, 0x2d, 0x9a, 0xee, 0x5d, 0x99, 0x5b, 0x95, 0xf0, 0x82, 0x13, 0x9, 0xc6, 0x4, 0xef, 0x7c, 0xfd, 0xbc, 0x8d, 0x65, 0xbe, 0x99, 0x11, 0x40, 0x79, 0xa2, 0x58, 0x52, 0x62, 0x6b, 0x1f, 0x38, 0x4e, 0xc1, 0xcb, 0x22, 0x1b, 0x88, 0xcb, 0x22, 0xda, 0x4a, 0x64, 0xe9, 0x95, 0x5d, 0xf7, 0x12, 0x39, 0x7, 0xcc, 0x83, 0x4b, 0x5d, 0x8e, 0xea, 0x62, 0x45, 0xc3, 0xbc, 0xdd, 0x72, 0xa9, 0xf, 0xfa, 0xa6, 0xba, 0xe, 0x66, 0xbe, 0xcd, 0x54, 0x86, 0xb, 0x49, 0x5, 0xdc, 0x47, 0x8c, 0x3e, 0x43, 0x1a, 0xd6, 0xbe, 0x44, 0xfe, 0xf5, 0x5e, 0xe9, 0x44, 0xca, 0xdf, 0x4e, 0x1e, 0x7b, 0x3e, 0x11, 0x76, 0xed, 0xd9, 0x1f, 0x1e, 0x6e, 0x75, 0x68, 0xc4, 0x6e, 0xd3, 0xdb, 0xe5, 0x1f, 0x6f, 0xf0, 0x75, 0x50, 0xb7, 0x9f, 0x3d, 0xca, 0x72, 0x63, 0xd0, 0xad, 0xec, 0x70, 0xbd, 0x25, 0x6e, 0x7a, 0xfb, 0xe6, 0xa5, 0x4f, 0xb5, 0x75, 0xdb, 0x57, 0x3e, 0x69, 0x23, 0xa4, 0x73, 0x6d, 0x91, 0x58, 0xf7, 0x73, 0x34, 0x84, 0xd5, 0x12, 0xab, 0x83, 0xd1, 0x36, 0x5c, 0xeb, 0x53, 0x6f, 0x70, 0xda, 0xa6, 0xd9, 0x40, 0x5c, 0x88, 0x6f, 0xb1, 0x53, 0xcd, 0x43, 0x29, 0x29, 0x65, 0xa7, 0xff, 0x25, 0xe7, 0x81, 0x45, 0x84, 0x9e, 0x50, 0x15, 0x12, 0xe6, 0xd7, 0x1d, 0x3c, 0xd8, 0x76, 0xa6, 0x0, 0x8f, 0x39, 0x1e, 0x54, 0x81, 0x7f, 0x55, 0x55, 0x64, 0x4a, 0xf7, 0xcb, 0xe8, 0x8b, 0x61, 0x2b, 0x4a, 0xc, 0x28, 0xe3, 0x35, 0xf9, 0x9c, 0x8f, 0x55, 0x60, 0x8a, 0xf0, 0xae, 0x92, 0xd3, 0x6d, 0x4d, 0x6e, 0xe9, 0xd5, 0x9, 0xc7, 0xf5, 0x1c, 0xf, 0x8c, 0x29, 0x9b, 0x46, 0x6b, 0x1a, 0x58, 0x84, 0xe8, 0x82, 0xe4, 0x8, 0x8c, 0x9f, 0x2a, 0xa1, 0x8a, 0x58, 0xed, 0x74, 0x8f, 0x55, 0x76, 0xad, 0x93, 0xbb, 0x4a, 0x9e, 0xb6, 0x32, 0x48, 0x35, 0x65, 0x26, 0x77, 0x89, 0x35, 0xb6, 0x47, 0xf9, 0x57, 0xe6, 0x78, 0x58, 0x31, 0x71, 0x28, 0x9f, 0x58, 0x23, 0x53, 0x6a, 0x9, 0xa, 0x3f, 0x79, 0x1d, 0xd2, 0xf5, 0x4a, 0xa, 0x38, 0x5c, 0xd, 0xb1, 0x90, 0x1a, 0x3e, 0x75, 0x9e, 0xc2, 0x6e, 0x27, 0x1d, 0x6e, 0xfc, 0x14, 0xee, 0xc5, 0xee, 0xd7, 0xe7, 0x28, 0x2b, 0xa6, 0x2f, 0xe7, 0xaf, 0xc4, 0x41, 0x4c, 0x8a, 0x94, 0x76, 0x94, 0x12, 0x37, 0x99, 0xda, 0x58, 0xca, 0xde, 0xc7, 0x7, 0x9, 0x71, 0x37, 0x8d, 0xa2, 0x97, 0x97, 0x1c, 0xc, 0x51, 0xde, 0xe5, 0xb7, 0xb8, 0xda, 0x92, 0xa3, 0xef, 0x17, 0x99, 0x6a, 0x1b, 0xf9, 0x9a, 0xbd, 0xcb, 0xfe, 0x5c, 0xc3, 0xf6, 0xda, 0xb1, 0x86, 0x16, 0x30, 0x97, 0x47, 0x27, 0x14, 0x30, 0x92, 0xc1, 0x80, 0xcb, 0x46, 0x27, 0xdb, 0x3d, 0x9d, 0x1d, 0x9a, 0x6, 0xb6, 0x83, 0xc6, 0x12, 0x94, 0x77, 0x36, 0xda, 0xc5, 0xb0, 0x85, 0xa8, 0x5b, 0x10, 0xc1, 0x90, 0xbd, 0xb5, 0xc5, 0x83, 0x51, 0x13, 0x24, 0xb, 0x12, 0xb8, 0x3f, 0xdf, 0xd9, 0xa2, 0xf1, 0x77, 0xfc, 0x7d, 0x46, 0xcf, 0x38, 0xa2, 0x78, 0xff, 0xda, 0x3c, 0x20, 0x3d, 0x5, 0x9e, 0xe4, 0x7a, 0xe, 0x30, 0x1, 0x56, 0xfc, 0xa2, 0x43, 0xcc, 0x27, 0x6f, 0x49, 0x9b, 0xe8, 0x65, 0xc9, 0xe7, 0x65, 0x82, 0x4e, 0xc8, 0x2c, 0x0, 0x79, 0xb7, 0x70, 0x0, 0x1, 0x77, 0x2d, 0x34, 0x46, 0xea, 0x34, 0x95, 0xc4, 0x26, 0xdd, 0xff, 0xa, 0x7f, 0xcb, 0x48, 0x8, 0xd, 0xb1, 0x17, 0x40, 0xaf, 0xb3, 0x73, 0x76, 0xa2, 0x81, 0x18, 0x87, 0x6d, 0x7d, 0x4b, 0x6b, 0xa, 0x15, 0x68, 0xbd, 0xc7, 0x22, 0xea, 0xea, 0xc2, 0x4, 0xb, 0x1a, 0x81, 0x43, 0xf9, 0x85, 0x75, 0x38, 0xde, 0x2a, 0x7a, 0xb8, 0xb3, 0xbf, 0x4d, 0xa6, 0x3d, 0x14, 0x33, 0xc4, 0x6c, 0x1c, 0x26, 0x1c, 0xb1, 0x33, 0xc2, 0xf5, 0xd6, 0xd9, 0x11, 0xf8, 0x54, 0xb6, 0xa8, 0x4, 0xa, 0x77, 0xf7, 0xb7, 0xf2, 0x53, 0x2e, 0x21, 0x6e, 0x84, 0xc4, 0x9c, 0x26, 0xe0, 0x72, 0x9f, 0x70, 0xca, 0xa8, 0x8e, 0x55, 0xdf, 0x19, 0x97, 0xf1, 0x4c, 0xeb, 0xe3, 0x53, 0xab, 0x25, 0x4f, 0x2e, 0x6c, 0x5a, 0x1c, 0x72, 0xde, 0x57, 0x7c, 0xf2, 0x3b, 0xbb, 0x2b, 0x81, 0xed, 0xb0, 0x7f, 0xac, 0x5f, 0x76, 0x1f, 0x5c, 0x20, 0xf7, 0xa8, 0x56, 0x52, 0xad, 0x53, 0xa8, 0xaf, 0x43, 0x5e, 0xe6, 0xff, 0xdf, 0x92, 0x8e, 0x24, 0xfb, 0x45, 0x7d, 0xa6, 0x78, 0x87, 0x44, 0xcf, 0xda, 0xac, 0xe3, 0x5b, 0x5a, 0xe6, 0x91, 0xcd, 0xfb, 0xa1, 0x29, 0x26, 0x2d, 0x3f, 0xae, 0xe4, 0x3d, 0x77, 0xb9, 0xda, 0xba, 0x6b, 0x6f, 0x47, 0xe5, 0xde, 0x3d, 0xd7, 0x51, 0xab, 0x71, 0xeb, 0x36, 0xd6, 0x1, 0x9e, 0x5c, 0x1b, 0xdc, 0xbc, 0x51, 0xf9, 0x7f, 0xe2, 0xf4, 0x6b, 0x4d, 0x87, 0x77, 0xde, 0xcf, 0x38, 0x9c, 0xfc, 0x70, 0xee, 0xf5, 0xca, 0x97, 0xeb, 0xe4, 0xb8, 0x14, 0xb, 0xf8, 0x2c, 0xdd, 0x30, 0xde, 0xdf, 0xc1, 0xa5, 0xd0, 0x54, 0xde, 0xdd, 0x7e, 0x84, 0x29, 0x51, 0x45, 0x45, 0x4e, 0xeb, 0x9f, 0xb, 0xb5, 0xac, 0x5a, 0x58, 0x71, 0xd0, 0x66, 0xf7, 0x50, 0x3f, 0x9e, 0x56, 0x2a, 0x40, 0x4d, 0xc6, 0x98, 0xb5, 0xb6, 0xef, 0xa, 0x56, 0x28, 0x50, 0xa5, 0x59, 0xe7, 0xba, 0x4, 0xb, 0x15, 0x98, 0x4, 0xc, 0x18, 0x69, 0x56, 0x1f, 0xa1, 0x2b, 0x30, 0x46, 0x90, 0xcd, 0xa4, 0xd4, 0x6f, 0x7e, 0xe9, 0xac, 0x16, 0x6d, 0xf4, 0x69, 0xfa, 0x42, 0xc9, 0xe6, 0xc2, 0xab, 0x7f, 0x98, 0x58, 0x60, 0xc7, 0xe7, 0x7a, 0xd5, 0xb2, 0xe3, 0xeb, 0xc8, 0xae, 0x2e, 0xaa, 0x2f, 0xdd, 0xcb, 0x89, 0x63, 0xc8, 0x91, 0x72, 0xd, 0xef, 0x3d, 0xf1, 0xf3, 0xee, 0x4b, 0xd5, 0xc1, 0xcb, 0xdf, 0xc4, 0xb0, 0xa, 0xa1, 0xb9, 0x96, 0xae, 0x49, 0x10, 0x51, 0x4b, 0x17, 0xe4, 0x3f, 0x37, 0x25, 0x6f, 0x69, 0x4e, 0x6e, 0x28, 0xa4, 0xa3, 0x52, 0x1d, 0xc7, 0x6, 0xfe, 0x65, 0xfd, 0x5f, 0xb9, 0xd6, 0xf4, 0xfb, 0x26, 0x24, 0x0, 0xb, 0x43, 0xe6, 0xbb, 0x6c, 0xf0, 0x1, 0x51, 0x13, 0x8f, 0xb, 0x7a, 0x15, 0x7b, 0x61, 0x80, 0xb3, 0xbf, 0x1, 0xe, 0x3a, 0x16, 0xf7, 0x1a, 0x2f, 0xe7, 0xe6, 0x2, 0x57, 0xfc, 0x4, 0x36, 0xc0, 0xb7, 0x9, 0xc3, 0x42, 0xce, 0xdc, 0x63, 0x7, 0x5, 0x83, 0x66, 0x44, 0x1f, 0x44, 0xc0, 0x5e, 0xdf, 0x81, 0x5, 0x10, 0x16, 0x4, 0x22, 0xbc, 0x93, 0xe, 0x2c, 0x42, 0x23, 0x31, 0xcc, 0x80, 0x20, 0x17, 0x45, 0xdc, 0xee, 0x4, 0x46, 0x5e, 0xe8, 0x99, 0x63, 0x7, 0x3d, 0xc7, 0xae, 0x17, 0x8, 0xb2, 0xb1, 0x1, 0x2, 0xfd, 0xf4, 0x4, 0x67, 0xeb, 0x2e, 0xa7, 0x4e, 0x86, 0x7b, 0xa7, 0x1d, 0x8, 0xc1, 0xfb, 0xc0, 0xa, 0x2f, 0x81, 0xea, 0x23, 0x42, 0x3a, 0x85, 0xbe, 0x86, 0x16, 0xfa, 0x1a, 0x51, 0xa6, 0xcc, 0x2c, 0x56, 0x64, 0x25, 0x38, 0xe8, 0x17, 0x71, 0xa8, 0x59, 0x18, 0x44, 0xdf, 0x36, 0xa4, 0xd9, 0x64, 0xd0, 0x8a, 0x3a, 0xc5, 0xca, 0xc4, 0x5e, 0x6e, 0x2, 0x43, 0xa7, 0x83, 0xf0, 0x0, 0xdf, 0xa0, 0xb9, 0x3f, 0xcb, 0x8, 0x1b, 0x34, 0x83, 0xb1, 0x91, 0x2e, 0xa4, 0xc0, 0x66, 0x19, 0xfa, 0x29, 0x40, 0x90, 0x93, 0x10, 0xde, 0xa0, 0xb6, 0xf5, 0x99, 0xa0, 0x55, 0x8, 0xd3, 0xd0, 0x5a, 0x78, 0xdc, 0x7f, 0xd4, 0x9e, 0x4e, 0x41, 0x10, 0x3e, 0xa9, 0xf9, 0xe, 0xf4, 0x21, 0x4d, 0x7d, 0xc0, 0x6d, 0x11, 0xb, 0x84, 0x8a, 0x6b, 0xb5, 0x12, 0xd3, 0xd6, 0x88, 0x4a, 0x69, 0x74, 0x60, 0x67, 0x8e, 0x11, 0xb, 0xfd, 0x48, 0x8e, 0x20, 0xd7, 0xed, 0x31, 0x63, 0x65, 0x77, 0xda, 0xc6, 0xa8, 0x4b, 0x4f, 0x99, 0x1a, 0x15, 0xd0, 0x4b, 0x72, 0x39, 0xa7, 0xcf, 0x13, 0xa7, 0x4d, 0xc8, 0xa, 0xee, 0x5d, 0xfc, 0x64, 0x5e, 0xb3, 0x48, 0x2f, 0xea, 0xa, 0xfa, 0x19, 0x86, 0x6e, 0x54, 0x7b, 0x74, 0xec, 0x83, 0x8, 0x97, 0xca, 0x9d, 0xea, 0xdb, 0xa1, 0x9, 0x50, 0x15, 0xd1, 0xfd, 0x2, 0xee, 0x16, 0x67, 0x98, 0x70, 0xb3, 0xa4, 0x16, 0x41, 0x6d, 0x11, 0xde, 0xe9, 0x21, 0xb1, 0xa1, 0x2c, 0x6a, 0xad, 0xf8, 0x11, 0x1b, 0x41, 0x2b, 0x96, 0xb1, 0xb3, 0xd4, 0x47, 0xac, 0x29, 0x93, 0xb1, 0xde, 0x5b, 0x35, 0x5e, 0x74, 0x4, 0xe5, 0x54, 0x95, 0xb5, 0xf9, 0x77, 0xe1, 0x64, 0x2, 0x97, 0x61, 0x96, 0xef, 0xcb, 0x64, 0xfe, 0x31, 0x5c, 0x3c, 0x24, 0x21, 0xbb, 0xae, 0x17, 0x35, 0xc2, 0x6d, 0xd2, 0xe1, 0x9a, 0x6e, 0xc0, 0x21, 0x2, 0x1, 0x27, 0x10, 0xb, 0x8e, 0x1, 0x63, 0x5d, 0xa6, 0x5e, 0x46, 0xcc, 0x3c, 0x9e, 0x2d, 0xed, 0x92, 0xc, 0xd8, 0xcd, 0x33, 0xb4, 0xf2, 0xc5, 0x30, 0xff, 0x2f, 0xbc, 0xfd, 0x7, 0x8e, 0x1f, 0xfa, 0x9d, 0x43, 0xf6, 0x43, 0x87, 0x2b, 0xb3, 0x2, 0xa4, 0x3b, 0x85, 0x18, 0x43, 0xf6, 0x1f, 0xe5, 0x40, 0x28, 0x5b, 0xda, 0x70, 0xff, 0xb2, 0xf5, 0x97, 0xf8, 0xb0, 0xff, 0xa4, 0xdf, 0xa1, 0xf8, 0x2a, 0x3d, 0x1d, 0x7d, 0x3, 0x6f, 0x7e, 0x34, 0x74, 0x9e, 0xd2, 0x6, 0xa2, 0x95, 0xa9, 0x65, 0x28, 0x51, 0xcb, 0x6e, 0x1f, 0x1a, 0x8a, 0x73, 0xc7, 0x53, 0x9d, 0x37, 0xf1, 0x10, 0x5a, 0x0, 0xdc, 0x37, 0x82, 0xd3, 0x2, 0xbd, 0x45, 0x22, 0x23, 0xd1, 0x4a, 0xe4, 0x9d, 0x74, 0x95, 0x3, 0x38, 0xa8, 0x50, 0x75, 0x4b, 0x2c, 0x2a, 0x60, 0x82, 0xa6, 0x88, 0x52, 0x38, 0x9d, 0x56, 0x21, 0xa4, 0x5, 0x8a, 0x7f, 0x38, 0x9d, 0x32, 0x3a, 0x31, 0x52, 0xfa, 0x25, 0x57, 0x4b, 0xf, 0xb5, 0x53, 0xa7, 0xc2, 0xe1, 0x55, 0x20, 0xf4, 0x61, 0x74, 0x50, 0xab, 0xa9, 0x18, 0x9b, 0x39}, 456 }, 457 sample{ // From danplanet.com (I agree Dan. Radio amateurs should use well defined open standards, not LZHUF... It's 2015!). 458 []byte(`Winlink 2000 is a hot topic in the amateur community right now. It provides a mechanism to access Internet email over several different transports, including an Internet connection, local V/UHF packet radio, and long-distance HF Pactor. The idea is great, and in practice, it works reasonably well. There are a lot of complaints to be made about the design and implementation of the system, but at the end of the day, those guys put in the time, effort and money and made it work. 459 460 One of the (many) complaints I have is their use of the ancient B2F forwarding protocol. It’s fine to use that over slow Pactor links (I suppose), but why aren’t we just using something like POP3 for the Internet hops? Rather silly, I think. Anyway, one of the design points of the B2F protocol is the use of an even more ancient compression algorithm called “lzhuf”. 461 462 The algorithm and code for this was written in Japan in 1988 to run on a 16-bit machine. The source, and many disparate alterations since then are sprinkled around the Internet and are easy to find via google. However, most people use either the command-line LZHUF_1.EXE file that has been around forever, or the DLL-ized version that the Winlink applications deliver and use. This effectively limits its use to Windows machines (and dosemu-installed Linux boxes). When I tried to compile several of the variants under Linux, I found that the code makes a bunch of assumptions about type sizes and thus crashes and/or fails to decode compressed text as a result. In fact, depending on where it fails, sometimes it runs off in an endless loop writing garbage to the output file until you kill it! 463 464 After spending a lot of time trying to find someone who had fixed the code to compile on a modern 32-bit system, I finally found a copy of the source that would compile on my system with g++ and actually run properly. I found the updated source code here and have archived a copy of the source on my system, as well as a static Linux binary in case you don’t want to compile it yourself. If you run the binary with no arguments, it will print a usage message. 465 466 Now, you might ask “Dan, why does Winlink 2000 use this old, unmaintained, fragile, and obscure compression algorithm?”. Well, in the days of freely available code, algorithms, and libraries to do advanced compression, encoding, etc, I can assure you that the top notch Winlink engineers have a good reason. ...Right? I figured that this obscure gem from the golden age of 4MHz PCs must be an undiscovered compression miracle, one that makes the extremely slow Pactor connections able to transfer data as efficiently as possible. So, I decided to compress some test files with lzhuf, as well as the freely-available-and-well-regarded gzip and bzip2 algorithms and compare the results. 467 468 As input, I used the lzhuf source code itself, which is about 19KB in size. That’s a pretty good sized email even with a potential file attachment. Below are the results: 469 470 ... 471 472 So there you go: with bzip2, you’d get almost a kilobyte less data to transfer than you would using lzhuf. Does a kilobyte really matter? Well, Pactor-I is 200 baud (at most), with very small block sizes. Yes, I think I’d rather save that kilobyte. 473 474 So, I ask the Winlink 2000 developers: Why not move to bzip2 compression? It’s free. It’s widely available. It’s considered one of the best. You put “2000″ in your name to sound like the system is new, fresh, and modern, why not use a compression algorithm to match? 475 `), 476 []byte{0x75, 0xfb, 0xd8, 0xd, 0x0, 0x0, 0xf1, 0xfd, 0x7f, 0x5f, 0x8c, 0x4c, 0x3f, 0xbe, 0xb3, 0x7d, 0xbc, 0xbe, 0xb9, 0x81, 0x73, 0xff, 0x6f, 0xdb, 0x73, 0xe9, 0xfb, 0x0, 0xae, 0xc6, 0xd3, 0xf9, 0x77, 0xdf, 0x5d, 0x36, 0x2b, 0xab, 0x6b, 0xf1, 0xae, 0xdb, 0xf3, 0x3e, 0xad, 0x40, 0xf, 0xfa, 0x55, 0x33, 0xe9, 0x65, 0x52, 0x58, 0x9e, 0x40, 0x58, 0xcd, 0xcf, 0xf3, 0x95, 0x24, 0x60, 0xa2, 0x7, 0xba, 0x8c, 0x7a, 0xb2, 0x46, 0xca, 0x13, 0xc0, 0x53, 0xfc, 0x1f, 0x55, 0x47, 0x94, 0x20, 0xc0, 0x99, 0x4d, 0xf5, 0xdb, 0xb7, 0x6e, 0x20, 0xa0, 0xc4, 0x45, 0x58, 0x70, 0xfa, 0x12, 0x8f, 0x48, 0xc4, 0x77, 0x9d, 0x41, 0xba, 0xdb, 0x4b, 0xc2, 0x36, 0x23, 0x48, 0x91, 0xa4, 0x57, 0xe0, 0x2b, 0x6b, 0x8e, 0x31, 0x3f, 0x22, 0xd4, 0x2c, 0x81, 0xa8, 0x2c, 0x98, 0x70, 0x6a, 0xa2, 0x61, 0xa1, 0xaf, 0xb8, 0x6c, 0x5c, 0x22, 0xdd, 0x21, 0xf4, 0x1a, 0x5c, 0x82, 0x7b, 0x28, 0xf9, 0x56, 0x4e, 0x93, 0xaa, 0x33, 0xfc, 0x95, 0xc1, 0x7, 0xff, 0x41, 0x1e, 0xc0, 0xb7, 0x70, 0x1e, 0xa7, 0x48, 0x57, 0xff, 0xf6, 0x8, 0x64, 0xef, 0x9f, 0xac, 0x3f, 0xe1, 0x8b, 0x18, 0xf6, 0x40, 0x3a, 0xa0, 0xdb, 0x9f, 0xa7, 0x60, 0x22, 0xe7, 0xa6, 0xe, 0x84, 0x4c, 0x41, 0x7a, 0x3f, 0x7c, 0xe8, 0xed, 0x40, 0x76, 0x87, 0xf8, 0x75, 0x11, 0xfd, 0x2a, 0x2f, 0xd9, 0x88, 0x3c, 0x8, 0xc3, 0xd4, 0xa7, 0x9f, 0x61, 0x11, 0x9f, 0xf3, 0x8, 0xbd, 0x1f, 0xa5, 0xbf, 0xfb, 0xb7, 0x8f, 0x10, 0x3f, 0xc7, 0xfb, 0x2b, 0xbb, 0xbc, 0xd7, 0xb8, 0xf3, 0xdc, 0x11, 0x21, 0xf7, 0xd7, 0x52, 0x1d, 0x40, 0x3c, 0x14, 0x83, 0xf0, 0x39, 0xc2, 0x29, 0x5e, 0x9a, 0x5a, 0xda, 0xaf, 0x14, 0xd3, 0x2e, 0x6e, 0x3d, 0xda, 0xfe, 0x32, 0x1e, 0xa5, 0x2, 0xdc, 0xac, 0x6d, 0x15, 0xbb, 0x52, 0xf4, 0xd5, 0x9e, 0x42, 0x97, 0x62, 0x9c, 0x7f, 0xda, 0x59, 0x7d, 0x68, 0x27, 0x21, 0xe7, 0xc1, 0x7, 0x1a, 0xfc, 0x53, 0x13, 0xa2, 0xf7, 0xd6, 0xc6, 0x17, 0xeb, 0x19, 0xe3, 0x68, 0x19, 0x60, 0x3b, 0xfa, 0xfd, 0x55, 0xb6, 0x26, 0x8f, 0x19, 0xf6, 0xaa, 0xf0, 0xf9, 0xf7, 0x4d, 0x89, 0x75, 0xcc, 0x5e, 0x93, 0xbb, 0x67, 0x6e, 0x7e, 0xe5, 0x71, 0x5a, 0x40, 0x13, 0x6c, 0x23, 0x6c, 0xe3, 0xac, 0x9, 0x84, 0xc3, 0xc4, 0x41, 0xcf, 0x7f, 0x6d, 0x13, 0xe, 0xd9, 0x2c, 0x91, 0xed, 0x4c, 0x2b, 0x6d, 0x3e, 0xa9, 0x5c, 0xf5, 0xb8, 0x76, 0xf5, 0xa7, 0xd8, 0xb7, 0x67, 0xfd, 0x2c, 0x4f, 0x57, 0xb8, 0xa5, 0x57, 0x30, 0xb1, 0x95, 0xf4, 0xe8, 0x63, 0x60, 0xe2, 0x34, 0x67, 0x62, 0x94, 0x2d, 0x75, 0xe5, 0xb1, 0x46, 0x6d, 0xf1, 0x86, 0x70, 0xa1, 0x48, 0x70, 0x44, 0x65, 0xf4, 0x6d, 0xbd, 0xad, 0x29, 0xb1, 0x42, 0xc9, 0xf5, 0x3, 0xb9, 0x65, 0x74, 0x16, 0xa3, 0x64, 0x8a, 0xd, 0x9a, 0xaf, 0xa5, 0xb5, 0xf2, 0x21, 0x78, 0x6d, 0x15, 0x39, 0x3a, 0x1e, 0xc8, 0x6f, 0xa, 0xca, 0x61, 0x37, 0x43, 0x1e, 0xc, 0xdf, 0xdc, 0x85, 0x70, 0x65, 0xd7, 0x5a, 0xce, 0x99, 0x39, 0xb, 0x81, 0x4a, 0x96, 0xd9, 0x79, 0x21, 0x81, 0x5f, 0x4, 0x4, 0x5d, 0x45, 0x39, 0x29, 0xda, 0xbe, 0x46, 0x24, 0xea, 0xb, 0xf4, 0x3d, 0x24, 0x5a, 0x8a, 0x41, 0x68, 0x9e, 0xd4, 0xd8, 0xfb, 0x62, 0xc2, 0x11, 0x54, 0xea, 0xb9, 0xf4, 0x21, 0x30, 0x57, 0x4c, 0x1c, 0xe8, 0x5d, 0xc6, 0xd1, 0x56, 0x4, 0xa9, 0x8c, 0x32, 0xd0, 0xcc, 0xc3, 0xd1, 0x6e, 0x22, 0x78, 0xf9, 0x28, 0x2a, 0x41, 0xc8, 0x45, 0x63, 0x28, 0x95, 0xc5, 0xf, 0x30, 0x6, 0x61, 0x5b, 0xa5, 0x6e, 0x19, 0xba, 0xd9, 0x52, 0x7, 0x6e, 0x83, 0xa8, 0xb6, 0x76, 0x8d, 0x19, 0xac, 0x34, 0x6e, 0x6a, 0xd3, 0x25, 0x41, 0x29, 0xec, 0x62, 0x63, 0xf1, 0xdb, 0x65, 0xdd, 0x52, 0xc3, 0x4a, 0x37, 0x36, 0xdb, 0x65, 0x7d, 0x9d, 0xf8, 0xe4, 0xc4, 0x4a, 0x70, 0xd4, 0xbe, 0x58, 0xe0, 0xe8, 0x4c, 0xaf, 0x4c, 0x11, 0x90, 0x1d, 0xf, 0xdb, 0x45, 0x1d, 0x40, 0x6d, 0x8a, 0x2b, 0x79, 0x63, 0xe0, 0x8d, 0xc7, 0x11, 0xc4, 0x1d, 0x4a, 0x5a, 0x43, 0x2b, 0xdd, 0x4f, 0x94, 0xa9, 0x28, 0xd5, 0xb6, 0xa2, 0xbd, 0xa9, 0x49, 0x1b, 0x3d, 0x4a, 0x48, 0x28, 0x96, 0x58, 0x18, 0x35, 0x43, 0x31, 0xdb, 0xa3, 0x42, 0xf9, 0x50, 0x2a, 0xb1, 0x27, 0xcd, 0x87, 0x9a, 0xff, 0x26, 0xe2, 0x9f, 0x49, 0x7d, 0x4c, 0x2e, 0x42, 0x3d, 0x51, 0xfc, 0x8, 0xf8, 0x80, 0x97, 0x88, 0x14, 0xfb, 0xe, 0xb8, 0x91, 0xe8, 0x7, 0xd9, 0xd6, 0xad, 0x37, 0x1c, 0x6e, 0x12, 0x88, 0xfb, 0xed, 0xe6, 0x8, 0x6b, 0x9e, 0xcb, 0x4d, 0x71, 0x2b, 0xce, 0x77, 0x8e, 0xa0, 0x5c, 0xc5, 0xdf, 0xe2, 0x13, 0x7e, 0x87, 0xd4, 0xa7, 0xb2, 0xe7, 0x64, 0xf1, 0x15, 0xff, 0x55, 0x7e, 0x82, 0x48, 0x1b, 0xc6, 0xdd, 0xde, 0xe8, 0xb4, 0x41, 0x42, 0xe1, 0x4b, 0xbb, 0x3b, 0xb1, 0xfe, 0xfe, 0xd4, 0xa, 0xee, 0x72, 0x8f, 0xe4, 0x4a, 0xfe, 0x26, 0x81, 0x1c, 0x5, 0x89, 0xdd, 0x21, 0x61, 0x3a, 0x29, 0xb6, 0xa6, 0x9f, 0x63, 0x14, 0x29, 0x3f, 0x64, 0xb7, 0x96, 0xcb, 0x12, 0x38, 0x74, 0xee, 0x2b, 0x9d, 0x83, 0x94, 0x51, 0x5f, 0x65, 0xd5, 0xe1, 0xed, 0x6d, 0xbf, 0xdb, 0xd5, 0xae, 0x1d, 0xbf, 0x55, 0xdf, 0xe9, 0x24, 0xf1, 0xae, 0x59, 0xaa, 0x5b, 0xd4, 0x85, 0x8, 0x11, 0xf2, 0x6b, 0x84, 0xf3, 0x9, 0x20, 0xe5, 0x1a, 0xeb, 0xec, 0x4e, 0x37, 0x4c, 0x99, 0x81, 0xba, 0xf0, 0x6, 0x6c, 0x2a, 0xbf, 0x2b, 0xff, 0xd5, 0xfa, 0x1f, 0x55, 0x6b, 0x8, 0x45, 0xc6, 0x44, 0x60, 0x84, 0x39, 0x19, 0xd8, 0xc4, 0xa, 0x42, 0x51, 0xa9, 0xaa, 0xd9, 0x9, 0x41, 0x4, 0x8f, 0x15, 0xfe, 0x8f, 0xf1, 0x4, 0xc5, 0x77, 0x8b, 0x24, 0x3e, 0x6f, 0xec, 0xd, 0xd2, 0xa8, 0xb9, 0x29, 0xdd, 0x45, 0xbc, 0x6b, 0x5b, 0xdc, 0xed, 0x79, 0x58, 0x17, 0xb7, 0x68, 0x64, 0xae, 0x32, 0x6c, 0x26, 0x42, 0x76, 0xf, 0x52, 0x9, 0x7a, 0x8, 0x86, 0xac, 0xe4, 0x32, 0xb6, 0xdd, 0x56, 0x82, 0xbd, 0x54, 0xe4, 0x85, 0x4f, 0xe0, 0x63, 0x57, 0x3b, 0xbd, 0xa3, 0x4a, 0x52, 0x77, 0x2c, 0x9, 0x44, 0x54, 0x89, 0x8, 0x62, 0xcd, 0x28, 0x47, 0xf1, 0x5, 0xd2, 0x3f, 0xb0, 0x85, 0x4, 0xcb, 0x36, 0x3, 0x6c, 0x3a, 0x54, 0x40, 0xd8, 0xd9, 0xf3, 0xb, 0x85, 0x1d, 0x39, 0xb1, 0xce, 0x34, 0x4d, 0xdb, 0xa4, 0x30, 0xe6, 0x9d, 0x83, 0xdb, 0xbb, 0x19, 0x18, 0x66, 0x6c, 0xd, 0xd, 0x62, 0x69, 0xcf, 0xb2, 0xd6, 0x57, 0x2f, 0x1d, 0xeb, 0x90, 0xbe, 0xad, 0xc8, 0xc1, 0x5e, 0xe6, 0x20, 0xd3, 0x5f, 0x55, 0xbf, 0xa0, 0x77, 0xe4, 0xd7, 0x7, 0xe1, 0x5f, 0xe4, 0x68, 0x68, 0x6c, 0x17, 0xc7, 0xb5, 0xad, 0x97, 0x11, 0x18, 0x26, 0xbf, 0x15, 0xfe, 0xa3, 0x7d, 0x1d, 0x2d, 0xe0, 0xac, 0xd2, 0x7d, 0x5, 0x5a, 0xf8, 0xdd, 0xeb, 0x1f, 0xe7, 0x0, 0x5c, 0xad, 0x5f, 0x78, 0x8c, 0xd5, 0x96, 0x11, 0x36, 0xf1, 0x79, 0x63, 0xdd, 0x26, 0x14, 0x18, 0x26, 0xa1, 0x83, 0xc7, 0xb5, 0x90, 0xad, 0xf6, 0xb8, 0xb9, 0x85, 0x6, 0xb, 0x80, 0xc1, 0x42, 0x81, 0x39, 0x9b, 0x51, 0xab, 0x77, 0xcd, 0xd9, 0x50, 0x4c, 0x11, 0xa9, 0xeb, 0x10, 0xe2, 0x61, 0x5e, 0x49, 0x9d, 0xac, 0x29, 0xec, 0x7a, 0x87, 0xe1, 0x79, 0x27, 0x53, 0xed, 0xa5, 0xb0, 0xa, 0x45, 0xcd, 0x5f, 0x39, 0x98, 0x45, 0x9e, 0x16, 0xb4, 0xfc, 0x21, 0x71, 0xfe, 0x4a, 0x97, 0xe6, 0x3b, 0xc6, 0xb8, 0x6e, 0xb3, 0x61, 0xe, 0x49, 0x5f, 0xfe, 0x62, 0x17, 0xbc, 0x5c, 0x6a, 0xee, 0xc0, 0x7f, 0xd4, 0xfd, 0x25, 0xd8, 0x79, 0x97, 0xc4, 0x82, 0xcd, 0x6b, 0xa4, 0x8d, 0x2f, 0xce, 0xf0, 0x6, 0x7a, 0xad, 0xa5, 0xa7, 0x3a, 0x40, 0xe6, 0x55, 0x50, 0x1f, 0x89, 0xef, 0x9b, 0x9a, 0x78, 0x4d, 0x71, 0xe5, 0x17, 0x3, 0x6e, 0xdc, 0x2, 0xeb, 0x59, 0x94, 0x39, 0x8c, 0xf3, 0x29, 0x78, 0xe7, 0xbd, 0xd1, 0xa3, 0xc4, 0x94, 0x4d, 0x3d, 0xe3, 0x9d, 0xe2, 0xe7, 0x34, 0x23, 0x68, 0xd7, 0xad, 0x2b, 0x1e, 0xc2, 0xd2, 0x31, 0x2a, 0xea, 0x6a, 0xae, 0xda, 0xfb, 0x81, 0x74, 0x15, 0x44, 0xf1, 0xd1, 0x18, 0x4f, 0xa5, 0xbe, 0xfa, 0x55, 0xc6, 0x6c, 0x4b, 0x17, 0x54, 0x5, 0x60, 0xa3, 0xe4, 0x3a, 0x52, 0x64, 0xd6, 0x4d, 0x16, 0xcc, 0x9b, 0x17, 0x4d, 0x99, 0xd9, 0x76, 0xcc, 0xcf, 0x1a, 0x91, 0x1d, 0x16, 0xb9, 0xf8, 0x76, 0xd9, 0x1c, 0xfb, 0x81, 0xe6, 0x1b, 0x4a, 0x6a, 0xf8, 0x14, 0xa2, 0x2b, 0x6, 0x6d, 0x45, 0xdf, 0x96, 0xcc, 0xd8, 0x97, 0xa1, 0x57, 0x9b, 0x69, 0xbe, 0xe5, 0xac, 0xe3, 0x3e, 0x69, 0xc0, 0xf3, 0x85, 0x27, 0x52, 0xd1, 0x83, 0x57, 0x61, 0x77, 0xda, 0x24, 0xcd, 0xd1, 0x61, 0x38, 0x98, 0x60, 0x3a, 0x30, 0x6e, 0xf3, 0xd3, 0xb3, 0x77, 0xb, 0x57, 0xd, 0xda, 0x9b, 0xc, 0x9d, 0x4c, 0x8e, 0x76, 0xfd, 0xfe, 0xcd, 0xb7, 0xb9, 0x9a, 0x6a, 0x5a, 0x1c, 0x6c, 0x20, 0x93, 0x27, 0xaa, 0xbe, 0x3e, 0x67, 0xab, 0xcf, 0xf5, 0x3c, 0xa4, 0x8f, 0x51, 0xac, 0x4e, 0x9d, 0xd6, 0xcb, 0x35, 0xd2, 0x3b, 0x88, 0xab, 0xe4, 0xdb, 0x85, 0xb7, 0x3c, 0x9b, 0x29, 0x1a, 0x5e, 0x50, 0x62, 0x68, 0xd1, 0x69, 0x90, 0x28, 0xcd, 0x29, 0xe5, 0x84, 0xcb, 0x8a, 0x20, 0xf6, 0x41, 0x48, 0x9, 0xeb, 0x7, 0x79, 0xb8, 0xc9, 0x8, 0x79, 0xad, 0x96, 0xb2, 0xeb, 0x7, 0x26, 0x75, 0xfa, 0x92, 0x26, 0x8b, 0xf5, 0x27, 0x3b, 0x5d, 0x57, 0xd5, 0x1d, 0xa2, 0x2d, 0x2b, 0x36, 0x6, 0xe2, 0xf6, 0xa4, 0xd5, 0x98, 0xf9, 0x16, 0x6a, 0x93, 0x1e, 0x92, 0xd3, 0x9b, 0xfe, 0x3a, 0xb3, 0x98, 0xd1, 0x78, 0x46, 0x65, 0x24, 0x75, 0x28, 0x9a, 0x14, 0xf3, 0x89, 0xf1, 0x95, 0xff, 0x73, 0x34, 0xe6, 0x42, 0x44, 0x7d, 0x56, 0x91, 0x7a, 0xd5, 0x81, 0x5a, 0x34, 0xfc, 0x83, 0x2f, 0xbd, 0xf3, 0xb1, 0x10, 0x8e, 0xd6, 0x7c, 0x65, 0x23, 0x44, 0x67, 0xa, 0x69, 0xf1, 0x65, 0xce, 0x73, 0x23, 0xd1, 0x10, 0x98, 0xc7, 0xcd, 0x4c, 0xed, 0x6d, 0xdc, 0xa8, 0xa2, 0x37, 0xb3, 0x50, 0x96, 0x4b, 0x4a, 0x2c, 0x33, 0xaa, 0xcb, 0x33, 0x2e, 0xb6, 0xf1, 0xa3, 0x29, 0x18, 0x65, 0x2f, 0x5f, 0x65, 0x2a, 0xed, 0x31, 0x9a, 0x93, 0xbb, 0xc7, 0x93, 0xc4, 0x7a, 0x2c, 0xa4, 0x4b, 0x77, 0x91, 0x7e, 0x99, 0x4, 0x25, 0xb8, 0x29, 0x19, 0x26, 0xc5, 0xe2, 0x59, 0x96, 0x99, 0x92, 0x7a, 0x2b, 0xb4, 0xde, 0x11, 0xcb, 0x15, 0x75, 0xa9, 0xa5, 0x34, 0xf9, 0xb3, 0x7c, 0xa9, 0xe4, 0xce, 0xbd, 0xaa, 0x1a, 0x79, 0xe5, 0x13, 0x58, 0xb9, 0x8f, 0xd9, 0x39, 0x45, 0x12, 0x46, 0xbc, 0x36, 0x59, 0x69, 0x6f, 0xbc, 0x8d, 0x2e, 0x1b, 0x30, 0xcb, 0x82, 0xe, 0x3, 0xba, 0xd3, 0xce, 0x13, 0x27, 0x71, 0x54, 0xfa, 0x65, 0x5e, 0x75, 0x4, 0x17, 0x71, 0xdb, 0x33, 0xd9, 0x7f, 0x9a, 0xe4, 0x89, 0x59, 0xe, 0x7a, 0xc2, 0x8d, 0x61, 0xab, 0x6e, 0xd6, 0xf2, 0x6d, 0x53, 0xe5, 0xcf, 0xdc, 0x1e, 0xb3, 0x36, 0x8b, 0x30, 0x58, 0x93, 0x65, 0x70, 0x75, 0x64, 0xbb, 0x22, 0x4a, 0xab, 0x57, 0xb8, 0x5e, 0x6e, 0xe6, 0xbe, 0xbe, 0xb8, 0x57, 0xd2, 0x6b, 0xf4, 0xdb, 0x9d, 0x5e, 0x66, 0x9e, 0x2b, 0x2e, 0x5b, 0x6d, 0x95, 0xdb, 0x88, 0x44, 0xc0, 0xda, 0x34, 0x3a, 0xd6, 0x1b, 0x62, 0xfe, 0x78, 0xb8, 0xe9, 0xb6, 0xd5, 0xb4, 0x89, 0x44, 0x71, 0x15, 0x55, 0xca, 0xb8, 0x38, 0x5e, 0x47, 0x1e, 0x31, 0xdc, 0x46, 0xec, 0xb6, 0xd7, 0x26, 0x51, 0x6e, 0xaf, 0xfe, 0x86, 0x77, 0xfc, 0x22, 0xd4, 0x6a, 0xea, 0xd9, 0xe7, 0x78, 0x65, 0xdb, 0xb, 0xef, 0xdd, 0x8, 0xa3, 0xb1, 0x12, 0xb, 0x4d, 0x59, 0x30, 0x54, 0xc3, 0xaa, 0x35, 0xd6, 0x69, 0x73, 0x6e, 0x6a, 0xa1, 0xb6, 0xed, 0x2c, 0x83, 0x92, 0xa3, 0x5b, 0x76, 0xcd, 0x66, 0x5d, 0xf6, 0x87, 0x5c, 0x2a, 0x1d, 0x11, 0x23, 0xaf, 0x96, 0x4b, 0xb6, 0xf8, 0xf6, 0xf, 0x4c, 0xa4, 0xe7, 0xcd, 0xc9, 0x99, 0x5, 0x61, 0xbf, 0xd7, 0x9c, 0x54, 0xef, 0x69, 0xec, 0x33, 0x96, 0x5e, 0xa6, 0x75, 0x43, 0x18, 0xfd, 0x4e, 0x59, 0xde, 0x9e, 0x47, 0xb2, 0xbd, 0xca, 0xad, 0x7b, 0x94, 0xc1, 0xc8, 0x5a, 0x3, 0xfa, 0x51, 0xb0, 0x32, 0xbd, 0x99, 0x2d, 0x99, 0xcc, 0x1c, 0xe3, 0x2e, 0xf6, 0x38, 0xd6, 0xaa, 0xe5, 0x3d, 0xb6, 0xcc, 0x5d, 0xca, 0xce, 0xcc, 0x60, 0x29, 0xd1, 0x40, 0xff, 0x3b, 0xfd, 0x23, 0x99, 0x7e, 0xc8, 0xe1, 0x9, 0x66, 0x18, 0x10, 0x50, 0x1f, 0x30, 0x1f, 0x4c, 0x5f, 0x3d, 0xd5, 0x6a, 0x55, 0x5f, 0x2e, 0x1e, 0xfe, 0xe2, 0x4c, 0x9a, 0xd9, 0xaf, 0x2f, 0xe6, 0x27, 0x18, 0x5e, 0x41, 0xc1, 0x97, 0x2e, 0x99, 0x3a, 0xbf, 0x2e, 0x33, 0xb3, 0x1f, 0xa2, 0xaf, 0xc8, 0xd7, 0x20, 0xd0, 0x34, 0x29, 0x1a, 0xa3, 0x8b, 0x10, 0x67, 0x48, 0x51, 0xb0, 0x73, 0xe5, 0x4f, 0xe4, 0xf9, 0xeb, 0xac, 0xb, 0x44, 0x2f, 0x41, 0x75, 0x7e, 0xfe, 0x3c, 0xf5, 0x7b, 0xfd, 0x70, 0xdb, 0xed, 0xd3, 0x5f, 0xea, 0x47, 0xed, 0xb2, 0x88, 0x77, 0xc6, 0x98, 0x7e, 0x1, 0xe1, 0x4e, 0x22, 0xfa, 0x6b, 0xf, 0x61, 0x57, 0x3d, 0x4, 0x37, 0x59, 0xf6, 0x8c, 0x87, 0x7, 0xaa, 0x94, 0xef, 0x18, 0x60, 0xb3, 0xbf, 0x40, 0xfe, 0xcb, 0x7f, 0x4, 0x35, 0xe2, 0xc0, 0xbc, 0x97, 0xcc, 0x36, 0x5f, 0x49, 0xce, 0x90}, 477 }, 478 sample{ 479 []byte{}, 480 []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, 481 }, 482 }