@chr33s/pdf-common 5.0.0 → 5.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/package.json +5 -1
  2. package/test/base64.test.ts +0 -173
  3. package/test/brotli.test.data/0000000000000000.empty.br +0 -1
  4. package/test/brotli.test.data/126d9a84a3d1b3ad.xyzzy.br +0 -2
  5. package/test/brotli.test.data/1f39ef98802627d5.bref65536.br +0 -0
  6. package/test/brotli.test.data/24b2c7600b8207e2.random.br +0 -0
  7. package/test/brotli.test.data/5b5eb8c2e54aa1c4.fox.br +0 -1
  8. package/test/brotli.test.data/5ea84b0ab2a9d2f3.ascii.br +0 -0
  9. package/test/brotli.test.data/62652dac985a31f1.monkey.br +0 -0
  10. package/test/brotli.test.data/68333cc8433f3ab8.16k_minus_one.br +0 -0
  11. package/test/brotli.test.data/7da01857468c3de8.buffer_sized_chunks.br +0 -0
  12. package/test/brotli.test.data/89988757bded53ae.x10y10.br +0 -0
  13. package/test/brotli.test.data/940493692ce62466.E.coli.br +0 -0
  14. package/test/brotli.test.data/c3f720395238182c.world192.br +0 -0
  15. package/test/brotli.test.data/c5a4246584d690a7.16k_plus_one.br +0 -0
  16. package/test/brotli.test.data/c895e0c1b11448fa.ukkonooa.br +0 -0
  17. package/test/brotli.test.data/d238c71341928567.allbytevalues_twice.br +0 -0
  18. package/test/brotli.test.data/d38da8261aedc293.bible.br +0 -0
  19. package/test/brotli.test.data/d6a9c5da7ba30f21.allbytevalues_16k.br +0 -0
  20. package/test/brotli.test.data/f121ac88218962d7.x.br +0 -0
  21. package/test/brotli.test.data/f6083a8a3754518c.x64.br +0 -0
  22. package/test/brotli.test.file +0 -201
  23. package/test/brotli.test.file.br +0 -0
  24. package/test/brotli.test.ts +0 -2197
  25. package/test/compression.test.ts +0 -93
  26. package/test/crypto.test.ts +0 -157
  27. package/tsconfig.json +0 -10
  28. package/tsconfig.typecheck.json +0 -14
  29. package/vitest.config.ts +0 -8
@@ -1,2197 +0,0 @@
1
- import fs from "node:fs/promises";
2
- import { dirname, resolve } from "node:path";
3
- import { fileURLToPath } from "node:url";
4
- import zlib from "node:zlib";
5
- import { describe, expect, test } from "vitest";
6
-
7
- import * as brotli from "../src/brotli.js";
8
-
9
- const __filename = fileURLToPath(import.meta.url);
10
- const __dirname = dirname(__filename);
11
-
12
- export const readFile = (path: string) => fs.readFile(resolve(__dirname, path));
13
-
14
- export const readdir = (path: string) => fs.readdir(resolve(__dirname, path));
15
-
16
- describe("decode", () => {
17
- function bytesToString(bytes: Int8Array) {
18
- const chars: number[] = new Uint16Array(bytes) as unknown as number[];
19
- return String.fromCharCode.apply(null, chars);
20
- }
21
-
22
- function stringToBytes(str: string) {
23
- const out = new Int8Array(str.length);
24
- for (let i = 0; i < str.length; ++i) out[i] = str.charCodeAt(i);
25
- return out;
26
- }
27
-
28
- test("metadata", () => {
29
- expect("").toEqual(bytesToString(brotli.decode(Int8Array.from([1, 11, 0, 42, 3]))));
30
- });
31
-
32
- test("compound dictionary", () => {
33
- const txt = "kot lomom kolol slona\n";
34
- const dictionary = stringToBytes(txt);
35
- const compressed = [0xa1, 0xa8, 0x00, 0xc0, 0x2f, 0x01, 0x10, 0xc4, 0x44, 0x09, 0x00];
36
- expect(txt.length).toEqual(compressed.length * 2);
37
- const options = { customDictionary: dictionary };
38
- expect(txt).toEqual(bytesToString(brotli.decode(Int8Array.from(compressed), options)));
39
- });
40
-
41
- describe("bundle", async () => {
42
- const CRC_64_POLY = new Uint32Array([0xd7870f42, 0xc96c5795]);
43
- function calculateCrc64(data: Int8Array): string {
44
- const crc = new Uint32Array([0xffffffff, 0xffffffff]);
45
- const c = new Uint32Array(2);
46
- for (let i = 0; i < data.length; ++i) {
47
- c[1] = 0;
48
- c[0] = (crc[0] ^ data[i]) & 0xff;
49
- for (let k = 0; k < 8; ++k) {
50
- const isOdd = c[0] & 1;
51
- c[0] = (c[0] >>> 1) | ((c[1] & 1) << 31);
52
- c[1] = c[1] >>> 1;
53
- if (isOdd) {
54
- c[0] = c[0] ^ CRC_64_POLY[0];
55
- c[1] = c[1] ^ CRC_64_POLY[1];
56
- }
57
- }
58
- crc[0] = ((crc[0] >>> 8) | ((crc[1] & 0xff) << 24)) ^ c[0];
59
- crc[1] = (crc[1] >>> 8) ^ c[1];
60
- }
61
- crc[0] = ~crc[0];
62
- crc[1] = ~crc[1];
63
-
64
- let lo = crc[0].toString(16);
65
- lo = "0".repeat(8 - lo.length) + lo;
66
- let hi = crc[1].toString(16);
67
- hi = "0".repeat(8 - hi.length) + hi;
68
-
69
- return hi + lo;
70
- }
71
-
72
- const dir = "./brotli.test.data";
73
- const files = await readdir(dir);
74
- test.each(files)(`%s`, async (file) => {
75
- const expected = file.substring(0, 16);
76
- const data = await readFile(`${dir}/${file}`);
77
- const decompressed = brotli.decode(data);
78
- const crc = calculateCrc64(decompressed);
79
- expect(expected).toEqual(crc);
80
- });
81
- });
82
-
83
- describe("synth", () => {
84
- /**
85
- * NB: Use intermediate chunks to avoid "Maximum call stack size exceeded".
86
- */
87
- function bytesToString(bytes: Int8Array): string {
88
- const kChunkSize = 4096;
89
- if (bytes.length <= kChunkSize) {
90
- const chars = new Uint8Array(bytes) as unknown as number[];
91
- return String.fromCharCode.apply(null, chars);
92
- }
93
- const chunks = [];
94
- for (let start = 0; start < bytes.length; start += kChunkSize) {
95
- const end = Math.min(start + 4096, bytes.length);
96
- chunks.push(bytesToString(bytes.slice(start, end)));
97
- }
98
- return chunks.join("");
99
- }
100
-
101
- /**
102
- * NB: String.prototype.repeat causes "Maximum call stack size exceeded".
103
- */
104
- function times(count: number, char: string): string {
105
- return char.repeat(count);
106
- }
107
-
108
- function checkSynth(compressed: number[], expectSuccess: boolean, expectedOutput: string) {
109
- let success = true;
110
- let actual: Int8Array | null = null;
111
- try {
112
- actual = brotli.decode(Int8Array.from(compressed));
113
- } catch {
114
- success = false;
115
- }
116
- expect(expectSuccess).toEqual(success);
117
- if (expectSuccess) {
118
- expect(expectedOutput).toEqual(bytesToString(actual as Int8Array));
119
- }
120
- }
121
-
122
- const allTests: object = {
123
- /* GENERATED CODE START */
124
-
125
- testAllTransforms10() {
126
- const compressed = [
127
- 0x1b, 0xfc, 0x05, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00, 0x07, 0x5b, 0x26,
128
- 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x1b, 0x13, 0x7c, 0x84, 0x26, 0xf8, 0x04, 0x10, 0x4c,
129
- 0xf0, 0x89, 0x38, 0x30, 0xc1, 0x27, 0x4e, 0xc1, 0x04, 0x9f, 0x64, 0x06, 0x26, 0xf8, 0x24,
130
- 0x3f, 0x34, 0xc1, 0x27, 0x7d, 0x82, 0x09, 0x3e, 0xe9, 0x16, 0x4d, 0xf0, 0xc9, 0xd2, 0xc0,
131
- 0x04, 0x9f, 0x0c, 0x8f, 0x4c, 0xf0, 0xc9, 0x06, 0xd1, 0x04, 0x9f, 0x6c, 0x92, 0x4d, 0xf0,
132
- 0xc9, 0x39, 0xc1, 0x04, 0x9f, 0xdc, 0x94, 0x4c, 0xf0, 0xc9, 0x69, 0xd1, 0x04, 0x9f, 0x3c,
133
- 0x98, 0x4d, 0xf0, 0x29, 0x9c, 0x81, 0x09, 0x3e, 0x45, 0x37, 0x31, 0xc1, 0xa7, 0x60, 0x47,
134
- 0x26, 0xf8, 0x14, 0xfa, 0xcc, 0x04, 0x9f, 0xc2, 0x20, 0x9a, 0xe0, 0x53, 0x48, 0x54, 0x13,
135
- 0x7c, 0x8a, 0x8f, 0x6c, 0x82, 0x4f, 0xb1, 0xd2, 0x4d, 0xf0, 0x29, 0x67, 0x82, 0x09, 0x3e,
136
- 0xe5, 0x4f, 0x31, 0xc1, 0xa7, 0x7c, 0x4a, 0x26, 0xf8, 0x94, 0x57, 0xcd, 0x04, 0x9f, 0x12,
137
- 0x2c, 0x9a, 0xe0, 0x53, 0xba, 0x55, 0x13, 0x7c, 0xca, 0xbf, 0x6c, 0x82, 0x4f, 0xb9, 0xd8,
138
- 0x4d, 0xf0, 0xa9, 0x30, 0x03, 0x13, 0x7c, 0x2a, 0xd2, 0xc2, 0x04, 0x9f, 0x4a, 0x36, 0x31,
139
- 0xc1, 0xa7, 0xca, 0x6d, 0x4c, 0xf0, 0xa9, 0x94, 0x23, 0x13, 0x7c, 0x2a, 0xeb, 0xca, 0x04,
140
- 0x9f, 0xea, 0x3c, 0x33, 0xc1, 0xa7, 0xb2, 0xef, 0x4c, 0xf0, 0xa9, 0xf8, 0x43, 0x13, 0x7c,
141
- 0xaa, 0x00, 0xd3, 0x04, 0x9f, 0x2a, 0x42, 0x35, 0xc1, 0xa7, 0xc2, 0x70, 0x4d, 0xf0, 0xa9,
142
- 0x52, 0x64, 0x13, 0x7c, 0x2a, 0x1a, 0xdb, 0x04, 0x9f, 0x6a, 0x48, 0x37, 0xc1, 0xa7, 0x92,
143
- 0xf2, 0x4d, 0xf0, 0xa9, 0xc3, 0x04, 0x13, 0x7c, 0xea, 0x32, 0xc3, 0x04, 0x9f, 0x7a, 0x4e,
144
- 0x31, 0xc1, 0xa7, 0x06, 0x74, 0x4c, 0xf0, 0xa9, 0x19, 0x25, 0x13, 0x7c, 0x6a, 0x4d, 0xcb,
145
- 0x04, 0x9f, 0x1a, 0x55, 0x33, 0xc1, 0xa7, 0x56, 0xf5, 0x4c, 0xf0, 0xa9, 0x5d, 0x45, 0x13,
146
- 0x7c, 0xea, 0x59, 0xd3, 0x04, 0x9f, 0xfa, 0x57, 0x35, 0xc1, 0xa7, 0x66, 0x76, 0x4d, 0xf0,
147
- 0xa9, 0x9f, 0x65, 0x13, 0x7c, 0x6a, 0x6f, 0xdb, 0x04, 0x9f, 0x9a, 0x5d, 0x37, 0xc1, 0xa7,
148
- 0x06, 0xf8, 0x4d, 0xf0, 0x69, 0x0c, 0x06, 0x26, 0xf8, 0x34, 0x08, 0x07, 0x13, 0x7c, 0x1a,
149
- 0x8b, 0x85, 0x09, 0x3e, 0x8d, 0xc8, 0xc3, 0x04, 0x9f, 0xe6, 0x65, 0x62, 0x82, 0x4f, 0xb3,
150
- 0x73, 0x31, 0xc1, 0xa7, 0x41, 0xda, 0x98, 0xe0, 0xd3, 0x54, 0x7d, 0x4c, 0xf0, 0x69, 0xc4,
151
- 0x46, 0x26, 0xf8, 0x34, 0x72, 0x27, 0x13, 0x7c, 0x1a, 0xc5, 0x95, 0x09, 0x3e, 0x8d, 0xe5,
152
- 0xcb, 0x04, 0x9f, 0x06, 0x75, 0x66, 0x82, 0x4f, 0x43, 0x7b, 0x33, 0xc1, 0xa7, 0x09, 0xde,
153
- 0x99, 0xe0, 0xd3, 0x34, 0xff, 0x4c, 0xf0, 0x69, 0xb2, 0x87, 0x26, 0xf8, 0x34, 0xe9, 0x47,
154
- 0x13, 0x7c, 0x9a, 0xfb, 0xa5, 0x09, 0x3e, 0x4d, 0x01, 0xd4, 0x04, 0x9f, 0x46, 0x82, 0x6a,
155
- 0x82, 0x4f, 0x03, 0x82, 0x35, 0xc1, 0xa7, 0x61, 0xe1, 0x9a, 0xe0, 0xd3, 0xe4, 0x80, 0x4d,
156
- 0xf0, 0x69, 0x8a, 0xc8, 0x26, 0xf8, 0x34, 0x52, 0x68, 0x13, 0x7c, 0x9a, 0x2f, 0xb6, 0x09,
157
- 0x3e, 0x8d, 0x1b, 0xdc, 0x04, 0x9f, 0x86, 0x8f, 0x6e, 0x82, 0x4f, 0xb3, 0x88, 0x37, 0xc1,
158
- 0xa7, 0xd9, 0xe4, 0x9b, 0xe0, 0xd3, 0x9e, 0x02, 0x4c, 0xf0, 0x69, 0x6d, 0x09, 0x26, 0xf8,
159
- 0xb4, 0xc3, 0x08, 0x13, 0x7c, 0x5a, 0x68, 0x86, 0x09, 0x3e, 0xad, 0x37, 0xc4, 0x04, 0x9f,
160
- 0x56, 0x9d, 0x62, 0x82, 0x4f, 0x9b, 0x8f, 0x31, 0xc1, 0xa7, 0x2d, 0xe8, 0x98, 0xe0, 0xd3,
161
- 0x4a, 0x84, 0x4c, 0xf0, 0x69, 0x3f, 0x4a, 0x26, 0xf8, 0xb4, 0x2c, 0x29, 0x13, 0x7c, 0xda,
162
- 0x9c, 0x96, 0x09, 0x3e, 0x2d, 0x52, 0xcc, 0x04, 0x9f, 0xb6, 0xaa, 0x66, 0x82, 0x4f, 0x2b,
163
- 0x96, 0x33, 0xc1, 0xa7, 0x7d, 0xeb, 0x99, 0xe0, 0xd3, 0xf6, 0x05, 0x4d, 0xf0, 0x69, 0x17,
164
- 0x8b, 0x26, 0xf8, 0xb4, 0x97, 0x49, 0x13, 0x7c, 0xda, 0xd1, 0xa6, 0x09, 0x3e, 0x2d, 0x6c,
165
- 0xd4, 0x04, 0x9f, 0xb6, 0xb7, 0x6a, 0x82, 0x4f, 0xab, 0x9c, 0x35, 0xc1, 0xa7, 0xc5, 0xee,
166
- 0x9a, 0xe0, 0xd3, 0x9a, 0x87, 0x4d, 0xf0, 0x69, 0xe9, 0xcb,
167
- ];
168
- checkSynth(
169
- /*
170
- * // The stream consists of word "time" with all possible transforms.
171
- * main_header
172
- * metablock_header_easy: 1533, 1
173
- * command_easy: 10, "|", 2 // = 0 << 10 + 1 + 1
174
- * command_easy: 10, "|", 1037 // = 1 << 10 + 1 + 12
175
- * command_easy: 10, "|", 2073 // = 2 << 10 + 1 + 24
176
- * command_easy: 10, "|", 3110 // = 3 << 10 + 1 + 37
177
- * command_easy: 10, "|", 4144 // = 4 << 10 + 1 + 47
178
- * command_easy: 10, "|", 5180 // = 5 << 10 + 1 + 59
179
- * command_easy: 10, "|", 6220 // = 6 << 10 + 1 + 75
180
- * command_easy: 10, "|", 7256 // = 7 << 10 + 1 + 87
181
- * command_easy: 10, "|", 8294 // = 8 << 10 + 1 + 101
182
- * command_easy: 10, "|", 9333 // = 9 << 10 + 1 + 116
183
- * command_easy: 10, "|", 10368 // = 10 << 10 + 1 + 127
184
- * command_easy: 10, "|", 11408 // = 11 << 10 + 1 + 143
185
- * command_easy: 10, "|", 12441 // = 12 << 10 + 1 + 152
186
- * command_easy: 10, "|", 13475 // = 13 << 10 + 1 + 162
187
- * command_easy: 10, "|", 14513 // = 14 << 10 + 1 + 176
188
- * command_easy: 10, "|", 15550 // = 15 << 10 + 1 + 189
189
- * command_easy: 10, "|", 16587 // = 16 << 10 + 1 + 202
190
- * command_easy: 10, "|", 17626 // = 17 << 10 + 1 + 217
191
- * command_easy: 10, "|", 18665 // = 18 << 10 + 1 + 232
192
- * command_easy: 10, "|", 19703 // = 19 << 10 + 1 + 246
193
- * command_easy: 10, "|", 20739 // = 20 << 10 + 1 + 258
194
- * command_easy: 10, "|", 21775 // = 21 << 10 + 1 + 270
195
- * command_easy: 10, "|", 22812 // = 22 << 10 + 1 + 283
196
- * command_easy: 10, "|", 23848 // = 23 << 10 + 1 + 295
197
- * command_easy: 10, "|", 24880 // = 24 << 10 + 1 + 303
198
- * command_easy: 10, "|", 25916 // = 25 << 10 + 1 + 315
199
- * command_easy: 10, "|", 26956 // = 26 << 10 + 1 + 331
200
- * command_easy: 10, "|", 27988 // = 27 << 10 + 1 + 339
201
- * command_easy: 10, "|", 29021 // = 28 << 10 + 1 + 348
202
- * command_easy: 10, "|", 30059 // = 29 << 10 + 1 + 362
203
- * command_easy: 10, "|", 31100 // = 30 << 10 + 1 + 379
204
- * command_easy: 10, "|", 32136 // = 31 << 10 + 1 + 391
205
- * command_easy: 10, "|", 33173 // = 32 << 10 + 1 + 404
206
- * command_easy: 10, "|", 34209 // = 33 << 10 + 1 + 416
207
- * command_easy: 10, "|", 35247 // = 34 << 10 + 1 + 430
208
- * command_easy: 10, "|", 36278 // = 35 << 10 + 1 + 437
209
- * command_easy: 10, "|", 37319 // = 36 << 10 + 1 + 454
210
- * command_easy: 10, "|", 38355 // = 37 << 10 + 1 + 466
211
- * command_easy: 10, "|", 39396 // = 38 << 10 + 1 + 483
212
- * command_easy: 10, "|", 40435 // = 39 << 10 + 1 + 498
213
- * command_easy: 10, "|", 41465 // = 40 << 10 + 1 + 504
214
- * command_easy: 10, "|", 42494 // = 41 << 10 + 1 + 509
215
- * command_easy: 10, "|", 43534 // = 42 << 10 + 1 + 525
216
- * command_easy: 10, "|", 44565 // = 43 << 10 + 1 + 532
217
- * command_easy: 10, "|", 45606 // = 44 << 10 + 1 + 549
218
- * command_easy: 10, "|", 46641 // = 45 << 10 + 1 + 560
219
- * command_easy: 10, "|", 47680 // = 46 << 10 + 1 + 575
220
- * command_easy: 10, "|", 48719 // = 47 << 10 + 1 + 590
221
- * command_easy: 10, "|", 49758 // = 48 << 10 + 1 + 605
222
- * command_easy: 10, "|", 50786 // = 49 << 10 + 1 + 609
223
- * command_easy: 10, "|", 51824 // = 50 << 10 + 1 + 623
224
- * command_easy: 10, "|", 52861 // = 51 << 10 + 1 + 636
225
- * command_easy: 10, "|", 53897 // = 52 << 10 + 1 + 648
226
- * command_easy: 10, "|", 54935 // = 53 << 10 + 1 + 662
227
- * command_easy: 10, "|", 55973 // = 54 << 10 + 1 + 676
228
- * command_easy: 10, "|", 56999 // = 55 << 10 + 1 + 678
229
- * command_easy: 10, "|", 58027 // = 56 << 10 + 1 + 682
230
- * command_easy: 10, "|", 59056 // = 57 << 10 + 1 + 687
231
- * command_easy: 10, "|", 60092 // = 58 << 10 + 1 + 699
232
- * command_easy: 10, "|", 61129 // = 59 << 10 + 1 + 712
233
- * command_easy: 10, "|", 62156 // = 60 << 10 + 1 + 715
234
- * command_easy: 10, "|", 63195 // = 61 << 10 + 1 + 730
235
- * command_easy: 10, "|", 64233 // = 62 << 10 + 1 + 744
236
- * command_easy: 10, "|", 65277 // = 63 << 10 + 1 + 764
237
- * command_easy: 10, "|", 66307 // = 64 << 10 + 1 + 770
238
- * command_easy: 10, "|", 67333 // = 65 << 10 + 1 + 772
239
- * command_easy: 10, "|", 68371 // = 66 << 10 + 1 + 786
240
- * command_easy: 10, "|", 69407 // = 67 << 10 + 1 + 798
241
- * command_easy: 10, "|", 70444 // = 68 << 10 + 1 + 811
242
- * command_easy: 10, "|", 71480 // = 69 << 10 + 1 + 823
243
- * command_easy: 10, "|", 72517 // = 70 << 10 + 1 + 836
244
- * command_easy: 10, "|", 73554 // = 71 << 10 + 1 + 849
245
- * command_easy: 10, "|", 74591 // = 72 << 10 + 1 + 862
246
- * command_easy: 10, "|", 75631 // = 73 << 10 + 1 + 878
247
- * command_easy: 10, "|", 76679 // = 74 << 10 + 1 + 902
248
- * command_easy: 10, "|", 77715 // = 75 << 10 + 1 + 914
249
- * command_easy: 10, "|", 78757 // = 76 << 10 + 1 + 932
250
- * command_easy: 10, "|", 79793 // = 77 << 10 + 1 + 944
251
- * command_easy: 10, "|", 80830 // = 78 << 10 + 1 + 957
252
- * command_easy: 10, "|", 81866 // = 79 << 10 + 1 + 969
253
- * command_easy: 10, "|", 82902 // = 80 << 10 + 1 + 981
254
- * command_easy: 10, "|", 83942 // = 81 << 10 + 1 + 997
255
- * command_easy: 10, "|", 84980 // = 82 << 10 + 1 + 1011
256
- * command_easy: 10, "|", 86018 // = 83 << 10 + 1 + 1025
257
- * command_easy: 10, "|", 87055 // = 84 << 10 + 1 + 1038
258
- * command_easy: 10, "|", 88093 // = 85 << 10 + 1 + 1052
259
- * command_easy: 10, "|", 89129 // = 86 << 10 + 1 + 1064
260
- * command_easy: 10, "|", 90166 // = 87 << 10 + 1 + 1077
261
- * command_easy: 10, "|", 91202 // = 88 << 10 + 1 + 1089
262
- * command_easy: 10, "|", 92239 // = 89 << 10 + 1 + 1102
263
- * command_easy: 10, "|", 93276 // = 90 << 10 + 1 + 1115
264
- * command_easy: 10, "|", 94315 // = 91 << 10 + 1 + 1130
265
- * command_easy: 10, "|", 95353 // = 92 << 10 + 1 + 1144
266
- * command_easy: 10, "|", 96392 // = 93 << 10 + 1 + 1159
267
- * command_easy: 10, "|", 97432 // = 94 << 10 + 1 + 1175
268
- * command_easy: 10, "|", 98468 // = 95 << 10 + 1 + 1187
269
- * command_easy: 10, "|", 99507 // = 96 << 10 + 1 + 1202
270
- * command_easy: 10, "|", 100544 // = 97 << 10 + 1 + 1215
271
- * command_easy: 10, "|", 101581 // = 98 << 10 + 1 + 1228
272
- * command_easy: 10, "|", 102619 // = 99 << 10 + 1 + 1242
273
- * command_easy: 10, "|", 103655 // = 100 << 10 + 1 + 1254
274
- * command_easy: 10, "|", 104694 // = 101 << 10 + 1 + 1269
275
- * command_easy: 10, "|", 105730 // = 102 << 10 + 1 + 1281
276
- * command_easy: 10, "|", 106767 // = 103 << 10 + 1 + 1294
277
- * command_easy: 10, "|", 107804 // = 104 << 10 + 1 + 1307
278
- * command_easy: 10, "|", 108841 // = 105 << 10 + 1 + 1320
279
- * command_easy: 10, "|", 109878 // = 106 << 10 + 1 + 1333
280
- * command_easy: 10, "|", 110917 // = 107 << 10 + 1 + 1348
281
- * command_easy: 10, "|", 111954 // = 108 << 10 + 1 + 1361
282
- * command_easy: 10, "|", 112991 // = 109 << 10 + 1 + 1374
283
- * command_easy: 10, "|", 114028 // = 110 << 10 + 1 + 1387
284
- * command_easy: 10, "|", 115066 // = 111 << 10 + 1 + 1401
285
- * command_easy: 10, "|", 116104 // = 112 << 10 + 1 + 1415
286
- * command_easy: 10, "|", 117140 // = 113 << 10 + 1 + 1427
287
- * command_easy: 10, "|", 118176 // = 114 << 10 + 1 + 1439
288
- * command_easy: 10, "|", 119213 // = 115 << 10 + 1 + 1452
289
- * command_easy: 10, "|", 120250 // = 116 << 10 + 1 + 1465
290
- * command_easy: 10, "|", 121287 // = 117 << 10 + 1 + 1478
291
- * command_easy: 10, "|", 122325 // = 118 << 10 + 1 + 1492
292
- * command_easy: 10, "|", 123363 // = 119 << 10 + 1 + 1506
293
- * command_easy: 10, "|", 124401 // = 120 << 10 + 1 + 1520
294
- */
295
- compressed,
296
- true,
297
- // typo:off
298
- "|categories|categories | categories |ategories|Categories |categories the " +
299
- "| categories|s categories |categories of |Categories|categories and |teg" +
300
- "ories|categorie|, categories |categories, | Categories |categories in |c" +
301
- 'ategories to |e categories |categories"|categories.|categories">|categor' +
302
- "ies\n|categor|categories]|categories for |egories|categori|categories a " +
303
- "|categories that | Categories|categories. |.categories| categories, |gor" +
304
- "ies|categories with |categories'|categories from |categories by |ories|" +
305
- "ries| the categories|catego|categories. The |CATEGORIES|categories on |c" +
306
- "ategories as |categories is |cat|categorieing |categories\n\t|categories" +
307
- ":| categories. |categoriesed |s|ies|cate|categories(|Categories, |ca|cat" +
308
- "egories at |categoriesly | the categories of |categ|c| Categories, |Cate" +
309
- 'gories"|.categories(|CATEGORIES |Categories">|categories="| categories.|' +
310
- ".com/categories| the categories of the |Categories'|categories. This |c" +
311
- "ategories,|.categories |Categories(|Categories.|categories not | categor" +
312
- 'ies="|categorieser | CATEGORIES |categoriesal | CATEGORIES|categories=' +
313
- "'|CATEGORIES\"|Categories. | categories(|categoriesful | Categories. |ca" +
314
- "tegoriesive |categoriesless |CATEGORIES'|categoriesest | Categories.|CA" +
315
- "TEGORIES\">| categories='|Categories,|categoriesize |CATEGORIES.|" +
316
- '\xc2\xa0categories| categories,|Categories="|CATEGORIES="|categoriesous ' +
317
- "|CATEGORIES, |Categories='| Categories,| CATEGORIES=\"| CATEGORIES, |CAT" +
318
- "EGORIES,|CATEGORIES(|CATEGORIES. | CATEGORIES.|CATEGORIES='| CATEGORIES" +
319
- ". | Categories=\"| CATEGORIES='| Categories='",
320
- // typo:on
321
- );
322
- },
323
-
324
- testAllTransforms4() {
325
- const compressed = [
326
- 0x1b, 0x40, 0x03, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00, 0x07, 0x5b, 0x26,
327
- 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x1b, 0x51, 0x3e, 0x42, 0x51, 0x3e, 0x81, 0x02, 0x51,
328
- 0x3e, 0x11, 0x04, 0xa2, 0x7c, 0xe2, 0x0b, 0x44, 0xf9, 0x24, 0x1b, 0x10, 0xe5, 0x93, 0x84,
329
- 0x50, 0x94, 0x4f, 0xba, 0x02, 0x51, 0x3e, 0x69, 0x0c, 0x45, 0xf9, 0x64, 0x39, 0x20, 0xca,
330
- 0x27, 0x13, 0x22, 0x51, 0x3e, 0xd9, 0x11, 0x8a, 0xf2, 0xc9, 0xa2, 0x58, 0x94, 0x4f, 0x4e,
331
- 0x05, 0xa2, 0x7c, 0x72, 0x2c, 0x12, 0xe5, 0x93, 0x83, 0xa1, 0x28, 0x9f, 0xfc, 0x8c, 0x45,
332
- 0xf9, 0x14, 0x6e, 0x40, 0x94, 0x4f, 0x71, 0x47, 0x44, 0xf9, 0x14, 0x80, 0x48, 0x94, 0x4f,
333
- 0x81, 0xc8, 0x44, 0xf9, 0x14, 0x8e, 0x50, 0x94, 0x4f, 0x41, 0x49, 0x45, 0xf9, 0x14, 0x9b,
334
- 0x58, 0x94, 0x4f, 0x11, 0xca, 0x45, 0xf9, 0x94, 0xa3, 0x40, 0x94, 0x4f, 0x99, 0x4a, 0x44,
335
- 0xf9, 0x94, 0xb3, 0x48, 0x94, 0x4f, 0x59, 0xcb, 0x44, 0xf9, 0x94, 0xb8, 0x50, 0x94, 0x4f,
336
- 0x09, 0x4c, 0x45, 0xf9, 0x94, 0xcb, 0x58, 0x94, 0x4f, 0x19, 0xcd, 0x45, 0xf9, 0x54, 0xd8,
337
- 0x80, 0x28, 0x9f, 0xca, 0x9b, 0x10, 0xe5, 0x53, 0x99, 0x23, 0xa2, 0x7c, 0xaa, 0x73, 0x46,
338
- 0x94, 0x4f, 0x25, 0x0f, 0x89, 0xf2, 0xa9, 0xf0, 0x29, 0x51, 0x3e, 0xd5, 0x40, 0x26, 0xca,
339
- 0xa7, 0x62, 0xe8, 0x44, 0xf9, 0x54, 0x0d, 0xa1, 0x28, 0x9f, 0xca, 0xa1, 0x14, 0xe5, 0x53,
340
- 0x61, 0xa4, 0xa2, 0x7c, 0xaa, 0x8c, 0x56, 0x94, 0x4f, 0x45, 0x12, 0x8b, 0xf2, 0xa9, 0x52,
341
- 0x6a, 0x51, 0x3e, 0x95, 0x4c, 0x2e, 0xca, 0xa7, 0xda, 0xe9, 0x45, 0xf9, 0xd4, 0x44, 0x81,
342
- 0x28, 0x9f, 0xba, 0xa8, 0x10, 0xe5, 0x53, 0x37, 0x25, 0xa2, 0x7c, 0x6a, 0xaa, 0x46, 0x94,
343
- 0x4f, 0xad, 0x15, 0x89, 0xf2, 0xa9, 0xc5, 0x2a, 0x51, 0x3e, 0xb5, 0x5a, 0x26, 0xca, 0xa7,
344
- 0x5e, 0xeb, 0x44, 0xf9, 0xd4, 0x6c, 0xa1, 0x28, 0x9f, 0xba, 0xad, 0x14, 0xe5, 0x53, 0xcf,
345
- 0xa5, 0xa2, 0x7c, 0x6a, 0xbd, 0x56, 0x94, 0x4f, 0xbd, 0x17, 0x8b, 0xf2, 0xa9, 0x09, 0x6b,
346
- 0x51, 0x3e, 0x35, 0x63, 0x2e, 0xca, 0xa7, 0xd6, 0xec, 0x45, 0xf9, 0x34, 0x9b, 0x01, 0x51,
347
- 0x3e, 0x0d, 0x67, 0x41, 0x94, 0x4f, 0x43, 0x9a, 0x10, 0xe5, 0xd3, 0xa8, 0x36, 0x44, 0xf9,
348
- 0x34, 0xb1, 0x11, 0x51, 0x3e, 0xcd, 0x6d, 0x45, 0x94, 0x4f, 0xe3, 0x9b, 0x11, 0xe5, 0xd3,
349
- 0x14, 0x77, 0x44, 0xf9, 0x34, 0xcc, 0x21, 0x51, 0x3e, 0x8d, 0x75, 0x49, 0x94, 0x4f, 0x83,
350
- 0x9e, 0x12, 0xe5, 0xd3, 0xb8, 0xb7, 0x44, 0xf9, 0x34, 0xfa, 0x31, 0x51, 0x3e, 0x0d, 0x80,
351
- 0x4d, 0x94, 0x4f, 0x73, 0xa0, 0x13, 0xe5, 0xd3, 0x34, 0xf8, 0x44, 0xf9, 0x34, 0x13, 0x42,
352
- 0x51, 0x3e, 0x4d, 0x87, 0x51, 0x94, 0x4f, 0x53, 0xa2, 0x14, 0xe5, 0xd3, 0xb4, 0x38, 0x45,
353
- 0xf9, 0x34, 0x34, 0x52, 0x51, 0x3e, 0x0d, 0x8f, 0x55, 0x94, 0x4f, 0x23, 0xa4, 0x15, 0xe5,
354
- 0xd3, 0x24, 0x79, 0x45, 0xf9, 0x34, 0x4f, 0x62, 0x51, 0x3e, 0x8d, 0x95, 0x59, 0x94, 0x4f,
355
- 0xd3, 0xa5, 0x16, 0xe5, 0xd3, 0x98, 0xb9, 0x45, 0xf9, 0x34, 0x6e, 0x72, 0x51, 0x3e, 0xcd,
356
- 0x9d, 0x5d, 0x94, 0x4f, 0x13, 0xa8, 0x17, 0xe5, 0xd3, 0x1c, 0xfa, 0x45, 0xf9, 0xb4, 0x90,
357
- 0x02, 0x51, 0x3e, 0xed, 0xa5, 0x41, 0x94, 0x4f, 0xeb, 0xa9, 0x10, 0xe5, 0xd3, 0x9a, 0x3a,
358
- 0x44, 0xf9, 0xb4, 0xac, 0x12, 0x51, 0x3e, 0x6d, 0xad, 0x45, 0x94, 0x4f, 0xbb, 0xab, 0x11,
359
- 0xe5, 0xd3, 0x0a, 0x7b, 0x44, 0xf9, 0xb4, 0xc9, 0x22, 0x51, 0x3e, 0x2d, 0xb4, 0x49, 0x94,
360
- 0x4f, 0x7b, 0xad, 0x12, 0xe5, 0xd3, 0x82, 0xbb, 0x44, 0xf9, 0xb4, 0xe7, 0x32, 0x51, 0x3e,
361
- 0xad, 0xbb, 0x4d, 0x94, 0x4f, 0x5b, 0xaf, 0x13, 0xe5, 0xd3, 0xf6, 0xfb, 0x44, 0xf9, 0xb4,
362
- 0x05, 0x43, 0x51, 0x3e, 0xed, 0xc2, 0x51, 0x94, 0x4f, 0x1b, 0xb1, 0x14, 0xe5, 0xd3, 0x62,
363
- 0x3c, 0x45, 0xf9, 0xb4, 0x1f, 0x53, 0x51, 0x3e, 0xad, 0xc9, 0x55, 0x94, 0x4f, 0xeb, 0xb2,
364
- 0x15, 0xe5, 0xd3, 0xda, 0x7c, 0x45, 0xf9, 0xb4, 0x3e, 0x63,
365
- ];
366
- checkSynth(
367
- /*
368
- * // The stream consists of word "time" with all possible transforms.
369
- * main_header
370
- * metablock_header_easy: 833, 1
371
- * command_easy: 4, "|", 2 // = 0 << 10 + 1 + 1
372
- * command_easy: 4, "|", 1031 // = 1 << 10 + 1 + 6
373
- * command_easy: 4, "|", 2061 // = 2 << 10 + 1 + 12
374
- * command_easy: 4, "|", 3092 // = 3 << 10 + 1 + 19
375
- * command_easy: 4, "|", 4120 // = 4 << 10 + 1 + 23
376
- * command_easy: 4, "|", 5150 // = 5 << 10 + 1 + 29
377
- * command_easy: 4, "|", 6184 // = 6 << 10 + 1 + 39
378
- * command_easy: 4, "|", 7214 // = 7 << 10 + 1 + 45
379
- * command_easy: 4, "|", 8246 // = 8 << 10 + 1 + 53
380
- * command_easy: 4, "|", 9279 // = 9 << 10 + 1 + 62
381
- * command_easy: 4, "|", 10308 // = 10 << 10 + 1 + 67
382
- * command_easy: 4, "|", 11342 // = 11 << 10 + 1 + 77
383
- * command_easy: 4, "|", 12369 // = 12 << 10 + 1 + 80
384
- * command_easy: 4, "|", 13397 // = 13 << 10 + 1 + 84
385
- * command_easy: 4, "|", 14429 // = 14 << 10 + 1 + 92
386
- * command_easy: 4, "|", 15460 // = 15 << 10 + 1 + 99
387
- * command_easy: 4, "|", 16491 // = 16 << 10 + 1 + 106
388
- * command_easy: 4, "|", 17524 // = 17 << 10 + 1 + 115
389
- * command_easy: 4, "|", 18557 // = 18 << 10 + 1 + 124
390
- * command_easy: 4, "|", 19589 // = 19 << 10 + 1 + 132
391
- * command_easy: 4, "|", 20619 // = 20 << 10 + 1 + 138
392
- * command_easy: 4, "|", 21649 // = 21 << 10 + 1 + 144
393
- * command_easy: 4, "|", 22680 // = 22 << 10 + 1 + 151
394
- * command_easy: 4, "|", 23710 // = 23 << 10 + 1 + 157
395
- * command_easy: 4, "|", 24736 // = 24 << 10 + 1 + 159
396
- * command_easy: 4, "|", 25766 // = 25 << 10 + 1 + 165
397
- * command_easy: 4, "|", 26800 // = 26 << 10 + 1 + 175
398
- * command_easy: 4, "|", 27826 // = 27 << 10 + 1 + 177
399
- * command_easy: 4, "|", 28853 // = 28 << 10 + 1 + 180
400
- * command_easy: 4, "|", 29885 // = 29 << 10 + 1 + 188
401
- * command_easy: 4, "|", 30920 // = 30 << 10 + 1 + 199
402
- * command_easy: 4, "|", 31950 // = 31 << 10 + 1 + 205
403
- * command_easy: 4, "|", 32981 // = 32 << 10 + 1 + 212
404
- * command_easy: 4, "|", 34011 // = 33 << 10 + 1 + 218
405
- * command_easy: 4, "|", 35043 // = 34 << 10 + 1 + 226
406
- * command_easy: 4, "|", 36068 // = 35 << 10 + 1 + 227
407
- * command_easy: 4, "|", 37103 // = 36 << 10 + 1 + 238
408
- * command_easy: 4, "|", 38133 // = 37 << 10 + 1 + 244
409
- * command_easy: 4, "|", 39168 // = 38 << 10 + 1 + 255
410
- * command_easy: 4, "|", 40201 // = 39 << 10 + 1 + 264
411
- * command_easy: 4, "|", 41226 // = 40 << 10 + 1 + 265
412
- * command_easy: 4, "|", 42251 // = 41 << 10 + 1 + 266
413
- * command_easy: 4, "|", 43285 // = 42 << 10 + 1 + 276
414
- * command_easy: 4, "|", 44310 // = 43 << 10 + 1 + 277
415
- * command_easy: 4, "|", 45345 // = 44 << 10 + 1 + 288
416
- * command_easy: 4, "|", 46374 // = 45 << 10 + 1 + 293
417
- * command_easy: 4, "|", 47407 // = 46 << 10 + 1 + 302
418
- * command_easy: 4, "|", 48440 // = 47 << 10 + 1 + 311
419
- * command_easy: 4, "|", 49473 // = 48 << 10 + 1 + 320
420
- * command_easy: 4, "|", 50498 // = 49 << 10 + 1 + 321
421
- * command_easy: 4, "|", 51530 // = 50 << 10 + 1 + 329
422
- * command_easy: 4, "|", 52561 // = 51 << 10 + 1 + 336
423
- * command_easy: 4, "|", 53591 // = 52 << 10 + 1 + 342
424
- * command_easy: 4, "|", 54623 // = 53 << 10 + 1 + 350
425
- * command_easy: 4, "|", 55655 // = 54 << 10 + 1 + 358
426
- * command_easy: 4, "|", 56680 // = 55 << 10 + 1 + 359
427
- * command_easy: 4, "|", 57705 // = 56 << 10 + 1 + 360
428
- * command_easy: 4, "|", 58730 // = 57 << 10 + 1 + 361
429
- * command_easy: 4, "|", 59760 // = 58 << 10 + 1 + 367
430
- * command_easy: 4, "|", 60791 // = 59 << 10 + 1 + 374
431
- * command_easy: 4, "|", 61816 // = 60 << 10 + 1 + 375
432
- * command_easy: 4, "|", 62849 // = 61 << 10 + 1 + 384
433
- * command_easy: 4, "|", 63881 // = 62 << 10 + 1 + 392
434
- * command_easy: 4, "|", 64919 // = 63 << 10 + 1 + 406
435
- * command_easy: 4, "|", 65944 // = 64 << 10 + 1 + 407
436
- * command_easy: 4, "|", 66969 // = 65 << 10 + 1 + 408
437
- * command_easy: 4, "|", 68001 // = 66 << 10 + 1 + 416
438
- * command_easy: 4, "|", 69031 // = 67 << 10 + 1 + 422
439
- * command_easy: 4, "|", 70062 // = 68 << 10 + 1 + 429
440
- * command_easy: 4, "|", 71092 // = 69 << 10 + 1 + 435
441
- * command_easy: 4, "|", 72123 // = 70 << 10 + 1 + 442
442
- * command_easy: 4, "|", 73154 // = 71 << 10 + 1 + 449
443
- * command_easy: 4, "|", 74185 // = 72 << 10 + 1 + 456
444
- * command_easy: 4, "|", 75219 // = 73 << 10 + 1 + 466
445
- * command_easy: 4, "|", 76261 // = 74 << 10 + 1 + 484
446
- * command_easy: 4, "|", 77291 // = 75 << 10 + 1 + 490
447
- * command_easy: 4, "|", 78327 // = 76 << 10 + 1 + 502
448
- * command_easy: 4, "|", 79357 // = 77 << 10 + 1 + 508
449
- * command_easy: 4, "|", 80388 // = 78 << 10 + 1 + 515
450
- * command_easy: 4, "|", 81418 // = 79 << 10 + 1 + 521
451
- * command_easy: 4, "|", 82448 // = 80 << 10 + 1 + 527
452
- * command_easy: 4, "|", 83482 // = 81 << 10 + 1 + 537
453
- * command_easy: 4, "|", 84514 // = 82 << 10 + 1 + 545
454
- * command_easy: 4, "|", 85546 // = 83 << 10 + 1 + 553
455
- * command_easy: 4, "|", 86577 // = 84 << 10 + 1 + 560
456
- * command_easy: 4, "|", 87609 // = 85 << 10 + 1 + 568
457
- * command_easy: 4, "|", 88639 // = 86 << 10 + 1 + 574
458
- * command_easy: 4, "|", 89670 // = 87 << 10 + 1 + 581
459
- * command_easy: 4, "|", 90700 // = 88 << 10 + 1 + 587
460
- * command_easy: 4, "|", 91731 // = 89 << 10 + 1 + 594
461
- * command_easy: 4, "|", 92762 // = 90 << 10 + 1 + 601
462
- * command_easy: 4, "|", 93795 // = 91 << 10 + 1 + 610
463
- * command_easy: 4, "|", 94827 // = 92 << 10 + 1 + 618
464
- * command_easy: 4, "|", 95860 // = 93 << 10 + 1 + 627
465
- * command_easy: 4, "|", 96894 // = 94 << 10 + 1 + 637
466
- * command_easy: 4, "|", 97924 // = 95 << 10 + 1 + 643
467
- * command_easy: 4, "|", 98957 // = 96 << 10 + 1 + 652
468
- * command_easy: 4, "|", 99988 // = 97 << 10 + 1 + 659
469
- * command_easy: 4, "|", 101019 // = 98 << 10 + 1 + 666
470
- * command_easy: 4, "|", 102051 // = 99 << 10 + 1 + 674
471
- * command_easy: 4, "|", 103081 // = 100 << 10 + 1 + 680
472
- * command_easy: 4, "|", 104114 // = 101 << 10 + 1 + 689
473
- * command_easy: 4, "|", 105144 // = 102 << 10 + 1 + 695
474
- * command_easy: 4, "|", 106175 // = 103 << 10 + 1 + 702
475
- * command_easy: 4, "|", 107206 // = 104 << 10 + 1 + 709
476
- * command_easy: 4, "|", 108237 // = 105 << 10 + 1 + 716
477
- * command_easy: 4, "|", 109268 // = 106 << 10 + 1 + 723
478
- * command_easy: 4, "|", 110301 // = 107 << 10 + 1 + 732
479
- * command_easy: 4, "|", 111332 // = 108 << 10 + 1 + 739
480
- * command_easy: 4, "|", 112363 // = 109 << 10 + 1 + 746
481
- * command_easy: 4, "|", 113394 // = 110 << 10 + 1 + 753
482
- * command_easy: 4, "|", 114426 // = 111 << 10 + 1 + 761
483
- * command_easy: 4, "|", 115458 // = 112 << 10 + 1 + 769
484
- * command_easy: 4, "|", 116488 // = 113 << 10 + 1 + 775
485
- * command_easy: 4, "|", 117518 // = 114 << 10 + 1 + 781
486
- * command_easy: 4, "|", 118549 // = 115 << 10 + 1 + 788
487
- * command_easy: 4, "|", 119580 // = 116 << 10 + 1 + 795
488
- * command_easy: 4, "|", 120611 // = 117 << 10 + 1 + 802
489
- * command_easy: 4, "|", 121643 // = 118 << 10 + 1 + 810
490
- * command_easy: 4, "|", 122675 // = 119 << 10 + 1 + 818
491
- * command_easy: 4, "|", 123707 // = 120 << 10 + 1 + 826
492
- */
493
- compressed,
494
- true,
495
- "|time|time | time |ime|Time |time the | time|s time |time of |Time|time an" +
496
- 'd |me|tim|, time |time, | Time |time in |time to |e time |time"|time.|ti' +
497
- 'me">|time\n|t|time]|time for |e|ti|time a |time that | Time|time. |.time' +
498
- "| time, ||time with |time'|time from |time by ||| the time||time. The |" +
499
- "TIME|time on |time as |time is ||timing |time\n\t|time:| time. |timeed |" +
500
- '|||time(|Time, ||time at |timely | the time of ||| Time, |Time"|.time(|T' +
501
- 'IME |Time">|time="| time.|.com/time| the time of the |Time\'|time. This ' +
502
- '|time,|.time |Time(|Time.|time not | time="|timeer | TIME |timeal | TIME' +
503
- "|time='|TIME\"|Time. | time(|timeful | Time. |timeive |timeless |TIME" +
504
- "'|timeest | Time.|TIME\">| time='|Time,|timeize |TIME.|\xc2\xa0time| ti" +
505
- 'me,|Time="|TIME="|timeous |TIME, |Time=\'| Time,| TIME="| TIME, |TIME,|T' +
506
- "IME(|TIME. | TIME.|TIME='| TIME. | Time=\"| TIME='| Time='",
507
- );
508
- },
509
-
510
- testBaseDictWord() {
511
- const compressed = [
512
- 0x1b, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00, 0x07, 0x5b, 0x26,
513
- 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x1b, 0x41, 0x02,
514
- ];
515
- checkSynth(
516
- /*
517
- * // The stream consists of a base dictionary word.
518
- * main_header
519
- * metablock_header_easy: 4, 1
520
- * command_inscopy_easy: 0, 4
521
- * command_dist_easy: 1
522
- */
523
- compressed,
524
- true,
525
- "time",
526
- );
527
- },
528
-
529
- testBaseDictWordFinishBlockOnRingbufferWrap() {
530
- const compressed = [
531
- 0x1b, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00, 0x07, 0x5b, 0x26,
532
- 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x9b, 0x58, 0x32, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34,
533
- 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34,
534
- 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0xd4, 0x00,
535
- ];
536
- checkSynth(
537
- /*
538
- * main_header
539
- * metablock_header_easy: 32, 1 // 32 = minimal ringbuffer size
540
- * command_easy: 4, "aaaaaaaaaaaaaaaaaaaaaaaaaaaa", 29
541
- */
542
- compressed,
543
- true,
544
- times(28, "a") + "time",
545
- );
546
- },
547
-
548
- testBaseDictWordTooLong() {
549
- const compressed = [
550
- 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00, 0x07, 0x5b, 0x26,
551
- 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x1b, 0x41, 0x02,
552
- ];
553
- checkSynth(
554
- /*
555
- * // Has an unmodified dictionary word that goes over the end of the
556
- * // meta-block. Same as BaseDictWord, but with a shorter meta-block length.
557
- * main_header
558
- * metablock_header_easy: 1, 1
559
- * command_inscopy_easy: 0, 4
560
- * command_dist_easy: 1
561
- */
562
- compressed,
563
- false,
564
- "",
565
- );
566
- },
567
-
568
- testBlockCountMessage() {
569
- const compressed = [
570
- 0x1b, 0x0b, 0x00, 0x11, 0x01, 0x8c, 0xc1, 0xc5, 0x0d, 0x08, 0x00, 0x22, 0x65, 0xe1, 0xfc,
571
- 0xfd, 0x22, 0x2c, 0xc4, 0x00, 0x00, 0x38, 0xd8, 0x32, 0x89, 0x01, 0x12, 0x00, 0x00, 0x77,
572
- 0xda, 0x04, 0x10, 0x42, 0x00, 0x00, 0x00,
573
- ];
574
- checkSynth(
575
- /*
576
- * // Same as BlockSwitchMessage but also uses 0-bit block-type commands.
577
- * main_header
578
- * metablock_header_begin: 1, 0, 12, 0
579
- * // two literal block types
580
- * vlq_blocktypes: 2
581
- * huffman_simple: 1,1,4, 1 // literal blocktype prefix code
582
- * huffman_fixed: 26 // literal blockcount prefix code
583
- * blockcount_easy: 2 // 2 a's
584
- * // one ins/copy and dist block type
585
- * vlq_blocktypes: 1
586
- * vlq_blocktypes: 1
587
- * ndirect: 0, 0
588
- * // two MSB6 literal context modes
589
- * bits: "00", "00"
590
- * // two literal prefix codes
591
- * vlq_blocktypes: 2
592
- * // literal context map
593
- * vlq_rlemax: 5
594
- * huffman_simple: 0,3,7, 5,0,6 // context map RLE Huffman code
595
- * // context map RLE: repeat 0 64 times, 1+5 64 times
596
- * bits: "01", "0", "11111", "11", "0", "11111"
597
- * bit: 1 // MTF enabled
598
- * // one distance prefix code
599
- * vlq_blocktypes: 1
600
- * huffman_simple: 0,1,256, 97 // only a's
601
- * huffman_simple: 0,1,256, 98 // only b's
602
- * huffman_fixed: 704
603
- * huffman_fixed: 64
604
- * // now comes the data
605
- * command_inscopy_easy: 12, 0
606
- * blockcount_easy: 2 // switch to other block type; 2 b's
607
- * blockcount_easy: 5 // switch to other block type; 5 a's
608
- * blockcount_easy: 1 // switch to other block type; 1 b
609
- * blockcount_easy: 1 // switch to other block type; 1 a
610
- * blockcount_easy: 1 // switch to other block type; 1 b
611
- */
612
- compressed,
613
- true,
614
- "aabbaaaaabab",
615
- );
616
- },
617
-
618
- testBlockSwitchMessage() {
619
- const compressed = [
620
- 0x1b, 0x0b, 0x00, 0xd1, 0xe1, 0x01, 0xc6, 0xe0, 0xe2, 0x06, 0x04, 0x00, 0x91, 0xb2, 0x70,
621
- 0xfe, 0x7e, 0x11, 0x16, 0x62, 0x00, 0x00, 0x1c, 0x6c, 0x99, 0xc4, 0x00, 0x09, 0x00, 0x80,
622
- 0x3b, 0x6d, 0x02, 0x08, 0x82, 0x00, 0x00, 0x00,
623
- ];
624
- checkSynth(
625
- /*
626
- * // Uses blocks with 1-symbol Huffman codes that take 0 bits, so that it
627
- * // is the block-switch commands that encode the message rather than actual
628
- * // literals.
629
- * main_header
630
- * metablock_header_begin: 1, 0, 12, 0
631
- * // two literal block types
632
- * vlq_blocktypes: 2
633
- * huffman_simple: 1,4,4, 1,0,2,3 // literal blocktype prefix code
634
- * huffman_fixed: 26 // literal blockcount prefix code
635
- * blockcount_easy: 2 // 2 a's
636
- * // one ins/copy and dist block type
637
- * vlq_blocktypes: 1
638
- * vlq_blocktypes: 1
639
- * ndirect: 0, 0
640
- * // two MSB6 literal context modes
641
- * bits: "00", "00"
642
- * // two literal prefix codes
643
- * vlq_blocktypes: 2
644
- * // literal context map
645
- * vlq_rlemax: 5
646
- * huffman_simple: 0,3,7, 5,0,6 // context map RLE Huffman code
647
- * // context map RLE: repeat 0 64 times, 1+5 64 times
648
- * bits: "01", "0", "11111", "11", "0", "11111"
649
- * bit: 1 // MTF enabled
650
- * // one distance prefix code
651
- * vlq_blocktypes: 1
652
- * huffman_simple: 0,1,256, 97 // only a's
653
- * huffman_simple: 0,1,256, 98 // only b's
654
- * huffman_fixed: 704
655
- * huffman_fixed: 64
656
- * // now comes the data
657
- * command_inscopy_easy: 12, 0
658
- * bits: "0"; blockcount_easy: 2 // switch to other block type; 2 b's
659
- * bits: "0"; blockcount_easy: 5 // switch to other block type; 5 a's
660
- * bits: "0"; blockcount_easy: 1 // switch to other block type; 1 b
661
- * bits: "0"; blockcount_easy: 1 // switch to other block type; 1 a
662
- * bits: "0"; blockcount_easy: 1 // switch to other block type; 1 b
663
- */
664
- compressed,
665
- true,
666
- "aabbaaaaabab",
667
- );
668
- },
669
-
670
- testClClTreeDeficiency() {
671
- const compressed = [
672
- 0x1b, 0x03, 0x00, 0x00, 0x00, 0x01, 0x80, 0x43, 0x01, 0xe0, 0x05, 0x88, 0x55, 0x90, 0x01,
673
- 0x00, 0x38, 0xd8, 0x32, 0x89, 0x01, 0x12, 0x00, 0x00, 0x77, 0xda, 0x28, 0x40, 0x23,
674
- ];
675
- checkSynth(
676
- /*
677
- * // This test is a copy of TooManySymbolsRepeated, with changed clcl table.
678
- * main_header
679
- * metablock_header_begin: 1, 0, 4, 0
680
- * metablock_header_trivial_context
681
- * hskip: 0
682
- * clcl_ordered: 0,3,0,0,0,0,0,0,3,3,0,0,0,0,0,0,1,0
683
- * set_prefix_cl_rle: "", "110", "", "", "", "", "", "", "111", "101",\
684
- * "", "", "", "", "", "", "0", ""
685
- * cl_rle: 8
686
- * cl_rle_rep: 9, 96
687
- * cl_rle: 1
688
- * cl_rle_rep: 9, 159 // 1 + 96 + 1 + 159 = 257 > 256 = alphabet size
689
- * huffman_fixed: 704
690
- * huffman_fixed: 64
691
- * command_inscopy_easy: 4, 0
692
- * command_literal_bits: 0, 0, 0, 101100010
693
- */
694
- compressed,
695
- false,
696
- "aaab",
697
- );
698
- },
699
-
700
- testClClTreeExcess() {
701
- const compressed = [
702
- 0x1b, 0x03, 0x00, 0x00, 0x00, 0x01, 0x80, 0xc3, 0x7b, 0x80, 0x58, 0x41, 0x06, 0x00, 0xe0,
703
- 0x60, 0xcb, 0x24, 0x06, 0x48, 0x00, 0x00, 0xdc, 0x69, 0xa3, 0x00, 0x8d, 0x00,
704
- ];
705
- checkSynth(
706
- /*
707
- * // This test is a copy of ClClTreeDeficiency, with changed clcl table.
708
- * main_header
709
- * metablock_header_begin: 1, 0, 4, 0
710
- * metablock_header_trivial_context
711
- * hskip: 0
712
- * clcl_ordered: 0,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,1,0
713
- * set_prefix_cl_rle: "", "110", "", "", "", "", "", "", "111", "1",\
714
- * "", "", "", "", "", "", "0", ""
715
- * cl_rle: 8
716
- * cl_rle_rep: 9, 96
717
- * cl_rle: 1
718
- * cl_rle_rep: 9, 159 // 1 + 96 + 1 + 159 = 257 > 256 = alphabet size
719
- * huffman_fixed: 704
720
- * huffman_fixed: 64
721
- * command_inscopy_easy: 4, 0
722
- * command_literal_bits: 0, 0, 0, 101100010
723
- */
724
- compressed,
725
- false,
726
- "aaab",
727
- );
728
- },
729
-
730
- testComplexHuffmanCodeTwoSymbols() {
731
- const compressed = [
732
- 0x1b, 0x01, 0x00, 0x00, 0x80, 0x03, 0xe0, 0xa2, 0x1a, 0x00, 0x00, 0x0e, 0xb6, 0x4c, 0x62,
733
- 0x80, 0x04, 0x00, 0xc0, 0x9d, 0x36, 0x12, 0x04,
734
- ];
735
- checkSynth(
736
- /*
737
- * // This tests a complex Huffman code with only two symbols followed by a
738
- * // tiny amount of content.
739
- * main_header
740
- * metablock_header_begin: 1, 0, 2, 0
741
- * metablock_header_trivial_context
742
- * // begin of literal Huffman tree. The tree has symbol length 1 for "a",
743
- * // symbol length 1 for "b" and symbol length 0 for all others.
744
- * hskip: 0
745
- * clcl_ordered: 0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
746
- * set_prefix_cl_rle: "", "0", "", "", "", "", "", "", "", "",\
747
- * "", "", "", "", "", "", "", "1"
748
- * cl_rle_rep_0: 97
749
- * cl_rle: 1 // literal number 97, that is, the letter 'a'
750
- * cl_rle: 1 // literal number 98, that is, the letter 'b'
751
- * // end of literal Huffman tree
752
- * huffman_fixed: 704
753
- * huffman_fixed: 64
754
- * command_inscopy_easy: 2, 0
755
- * command_literal_bits: 0, 1 // a followed by b
756
- */
757
- compressed,
758
- true,
759
- "ab",
760
- );
761
- },
762
-
763
- testCompressedUncompressedShortCompressed() {
764
- const compressed = [
765
- 0x8b, 0xfe, 0x01, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00, 0x07, 0x5b, 0x26,
766
- 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x9b, 0x66, 0x6f, 0x1b, 0x0a, 0x50, 0x00, 0x10, 0x62,
767
- 0x62, 0x62, 0x62, 0x62, 0x62, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00,
768
- 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x24, 0x00,
769
- ];
770
- checkSynth(
771
- /*
772
- * main_header: 22
773
- * metablock_header_easy: 1022, 0
774
- * command_easy: 1021, "a", 1 // 1022 x "a"
775
- * metablock_uncompressed: "bbbbbb"
776
- * metablock_header_easy: 4, 1
777
- * command_easy: 4, "", 1 // 6 + 4 = 10 x "b"
778
- */
779
- compressed,
780
- true,
781
- times(1022, "a") + times(10, "b"),
782
- );
783
- },
784
-
785
- testCompressedUncompressedShortCompressedSmallWindow() {
786
- const compressed = [
787
- 0x21, 0xf4, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xa7, 0x6d, 0x00, 0x00, 0x38, 0xd8, 0x32,
788
- 0x89, 0x01, 0x12, 0x00, 0x00, 0x77, 0xda, 0x34, 0x7b, 0xdb, 0x50, 0x80, 0x02, 0x80, 0x62,
789
- 0x62, 0x62, 0x62, 0x62, 0x62, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00,
790
- 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x24, 0x00,
791
- ];
792
- checkSynth(
793
- /*
794
- * main_header: 10
795
- * metablock_header_easy: 1022, 0
796
- * command_easy: 1021, "a", 1 // 1022 x "a"
797
- * metablock_uncompressed: "bbbbbb"
798
- * metablock_header_easy: 4, 1
799
- * command_easy: 4, "", 1 // 6 + 4 = 10 x "b"
800
- */
801
- compressed,
802
- true,
803
- times(1022, "a") + times(10, "b"),
804
- );
805
- },
806
-
807
- testCopyLengthTooLong() {
808
- const compressed = [
809
- 0x1b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00, 0x07, 0x5b, 0x26,
810
- 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x1b, 0x11, 0x86, 0x02,
811
- ];
812
- checkSynth(
813
- /*
814
- * // Has a copy length that goes over the end of the meta-block.
815
- * // Same as OneCommand, but with a shorter meta-block length.
816
- * main_header
817
- * metablock_header_easy: 2, 1
818
- * command_easy: 2, "a", 1
819
- */
820
- compressed,
821
- false,
822
- "",
823
- );
824
- },
825
-
826
- testCopyTooLong() {
827
- const compressed = [
828
- 0xa1, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xa7, 0x6d, 0x00, 0x00, 0x38, 0xd8, 0x32,
829
- 0x89, 0x01, 0x12, 0x00, 0x00, 0x77, 0xda, 0x34, 0xab, 0xdb, 0x50, 0x00,
830
- ];
831
- checkSynth(
832
- /*
833
- * // Has a copy length that goes over the end of the meta-block,
834
- * // with a ringbuffer wrap.
835
- * main_header: 10
836
- * metablock_header_easy: 2, 1
837
- * command_easy: 1024, "a", 1
838
- */
839
- compressed,
840
- false,
841
- "",
842
- );
843
- },
844
-
845
- testCustomHuffmanCode() {
846
- const compressed = [
847
- 0x1b, 0x03, 0x00, 0x00, 0x00, 0x01, 0x80, 0xc3, 0x3d, 0x80, 0x58, 0x82, 0x08, 0x00, 0xc0,
848
- 0xc1, 0x96, 0x49, 0x0c, 0x90, 0x00, 0x00, 0xb8, 0xd3, 0x46, 0x01, 0x1a, 0x01,
849
- ];
850
- checkSynth(
851
- /*
852
- * // This tests a small hand crafted Huffman code followed by a tiny amount
853
- * // of content. This tests if the bit reader detects the end correctly even
854
- * // with tiny content after a larger Huffman tree encoding.
855
- * main_header
856
- * metablock_header_begin: 1, 0, 4, 0
857
- * metablock_header_trivial_context
858
- * // begin of literal Huffman tree. The tree has symbol length 1 for "a",
859
- * // symbol length 8 for null, symbol length 9 for all others. The length 1
860
- * // for a is chosen on purpose here, the others must be like that to
861
- * // fulfill the requirement that sum of 32>>length is 32768.
862
- * hskip: 0
863
- * clcl_ordered: 0,3,0,0,0,0,0,0,3,2,0,0,0,0,0,0,1,0
864
- * set_prefix_cl_rle: "", "110", "", "", "", "", "", "", "111", "10",\
865
- * "", "", "", "", "", "", "0", ""
866
- * cl_rle: 8
867
- * cl_rle_rep: 9, 96
868
- * cl_rle: 1 // literal number 97, that is, the letter 'a'
869
- * cl_rle_rep: 9, 158
870
- * // end of literal Huffman tree
871
- * huffman_fixed: 704
872
- * huffman_fixed: 64
873
- * command_inscopy_easy: 4, 0
874
- * // Here is how the code "101100010" for b is derived: remember that a has
875
- * // symbol length 1, null has symbol length 8, the rest 9. So in the
876
- * // canonical Huffman code, the code for "a" is "0", for null is
877
- * // "10000000". The next value has "100000010" (cfr. the rules of canonical
878
- * // prefix code). Counting upwards +95 from there, the value "@" (ASCII 96,
879
- * // before "a") has "101100001", and so b, the next 9-bit symbol, has the
880
- * // next binary value "101100010".
881
- * command_literal_bits: 0, 0, 0, 101100010 // 3 a's followed by a b
882
- */
883
- compressed,
884
- true,
885
- "aaab",
886
- );
887
- },
888
-
889
- testDistanceLut() {
890
- const compressed = [
891
- 0x8b, 0x02, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00, 0x07, 0x5b, 0x26,
892
- 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x1b, 0x99, 0x86, 0x46, 0xc6, 0x22, 0x14, 0x00, 0x00,
893
- 0x03, 0x00, 0x00, 0x1c, 0xa7, 0x6d, 0x00, 0x00, 0x38, 0xd8, 0x32, 0x89, 0x01, 0x12, 0x21,
894
- 0x91, 0x69, 0x62, 0x6a, 0x36,
895
- ];
896
- checkSynth(
897
- /*
898
- * main_header
899
- * metablock_header_easy: 6, 0 // implicit ndirect: 0, 0
900
- * command_easy: 3, "abc", 3 // Insert "abc", copy "abc"
901
- * metablock_header_begin: 0, 0, 6, 0
902
- * vlq_blocktypes: 1 // num litetal block types
903
- * vlq_blocktypes: 1 // num command block types
904
- * vlq_blocktypes: 1 // num distance block types
905
- * ndirect: 3, 0
906
- * bits: "00" // literal context modes
907
- * vlq_blocktypes: 1 // num literal Huffman trees
908
- * // command has no context -> num trees == num block types
909
- * vlq_blocktypes: 1 // num distance Huffman trees
910
- * huffman_fixed: 256
911
- * huffman_fixed: 704
912
- * huffman_simple: 0,1,67, 18
913
- * command_inscopy_easy: 3, 3 // Insert 3, copy 3
914
- * command_literals_easy: "def"
915
- * // 0-bit Huffman code : dcode = 18 -> third direct distance
916
- * metablock_lastempty // make sure that no extra distance bits are read
917
- */
918
- compressed,
919
- true,
920
- "abcabcdefdef",
921
- );
922
- },
923
-
924
- testEmpty() {
925
- const compressed = [0x3b];
926
- checkSynth(
927
- /*
928
- * main_header
929
- * metablock_lastempty
930
- */
931
- compressed,
932
- true,
933
- "",
934
- );
935
- },
936
-
937
- testHelloWorld() {
938
- const compressed = [
939
- 0x1b, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00, 0x07, 0x5b, 0x26,
940
- 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x9b, 0x00, 0x59, 0x98, 0xda, 0xd8, 0xd8, 0x13, 0xb8,
941
- 0xdb, 0x3b, 0xd9, 0x98, 0x00,
942
- ];
943
- checkSynth(
944
- /*
945
- * main_header
946
- * metablock_fixed: "hello world", 1
947
- */
948
- compressed,
949
- true,
950
- "hello world",
951
- );
952
- },
953
-
954
- testInsertTooLong() {
955
- const compressed = [
956
- 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00, 0x07, 0x5b, 0x26,
957
- 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x1b, 0x09, 0x86, 0x46,
958
- ];
959
- checkSynth(
960
- /*
961
- * // Has an insert length that goes over the end of the meta-block.
962
- * // Same as OneInsert, but with a shorter meta-block length.
963
- * main_header
964
- * metablock_header_easy: 1, 1
965
- * command_easy: 0, "ab"
966
- */
967
- compressed,
968
- false,
969
- "",
970
- );
971
- },
972
-
973
- testIntactDistanceRingBuffer0() {
974
- const compressed = [
975
- 0x1b, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00, 0x07, 0x5b, 0x26,
976
- 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x1b, 0xa1, 0x80, 0x20, 0x00,
977
- ];
978
- checkSynth(
979
- /*
980
- * main_header
981
- * metablock_header_easy: 11, 1
982
- * command_inscopy_easy: 0, 7 // "himself" from dictionary
983
- * bits: "000000" // distance = 4 from RB; RB remains intact
984
- * command_inscopy_easy: 0, 4 // copy "self"
985
- * bits: "000000" // distance = 4 from RB; RB remains intact
986
- */
987
- compressed,
988
- true,
989
- "himselfself",
990
- );
991
- },
992
-
993
- testIntactDistanceRingBuffer1() {
994
- const compressed = [
995
- 0x1b, 0x09, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00, 0x07, 0x5b, 0x26,
996
- 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x1b, 0x21, 0xa0, 0x20, 0x00,
997
- ];
998
- checkSynth(
999
- /*
1000
- * main_header
1001
- * metablock_header_easy: 10, 1
1002
- * command_inscopy_easy: 0, 6 // "scroll" from dictionary
1003
- * bits: "100000" // distance = 11 from RB; RB remains intact
1004
- * command_inscopy_easy: 0, 4 // copy "roll"
1005
- * bits: "000000" // distance = 4 from RB; RB remains intact
1006
- */
1007
- compressed,
1008
- true,
1009
- "scrollroll",
1010
- );
1011
- },
1012
-
1013
- testIntactDistanceRingBuffer2() {
1014
- const compressed = [
1015
- 0x1b, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00, 0x07, 0x5b, 0x26,
1016
- 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x1b, 0x41, 0x80, 0x20, 0x50, 0x10, 0x24, 0x08, 0x06,
1017
- ];
1018
- checkSynth(
1019
- /*
1020
- * main_header
1021
- * metablock_header_easy: 16, 1
1022
- * command_inscopy_easy: 0, 4 // "left" from dictionary (index = 3 = 4 - 1)
1023
- * bits: "000000" // distance = 4 from RB; RB remains intact
1024
- * command_inscopy_easy: 0, 4 // "data" from dictionary (index = 6 = 11 - 5)
1025
- * bits: "100000" // distance = 11 from RB; RB remains intact
1026
- * command_inscopy_easy: 0, 4 // "data" from dictionary (index = 6 = 15 - 9)
1027
- * bits: "010000" // distance = 15 from RB; RB remains intact
1028
- * command_inscopy_easy: 0, 4 // "left" from dictionary (index = 3 = 16 - 13)
1029
- * bits: "110000" // distance = 16 from RB; RB remains intact
1030
- */
1031
- compressed,
1032
- true,
1033
- "leftdatadataleft",
1034
- );
1035
- },
1036
-
1037
- testIntactDistanceRingBufferNoDistanceValue0() {
1038
- const compressed = [
1039
- 0x1b, 0x17, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00, 0x07, 0x5b, 0x26,
1040
- 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x1b, 0x40, 0x82, 0x40, 0x41, 0x90, 0x20, 0x58, 0x18,
1041
- 0x00,
1042
- ];
1043
- checkSynth(
1044
- /*
1045
- * main_header
1046
- * metablock_header_easy: 24, 1
1047
- * // cmd is {ins_extra, copy_extra, distance_code, ctx, ins_off, copy_off}
1048
- * // cmd.2 = {0x00, 0x00, 0, 0x02, 0x0000, 0x0004}
1049
- * // cmd.2 = no insert, copy length = 4, distance_code = 0 (last distance)
1050
- * command_short: 2 // "left" from dictionary (index = 3 = 4 - 1)
1051
- * // Check that RB is untouched after the first command...
1052
- * command_inscopy_easy: 0, 4 // "data" from dictionary (index = 6 = 11 - 5)
1053
- * bits: "100000" // distance = 11 from RB; RB remains intact
1054
- * command_inscopy_easy: 0, 4 // "data" from dictionary (index = 6 = 15 - 9)
1055
- * bits: "010000" // distance = 15 from RB; RB remains intact
1056
- * command_inscopy_easy: 0, 4 // "left" from dictionary (index = 3 = 16 - 13)
1057
- * bits: "110000" // distance = 16 from RB; RB remains intact
1058
- * command_inscopy_easy: 0, 8 // copy "leftleft"
1059
- * bits: "000000" // distance = 4 from RB; RB remains intact
1060
- */
1061
- compressed,
1062
- true,
1063
- "leftdatadataleftleftleft",
1064
- );
1065
- },
1066
-
1067
- testIntactDistanceRingBufferNoDistanceValue1() {
1068
- const compressed = [
1069
- 0x1b, 0x19, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00, 0x07, 0x5b, 0x26,
1070
- 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x1b, 0xc0, 0x82, 0x41, 0x41, 0x90, 0x20, 0x58, 0x18,
1071
- 0x00,
1072
- ];
1073
- checkSynth(
1074
- /*
1075
- * main_header
1076
- * metablock_header_easy: 26, 1
1077
- * // cmd is {ins_extra, copy_extra, distance_code, ctx, ins_off, copy_off}
1078
- * // cmd.3 = {0x00, 0x00, 0, 0x03, 0x0000, 0x0005}
1079
- * // cmd.3 = no insert, copy length = 5, distance_code = 0 (last distance)
1080
- * command_short: 3 // "world" from dictionary (index = 3 = 4 - 1)
1081
- * // Check that RB is untouched after the first command...
1082
- * command_inscopy_easy: 0, 5 // "white" from dictionary (index = 5 = 11 - 6)
1083
- * bits: "100000" // distance = 11 from RB; RB remains intact
1084
- * command_inscopy_easy: 0, 4 // "back" from dictionary (index = 4 = 15 - 11)
1085
- * bits: "010000" // distance = 15 from RB; RB remains intact
1086
- * command_inscopy_easy: 0, 4 // "down" from dictionary (index = 1 = 16 - 15)
1087
- * bits: "110000" // distance = 16 from RB; RB remains intact
1088
- * command_inscopy_easy: 0, 8 // copy "downdown"
1089
- * bits: "000000" // distance = 4 from RB; RB remains intact
1090
- */
1091
- compressed,
1092
- true,
1093
- "worldwhitebackdowndowndown",
1094
- );
1095
- },
1096
-
1097
- testInvalidNoLastMetablock() {
1098
- const compressed = [
1099
- 0x0b, 0x06, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00, 0x07, 0x5b, 0x26,
1100
- 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x9b, 0x00, 0x13, 0x59, 0x98, 0xda, 0xd8, 0xd8, 0x13,
1101
- 0xb8, 0xdb, 0x3b, 0xd9, 0x98, 0xe8, 0x00,
1102
- ];
1103
- checkSynth(
1104
- /*
1105
- * main_header
1106
- * metablock_fixed: \"hello world\", 0
1107
- */
1108
- compressed,
1109
- false,
1110
- "hello world",
1111
- );
1112
- },
1113
-
1114
- testInvalidNoMetaBlocks() {
1115
- const compressed = [0x0b];
1116
- checkSynth(
1117
- /*
1118
- * main_header
1119
- */
1120
- compressed,
1121
- false,
1122
- "",
1123
- );
1124
- },
1125
-
1126
- testInvalidTooFarDist() {
1127
- const compressed = [
1128
- 0xa1, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xa7, 0x6d, 0x00, 0x00, 0x38, 0xd8, 0x32,
1129
- 0x89, 0x01, 0x12, 0x00, 0x00, 0x77, 0xda, 0xe8, 0xe0, 0x62, 0x6f, 0x4f, 0x60, 0x66, 0xe8,
1130
- 0x44, 0x38, 0x0f, 0x09, 0x0d,
1131
- ];
1132
- checkSynth(
1133
- /*
1134
- * main_header: 10
1135
- * metablock_header_begin: 1, 0, 10, 0
1136
- * metablock_header_trivial_context
1137
- * huffman_fixed: 256
1138
- * huffman_fixed: 704
1139
- * huffman_fixed: 64
1140
- * command_easy: 2, "too far!", 1000000 // distance too far for 10 wbits
1141
- */
1142
- compressed,
1143
- false,
1144
- "",
1145
- );
1146
- },
1147
-
1148
- testInvalidTooLargeContextMap() {
1149
- const compressed = [
1150
- 0x1b, 0x00, 0x00, 0xd1, 0xe1, 0x01, 0xc6, 0xe0, 0xe2, 0x06, 0x00, 0x00, 0x91, 0xb2, 0x70,
1151
- 0xfe, 0xfb, 0x45, 0x58, 0x88, 0x01, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00,
1152
- 0xee, 0xb4, 0x11, 0x01,
1153
- ];
1154
- checkSynth(
1155
- /*
1156
- * // Has a repeat code a context map that makes the size too big -> invalid.
1157
- * main_header
1158
- * metablock_header_begin: 1, 0, 1, 0
1159
- * // two literal block types
1160
- * vlq_blocktypes: 2
1161
- * huffman_simple: 1,4,4, 1,0,2,3 // literal blocktype prefix code
1162
- * huffman_fixed: 26 // literal blockcount prefix code
1163
- * blockcount_easy: 1
1164
- * // one ins/copy and dist block type
1165
- * vlq_blocktypes: 1
1166
- * vlq_blocktypes: 1
1167
- * ndirect: 0, 0
1168
- * // two MSB6 literal context modes
1169
- * bits: "00", "00"
1170
- * // two literal prefix codes
1171
- * vlq_blocktypes: 2
1172
- * // literal context map
1173
- * vlq_rlemax: 5
1174
- * huffman_simple: 0,3,7, 5,0,6 // context map RLE Huffman code
1175
- * // Too long context map RLE: repeat 0 64 times, 1+5 65 times, that is 129
1176
- * // values which is 1 too much.
1177
- * bits: "01", "0", "11111", "11", "11", "0", "11111"
1178
- * bit: 1 // MTF enabled
1179
- * // one distance prefix code
1180
- * vlq_blocktypes: 1
1181
- * huffman_simple: 0,1,256, 97 // only a's
1182
- * huffman_simple: 0,1,256, 98 // only b's
1183
- * huffman_fixed: 704
1184
- * huffman_fixed: 64
1185
- * // now comes the data
1186
- * command_inscopy_easy: 1, 0
1187
- */
1188
- compressed,
1189
- false,
1190
- "a",
1191
- );
1192
- },
1193
-
1194
- testInvalidTransformType() {
1195
- const compressed = [
1196
- 0x1b, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00, 0x07, 0x5b, 0x26,
1197
- 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x1b, 0x41, 0x2d, 0x01, 0x19,
1198
- ];
1199
- checkSynth(
1200
- /*
1201
- * main_header
1202
- * metablock_header_easy: 4, 1
1203
- * command_inscopy_easy: 0, 4
1204
- * command_dist_easy: 123905 // = 121 << 10 + 1
1205
- */
1206
- compressed,
1207
- false,
1208
- "",
1209
- );
1210
- },
1211
-
1212
- testInvalidWindowBits9() {
1213
- const compressed = [
1214
- 0x91, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xa7, 0x6d, 0x00, 0x00, 0x38, 0xd8, 0x32,
1215
- 0x89, 0x01, 0x12, 0x00, 0x00, 0x77, 0xda, 0xc8, 0x20, 0x32, 0xd4, 0x01,
1216
- ];
1217
- checkSynth(
1218
- /*
1219
- * main_header: 9
1220
- * metablock_fixed: \"a\", 1
1221
- */
1222
- compressed,
1223
- false,
1224
- "a",
1225
- );
1226
- },
1227
-
1228
- testManyTinyMetablocks() {
1229
- const compressed = [
1230
- 0x0b, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1231
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1232
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1233
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1234
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1235
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1236
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1237
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1238
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1239
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1240
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1241
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1242
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1243
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1244
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1245
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1246
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1247
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1248
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1249
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1250
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1251
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1252
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1253
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1254
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1255
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1256
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1257
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1258
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1259
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1260
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1261
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1262
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1263
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1264
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1265
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1266
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1267
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1268
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1269
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1270
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1271
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1272
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1273
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1274
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1275
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1276
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1277
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1278
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1279
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1280
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1281
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1282
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1283
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1284
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1285
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1286
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1287
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1288
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1289
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1290
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1291
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1292
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1293
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1294
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1295
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1296
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1297
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1298
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1299
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1300
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1301
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1302
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1303
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1304
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1305
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1306
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1307
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1308
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1309
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1310
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1311
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1312
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1313
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1314
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1315
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1316
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1317
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1318
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1319
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1320
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1321
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1322
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1323
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1324
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1325
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1326
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1327
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1328
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1329
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1330
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1331
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1332
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1333
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1334
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1335
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1336
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1337
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1338
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1339
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1340
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1341
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1342
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1343
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1344
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1345
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1346
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1347
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1348
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1349
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1350
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1351
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1352
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1353
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1354
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1355
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1356
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1357
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1358
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1359
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1360
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1361
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1362
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1363
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1364
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1365
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1366
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1367
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1368
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1369
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1370
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1371
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1372
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1373
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1374
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1375
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1376
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1377
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1378
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1379
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1380
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1381
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1382
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1383
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1384
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1385
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1386
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1387
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1388
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1389
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1390
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1391
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1392
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1393
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1394
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1395
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1396
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1397
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1398
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1399
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1400
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1401
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1402
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1403
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1404
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1405
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1406
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1407
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1408
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1409
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1410
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1411
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1412
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1413
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1414
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1415
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1416
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1417
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1418
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1419
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1420
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1421
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1422
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1423
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1424
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1425
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1426
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1427
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1428
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1429
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1430
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1431
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1432
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1433
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1434
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1435
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1436
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1437
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1438
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1439
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1440
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1441
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1442
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1443
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1444
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1445
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1446
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1447
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1448
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1449
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1450
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1451
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1452
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1453
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1454
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1455
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1456
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1457
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1458
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1459
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1460
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1461
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1462
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1463
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1464
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1465
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1466
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1467
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1468
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1469
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1470
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1471
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1472
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1473
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1474
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1475
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1476
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1477
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1478
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1479
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1480
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1481
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1482
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1483
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1484
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1485
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1486
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1487
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1488
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1489
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1490
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1491
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1492
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1493
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1494
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1495
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1496
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1497
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1498
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1499
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1500
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1501
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1502
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1503
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1504
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1505
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1506
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1507
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1508
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1509
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1510
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1511
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1512
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1513
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1514
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1515
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1516
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1517
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1518
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1519
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1520
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1521
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1522
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1523
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1524
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1525
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1526
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1527
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1528
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1529
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1530
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1531
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1532
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1533
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1534
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1535
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1536
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1537
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1538
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1539
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1540
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1541
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1542
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1543
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1544
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1545
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1546
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1547
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1548
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1549
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1550
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1551
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1552
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1553
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1554
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1555
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1556
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1557
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1558
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1559
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1560
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1561
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1562
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1563
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1564
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1565
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1566
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1567
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1568
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1569
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1570
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1571
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1572
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1573
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1574
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1575
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1576
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1577
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1578
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1579
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1580
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1581
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1582
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1583
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1584
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1585
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1586
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1587
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1588
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1589
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1590
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1591
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1592
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1593
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1594
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1595
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1596
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1597
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1598
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1599
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1600
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1601
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1602
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1603
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1604
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1605
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1606
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1607
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1608
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1609
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1610
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1611
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1612
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1613
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1614
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1615
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1616
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1617
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1618
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1619
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1620
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1621
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1622
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1623
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1624
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1625
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1626
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1627
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1628
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1629
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1630
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1631
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1632
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1633
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1634
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1635
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1636
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1637
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1638
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1639
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1640
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1641
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1642
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1643
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1644
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1645
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1646
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1647
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1648
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1649
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1650
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1651
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1652
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1653
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1654
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1655
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1656
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1657
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1658
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1659
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1660
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1661
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1662
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1663
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1664
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1665
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1666
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1667
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1668
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1669
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1670
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1671
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1672
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1673
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1674
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1675
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1676
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1677
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1678
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1679
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1680
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1681
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1682
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1683
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1684
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1685
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1686
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1687
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1688
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1689
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1690
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1691
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1692
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1693
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1694
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1695
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1696
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1697
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1698
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1699
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1700
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1701
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1702
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1703
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1704
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1705
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1706
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1707
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1708
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1709
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1710
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1711
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1712
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1713
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1714
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1715
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1716
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1717
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1718
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1719
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1720
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1721
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1722
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1723
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1724
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1725
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1726
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1727
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1728
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1729
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1730
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1731
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1732
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1733
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1734
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1735
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1736
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1737
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1738
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1739
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1740
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1741
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1742
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1743
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1744
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1745
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1746
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1747
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1748
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1749
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1750
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1751
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1752
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1753
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1754
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1755
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1756
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1757
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1758
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1759
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1760
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1761
- 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00,
1762
- 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80,
1763
- 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1764
- 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00,
1765
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24,
1766
- 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
1767
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1768
- 0xb4, 0x11, 0x61, 0x04, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e,
1769
- 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x11, 0x61,
1770
- 0x34,
1771
- ];
1772
- checkSynth(
1773
- /*
1774
- * main_header
1775
- * repeat: 300
1776
- * metablock_uncompressed: "a"
1777
- * metablock_fixed: "b"
1778
- * end_repeat
1779
- * metablock_lastempty
1780
- */
1781
- compressed,
1782
- true,
1783
- times(300, "ab"),
1784
- );
1785
- },
1786
-
1787
- testNegativeDistance() {
1788
- const compressed = [
1789
- 0x1b, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00, 0x07, 0x5b, 0x26,
1790
- 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x1b, 0x41, 0x02, 0x01, 0x42, 0x01, 0x42, 0x01, 0x42,
1791
- 0x01, 0x42, 0x01, 0x42, 0x01, 0x1c,
1792
- ];
1793
- checkSynth(
1794
- /*
1795
- * main_header
1796
- * metablock_header_easy: 16, 1
1797
- * command_inscopy_easy: 0, 4 // time
1798
- * command_dist_easy: 1
1799
- * command_inscopy_easy: 0, 2 // me
1800
- * command_dist_easy: 2
1801
- * command_inscopy_easy: 0, 2 // me
1802
- * command_dist_easy: 2
1803
- * command_inscopy_easy: 0, 2 // me
1804
- * command_dist_easy: 2
1805
- * command_inscopy_easy: 0, 2 // me
1806
- * command_dist_easy: 2
1807
- * command_inscopy_easy: 0, 2 // me
1808
- * command_dist_easy: 2 // All rb items are 2 now
1809
- * command_inscopy_easy: 0, 2
1810
- * bits: "011100" // 15 -> distance = rb[idx + 2] - 3
1811
- */
1812
- compressed,
1813
- false,
1814
- "timemememememeXX",
1815
- );
1816
- },
1817
-
1818
- testNegativeRemainingLenBetweenMetablocks() {
1819
- const compressed = [
1820
- 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00, 0x07, 0x5b, 0x26,
1821
- 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x1b, 0x09, 0x86, 0x46, 0x11, 0x00, 0x00, 0x00, 0x00,
1822
- 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee,
1823
- 0xb4, 0x91, 0x60, 0x68, 0x04,
1824
- ];
1825
- checkSynth(
1826
- /*
1827
- * main_header
1828
- * metablock_header_easy: 1, 0
1829
- * command_easy: 0, "ab" // remaining length == -1 -> invalid stream
1830
- * metablock_header_easy: 2, 1
1831
- * command_easy: 0, "ab"
1832
- */
1833
- compressed,
1834
- false,
1835
- "abab",
1836
- );
1837
- },
1838
-
1839
- testOneCommand() {
1840
- const compressed = [
1841
- 0x1b, 0x02, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00, 0x07, 0x5b, 0x26,
1842
- 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x1b, 0x11, 0x86, 0x02,
1843
- ];
1844
- checkSynth(
1845
- /*
1846
- * // The stream consists of one command with insert and copy.
1847
- * main_header
1848
- * metablock_header_easy: 3, 1
1849
- * command_easy: 2, "a", 1
1850
- */
1851
- compressed,
1852
- true,
1853
- "aaa",
1854
- );
1855
- },
1856
-
1857
- testOneInsert() {
1858
- const compressed = [
1859
- 0x1b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00, 0x07, 0x5b, 0x26,
1860
- 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x1b, 0x09, 0x86, 0x46,
1861
- ];
1862
- checkSynth(
1863
- /*
1864
- * // The stream consists of one half command with insert only.
1865
- * main_header
1866
- * metablock_header_easy: 2, 1
1867
- * command_easy: 0, "ab"
1868
- */
1869
- compressed,
1870
- true,
1871
- "ab",
1872
- );
1873
- },
1874
-
1875
- testPeculiarWrap() {
1876
- const compressed = [
1877
- 0x21, 0xfc, 0x1f, 0x00, 0x00, 0xa1, 0x12, 0x82, 0x04, 0x60, 0x1d, 0x00, 0xca, 0xfe, 0xba,
1878
- 0xbe, 0xde, 0xad, 0xbe, 0xef, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00,
1879
- 0x00, 0x70, 0xb0, 0x65, 0x12, 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x91, 0x61, 0x68, 0x64,
1880
- 0x0c,
1881
- ];
1882
- checkSynth(
1883
- /*
1884
- * main_header: 10
1885
- * // See ZeroCostCommand
1886
- * metablock_header_begin: 0, 0, 2048, 0
1887
- * metablock_header_trivial_context
1888
- * huffman_simple: 0,1,256, 42
1889
- * huffman_simple: 0,1,704, 130
1890
- * huffman_simple: 0,1,64, 0
1891
- * // Metadata block; at least 8 bytes long
1892
- * bits: "0", "11", "0", "01", "00000111"
1893
- * byte_boundary
1894
- * bits: "11001010", "11111110", "10111010", "10111110"
1895
- * bits: "11011110", "10101101", "10111110", "11101111"
1896
- * metablock_header_easy: 3, 1
1897
- * command_easy: 0, "abc", 0
1898
- */
1899
- compressed,
1900
- true,
1901
- times(512, "left") + "abc",
1902
- );
1903
- },
1904
-
1905
- testSimplePrefix() {
1906
- const compressed = [
1907
- 0x1b, 0x03, 0x00, 0x00, 0xa0, 0xc3, 0xc4, 0xc6, 0xc8, 0x02, 0x00, 0x70, 0xb0, 0x65, 0x12,
1908
- 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x51, 0xa0, 0x1d,
1909
- ];
1910
- checkSynth(
1911
- /*
1912
- * main_header
1913
- * metablock_header_begin: 1, 0, 4, 0
1914
- * metablock_header_trivial_context
1915
- * huffman_simple: 1,4,256, 97,98,99,100 // ASCII codes for a, b, c, d
1916
- * huffman_fixed: 704
1917
- * huffman_fixed: 64
1918
- * command_inscopy_easy: 4, 0
1919
- * command_literal_bits: 0, 10, 110, 111 // a, b, c, d
1920
- */
1921
- compressed,
1922
- true,
1923
- "abcd",
1924
- );
1925
- },
1926
-
1927
- testSimplePrefixDuplicateSymbols() {
1928
- const compressed = [
1929
- 0x1b, 0x03, 0x00, 0x00, 0xa0, 0xc3, 0xc4, 0xc2, 0xc4, 0x02, 0x00, 0x70, 0xb0, 0x65, 0x12,
1930
- 0x03, 0x24, 0x00, 0x00, 0xee, 0xb4, 0x51, 0xa0, 0x1d,
1931
- ];
1932
- checkSynth(
1933
- /*
1934
- * main_header
1935
- * metablock_header_begin: 1, 0, 4, 0
1936
- * metablock_header_trivial_context
1937
- * huffman_simple: 1,4,256, 97,98,97,98 // ASCII codes for a, b, a, b
1938
- * huffman_fixed: 704
1939
- * huffman_fixed: 64
1940
- * command_inscopy_easy: 4, 0
1941
- * command_literal_bits: 0, 10, 110, 111 // a, b, a, b
1942
- */
1943
- compressed,
1944
- false,
1945
- "abab",
1946
- );
1947
- },
1948
-
1949
- testSimplePrefixOutOfRangeSymbols() {
1950
- const compressed = [
1951
- 0x1b, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x4d, 0xff, 0xef, 0x7f, 0xff, 0xfc,
1952
- 0x07, 0x00, 0xb8, 0xd3, 0x06,
1953
- ];
1954
- checkSynth(
1955
- /*
1956
- * main_header
1957
- * metablock_header_begin: 1, 0, 4, 0
1958
- * metablock_header_trivial_context
1959
- * huffman_fixed: 256
1960
- * huffman_simple: 1,4,704, 1023,1022,1021,1020
1961
- * huffman_fixed: 64
1962
- */
1963
- compressed,
1964
- false,
1965
- "",
1966
- );
1967
- },
1968
-
1969
- testSimplePrefixPlusExtraData() {
1970
- // Test skipped - requires 'pending' implementation from original framework
1971
- return;
1972
- },
1973
-
1974
- testStressReadDistanceExtraBits() {
1975
- const compressed = [
1976
- 0x4f, 0xfe, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00, 0x07, 0x5b,
1977
- 0x26, 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x9b, 0xf6, 0x69, 0xef, 0xff, 0x0c, 0x8d, 0x8c,
1978
- 0x05, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0xdb, 0x00, 0x00, 0x70, 0xb0, 0x65,
1979
- 0x12, 0x03, 0x24, 0xa8, 0xaa, 0xef, 0xab, 0xaa, 0x7f, 0x24, 0x16, 0x35, 0x8f, 0xac, 0x9e,
1980
- 0x3d, 0xf7, 0xf3, 0xe3, 0x0a, 0xfc, 0xff, 0x03, 0x00, 0x00, 0x78, 0x01, 0x08, 0x30, 0x31,
1981
- 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x30,
1982
- 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46,
1983
- 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45,
1984
- 0x46, 0x03,
1985
- ];
1986
- checkSynth(
1987
- /*
1988
- * main_header: 24
1989
- * metablock_header_easy: 8388605, 0 // 2^23 - 3 = shortest 22-bit distance
1990
- * command_easy: 8388602, "abc", 1
1991
- * metablock_header_begin: 0, 0, 3, 0
1992
- * vlq_blocktypes: 1 // num litetal block types
1993
- * vlq_blocktypes: 1 // num command block types
1994
- * vlq_blocktypes: 1 // num distance block types
1995
- * ndirect: 0, 0
1996
- * bits: "00" // literal context modes
1997
- * vlq_blocktypes: 1 // num literal Huffman trees
1998
- * // command has no context -> num trees == num block types
1999
- * vlq_blocktypes: 1 // num distance Huffman trees
2000
- * huffman_fixed: 256
2001
- * huffman_fixed: 704
2002
- * // Begin of distance Huffman tree. First 15 codes have lengths 1 to 15.
2003
- * // Symbol that corresponds to first half of 22-bit distance range is also
2004
- * // 15. All other symbols are 0.
2005
- * hskip: 0
2006
- * clcl_ordered: 4,4,4,4, 4,4,4,4, 4,4,4,4, 4,4, 5,5,5,5
2007
- * set_prefix_cl_rle: "0000", "0001", "0010", "0011", \
2008
- * "0100", "0101", "0110", "0111", \
2009
- * "1000", "1001", "1010", "1011", \
2010
- * "1100", "1101", \
2011
- * "11100", "11101", "11110", "11111"
2012
- * cl_rle: 1
2013
- * cl_rle: 2
2014
- * cl_rle: 3
2015
- * cl_rle: 4
2016
- * cl_rle: 5
2017
- * cl_rle: 6
2018
- * cl_rle: 7
2019
- * cl_rle: 8
2020
- * cl_rle: 9
2021
- * cl_rle: 10
2022
- * cl_rle: 11
2023
- * cl_rle: 12
2024
- * cl_rle: 13
2025
- * cl_rle: 14
2026
- * cl_rle: 15
2027
- * cl_rle_rep_0: 43
2028
- * cl_rle: 15 // literal number 97, that is, the letter 'a'
2029
- * // end of literal Huffman tree
2030
- * command_inscopy_easy: 0, 3 // Insert 0, copy 3
2031
- * // 15 bits of distance code plus 22 extra bits
2032
- * command_dist_bits: "111111111111111", "0000000000000000000000"
2033
- * metablock_uncompressed: "0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF"
2034
- * metablock_lastempty
2035
- */
2036
- compressed,
2037
- true,
2038
- "abc" + times(8388602, "c") + "abc" + times(3, "0123456789ABCDEF"),
2039
- );
2040
- },
2041
-
2042
- testTooManySymbolsRepeated() {
2043
- const compressed = [
2044
- 0x1b, 0x03, 0x00, 0x00, 0x00, 0x01, 0x80, 0xc3, 0x3d, 0x80, 0x58, 0x82, 0x0c, 0x00, 0xc0,
2045
- 0xc1, 0x96, 0x49, 0x0c, 0x90, 0x00, 0x00, 0xb8, 0xd3, 0x46, 0x01, 0x1a, 0x01,
2046
- ];
2047
- checkSynth(
2048
- /*
2049
- * // This test is a copy of CustomHuffmanCode, with changed repeat count.
2050
- * main_header
2051
- * metablock_header_begin: 1, 0, 4, 0
2052
- * metablock_header_trivial_context
2053
- * hskip: 0
2054
- * clcl_ordered: 0,3,0,0,0,0,0,0,3,2,0,0,0,0,0,0,1,0
2055
- * set_prefix_cl_rle: "", "110", "", "", "", "", "", "", "111", "10",\
2056
- * "", "", "", "", "", "", "0", ""
2057
- * cl_rle: 8
2058
- * cl_rle_rep: 9, 96
2059
- * cl_rle: 1
2060
- * cl_rle_rep: 9, 159 // 1 + 96 + 1 + 159 = 257 > 256 = alphabet size
2061
- * huffman_fixed: 704
2062
- * huffman_fixed: 64
2063
- * command_inscopy_easy: 4, 0
2064
- * command_literal_bits: 0, 0, 0, 101100010
2065
- */
2066
- compressed,
2067
- false,
2068
- "aaab",
2069
- );
2070
- },
2071
-
2072
- testTransformedDictWord() {
2073
- const compressed = [
2074
- 0x1b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00, 0x07, 0x5b, 0x26,
2075
- 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x1b, 0x41, 0x09, 0x01, 0x01,
2076
- ];
2077
- checkSynth(
2078
- /*
2079
- * // The stream consists of a transformed dictionary word.
2080
- * main_header
2081
- * metablock_header_easy: 9, 1
2082
- * command_inscopy_easy: 0, 4
2083
- * command_dist_easy: 5121 // 5 << 10 + 1
2084
- */
2085
- compressed,
2086
- true,
2087
- "time the ",
2088
- );
2089
- },
2090
-
2091
- testTransformedDictWordTooLong() {
2092
- const compressed = [
2093
- 0x1b, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0xb4, 0x0d, 0x00, 0x00, 0x07, 0x5b, 0x26,
2094
- 0x31, 0x40, 0x02, 0x00, 0xe0, 0x4e, 0x1b, 0x41, 0x09, 0x01, 0x01,
2095
- ];
2096
- checkSynth(
2097
- /*
2098
- * // Has a transformed dictionary word that goes over the end of the
2099
- * // meta-block, but the base dictionary word fits in the meta-block.
2100
- * // Same as TransformedDictWord, but with a shorter meta-block length.
2101
- * main_header
2102
- * metablock_header_easy: 4, 1
2103
- * command_inscopy_easy: 0, 4
2104
- * command_dist_easy: 5121 // 5 << 10 + 1
2105
- */
2106
- compressed,
2107
- false,
2108
- "",
2109
- );
2110
- },
2111
-
2112
- testZeroCostCommand() {
2113
- const compressed = [0xa1, 0xf8, 0x1f, 0x00, 0x00, 0xa1, 0x12, 0x82, 0x04, 0x00];
2114
- checkSynth(
2115
- /*
2116
- * main_header: 10
2117
- * metablock_header_begin: 1, 0, 1024, 0 // last, not empty, length, compressed
2118
- * metablock_header_trivial_context
2119
- * huffman_simple: 0,1,256, 42 // literal: any
2120
- * huffman_simple: 0,1,704, 130 // command: insert = 0, copy = 4, distance_code = -1
2121
- * huffman_simple: 0,1,64, 0 // distance: last
2122
- * // 256 0-bit commands with direct distances
2123
- */
2124
- compressed,
2125
- true,
2126
- times(256, "left"),
2127
- );
2128
- },
2129
-
2130
- testZeroCostLiterals() {
2131
- const compressed = [
2132
- 0x9b, 0xff, 0xff, 0xff, 0x00, 0x20, 0x54, 0x00, 0x00, 0x38, 0xd8, 0x32, 0x89, 0x01, 0x12,
2133
- 0x00, 0x00, 0x77, 0xda, 0xcc, 0xe1, 0x7b, 0xfa, 0x0f,
2134
- ];
2135
- checkSynth(
2136
- /*
2137
- * main_header
2138
- * metablock_header_begin: 1, 0, 16777216, 0
2139
- * metablock_header_trivial_context
2140
- * huffman_simple: 0,1,256, 42 // Single symbol alphabet
2141
- * huffman_fixed: 704
2142
- * huffman_fixed: 64
2143
- * command_inscopy_easy: 16777216, 0
2144
- * // 16777216 times 0 bits
2145
- */
2146
- compressed,
2147
- true,
2148
- times(16777216, "*"),
2149
- );
2150
- },
2151
-
2152
- /* GENERATED CODE END */
2153
- };
2154
-
2155
- const skippedTests = ["testSimplePrefixPlusExtraData"];
2156
- const testNames = Object.keys(allTests);
2157
- for (let i = 0; i < testNames.length; ++i) {
2158
- const testName = testNames[i] as keyof typeof allTests;
2159
- test.skipIf(skippedTests.includes(testName))(testName, allTests[testName]);
2160
- }
2161
- });
2162
-
2163
- test("compatibility node:zlib#brotli", async () => {
2164
- const binary = await readFile("../dist/brotli.js");
2165
- const data = zlib.brotliCompressSync(binary.slice(0, 1024 * 4));
2166
- const result = brotli.decode(new Int8Array(data));
2167
- const expected = zlib.brotliDecompressSync(data);
2168
- expect(Buffer.from(result!)).toStrictEqual(expected);
2169
- });
2170
-
2171
- test("performance", async () => {
2172
- const data = await readFile("brotli.test.file.br"); // brotli ./brotli.test.file
2173
- if (!Buffer.isBuffer(data)) throw new Error("not a buffer");
2174
- const bytes = new Int8Array(data);
2175
-
2176
- function runOperation(repeat = 10, iterations = 10) {
2177
- const start = performance.now();
2178
-
2179
- for (let i = 0; i < iterations; ++i) {
2180
- const a = performance.now();
2181
- let result: Int8Array<ArrayBufferLike> = new Int8Array();
2182
- for (let j = 0; j < repeat; ++j) {
2183
- result = brotli.decode(bytes);
2184
- }
2185
- const b = performance.now();
2186
- const _total_length = (repeat * result.length) / (1024 * 1024);
2187
- const _total_time = (b - a) / 1000;
2188
- }
2189
-
2190
- const end = performance.now();
2191
- return end - start;
2192
- }
2193
-
2194
- const timeTaken = runOperation();
2195
- expect(timeTaken).toBeLessThan(1_000);
2196
- });
2197
- });