1use crate::{DecodeError, Decoder, EncodeError, Encoder};
2
3macro_rules! impl_ebcdic_encoder_and_decoder {
4 ( $name:ident, $namelit:literal, $encoder:ident, $decoder:ident, $etable:ident, $dtable:ident ) => {
5 pub const $name: &str = $namelit;
6 #[allow(non_camel_case_types)]
7 pub struct $encoder;
8 impl Encoder for $encoder {
9 fn name(&self) -> &'static str {
10 $name
11 }
12
13 fn encode(
14 &mut self,
15 src: &str,
16 dst: &mut [u8],
17 finish: bool,
18 ) -> Result<(usize, usize), EncodeError> {
19 if src.is_empty() {
20 return if finish {
21 Ok((0, 0))
22 } else {
23 Err(EncodeError::InputIsEmpty)
24 };
25 }
26
27 if dst.is_empty() {
28 return Err(EncodeError::OutputTooShort);
29 }
30
31 let (mut read, mut write) = (0, 0);
32 for c in src.chars() {
33 let b = c as u32;
34 read += c.len_utf8();
35 let pos = $etable
36 .binary_search_by_key(&b, |k| k.0 as u32)
37 .map_err(|_| EncodeError::Unmappable { read, write, c })?;
38 dst[write] = $etable[pos].1;
39 write += 1;
40 if write == dst.len() {
41 break;
42 }
43 }
44 Ok((read, write))
45 }
46 }
47
48 #[allow(non_camel_case_types)]
49 pub struct $decoder;
50 impl Decoder for $decoder {
51 fn name(&self) -> &'static str {
52 $name
53 }
54
55 fn decode(
56 &mut self,
57 src: &[u8],
58 dst: &mut String,
59 finish: bool,
60 ) -> Result<(usize, usize), DecodeError> {
61 if src.is_empty() {
62 return if finish {
63 Ok((0, 0))
64 } else {
65 Err(DecodeError::InputIsEmpty)
66 };
67 }
68 let len = dst.capacity() - dst.len();
69 if len < 4 {
70 return Err(DecodeError::OutputTooShort);
71 }
72
73 let (mut read, mut write) = (0, 0);
74 for &b in src {
75 let c = $dtable[b as usize];
76 let l = c.len_utf8();
77 if write + l > len {
78 break;
79 }
80 read += 1;
81 if c == char::REPLACEMENT_CHARACTER {
82 return Err(DecodeError::Malformed {
83 read,
84 write,
85 length: 1,
86 offset: 0,
87 });
88 }
89 dst.push(c);
90 write += l;
91 }
92 Ok((read, write))
93 }
94 }
95 };
96}
97
98impl_ebcdic_encoder_and_decoder!(
105 IBM037,
106 "IBM037",
107 IBM037Encoder,
108 IBM037Decoder,
109 IBM_37_ENCODE_TABLE,
110 IBM_37_DECODE_TABLE
111);
112const IBM_37_DECODE_TABLE: [char; 256] = [
113 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
114 '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
115 '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
116 '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
117 '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
118 '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
119 '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
120 '\u{a0}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{e7}', '\u{f1}',
121 '\u{a2}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{7c}', '\u{26}', '\u{e9}', '\u{ea}',
122 '\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{21}', '\u{24}',
123 '\u{2a}', '\u{29}', '\u{3b}', '\u{ac}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
124 '\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{d1}', '\u{a6}', '\u{2c}', '\u{25}', '\u{5f}',
125 '\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
126 '\u{cf}', '\u{cc}', '\u{60}', '\u{3a}', '\u{23}', '\u{40}', '\u{27}', '\u{3d}', '\u{22}',
127 '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
128 '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
129 '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
130 '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{7e}', '\u{73}', '\u{74}',
131 '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
132 '\u{dd}', '\u{de}', '\u{ae}', '\u{5e}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
133 '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{5b}', '\u{5d}', '\u{af}', '\u{a8}', '\u{b4}',
134 '\u{d7}', '\u{7b}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
135 '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{7d}',
136 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
137 '\u{b9}', '\u{fb}', '\u{fc}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{5c}', '\u{f7}', '\u{53}',
138 '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
139 '\u{d6}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
140 '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
141 '\u{da}', '\u{9f}',
142];
143const IBM_37_ENCODE_TABLE: &[(u16, u8)] = &[
144 (0, 0),
145 (1, 1),
146 (2, 2),
147 (3, 3),
148 (4, 55),
149 (5, 45),
150 (6, 46),
151 (7, 47),
152 (8, 22),
153 (9, 5),
154 (10, 37),
155 (11, 11),
156 (12, 12),
157 (13, 13),
158 (14, 14),
159 (15, 15),
160 (16, 16),
161 (17, 17),
162 (18, 18),
163 (19, 19),
164 (20, 60),
165 (21, 61),
166 (22, 50),
167 (23, 38),
168 (24, 24),
169 (25, 25),
170 (26, 63),
171 (27, 39),
172 (28, 28),
173 (29, 29),
174 (30, 30),
175 (31, 31),
176 (32, 64),
177 (33, 90),
178 (34, 127),
179 (35, 123),
180 (36, 91),
181 (37, 108),
182 (38, 80),
183 (39, 125),
184 (40, 77),
185 (41, 93),
186 (42, 92),
187 (43, 78),
188 (44, 107),
189 (45, 96),
190 (46, 75),
191 (47, 97),
192 (48, 240),
193 (49, 241),
194 (50, 242),
195 (51, 243),
196 (52, 244),
197 (53, 245),
198 (54, 246),
199 (55, 247),
200 (56, 248),
201 (57, 249),
202 (58, 122),
203 (59, 94),
204 (60, 76),
205 (61, 126),
206 (62, 110),
207 (63, 111),
208 (64, 124),
209 (65, 193),
210 (66, 194),
211 (67, 195),
212 (68, 196),
213 (69, 197),
214 (70, 198),
215 (71, 199),
216 (72, 200),
217 (73, 201),
218 (74, 209),
219 (75, 210),
220 (76, 211),
221 (77, 212),
222 (78, 213),
223 (79, 214),
224 (80, 215),
225 (81, 216),
226 (82, 217),
227 (83, 226),
228 (84, 227),
229 (85, 228),
230 (86, 229),
231 (87, 230),
232 (88, 231),
233 (89, 232),
234 (90, 233),
235 (91, 186),
236 (92, 224),
237 (93, 187),
238 (94, 176),
239 (95, 109),
240 (96, 121),
241 (97, 129),
242 (98, 130),
243 (99, 131),
244 (100, 132),
245 (101, 133),
246 (102, 134),
247 (103, 135),
248 (104, 136),
249 (105, 137),
250 (106, 145),
251 (107, 146),
252 (108, 147),
253 (109, 148),
254 (110, 149),
255 (111, 150),
256 (112, 151),
257 (113, 152),
258 (114, 153),
259 (115, 162),
260 (116, 163),
261 (117, 164),
262 (118, 165),
263 (119, 166),
264 (120, 167),
265 (121, 168),
266 (122, 169),
267 (123, 192),
268 (124, 79),
269 (125, 208),
270 (126, 161),
271 (127, 7),
272 (128, 32),
273 (129, 33),
274 (130, 34),
275 (131, 35),
276 (132, 36),
277 (133, 21),
278 (134, 6),
279 (135, 23),
280 (136, 40),
281 (137, 41),
282 (138, 42),
283 (139, 43),
284 (140, 44),
285 (141, 9),
286 (142, 10),
287 (143, 27),
288 (144, 48),
289 (145, 49),
290 (146, 26),
291 (147, 51),
292 (148, 52),
293 (149, 53),
294 (150, 54),
295 (151, 8),
296 (152, 56),
297 (153, 57),
298 (154, 58),
299 (155, 59),
300 (156, 4),
301 (157, 20),
302 (158, 62),
303 (159, 255),
304 (160, 65),
305 (161, 170),
306 (162, 74),
307 (163, 177),
308 (164, 159),
309 (165, 178),
310 (166, 106),
311 (167, 181),
312 (168, 189),
313 (169, 180),
314 (170, 154),
315 (171, 138),
316 (172, 95),
317 (173, 202),
318 (174, 175),
319 (175, 188),
320 (176, 144),
321 (177, 143),
322 (178, 234),
323 (179, 250),
324 (180, 190),
325 (181, 160),
326 (182, 182),
327 (183, 179),
328 (184, 157),
329 (185, 218),
330 (186, 155),
331 (187, 139),
332 (188, 183),
333 (189, 184),
334 (190, 185),
335 (191, 171),
336 (192, 100),
337 (193, 101),
338 (194, 98),
339 (195, 102),
340 (196, 99),
341 (197, 103),
342 (198, 158),
343 (199, 104),
344 (200, 116),
345 (201, 113),
346 (202, 114),
347 (203, 115),
348 (204, 120),
349 (205, 117),
350 (206, 118),
351 (207, 119),
352 (208, 172),
353 (209, 105),
354 (210, 237),
355 (211, 238),
356 (212, 235),
357 (213, 239),
358 (214, 236),
359 (215, 191),
360 (216, 128),
361 (217, 253),
362 (218, 254),
363 (219, 251),
364 (220, 252),
365 (221, 173),
366 (222, 174),
367 (223, 89),
368 (224, 68),
369 (225, 69),
370 (226, 66),
371 (227, 70),
372 (228, 67),
373 (229, 71),
374 (230, 156),
375 (231, 72),
376 (232, 84),
377 (233, 81),
378 (234, 82),
379 (235, 83),
380 (236, 88),
381 (237, 85),
382 (238, 86),
383 (239, 87),
384 (240, 140),
385 (241, 73),
386 (242, 205),
387 (243, 206),
388 (244, 203),
389 (245, 207),
390 (246, 204),
391 (247, 225),
392 (248, 112),
393 (249, 221),
394 (250, 222),
395 (251, 219),
396 (252, 220),
397 (253, 141),
398 (254, 142),
399 (255, 223),
400];
401
402impl_ebcdic_encoder_and_decoder!(
403 IBM273,
404 "IBM273",
405 IBM273Encoder,
406 IBM273Decoder,
407 IBM_273_ENCODE_TABLE,
408 IBM_273_DECODE_TABLE
409);
410const IBM_273_DECODE_TABLE: [char; 256] = [
411 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
412 '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
413 '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
414 '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
415 '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
416 '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
417 '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
418 '\u{a0}', '\u{e2}', '\u{7b}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{e7}', '\u{f1}',
419 '\u{c4}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{e9}', '\u{ea}',
420 '\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{7e}', '\u{dc}', '\u{24}',
421 '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{5b}', '\u{c0}',
422 '\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{d1}', '\u{f6}', '\u{2c}', '\u{25}', '\u{5f}',
423 '\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
424 '\u{cf}', '\u{cc}', '\u{60}', '\u{3a}', '\u{23}', '\u{a7}', '\u{27}', '\u{3d}', '\u{22}',
425 '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
426 '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
427 '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
428 '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{df}', '\u{73}', '\u{74}',
429 '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
430 '\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{40}',
431 '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{a8}', '\u{b4}',
432 '\u{d7}', '\u{e4}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
433 '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{a6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{fc}',
434 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
435 '\u{b9}', '\u{fb}', '\u{7d}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{d6}', '\u{f7}', '\u{53}',
436 '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
437 '\u{5c}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
438 '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{5d}', '\u{d9}',
439 '\u{da}', '\u{9f}',
440];
441const IBM_273_ENCODE_TABLE: &[(u16, u8)] = &[
442 (0, 0),
443 (1, 1),
444 (2, 2),
445 (3, 3),
446 (4, 55),
447 (5, 45),
448 (6, 46),
449 (7, 47),
450 (8, 22),
451 (9, 5),
452 (10, 37),
453 (11, 11),
454 (12, 12),
455 (13, 13),
456 (14, 14),
457 (15, 15),
458 (16, 16),
459 (17, 17),
460 (18, 18),
461 (19, 19),
462 (20, 60),
463 (21, 61),
464 (22, 50),
465 (23, 38),
466 (24, 24),
467 (25, 25),
468 (26, 63),
469 (27, 39),
470 (28, 28),
471 (29, 29),
472 (30, 30),
473 (31, 31),
474 (32, 64),
475 (33, 79),
476 (34, 127),
477 (35, 123),
478 (36, 91),
479 (37, 108),
480 (38, 80),
481 (39, 125),
482 (40, 77),
483 (41, 93),
484 (42, 92),
485 (43, 78),
486 (44, 107),
487 (45, 96),
488 (46, 75),
489 (47, 97),
490 (48, 240),
491 (49, 241),
492 (50, 242),
493 (51, 243),
494 (52, 244),
495 (53, 245),
496 (54, 246),
497 (55, 247),
498 (56, 248),
499 (57, 249),
500 (58, 122),
501 (59, 94),
502 (60, 76),
503 (61, 126),
504 (62, 110),
505 (63, 111),
506 (64, 181),
507 (65, 193),
508 (66, 194),
509 (67, 195),
510 (68, 196),
511 (69, 197),
512 (70, 198),
513 (71, 199),
514 (72, 200),
515 (73, 201),
516 (74, 209),
517 (75, 210),
518 (76, 211),
519 (77, 212),
520 (78, 213),
521 (79, 214),
522 (80, 215),
523 (81, 216),
524 (82, 217),
525 (83, 226),
526 (84, 227),
527 (85, 228),
528 (86, 229),
529 (87, 230),
530 (88, 231),
531 (89, 232),
532 (90, 233),
533 (91, 99),
534 (92, 236),
535 (93, 252),
536 (94, 95),
537 (95, 109),
538 (96, 121),
539 (97, 129),
540 (98, 130),
541 (99, 131),
542 (100, 132),
543 (101, 133),
544 (102, 134),
545 (103, 135),
546 (104, 136),
547 (105, 137),
548 (106, 145),
549 (107, 146),
550 (108, 147),
551 (109, 148),
552 (110, 149),
553 (111, 150),
554 (112, 151),
555 (113, 152),
556 (114, 153),
557 (115, 162),
558 (116, 163),
559 (117, 164),
560 (118, 165),
561 (119, 166),
562 (120, 167),
563 (121, 168),
564 (122, 169),
565 (123, 67),
566 (124, 187),
567 (125, 220),
568 (126, 89),
569 (127, 7),
570 (128, 32),
571 (129, 33),
572 (130, 34),
573 (131, 35),
574 (132, 36),
575 (133, 21),
576 (134, 6),
577 (135, 23),
578 (136, 40),
579 (137, 41),
580 (138, 42),
581 (139, 43),
582 (140, 44),
583 (141, 9),
584 (142, 10),
585 (143, 27),
586 (144, 48),
587 (145, 49),
588 (146, 26),
589 (147, 51),
590 (148, 52),
591 (149, 53),
592 (150, 54),
593 (151, 8),
594 (152, 56),
595 (153, 57),
596 (154, 58),
597 (155, 59),
598 (156, 4),
599 (157, 20),
600 (158, 62),
601 (159, 255),
602 (160, 65),
603 (161, 170),
604 (162, 176),
605 (163, 177),
606 (164, 159),
607 (165, 178),
608 (166, 204),
609 (167, 124),
610 (168, 189),
611 (169, 180),
612 (170, 154),
613 (171, 138),
614 (172, 186),
615 (173, 202),
616 (174, 175),
617 (175, 188),
618 (176, 144),
619 (177, 143),
620 (178, 234),
621 (179, 250),
622 (180, 190),
623 (181, 160),
624 (182, 182),
625 (183, 179),
626 (184, 157),
627 (185, 218),
628 (186, 155),
629 (187, 139),
630 (188, 183),
631 (189, 184),
632 (190, 185),
633 (191, 171),
634 (192, 100),
635 (193, 101),
636 (194, 98),
637 (195, 102),
638 (196, 74),
639 (197, 103),
640 (198, 158),
641 (199, 104),
642 (200, 116),
643 (201, 113),
644 (202, 114),
645 (203, 115),
646 (204, 120),
647 (205, 117),
648 (206, 118),
649 (207, 119),
650 (208, 172),
651 (209, 105),
652 (210, 237),
653 (211, 238),
654 (212, 235),
655 (213, 239),
656 (214, 224),
657 (215, 191),
658 (216, 128),
659 (217, 253),
660 (218, 254),
661 (219, 251),
662 (220, 90),
663 (221, 173),
664 (222, 174),
665 (223, 161),
666 (224, 68),
667 (225, 69),
668 (226, 66),
669 (227, 70),
670 (228, 192),
671 (229, 71),
672 (230, 156),
673 (231, 72),
674 (232, 84),
675 (233, 81),
676 (234, 82),
677 (235, 83),
678 (236, 88),
679 (237, 85),
680 (238, 86),
681 (239, 87),
682 (240, 140),
683 (241, 73),
684 (242, 205),
685 (243, 206),
686 (244, 203),
687 (245, 207),
688 (246, 106),
689 (247, 225),
690 (248, 112),
691 (249, 221),
692 (250, 222),
693 (251, 219),
694 (252, 208),
695 (253, 141),
696 (254, 142),
697 (255, 223),
698];
699
700impl_ebcdic_encoder_and_decoder!(
701 IBM274,
702 "IBM274",
703 IBM274Encoder,
704 IBM274Decoder,
705 IBM_274_ENCODE_TABLE,
706 IBM_274_DECODE_TABLE
707);
708const IBM_274_DECODE_TABLE: [char; 256] = [
709 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
710 '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
711 '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
712 '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
713 '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
714 '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
715 '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
716 '\u{a0}', '\u{e2}', '\u{e4}', '\u{40}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{5c}', '\u{f1}',
717 '\u{5b}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{7b}', '\u{ea}',
718 '\u{eb}', '\u{7d}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{5d}', '\u{24}',
719 '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
720 '\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{d1}', '\u{f9}', '\u{2c}', '\u{25}', '\u{5f}',
721 '\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
722 '\u{cf}', '\u{cc}', '\u{60}', '\u{3a}', '\u{23}', '\u{e0}', '\u{27}', '\u{3d}', '\u{22}',
723 '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
724 '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
725 '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
726 '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{a8}', '\u{73}', '\u{74}',
727 '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
728 '\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
729 '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{7e}', '\u{b4}',
730 '\u{d7}', '\u{e9}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
731 '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{e8}',
732 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
733 '\u{b9}', '\u{fb}', '\u{fc}', '\u{a6}', '\u{fa}', '\u{ff}', '\u{e7}', '\u{f7}', '\u{53}',
734 '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
735 '\u{d6}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
736 '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
737 '\u{da}', '\u{9f}',
738];
739const IBM_274_ENCODE_TABLE: &[(u16, u8)] = &[
740 (0, 0),
741 (1, 1),
742 (2, 2),
743 (3, 3),
744 (4, 55),
745 (5, 45),
746 (6, 46),
747 (7, 47),
748 (8, 22),
749 (9, 5),
750 (10, 37),
751 (11, 11),
752 (12, 12),
753 (13, 13),
754 (14, 14),
755 (15, 15),
756 (16, 16),
757 (17, 17),
758 (18, 18),
759 (19, 19),
760 (20, 60),
761 (21, 61),
762 (22, 50),
763 (23, 38),
764 (24, 24),
765 (25, 25),
766 (26, 63),
767 (27, 39),
768 (28, 28),
769 (29, 29),
770 (30, 30),
771 (31, 31),
772 (32, 64),
773 (33, 79),
774 (34, 127),
775 (35, 123),
776 (36, 91),
777 (37, 108),
778 (38, 80),
779 (39, 125),
780 (40, 77),
781 (41, 93),
782 (42, 92),
783 (43, 78),
784 (44, 107),
785 (45, 96),
786 (46, 75),
787 (47, 97),
788 (48, 240),
789 (49, 241),
790 (50, 242),
791 (51, 243),
792 (52, 244),
793 (53, 245),
794 (54, 246),
795 (55, 247),
796 (56, 248),
797 (57, 249),
798 (58, 122),
799 (59, 94),
800 (60, 76),
801 (61, 126),
802 (62, 110),
803 (63, 111),
804 (64, 68),
805 (65, 193),
806 (66, 194),
807 (67, 195),
808 (68, 196),
809 (69, 197),
810 (70, 198),
811 (71, 199),
812 (72, 200),
813 (73, 201),
814 (74, 209),
815 (75, 210),
816 (76, 211),
817 (77, 212),
818 (78, 213),
819 (79, 214),
820 (80, 215),
821 (81, 216),
822 (82, 217),
823 (83, 226),
824 (84, 227),
825 (85, 228),
826 (86, 229),
827 (87, 230),
828 (88, 231),
829 (89, 232),
830 (90, 233),
831 (91, 74),
832 (92, 72),
833 (93, 90),
834 (94, 95),
835 (95, 109),
836 (96, 121),
837 (97, 129),
838 (98, 130),
839 (99, 131),
840 (100, 132),
841 (101, 133),
842 (102, 134),
843 (103, 135),
844 (104, 136),
845 (105, 137),
846 (106, 145),
847 (107, 146),
848 (108, 147),
849 (109, 148),
850 (110, 149),
851 (111, 150),
852 (112, 151),
853 (113, 152),
854 (114, 153),
855 (115, 162),
856 (116, 163),
857 (117, 164),
858 (118, 165),
859 (119, 166),
860 (120, 167),
861 (121, 168),
862 (122, 169),
863 (123, 81),
864 (124, 187),
865 (125, 84),
866 (126, 189),
867 (127, 7),
868 (128, 32),
869 (129, 33),
870 (130, 34),
871 (131, 35),
872 (132, 36),
873 (133, 21),
874 (134, 6),
875 (135, 23),
876 (136, 40),
877 (137, 41),
878 (138, 42),
879 (139, 43),
880 (140, 44),
881 (141, 9),
882 (142, 10),
883 (143, 27),
884 (144, 48),
885 (145, 49),
886 (146, 26),
887 (147, 51),
888 (148, 52),
889 (149, 53),
890 (150, 54),
891 (151, 8),
892 (152, 56),
893 (153, 57),
894 (154, 58),
895 (155, 59),
896 (156, 4),
897 (157, 20),
898 (158, 62),
899 (159, 255),
900 (160, 65),
901 (161, 170),
902 (162, 176),
903 (163, 177),
904 (164, 159),
905 (165, 178),
906 (166, 221),
907 (167, 181),
908 (168, 161),
909 (169, 180),
910 (170, 154),
911 (171, 138),
912 (172, 186),
913 (173, 202),
914 (174, 175),
915 (175, 188),
916 (176, 144),
917 (177, 143),
918 (178, 234),
919 (179, 250),
920 (180, 190),
921 (181, 160),
922 (182, 182),
923 (183, 179),
924 (184, 157),
925 (185, 218),
926 (186, 155),
927 (187, 139),
928 (188, 183),
929 (189, 184),
930 (190, 185),
931 (191, 171),
932 (192, 100),
933 (193, 101),
934 (194, 98),
935 (195, 102),
936 (196, 99),
937 (197, 103),
938 (198, 158),
939 (199, 104),
940 (200, 116),
941 (201, 113),
942 (202, 114),
943 (203, 115),
944 (204, 120),
945 (205, 117),
946 (206, 118),
947 (207, 119),
948 (208, 172),
949 (209, 105),
950 (210, 237),
951 (211, 238),
952 (212, 235),
953 (213, 239),
954 (214, 236),
955 (215, 191),
956 (216, 128),
957 (217, 253),
958 (218, 254),
959 (219, 251),
960 (220, 252),
961 (221, 173),
962 (222, 174),
963 (223, 89),
964 (224, 124),
965 (225, 69),
966 (226, 66),
967 (227, 70),
968 (228, 67),
969 (229, 71),
970 (230, 156),
971 (231, 224),
972 (232, 208),
973 (233, 192),
974 (234, 82),
975 (235, 83),
976 (236, 88),
977 (237, 85),
978 (238, 86),
979 (239, 87),
980 (240, 140),
981 (241, 73),
982 (242, 205),
983 (243, 206),
984 (244, 203),
985 (245, 207),
986 (246, 204),
987 (247, 225),
988 (248, 112),
989 (249, 106),
990 (250, 222),
991 (251, 219),
992 (252, 220),
993 (253, 141),
994 (254, 142),
995 (255, 223),
996];
997
998impl_ebcdic_encoder_and_decoder!(
999 IBM275,
1000 "IBM275",
1001 IBM275Encoder,
1002 IBM275Decoder,
1003 IBM_275_ENCODE_TABLE,
1004 IBM_275_DECODE_TABLE
1005);
1006const IBM_275_DECODE_TABLE: [char; 256] = [
1007 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
1008 '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
1009 '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
1010 '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
1011 '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
1012 '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
1013 '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
1014 '\u{a0}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e1}', '\u{60}', '\u{e5}', '\u{a6}', '\u{f1}',
1015 '\u{c9}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{7d}', '\u{ea}',
1016 '\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{24}', '\u{c7}',
1017 '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
1018 '\u{c1}', '\u{40}', '\u{c5}', '\u{5d}', '\u{d1}', '\u{e7}', '\u{2c}', '\u{25}', '\u{5f}',
1019 '\u{3e}', '\u{3f}', '\u{f8}', '\u{5b}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
1020 '\u{cf}', '\u{cc}', '\u{e3}', '\u{3a}', '\u{d5}', '\u{c3}', '\u{27}', '\u{3d}', '\u{22}',
1021 '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
1022 '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
1023 '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
1024 '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{7e}', '\u{73}', '\u{74}',
1025 '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
1026 '\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
1027 '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{a8}', '\u{b4}',
1028 '\u{d7}', '\u{f5}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
1029 '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{f3}', '\u{7b}', '\u{e9}',
1030 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
1031 '\u{b9}', '\u{fb}', '\u{fc}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{5c}', '\u{f7}', '\u{53}',
1032 '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
1033 '\u{d6}', '\u{d2}', '\u{d3}', '\u{23}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
1034 '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
1035 '\u{da}', '\u{9f}',
1036];
1037const IBM_275_ENCODE_TABLE: &[(u16, u8)] = &[
1038 (0, 0),
1039 (1, 1),
1040 (2, 2),
1041 (3, 3),
1042 (4, 55),
1043 (5, 45),
1044 (6, 46),
1045 (7, 47),
1046 (8, 22),
1047 (9, 5),
1048 (10, 37),
1049 (11, 11),
1050 (12, 12),
1051 (13, 13),
1052 (14, 14),
1053 (15, 15),
1054 (16, 16),
1055 (17, 17),
1056 (18, 18),
1057 (19, 19),
1058 (20, 60),
1059 (21, 61),
1060 (22, 50),
1061 (23, 38),
1062 (24, 24),
1063 (25, 25),
1064 (26, 63),
1065 (27, 39),
1066 (28, 28),
1067 (29, 29),
1068 (30, 30),
1069 (31, 31),
1070 (32, 64),
1071 (33, 79),
1072 (34, 127),
1073 (35, 239),
1074 (36, 90),
1075 (37, 108),
1076 (38, 80),
1077 (39, 125),
1078 (40, 77),
1079 (41, 93),
1080 (42, 92),
1081 (43, 78),
1082 (44, 107),
1083 (45, 96),
1084 (46, 75),
1085 (47, 97),
1086 (48, 240),
1087 (49, 241),
1088 (50, 242),
1089 (51, 243),
1090 (52, 244),
1091 (53, 245),
1092 (54, 246),
1093 (55, 247),
1094 (56, 248),
1095 (57, 249),
1096 (58, 122),
1097 (59, 94),
1098 (60, 76),
1099 (61, 126),
1100 (62, 110),
1101 (63, 111),
1102 (64, 102),
1103 (65, 193),
1104 (66, 194),
1105 (67, 195),
1106 (68, 196),
1107 (69, 197),
1108 (70, 198),
1109 (71, 199),
1110 (72, 200),
1111 (73, 201),
1112 (74, 209),
1113 (75, 210),
1114 (76, 211),
1115 (77, 212),
1116 (78, 213),
1117 (79, 214),
1118 (80, 215),
1119 (81, 216),
1120 (82, 217),
1121 (83, 226),
1122 (84, 227),
1123 (85, 228),
1124 (86, 229),
1125 (87, 230),
1126 (88, 231),
1127 (89, 232),
1128 (90, 233),
1129 (91, 113),
1130 (92, 224),
1131 (93, 104),
1132 (94, 95),
1133 (95, 109),
1134 (96, 70),
1135 (97, 129),
1136 (98, 130),
1137 (99, 131),
1138 (100, 132),
1139 (101, 133),
1140 (102, 134),
1141 (103, 135),
1142 (104, 136),
1143 (105, 137),
1144 (106, 145),
1145 (107, 146),
1146 (108, 147),
1147 (109, 148),
1148 (110, 149),
1149 (111, 150),
1150 (112, 151),
1151 (113, 152),
1152 (114, 153),
1153 (115, 162),
1154 (116, 163),
1155 (117, 164),
1156 (118, 165),
1157 (119, 166),
1158 (120, 167),
1159 (121, 168),
1160 (122, 169),
1161 (123, 207),
1162 (124, 187),
1163 (125, 81),
1164 (126, 161),
1165 (127, 7),
1166 (128, 32),
1167 (129, 33),
1168 (130, 34),
1169 (131, 35),
1170 (132, 36),
1171 (133, 21),
1172 (134, 6),
1173 (135, 23),
1174 (136, 40),
1175 (137, 41),
1176 (138, 42),
1177 (139, 43),
1178 (140, 44),
1179 (141, 9),
1180 (142, 10),
1181 (143, 27),
1182 (144, 48),
1183 (145, 49),
1184 (146, 26),
1185 (147, 51),
1186 (148, 52),
1187 (149, 53),
1188 (150, 54),
1189 (151, 8),
1190 (152, 56),
1191 (153, 57),
1192 (154, 58),
1193 (155, 59),
1194 (156, 4),
1195 (157, 20),
1196 (158, 62),
1197 (159, 255),
1198 (160, 65),
1199 (161, 170),
1200 (162, 176),
1201 (163, 177),
1202 (164, 159),
1203 (165, 178),
1204 (166, 72),
1205 (167, 181),
1206 (168, 189),
1207 (169, 180),
1208 (170, 154),
1209 (171, 138),
1210 (172, 186),
1211 (173, 202),
1212 (174, 175),
1213 (175, 188),
1214 (176, 144),
1215 (177, 143),
1216 (178, 234),
1217 (179, 250),
1218 (180, 190),
1219 (181, 160),
1220 (182, 182),
1221 (183, 179),
1222 (184, 157),
1223 (185, 218),
1224 (186, 155),
1225 (187, 139),
1226 (188, 183),
1227 (189, 184),
1228 (190, 185),
1229 (191, 171),
1230 (192, 100),
1231 (193, 101),
1232 (194, 98),
1233 (195, 124),
1234 (196, 99),
1235 (197, 103),
1236 (198, 158),
1237 (199, 91),
1238 (200, 116),
1239 (201, 74),
1240 (202, 114),
1241 (203, 115),
1242 (204, 120),
1243 (205, 117),
1244 (206, 118),
1245 (207, 119),
1246 (208, 172),
1247 (209, 105),
1248 (210, 237),
1249 (211, 238),
1250 (212, 235),
1251 (213, 123),
1252 (214, 236),
1253 (215, 191),
1254 (216, 128),
1255 (217, 253),
1256 (218, 254),
1257 (219, 251),
1258 (220, 252),
1259 (221, 173),
1260 (222, 174),
1261 (223, 89),
1262 (224, 68),
1263 (225, 69),
1264 (226, 66),
1265 (227, 121),
1266 (228, 67),
1267 (229, 71),
1268 (230, 156),
1269 (231, 106),
1270 (232, 84),
1271 (233, 208),
1272 (234, 82),
1273 (235, 83),
1274 (236, 88),
1275 (237, 85),
1276 (238, 86),
1277 (239, 87),
1278 (240, 140),
1279 (241, 73),
1280 (242, 205),
1281 (243, 206),
1282 (244, 203),
1283 (245, 192),
1284 (246, 204),
1285 (247, 225),
1286 (248, 112),
1287 (249, 221),
1288 (250, 222),
1289 (251, 219),
1290 (252, 220),
1291 (253, 141),
1292 (254, 142),
1293 (255, 223),
1294];
1295
1296impl_ebcdic_encoder_and_decoder!(
1297 IBM277,
1298 "IBM277",
1299 IBM277Encoder,
1300 IBM277Decoder,
1301 IBM_277_ENCODE_TABLE,
1302 IBM_277_DECODE_TABLE
1303);
1304const IBM_277_DECODE_TABLE: [char; 256] = [
1305 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
1306 '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
1307 '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
1308 '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
1309 '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
1310 '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
1311 '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
1312 '\u{a0}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{7d}', '\u{e7}', '\u{f1}',
1313 '\u{23}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{e9}', '\u{ea}',
1314 '\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{a4}', '\u{c5}',
1315 '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
1316 '\u{c1}', '\u{c3}', '\u{24}', '\u{c7}', '\u{d1}', '\u{f8}', '\u{2c}', '\u{25}', '\u{5f}',
1317 '\u{3e}', '\u{3f}', '\u{a6}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
1318 '\u{cf}', '\u{cc}', '\u{60}', '\u{3a}', '\u{c6}', '\u{d8}', '\u{27}', '\u{3d}', '\u{22}',
1319 '\u{40}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
1320 '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
1321 '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
1322 '\u{ba}', '\u{7b}', '\u{b8}', '\u{5b}', '\u{5d}', '\u{b5}', '\u{fc}', '\u{73}', '\u{74}',
1323 '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
1324 '\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
1325 '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{a8}', '\u{b4}',
1326 '\u{d7}', '\u{e6}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
1327 '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{e5}',
1328 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
1329 '\u{b9}', '\u{fb}', '\u{7e}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{5c}', '\u{f7}', '\u{53}',
1330 '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
1331 '\u{d6}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
1332 '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
1333 '\u{da}', '\u{9f}',
1334];
1335const IBM_277_ENCODE_TABLE: &[(u16, u8)] = &[
1336 (0, 0),
1337 (1, 1),
1338 (2, 2),
1339 (3, 3),
1340 (4, 55),
1341 (5, 45),
1342 (6, 46),
1343 (7, 47),
1344 (8, 22),
1345 (9, 5),
1346 (10, 37),
1347 (11, 11),
1348 (12, 12),
1349 (13, 13),
1350 (14, 14),
1351 (15, 15),
1352 (16, 16),
1353 (17, 17),
1354 (18, 18),
1355 (19, 19),
1356 (20, 60),
1357 (21, 61),
1358 (22, 50),
1359 (23, 38),
1360 (24, 24),
1361 (25, 25),
1362 (26, 63),
1363 (27, 39),
1364 (28, 28),
1365 (29, 29),
1366 (30, 30),
1367 (31, 31),
1368 (32, 64),
1369 (33, 79),
1370 (34, 127),
1371 (35, 74),
1372 (36, 103),
1373 (37, 108),
1374 (38, 80),
1375 (39, 125),
1376 (40, 77),
1377 (41, 93),
1378 (42, 92),
1379 (43, 78),
1380 (44, 107),
1381 (45, 96),
1382 (46, 75),
1383 (47, 97),
1384 (48, 240),
1385 (49, 241),
1386 (50, 242),
1387 (51, 243),
1388 (52, 244),
1389 (53, 245),
1390 (54, 246),
1391 (55, 247),
1392 (56, 248),
1393 (57, 249),
1394 (58, 122),
1395 (59, 94),
1396 (60, 76),
1397 (61, 126),
1398 (62, 110),
1399 (63, 111),
1400 (64, 128),
1401 (65, 193),
1402 (66, 194),
1403 (67, 195),
1404 (68, 196),
1405 (69, 197),
1406 (70, 198),
1407 (71, 199),
1408 (72, 200),
1409 (73, 201),
1410 (74, 209),
1411 (75, 210),
1412 (76, 211),
1413 (77, 212),
1414 (78, 213),
1415 (79, 214),
1416 (80, 215),
1417 (81, 216),
1418 (82, 217),
1419 (83, 226),
1420 (84, 227),
1421 (85, 228),
1422 (86, 229),
1423 (87, 230),
1424 (88, 231),
1425 (89, 232),
1426 (90, 233),
1427 (91, 158),
1428 (92, 224),
1429 (93, 159),
1430 (94, 95),
1431 (95, 109),
1432 (96, 121),
1433 (97, 129),
1434 (98, 130),
1435 (99, 131),
1436 (100, 132),
1437 (101, 133),
1438 (102, 134),
1439 (103, 135),
1440 (104, 136),
1441 (105, 137),
1442 (106, 145),
1443 (107, 146),
1444 (108, 147),
1445 (109, 148),
1446 (110, 149),
1447 (111, 150),
1448 (112, 151),
1449 (113, 152),
1450 (114, 153),
1451 (115, 162),
1452 (116, 163),
1453 (117, 164),
1454 (118, 165),
1455 (119, 166),
1456 (120, 167),
1457 (121, 168),
1458 (122, 169),
1459 (123, 156),
1460 (124, 187),
1461 (125, 71),
1462 (126, 220),
1463 (127, 7),
1464 (128, 32),
1465 (129, 33),
1466 (130, 34),
1467 (131, 35),
1468 (132, 36),
1469 (133, 21),
1470 (134, 6),
1471 (135, 23),
1472 (136, 40),
1473 (137, 41),
1474 (138, 42),
1475 (139, 43),
1476 (140, 44),
1477 (141, 9),
1478 (142, 10),
1479 (143, 27),
1480 (144, 48),
1481 (145, 49),
1482 (146, 26),
1483 (147, 51),
1484 (148, 52),
1485 (149, 53),
1486 (150, 54),
1487 (151, 8),
1488 (152, 56),
1489 (153, 57),
1490 (154, 58),
1491 (155, 59),
1492 (156, 4),
1493 (157, 20),
1494 (158, 62),
1495 (159, 255),
1496 (160, 65),
1497 (161, 170),
1498 (162, 176),
1499 (163, 177),
1500 (164, 90),
1501 (165, 178),
1502 (166, 112),
1503 (167, 181),
1504 (168, 189),
1505 (169, 180),
1506 (170, 154),
1507 (171, 138),
1508 (172, 186),
1509 (173, 202),
1510 (174, 175),
1511 (175, 188),
1512 (176, 144),
1513 (177, 143),
1514 (178, 234),
1515 (179, 250),
1516 (180, 190),
1517 (181, 160),
1518 (182, 182),
1519 (183, 179),
1520 (184, 157),
1521 (185, 218),
1522 (186, 155),
1523 (187, 139),
1524 (188, 183),
1525 (189, 184),
1526 (190, 185),
1527 (191, 171),
1528 (192, 100),
1529 (193, 101),
1530 (194, 98),
1531 (195, 102),
1532 (196, 99),
1533 (197, 91),
1534 (198, 123),
1535 (199, 104),
1536 (200, 116),
1537 (201, 113),
1538 (202, 114),
1539 (203, 115),
1540 (204, 120),
1541 (205, 117),
1542 (206, 118),
1543 (207, 119),
1544 (208, 172),
1545 (209, 105),
1546 (210, 237),
1547 (211, 238),
1548 (212, 235),
1549 (213, 239),
1550 (214, 236),
1551 (215, 191),
1552 (216, 124),
1553 (217, 253),
1554 (218, 254),
1555 (219, 251),
1556 (220, 252),
1557 (221, 173),
1558 (222, 174),
1559 (223, 89),
1560 (224, 68),
1561 (225, 69),
1562 (226, 66),
1563 (227, 70),
1564 (228, 67),
1565 (229, 208),
1566 (230, 192),
1567 (231, 72),
1568 (232, 84),
1569 (233, 81),
1570 (234, 82),
1571 (235, 83),
1572 (236, 88),
1573 (237, 85),
1574 (238, 86),
1575 (239, 87),
1576 (240, 140),
1577 (241, 73),
1578 (242, 205),
1579 (243, 206),
1580 (244, 203),
1581 (245, 207),
1582 (246, 204),
1583 (247, 225),
1584 (248, 106),
1585 (249, 221),
1586 (250, 222),
1587 (251, 219),
1588 (252, 161),
1589 (253, 141),
1590 (254, 142),
1591 (255, 223),
1592];
1593
1594impl_ebcdic_encoder_and_decoder!(
1595 IBM278,
1596 "IBM278",
1597 IBM278Encoder,
1598 IBM278Decoder,
1599 IBM_278_ENCODE_TABLE,
1600 IBM_278_DECODE_TABLE
1601);
1602const IBM_278_DECODE_TABLE: [char; 256] = [
1603 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
1604 '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
1605 '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
1606 '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
1607 '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
1608 '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
1609 '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
1610 '\u{a0}', '\u{e2}', '\u{7b}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{7d}', '\u{e7}', '\u{f1}',
1611 '\u{a7}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{60}', '\u{ea}',
1612 '\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{a4}', '\u{c5}',
1613 '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{23}', '\u{c0}',
1614 '\u{c1}', '\u{c3}', '\u{24}', '\u{c7}', '\u{d1}', '\u{f6}', '\u{2c}', '\u{25}', '\u{5f}',
1615 '\u{3e}', '\u{3f}', '\u{f8}', '\u{5c}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
1616 '\u{cf}', '\u{cc}', '\u{e9}', '\u{3a}', '\u{c4}', '\u{d6}', '\u{27}', '\u{3d}', '\u{22}',
1617 '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
1618 '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
1619 '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
1620 '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{5d}', '\u{b5}', '\u{fc}', '\u{73}', '\u{74}',
1621 '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
1622 '\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{5b}',
1623 '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{a8}', '\u{b4}',
1624 '\u{d7}', '\u{e4}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
1625 '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{a6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{e5}',
1626 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
1627 '\u{b9}', '\u{fb}', '\u{7e}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{c9}', '\u{f7}', '\u{53}',
1628 '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
1629 '\u{40}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
1630 '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
1631 '\u{da}', '\u{9f}',
1632];
1633const IBM_278_ENCODE_TABLE: &[(u16, u8)] = &[
1634 (0, 0),
1635 (1, 1),
1636 (2, 2),
1637 (3, 3),
1638 (4, 55),
1639 (5, 45),
1640 (6, 46),
1641 (7, 47),
1642 (8, 22),
1643 (9, 5),
1644 (10, 37),
1645 (11, 11),
1646 (12, 12),
1647 (13, 13),
1648 (14, 14),
1649 (15, 15),
1650 (16, 16),
1651 (17, 17),
1652 (18, 18),
1653 (19, 19),
1654 (20, 60),
1655 (21, 61),
1656 (22, 50),
1657 (23, 38),
1658 (24, 24),
1659 (25, 25),
1660 (26, 63),
1661 (27, 39),
1662 (28, 28),
1663 (29, 29),
1664 (30, 30),
1665 (31, 31),
1666 (32, 64),
1667 (33, 79),
1668 (34, 127),
1669 (35, 99),
1670 (36, 103),
1671 (37, 108),
1672 (38, 80),
1673 (39, 125),
1674 (40, 77),
1675 (41, 93),
1676 (42, 92),
1677 (43, 78),
1678 (44, 107),
1679 (45, 96),
1680 (46, 75),
1681 (47, 97),
1682 (48, 240),
1683 (49, 241),
1684 (50, 242),
1685 (51, 243),
1686 (52, 244),
1687 (53, 245),
1688 (54, 246),
1689 (55, 247),
1690 (56, 248),
1691 (57, 249),
1692 (58, 122),
1693 (59, 94),
1694 (60, 76),
1695 (61, 126),
1696 (62, 110),
1697 (63, 111),
1698 (64, 236),
1699 (65, 193),
1700 (66, 194),
1701 (67, 195),
1702 (68, 196),
1703 (69, 197),
1704 (70, 198),
1705 (71, 199),
1706 (72, 200),
1707 (73, 201),
1708 (74, 209),
1709 (75, 210),
1710 (76, 211),
1711 (77, 212),
1712 (78, 213),
1713 (79, 214),
1714 (80, 215),
1715 (81, 216),
1716 (82, 217),
1717 (83, 226),
1718 (84, 227),
1719 (85, 228),
1720 (86, 229),
1721 (87, 230),
1722 (88, 231),
1723 (89, 232),
1724 (90, 233),
1725 (91, 181),
1726 (92, 113),
1727 (93, 159),
1728 (94, 95),
1729 (95, 109),
1730 (96, 81),
1731 (97, 129),
1732 (98, 130),
1733 (99, 131),
1734 (100, 132),
1735 (101, 133),
1736 (102, 134),
1737 (103, 135),
1738 (104, 136),
1739 (105, 137),
1740 (106, 145),
1741 (107, 146),
1742 (108, 147),
1743 (109, 148),
1744 (110, 149),
1745 (111, 150),
1746 (112, 151),
1747 (113, 152),
1748 (114, 153),
1749 (115, 162),
1750 (116, 163),
1751 (117, 164),
1752 (118, 165),
1753 (119, 166),
1754 (120, 167),
1755 (121, 168),
1756 (122, 169),
1757 (123, 67),
1758 (124, 187),
1759 (125, 71),
1760 (126, 220),
1761 (127, 7),
1762 (128, 32),
1763 (129, 33),
1764 (130, 34),
1765 (131, 35),
1766 (132, 36),
1767 (133, 21),
1768 (134, 6),
1769 (135, 23),
1770 (136, 40),
1771 (137, 41),
1772 (138, 42),
1773 (139, 43),
1774 (140, 44),
1775 (141, 9),
1776 (142, 10),
1777 (143, 27),
1778 (144, 48),
1779 (145, 49),
1780 (146, 26),
1781 (147, 51),
1782 (148, 52),
1783 (149, 53),
1784 (150, 54),
1785 (151, 8),
1786 (152, 56),
1787 (153, 57),
1788 (154, 58),
1789 (155, 59),
1790 (156, 4),
1791 (157, 20),
1792 (158, 62),
1793 (159, 255),
1794 (160, 65),
1795 (161, 170),
1796 (162, 176),
1797 (163, 177),
1798 (164, 90),
1799 (165, 178),
1800 (166, 204),
1801 (167, 74),
1802 (168, 189),
1803 (169, 180),
1804 (170, 154),
1805 (171, 138),
1806 (172, 186),
1807 (173, 202),
1808 (174, 175),
1809 (175, 188),
1810 (176, 144),
1811 (177, 143),
1812 (178, 234),
1813 (179, 250),
1814 (180, 190),
1815 (181, 160),
1816 (182, 182),
1817 (183, 179),
1818 (184, 157),
1819 (185, 218),
1820 (186, 155),
1821 (187, 139),
1822 (188, 183),
1823 (189, 184),
1824 (190, 185),
1825 (191, 171),
1826 (192, 100),
1827 (193, 101),
1828 (194, 98),
1829 (195, 102),
1830 (196, 123),
1831 (197, 91),
1832 (198, 158),
1833 (199, 104),
1834 (200, 116),
1835 (201, 224),
1836 (202, 114),
1837 (203, 115),
1838 (204, 120),
1839 (205, 117),
1840 (206, 118),
1841 (207, 119),
1842 (208, 172),
1843 (209, 105),
1844 (210, 237),
1845 (211, 238),
1846 (212, 235),
1847 (213, 239),
1848 (214, 124),
1849 (215, 191),
1850 (216, 128),
1851 (217, 253),
1852 (218, 254),
1853 (219, 251),
1854 (220, 252),
1855 (221, 173),
1856 (222, 174),
1857 (223, 89),
1858 (224, 68),
1859 (225, 69),
1860 (226, 66),
1861 (227, 70),
1862 (228, 192),
1863 (229, 208),
1864 (230, 156),
1865 (231, 72),
1866 (232, 84),
1867 (233, 121),
1868 (234, 82),
1869 (235, 83),
1870 (236, 88),
1871 (237, 85),
1872 (238, 86),
1873 (239, 87),
1874 (240, 140),
1875 (241, 73),
1876 (242, 205),
1877 (243, 206),
1878 (244, 203),
1879 (245, 207),
1880 (246, 106),
1881 (247, 225),
1882 (248, 112),
1883 (249, 221),
1884 (250, 222),
1885 (251, 219),
1886 (252, 161),
1887 (253, 141),
1888 (254, 142),
1889 (255, 223),
1890];
1891
1892impl_ebcdic_encoder_and_decoder!(
1893 IBM280,
1894 "IBM280",
1895 IBM280Encoder,
1896 IBM280Decoder,
1897 IBM_280_ENCODE_TABLE,
1898 IBM_280_DECODE_TABLE
1899);
1900const IBM_280_DECODE_TABLE: [char; 256] = [
1901 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
1902 '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
1903 '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
1904 '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
1905 '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
1906 '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
1907 '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
1908 '\u{a0}', '\u{e2}', '\u{e4}', '\u{7b}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{5c}', '\u{f1}',
1909 '\u{b0}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{5d}', '\u{ea}',
1910 '\u{eb}', '\u{7d}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{7e}', '\u{df}', '\u{e9}', '\u{24}',
1911 '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
1912 '\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{d1}', '\u{f2}', '\u{2c}', '\u{25}', '\u{5f}',
1913 '\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
1914 '\u{cf}', '\u{cc}', '\u{f9}', '\u{3a}', '\u{a3}', '\u{a7}', '\u{27}', '\u{3d}', '\u{22}',
1915 '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
1916 '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{5b}', '\u{6a}',
1917 '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
1918 '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{ec}', '\u{73}', '\u{74}',
1919 '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
1920 '\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{23}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{40}',
1921 '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{a8}', '\u{b4}',
1922 '\u{d7}', '\u{e0}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
1923 '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{a6}', '\u{f3}', '\u{f5}', '\u{e8}',
1924 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
1925 '\u{b9}', '\u{fb}', '\u{fc}', '\u{60}', '\u{fa}', '\u{ff}', '\u{e7}', '\u{f7}', '\u{53}',
1926 '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
1927 '\u{d6}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
1928 '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
1929 '\u{da}', '\u{9f}',
1930];
1931const IBM_280_ENCODE_TABLE: &[(u16, u8)] = &[
1932 (0, 0),
1933 (1, 1),
1934 (2, 2),
1935 (3, 3),
1936 (4, 55),
1937 (5, 45),
1938 (6, 46),
1939 (7, 47),
1940 (8, 22),
1941 (9, 5),
1942 (10, 37),
1943 (11, 11),
1944 (12, 12),
1945 (13, 13),
1946 (14, 14),
1947 (15, 15),
1948 (16, 16),
1949 (17, 17),
1950 (18, 18),
1951 (19, 19),
1952 (20, 60),
1953 (21, 61),
1954 (22, 50),
1955 (23, 38),
1956 (24, 24),
1957 (25, 25),
1958 (26, 63),
1959 (27, 39),
1960 (28, 28),
1961 (29, 29),
1962 (30, 30),
1963 (31, 31),
1964 (32, 64),
1965 (33, 79),
1966 (34, 127),
1967 (35, 177),
1968 (36, 91),
1969 (37, 108),
1970 (38, 80),
1971 (39, 125),
1972 (40, 77),
1973 (41, 93),
1974 (42, 92),
1975 (43, 78),
1976 (44, 107),
1977 (45, 96),
1978 (46, 75),
1979 (47, 97),
1980 (48, 240),
1981 (49, 241),
1982 (50, 242),
1983 (51, 243),
1984 (52, 244),
1985 (53, 245),
1986 (54, 246),
1987 (55, 247),
1988 (56, 248),
1989 (57, 249),
1990 (58, 122),
1991 (59, 94),
1992 (60, 76),
1993 (61, 126),
1994 (62, 110),
1995 (63, 111),
1996 (64, 181),
1997 (65, 193),
1998 (66, 194),
1999 (67, 195),
2000 (68, 196),
2001 (69, 197),
2002 (70, 198),
2003 (71, 199),
2004 (72, 200),
2005 (73, 201),
2006 (74, 209),
2007 (75, 210),
2008 (76, 211),
2009 (77, 212),
2010 (78, 213),
2011 (79, 214),
2012 (80, 215),
2013 (81, 216),
2014 (82, 217),
2015 (83, 226),
2016 (84, 227),
2017 (85, 228),
2018 (86, 229),
2019 (87, 230),
2020 (88, 231),
2021 (89, 232),
2022 (90, 233),
2023 (91, 144),
2024 (92, 72),
2025 (93, 81),
2026 (94, 95),
2027 (95, 109),
2028 (96, 221),
2029 (97, 129),
2030 (98, 130),
2031 (99, 131),
2032 (100, 132),
2033 (101, 133),
2034 (102, 134),
2035 (103, 135),
2036 (104, 136),
2037 (105, 137),
2038 (106, 145),
2039 (107, 146),
2040 (108, 147),
2041 (109, 148),
2042 (110, 149),
2043 (111, 150),
2044 (112, 151),
2045 (113, 152),
2046 (114, 153),
2047 (115, 162),
2048 (116, 163),
2049 (117, 164),
2050 (118, 165),
2051 (119, 166),
2052 (120, 167),
2053 (121, 168),
2054 (122, 169),
2055 (123, 68),
2056 (124, 187),
2057 (125, 84),
2058 (126, 88),
2059 (127, 7),
2060 (128, 32),
2061 (129, 33),
2062 (130, 34),
2063 (131, 35),
2064 (132, 36),
2065 (133, 21),
2066 (134, 6),
2067 (135, 23),
2068 (136, 40),
2069 (137, 41),
2070 (138, 42),
2071 (139, 43),
2072 (140, 44),
2073 (141, 9),
2074 (142, 10),
2075 (143, 27),
2076 (144, 48),
2077 (145, 49),
2078 (146, 26),
2079 (147, 51),
2080 (148, 52),
2081 (149, 53),
2082 (150, 54),
2083 (151, 8),
2084 (152, 56),
2085 (153, 57),
2086 (154, 58),
2087 (155, 59),
2088 (156, 4),
2089 (157, 20),
2090 (158, 62),
2091 (159, 255),
2092 (160, 65),
2093 (161, 170),
2094 (162, 176),
2095 (163, 123),
2096 (164, 159),
2097 (165, 178),
2098 (166, 205),
2099 (167, 124),
2100 (168, 189),
2101 (169, 180),
2102 (170, 154),
2103 (171, 138),
2104 (172, 186),
2105 (173, 202),
2106 (174, 175),
2107 (175, 188),
2108 (176, 74),
2109 (177, 143),
2110 (178, 234),
2111 (179, 250),
2112 (180, 190),
2113 (181, 160),
2114 (182, 182),
2115 (183, 179),
2116 (184, 157),
2117 (185, 218),
2118 (186, 155),
2119 (187, 139),
2120 (188, 183),
2121 (189, 184),
2122 (190, 185),
2123 (191, 171),
2124 (192, 100),
2125 (193, 101),
2126 (194, 98),
2127 (195, 102),
2128 (196, 99),
2129 (197, 103),
2130 (198, 158),
2131 (199, 104),
2132 (200, 116),
2133 (201, 113),
2134 (202, 114),
2135 (203, 115),
2136 (204, 120),
2137 (205, 117),
2138 (206, 118),
2139 (207, 119),
2140 (208, 172),
2141 (209, 105),
2142 (210, 237),
2143 (211, 238),
2144 (212, 235),
2145 (213, 239),
2146 (214, 236),
2147 (215, 191),
2148 (216, 128),
2149 (217, 253),
2150 (218, 254),
2151 (219, 251),
2152 (220, 252),
2153 (221, 173),
2154 (222, 174),
2155 (223, 89),
2156 (224, 192),
2157 (225, 69),
2158 (226, 66),
2159 (227, 70),
2160 (228, 67),
2161 (229, 71),
2162 (230, 156),
2163 (231, 224),
2164 (232, 208),
2165 (233, 90),
2166 (234, 82),
2167 (235, 83),
2168 (236, 161),
2169 (237, 85),
2170 (238, 86),
2171 (239, 87),
2172 (240, 140),
2173 (241, 73),
2174 (242, 106),
2175 (243, 206),
2176 (244, 203),
2177 (245, 207),
2178 (246, 204),
2179 (247, 225),
2180 (248, 112),
2181 (249, 121),
2182 (250, 222),
2183 (251, 219),
2184 (252, 220),
2185 (253, 141),
2186 (254, 142),
2187 (255, 223),
2188];
2189
2190impl_ebcdic_encoder_and_decoder!(
2191 IBM284,
2192 "IBM284",
2193 IBM284Encoder,
2194 IBM284Decoder,
2195 IBM_284_ENCODE_TABLE,
2196 IBM_284_DECODE_TABLE
2197);
2198const IBM_284_DECODE_TABLE: [char; 256] = [
2199 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
2200 '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
2201 '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
2202 '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
2203 '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
2204 '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
2205 '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
2206 '\u{a0}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{e7}', '\u{a6}',
2207 '\u{5b}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{7c}', '\u{26}', '\u{e9}', '\u{ea}',
2208 '\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{5d}', '\u{24}',
2209 '\u{2a}', '\u{29}', '\u{3b}', '\u{ac}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
2210 '\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{23}', '\u{f1}', '\u{2c}', '\u{25}', '\u{5f}',
2211 '\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
2212 '\u{cf}', '\u{cc}', '\u{60}', '\u{3a}', '\u{d1}', '\u{40}', '\u{27}', '\u{3d}', '\u{22}',
2213 '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
2214 '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
2215 '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
2216 '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{a8}', '\u{73}', '\u{74}',
2217 '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
2218 '\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
2219 '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{5e}', '\u{21}', '\u{af}', '\u{7e}', '\u{b4}',
2220 '\u{d7}', '\u{7b}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
2221 '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{7d}',
2222 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
2223 '\u{b9}', '\u{fb}', '\u{fc}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{5c}', '\u{f7}', '\u{53}',
2224 '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
2225 '\u{d6}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
2226 '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
2227 '\u{da}', '\u{9f}',
2228];
2229const IBM_284_ENCODE_TABLE: &[(u16, u8)] = &[
2230 (0, 0),
2231 (1, 1),
2232 (2, 2),
2233 (3, 3),
2234 (4, 55),
2235 (5, 45),
2236 (6, 46),
2237 (7, 47),
2238 (8, 22),
2239 (9, 5),
2240 (10, 37),
2241 (11, 11),
2242 (12, 12),
2243 (13, 13),
2244 (14, 14),
2245 (15, 15),
2246 (16, 16),
2247 (17, 17),
2248 (18, 18),
2249 (19, 19),
2250 (20, 60),
2251 (21, 61),
2252 (22, 50),
2253 (23, 38),
2254 (24, 24),
2255 (25, 25),
2256 (26, 63),
2257 (27, 39),
2258 (28, 28),
2259 (29, 29),
2260 (30, 30),
2261 (31, 31),
2262 (32, 64),
2263 (33, 187),
2264 (34, 127),
2265 (35, 105),
2266 (36, 91),
2267 (37, 108),
2268 (38, 80),
2269 (39, 125),
2270 (40, 77),
2271 (41, 93),
2272 (42, 92),
2273 (43, 78),
2274 (44, 107),
2275 (45, 96),
2276 (46, 75),
2277 (47, 97),
2278 (48, 240),
2279 (49, 241),
2280 (50, 242),
2281 (51, 243),
2282 (52, 244),
2283 (53, 245),
2284 (54, 246),
2285 (55, 247),
2286 (56, 248),
2287 (57, 249),
2288 (58, 122),
2289 (59, 94),
2290 (60, 76),
2291 (61, 126),
2292 (62, 110),
2293 (63, 111),
2294 (64, 124),
2295 (65, 193),
2296 (66, 194),
2297 (67, 195),
2298 (68, 196),
2299 (69, 197),
2300 (70, 198),
2301 (71, 199),
2302 (72, 200),
2303 (73, 201),
2304 (74, 209),
2305 (75, 210),
2306 (76, 211),
2307 (77, 212),
2308 (78, 213),
2309 (79, 214),
2310 (80, 215),
2311 (81, 216),
2312 (82, 217),
2313 (83, 226),
2314 (84, 227),
2315 (85, 228),
2316 (86, 229),
2317 (87, 230),
2318 (88, 231),
2319 (89, 232),
2320 (90, 233),
2321 (91, 74),
2322 (92, 224),
2323 (93, 90),
2324 (94, 186),
2325 (95, 109),
2326 (96, 121),
2327 (97, 129),
2328 (98, 130),
2329 (99, 131),
2330 (100, 132),
2331 (101, 133),
2332 (102, 134),
2333 (103, 135),
2334 (104, 136),
2335 (105, 137),
2336 (106, 145),
2337 (107, 146),
2338 (108, 147),
2339 (109, 148),
2340 (110, 149),
2341 (111, 150),
2342 (112, 151),
2343 (113, 152),
2344 (114, 153),
2345 (115, 162),
2346 (116, 163),
2347 (117, 164),
2348 (118, 165),
2349 (119, 166),
2350 (120, 167),
2351 (121, 168),
2352 (122, 169),
2353 (123, 192),
2354 (124, 79),
2355 (125, 208),
2356 (126, 189),
2357 (127, 7),
2358 (128, 32),
2359 (129, 33),
2360 (130, 34),
2361 (131, 35),
2362 (132, 36),
2363 (133, 21),
2364 (134, 6),
2365 (135, 23),
2366 (136, 40),
2367 (137, 41),
2368 (138, 42),
2369 (139, 43),
2370 (140, 44),
2371 (141, 9),
2372 (142, 10),
2373 (143, 27),
2374 (144, 48),
2375 (145, 49),
2376 (146, 26),
2377 (147, 51),
2378 (148, 52),
2379 (149, 53),
2380 (150, 54),
2381 (151, 8),
2382 (152, 56),
2383 (153, 57),
2384 (154, 58),
2385 (155, 59),
2386 (156, 4),
2387 (157, 20),
2388 (158, 62),
2389 (159, 255),
2390 (160, 65),
2391 (161, 170),
2392 (162, 176),
2393 (163, 177),
2394 (164, 159),
2395 (165, 178),
2396 (166, 73),
2397 (167, 181),
2398 (168, 161),
2399 (169, 180),
2400 (170, 154),
2401 (171, 138),
2402 (172, 95),
2403 (173, 202),
2404 (174, 175),
2405 (175, 188),
2406 (176, 144),
2407 (177, 143),
2408 (178, 234),
2409 (179, 250),
2410 (180, 190),
2411 (181, 160),
2412 (182, 182),
2413 (183, 179),
2414 (184, 157),
2415 (185, 218),
2416 (186, 155),
2417 (187, 139),
2418 (188, 183),
2419 (189, 184),
2420 (190, 185),
2421 (191, 171),
2422 (192, 100),
2423 (193, 101),
2424 (194, 98),
2425 (195, 102),
2426 (196, 99),
2427 (197, 103),
2428 (198, 158),
2429 (199, 104),
2430 (200, 116),
2431 (201, 113),
2432 (202, 114),
2433 (203, 115),
2434 (204, 120),
2435 (205, 117),
2436 (206, 118),
2437 (207, 119),
2438 (208, 172),
2439 (209, 123),
2440 (210, 237),
2441 (211, 238),
2442 (212, 235),
2443 (213, 239),
2444 (214, 236),
2445 (215, 191),
2446 (216, 128),
2447 (217, 253),
2448 (218, 254),
2449 (219, 251),
2450 (220, 252),
2451 (221, 173),
2452 (222, 174),
2453 (223, 89),
2454 (224, 68),
2455 (225, 69),
2456 (226, 66),
2457 (227, 70),
2458 (228, 67),
2459 (229, 71),
2460 (230, 156),
2461 (231, 72),
2462 (232, 84),
2463 (233, 81),
2464 (234, 82),
2465 (235, 83),
2466 (236, 88),
2467 (237, 85),
2468 (238, 86),
2469 (239, 87),
2470 (240, 140),
2471 (241, 106),
2472 (242, 205),
2473 (243, 206),
2474 (244, 203),
2475 (245, 207),
2476 (246, 204),
2477 (247, 225),
2478 (248, 112),
2479 (249, 221),
2480 (250, 222),
2481 (251, 219),
2482 (252, 220),
2483 (253, 141),
2484 (254, 142),
2485 (255, 223),
2486];
2487
2488impl_ebcdic_encoder_and_decoder!(
2489 IBM285,
2490 "IBM285",
2491 IBM285Encoder,
2492 IBM285Decoder,
2493 IBM_285_ENCODE_TABLE,
2494 IBM_285_DECODE_TABLE
2495);
2496const IBM_285_DECODE_TABLE: [char; 256] = [
2497 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
2498 '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
2499 '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
2500 '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
2501 '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
2502 '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
2503 '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
2504 '\u{a0}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{e7}', '\u{f1}',
2505 '\u{24}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{7c}', '\u{26}', '\u{e9}', '\u{ea}',
2506 '\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{21}', '\u{a3}',
2507 '\u{2a}', '\u{29}', '\u{3b}', '\u{ac}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
2508 '\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{d1}', '\u{a6}', '\u{2c}', '\u{25}', '\u{5f}',
2509 '\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
2510 '\u{cf}', '\u{cc}', '\u{60}', '\u{3a}', '\u{23}', '\u{40}', '\u{27}', '\u{3d}', '\u{22}',
2511 '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
2512 '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
2513 '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
2514 '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{af}', '\u{73}', '\u{74}',
2515 '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
2516 '\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{5b}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
2517 '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{5e}', '\u{5d}', '\u{7e}', '\u{a8}', '\u{b4}',
2518 '\u{d7}', '\u{7b}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
2519 '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{7d}',
2520 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
2521 '\u{b9}', '\u{fb}', '\u{fc}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{5c}', '\u{f7}', '\u{53}',
2522 '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
2523 '\u{d6}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
2524 '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
2525 '\u{da}', '\u{9f}',
2526];
2527const IBM_285_ENCODE_TABLE: &[(u16, u8)] = &[
2528 (0, 0),
2529 (1, 1),
2530 (2, 2),
2531 (3, 3),
2532 (4, 55),
2533 (5, 45),
2534 (6, 46),
2535 (7, 47),
2536 (8, 22),
2537 (9, 5),
2538 (10, 37),
2539 (11, 11),
2540 (12, 12),
2541 (13, 13),
2542 (14, 14),
2543 (15, 15),
2544 (16, 16),
2545 (17, 17),
2546 (18, 18),
2547 (19, 19),
2548 (20, 60),
2549 (21, 61),
2550 (22, 50),
2551 (23, 38),
2552 (24, 24),
2553 (25, 25),
2554 (26, 63),
2555 (27, 39),
2556 (28, 28),
2557 (29, 29),
2558 (30, 30),
2559 (31, 31),
2560 (32, 64),
2561 (33, 90),
2562 (34, 127),
2563 (35, 123),
2564 (36, 74),
2565 (37, 108),
2566 (38, 80),
2567 (39, 125),
2568 (40, 77),
2569 (41, 93),
2570 (42, 92),
2571 (43, 78),
2572 (44, 107),
2573 (45, 96),
2574 (46, 75),
2575 (47, 97),
2576 (48, 240),
2577 (49, 241),
2578 (50, 242),
2579 (51, 243),
2580 (52, 244),
2581 (53, 245),
2582 (54, 246),
2583 (55, 247),
2584 (56, 248),
2585 (57, 249),
2586 (58, 122),
2587 (59, 94),
2588 (60, 76),
2589 (61, 126),
2590 (62, 110),
2591 (63, 111),
2592 (64, 124),
2593 (65, 193),
2594 (66, 194),
2595 (67, 195),
2596 (68, 196),
2597 (69, 197),
2598 (70, 198),
2599 (71, 199),
2600 (72, 200),
2601 (73, 201),
2602 (74, 209),
2603 (75, 210),
2604 (76, 211),
2605 (77, 212),
2606 (78, 213),
2607 (79, 214),
2608 (80, 215),
2609 (81, 216),
2610 (82, 217),
2611 (83, 226),
2612 (84, 227),
2613 (85, 228),
2614 (86, 229),
2615 (87, 230),
2616 (88, 231),
2617 (89, 232),
2618 (90, 233),
2619 (91, 177),
2620 (92, 224),
2621 (93, 187),
2622 (94, 186),
2623 (95, 109),
2624 (96, 121),
2625 (97, 129),
2626 (98, 130),
2627 (99, 131),
2628 (100, 132),
2629 (101, 133),
2630 (102, 134),
2631 (103, 135),
2632 (104, 136),
2633 (105, 137),
2634 (106, 145),
2635 (107, 146),
2636 (108, 147),
2637 (109, 148),
2638 (110, 149),
2639 (111, 150),
2640 (112, 151),
2641 (113, 152),
2642 (114, 153),
2643 (115, 162),
2644 (116, 163),
2645 (117, 164),
2646 (118, 165),
2647 (119, 166),
2648 (120, 167),
2649 (121, 168),
2650 (122, 169),
2651 (123, 192),
2652 (124, 79),
2653 (125, 208),
2654 (126, 188),
2655 (127, 7),
2656 (128, 32),
2657 (129, 33),
2658 (130, 34),
2659 (131, 35),
2660 (132, 36),
2661 (133, 21),
2662 (134, 6),
2663 (135, 23),
2664 (136, 40),
2665 (137, 41),
2666 (138, 42),
2667 (139, 43),
2668 (140, 44),
2669 (141, 9),
2670 (142, 10),
2671 (143, 27),
2672 (144, 48),
2673 (145, 49),
2674 (146, 26),
2675 (147, 51),
2676 (148, 52),
2677 (149, 53),
2678 (150, 54),
2679 (151, 8),
2680 (152, 56),
2681 (153, 57),
2682 (154, 58),
2683 (155, 59),
2684 (156, 4),
2685 (157, 20),
2686 (158, 62),
2687 (159, 255),
2688 (160, 65),
2689 (161, 170),
2690 (162, 176),
2691 (163, 91),
2692 (164, 159),
2693 (165, 178),
2694 (166, 106),
2695 (167, 181),
2696 (168, 189),
2697 (169, 180),
2698 (170, 154),
2699 (171, 138),
2700 (172, 95),
2701 (173, 202),
2702 (174, 175),
2703 (175, 161),
2704 (176, 144),
2705 (177, 143),
2706 (178, 234),
2707 (179, 250),
2708 (180, 190),
2709 (181, 160),
2710 (182, 182),
2711 (183, 179),
2712 (184, 157),
2713 (185, 218),
2714 (186, 155),
2715 (187, 139),
2716 (188, 183),
2717 (189, 184),
2718 (190, 185),
2719 (191, 171),
2720 (192, 100),
2721 (193, 101),
2722 (194, 98),
2723 (195, 102),
2724 (196, 99),
2725 (197, 103),
2726 (198, 158),
2727 (199, 104),
2728 (200, 116),
2729 (201, 113),
2730 (202, 114),
2731 (203, 115),
2732 (204, 120),
2733 (205, 117),
2734 (206, 118),
2735 (207, 119),
2736 (208, 172),
2737 (209, 105),
2738 (210, 237),
2739 (211, 238),
2740 (212, 235),
2741 (213, 239),
2742 (214, 236),
2743 (215, 191),
2744 (216, 128),
2745 (217, 253),
2746 (218, 254),
2747 (219, 251),
2748 (220, 252),
2749 (221, 173),
2750 (222, 174),
2751 (223, 89),
2752 (224, 68),
2753 (225, 69),
2754 (226, 66),
2755 (227, 70),
2756 (228, 67),
2757 (229, 71),
2758 (230, 156),
2759 (231, 72),
2760 (232, 84),
2761 (233, 81),
2762 (234, 82),
2763 (235, 83),
2764 (236, 88),
2765 (237, 85),
2766 (238, 86),
2767 (239, 87),
2768 (240, 140),
2769 (241, 73),
2770 (242, 205),
2771 (243, 206),
2772 (244, 203),
2773 (245, 207),
2774 (246, 204),
2775 (247, 225),
2776 (248, 112),
2777 (249, 221),
2778 (250, 222),
2779 (251, 219),
2780 (252, 220),
2781 (253, 141),
2782 (254, 142),
2783 (255, 223),
2784];
2785
2786impl_ebcdic_encoder_and_decoder!(
2787 IBM290,
2788 "IBM290",
2789 IBM290Encoder,
2790 IBM290Decoder,
2791 IBM_290_ENCODE_TABLE,
2792 IBM_290_DECODE_TABLE
2793);
2794const IBM_290_DECODE_TABLE: [char; 256] = [
2795 '\u{0}',
2796 '\u{1}',
2797 '\u{2}',
2798 '\u{3}',
2799 '\u{9c}',
2800 '\u{9}',
2801 '\u{86}',
2802 '\u{7f}',
2803 '\u{97}',
2804 '\u{8d}',
2805 '\u{8e}',
2806 '\u{b}',
2807 '\u{c}',
2808 '\u{d}',
2809 '\u{e}',
2810 '\u{f}',
2811 '\u{10}',
2812 '\u{11}',
2813 '\u{12}',
2814 '\u{13}',
2815 '\u{9d}',
2816 '\u{85}',
2817 '\u{8}',
2818 '\u{87}',
2819 '\u{18}',
2820 '\u{19}',
2821 '\u{92}',
2822 '\u{8f}',
2823 '\u{1c}',
2824 '\u{1d}',
2825 '\u{1e}',
2826 '\u{1f}',
2827 '\u{80}',
2828 '\u{81}',
2829 '\u{82}',
2830 '\u{83}',
2831 '\u{84}',
2832 '\u{a}',
2833 '\u{17}',
2834 '\u{1b}',
2835 '\u{88}',
2836 '\u{89}',
2837 '\u{8a}',
2838 '\u{8b}',
2839 '\u{8c}',
2840 '\u{5}',
2841 '\u{6}',
2842 '\u{7}',
2843 '\u{90}',
2844 '\u{91}',
2845 '\u{16}',
2846 '\u{93}',
2847 '\u{94}',
2848 '\u{95}',
2849 '\u{96}',
2850 '\u{4}',
2851 '\u{98}',
2852 '\u{99}',
2853 '\u{9a}',
2854 '\u{9b}',
2855 '\u{14}',
2856 '\u{15}',
2857 '\u{9e}',
2858 '\u{1a}',
2859 '\u{20}',
2860 '\u{ff61}',
2861 '\u{ff62}',
2862 '\u{ff63}',
2863 '\u{ff64}',
2864 '\u{ff65}',
2865 '\u{ff66}',
2866 '\u{ff67}',
2867 '\u{ff68}',
2868 '\u{ff69}',
2869 '\u{a3}',
2870 '\u{2e}',
2871 '\u{3c}',
2872 '\u{28}',
2873 '\u{2b}',
2874 '\u{7c}',
2875 '\u{26}',
2876 '\u{ff6a}',
2877 '\u{ff6b}',
2878 '\u{ff6c}',
2879 '\u{ff6d}',
2880 '\u{ff6e}',
2881 '\u{ff6f}',
2882 char::REPLACEMENT_CHARACTER,
2883 '\u{ff70}',
2884 char::REPLACEMENT_CHARACTER,
2885 '\u{21}',
2886 '\u{a5}',
2887 '\u{2a}',
2888 '\u{29}',
2889 '\u{3b}',
2890 '\u{ac}',
2891 '\u{2d}',
2892 '\u{2f}',
2893 '\u{61}',
2894 '\u{62}',
2895 '\u{63}',
2896 '\u{64}',
2897 '\u{65}',
2898 '\u{66}',
2899 '\u{67}',
2900 '\u{68}',
2901 char::REPLACEMENT_CHARACTER,
2902 '\u{2c}',
2903 '\u{25}',
2904 '\u{5f}',
2905 '\u{3e}',
2906 '\u{3f}',
2907 '\u{5b}',
2908 '\u{69}',
2909 '\u{6a}',
2910 '\u{6b}',
2911 '\u{6c}',
2912 '\u{6d}',
2913 '\u{6e}',
2914 '\u{6f}',
2915 '\u{70}',
2916 '\u{60}',
2917 '\u{3a}',
2918 '\u{23}',
2919 '\u{40}',
2920 '\u{27}',
2921 '\u{3d}',
2922 '\u{22}',
2923 '\u{5d}',
2924 '\u{ff71}',
2925 '\u{ff72}',
2926 '\u{ff73}',
2927 '\u{ff74}',
2928 '\u{ff75}',
2929 '\u{ff76}',
2930 '\u{ff77}',
2931 '\u{ff78}',
2932 '\u{ff79}',
2933 '\u{ff7a}',
2934 '\u{71}',
2935 '\u{ff7b}',
2936 '\u{ff7c}',
2937 '\u{ff7d}',
2938 '\u{ff7e}',
2939 '\u{ff7f}',
2940 '\u{ff80}',
2941 '\u{ff81}',
2942 '\u{ff82}',
2943 '\u{ff83}',
2944 '\u{ff84}',
2945 '\u{ff85}',
2946 '\u{ff86}',
2947 '\u{ff87}',
2948 '\u{ff88}',
2949 '\u{ff89}',
2950 '\u{72}',
2951 char::REPLACEMENT_CHARACTER,
2952 '\u{ff8a}',
2953 '\u{ff8b}',
2954 '\u{ff8c}',
2955 '\u{7e}',
2956 '\u{203e}',
2957 '\u{ff8d}',
2958 '\u{ff8e}',
2959 '\u{ff8f}',
2960 '\u{ff90}',
2961 '\u{ff91}',
2962 '\u{ff92}',
2963 '\u{ff93}',
2964 '\u{ff94}',
2965 '\u{ff95}',
2966 '\u{73}',
2967 '\u{ff96}',
2968 '\u{ff97}',
2969 '\u{ff98}',
2970 '\u{ff99}',
2971 '\u{5e}',
2972 '\u{a2}',
2973 '\u{5c}',
2974 '\u{74}',
2975 '\u{75}',
2976 '\u{76}',
2977 '\u{77}',
2978 '\u{78}',
2979 '\u{79}',
2980 '\u{7a}',
2981 '\u{ff9a}',
2982 '\u{ff9b}',
2983 '\u{ff9c}',
2984 '\u{ff9d}',
2985 '\u{ff9e}',
2986 '\u{ff9f}',
2987 '\u{7b}',
2988 '\u{41}',
2989 '\u{42}',
2990 '\u{43}',
2991 '\u{44}',
2992 '\u{45}',
2993 '\u{46}',
2994 '\u{47}',
2995 '\u{48}',
2996 '\u{49}',
2997 char::REPLACEMENT_CHARACTER,
2998 char::REPLACEMENT_CHARACTER,
2999 char::REPLACEMENT_CHARACTER,
3000 char::REPLACEMENT_CHARACTER,
3001 char::REPLACEMENT_CHARACTER,
3002 char::REPLACEMENT_CHARACTER,
3003 '\u{7d}',
3004 '\u{4a}',
3005 '\u{4b}',
3006 '\u{4c}',
3007 '\u{4d}',
3008 '\u{4e}',
3009 '\u{4f}',
3010 '\u{50}',
3011 '\u{51}',
3012 '\u{52}',
3013 char::REPLACEMENT_CHARACTER,
3014 char::REPLACEMENT_CHARACTER,
3015 char::REPLACEMENT_CHARACTER,
3016 char::REPLACEMENT_CHARACTER,
3017 char::REPLACEMENT_CHARACTER,
3018 char::REPLACEMENT_CHARACTER,
3019 '\u{24}',
3020 char::REPLACEMENT_CHARACTER,
3021 '\u{53}',
3022 '\u{54}',
3023 '\u{55}',
3024 '\u{56}',
3025 '\u{57}',
3026 '\u{58}',
3027 '\u{59}',
3028 '\u{5a}',
3029 char::REPLACEMENT_CHARACTER,
3030 char::REPLACEMENT_CHARACTER,
3031 char::REPLACEMENT_CHARACTER,
3032 char::REPLACEMENT_CHARACTER,
3033 char::REPLACEMENT_CHARACTER,
3034 char::REPLACEMENT_CHARACTER,
3035 '\u{30}',
3036 '\u{31}',
3037 '\u{32}',
3038 '\u{33}',
3039 '\u{34}',
3040 '\u{35}',
3041 '\u{36}',
3042 '\u{37}',
3043 '\u{38}',
3044 '\u{39}',
3045 char::REPLACEMENT_CHARACTER,
3046 char::REPLACEMENT_CHARACTER,
3047 char::REPLACEMENT_CHARACTER,
3048 char::REPLACEMENT_CHARACTER,
3049 char::REPLACEMENT_CHARACTER,
3050 '\u{9f}',
3051];
3052const IBM_290_ENCODE_TABLE: &[(u16, u8)] = &[
3053 (0, 0),
3054 (1, 1),
3055 (2, 2),
3056 (3, 3),
3057 (4, 55),
3058 (5, 45),
3059 (6, 46),
3060 (7, 47),
3061 (8, 22),
3062 (9, 5),
3063 (10, 37),
3064 (11, 11),
3065 (12, 12),
3066 (13, 13),
3067 (14, 14),
3068 (15, 15),
3069 (16, 16),
3070 (17, 17),
3071 (18, 18),
3072 (19, 19),
3073 (20, 60),
3074 (21, 61),
3075 (22, 50),
3076 (23, 38),
3077 (24, 24),
3078 (25, 25),
3079 (26, 63),
3080 (27, 39),
3081 (28, 28),
3082 (29, 29),
3083 (30, 30),
3084 (31, 31),
3085 (32, 64),
3086 (33, 90),
3087 (34, 127),
3088 (35, 123),
3089 (36, 224),
3090 (37, 108),
3091 (38, 80),
3092 (39, 125),
3093 (40, 77),
3094 (41, 93),
3095 (42, 92),
3096 (43, 78),
3097 (44, 107),
3098 (45, 96),
3099 (46, 75),
3100 (47, 97),
3101 (48, 240),
3102 (49, 241),
3103 (50, 242),
3104 (51, 243),
3105 (52, 244),
3106 (53, 245),
3107 (54, 246),
3108 (55, 247),
3109 (56, 248),
3110 (57, 249),
3111 (58, 122),
3112 (59, 94),
3113 (60, 76),
3114 (61, 126),
3115 (62, 110),
3116 (63, 111),
3117 (64, 124),
3118 (65, 193),
3119 (66, 194),
3120 (67, 195),
3121 (68, 196),
3122 (69, 197),
3123 (70, 198),
3124 (71, 199),
3125 (72, 200),
3126 (73, 201),
3127 (74, 209),
3128 (75, 210),
3129 (76, 211),
3130 (77, 212),
3131 (78, 213),
3132 (79, 214),
3133 (80, 215),
3134 (81, 216),
3135 (82, 217),
3136 (83, 226),
3137 (84, 227),
3138 (85, 228),
3139 (86, 229),
3140 (87, 230),
3141 (88, 231),
3142 (89, 232),
3143 (90, 233),
3144 (91, 112),
3145 (92, 178),
3146 (93, 128),
3147 (94, 176),
3148 (95, 109),
3149 (96, 121),
3150 (97, 98),
3151 (98, 99),
3152 (99, 100),
3153 (100, 101),
3154 (101, 102),
3155 (102, 103),
3156 (103, 104),
3157 (104, 105),
3158 (105, 113),
3159 (106, 114),
3160 (107, 115),
3161 (108, 116),
3162 (109, 117),
3163 (110, 118),
3164 (111, 119),
3165 (112, 120),
3166 (113, 139),
3167 (114, 155),
3168 (115, 171),
3169 (116, 179),
3170 (117, 180),
3171 (118, 181),
3172 (119, 182),
3173 (120, 183),
3174 (121, 184),
3175 (122, 185),
3176 (123, 192),
3177 (124, 79),
3178 (125, 208),
3179 (126, 160),
3180 (127, 7),
3181 (128, 32),
3182 (129, 33),
3183 (130, 34),
3184 (131, 35),
3185 (132, 36),
3186 (133, 21),
3187 (134, 6),
3188 (135, 23),
3189 (136, 40),
3190 (137, 41),
3191 (138, 42),
3192 (139, 43),
3193 (140, 44),
3194 (141, 9),
3195 (142, 10),
3196 (143, 27),
3197 (144, 48),
3198 (145, 49),
3199 (146, 26),
3200 (147, 51),
3201 (148, 52),
3202 (149, 53),
3203 (150, 54),
3204 (151, 8),
3205 (152, 56),
3206 (153, 57),
3207 (154, 58),
3208 (155, 59),
3209 (156, 4),
3210 (157, 20),
3211 (158, 62),
3212 (159, 255),
3213 (162, 177),
3214 (163, 74),
3215 (165, 91),
3216 (172, 95),
3217 (8254, 161),
3218 (65377, 65),
3219 (65378, 66),
3220 (65379, 67),
3221 (65380, 68),
3222 (65381, 69),
3223 (65382, 70),
3224 (65383, 71),
3225 (65384, 72),
3226 (65385, 73),
3227 (65386, 81),
3228 (65387, 82),
3229 (65388, 83),
3230 (65389, 84),
3231 (65390, 85),
3232 (65391, 86),
3233 (65392, 88),
3234 (65393, 129),
3235 (65394, 130),
3236 (65395, 131),
3237 (65396, 132),
3238 (65397, 133),
3239 (65398, 134),
3240 (65399, 135),
3241 (65400, 136),
3242 (65401, 137),
3243 (65402, 138),
3244 (65403, 140),
3245 (65404, 141),
3246 (65405, 142),
3247 (65406, 143),
3248 (65407, 144),
3249 (65408, 145),
3250 (65409, 146),
3251 (65410, 147),
3252 (65411, 148),
3253 (65412, 149),
3254 (65413, 150),
3255 (65414, 151),
3256 (65415, 152),
3257 (65416, 153),
3258 (65417, 154),
3259 (65418, 157),
3260 (65419, 158),
3261 (65420, 159),
3262 (65421, 162),
3263 (65422, 163),
3264 (65423, 164),
3265 (65424, 165),
3266 (65425, 166),
3267 (65426, 167),
3268 (65427, 168),
3269 (65428, 169),
3270 (65429, 170),
3271 (65430, 172),
3272 (65431, 173),
3273 (65432, 174),
3274 (65433, 175),
3275 (65434, 186),
3276 (65435, 187),
3277 (65436, 188),
3278 (65437, 189),
3279 (65438, 190),
3280 (65439, 191),
3281];
3282
3283impl_ebcdic_encoder_and_decoder!(
3284 IBM297,
3285 "IBM297",
3286 IBM297Encoder,
3287 IBM297Decoder,
3288 IBM_297_ENCODE_TABLE,
3289 IBM_297_DECODE_TABLE
3290);
3291const IBM_297_DECODE_TABLE: [char; 256] = [
3292 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
3293 '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
3294 '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
3295 '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
3296 '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
3297 '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
3298 '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
3299 '\u{a0}', '\u{e2}', '\u{e4}', '\u{40}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{5c}', '\u{f1}',
3300 '\u{b0}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{7b}', '\u{ea}',
3301 '\u{eb}', '\u{7d}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{a7}', '\u{24}',
3302 '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
3303 '\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{d1}', '\u{f9}', '\u{2c}', '\u{25}', '\u{5f}',
3304 '\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
3305 '\u{cf}', '\u{cc}', '\u{b5}', '\u{3a}', '\u{a3}', '\u{e0}', '\u{27}', '\u{3d}', '\u{22}',
3306 '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
3307 '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{5b}', '\u{6a}',
3308 '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
3309 '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{60}', '\u{a8}', '\u{73}', '\u{74}',
3310 '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
3311 '\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{23}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{5d}',
3312 '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{7e}', '\u{b4}',
3313 '\u{d7}', '\u{e9}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
3314 '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{e8}',
3315 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
3316 '\u{b9}', '\u{fb}', '\u{fc}', '\u{a6}', '\u{fa}', '\u{ff}', '\u{e7}', '\u{f7}', '\u{53}',
3317 '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
3318 '\u{d6}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
3319 '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
3320 '\u{da}', '\u{9f}',
3321];
3322const IBM_297_ENCODE_TABLE: &[(u16, u8)] = &[
3323 (0, 0),
3324 (1, 1),
3325 (2, 2),
3326 (3, 3),
3327 (4, 55),
3328 (5, 45),
3329 (6, 46),
3330 (7, 47),
3331 (8, 22),
3332 (9, 5),
3333 (10, 37),
3334 (11, 11),
3335 (12, 12),
3336 (13, 13),
3337 (14, 14),
3338 (15, 15),
3339 (16, 16),
3340 (17, 17),
3341 (18, 18),
3342 (19, 19),
3343 (20, 60),
3344 (21, 61),
3345 (22, 50),
3346 (23, 38),
3347 (24, 24),
3348 (25, 25),
3349 (26, 63),
3350 (27, 39),
3351 (28, 28),
3352 (29, 29),
3353 (30, 30),
3354 (31, 31),
3355 (32, 64),
3356 (33, 79),
3357 (34, 127),
3358 (35, 177),
3359 (36, 91),
3360 (37, 108),
3361 (38, 80),
3362 (39, 125),
3363 (40, 77),
3364 (41, 93),
3365 (42, 92),
3366 (43, 78),
3367 (44, 107),
3368 (45, 96),
3369 (46, 75),
3370 (47, 97),
3371 (48, 240),
3372 (49, 241),
3373 (50, 242),
3374 (51, 243),
3375 (52, 244),
3376 (53, 245),
3377 (54, 246),
3378 (55, 247),
3379 (56, 248),
3380 (57, 249),
3381 (58, 122),
3382 (59, 94),
3383 (60, 76),
3384 (61, 126),
3385 (62, 110),
3386 (63, 111),
3387 (64, 68),
3388 (65, 193),
3389 (66, 194),
3390 (67, 195),
3391 (68, 196),
3392 (69, 197),
3393 (70, 198),
3394 (71, 199),
3395 (72, 200),
3396 (73, 201),
3397 (74, 209),
3398 (75, 210),
3399 (76, 211),
3400 (77, 212),
3401 (78, 213),
3402 (79, 214),
3403 (80, 215),
3404 (81, 216),
3405 (82, 217),
3406 (83, 226),
3407 (84, 227),
3408 (85, 228),
3409 (86, 229),
3410 (87, 230),
3411 (88, 231),
3412 (89, 232),
3413 (90, 233),
3414 (91, 144),
3415 (92, 72),
3416 (93, 181),
3417 (94, 95),
3418 (95, 109),
3419 (96, 160),
3420 (97, 129),
3421 (98, 130),
3422 (99, 131),
3423 (100, 132),
3424 (101, 133),
3425 (102, 134),
3426 (103, 135),
3427 (104, 136),
3428 (105, 137),
3429 (106, 145),
3430 (107, 146),
3431 (108, 147),
3432 (109, 148),
3433 (110, 149),
3434 (111, 150),
3435 (112, 151),
3436 (113, 152),
3437 (114, 153),
3438 (115, 162),
3439 (116, 163),
3440 (117, 164),
3441 (118, 165),
3442 (119, 166),
3443 (120, 167),
3444 (121, 168),
3445 (122, 169),
3446 (123, 81),
3447 (124, 187),
3448 (125, 84),
3449 (126, 189),
3450 (127, 7),
3451 (128, 32),
3452 (129, 33),
3453 (130, 34),
3454 (131, 35),
3455 (132, 36),
3456 (133, 21),
3457 (134, 6),
3458 (135, 23),
3459 (136, 40),
3460 (137, 41),
3461 (138, 42),
3462 (139, 43),
3463 (140, 44),
3464 (141, 9),
3465 (142, 10),
3466 (143, 27),
3467 (144, 48),
3468 (145, 49),
3469 (146, 26),
3470 (147, 51),
3471 (148, 52),
3472 (149, 53),
3473 (150, 54),
3474 (151, 8),
3475 (152, 56),
3476 (153, 57),
3477 (154, 58),
3478 (155, 59),
3479 (156, 4),
3480 (157, 20),
3481 (158, 62),
3482 (159, 255),
3483 (160, 65),
3484 (161, 170),
3485 (162, 176),
3486 (163, 123),
3487 (164, 159),
3488 (165, 178),
3489 (166, 221),
3490 (167, 90),
3491 (168, 161),
3492 (169, 180),
3493 (170, 154),
3494 (171, 138),
3495 (172, 186),
3496 (173, 202),
3497 (174, 175),
3498 (175, 188),
3499 (176, 74),
3500 (177, 143),
3501 (178, 234),
3502 (179, 250),
3503 (180, 190),
3504 (181, 121),
3505 (182, 182),
3506 (183, 179),
3507 (184, 157),
3508 (185, 218),
3509 (186, 155),
3510 (187, 139),
3511 (188, 183),
3512 (189, 184),
3513 (190, 185),
3514 (191, 171),
3515 (192, 100),
3516 (193, 101),
3517 (194, 98),
3518 (195, 102),
3519 (196, 99),
3520 (197, 103),
3521 (198, 158),
3522 (199, 104),
3523 (200, 116),
3524 (201, 113),
3525 (202, 114),
3526 (203, 115),
3527 (204, 120),
3528 (205, 117),
3529 (206, 118),
3530 (207, 119),
3531 (208, 172),
3532 (209, 105),
3533 (210, 237),
3534 (211, 238),
3535 (212, 235),
3536 (213, 239),
3537 (214, 236),
3538 (215, 191),
3539 (216, 128),
3540 (217, 253),
3541 (218, 254),
3542 (219, 251),
3543 (220, 252),
3544 (221, 173),
3545 (222, 174),
3546 (223, 89),
3547 (224, 124),
3548 (225, 69),
3549 (226, 66),
3550 (227, 70),
3551 (228, 67),
3552 (229, 71),
3553 (230, 156),
3554 (231, 224),
3555 (232, 208),
3556 (233, 192),
3557 (234, 82),
3558 (235, 83),
3559 (236, 88),
3560 (237, 85),
3561 (238, 86),
3562 (239, 87),
3563 (240, 140),
3564 (241, 73),
3565 (242, 205),
3566 (243, 206),
3567 (244, 203),
3568 (245, 207),
3569 (246, 204),
3570 (247, 225),
3571 (248, 112),
3572 (249, 106),
3573 (250, 222),
3574 (251, 219),
3575 (252, 220),
3576 (253, 141),
3577 (254, 142),
3578 (255, 223),
3579];
3580
3581impl_ebcdic_encoder_and_decoder!(
3582 IBM420,
3583 "IBM420",
3584 IBM420Encoder,
3585 IBM420Decoder,
3586 IBM_420_ENCODE_TABLE,
3587 IBM_420_DECODE_TABLE
3588);
3589const IBM_420_DECODE_TABLE: [char; 256] = [
3590 '\u{0}',
3591 '\u{1}',
3592 '\u{2}',
3593 '\u{3}',
3594 '\u{9c}',
3595 '\u{9}',
3596 '\u{86}',
3597 '\u{7f}',
3598 '\u{97}',
3599 '\u{8d}',
3600 '\u{8e}',
3601 '\u{b}',
3602 '\u{c}',
3603 '\u{d}',
3604 '\u{e}',
3605 '\u{f}',
3606 '\u{10}',
3607 '\u{11}',
3608 '\u{12}',
3609 '\u{13}',
3610 '\u{9d}',
3611 '\u{85}',
3612 '\u{8}',
3613 '\u{87}',
3614 '\u{18}',
3615 '\u{19}',
3616 '\u{92}',
3617 '\u{8f}',
3618 '\u{1c}',
3619 '\u{1d}',
3620 '\u{1e}',
3621 '\u{1f}',
3622 '\u{80}',
3623 '\u{81}',
3624 '\u{82}',
3625 '\u{83}',
3626 '\u{84}',
3627 '\u{a}',
3628 '\u{17}',
3629 '\u{1b}',
3630 '\u{88}',
3631 '\u{89}',
3632 '\u{8a}',
3633 '\u{8b}',
3634 '\u{8c}',
3635 '\u{5}',
3636 '\u{6}',
3637 '\u{7}',
3638 '\u{90}',
3639 '\u{91}',
3640 '\u{16}',
3641 '\u{93}',
3642 '\u{94}',
3643 '\u{95}',
3644 '\u{96}',
3645 '\u{4}',
3646 '\u{98}',
3647 '\u{99}',
3648 '\u{9a}',
3649 '\u{9b}',
3650 '\u{14}',
3651 '\u{15}',
3652 '\u{9e}',
3653 '\u{1a}',
3654 '\u{20}',
3655 '\u{a0}',
3656 '\u{651}',
3657 '\u{fe7d}',
3658 '\u{640}',
3659 '\u{200b}',
3660 '\u{621}',
3661 '\u{622}',
3662 '\u{fe82}',
3663 '\u{623}',
3664 '\u{a2}',
3665 '\u{2e}',
3666 '\u{3c}',
3667 '\u{28}',
3668 '\u{2b}',
3669 '\u{7c}',
3670 '\u{26}',
3671 '\u{fe84}',
3672 '\u{624}',
3673 char::REPLACEMENT_CHARACTER,
3674 char::REPLACEMENT_CHARACTER,
3675 '\u{626}',
3676 '\u{627}',
3677 '\u{fe8e}',
3678 '\u{628}',
3679 '\u{fe91}',
3680 '\u{21}',
3681 '\u{24}',
3682 '\u{2a}',
3683 '\u{29}',
3684 '\u{3b}',
3685 '\u{ac}',
3686 '\u{2d}',
3687 '\u{2f}',
3688 '\u{629}',
3689 '\u{62a}',
3690 '\u{fe97}',
3691 '\u{62b}',
3692 '\u{fe9b}',
3693 '\u{62c}',
3694 '\u{fe9f}',
3695 '\u{62d}',
3696 '\u{a6}',
3697 '\u{2c}',
3698 '\u{25}',
3699 '\u{5f}',
3700 '\u{3e}',
3701 '\u{3f}',
3702 '\u{fea3}',
3703 '\u{62e}',
3704 '\u{fea7}',
3705 '\u{62f}',
3706 '\u{630}',
3707 '\u{631}',
3708 '\u{632}',
3709 '\u{633}',
3710 '\u{feb3}',
3711 '\u{60c}',
3712 '\u{3a}',
3713 '\u{23}',
3714 '\u{40}',
3715 '\u{27}',
3716 '\u{3d}',
3717 '\u{22}',
3718 '\u{634}',
3719 '\u{61}',
3720 '\u{62}',
3721 '\u{63}',
3722 '\u{64}',
3723 '\u{65}',
3724 '\u{66}',
3725 '\u{67}',
3726 '\u{68}',
3727 '\u{69}',
3728 '\u{feb7}',
3729 '\u{635}',
3730 '\u{febb}',
3731 '\u{636}',
3732 '\u{febf}',
3733 '\u{637}',
3734 '\u{638}',
3735 '\u{6a}',
3736 '\u{6b}',
3737 '\u{6c}',
3738 '\u{6d}',
3739 '\u{6e}',
3740 '\u{6f}',
3741 '\u{70}',
3742 '\u{71}',
3743 '\u{72}',
3744 '\u{639}',
3745 '\u{feca}',
3746 '\u{fecb}',
3747 '\u{fecc}',
3748 '\u{63a}',
3749 '\u{fece}',
3750 '\u{fecf}',
3751 '\u{f7}',
3752 '\u{73}',
3753 '\u{74}',
3754 '\u{75}',
3755 '\u{76}',
3756 '\u{77}',
3757 '\u{78}',
3758 '\u{79}',
3759 '\u{7a}',
3760 '\u{fed0}',
3761 '\u{641}',
3762 '\u{fed3}',
3763 '\u{642}',
3764 '\u{fed7}',
3765 '\u{643}',
3766 '\u{fedb}',
3767 '\u{644}',
3768 '\u{fef5}',
3769 '\u{fef6}',
3770 '\u{fef7}',
3771 '\u{fef8}',
3772 char::REPLACEMENT_CHARACTER,
3773 char::REPLACEMENT_CHARACTER,
3774 '\u{fefb}',
3775 '\u{fefc}',
3776 '\u{fedf}',
3777 '\u{645}',
3778 '\u{fee3}',
3779 '\u{646}',
3780 '\u{fee7}',
3781 '\u{647}',
3782 '\u{61b}',
3783 '\u{41}',
3784 '\u{42}',
3785 '\u{43}',
3786 '\u{44}',
3787 '\u{45}',
3788 '\u{46}',
3789 '\u{47}',
3790 '\u{48}',
3791 '\u{49}',
3792 '\u{ad}',
3793 '\u{feeb}',
3794 char::REPLACEMENT_CHARACTER,
3795 '\u{feec}',
3796 char::REPLACEMENT_CHARACTER,
3797 '\u{648}',
3798 '\u{61f}',
3799 '\u{4a}',
3800 '\u{4b}',
3801 '\u{4c}',
3802 '\u{4d}',
3803 '\u{4e}',
3804 '\u{4f}',
3805 '\u{50}',
3806 '\u{51}',
3807 '\u{52}',
3808 '\u{649}',
3809 '\u{fef0}',
3810 '\u{64a}',
3811 '\u{fef2}',
3812 '\u{fef3}',
3813 '\u{660}',
3814 '\u{d7}',
3815 char::REPLACEMENT_CHARACTER,
3816 '\u{53}',
3817 '\u{54}',
3818 '\u{55}',
3819 '\u{56}',
3820 '\u{57}',
3821 '\u{58}',
3822 '\u{59}',
3823 '\u{5a}',
3824 '\u{661}',
3825 '\u{662}',
3826 char::REPLACEMENT_CHARACTER,
3827 '\u{663}',
3828 '\u{664}',
3829 '\u{665}',
3830 '\u{30}',
3831 '\u{31}',
3832 '\u{32}',
3833 '\u{33}',
3834 '\u{34}',
3835 '\u{35}',
3836 '\u{36}',
3837 '\u{37}',
3838 '\u{38}',
3839 '\u{39}',
3840 char::REPLACEMENT_CHARACTER,
3841 '\u{666}',
3842 '\u{667}',
3843 '\u{668}',
3844 '\u{669}',
3845 '\u{9f}',
3846];
3847const IBM_420_ENCODE_TABLE: &[(u16, u8)] = &[
3848 (0, 0),
3849 (1, 1),
3850 (2, 2),
3851 (3, 3),
3852 (4, 55),
3853 (5, 45),
3854 (6, 46),
3855 (7, 47),
3856 (8, 22),
3857 (9, 5),
3858 (10, 37),
3859 (11, 11),
3860 (12, 12),
3861 (13, 13),
3862 (14, 14),
3863 (15, 15),
3864 (16, 16),
3865 (17, 17),
3866 (18, 18),
3867 (19, 19),
3868 (20, 60),
3869 (21, 61),
3870 (22, 50),
3871 (23, 38),
3872 (24, 24),
3873 (25, 25),
3874 (26, 63),
3875 (27, 39),
3876 (28, 28),
3877 (29, 29),
3878 (30, 30),
3879 (31, 31),
3880 (32, 64),
3881 (33, 90),
3882 (34, 127),
3883 (35, 123),
3884 (36, 91),
3885 (37, 108),
3886 (38, 80),
3887 (39, 125),
3888 (40, 77),
3889 (41, 93),
3890 (42, 92),
3891 (43, 78),
3892 (44, 107),
3893 (45, 96),
3894 (46, 75),
3895 (47, 97),
3896 (48, 240),
3897 (49, 241),
3898 (50, 242),
3899 (51, 243),
3900 (52, 244),
3901 (53, 245),
3902 (54, 246),
3903 (55, 247),
3904 (56, 248),
3905 (57, 249),
3906 (58, 122),
3907 (59, 94),
3908 (60, 76),
3909 (61, 126),
3910 (62, 110),
3911 (63, 111),
3912 (64, 124),
3913 (65, 193),
3914 (66, 194),
3915 (67, 195),
3916 (68, 196),
3917 (69, 197),
3918 (70, 198),
3919 (71, 199),
3920 (72, 200),
3921 (73, 201),
3922 (74, 209),
3923 (75, 210),
3924 (76, 211),
3925 (77, 212),
3926 (78, 213),
3927 (79, 214),
3928 (80, 215),
3929 (81, 216),
3930 (82, 217),
3931 (83, 226),
3932 (84, 227),
3933 (85, 228),
3934 (86, 229),
3935 (87, 230),
3936 (88, 231),
3937 (89, 232),
3938 (90, 233),
3939 (95, 109),
3940 (97, 129),
3941 (98, 130),
3942 (99, 131),
3943 (100, 132),
3944 (101, 133),
3945 (102, 134),
3946 (103, 135),
3947 (104, 136),
3948 (105, 137),
3949 (106, 145),
3950 (107, 146),
3951 (108, 147),
3952 (109, 148),
3953 (110, 149),
3954 (111, 150),
3955 (112, 151),
3956 (113, 152),
3957 (114, 153),
3958 (115, 162),
3959 (116, 163),
3960 (117, 164),
3961 (118, 165),
3962 (119, 166),
3963 (120, 167),
3964 (121, 168),
3965 (122, 169),
3966 (124, 79),
3967 (127, 7),
3968 (128, 32),
3969 (129, 33),
3970 (130, 34),
3971 (131, 35),
3972 (132, 36),
3973 (133, 21),
3974 (134, 6),
3975 (135, 23),
3976 (136, 40),
3977 (137, 41),
3978 (138, 42),
3979 (139, 43),
3980 (140, 44),
3981 (141, 9),
3982 (142, 10),
3983 (143, 27),
3984 (144, 48),
3985 (145, 49),
3986 (146, 26),
3987 (147, 51),
3988 (148, 52),
3989 (149, 53),
3990 (150, 54),
3991 (151, 8),
3992 (152, 56),
3993 (153, 57),
3994 (154, 58),
3995 (155, 59),
3996 (156, 4),
3997 (157, 20),
3998 (158, 62),
3999 (159, 255),
4000 (160, 65),
4001 (162, 74),
4002 (166, 106),
4003 (172, 95),
4004 (173, 202),
4005 (215, 224),
4006 (247, 161),
4007 (1548, 121),
4008 (1563, 192),
4009 (1567, 208),
4010 (1569, 70),
4011 (1570, 71),
4012 (1571, 73),
4013 (1572, 82),
4014 (1574, 85),
4015 (1575, 86),
4016 (1576, 88),
4017 (1577, 98),
4018 (1578, 99),
4019 (1579, 101),
4020 (1580, 103),
4021 (1581, 105),
4022 (1582, 113),
4023 (1583, 115),
4024 (1584, 116),
4025 (1585, 117),
4026 (1586, 118),
4027 (1587, 119),
4028 (1588, 128),
4029 (1589, 139),
4030 (1590, 141),
4031 (1591, 143),
4032 (1592, 144),
4033 (1593, 154),
4034 (1594, 158),
4035 (1600, 68),
4036 (1601, 171),
4037 (1602, 173),
4038 (1603, 175),
4039 (1604, 177),
4040 (1605, 187),
4041 (1606, 189),
4042 (1607, 191),
4043 (1608, 207),
4044 (1609, 218),
4045 (1610, 220),
4046 (1617, 66),
4047 (1632, 223),
4048 (1633, 234),
4049 (1634, 235),
4050 (1635, 237),
4051 (1636, 238),
4052 (1637, 239),
4053 (1638, 251),
4054 (1639, 252),
4055 (1640, 253),
4056 (1641, 254),
4057 (8203, 69),
4058 (65149, 67),
4059 (65154, 72),
4060 (65156, 81),
4061 (65166, 87),
4062 (65169, 89),
4063 (65175, 100),
4064 (65179, 102),
4065 (65183, 104),
4066 (65187, 112),
4067 (65191, 114),
4068 (65203, 120),
4069 (65207, 138),
4070 (65211, 140),
4071 (65215, 142),
4072 (65226, 155),
4073 (65227, 156),
4074 (65228, 157),
4075 (65230, 159),
4076 (65231, 160),
4077 (65232, 170),
4078 (65235, 172),
4079 (65239, 174),
4080 (65243, 176),
4081 (65247, 186),
4082 (65251, 188),
4083 (65255, 190),
4084 (65259, 203),
4085 (65260, 205),
4086 (65264, 219),
4087 (65266, 221),
4088 (65267, 222),
4089 (65269, 178),
4090 (65270, 179),
4091 (65271, 180),
4092 (65272, 181),
4093 (65275, 184),
4094 (65276, 185),
4095];
4096
4097impl_ebcdic_encoder_and_decoder!(
4098 IBM423,
4099 "IBM423",
4100 IBM423Encoder,
4101 IBM423Decoder,
4102 IBM_423_ENCODE_TABLE,
4103 IBM_423_DECODE_TABLE
4104);
4105const IBM_423_DECODE_TABLE: [char; 256] = [
4106 '\u{0}',
4107 '\u{1}',
4108 '\u{2}',
4109 '\u{3}',
4110 '\u{9c}',
4111 '\u{9}',
4112 '\u{86}',
4113 '\u{7f}',
4114 '\u{97}',
4115 '\u{8d}',
4116 '\u{8e}',
4117 '\u{b}',
4118 '\u{c}',
4119 '\u{d}',
4120 '\u{e}',
4121 '\u{f}',
4122 '\u{10}',
4123 '\u{11}',
4124 '\u{12}',
4125 '\u{13}',
4126 '\u{9d}',
4127 '\u{85}',
4128 '\u{8}',
4129 '\u{87}',
4130 '\u{18}',
4131 '\u{19}',
4132 '\u{92}',
4133 '\u{8f}',
4134 '\u{1c}',
4135 '\u{1d}',
4136 '\u{1e}',
4137 '\u{1f}',
4138 '\u{80}',
4139 '\u{81}',
4140 '\u{82}',
4141 '\u{83}',
4142 '\u{84}',
4143 '\u{a}',
4144 '\u{17}',
4145 '\u{1b}',
4146 '\u{88}',
4147 '\u{89}',
4148 '\u{8a}',
4149 '\u{8b}',
4150 '\u{8c}',
4151 '\u{5}',
4152 '\u{6}',
4153 '\u{7}',
4154 '\u{90}',
4155 '\u{91}',
4156 '\u{16}',
4157 '\u{93}',
4158 '\u{94}',
4159 '\u{95}',
4160 '\u{96}',
4161 '\u{4}',
4162 '\u{98}',
4163 '\u{99}',
4164 '\u{9a}',
4165 '\u{9b}',
4166 '\u{14}',
4167 '\u{15}',
4168 '\u{9e}',
4169 '\u{1a}',
4170 '\u{20}',
4171 '\u{391}',
4172 '\u{392}',
4173 '\u{393}',
4174 '\u{394}',
4175 '\u{395}',
4176 '\u{396}',
4177 '\u{397}',
4178 '\u{398}',
4179 '\u{399}',
4180 '\u{5b}',
4181 '\u{2e}',
4182 '\u{3c}',
4183 '\u{28}',
4184 '\u{2b}',
4185 '\u{21}',
4186 '\u{26}',
4187 '\u{39a}',
4188 '\u{39b}',
4189 '\u{39c}',
4190 '\u{39d}',
4191 '\u{39e}',
4192 '\u{39f}',
4193 '\u{3a0}',
4194 '\u{3a1}',
4195 '\u{3a3}',
4196 '\u{5d}',
4197 '\u{24}',
4198 '\u{2a}',
4199 '\u{29}',
4200 '\u{3b}',
4201 '\u{5e}',
4202 '\u{2d}',
4203 '\u{2f}',
4204 '\u{3a4}',
4205 '\u{3a5}',
4206 '\u{3a6}',
4207 '\u{3a7}',
4208 '\u{3a8}',
4209 '\u{3a9}',
4210 char::REPLACEMENT_CHARACTER,
4211 char::REPLACEMENT_CHARACTER,
4212 '\u{7c}',
4213 '\u{2c}',
4214 '\u{25}',
4215 '\u{5f}',
4216 '\u{3e}',
4217 '\u{3f}',
4218 char::REPLACEMENT_CHARACTER,
4219 '\u{386}',
4220 '\u{388}',
4221 '\u{389}',
4222 '\u{a0}',
4223 '\u{38a}',
4224 '\u{38c}',
4225 '\u{38e}',
4226 '\u{38f}',
4227 '\u{60}',
4228 '\u{3a}',
4229 '\u{a3}',
4230 '\u{a7}',
4231 '\u{27}',
4232 '\u{3d}',
4233 '\u{22}',
4234 '\u{c4}',
4235 '\u{61}',
4236 '\u{62}',
4237 '\u{63}',
4238 '\u{64}',
4239 '\u{65}',
4240 '\u{66}',
4241 '\u{67}',
4242 '\u{68}',
4243 '\u{69}',
4244 '\u{3b1}',
4245 '\u{3b2}',
4246 '\u{3b3}',
4247 '\u{3b4}',
4248 '\u{3b5}',
4249 '\u{3b6}',
4250 '\u{d6}',
4251 '\u{6a}',
4252 '\u{6b}',
4253 '\u{6c}',
4254 '\u{6d}',
4255 '\u{6e}',
4256 '\u{6f}',
4257 '\u{70}',
4258 '\u{71}',
4259 '\u{72}',
4260 '\u{3b7}',
4261 '\u{3b8}',
4262 '\u{3b9}',
4263 '\u{3ba}',
4264 '\u{3bb}',
4265 '\u{3bc}',
4266 '\u{dc}',
4267 '\u{a8}',
4268 '\u{73}',
4269 '\u{74}',
4270 '\u{75}',
4271 '\u{76}',
4272 '\u{77}',
4273 '\u{78}',
4274 '\u{79}',
4275 '\u{7a}',
4276 '\u{3bd}',
4277 '\u{3be}',
4278 '\u{3bf}',
4279 '\u{3c0}',
4280 '\u{3c1}',
4281 '\u{3c3}',
4282 char::REPLACEMENT_CHARACTER,
4283 '\u{3ac}',
4284 '\u{3ad}',
4285 '\u{3ae}',
4286 '\u{3ca}',
4287 '\u{3af}',
4288 '\u{3cc}',
4289 '\u{3cd}',
4290 '\u{3cb}',
4291 '\u{3ce}',
4292 '\u{3c2}',
4293 '\u{3c4}',
4294 '\u{3c5}',
4295 '\u{3c6}',
4296 '\u{3c7}',
4297 '\u{3c8}',
4298 '\u{b8}',
4299 '\u{41}',
4300 '\u{42}',
4301 '\u{43}',
4302 '\u{44}',
4303 '\u{45}',
4304 '\u{46}',
4305 '\u{47}',
4306 '\u{48}',
4307 '\u{49}',
4308 '\u{ad}',
4309 '\u{3c9}',
4310 '\u{e2}',
4311 '\u{e0}',
4312 '\u{e4}',
4313 '\u{ea}',
4314 '\u{b4}',
4315 '\u{4a}',
4316 '\u{4b}',
4317 '\u{4c}',
4318 '\u{4d}',
4319 '\u{4e}',
4320 '\u{4f}',
4321 '\u{50}',
4322 '\u{51}',
4323 '\u{52}',
4324 '\u{b1}',
4325 '\u{e9}',
4326 '\u{e8}',
4327 '\u{eb}',
4328 '\u{ee}',
4329 '\u{ef}',
4330 '\u{b0}',
4331 char::REPLACEMENT_CHARACTER,
4332 '\u{53}',
4333 '\u{54}',
4334 '\u{55}',
4335 '\u{56}',
4336 '\u{57}',
4337 '\u{58}',
4338 '\u{59}',
4339 '\u{5a}',
4340 '\u{bd}',
4341 '\u{f6}',
4342 '\u{f4}',
4343 '\u{fb}',
4344 '\u{f9}',
4345 '\u{fc}',
4346 '\u{30}',
4347 '\u{31}',
4348 '\u{32}',
4349 '\u{33}',
4350 '\u{34}',
4351 '\u{35}',
4352 '\u{36}',
4353 '\u{37}',
4354 '\u{38}',
4355 '\u{39}',
4356 '\u{ff}',
4357 '\u{e7}',
4358 '\u{c7}',
4359 char::REPLACEMENT_CHARACTER,
4360 char::REPLACEMENT_CHARACTER,
4361 '\u{9f}',
4362];
4363const IBM_423_ENCODE_TABLE: &[(u16, u8)] = &[
4364 (0, 0),
4365 (1, 1),
4366 (2, 2),
4367 (3, 3),
4368 (4, 55),
4369 (5, 45),
4370 (6, 46),
4371 (7, 47),
4372 (8, 22),
4373 (9, 5),
4374 (10, 37),
4375 (11, 11),
4376 (12, 12),
4377 (13, 13),
4378 (14, 14),
4379 (15, 15),
4380 (16, 16),
4381 (17, 17),
4382 (18, 18),
4383 (19, 19),
4384 (20, 60),
4385 (21, 61),
4386 (22, 50),
4387 (23, 38),
4388 (24, 24),
4389 (25, 25),
4390 (26, 63),
4391 (27, 39),
4392 (28, 28),
4393 (29, 29),
4394 (30, 30),
4395 (31, 31),
4396 (32, 64),
4397 (33, 79),
4398 (34, 127),
4399 (36, 91),
4400 (37, 108),
4401 (38, 80),
4402 (39, 125),
4403 (40, 77),
4404 (41, 93),
4405 (42, 92),
4406 (43, 78),
4407 (44, 107),
4408 (45, 96),
4409 (46, 75),
4410 (47, 97),
4411 (48, 240),
4412 (49, 241),
4413 (50, 242),
4414 (51, 243),
4415 (52, 244),
4416 (53, 245),
4417 (54, 246),
4418 (55, 247),
4419 (56, 248),
4420 (57, 249),
4421 (58, 122),
4422 (59, 94),
4423 (60, 76),
4424 (61, 126),
4425 (62, 110),
4426 (63, 111),
4427 (65, 193),
4428 (66, 194),
4429 (67, 195),
4430 (68, 196),
4431 (69, 197),
4432 (70, 198),
4433 (71, 199),
4434 (72, 200),
4435 (73, 201),
4436 (74, 209),
4437 (75, 210),
4438 (76, 211),
4439 (77, 212),
4440 (78, 213),
4441 (79, 214),
4442 (80, 215),
4443 (81, 216),
4444 (82, 217),
4445 (83, 226),
4446 (84, 227),
4447 (85, 228),
4448 (86, 229),
4449 (87, 230),
4450 (88, 231),
4451 (89, 232),
4452 (90, 233),
4453 (91, 74),
4454 (93, 90),
4455 (94, 95),
4456 (95, 109),
4457 (96, 121),
4458 (97, 129),
4459 (98, 130),
4460 (99, 131),
4461 (100, 132),
4462 (101, 133),
4463 (102, 134),
4464 (103, 135),
4465 (104, 136),
4466 (105, 137),
4467 (106, 145),
4468 (107, 146),
4469 (108, 147),
4470 (109, 148),
4471 (110, 149),
4472 (111, 150),
4473 (112, 151),
4474 (113, 152),
4475 (114, 153),
4476 (115, 162),
4477 (116, 163),
4478 (117, 164),
4479 (118, 165),
4480 (119, 166),
4481 (120, 167),
4482 (121, 168),
4483 (122, 169),
4484 (124, 106),
4485 (127, 7),
4486 (128, 32),
4487 (129, 33),
4488 (130, 34),
4489 (131, 35),
4490 (132, 36),
4491 (133, 21),
4492 (134, 6),
4493 (135, 23),
4494 (136, 40),
4495 (137, 41),
4496 (138, 42),
4497 (139, 43),
4498 (140, 44),
4499 (141, 9),
4500 (142, 10),
4501 (143, 27),
4502 (144, 48),
4503 (145, 49),
4504 (146, 26),
4505 (147, 51),
4506 (148, 52),
4507 (149, 53),
4508 (150, 54),
4509 (151, 8),
4510 (152, 56),
4511 (153, 57),
4512 (154, 58),
4513 (155, 59),
4514 (156, 4),
4515 (157, 20),
4516 (158, 62),
4517 (159, 255),
4518 (160, 116),
4519 (163, 123),
4520 (167, 124),
4521 (168, 161),
4522 (173, 202),
4523 (176, 224),
4524 (177, 218),
4525 (180, 208),
4526 (184, 192),
4527 (189, 234),
4528 (196, 128),
4529 (199, 252),
4530 (214, 144),
4531 (220, 160),
4532 (224, 205),
4533 (226, 204),
4534 (228, 206),
4535 (231, 251),
4536 (232, 220),
4537 (233, 219),
4538 (234, 207),
4539 (235, 221),
4540 (238, 222),
4541 (239, 223),
4542 (244, 236),
4543 (246, 235),
4544 (249, 238),
4545 (251, 237),
4546 (252, 239),
4547 (255, 250),
4548 (902, 113),
4549 (904, 114),
4550 (905, 115),
4551 (906, 117),
4552 (908, 118),
4553 (910, 119),
4554 (911, 120),
4555 (913, 65),
4556 (914, 66),
4557 (915, 67),
4558 (916, 68),
4559 (917, 69),
4560 (918, 70),
4561 (919, 71),
4562 (920, 72),
4563 (921, 73),
4564 (922, 81),
4565 (923, 82),
4566 (924, 83),
4567 (925, 84),
4568 (926, 85),
4569 (927, 86),
4570 (928, 87),
4571 (929, 88),
4572 (931, 89),
4573 (932, 98),
4574 (933, 99),
4575 (934, 100),
4576 (935, 101),
4577 (936, 102),
4578 (937, 103),
4579 (940, 177),
4580 (941, 178),
4581 (942, 179),
4582 (943, 181),
4583 (945, 138),
4584 (946, 139),
4585 (947, 140),
4586 (948, 141),
4587 (949, 142),
4588 (950, 143),
4589 (951, 154),
4590 (952, 155),
4591 (953, 156),
4592 (954, 157),
4593 (955, 158),
4594 (956, 159),
4595 (957, 170),
4596 (958, 171),
4597 (959, 172),
4598 (960, 173),
4599 (961, 174),
4600 (962, 186),
4601 (963, 175),
4602 (964, 187),
4603 (965, 188),
4604 (966, 189),
4605 (967, 190),
4606 (968, 191),
4607 (969, 203),
4608 (970, 180),
4609 (971, 184),
4610 (972, 182),
4611 (973, 183),
4612 (974, 185),
4613];
4614
4615impl_ebcdic_encoder_and_decoder!(
4616 IBM424,
4617 "IBM424",
4618 IBM424Encoder,
4619 IBM424Decoder,
4620 IBM_424_ENCODE_TABLE,
4621 IBM_424_DECODE_TABLE
4622);
4623const IBM_424_DECODE_TABLE: [char; 256] = [
4624 '\u{0}',
4625 '\u{1}',
4626 '\u{2}',
4627 '\u{3}',
4628 '\u{9c}',
4629 '\u{9}',
4630 '\u{86}',
4631 '\u{7f}',
4632 '\u{97}',
4633 '\u{8d}',
4634 '\u{8e}',
4635 '\u{b}',
4636 '\u{c}',
4637 '\u{d}',
4638 '\u{e}',
4639 '\u{f}',
4640 '\u{10}',
4641 '\u{11}',
4642 '\u{12}',
4643 '\u{13}',
4644 '\u{9d}',
4645 '\u{85}',
4646 '\u{8}',
4647 '\u{87}',
4648 '\u{18}',
4649 '\u{19}',
4650 '\u{92}',
4651 '\u{8f}',
4652 '\u{1c}',
4653 '\u{1d}',
4654 '\u{1e}',
4655 '\u{1f}',
4656 '\u{80}',
4657 '\u{81}',
4658 '\u{82}',
4659 '\u{83}',
4660 '\u{84}',
4661 '\u{a}',
4662 '\u{17}',
4663 '\u{1b}',
4664 '\u{88}',
4665 '\u{89}',
4666 '\u{8a}',
4667 '\u{8b}',
4668 '\u{8c}',
4669 '\u{5}',
4670 '\u{6}',
4671 '\u{7}',
4672 '\u{90}',
4673 '\u{91}',
4674 '\u{16}',
4675 '\u{93}',
4676 '\u{94}',
4677 '\u{95}',
4678 '\u{96}',
4679 '\u{4}',
4680 '\u{98}',
4681 '\u{99}',
4682 '\u{9a}',
4683 '\u{9b}',
4684 '\u{14}',
4685 '\u{15}',
4686 '\u{9e}',
4687 '\u{1a}',
4688 '\u{20}',
4689 '\u{5d0}',
4690 '\u{5d1}',
4691 '\u{5d2}',
4692 '\u{5d3}',
4693 '\u{5d4}',
4694 '\u{5d5}',
4695 '\u{5d6}',
4696 '\u{5d7}',
4697 '\u{5d8}',
4698 '\u{a2}',
4699 '\u{2e}',
4700 '\u{3c}',
4701 '\u{28}',
4702 '\u{2b}',
4703 '\u{7c}',
4704 '\u{26}',
4705 '\u{5d9}',
4706 '\u{5da}',
4707 '\u{5db}',
4708 '\u{5dc}',
4709 '\u{5dd}',
4710 '\u{5de}',
4711 '\u{5df}',
4712 '\u{5e0}',
4713 '\u{5e1}',
4714 '\u{21}',
4715 '\u{24}',
4716 '\u{2a}',
4717 '\u{29}',
4718 '\u{3b}',
4719 '\u{ac}',
4720 '\u{2d}',
4721 '\u{2f}',
4722 '\u{5e2}',
4723 '\u{5e3}',
4724 '\u{5e4}',
4725 '\u{5e5}',
4726 '\u{5e6}',
4727 '\u{5e7}',
4728 '\u{5e8}',
4729 '\u{5e9}',
4730 '\u{a6}',
4731 '\u{2c}',
4732 '\u{25}',
4733 '\u{5f}',
4734 '\u{3e}',
4735 '\u{3f}',
4736 char::REPLACEMENT_CHARACTER,
4737 '\u{5ea}',
4738 char::REPLACEMENT_CHARACTER,
4739 char::REPLACEMENT_CHARACTER,
4740 '\u{a0}',
4741 char::REPLACEMENT_CHARACTER,
4742 char::REPLACEMENT_CHARACTER,
4743 char::REPLACEMENT_CHARACTER,
4744 '\u{2017}',
4745 '\u{60}',
4746 '\u{3a}',
4747 '\u{23}',
4748 '\u{40}',
4749 '\u{27}',
4750 '\u{3d}',
4751 '\u{22}',
4752 char::REPLACEMENT_CHARACTER,
4753 '\u{61}',
4754 '\u{62}',
4755 '\u{63}',
4756 '\u{64}',
4757 '\u{65}',
4758 '\u{66}',
4759 '\u{67}',
4760 '\u{68}',
4761 '\u{69}',
4762 '\u{ab}',
4763 '\u{bb}',
4764 char::REPLACEMENT_CHARACTER,
4765 char::REPLACEMENT_CHARACTER,
4766 char::REPLACEMENT_CHARACTER,
4767 '\u{b1}',
4768 '\u{b0}',
4769 '\u{6a}',
4770 '\u{6b}',
4771 '\u{6c}',
4772 '\u{6d}',
4773 '\u{6e}',
4774 '\u{6f}',
4775 '\u{70}',
4776 '\u{71}',
4777 '\u{72}',
4778 char::REPLACEMENT_CHARACTER,
4779 char::REPLACEMENT_CHARACTER,
4780 char::REPLACEMENT_CHARACTER,
4781 '\u{b8}',
4782 char::REPLACEMENT_CHARACTER,
4783 '\u{a4}',
4784 '\u{b5}',
4785 '\u{7e}',
4786 '\u{73}',
4787 '\u{74}',
4788 '\u{75}',
4789 '\u{76}',
4790 '\u{77}',
4791 '\u{78}',
4792 '\u{79}',
4793 '\u{7a}',
4794 char::REPLACEMENT_CHARACTER,
4795 char::REPLACEMENT_CHARACTER,
4796 char::REPLACEMENT_CHARACTER,
4797 char::REPLACEMENT_CHARACTER,
4798 char::REPLACEMENT_CHARACTER,
4799 '\u{ae}',
4800 '\u{5e}',
4801 '\u{a3}',
4802 '\u{a5}',
4803 '\u{2022}',
4804 '\u{a9}',
4805 '\u{a7}',
4806 '\u{b6}',
4807 '\u{bc}',
4808 '\u{bd}',
4809 '\u{be}',
4810 '\u{5b}',
4811 '\u{5d}',
4812 '\u{203e}',
4813 '\u{a8}',
4814 '\u{b4}',
4815 '\u{d7}',
4816 '\u{7b}',
4817 '\u{41}',
4818 '\u{42}',
4819 '\u{43}',
4820 '\u{44}',
4821 '\u{45}',
4822 '\u{46}',
4823 '\u{47}',
4824 '\u{48}',
4825 '\u{49}',
4826 '\u{ad}',
4827 char::REPLACEMENT_CHARACTER,
4828 char::REPLACEMENT_CHARACTER,
4829 char::REPLACEMENT_CHARACTER,
4830 char::REPLACEMENT_CHARACTER,
4831 char::REPLACEMENT_CHARACTER,
4832 '\u{7d}',
4833 '\u{4a}',
4834 '\u{4b}',
4835 '\u{4c}',
4836 '\u{4d}',
4837 '\u{4e}',
4838 '\u{4f}',
4839 '\u{50}',
4840 '\u{51}',
4841 '\u{52}',
4842 '\u{b9}',
4843 char::REPLACEMENT_CHARACTER,
4844 char::REPLACEMENT_CHARACTER,
4845 char::REPLACEMENT_CHARACTER,
4846 char::REPLACEMENT_CHARACTER,
4847 char::REPLACEMENT_CHARACTER,
4848 '\u{5c}',
4849 '\u{f7}',
4850 '\u{53}',
4851 '\u{54}',
4852 '\u{55}',
4853 '\u{56}',
4854 '\u{57}',
4855 '\u{58}',
4856 '\u{59}',
4857 '\u{5a}',
4858 '\u{b2}',
4859 char::REPLACEMENT_CHARACTER,
4860 char::REPLACEMENT_CHARACTER,
4861 char::REPLACEMENT_CHARACTER,
4862 char::REPLACEMENT_CHARACTER,
4863 char::REPLACEMENT_CHARACTER,
4864 '\u{30}',
4865 '\u{31}',
4866 '\u{32}',
4867 '\u{33}',
4868 '\u{34}',
4869 '\u{35}',
4870 '\u{36}',
4871 '\u{37}',
4872 '\u{38}',
4873 '\u{39}',
4874 '\u{b3}',
4875 char::REPLACEMENT_CHARACTER,
4876 char::REPLACEMENT_CHARACTER,
4877 char::REPLACEMENT_CHARACTER,
4878 char::REPLACEMENT_CHARACTER,
4879 '\u{9f}',
4880];
4881const IBM_424_ENCODE_TABLE: &[(u16, u8)] = &[
4882 (0, 0),
4883 (1, 1),
4884 (2, 2),
4885 (3, 3),
4886 (4, 55),
4887 (5, 45),
4888 (6, 46),
4889 (7, 47),
4890 (8, 22),
4891 (9, 5),
4892 (10, 37),
4893 (11, 11),
4894 (12, 12),
4895 (13, 13),
4896 (14, 14),
4897 (15, 15),
4898 (16, 16),
4899 (17, 17),
4900 (18, 18),
4901 (19, 19),
4902 (20, 60),
4903 (21, 61),
4904 (22, 50),
4905 (23, 38),
4906 (24, 24),
4907 (25, 25),
4908 (26, 63),
4909 (27, 39),
4910 (28, 28),
4911 (29, 29),
4912 (30, 30),
4913 (31, 31),
4914 (32, 64),
4915 (33, 90),
4916 (34, 127),
4917 (35, 123),
4918 (36, 91),
4919 (37, 108),
4920 (38, 80),
4921 (39, 125),
4922 (40, 77),
4923 (41, 93),
4924 (42, 92),
4925 (43, 78),
4926 (44, 107),
4927 (45, 96),
4928 (46, 75),
4929 (47, 97),
4930 (48, 240),
4931 (49, 241),
4932 (50, 242),
4933 (51, 243),
4934 (52, 244),
4935 (53, 245),
4936 (54, 246),
4937 (55, 247),
4938 (56, 248),
4939 (57, 249),
4940 (58, 122),
4941 (59, 94),
4942 (60, 76),
4943 (61, 126),
4944 (62, 110),
4945 (63, 111),
4946 (64, 124),
4947 (65, 193),
4948 (66, 194),
4949 (67, 195),
4950 (68, 196),
4951 (69, 197),
4952 (70, 198),
4953 (71, 199),
4954 (72, 200),
4955 (73, 201),
4956 (74, 209),
4957 (75, 210),
4958 (76, 211),
4959 (77, 212),
4960 (78, 213),
4961 (79, 214),
4962 (80, 215),
4963 (81, 216),
4964 (82, 217),
4965 (83, 226),
4966 (84, 227),
4967 (85, 228),
4968 (86, 229),
4969 (87, 230),
4970 (88, 231),
4971 (89, 232),
4972 (90, 233),
4973 (91, 186),
4974 (92, 224),
4975 (93, 187),
4976 (94, 176),
4977 (95, 109),
4978 (96, 121),
4979 (97, 129),
4980 (98, 130),
4981 (99, 131),
4982 (100, 132),
4983 (101, 133),
4984 (102, 134),
4985 (103, 135),
4986 (104, 136),
4987 (105, 137),
4988 (106, 145),
4989 (107, 146),
4990 (108, 147),
4991 (109, 148),
4992 (110, 149),
4993 (111, 150),
4994 (112, 151),
4995 (113, 152),
4996 (114, 153),
4997 (115, 162),
4998 (116, 163),
4999 (117, 164),
5000 (118, 165),
5001 (119, 166),
5002 (120, 167),
5003 (121, 168),
5004 (122, 169),
5005 (123, 192),
5006 (124, 79),
5007 (125, 208),
5008 (126, 161),
5009 (127, 7),
5010 (128, 32),
5011 (129, 33),
5012 (130, 34),
5013 (131, 35),
5014 (132, 36),
5015 (133, 21),
5016 (134, 6),
5017 (135, 23),
5018 (136, 40),
5019 (137, 41),
5020 (138, 42),
5021 (139, 43),
5022 (140, 44),
5023 (141, 9),
5024 (142, 10),
5025 (143, 27),
5026 (144, 48),
5027 (145, 49),
5028 (146, 26),
5029 (147, 51),
5030 (148, 52),
5031 (149, 53),
5032 (150, 54),
5033 (151, 8),
5034 (152, 56),
5035 (153, 57),
5036 (154, 58),
5037 (155, 59),
5038 (156, 4),
5039 (157, 20),
5040 (158, 62),
5041 (159, 255),
5042 (160, 116),
5043 (162, 74),
5044 (163, 177),
5045 (164, 159),
5046 (165, 178),
5047 (166, 106),
5048 (167, 181),
5049 (168, 189),
5050 (169, 180),
5051 (171, 138),
5052 (172, 95),
5053 (173, 202),
5054 (174, 175),
5055 (176, 144),
5056 (177, 143),
5057 (178, 234),
5058 (179, 250),
5059 (180, 190),
5060 (181, 160),
5061 (182, 182),
5062 (184, 157),
5063 (185, 218),
5064 (187, 139),
5065 (188, 183),
5066 (189, 184),
5067 (190, 185),
5068 (215, 191),
5069 (247, 225),
5070 (1488, 65),
5071 (1489, 66),
5072 (1490, 67),
5073 (1491, 68),
5074 (1492, 69),
5075 (1493, 70),
5076 (1494, 71),
5077 (1495, 72),
5078 (1496, 73),
5079 (1497, 81),
5080 (1498, 82),
5081 (1499, 83),
5082 (1500, 84),
5083 (1501, 85),
5084 (1502, 86),
5085 (1503, 87),
5086 (1504, 88),
5087 (1505, 89),
5088 (1506, 98),
5089 (1507, 99),
5090 (1508, 100),
5091 (1509, 101),
5092 (1510, 102),
5093 (1511, 103),
5094 (1512, 104),
5095 (1513, 105),
5096 (1514, 113),
5097 (8215, 120),
5098 (8226, 179),
5099 (8254, 188),
5100];
5101
5102impl_ebcdic_encoder_and_decoder!(
5103 IBM437,
5104 "IBM437",
5105 IBM437Encoder,
5106 IBM437Decoder,
5107 IBM_437_ENCODE_TABLE,
5108 IBM_437_DECODE_TABLE
5109);
5110const IBM_437_DECODE_TABLE: [char; 256] = [
5111 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{4}', '\u{5}', '\u{6}', '\u{7}', '\u{8}', '\u{9}',
5112 '\u{a}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
5113 '\u{14}', '\u{15}', '\u{16}', '\u{17}', '\u{18}', '\u{19}', '\u{1c}', '\u{1b}', '\u{7f}',
5114 '\u{1d}', '\u{1e}', '\u{1f}', '\u{20}', '\u{21}', '\u{22}', '\u{23}', '\u{24}', '\u{25}',
5115 '\u{26}', '\u{27}', '\u{28}', '\u{29}', '\u{2a}', '\u{2b}', '\u{2c}', '\u{2d}', '\u{2e}',
5116 '\u{2f}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}',
5117 '\u{38}', '\u{39}', '\u{3a}', '\u{3b}', '\u{3c}', '\u{3d}', '\u{3e}', '\u{3f}', '\u{40}',
5118 '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
5119 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
5120 '\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{5b}',
5121 '\u{5c}', '\u{5d}', '\u{5e}', '\u{5f}', '\u{60}', '\u{61}', '\u{62}', '\u{63}', '\u{64}',
5122 '\u{65}', '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}',
5123 '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{73}', '\u{74}', '\u{75}', '\u{76}',
5124 '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{7b}', '\u{7c}', '\u{7d}', '\u{7e}', '\u{1a}',
5125 '\u{c7}', '\u{fc}', '\u{e9}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e5}', '\u{e7}', '\u{ea}',
5126 '\u{eb}', '\u{e8}', '\u{ef}', '\u{ee}', '\u{ec}', '\u{c4}', '\u{c5}', '\u{c9}', '\u{e6}',
5127 '\u{c6}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{fb}', '\u{f9}', '\u{ff}', '\u{d6}', '\u{dc}',
5128 '\u{a2}', '\u{a3}', '\u{a5}', '\u{20a7}', '\u{192}', '\u{e1}', '\u{ed}', '\u{f3}', '\u{fa}',
5129 '\u{f1}', '\u{d1}', '\u{aa}', '\u{ba}', '\u{bf}', '\u{2310}', '\u{ac}', '\u{bd}', '\u{bc}',
5130 '\u{a1}', '\u{ab}', '\u{bb}', '\u{2591}', '\u{2592}', '\u{2593}', '\u{2502}', '\u{2524}',
5131 '\u{2561}', '\u{2562}', '\u{2556}', '\u{2555}', '\u{2563}', '\u{2551}', '\u{2557}', '\u{255d}',
5132 '\u{255c}', '\u{255b}', '\u{2510}', '\u{2514}', '\u{2534}', '\u{252c}', '\u{251c}', '\u{2500}',
5133 '\u{253c}', '\u{255e}', '\u{255f}', '\u{255a}', '\u{2554}', '\u{2569}', '\u{2566}', '\u{2560}',
5134 '\u{2550}', '\u{256c}', '\u{2567}', '\u{2568}', '\u{2564}', '\u{2565}', '\u{2559}', '\u{2558}',
5135 '\u{2552}', '\u{2553}', '\u{256b}', '\u{256a}', '\u{2518}', '\u{250c}', '\u{2588}', '\u{2584}',
5136 '\u{258c}', '\u{2590}', '\u{2580}', '\u{3b1}', '\u{df}', '\u{393}', '\u{3c0}', '\u{3a3}',
5137 '\u{3c3}', '\u{3bc}', '\u{3c4}', '\u{3a6}', '\u{398}', '\u{3a9}', '\u{3b4}', '\u{221e}',
5138 '\u{3c6}', '\u{3b5}', '\u{2229}', '\u{2261}', '\u{b1}', '\u{2265}', '\u{2264}', '\u{2320}',
5139 '\u{2321}', '\u{f7}', '\u{2248}', '\u{b0}', '\u{2219}', '\u{b7}', '\u{221a}', '\u{207f}',
5140 '\u{b2}', '\u{25a0}', '\u{a0}',
5141];
5142const IBM_437_ENCODE_TABLE: &[(u16, u8)] = &[
5143 (0, 0),
5144 (1, 1),
5145 (2, 2),
5146 (3, 3),
5147 (4, 4),
5148 (5, 5),
5149 (6, 6),
5150 (7, 7),
5151 (8, 8),
5152 (9, 9),
5153 (10, 10),
5154 (11, 11),
5155 (12, 12),
5156 (13, 13),
5157 (14, 14),
5158 (15, 15),
5159 (16, 16),
5160 (17, 17),
5161 (18, 18),
5162 (19, 19),
5163 (20, 20),
5164 (21, 21),
5165 (22, 22),
5166 (23, 23),
5167 (24, 24),
5168 (25, 25),
5169 (26, 127),
5170 (27, 27),
5171 (28, 26),
5172 (29, 29),
5173 (30, 30),
5174 (31, 31),
5175 (32, 32),
5176 (33, 33),
5177 (34, 34),
5178 (35, 35),
5179 (36, 36),
5180 (37, 37),
5181 (38, 38),
5182 (39, 39),
5183 (40, 40),
5184 (41, 41),
5185 (42, 42),
5186 (43, 43),
5187 (44, 44),
5188 (45, 45),
5189 (46, 46),
5190 (47, 47),
5191 (48, 48),
5192 (49, 49),
5193 (50, 50),
5194 (51, 51),
5195 (52, 52),
5196 (53, 53),
5197 (54, 54),
5198 (55, 55),
5199 (56, 56),
5200 (57, 57),
5201 (58, 58),
5202 (59, 59),
5203 (60, 60),
5204 (61, 61),
5205 (62, 62),
5206 (63, 63),
5207 (64, 64),
5208 (65, 65),
5209 (66, 66),
5210 (67, 67),
5211 (68, 68),
5212 (69, 69),
5213 (70, 70),
5214 (71, 71),
5215 (72, 72),
5216 (73, 73),
5217 (74, 74),
5218 (75, 75),
5219 (76, 76),
5220 (77, 77),
5221 (78, 78),
5222 (79, 79),
5223 (80, 80),
5224 (81, 81),
5225 (82, 82),
5226 (83, 83),
5227 (84, 84),
5228 (85, 85),
5229 (86, 86),
5230 (87, 87),
5231 (88, 88),
5232 (89, 89),
5233 (90, 90),
5234 (91, 91),
5235 (92, 92),
5236 (93, 93),
5237 (94, 94),
5238 (95, 95),
5239 (96, 96),
5240 (97, 97),
5241 (98, 98),
5242 (99, 99),
5243 (100, 100),
5244 (101, 101),
5245 (102, 102),
5246 (103, 103),
5247 (104, 104),
5248 (105, 105),
5249 (106, 106),
5250 (107, 107),
5251 (108, 108),
5252 (109, 109),
5253 (110, 110),
5254 (111, 111),
5255 (112, 112),
5256 (113, 113),
5257 (114, 114),
5258 (115, 115),
5259 (116, 116),
5260 (117, 117),
5261 (118, 118),
5262 (119, 119),
5263 (120, 120),
5264 (121, 121),
5265 (122, 122),
5266 (123, 123),
5267 (124, 124),
5268 (125, 125),
5269 (126, 126),
5270 (127, 28),
5271 (160, 255),
5272 (161, 173),
5273 (162, 155),
5274 (163, 156),
5275 (165, 157),
5276 (170, 166),
5277 (171, 174),
5278 (172, 170),
5279 (176, 248),
5280 (177, 241),
5281 (178, 253),
5282 (183, 250),
5283 (186, 167),
5284 (187, 175),
5285 (188, 172),
5286 (189, 171),
5287 (191, 168),
5288 (196, 142),
5289 (197, 143),
5290 (198, 146),
5291 (199, 128),
5292 (201, 144),
5293 (209, 165),
5294 (214, 153),
5295 (220, 154),
5296 (223, 225),
5297 (224, 133),
5298 (225, 160),
5299 (226, 131),
5300 (228, 132),
5301 (229, 134),
5302 (230, 145),
5303 (231, 135),
5304 (232, 138),
5305 (233, 130),
5306 (234, 136),
5307 (235, 137),
5308 (236, 141),
5309 (237, 161),
5310 (238, 140),
5311 (239, 139),
5312 (241, 164),
5313 (242, 149),
5314 (243, 162),
5315 (244, 147),
5316 (246, 148),
5317 (247, 246),
5318 (249, 151),
5319 (250, 163),
5320 (251, 150),
5321 (252, 129),
5322 (255, 152),
5323 (402, 159),
5324 (915, 226),
5325 (920, 233),
5326 (931, 228),
5327 (934, 232),
5328 (937, 234),
5329 (945, 224),
5330 (948, 235),
5331 (949, 238),
5332 (956, 230),
5333 (960, 227),
5334 (963, 229),
5335 (964, 231),
5336 (966, 237),
5337 (8319, 252),
5338 (8359, 158),
5339 (8729, 249),
5340 (8730, 251),
5341 (8734, 236),
5342 (8745, 239),
5343 (8776, 247),
5344 (8801, 240),
5345 (8804, 243),
5346 (8805, 242),
5347 (8976, 169),
5348 (8992, 244),
5349 (8993, 245),
5350 (9472, 196),
5351 (9474, 179),
5352 (9484, 218),
5353 (9488, 191),
5354 (9492, 192),
5355 (9496, 217),
5356 (9500, 195),
5357 (9508, 180),
5358 (9516, 194),
5359 (9524, 193),
5360 (9532, 197),
5361 (9552, 205),
5362 (9553, 186),
5363 (9554, 213),
5364 (9555, 214),
5365 (9556, 201),
5366 (9557, 184),
5367 (9558, 183),
5368 (9559, 187),
5369 (9560, 212),
5370 (9561, 211),
5371 (9562, 200),
5372 (9563, 190),
5373 (9564, 189),
5374 (9565, 188),
5375 (9566, 198),
5376 (9567, 199),
5377 (9568, 204),
5378 (9569, 181),
5379 (9570, 182),
5380 (9571, 185),
5381 (9572, 209),
5382 (9573, 210),
5383 (9574, 203),
5384 (9575, 207),
5385 (9576, 208),
5386 (9577, 202),
5387 (9578, 216),
5388 (9579, 215),
5389 (9580, 206),
5390 (9600, 223),
5391 (9604, 220),
5392 (9608, 219),
5393 (9612, 221),
5394 (9616, 222),
5395 (9617, 176),
5396 (9618, 177),
5397 (9619, 178),
5398 (9632, 254),
5399];
5400
5401impl_ebcdic_encoder_and_decoder!(
5402 IBM500,
5403 "IBM500",
5404 IBM500Encoder,
5405 IBM500Decoder,
5406 IBM_500_ENCODE_TABLE,
5407 IBM_500_DECODE_TABLE
5408);
5409const IBM_500_DECODE_TABLE: [char; 256] = [
5410 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
5411 '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
5412 '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
5413 '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
5414 '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
5415 '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
5416 '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
5417 '\u{a0}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{e7}', '\u{f1}',
5418 '\u{5b}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{e9}', '\u{ea}',
5419 '\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{5d}', '\u{24}',
5420 '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
5421 '\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{d1}', '\u{a6}', '\u{2c}', '\u{25}', '\u{5f}',
5422 '\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
5423 '\u{cf}', '\u{cc}', '\u{60}', '\u{3a}', '\u{23}', '\u{40}', '\u{27}', '\u{3d}', '\u{22}',
5424 '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
5425 '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
5426 '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
5427 '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{7e}', '\u{73}', '\u{74}',
5428 '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
5429 '\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
5430 '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{a8}', '\u{b4}',
5431 '\u{d7}', '\u{7b}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
5432 '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{7d}',
5433 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
5434 '\u{b9}', '\u{fb}', '\u{fc}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{5c}', '\u{f7}', '\u{53}',
5435 '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
5436 '\u{d6}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
5437 '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
5438 '\u{da}', '\u{9f}',
5439];
5440const IBM_500_ENCODE_TABLE: &[(u16, u8)] = &[
5441 (0, 0),
5442 (1, 1),
5443 (2, 2),
5444 (3, 3),
5445 (4, 55),
5446 (5, 45),
5447 (6, 46),
5448 (7, 47),
5449 (8, 22),
5450 (9, 5),
5451 (10, 37),
5452 (11, 11),
5453 (12, 12),
5454 (13, 13),
5455 (14, 14),
5456 (15, 15),
5457 (16, 16),
5458 (17, 17),
5459 (18, 18),
5460 (19, 19),
5461 (20, 60),
5462 (21, 61),
5463 (22, 50),
5464 (23, 38),
5465 (24, 24),
5466 (25, 25),
5467 (26, 63),
5468 (27, 39),
5469 (28, 28),
5470 (29, 29),
5471 (30, 30),
5472 (31, 31),
5473 (32, 64),
5474 (33, 79),
5475 (34, 127),
5476 (35, 123),
5477 (36, 91),
5478 (37, 108),
5479 (38, 80),
5480 (39, 125),
5481 (40, 77),
5482 (41, 93),
5483 (42, 92),
5484 (43, 78),
5485 (44, 107),
5486 (45, 96),
5487 (46, 75),
5488 (47, 97),
5489 (48, 240),
5490 (49, 241),
5491 (50, 242),
5492 (51, 243),
5493 (52, 244),
5494 (53, 245),
5495 (54, 246),
5496 (55, 247),
5497 (56, 248),
5498 (57, 249),
5499 (58, 122),
5500 (59, 94),
5501 (60, 76),
5502 (61, 126),
5503 (62, 110),
5504 (63, 111),
5505 (64, 124),
5506 (65, 193),
5507 (66, 194),
5508 (67, 195),
5509 (68, 196),
5510 (69, 197),
5511 (70, 198),
5512 (71, 199),
5513 (72, 200),
5514 (73, 201),
5515 (74, 209),
5516 (75, 210),
5517 (76, 211),
5518 (77, 212),
5519 (78, 213),
5520 (79, 214),
5521 (80, 215),
5522 (81, 216),
5523 (82, 217),
5524 (83, 226),
5525 (84, 227),
5526 (85, 228),
5527 (86, 229),
5528 (87, 230),
5529 (88, 231),
5530 (89, 232),
5531 (90, 233),
5532 (91, 74),
5533 (92, 224),
5534 (93, 90),
5535 (94, 95),
5536 (95, 109),
5537 (96, 121),
5538 (97, 129),
5539 (98, 130),
5540 (99, 131),
5541 (100, 132),
5542 (101, 133),
5543 (102, 134),
5544 (103, 135),
5545 (104, 136),
5546 (105, 137),
5547 (106, 145),
5548 (107, 146),
5549 (108, 147),
5550 (109, 148),
5551 (110, 149),
5552 (111, 150),
5553 (112, 151),
5554 (113, 152),
5555 (114, 153),
5556 (115, 162),
5557 (116, 163),
5558 (117, 164),
5559 (118, 165),
5560 (119, 166),
5561 (120, 167),
5562 (121, 168),
5563 (122, 169),
5564 (123, 192),
5565 (124, 187),
5566 (125, 208),
5567 (126, 161),
5568 (127, 7),
5569 (128, 32),
5570 (129, 33),
5571 (130, 34),
5572 (131, 35),
5573 (132, 36),
5574 (133, 21),
5575 (134, 6),
5576 (135, 23),
5577 (136, 40),
5578 (137, 41),
5579 (138, 42),
5580 (139, 43),
5581 (140, 44),
5582 (141, 9),
5583 (142, 10),
5584 (143, 27),
5585 (144, 48),
5586 (145, 49),
5587 (146, 26),
5588 (147, 51),
5589 (148, 52),
5590 (149, 53),
5591 (150, 54),
5592 (151, 8),
5593 (152, 56),
5594 (153, 57),
5595 (154, 58),
5596 (155, 59),
5597 (156, 4),
5598 (157, 20),
5599 (158, 62),
5600 (159, 255),
5601 (160, 65),
5602 (161, 170),
5603 (162, 176),
5604 (163, 177),
5605 (164, 159),
5606 (165, 178),
5607 (166, 106),
5608 (167, 181),
5609 (168, 189),
5610 (169, 180),
5611 (170, 154),
5612 (171, 138),
5613 (172, 186),
5614 (173, 202),
5615 (174, 175),
5616 (175, 188),
5617 (176, 144),
5618 (177, 143),
5619 (178, 234),
5620 (179, 250),
5621 (180, 190),
5622 (181, 160),
5623 (182, 182),
5624 (183, 179),
5625 (184, 157),
5626 (185, 218),
5627 (186, 155),
5628 (187, 139),
5629 (188, 183),
5630 (189, 184),
5631 (190, 185),
5632 (191, 171),
5633 (192, 100),
5634 (193, 101),
5635 (194, 98),
5636 (195, 102),
5637 (196, 99),
5638 (197, 103),
5639 (198, 158),
5640 (199, 104),
5641 (200, 116),
5642 (201, 113),
5643 (202, 114),
5644 (203, 115),
5645 (204, 120),
5646 (205, 117),
5647 (206, 118),
5648 (207, 119),
5649 (208, 172),
5650 (209, 105),
5651 (210, 237),
5652 (211, 238),
5653 (212, 235),
5654 (213, 239),
5655 (214, 236),
5656 (215, 191),
5657 (216, 128),
5658 (217, 253),
5659 (218, 254),
5660 (219, 251),
5661 (220, 252),
5662 (221, 173),
5663 (222, 174),
5664 (223, 89),
5665 (224, 68),
5666 (225, 69),
5667 (226, 66),
5668 (227, 70),
5669 (228, 67),
5670 (229, 71),
5671 (230, 156),
5672 (231, 72),
5673 (232, 84),
5674 (233, 81),
5675 (234, 82),
5676 (235, 83),
5677 (236, 88),
5678 (237, 85),
5679 (238, 86),
5680 (239, 87),
5681 (240, 140),
5682 (241, 73),
5683 (242, 205),
5684 (243, 206),
5685 (244, 203),
5686 (245, 207),
5687 (246, 204),
5688 (247, 225),
5689 (248, 112),
5690 (249, 221),
5691 (250, 222),
5692 (251, 219),
5693 (252, 220),
5694 (253, 141),
5695 (254, 142),
5696 (255, 223),
5697];
5698
5699impl_ebcdic_encoder_and_decoder!(
5700 IBM850,
5701 "IBM850",
5702 IBM850Encoder,
5703 IBM850Decoder,
5704 IBM_850_ENCODE_TABLE,
5705 IBM_850_DECODE_TABLE
5706);
5707const IBM_850_DECODE_TABLE: [char; 256] = [
5708 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{4}', '\u{5}', '\u{6}', '\u{7}', '\u{8}', '\u{9}',
5709 '\u{a}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
5710 '\u{14}', '\u{15}', '\u{16}', '\u{17}', '\u{18}', '\u{19}', '\u{1c}', '\u{1b}', '\u{7f}',
5711 '\u{1d}', '\u{1e}', '\u{1f}', '\u{20}', '\u{21}', '\u{22}', '\u{23}', '\u{24}', '\u{25}',
5712 '\u{26}', '\u{27}', '\u{28}', '\u{29}', '\u{2a}', '\u{2b}', '\u{2c}', '\u{2d}', '\u{2e}',
5713 '\u{2f}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}',
5714 '\u{38}', '\u{39}', '\u{3a}', '\u{3b}', '\u{3c}', '\u{3d}', '\u{3e}', '\u{3f}', '\u{40}',
5715 '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
5716 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
5717 '\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{5b}',
5718 '\u{5c}', '\u{5d}', '\u{5e}', '\u{5f}', '\u{60}', '\u{61}', '\u{62}', '\u{63}', '\u{64}',
5719 '\u{65}', '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}',
5720 '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{73}', '\u{74}', '\u{75}', '\u{76}',
5721 '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{7b}', '\u{7c}', '\u{7d}', '\u{7e}', '\u{1a}',
5722 '\u{c7}', '\u{fc}', '\u{e9}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e5}', '\u{e7}', '\u{ea}',
5723 '\u{eb}', '\u{e8}', '\u{ef}', '\u{ee}', '\u{ec}', '\u{c4}', '\u{c5}', '\u{c9}', '\u{e6}',
5724 '\u{c6}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{fb}', '\u{f9}', '\u{ff}', '\u{d6}', '\u{dc}',
5725 '\u{f8}', '\u{a3}', '\u{d8}', '\u{d7}', '\u{192}', '\u{e1}', '\u{ed}', '\u{f3}', '\u{fa}',
5726 '\u{f1}', '\u{d1}', '\u{aa}', '\u{ba}', '\u{bf}', '\u{ae}', '\u{ac}', '\u{bd}', '\u{bc}',
5727 '\u{a1}', '\u{ab}', '\u{bb}', '\u{2591}', '\u{2592}', '\u{2593}', '\u{2502}', '\u{2524}',
5728 '\u{c1}', '\u{c2}', '\u{c0}', '\u{a9}', '\u{2563}', '\u{2551}', '\u{2557}', '\u{255d}',
5729 '\u{a2}', '\u{a5}', '\u{2510}', '\u{2514}', '\u{2534}', '\u{252c}', '\u{251c}', '\u{2500}',
5730 '\u{253c}', '\u{e3}', '\u{c3}', '\u{255a}', '\u{2554}', '\u{2569}', '\u{2566}', '\u{2560}',
5731 '\u{2550}', '\u{256c}', '\u{a4}', '\u{f0}', '\u{d0}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{131}',
5732 '\u{cd}', '\u{ce}', '\u{cf}', '\u{2518}', '\u{250c}', '\u{2588}', '\u{2584}', '\u{a6}',
5733 '\u{cc}', '\u{2580}', '\u{d3}', '\u{df}', '\u{d4}', '\u{d2}', '\u{f5}', '\u{d5}', '\u{b5}',
5734 '\u{fe}', '\u{de}', '\u{da}', '\u{db}', '\u{d9}', '\u{fd}', '\u{dd}', '\u{af}', '\u{b4}',
5735 '\u{ad}', '\u{b1}', '\u{2017}', '\u{be}', '\u{b6}', '\u{a7}', '\u{f7}', '\u{b8}', '\u{b0}',
5736 '\u{a8}', '\u{b7}', '\u{b9}', '\u{b3}', '\u{b2}', '\u{25a0}', '\u{a0}',
5737];
5738const IBM_850_ENCODE_TABLE: &[(u16, u8)] = &[
5739 (0, 0),
5740 (1, 1),
5741 (2, 2),
5742 (3, 3),
5743 (4, 4),
5744 (5, 5),
5745 (6, 6),
5746 (7, 7),
5747 (8, 8),
5748 (9, 9),
5749 (10, 10),
5750 (11, 11),
5751 (12, 12),
5752 (13, 13),
5753 (14, 14),
5754 (15, 15),
5755 (16, 16),
5756 (17, 17),
5757 (18, 18),
5758 (19, 19),
5759 (20, 20),
5760 (21, 21),
5761 (22, 22),
5762 (23, 23),
5763 (24, 24),
5764 (25, 25),
5765 (26, 127),
5766 (27, 27),
5767 (28, 26),
5768 (29, 29),
5769 (30, 30),
5770 (31, 31),
5771 (32, 32),
5772 (33, 33),
5773 (34, 34),
5774 (35, 35),
5775 (36, 36),
5776 (37, 37),
5777 (38, 38),
5778 (39, 39),
5779 (40, 40),
5780 (41, 41),
5781 (42, 42),
5782 (43, 43),
5783 (44, 44),
5784 (45, 45),
5785 (46, 46),
5786 (47, 47),
5787 (48, 48),
5788 (49, 49),
5789 (50, 50),
5790 (51, 51),
5791 (52, 52),
5792 (53, 53),
5793 (54, 54),
5794 (55, 55),
5795 (56, 56),
5796 (57, 57),
5797 (58, 58),
5798 (59, 59),
5799 (60, 60),
5800 (61, 61),
5801 (62, 62),
5802 (63, 63),
5803 (64, 64),
5804 (65, 65),
5805 (66, 66),
5806 (67, 67),
5807 (68, 68),
5808 (69, 69),
5809 (70, 70),
5810 (71, 71),
5811 (72, 72),
5812 (73, 73),
5813 (74, 74),
5814 (75, 75),
5815 (76, 76),
5816 (77, 77),
5817 (78, 78),
5818 (79, 79),
5819 (80, 80),
5820 (81, 81),
5821 (82, 82),
5822 (83, 83),
5823 (84, 84),
5824 (85, 85),
5825 (86, 86),
5826 (87, 87),
5827 (88, 88),
5828 (89, 89),
5829 (90, 90),
5830 (91, 91),
5831 (92, 92),
5832 (93, 93),
5833 (94, 94),
5834 (95, 95),
5835 (96, 96),
5836 (97, 97),
5837 (98, 98),
5838 (99, 99),
5839 (100, 100),
5840 (101, 101),
5841 (102, 102),
5842 (103, 103),
5843 (104, 104),
5844 (105, 105),
5845 (106, 106),
5846 (107, 107),
5847 (108, 108),
5848 (109, 109),
5849 (110, 110),
5850 (111, 111),
5851 (112, 112),
5852 (113, 113),
5853 (114, 114),
5854 (115, 115),
5855 (116, 116),
5856 (117, 117),
5857 (118, 118),
5858 (119, 119),
5859 (120, 120),
5860 (121, 121),
5861 (122, 122),
5862 (123, 123),
5863 (124, 124),
5864 (125, 125),
5865 (126, 126),
5866 (127, 28),
5867 (160, 255),
5868 (161, 173),
5869 (162, 189),
5870 (163, 156),
5871 (164, 207),
5872 (165, 190),
5873 (166, 221),
5874 (167, 245),
5875 (168, 249),
5876 (169, 184),
5877 (170, 166),
5878 (171, 174),
5879 (172, 170),
5880 (173, 240),
5881 (174, 169),
5882 (175, 238),
5883 (176, 248),
5884 (177, 241),
5885 (178, 253),
5886 (179, 252),
5887 (180, 239),
5888 (181, 230),
5889 (182, 244),
5890 (183, 250),
5891 (184, 247),
5892 (185, 251),
5893 (186, 167),
5894 (187, 175),
5895 (188, 172),
5896 (189, 171),
5897 (190, 243),
5898 (191, 168),
5899 (192, 183),
5900 (193, 181),
5901 (194, 182),
5902 (195, 199),
5903 (196, 142),
5904 (197, 143),
5905 (198, 146),
5906 (199, 128),
5907 (200, 212),
5908 (201, 144),
5909 (202, 210),
5910 (203, 211),
5911 (204, 222),
5912 (205, 214),
5913 (206, 215),
5914 (207, 216),
5915 (208, 209),
5916 (209, 165),
5917 (210, 227),
5918 (211, 224),
5919 (212, 226),
5920 (213, 229),
5921 (214, 153),
5922 (215, 158),
5923 (216, 157),
5924 (217, 235),
5925 (218, 233),
5926 (219, 234),
5927 (220, 154),
5928 (221, 237),
5929 (222, 232),
5930 (223, 225),
5931 (224, 133),
5932 (225, 160),
5933 (226, 131),
5934 (227, 198),
5935 (228, 132),
5936 (229, 134),
5937 (230, 145),
5938 (231, 135),
5939 (232, 138),
5940 (233, 130),
5941 (234, 136),
5942 (235, 137),
5943 (236, 141),
5944 (237, 161),
5945 (238, 140),
5946 (239, 139),
5947 (240, 208),
5948 (241, 164),
5949 (242, 149),
5950 (243, 162),
5951 (244, 147),
5952 (245, 228),
5953 (246, 148),
5954 (247, 246),
5955 (248, 155),
5956 (249, 151),
5957 (250, 163),
5958 (251, 150),
5959 (252, 129),
5960 (253, 236),
5961 (254, 231),
5962 (255, 152),
5963 (305, 213),
5964 (402, 159),
5965 (8215, 242),
5966 (9472, 196),
5967 (9474, 179),
5968 (9484, 218),
5969 (9488, 191),
5970 (9492, 192),
5971 (9496, 217),
5972 (9500, 195),
5973 (9508, 180),
5974 (9516, 194),
5975 (9524, 193),
5976 (9532, 197),
5977 (9552, 205),
5978 (9553, 186),
5979 (9556, 201),
5980 (9559, 187),
5981 (9562, 200),
5982 (9565, 188),
5983 (9568, 204),
5984 (9571, 185),
5985 (9574, 203),
5986 (9577, 202),
5987 (9580, 206),
5988 (9600, 223),
5989 (9604, 220),
5990 (9608, 219),
5991 (9617, 176),
5992 (9618, 177),
5993 (9619, 178),
5994 (9632, 254),
5995];
5996
5997impl_ebcdic_encoder_and_decoder!(
5998 IBM851,
5999 "IBM851",
6000 IBM851Encoder,
6001 IBM851Decoder,
6002 IBM_851_ENCODE_TABLE,
6003 IBM_851_DECODE_TABLE
6004);
6005const IBM_851_DECODE_TABLE: [char; 256] = [
6006 '\u{0}',
6007 '\u{1}',
6008 '\u{2}',
6009 '\u{3}',
6010 '\u{4}',
6011 '\u{5}',
6012 '\u{6}',
6013 '\u{7}',
6014 '\u{8}',
6015 '\u{9}',
6016 '\u{a}',
6017 '\u{b}',
6018 '\u{c}',
6019 '\u{d}',
6020 '\u{e}',
6021 '\u{f}',
6022 '\u{10}',
6023 '\u{11}',
6024 '\u{12}',
6025 '\u{13}',
6026 '\u{14}',
6027 '\u{15}',
6028 '\u{16}',
6029 '\u{17}',
6030 '\u{18}',
6031 '\u{19}',
6032 '\u{1c}',
6033 '\u{1b}',
6034 '\u{7f}',
6035 '\u{1d}',
6036 '\u{1e}',
6037 '\u{1f}',
6038 '\u{20}',
6039 '\u{21}',
6040 '\u{22}',
6041 '\u{23}',
6042 '\u{24}',
6043 '\u{25}',
6044 '\u{26}',
6045 '\u{27}',
6046 '\u{28}',
6047 '\u{29}',
6048 '\u{2a}',
6049 '\u{2b}',
6050 '\u{2c}',
6051 '\u{2d}',
6052 '\u{2e}',
6053 '\u{2f}',
6054 '\u{30}',
6055 '\u{31}',
6056 '\u{32}',
6057 '\u{33}',
6058 '\u{34}',
6059 '\u{35}',
6060 '\u{36}',
6061 '\u{37}',
6062 '\u{38}',
6063 '\u{39}',
6064 '\u{3a}',
6065 '\u{3b}',
6066 '\u{3c}',
6067 '\u{3d}',
6068 '\u{3e}',
6069 '\u{3f}',
6070 '\u{40}',
6071 '\u{41}',
6072 '\u{42}',
6073 '\u{43}',
6074 '\u{44}',
6075 '\u{45}',
6076 '\u{46}',
6077 '\u{47}',
6078 '\u{48}',
6079 '\u{49}',
6080 '\u{4a}',
6081 '\u{4b}',
6082 '\u{4c}',
6083 '\u{4d}',
6084 '\u{4e}',
6085 '\u{4f}',
6086 '\u{50}',
6087 '\u{51}',
6088 '\u{52}',
6089 '\u{53}',
6090 '\u{54}',
6091 '\u{55}',
6092 '\u{56}',
6093 '\u{57}',
6094 '\u{58}',
6095 '\u{59}',
6096 '\u{5a}',
6097 '\u{5b}',
6098 '\u{5c}',
6099 '\u{5d}',
6100 '\u{5e}',
6101 '\u{5f}',
6102 '\u{60}',
6103 '\u{61}',
6104 '\u{62}',
6105 '\u{63}',
6106 '\u{64}',
6107 '\u{65}',
6108 '\u{66}',
6109 '\u{67}',
6110 '\u{68}',
6111 '\u{69}',
6112 '\u{6a}',
6113 '\u{6b}',
6114 '\u{6c}',
6115 '\u{6d}',
6116 '\u{6e}',
6117 '\u{6f}',
6118 '\u{70}',
6119 '\u{71}',
6120 '\u{72}',
6121 '\u{73}',
6122 '\u{74}',
6123 '\u{75}',
6124 '\u{76}',
6125 '\u{77}',
6126 '\u{78}',
6127 '\u{79}',
6128 '\u{7a}',
6129 '\u{7b}',
6130 '\u{7c}',
6131 '\u{7d}',
6132 '\u{7e}',
6133 '\u{1a}',
6134 '\u{c7}',
6135 '\u{fc}',
6136 '\u{e9}',
6137 '\u{e2}',
6138 '\u{e4}',
6139 '\u{e0}',
6140 '\u{386}',
6141 '\u{e7}',
6142 '\u{ea}',
6143 '\u{eb}',
6144 '\u{e8}',
6145 '\u{ef}',
6146 '\u{ee}',
6147 '\u{388}',
6148 '\u{c4}',
6149 '\u{389}',
6150 '\u{38a}',
6151 char::REPLACEMENT_CHARACTER,
6152 '\u{38c}',
6153 '\u{f4}',
6154 '\u{f6}',
6155 '\u{38e}',
6156 '\u{fb}',
6157 '\u{f9}',
6158 '\u{38f}',
6159 '\u{d6}',
6160 '\u{dc}',
6161 '\u{3ac}',
6162 '\u{a3}',
6163 '\u{3ad}',
6164 '\u{3ae}',
6165 '\u{3af}',
6166 '\u{3ca}',
6167 '\u{390}',
6168 '\u{3cc}',
6169 '\u{3cd}',
6170 '\u{391}',
6171 '\u{392}',
6172 '\u{393}',
6173 '\u{394}',
6174 '\u{395}',
6175 '\u{396}',
6176 '\u{397}',
6177 '\u{bd}',
6178 '\u{398}',
6179 '\u{399}',
6180 '\u{ab}',
6181 '\u{bb}',
6182 '\u{2591}',
6183 '\u{2592}',
6184 '\u{2593}',
6185 '\u{2502}',
6186 '\u{2524}',
6187 '\u{39a}',
6188 '\u{39b}',
6189 '\u{39c}',
6190 '\u{39d}',
6191 '\u{2563}',
6192 '\u{2551}',
6193 '\u{2557}',
6194 '\u{255d}',
6195 '\u{39e}',
6196 '\u{39f}',
6197 '\u{2510}',
6198 '\u{2514}',
6199 '\u{2534}',
6200 '\u{252c}',
6201 '\u{251c}',
6202 '\u{2500}',
6203 '\u{253c}',
6204 '\u{3a0}',
6205 '\u{3a1}',
6206 '\u{255a}',
6207 '\u{2554}',
6208 '\u{2569}',
6209 '\u{2566}',
6210 '\u{2560}',
6211 '\u{2550}',
6212 '\u{256c}',
6213 '\u{3a3}',
6214 '\u{3a4}',
6215 '\u{3a5}',
6216 '\u{3a6}',
6217 '\u{3a7}',
6218 '\u{3a8}',
6219 '\u{3a9}',
6220 '\u{3b1}',
6221 '\u{3b2}',
6222 '\u{3b3}',
6223 '\u{2518}',
6224 '\u{250c}',
6225 '\u{2588}',
6226 '\u{2584}',
6227 '\u{3b4}',
6228 '\u{3b5}',
6229 '\u{2580}',
6230 '\u{3b6}',
6231 '\u{3b7}',
6232 '\u{3b8}',
6233 '\u{3b9}',
6234 '\u{3ba}',
6235 '\u{3bb}',
6236 '\u{3bc}',
6237 '\u{3bd}',
6238 '\u{3be}',
6239 '\u{3bf}',
6240 '\u{3c0}',
6241 '\u{3c1}',
6242 '\u{3c3}',
6243 '\u{3c2}',
6244 '\u{3c4}',
6245 '\u{b4}',
6246 '\u{ad}',
6247 '\u{b1}',
6248 '\u{3c5}',
6249 '\u{3c6}',
6250 '\u{3c7}',
6251 '\u{a7}',
6252 '\u{3c8}',
6253 '\u{b8}',
6254 '\u{b0}',
6255 '\u{a8}',
6256 '\u{3c9}',
6257 '\u{3cb}',
6258 '\u{3b0}',
6259 '\u{3ce}',
6260 '\u{25a0}',
6261 '\u{a0}',
6262];
6263const IBM_851_ENCODE_TABLE: &[(u16, u8)] = &[
6264 (0, 0),
6265 (1, 1),
6266 (2, 2),
6267 (3, 3),
6268 (4, 4),
6269 (5, 5),
6270 (6, 6),
6271 (7, 7),
6272 (8, 8),
6273 (9, 9),
6274 (10, 10),
6275 (11, 11),
6276 (12, 12),
6277 (13, 13),
6278 (14, 14),
6279 (15, 15),
6280 (16, 16),
6281 (17, 17),
6282 (18, 18),
6283 (19, 19),
6284 (20, 20),
6285 (21, 21),
6286 (22, 22),
6287 (23, 23),
6288 (24, 24),
6289 (25, 25),
6290 (26, 127),
6291 (27, 27),
6292 (28, 26),
6293 (29, 29),
6294 (30, 30),
6295 (31, 31),
6296 (32, 32),
6297 (33, 33),
6298 (34, 34),
6299 (35, 35),
6300 (36, 36),
6301 (37, 37),
6302 (38, 38),
6303 (39, 39),
6304 (40, 40),
6305 (41, 41),
6306 (42, 42),
6307 (43, 43),
6308 (44, 44),
6309 (45, 45),
6310 (46, 46),
6311 (47, 47),
6312 (48, 48),
6313 (49, 49),
6314 (50, 50),
6315 (51, 51),
6316 (52, 52),
6317 (53, 53),
6318 (54, 54),
6319 (55, 55),
6320 (56, 56),
6321 (57, 57),
6322 (58, 58),
6323 (59, 59),
6324 (60, 60),
6325 (61, 61),
6326 (62, 62),
6327 (63, 63),
6328 (64, 64),
6329 (65, 65),
6330 (66, 66),
6331 (67, 67),
6332 (68, 68),
6333 (69, 69),
6334 (70, 70),
6335 (71, 71),
6336 (72, 72),
6337 (73, 73),
6338 (74, 74),
6339 (75, 75),
6340 (76, 76),
6341 (77, 77),
6342 (78, 78),
6343 (79, 79),
6344 (80, 80),
6345 (81, 81),
6346 (82, 82),
6347 (83, 83),
6348 (84, 84),
6349 (85, 85),
6350 (86, 86),
6351 (87, 87),
6352 (88, 88),
6353 (89, 89),
6354 (90, 90),
6355 (91, 91),
6356 (92, 92),
6357 (93, 93),
6358 (94, 94),
6359 (95, 95),
6360 (96, 96),
6361 (97, 97),
6362 (98, 98),
6363 (99, 99),
6364 (100, 100),
6365 (101, 101),
6366 (102, 102),
6367 (103, 103),
6368 (104, 104),
6369 (105, 105),
6370 (106, 106),
6371 (107, 107),
6372 (108, 108),
6373 (109, 109),
6374 (110, 110),
6375 (111, 111),
6376 (112, 112),
6377 (113, 113),
6378 (114, 114),
6379 (115, 115),
6380 (116, 116),
6381 (117, 117),
6382 (118, 118),
6383 (119, 119),
6384 (120, 120),
6385 (121, 121),
6386 (122, 122),
6387 (123, 123),
6388 (124, 124),
6389 (125, 125),
6390 (126, 126),
6391 (127, 28),
6392 (160, 255),
6393 (163, 156),
6394 (167, 245),
6395 (168, 249),
6396 (171, 174),
6397 (173, 240),
6398 (176, 248),
6399 (177, 241),
6400 (180, 239),
6401 (184, 247),
6402 (187, 175),
6403 (189, 171),
6404 (196, 142),
6405 (199, 128),
6406 (214, 153),
6407 (220, 154),
6408 (224, 133),
6409 (226, 131),
6410 (228, 132),
6411 (231, 135),
6412 (232, 138),
6413 (233, 130),
6414 (234, 136),
6415 (235, 137),
6416 (238, 140),
6417 (239, 139),
6418 (244, 147),
6419 (246, 148),
6420 (249, 151),
6421 (251, 150),
6422 (252, 129),
6423 (902, 134),
6424 (904, 141),
6425 (905, 143),
6426 (906, 144),
6427 (908, 146),
6428 (910, 149),
6429 (911, 152),
6430 (912, 161),
6431 (913, 164),
6432 (914, 165),
6433 (915, 166),
6434 (916, 167),
6435 (917, 168),
6436 (918, 169),
6437 (919, 170),
6438 (920, 172),
6439 (921, 173),
6440 (922, 181),
6441 (923, 182),
6442 (924, 183),
6443 (925, 184),
6444 (926, 189),
6445 (927, 190),
6446 (928, 198),
6447 (929, 199),
6448 (931, 207),
6449 (932, 208),
6450 (933, 209),
6451 (934, 210),
6452 (935, 211),
6453 (936, 212),
6454 (937, 213),
6455 (940, 155),
6456 (941, 157),
6457 (942, 158),
6458 (943, 159),
6459 (944, 252),
6460 (945, 214),
6461 (946, 215),
6462 (947, 216),
6463 (948, 221),
6464 (949, 222),
6465 (950, 224),
6466 (951, 225),
6467 (952, 226),
6468 (953, 227),
6469 (954, 228),
6470 (955, 229),
6471 (956, 230),
6472 (957, 231),
6473 (958, 232),
6474 (959, 233),
6475 (960, 234),
6476 (961, 235),
6477 (962, 237),
6478 (963, 236),
6479 (964, 238),
6480 (965, 242),
6481 (966, 243),
6482 (967, 244),
6483 (968, 246),
6484 (969, 250),
6485 (970, 160),
6486 (971, 251),
6487 (972, 162),
6488 (973, 163),
6489 (974, 253),
6490 (9472, 196),
6491 (9474, 179),
6492 (9484, 218),
6493 (9488, 191),
6494 (9492, 192),
6495 (9496, 217),
6496 (9500, 195),
6497 (9508, 180),
6498 (9516, 194),
6499 (9524, 193),
6500 (9532, 197),
6501 (9552, 205),
6502 (9553, 186),
6503 (9556, 201),
6504 (9559, 187),
6505 (9562, 200),
6506 (9565, 188),
6507 (9568, 204),
6508 (9571, 185),
6509 (9574, 203),
6510 (9577, 202),
6511 (9580, 206),
6512 (9600, 223),
6513 (9604, 220),
6514 (9608, 219),
6515 (9617, 176),
6516 (9618, 177),
6517 (9619, 178),
6518 (9632, 254),
6519];
6520
6521impl_ebcdic_encoder_and_decoder!(
6522 IBM852,
6523 "IBM852",
6524 IBM852Encoder,
6525 IBM852Decoder,
6526 IBM_852_ENCODE_TABLE,
6527 IBM_852_DECODE_TABLE
6528);
6529const IBM_852_DECODE_TABLE: [char; 256] = [
6530 '\u{0}',
6531 '\u{1}',
6532 '\u{2}',
6533 '\u{3}',
6534 '\u{4}',
6535 '\u{5}',
6536 '\u{6}',
6537 '\u{7}',
6538 '\u{8}',
6539 '\u{9}',
6540 '\u{a}',
6541 '\u{b}',
6542 '\u{c}',
6543 '\u{d}',
6544 '\u{e}',
6545 '\u{f}',
6546 '\u{10}',
6547 '\u{11}',
6548 '\u{12}',
6549 '\u{13}',
6550 '\u{14}',
6551 '\u{15}',
6552 '\u{16}',
6553 '\u{17}',
6554 '\u{18}',
6555 '\u{19}',
6556 '\u{1c}',
6557 '\u{1b}',
6558 '\u{7f}',
6559 '\u{1d}',
6560 '\u{1e}',
6561 '\u{1f}',
6562 '\u{20}',
6563 '\u{21}',
6564 '\u{22}',
6565 '\u{23}',
6566 '\u{24}',
6567 '\u{25}',
6568 '\u{26}',
6569 '\u{27}',
6570 '\u{28}',
6571 '\u{29}',
6572 '\u{2a}',
6573 '\u{2b}',
6574 '\u{2c}',
6575 '\u{2d}',
6576 '\u{2e}',
6577 '\u{2f}',
6578 '\u{30}',
6579 '\u{31}',
6580 '\u{32}',
6581 '\u{33}',
6582 '\u{34}',
6583 '\u{35}',
6584 '\u{36}',
6585 '\u{37}',
6586 '\u{38}',
6587 '\u{39}',
6588 '\u{3a}',
6589 '\u{3b}',
6590 '\u{3c}',
6591 '\u{3d}',
6592 '\u{3e}',
6593 '\u{3f}',
6594 '\u{40}',
6595 '\u{41}',
6596 '\u{42}',
6597 '\u{43}',
6598 '\u{44}',
6599 '\u{45}',
6600 '\u{46}',
6601 '\u{47}',
6602 '\u{48}',
6603 '\u{49}',
6604 '\u{4a}',
6605 '\u{4b}',
6606 '\u{4c}',
6607 '\u{4d}',
6608 '\u{4e}',
6609 '\u{4f}',
6610 '\u{50}',
6611 '\u{51}',
6612 '\u{52}',
6613 '\u{53}',
6614 '\u{54}',
6615 '\u{55}',
6616 '\u{56}',
6617 '\u{57}',
6618 '\u{58}',
6619 '\u{59}',
6620 '\u{5a}',
6621 '\u{5b}',
6622 '\u{5c}',
6623 '\u{5d}',
6624 '\u{5e}',
6625 '\u{5f}',
6626 '\u{60}',
6627 '\u{61}',
6628 '\u{62}',
6629 '\u{63}',
6630 '\u{64}',
6631 '\u{65}',
6632 '\u{66}',
6633 '\u{67}',
6634 '\u{68}',
6635 '\u{69}',
6636 '\u{6a}',
6637 '\u{6b}',
6638 '\u{6c}',
6639 '\u{6d}',
6640 '\u{6e}',
6641 '\u{6f}',
6642 '\u{70}',
6643 '\u{71}',
6644 '\u{72}',
6645 '\u{73}',
6646 '\u{74}',
6647 '\u{75}',
6648 '\u{76}',
6649 '\u{77}',
6650 '\u{78}',
6651 '\u{79}',
6652 '\u{7a}',
6653 '\u{7b}',
6654 '\u{7c}',
6655 '\u{7d}',
6656 '\u{7e}',
6657 '\u{1a}',
6658 '\u{c7}',
6659 '\u{fc}',
6660 '\u{e9}',
6661 '\u{e2}',
6662 '\u{e4}',
6663 '\u{16f}',
6664 '\u{107}',
6665 '\u{e7}',
6666 '\u{142}',
6667 '\u{eb}',
6668 '\u{150}',
6669 '\u{151}',
6670 '\u{ee}',
6671 '\u{179}',
6672 '\u{c4}',
6673 '\u{106}',
6674 '\u{c9}',
6675 '\u{139}',
6676 '\u{13a}',
6677 '\u{f4}',
6678 '\u{f6}',
6679 '\u{13d}',
6680 '\u{13e}',
6681 '\u{15a}',
6682 '\u{15b}',
6683 '\u{d6}',
6684 '\u{dc}',
6685 '\u{164}',
6686 '\u{165}',
6687 '\u{141}',
6688 '\u{d7}',
6689 '\u{10d}',
6690 '\u{e1}',
6691 '\u{ed}',
6692 '\u{f3}',
6693 '\u{fa}',
6694 '\u{104}',
6695 '\u{105}',
6696 '\u{17d}',
6697 '\u{17e}',
6698 '\u{118}',
6699 '\u{119}',
6700 char::REPLACEMENT_CHARACTER,
6701 '\u{17a}',
6702 '\u{10c}',
6703 '\u{15f}',
6704 '\u{ab}',
6705 '\u{bb}',
6706 '\u{2591}',
6707 '\u{2592}',
6708 '\u{2593}',
6709 '\u{2502}',
6710 '\u{2524}',
6711 '\u{c1}',
6712 '\u{c2}',
6713 '\u{11a}',
6714 '\u{15e}',
6715 '\u{2563}',
6716 '\u{2551}',
6717 '\u{2557}',
6718 '\u{255d}',
6719 '\u{17b}',
6720 '\u{17c}',
6721 '\u{2510}',
6722 '\u{2514}',
6723 '\u{2534}',
6724 '\u{252c}',
6725 '\u{251c}',
6726 '\u{2500}',
6727 '\u{253c}',
6728 '\u{102}',
6729 '\u{103}',
6730 '\u{255a}',
6731 '\u{2554}',
6732 '\u{2569}',
6733 '\u{2566}',
6734 '\u{2560}',
6735 '\u{2550}',
6736 '\u{256c}',
6737 '\u{a4}',
6738 '\u{111}',
6739 '\u{110}',
6740 '\u{10e}',
6741 '\u{cb}',
6742 '\u{10f}',
6743 '\u{147}',
6744 '\u{cd}',
6745 '\u{ce}',
6746 '\u{11b}',
6747 '\u{2518}',
6748 '\u{250c}',
6749 '\u{2588}',
6750 '\u{2584}',
6751 '\u{162}',
6752 '\u{16e}',
6753 '\u{2580}',
6754 '\u{d3}',
6755 '\u{df}',
6756 '\u{d4}',
6757 '\u{143}',
6758 '\u{144}',
6759 '\u{148}',
6760 '\u{160}',
6761 '\u{161}',
6762 '\u{154}',
6763 '\u{da}',
6764 '\u{155}',
6765 '\u{170}',
6766 '\u{fd}',
6767 '\u{dd}',
6768 '\u{163}',
6769 '\u{b4}',
6770 '\u{ad}',
6771 '\u{2dd}',
6772 '\u{2db}',
6773 '\u{2c7}',
6774 '\u{2d8}',
6775 '\u{a7}',
6776 '\u{f7}',
6777 '\u{b8}',
6778 '\u{b0}',
6779 '\u{a8}',
6780 '\u{2d9}',
6781 '\u{171}',
6782 '\u{158}',
6783 '\u{159}',
6784 '\u{25a0}',
6785 '\u{a0}',
6786];
6787const IBM_852_ENCODE_TABLE: &[(u16, u8)] = &[
6788 (0, 0),
6789 (1, 1),
6790 (2, 2),
6791 (3, 3),
6792 (4, 4),
6793 (5, 5),
6794 (6, 6),
6795 (7, 7),
6796 (8, 8),
6797 (9, 9),
6798 (10, 10),
6799 (11, 11),
6800 (12, 12),
6801 (13, 13),
6802 (14, 14),
6803 (15, 15),
6804 (16, 16),
6805 (17, 17),
6806 (18, 18),
6807 (19, 19),
6808 (20, 20),
6809 (21, 21),
6810 (22, 22),
6811 (23, 23),
6812 (24, 24),
6813 (25, 25),
6814 (26, 127),
6815 (27, 27),
6816 (28, 26),
6817 (29, 29),
6818 (30, 30),
6819 (31, 31),
6820 (32, 32),
6821 (33, 33),
6822 (34, 34),
6823 (35, 35),
6824 (36, 36),
6825 (37, 37),
6826 (38, 38),
6827 (39, 39),
6828 (40, 40),
6829 (41, 41),
6830 (42, 42),
6831 (43, 43),
6832 (44, 44),
6833 (45, 45),
6834 (46, 46),
6835 (47, 47),
6836 (48, 48),
6837 (49, 49),
6838 (50, 50),
6839 (51, 51),
6840 (52, 52),
6841 (53, 53),
6842 (54, 54),
6843 (55, 55),
6844 (56, 56),
6845 (57, 57),
6846 (58, 58),
6847 (59, 59),
6848 (60, 60),
6849 (61, 61),
6850 (62, 62),
6851 (63, 63),
6852 (64, 64),
6853 (65, 65),
6854 (66, 66),
6855 (67, 67),
6856 (68, 68),
6857 (69, 69),
6858 (70, 70),
6859 (71, 71),
6860 (72, 72),
6861 (73, 73),
6862 (74, 74),
6863 (75, 75),
6864 (76, 76),
6865 (77, 77),
6866 (78, 78),
6867 (79, 79),
6868 (80, 80),
6869 (81, 81),
6870 (82, 82),
6871 (83, 83),
6872 (84, 84),
6873 (85, 85),
6874 (86, 86),
6875 (87, 87),
6876 (88, 88),
6877 (89, 89),
6878 (90, 90),
6879 (91, 91),
6880 (92, 92),
6881 (93, 93),
6882 (94, 94),
6883 (95, 95),
6884 (96, 96),
6885 (97, 97),
6886 (98, 98),
6887 (99, 99),
6888 (100, 100),
6889 (101, 101),
6890 (102, 102),
6891 (103, 103),
6892 (104, 104),
6893 (105, 105),
6894 (106, 106),
6895 (107, 107),
6896 (108, 108),
6897 (109, 109),
6898 (110, 110),
6899 (111, 111),
6900 (112, 112),
6901 (113, 113),
6902 (114, 114),
6903 (115, 115),
6904 (116, 116),
6905 (117, 117),
6906 (118, 118),
6907 (119, 119),
6908 (120, 120),
6909 (121, 121),
6910 (122, 122),
6911 (123, 123),
6912 (124, 124),
6913 (125, 125),
6914 (126, 126),
6915 (127, 28),
6916 (160, 255),
6917 (164, 207),
6918 (167, 245),
6919 (168, 249),
6920 (171, 174),
6921 (173, 240),
6922 (176, 248),
6923 (180, 239),
6924 (184, 247),
6925 (187, 175),
6926 (193, 181),
6927 (194, 182),
6928 (196, 142),
6929 (199, 128),
6930 (201, 144),
6931 (203, 211),
6932 (205, 214),
6933 (206, 215),
6934 (211, 224),
6935 (212, 226),
6936 (214, 153),
6937 (215, 158),
6938 (218, 233),
6939 (220, 154),
6940 (221, 237),
6941 (223, 225),
6942 (225, 160),
6943 (226, 131),
6944 (228, 132),
6945 (231, 135),
6946 (233, 130),
6947 (235, 137),
6948 (237, 161),
6949 (238, 140),
6950 (243, 162),
6951 (244, 147),
6952 (246, 148),
6953 (247, 246),
6954 (250, 163),
6955 (252, 129),
6956 (253, 236),
6957 (258, 198),
6958 (259, 199),
6959 (260, 164),
6960 (261, 165),
6961 (262, 143),
6962 (263, 134),
6963 (268, 172),
6964 (269, 159),
6965 (270, 210),
6966 (271, 212),
6967 (272, 209),
6968 (273, 208),
6969 (280, 168),
6970 (281, 169),
6971 (282, 183),
6972 (283, 216),
6973 (313, 145),
6974 (314, 146),
6975 (317, 149),
6976 (318, 150),
6977 (321, 157),
6978 (322, 136),
6979 (323, 227),
6980 (324, 228),
6981 (327, 213),
6982 (328, 229),
6983 (336, 138),
6984 (337, 139),
6985 (340, 232),
6986 (341, 234),
6987 (344, 252),
6988 (345, 253),
6989 (346, 151),
6990 (347, 152),
6991 (350, 184),
6992 (351, 173),
6993 (352, 230),
6994 (353, 231),
6995 (354, 221),
6996 (355, 238),
6997 (356, 155),
6998 (357, 156),
6999 (366, 222),
7000 (367, 133),
7001 (368, 235),
7002 (369, 251),
7003 (377, 141),
7004 (378, 171),
7005 (379, 189),
7006 (380, 190),
7007 (381, 166),
7008 (382, 167),
7009 (711, 243),
7010 (728, 244),
7011 (729, 250),
7012 (731, 242),
7013 (733, 241),
7014 (9472, 196),
7015 (9474, 179),
7016 (9484, 218),
7017 (9488, 191),
7018 (9492, 192),
7019 (9496, 217),
7020 (9500, 195),
7021 (9508, 180),
7022 (9516, 194),
7023 (9524, 193),
7024 (9532, 197),
7025 (9552, 205),
7026 (9553, 186),
7027 (9556, 201),
7028 (9559, 187),
7029 (9562, 200),
7030 (9565, 188),
7031 (9568, 204),
7032 (9571, 185),
7033 (9574, 203),
7034 (9577, 202),
7035 (9580, 206),
7036 (9600, 223),
7037 (9604, 220),
7038 (9608, 219),
7039 (9617, 176),
7040 (9618, 177),
7041 (9619, 178),
7042 (9632, 254),
7043];
7044
7045impl_ebcdic_encoder_and_decoder!(
7046 IBM855,
7047 "IBM855",
7048 IBM855Encoder,
7049 IBM855Decoder,
7050 IBM_855_ENCODE_TABLE,
7051 IBM_855_DECODE_TABLE
7052);
7053const IBM_855_DECODE_TABLE: [char; 256] = [
7054 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{4}', '\u{5}', '\u{6}', '\u{7}', '\u{8}', '\u{9}',
7055 '\u{a}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
7056 '\u{14}', '\u{15}', '\u{16}', '\u{17}', '\u{18}', '\u{19}', '\u{1c}', '\u{1b}', '\u{7f}',
7057 '\u{1d}', '\u{1e}', '\u{1f}', '\u{20}', '\u{21}', '\u{22}', '\u{23}', '\u{24}', '\u{25}',
7058 '\u{26}', '\u{27}', '\u{28}', '\u{29}', '\u{2a}', '\u{2b}', '\u{2c}', '\u{2d}', '\u{2e}',
7059 '\u{2f}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}',
7060 '\u{38}', '\u{39}', '\u{3a}', '\u{3b}', '\u{3c}', '\u{3d}', '\u{3e}', '\u{3f}', '\u{40}',
7061 '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
7062 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
7063 '\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{5b}',
7064 '\u{5c}', '\u{5d}', '\u{5e}', '\u{5f}', '\u{60}', '\u{61}', '\u{62}', '\u{63}', '\u{64}',
7065 '\u{65}', '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}',
7066 '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{73}', '\u{74}', '\u{75}', '\u{76}',
7067 '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{7b}', '\u{7c}', '\u{7d}', '\u{7e}', '\u{1a}',
7068 '\u{452}', '\u{402}', '\u{453}', '\u{403}', '\u{451}', '\u{401}', '\u{454}', '\u{404}',
7069 '\u{455}', '\u{405}', '\u{456}', '\u{406}', '\u{457}', '\u{407}', '\u{458}', '\u{408}',
7070 '\u{459}', '\u{409}', '\u{45a}', '\u{40a}', '\u{45b}', '\u{40b}', '\u{45c}', '\u{40c}',
7071 '\u{45e}', '\u{40e}', '\u{45f}', '\u{40f}', '\u{44e}', '\u{42e}', '\u{44a}', '\u{42a}',
7072 '\u{430}', '\u{410}', '\u{431}', '\u{411}', '\u{446}', '\u{426}', '\u{434}', '\u{414}',
7073 '\u{435}', '\u{415}', '\u{444}', '\u{424}', '\u{433}', '\u{413}', '\u{ab}', '\u{bb}',
7074 '\u{2591}', '\u{2592}', '\u{2593}', '\u{2502}', '\u{2524}', '\u{445}', '\u{425}', '\u{438}',
7075 '\u{418}', '\u{2563}', '\u{2551}', '\u{2557}', '\u{255d}', '\u{439}', '\u{419}', '\u{2510}',
7076 '\u{2514}', '\u{2534}', '\u{252c}', '\u{251c}', '\u{2500}', '\u{253c}', '\u{43a}', '\u{41a}',
7077 '\u{255a}', '\u{2554}', '\u{2569}', '\u{2566}', '\u{2560}', '\u{2550}', '\u{256c}', '\u{a4}',
7078 '\u{43b}', '\u{41b}', '\u{43c}', '\u{41c}', '\u{43d}', '\u{41d}', '\u{43e}', '\u{41e}',
7079 '\u{43f}', '\u{2518}', '\u{250c}', '\u{2588}', '\u{2584}', '\u{41f}', '\u{44f}', '\u{2580}',
7080 '\u{42f}', '\u{440}', '\u{420}', '\u{441}', '\u{421}', '\u{442}', '\u{422}', '\u{443}',
7081 '\u{423}', '\u{436}', '\u{416}', '\u{432}', '\u{412}', '\u{44c}', '\u{42c}', '\u{2116}',
7082 '\u{ad}', '\u{44b}', '\u{42b}', '\u{437}', '\u{417}', '\u{448}', '\u{428}', '\u{44d}',
7083 '\u{42d}', '\u{449}', '\u{429}', '\u{447}', '\u{427}', '\u{a7}', '\u{25a0}', '\u{a0}',
7084];
7085const IBM_855_ENCODE_TABLE: &[(u16, u8)] = &[
7086 (0, 0),
7087 (1, 1),
7088 (2, 2),
7089 (3, 3),
7090 (4, 4),
7091 (5, 5),
7092 (6, 6),
7093 (7, 7),
7094 (8, 8),
7095 (9, 9),
7096 (10, 10),
7097 (11, 11),
7098 (12, 12),
7099 (13, 13),
7100 (14, 14),
7101 (15, 15),
7102 (16, 16),
7103 (17, 17),
7104 (18, 18),
7105 (19, 19),
7106 (20, 20),
7107 (21, 21),
7108 (22, 22),
7109 (23, 23),
7110 (24, 24),
7111 (25, 25),
7112 (26, 127),
7113 (27, 27),
7114 (28, 26),
7115 (29, 29),
7116 (30, 30),
7117 (31, 31),
7118 (32, 32),
7119 (33, 33),
7120 (34, 34),
7121 (35, 35),
7122 (36, 36),
7123 (37, 37),
7124 (38, 38),
7125 (39, 39),
7126 (40, 40),
7127 (41, 41),
7128 (42, 42),
7129 (43, 43),
7130 (44, 44),
7131 (45, 45),
7132 (46, 46),
7133 (47, 47),
7134 (48, 48),
7135 (49, 49),
7136 (50, 50),
7137 (51, 51),
7138 (52, 52),
7139 (53, 53),
7140 (54, 54),
7141 (55, 55),
7142 (56, 56),
7143 (57, 57),
7144 (58, 58),
7145 (59, 59),
7146 (60, 60),
7147 (61, 61),
7148 (62, 62),
7149 (63, 63),
7150 (64, 64),
7151 (65, 65),
7152 (66, 66),
7153 (67, 67),
7154 (68, 68),
7155 (69, 69),
7156 (70, 70),
7157 (71, 71),
7158 (72, 72),
7159 (73, 73),
7160 (74, 74),
7161 (75, 75),
7162 (76, 76),
7163 (77, 77),
7164 (78, 78),
7165 (79, 79),
7166 (80, 80),
7167 (81, 81),
7168 (82, 82),
7169 (83, 83),
7170 (84, 84),
7171 (85, 85),
7172 (86, 86),
7173 (87, 87),
7174 (88, 88),
7175 (89, 89),
7176 (90, 90),
7177 (91, 91),
7178 (92, 92),
7179 (93, 93),
7180 (94, 94),
7181 (95, 95),
7182 (96, 96),
7183 (97, 97),
7184 (98, 98),
7185 (99, 99),
7186 (100, 100),
7187 (101, 101),
7188 (102, 102),
7189 (103, 103),
7190 (104, 104),
7191 (105, 105),
7192 (106, 106),
7193 (107, 107),
7194 (108, 108),
7195 (109, 109),
7196 (110, 110),
7197 (111, 111),
7198 (112, 112),
7199 (113, 113),
7200 (114, 114),
7201 (115, 115),
7202 (116, 116),
7203 (117, 117),
7204 (118, 118),
7205 (119, 119),
7206 (120, 120),
7207 (121, 121),
7208 (122, 122),
7209 (123, 123),
7210 (124, 124),
7211 (125, 125),
7212 (126, 126),
7213 (127, 28),
7214 (160, 255),
7215 (164, 207),
7216 (167, 253),
7217 (171, 174),
7218 (173, 240),
7219 (187, 175),
7220 (1025, 133),
7221 (1026, 129),
7222 (1027, 131),
7223 (1028, 135),
7224 (1029, 137),
7225 (1030, 139),
7226 (1031, 141),
7227 (1032, 143),
7228 (1033, 145),
7229 (1034, 147),
7230 (1035, 149),
7231 (1036, 151),
7232 (1038, 153),
7233 (1039, 155),
7234 (1040, 161),
7235 (1041, 163),
7236 (1042, 236),
7237 (1043, 173),
7238 (1044, 167),
7239 (1045, 169),
7240 (1046, 234),
7241 (1047, 244),
7242 (1048, 184),
7243 (1049, 190),
7244 (1050, 199),
7245 (1051, 209),
7246 (1052, 211),
7247 (1053, 213),
7248 (1054, 215),
7249 (1055, 221),
7250 (1056, 226),
7251 (1057, 228),
7252 (1058, 230),
7253 (1059, 232),
7254 (1060, 171),
7255 (1061, 182),
7256 (1062, 165),
7257 (1063, 252),
7258 (1064, 246),
7259 (1065, 250),
7260 (1066, 159),
7261 (1067, 242),
7262 (1068, 238),
7263 (1069, 248),
7264 (1070, 157),
7265 (1071, 224),
7266 (1072, 160),
7267 (1073, 162),
7268 (1074, 235),
7269 (1075, 172),
7270 (1076, 166),
7271 (1077, 168),
7272 (1078, 233),
7273 (1079, 243),
7274 (1080, 183),
7275 (1081, 189),
7276 (1082, 198),
7277 (1083, 208),
7278 (1084, 210),
7279 (1085, 212),
7280 (1086, 214),
7281 (1087, 216),
7282 (1088, 225),
7283 (1089, 227),
7284 (1090, 229),
7285 (1091, 231),
7286 (1092, 170),
7287 (1093, 181),
7288 (1094, 164),
7289 (1095, 251),
7290 (1096, 245),
7291 (1097, 249),
7292 (1098, 158),
7293 (1099, 241),
7294 (1100, 237),
7295 (1101, 247),
7296 (1102, 156),
7297 (1103, 222),
7298 (1105, 132),
7299 (1106, 128),
7300 (1107, 130),
7301 (1108, 134),
7302 (1109, 136),
7303 (1110, 138),
7304 (1111, 140),
7305 (1112, 142),
7306 (1113, 144),
7307 (1114, 146),
7308 (1115, 148),
7309 (1116, 150),
7310 (1118, 152),
7311 (1119, 154),
7312 (8470, 239),
7313 (9472, 196),
7314 (9474, 179),
7315 (9484, 218),
7316 (9488, 191),
7317 (9492, 192),
7318 (9496, 217),
7319 (9500, 195),
7320 (9508, 180),
7321 (9516, 194),
7322 (9524, 193),
7323 (9532, 197),
7324 (9552, 205),
7325 (9553, 186),
7326 (9556, 201),
7327 (9559, 187),
7328 (9562, 200),
7329 (9565, 188),
7330 (9568, 204),
7331 (9571, 185),
7332 (9574, 203),
7333 (9577, 202),
7334 (9580, 206),
7335 (9600, 223),
7336 (9604, 220),
7337 (9608, 219),
7338 (9617, 176),
7339 (9618, 177),
7340 (9619, 178),
7341 (9632, 254),
7342];
7343
7344impl_ebcdic_encoder_and_decoder!(
7345 IBM857,
7346 "IBM857",
7347 IBM857Encoder,
7348 IBM857Decoder,
7349 IBM_857_ENCODE_TABLE,
7350 IBM_857_DECODE_TABLE
7351);
7352const IBM_857_DECODE_TABLE: [char; 256] = [
7353 '\u{0}',
7354 '\u{1}',
7355 '\u{2}',
7356 '\u{3}',
7357 '\u{4}',
7358 '\u{5}',
7359 '\u{6}',
7360 '\u{7}',
7361 '\u{8}',
7362 '\u{9}',
7363 '\u{a}',
7364 '\u{b}',
7365 '\u{c}',
7366 '\u{d}',
7367 '\u{e}',
7368 '\u{f}',
7369 '\u{10}',
7370 '\u{11}',
7371 '\u{12}',
7372 '\u{13}',
7373 '\u{14}',
7374 '\u{15}',
7375 '\u{16}',
7376 '\u{17}',
7377 '\u{18}',
7378 '\u{19}',
7379 '\u{1c}',
7380 '\u{1b}',
7381 '\u{7f}',
7382 '\u{1d}',
7383 '\u{1e}',
7384 '\u{1f}',
7385 '\u{20}',
7386 '\u{21}',
7387 '\u{22}',
7388 '\u{23}',
7389 '\u{24}',
7390 '\u{25}',
7391 '\u{26}',
7392 '\u{27}',
7393 '\u{28}',
7394 '\u{29}',
7395 '\u{2a}',
7396 '\u{2b}',
7397 '\u{2c}',
7398 '\u{2d}',
7399 '\u{2e}',
7400 '\u{2f}',
7401 '\u{30}',
7402 '\u{31}',
7403 '\u{32}',
7404 '\u{33}',
7405 '\u{34}',
7406 '\u{35}',
7407 '\u{36}',
7408 '\u{37}',
7409 '\u{38}',
7410 '\u{39}',
7411 '\u{3a}',
7412 '\u{3b}',
7413 '\u{3c}',
7414 '\u{3d}',
7415 '\u{3e}',
7416 '\u{3f}',
7417 '\u{40}',
7418 '\u{41}',
7419 '\u{42}',
7420 '\u{43}',
7421 '\u{44}',
7422 '\u{45}',
7423 '\u{46}',
7424 '\u{47}',
7425 '\u{48}',
7426 '\u{49}',
7427 '\u{4a}',
7428 '\u{4b}',
7429 '\u{4c}',
7430 '\u{4d}',
7431 '\u{4e}',
7432 '\u{4f}',
7433 '\u{50}',
7434 '\u{51}',
7435 '\u{52}',
7436 '\u{53}',
7437 '\u{54}',
7438 '\u{55}',
7439 '\u{56}',
7440 '\u{57}',
7441 '\u{58}',
7442 '\u{59}',
7443 '\u{5a}',
7444 '\u{5b}',
7445 '\u{5c}',
7446 '\u{5d}',
7447 '\u{5e}',
7448 '\u{5f}',
7449 '\u{60}',
7450 '\u{61}',
7451 '\u{62}',
7452 '\u{63}',
7453 '\u{64}',
7454 '\u{65}',
7455 '\u{66}',
7456 '\u{67}',
7457 '\u{68}',
7458 '\u{69}',
7459 '\u{6a}',
7460 '\u{6b}',
7461 '\u{6c}',
7462 '\u{6d}',
7463 '\u{6e}',
7464 '\u{6f}',
7465 '\u{70}',
7466 '\u{71}',
7467 '\u{72}',
7468 '\u{73}',
7469 '\u{74}',
7470 '\u{75}',
7471 '\u{76}',
7472 '\u{77}',
7473 '\u{78}',
7474 '\u{79}',
7475 '\u{7a}',
7476 '\u{7b}',
7477 '\u{7c}',
7478 '\u{7d}',
7479 '\u{7e}',
7480 '\u{1a}',
7481 '\u{c7}',
7482 '\u{fc}',
7483 '\u{e9}',
7484 '\u{e2}',
7485 '\u{e4}',
7486 '\u{e0}',
7487 '\u{e5}',
7488 '\u{e7}',
7489 '\u{ea}',
7490 '\u{eb}',
7491 '\u{e8}',
7492 '\u{ef}',
7493 '\u{ee}',
7494 '\u{131}',
7495 '\u{c4}',
7496 '\u{c5}',
7497 '\u{c9}',
7498 '\u{e6}',
7499 '\u{c6}',
7500 '\u{f4}',
7501 '\u{f6}',
7502 '\u{f2}',
7503 '\u{fb}',
7504 '\u{f9}',
7505 '\u{130}',
7506 '\u{d6}',
7507 '\u{dc}',
7508 '\u{f8}',
7509 '\u{a3}',
7510 '\u{d8}',
7511 '\u{15e}',
7512 '\u{15f}',
7513 '\u{e1}',
7514 '\u{ed}',
7515 '\u{f3}',
7516 '\u{fa}',
7517 '\u{f1}',
7518 '\u{d1}',
7519 '\u{11e}',
7520 '\u{11f}',
7521 '\u{bf}',
7522 '\u{ae}',
7523 '\u{ac}',
7524 '\u{bd}',
7525 '\u{bc}',
7526 '\u{a1}',
7527 '\u{ab}',
7528 '\u{bb}',
7529 '\u{2591}',
7530 '\u{2592}',
7531 '\u{2593}',
7532 '\u{2502}',
7533 '\u{2524}',
7534 '\u{c1}',
7535 '\u{c2}',
7536 '\u{c0}',
7537 '\u{a9}',
7538 '\u{2563}',
7539 '\u{2551}',
7540 '\u{2557}',
7541 '\u{255d}',
7542 '\u{a2}',
7543 '\u{a5}',
7544 '\u{2510}',
7545 '\u{2514}',
7546 '\u{2534}',
7547 '\u{252c}',
7548 '\u{251c}',
7549 '\u{2500}',
7550 '\u{253c}',
7551 '\u{e3}',
7552 '\u{c3}',
7553 '\u{255a}',
7554 '\u{2554}',
7555 '\u{2569}',
7556 '\u{2566}',
7557 '\u{2560}',
7558 '\u{2550}',
7559 '\u{256c}',
7560 '\u{a4}',
7561 '\u{ba}',
7562 '\u{aa}',
7563 '\u{ca}',
7564 '\u{cb}',
7565 '\u{c8}',
7566 char::REPLACEMENT_CHARACTER,
7567 '\u{cd}',
7568 '\u{ce}',
7569 '\u{cf}',
7570 '\u{2518}',
7571 '\u{250c}',
7572 '\u{2588}',
7573 '\u{2584}',
7574 '\u{a6}',
7575 '\u{cc}',
7576 '\u{2580}',
7577 '\u{d3}',
7578 '\u{df}',
7579 '\u{d4}',
7580 '\u{d2}',
7581 '\u{f5}',
7582 '\u{d5}',
7583 '\u{b5}',
7584 char::REPLACEMENT_CHARACTER,
7585 '\u{d7}',
7586 '\u{da}',
7587 '\u{db}',
7588 '\u{d9}',
7589 '\u{ec}',
7590 '\u{ff}',
7591 '\u{af}',
7592 '\u{b4}',
7593 '\u{ad}',
7594 '\u{b1}',
7595 char::REPLACEMENT_CHARACTER,
7596 '\u{be}',
7597 '\u{b6}',
7598 '\u{a7}',
7599 '\u{f7}',
7600 '\u{b8}',
7601 '\u{b0}',
7602 '\u{a8}',
7603 '\u{b7}',
7604 '\u{b9}',
7605 '\u{b3}',
7606 '\u{b2}',
7607 '\u{25a0}',
7608 '\u{a0}',
7609];
7610const IBM_857_ENCODE_TABLE: &[(u16, u8)] = &[
7611 (0, 0),
7612 (1, 1),
7613 (2, 2),
7614 (3, 3),
7615 (4, 4),
7616 (5, 5),
7617 (6, 6),
7618 (7, 7),
7619 (8, 8),
7620 (9, 9),
7621 (10, 10),
7622 (11, 11),
7623 (12, 12),
7624 (13, 13),
7625 (14, 14),
7626 (15, 15),
7627 (16, 16),
7628 (17, 17),
7629 (18, 18),
7630 (19, 19),
7631 (20, 20),
7632 (21, 21),
7633 (22, 22),
7634 (23, 23),
7635 (24, 24),
7636 (25, 25),
7637 (26, 127),
7638 (27, 27),
7639 (28, 26),
7640 (29, 29),
7641 (30, 30),
7642 (31, 31),
7643 (32, 32),
7644 (33, 33),
7645 (34, 34),
7646 (35, 35),
7647 (36, 36),
7648 (37, 37),
7649 (38, 38),
7650 (39, 39),
7651 (40, 40),
7652 (41, 41),
7653 (42, 42),
7654 (43, 43),
7655 (44, 44),
7656 (45, 45),
7657 (46, 46),
7658 (47, 47),
7659 (48, 48),
7660 (49, 49),
7661 (50, 50),
7662 (51, 51),
7663 (52, 52),
7664 (53, 53),
7665 (54, 54),
7666 (55, 55),
7667 (56, 56),
7668 (57, 57),
7669 (58, 58),
7670 (59, 59),
7671 (60, 60),
7672 (61, 61),
7673 (62, 62),
7674 (63, 63),
7675 (64, 64),
7676 (65, 65),
7677 (66, 66),
7678 (67, 67),
7679 (68, 68),
7680 (69, 69),
7681 (70, 70),
7682 (71, 71),
7683 (72, 72),
7684 (73, 73),
7685 (74, 74),
7686 (75, 75),
7687 (76, 76),
7688 (77, 77),
7689 (78, 78),
7690 (79, 79),
7691 (80, 80),
7692 (81, 81),
7693 (82, 82),
7694 (83, 83),
7695 (84, 84),
7696 (85, 85),
7697 (86, 86),
7698 (87, 87),
7699 (88, 88),
7700 (89, 89),
7701 (90, 90),
7702 (91, 91),
7703 (92, 92),
7704 (93, 93),
7705 (94, 94),
7706 (95, 95),
7707 (96, 96),
7708 (97, 97),
7709 (98, 98),
7710 (99, 99),
7711 (100, 100),
7712 (101, 101),
7713 (102, 102),
7714 (103, 103),
7715 (104, 104),
7716 (105, 105),
7717 (106, 106),
7718 (107, 107),
7719 (108, 108),
7720 (109, 109),
7721 (110, 110),
7722 (111, 111),
7723 (112, 112),
7724 (113, 113),
7725 (114, 114),
7726 (115, 115),
7727 (116, 116),
7728 (117, 117),
7729 (118, 118),
7730 (119, 119),
7731 (120, 120),
7732 (121, 121),
7733 (122, 122),
7734 (123, 123),
7735 (124, 124),
7736 (125, 125),
7737 (126, 126),
7738 (127, 28),
7739 (160, 255),
7740 (161, 173),
7741 (162, 189),
7742 (163, 156),
7743 (164, 207),
7744 (165, 190),
7745 (166, 221),
7746 (167, 245),
7747 (168, 249),
7748 (169, 184),
7749 (170, 209),
7750 (171, 174),
7751 (172, 170),
7752 (173, 240),
7753 (174, 169),
7754 (175, 238),
7755 (176, 248),
7756 (177, 241),
7757 (178, 253),
7758 (179, 252),
7759 (180, 239),
7760 (181, 230),
7761 (182, 244),
7762 (183, 250),
7763 (184, 247),
7764 (185, 251),
7765 (186, 208),
7766 (187, 175),
7767 (188, 172),
7768 (189, 171),
7769 (190, 243),
7770 (191, 168),
7771 (192, 183),
7772 (193, 181),
7773 (194, 182),
7774 (195, 199),
7775 (196, 142),
7776 (197, 143),
7777 (198, 146),
7778 (199, 128),
7779 (200, 212),
7780 (201, 144),
7781 (202, 210),
7782 (203, 211),
7783 (204, 222),
7784 (205, 214),
7785 (206, 215),
7786 (207, 216),
7787 (209, 165),
7788 (210, 227),
7789 (211, 224),
7790 (212, 226),
7791 (213, 229),
7792 (214, 153),
7793 (215, 232),
7794 (216, 157),
7795 (217, 235),
7796 (218, 233),
7797 (219, 234),
7798 (220, 154),
7799 (223, 225),
7800 (224, 133),
7801 (225, 160),
7802 (226, 131),
7803 (227, 198),
7804 (228, 132),
7805 (229, 134),
7806 (230, 145),
7807 (231, 135),
7808 (232, 138),
7809 (233, 130),
7810 (234, 136),
7811 (235, 137),
7812 (236, 236),
7813 (237, 161),
7814 (238, 140),
7815 (239, 139),
7816 (241, 164),
7817 (242, 149),
7818 (243, 162),
7819 (244, 147),
7820 (245, 228),
7821 (246, 148),
7822 (247, 246),
7823 (248, 155),
7824 (249, 151),
7825 (250, 163),
7826 (251, 150),
7827 (252, 129),
7828 (255, 237),
7829 (286, 166),
7830 (287, 167),
7831 (304, 152),
7832 (305, 141),
7833 (350, 158),
7834 (351, 159),
7835 (9472, 196),
7836 (9474, 179),
7837 (9484, 218),
7838 (9488, 191),
7839 (9492, 192),
7840 (9496, 217),
7841 (9500, 195),
7842 (9508, 180),
7843 (9516, 194),
7844 (9524, 193),
7845 (9532, 197),
7846 (9552, 205),
7847 (9553, 186),
7848 (9556, 201),
7849 (9559, 187),
7850 (9562, 200),
7851 (9565, 188),
7852 (9568, 204),
7853 (9571, 185),
7854 (9574, 203),
7855 (9577, 202),
7856 (9580, 206),
7857 (9600, 223),
7858 (9604, 220),
7859 (9608, 219),
7860 (9617, 176),
7861 (9618, 177),
7862 (9619, 178),
7863 (9632, 254),
7864];
7865
7866impl_ebcdic_encoder_and_decoder!(
7867 IBM860,
7868 "IBM860",
7869 IBM860Encoder,
7870 IBM860Decoder,
7871 IBM_860_ENCODE_TABLE,
7872 IBM_860_DECODE_TABLE
7873);
7874const IBM_860_DECODE_TABLE: [char; 256] = [
7875 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{4}', '\u{5}', '\u{6}', '\u{7}', '\u{8}', '\u{9}',
7876 '\u{a}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
7877 '\u{14}', '\u{15}', '\u{16}', '\u{17}', '\u{18}', '\u{19}', '\u{1c}', '\u{1b}', '\u{7f}',
7878 '\u{1d}', '\u{1e}', '\u{1f}', '\u{20}', '\u{21}', '\u{22}', '\u{23}', '\u{24}', '\u{25}',
7879 '\u{26}', '\u{27}', '\u{28}', '\u{29}', '\u{2a}', '\u{2b}', '\u{2c}', '\u{2d}', '\u{2e}',
7880 '\u{2f}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}',
7881 '\u{38}', '\u{39}', '\u{3a}', '\u{3b}', '\u{3c}', '\u{3d}', '\u{3e}', '\u{3f}', '\u{40}',
7882 '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
7883 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
7884 '\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{5b}',
7885 '\u{5c}', '\u{5d}', '\u{5e}', '\u{5f}', '\u{60}', '\u{61}', '\u{62}', '\u{63}', '\u{64}',
7886 '\u{65}', '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}',
7887 '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{73}', '\u{74}', '\u{75}', '\u{76}',
7888 '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{7b}', '\u{7c}', '\u{7d}', '\u{7e}', '\u{1a}',
7889 '\u{c7}', '\u{fc}', '\u{e9}', '\u{e2}', '\u{e3}', '\u{e0}', '\u{c1}', '\u{e7}', '\u{ea}',
7890 '\u{ca}', '\u{e8}', '\u{cd}', '\u{d4}', '\u{ec}', '\u{c3}', '\u{c2}', '\u{c9}', '\u{c0}',
7891 '\u{c8}', '\u{f4}', '\u{f5}', '\u{f2}', '\u{da}', '\u{f9}', '\u{cc}', '\u{d5}', '\u{dc}',
7892 '\u{a2}', '\u{a3}', '\u{d9}', '\u{20a7}', '\u{d3}', '\u{e1}', '\u{ed}', '\u{f3}', '\u{fa}',
7893 '\u{f1}', '\u{d1}', '\u{aa}', '\u{ba}', '\u{bf}', '\u{d2}', '\u{ac}', '\u{bd}', '\u{bc}',
7894 '\u{a1}', '\u{ab}', '\u{bb}', '\u{2591}', '\u{2592}', '\u{2593}', '\u{2502}', '\u{2524}',
7895 '\u{2561}', '\u{2562}', '\u{2556}', '\u{2555}', '\u{2563}', '\u{2551}', '\u{2557}', '\u{255d}',
7896 '\u{255c}', '\u{255b}', '\u{2510}', '\u{2514}', '\u{2534}', '\u{252c}', '\u{251c}', '\u{2500}',
7897 '\u{253c}', '\u{255e}', '\u{255f}', '\u{255a}', '\u{2554}', '\u{2569}', '\u{2566}', '\u{2560}',
7898 '\u{2550}', '\u{256c}', '\u{2567}', '\u{2568}', '\u{2564}', '\u{2565}', '\u{2559}', '\u{2558}',
7899 '\u{2552}', '\u{2553}', '\u{256b}', '\u{256a}', '\u{2518}', '\u{250c}', '\u{2588}', '\u{2584}',
7900 '\u{258c}', '\u{2590}', '\u{2580}', '\u{3b1}', '\u{df}', '\u{393}', '\u{3c0}', '\u{3a3}',
7901 '\u{3c3}', '\u{3bc}', '\u{3c4}', '\u{3a6}', '\u{398}', '\u{3a9}', '\u{3b4}', '\u{221e}',
7902 '\u{3c6}', '\u{3b5}', '\u{2229}', '\u{2261}', '\u{b1}', '\u{2265}', '\u{2264}', '\u{2320}',
7903 '\u{2321}', '\u{f7}', '\u{2248}', '\u{b0}', '\u{2219}', '\u{b7}', '\u{221a}', '\u{207f}',
7904 '\u{b2}', '\u{25a0}', '\u{a0}',
7905];
7906const IBM_860_ENCODE_TABLE: &[(u16, u8)] = &[
7907 (0, 0),
7908 (1, 1),
7909 (2, 2),
7910 (3, 3),
7911 (4, 4),
7912 (5, 5),
7913 (6, 6),
7914 (7, 7),
7915 (8, 8),
7916 (9, 9),
7917 (10, 10),
7918 (11, 11),
7919 (12, 12),
7920 (13, 13),
7921 (14, 14),
7922 (15, 15),
7923 (16, 16),
7924 (17, 17),
7925 (18, 18),
7926 (19, 19),
7927 (20, 20),
7928 (21, 21),
7929 (22, 22),
7930 (23, 23),
7931 (24, 24),
7932 (25, 25),
7933 (26, 127),
7934 (27, 27),
7935 (28, 26),
7936 (29, 29),
7937 (30, 30),
7938 (31, 31),
7939 (32, 32),
7940 (33, 33),
7941 (34, 34),
7942 (35, 35),
7943 (36, 36),
7944 (37, 37),
7945 (38, 38),
7946 (39, 39),
7947 (40, 40),
7948 (41, 41),
7949 (42, 42),
7950 (43, 43),
7951 (44, 44),
7952 (45, 45),
7953 (46, 46),
7954 (47, 47),
7955 (48, 48),
7956 (49, 49),
7957 (50, 50),
7958 (51, 51),
7959 (52, 52),
7960 (53, 53),
7961 (54, 54),
7962 (55, 55),
7963 (56, 56),
7964 (57, 57),
7965 (58, 58),
7966 (59, 59),
7967 (60, 60),
7968 (61, 61),
7969 (62, 62),
7970 (63, 63),
7971 (64, 64),
7972 (65, 65),
7973 (66, 66),
7974 (67, 67),
7975 (68, 68),
7976 (69, 69),
7977 (70, 70),
7978 (71, 71),
7979 (72, 72),
7980 (73, 73),
7981 (74, 74),
7982 (75, 75),
7983 (76, 76),
7984 (77, 77),
7985 (78, 78),
7986 (79, 79),
7987 (80, 80),
7988 (81, 81),
7989 (82, 82),
7990 (83, 83),
7991 (84, 84),
7992 (85, 85),
7993 (86, 86),
7994 (87, 87),
7995 (88, 88),
7996 (89, 89),
7997 (90, 90),
7998 (91, 91),
7999 (92, 92),
8000 (93, 93),
8001 (94, 94),
8002 (95, 95),
8003 (96, 96),
8004 (97, 97),
8005 (98, 98),
8006 (99, 99),
8007 (100, 100),
8008 (101, 101),
8009 (102, 102),
8010 (103, 103),
8011 (104, 104),
8012 (105, 105),
8013 (106, 106),
8014 (107, 107),
8015 (108, 108),
8016 (109, 109),
8017 (110, 110),
8018 (111, 111),
8019 (112, 112),
8020 (113, 113),
8021 (114, 114),
8022 (115, 115),
8023 (116, 116),
8024 (117, 117),
8025 (118, 118),
8026 (119, 119),
8027 (120, 120),
8028 (121, 121),
8029 (122, 122),
8030 (123, 123),
8031 (124, 124),
8032 (125, 125),
8033 (126, 126),
8034 (127, 28),
8035 (160, 255),
8036 (161, 173),
8037 (162, 155),
8038 (163, 156),
8039 (170, 166),
8040 (171, 174),
8041 (172, 170),
8042 (176, 248),
8043 (177, 241),
8044 (178, 253),
8045 (183, 250),
8046 (186, 167),
8047 (187, 175),
8048 (188, 172),
8049 (189, 171),
8050 (191, 168),
8051 (192, 145),
8052 (193, 134),
8053 (194, 143),
8054 (195, 142),
8055 (199, 128),
8056 (200, 146),
8057 (201, 144),
8058 (202, 137),
8059 (204, 152),
8060 (205, 139),
8061 (209, 165),
8062 (210, 169),
8063 (211, 159),
8064 (212, 140),
8065 (213, 153),
8066 (217, 157),
8067 (218, 150),
8068 (220, 154),
8069 (223, 225),
8070 (224, 133),
8071 (225, 160),
8072 (226, 131),
8073 (227, 132),
8074 (231, 135),
8075 (232, 138),
8076 (233, 130),
8077 (234, 136),
8078 (236, 141),
8079 (237, 161),
8080 (241, 164),
8081 (242, 149),
8082 (243, 162),
8083 (244, 147),
8084 (245, 148),
8085 (247, 246),
8086 (249, 151),
8087 (250, 163),
8088 (252, 129),
8089 (915, 226),
8090 (920, 233),
8091 (931, 228),
8092 (934, 232),
8093 (937, 234),
8094 (945, 224),
8095 (948, 235),
8096 (949, 238),
8097 (956, 230),
8098 (960, 227),
8099 (963, 229),
8100 (964, 231),
8101 (966, 237),
8102 (8319, 252),
8103 (8359, 158),
8104 (8729, 249),
8105 (8730, 251),
8106 (8734, 236),
8107 (8745, 239),
8108 (8776, 247),
8109 (8801, 240),
8110 (8804, 243),
8111 (8805, 242),
8112 (8992, 244),
8113 (8993, 245),
8114 (9472, 196),
8115 (9474, 179),
8116 (9484, 218),
8117 (9488, 191),
8118 (9492, 192),
8119 (9496, 217),
8120 (9500, 195),
8121 (9508, 180),
8122 (9516, 194),
8123 (9524, 193),
8124 (9532, 197),
8125 (9552, 205),
8126 (9553, 186),
8127 (9554, 213),
8128 (9555, 214),
8129 (9556, 201),
8130 (9557, 184),
8131 (9558, 183),
8132 (9559, 187),
8133 (9560, 212),
8134 (9561, 211),
8135 (9562, 200),
8136 (9563, 190),
8137 (9564, 189),
8138 (9565, 188),
8139 (9566, 198),
8140 (9567, 199),
8141 (9568, 204),
8142 (9569, 181),
8143 (9570, 182),
8144 (9571, 185),
8145 (9572, 209),
8146 (9573, 210),
8147 (9574, 203),
8148 (9575, 207),
8149 (9576, 208),
8150 (9577, 202),
8151 (9578, 216),
8152 (9579, 215),
8153 (9580, 206),
8154 (9600, 223),
8155 (9604, 220),
8156 (9608, 219),
8157 (9612, 221),
8158 (9616, 222),
8159 (9617, 176),
8160 (9618, 177),
8161 (9619, 178),
8162 (9632, 254),
8163];
8164
8165impl_ebcdic_encoder_and_decoder!(
8166 IBM861,
8167 "IBM861",
8168 IBM861Encoder,
8169 IBM861Decoder,
8170 IBM_861_ENCODE_TABLE,
8171 IBM_861_DECODE_TABLE
8172);
8173const IBM_861_DECODE_TABLE: [char; 256] = [
8174 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{4}', '\u{5}', '\u{6}', '\u{7}', '\u{8}', '\u{9}',
8175 '\u{a}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
8176 '\u{14}', '\u{15}', '\u{16}', '\u{17}', '\u{18}', '\u{19}', '\u{1c}', '\u{1b}', '\u{7f}',
8177 '\u{1d}', '\u{1e}', '\u{1f}', '\u{20}', '\u{21}', '\u{22}', '\u{23}', '\u{24}', '\u{25}',
8178 '\u{26}', '\u{27}', '\u{28}', '\u{29}', '\u{2a}', '\u{2b}', '\u{2c}', '\u{2d}', '\u{2e}',
8179 '\u{2f}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}',
8180 '\u{38}', '\u{39}', '\u{3a}', '\u{3b}', '\u{3c}', '\u{3d}', '\u{3e}', '\u{3f}', '\u{40}',
8181 '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
8182 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
8183 '\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{5b}',
8184 '\u{5c}', '\u{5d}', '\u{5e}', '\u{5f}', '\u{60}', '\u{61}', '\u{62}', '\u{63}', '\u{64}',
8185 '\u{65}', '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}',
8186 '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{73}', '\u{74}', '\u{75}', '\u{76}',
8187 '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{7b}', '\u{7c}', '\u{7d}', '\u{7e}', '\u{1a}',
8188 '\u{c7}', '\u{fc}', '\u{e9}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e5}', '\u{e7}', '\u{ea}',
8189 '\u{eb}', '\u{e8}', '\u{d0}', '\u{f0}', '\u{de}', '\u{c4}', '\u{c5}', '\u{c9}', '\u{e6}',
8190 '\u{c6}', '\u{f4}', '\u{f6}', '\u{fe}', '\u{fb}', '\u{dd}', '\u{fd}', '\u{d6}', '\u{dc}',
8191 '\u{f8}', '\u{a3}', '\u{d8}', '\u{20a7}', '\u{192}', '\u{e1}', '\u{ed}', '\u{f3}', '\u{fa}',
8192 '\u{c1}', '\u{cd}', '\u{d3}', '\u{da}', '\u{bf}', '\u{2310}', '\u{ac}', '\u{bd}', '\u{bc}',
8193 '\u{a1}', '\u{ab}', '\u{bb}', '\u{2591}', '\u{2592}', '\u{2593}', '\u{2502}', '\u{2524}',
8194 '\u{2561}', '\u{2562}', '\u{2556}', '\u{2555}', '\u{2563}', '\u{2551}', '\u{2557}', '\u{255d}',
8195 '\u{255c}', '\u{255b}', '\u{2510}', '\u{2514}', '\u{2534}', '\u{252c}', '\u{251c}', '\u{2500}',
8196 '\u{253c}', '\u{255e}', '\u{255f}', '\u{255a}', '\u{2554}', '\u{2569}', '\u{2566}', '\u{2560}',
8197 '\u{2550}', '\u{256c}', '\u{2567}', '\u{2568}', '\u{2564}', '\u{2565}', '\u{2559}', '\u{2558}',
8198 '\u{2552}', '\u{2553}', '\u{256b}', '\u{256a}', '\u{2518}', '\u{250c}', '\u{2588}', '\u{2584}',
8199 '\u{258c}', '\u{2590}', '\u{2580}', '\u{3b1}', '\u{df}', '\u{393}', '\u{3c0}', '\u{3a3}',
8200 '\u{3c3}', '\u{3bc}', '\u{3c4}', '\u{3a6}', '\u{398}', '\u{3a9}', '\u{3b4}', '\u{221e}',
8201 '\u{3c6}', '\u{3b5}', '\u{2229}', '\u{2261}', '\u{b1}', '\u{2265}', '\u{2264}', '\u{2320}',
8202 '\u{2321}', '\u{f7}', '\u{2248}', '\u{b0}', '\u{2219}', '\u{b7}', '\u{221a}', '\u{207f}',
8203 '\u{b2}', '\u{25a0}', '\u{a0}',
8204];
8205const IBM_861_ENCODE_TABLE: &[(u16, u8)] = &[
8206 (0, 0),
8207 (1, 1),
8208 (2, 2),
8209 (3, 3),
8210 (4, 4),
8211 (5, 5),
8212 (6, 6),
8213 (7, 7),
8214 (8, 8),
8215 (9, 9),
8216 (10, 10),
8217 (11, 11),
8218 (12, 12),
8219 (13, 13),
8220 (14, 14),
8221 (15, 15),
8222 (16, 16),
8223 (17, 17),
8224 (18, 18),
8225 (19, 19),
8226 (20, 20),
8227 (21, 21),
8228 (22, 22),
8229 (23, 23),
8230 (24, 24),
8231 (25, 25),
8232 (26, 127),
8233 (27, 27),
8234 (28, 26),
8235 (29, 29),
8236 (30, 30),
8237 (31, 31),
8238 (32, 32),
8239 (33, 33),
8240 (34, 34),
8241 (35, 35),
8242 (36, 36),
8243 (37, 37),
8244 (38, 38),
8245 (39, 39),
8246 (40, 40),
8247 (41, 41),
8248 (42, 42),
8249 (43, 43),
8250 (44, 44),
8251 (45, 45),
8252 (46, 46),
8253 (47, 47),
8254 (48, 48),
8255 (49, 49),
8256 (50, 50),
8257 (51, 51),
8258 (52, 52),
8259 (53, 53),
8260 (54, 54),
8261 (55, 55),
8262 (56, 56),
8263 (57, 57),
8264 (58, 58),
8265 (59, 59),
8266 (60, 60),
8267 (61, 61),
8268 (62, 62),
8269 (63, 63),
8270 (64, 64),
8271 (65, 65),
8272 (66, 66),
8273 (67, 67),
8274 (68, 68),
8275 (69, 69),
8276 (70, 70),
8277 (71, 71),
8278 (72, 72),
8279 (73, 73),
8280 (74, 74),
8281 (75, 75),
8282 (76, 76),
8283 (77, 77),
8284 (78, 78),
8285 (79, 79),
8286 (80, 80),
8287 (81, 81),
8288 (82, 82),
8289 (83, 83),
8290 (84, 84),
8291 (85, 85),
8292 (86, 86),
8293 (87, 87),
8294 (88, 88),
8295 (89, 89),
8296 (90, 90),
8297 (91, 91),
8298 (92, 92),
8299 (93, 93),
8300 (94, 94),
8301 (95, 95),
8302 (96, 96),
8303 (97, 97),
8304 (98, 98),
8305 (99, 99),
8306 (100, 100),
8307 (101, 101),
8308 (102, 102),
8309 (103, 103),
8310 (104, 104),
8311 (105, 105),
8312 (106, 106),
8313 (107, 107),
8314 (108, 108),
8315 (109, 109),
8316 (110, 110),
8317 (111, 111),
8318 (112, 112),
8319 (113, 113),
8320 (114, 114),
8321 (115, 115),
8322 (116, 116),
8323 (117, 117),
8324 (118, 118),
8325 (119, 119),
8326 (120, 120),
8327 (121, 121),
8328 (122, 122),
8329 (123, 123),
8330 (124, 124),
8331 (125, 125),
8332 (126, 126),
8333 (127, 28),
8334 (160, 255),
8335 (161, 173),
8336 (163, 156),
8337 (171, 174),
8338 (172, 170),
8339 (176, 248),
8340 (177, 241),
8341 (178, 253),
8342 (183, 250),
8343 (187, 175),
8344 (188, 172),
8345 (189, 171),
8346 (191, 168),
8347 (193, 164),
8348 (196, 142),
8349 (197, 143),
8350 (198, 146),
8351 (199, 128),
8352 (201, 144),
8353 (205, 165),
8354 (208, 139),
8355 (211, 166),
8356 (214, 153),
8357 (216, 157),
8358 (218, 167),
8359 (220, 154),
8360 (221, 151),
8361 (222, 141),
8362 (223, 225),
8363 (224, 133),
8364 (225, 160),
8365 (226, 131),
8366 (228, 132),
8367 (229, 134),
8368 (230, 145),
8369 (231, 135),
8370 (232, 138),
8371 (233, 130),
8372 (234, 136),
8373 (235, 137),
8374 (237, 161),
8375 (240, 140),
8376 (243, 162),
8377 (244, 147),
8378 (246, 148),
8379 (247, 246),
8380 (248, 155),
8381 (250, 163),
8382 (251, 150),
8383 (252, 129),
8384 (253, 152),
8385 (254, 149),
8386 (402, 159),
8387 (915, 226),
8388 (920, 233),
8389 (931, 228),
8390 (934, 232),
8391 (937, 234),
8392 (945, 224),
8393 (948, 235),
8394 (949, 238),
8395 (956, 230),
8396 (960, 227),
8397 (963, 229),
8398 (964, 231),
8399 (966, 237),
8400 (8319, 252),
8401 (8359, 158),
8402 (8729, 249),
8403 (8730, 251),
8404 (8734, 236),
8405 (8745, 239),
8406 (8776, 247),
8407 (8801, 240),
8408 (8804, 243),
8409 (8805, 242),
8410 (8976, 169),
8411 (8992, 244),
8412 (8993, 245),
8413 (9472, 196),
8414 (9474, 179),
8415 (9484, 218),
8416 (9488, 191),
8417 (9492, 192),
8418 (9496, 217),
8419 (9500, 195),
8420 (9508, 180),
8421 (9516, 194),
8422 (9524, 193),
8423 (9532, 197),
8424 (9552, 205),
8425 (9553, 186),
8426 (9554, 213),
8427 (9555, 214),
8428 (9556, 201),
8429 (9557, 184),
8430 (9558, 183),
8431 (9559, 187),
8432 (9560, 212),
8433 (9561, 211),
8434 (9562, 200),
8435 (9563, 190),
8436 (9564, 189),
8437 (9565, 188),
8438 (9566, 198),
8439 (9567, 199),
8440 (9568, 204),
8441 (9569, 181),
8442 (9570, 182),
8443 (9571, 185),
8444 (9572, 209),
8445 (9573, 210),
8446 (9574, 203),
8447 (9575, 207),
8448 (9576, 208),
8449 (9577, 202),
8450 (9578, 216),
8451 (9579, 215),
8452 (9580, 206),
8453 (9600, 223),
8454 (9604, 220),
8455 (9608, 219),
8456 (9612, 221),
8457 (9616, 222),
8458 (9617, 176),
8459 (9618, 177),
8460 (9619, 178),
8461 (9632, 254),
8462];
8463
8464impl_ebcdic_encoder_and_decoder!(
8465 IBM862,
8466 "IBM862",
8467 IBM862Encoder,
8468 IBM862Decoder,
8469 IBM_862_ENCODE_TABLE,
8470 IBM_862_DECODE_TABLE
8471);
8472const IBM_862_DECODE_TABLE: [char; 256] = [
8473 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{4}', '\u{5}', '\u{6}', '\u{7}', '\u{8}', '\u{9}',
8474 '\u{a}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
8475 '\u{14}', '\u{15}', '\u{16}', '\u{17}', '\u{18}', '\u{19}', '\u{1c}', '\u{1b}', '\u{7f}',
8476 '\u{1d}', '\u{1e}', '\u{1f}', '\u{20}', '\u{21}', '\u{22}', '\u{23}', '\u{24}', '\u{25}',
8477 '\u{26}', '\u{27}', '\u{28}', '\u{29}', '\u{2a}', '\u{2b}', '\u{2c}', '\u{2d}', '\u{2e}',
8478 '\u{2f}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}',
8479 '\u{38}', '\u{39}', '\u{3a}', '\u{3b}', '\u{3c}', '\u{3d}', '\u{3e}', '\u{3f}', '\u{40}',
8480 '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
8481 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
8482 '\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{5b}',
8483 '\u{5c}', '\u{5d}', '\u{5e}', '\u{5f}', '\u{60}', '\u{61}', '\u{62}', '\u{63}', '\u{64}',
8484 '\u{65}', '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}',
8485 '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{73}', '\u{74}', '\u{75}', '\u{76}',
8486 '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{7b}', '\u{7c}', '\u{7d}', '\u{7e}', '\u{1a}',
8487 '\u{5d0}', '\u{5d1}', '\u{5d2}', '\u{5d3}', '\u{5d4}', '\u{5d5}', '\u{5d6}', '\u{5d7}',
8488 '\u{5d8}', '\u{5d9}', '\u{5da}', '\u{5db}', '\u{5dc}', '\u{5dd}', '\u{5de}', '\u{5df}',
8489 '\u{5e0}', '\u{5e1}', '\u{5e2}', '\u{5e3}', '\u{5e4}', '\u{5e5}', '\u{5e6}', '\u{5e7}',
8490 '\u{5e8}', '\u{5e9}', '\u{5ea}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{20a7}', '\u{192}', '\u{e1}',
8491 '\u{ed}', '\u{f3}', '\u{fa}', '\u{f1}', '\u{d1}', '\u{aa}', '\u{ba}', '\u{bf}', '\u{2310}',
8492 '\u{ac}', '\u{bd}', '\u{bc}', '\u{a1}', '\u{ab}', '\u{bb}', '\u{2591}', '\u{2592}', '\u{2593}',
8493 '\u{2502}', '\u{2524}', '\u{2561}', '\u{2562}', '\u{2556}', '\u{2555}', '\u{2563}', '\u{2551}',
8494 '\u{2557}', '\u{255d}', '\u{255c}', '\u{255b}', '\u{2510}', '\u{2514}', '\u{2534}', '\u{252c}',
8495 '\u{251c}', '\u{2500}', '\u{253c}', '\u{255e}', '\u{255f}', '\u{255a}', '\u{2554}', '\u{2569}',
8496 '\u{2566}', '\u{2560}', '\u{2550}', '\u{256c}', '\u{2567}', '\u{2568}', '\u{2564}', '\u{2565}',
8497 '\u{2559}', '\u{2558}', '\u{2552}', '\u{2553}', '\u{256b}', '\u{256a}', '\u{2518}', '\u{250c}',
8498 '\u{2588}', '\u{2584}', '\u{258c}', '\u{2590}', '\u{2580}', '\u{3b1}', '\u{df}', '\u{393}',
8499 '\u{3c0}', '\u{3a3}', '\u{3c3}', '\u{3bc}', '\u{3c4}', '\u{3a6}', '\u{398}', '\u{3a9}',
8500 '\u{3b4}', '\u{221e}', '\u{3c6}', '\u{3b5}', '\u{2229}', '\u{2261}', '\u{b1}', '\u{2265}',
8501 '\u{2264}', '\u{2320}', '\u{2321}', '\u{f7}', '\u{2248}', '\u{b0}', '\u{2219}', '\u{b7}',
8502 '\u{221a}', '\u{207f}', '\u{b2}', '\u{25a0}', '\u{a0}',
8503];
8504const IBM_862_ENCODE_TABLE: &[(u16, u8)] = &[
8505 (0, 0),
8506 (1, 1),
8507 (2, 2),
8508 (3, 3),
8509 (4, 4),
8510 (5, 5),
8511 (6, 6),
8512 (7, 7),
8513 (8, 8),
8514 (9, 9),
8515 (10, 10),
8516 (11, 11),
8517 (12, 12),
8518 (13, 13),
8519 (14, 14),
8520 (15, 15),
8521 (16, 16),
8522 (17, 17),
8523 (18, 18),
8524 (19, 19),
8525 (20, 20),
8526 (21, 21),
8527 (22, 22),
8528 (23, 23),
8529 (24, 24),
8530 (25, 25),
8531 (26, 127),
8532 (27, 27),
8533 (28, 26),
8534 (29, 29),
8535 (30, 30),
8536 (31, 31),
8537 (32, 32),
8538 (33, 33),
8539 (34, 34),
8540 (35, 35),
8541 (36, 36),
8542 (37, 37),
8543 (38, 38),
8544 (39, 39),
8545 (40, 40),
8546 (41, 41),
8547 (42, 42),
8548 (43, 43),
8549 (44, 44),
8550 (45, 45),
8551 (46, 46),
8552 (47, 47),
8553 (48, 48),
8554 (49, 49),
8555 (50, 50),
8556 (51, 51),
8557 (52, 52),
8558 (53, 53),
8559 (54, 54),
8560 (55, 55),
8561 (56, 56),
8562 (57, 57),
8563 (58, 58),
8564 (59, 59),
8565 (60, 60),
8566 (61, 61),
8567 (62, 62),
8568 (63, 63),
8569 (64, 64),
8570 (65, 65),
8571 (66, 66),
8572 (67, 67),
8573 (68, 68),
8574 (69, 69),
8575 (70, 70),
8576 (71, 71),
8577 (72, 72),
8578 (73, 73),
8579 (74, 74),
8580 (75, 75),
8581 (76, 76),
8582 (77, 77),
8583 (78, 78),
8584 (79, 79),
8585 (80, 80),
8586 (81, 81),
8587 (82, 82),
8588 (83, 83),
8589 (84, 84),
8590 (85, 85),
8591 (86, 86),
8592 (87, 87),
8593 (88, 88),
8594 (89, 89),
8595 (90, 90),
8596 (91, 91),
8597 (92, 92),
8598 (93, 93),
8599 (94, 94),
8600 (95, 95),
8601 (96, 96),
8602 (97, 97),
8603 (98, 98),
8604 (99, 99),
8605 (100, 100),
8606 (101, 101),
8607 (102, 102),
8608 (103, 103),
8609 (104, 104),
8610 (105, 105),
8611 (106, 106),
8612 (107, 107),
8613 (108, 108),
8614 (109, 109),
8615 (110, 110),
8616 (111, 111),
8617 (112, 112),
8618 (113, 113),
8619 (114, 114),
8620 (115, 115),
8621 (116, 116),
8622 (117, 117),
8623 (118, 118),
8624 (119, 119),
8625 (120, 120),
8626 (121, 121),
8627 (122, 122),
8628 (123, 123),
8629 (124, 124),
8630 (125, 125),
8631 (126, 126),
8632 (127, 28),
8633 (160, 255),
8634 (161, 173),
8635 (162, 155),
8636 (163, 156),
8637 (165, 157),
8638 (170, 166),
8639 (171, 174),
8640 (172, 170),
8641 (176, 248),
8642 (177, 241),
8643 (178, 253),
8644 (183, 250),
8645 (186, 167),
8646 (187, 175),
8647 (188, 172),
8648 (189, 171),
8649 (191, 168),
8650 (209, 165),
8651 (223, 225),
8652 (225, 160),
8653 (237, 161),
8654 (241, 164),
8655 (243, 162),
8656 (247, 246),
8657 (250, 163),
8658 (402, 159),
8659 (915, 226),
8660 (920, 233),
8661 (931, 228),
8662 (934, 232),
8663 (937, 234),
8664 (945, 224),
8665 (948, 235),
8666 (949, 238),
8667 (956, 230),
8668 (960, 227),
8669 (963, 229),
8670 (964, 231),
8671 (966, 237),
8672 (1488, 128),
8673 (1489, 129),
8674 (1490, 130),
8675 (1491, 131),
8676 (1492, 132),
8677 (1493, 133),
8678 (1494, 134),
8679 (1495, 135),
8680 (1496, 136),
8681 (1497, 137),
8682 (1498, 138),
8683 (1499, 139),
8684 (1500, 140),
8685 (1501, 141),
8686 (1502, 142),
8687 (1503, 143),
8688 (1504, 144),
8689 (1505, 145),
8690 (1506, 146),
8691 (1507, 147),
8692 (1508, 148),
8693 (1509, 149),
8694 (1510, 150),
8695 (1511, 151),
8696 (1512, 152),
8697 (1513, 153),
8698 (1514, 154),
8699 (8319, 252),
8700 (8359, 158),
8701 (8729, 249),
8702 (8730, 251),
8703 (8734, 236),
8704 (8745, 239),
8705 (8776, 247),
8706 (8801, 240),
8707 (8804, 243),
8708 (8805, 242),
8709 (8976, 169),
8710 (8992, 244),
8711 (8993, 245),
8712 (9472, 196),
8713 (9474, 179),
8714 (9484, 218),
8715 (9488, 191),
8716 (9492, 192),
8717 (9496, 217),
8718 (9500, 195),
8719 (9508, 180),
8720 (9516, 194),
8721 (9524, 193),
8722 (9532, 197),
8723 (9552, 205),
8724 (9553, 186),
8725 (9554, 213),
8726 (9555, 214),
8727 (9556, 201),
8728 (9557, 184),
8729 (9558, 183),
8730 (9559, 187),
8731 (9560, 212),
8732 (9561, 211),
8733 (9562, 200),
8734 (9563, 190),
8735 (9564, 189),
8736 (9565, 188),
8737 (9566, 198),
8738 (9567, 199),
8739 (9568, 204),
8740 (9569, 181),
8741 (9570, 182),
8742 (9571, 185),
8743 (9572, 209),
8744 (9573, 210),
8745 (9574, 203),
8746 (9575, 207),
8747 (9576, 208),
8748 (9577, 202),
8749 (9578, 216),
8750 (9579, 215),
8751 (9580, 206),
8752 (9600, 223),
8753 (9604, 220),
8754 (9608, 219),
8755 (9612, 221),
8756 (9616, 222),
8757 (9617, 176),
8758 (9618, 177),
8759 (9619, 178),
8760 (9632, 254),
8761];
8762
8763impl_ebcdic_encoder_and_decoder!(
8764 IBM863,
8765 "IBM863",
8766 IBM863Encoder,
8767 IBM863Decoder,
8768 IBM_863_ENCODE_TABLE,
8769 IBM_863_DECODE_TABLE
8770);
8771const IBM_863_DECODE_TABLE: [char; 256] = [
8772 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{4}', '\u{5}', '\u{6}', '\u{7}', '\u{8}', '\u{9}',
8773 '\u{a}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
8774 '\u{14}', '\u{15}', '\u{16}', '\u{17}', '\u{18}', '\u{19}', '\u{1c}', '\u{1b}', '\u{7f}',
8775 '\u{1d}', '\u{1e}', '\u{1f}', '\u{20}', '\u{21}', '\u{22}', '\u{23}', '\u{24}', '\u{25}',
8776 '\u{26}', '\u{27}', '\u{28}', '\u{29}', '\u{2a}', '\u{2b}', '\u{2c}', '\u{2d}', '\u{2e}',
8777 '\u{2f}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}',
8778 '\u{38}', '\u{39}', '\u{3a}', '\u{3b}', '\u{3c}', '\u{3d}', '\u{3e}', '\u{3f}', '\u{40}',
8779 '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
8780 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
8781 '\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{5b}',
8782 '\u{5c}', '\u{5d}', '\u{5e}', '\u{5f}', '\u{60}', '\u{61}', '\u{62}', '\u{63}', '\u{64}',
8783 '\u{65}', '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}',
8784 '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{73}', '\u{74}', '\u{75}', '\u{76}',
8785 '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{7b}', '\u{7c}', '\u{7d}', '\u{7e}', '\u{1a}',
8786 '\u{c7}', '\u{fc}', '\u{e9}', '\u{e2}', '\u{c2}', '\u{e0}', '\u{b6}', '\u{e7}', '\u{ea}',
8787 '\u{eb}', '\u{e8}', '\u{ef}', '\u{ee}', '\u{2017}', '\u{c0}', '\u{a7}', '\u{c9}', '\u{c8}',
8788 '\u{ca}', '\u{f4}', '\u{cb}', '\u{cf}', '\u{fb}', '\u{f9}', '\u{a4}', '\u{d4}', '\u{dc}',
8789 '\u{a2}', '\u{a3}', '\u{d9}', '\u{db}', '\u{192}', '\u{a6}', '\u{b4}', '\u{f3}', '\u{fa}',
8790 '\u{a8}', '\u{b8}', '\u{b3}', '\u{af}', '\u{ce}', '\u{2310}', '\u{ac}', '\u{bd}', '\u{bc}',
8791 '\u{be}', '\u{ab}', '\u{bb}', '\u{2591}', '\u{2592}', '\u{2593}', '\u{2502}', '\u{2524}',
8792 '\u{2561}', '\u{2562}', '\u{2556}', '\u{2555}', '\u{2563}', '\u{2551}', '\u{2557}', '\u{255d}',
8793 '\u{255c}', '\u{255b}', '\u{2510}', '\u{2514}', '\u{2534}', '\u{252c}', '\u{251c}', '\u{2500}',
8794 '\u{253c}', '\u{255e}', '\u{255f}', '\u{255a}', '\u{2554}', '\u{2569}', '\u{2566}', '\u{2560}',
8795 '\u{2550}', '\u{256c}', '\u{2567}', '\u{2568}', '\u{2564}', '\u{2565}', '\u{2559}', '\u{2558}',
8796 '\u{2552}', '\u{2553}', '\u{256b}', '\u{256a}', '\u{2518}', '\u{250c}', '\u{2588}', '\u{2584}',
8797 '\u{258c}', '\u{2590}', '\u{2580}', '\u{3b1}', '\u{df}', '\u{393}', '\u{3c0}', '\u{3a3}',
8798 '\u{3c3}', '\u{3bc}', '\u{3c4}', '\u{3a6}', '\u{398}', '\u{3a9}', '\u{3b4}', '\u{221e}',
8799 '\u{3c6}', '\u{3b5}', '\u{2229}', '\u{2261}', '\u{b1}', '\u{2265}', '\u{2264}', '\u{2320}',
8800 '\u{2321}', '\u{f7}', '\u{2248}', '\u{b0}', '\u{2219}', '\u{b7}', '\u{221a}', '\u{207f}',
8801 '\u{b2}', '\u{25a0}', '\u{a0}',
8802];
8803const IBM_863_ENCODE_TABLE: &[(u16, u8)] = &[
8804 (0, 0),
8805 (1, 1),
8806 (2, 2),
8807 (3, 3),
8808 (4, 4),
8809 (5, 5),
8810 (6, 6),
8811 (7, 7),
8812 (8, 8),
8813 (9, 9),
8814 (10, 10),
8815 (11, 11),
8816 (12, 12),
8817 (13, 13),
8818 (14, 14),
8819 (15, 15),
8820 (16, 16),
8821 (17, 17),
8822 (18, 18),
8823 (19, 19),
8824 (20, 20),
8825 (21, 21),
8826 (22, 22),
8827 (23, 23),
8828 (24, 24),
8829 (25, 25),
8830 (26, 127),
8831 (27, 27),
8832 (28, 26),
8833 (29, 29),
8834 (30, 30),
8835 (31, 31),
8836 (32, 32),
8837 (33, 33),
8838 (34, 34),
8839 (35, 35),
8840 (36, 36),
8841 (37, 37),
8842 (38, 38),
8843 (39, 39),
8844 (40, 40),
8845 (41, 41),
8846 (42, 42),
8847 (43, 43),
8848 (44, 44),
8849 (45, 45),
8850 (46, 46),
8851 (47, 47),
8852 (48, 48),
8853 (49, 49),
8854 (50, 50),
8855 (51, 51),
8856 (52, 52),
8857 (53, 53),
8858 (54, 54),
8859 (55, 55),
8860 (56, 56),
8861 (57, 57),
8862 (58, 58),
8863 (59, 59),
8864 (60, 60),
8865 (61, 61),
8866 (62, 62),
8867 (63, 63),
8868 (64, 64),
8869 (65, 65),
8870 (66, 66),
8871 (67, 67),
8872 (68, 68),
8873 (69, 69),
8874 (70, 70),
8875 (71, 71),
8876 (72, 72),
8877 (73, 73),
8878 (74, 74),
8879 (75, 75),
8880 (76, 76),
8881 (77, 77),
8882 (78, 78),
8883 (79, 79),
8884 (80, 80),
8885 (81, 81),
8886 (82, 82),
8887 (83, 83),
8888 (84, 84),
8889 (85, 85),
8890 (86, 86),
8891 (87, 87),
8892 (88, 88),
8893 (89, 89),
8894 (90, 90),
8895 (91, 91),
8896 (92, 92),
8897 (93, 93),
8898 (94, 94),
8899 (95, 95),
8900 (96, 96),
8901 (97, 97),
8902 (98, 98),
8903 (99, 99),
8904 (100, 100),
8905 (101, 101),
8906 (102, 102),
8907 (103, 103),
8908 (104, 104),
8909 (105, 105),
8910 (106, 106),
8911 (107, 107),
8912 (108, 108),
8913 (109, 109),
8914 (110, 110),
8915 (111, 111),
8916 (112, 112),
8917 (113, 113),
8918 (114, 114),
8919 (115, 115),
8920 (116, 116),
8921 (117, 117),
8922 (118, 118),
8923 (119, 119),
8924 (120, 120),
8925 (121, 121),
8926 (122, 122),
8927 (123, 123),
8928 (124, 124),
8929 (125, 125),
8930 (126, 126),
8931 (127, 28),
8932 (160, 255),
8933 (162, 155),
8934 (163, 156),
8935 (164, 152),
8936 (166, 160),
8937 (167, 143),
8938 (168, 164),
8939 (171, 174),
8940 (172, 170),
8941 (175, 167),
8942 (176, 248),
8943 (177, 241),
8944 (178, 253),
8945 (179, 166),
8946 (180, 161),
8947 (182, 134),
8948 (183, 250),
8949 (184, 165),
8950 (187, 175),
8951 (188, 172),
8952 (189, 171),
8953 (190, 173),
8954 (192, 142),
8955 (194, 132),
8956 (199, 128),
8957 (200, 145),
8958 (201, 144),
8959 (202, 146),
8960 (203, 148),
8961 (206, 168),
8962 (207, 149),
8963 (212, 153),
8964 (217, 157),
8965 (219, 158),
8966 (220, 154),
8967 (223, 225),
8968 (224, 133),
8969 (226, 131),
8970 (231, 135),
8971 (232, 138),
8972 (233, 130),
8973 (234, 136),
8974 (235, 137),
8975 (238, 140),
8976 (239, 139),
8977 (243, 162),
8978 (244, 147),
8979 (247, 246),
8980 (249, 151),
8981 (250, 163),
8982 (251, 150),
8983 (252, 129),
8984 (402, 159),
8985 (915, 226),
8986 (920, 233),
8987 (931, 228),
8988 (934, 232),
8989 (937, 234),
8990 (945, 224),
8991 (948, 235),
8992 (949, 238),
8993 (956, 230),
8994 (960, 227),
8995 (963, 229),
8996 (964, 231),
8997 (966, 237),
8998 (8215, 141),
8999 (8319, 252),
9000 (8729, 249),
9001 (8730, 251),
9002 (8734, 236),
9003 (8745, 239),
9004 (8776, 247),
9005 (8801, 240),
9006 (8804, 243),
9007 (8805, 242),
9008 (8976, 169),
9009 (8992, 244),
9010 (8993, 245),
9011 (9472, 196),
9012 (9474, 179),
9013 (9484, 218),
9014 (9488, 191),
9015 (9492, 192),
9016 (9496, 217),
9017 (9500, 195),
9018 (9508, 180),
9019 (9516, 194),
9020 (9524, 193),
9021 (9532, 197),
9022 (9552, 205),
9023 (9553, 186),
9024 (9554, 213),
9025 (9555, 214),
9026 (9556, 201),
9027 (9557, 184),
9028 (9558, 183),
9029 (9559, 187),
9030 (9560, 212),
9031 (9561, 211),
9032 (9562, 200),
9033 (9563, 190),
9034 (9564, 189),
9035 (9565, 188),
9036 (9566, 198),
9037 (9567, 199),
9038 (9568, 204),
9039 (9569, 181),
9040 (9570, 182),
9041 (9571, 185),
9042 (9572, 209),
9043 (9573, 210),
9044 (9574, 203),
9045 (9575, 207),
9046 (9576, 208),
9047 (9577, 202),
9048 (9578, 216),
9049 (9579, 215),
9050 (9580, 206),
9051 (9600, 223),
9052 (9604, 220),
9053 (9608, 219),
9054 (9612, 221),
9055 (9616, 222),
9056 (9617, 176),
9057 (9618, 177),
9058 (9619, 178),
9059 (9632, 254),
9060];
9061
9062impl_ebcdic_encoder_and_decoder!(
9063 IBM864,
9064 "IBM864",
9065 IBM864Encoder,
9066 IBM864Decoder,
9067 IBM_864_ENCODE_TABLE,
9068 IBM_864_DECODE_TABLE
9069);
9070const IBM_864_DECODE_TABLE: [char; 256] = [
9071 '\u{0}',
9072 '\u{1}',
9073 '\u{2}',
9074 '\u{3}',
9075 '\u{4}',
9076 '\u{5}',
9077 '\u{6}',
9078 '\u{7}',
9079 '\u{8}',
9080 '\u{9}',
9081 '\u{a}',
9082 '\u{b}',
9083 '\u{c}',
9084 '\u{d}',
9085 '\u{e}',
9086 '\u{f}',
9087 '\u{10}',
9088 '\u{11}',
9089 '\u{12}',
9090 '\u{13}',
9091 '\u{14}',
9092 '\u{15}',
9093 '\u{16}',
9094 '\u{17}',
9095 '\u{18}',
9096 '\u{19}',
9097 '\u{1c}',
9098 '\u{1b}',
9099 '\u{7f}',
9100 '\u{1d}',
9101 '\u{1e}',
9102 '\u{1f}',
9103 '\u{20}',
9104 '\u{21}',
9105 '\u{22}',
9106 '\u{23}',
9107 '\u{24}',
9108 '\u{25}',
9109 '\u{26}',
9110 '\u{27}',
9111 '\u{28}',
9112 '\u{29}',
9113 '\u{2a}',
9114 '\u{2b}',
9115 '\u{2c}',
9116 '\u{2d}',
9117 '\u{2e}',
9118 '\u{2f}',
9119 '\u{30}',
9120 '\u{31}',
9121 '\u{32}',
9122 '\u{33}',
9123 '\u{34}',
9124 '\u{35}',
9125 '\u{36}',
9126 '\u{37}',
9127 '\u{38}',
9128 '\u{39}',
9129 '\u{3a}',
9130 '\u{3b}',
9131 '\u{3c}',
9132 '\u{3d}',
9133 '\u{3e}',
9134 '\u{3f}',
9135 '\u{40}',
9136 '\u{41}',
9137 '\u{42}',
9138 '\u{43}',
9139 '\u{44}',
9140 '\u{45}',
9141 '\u{46}',
9142 '\u{47}',
9143 '\u{48}',
9144 '\u{49}',
9145 '\u{4a}',
9146 '\u{4b}',
9147 '\u{4c}',
9148 '\u{4d}',
9149 '\u{4e}',
9150 '\u{4f}',
9151 '\u{50}',
9152 '\u{51}',
9153 '\u{52}',
9154 '\u{53}',
9155 '\u{54}',
9156 '\u{55}',
9157 '\u{56}',
9158 '\u{57}',
9159 '\u{58}',
9160 '\u{59}',
9161 '\u{5a}',
9162 '\u{5b}',
9163 '\u{5c}',
9164 '\u{5d}',
9165 '\u{5e}',
9166 '\u{5f}',
9167 '\u{60}',
9168 '\u{61}',
9169 '\u{62}',
9170 '\u{63}',
9171 '\u{64}',
9172 '\u{65}',
9173 '\u{66}',
9174 '\u{67}',
9175 '\u{68}',
9176 '\u{69}',
9177 '\u{6a}',
9178 '\u{6b}',
9179 '\u{6c}',
9180 '\u{6d}',
9181 '\u{6e}',
9182 '\u{6f}',
9183 '\u{70}',
9184 '\u{71}',
9185 '\u{72}',
9186 '\u{73}',
9187 '\u{74}',
9188 '\u{75}',
9189 '\u{76}',
9190 '\u{77}',
9191 '\u{78}',
9192 '\u{79}',
9193 '\u{7a}',
9194 '\u{7b}',
9195 '\u{7c}',
9196 '\u{7d}',
9197 '\u{7e}',
9198 '\u{1a}',
9199 '\u{b0}',
9200 '\u{b7}',
9201 '\u{2219}',
9202 '\u{221a}',
9203 '\u{2592}',
9204 '\u{2500}',
9205 '\u{2502}',
9206 '\u{253c}',
9207 '\u{2524}',
9208 '\u{252c}',
9209 '\u{251c}',
9210 '\u{2534}',
9211 '\u{2510}',
9212 '\u{250c}',
9213 '\u{2514}',
9214 '\u{2518}',
9215 '\u{3b2}',
9216 '\u{221e}',
9217 '\u{3c6}',
9218 '\u{b1}',
9219 '\u{bd}',
9220 '\u{bc}',
9221 '\u{2248}',
9222 '\u{ab}',
9223 '\u{bb}',
9224 '\u{fef7}',
9225 '\u{fef8}',
9226 char::REPLACEMENT_CHARACTER,
9227 char::REPLACEMENT_CHARACTER,
9228 '\u{fefb}',
9229 '\u{fefc}',
9230 '\u{200b}',
9231 '\u{a0}',
9232 '\u{ad}',
9233 '\u{fe82}',
9234 '\u{a3}',
9235 '\u{a4}',
9236 '\u{fe84}',
9237 char::REPLACEMENT_CHARACTER,
9238 char::REPLACEMENT_CHARACTER,
9239 '\u{fe8e}',
9240 '\u{fe8f}',
9241 '\u{fe95}',
9242 '\u{fe99}',
9243 '\u{60c}',
9244 '\u{fe9d}',
9245 '\u{fea1}',
9246 '\u{fea5}',
9247 '\u{660}',
9248 '\u{661}',
9249 '\u{662}',
9250 '\u{663}',
9251 '\u{664}',
9252 '\u{665}',
9253 '\u{666}',
9254 '\u{667}',
9255 '\u{668}',
9256 '\u{669}',
9257 '\u{fed1}',
9258 '\u{61b}',
9259 '\u{feb1}',
9260 '\u{feb5}',
9261 '\u{feb9}',
9262 '\u{61f}',
9263 '\u{a2}',
9264 '\u{fe80}',
9265 '\u{fe81}',
9266 '\u{fe83}',
9267 '\u{fe85}',
9268 '\u{feca}',
9269 '\u{fe8b}',
9270 '\u{fe8d}',
9271 '\u{fe91}',
9272 '\u{fe93}',
9273 '\u{fe97}',
9274 '\u{fe9b}',
9275 '\u{fe9f}',
9276 '\u{fea3}',
9277 '\u{fea7}',
9278 '\u{fea9}',
9279 '\u{feab}',
9280 '\u{fead}',
9281 '\u{feaf}',
9282 '\u{feb3}',
9283 '\u{feb7}',
9284 '\u{febb}',
9285 '\u{febf}',
9286 '\u{fec3}',
9287 '\u{fec7}',
9288 '\u{fecb}',
9289 '\u{fecf}',
9290 '\u{a6}',
9291 '\u{ac}',
9292 '\u{f7}',
9293 '\u{d7}',
9294 '\u{fec9}',
9295 '\u{640}',
9296 '\u{fed3}',
9297 '\u{fed7}',
9298 '\u{fedb}',
9299 '\u{fedf}',
9300 '\u{fee3}',
9301 '\u{fee7}',
9302 '\u{feeb}',
9303 '\u{feed}',
9304 '\u{feef}',
9305 '\u{fef3}',
9306 '\u{febd}',
9307 '\u{fecc}',
9308 '\u{fece}',
9309 '\u{fecd}',
9310 '\u{fee1}',
9311 '\u{fe7d}',
9312 '\u{fe7c}',
9313 '\u{fee5}',
9314 '\u{fee9}',
9315 '\u{feec}',
9316 '\u{fef0}',
9317 '\u{fef2}',
9318 '\u{fed0}',
9319 '\u{fed5}',
9320 '\u{fef5}',
9321 '\u{fef6}',
9322 '\u{fedd}',
9323 '\u{fed9}',
9324 '\u{fef1}',
9325 '\u{25a0}',
9326 char::REPLACEMENT_CHARACTER,
9327];
9328const IBM_864_ENCODE_TABLE: &[(u16, u8)] = &[
9329 (0, 0),
9330 (1, 1),
9331 (2, 2),
9332 (3, 3),
9333 (4, 4),
9334 (5, 5),
9335 (6, 6),
9336 (7, 7),
9337 (8, 8),
9338 (9, 9),
9339 (10, 10),
9340 (11, 11),
9341 (12, 12),
9342 (13, 13),
9343 (14, 14),
9344 (15, 15),
9345 (16, 16),
9346 (17, 17),
9347 (18, 18),
9348 (19, 19),
9349 (20, 20),
9350 (21, 21),
9351 (22, 22),
9352 (23, 23),
9353 (24, 24),
9354 (25, 25),
9355 (26, 127),
9356 (27, 27),
9357 (28, 26),
9358 (29, 29),
9359 (30, 30),
9360 (31, 31),
9361 (32, 32),
9362 (33, 33),
9363 (34, 34),
9364 (35, 35),
9365 (36, 36),
9366 (37, 37),
9367 (38, 38),
9368 (39, 39),
9369 (40, 40),
9370 (41, 41),
9371 (42, 42),
9372 (43, 43),
9373 (44, 44),
9374 (45, 45),
9375 (46, 46),
9376 (47, 47),
9377 (48, 48),
9378 (49, 49),
9379 (50, 50),
9380 (51, 51),
9381 (52, 52),
9382 (53, 53),
9383 (54, 54),
9384 (55, 55),
9385 (56, 56),
9386 (57, 57),
9387 (58, 58),
9388 (59, 59),
9389 (60, 60),
9390 (61, 61),
9391 (62, 62),
9392 (63, 63),
9393 (64, 64),
9394 (65, 65),
9395 (66, 66),
9396 (67, 67),
9397 (68, 68),
9398 (69, 69),
9399 (70, 70),
9400 (71, 71),
9401 (72, 72),
9402 (73, 73),
9403 (74, 74),
9404 (75, 75),
9405 (76, 76),
9406 (77, 77),
9407 (78, 78),
9408 (79, 79),
9409 (80, 80),
9410 (81, 81),
9411 (82, 82),
9412 (83, 83),
9413 (84, 84),
9414 (85, 85),
9415 (86, 86),
9416 (87, 87),
9417 (88, 88),
9418 (89, 89),
9419 (90, 90),
9420 (91, 91),
9421 (92, 92),
9422 (93, 93),
9423 (94, 94),
9424 (95, 95),
9425 (96, 96),
9426 (97, 97),
9427 (98, 98),
9428 (99, 99),
9429 (100, 100),
9430 (101, 101),
9431 (102, 102),
9432 (103, 103),
9433 (104, 104),
9434 (105, 105),
9435 (106, 106),
9436 (107, 107),
9437 (108, 108),
9438 (109, 109),
9439 (110, 110),
9440 (111, 111),
9441 (112, 112),
9442 (113, 113),
9443 (114, 114),
9444 (115, 115),
9445 (116, 116),
9446 (117, 117),
9447 (118, 118),
9448 (119, 119),
9449 (120, 120),
9450 (121, 121),
9451 (122, 122),
9452 (123, 123),
9453 (124, 124),
9454 (125, 125),
9455 (126, 126),
9456 (127, 28),
9457 (160, 160),
9458 (162, 192),
9459 (163, 163),
9460 (164, 164),
9461 (166, 219),
9462 (171, 151),
9463 (172, 220),
9464 (173, 161),
9465 (176, 128),
9466 (177, 147),
9467 (183, 129),
9468 (187, 152),
9469 (188, 149),
9470 (189, 148),
9471 (215, 222),
9472 (247, 221),
9473 (946, 144),
9474 (966, 146),
9475 (1548, 172),
9476 (1563, 187),
9477 (1567, 191),
9478 (1600, 224),
9479 (1632, 176),
9480 (1633, 177),
9481 (1634, 178),
9482 (1635, 179),
9483 (1636, 180),
9484 (1637, 181),
9485 (1638, 182),
9486 (1639, 183),
9487 (1640, 184),
9488 (1641, 185),
9489 (8203, 159),
9490 (8729, 130),
9491 (8730, 131),
9492 (8734, 145),
9493 (8776, 150),
9494 (9472, 133),
9495 (9474, 134),
9496 (9484, 141),
9497 (9488, 140),
9498 (9492, 142),
9499 (9496, 143),
9500 (9500, 138),
9501 (9508, 136),
9502 (9516, 137),
9503 (9524, 139),
9504 (9532, 135),
9505 (9618, 132),
9506 (9632, 254),
9507 (65148, 241),
9508 (65149, 240),
9509 (65152, 193),
9510 (65153, 194),
9511 (65154, 162),
9512 (65155, 195),
9513 (65156, 165),
9514 (65157, 196),
9515 (65163, 198),
9516 (65165, 199),
9517 (65166, 168),
9518 (65167, 169),
9519 (65169, 200),
9520 (65171, 201),
9521 (65173, 170),
9522 (65175, 202),
9523 (65177, 171),
9524 (65179, 203),
9525 (65181, 173),
9526 (65183, 204),
9527 (65185, 174),
9528 (65187, 205),
9529 (65189, 175),
9530 (65191, 206),
9531 (65193, 207),
9532 (65195, 208),
9533 (65197, 209),
9534 (65199, 210),
9535 (65201, 188),
9536 (65203, 211),
9537 (65205, 189),
9538 (65207, 212),
9539 (65209, 190),
9540 (65211, 213),
9541 (65213, 235),
9542 (65215, 214),
9543 (65219, 215),
9544 (65223, 216),
9545 (65225, 223),
9546 (65226, 197),
9547 (65227, 217),
9548 (65228, 236),
9549 (65229, 238),
9550 (65230, 237),
9551 (65231, 218),
9552 (65232, 247),
9553 (65233, 186),
9554 (65235, 225),
9555 (65237, 248),
9556 (65239, 226),
9557 (65241, 252),
9558 (65243, 227),
9559 (65245, 251),
9560 (65247, 228),
9561 (65249, 239),
9562 (65251, 229),
9563 (65253, 242),
9564 (65255, 230),
9565 (65257, 243),
9566 (65259, 231),
9567 (65260, 244),
9568 (65261, 232),
9569 (65263, 233),
9570 (65264, 245),
9571 (65265, 253),
9572 (65266, 246),
9573 (65267, 234),
9574 (65269, 249),
9575 (65270, 250),
9576 (65271, 153),
9577 (65272, 154),
9578 (65275, 157),
9579 (65276, 158),
9580];
9581
9582impl_ebcdic_encoder_and_decoder!(
9583 IBM865,
9584 "IBM865",
9585 IBM865Encoder,
9586 IBM865Decoder,
9587 IBM_865_ENCODE_TABLE,
9588 IBM_865_DECODE_TABLE
9589);
9590const IBM_865_DECODE_TABLE: [char; 256] = [
9591 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{4}', '\u{5}', '\u{6}', '\u{7}', '\u{8}', '\u{9}',
9592 '\u{a}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
9593 '\u{14}', '\u{15}', '\u{16}', '\u{17}', '\u{18}', '\u{19}', '\u{1c}', '\u{1b}', '\u{7f}',
9594 '\u{1d}', '\u{1e}', '\u{1f}', '\u{20}', '\u{21}', '\u{22}', '\u{23}', '\u{24}', '\u{25}',
9595 '\u{26}', '\u{27}', '\u{28}', '\u{29}', '\u{2a}', '\u{2b}', '\u{2c}', '\u{2d}', '\u{2e}',
9596 '\u{2f}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}',
9597 '\u{38}', '\u{39}', '\u{3a}', '\u{3b}', '\u{3c}', '\u{3d}', '\u{3e}', '\u{3f}', '\u{40}',
9598 '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
9599 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
9600 '\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{5b}',
9601 '\u{5c}', '\u{5d}', '\u{5e}', '\u{5f}', '\u{60}', '\u{61}', '\u{62}', '\u{63}', '\u{64}',
9602 '\u{65}', '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}',
9603 '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{73}', '\u{74}', '\u{75}', '\u{76}',
9604 '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{7b}', '\u{7c}', '\u{7d}', '\u{7e}', '\u{1a}',
9605 '\u{c7}', '\u{fc}', '\u{e9}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e5}', '\u{e7}', '\u{ea}',
9606 '\u{eb}', '\u{e8}', '\u{ef}', '\u{ee}', '\u{ec}', '\u{c4}', '\u{c5}', '\u{c9}', '\u{e6}',
9607 '\u{c6}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{fb}', '\u{f9}', '\u{ff}', '\u{d6}', '\u{dc}',
9608 '\u{f8}', '\u{a3}', '\u{d8}', '\u{20a7}', '\u{192}', '\u{e1}', '\u{ed}', '\u{f3}', '\u{fa}',
9609 '\u{f1}', '\u{d1}', '\u{aa}', '\u{ba}', '\u{bf}', '\u{2310}', '\u{ac}', '\u{bd}', '\u{bc}',
9610 '\u{a1}', '\u{ab}', '\u{a4}', '\u{2591}', '\u{2592}', '\u{2593}', '\u{2502}', '\u{2524}',
9611 '\u{2561}', '\u{2562}', '\u{2556}', '\u{2555}', '\u{2563}', '\u{2551}', '\u{2557}', '\u{255d}',
9612 '\u{255c}', '\u{255b}', '\u{2510}', '\u{2514}', '\u{2534}', '\u{252c}', '\u{251c}', '\u{2500}',
9613 '\u{253c}', '\u{255e}', '\u{255f}', '\u{255a}', '\u{2554}', '\u{2569}', '\u{2566}', '\u{2560}',
9614 '\u{2550}', '\u{256c}', '\u{2567}', '\u{2568}', '\u{2564}', '\u{2565}', '\u{2559}', '\u{2558}',
9615 '\u{2552}', '\u{2553}', '\u{256b}', '\u{256a}', '\u{2518}', '\u{250c}', '\u{2588}', '\u{2584}',
9616 '\u{258c}', '\u{2590}', '\u{2580}', '\u{3b1}', '\u{df}', '\u{393}', '\u{3c0}', '\u{3a3}',
9617 '\u{3c3}', '\u{3bc}', '\u{3c4}', '\u{3a6}', '\u{398}', '\u{3a9}', '\u{3b4}', '\u{221e}',
9618 '\u{3c6}', '\u{3b5}', '\u{2229}', '\u{2261}', '\u{b1}', '\u{2265}', '\u{2264}', '\u{2320}',
9619 '\u{2321}', '\u{f7}', '\u{2248}', '\u{b0}', '\u{2219}', '\u{b7}', '\u{221a}', '\u{207f}',
9620 '\u{b2}', '\u{25a0}', '\u{a0}',
9621];
9622const IBM_865_ENCODE_TABLE: &[(u16, u8)] = &[
9623 (0, 0),
9624 (1, 1),
9625 (2, 2),
9626 (3, 3),
9627 (4, 4),
9628 (5, 5),
9629 (6, 6),
9630 (7, 7),
9631 (8, 8),
9632 (9, 9),
9633 (10, 10),
9634 (11, 11),
9635 (12, 12),
9636 (13, 13),
9637 (14, 14),
9638 (15, 15),
9639 (16, 16),
9640 (17, 17),
9641 (18, 18),
9642 (19, 19),
9643 (20, 20),
9644 (21, 21),
9645 (22, 22),
9646 (23, 23),
9647 (24, 24),
9648 (25, 25),
9649 (26, 127),
9650 (27, 27),
9651 (28, 26),
9652 (29, 29),
9653 (30, 30),
9654 (31, 31),
9655 (32, 32),
9656 (33, 33),
9657 (34, 34),
9658 (35, 35),
9659 (36, 36),
9660 (37, 37),
9661 (38, 38),
9662 (39, 39),
9663 (40, 40),
9664 (41, 41),
9665 (42, 42),
9666 (43, 43),
9667 (44, 44),
9668 (45, 45),
9669 (46, 46),
9670 (47, 47),
9671 (48, 48),
9672 (49, 49),
9673 (50, 50),
9674 (51, 51),
9675 (52, 52),
9676 (53, 53),
9677 (54, 54),
9678 (55, 55),
9679 (56, 56),
9680 (57, 57),
9681 (58, 58),
9682 (59, 59),
9683 (60, 60),
9684 (61, 61),
9685 (62, 62),
9686 (63, 63),
9687 (64, 64),
9688 (65, 65),
9689 (66, 66),
9690 (67, 67),
9691 (68, 68),
9692 (69, 69),
9693 (70, 70),
9694 (71, 71),
9695 (72, 72),
9696 (73, 73),
9697 (74, 74),
9698 (75, 75),
9699 (76, 76),
9700 (77, 77),
9701 (78, 78),
9702 (79, 79),
9703 (80, 80),
9704 (81, 81),
9705 (82, 82),
9706 (83, 83),
9707 (84, 84),
9708 (85, 85),
9709 (86, 86),
9710 (87, 87),
9711 (88, 88),
9712 (89, 89),
9713 (90, 90),
9714 (91, 91),
9715 (92, 92),
9716 (93, 93),
9717 (94, 94),
9718 (95, 95),
9719 (96, 96),
9720 (97, 97),
9721 (98, 98),
9722 (99, 99),
9723 (100, 100),
9724 (101, 101),
9725 (102, 102),
9726 (103, 103),
9727 (104, 104),
9728 (105, 105),
9729 (106, 106),
9730 (107, 107),
9731 (108, 108),
9732 (109, 109),
9733 (110, 110),
9734 (111, 111),
9735 (112, 112),
9736 (113, 113),
9737 (114, 114),
9738 (115, 115),
9739 (116, 116),
9740 (117, 117),
9741 (118, 118),
9742 (119, 119),
9743 (120, 120),
9744 (121, 121),
9745 (122, 122),
9746 (123, 123),
9747 (124, 124),
9748 (125, 125),
9749 (126, 126),
9750 (127, 28),
9751 (160, 255),
9752 (161, 173),
9753 (163, 156),
9754 (164, 175),
9755 (170, 166),
9756 (171, 174),
9757 (172, 170),
9758 (176, 248),
9759 (177, 241),
9760 (178, 253),
9761 (183, 250),
9762 (186, 167),
9763 (188, 172),
9764 (189, 171),
9765 (191, 168),
9766 (196, 142),
9767 (197, 143),
9768 (198, 146),
9769 (199, 128),
9770 (201, 144),
9771 (209, 165),
9772 (214, 153),
9773 (216, 157),
9774 (220, 154),
9775 (223, 225),
9776 (224, 133),
9777 (225, 160),
9778 (226, 131),
9779 (228, 132),
9780 (229, 134),
9781 (230, 145),
9782 (231, 135),
9783 (232, 138),
9784 (233, 130),
9785 (234, 136),
9786 (235, 137),
9787 (236, 141),
9788 (237, 161),
9789 (238, 140),
9790 (239, 139),
9791 (241, 164),
9792 (242, 149),
9793 (243, 162),
9794 (244, 147),
9795 (246, 148),
9796 (247, 246),
9797 (248, 155),
9798 (249, 151),
9799 (250, 163),
9800 (251, 150),
9801 (252, 129),
9802 (255, 152),
9803 (402, 159),
9804 (915, 226),
9805 (920, 233),
9806 (931, 228),
9807 (934, 232),
9808 (937, 234),
9809 (945, 224),
9810 (948, 235),
9811 (949, 238),
9812 (956, 230),
9813 (960, 227),
9814 (963, 229),
9815 (964, 231),
9816 (966, 237),
9817 (8319, 252),
9818 (8359, 158),
9819 (8729, 249),
9820 (8730, 251),
9821 (8734, 236),
9822 (8745, 239),
9823 (8776, 247),
9824 (8801, 240),
9825 (8804, 243),
9826 (8805, 242),
9827 (8976, 169),
9828 (8992, 244),
9829 (8993, 245),
9830 (9472, 196),
9831 (9474, 179),
9832 (9484, 218),
9833 (9488, 191),
9834 (9492, 192),
9835 (9496, 217),
9836 (9500, 195),
9837 (9508, 180),
9838 (9516, 194),
9839 (9524, 193),
9840 (9532, 197),
9841 (9552, 205),
9842 (9553, 186),
9843 (9554, 213),
9844 (9555, 214),
9845 (9556, 201),
9846 (9557, 184),
9847 (9558, 183),
9848 (9559, 187),
9849 (9560, 212),
9850 (9561, 211),
9851 (9562, 200),
9852 (9563, 190),
9853 (9564, 189),
9854 (9565, 188),
9855 (9566, 198),
9856 (9567, 199),
9857 (9568, 204),
9858 (9569, 181),
9859 (9570, 182),
9860 (9571, 185),
9861 (9572, 209),
9862 (9573, 210),
9863 (9574, 203),
9864 (9575, 207),
9865 (9576, 208),
9866 (9577, 202),
9867 (9578, 216),
9868 (9579, 215),
9869 (9580, 206),
9870 (9600, 223),
9871 (9604, 220),
9872 (9608, 219),
9873 (9612, 221),
9874 (9616, 222),
9875 (9617, 176),
9876 (9618, 177),
9877 (9619, 178),
9878 (9632, 254),
9879];
9880
9881impl_ebcdic_encoder_and_decoder!(
9882 IBM868,
9883 "IBM868",
9884 IBM868Encoder,
9885 IBM868Decoder,
9886 IBM_868_ENCODE_TABLE,
9887 IBM_868_DECODE_TABLE
9888);
9889const IBM_868_DECODE_TABLE: [char; 256] = [
9890 '\u{0}',
9891 '\u{1}',
9892 '\u{2}',
9893 '\u{3}',
9894 '\u{4}',
9895 '\u{5}',
9896 '\u{6}',
9897 '\u{7}',
9898 '\u{8}',
9899 '\u{9}',
9900 '\u{a}',
9901 '\u{b}',
9902 '\u{c}',
9903 '\u{d}',
9904 '\u{e}',
9905 '\u{f}',
9906 '\u{10}',
9907 '\u{11}',
9908 '\u{12}',
9909 '\u{13}',
9910 '\u{14}',
9911 '\u{15}',
9912 '\u{16}',
9913 '\u{17}',
9914 '\u{18}',
9915 '\u{19}',
9916 '\u{1c}',
9917 '\u{1b}',
9918 '\u{7f}',
9919 '\u{1d}',
9920 '\u{1e}',
9921 '\u{1f}',
9922 '\u{20}',
9923 '\u{21}',
9924 '\u{22}',
9925 '\u{23}',
9926 '\u{24}',
9927 '\u{25}',
9928 '\u{26}',
9929 '\u{27}',
9930 '\u{28}',
9931 '\u{29}',
9932 '\u{2a}',
9933 '\u{2b}',
9934 '\u{2c}',
9935 '\u{2d}',
9936 '\u{2e}',
9937 '\u{2f}',
9938 '\u{30}',
9939 '\u{31}',
9940 '\u{32}',
9941 '\u{33}',
9942 '\u{34}',
9943 '\u{35}',
9944 '\u{36}',
9945 '\u{37}',
9946 '\u{38}',
9947 '\u{39}',
9948 '\u{3a}',
9949 '\u{3b}',
9950 '\u{3c}',
9951 '\u{3d}',
9952 '\u{3e}',
9953 '\u{3f}',
9954 '\u{40}',
9955 '\u{41}',
9956 '\u{42}',
9957 '\u{43}',
9958 '\u{44}',
9959 '\u{45}',
9960 '\u{46}',
9961 '\u{47}',
9962 '\u{48}',
9963 '\u{49}',
9964 '\u{4a}',
9965 '\u{4b}',
9966 '\u{4c}',
9967 '\u{4d}',
9968 '\u{4e}',
9969 '\u{4f}',
9970 '\u{50}',
9971 '\u{51}',
9972 '\u{52}',
9973 '\u{53}',
9974 '\u{54}',
9975 '\u{55}',
9976 '\u{56}',
9977 '\u{57}',
9978 '\u{58}',
9979 '\u{59}',
9980 '\u{5a}',
9981 '\u{5b}',
9982 '\u{5c}',
9983 '\u{5d}',
9984 '\u{5e}',
9985 '\u{5f}',
9986 '\u{60}',
9987 '\u{61}',
9988 '\u{62}',
9989 '\u{63}',
9990 '\u{64}',
9991 '\u{65}',
9992 '\u{66}',
9993 '\u{67}',
9994 '\u{68}',
9995 '\u{69}',
9996 '\u{6a}',
9997 '\u{6b}',
9998 '\u{6c}',
9999 '\u{6d}',
10000 '\u{6e}',
10001 '\u{6f}',
10002 '\u{70}',
10003 '\u{71}',
10004 '\u{72}',
10005 '\u{73}',
10006 '\u{74}',
10007 '\u{75}',
10008 '\u{76}',
10009 '\u{77}',
10010 '\u{78}',
10011 '\u{79}',
10012 '\u{7a}',
10013 '\u{7b}',
10014 '\u{7c}',
10015 '\u{7d}',
10016 '\u{7e}',
10017 '\u{1a}',
10018 '\u{6f0}',
10019 '\u{6f1}',
10020 '\u{6f2}',
10021 '\u{6f3}',
10022 '\u{6f4}',
10023 '\u{6f5}',
10024 '\u{6f6}',
10025 '\u{6f7}',
10026 '\u{6f8}',
10027 '\u{6f9}',
10028 '\u{60c}',
10029 '\u{61b}',
10030 '\u{61f}',
10031 '\u{fe81}',
10032 '\u{fe8d}',
10033 '\u{fe8e}',
10034 '\u{f8fb}',
10035 '\u{fe8f}',
10036 '\u{fe91}',
10037 '\u{fb56}',
10038 '\u{fb58}',
10039 '\u{fe93}',
10040 '\u{fe95}',
10041 '\u{fe97}',
10042 '\u{fb66}',
10043 '\u{fb68}',
10044 '\u{fe99}',
10045 '\u{fe9b}',
10046 '\u{fe9d}',
10047 '\u{fe9f}',
10048 '\u{fb7a}',
10049 '\u{fb7c}',
10050 '\u{fea1}',
10051 '\u{fea3}',
10052 '\u{fea5}',
10053 '\u{fea7}',
10054 '\u{fea9}',
10055 '\u{fb88}',
10056 '\u{feab}',
10057 '\u{fead}',
10058 '\u{fb8c}',
10059 '\u{feaf}',
10060 '\u{fb8a}',
10061 '\u{feb1}',
10062 '\u{feb3}',
10063 '\u{feb5}',
10064 '\u{ab}',
10065 '\u{bb}',
10066 '\u{2591}',
10067 '\u{2592}',
10068 '\u{2593}',
10069 '\u{2502}',
10070 '\u{2524}',
10071 '\u{feb7}',
10072 '\u{feb9}',
10073 '\u{febb}',
10074 '\u{febd}',
10075 '\u{2563}',
10076 '\u{2551}',
10077 '\u{2557}',
10078 '\u{255d}',
10079 '\u{febf}',
10080 '\u{fec3}',
10081 '\u{2510}',
10082 '\u{2514}',
10083 '\u{2534}',
10084 '\u{252c}',
10085 '\u{251c}',
10086 '\u{2500}',
10087 '\u{253c}',
10088 '\u{fec7}',
10089 '\u{fec9}',
10090 '\u{255a}',
10091 '\u{2554}',
10092 '\u{2569}',
10093 '\u{2566}',
10094 '\u{2560}',
10095 '\u{2550}',
10096 '\u{256c}',
10097 '\u{feca}',
10098 '\u{fecb}',
10099 '\u{fecc}',
10100 '\u{fecd}',
10101 '\u{fece}',
10102 '\u{fecf}',
10103 '\u{fed0}',
10104 '\u{fed1}',
10105 '\u{fed3}',
10106 '\u{fed5}',
10107 '\u{2518}',
10108 '\u{250c}',
10109 '\u{2588}',
10110 '\u{2584}',
10111 '\u{fed7}',
10112 '\u{fb8e}',
10113 '\u{2580}',
10114 '\u{fedb}',
10115 '\u{fb92}',
10116 '\u{fb94}',
10117 '\u{fedd}',
10118 '\u{fedf}',
10119 '\u{fee0}',
10120 '\u{fee1}',
10121 '\u{fee3}',
10122 '\u{fb9e}',
10123 '\u{fee5}',
10124 '\u{fee7}',
10125 '\u{fe85}',
10126 '\u{feed}',
10127 '\u{fba6}',
10128 '\u{fba8}',
10129 '\u{fba9}',
10130 '\u{ad}',
10131 '\u{fbaa}',
10132 '\u{fe80}',
10133 '\u{fe89}',
10134 '\u{fe8a}',
10135 '\u{fe8b}',
10136 '\u{fbfc}',
10137 '\u{fbfd}',
10138 '\u{fbfe}',
10139 '\u{fbb0}',
10140 '\u{fbae}',
10141 '\u{fe7c}',
10142 '\u{fe7d}',
10143 char::REPLACEMENT_CHARACTER,
10144 '\u{25a0}',
10145 '\u{a0}',
10146];
10147const IBM_868_ENCODE_TABLE: &[(u16, u8)] = &[
10148 (0, 0),
10149 (1, 1),
10150 (2, 2),
10151 (3, 3),
10152 (4, 4),
10153 (5, 5),
10154 (6, 6),
10155 (7, 7),
10156 (8, 8),
10157 (9, 9),
10158 (10, 10),
10159 (11, 11),
10160 (12, 12),
10161 (13, 13),
10162 (14, 14),
10163 (15, 15),
10164 (16, 16),
10165 (17, 17),
10166 (18, 18),
10167 (19, 19),
10168 (20, 20),
10169 (21, 21),
10170 (22, 22),
10171 (23, 23),
10172 (24, 24),
10173 (25, 25),
10174 (26, 127),
10175 (27, 27),
10176 (28, 26),
10177 (29, 29),
10178 (30, 30),
10179 (31, 31),
10180 (32, 32),
10181 (33, 33),
10182 (34, 34),
10183 (35, 35),
10184 (36, 36),
10185 (37, 37),
10186 (38, 38),
10187 (39, 39),
10188 (40, 40),
10189 (41, 41),
10190 (42, 42),
10191 (43, 43),
10192 (44, 44),
10193 (45, 45),
10194 (46, 46),
10195 (47, 47),
10196 (48, 48),
10197 (49, 49),
10198 (50, 50),
10199 (51, 51),
10200 (52, 52),
10201 (53, 53),
10202 (54, 54),
10203 (55, 55),
10204 (56, 56),
10205 (57, 57),
10206 (58, 58),
10207 (59, 59),
10208 (60, 60),
10209 (61, 61),
10210 (62, 62),
10211 (63, 63),
10212 (64, 64),
10213 (65, 65),
10214 (66, 66),
10215 (67, 67),
10216 (68, 68),
10217 (69, 69),
10218 (70, 70),
10219 (71, 71),
10220 (72, 72),
10221 (73, 73),
10222 (74, 74),
10223 (75, 75),
10224 (76, 76),
10225 (77, 77),
10226 (78, 78),
10227 (79, 79),
10228 (80, 80),
10229 (81, 81),
10230 (82, 82),
10231 (83, 83),
10232 (84, 84),
10233 (85, 85),
10234 (86, 86),
10235 (87, 87),
10236 (88, 88),
10237 (89, 89),
10238 (90, 90),
10239 (91, 91),
10240 (92, 92),
10241 (93, 93),
10242 (94, 94),
10243 (95, 95),
10244 (96, 96),
10245 (97, 97),
10246 (98, 98),
10247 (99, 99),
10248 (100, 100),
10249 (101, 101),
10250 (102, 102),
10251 (103, 103),
10252 (104, 104),
10253 (105, 105),
10254 (106, 106),
10255 (107, 107),
10256 (108, 108),
10257 (109, 109),
10258 (110, 110),
10259 (111, 111),
10260 (112, 112),
10261 (113, 113),
10262 (114, 114),
10263 (115, 115),
10264 (116, 116),
10265 (117, 117),
10266 (118, 118),
10267 (119, 119),
10268 (120, 120),
10269 (121, 121),
10270 (122, 122),
10271 (123, 123),
10272 (124, 124),
10273 (125, 125),
10274 (126, 126),
10275 (127, 28),
10276 (160, 255),
10277 (171, 174),
10278 (173, 240),
10279 (187, 175),
10280 (1548, 138),
10281 (1563, 139),
10282 (1567, 140),
10283 (1776, 128),
10284 (1777, 129),
10285 (1778, 130),
10286 (1779, 131),
10287 (1780, 132),
10288 (1781, 133),
10289 (1782, 134),
10290 (1783, 135),
10291 (1784, 136),
10292 (1785, 137),
10293 (9472, 196),
10294 (9474, 179),
10295 (9484, 218),
10296 (9488, 191),
10297 (9492, 192),
10298 (9496, 217),
10299 (9500, 195),
10300 (9508, 180),
10301 (9516, 194),
10302 (9524, 193),
10303 (9532, 197),
10304 (9552, 205),
10305 (9553, 186),
10306 (9556, 201),
10307 (9559, 187),
10308 (9562, 200),
10309 (9565, 188),
10310 (9568, 204),
10311 (9571, 185),
10312 (9574, 203),
10313 (9577, 202),
10314 (9580, 206),
10315 (9600, 223),
10316 (9604, 220),
10317 (9608, 219),
10318 (9617, 176),
10319 (9618, 177),
10320 (9619, 178),
10321 (9632, 254),
10322 (63739, 144),
10323 (64342, 147),
10324 (64344, 148),
10325 (64358, 152),
10326 (64360, 153),
10327 (64378, 158),
10328 (64380, 159),
10329 (64392, 165),
10330 (64394, 170),
10331 (64396, 168),
10332 (64398, 222),
10333 (64402, 225),
10334 (64404, 226),
10335 (64414, 232),
10336 (64422, 237),
10337 (64424, 238),
10338 (64425, 239),
10339 (64426, 241),
10340 (64430, 250),
10341 (64432, 249),
10342 (64508, 246),
10343 (64509, 247),
10344 (64510, 248),
10345 (65148, 251),
10346 (65149, 252),
10347 (65152, 242),
10348 (65153, 141),
10349 (65157, 235),
10350 (65161, 243),
10351 (65162, 244),
10352 (65163, 245),
10353 (65165, 142),
10354 (65166, 143),
10355 (65167, 145),
10356 (65169, 146),
10357 (65171, 149),
10358 (65173, 150),
10359 (65175, 151),
10360 (65177, 154),
10361 (65179, 155),
10362 (65181, 156),
10363 (65183, 157),
10364 (65185, 160),
10365 (65187, 161),
10366 (65189, 162),
10367 (65191, 163),
10368 (65193, 164),
10369 (65195, 166),
10370 (65197, 167),
10371 (65199, 169),
10372 (65201, 171),
10373 (65203, 172),
10374 (65205, 173),
10375 (65207, 181),
10376 (65209, 182),
10377 (65211, 183),
10378 (65213, 184),
10379 (65215, 189),
10380 (65219, 190),
10381 (65223, 198),
10382 (65225, 199),
10383 (65226, 207),
10384 (65227, 208),
10385 (65228, 209),
10386 (65229, 210),
10387 (65230, 211),
10388 (65231, 212),
10389 (65232, 213),
10390 (65233, 214),
10391 (65235, 215),
10392 (65237, 216),
10393 (65239, 221),
10394 (65243, 224),
10395 (65245, 227),
10396 (65247, 228),
10397 (65248, 229),
10398 (65249, 230),
10399 (65251, 231),
10400 (65253, 233),
10401 (65255, 234),
10402 (65261, 236),
10403];
10404
10405impl_ebcdic_encoder_and_decoder!(
10406 IBM869,
10407 "IBM869",
10408 IBM869Encoder,
10409 IBM869Decoder,
10410 IBM_869_ENCODE_TABLE,
10411 IBM_869_DECODE_TABLE
10412);
10413const IBM_869_DECODE_TABLE: [char; 256] = [
10414 '\u{0}',
10415 '\u{1}',
10416 '\u{2}',
10417 '\u{3}',
10418 '\u{4}',
10419 '\u{5}',
10420 '\u{6}',
10421 '\u{7}',
10422 '\u{8}',
10423 '\u{9}',
10424 '\u{a}',
10425 '\u{b}',
10426 '\u{c}',
10427 '\u{d}',
10428 '\u{e}',
10429 '\u{f}',
10430 '\u{10}',
10431 '\u{11}',
10432 '\u{12}',
10433 '\u{13}',
10434 '\u{14}',
10435 '\u{15}',
10436 '\u{16}',
10437 '\u{17}',
10438 '\u{18}',
10439 '\u{19}',
10440 '\u{1c}',
10441 '\u{1b}',
10442 '\u{7f}',
10443 '\u{1d}',
10444 '\u{1e}',
10445 '\u{1f}',
10446 '\u{20}',
10447 '\u{21}',
10448 '\u{22}',
10449 '\u{23}',
10450 '\u{24}',
10451 '\u{25}',
10452 '\u{26}',
10453 '\u{27}',
10454 '\u{28}',
10455 '\u{29}',
10456 '\u{2a}',
10457 '\u{2b}',
10458 '\u{2c}',
10459 '\u{2d}',
10460 '\u{2e}',
10461 '\u{2f}',
10462 '\u{30}',
10463 '\u{31}',
10464 '\u{32}',
10465 '\u{33}',
10466 '\u{34}',
10467 '\u{35}',
10468 '\u{36}',
10469 '\u{37}',
10470 '\u{38}',
10471 '\u{39}',
10472 '\u{3a}',
10473 '\u{3b}',
10474 '\u{3c}',
10475 '\u{3d}',
10476 '\u{3e}',
10477 '\u{3f}',
10478 '\u{40}',
10479 '\u{41}',
10480 '\u{42}',
10481 '\u{43}',
10482 '\u{44}',
10483 '\u{45}',
10484 '\u{46}',
10485 '\u{47}',
10486 '\u{48}',
10487 '\u{49}',
10488 '\u{4a}',
10489 '\u{4b}',
10490 '\u{4c}',
10491 '\u{4d}',
10492 '\u{4e}',
10493 '\u{4f}',
10494 '\u{50}',
10495 '\u{51}',
10496 '\u{52}',
10497 '\u{53}',
10498 '\u{54}',
10499 '\u{55}',
10500 '\u{56}',
10501 '\u{57}',
10502 '\u{58}',
10503 '\u{59}',
10504 '\u{5a}',
10505 '\u{5b}',
10506 '\u{5c}',
10507 '\u{5d}',
10508 '\u{5e}',
10509 '\u{5f}',
10510 '\u{60}',
10511 '\u{61}',
10512 '\u{62}',
10513 '\u{63}',
10514 '\u{64}',
10515 '\u{65}',
10516 '\u{66}',
10517 '\u{67}',
10518 '\u{68}',
10519 '\u{69}',
10520 '\u{6a}',
10521 '\u{6b}',
10522 '\u{6c}',
10523 '\u{6d}',
10524 '\u{6e}',
10525 '\u{6f}',
10526 '\u{70}',
10527 '\u{71}',
10528 '\u{72}',
10529 '\u{73}',
10530 '\u{74}',
10531 '\u{75}',
10532 '\u{76}',
10533 '\u{77}',
10534 '\u{78}',
10535 '\u{79}',
10536 '\u{7a}',
10537 '\u{7b}',
10538 '\u{7c}',
10539 '\u{7d}',
10540 '\u{7e}',
10541 '\u{1a}',
10542 char::REPLACEMENT_CHARACTER,
10543 char::REPLACEMENT_CHARACTER,
10544 char::REPLACEMENT_CHARACTER,
10545 char::REPLACEMENT_CHARACTER,
10546 char::REPLACEMENT_CHARACTER,
10547 char::REPLACEMENT_CHARACTER,
10548 '\u{386}',
10549 char::REPLACEMENT_CHARACTER,
10550 '\u{387}',
10551 '\u{ac}',
10552 '\u{a6}',
10553 '\u{2018}',
10554 '\u{2019}',
10555 '\u{388}',
10556 '\u{2015}',
10557 '\u{389}',
10558 '\u{38a}',
10559 '\u{3aa}',
10560 '\u{38c}',
10561 char::REPLACEMENT_CHARACTER,
10562 char::REPLACEMENT_CHARACTER,
10563 '\u{38e}',
10564 '\u{3ab}',
10565 '\u{a9}',
10566 '\u{38f}',
10567 '\u{b2}',
10568 '\u{b3}',
10569 '\u{3ac}',
10570 '\u{a3}',
10571 '\u{3ad}',
10572 '\u{3ae}',
10573 '\u{3af}',
10574 '\u{3ca}',
10575 '\u{390}',
10576 '\u{3cc}',
10577 '\u{3cd}',
10578 '\u{391}',
10579 '\u{392}',
10580 '\u{393}',
10581 '\u{394}',
10582 '\u{395}',
10583 '\u{396}',
10584 '\u{397}',
10585 '\u{bd}',
10586 '\u{398}',
10587 '\u{399}',
10588 '\u{ab}',
10589 '\u{bb}',
10590 '\u{2591}',
10591 '\u{2592}',
10592 '\u{2593}',
10593 '\u{2502}',
10594 '\u{2524}',
10595 '\u{39a}',
10596 '\u{39b}',
10597 '\u{39c}',
10598 '\u{39d}',
10599 '\u{2563}',
10600 '\u{2551}',
10601 '\u{2557}',
10602 '\u{255d}',
10603 '\u{39e}',
10604 '\u{39f}',
10605 '\u{2510}',
10606 '\u{2514}',
10607 '\u{2534}',
10608 '\u{252c}',
10609 '\u{251c}',
10610 '\u{2500}',
10611 '\u{253c}',
10612 '\u{3a0}',
10613 '\u{3a1}',
10614 '\u{255a}',
10615 '\u{2554}',
10616 '\u{2569}',
10617 '\u{2566}',
10618 '\u{2560}',
10619 '\u{2550}',
10620 '\u{256c}',
10621 '\u{3a3}',
10622 '\u{3a4}',
10623 '\u{3a5}',
10624 '\u{3a6}',
10625 '\u{3a7}',
10626 '\u{3a8}',
10627 '\u{3a9}',
10628 '\u{3b1}',
10629 '\u{3b2}',
10630 '\u{3b3}',
10631 '\u{2518}',
10632 '\u{250c}',
10633 '\u{2588}',
10634 '\u{2584}',
10635 '\u{3b4}',
10636 '\u{3b5}',
10637 '\u{2580}',
10638 '\u{3b6}',
10639 '\u{3b7}',
10640 '\u{3b8}',
10641 '\u{3b9}',
10642 '\u{3ba}',
10643 '\u{3bb}',
10644 '\u{3bc}',
10645 '\u{3bd}',
10646 '\u{3be}',
10647 '\u{3bf}',
10648 '\u{3c0}',
10649 '\u{3c1}',
10650 '\u{3c3}',
10651 '\u{3c2}',
10652 '\u{3c4}',
10653 '\u{b4}',
10654 '\u{ad}',
10655 '\u{b1}',
10656 '\u{3c5}',
10657 '\u{3c6}',
10658 '\u{3c7}',
10659 '\u{a7}',
10660 '\u{3c8}',
10661 '\u{385}',
10662 '\u{b0}',
10663 '\u{a8}',
10664 '\u{3c9}',
10665 '\u{3cb}',
10666 '\u{3b0}',
10667 '\u{3ce}',
10668 '\u{25a0}',
10669 '\u{a0}',
10670];
10671const IBM_869_ENCODE_TABLE: &[(u16, u8)] = &[
10672 (0, 0),
10673 (1, 1),
10674 (2, 2),
10675 (3, 3),
10676 (4, 4),
10677 (5, 5),
10678 (6, 6),
10679 (7, 7),
10680 (8, 8),
10681 (9, 9),
10682 (10, 10),
10683 (11, 11),
10684 (12, 12),
10685 (13, 13),
10686 (14, 14),
10687 (15, 15),
10688 (16, 16),
10689 (17, 17),
10690 (18, 18),
10691 (19, 19),
10692 (20, 20),
10693 (21, 21),
10694 (22, 22),
10695 (23, 23),
10696 (24, 24),
10697 (25, 25),
10698 (26, 127),
10699 (27, 27),
10700 (28, 26),
10701 (29, 29),
10702 (30, 30),
10703 (31, 31),
10704 (32, 32),
10705 (33, 33),
10706 (34, 34),
10707 (35, 35),
10708 (36, 36),
10709 (37, 37),
10710 (38, 38),
10711 (39, 39),
10712 (40, 40),
10713 (41, 41),
10714 (42, 42),
10715 (43, 43),
10716 (44, 44),
10717 (45, 45),
10718 (46, 46),
10719 (47, 47),
10720 (48, 48),
10721 (49, 49),
10722 (50, 50),
10723 (51, 51),
10724 (52, 52),
10725 (53, 53),
10726 (54, 54),
10727 (55, 55),
10728 (56, 56),
10729 (57, 57),
10730 (58, 58),
10731 (59, 59),
10732 (60, 60),
10733 (61, 61),
10734 (62, 62),
10735 (63, 63),
10736 (64, 64),
10737 (65, 65),
10738 (66, 66),
10739 (67, 67),
10740 (68, 68),
10741 (69, 69),
10742 (70, 70),
10743 (71, 71),
10744 (72, 72),
10745 (73, 73),
10746 (74, 74),
10747 (75, 75),
10748 (76, 76),
10749 (77, 77),
10750 (78, 78),
10751 (79, 79),
10752 (80, 80),
10753 (81, 81),
10754 (82, 82),
10755 (83, 83),
10756 (84, 84),
10757 (85, 85),
10758 (86, 86),
10759 (87, 87),
10760 (88, 88),
10761 (89, 89),
10762 (90, 90),
10763 (91, 91),
10764 (92, 92),
10765 (93, 93),
10766 (94, 94),
10767 (95, 95),
10768 (96, 96),
10769 (97, 97),
10770 (98, 98),
10771 (99, 99),
10772 (100, 100),
10773 (101, 101),
10774 (102, 102),
10775 (103, 103),
10776 (104, 104),
10777 (105, 105),
10778 (106, 106),
10779 (107, 107),
10780 (108, 108),
10781 (109, 109),
10782 (110, 110),
10783 (111, 111),
10784 (112, 112),
10785 (113, 113),
10786 (114, 114),
10787 (115, 115),
10788 (116, 116),
10789 (117, 117),
10790 (118, 118),
10791 (119, 119),
10792 (120, 120),
10793 (121, 121),
10794 (122, 122),
10795 (123, 123),
10796 (124, 124),
10797 (125, 125),
10798 (126, 126),
10799 (127, 28),
10800 (160, 255),
10801 (163, 156),
10802 (166, 138),
10803 (167, 245),
10804 (168, 249),
10805 (169, 151),
10806 (171, 174),
10807 (172, 137),
10808 (173, 240),
10809 (176, 248),
10810 (177, 241),
10811 (178, 153),
10812 (179, 154),
10813 (180, 239),
10814 (187, 175),
10815 (189, 171),
10816 (901, 247),
10817 (902, 134),
10818 (903, 136),
10819 (904, 141),
10820 (905, 143),
10821 (906, 144),
10822 (908, 146),
10823 (910, 149),
10824 (911, 152),
10825 (912, 161),
10826 (913, 164),
10827 (914, 165),
10828 (915, 166),
10829 (916, 167),
10830 (917, 168),
10831 (918, 169),
10832 (919, 170),
10833 (920, 172),
10834 (921, 173),
10835 (922, 181),
10836 (923, 182),
10837 (924, 183),
10838 (925, 184),
10839 (926, 189),
10840 (927, 190),
10841 (928, 198),
10842 (929, 199),
10843 (931, 207),
10844 (932, 208),
10845 (933, 209),
10846 (934, 210),
10847 (935, 211),
10848 (936, 212),
10849 (937, 213),
10850 (938, 145),
10851 (939, 150),
10852 (940, 155),
10853 (941, 157),
10854 (942, 158),
10855 (943, 159),
10856 (944, 252),
10857 (945, 214),
10858 (946, 215),
10859 (947, 216),
10860 (948, 221),
10861 (949, 222),
10862 (950, 224),
10863 (951, 225),
10864 (952, 226),
10865 (953, 227),
10866 (954, 228),
10867 (955, 229),
10868 (956, 230),
10869 (957, 231),
10870 (958, 232),
10871 (959, 233),
10872 (960, 234),
10873 (961, 235),
10874 (962, 237),
10875 (963, 236),
10876 (964, 238),
10877 (965, 242),
10878 (966, 243),
10879 (967, 244),
10880 (968, 246),
10881 (969, 250),
10882 (970, 160),
10883 (971, 251),
10884 (972, 162),
10885 (973, 163),
10886 (974, 253),
10887 (8213, 142),
10888 (8216, 139),
10889 (8217, 140),
10890 (9472, 196),
10891 (9474, 179),
10892 (9484, 218),
10893 (9488, 191),
10894 (9492, 192),
10895 (9496, 217),
10896 (9500, 195),
10897 (9508, 180),
10898 (9516, 194),
10899 (9524, 193),
10900 (9532, 197),
10901 (9552, 205),
10902 (9553, 186),
10903 (9556, 201),
10904 (9559, 187),
10905 (9562, 200),
10906 (9565, 188),
10907 (9568, 204),
10908 (9571, 185),
10909 (9574, 203),
10910 (9577, 202),
10911 (9580, 206),
10912 (9600, 223),
10913 (9604, 220),
10914 (9608, 219),
10915 (9617, 176),
10916 (9618, 177),
10917 (9619, 178),
10918 (9632, 254),
10919];
10920
10921impl_ebcdic_encoder_and_decoder!(
10922 IBM870,
10923 "IBM870",
10924 IBM870Encoder,
10925 IBM870Decoder,
10926 IBM_870_ENCODE_TABLE,
10927 IBM_870_DECODE_TABLE
10928);
10929const IBM_870_DECODE_TABLE: [char; 256] = [
10930 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
10931 '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
10932 '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
10933 '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
10934 '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
10935 '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
10936 '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
10937 '\u{a0}', '\u{e2}', '\u{e4}', '\u{163}', '\u{e1}', '\u{103}', '\u{10d}', '\u{e7}', '\u{107}',
10938 '\u{5b}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{e9}', '\u{119}',
10939 '\u{eb}', '\u{16f}', '\u{ed}', '\u{ee}', '\u{13e}', '\u{13a}', '\u{df}', '\u{5d}', '\u{24}',
10940 '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{2dd}',
10941 '\u{c1}', '\u{102}', '\u{10c}', '\u{c7}', '\u{106}', '\u{7c}', '\u{2c}', '\u{25}', '\u{5f}',
10942 '\u{3e}', '\u{3f}', '\u{2c7}', '\u{c9}', '\u{118}', '\u{cb}', '\u{16e}', '\u{cd}', '\u{ce}',
10943 '\u{13d}', '\u{139}', '\u{60}', '\u{3a}', '\u{23}', '\u{40}', '\u{27}', '\u{3d}', '\u{22}',
10944 '\u{2d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
10945 '\u{69}', '\u{15b}', '\u{148}', '\u{111}', '\u{fd}', '\u{159}', '\u{15f}', '\u{b0}', '\u{6a}',
10946 '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{142}',
10947 '\u{144}', '\u{161}', '\u{b8}', '\u{2db}', '\u{a4}', '\u{105}', '\u{7e}', '\u{73}', '\u{74}',
10948 '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{15a}', '\u{147}', '\u{110}',
10949 '\u{dd}', '\u{158}', '\u{15e}', '\u{2d9}', '\u{104}', '\u{17c}', '\u{162}', '\u{17b}',
10950 '\u{a7}', '\u{17e}', '\u{17a}', '\u{17d}', '\u{179}', '\u{141}', '\u{143}', '\u{160}',
10951 '\u{a8}', '\u{b4}', '\u{d7}', '\u{7b}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}',
10952 '\u{46}', '\u{47}', '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{155}', '\u{f3}',
10953 '\u{151}', '\u{7d}', '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}',
10954 '\u{51}', '\u{52}', '\u{11a}', '\u{171}', '\u{fc}', '\u{165}', '\u{fa}', '\u{11b}', '\u{5c}',
10955 '\u{f7}', '\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}',
10956 '\u{10f}', '\u{d4}', '\u{d6}', '\u{154}', '\u{d3}', '\u{150}', '\u{30}', '\u{31}', '\u{32}',
10957 '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{10e}', '\u{170}',
10958 '\u{dc}', '\u{164}', '\u{da}', '\u{9f}',
10959];
10960const IBM_870_ENCODE_TABLE: &[(u16, u8)] = &[
10961 (0, 0),
10962 (1, 1),
10963 (2, 2),
10964 (3, 3),
10965 (4, 55),
10966 (5, 45),
10967 (6, 46),
10968 (7, 47),
10969 (8, 22),
10970 (9, 5),
10971 (10, 37),
10972 (11, 11),
10973 (12, 12),
10974 (13, 13),
10975 (14, 14),
10976 (15, 15),
10977 (16, 16),
10978 (17, 17),
10979 (18, 18),
10980 (19, 19),
10981 (20, 60),
10982 (21, 61),
10983 (22, 50),
10984 (23, 38),
10985 (24, 24),
10986 (25, 25),
10987 (26, 63),
10988 (27, 39),
10989 (28, 28),
10990 (29, 29),
10991 (30, 30),
10992 (31, 31),
10993 (32, 64),
10994 (33, 79),
10995 (34, 127),
10996 (35, 123),
10997 (36, 91),
10998 (37, 108),
10999 (38, 80),
11000 (39, 125),
11001 (40, 77),
11002 (41, 93),
11003 (42, 92),
11004 (43, 78),
11005 (44, 107),
11006 (45, 96),
11007 (46, 75),
11008 (47, 97),
11009 (48, 240),
11010 (49, 241),
11011 (50, 242),
11012 (51, 243),
11013 (52, 244),
11014 (53, 245),
11015 (54, 246),
11016 (55, 247),
11017 (56, 248),
11018 (57, 249),
11019 (58, 122),
11020 (59, 94),
11021 (60, 76),
11022 (61, 126),
11023 (62, 110),
11024 (63, 111),
11025 (64, 124),
11026 (65, 193),
11027 (66, 194),
11028 (67, 195),
11029 (68, 196),
11030 (69, 197),
11031 (70, 198),
11032 (71, 199),
11033 (72, 200),
11034 (73, 201),
11035 (74, 209),
11036 (75, 210),
11037 (76, 211),
11038 (77, 212),
11039 (78, 213),
11040 (79, 214),
11041 (80, 215),
11042 (81, 216),
11043 (82, 217),
11044 (83, 226),
11045 (84, 227),
11046 (85, 228),
11047 (86, 229),
11048 (87, 230),
11049 (88, 231),
11050 (89, 232),
11051 (90, 233),
11052 (91, 74),
11053 (92, 224),
11054 (93, 90),
11055 (94, 95),
11056 (95, 109),
11057 (96, 121),
11058 (97, 129),
11059 (98, 130),
11060 (99, 131),
11061 (100, 132),
11062 (101, 133),
11063 (102, 134),
11064 (103, 135),
11065 (104, 136),
11066 (105, 137),
11067 (106, 145),
11068 (107, 146),
11069 (108, 147),
11070 (109, 148),
11071 (110, 149),
11072 (111, 150),
11073 (112, 151),
11074 (113, 152),
11075 (114, 153),
11076 (115, 162),
11077 (116, 163),
11078 (117, 164),
11079 (118, 165),
11080 (119, 166),
11081 (120, 167),
11082 (121, 168),
11083 (122, 169),
11084 (123, 192),
11085 (124, 106),
11086 (125, 208),
11087 (126, 161),
11088 (127, 7),
11089 (128, 32),
11090 (129, 33),
11091 (130, 34),
11092 (131, 35),
11093 (132, 36),
11094 (133, 21),
11095 (134, 6),
11096 (135, 23),
11097 (136, 40),
11098 (137, 41),
11099 (138, 42),
11100 (139, 43),
11101 (140, 44),
11102 (141, 9),
11103 (142, 10),
11104 (143, 27),
11105 (144, 48),
11106 (145, 49),
11107 (146, 26),
11108 (147, 51),
11109 (148, 52),
11110 (149, 53),
11111 (150, 54),
11112 (151, 8),
11113 (152, 56),
11114 (153, 57),
11115 (154, 58),
11116 (155, 59),
11117 (156, 4),
11118 (157, 20),
11119 (158, 62),
11120 (159, 255),
11121 (160, 65),
11122 (164, 159),
11123 (167, 181),
11124 (168, 189),
11125 (173, 202),
11126 (176, 144),
11127 (180, 190),
11128 (184, 157),
11129 (193, 101),
11130 (194, 98),
11131 (196, 99),
11132 (199, 104),
11133 (201, 113),
11134 (203, 115),
11135 (205, 117),
11136 (206, 118),
11137 (211, 238),
11138 (212, 235),
11139 (214, 236),
11140 (215, 191),
11141 (218, 254),
11142 (220, 252),
11143 (221, 173),
11144 (223, 89),
11145 (225, 69),
11146 (226, 66),
11147 (228, 67),
11148 (231, 72),
11149 (233, 81),
11150 (235, 83),
11151 (237, 85),
11152 (238, 86),
11153 (243, 206),
11154 (244, 203),
11155 (246, 204),
11156 (247, 225),
11157 (250, 222),
11158 (252, 220),
11159 (253, 141),
11160 (258, 102),
11161 (259, 70),
11162 (260, 177),
11163 (261, 160),
11164 (262, 105),
11165 (263, 73),
11166 (268, 103),
11167 (269, 71),
11168 (270, 250),
11169 (271, 234),
11170 (272, 172),
11171 (273, 140),
11172 (280, 114),
11173 (281, 82),
11174 (282, 218),
11175 (283, 223),
11176 (313, 120),
11177 (314, 88),
11178 (317, 119),
11179 (318, 87),
11180 (321, 186),
11181 (322, 154),
11182 (323, 187),
11183 (324, 155),
11184 (327, 171),
11185 (328, 139),
11186 (336, 239),
11187 (337, 207),
11188 (340, 237),
11189 (341, 205),
11190 (344, 174),
11191 (345, 142),
11192 (346, 170),
11193 (347, 138),
11194 (350, 175),
11195 (351, 143),
11196 (352, 188),
11197 (353, 156),
11198 (354, 179),
11199 (355, 68),
11200 (356, 253),
11201 (357, 221),
11202 (366, 116),
11203 (367, 84),
11204 (368, 251),
11205 (369, 219),
11206 (377, 185),
11207 (378, 183),
11208 (379, 180),
11209 (380, 178),
11210 (381, 184),
11211 (382, 182),
11212 (711, 112),
11213 (728, 128),
11214 (729, 176),
11215 (731, 158),
11216 (733, 100),
11217];
11218
11219impl_ebcdic_encoder_and_decoder!(
11220 IBM871,
11221 "IBM871",
11222 IBM871Encoder,
11223 IBM871Decoder,
11224 IBM_871_ENCODE_TABLE,
11225 IBM_871_DECODE_TABLE
11226);
11227const IBM_871_DECODE_TABLE: [char; 256] = [
11228 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
11229 '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
11230 '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
11231 '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
11232 '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
11233 '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
11234 '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
11235 '\u{a0}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{e7}', '\u{f1}',
11236 '\u{de}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{e9}', '\u{ea}',
11237 '\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{c6}', '\u{24}',
11238 '\u{2a}', '\u{29}', '\u{3b}', '\u{d6}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
11239 '\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{d1}', '\u{a6}', '\u{2c}', '\u{25}', '\u{5f}',
11240 '\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
11241 '\u{cf}', '\u{cc}', '\u{f0}', '\u{3a}', '\u{23}', '\u{d0}', '\u{27}', '\u{3d}', '\u{22}',
11242 '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
11243 '\u{69}', '\u{ab}', '\u{bb}', '\u{60}', '\u{fd}', '\u{7b}', '\u{b1}', '\u{b0}', '\u{6a}',
11244 '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
11245 '\u{ba}', '\u{7d}', '\u{b8}', '\u{5d}', '\u{a4}', '\u{b5}', '\u{f6}', '\u{73}', '\u{74}',
11246 '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{40}',
11247 '\u{dd}', '\u{5b}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
11248 '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{a8}', '\u{5c}',
11249 '\u{d7}', '\u{fe}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
11250 '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{7e}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{e6}',
11251 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
11252 '\u{b9}', '\u{fb}', '\u{fc}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{b4}', '\u{f7}', '\u{53}',
11253 '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
11254 '\u{5e}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
11255 '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
11256 '\u{da}', '\u{9f}',
11257];
11258const IBM_871_ENCODE_TABLE: &[(u16, u8)] = &[
11259 (0, 0),
11260 (1, 1),
11261 (2, 2),
11262 (3, 3),
11263 (4, 55),
11264 (5, 45),
11265 (6, 46),
11266 (7, 47),
11267 (8, 22),
11268 (9, 5),
11269 (10, 37),
11270 (11, 11),
11271 (12, 12),
11272 (13, 13),
11273 (14, 14),
11274 (15, 15),
11275 (16, 16),
11276 (17, 17),
11277 (18, 18),
11278 (19, 19),
11279 (20, 60),
11280 (21, 61),
11281 (22, 50),
11282 (23, 38),
11283 (24, 24),
11284 (25, 25),
11285 (26, 63),
11286 (27, 39),
11287 (28, 28),
11288 (29, 29),
11289 (30, 30),
11290 (31, 31),
11291 (32, 64),
11292 (33, 79),
11293 (34, 127),
11294 (35, 123),
11295 (36, 91),
11296 (37, 108),
11297 (38, 80),
11298 (39, 125),
11299 (40, 77),
11300 (41, 93),
11301 (42, 92),
11302 (43, 78),
11303 (44, 107),
11304 (45, 96),
11305 (46, 75),
11306 (47, 97),
11307 (48, 240),
11308 (49, 241),
11309 (50, 242),
11310 (51, 243),
11311 (52, 244),
11312 (53, 245),
11313 (54, 246),
11314 (55, 247),
11315 (56, 248),
11316 (57, 249),
11317 (58, 122),
11318 (59, 94),
11319 (60, 76),
11320 (61, 126),
11321 (62, 110),
11322 (63, 111),
11323 (64, 172),
11324 (65, 193),
11325 (66, 194),
11326 (67, 195),
11327 (68, 196),
11328 (69, 197),
11329 (70, 198),
11330 (71, 199),
11331 (72, 200),
11332 (73, 201),
11333 (74, 209),
11334 (75, 210),
11335 (76, 211),
11336 (77, 212),
11337 (78, 213),
11338 (79, 214),
11339 (80, 215),
11340 (81, 216),
11341 (82, 217),
11342 (83, 226),
11343 (84, 227),
11344 (85, 228),
11345 (86, 229),
11346 (87, 230),
11347 (88, 231),
11348 (89, 232),
11349 (90, 233),
11350 (91, 174),
11351 (92, 190),
11352 (93, 158),
11353 (94, 236),
11354 (95, 109),
11355 (96, 140),
11356 (97, 129),
11357 (98, 130),
11358 (99, 131),
11359 (100, 132),
11360 (101, 133),
11361 (102, 134),
11362 (103, 135),
11363 (104, 136),
11364 (105, 137),
11365 (106, 145),
11366 (107, 146),
11367 (108, 147),
11368 (109, 148),
11369 (110, 149),
11370 (111, 150),
11371 (112, 151),
11372 (113, 152),
11373 (114, 153),
11374 (115, 162),
11375 (116, 163),
11376 (117, 164),
11377 (118, 165),
11378 (119, 166),
11379 (120, 167),
11380 (121, 168),
11381 (122, 169),
11382 (123, 142),
11383 (124, 187),
11384 (125, 156),
11385 (126, 204),
11386 (127, 7),
11387 (128, 32),
11388 (129, 33),
11389 (130, 34),
11390 (131, 35),
11391 (132, 36),
11392 (133, 21),
11393 (134, 6),
11394 (135, 23),
11395 (136, 40),
11396 (137, 41),
11397 (138, 42),
11398 (139, 43),
11399 (140, 44),
11400 (141, 9),
11401 (142, 10),
11402 (143, 27),
11403 (144, 48),
11404 (145, 49),
11405 (146, 26),
11406 (147, 51),
11407 (148, 52),
11408 (149, 53),
11409 (150, 54),
11410 (151, 8),
11411 (152, 56),
11412 (153, 57),
11413 (154, 58),
11414 (155, 59),
11415 (156, 4),
11416 (157, 20),
11417 (158, 62),
11418 (159, 255),
11419 (160, 65),
11420 (161, 170),
11421 (162, 176),
11422 (163, 177),
11423 (164, 159),
11424 (165, 178),
11425 (166, 106),
11426 (167, 181),
11427 (168, 189),
11428 (169, 180),
11429 (170, 154),
11430 (171, 138),
11431 (172, 186),
11432 (173, 202),
11433 (174, 175),
11434 (175, 188),
11435 (176, 144),
11436 (177, 143),
11437 (178, 234),
11438 (179, 250),
11439 (180, 224),
11440 (181, 160),
11441 (182, 182),
11442 (183, 179),
11443 (184, 157),
11444 (185, 218),
11445 (186, 155),
11446 (187, 139),
11447 (188, 183),
11448 (189, 184),
11449 (190, 185),
11450 (191, 171),
11451 (192, 100),
11452 (193, 101),
11453 (194, 98),
11454 (195, 102),
11455 (196, 99),
11456 (197, 103),
11457 (198, 90),
11458 (199, 104),
11459 (200, 116),
11460 (201, 113),
11461 (202, 114),
11462 (203, 115),
11463 (204, 120),
11464 (205, 117),
11465 (206, 118),
11466 (207, 119),
11467 (208, 124),
11468 (209, 105),
11469 (210, 237),
11470 (211, 238),
11471 (212, 235),
11472 (213, 239),
11473 (214, 95),
11474 (215, 191),
11475 (216, 128),
11476 (217, 253),
11477 (218, 254),
11478 (219, 251),
11479 (220, 252),
11480 (221, 173),
11481 (222, 74),
11482 (223, 89),
11483 (224, 68),
11484 (225, 69),
11485 (226, 66),
11486 (227, 70),
11487 (228, 67),
11488 (229, 71),
11489 (230, 208),
11490 (231, 72),
11491 (232, 84),
11492 (233, 81),
11493 (234, 82),
11494 (235, 83),
11495 (236, 88),
11496 (237, 85),
11497 (238, 86),
11498 (239, 87),
11499 (240, 121),
11500 (241, 73),
11501 (242, 205),
11502 (243, 206),
11503 (244, 203),
11504 (245, 207),
11505 (246, 161),
11506 (247, 225),
11507 (248, 112),
11508 (249, 221),
11509 (250, 222),
11510 (251, 219),
11511 (252, 220),
11512 (253, 141),
11513 (254, 192),
11514 (255, 223),
11515];
11516
11517impl_ebcdic_encoder_and_decoder!(
11518 IBM880,
11519 "IBM880",
11520 IBM880Encoder,
11521 IBM880Decoder,
11522 IBM_880_ENCODE_TABLE,
11523 IBM_880_DECODE_TABLE
11524);
11525const IBM_880_DECODE_TABLE: [char; 256] = [
11526 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
11527 '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
11528 '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
11529 '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
11530 '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
11531 '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
11532 '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
11533 '\u{a0}', '\u{452}', '\u{453}', '\u{451}', '\u{454}', '\u{455}', '\u{456}', '\u{457}',
11534 '\u{458}', '\u{5b}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{459}',
11535 '\u{45a}', '\u{45b}', '\u{45c}', '\u{45e}', '\u{45f}', '\u{42a}', '\u{2116}', '\u{402}',
11536 '\u{5d}', '\u{24}', '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{403}',
11537 '\u{401}', '\u{404}', '\u{405}', '\u{406}', '\u{407}', '\u{408}', '\u{409}', '\u{7c}',
11538 '\u{2c}', '\u{25}', '\u{5f}', '\u{3e}', '\u{3f}', '\u{40a}', '\u{40b}', '\u{40c}', '\u{ad}',
11539 '\u{40e}', '\u{40f}', '\u{44e}', '\u{430}', '\u{431}', '\u{60}', '\u{3a}', '\u{23}', '\u{40}',
11540 '\u{27}', '\u{3d}', '\u{22}', '\u{446}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}',
11541 '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{434}', '\u{435}', '\u{444}', '\u{433}', '\u{445}',
11542 '\u{438}', '\u{439}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}',
11543 '\u{71}', '\u{72}', '\u{43a}', '\u{43b}', '\u{43c}', '\u{43d}', '\u{43e}', '\u{43f}',
11544 '\u{44f}', '\u{7e}', '\u{73}', '\u{74}', '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}',
11545 '\u{7a}', '\u{440}', '\u{441}', '\u{442}', '\u{443}', '\u{436}', '\u{432}', '\u{44c}',
11546 '\u{44b}', '\u{437}', '\u{448}', '\u{44d}', '\u{449}', '\u{447}', '\u{44a}', '\u{42e}',
11547 '\u{410}', '\u{411}', '\u{426}', '\u{414}', '\u{415}', '\u{424}', '\u{413}', '\u{7b}',
11548 '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
11549 '\u{425}', '\u{418}', '\u{419}', '\u{41a}', '\u{41b}', '\u{41c}', '\u{7d}', '\u{4a}', '\u{4b}',
11550 '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}', '\u{41d}', '\u{41e}',
11551 '\u{41f}', '\u{42f}', '\u{420}', '\u{421}', '\u{5c}', '\u{a4}', '\u{53}', '\u{54}', '\u{55}',
11552 '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{422}', '\u{423}', '\u{416}', '\u{412}',
11553 '\u{42c}', '\u{42b}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}',
11554 '\u{37}', '\u{38}', '\u{39}', '\u{417}', '\u{428}', '\u{42d}', '\u{429}', '\u{427}', '\u{9f}',
11555];
11556const IBM_880_ENCODE_TABLE: &[(u16, u8)] = &[
11557 (0, 0),
11558 (1, 1),
11559 (2, 2),
11560 (3, 3),
11561 (4, 55),
11562 (5, 45),
11563 (6, 46),
11564 (7, 47),
11565 (8, 22),
11566 (9, 5),
11567 (10, 37),
11568 (11, 11),
11569 (12, 12),
11570 (13, 13),
11571 (14, 14),
11572 (15, 15),
11573 (16, 16),
11574 (17, 17),
11575 (18, 18),
11576 (19, 19),
11577 (20, 60),
11578 (21, 61),
11579 (22, 50),
11580 (23, 38),
11581 (24, 24),
11582 (25, 25),
11583 (26, 63),
11584 (27, 39),
11585 (28, 28),
11586 (29, 29),
11587 (30, 30),
11588 (31, 31),
11589 (32, 64),
11590 (33, 79),
11591 (34, 127),
11592 (35, 123),
11593 (36, 91),
11594 (37, 108),
11595 (38, 80),
11596 (39, 125),
11597 (40, 77),
11598 (41, 93),
11599 (42, 92),
11600 (43, 78),
11601 (44, 107),
11602 (45, 96),
11603 (46, 75),
11604 (47, 97),
11605 (48, 240),
11606 (49, 241),
11607 (50, 242),
11608 (51, 243),
11609 (52, 244),
11610 (53, 245),
11611 (54, 246),
11612 (55, 247),
11613 (56, 248),
11614 (57, 249),
11615 (58, 122),
11616 (59, 94),
11617 (60, 76),
11618 (61, 126),
11619 (62, 110),
11620 (63, 111),
11621 (64, 124),
11622 (65, 193),
11623 (66, 194),
11624 (67, 195),
11625 (68, 196),
11626 (69, 197),
11627 (70, 198),
11628 (71, 199),
11629 (72, 200),
11630 (73, 201),
11631 (74, 209),
11632 (75, 210),
11633 (76, 211),
11634 (77, 212),
11635 (78, 213),
11636 (79, 214),
11637 (80, 215),
11638 (81, 216),
11639 (82, 217),
11640 (83, 226),
11641 (84, 227),
11642 (85, 228),
11643 (86, 229),
11644 (87, 230),
11645 (88, 231),
11646 (89, 232),
11647 (90, 233),
11648 (91, 74),
11649 (92, 224),
11650 (93, 90),
11651 (94, 95),
11652 (95, 109),
11653 (96, 121),
11654 (97, 129),
11655 (98, 130),
11656 (99, 131),
11657 (100, 132),
11658 (101, 133),
11659 (102, 134),
11660 (103, 135),
11661 (104, 136),
11662 (105, 137),
11663 (106, 145),
11664 (107, 146),
11665 (108, 147),
11666 (109, 148),
11667 (110, 149),
11668 (111, 150),
11669 (112, 151),
11670 (113, 152),
11671 (114, 153),
11672 (115, 162),
11673 (116, 163),
11674 (117, 164),
11675 (118, 165),
11676 (119, 166),
11677 (120, 167),
11678 (121, 168),
11679 (122, 169),
11680 (123, 192),
11681 (124, 106),
11682 (125, 208),
11683 (126, 161),
11684 (127, 7),
11685 (128, 32),
11686 (129, 33),
11687 (130, 34),
11688 (131, 35),
11689 (132, 36),
11690 (133, 21),
11691 (134, 6),
11692 (135, 23),
11693 (136, 40),
11694 (137, 41),
11695 (138, 42),
11696 (139, 43),
11697 (140, 44),
11698 (141, 9),
11699 (142, 10),
11700 (143, 27),
11701 (144, 48),
11702 (145, 49),
11703 (146, 26),
11704 (147, 51),
11705 (148, 52),
11706 (149, 53),
11707 (150, 54),
11708 (151, 8),
11709 (152, 56),
11710 (153, 57),
11711 (154, 58),
11712 (155, 59),
11713 (156, 4),
11714 (157, 20),
11715 (158, 62),
11716 (159, 255),
11717 (160, 65),
11718 (164, 225),
11719 (173, 115),
11720 (1025, 99),
11721 (1026, 89),
11722 (1027, 98),
11723 (1028, 100),
11724 (1029, 101),
11725 (1030, 102),
11726 (1031, 103),
11727 (1032, 104),
11728 (1033, 105),
11729 (1034, 112),
11730 (1035, 113),
11731 (1036, 114),
11732 (1038, 116),
11733 (1039, 117),
11734 (1040, 185),
11735 (1041, 186),
11736 (1042, 237),
11737 (1043, 191),
11738 (1044, 188),
11739 (1045, 189),
11740 (1046, 236),
11741 (1047, 250),
11742 (1048, 203),
11743 (1049, 204),
11744 (1050, 205),
11745 (1051, 206),
11746 (1052, 207),
11747 (1053, 218),
11748 (1054, 219),
11749 (1055, 220),
11750 (1056, 222),
11751 (1057, 223),
11752 (1058, 234),
11753 (1059, 235),
11754 (1060, 190),
11755 (1061, 202),
11756 (1062, 187),
11757 (1063, 254),
11758 (1064, 251),
11759 (1065, 253),
11760 (1066, 87),
11761 (1067, 239),
11762 (1068, 238),
11763 (1069, 252),
11764 (1070, 184),
11765 (1071, 221),
11766 (1072, 119),
11767 (1073, 120),
11768 (1074, 175),
11769 (1075, 141),
11770 (1076, 138),
11771 (1077, 139),
11772 (1078, 174),
11773 (1079, 178),
11774 (1080, 143),
11775 (1081, 144),
11776 (1082, 154),
11777 (1083, 155),
11778 (1084, 156),
11779 (1085, 157),
11780 (1086, 158),
11781 (1087, 159),
11782 (1088, 170),
11783 (1089, 171),
11784 (1090, 172),
11785 (1091, 173),
11786 (1092, 140),
11787 (1093, 142),
11788 (1094, 128),
11789 (1095, 182),
11790 (1096, 179),
11791 (1097, 181),
11792 (1098, 183),
11793 (1099, 177),
11794 (1100, 176),
11795 (1101, 180),
11796 (1102, 118),
11797 (1103, 160),
11798 (1105, 68),
11799 (1106, 66),
11800 (1107, 67),
11801 (1108, 69),
11802 (1109, 70),
11803 (1110, 71),
11804 (1111, 72),
11805 (1112, 73),
11806 (1113, 81),
11807 (1114, 82),
11808 (1115, 83),
11809 (1116, 84),
11810 (1118, 85),
11811 (1119, 86),
11812 (8470, 88),
11813];
11814
11815impl_ebcdic_encoder_and_decoder!(
11816 IBM891,
11817 "IBM891",
11818 IBM891Encoder,
11819 IBM891Decoder,
11820 IBM_891_ENCODE_TABLE,
11821 IBM_891_DECODE_TABLE
11822);
11823const IBM_891_DECODE_TABLE: [char; 256] = [
11824 '\u{0}',
11825 '\u{1}',
11826 '\u{2}',
11827 '\u{3}',
11828 '\u{4}',
11829 '\u{5}',
11830 '\u{6}',
11831 '\u{7}',
11832 '\u{8}',
11833 '\u{9}',
11834 '\u{a}',
11835 '\u{b}',
11836 '\u{c}',
11837 '\u{d}',
11838 '\u{e}',
11839 '\u{f}',
11840 '\u{10}',
11841 '\u{11}',
11842 '\u{12}',
11843 '\u{13}',
11844 '\u{14}',
11845 '\u{15}',
11846 '\u{16}',
11847 '\u{17}',
11848 '\u{18}',
11849 '\u{19}',
11850 '\u{1c}',
11851 '\u{1b}',
11852 '\u{7f}',
11853 '\u{1d}',
11854 '\u{1e}',
11855 '\u{1f}',
11856 '\u{20}',
11857 '\u{21}',
11858 '\u{22}',
11859 '\u{23}',
11860 '\u{24}',
11861 '\u{25}',
11862 '\u{26}',
11863 '\u{27}',
11864 '\u{28}',
11865 '\u{29}',
11866 '\u{2a}',
11867 '\u{2b}',
11868 '\u{2c}',
11869 '\u{2d}',
11870 '\u{2e}',
11871 '\u{2f}',
11872 '\u{30}',
11873 '\u{31}',
11874 '\u{32}',
11875 '\u{33}',
11876 '\u{34}',
11877 '\u{35}',
11878 '\u{36}',
11879 '\u{37}',
11880 '\u{38}',
11881 '\u{39}',
11882 '\u{3a}',
11883 '\u{3b}',
11884 '\u{3c}',
11885 '\u{3d}',
11886 '\u{3e}',
11887 '\u{3f}',
11888 '\u{40}',
11889 '\u{41}',
11890 '\u{42}',
11891 '\u{43}',
11892 '\u{44}',
11893 '\u{45}',
11894 '\u{46}',
11895 '\u{47}',
11896 '\u{48}',
11897 '\u{49}',
11898 '\u{4a}',
11899 '\u{4b}',
11900 '\u{4c}',
11901 '\u{4d}',
11902 '\u{4e}',
11903 '\u{4f}',
11904 '\u{50}',
11905 '\u{51}',
11906 '\u{52}',
11907 '\u{53}',
11908 '\u{54}',
11909 '\u{55}',
11910 '\u{56}',
11911 '\u{57}',
11912 '\u{58}',
11913 '\u{59}',
11914 '\u{5a}',
11915 '\u{5b}',
11916 '\u{20a9}',
11917 '\u{5d}',
11918 '\u{5e}',
11919 '\u{5f}',
11920 '\u{60}',
11921 '\u{61}',
11922 '\u{62}',
11923 '\u{63}',
11924 '\u{64}',
11925 '\u{65}',
11926 '\u{66}',
11927 '\u{67}',
11928 '\u{68}',
11929 '\u{69}',
11930 '\u{6a}',
11931 '\u{6b}',
11932 '\u{6c}',
11933 '\u{6d}',
11934 '\u{6e}',
11935 '\u{6f}',
11936 '\u{70}',
11937 '\u{71}',
11938 '\u{72}',
11939 '\u{73}',
11940 '\u{74}',
11941 '\u{75}',
11942 '\u{76}',
11943 '\u{77}',
11944 '\u{78}',
11945 '\u{79}',
11946 '\u{7a}',
11947 '\u{7b}',
11948 '\u{7c}',
11949 '\u{7d}',
11950 '\u{203e}',
11951 '\u{1a}',
11952 char::REPLACEMENT_CHARACTER,
11953 char::REPLACEMENT_CHARACTER,
11954 char::REPLACEMENT_CHARACTER,
11955 char::REPLACEMENT_CHARACTER,
11956 char::REPLACEMENT_CHARACTER,
11957 char::REPLACEMENT_CHARACTER,
11958 char::REPLACEMENT_CHARACTER,
11959 char::REPLACEMENT_CHARACTER,
11960 char::REPLACEMENT_CHARACTER,
11961 char::REPLACEMENT_CHARACTER,
11962 char::REPLACEMENT_CHARACTER,
11963 char::REPLACEMENT_CHARACTER,
11964 char::REPLACEMENT_CHARACTER,
11965 char::REPLACEMENT_CHARACTER,
11966 char::REPLACEMENT_CHARACTER,
11967 char::REPLACEMENT_CHARACTER,
11968 char::REPLACEMENT_CHARACTER,
11969 char::REPLACEMENT_CHARACTER,
11970 char::REPLACEMENT_CHARACTER,
11971 char::REPLACEMENT_CHARACTER,
11972 char::REPLACEMENT_CHARACTER,
11973 char::REPLACEMENT_CHARACTER,
11974 char::REPLACEMENT_CHARACTER,
11975 char::REPLACEMENT_CHARACTER,
11976 char::REPLACEMENT_CHARACTER,
11977 char::REPLACEMENT_CHARACTER,
11978 char::REPLACEMENT_CHARACTER,
11979 char::REPLACEMENT_CHARACTER,
11980 char::REPLACEMENT_CHARACTER,
11981 char::REPLACEMENT_CHARACTER,
11982 char::REPLACEMENT_CHARACTER,
11983 char::REPLACEMENT_CHARACTER,
11984 char::REPLACEMENT_CHARACTER,
11985 char::REPLACEMENT_CHARACTER,
11986 char::REPLACEMENT_CHARACTER,
11987 char::REPLACEMENT_CHARACTER,
11988 char::REPLACEMENT_CHARACTER,
11989 char::REPLACEMENT_CHARACTER,
11990 char::REPLACEMENT_CHARACTER,
11991 char::REPLACEMENT_CHARACTER,
11992 char::REPLACEMENT_CHARACTER,
11993 char::REPLACEMENT_CHARACTER,
11994 char::REPLACEMENT_CHARACTER,
11995 char::REPLACEMENT_CHARACTER,
11996 char::REPLACEMENT_CHARACTER,
11997 char::REPLACEMENT_CHARACTER,
11998 char::REPLACEMENT_CHARACTER,
11999 char::REPLACEMENT_CHARACTER,
12000 char::REPLACEMENT_CHARACTER,
12001 char::REPLACEMENT_CHARACTER,
12002 char::REPLACEMENT_CHARACTER,
12003 char::REPLACEMENT_CHARACTER,
12004 char::REPLACEMENT_CHARACTER,
12005 char::REPLACEMENT_CHARACTER,
12006 char::REPLACEMENT_CHARACTER,
12007 char::REPLACEMENT_CHARACTER,
12008 char::REPLACEMENT_CHARACTER,
12009 char::REPLACEMENT_CHARACTER,
12010 char::REPLACEMENT_CHARACTER,
12011 char::REPLACEMENT_CHARACTER,
12012 char::REPLACEMENT_CHARACTER,
12013 char::REPLACEMENT_CHARACTER,
12014 char::REPLACEMENT_CHARACTER,
12015 char::REPLACEMENT_CHARACTER,
12016 '\u{ffa0}',
12017 '\u{ffa1}',
12018 '\u{ffa2}',
12019 '\u{ffa3}',
12020 '\u{ffa4}',
12021 '\u{ffa5}',
12022 '\u{ffa6}',
12023 '\u{ffa7}',
12024 '\u{ffa8}',
12025 '\u{ffa9}',
12026 '\u{ffaa}',
12027 '\u{ffab}',
12028 '\u{ffac}',
12029 '\u{ffad}',
12030 '\u{ffae}',
12031 '\u{ffaf}',
12032 '\u{ffb0}',
12033 '\u{ffb1}',
12034 '\u{ffb2}',
12035 '\u{ffb3}',
12036 '\u{ffb4}',
12037 '\u{ffb5}',
12038 '\u{ffb6}',
12039 '\u{ffb7}',
12040 '\u{ffb8}',
12041 '\u{ffb9}',
12042 '\u{ffba}',
12043 '\u{ffbb}',
12044 '\u{ffbc}',
12045 '\u{ffbd}',
12046 '\u{ffbe}',
12047 char::REPLACEMENT_CHARACTER,
12048 char::REPLACEMENT_CHARACTER,
12049 char::REPLACEMENT_CHARACTER,
12050 '\u{ffc2}',
12051 '\u{ffc3}',
12052 '\u{ffc4}',
12053 '\u{ffc5}',
12054 '\u{ffc6}',
12055 '\u{ffc7}',
12056 char::REPLACEMENT_CHARACTER,
12057 char::REPLACEMENT_CHARACTER,
12058 '\u{ffca}',
12059 '\u{ffcb}',
12060 '\u{ffcc}',
12061 '\u{ffcd}',
12062 '\u{ffce}',
12063 '\u{ffcf}',
12064 char::REPLACEMENT_CHARACTER,
12065 char::REPLACEMENT_CHARACTER,
12066 '\u{ffd2}',
12067 '\u{ffd3}',
12068 '\u{ffd4}',
12069 '\u{ffd5}',
12070 '\u{ffd6}',
12071 '\u{ffd7}',
12072 char::REPLACEMENT_CHARACTER,
12073 char::REPLACEMENT_CHARACTER,
12074 '\u{ffda}',
12075 '\u{ffdb}',
12076 '\u{ffdc}',
12077 char::REPLACEMENT_CHARACTER,
12078 char::REPLACEMENT_CHARACTER,
12079 char::REPLACEMENT_CHARACTER,
12080];
12081const IBM_891_ENCODE_TABLE: &[(u16, u8)] = &[
12082 (0, 0),
12083 (1, 1),
12084 (2, 2),
12085 (3, 3),
12086 (4, 4),
12087 (5, 5),
12088 (6, 6),
12089 (7, 7),
12090 (8, 8),
12091 (9, 9),
12092 (10, 10),
12093 (11, 11),
12094 (12, 12),
12095 (13, 13),
12096 (14, 14),
12097 (15, 15),
12098 (16, 16),
12099 (17, 17),
12100 (18, 18),
12101 (19, 19),
12102 (20, 20),
12103 (21, 21),
12104 (22, 22),
12105 (23, 23),
12106 (24, 24),
12107 (25, 25),
12108 (26, 127),
12109 (27, 27),
12110 (28, 26),
12111 (29, 29),
12112 (30, 30),
12113 (31, 31),
12114 (32, 32),
12115 (33, 33),
12116 (34, 34),
12117 (35, 35),
12118 (36, 36),
12119 (37, 37),
12120 (38, 38),
12121 (39, 39),
12122 (40, 40),
12123 (41, 41),
12124 (42, 42),
12125 (43, 43),
12126 (44, 44),
12127 (45, 45),
12128 (46, 46),
12129 (47, 47),
12130 (48, 48),
12131 (49, 49),
12132 (50, 50),
12133 (51, 51),
12134 (52, 52),
12135 (53, 53),
12136 (54, 54),
12137 (55, 55),
12138 (56, 56),
12139 (57, 57),
12140 (58, 58),
12141 (59, 59),
12142 (60, 60),
12143 (61, 61),
12144 (62, 62),
12145 (63, 63),
12146 (64, 64),
12147 (65, 65),
12148 (66, 66),
12149 (67, 67),
12150 (68, 68),
12151 (69, 69),
12152 (70, 70),
12153 (71, 71),
12154 (72, 72),
12155 (73, 73),
12156 (74, 74),
12157 (75, 75),
12158 (76, 76),
12159 (77, 77),
12160 (78, 78),
12161 (79, 79),
12162 (80, 80),
12163 (81, 81),
12164 (82, 82),
12165 (83, 83),
12166 (84, 84),
12167 (85, 85),
12168 (86, 86),
12169 (87, 87),
12170 (88, 88),
12171 (89, 89),
12172 (90, 90),
12173 (91, 91),
12174 (93, 93),
12175 (94, 94),
12176 (95, 95),
12177 (96, 96),
12178 (97, 97),
12179 (98, 98),
12180 (99, 99),
12181 (100, 100),
12182 (101, 101),
12183 (102, 102),
12184 (103, 103),
12185 (104, 104),
12186 (105, 105),
12187 (106, 106),
12188 (107, 107),
12189 (108, 108),
12190 (109, 109),
12191 (110, 110),
12192 (111, 111),
12193 (112, 112),
12194 (113, 113),
12195 (114, 114),
12196 (115, 115),
12197 (116, 116),
12198 (117, 117),
12199 (118, 118),
12200 (119, 119),
12201 (120, 120),
12202 (121, 121),
12203 (122, 122),
12204 (123, 123),
12205 (124, 124),
12206 (125, 125),
12207 (127, 28),
12208 (8254, 126),
12209 (8361, 92),
12210 (65440, 192),
12211 (65441, 193),
12212 (65442, 194),
12213 (65443, 195),
12214 (65444, 196),
12215 (65445, 197),
12216 (65446, 198),
12217 (65447, 199),
12218 (65448, 200),
12219 (65449, 201),
12220 (65450, 202),
12221 (65451, 203),
12222 (65452, 204),
12223 (65453, 205),
12224 (65454, 206),
12225 (65455, 207),
12226 (65456, 208),
12227 (65457, 209),
12228 (65458, 210),
12229 (65459, 211),
12230 (65460, 212),
12231 (65461, 213),
12232 (65462, 214),
12233 (65463, 215),
12234 (65464, 216),
12235 (65465, 217),
12236 (65466, 218),
12237 (65467, 219),
12238 (65468, 220),
12239 (65469, 221),
12240 (65470, 222),
12241 (65474, 226),
12242 (65475, 227),
12243 (65476, 228),
12244 (65477, 229),
12245 (65478, 230),
12246 (65479, 231),
12247 (65482, 234),
12248 (65483, 235),
12249 (65484, 236),
12250 (65485, 237),
12251 (65486, 238),
12252 (65487, 239),
12253 (65490, 242),
12254 (65491, 243),
12255 (65492, 244),
12256 (65493, 245),
12257 (65494, 246),
12258 (65495, 247),
12259 (65498, 250),
12260 (65499, 251),
12261 (65500, 252),
12262];
12263
12264impl_ebcdic_encoder_and_decoder!(
12265 IBM903,
12266 "IBM903",
12267 IBM903Encoder,
12268 IBM903Decoder,
12269 IBM_903_ENCODE_TABLE,
12270 IBM_903_DECODE_TABLE
12271);
12272const IBM_903_DECODE_TABLE: [char; 256] = [
12273 '\u{0}',
12274 '\u{1}',
12275 '\u{2}',
12276 '\u{3}',
12277 '\u{4}',
12278 '\u{5}',
12279 '\u{6}',
12280 '\u{7}',
12281 '\u{8}',
12282 '\u{9}',
12283 '\u{a}',
12284 '\u{b}',
12285 '\u{c}',
12286 '\u{d}',
12287 '\u{e}',
12288 '\u{f}',
12289 '\u{10}',
12290 '\u{11}',
12291 '\u{12}',
12292 '\u{13}',
12293 '\u{14}',
12294 '\u{15}',
12295 '\u{16}',
12296 '\u{17}',
12297 '\u{18}',
12298 '\u{19}',
12299 '\u{1c}',
12300 '\u{1b}',
12301 '\u{7f}',
12302 '\u{1d}',
12303 '\u{1e}',
12304 '\u{1f}',
12305 '\u{20}',
12306 '\u{21}',
12307 '\u{22}',
12308 '\u{23}',
12309 '\u{24}',
12310 '\u{25}',
12311 '\u{26}',
12312 '\u{27}',
12313 '\u{28}',
12314 '\u{29}',
12315 '\u{2a}',
12316 '\u{2b}',
12317 '\u{2c}',
12318 '\u{2d}',
12319 '\u{2e}',
12320 '\u{2f}',
12321 '\u{30}',
12322 '\u{31}',
12323 '\u{32}',
12324 '\u{33}',
12325 '\u{34}',
12326 '\u{35}',
12327 '\u{36}',
12328 '\u{37}',
12329 '\u{38}',
12330 '\u{39}',
12331 '\u{3a}',
12332 '\u{3b}',
12333 '\u{3c}',
12334 '\u{3d}',
12335 '\u{3e}',
12336 '\u{3f}',
12337 '\u{40}',
12338 '\u{41}',
12339 '\u{42}',
12340 '\u{43}',
12341 '\u{44}',
12342 '\u{45}',
12343 '\u{46}',
12344 '\u{47}',
12345 '\u{48}',
12346 '\u{49}',
12347 '\u{4a}',
12348 '\u{4b}',
12349 '\u{4c}',
12350 '\u{4d}',
12351 '\u{4e}',
12352 '\u{4f}',
12353 '\u{50}',
12354 '\u{51}',
12355 '\u{52}',
12356 '\u{53}',
12357 '\u{54}',
12358 '\u{55}',
12359 '\u{56}',
12360 '\u{57}',
12361 '\u{58}',
12362 '\u{59}',
12363 '\u{5a}',
12364 '\u{5b}',
12365 '\u{a5}',
12366 '\u{5d}',
12367 '\u{5e}',
12368 '\u{5f}',
12369 '\u{60}',
12370 '\u{61}',
12371 '\u{62}',
12372 '\u{63}',
12373 '\u{64}',
12374 '\u{65}',
12375 '\u{66}',
12376 '\u{67}',
12377 '\u{68}',
12378 '\u{69}',
12379 '\u{6a}',
12380 '\u{6b}',
12381 '\u{6c}',
12382 '\u{6d}',
12383 '\u{6e}',
12384 '\u{6f}',
12385 '\u{70}',
12386 '\u{71}',
12387 '\u{72}',
12388 '\u{73}',
12389 '\u{74}',
12390 '\u{75}',
12391 '\u{76}',
12392 '\u{77}',
12393 '\u{78}',
12394 '\u{79}',
12395 '\u{7a}',
12396 '\u{7b}',
12397 '\u{7c}',
12398 '\u{7d}',
12399 '\u{203e}',
12400 '\u{1a}',
12401 char::REPLACEMENT_CHARACTER,
12402 char::REPLACEMENT_CHARACTER,
12403 char::REPLACEMENT_CHARACTER,
12404 char::REPLACEMENT_CHARACTER,
12405 char::REPLACEMENT_CHARACTER,
12406 char::REPLACEMENT_CHARACTER,
12407 char::REPLACEMENT_CHARACTER,
12408 char::REPLACEMENT_CHARACTER,
12409 char::REPLACEMENT_CHARACTER,
12410 char::REPLACEMENT_CHARACTER,
12411 char::REPLACEMENT_CHARACTER,
12412 char::REPLACEMENT_CHARACTER,
12413 char::REPLACEMENT_CHARACTER,
12414 char::REPLACEMENT_CHARACTER,
12415 char::REPLACEMENT_CHARACTER,
12416 char::REPLACEMENT_CHARACTER,
12417 char::REPLACEMENT_CHARACTER,
12418 char::REPLACEMENT_CHARACTER,
12419 char::REPLACEMENT_CHARACTER,
12420 char::REPLACEMENT_CHARACTER,
12421 char::REPLACEMENT_CHARACTER,
12422 char::REPLACEMENT_CHARACTER,
12423 char::REPLACEMENT_CHARACTER,
12424 char::REPLACEMENT_CHARACTER,
12425 char::REPLACEMENT_CHARACTER,
12426 char::REPLACEMENT_CHARACTER,
12427 char::REPLACEMENT_CHARACTER,
12428 char::REPLACEMENT_CHARACTER,
12429 char::REPLACEMENT_CHARACTER,
12430 char::REPLACEMENT_CHARACTER,
12431 char::REPLACEMENT_CHARACTER,
12432 char::REPLACEMENT_CHARACTER,
12433 char::REPLACEMENT_CHARACTER,
12434 char::REPLACEMENT_CHARACTER,
12435 char::REPLACEMENT_CHARACTER,
12436 char::REPLACEMENT_CHARACTER,
12437 char::REPLACEMENT_CHARACTER,
12438 char::REPLACEMENT_CHARACTER,
12439 char::REPLACEMENT_CHARACTER,
12440 char::REPLACEMENT_CHARACTER,
12441 char::REPLACEMENT_CHARACTER,
12442 char::REPLACEMENT_CHARACTER,
12443 char::REPLACEMENT_CHARACTER,
12444 char::REPLACEMENT_CHARACTER,
12445 char::REPLACEMENT_CHARACTER,
12446 char::REPLACEMENT_CHARACTER,
12447 char::REPLACEMENT_CHARACTER,
12448 char::REPLACEMENT_CHARACTER,
12449 char::REPLACEMENT_CHARACTER,
12450 char::REPLACEMENT_CHARACTER,
12451 char::REPLACEMENT_CHARACTER,
12452 char::REPLACEMENT_CHARACTER,
12453 char::REPLACEMENT_CHARACTER,
12454 char::REPLACEMENT_CHARACTER,
12455 char::REPLACEMENT_CHARACTER,
12456 char::REPLACEMENT_CHARACTER,
12457 char::REPLACEMENT_CHARACTER,
12458 char::REPLACEMENT_CHARACTER,
12459 char::REPLACEMENT_CHARACTER,
12460 char::REPLACEMENT_CHARACTER,
12461 char::REPLACEMENT_CHARACTER,
12462 char::REPLACEMENT_CHARACTER,
12463 char::REPLACEMENT_CHARACTER,
12464 char::REPLACEMENT_CHARACTER,
12465 char::REPLACEMENT_CHARACTER,
12466 char::REPLACEMENT_CHARACTER,
12467 char::REPLACEMENT_CHARACTER,
12468 char::REPLACEMENT_CHARACTER,
12469 char::REPLACEMENT_CHARACTER,
12470 char::REPLACEMENT_CHARACTER,
12471 char::REPLACEMENT_CHARACTER,
12472 char::REPLACEMENT_CHARACTER,
12473 char::REPLACEMENT_CHARACTER,
12474 char::REPLACEMENT_CHARACTER,
12475 char::REPLACEMENT_CHARACTER,
12476 char::REPLACEMENT_CHARACTER,
12477 char::REPLACEMENT_CHARACTER,
12478 char::REPLACEMENT_CHARACTER,
12479 char::REPLACEMENT_CHARACTER,
12480 char::REPLACEMENT_CHARACTER,
12481 char::REPLACEMENT_CHARACTER,
12482 char::REPLACEMENT_CHARACTER,
12483 char::REPLACEMENT_CHARACTER,
12484 char::REPLACEMENT_CHARACTER,
12485 char::REPLACEMENT_CHARACTER,
12486 char::REPLACEMENT_CHARACTER,
12487 char::REPLACEMENT_CHARACTER,
12488 char::REPLACEMENT_CHARACTER,
12489 char::REPLACEMENT_CHARACTER,
12490 char::REPLACEMENT_CHARACTER,
12491 char::REPLACEMENT_CHARACTER,
12492 char::REPLACEMENT_CHARACTER,
12493 char::REPLACEMENT_CHARACTER,
12494 char::REPLACEMENT_CHARACTER,
12495 char::REPLACEMENT_CHARACTER,
12496 char::REPLACEMENT_CHARACTER,
12497 char::REPLACEMENT_CHARACTER,
12498 char::REPLACEMENT_CHARACTER,
12499 char::REPLACEMENT_CHARACTER,
12500 char::REPLACEMENT_CHARACTER,
12501 char::REPLACEMENT_CHARACTER,
12502 char::REPLACEMENT_CHARACTER,
12503 char::REPLACEMENT_CHARACTER,
12504 char::REPLACEMENT_CHARACTER,
12505 char::REPLACEMENT_CHARACTER,
12506 char::REPLACEMENT_CHARACTER,
12507 char::REPLACEMENT_CHARACTER,
12508 char::REPLACEMENT_CHARACTER,
12509 char::REPLACEMENT_CHARACTER,
12510 char::REPLACEMENT_CHARACTER,
12511 char::REPLACEMENT_CHARACTER,
12512 char::REPLACEMENT_CHARACTER,
12513 char::REPLACEMENT_CHARACTER,
12514 char::REPLACEMENT_CHARACTER,
12515 char::REPLACEMENT_CHARACTER,
12516 char::REPLACEMENT_CHARACTER,
12517 char::REPLACEMENT_CHARACTER,
12518 char::REPLACEMENT_CHARACTER,
12519 char::REPLACEMENT_CHARACTER,
12520 char::REPLACEMENT_CHARACTER,
12521 char::REPLACEMENT_CHARACTER,
12522 char::REPLACEMENT_CHARACTER,
12523 char::REPLACEMENT_CHARACTER,
12524 char::REPLACEMENT_CHARACTER,
12525 char::REPLACEMENT_CHARACTER,
12526 char::REPLACEMENT_CHARACTER,
12527 char::REPLACEMENT_CHARACTER,
12528 char::REPLACEMENT_CHARACTER,
12529];
12530const IBM_903_ENCODE_TABLE: &[(u16, u8)] = &[
12531 (0, 0),
12532 (1, 1),
12533 (2, 2),
12534 (3, 3),
12535 (4, 4),
12536 (5, 5),
12537 (6, 6),
12538 (7, 7),
12539 (8, 8),
12540 (9, 9),
12541 (10, 10),
12542 (11, 11),
12543 (12, 12),
12544 (13, 13),
12545 (14, 14),
12546 (15, 15),
12547 (16, 16),
12548 (17, 17),
12549 (18, 18),
12550 (19, 19),
12551 (20, 20),
12552 (21, 21),
12553 (22, 22),
12554 (23, 23),
12555 (24, 24),
12556 (25, 25),
12557 (26, 127),
12558 (27, 27),
12559 (28, 26),
12560 (29, 29),
12561 (30, 30),
12562 (31, 31),
12563 (32, 32),
12564 (33, 33),
12565 (34, 34),
12566 (35, 35),
12567 (36, 36),
12568 (37, 37),
12569 (38, 38),
12570 (39, 39),
12571 (40, 40),
12572 (41, 41),
12573 (42, 42),
12574 (43, 43),
12575 (44, 44),
12576 (45, 45),
12577 (46, 46),
12578 (47, 47),
12579 (48, 48),
12580 (49, 49),
12581 (50, 50),
12582 (51, 51),
12583 (52, 52),
12584 (53, 53),
12585 (54, 54),
12586 (55, 55),
12587 (56, 56),
12588 (57, 57),
12589 (58, 58),
12590 (59, 59),
12591 (60, 60),
12592 (61, 61),
12593 (62, 62),
12594 (63, 63),
12595 (64, 64),
12596 (65, 65),
12597 (66, 66),
12598 (67, 67),
12599 (68, 68),
12600 (69, 69),
12601 (70, 70),
12602 (71, 71),
12603 (72, 72),
12604 (73, 73),
12605 (74, 74),
12606 (75, 75),
12607 (76, 76),
12608 (77, 77),
12609 (78, 78),
12610 (79, 79),
12611 (80, 80),
12612 (81, 81),
12613 (82, 82),
12614 (83, 83),
12615 (84, 84),
12616 (85, 85),
12617 (86, 86),
12618 (87, 87),
12619 (88, 88),
12620 (89, 89),
12621 (90, 90),
12622 (91, 91),
12623 (93, 93),
12624 (94, 94),
12625 (95, 95),
12626 (96, 96),
12627 (97, 97),
12628 (98, 98),
12629 (99, 99),
12630 (100, 100),
12631 (101, 101),
12632 (102, 102),
12633 (103, 103),
12634 (104, 104),
12635 (105, 105),
12636 (106, 106),
12637 (107, 107),
12638 (108, 108),
12639 (109, 109),
12640 (110, 110),
12641 (111, 111),
12642 (112, 112),
12643 (113, 113),
12644 (114, 114),
12645 (115, 115),
12646 (116, 116),
12647 (117, 117),
12648 (118, 118),
12649 (119, 119),
12650 (120, 120),
12651 (121, 121),
12652 (122, 122),
12653 (123, 123),
12654 (124, 124),
12655 (125, 125),
12656 (127, 28),
12657 (165, 92),
12658 (8254, 126),
12659];
12660
12661impl_ebcdic_encoder_and_decoder!(
12662 IBM904,
12663 "IBM904",
12664 IBM904Encoder,
12665 IBM904Decoder,
12666 IBM_904_ENCODE_TABLE,
12667 IBM_904_DECODE_TABLE
12668);
12669const IBM_904_DECODE_TABLE: [char; 256] = [
12670 '\u{0}',
12671 '\u{1}',
12672 '\u{2}',
12673 '\u{3}',
12674 '\u{4}',
12675 '\u{5}',
12676 '\u{6}',
12677 '\u{7}',
12678 '\u{8}',
12679 '\u{9}',
12680 '\u{a}',
12681 '\u{b}',
12682 '\u{c}',
12683 '\u{d}',
12684 '\u{e}',
12685 '\u{f}',
12686 '\u{10}',
12687 '\u{11}',
12688 '\u{12}',
12689 '\u{13}',
12690 '\u{14}',
12691 '\u{15}',
12692 '\u{16}',
12693 '\u{17}',
12694 '\u{18}',
12695 '\u{19}',
12696 '\u{1c}',
12697 '\u{1b}',
12698 '\u{7f}',
12699 '\u{1d}',
12700 '\u{1e}',
12701 '\u{1f}',
12702 '\u{20}',
12703 '\u{21}',
12704 '\u{22}',
12705 '\u{23}',
12706 '\u{24}',
12707 '\u{25}',
12708 '\u{26}',
12709 '\u{27}',
12710 '\u{28}',
12711 '\u{29}',
12712 '\u{2a}',
12713 '\u{2b}',
12714 '\u{2c}',
12715 '\u{2d}',
12716 '\u{2e}',
12717 '\u{2f}',
12718 '\u{30}',
12719 '\u{31}',
12720 '\u{32}',
12721 '\u{33}',
12722 '\u{34}',
12723 '\u{35}',
12724 '\u{36}',
12725 '\u{37}',
12726 '\u{38}',
12727 '\u{39}',
12728 '\u{3a}',
12729 '\u{3b}',
12730 '\u{3c}',
12731 '\u{3d}',
12732 '\u{3e}',
12733 '\u{3f}',
12734 '\u{40}',
12735 '\u{41}',
12736 '\u{42}',
12737 '\u{43}',
12738 '\u{44}',
12739 '\u{45}',
12740 '\u{46}',
12741 '\u{47}',
12742 '\u{48}',
12743 '\u{49}',
12744 '\u{4a}',
12745 '\u{4b}',
12746 '\u{4c}',
12747 '\u{4d}',
12748 '\u{4e}',
12749 '\u{4f}',
12750 '\u{50}',
12751 '\u{51}',
12752 '\u{52}',
12753 '\u{53}',
12754 '\u{54}',
12755 '\u{55}',
12756 '\u{56}',
12757 '\u{57}',
12758 '\u{58}',
12759 '\u{59}',
12760 '\u{5a}',
12761 '\u{5b}',
12762 '\u{5c}',
12763 '\u{5d}',
12764 '\u{5e}',
12765 '\u{5f}',
12766 '\u{60}',
12767 '\u{61}',
12768 '\u{62}',
12769 '\u{63}',
12770 '\u{64}',
12771 '\u{65}',
12772 '\u{66}',
12773 '\u{67}',
12774 '\u{68}',
12775 '\u{69}',
12776 '\u{6a}',
12777 '\u{6b}',
12778 '\u{6c}',
12779 '\u{6d}',
12780 '\u{6e}',
12781 '\u{6f}',
12782 '\u{70}',
12783 '\u{71}',
12784 '\u{72}',
12785 '\u{73}',
12786 '\u{74}',
12787 '\u{75}',
12788 '\u{76}',
12789 '\u{77}',
12790 '\u{78}',
12791 '\u{79}',
12792 '\u{7a}',
12793 '\u{7b}',
12794 '\u{7c}',
12795 '\u{7d}',
12796 '\u{7e}',
12797 '\u{1a}',
12798 char::REPLACEMENT_CHARACTER,
12799 char::REPLACEMENT_CHARACTER,
12800 char::REPLACEMENT_CHARACTER,
12801 char::REPLACEMENT_CHARACTER,
12802 char::REPLACEMENT_CHARACTER,
12803 char::REPLACEMENT_CHARACTER,
12804 char::REPLACEMENT_CHARACTER,
12805 char::REPLACEMENT_CHARACTER,
12806 char::REPLACEMENT_CHARACTER,
12807 char::REPLACEMENT_CHARACTER,
12808 char::REPLACEMENT_CHARACTER,
12809 char::REPLACEMENT_CHARACTER,
12810 char::REPLACEMENT_CHARACTER,
12811 char::REPLACEMENT_CHARACTER,
12812 char::REPLACEMENT_CHARACTER,
12813 char::REPLACEMENT_CHARACTER,
12814 char::REPLACEMENT_CHARACTER,
12815 char::REPLACEMENT_CHARACTER,
12816 char::REPLACEMENT_CHARACTER,
12817 char::REPLACEMENT_CHARACTER,
12818 char::REPLACEMENT_CHARACTER,
12819 char::REPLACEMENT_CHARACTER,
12820 char::REPLACEMENT_CHARACTER,
12821 char::REPLACEMENT_CHARACTER,
12822 char::REPLACEMENT_CHARACTER,
12823 char::REPLACEMENT_CHARACTER,
12824 char::REPLACEMENT_CHARACTER,
12825 char::REPLACEMENT_CHARACTER,
12826 char::REPLACEMENT_CHARACTER,
12827 char::REPLACEMENT_CHARACTER,
12828 char::REPLACEMENT_CHARACTER,
12829 char::REPLACEMENT_CHARACTER,
12830 char::REPLACEMENT_CHARACTER,
12831 char::REPLACEMENT_CHARACTER,
12832 char::REPLACEMENT_CHARACTER,
12833 char::REPLACEMENT_CHARACTER,
12834 char::REPLACEMENT_CHARACTER,
12835 char::REPLACEMENT_CHARACTER,
12836 char::REPLACEMENT_CHARACTER,
12837 char::REPLACEMENT_CHARACTER,
12838 char::REPLACEMENT_CHARACTER,
12839 char::REPLACEMENT_CHARACTER,
12840 char::REPLACEMENT_CHARACTER,
12841 char::REPLACEMENT_CHARACTER,
12842 char::REPLACEMENT_CHARACTER,
12843 char::REPLACEMENT_CHARACTER,
12844 char::REPLACEMENT_CHARACTER,
12845 char::REPLACEMENT_CHARACTER,
12846 char::REPLACEMENT_CHARACTER,
12847 char::REPLACEMENT_CHARACTER,
12848 char::REPLACEMENT_CHARACTER,
12849 char::REPLACEMENT_CHARACTER,
12850 char::REPLACEMENT_CHARACTER,
12851 char::REPLACEMENT_CHARACTER,
12852 char::REPLACEMENT_CHARACTER,
12853 char::REPLACEMENT_CHARACTER,
12854 char::REPLACEMENT_CHARACTER,
12855 char::REPLACEMENT_CHARACTER,
12856 char::REPLACEMENT_CHARACTER,
12857 char::REPLACEMENT_CHARACTER,
12858 char::REPLACEMENT_CHARACTER,
12859 char::REPLACEMENT_CHARACTER,
12860 char::REPLACEMENT_CHARACTER,
12861 char::REPLACEMENT_CHARACTER,
12862 char::REPLACEMENT_CHARACTER,
12863 char::REPLACEMENT_CHARACTER,
12864 char::REPLACEMENT_CHARACTER,
12865 char::REPLACEMENT_CHARACTER,
12866 char::REPLACEMENT_CHARACTER,
12867 char::REPLACEMENT_CHARACTER,
12868 char::REPLACEMENT_CHARACTER,
12869 char::REPLACEMENT_CHARACTER,
12870 char::REPLACEMENT_CHARACTER,
12871 char::REPLACEMENT_CHARACTER,
12872 char::REPLACEMENT_CHARACTER,
12873 char::REPLACEMENT_CHARACTER,
12874 char::REPLACEMENT_CHARACTER,
12875 char::REPLACEMENT_CHARACTER,
12876 char::REPLACEMENT_CHARACTER,
12877 char::REPLACEMENT_CHARACTER,
12878 char::REPLACEMENT_CHARACTER,
12879 char::REPLACEMENT_CHARACTER,
12880 char::REPLACEMENT_CHARACTER,
12881 char::REPLACEMENT_CHARACTER,
12882 char::REPLACEMENT_CHARACTER,
12883 char::REPLACEMENT_CHARACTER,
12884 char::REPLACEMENT_CHARACTER,
12885 char::REPLACEMENT_CHARACTER,
12886 char::REPLACEMENT_CHARACTER,
12887 char::REPLACEMENT_CHARACTER,
12888 char::REPLACEMENT_CHARACTER,
12889 char::REPLACEMENT_CHARACTER,
12890 char::REPLACEMENT_CHARACTER,
12891 char::REPLACEMENT_CHARACTER,
12892 char::REPLACEMENT_CHARACTER,
12893 char::REPLACEMENT_CHARACTER,
12894 char::REPLACEMENT_CHARACTER,
12895 char::REPLACEMENT_CHARACTER,
12896 char::REPLACEMENT_CHARACTER,
12897 char::REPLACEMENT_CHARACTER,
12898 char::REPLACEMENT_CHARACTER,
12899 char::REPLACEMENT_CHARACTER,
12900 char::REPLACEMENT_CHARACTER,
12901 char::REPLACEMENT_CHARACTER,
12902 char::REPLACEMENT_CHARACTER,
12903 char::REPLACEMENT_CHARACTER,
12904 char::REPLACEMENT_CHARACTER,
12905 char::REPLACEMENT_CHARACTER,
12906 char::REPLACEMENT_CHARACTER,
12907 char::REPLACEMENT_CHARACTER,
12908 char::REPLACEMENT_CHARACTER,
12909 char::REPLACEMENT_CHARACTER,
12910 char::REPLACEMENT_CHARACTER,
12911 char::REPLACEMENT_CHARACTER,
12912 char::REPLACEMENT_CHARACTER,
12913 char::REPLACEMENT_CHARACTER,
12914 char::REPLACEMENT_CHARACTER,
12915 char::REPLACEMENT_CHARACTER,
12916 char::REPLACEMENT_CHARACTER,
12917 char::REPLACEMENT_CHARACTER,
12918 char::REPLACEMENT_CHARACTER,
12919 char::REPLACEMENT_CHARACTER,
12920 char::REPLACEMENT_CHARACTER,
12921 char::REPLACEMENT_CHARACTER,
12922 char::REPLACEMENT_CHARACTER,
12923 char::REPLACEMENT_CHARACTER,
12924 char::REPLACEMENT_CHARACTER,
12925 char::REPLACEMENT_CHARACTER,
12926];
12927const IBM_904_ENCODE_TABLE: &[(u16, u8)] = &[
12928 (0, 0),
12929 (1, 1),
12930 (2, 2),
12931 (3, 3),
12932 (4, 4),
12933 (5, 5),
12934 (6, 6),
12935 (7, 7),
12936 (8, 8),
12937 (9, 9),
12938 (10, 10),
12939 (11, 11),
12940 (12, 12),
12941 (13, 13),
12942 (14, 14),
12943 (15, 15),
12944 (16, 16),
12945 (17, 17),
12946 (18, 18),
12947 (19, 19),
12948 (20, 20),
12949 (21, 21),
12950 (22, 22),
12951 (23, 23),
12952 (24, 24),
12953 (25, 25),
12954 (26, 127),
12955 (27, 27),
12956 (28, 26),
12957 (29, 29),
12958 (30, 30),
12959 (31, 31),
12960 (32, 32),
12961 (33, 33),
12962 (34, 34),
12963 (35, 35),
12964 (36, 36),
12965 (37, 37),
12966 (38, 38),
12967 (39, 39),
12968 (40, 40),
12969 (41, 41),
12970 (42, 42),
12971 (43, 43),
12972 (44, 44),
12973 (45, 45),
12974 (46, 46),
12975 (47, 47),
12976 (48, 48),
12977 (49, 49),
12978 (50, 50),
12979 (51, 51),
12980 (52, 52),
12981 (53, 53),
12982 (54, 54),
12983 (55, 55),
12984 (56, 56),
12985 (57, 57),
12986 (58, 58),
12987 (59, 59),
12988 (60, 60),
12989 (61, 61),
12990 (62, 62),
12991 (63, 63),
12992 (64, 64),
12993 (65, 65),
12994 (66, 66),
12995 (67, 67),
12996 (68, 68),
12997 (69, 69),
12998 (70, 70),
12999 (71, 71),
13000 (72, 72),
13001 (73, 73),
13002 (74, 74),
13003 (75, 75),
13004 (76, 76),
13005 (77, 77),
13006 (78, 78),
13007 (79, 79),
13008 (80, 80),
13009 (81, 81),
13010 (82, 82),
13011 (83, 83),
13012 (84, 84),
13013 (85, 85),
13014 (86, 86),
13015 (87, 87),
13016 (88, 88),
13017 (89, 89),
13018 (90, 90),
13019 (91, 91),
13020 (92, 92),
13021 (93, 93),
13022 (94, 94),
13023 (95, 95),
13024 (96, 96),
13025 (97, 97),
13026 (98, 98),
13027 (99, 99),
13028 (100, 100),
13029 (101, 101),
13030 (102, 102),
13031 (103, 103),
13032 (104, 104),
13033 (105, 105),
13034 (106, 106),
13035 (107, 107),
13036 (108, 108),
13037 (109, 109),
13038 (110, 110),
13039 (111, 111),
13040 (112, 112),
13041 (113, 113),
13042 (114, 114),
13043 (115, 115),
13044 (116, 116),
13045 (117, 117),
13046 (118, 118),
13047 (119, 119),
13048 (120, 120),
13049 (121, 121),
13050 (122, 122),
13051 (123, 123),
13052 (124, 124),
13053 (125, 125),
13054 (126, 126),
13055 (127, 28),
13056];
13057
13058impl_ebcdic_encoder_and_decoder!(
13059 IBM905,
13060 "IBM905",
13061 IBM905Encoder,
13062 IBM905Decoder,
13063 IBM_905_ENCODE_TABLE,
13064 IBM_905_DECODE_TABLE
13065);
13066const IBM_905_DECODE_TABLE: [char; 256] = [
13067 '\u{0}',
13068 '\u{1}',
13069 '\u{2}',
13070 '\u{3}',
13071 '\u{9c}',
13072 '\u{9}',
13073 '\u{86}',
13074 '\u{7f}',
13075 '\u{97}',
13076 '\u{8d}',
13077 '\u{8e}',
13078 '\u{b}',
13079 '\u{c}',
13080 '\u{d}',
13081 '\u{e}',
13082 '\u{f}',
13083 '\u{10}',
13084 '\u{11}',
13085 '\u{12}',
13086 '\u{13}',
13087 '\u{9d}',
13088 '\u{85}',
13089 '\u{8}',
13090 '\u{87}',
13091 '\u{18}',
13092 '\u{19}',
13093 '\u{92}',
13094 '\u{8f}',
13095 '\u{1c}',
13096 '\u{1d}',
13097 '\u{1e}',
13098 '\u{1f}',
13099 '\u{80}',
13100 '\u{81}',
13101 '\u{82}',
13102 '\u{83}',
13103 '\u{84}',
13104 '\u{a}',
13105 '\u{17}',
13106 '\u{1b}',
13107 '\u{88}',
13108 '\u{89}',
13109 '\u{8a}',
13110 '\u{8b}',
13111 '\u{8c}',
13112 '\u{5}',
13113 '\u{6}',
13114 '\u{7}',
13115 '\u{90}',
13116 '\u{91}',
13117 '\u{16}',
13118 '\u{93}',
13119 '\u{94}',
13120 '\u{95}',
13121 '\u{96}',
13122 '\u{4}',
13123 '\u{98}',
13124 '\u{99}',
13125 '\u{9a}',
13126 '\u{9b}',
13127 '\u{14}',
13128 '\u{15}',
13129 '\u{9e}',
13130 '\u{1a}',
13131 '\u{20}',
13132 '\u{a0}',
13133 '\u{e2}',
13134 '\u{e4}',
13135 '\u{e0}',
13136 '\u{e1}',
13137 char::REPLACEMENT_CHARACTER,
13138 '\u{10b}',
13139 '\u{7b}',
13140 '\u{f1}',
13141 '\u{c7}',
13142 '\u{2e}',
13143 '\u{3c}',
13144 '\u{28}',
13145 '\u{2b}',
13146 '\u{21}',
13147 '\u{26}',
13148 '\u{e9}',
13149 '\u{ea}',
13150 '\u{eb}',
13151 '\u{e8}',
13152 '\u{ed}',
13153 '\u{ee}',
13154 '\u{ef}',
13155 '\u{ec}',
13156 '\u{df}',
13157 '\u{11e}',
13158 '\u{130}',
13159 '\u{2a}',
13160 '\u{29}',
13161 '\u{3b}',
13162 '\u{5e}',
13163 '\u{2d}',
13164 '\u{2f}',
13165 '\u{c2}',
13166 '\u{c4}',
13167 '\u{c0}',
13168 '\u{c1}',
13169 char::REPLACEMENT_CHARACTER,
13170 '\u{10a}',
13171 '\u{5b}',
13172 '\u{d1}',
13173 '\u{15f}',
13174 '\u{2c}',
13175 '\u{25}',
13176 '\u{5f}',
13177 '\u{3e}',
13178 '\u{3f}',
13179 char::REPLACEMENT_CHARACTER,
13180 '\u{c9}',
13181 '\u{ca}',
13182 '\u{cb}',
13183 '\u{c8}',
13184 '\u{cd}',
13185 '\u{ce}',
13186 '\u{cf}',
13187 '\u{cc}',
13188 '\u{131}',
13189 '\u{3a}',
13190 '\u{d6}',
13191 '\u{15e}',
13192 '\u{27}',
13193 '\u{3d}',
13194 '\u{dc}',
13195 '\u{2d8}',
13196 '\u{61}',
13197 '\u{62}',
13198 '\u{63}',
13199 '\u{64}',
13200 '\u{65}',
13201 '\u{66}',
13202 '\u{67}',
13203 '\u{68}',
13204 '\u{69}',
13205 '\u{127}',
13206 '\u{109}',
13207 '\u{15d}',
13208 '\u{16d}',
13209 char::REPLACEMENT_CHARACTER,
13210 '\u{7c}',
13211 '\u{b0}',
13212 '\u{6a}',
13213 '\u{6b}',
13214 '\u{6c}',
13215 '\u{6d}',
13216 '\u{6e}',
13217 '\u{6f}',
13218 '\u{70}',
13219 '\u{71}',
13220 '\u{72}',
13221 '\u{125}',
13222 '\u{11d}',
13223 '\u{135}',
13224 '\u{b8}',
13225 char::REPLACEMENT_CHARACTER,
13226 '\u{a4}',
13227 '\u{b5}',
13228 '\u{f6}',
13229 '\u{73}',
13230 '\u{74}',
13231 '\u{75}',
13232 '\u{76}',
13233 '\u{77}',
13234 '\u{78}',
13235 '\u{79}',
13236 '\u{7a}',
13237 '\u{126}',
13238 '\u{108}',
13239 '\u{15c}',
13240 '\u{16c}',
13241 char::REPLACEMENT_CHARACTER,
13242 '\u{40}',
13243 '\u{2d9}',
13244 '\u{a3}',
13245 '\u{17c}',
13246 '\u{7d}',
13247 '\u{17b}',
13248 '\u{a7}',
13249 '\u{5d}',
13250 '\u{b7}',
13251 '\u{bd}',
13252 '\u{24}',
13253 '\u{124}',
13254 '\u{11c}',
13255 '\u{134}',
13256 '\u{a8}',
13257 '\u{b4}',
13258 '\u{d7}',
13259 '\u{e7}',
13260 '\u{41}',
13261 '\u{42}',
13262 '\u{43}',
13263 '\u{44}',
13264 '\u{45}',
13265 '\u{46}',
13266 '\u{47}',
13267 '\u{48}',
13268 '\u{49}',
13269 '\u{ad}',
13270 '\u{f4}',
13271 '\u{7e}',
13272 '\u{f2}',
13273 '\u{f3}',
13274 '\u{121}',
13275 '\u{11f}',
13276 '\u{4a}',
13277 '\u{4b}',
13278 '\u{4c}',
13279 '\u{4d}',
13280 '\u{4e}',
13281 '\u{4f}',
13282 '\u{50}',
13283 '\u{51}',
13284 '\u{52}',
13285 '\u{60}',
13286 '\u{fb}',
13287 '\u{5c}',
13288 '\u{f9}',
13289 '\u{fa}',
13290 char::REPLACEMENT_CHARACTER,
13291 '\u{fc}',
13292 '\u{f7}',
13293 '\u{53}',
13294 '\u{54}',
13295 '\u{55}',
13296 '\u{56}',
13297 '\u{57}',
13298 '\u{58}',
13299 '\u{59}',
13300 '\u{5a}',
13301 '\u{b2}',
13302 '\u{d4}',
13303 '\u{23}',
13304 '\u{d2}',
13305 '\u{d3}',
13306 '\u{120}',
13307 '\u{30}',
13308 '\u{31}',
13309 '\u{32}',
13310 '\u{33}',
13311 '\u{34}',
13312 '\u{35}',
13313 '\u{36}',
13314 '\u{37}',
13315 '\u{38}',
13316 '\u{39}',
13317 '\u{b3}',
13318 '\u{db}',
13319 '\u{22}',
13320 '\u{d9}',
13321 '\u{da}',
13322 '\u{9f}',
13323];
13324const IBM_905_ENCODE_TABLE: &[(u16, u8)] = &[
13325 (0, 0),
13326 (1, 1),
13327 (2, 2),
13328 (3, 3),
13329 (4, 55),
13330 (5, 45),
13331 (6, 46),
13332 (7, 47),
13333 (8, 22),
13334 (9, 5),
13335 (10, 37),
13336 (11, 11),
13337 (12, 12),
13338 (13, 13),
13339 (14, 14),
13340 (15, 15),
13341 (16, 16),
13342 (17, 17),
13343 (18, 18),
13344 (19, 19),
13345 (20, 60),
13346 (21, 61),
13347 (22, 50),
13348 (23, 38),
13349 (24, 24),
13350 (25, 25),
13351 (26, 63),
13352 (27, 39),
13353 (28, 28),
13354 (29, 29),
13355 (30, 30),
13356 (31, 31),
13357 (32, 64),
13358 (33, 79),
13359 (34, 252),
13360 (35, 236),
13361 (36, 185),
13362 (37, 108),
13363 (38, 80),
13364 (39, 125),
13365 (40, 77),
13366 (41, 93),
13367 (42, 92),
13368 (43, 78),
13369 (44, 107),
13370 (45, 96),
13371 (46, 75),
13372 (47, 97),
13373 (48, 240),
13374 (49, 241),
13375 (50, 242),
13376 (51, 243),
13377 (52, 244),
13378 (53, 245),
13379 (54, 246),
13380 (55, 247),
13381 (56, 248),
13382 (57, 249),
13383 (58, 122),
13384 (59, 94),
13385 (60, 76),
13386 (61, 126),
13387 (62, 110),
13388 (63, 111),
13389 (64, 175),
13390 (65, 193),
13391 (66, 194),
13392 (67, 195),
13393 (68, 196),
13394 (69, 197),
13395 (70, 198),
13396 (71, 199),
13397 (72, 200),
13398 (73, 201),
13399 (74, 209),
13400 (75, 210),
13401 (76, 211),
13402 (77, 212),
13403 (78, 213),
13404 (79, 214),
13405 (80, 215),
13406 (81, 216),
13407 (82, 217),
13408 (83, 226),
13409 (84, 227),
13410 (85, 228),
13411 (86, 229),
13412 (87, 230),
13413 (88, 231),
13414 (89, 232),
13415 (90, 233),
13416 (91, 104),
13417 (92, 220),
13418 (93, 182),
13419 (94, 95),
13420 (95, 109),
13421 (96, 218),
13422 (97, 129),
13423 (98, 130),
13424 (99, 131),
13425 (100, 132),
13426 (101, 133),
13427 (102, 134),
13428 (103, 135),
13429 (104, 136),
13430 (105, 137),
13431 (106, 145),
13432 (107, 146),
13433 (108, 147),
13434 (109, 148),
13435 (110, 149),
13436 (111, 150),
13437 (112, 151),
13438 (113, 152),
13439 (114, 153),
13440 (115, 162),
13441 (116, 163),
13442 (117, 164),
13443 (118, 165),
13444 (119, 166),
13445 (120, 167),
13446 (121, 168),
13447 (122, 169),
13448 (123, 72),
13449 (124, 143),
13450 (125, 179),
13451 (126, 204),
13452 (127, 7),
13453 (128, 32),
13454 (129, 33),
13455 (130, 34),
13456 (131, 35),
13457 (132, 36),
13458 (133, 21),
13459 (134, 6),
13460 (135, 23),
13461 (136, 40),
13462 (137, 41),
13463 (138, 42),
13464 (139, 43),
13465 (140, 44),
13466 (141, 9),
13467 (142, 10),
13468 (143, 27),
13469 (144, 48),
13470 (145, 49),
13471 (146, 26),
13472 (147, 51),
13473 (148, 52),
13474 (149, 53),
13475 (150, 54),
13476 (151, 8),
13477 (152, 56),
13478 (153, 57),
13479 (154, 58),
13480 (155, 59),
13481 (156, 4),
13482 (157, 20),
13483 (158, 62),
13484 (159, 255),
13485 (160, 65),
13486 (163, 177),
13487 (164, 159),
13488 (167, 181),
13489 (168, 189),
13490 (173, 202),
13491 (176, 144),
13492 (178, 234),
13493 (179, 250),
13494 (180, 190),
13495 (181, 160),
13496 (183, 183),
13497 (184, 157),
13498 (189, 184),
13499 (192, 100),
13500 (193, 101),
13501 (194, 98),
13502 (196, 99),
13503 (199, 74),
13504 (200, 116),
13505 (201, 113),
13506 (202, 114),
13507 (203, 115),
13508 (204, 120),
13509 (205, 117),
13510 (206, 118),
13511 (207, 119),
13512 (209, 105),
13513 (210, 237),
13514 (211, 238),
13515 (212, 235),
13516 (214, 123),
13517 (215, 191),
13518 (217, 253),
13519 (218, 254),
13520 (219, 251),
13521 (220, 127),
13522 (223, 89),
13523 (224, 68),
13524 (225, 69),
13525 (226, 66),
13526 (228, 67),
13527 (231, 192),
13528 (232, 84),
13529 (233, 81),
13530 (234, 82),
13531 (235, 83),
13532 (236, 88),
13533 (237, 85),
13534 (238, 86),
13535 (239, 87),
13536 (241, 73),
13537 (242, 205),
13538 (243, 206),
13539 (244, 203),
13540 (246, 161),
13541 (247, 225),
13542 (249, 221),
13543 (250, 222),
13544 (251, 219),
13545 (252, 224),
13546 (264, 171),
13547 (265, 139),
13548 (266, 103),
13549 (267, 71),
13550 (284, 187),
13551 (285, 155),
13552 (286, 90),
13553 (287, 208),
13554 (288, 239),
13555 (289, 207),
13556 (292, 186),
13557 (293, 154),
13558 (294, 170),
13559 (295, 138),
13560 (304, 91),
13561 (305, 121),
13562 (308, 188),
13563 (309, 156),
13564 (348, 172),
13565 (349, 140),
13566 (350, 124),
13567 (351, 106),
13568 (364, 173),
13569 (365, 141),
13570 (379, 180),
13571 (380, 178),
13572 (728, 128),
13573 (729, 176),
13574];
13575
13576impl_ebcdic_encoder_and_decoder!(
13577 IBM918,
13578 "IBM918",
13579 IBM918Encoder,
13580 IBM918Decoder,
13581 IBM_918_ENCODE_TABLE,
13582 IBM_918_DECODE_TABLE
13583);
13584const IBM_918_DECODE_TABLE: [char; 256] = [
13585 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
13586 '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
13587 '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
13588 '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
13589 '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
13590 '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
13591 '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
13592 '\u{a0}', '\u{60c}', '\u{61b}', '\u{61f}', '\u{fe81}', '\u{fe8d}', '\u{fe8e}', '\u{f8fb}',
13593 '\u{fe8f}', '\u{5b}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{fe91}',
13594 '\u{fb56}', '\u{fb58}', '\u{fe93}', '\u{fe95}', '\u{fe97}', '\u{fb66}', '\u{fb68}', '\u{fe99}',
13595 '\u{5d}', '\u{24}', '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{fe9b}',
13596 '\u{fe9d}', '\u{fe9f}', '\u{fb7a}', '\u{fb7c}', '\u{fea1}', '\u{fea3}', '\u{fea5}', '\u{60}',
13597 '\u{2c}', '\u{25}', '\u{5f}', '\u{3e}', '\u{3f}', '\u{6f0}', '\u{6f1}', '\u{6f2}', '\u{6f3}',
13598 '\u{6f4}', '\u{6f5}', '\u{6f6}', '\u{6f7}', '\u{6f8}', '\u{6f9}', '\u{3a}', '\u{23}', '\u{40}',
13599 '\u{27}', '\u{3d}', '\u{22}', '\u{fea7}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}',
13600 '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{fea9}', '\u{fb88}', '\u{feab}', '\u{fead}',
13601 '\u{fb8c}', '\u{feaf}', '\u{fb8a}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}',
13602 '\u{70}', '\u{71}', '\u{72}', '\u{feb1}', '\u{feb3}', '\u{feb5}', '\u{feb7}', '\u{feb9}',
13603 '\u{febb}', '\u{febd}', '\u{7e}', '\u{73}', '\u{74}', '\u{75}', '\u{76}', '\u{77}', '\u{78}',
13604 '\u{79}', '\u{7a}', '\u{febf}', '\u{fec3}', '\u{fec7}', '\u{fec9}', '\u{feca}', '\u{fecb}',
13605 '\u{fecc}', '\u{fecd}', '\u{fece}', '\u{fecf}', '\u{fed0}', '\u{fed1}', '\u{fed3}', '\u{fed5}',
13606 '\u{fed7}', '\u{fb8e}', '\u{fedb}', '\u{7c}', '\u{fb92}', '\u{fb94}', '\u{fedd}', '\u{fedf}',
13607 '\u{7b}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}',
13608 '\u{49}', '\u{ad}', '\u{fee0}', '\u{fee1}', '\u{fee3}', '\u{fb9e}', '\u{fee5}', '\u{7d}',
13609 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
13610 '\u{fee7}', '\u{fe85}', '\u{feed}', '\u{fba6}', '\u{fba8}', '\u{fba9}', '\u{5c}', '\u{fbaa}',
13611 '\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{fe80}',
13612 '\u{fe89}', '\u{fe8a}', '\u{fe8b}', '\u{fbfc}', '\u{fbfd}', '\u{30}', '\u{31}', '\u{32}',
13613 '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{fbfe}', '\u{fbb0}',
13614 '\u{fbae}', '\u{fe7c}', '\u{fe7d}', '\u{9f}',
13615];
13616const IBM_918_ENCODE_TABLE: &[(u16, u8)] = &[
13617 (0, 0),
13618 (1, 1),
13619 (2, 2),
13620 (3, 3),
13621 (4, 55),
13622 (5, 45),
13623 (6, 46),
13624 (7, 47),
13625 (8, 22),
13626 (9, 5),
13627 (10, 37),
13628 (11, 11),
13629 (12, 12),
13630 (13, 13),
13631 (14, 14),
13632 (15, 15),
13633 (16, 16),
13634 (17, 17),
13635 (18, 18),
13636 (19, 19),
13637 (20, 60),
13638 (21, 61),
13639 (22, 50),
13640 (23, 38),
13641 (24, 24),
13642 (25, 25),
13643 (26, 63),
13644 (27, 39),
13645 (28, 28),
13646 (29, 29),
13647 (30, 30),
13648 (31, 31),
13649 (32, 64),
13650 (33, 79),
13651 (34, 127),
13652 (35, 123),
13653 (36, 91),
13654 (37, 108),
13655 (38, 80),
13656 (39, 125),
13657 (40, 77),
13658 (41, 93),
13659 (42, 92),
13660 (43, 78),
13661 (44, 107),
13662 (45, 96),
13663 (46, 75),
13664 (47, 97),
13665 (48, 240),
13666 (49, 241),
13667 (50, 242),
13668 (51, 243),
13669 (52, 244),
13670 (53, 245),
13671 (54, 246),
13672 (55, 247),
13673 (56, 248),
13674 (57, 249),
13675 (58, 122),
13676 (59, 94),
13677 (60, 76),
13678 (61, 126),
13679 (62, 110),
13680 (63, 111),
13681 (64, 124),
13682 (65, 193),
13683 (66, 194),
13684 (67, 195),
13685 (68, 196),
13686 (69, 197),
13687 (70, 198),
13688 (71, 199),
13689 (72, 200),
13690 (73, 201),
13691 (74, 209),
13692 (75, 210),
13693 (76, 211),
13694 (77, 212),
13695 (78, 213),
13696 (79, 214),
13697 (80, 215),
13698 (81, 216),
13699 (82, 217),
13700 (83, 226),
13701 (84, 227),
13702 (85, 228),
13703 (86, 229),
13704 (87, 230),
13705 (88, 231),
13706 (89, 232),
13707 (90, 233),
13708 (91, 74),
13709 (92, 224),
13710 (93, 90),
13711 (94, 95),
13712 (95, 109),
13713 (96, 106),
13714 (97, 129),
13715 (98, 130),
13716 (99, 131),
13717 (100, 132),
13718 (101, 133),
13719 (102, 134),
13720 (103, 135),
13721 (104, 136),
13722 (105, 137),
13723 (106, 145),
13724 (107, 146),
13725 (108, 147),
13726 (109, 148),
13727 (110, 149),
13728 (111, 150),
13729 (112, 151),
13730 (113, 152),
13731 (114, 153),
13732 (115, 162),
13733 (116, 163),
13734 (117, 164),
13735 (118, 165),
13736 (119, 166),
13737 (120, 167),
13738 (121, 168),
13739 (122, 169),
13740 (123, 192),
13741 (124, 187),
13742 (125, 208),
13743 (126, 161),
13744 (127, 7),
13745 (128, 32),
13746 (129, 33),
13747 (130, 34),
13748 (131, 35),
13749 (132, 36),
13750 (133, 21),
13751 (134, 6),
13752 (135, 23),
13753 (136, 40),
13754 (137, 41),
13755 (138, 42),
13756 (139, 43),
13757 (140, 44),
13758 (141, 9),
13759 (142, 10),
13760 (143, 27),
13761 (144, 48),
13762 (145, 49),
13763 (146, 26),
13764 (147, 51),
13765 (148, 52),
13766 (149, 53),
13767 (150, 54),
13768 (151, 8),
13769 (152, 56),
13770 (153, 57),
13771 (154, 58),
13772 (155, 59),
13773 (156, 4),
13774 (157, 20),
13775 (158, 62),
13776 (159, 255),
13777 (160, 65),
13778 (173, 202),
13779 (1548, 66),
13780 (1563, 67),
13781 (1567, 68),
13782 (1776, 112),
13783 (1777, 113),
13784 (1778, 114),
13785 (1779, 115),
13786 (1780, 116),
13787 (1781, 117),
13788 (1782, 118),
13789 (1783, 119),
13790 (1784, 120),
13791 (1785, 121),
13792 (63739, 72),
13793 (64342, 82),
13794 (64344, 83),
13795 (64358, 87),
13796 (64360, 88),
13797 (64378, 101),
13798 (64380, 102),
13799 (64392, 139),
13800 (64394, 144),
13801 (64396, 142),
13802 (64398, 185),
13803 (64402, 188),
13804 (64404, 189),
13805 (64414, 206),
13806 (64422, 221),
13807 (64424, 222),
13808 (64425, 223),
13809 (64426, 225),
13810 (64430, 252),
13811 (64432, 251),
13812 (64508, 238),
13813 (64509, 239),
13814 (64510, 250),
13815 (65148, 253),
13816 (65149, 254),
13817 (65152, 234),
13818 (65153, 69),
13819 (65157, 219),
13820 (65161, 235),
13821 (65162, 236),
13822 (65163, 237),
13823 (65165, 70),
13824 (65166, 71),
13825 (65167, 73),
13826 (65169, 81),
13827 (65171, 84),
13828 (65173, 85),
13829 (65175, 86),
13830 (65177, 89),
13831 (65179, 98),
13832 (65181, 99),
13833 (65183, 100),
13834 (65185, 103),
13835 (65187, 104),
13836 (65189, 105),
13837 (65191, 128),
13838 (65193, 138),
13839 (65195, 140),
13840 (65197, 141),
13841 (65199, 143),
13842 (65201, 154),
13843 (65203, 155),
13844 (65205, 156),
13845 (65207, 157),
13846 (65209, 158),
13847 (65211, 159),
13848 (65213, 160),
13849 (65215, 170),
13850 (65219, 171),
13851 (65223, 172),
13852 (65225, 173),
13853 (65226, 174),
13854 (65227, 175),
13855 (65228, 176),
13856 (65229, 177),
13857 (65230, 178),
13858 (65231, 179),
13859 (65232, 180),
13860 (65233, 181),
13861 (65235, 182),
13862 (65237, 183),
13863 (65239, 184),
13864 (65243, 186),
13865 (65245, 190),
13866 (65247, 191),
13867 (65248, 203),
13868 (65249, 204),
13869 (65251, 205),
13870 (65253, 207),
13871 (65255, 218),
13872 (65261, 220),
13873];
13874
13875impl_ebcdic_encoder_and_decoder!(
13876 IBM1026,
13877 "IBM1026",
13878 IBM1026Encoder,
13879 IBM1026Decoder,
13880 IBM_1026_ENCODE_TABLE,
13881 IBM_1026_DECODE_TABLE
13882);
13883const IBM_1026_DECODE_TABLE: [char; 256] = [
13884 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
13885 '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
13886 '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
13887 '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
13888 '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
13889 '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
13890 '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
13891 '\u{a0}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{7b}', '\u{f1}',
13892 '\u{c7}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{e9}', '\u{ea}',
13893 '\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{11e}', '\u{130}',
13894 '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
13895 '\u{c1}', '\u{c3}', '\u{c5}', '\u{5b}', '\u{d1}', '\u{15f}', '\u{2c}', '\u{25}', '\u{5f}',
13896 '\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
13897 '\u{cf}', '\u{cc}', '\u{131}', '\u{3a}', '\u{d6}', '\u{15e}', '\u{27}', '\u{3d}', '\u{dc}',
13898 '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
13899 '\u{69}', '\u{ab}', '\u{bb}', '\u{7d}', '\u{60}', '\u{a6}', '\u{b1}', '\u{b0}', '\u{6a}',
13900 '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
13901 '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{f6}', '\u{73}', '\u{74}',
13902 '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{5d}',
13903 '\u{24}', '\u{40}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
13904 '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{a8}', '\u{b4}',
13905 '\u{d7}', '\u{e7}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
13906 '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{7e}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{11f}',
13907 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
13908 '\u{b9}', '\u{fb}', '\u{5c}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{fc}', '\u{f7}', '\u{53}',
13909 '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
13910 '\u{23}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
13911 '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{22}', '\u{d9}',
13912 '\u{da}', '\u{9f}',
13913];
13914const IBM_1026_ENCODE_TABLE: &[(u16, u8)] = &[
13915 (0, 0),
13916 (1, 1),
13917 (2, 2),
13918 (3, 3),
13919 (4, 55),
13920 (5, 45),
13921 (6, 46),
13922 (7, 47),
13923 (8, 22),
13924 (9, 5),
13925 (10, 37),
13926 (11, 11),
13927 (12, 12),
13928 (13, 13),
13929 (14, 14),
13930 (15, 15),
13931 (16, 16),
13932 (17, 17),
13933 (18, 18),
13934 (19, 19),
13935 (20, 60),
13936 (21, 61),
13937 (22, 50),
13938 (23, 38),
13939 (24, 24),
13940 (25, 25),
13941 (26, 63),
13942 (27, 39),
13943 (28, 28),
13944 (29, 29),
13945 (30, 30),
13946 (31, 31),
13947 (32, 64),
13948 (33, 79),
13949 (34, 252),
13950 (35, 236),
13951 (36, 173),
13952 (37, 108),
13953 (38, 80),
13954 (39, 125),
13955 (40, 77),
13956 (41, 93),
13957 (42, 92),
13958 (43, 78),
13959 (44, 107),
13960 (45, 96),
13961 (46, 75),
13962 (47, 97),
13963 (48, 240),
13964 (49, 241),
13965 (50, 242),
13966 (51, 243),
13967 (52, 244),
13968 (53, 245),
13969 (54, 246),
13970 (55, 247),
13971 (56, 248),
13972 (57, 249),
13973 (58, 122),
13974 (59, 94),
13975 (60, 76),
13976 (61, 126),
13977 (62, 110),
13978 (63, 111),
13979 (64, 174),
13980 (65, 193),
13981 (66, 194),
13982 (67, 195),
13983 (68, 196),
13984 (69, 197),
13985 (70, 198),
13986 (71, 199),
13987 (72, 200),
13988 (73, 201),
13989 (74, 209),
13990 (75, 210),
13991 (76, 211),
13992 (77, 212),
13993 (78, 213),
13994 (79, 214),
13995 (80, 215),
13996 (81, 216),
13997 (82, 217),
13998 (83, 226),
13999 (84, 227),
14000 (85, 228),
14001 (86, 229),
14002 (87, 230),
14003 (88, 231),
14004 (89, 232),
14005 (90, 233),
14006 (91, 104),
14007 (92, 220),
14008 (93, 172),
14009 (94, 95),
14010 (95, 109),
14011 (96, 141),
14012 (97, 129),
14013 (98, 130),
14014 (99, 131),
14015 (100, 132),
14016 (101, 133),
14017 (102, 134),
14018 (103, 135),
14019 (104, 136),
14020 (105, 137),
14021 (106, 145),
14022 (107, 146),
14023 (108, 147),
14024 (109, 148),
14025 (110, 149),
14026 (111, 150),
14027 (112, 151),
14028 (113, 152),
14029 (114, 153),
14030 (115, 162),
14031 (116, 163),
14032 (117, 164),
14033 (118, 165),
14034 (119, 166),
14035 (120, 167),
14036 (121, 168),
14037 (122, 169),
14038 (123, 72),
14039 (124, 187),
14040 (125, 140),
14041 (126, 204),
14042 (127, 7),
14043 (128, 32),
14044 (129, 33),
14045 (130, 34),
14046 (131, 35),
14047 (132, 36),
14048 (133, 21),
14049 (134, 6),
14050 (135, 23),
14051 (136, 40),
14052 (137, 41),
14053 (138, 42),
14054 (139, 43),
14055 (140, 44),
14056 (141, 9),
14057 (142, 10),
14058 (143, 27),
14059 (144, 48),
14060 (145, 49),
14061 (146, 26),
14062 (147, 51),
14063 (148, 52),
14064 (149, 53),
14065 (150, 54),
14066 (151, 8),
14067 (152, 56),
14068 (153, 57),
14069 (154, 58),
14070 (155, 59),
14071 (156, 4),
14072 (157, 20),
14073 (158, 62),
14074 (159, 255),
14075 (160, 65),
14076 (161, 170),
14077 (162, 176),
14078 (163, 177),
14079 (164, 159),
14080 (165, 178),
14081 (166, 142),
14082 (167, 181),
14083 (168, 189),
14084 (169, 180),
14085 (170, 154),
14086 (171, 138),
14087 (172, 186),
14088 (173, 202),
14089 (174, 175),
14090 (175, 188),
14091 (176, 144),
14092 (177, 143),
14093 (178, 234),
14094 (179, 250),
14095 (180, 190),
14096 (181, 160),
14097 (182, 182),
14098 (183, 179),
14099 (184, 157),
14100 (185, 218),
14101 (186, 155),
14102 (187, 139),
14103 (188, 183),
14104 (189, 184),
14105 (190, 185),
14106 (191, 171),
14107 (192, 100),
14108 (193, 101),
14109 (194, 98),
14110 (195, 102),
14111 (196, 99),
14112 (197, 103),
14113 (198, 158),
14114 (199, 74),
14115 (200, 116),
14116 (201, 113),
14117 (202, 114),
14118 (203, 115),
14119 (204, 120),
14120 (205, 117),
14121 (206, 118),
14122 (207, 119),
14123 (209, 105),
14124 (210, 237),
14125 (211, 238),
14126 (212, 235),
14127 (213, 239),
14128 (214, 123),
14129 (215, 191),
14130 (216, 128),
14131 (217, 253),
14132 (218, 254),
14133 (219, 251),
14134 (220, 127),
14135 (223, 89),
14136 (224, 68),
14137 (225, 69),
14138 (226, 66),
14139 (227, 70),
14140 (228, 67),
14141 (229, 71),
14142 (230, 156),
14143 (231, 192),
14144 (232, 84),
14145 (233, 81),
14146 (234, 82),
14147 (235, 83),
14148 (236, 88),
14149 (237, 85),
14150 (238, 86),
14151 (239, 87),
14152 (241, 73),
14153 (242, 205),
14154 (243, 206),
14155 (244, 203),
14156 (245, 207),
14157 (246, 161),
14158 (247, 225),
14159 (248, 112),
14160 (249, 221),
14161 (250, 222),
14162 (251, 219),
14163 (252, 224),
14164 (255, 223),
14165 (286, 90),
14166 (287, 208),
14167 (304, 91),
14168 (305, 121),
14169 (350, 124),
14170 (351, 106),
14171];
14172
14173#[cfg(test)]
14174mod tests {
14175 use super::*;
14176
14177 #[test]
14178 fn ebcdic_decoding_tests() {
14179 let doc = [
14180 0x4c, 0x6f, 0xa7, 0x94, 0x93, 0x40, 0xa5, 0x85, 0x99, 0xa2, 0x89, 0x96, 0x95, 0x7e,
14181 0x7f, 0xf1, 0x4b, 0xf0, 0x7f, 0x40, 0x85, 0x95, 0x83, 0x96, 0x84, 0x89, 0x95, 0x87,
14182 0x7e, 0x7f, 0xc3, 0x97, 0xf0, 0xf3, 0xf7, 0x7f, 0x6f, 0x6e, 0x25, 0x4c, 0x97, 0x6e,
14183 0x84, 0x81, 0xa3, 0x81, 0x4c, 0x61, 0x97, 0x6e,
14184 ];
14185
14186 let mut buf = String::with_capacity(1024);
14187 IBM037Decoder.decode(&doc, &mut buf, true).ok();
14188 assert_eq!(
14189 buf,
14190 "<?xml version=\"1.0\" encoding=\"Cp037\"?>\n<p>data</p>"
14191 );
14192 }
14193}