forked from prusnak/videofeedback
-
Notifications
You must be signed in to change notification settings - Fork 0
/
colormaps.py
238 lines (229 loc) · 16.6 KB
/
colormaps.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
normal = bytes([i // 3 for i in range(3 * 256)])
# taken from http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/gst/coloreffects/gstcoloreffects.c
sepia = \
"\0\0\0\0\0\0\0\0\0\0\1\0\1\1\0\1\1\0\1\1\1\2\1\1\2\2\1\3\2\1\3\2\1\3\2\1" \
"\4\3\2\4\3\2\4\3\2\6\4\2\6\4\2\6\4\2\7\5\2\7\5\3\11\6\3\11\6\3\12\7\3\13" \
"\10\3\15\10\4\16\11\4\17\11\4\21\12\4\22\13\4\22\13\5\23\14\5\24\15\5\26" \
"\16\6\31\20\6\31\21\6\32\22\7\34\22\7\35\23\7\40\24\10\40\26\10!\26\11#\30" \
"\11&\31\12&\32\12'\34\13)\34\13*\37\13,\37\13-\40\14.\"\15" "0\"\15" \
"2#\17" "" "3&\17" "4&\17" "5'\20" "8(\21" \
"9)\21:*\23<,\23=-\23A.\24A0\25B0\25C2\26D3" \
"\30H4\30H7\31K7\32K8\32L9\33M:\34P<\34Q=\35S>\37T?\37UA\40VB!XC!ZD#\\F#^" \
"G#^J$`J&bK'bM'eM(fO)gP)iQ*kS,mT-mU-nV.oX/rY0sZ2u]2v]3w^3x`4za5{c7|c8~e8\177" \
"f9\200i:\203i<\204j<\206k=\207m>\210n?\211o?\213qA\214rC\215sC\217uD\220" \
"vD\221wF\223xG\224zH\225{J\227|K\230~K\231\177L\232\200M\234\202O\235\203" \
"P\236\204Q\240\206Q\241\207S\242\210T\243\211U\245\213V\246\214X\247\215" \
"Y\250\217Y\252\220Z\253\221\\\254\223]\254\224^\255\225`\257\227a\260\230" \
"b\261\231c\262\232e\264\234e\265\235f\266\236g\267\240i\267\241i\272\242" \
"k\273\243m\274\245n\274\246o\276\247q\277\250r\300\252s\301\253u\302\254" \
"v\304\255w\305\257x\306\257z\306\261{\307\262|\310\264~\310\265\177\313\266" \
"\200\314\267\202\315\267\203\316\272\204\317\273\206\317\274\207\320\276" \
"\210\322\277\211\323\277\213\324\301\214\325\302\215\326\304\217\326\305" \
"\220\327\306\221\327\307\223\331\310\224\333\311\225\334\311\227\334\313" \
"\227\335\315\231\335\316\231\337\317\234\340\320\235\341\320\235\341\323" \
"\240\342\324\241\343\324\242\343\326\243\345\327\245\345\330\245\346\331" \
"\250\346\333\252\347\334\253\351\335\254\351\335\255\351\337\257\352\340" \
"\260\353\341\260\354\342\262\355\343\264\355\344\265\355\345\266\356\346" \
"\266\356\347\272\357\350\273\360\351\274\360\351\276\361\352\277\361\353" \
"\300\362\353\301\362\354\302\362\355\304\362\356\305\364\357\305\364\357" \
"\310\364\360\311\365\361\313\365\361\314\366\362\315\366\362\316\366\363" \
"\316\367\364\320\367\364\320\367\365\324\367\365\324\370\366\326\370\366" \
"\327\371\366\330\371\367\331\371\367\333\371\370\333\372\370\336\372\370" \
"\336\372\371\340\373\371\341\373\372\342\373\372\343\374\372\344\374\373" \
"\344\374\373\347\374\374\350\375\374\351\375\374\351\375\374\352\375\375" \
"\352\376\375\353\376\376\355\376\376\356\376\376\357\377\377\357" \
.encode()
heat = \
"\0\0\0\0\0\0\0\1\0\0\1\0\0\1\1\0\2\1\0\2\1\1\2\1\1\2\2\1\2\2\1\3\2\1\3\3" \
"\1\3\3\1\4\3\1\4\4\1\5\4\1\5\5\2\5\6\2\6\6\2\6\7\2\6\7\2\7\7\2\7\11\2\10" \
"\11\2\10\12\3\11\13\3\11\13\3\11\14\3\12\15\3\12\17\3\13\17\3\14\20\3\14" \
"\22\4\15\23\4\16\24\4\16\26\4\16\27\4\17\31\4\20\34\4\21\34\5\21\40\5\22" \
"\40\5\22$\5\23$\5\25&\6\25(\6\26-\6\26-\6\27" "0\6\31" "2\7\31" \
"5\7\32;\7\34" \
";\7\34?\10\35C\10\36G\10\37L\10\40V\11!V\11\"[\11$a\11&l\12&l\12'r\12(~\13" \
"*~\13,\204\14,\213\14.\221\14/\227\14" "1\236\15" "2\244\15" "4\252\15" \
"5\260" "\16" "7\267\16" \
"8\275\17:\302\17;\310\17=\323\20?\323\21@\330\21D\335\21D" \
"\342\22E\346\22I\353\23I\356\23K\362\24M\365\24N\370\25P\372\26R\374\26T" \
"\376\26V\377\27X\377\27Z\377\30\\\376\31`\376\31`\375\32b\373\32d\371\33" \
"f\366\34j\363\34j\360\35l\354\36n\350\36r\344\37r\337\40t\333\40w\326!y\321" \
"\"|\314#~\307$\201\301$\204\267%\207\267&\212\261'\214\254(\217\247(\222" \
"\241)\226\234*\231\227+\234\222,\237\216-\242\211.\245\205/\251\2010\254" \
"}1\257z2\262w3\266t4\271p5\274m6\277j7\302f8\305c9\310`:\314\\;\317Y<\321" \
"V>\324S?\327P@\332LA\335IB\337FC\342CE\344@F\347=G\351;I\3538I\3558M\357" \
"3P\3610S\363.V\365+Y\366)\\\370'`\371%d\372#g\373\"l\374\40p\374\37t\374" \
"\35t\375\34}\376\33\202\376\32\202\375\31\213\375\30\220\375\27\225\375\27" \
"\232\373\26\237\372\25\244\371\24\251\370\23\256\367\23\262\367\22\267\364" \
"\21\274\362\20\300\361\20\305\357\17\311\355\16\311\353\16\322\351\15\326" \
"\346\15\332\346\14\336\344\14\341\337\13\341\335\13\350\332\12\353\330\11" \
"\356\330\11\360\322\10\362\320\10\364\320\10\364\312\7\366\307\7\366\304" \
"\7\367\302\6\367\277\6\370\274\5\367\271\5\367\271\5\367\263\4\365\260\4" \
"\364\255\4\363\253\3\362\250\3\361\245\3\360\242\3\357\240\3\357\235\2\355" \
"\232\2\355\227\2\354\225\2\353\221\1\353\216\1\353\216\1\353\213\1\353\204" \
"\1\353\201\1\354}\1\354y\0\354v\0\355r\0\355n\0\355j\0\356f\0\356b\0\357" \
"_\0\357[\0\357W\0\357S\0\360O\0\360O\0\361K\0\361C\0\362@\0\363<\0\3638\0" \
"\3648\0\3641\0\365.\0\366+\0\366'\0\367'\0\370!\0\370\36\0\370\33\0\371\30" \
"\0\371\26\0\373\26\0\373\23\0\374\15\0\374\13\0\375\10\0\375\5\0\376\3\0" \
.encode()
xray = \
"\377\377\377\377\377\377\376\376\376\375\375\376\374\375\375\373\374\375" \
"\372\374\374\371\374\374\370\373\373\366\373\372\366\372\372\365\372\371" \
"\363\371\371\363\371\370\362\370\370\360\370\367\360\367\366\357\367\365" \
"\356\366\365\355\366\364\353\365\363\353\365\363\352\364\362\351\363\362" \
"\347\363\361\346\362\361\345\362\361\344\362\360\343\361\357\343\361\356" \
"\342\360\356\341\360\356\340\357\355\336\356\354\336\356\354\335\355\353" \
"\334\355\353\333\355\352\331\354\351\331\353\351\330\353\350\327\353\350" \
"\325\352\347\325\351\347\324\350\346\323\350\345\322\347\344\321\347\344" \
"\320\347\344\317\346\343\316\346\342\315\345\341\314\344\341\313\344\340" \
"\312\344\340\311\343\337\310\342\337\307\342\335\306\341\335\305\341\335" \
"\303\340\334\303\337\333\302\337\333\301\337\332\300\336\331\276\335\331" \
"\276\334\330\274\334\330\274\334\327\273\333\327\272\333\326\271\332\325" \
"\270\332\325\267\331\324\266\330\323\265\330\323\264\327\322\263\327\321" \
"\262\326\320\261\325\320\257\325\317\257\324\317\256\324\316\254\323\315" \
"\254\322\315\253\322\314\252\321\313\251\321\313\250\320\312\246\317\311" \
"\245\317\311\245\316\310\244\316\307\243\315\307\242\314\306\241\314\305" \
"\240\312\305\237\312\304\236\312\303\235\311\303\234\311\302\233\307\301" \
"\232\307\300\231\307\300\230\306\277\227\305\276\226\305\276\225\304\275" \
"\224\303\274\223\303\273\222\302\273\221\301\272\220\301\271\217\300\270" \
"\216\277\270\215\277\267\214\276\266\213\275\265\212\275\265\211\274\264" \
"\210\273\263\207\273\262\206\272\262\205\271\261\204\270\260\203\270\257" \
"\202\267\257\201\266\256\200\266\255\177\265\254~\264\253}\263\253|\263\252" \
"{\262\251z\261\250y\260\247x\260\247w\257\246v\256\245u\255\244t\255\243" \
"s\254\243r\253\242q\252\241p\252\240o\251\237n\250\236m\247\235l\246\235" \
"l\246\235j\245\233i\244\232h\243\231g\242\230f\242\227e\241\226d\240\226" \
"c\237\225b\236\224a\235\223`\234\222_\234\221_\233\220]\232\217\\\231\216" \
"\\\230\215Z\227\214Y\226\214X\226\213W\225\212V\224\211U\223\210T\222\207" \
"S\221\206R\221\205Q\217\204P\216\203O\215\202N\215\201M\214\200M\213\177" \
"K\212~J\211}I\211|H\210|G\206zG\205zE\204xD\203vC\203vB\201tA\200s@\200q" \
"@~p>}o>|o<{l<yk;xi9wh8wg8te6sd5qd4pa3n_2m]1k\\0j\\0hY.fW-dU,cT+aR*_P)_O(" \
"]M'YK'XI%VI$TF$RD\"OB!M@\40K?\37I=\37G=\35E9\34C9\34A5\33>5\31<2\31<0\27" \
":.\27" "5,\26" "3*\24" \
"1*\23.&\22.&\22*\"\21'\40\17%\36\16\"\34\15\"\32\14" \
"\36\32\13\33\26\13\31\24\11\26\22\11\24\20\7\24\16\6\21\16\5\14\14\4\12\10" \
"\3\7\6\3\5\4\1\2\2" \
.encode()
xray = b''.join([xray[i:i + 3] for i in range(len(xray) - 3, -1, -3)])
xpro = \
"\0\0\37\0\0\37\0\1\40\0\2!\0\2\"\0\3\"\1\4%\1\4%\1\5%\1\5'\1\7'\1\7(\1\7" \
"(\1\10*\1\11+\1\11,\1\12,\1\13/\1\14/\1\14" "1\2\15" "1\2\15" "1\2\16" \
"4\2\17" "" "4\3\17" "5\3\22" "7\3\22" "7\3\23" "8\3\24" \
"9\3\25;\3\26;\3\27<\3\27=\4\31" \
"=\4\33?\4\34@\5\34B\5\35C\5\36D\5\40D\5\40G\5!G\6\"H\6$H\7&J\7&K\7*M\7*M" \
"\10+N\10-P\11-P\11/R\11" "3R\11" "3T\12" "4U\12" "5U\13" "7W\14" "8Y\14" \
"9Y\14" \
"<Y\16=[\16@^\16@^\17C^\17D`\20F`\20Jb\22Jb\22Kc\23Me\24Nf\25Qg\26Rg\27Ti" \
"\27Wj\30Xl\31Yl\33\\m\34^p\35`p\40bp\40fq!fr$gt$lt%lu'mv(px*qy-ty/uz/x|0" \
"y}3|}4}~5\177\2018\203\2019\203\201;\204\202=\207\203?\210\204@\214\204C" \
"\214\206D\216\207G\217\210H\223\211K\223\211M\225\212P\226\214Q\231\215T" \
"\232\215U\234\216X\235\217Y\240\220\\\241\220^\243\221`\244\223b\246\224" \
"e\250\224f\252\225i\253\226l\255\227m\256\231p\261\231q\262\232t\264\233" \
"v\265\234x\267\234z\270\235|\271\236~\274\240\201\275\240\202\277\241\204" \
"\300\242\207\302\243\210\303\243\212\305\244\214\306\245\216\307\246\220" \
"\311\250\221\313\250\224\315\251\226\316\252\227\317\253\232\321\253\234" \
"\322\254\235\323\255\240\325\256\242\326\256\242\330\256\245\331\261\250" \
"\331\262\251\332\262\253\334\263\255\335\264\256\336\265\261\340\266\263" \
"\341\266\264\342\267\266\343\270\270\344\271\271\344\271\271\346\273\276" \
"\347\274\277\350\275\277\351\275\302\352\276\304\353\277\306\353\300\307" \
"\355\300\311\356\301\314\356\302\315\357\303\317\360\304\320\360\304\322" \
"\361\305\323\362\306\325\362\307\327\363\307\330\363\310\330\364\311\333" \
"\364\313\334\365\313\336\365\314\340\365\314\342\366\316\342\366\316\346" \
"\367\317\347\367\320\351\367\320\353\370\322\354\370\322\356\370\323\356" \
"\370\324\360\371\325\360\371\325\363\371\326\363\371\327\363\372\330\365" \
"\372\330\366\372\331\366\372\331\370\372\332\371\373\332\371\373\333\372" \
"\373\334\373\373\335\373\373\336\374\373\336\374\374\337\374\374\340\375" \
"\374\341\375\374\341\376\374\342\376\374\343\376\374\344\376\374\344\377" \
"\374\345\377\374\346\377\375\346\377\375\346\377\375\347\377\375\350\377" \
"\375\351\377\375\352\377\375\352\377\375\352\377\375\353\377\375\353\377" \
"\376\354\377\376\354\377\376\356\377\376\356\377\376\356\377\376\357\377" \
"\376\360\377\376\360\377\376\360\377\376\360\377\376\362\377\376\362\377" \
"\376\363\377\376\363\377\376\363\377\376\363\377\376\364\377\376\364\377" \
"\376\365\377\377\365\377\377\366\377\377\366\377\377\366\377\377\367\377" \
"\377\367\377\377\367\377\377\370" \
.encode()
yellowblue = \
"\0\0\377\1\1\376\2\2\375\3\3\374\4\4\373\5\5\372\6\6\371\7\7\370\10\10\367" \
"\11\11\367\12\12\365\13\13\364\14\14\363\15\14\362\16\16\361\17\17\360\20" \
"\20\357\20\21\356\22\22\355\23\23\354\24\24\354\24\25\352\26\26\351\27\27" \
"\350\27\30\347\31\31\346\32\32\345\33\32\344\34\34\343\34\34\342\36\36\341" \
"\37\36\340\40\40\337!!\336!!\335##\334$#\334%%\332&%\331'&\330((\327()\326" \
"*)\325++\324,,\323--\322..\321//\320/0\31711\31722\31522\31444\31445\313" \
"55\31276\31188\30799\3069:\305;;\305<<\304==\302>>\301>>\300@@\300@A\276" \
"AB\275BC\274CD\273DE\272EE\272FF\270HH\270HI\266IJ\265KK\264KL\263MM\262" \
"NN\262NN\261OO\257QP\256RQ\256RR\254TT\253UU\253VU\251VW\250XX\247XY\246" \
"YZ\245[[\245[[\243]]\243^^\242^_\240_`\237`a\236aa\235bb\235dc\233de\233" \
"ff\232gf\231hg\230hi\227ji\226kj\225lk\223lm\223nm\222nn\221op\217qq\216" \
"rr\215ss\214st\213uu\213uu\211wv\210ww\207xx\207yz\205z{\205{{\204||\203" \
"}}\202\177~\201\177\200\177\200\201\177\202\202~\203\202|\204\203|\204\204" \
"{\205\206z\207\206x\207\207w\211\210w\211\211v\212\212u\213\214s\214\214" \
"r\215\215r\216\217q\217\217p\221\220o\221\222n\223\222l\224\223k\224\224" \
"k\225\225j\226\226i\227\227h\230\231f\231\231f\233\232e\233\233c\234\234" \
"c\235\235b\236\236a\237\237`\241\240_\242\241^\242\242]\243\244\\\244\244" \
"[\245\245Y\246\246Y\250\247X\250\250W\251\251V\252\252T\253\253T\254\255" \
"S\256\255R\257\256Q\257\260P\260\261O\261\261N\262\262M\263\263L\264\265" \
"K\265\265J\266\266I\267\270H\270\270G\271\271F\272\272E\273\273C\274\274" \
"B\275\275B\276\276A\277\277@\300\300?\301\301>\302\302=\303\303<\304\304" \
";\305\305:\306\3069\307\3078\310\3107\311\3116\312\3125\313\3134\314\314" \
"3\315\3152\316\3161\317\3170\320\320/\321\321.\322\322-\323\323,\323\324" \
"+\325\325*\326\326)\327\327(\330\330'\331\331&\332\331%\333\332$\334\334" \
"#\334\335\"\336\336!\337\337\40\340\340\37\341\341\36\342\342\35\343\343" \
"\34\344\344\33\345\345\32\345\346\31\347\347\30\350\350\27\351\351\26\352" \
"\352\25\353\353\24\354\354\23\354\355\22\356\356\21\357\357\20\360\360\17" \
"\361\361\16\362\362\15\363\362\14\364\364\13\365\365\12\365\366\11\367\367" \
"\11\370\370\7\371\371\6\372\371\5\373\373\4\374\374\4\375\375\3\375\376\1" \
.encode()
# exported from GIMP gradients
fire = \
"\0\0\0\1\0\0\2\0\0\2\0\0\3\0\0\4\0\0\5\0\0\6\0\0\6\0\0\7\0\0\10\0\0\11\0" \
"\0\12\0\0\13\0\0\13\0\0\14\0\0\14\0\0\16\0\0\17\0\0\17\0\0\20\0\0\20\0\0" \
"\22\0\0\22\0\0\23\0\0\23\0\0\25\0\0\25\0\0\26\0\0\27\0\0\30\0\0\31\0\0\31" \
"\0\0\32\0\0\32\0\0\34\0\0\34\0\0\35\0\0\36\0\0\37\0\0\40\0\0\40\0\0\"\0\0" \
"\"\0\0#\0\0$\0\0%\0\0%\0\0&\0\0'\0\0(\0\0(\0\0)\0\0*\0\0*\0\0,\0\0,\0\0-" \
"\0\0-\0\0/\0\0""0\0\0""0\0\0""1\0\0""2\0\0""3\0\0""3\0\0""4\0\0""5\0\0""6" \
"\0\0""7\0\0""8\0\0""9\0\0""9\0\0:\0\0:\0\0<\0\0<\0\0=\0\0>\0\0>\0\0@\0\0" \
"@\0\0@\0\0B\0\0C\0\0C\0\0D\0\0D\0\0F\0\0F\0\0G\0\0H\0\0H\0\0J\0\0J\0\0K\0" \
"\0K\0\0L\0\0M\0\0N\0\0O\0\0P\0\0Q\0\0R\0\0S\0\0S\0\0T\0\0U\0\0V\0\0V\0\0" \
"W\0\0X\0\0Y\0\0Y\0\0Z\0\0[\0\0[\0\0]\0\0^\0\0a\0\0c\0\0f\0\0i\0\0k\0\0n\0" \
"\0q\0\0t\0\0v\0\0y\0\0|\0\0~\0\0\201\0\0\204\0\0\207\0\0\211\0\0\214\0\0" \
"\217\0\0\222\0\0\224\0\0\227\0\0\231\0\0\234\0\0\237\0\0\242\0\0\244\0\0" \
"\247\0\0\252\0\0\255\0\0\257\0\0\261\0\0\264\0\0\267\0\0\272\0\0\273\2\1" \
"\275\6\2\276\11\4\300\15\4\302\20\6\303\23\6\305\26\10\306\31\12\310\34\12" \
"\311\40\14\314$\15\315&\16\317*\20\320-\20\3220\21\3233\23\3257\23\327:\25" \
"\331>\26\332A\27\334D\31\335F\31\336I\32\337K\33\341M\34\341O\34\342Q\35" \
"\343R\35\344U\36\345W\40\347Y\40\347\\!\350]\"\351_\"\352a#\353c$\355f$\356" \
"g%\357j&\357l'\360m'\361p(\362q)\363t*\365v*\365x+\367z,\370|-\371~.\372" \
"\200.\372\203.\373\204/\375\2060\375\2101\376\2122\377\2161\376\223/\377" \
"\227.\376\234-\376\240+\375\245*\374\251)\375\256'\375\262&\374\267%\373" \
"\274#\374\300\"\373\304!\373\310\37\372\314\36\372\320\34\372\324\33\372" \
"\330\32\371\335\30\371\341\30\370\345\27\370\352\25\370\355\24\370\360\30" \
"\370\360\37\370\360'\370\360/\370\3617\370\361?\370\361G\371\361O\370\362" \
"V\370\362_\370\362f\371\362m\370\363u\370\363|\371\363\204\370\364\213\371" \
"\365\222\371\364\231\370\365\241\371\366\250\371\366\257\370\366\267\371" \
"\366\276\370\367\306\371\367\315" \
.encode()
sea = \
"\0\3+\1\3+\0\3,\0\3+\1\3,\1\4,\1\5-\1\5-\2\5.\2\6.\2\6/\2\6/\2\6/\2\7/\2" \
"\7""0\2\10""1\3\10""1\3\10""1\3\11""1\3\11""2\3\11""2\3\11""2\3\11""3\3" \
"\12""3\3\12""4\4\12""4\4\13""5\4\13""5\4\14""6\5\14""6\5\15""6\5\14""7\5" \
"\15""7\5\15""7\5\15""7\6\16""8\6\16""8\6\17""9\6\17""9\6\17:\6\20;\7\17;\6\20" \
";\7\21;\6\20<\7\21<\7\21<\7\21=\10\22=\10\22>\10\23>\10\23>\10\23>\10\24" \
"?\10\24?\10\25@\11\24@\11\25A\11\25A\11\25A\11\26B\11\26B\11\27B\11\27C\12" \
"\30D\12\27C\12\30E\13\30D\12\30E\13\30F\13\31F\13\31F\13\32G\13\32G\13\32" \
"G\13\33G\14\33H\14\34H\14\34I\14\34I\14\35J\15\35J\15\35K\15\35K\15\36K\16" \
"\36L\15\37L\15\37L\16\40L\16\37M\15\40M\16\40N\16\40N\16!N\16!P\17!O\17\"" \
"P\17\"P\17\"Q\17#R\17#Q\20#R\17#R\20$S\20%S\20$S\21%T\20%T\21%U\21&U\21&" \
"V\21&V\21'V\21'W\21'W\21(W\22(W\22(X\22)X\22)X\22*Z\23)Z\22*Z\23+[\23*[\23" \
"+\\\24,\\\23+\\\23,\\\24,]\24-]\24-^\24-^\25.^\24._\25._\25/_\25/_\25/a" \
"\26""0a\26""0a\25""1b\25""1b\26""1c\26""2c\26""1c\27""2d\26""2d\27""2d\27""3" \
"e\30""4f\30""6h\30""7i\31""7j\31""8k\32:l\33:n\33;n\33=p\34=q\34?r\35@s\35" \
"@t\36Bv\36Bw\36Dy\37Ey\40F{!G|!H}!I~\"J\200\"K\201#L\203#M\204$N\205$P\206" \
"$P\207%R\211&S\212&S\213'T\215'U\216'V\217(W\220)X\221)Z\223)Z\224*[\225" \
"+]\226+]\230,_\230,_\231,`\233-b\234-c\235-d\237-f\241,i\242+k\243*n\244" \
")p\246)r\250(u\250'v\252'y\253&{\255&~\257%\200\260$\203\261#\205\262#\210" \
"\263\"\211\265!\214\267!\217\270\37\221\272\37\223\273\37\225\274\36\230" \
"\276\35\232\277\34\234\301\34\237\302\33\241\303\32\243\305\32\246\307\31" \
"\250\310\30\252\310\27\254\313\27\257\314\25\261\315\25\264\317\24\266\321" \
"\23\272\322\23\274\324\21\277\325\21\301\326\20\304\330\17\306\332\17\311" \
"\334\16\314\335\15\316\337\14\321\340\14\324\342\12\326\344\12\330\344\11" \
"\332\346\7\335\350\7\340\351\6\342\352\6\345\355\5\347\356\4\352\357\3\355" \
"\361\2\360\362\2\362\364\0\364\366" \
.encode()