1use pce_config::PcePaletteType;
2use std::array;
3
4pub type PcePalette = [(u8, u8, u8); 512];
5
6pub fn for_type(palette: PcePaletteType) -> &'static PcePalette {
7    match palette {
8        PcePaletteType::PceComposite => COMPOSITE_PALETTE,
9        PcePaletteType::Linear => LINEAR_PALETTE,
10    }
11}
12
13pub fn make_greyscale(palette: &PcePalette) -> PcePalette {
14    array::from_fn(|i| {
15        let (r, g, b) = palette[i];
16        let r: f64 = r.into();
17        let g: f64 = g.into();
18        let b: f64 = b.into();
19
20        // Remove chroma information by converting from RGB to YUV, setting U and V to 0, then converting back to RGB
21        // This is equivalent to replacing all color components with Y
22        let y = 0.299 * r + 0.587 * g + 0.114 * b;
23        let y = y.round() as u8;
24
25        (y, y, y)
26    })
27}
28
29// Generated using Kitrinx's TG16_Palette tool: https://github.com/Kitrinx/TG16_Palette
30const COMPOSITE_PALETTE: &PcePalette = &[
31    (0, 0, 0),
32    (0, 0, 22),
33    (4, 2, 53),
34    (1, 0, 75),
35    (7, 4, 106),
36    (5, 1, 128),
37    (11, 6, 159),
38    (9, 3, 181),
39    (26, 0, 3),
40    (32, 5, 33),
41    (30, 2, 55),
42    (36, 7, 86),
43    (34, 4, 108),
44    (40, 9, 139),
45    (37, 6, 161),
46    (43, 11, 192),
47    (61, 8, 13),
48    (59, 5, 36),
49    (64, 10, 66),
50    (62, 7, 89),
51    (68, 12, 119),
52    (66, 9, 141),
53    (72, 14, 172),
54    (69, 11, 194),
55    (87, 9, 16),
56    (85, 5, 38),
57    (91, 10, 69),
58    (89, 7, 91),
59    (94, 12, 122),
60    (92, 9, 144),
61    (98, 14, 175),
62    (96, 11, 197),
63    (114, 9, 19),
64    (119, 14, 49),
65    (117, 11, 72),
66    (123, 16, 102),
67    (121, 12, 124),
68    (127, 17, 155),
69    (124, 14, 177),
70    (130, 19, 208),
71    (148, 17, 30),
72    (146, 14, 52),
73    (152, 19, 82),
74    (149, 16, 105),
75    (155, 21, 135),
76    (153, 18, 158),
77    (159, 23, 188),
78    (157, 19, 210),
79    (174, 17, 32),
80    (172, 14, 54),
81    (178, 19, 85),
82    (176, 16, 107),
83    (182, 21, 138),
84    (179, 18, 160),
85    (185, 23, 191),
86    (183, 20, 213),
87    (201, 17, 35),
88    (207, 22, 65),
89    (204, 19, 88),
90    (210, 24, 118),
91    (208, 21, 140),
92    (214, 26, 171),
93    (212, 23, 193),
94    (218, 28, 224),
95    (9, 36, 8),
96    (7, 33, 30),
97    (13, 38, 61),
98    (10, 35, 83),
99    (16, 40, 114),
100    (14, 37, 136),
101    (20, 42, 167),
102    (17, 39, 189),
103    (35, 36, 11),
104    (33, 33, 33),
105    (39, 38, 63),
106    (37, 35, 86),
107    (42, 40, 116),
108    (40, 37, 139),
109    (46, 42, 169),
110    (44, 39, 191),
111    (62, 36, 13),
112    (67, 41, 44),
113    (65, 38, 66),
114    (71, 43, 97),
115    (69, 40, 119),
116    (75, 45, 149),
117    (72, 42, 172),
118    (78, 47, 202),
119    (96, 44, 24),
120    (94, 41, 46),
121    (100, 46, 77),
122    (97, 43, 99),
123    (103, 48, 130),
124    (101, 45, 152),
125    (107, 50, 183),
126    (105, 47, 205),
127    (122, 45, 27),
128    (120, 41, 49),
129    (126, 46, 80),
130    (124, 43, 102),
131    (130, 48, 132),
132    (127, 45, 155),
133    (133, 50, 185),
134    (131, 47, 208),
135    (149, 45, 29),
136    (155, 50, 60),
137    (152, 47, 82),
138    (158, 52, 113),
139    (156, 48, 135),
140    (162, 54, 166),
141    (160, 50, 188),
142    (166, 55, 218),
143    (183, 53, 40),
144    (181, 50, 62),
145    (187, 55, 93),
146    (185, 52, 115),
147    (191, 57, 146),
148    (188, 54, 168),
149    (194, 59, 199),
150    (192, 56, 221),
151    (210, 53, 43),
152    (207, 50, 65),
153    (213, 55, 96),
154    (211, 52, 118),
155    (217, 57, 148),
156    (215, 54, 171),
157    (220, 59, 201),
158    (218, 56, 224),
159    (10, 64, 8),
160    (15, 69, 38),
161    (13, 66, 61),
162    (19, 71, 91),
163    (17, 68, 113),
164    (23, 73, 144),
165    (20, 69, 166),
166    (26, 74, 197),
167    (44, 72, 19),
168    (42, 69, 41),
169    (48, 74, 71),
170    (45, 71, 94),
171    (51, 76, 124),
172    (49, 73, 147),
173    (47, 70, 169),
174    (53, 75, 199),
175    (70, 72, 21),
176    (68, 69, 43),
177    (74, 74, 74),
178    (72, 71, 96),
179    (78, 76, 127),
180    (75, 73, 149),
181    (81, 78, 180),
182    (79, 75, 202),
183    (97, 72, 24),
184    (103, 77, 54),
185    (100, 74, 77),
186    (106, 79, 107),
187    (104, 76, 129),
188    (110, 81, 160),
189    (108, 78, 182),
190    (114, 83, 213),
191    (131, 81, 35),
192    (129, 77, 57),
193    (135, 82, 87),
194    (133, 79, 110),
195    (139, 84, 140),
196    (136, 81, 163),
197    (134, 78, 185),
198    (140, 83, 215),
199    (158, 81, 37),
200    (155, 77, 60),
201    (161, 83, 90),
202    (159, 79, 112),
203    (165, 84, 143),
204    (163, 81, 165),
205    (168, 86, 196),
206    (166, 83, 218),
207    (184, 81, 40),
208    (190, 86, 70),
209    (188, 83, 93),
210    (193, 88, 123),
211    (191, 85, 146),
212    (197, 90, 176),
213    (195, 86, 198),
214    (201, 92, 229),
215    (218, 89, 51),
216    (216, 86, 73),
217    (222, 91, 104),
218    (220, 88, 126),
219    (217, 85, 148),
220    (223, 90, 179),
221    (221, 87, 201),
222    (227, 92, 232),
223    (18, 100, 16),
224    (16, 97, 38),
225    (22, 102, 69),
226    (20, 98, 91),
227    (26, 103, 121),
228    (23, 100, 144),
229    (29, 105, 174),
230    (27, 102, 197),
231    (45, 100, 18),
232    (51, 105, 49),
233    (48, 102, 71),
234    (54, 107, 102),
235    (52, 104, 124),
236    (58, 109, 155),
237    (56, 105, 177),
238    (62, 111, 207),
239    (71, 100, 21),
240    (77, 105, 51),
241    (75, 102, 74),
242    (81, 107, 104),
243    (78, 104, 127),
244    (84, 109, 157),
245    (82, 106, 179),
246    (88, 111, 210),
247    (106, 108, 32),
248    (103, 105, 54),
249    (109, 110, 85),
250    (107, 107, 107),
251    (113, 112, 137),
252    (111, 109, 160),
253    (116, 114, 190),
254    (114, 111, 213),
255    (132, 108, 34),
256    (138, 113, 65),
257    (136, 110, 87),
258    (141, 115, 118),
259    (139, 112, 140),
260    (145, 117, 171),
261    (143, 114, 193),
262    (149, 119, 223),
263    (158, 108, 37),
264    (164, 113, 68),
265    (162, 110, 90),
266    (168, 115, 120),
267    (166, 112, 143),
268    (171, 117, 173),
269    (169, 114, 196),
270    (175, 119, 226),
271    (193, 117, 48),
272    (190, 114, 70),
273    (196, 119, 101),
274    (194, 115, 123),
275    (200, 121, 154),
276    (198, 117, 176),
277    (204, 122, 206),
278    (201, 119, 229),
279    (219, 117, 50),
280    (225, 122, 81),
281    (223, 119, 103),
282    (229, 124, 134),
283    (226, 121, 156),
284    (232, 126, 187),
285    (230, 123, 209),
286    (236, 128, 240),
287    (19, 127, 15),
288    (25, 132, 46),
289    (23, 129, 68),
290    (29, 134, 99),
291    (26, 131, 121),
292    (32, 136, 152),
293    (30, 133, 174),
294    (36, 138, 205),
295    (54, 136, 26),
296    (51, 133, 49),
297    (57, 138, 79),
298    (55, 134, 101),
299    (61, 140, 132),
300    (59, 136, 154),
301    (65, 141, 185),
302    (62, 138, 207),
303    (80, 136, 29),
304    (86, 141, 59),
305    (84, 138, 82),
306    (89, 143, 112),
307    (87, 140, 135),
308    (93, 145, 165),
309    (91, 142, 187),
310    (97, 147, 218),
311    (106, 136, 32),
312    (112, 141, 62),
313    (110, 138, 84),
314    (116, 143, 115),
315    (114, 140, 137),
316    (119, 145, 168),
317    (117, 142, 190),
318    (123, 147, 221),
319    (141, 144, 42),
320    (139, 141, 65),
321    (144, 146, 95),
322    (142, 143, 118),
323    (148, 148, 148),
324    (146, 145, 170),
325    (152, 150, 201),
326    (149, 147, 223),
327    (167, 144, 45),
328    (173, 149, 76),
329    (171, 146, 98),
330    (177, 151, 128),
331    (174, 148, 151),
332    (180, 153, 181),
333    (178, 150, 204),
334    (184, 155, 234),
335    (193, 144, 48),
336    (199, 150, 78),
337    (197, 146, 100),
338    (203, 151, 131),
339    (201, 148, 153),
340    (207, 153, 184),
341    (204, 150, 206),
342    (210, 155, 237),
343    (228, 153, 58),
344    (226, 150, 81),
345    (232, 155, 111),
346    (229, 152, 134),
347    (235, 157, 164),
348    (233, 153, 186),
349    (239, 158, 217),
350    (237, 155, 239),
351    (28, 163, 23),
352    (34, 168, 54),
353    (32, 165, 76),
354    (38, 170, 107),
355    (35, 167, 129),
356    (41, 172, 160),
357    (39, 169, 182),
358    (37, 166, 204),
359    (54, 163, 26),
360    (60, 169, 57),
361    (58, 165, 79),
362    (64, 170, 109),
363    (62, 167, 132),
364    (67, 172, 162),
365    (65, 169, 185),
366    (71, 174, 215),
367    (89, 172, 37),
368    (87, 169, 59),
369    (92, 174, 90),
370    (90, 171, 112),
371    (96, 176, 143),
372    (94, 172, 165),
373    (100, 178, 195),
374    (97, 174, 218),
375    (115, 172, 40),
376    (121, 177, 70),
377    (119, 174, 92),
378    (125, 179, 123),
379    (122, 176, 145),
380    (120, 173, 168),
381    (126, 178, 198),
382    (124, 174, 220),
383    (141, 172, 42),
384    (147, 177, 73),
385    (145, 174, 95),
386    (151, 179, 126),
387    (149, 176, 148),
388    (155, 181, 178),
389    (152, 178, 201),
390    (158, 183, 231),
391    (176, 180, 53),
392    (174, 177, 75),
393    (180, 182, 106),
394    (177, 179, 128),
395    (183, 184, 159),
396    (181, 181, 181),
397    (187, 186, 212),
398    (185, 183, 234),
399    (202, 180, 56),
400    (208, 185, 86),
401    (206, 182, 108),
402    (212, 187, 139),
403    (210, 184, 161),
404    (207, 181, 184),
405    (213, 186, 214),
406    (211, 183, 236),
407    (229, 181, 58),
408    (235, 186, 89),
409    (232, 182, 111),
410    (238, 187, 142),
411    (236, 184, 164),
412    (242, 189, 194),
413    (240, 186, 217),
414    (245, 191, 247),
415    (37, 199, 31),
416    (35, 196, 54),
417    (40, 201, 84),
418    (38, 198, 107),
419    (44, 203, 137),
420    (42, 200, 159),
421    (48, 205, 190),
422    (45, 202, 212),
423    (63, 199, 34),
424    (61, 196, 56),
425    (67, 201, 87),
426    (64, 198, 109),
427    (70, 203, 140),
428    (68, 200, 162),
429    (74, 205, 193),
430    (72, 202, 215),
431    (89, 200, 37),
432    (95, 205, 67),
433    (93, 201, 89),
434    (99, 207, 120),
435    (97, 203, 142),
436    (103, 208, 173),
437    (100, 205, 195),
438    (106, 210, 226),
439    (124, 208, 47),
440    (122, 205, 70),
441    (128, 210, 100),
442    (125, 207, 123),
443    (131, 212, 153),
444    (129, 209, 175),
445    (135, 214, 206),
446    (133, 210, 228),
447    (150, 208, 50),
448    (148, 205, 72),
449    (154, 210, 103),
450    (152, 207, 125),
451    (158, 212, 156),
452    (155, 209, 178),
453    (161, 214, 209),
454    (159, 211, 231),
455    (177, 208, 53),
456    (183, 213, 83),
457    (180, 210, 106),
458    (186, 215, 136),
459    (184, 212, 158),
460    (190, 217, 189),
461    (188, 214, 211),
462    (193, 219, 242),
463    (211, 216, 64),
464    (209, 213, 86),
465    (215, 218, 116),
466    (213, 215, 139),
467    (218, 220, 169),
468    (216, 217, 192),
469    (222, 222, 222),
470    (220, 219, 244),
471    (238, 216, 66),
472    (235, 213, 88),
473    (241, 218, 119),
474    (239, 215, 141),
475    (245, 220, 172),
476    (242, 217, 194),
477    (248, 222, 225),
478    (246, 219, 247),
479    (37, 227, 31),
480    (43, 232, 62),
481    (41, 229, 84),
482    (47, 234, 115),
483    (45, 231, 137),
484    (51, 236, 167),
485    (48, 233, 190),
486    (54, 238, 220),
487    (72, 235, 42),
488    (70, 232, 64),
489    (76, 237, 95),
490    (73, 234, 117),
491    (79, 239, 148),
492    (77, 236, 170),
493    (83, 241, 201),
494    (81, 238, 223),
495    (98, 236, 45),
496    (96, 232, 67),
497    (102, 237, 97),
498    (100, 234, 120),
499    (106, 239, 150),
500    (103, 236, 173),
501    (109, 241, 203),
502    (107, 238, 225),
503    (125, 236, 47),
504    (131, 241, 78),
505    (128, 238, 100),
506    (134, 243, 131),
507    (132, 239, 153),
508    (138, 244, 183),
509    (136, 241, 206),
510    (141, 246, 236),
511    (159, 244, 58),
512    (157, 241, 80),
513    (163, 246, 111),
514    (161, 243, 133),
515    (166, 248, 164),
516    (164, 245, 186),
517    (170, 250, 217),
518    (168, 246, 239),
519    (186, 244, 61),
520    (183, 241, 83),
521    (189, 246, 114),
522    (187, 243, 136),
523    (193, 248, 166),
524    (191, 245, 189),
525    (196, 250, 219),
526    (194, 247, 242),
527    (212, 244, 63),
528    (218, 249, 94),
529    (215, 246, 116),
530    (221, 251, 147),
531    (219, 248, 169),
532    (225, 253, 200),
533    (223, 250, 222),
534    (229, 255, 252),
535    (246, 252, 74),
536    (244, 249, 96),
537    (250, 254, 127),
538    (248, 251, 149),
539    (254, 255, 180),
540    (251, 253, 202),
541    (255, 255, 233),
542    (255, 255, 255),
543];
544
545// def rgb_3_to_8(c):
546//   return int(round(c * 255 / 7))
547// print([(rgb_3_to_8((c >> 3) & 7), rgb_3_to_8((c >> 6) & 7), rgb_3_to_8(c & 7)) for c in range(512)])
548const LINEAR_PALETTE: &PcePalette = &[
549    (0, 0, 0),
550    (0, 0, 36),
551    (0, 0, 73),
552    (0, 0, 109),
553    (0, 0, 146),
554    (0, 0, 182),
555    (0, 0, 219),
556    (0, 0, 255),
557    (36, 0, 0),
558    (36, 0, 36),
559    (36, 0, 73),
560    (36, 0, 109),
561    (36, 0, 146),
562    (36, 0, 182),
563    (36, 0, 219),
564    (36, 0, 255),
565    (73, 0, 0),
566    (73, 0, 36),
567    (73, 0, 73),
568    (73, 0, 109),
569    (73, 0, 146),
570    (73, 0, 182),
571    (73, 0, 219),
572    (73, 0, 255),
573    (109, 0, 0),
574    (109, 0, 36),
575    (109, 0, 73),
576    (109, 0, 109),
577    (109, 0, 146),
578    (109, 0, 182),
579    (109, 0, 219),
580    (109, 0, 255),
581    (146, 0, 0),
582    (146, 0, 36),
583    (146, 0, 73),
584    (146, 0, 109),
585    (146, 0, 146),
586    (146, 0, 182),
587    (146, 0, 219),
588    (146, 0, 255),
589    (182, 0, 0),
590    (182, 0, 36),
591    (182, 0, 73),
592    (182, 0, 109),
593    (182, 0, 146),
594    (182, 0, 182),
595    (182, 0, 219),
596    (182, 0, 255),
597    (219, 0, 0),
598    (219, 0, 36),
599    (219, 0, 73),
600    (219, 0, 109),
601    (219, 0, 146),
602    (219, 0, 182),
603    (219, 0, 219),
604    (219, 0, 255),
605    (255, 0, 0),
606    (255, 0, 36),
607    (255, 0, 73),
608    (255, 0, 109),
609    (255, 0, 146),
610    (255, 0, 182),
611    (255, 0, 219),
612    (255, 0, 255),
613    (0, 36, 0),
614    (0, 36, 36),
615    (0, 36, 73),
616    (0, 36, 109),
617    (0, 36, 146),
618    (0, 36, 182),
619    (0, 36, 219),
620    (0, 36, 255),
621    (36, 36, 0),
622    (36, 36, 36),
623    (36, 36, 73),
624    (36, 36, 109),
625    (36, 36, 146),
626    (36, 36, 182),
627    (36, 36, 219),
628    (36, 36, 255),
629    (73, 36, 0),
630    (73, 36, 36),
631    (73, 36, 73),
632    (73, 36, 109),
633    (73, 36, 146),
634    (73, 36, 182),
635    (73, 36, 219),
636    (73, 36, 255),
637    (109, 36, 0),
638    (109, 36, 36),
639    (109, 36, 73),
640    (109, 36, 109),
641    (109, 36, 146),
642    (109, 36, 182),
643    (109, 36, 219),
644    (109, 36, 255),
645    (146, 36, 0),
646    (146, 36, 36),
647    (146, 36, 73),
648    (146, 36, 109),
649    (146, 36, 146),
650    (146, 36, 182),
651    (146, 36, 219),
652    (146, 36, 255),
653    (182, 36, 0),
654    (182, 36, 36),
655    (182, 36, 73),
656    (182, 36, 109),
657    (182, 36, 146),
658    (182, 36, 182),
659    (182, 36, 219),
660    (182, 36, 255),
661    (219, 36, 0),
662    (219, 36, 36),
663    (219, 36, 73),
664    (219, 36, 109),
665    (219, 36, 146),
666    (219, 36, 182),
667    (219, 36, 219),
668    (219, 36, 255),
669    (255, 36, 0),
670    (255, 36, 36),
671    (255, 36, 73),
672    (255, 36, 109),
673    (255, 36, 146),
674    (255, 36, 182),
675    (255, 36, 219),
676    (255, 36, 255),
677    (0, 73, 0),
678    (0, 73, 36),
679    (0, 73, 73),
680    (0, 73, 109),
681    (0, 73, 146),
682    (0, 73, 182),
683    (0, 73, 219),
684    (0, 73, 255),
685    (36, 73, 0),
686    (36, 73, 36),
687    (36, 73, 73),
688    (36, 73, 109),
689    (36, 73, 146),
690    (36, 73, 182),
691    (36, 73, 219),
692    (36, 73, 255),
693    (73, 73, 0),
694    (73, 73, 36),
695    (73, 73, 73),
696    (73, 73, 109),
697    (73, 73, 146),
698    (73, 73, 182),
699    (73, 73, 219),
700    (73, 73, 255),
701    (109, 73, 0),
702    (109, 73, 36),
703    (109, 73, 73),
704    (109, 73, 109),
705    (109, 73, 146),
706    (109, 73, 182),
707    (109, 73, 219),
708    (109, 73, 255),
709    (146, 73, 0),
710    (146, 73, 36),
711    (146, 73, 73),
712    (146, 73, 109),
713    (146, 73, 146),
714    (146, 73, 182),
715    (146, 73, 219),
716    (146, 73, 255),
717    (182, 73, 0),
718    (182, 73, 36),
719    (182, 73, 73),
720    (182, 73, 109),
721    (182, 73, 146),
722    (182, 73, 182),
723    (182, 73, 219),
724    (182, 73, 255),
725    (219, 73, 0),
726    (219, 73, 36),
727    (219, 73, 73),
728    (219, 73, 109),
729    (219, 73, 146),
730    (219, 73, 182),
731    (219, 73, 219),
732    (219, 73, 255),
733    (255, 73, 0),
734    (255, 73, 36),
735    (255, 73, 73),
736    (255, 73, 109),
737    (255, 73, 146),
738    (255, 73, 182),
739    (255, 73, 219),
740    (255, 73, 255),
741    (0, 109, 0),
742    (0, 109, 36),
743    (0, 109, 73),
744    (0, 109, 109),
745    (0, 109, 146),
746    (0, 109, 182),
747    (0, 109, 219),
748    (0, 109, 255),
749    (36, 109, 0),
750    (36, 109, 36),
751    (36, 109, 73),
752    (36, 109, 109),
753    (36, 109, 146),
754    (36, 109, 182),
755    (36, 109, 219),
756    (36, 109, 255),
757    (73, 109, 0),
758    (73, 109, 36),
759    (73, 109, 73),
760    (73, 109, 109),
761    (73, 109, 146),
762    (73, 109, 182),
763    (73, 109, 219),
764    (73, 109, 255),
765    (109, 109, 0),
766    (109, 109, 36),
767    (109, 109, 73),
768    (109, 109, 109),
769    (109, 109, 146),
770    (109, 109, 182),
771    (109, 109, 219),
772    (109, 109, 255),
773    (146, 109, 0),
774    (146, 109, 36),
775    (146, 109, 73),
776    (146, 109, 109),
777    (146, 109, 146),
778    (146, 109, 182),
779    (146, 109, 219),
780    (146, 109, 255),
781    (182, 109, 0),
782    (182, 109, 36),
783    (182, 109, 73),
784    (182, 109, 109),
785    (182, 109, 146),
786    (182, 109, 182),
787    (182, 109, 219),
788    (182, 109, 255),
789    (219, 109, 0),
790    (219, 109, 36),
791    (219, 109, 73),
792    (219, 109, 109),
793    (219, 109, 146),
794    (219, 109, 182),
795    (219, 109, 219),
796    (219, 109, 255),
797    (255, 109, 0),
798    (255, 109, 36),
799    (255, 109, 73),
800    (255, 109, 109),
801    (255, 109, 146),
802    (255, 109, 182),
803    (255, 109, 219),
804    (255, 109, 255),
805    (0, 146, 0),
806    (0, 146, 36),
807    (0, 146, 73),
808    (0, 146, 109),
809    (0, 146, 146),
810    (0, 146, 182),
811    (0, 146, 219),
812    (0, 146, 255),
813    (36, 146, 0),
814    (36, 146, 36),
815    (36, 146, 73),
816    (36, 146, 109),
817    (36, 146, 146),
818    (36, 146, 182),
819    (36, 146, 219),
820    (36, 146, 255),
821    (73, 146, 0),
822    (73, 146, 36),
823    (73, 146, 73),
824    (73, 146, 109),
825    (73, 146, 146),
826    (73, 146, 182),
827    (73, 146, 219),
828    (73, 146, 255),
829    (109, 146, 0),
830    (109, 146, 36),
831    (109, 146, 73),
832    (109, 146, 109),
833    (109, 146, 146),
834    (109, 146, 182),
835    (109, 146, 219),
836    (109, 146, 255),
837    (146, 146, 0),
838    (146, 146, 36),
839    (146, 146, 73),
840    (146, 146, 109),
841    (146, 146, 146),
842    (146, 146, 182),
843    (146, 146, 219),
844    (146, 146, 255),
845    (182, 146, 0),
846    (182, 146, 36),
847    (182, 146, 73),
848    (182, 146, 109),
849    (182, 146, 146),
850    (182, 146, 182),
851    (182, 146, 219),
852    (182, 146, 255),
853    (219, 146, 0),
854    (219, 146, 36),
855    (219, 146, 73),
856    (219, 146, 109),
857    (219, 146, 146),
858    (219, 146, 182),
859    (219, 146, 219),
860    (219, 146, 255),
861    (255, 146, 0),
862    (255, 146, 36),
863    (255, 146, 73),
864    (255, 146, 109),
865    (255, 146, 146),
866    (255, 146, 182),
867    (255, 146, 219),
868    (255, 146, 255),
869    (0, 182, 0),
870    (0, 182, 36),
871    (0, 182, 73),
872    (0, 182, 109),
873    (0, 182, 146),
874    (0, 182, 182),
875    (0, 182, 219),
876    (0, 182, 255),
877    (36, 182, 0),
878    (36, 182, 36),
879    (36, 182, 73),
880    (36, 182, 109),
881    (36, 182, 146),
882    (36, 182, 182),
883    (36, 182, 219),
884    (36, 182, 255),
885    (73, 182, 0),
886    (73, 182, 36),
887    (73, 182, 73),
888    (73, 182, 109),
889    (73, 182, 146),
890    (73, 182, 182),
891    (73, 182, 219),
892    (73, 182, 255),
893    (109, 182, 0),
894    (109, 182, 36),
895    (109, 182, 73),
896    (109, 182, 109),
897    (109, 182, 146),
898    (109, 182, 182),
899    (109, 182, 219),
900    (109, 182, 255),
901    (146, 182, 0),
902    (146, 182, 36),
903    (146, 182, 73),
904    (146, 182, 109),
905    (146, 182, 146),
906    (146, 182, 182),
907    (146, 182, 219),
908    (146, 182, 255),
909    (182, 182, 0),
910    (182, 182, 36),
911    (182, 182, 73),
912    (182, 182, 109),
913    (182, 182, 146),
914    (182, 182, 182),
915    (182, 182, 219),
916    (182, 182, 255),
917    (219, 182, 0),
918    (219, 182, 36),
919    (219, 182, 73),
920    (219, 182, 109),
921    (219, 182, 146),
922    (219, 182, 182),
923    (219, 182, 219),
924    (219, 182, 255),
925    (255, 182, 0),
926    (255, 182, 36),
927    (255, 182, 73),
928    (255, 182, 109),
929    (255, 182, 146),
930    (255, 182, 182),
931    (255, 182, 219),
932    (255, 182, 255),
933    (0, 219, 0),
934    (0, 219, 36),
935    (0, 219, 73),
936    (0, 219, 109),
937    (0, 219, 146),
938    (0, 219, 182),
939    (0, 219, 219),
940    (0, 219, 255),
941    (36, 219, 0),
942    (36, 219, 36),
943    (36, 219, 73),
944    (36, 219, 109),
945    (36, 219, 146),
946    (36, 219, 182),
947    (36, 219, 219),
948    (36, 219, 255),
949    (73, 219, 0),
950    (73, 219, 36),
951    (73, 219, 73),
952    (73, 219, 109),
953    (73, 219, 146),
954    (73, 219, 182),
955    (73, 219, 219),
956    (73, 219, 255),
957    (109, 219, 0),
958    (109, 219, 36),
959    (109, 219, 73),
960    (109, 219, 109),
961    (109, 219, 146),
962    (109, 219, 182),
963    (109, 219, 219),
964    (109, 219, 255),
965    (146, 219, 0),
966    (146, 219, 36),
967    (146, 219, 73),
968    (146, 219, 109),
969    (146, 219, 146),
970    (146, 219, 182),
971    (146, 219, 219),
972    (146, 219, 255),
973    (182, 219, 0),
974    (182, 219, 36),
975    (182, 219, 73),
976    (182, 219, 109),
977    (182, 219, 146),
978    (182, 219, 182),
979    (182, 219, 219),
980    (182, 219, 255),
981    (219, 219, 0),
982    (219, 219, 36),
983    (219, 219, 73),
984    (219, 219, 109),
985    (219, 219, 146),
986    (219, 219, 182),
987    (219, 219, 219),
988    (219, 219, 255),
989    (255, 219, 0),
990    (255, 219, 36),
991    (255, 219, 73),
992    (255, 219, 109),
993    (255, 219, 146),
994    (255, 219, 182),
995    (255, 219, 219),
996    (255, 219, 255),
997    (0, 255, 0),
998    (0, 255, 36),
999    (0, 255, 73),
1000    (0, 255, 109),
1001    (0, 255, 146),
1002    (0, 255, 182),
1003    (0, 255, 219),
1004    (0, 255, 255),
1005    (36, 255, 0),
1006    (36, 255, 36),
1007    (36, 255, 73),
1008    (36, 255, 109),
1009    (36, 255, 146),
1010    (36, 255, 182),
1011    (36, 255, 219),
1012    (36, 255, 255),
1013    (73, 255, 0),
1014    (73, 255, 36),
1015    (73, 255, 73),
1016    (73, 255, 109),
1017    (73, 255, 146),
1018    (73, 255, 182),
1019    (73, 255, 219),
1020    (73, 255, 255),
1021    (109, 255, 0),
1022    (109, 255, 36),
1023    (109, 255, 73),
1024    (109, 255, 109),
1025    (109, 255, 146),
1026    (109, 255, 182),
1027    (109, 255, 219),
1028    (109, 255, 255),
1029    (146, 255, 0),
1030    (146, 255, 36),
1031    (146, 255, 73),
1032    (146, 255, 109),
1033    (146, 255, 146),
1034    (146, 255, 182),
1035    (146, 255, 219),
1036    (146, 255, 255),
1037    (182, 255, 0),
1038    (182, 255, 36),
1039    (182, 255, 73),
1040    (182, 255, 109),
1041    (182, 255, 146),
1042    (182, 255, 182),
1043    (182, 255, 219),
1044    (182, 255, 255),
1045    (219, 255, 0),
1046    (219, 255, 36),
1047    (219, 255, 73),
1048    (219, 255, 109),
1049    (219, 255, 146),
1050    (219, 255, 182),
1051    (219, 255, 219),
1052    (219, 255, 255),
1053    (255, 255, 0),
1054    (255, 255, 36),
1055    (255, 255, 73),
1056    (255, 255, 109),
1057    (255, 255, 146),
1058    (255, 255, 182),
1059    (255, 255, 219),
1060    (255, 255, 255),
1061];