diff --git a/16col/adf.coffee b/16col/adf.coffee deleted file mode 100644 index 937295b..0000000 --- a/16col/adf.coffee +++ /dev/null @@ -1,44 +0,0 @@ -class @ImageTextModeADF extends @ImageTextMode - - COLOR_INDEX = [ 0, 1, 2, 3, 4, 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63 ] - - constructor: ( options ) -> - super - @header = { version: 0 } - this[k] = v for own k, v of options - - parse: ( content ) -> - @header.version = @getByteAt( content, 0 ) - @parsePaletteData( content.substr( 1, 192 ) ) - @parseFontData( content.substr( 193, 4096 ) ) - - x = 0 - y = 0 - @screen[ y ] = [] - - for i in [ 4289 .. content.length - 2 ] by 2 - ch = content.substr( i, 1 ) - break if ch == "\x1a" - attr = @getByteAt( content, i + 1 ) - @screen[ y ][ x ] = { 'ch': ch, 'attr': attr } - x++ - if x == 80 - x = 0 - y++ - @screen[ y ] = [] - - @screen.pop() if @screen[ y ].length == 0 - - parsePaletteData: ( data ) -> - colors = [] - for i in COLOR_INDEX - j = i * 3 - r = @getByteAt( data, j ) - r = r << 2 | r >> 4 - g = @getByteAt( data, j + 1 ) - g = g << 2 | g >> 4 - b = @getByteAt( data, j + 2 ) - b = b << 2 | b >> 4 - colors.push [ r, g, b ] - - @palette = new ImageTextModePalette( { colors: colors } ) diff --git a/16col/adf.js b/16col/adf.js deleted file mode 100644 index e7b0eea..0000000 --- a/16col/adf.js +++ /dev/null @@ -1,79 +0,0 @@ -// Generated by CoffeeScript 1.7.1 -(function() { - var __hasProp = {}.hasOwnProperty, - __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; - - this.ImageTextModeADF = (function(_super) { - var COLOR_INDEX; - - __extends(ImageTextModeADF, _super); - - COLOR_INDEX = [0, 1, 2, 3, 4, 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63]; - - function ImageTextModeADF(options) { - var k, v; - ImageTextModeADF.__super__.constructor.apply(this, arguments); - this.header = { - version: 0 - }; - for (k in options) { - if (!__hasProp.call(options, k)) continue; - v = options[k]; - this[k] = v; - } - } - - ImageTextModeADF.prototype.parse = function(content) { - var attr, ch, i, x, y, _i, _ref; - this.header.version = this.getByteAt(content, 0); - this.parsePaletteData(content.substr(1, 192)); - this.parseFontData(content.substr(193, 4096)); - x = 0; - y = 0; - this.screen[y] = []; - for (i = _i = 4289, _ref = content.length - 2; _i <= _ref; i = _i += 2) { - ch = content.substr(i, 1); - if (ch === "\x1a") { - break; - } - attr = this.getByteAt(content, i + 1); - this.screen[y][x] = { - 'ch': ch, - 'attr': attr - }; - x++; - if (x === 80) { - x = 0; - y++; - this.screen[y] = []; - } - } - if (this.screen[y].length === 0) { - return this.screen.pop(); - } - }; - - ImageTextModeADF.prototype.parsePaletteData = function(data) { - var b, colors, g, i, j, r, _i, _len; - colors = []; - for (_i = 0, _len = COLOR_INDEX.length; _i < _len; _i++) { - i = COLOR_INDEX[_i]; - j = i * 3; - r = this.getByteAt(data, j); - r = r << 2 | r >> 4; - g = this.getByteAt(data, j + 1); - g = g << 2 | g >> 4; - b = this.getByteAt(data, j + 2); - b = b << 2 | b >> 4; - colors.push([r, g, b]); - } - return this.palette = new ImageTextModePalette({ - colors: colors - }); - }; - - return ImageTextModeADF; - - })(this.ImageTextMode); - -}).call(this); diff --git a/16col/ansi.coffee b/16col/ansi.coffee deleted file mode 100644 index bd479b6..0000000 --- a/16col/ansi.coffee +++ /dev/null @@ -1,179 +0,0 @@ - -class @ImageTextModeANSI extends @ImageTextMode - constructor: ( options ) -> - super @screen - super @font - @palette = new ImageTextModePaletteANSI - @tabstop = 8 - @linewrap = 80 - @[k] = v for own k, v of options - - ANSI_ESC = String.fromCharCode(0x1b) - ANSI_CSI = ANSI_ESC + '[' - ANSI_TEXT_PROP = 'm' - ANSI_RESET = '0' - ANSI_FG = '3' - ANSI_BG = '4' - ANSI_FG_INTENSE = '9' - ANSI_BG_INTENSE = '10' - ANSI_CUR_DOWN = 'B' - ANSI_SEP = ';' - ANSI_RETURN = 'A' - -# not going to mess with this for now, as I think it is the 'write' code -# for the actual ansi editor. That would be bad to mess up. -# did redo the for loops to read nicer tho. - - write: -> - content = "#{ ANSI_CSI }2J" # initiate document - for y in [0...@screen.length] - content += "\n" if !@screen[y]? - continue if !@screen[y]? - for x in [0...@getWidth()] - pixel = @screen[y][x] - if !pixel? - pixel = { ch: ' ', attr: 7 } - attr = @gen_args(pixel.attr) - if (attr != prevattr) - content += "#{ANSI_CSI}0;#{attr}#{ANSI_TEXT_PROP}" - prevattr = attr - content += if pixel.ch? then pixel.ch else ' ' - max_x = x - content += "#{ ANSI_CSI }0m" - @toBinaryArray(content) - - gen_args: ( attr ) -> - fg = 30 + ( attr & 7 ) - bg = 40 + ( ( attr & 112 ) >> 4) - bl = if attr & 128 then 5 else '' - intense = if attr & 8 then 1 else '' - -# um why do we make this attrs variable and not use it? - - attrs = a for a in [fg, bg, bl, intense] when a != '' - return [fg, bg, bl, intense].join(";") - - parse: ( content ) -> - @screen = [] - @state = 0 - @x = 0 - @y = 0 - @save_x = 0 - @save_y = 0 - @attr = 7 - @argbuf = '' - - content = content.split( '' ) - while ch = content.shift() - if @state is 0 - switch ch - when "\x1a" then @state = 3 - when "\x1b" then @state = 1 - when "\n" - @x = 0 - @y++ - when "\r" then break - when "\t" - i = ( @x + 1 ) % @tabstop - @putpixel ' ' while i-- > 0 - else - @putpixel ch - - else if @state is 1 - if ch isnt "[" - @putpixel "\x1b" - @putpixel "[" - @state = 0 - else - @state = 2 - - else if @state is 2 - if ch.match( '[A-Za-z]' ) - args = ( parseInt( i ) for i in @argbuf.split ';' ) - - switch ch - when "m" - for arg in args - if arg is 0 - @attr = 7 - else if arg is 1 - @attr |= 8 - else if arg is 5 - @attr |= 128 - else if 30 <= arg <= 37 - @attr &= 248 - @attr |= ( arg - 30 ) - else if 40 <= arg <= 47 - @attr &= 143 - @attr |= ( arg - 40 ) << 4 - - when "H", "f" - @y = ( args[ 0 ] or 1 ) - 1 - @x = ( args[ 1 ] or 1 ) - 1 - @y = 0 if @y < 0 - @x = 0 if @x < 0 - when "A" - @y -= args[ 0 ] or 1 - @y = 0 if @y < 0 - when "B" - @y += args[ 0 ] or 1 - when "C" - @x += args[ 0 ] or 1 - when "D" - @x -= args[ 0 ] or 1 - @x = 0 if @x < 0 - when "E" - @y += args[ 0 ] or 1 - @x = 0 - when "F" - @y -= args[ 0 ] or 1 - @y = 0 if @y > 0 - @x = 0 - when "G" - @x = ( args[ 0 ] or 1 ) - 1 - when "s" - @save_x = @x - @save_y = @y - when "u" - @x = @save_x - @y = @save_y - when "J" - if args.length is 0 or args[ 0 ] is 0 - @screen[ i ] = null for i in [ @y + 1 .. screen.length - 1 ] - @screen[ @y ][ i ] = null for i in [ @x .. screen[ @y ].length - 1 ] - else if args[ 0 ] is 1 - @screen[ i ] = null for i in [ 0 .. @y - 1 ] - @screen[ @y ][ i ] = null for i in [ 0 .. @x ] - else if args[ 0 ] is 2 - @x = 0 - @y = 0 - @screen = [] - when "K" - if args.length is 0 or args[ 0 ] is 0 - @screen[ @y ][ i ] = null for i in [ @x .. @screen[ @y ].length - 1 ] - else if args[ 0 ] is 1 - @screen[ @y ][ i ] = null for i in [ 0 .. @x ] - else if args[ 0 ] is 2 - @screen[ @y ] = null - - @argbuf = '' - @state = 0 - - else - @argbuf += ch - - else if @state is 3 - break - - else - @state = 0 - - - putpixel: ( ch ) -> - @screen[ @y ] = [] if !@screen[ @y ]? - @screen[ @y ][ @x ] = { ch: ch, attr: @attr } - - if ++@x >= @linewrap - @x = 0 - @y++ - diff --git a/16col/ansi.js b/16col/ansi.js deleted file mode 100644 index 709ee43..0000000 --- a/16col/ansi.js +++ /dev/null @@ -1,266 +0,0 @@ -// Generated by CoffeeScript 1.7.1 -(function() { - var ANSI_BG, ANSI_BG_INTENSE, ANSI_CSI, ANSI_CUR_DOWN, ANSI_ESC, ANSI_FG, ANSI_FG_INTENSE, ANSI_RESET, ANSI_RETURN, ANSI_SEP, ANSI_TEXT_PROP; - - ANSI_ESC = String.fromCharCode(0x1b); - - ANSI_CSI = ANSI_ESC + '['; - - ANSI_TEXT_PROP = 'm'; - - ANSI_RESET = '0'; - - ANSI_FG = '3'; - - ANSI_BG = '4'; - - ANSI_FG_INTENSE = '9'; - - ANSI_BG_INTENSE = '10'; - - ANSI_CUR_DOWN = 'B'; - - ANSI_SEP = ';'; - - ANSI_RETURN = 'A'; - - ({ - write: function() { - var attr, content, max_x, pixel, prevattr, x, y, _i, _j, _ref, _ref1; - content = "" + ANSI_CSI + "2J"; - for (y = _i = 0, _ref = this.screen.length; 0 <= _ref ? _i < _ref : _i > _ref; y = 0 <= _ref ? ++_i : --_i) { - if (this.screen[y] == null) { - content += "\n"; - } - if (this.screen[y] == null) { - continue; - } - for (x = _j = 0, _ref1 = this.getWidth(); 0 <= _ref1 ? _j < _ref1 : _j > _ref1; x = 0 <= _ref1 ? ++_j : --_j) { - pixel = this.screen[y][x]; - if (pixel == null) { - pixel = { - ch: ' ', - attr: 7 - }; - } - attr = this.gen_args(pixel.attr); - if (attr !== prevattr) { - content += "" + ANSI_CSI + "0;" + attr + ANSI_TEXT_PROP; - prevattr = attr; - } - content += pixel.ch != null ? pixel.ch : ' '; - max_x = x; - } - } - content += "" + ANSI_CSI + "0m"; - return this.toBinaryArray(content); - }, - gen_args: function(attr) { - var a, attrs, bg, bl, fg, intense, _i, _len, _ref; - fg = 30 + (attr & 7); - bg = 40 + ((attr & 112) >> 4); - bl = attr & 128 ? 5 : ''; - intense = attr & 8 ? 1 : ''; - _ref = [fg, bg, bl, intense]; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - a = _ref[_i]; - if (a !== '') { - attrs = a; - } - } - return [fg, bg, bl, intense].join(";"); - }, - parse: function(content) { - var arg, args, ch, i, _i, _j, _k, _l, _len, _m, _n, _o, _ref, _ref1, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8, _results; - this.screen = []; - this.state = 0; - this.x = 0; - this.y = 0; - this.save_x = 0; - this.save_y = 0; - this.attr = 7; - this.argbuf = ''; - content = content.split(''); - _results = []; - while (ch = content.shift()) { - if (this.state === 0) { - switch (ch) { - case "\x1a": - _results.push(this.state = 3); - break; - case "\x1b": - _results.push(this.state = 1); - break; - case "\n": - this.x = 0; - _results.push(this.y++); - break; - case "\r": - break; - case "\t": - i = (this.x + 1) % this.tabstop; - _results.push((function() { - var _results1; - _results1 = []; - while (i-- > 0) { - _results1.push(this.putpixel(' ')); - } - return _results1; - }).call(this)); - break; - default: - _results.push(this.putpixel(ch)); - } - } else if (this.state === 1) { - if (ch !== "[") { - this.putpixel("\x1b"); - this.putpixel("["); - _results.push(this.state = 0); - } else { - _results.push(this.state = 2); - } - } else if (this.state === 2) { - if (ch.match('[A-Za-z]')) { - args = (function() { - var _i, _len, _ref, _results1; - _ref = this.argbuf.split(';'); - _results1 = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - i = _ref[_i]; - _results1.push(parseInt(i)); - } - return _results1; - }).call(this); - switch (ch) { - case "m": - for (_i = 0, _len = args.length; _i < _len; _i++) { - arg = args[_i]; - if (arg === 0) { - this.attr = 7; - } else if (arg === 1) { - this.attr |= 8; - } else if (arg === 5) { - this.attr |= 128; - } else if ((30 <= arg && arg <= 37)) { - this.attr &= 248; - this.attr |= arg - 30; - } else if ((40 <= arg && arg <= 47)) { - this.attr &= 143; - this.attr |= (arg - 40) << 4; - } - } - break; - case "H": - case "f": - this.y = (args[0] || 1) - 1; - this.x = (args[1] || 1) - 1; - if (this.y < 0) { - this.y = 0; - } - if (this.x < 0) { - this.x = 0; - } - break; - case "A": - this.y -= args[0] || 1; - if (this.y < 0) { - this.y = 0; - } - break; - case "B": - this.y += args[0] || 1; - break; - case "C": - this.x += args[0] || 1; - break; - case "D": - this.x -= args[0] || 1; - if (this.x < 0) { - this.x = 0; - } - break; - case "E": - this.y += args[0] || 1; - this.x = 0; - break; - case "F": - this.y -= args[0] || 1; - if (this.y > 0) { - this.y = 0; - } - this.x = 0; - break; - case "G": - this.x = (args[0] || 1) - 1; - break; - case "s": - this.save_x = this.x; - this.save_y = this.y; - break; - case "u": - this.x = this.save_x; - this.y = this.save_y; - break; - case "J": - if (args.length === 0 || args[0] === 0) { - for (i = _j = _ref = this.y + 1, _ref1 = screen.length - 1; _ref <= _ref1 ? _j <= _ref1 : _j >= _ref1; i = _ref <= _ref1 ? ++_j : --_j) { - this.screen[i] = null; - } - for (i = _k = _ref2 = this.x, _ref3 = screen[this.y].length - 1; _ref2 <= _ref3 ? _k <= _ref3 : _k >= _ref3; i = _ref2 <= _ref3 ? ++_k : --_k) { - this.screen[this.y][i] = null; - } - } else if (args[0] === 1) { - for (i = _l = 0, _ref4 = this.y - 1; 0 <= _ref4 ? _l <= _ref4 : _l >= _ref4; i = 0 <= _ref4 ? ++_l : --_l) { - this.screen[i] = null; - } - for (i = _m = 0, _ref5 = this.x; 0 <= _ref5 ? _m <= _ref5 : _m >= _ref5; i = 0 <= _ref5 ? ++_m : --_m) { - this.screen[this.y][i] = null; - } - } else if (args[0] === 2) { - this.x = 0; - this.y = 0; - this.screen = []; - } - break; - case "K": - if (args.length === 0 || args[0] === 0) { - for (i = _n = _ref6 = this.x, _ref7 = this.screen[this.y].length - 1; _ref6 <= _ref7 ? _n <= _ref7 : _n >= _ref7; i = _ref6 <= _ref7 ? ++_n : --_n) { - this.screen[this.y][i] = null; - } - } else if (args[0] === 1) { - for (i = _o = 0, _ref8 = this.x; 0 <= _ref8 ? _o <= _ref8 : _o >= _ref8; i = 0 <= _ref8 ? ++_o : --_o) { - this.screen[this.y][i] = null; - } - } else if (args[0] === 2) { - this.screen[this.y] = null; - } - } - this.argbuf = ''; - _results.push(this.state = 0); - } else { - _results.push(this.argbuf += ch); - } - } else if (this.state === 3) { - break; - } else { - _results.push(this.state = 0); - } - } - return _results; - }, - putpixel: function(ch) { - if (this.screen[this.y] == null) { - this.screen[this.y] = []; - } - this.screen[this.y][this.x] = { - ch: ch, - attr: this.attr - }; - if (++this.x >= this.linewrap) { - this.x = 0; - return this.y++; - } - } - }); - -}).call(this); diff --git a/16col/avatar.coffee b/16col/avatar.coffee deleted file mode 100644 index e47568e..0000000 --- a/16col/avatar.coffee +++ /dev/null @@ -1,68 +0,0 @@ -class @ImageTextModeAVATAR extends @ImageTextMode - - constructor: ( options ) -> - super - @tabstop = 8 - @linewrap = 80 - this[k] = v for own k, v of options - - parse: ( content ) -> - @screen = [] - @x = 0 - @y = 0 - @attr = 3 - - content = content.split( '' ) - while ch = content.shift() - if ch is "\x1a" - break - else if ch is "\n" - @x = 0 - @y++ - else if ch is "\r" - continue - else if ch is "\t" - i = ( @x + 1 ) % @tabstop - @putpixel ' ' while i-- > 0 - else if ch.charCodeAt( 0 ) is 12 - @screen = [] - @attr = 3 - @insert = false - else if ch.charCodeAt( 0 ) is 25 - ch = content.shift() - i = content.shift().charCodeAt( 0 ) - @putpixel( ch ) while i-- > 0 - else if ch.charCodeAt( 0 ) is 22 - c = content.shift().charCodeAt( 0 ) - switch c - when 1 - @attr = content.shift().charCodeAt( 0 ) & 0x7f - when 2 - @attr |= 0x80 - when 3 - @y-- - @y = 0 if @y < 0 - when 4 - @y++ - when 5 - @x-- - @x = 0 if @x < 0 - when 6 - @x++ - when 7 - @screen[ @y ][ i ] = null for i in [ @x .. screen[ @y ].length - 1 ] - when 8 - @y = content.shift().charCodeAt( 0 ) - 1 - @x = content.shift().charCodeAt( 0 ) - 1 - @y = 0 if @y < 0 - @x = 0 if @x < 0 - else - @putpixel ch - - putpixel: ( ch ) -> - @screen[ @y ] = [] if !@screen[ @y ]? - @screen[ @y ][ @x ] = { ch: ch, attr: @attr } - - if ++@x >= @linewrap - @x = 0 - @y++ diff --git a/16col/avatar.js b/16col/avatar.js deleted file mode 100644 index 37b2760..0000000 --- a/16col/avatar.js +++ /dev/null @@ -1,143 +0,0 @@ -// Generated by CoffeeScript 1.7.1 -(function() { - var __hasProp = {}.hasOwnProperty, - __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; - - this.ImageTextModeAVATAR = (function(_super) { - __extends(ImageTextModeAVATAR, _super); - - function ImageTextModeAVATAR(options) { - var k, v; - ImageTextModeAVATAR.__super__.constructor.apply(this, arguments); - this.tabstop = 8; - this.linewrap = 80; - for (k in options) { - if (!__hasProp.call(options, k)) continue; - v = options[k]; - this[k] = v; - } - } - - ImageTextModeAVATAR.prototype.parse = function(content) { - var c, ch, i, _results; - this.screen = []; - this.x = 0; - this.y = 0; - this.attr = 3; - content = content.split(''); - _results = []; - while (ch = content.shift()) { - if (ch === "\x1a") { - break; - } else if (ch === "\n") { - this.x = 0; - _results.push(this.y++); - } else if (ch === "\r") { - continue; - } else if (ch === "\t") { - i = (this.x + 1) % this.tabstop; - _results.push((function() { - var _results1; - _results1 = []; - while (i-- > 0) { - _results1.push(this.putpixel(' ')); - } - return _results1; - }).call(this)); - } else if (ch.charCodeAt(0) === 12) { - this.screen = []; - this.attr = 3; - _results.push(this.insert = false); - } else if (ch.charCodeAt(0) === 25) { - ch = content.shift(); - i = content.shift().charCodeAt(0); - _results.push((function() { - var _results1; - _results1 = []; - while (i-- > 0) { - _results1.push(this.putpixel(ch)); - } - return _results1; - }).call(this)); - } else if (ch.charCodeAt(0) === 22) { - c = content.shift().charCodeAt(0); - switch (c) { - case 1: - _results.push(this.attr = content.shift().charCodeAt(0) & 0x7f); - break; - case 2: - _results.push(this.attr |= 0x80); - break; - case 3: - this.y--; - if (this.y < 0) { - _results.push(this.y = 0); - } else { - _results.push(void 0); - } - break; - case 4: - _results.push(this.y++); - break; - case 5: - this.x--; - if (this.x < 0) { - _results.push(this.x = 0); - } else { - _results.push(void 0); - } - break; - case 6: - _results.push(this.x++); - break; - case 7: - _results.push((function() { - var _i, _ref, _ref1, _results1; - _results1 = []; - for (i = _i = _ref = this.x, _ref1 = screen[this.y].length - 1; _ref <= _ref1 ? _i <= _ref1 : _i >= _ref1; i = _ref <= _ref1 ? ++_i : --_i) { - _results1.push(this.screen[this.y][i] = null); - } - return _results1; - }).call(this)); - break; - case 8: - this.y = content.shift().charCodeAt(0) - 1; - this.x = content.shift().charCodeAt(0) - 1; - if (this.y < 0) { - this.y = 0; - } - if (this.x < 0) { - _results.push(this.x = 0); - } else { - _results.push(void 0); - } - break; - default: - _results.push(void 0); - } - } else { - _results.push(this.putpixel(ch)); - } - } - return _results; - }; - - ImageTextModeAVATAR.prototype.putpixel = function(ch) { - if (this.screen[this.y] == null) { - this.screen[this.y] = []; - } - this.screen[this.y][this.x] = { - ch: ch, - attr: this.attr - }; - if (++this.x >= this.linewrap) { - this.x = 0; - return this.y++; - } - }; - - return ImageTextModeAVATAR; - - })(this.ImageTextMode); - -}).call(this); diff --git a/16col/bin.coffee b/16col/bin.coffee deleted file mode 100644 index e81e515..0000000 --- a/16col/bin.coffee +++ /dev/null @@ -1,25 +0,0 @@ -class @ImageTextModeBin extends @ImageTextMode - - constructor: ( options ) -> - super - @linewrap = 160 - this[k] = v for own k, v of options - - parse: ( content ) -> - x = 0 - y = 0 - @screen[ y ] = [] - - for i in [ 0 .. content.length - 2 ] by 2 - ch = content.substr( i, 1 ) - break if ch == "\x1a" - attr = @getByteAt( content, i + 1 ) - @screen[ y ][ x ] = { 'ch': ch, 'attr': attr } - x++ - if x == @linewrap - x = 0 - y++ - @screen[ y ] = [] - - @screen.pop() if @screen[ y ].length == 0 - diff --git a/16col/bin.js b/16col/bin.js deleted file mode 100644 index 1e5df69..0000000 --- a/16col/bin.js +++ /dev/null @@ -1,51 +0,0 @@ -// Generated by CoffeeScript 1.7.1 -(function() { - var __hasProp = {}.hasOwnProperty, - __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; - - this.ImageTextModeBin = (function(_super) { - __extends(ImageTextModeBin, _super); - - function ImageTextModeBin(options) { - var k, v; - ImageTextModeBin.__super__.constructor.apply(this, arguments); - this.linewrap = 160; - for (k in options) { - if (!__hasProp.call(options, k)) continue; - v = options[k]; - this[k] = v; - } - } - - ImageTextModeBin.prototype.parse = function(content) { - var attr, ch, i, x, y, _i, _ref; - x = 0; - y = 0; - this.screen[y] = []; - for (i = _i = 0, _ref = content.length - 2; _i <= _ref; i = _i += 2) { - ch = content.substr(i, 1); - if (ch === "\x1a") { - break; - } - attr = this.getByteAt(content, i + 1); - this.screen[y][x] = { - 'ch': ch, - 'attr': attr - }; - x++; - if (x === this.linewrap) { - x = 0; - y++; - this.screen[y] = []; - } - } - if (this.screen[y].length === 0) { - return this.screen.pop(); - } - }; - - return ImageTextModeBin; - - })(this.ImageTextMode); - -}).call(this); diff --git a/16col/fonts.coffee b/16col/fonts.coffee deleted file mode 100644 index d7c4206..0000000 --- a/16col/fonts.coffee +++ /dev/null @@ -1,797 +0,0 @@ -class @ImageTextModeFont - constructor: ( options ) -> - @chars = [] - @width = 8 - @[k] = v for own k, v of options - -class @ImageTextModeFont8x16 extends @ImageTextModeFont - constructor: ( options ) -> - super @width - @chars = [ - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x7e, 0x81, 0xa5, 0x81, 0x81, 0xbd, 0x99, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x7e, 0xff, 0xdb, 0xff, 0xff, 0xc3, 0xe7, 0xff, 0xff, 0x7e, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x6c, 0xfe, 0xfe, 0xfe, 0xfe, 0x7c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x7c, 0xfe, 0x7c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x18, 0x3c, 0x3c, 0xe7, 0xe7, 0xe7, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x18, 0x3c, 0x7e, 0xff, 0xff, 0x7e, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xc3, 0xc3, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0x42, 0x42, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0xff, 0xff, 0xff, 0xff, 0xff, 0xc3, 0x99, 0xbd, 0xbd, 0x99, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff ], - [ 0x00, 0x00, 0x1e, 0x0e, 0x1a, 0x32, 0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x3f, 0x33, 0x3f, 0x30, 0x30, 0x30, 0x30, 0x70, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x7f, 0x63, 0x7f, 0x63, 0x63, 0x63, 0x63, 0x67, 0xe7, 0xe6, 0xc0, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x18, 0x18, 0xdb, 0x3c, 0xe7, 0x3c, 0xdb, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfe, 0xf8, 0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x02, 0x06, 0x0e, 0x1e, 0x3e, 0xfe, 0x3e, 0x1e, 0x0e, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x7f, 0xdb, 0xdb, 0xdb, 0x7b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x7c, 0xc6, 0x60, 0x38, 0x6c, 0xc6, 0xc6, 0x6c, 0x38, 0x0c, 0xc6, 0x7c, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0c, 0xfe, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x60, 0xfe, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x6c, 0xfe, 0x6c, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x38, 0x7c, 0x7c, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x7c, 0x7c, 0x38, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x3c, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x66, 0x66, 0x66, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x6c, 0x6c, 0xfe, 0x6c, 0x6c, 0x6c, 0xfe, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x18, 0x18, 0x7c, 0xc6, 0xc2, 0xc0, 0x7c, 0x06, 0x06, 0x86, 0xc6, 0x7c, 0x18, 0x18, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0xc2, 0xc6, 0x0c, 0x18, 0x30, 0x60, 0xc6, 0x86, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x38, 0x6c, 0x6c, 0x38, 0x76, 0xdc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x30, 0x30, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x30, 0x18, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x3c, 0xff, 0x3c, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x38, 0x6c, 0xc6, 0xc6, 0xd6, 0xd6, 0xc6, 0xc6, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x18, 0x38, 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x06, 0x3c, 0x06, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x0c, 0x1c, 0x3c, 0x6c, 0xcc, 0xfe, 0x0c, 0x0c, 0x0c, 0x1e, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xfe, 0xc0, 0xc0, 0xc0, 0xfc, 0x06, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x38, 0x60, 0xc0, 0xc0, 0xfc, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xfe, 0xc6, 0x06, 0x06, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0x06, 0x0c, 0x78, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x06, 0x0c, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x0c, 0x18, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x0c, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xde, 0xde, 0xde, 0xdc, 0xc0, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x66, 0x66, 0x66, 0x66, 0xfc, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xf8, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x6c, 0xf8, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xde, 0xc6, 0xc6, 0x66, 0x3a, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x1e, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xe6, 0x66, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xf0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xc6, 0xee, 0xfe, 0xfe, 0xd6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xd6, 0xde, 0x7c, 0x0c, 0x0e, 0x00, 0x00 ], - [ 0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x6c, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x60, 0x38, 0x0c, 0x06, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x7e, 0x7e, 0x5a, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x6c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xd6, 0xd6, 0xd6, 0xfe, 0xee, 0x6c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xc6, 0xc6, 0x6c, 0x7c, 0x38, 0x38, 0x7c, 0x6c, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xfe, 0xc6, 0x86, 0x0c, 0x18, 0x30, 0x60, 0xc2, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x3c, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x70, 0x38, 0x1c, 0x0e, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x3c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x3c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x10, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00 ], - [ 0x00, 0x30, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xe0, 0x60, 0x60, 0x78, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x1c, 0x0c, 0x0c, 0x3c, 0x6c, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x1c, 0x36, 0x32, 0x30, 0x78, 0x30, 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0xcc, 0x78, 0x00 ], - [ 0x00, 0x00, 0xe0, 0x60, 0x60, 0x6c, 0x76, 0x66, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x18, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x06, 0x06, 0x00, 0x0e, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x66, 0x66, 0x3c, 0x00 ], - [ 0x00, 0x00, 0xe0, 0x60, 0x60, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0xfe, 0xd6, 0xd6, 0xd6, 0xd6, 0xc6, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xf0, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0x0c, 0x1e, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x76, 0x66, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x10, 0x30, 0x30, 0xfc, 0x30, 0x30, 0x30, 0x30, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xd6, 0xd6, 0xd6, 0xfe, 0x6c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x6c, 0x38, 0x38, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0xf8, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xcc, 0x18, 0x30, 0x60, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x0e, 0x18, 0x18, 0x18, 0x70, 0x18, 0x18, 0x18, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x70, 0x18, 0x18, 0x18, 0x0e, 0x18, 0x18, 0x18, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0x66, 0x3c, 0x18, 0x70, 0x00, 0x00 ], - [ 0x00, 0x00, 0xcc, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x0c, 0x18, 0x30, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x10, 0x38, 0x6c, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xcc, 0x00, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x60, 0x30, 0x18, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x38, 0x6c, 0x38, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x18, 0x70, 0x00, 0x00 ], - [ 0x00, 0x10, 0x38, 0x6c, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xc6, 0x00, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x60, 0x30, 0x18, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x66, 0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x18, 0x3c, 0x66, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x60, 0x30, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0xc6, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00 ], - [ 0x38, 0x6c, 0x38, 0x10, 0x38, 0x6c, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00 ], - [ 0x0c, 0x18, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0x36, 0x36, 0x7e, 0xd8, 0xd8, 0x6e, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x3e, 0x6c, 0xcc, 0xcc, 0xfe, 0xcc, 0xcc, 0xcc, 0xcc, 0xce, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x10, 0x38, 0x6c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xc6, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x60, 0x30, 0x18, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x30, 0x78, 0xcc, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x60, 0x30, 0x18, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xc6, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0x78, 0x00 ], - [ 0x00, 0xc6, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0xc6, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x18, 0x18, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x38, 0x6c, 0x64, 0x60, 0xf0, 0x60, 0x60, 0x60, 0x60, 0xe6, 0xfc, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x18, 0x7e, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0xf8, 0xcc, 0xcc, 0xf8, 0xc4, 0xcc, 0xde, 0xcc, 0xcc, 0xcc, 0xc6, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x0e, 0x1b, 0x18, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x18, 0xd8, 0x70, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x18, 0x30, 0x60, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x0c, 0x18, 0x30, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x18, 0x30, 0x60, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x18, 0x30, 0x60, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x76, 0xdc, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00 ], - [ 0x76, 0xdc, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x3c, 0x6c, 0x6c, 0x3e, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x38, 0x6c, 0x6c, 0x38, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x30, 0x30, 0x00, 0x30, 0x30, 0x60, 0xc0, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x60, 0xe0, 0x62, 0x66, 0x6c, 0x18, 0x30, 0x60, 0xdc, 0x86, 0x0c, 0x18, 0x3e, 0x00, 0x00 ], - [ 0x00, 0x60, 0xe0, 0x62, 0x66, 0x6c, 0x18, 0x30, 0x66, 0xce, 0x9a, 0x3f, 0x06, 0x06, 0x00, 0x00 ], - [ 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x3c, 0x3c, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x6c, 0xd8, 0x6c, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x6c, 0x36, 0x6c, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44 ], - [ 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa ], - [ 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77 ], - [ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 ], - [ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 ], - [ 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 ], - [ 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xf6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 ], - [ 0x36, 0x36, 0x36, 0x36, 0x36, 0xf6, 0x06, 0xf6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 ], - [ 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x06, 0xf6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 ], - [ 0x36, 0x36, 0x36, 0x36, 0x36, 0xf6, 0x06, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 ], - [ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 ], - [ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 ], - [ 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 ], - [ 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 ], - [ 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x30, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x30, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 ], - [ 0x36, 0x36, 0x36, 0x36, 0x36, 0xf7, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xf7, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 ], - [ 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x30, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x36, 0x36, 0x36, 0x36, 0x36, 0xf7, 0x00, 0xf7, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 ], - [ 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 ], - [ 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 ], - [ 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xff, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 ], - [ 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x18, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 ], - [ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 ], - [ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff ], - [ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0 ], - [ 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f ], - [ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0xd8, 0xd8, 0xd8, 0xdc, 0x76, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x78, 0xcc, 0xcc, 0xcc, 0xd8, 0xcc, 0xc6, 0xc6, 0xc6, 0xcc, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xfe, 0xc6, 0xc6, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xfe, 0xc6, 0x60, 0x30, 0x18, 0x18, 0x30, 0x60, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0x70, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xc0, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x7e, 0x18, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x38, 0x6c, 0xc6, 0xc6, 0xc6, 0x6c, 0x6c, 0x6c, 0x6c, 0xee, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x1e, 0x30, 0x18, 0x0c, 0x3e, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xdb, 0xdb, 0xdb, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x03, 0x06, 0x7e, 0xdb, 0xdb, 0xf3, 0x7e, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x1c, 0x30, 0x60, 0x60, 0x7c, 0x60, 0x60, 0x60, 0x30, 0x1c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0xfe, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x30, 0x18, 0x0c, 0x06, 0x0c, 0x18, 0x30, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x0c, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0c, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x0e, 0x1b, 0x1b, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 ], - [ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xd8, 0xd8, 0xd8, 0x70, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x7e, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0x00, 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x38, 0x6c, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x0f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0xec, 0x6c, 0x6c, 0x3c, 0x1c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x6c, 0x36, 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x3c, 0x66, 0x0c, 0x18, 0x32, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ] - ] - @height = 16 - @[k] = v for own k, v of options - -class @ImageTextModeFont8x8 extends @ImageTextModeFont - constructor: ( options ) -> - super @width - @chars = [ - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x7e, 0x81, 0xa5, 0x81, 0xbd, 0x99, 0x81, 0x7e ], - [ 0x7e, 0xff, 0xdb, 0xff, 0xc3, 0xe7, 0xff, 0x7e ], - [ 0x6c, 0xfe, 0xfe, 0xfe, 0x7c, 0x38, 0x10, 0x00 ], - [ 0x10, 0x38, 0x7c, 0xfe, 0x7c, 0x38, 0x10, 0x00 ], - [ 0x38, 0x7c, 0x38, 0xfe, 0xfe, 0xd6, 0x10, 0x38 ], - [ 0x10, 0x38, 0x7c, 0xfe, 0xfe, 0x7c, 0x10, 0x38 ], - [ 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x18, 0x00, 0x00 ], - [ 0xff, 0xff, 0xe7, 0xc3, 0xc3, 0xe7, 0xff, 0xff ], - [ 0x00, 0x3c, 0x66, 0x42, 0x42, 0x66, 0x3c, 0x00 ], - [ 0xff, 0xc3, 0x99, 0xbd, 0xbd, 0x99, 0xc3, 0xff ], - [ 0x0f, 0x07, 0x0f, 0x7d, 0xcc, 0xcc, 0xcc, 0x78 ], - [ 0x3c, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x18 ], - [ 0x3f, 0x33, 0x3f, 0x30, 0x30, 0x70, 0xf0, 0xe0 ], - [ 0x7f, 0x63, 0x7f, 0x63, 0x63, 0x67, 0xe6, 0xc0 ], - [ 0x18, 0xdb, 0x3c, 0xe7, 0xe7, 0x3c, 0xdb, 0x18 ], - [ 0x80, 0xe0, 0xf8, 0xfe, 0xf8, 0xe0, 0x80, 0x00 ], - [ 0x02, 0x0e, 0x3e, 0xfe, 0x3e, 0x0e, 0x02, 0x00 ], - [ 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x7e, 0x3c, 0x18 ], - [ 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x66, 0x00 ], - [ 0x7f, 0xdb, 0xdb, 0x7b, 0x1b, 0x1b, 0x1b, 0x00 ], - [ 0x3e, 0x61, 0x3c, 0x66, 0x66, 0x3c, 0x86, 0x7c ], - [ 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x7e, 0x00 ], - [ 0x18, 0x3c, 0x7e, 0x18, 0x7e, 0x3c, 0x18, 0xff ], - [ 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x00 ], - [ 0x18, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x00 ], - [ 0x00, 0x18, 0x0c, 0xfe, 0x0c, 0x18, 0x00, 0x00 ], - [ 0x00, 0x30, 0x60, 0xfe, 0x60, 0x30, 0x00, 0x00 ], - [ 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xfe, 0x00, 0x00 ], - [ 0x00, 0x24, 0x66, 0xff, 0x66, 0x24, 0x00, 0x00 ], - [ 0x00, 0x18, 0x3c, 0x7e, 0xff, 0xff, 0x00, 0x00 ], - [ 0x00, 0xff, 0xff, 0x7e, 0x3c, 0x18, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x18, 0x3c, 0x3c, 0x18, 0x18, 0x00, 0x18, 0x00 ], - [ 0x66, 0x66, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x6c, 0x6c, 0xfe, 0x6c, 0xfe, 0x6c, 0x6c, 0x00 ], - [ 0x18, 0x3e, 0x60, 0x3c, 0x06, 0x7c, 0x18, 0x00 ], - [ 0x00, 0xc6, 0xcc, 0x18, 0x30, 0x66, 0xc6, 0x00 ], - [ 0x38, 0x6c, 0x38, 0x76, 0xdc, 0xcc, 0x76, 0x00 ], - [ 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x0c, 0x18, 0x30, 0x30, 0x30, 0x18, 0x0c, 0x00 ], - [ 0x30, 0x18, 0x0c, 0x0c, 0x0c, 0x18, 0x30, 0x00 ], - [ 0x00, 0x66, 0x3c, 0xff, 0x3c, 0x66, 0x00, 0x00 ], - [ 0x00, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30 ], - [ 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00 ], - [ 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0x80, 0x00 ], - [ 0x38, 0x6c, 0xc6, 0xd6, 0xc6, 0x6c, 0x38, 0x00 ], - [ 0x18, 0x38, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x00 ], - [ 0x7c, 0xc6, 0x06, 0x1c, 0x30, 0x66, 0xfe, 0x00 ], - [ 0x7c, 0xc6, 0x06, 0x3c, 0x06, 0xc6, 0x7c, 0x00 ], - [ 0x1c, 0x3c, 0x6c, 0xcc, 0xfe, 0x0c, 0x1e, 0x00 ], - [ 0xfe, 0xc0, 0xc0, 0xfc, 0x06, 0xc6, 0x7c, 0x00 ], - [ 0x38, 0x60, 0xc0, 0xfc, 0xc6, 0xc6, 0x7c, 0x00 ], - [ 0xfe, 0xc6, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x00 ], - [ 0x7c, 0xc6, 0xc6, 0x7c, 0xc6, 0xc6, 0x7c, 0x00 ], - [ 0x7c, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0x78, 0x00 ], - [ 0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x00 ], - [ 0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x30 ], - [ 0x06, 0x0c, 0x18, 0x30, 0x18, 0x0c, 0x06, 0x00 ], - [ 0x00, 0x00, 0x7e, 0x00, 0x00, 0x7e, 0x00, 0x00 ], - [ 0x60, 0x30, 0x18, 0x0c, 0x18, 0x30, 0x60, 0x00 ], - [ 0x7c, 0xc6, 0x0c, 0x18, 0x18, 0x00, 0x18, 0x00 ], - [ 0x7c, 0xc6, 0xde, 0xde, 0xde, 0xc0, 0x78, 0x00 ], - [ 0x38, 0x6c, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00 ], - [ 0xfc, 0x66, 0x66, 0x7c, 0x66, 0x66, 0xfc, 0x00 ], - [ 0x3c, 0x66, 0xc0, 0xc0, 0xc0, 0x66, 0x3c, 0x00 ], - [ 0xf8, 0x6c, 0x66, 0x66, 0x66, 0x6c, 0xf8, 0x00 ], - [ 0xfe, 0x62, 0x68, 0x78, 0x68, 0x62, 0xfe, 0x00 ], - [ 0xfe, 0x62, 0x68, 0x78, 0x68, 0x60, 0xf0, 0x00 ], - [ 0x3c, 0x66, 0xc0, 0xc0, 0xce, 0x66, 0x3a, 0x00 ], - [ 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00 ], - [ 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00 ], - [ 0x1e, 0x0c, 0x0c, 0x0c, 0xcc, 0xcc, 0x78, 0x00 ], - [ 0xe6, 0x66, 0x6c, 0x78, 0x6c, 0x66, 0xe6, 0x00 ], - [ 0xf0, 0x60, 0x60, 0x60, 0x62, 0x66, 0xfe, 0x00 ], - [ 0xc6, 0xee, 0xfe, 0xfe, 0xd6, 0xc6, 0xc6, 0x00 ], - [ 0xc6, 0xe6, 0xf6, 0xde, 0xce, 0xc6, 0xc6, 0x00 ], - [ 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00 ], - [ 0xfc, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xf0, 0x00 ], - [ 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xce, 0x7c, 0x0e ], - [ 0xfc, 0x66, 0x66, 0x7c, 0x6c, 0x66, 0xe6, 0x00 ], - [ 0x3c, 0x66, 0x30, 0x18, 0x0c, 0x66, 0x3c, 0x00 ], - [ 0x7e, 0x7e, 0x5a, 0x18, 0x18, 0x18, 0x3c, 0x00 ], - [ 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00 ], - [ 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x6c, 0x38, 0x00 ], - [ 0xc6, 0xc6, 0xc6, 0xd6, 0xd6, 0xfe, 0x6c, 0x00 ], - [ 0xc6, 0xc6, 0x6c, 0x38, 0x6c, 0xc6, 0xc6, 0x00 ], - [ 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x3c, 0x00 ], - [ 0xfe, 0xc6, 0x8c, 0x18, 0x32, 0x66, 0xfe, 0x00 ], - [ 0x3c, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3c, 0x00 ], - [ 0xc0, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x02, 0x00 ], - [ 0x3c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x3c, 0x00 ], - [ 0x10, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff ], - [ 0x30, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0x76, 0x00 ], - [ 0xe0, 0x60, 0x7c, 0x66, 0x66, 0x66, 0xdc, 0x00 ], - [ 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xc6, 0x7c, 0x00 ], - [ 0x1c, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00 ], - [ 0x00, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0x7c, 0x00 ], - [ 0x3c, 0x66, 0x60, 0xf8, 0x60, 0x60, 0xf0, 0x00 ], - [ 0x00, 0x00, 0x76, 0xcc, 0xcc, 0x7c, 0x0c, 0xf8 ], - [ 0xe0, 0x60, 0x6c, 0x76, 0x66, 0x66, 0xe6, 0x00 ], - [ 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x3c, 0x00 ], - [ 0x06, 0x00, 0x06, 0x06, 0x06, 0x66, 0x66, 0x3c ], - [ 0xe0, 0x60, 0x66, 0x6c, 0x78, 0x6c, 0xe6, 0x00 ], - [ 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00 ], - [ 0x00, 0x00, 0xec, 0xfe, 0xd6, 0xd6, 0xd6, 0x00 ], - [ 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x00 ], - [ 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0x00 ], - [ 0x00, 0x00, 0xdc, 0x66, 0x66, 0x7c, 0x60, 0xf0 ], - [ 0x00, 0x00, 0x76, 0xcc, 0xcc, 0x7c, 0x0c, 0x1e ], - [ 0x00, 0x00, 0xdc, 0x76, 0x60, 0x60, 0xf0, 0x00 ], - [ 0x00, 0x00, 0x7e, 0xc0, 0x7c, 0x06, 0xfc, 0x00 ], - [ 0x30, 0x30, 0xfc, 0x30, 0x30, 0x36, 0x1c, 0x00 ], - [ 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00 ], - [ 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0x6c, 0x38, 0x00 ], - [ 0x00, 0x00, 0xc6, 0xd6, 0xd6, 0xfe, 0x6c, 0x00 ], - [ 0x00, 0x00, 0xc6, 0x6c, 0x38, 0x6c, 0xc6, 0x00 ], - [ 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0xfc ], - [ 0x00, 0x00, 0x7e, 0x4c, 0x18, 0x32, 0x7e, 0x00 ], - [ 0x0e, 0x18, 0x18, 0x70, 0x18, 0x18, 0x0e, 0x00 ], - [ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00 ], - [ 0x70, 0x18, 0x18, 0x0e, 0x18, 0x18, 0x70, 0x00 ], - [ 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0x00 ], - [ 0x7c, 0xc6, 0xc0, 0xc0, 0xc6, 0x7c, 0x0c, 0x78 ], - [ 0xcc, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00 ], - [ 0x0c, 0x18, 0x7c, 0xc6, 0xfe, 0xc0, 0x7c, 0x00 ], - [ 0x7c, 0x82, 0x78, 0x0c, 0x7c, 0xcc, 0x76, 0x00 ], - [ 0xc6, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0x76, 0x00 ], - [ 0x30, 0x18, 0x78, 0x0c, 0x7c, 0xcc, 0x76, 0x00 ], - [ 0x30, 0x30, 0x78, 0x0c, 0x7c, 0xcc, 0x76, 0x00 ], - [ 0x00, 0x00, 0x7e, 0xc0, 0xc0, 0x7e, 0x0c, 0x38 ], - [ 0x7c, 0x82, 0x7c, 0xc6, 0xfe, 0xc0, 0x7c, 0x00 ], - [ 0xc6, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0x7c, 0x00 ], - [ 0x30, 0x18, 0x7c, 0xc6, 0xfe, 0xc0, 0x7c, 0x00 ], - [ 0x66, 0x00, 0x38, 0x18, 0x18, 0x18, 0x3c, 0x00 ], - [ 0x7c, 0x82, 0x38, 0x18, 0x18, 0x18, 0x3c, 0x00 ], - [ 0x30, 0x18, 0x00, 0x38, 0x18, 0x18, 0x3c, 0x00 ], - [ 0xc6, 0x38, 0x6c, 0xc6, 0xfe, 0xc6, 0xc6, 0x00 ], - [ 0x38, 0x6c, 0x7c, 0xc6, 0xfe, 0xc6, 0xc6, 0x00 ], - [ 0x18, 0x30, 0xfe, 0xc0, 0xf8, 0xc0, 0xfe, 0x00 ], - [ 0x00, 0x00, 0x7e, 0x18, 0x7e, 0xd8, 0x7e, 0x00 ], - [ 0x3e, 0x6c, 0xcc, 0xfe, 0xcc, 0xcc, 0xce, 0x00 ], - [ 0x7c, 0x82, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0x00 ], - [ 0xc6, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0x00 ], - [ 0x30, 0x18, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0x00 ], - [ 0x78, 0x84, 0x00, 0xcc, 0xcc, 0xcc, 0x76, 0x00 ], - [ 0x60, 0x30, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00 ], - [ 0xc6, 0x00, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0xfc ], - [ 0xc6, 0x38, 0x6c, 0xc6, 0xc6, 0x6c, 0x38, 0x00 ], - [ 0xc6, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00 ], - [ 0x18, 0x18, 0x7e, 0xc0, 0xc0, 0x7e, 0x18, 0x18 ], - [ 0x38, 0x6c, 0x64, 0xf0, 0x60, 0x66, 0xfc, 0x00 ], - [ 0x66, 0x66, 0x3c, 0x7e, 0x18, 0x7e, 0x18, 0x18 ], - [ 0xf8, 0xcc, 0xcc, 0xfa, 0xc6, 0xcf, 0xc6, 0xc7 ], - [ 0x0e, 0x1b, 0x18, 0x3c, 0x18, 0xd8, 0x70, 0x00 ], - [ 0x18, 0x30, 0x78, 0x0c, 0x7c, 0xcc, 0x76, 0x00 ], - [ 0x0c, 0x18, 0x00, 0x38, 0x18, 0x18, 0x3c, 0x00 ], - [ 0x0c, 0x18, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0x00 ], - [ 0x18, 0x30, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00 ], - [ 0x76, 0xdc, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x00 ], - [ 0x76, 0xdc, 0x00, 0xe6, 0xf6, 0xde, 0xce, 0x00 ], - [ 0x3c, 0x6c, 0x6c, 0x3e, 0x00, 0x7e, 0x00, 0x00 ], - [ 0x38, 0x6c, 0x6c, 0x38, 0x00, 0x7c, 0x00, 0x00 ], - [ 0x18, 0x00, 0x18, 0x18, 0x30, 0x63, 0x3e, 0x00 ], - [ 0x00, 0x00, 0x00, 0xfe, 0xc0, 0xc0, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0xfe, 0x06, 0x06, 0x00, 0x00 ], - [ 0x63, 0xe6, 0x6c, 0x7e, 0x33, 0x66, 0xcc, 0x0f ], - [ 0x63, 0xe6, 0x6c, 0x7a, 0x36, 0x6a, 0xdf, 0x06 ], - [ 0x18, 0x00, 0x18, 0x18, 0x3c, 0x3c, 0x18, 0x00 ], - [ 0x00, 0x33, 0x66, 0xcc, 0x66, 0x33, 0x00, 0x00 ], - [ 0x00, 0xcc, 0x66, 0x33, 0x66, 0xcc, 0x00, 0x00 ], - [ 0x22, 0x88, 0x22, 0x88, 0x22, 0x88, 0x22, 0x88 ], - [ 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa ], - [ 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd ], - [ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 ], - [ 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0x18, 0x18 ], - [ 0x18, 0x18, 0xf8, 0x18, 0xf8, 0x18, 0x18, 0x18 ], - [ 0x36, 0x36, 0x36, 0x36, 0xf6, 0x36, 0x36, 0x36 ], - [ 0x00, 0x00, 0x00, 0x00, 0xfe, 0x36, 0x36, 0x36 ], - [ 0x00, 0x00, 0xf8, 0x18, 0xf8, 0x18, 0x18, 0x18 ], - [ 0x36, 0x36, 0xf6, 0x06, 0xf6, 0x36, 0x36, 0x36 ], - [ 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 ], - [ 0x00, 0x00, 0xfe, 0x06, 0xf6, 0x36, 0x36, 0x36 ], - [ 0x36, 0x36, 0xf6, 0x06, 0xfe, 0x00, 0x00, 0x00 ], - [ 0x36, 0x36, 0x36, 0x36, 0xfe, 0x00, 0x00, 0x00 ], - [ 0x18, 0x18, 0xf8, 0x18, 0xf8, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x18, 0x18, 0x18 ], - [ 0x18, 0x18, 0x18, 0x18, 0x1f, 0x00, 0x00, 0x00 ], - [ 0x18, 0x18, 0x18, 0x18, 0xff, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0xff, 0x18, 0x18, 0x18 ], - [ 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x18, 0x18 ], - [ 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00 ], - [ 0x18, 0x18, 0x18, 0x18, 0xff, 0x18, 0x18, 0x18 ], - [ 0x18, 0x18, 0x1f, 0x18, 0x1f, 0x18, 0x18, 0x18 ], - [ 0x36, 0x36, 0x36, 0x36, 0x37, 0x36, 0x36, 0x36 ], - [ 0x36, 0x36, 0x37, 0x30, 0x3f, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x3f, 0x30, 0x37, 0x36, 0x36, 0x36 ], - [ 0x36, 0x36, 0xf7, 0x00, 0xff, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xff, 0x00, 0xf7, 0x36, 0x36, 0x36 ], - [ 0x36, 0x36, 0x37, 0x30, 0x37, 0x36, 0x36, 0x36 ], - [ 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00 ], - [ 0x36, 0x36, 0xf7, 0x00, 0xf7, 0x36, 0x36, 0x36 ], - [ 0x18, 0x18, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00 ], - [ 0x36, 0x36, 0x36, 0x36, 0xff, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xff, 0x00, 0xff, 0x18, 0x18, 0x18 ], - [ 0x00, 0x00, 0x00, 0x00, 0xff, 0x36, 0x36, 0x36 ], - [ 0x36, 0x36, 0x36, 0x36, 0x3f, 0x00, 0x00, 0x00 ], - [ 0x18, 0x18, 0x1f, 0x18, 0x1f, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x1f, 0x18, 0x1f, 0x18, 0x18, 0x18 ], - [ 0x00, 0x00, 0x00, 0x00, 0x3f, 0x36, 0x36, 0x36 ], - [ 0x36, 0x36, 0x36, 0x36, 0xff, 0x36, 0x36, 0x36 ], - [ 0x18, 0x18, 0xff, 0x18, 0xff, 0x18, 0x18, 0x18 ], - [ 0x18, 0x18, 0x18, 0x18, 0xf8, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x1f, 0x18, 0x18, 0x18 ], - [ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff ], - [ 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff ], - [ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0 ], - [ 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f ], - [ 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x76, 0xdc, 0xc8, 0xdc, 0x76, 0x00 ], - [ 0x78, 0xcc, 0xcc, 0xd8, 0xcc, 0xc6, 0xcc, 0x00 ], - [ 0xfe, 0xc6, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00 ], - [ 0x00, 0x00, 0xfe, 0x6c, 0x6c, 0x6c, 0x6c, 0x00 ], - [ 0xfe, 0xc6, 0x60, 0x30, 0x60, 0xc6, 0xfe, 0x00 ], - [ 0x00, 0x00, 0x7e, 0xd8, 0xd8, 0xd8, 0x70, 0x00 ], - [ 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x7c, 0xc0 ], - [ 0x00, 0x76, 0xdc, 0x18, 0x18, 0x18, 0x18, 0x00 ], - [ 0x7e, 0x18, 0x3c, 0x66, 0x66, 0x3c, 0x18, 0x7e ], - [ 0x38, 0x6c, 0xc6, 0xfe, 0xc6, 0x6c, 0x38, 0x00 ], - [ 0x38, 0x6c, 0xc6, 0xc6, 0x6c, 0x6c, 0xee, 0x00 ], - [ 0x0e, 0x18, 0x0c, 0x3e, 0x66, 0x66, 0x3c, 0x00 ], - [ 0x00, 0x00, 0x7e, 0xdb, 0xdb, 0x7e, 0x00, 0x00 ], - [ 0x06, 0x0c, 0x7e, 0xdb, 0xdb, 0x7e, 0x60, 0xc0 ], - [ 0x1e, 0x30, 0x60, 0x7e, 0x60, 0x30, 0x1e, 0x00 ], - [ 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00 ], - [ 0x00, 0xfe, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0x00 ], - [ 0x18, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x7e, 0x00 ], - [ 0x30, 0x18, 0x0c, 0x18, 0x30, 0x00, 0x7e, 0x00 ], - [ 0x0c, 0x18, 0x30, 0x18, 0x0c, 0x00, 0x7e, 0x00 ], - [ 0x0e, 0x1b, 0x1b, 0x18, 0x18, 0x18, 0x18, 0x18 ], - [ 0x18, 0x18, 0x18, 0x18, 0x18, 0xd8, 0xd8, 0x70 ], - [ 0x00, 0x18, 0x00, 0x7e, 0x00, 0x18, 0x00, 0x00 ], - [ 0x00, 0x76, 0xdc, 0x00, 0x76, 0xdc, 0x00, 0x00 ], - [ 0x38, 0x6c, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00 ], - [ 0x0f, 0x0c, 0x0c, 0x0c, 0xec, 0x6c, 0x3c, 0x1c ], - [ 0x6c, 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, 0x00 ], - [ 0x78, 0x0c, 0x18, 0x30, 0x7c, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x3c, 0x3c, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ] - ] - @height = 8 - @[k] = v for own k, v of options - -class @ImageTextModeFontAmiga extends @ImageTextModeFont - constructor: ( options ) -> - super @width - @chars = [ - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x83, 0x83, 0x39, 0x39, 0x21, 0x21, 0x29, 0x29, 0x21, 0x21, 0x3f, 0x3f, 0x87, 0x87, 0xff, 0xff ], - [ 0xc3, 0xc3, 0x99, 0x99, 0x99, 0x99, 0x81, 0x81, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xff, 0xff ], - [ 0x83, 0x83, 0x99, 0x99, 0x99, 0x99, 0x83, 0x83, 0x99, 0x99, 0x99, 0x99, 0x83, 0x83, 0xff, 0xff ], - [ 0xe1, 0xe1, 0xcf, 0xcf, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0xcf, 0xcf, 0xe1, 0xe1, 0xff, 0xff ], - [ 0x87, 0x87, 0x93, 0x93, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x93, 0x93, 0x87, 0x87, 0xff, 0xff ], - [ 0x81, 0x81, 0x9f, 0x9f, 0x9f, 0x9f, 0x87, 0x87, 0x9f, 0x9f, 0x9f, 0x9f, 0x81, 0x81, 0xff, 0xff ], - [ 0x81, 0x81, 0x9f, 0x9f, 0x9f, 0x9f, 0x87, 0x87, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0xff, 0xff ], - [ 0xc3, 0xc3, 0x99, 0x99, 0x9f, 0x9f, 0x91, 0x91, 0x99, 0x99, 0x99, 0x99, 0xc1, 0xc1, 0xff, 0xff ], - [ 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x81, 0x81, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xff, 0xff ], - [ 0xc3, 0xc3, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xc3, 0xc3, 0xff, 0xff ], - [ 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0x99, 0x99, 0xc3, 0xc3, 0xff, 0xff ], - [ 0x9c, 0x9c, 0x99, 0x99, 0x93, 0x93, 0x87, 0x87, 0x93, 0x93, 0x99, 0x99, 0x9c, 0x9c, 0xff, 0xff ], - [ 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x81, 0x81, 0xff, 0xff ], - [ 0x9c, 0x9c, 0x88, 0x88, 0x80, 0x80, 0x94, 0x94, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0xff, 0xff ], - [ 0x9c, 0x9c, 0x8c, 0x8c, 0x84, 0x84, 0x90, 0x90, 0x98, 0x98, 0x9c, 0x9c, 0x9c, 0x9c, 0xff, 0xff ], - [ 0xc3, 0xc3, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xc3, 0xc3, 0xff, 0xff ], - [ 0x83, 0x83, 0x99, 0x99, 0x99, 0x99, 0x83, 0x83, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0xff, 0xff ], - [ 0xc3, 0xc3, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x91, 0x91, 0xc0, 0xc0, 0xff, 0xff ], - [ 0x83, 0x83, 0x99, 0x99, 0x99, 0x99, 0x83, 0x83, 0x93, 0x93, 0x99, 0x99, 0x99, 0x99, 0xff, 0xff ], - [ 0xc3, 0xc3, 0x99, 0x99, 0x8f, 0x8f, 0xc3, 0xc3, 0xf1, 0xf1, 0x99, 0x99, 0xc3, 0xc3, 0xff, 0xff ], - [ 0x81, 0x81, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xff, 0xff ], - [ 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xc3, 0xc3, 0xff, 0xff ], - [ 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x81, 0xc3, 0xc3, 0xe7, 0xe7, 0xff, 0xff ], - [ 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x94, 0x94, 0x80, 0x80, 0x88, 0x88, 0x9c, 0x9c, 0xff, 0xff ], - [ 0x3c, 0x3c, 0x99, 0x99, 0xc3, 0xc3, 0xe7, 0xe7, 0xc3, 0xc3, 0x99, 0x99, 0x3c, 0x3c, 0xff, 0xff ], - [ 0x3c, 0x3c, 0x99, 0x99, 0xc3, 0xc3, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xff, 0xff ], - [ 0x80, 0x80, 0xf9, 0xf9, 0xf3, 0xf3, 0xe7, 0xe7, 0xcf, 0xcf, 0x9f, 0x9f, 0x80, 0x80, 0xff, 0xff ], - [ 0xc3, 0xc3, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xc3, 0xc3, 0xff, 0xff ], - [ 0x3f, 0x3f, 0x9f, 0x9f, 0xcf, 0xcf, 0xe7, 0xe7, 0xf3, 0xf3, 0xf9, 0xf9, 0xfc, 0xfc, 0xff, 0xff ], - [ 0xc3, 0xc3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xc3, 0xc3, 0xff, 0xff ], - [ 0xf7, 0xf7, 0xe3, 0xe3, 0xc9, 0xc9, 0x9c, 0x9c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00 ], - [ 0x6c, 0x6c, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x6c, 0x6c, 0x6c, 0x6c, 0xfe, 0xfe, 0x6c, 0x6c, 0xfe, 0xfe, 0x6c, 0x6c, 0x6c, 0x6c, 0x00, 0x00 ], - [ 0x18, 0x18, 0x3e, 0x3e, 0x60, 0x60, 0x3c, 0x3c, 0x06, 0x06, 0x7c, 0x7c, 0x18, 0x18, 0x00, 0x00 ], - [ 0x00, 0x00, 0x66, 0x66, 0xac, 0xac, 0xd8, 0xd8, 0x36, 0x36, 0x6a, 0x6a, 0xcc, 0xcc, 0x00, 0x00 ], - [ 0x38, 0x38, 0x6c, 0x6c, 0x68, 0x68, 0x76, 0x76, 0xdc, 0xdc, 0xce, 0xce, 0x7b, 0x7b, 0x00, 0x00 ], - [ 0x18, 0x18, 0x18, 0x18, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x0c, 0x0c, 0x18, 0x18, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x18, 0x18, 0x0c, 0x0c, 0x00, 0x00 ], - [ 0x30, 0x30, 0x18, 0x18, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x18, 0x18, 0x30, 0x30, 0x00, 0x00 ], - [ 0x00, 0x00, 0x66, 0x66, 0x3c, 0x3c, 0xff, 0xff, 0x3c, 0x3c, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x30, 0x30 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00 ], - [ 0x03, 0x03, 0x06, 0x06, 0x0c, 0x0c, 0x18, 0x18, 0x30, 0x30, 0x60, 0x60, 0xc0, 0xc0, 0x00, 0x00 ], - [ 0x3c, 0x3c, 0x66, 0x66, 0x6e, 0x6e, 0x7e, 0x7e, 0x76, 0x76, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x18, 0x18, 0x38, 0x38, 0x78, 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00 ], - [ 0x3c, 0x3c, 0x66, 0x66, 0x06, 0x06, 0x0c, 0x0c, 0x18, 0x18, 0x30, 0x30, 0x7e, 0x7e, 0x00, 0x00 ], - [ 0x3c, 0x3c, 0x66, 0x66, 0x06, 0x06, 0x1c, 0x1c, 0x06, 0x06, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x1c, 0x1c, 0x3c, 0x3c, 0x6c, 0x6c, 0xcc, 0xcc, 0xfe, 0xfe, 0x0c, 0x0c, 0x0c, 0x0c, 0x00, 0x00 ], - [ 0x7e, 0x7e, 0x60, 0x60, 0x7c, 0x7c, 0x06, 0x06, 0x06, 0x06, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x1c, 0x1c, 0x30, 0x30, 0x60, 0x60, 0x7c, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x7e, 0x7e, 0x06, 0x06, 0x06, 0x06, 0x0c, 0x0c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00 ], - [ 0x3c, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x3c, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x3e, 0x06, 0x06, 0x0c, 0x0c, 0x38, 0x38, 0x00, 0x00 ], - [ 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00 ], - [ 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x30, 0x30 ], - [ 0x00, 0x00, 0x06, 0x06, 0x18, 0x18, 0x60, 0x60, 0x18, 0x18, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x00, 0x00, 0x7e, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x60, 0x60, 0x18, 0x18, 0x06, 0x06, 0x18, 0x18, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00 ], - [ 0x3c, 0x3c, 0x66, 0x66, 0x06, 0x06, 0x0c, 0x0c, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00 ], - [ 0x7c, 0x7c, 0xc6, 0xc6, 0xde, 0xde, 0xd6, 0xd6, 0xde, 0xde, 0xc0, 0xc0, 0x78, 0x78, 0x00, 0x00 ], - [ 0x3c, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x7e, 0x7e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00 ], - [ 0x7c, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x7c, 0x00, 0x00 ], - [ 0x1e, 0x1e, 0x30, 0x30, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x30, 0x30, 0x1e, 0x1e, 0x00, 0x00 ], - [ 0x78, 0x78, 0x6c, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x6c, 0x6c, 0x78, 0x78, 0x00, 0x00 ], - [ 0x7e, 0x7e, 0x60, 0x60, 0x60, 0x60, 0x78, 0x78, 0x60, 0x60, 0x60, 0x60, 0x7e, 0x7e, 0x00, 0x00 ], - [ 0x7e, 0x7e, 0x60, 0x60, 0x60, 0x60, 0x78, 0x78, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00 ], - [ 0x3c, 0x3c, 0x66, 0x66, 0x60, 0x60, 0x6e, 0x6e, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x3e, 0x00, 0x00 ], - [ 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7e, 0x7e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00 ], - [ 0x3c, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0xc6, 0xc6, 0xcc, 0xcc, 0xd8, 0xd8, 0xf0, 0xf0, 0xd8, 0xd8, 0xcc, 0xcc, 0xc6, 0xc6, 0x00, 0x00 ], - [ 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7e, 0x7e, 0x00, 0x00 ], - [ 0xc6, 0xc6, 0xee, 0xee, 0xfe, 0xfe, 0xd6, 0xd6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00 ], - [ 0xc6, 0xc6, 0xe6, 0xe6, 0xf6, 0xf6, 0xde, 0xde, 0xce, 0xce, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00 ], - [ 0x3c, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x7c, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x7c, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00 ], - [ 0x78, 0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xdc, 0xdc, 0x7e, 0x7e, 0x00, 0x00 ], - [ 0x7c, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x7c, 0x6c, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00 ], - [ 0x3c, 0x3c, 0x66, 0x66, 0x70, 0x70, 0x3c, 0x3c, 0x0e, 0x0e, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x7e, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00 ], - [ 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x3c, 0x3c, 0x18, 0x18, 0x00, 0x00 ], - [ 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xd6, 0xd6, 0xfe, 0xfe, 0xee, 0xee, 0xc6, 0xc6, 0x00, 0x00 ], - [ 0xc3, 0xc3, 0x66, 0x66, 0x3c, 0x3c, 0x18, 0x18, 0x3c, 0x3c, 0x66, 0x66, 0xc3, 0xc3, 0x00, 0x00 ], - [ 0xc3, 0xc3, 0x66, 0x66, 0x3c, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00 ], - [ 0xfe, 0xfe, 0x0c, 0x0c, 0x18, 0x18, 0x30, 0x30, 0x60, 0x60, 0xc0, 0xc0, 0xfe, 0xfe, 0x00, 0x00 ], - [ 0x3c, 0x3c, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0xc0, 0xc0, 0x60, 0x60, 0x30, 0x30, 0x18, 0x18, 0x0c, 0x0c, 0x06, 0x06, 0x03, 0x03, 0x00, 0x00 ], - [ 0x3c, 0x3c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x10, 0x10, 0x38, 0x38, 0x6c, 0x6c, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe ], - [ 0x18, 0x18, 0x18, 0x18, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x3c, 0x3c, 0x06, 0x06, 0x3e, 0x3e, 0x66, 0x66, 0x3e, 0x3e, 0x00, 0x00 ], - [ 0x60, 0x60, 0x60, 0x60, 0x7c, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x7c, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x3c, 0x3c, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x06, 0x06, 0x06, 0x06, 0x3e, 0x3e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x3e, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x3c, 0x3c, 0x66, 0x66, 0x7e, 0x7e, 0x60, 0x60, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x1c, 0x1c, 0x30, 0x30, 0x7c, 0x7c, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x3e, 0x3e, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x3e, 0x06, 0x06, 0x3c, 0x3c ], - [ 0x60, 0x60, 0x60, 0x60, 0x7c, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00 ], - [ 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0c, 0x0c, 0x00, 0x00 ], - [ 0x0c, 0x0c, 0x00, 0x00, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x78, 0x78 ], - [ 0x60, 0x60, 0x60, 0x60, 0x66, 0x66, 0x6c, 0x6c, 0x78, 0x78, 0x6c, 0x6c, 0x66, 0x66, 0x00, 0x00 ], - [ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0c, 0x0c, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0xec, 0xec, 0xfe, 0xfe, 0xd6, 0xd6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x7c, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x3c, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x7c, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x7c, 0x60, 0x60, 0x60, 0x60 ], - [ 0x00, 0x00, 0x00, 0x00, 0x3e, 0x3e, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x3e, 0x06, 0x06, 0x06, 0x06 ], - [ 0x00, 0x00, 0x00, 0x00, 0x7c, 0x7c, 0x66, 0x66, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x3c, 0x3c, 0x60, 0x60, 0x3c, 0x3c, 0x06, 0x06, 0x7c, 0x7c, 0x00, 0x00 ], - [ 0x30, 0x30, 0x30, 0x30, 0x7c, 0x7c, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x1c, 0x1c, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x3e, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x18, 0x18, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xd6, 0xd6, 0xfe, 0xfe, 0x6c, 0x6c, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0x6c, 0x6c, 0x38, 0x38, 0x6c, 0x6c, 0xc6, 0xc6, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x18, 0x18, 0x30, 0x30 ], - [ 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x0c, 0x0c, 0x18, 0x18, 0x30, 0x30, 0x7e, 0x7e, 0x00, 0x00 ], - [ 0x0e, 0x0e, 0x18, 0x18, 0x18, 0x18, 0x70, 0x70, 0x18, 0x18, 0x18, 0x18, 0x0e, 0x0e, 0x00, 0x00 ], - [ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00 ], - [ 0x70, 0x70, 0x18, 0x18, 0x18, 0x18, 0x0e, 0x0e, 0x18, 0x18, 0x18, 0x18, 0x70, 0x70, 0x00, 0x00 ], - [ 0x72, 0x72, 0x9c, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x0f, 0x0f, 0x3c, 0x3c, 0xf0, 0xf0, 0xc3, 0xc3, 0x0f, 0x0f, 0x3c, 0x3c, 0xf0, 0xf0, 0x00, 0x00 ], - [ 0xcf, 0xcf, 0xe7, 0xe7, 0xc3, 0xc3, 0x99, 0x99, 0x81, 0x81, 0x99, 0x99, 0x99, 0x99, 0xff, 0xff ], - [ 0xf3, 0xf3, 0xe7, 0xe7, 0xc3, 0xc3, 0x99, 0x99, 0x81, 0x81, 0x99, 0x99, 0x99, 0x99, 0xff, 0xff ], - [ 0xe7, 0xe7, 0x99, 0x99, 0xc3, 0xc3, 0x99, 0x99, 0x81, 0x81, 0x99, 0x99, 0x99, 0x99, 0xff, 0xff ], - [ 0x8e, 0x8e, 0x71, 0x71, 0xc3, 0xc3, 0x99, 0x99, 0x81, 0x81, 0x99, 0x99, 0x99, 0x99, 0xff, 0xff ], - [ 0x99, 0x99, 0xff, 0xff, 0xc3, 0xc3, 0x99, 0x99, 0x81, 0x81, 0x99, 0x99, 0x99, 0x99, 0xff, 0xff ], - [ 0xe7, 0xe7, 0xdb, 0xdb, 0xc3, 0xc3, 0x99, 0x99, 0x81, 0x81, 0x99, 0x99, 0x99, 0x99, 0xff, 0xff ], - [ 0xe0, 0xe0, 0xc3, 0xc3, 0xc3, 0xc3, 0x90, 0x90, 0x83, 0x83, 0x33, 0x33, 0x30, 0x30, 0xff, 0xff ], - [ 0xe1, 0xe1, 0xcf, 0xcf, 0x9f, 0x9f, 0x9f, 0x9f, 0xcf, 0xcf, 0xe1, 0xe1, 0xf3, 0xf3, 0xe7, 0xe7 ], - [ 0xcf, 0xcf, 0xe7, 0xe7, 0x81, 0x81, 0x9f, 0x9f, 0x87, 0x87, 0x9f, 0x9f, 0x81, 0x81, 0xff, 0xff ], - [ 0xf3, 0xf3, 0xe7, 0xe7, 0x81, 0x81, 0x9f, 0x9f, 0x87, 0x87, 0x9f, 0x9f, 0x81, 0x81, 0xff, 0xff ], - [ 0xe7, 0xe7, 0x99, 0x99, 0x81, 0x81, 0x9f, 0x9f, 0x87, 0x87, 0x9f, 0x9f, 0x81, 0x81, 0xff, 0xff ], - [ 0x99, 0x99, 0xff, 0xff, 0x81, 0x81, 0x9f, 0x9f, 0x87, 0x87, 0x9f, 0x9f, 0x81, 0x81, 0xff, 0xff ], - [ 0xcf, 0xcf, 0xe7, 0xe7, 0xc3, 0xc3, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xc3, 0xc3, 0xff, 0xff ], - [ 0xf3, 0xf3, 0xe7, 0xe7, 0xc3, 0xc3, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xc3, 0xc3, 0xff, 0xff ], - [ 0xe7, 0xe7, 0x99, 0x99, 0xc3, 0xc3, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xc3, 0xc3, 0xff, 0xff ], - [ 0x99, 0x99, 0xff, 0xff, 0xc3, 0xc3, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xc3, 0xc3, 0xff, 0xff ], - [ 0x87, 0x87, 0x93, 0x93, 0x99, 0x99, 0x09, 0x09, 0x99, 0x99, 0x93, 0x93, 0x87, 0x87, 0xff, 0xff ], - [ 0x8e, 0x8e, 0x31, 0x31, 0x19, 0x19, 0x09, 0x09, 0x21, 0x21, 0x31, 0x31, 0x39, 0x39, 0xff, 0xff ], - [ 0xcf, 0xcf, 0xe7, 0xe7, 0xc3, 0xc3, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xc3, 0xc3, 0xff, 0xff ], - [ 0xf3, 0xf3, 0xe7, 0xe7, 0xc3, 0xc3, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xc3, 0xc3, 0xff, 0xff ], - [ 0xe7, 0xe7, 0x99, 0x99, 0xc3, 0xc3, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xc3, 0xc3, 0xff, 0xff ], - [ 0x8e, 0x8e, 0x71, 0x71, 0xc3, 0xc3, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xc3, 0xc3, 0xff, 0xff ], - [ 0x3c, 0x3c, 0xc3, 0xc3, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xc3, 0xc3, 0xff, 0xff ], - [ 0xff, 0xff, 0x39, 0x39, 0x93, 0x93, 0xc7, 0xc7, 0x93, 0x93, 0x39, 0x39, 0xff, 0xff, 0xff, 0xff ], - [ 0xc0, 0xc0, 0x99, 0x99, 0x91, 0x91, 0x81, 0x81, 0x89, 0x89, 0x99, 0x99, 0x03, 0x03, 0xff, 0xff ], - [ 0xcf, 0xcf, 0xe7, 0xe7, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xc3, 0xc3, 0xff, 0xff ], - [ 0xf3, 0xf3, 0xe7, 0xe7, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xc3, 0xc3, 0xff, 0xff ], - [ 0xe7, 0xe7, 0xdb, 0xdb, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xc3, 0xc3, 0xff, 0xff ], - [ 0x99, 0x99, 0xff, 0xff, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xc3, 0xc3, 0xff, 0xff ], - [ 0xf9, 0xf9, 0xf7, 0xf7, 0x3c, 0x3c, 0x99, 0x99, 0xc3, 0xc3, 0xe7, 0xe7, 0xe7, 0xe7, 0xff, 0xff ], - [ 0x3f, 0x3f, 0x3f, 0x3f, 0x03, 0x03, 0x39, 0x39, 0x03, 0x03, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff ], - [ 0xc3, 0xc3, 0x99, 0x99, 0x99, 0x99, 0x93, 0x93, 0x99, 0x99, 0x99, 0x99, 0x93, 0x93, 0x9f, 0x9f ], - [ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x80 ], - [ 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00 ], - [ 0x00, 0x00, 0x0c, 0x0c, 0x3e, 0x3e, 0x6c, 0x6c, 0x3e, 0x3e, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x1c, 0x1c, 0x36, 0x36, 0x30, 0x30, 0x78, 0x78, 0x30, 0x30, 0x30, 0x30, 0x7e, 0x7e, 0x00, 0x00 ], - [ 0x42, 0x42, 0x3c, 0x3c, 0x66, 0x66, 0x3c, 0x3c, 0x42, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0xc3, 0xc3, 0x66, 0x66, 0x3c, 0x3c, 0x18, 0x18, 0x3c, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00 ], - [ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00 ], - [ 0x3c, 0x3c, 0x60, 0x60, 0x3c, 0x3c, 0x66, 0x66, 0x3c, 0x3c, 0x06, 0x06, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x7e, 0x7e, 0x81, 0x81, 0x9d, 0x9d, 0xb1, 0xb1, 0x9d, 0x9d, 0x81, 0x81, 0x7e, 0x7e, 0x00, 0x00 ], - [ 0x1c, 0x1c, 0x24, 0x24, 0x44, 0x44, 0x3c, 0x3c, 0x00, 0x00, 0x7e, 0x7e, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x33, 0x33, 0x66, 0x66, 0xcc, 0xcc, 0x66, 0x66, 0x33, 0x33, 0x00, 0x00, 0x00, 0x00 ], - [ 0x3e, 0x3e, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x7e, 0x7e, 0x81, 0x81, 0xb9, 0xb9, 0xa5, 0xa5, 0xb9, 0xb9, 0xa5, 0xa5, 0x81, 0x81, 0x7e, 0x7e ], - [ 0x7e, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x3c, 0x3c, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x18, 0x18, 0x18, 0x18, 0x7e, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x7e, 0x7e, 0x00, 0x00 ], - [ 0x78, 0x78, 0x0c, 0x0c, 0x18, 0x18, 0x30, 0x30, 0x7c, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x78, 0x78, 0x0c, 0x0c, 0x18, 0x18, 0x0c, 0x0c, 0x78, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x18, 0x18, 0x30, 0x30, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7f, 0x7f, 0x60, 0x60 ], - [ 0x3e, 0x3e, 0x7a, 0x7a, 0x7a, 0x7a, 0x3a, 0x3a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30, 0x30 ], - [ 0x30, 0x30, 0x70, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x38, 0x38, 0x44, 0x44, 0x44, 0x44, 0x38, 0x38, 0x00, 0x00, 0x7c, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xcc, 0xcc, 0x66, 0x66, 0x33, 0x33, 0x66, 0x66, 0xcc, 0xcc, 0x00, 0x00, 0x00, 0x00 ], - [ 0x40, 0x40, 0xc6, 0xc6, 0x4c, 0x4c, 0x58, 0x58, 0x32, 0x32, 0x66, 0x66, 0xcf, 0xcf, 0x02, 0x02 ], - [ 0x40, 0x40, 0xc6, 0xc6, 0x4c, 0x4c, 0x58, 0x58, 0x3e, 0x3e, 0x62, 0x62, 0xc4, 0xc4, 0x0e, 0x0e ], - [ 0xc0, 0xc0, 0x23, 0x23, 0x66, 0x66, 0x2c, 0x2c, 0xd9, 0xd9, 0x33, 0x33, 0x67, 0x67, 0x01, 0x01 ], - [ 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x30, 0x30, 0x60, 0x60, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x30, 0x30, 0x18, 0x18, 0x3c, 0x3c, 0x66, 0x66, 0x7e, 0x7e, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00 ], - [ 0x0c, 0x0c, 0x18, 0x18, 0x3c, 0x3c, 0x66, 0x66, 0x7e, 0x7e, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00 ], - [ 0x18, 0x18, 0x66, 0x66, 0x3c, 0x3c, 0x66, 0x66, 0x7e, 0x7e, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00 ], - [ 0x71, 0x71, 0x8e, 0x8e, 0x3c, 0x3c, 0x66, 0x66, 0x7e, 0x7e, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00 ], - [ 0x66, 0x66, 0x00, 0x00, 0x3c, 0x3c, 0x66, 0x66, 0x7e, 0x7e, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00 ], - [ 0x18, 0x18, 0x24, 0x24, 0x3c, 0x3c, 0x66, 0x66, 0x7e, 0x7e, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00 ], - [ 0x1f, 0x1f, 0x3c, 0x3c, 0x3c, 0x3c, 0x6f, 0x6f, 0x7c, 0x7c, 0xcc, 0xcc, 0xcf, 0xcf, 0x00, 0x00 ], - [ 0x1e, 0x1e, 0x30, 0x30, 0x60, 0x60, 0x60, 0x60, 0x30, 0x30, 0x1e, 0x1e, 0x0c, 0x0c, 0x18, 0x18 ], - [ 0x30, 0x30, 0x18, 0x18, 0x7e, 0x7e, 0x60, 0x60, 0x78, 0x78, 0x60, 0x60, 0x7e, 0x7e, 0x00, 0x00 ], - [ 0x0c, 0x0c, 0x18, 0x18, 0x7e, 0x7e, 0x60, 0x60, 0x78, 0x78, 0x60, 0x60, 0x7e, 0x7e, 0x00, 0x00 ], - [ 0x18, 0x18, 0x66, 0x66, 0x7e, 0x7e, 0x60, 0x60, 0x78, 0x78, 0x60, 0x60, 0x7e, 0x7e, 0x00, 0x00 ], - [ 0x66, 0x66, 0x00, 0x00, 0x7e, 0x7e, 0x60, 0x60, 0x78, 0x78, 0x60, 0x60, 0x7e, 0x7e, 0x00, 0x00 ], - [ 0x30, 0x30, 0x18, 0x18, 0x3c, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x0c, 0x0c, 0x18, 0x18, 0x3c, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x18, 0x18, 0x66, 0x66, 0x3c, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x66, 0x66, 0x00, 0x00, 0x3c, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x78, 0x78, 0x6c, 0x6c, 0x66, 0x66, 0xf6, 0xf6, 0x66, 0x66, 0x6c, 0x6c, 0x78, 0x78, 0x00, 0x00 ], - [ 0x71, 0x71, 0xce, 0xce, 0xe6, 0xe6, 0xf6, 0xf6, 0xde, 0xde, 0xce, 0xce, 0xc6, 0xc6, 0x00, 0x00 ], - [ 0x30, 0x30, 0x18, 0x18, 0x3c, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x0c, 0x0c, 0x18, 0x18, 0x3c, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x18, 0x18, 0x66, 0x66, 0x3c, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x71, 0x71, 0x8e, 0x8e, 0x3c, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0xc3, 0xc3, 0x3c, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x00, 0x00, 0xc6, 0xc6, 0x6c, 0x6c, 0x38, 0x38, 0x6c, 0x6c, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00 ], - [ 0x3f, 0x3f, 0x66, 0x66, 0x6e, 0x6e, 0x7e, 0x7e, 0x76, 0x76, 0x66, 0x66, 0xfc, 0xfc, 0x00, 0x00 ], - [ 0x30, 0x30, 0x18, 0x18, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x0c, 0x0c, 0x18, 0x18, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x18, 0x18, 0x24, 0x24, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x06, 0x06, 0x08, 0x08, 0xc3, 0xc3, 0x66, 0x66, 0x3c, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00 ], - [ 0xc0, 0xc0, 0xc0, 0xc0, 0xfc, 0xfc, 0xc6, 0xc6, 0xfc, 0xfc, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00 ], - [ 0x3c, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x6c, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x6c, 0x6c, 0x60, 0x60 ], - [ 0x30, 0x30, 0x18, 0x18, 0x3c, 0x3c, 0x06, 0x06, 0x3e, 0x3e, 0x66, 0x66, 0x3e, 0x3e, 0x00, 0x00 ], - [ 0x0c, 0x0c, 0x18, 0x18, 0x3c, 0x3c, 0x06, 0x06, 0x3e, 0x3e, 0x66, 0x66, 0x3e, 0x3e, 0x00, 0x00 ], - [ 0x18, 0x18, 0x66, 0x66, 0x3c, 0x3c, 0x06, 0x06, 0x3e, 0x3e, 0x66, 0x66, 0x3e, 0x3e, 0x00, 0x00 ], - [ 0x71, 0x71, 0x8e, 0x8e, 0x3c, 0x3c, 0x06, 0x06, 0x3e, 0x3e, 0x66, 0x66, 0x3e, 0x3e, 0x00, 0x00 ], - [ 0x66, 0x66, 0x00, 0x00, 0x3c, 0x3c, 0x06, 0x06, 0x3e, 0x3e, 0x66, 0x66, 0x3e, 0x3e, 0x00, 0x00 ], - [ 0x18, 0x18, 0x24, 0x24, 0x3c, 0x3c, 0x06, 0x06, 0x3e, 0x3e, 0x66, 0x66, 0x3e, 0x3e, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x1b, 0x1b, 0x7f, 0x7f, 0xd8, 0xd8, 0x77, 0x77, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x3c, 0x3c, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x3c, 0x3c, 0x18, 0x18 ], - [ 0x30, 0x30, 0x18, 0x18, 0x3c, 0x3c, 0x66, 0x66, 0x7e, 0x7e, 0x60, 0x60, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x0c, 0x0c, 0x18, 0x18, 0x3c, 0x3c, 0x66, 0x66, 0x7e, 0x7e, 0x60, 0x60, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x18, 0x18, 0x66, 0x66, 0x3c, 0x3c, 0x66, 0x66, 0x7e, 0x7e, 0x60, 0x60, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x66, 0x66, 0x00, 0x00, 0x3c, 0x3c, 0x66, 0x66, 0x7e, 0x7e, 0x60, 0x60, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x30, 0x30, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0c, 0x0c, 0x00, 0x00 ], - [ 0x0c, 0x0c, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0c, 0x0c, 0x00, 0x00 ], - [ 0x18, 0x18, 0x66, 0x66, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0c, 0x0c, 0x00, 0x00 ], - [ 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0c, 0x0c, 0x00, 0x00 ], - [ 0x60, 0x60, 0xfc, 0xfc, 0x18, 0x18, 0x3c, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x71, 0x71, 0x8e, 0x8e, 0x00, 0x00, 0x7c, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00 ], - [ 0x30, 0x30, 0x18, 0x18, 0x00, 0x00, 0x3c, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x0c, 0x0c, 0x18, 0x18, 0x00, 0x00, 0x3c, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x18, 0x18, 0x66, 0x66, 0x00, 0x00, 0x3c, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x71, 0x71, 0x8e, 0x8e, 0x00, 0x00, 0x3c, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x3c, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x7e, 0x7e, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x02, 0x02, 0x7c, 0x7c, 0xce, 0xce, 0xd6, 0xd6, 0xe6, 0xe6, 0x7c, 0x7c, 0x80, 0x80 ], - [ 0x30, 0x30, 0x18, 0x18, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x3e, 0x00, 0x00 ], - [ 0x0c, 0x0c, 0x18, 0x18, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x3e, 0x00, 0x00 ], - [ 0x18, 0x18, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x3e, 0x00, 0x00 ], - [ 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x3e, 0x00, 0x00 ], - [ 0x0c, 0x0c, 0x18, 0x18, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x18, 0x18, 0x30, 0x30 ], - [ 0x60, 0x60, 0x60, 0x60, 0x7c, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x7c, 0x60, 0x60, 0x60, 0x60 ], - [ 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x18, 0x18, 0x30, 0x30 ] - ] - @height = 16 - @[k] = v for own k, v of options diff --git a/16col/fonts.js b/16col/fonts.js deleted file mode 100644 index c15577d..0000000 --- a/16col/fonts.js +++ /dev/null @@ -1,5 +0,0 @@ -// Generated by CoffeeScript 1.7.1 -(function() { - - -}).call(this); diff --git a/16col/idf.coffee b/16col/idf.coffee deleted file mode 100644 index 0ee5ead..0000000 --- a/16col/idf.coffee +++ /dev/null @@ -1,55 +0,0 @@ -class @ImageTextModeIDF extends @ImageTextMode - - constructor: ( options ) -> - super - @header = { x0: 0, x1: 0, y0: 0, y1: 0 } - this[k] = v for own k, v of options - - parse: ( content ) -> - headerData = content.substr( 0, 12 ) - if headerData.length isnt 12 || !headerData.match( '^\x041.4' ) - throw new Error( 'File is not an IDF' ) - - @header.x0 = @unpackShort( headerData.substr( 4, 2 ) ) - @header.y0 = @unpackShort( headerData.substr( 6, 2 ) ) - @header.x1 = @unpackShort( headerData.substr( 8, 2 ) ) - @header.y1 = @unpackShort( headerData.substr( 10, 2 ) ) - - eodata = content.length - 48 - 4096 - - if content.substr( content.length - 128, 5 ) == 'SAUCE' - eodata -= 128 - - @parseFontData( content.substr( eodata, 4096 ) ) - @parsePaletteData( content.substr( eodata + 4096, 48 ) ) - - y = 0 - x = 0 - @screen[ y ] = [] - offset = 12 - - while offset < eodata - buffer = content.substr( offset, 2 ) - info = @unpackShort( buffer ) - offset += 2 - len = 1 - - if info == 1 - len = @unpackShort( content.substr( offset, 2 ) ) & 255 - offset += 2 - buffer = content.substr( offset, 2 ) - offset += 2 - - ch = buffer.substr( 0, 1 ) - attr = @getByteAt( buffer, 1 ) - - for i in [ 1 .. len ] - @screen[ y ][ x ] = { 'ch': ch, 'attr': attr } - x++ - if x > @header.x1 - x = 0 - y++ - @screen[ y ] = [] - - @screen.pop() if @screen[ y ].length == 0 - diff --git a/16col/idf.js b/16col/idf.js deleted file mode 100644 index afc2d7c..0000000 --- a/16col/idf.js +++ /dev/null @@ -1,80 +0,0 @@ -// Generated by CoffeeScript 1.7.1 -(function() { - var __hasProp = {}.hasOwnProperty, - __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; - - this.ImageTextModeIDF = (function(_super) { - __extends(ImageTextModeIDF, _super); - - function ImageTextModeIDF(options) { - var k, v; - ImageTextModeIDF.__super__.constructor.apply(this, arguments); - this.header = { - x0: 0, - x1: 0, - y0: 0, - y1: 0 - }; - for (k in options) { - if (!__hasProp.call(options, k)) continue; - v = options[k]; - this[k] = v; - } - } - - ImageTextModeIDF.prototype.parse = function(content) { - var attr, buffer, ch, eodata, headerData, i, info, len, offset, x, y, _i; - headerData = content.substr(0, 12); - if (headerData.length !== 12 || !headerData.match('^\x041.4')) { - throw new Error('File is not an IDF'); - } - this.header.x0 = this.unpackShort(headerData.substr(4, 2)); - this.header.y0 = this.unpackShort(headerData.substr(6, 2)); - this.header.x1 = this.unpackShort(headerData.substr(8, 2)); - this.header.y1 = this.unpackShort(headerData.substr(10, 2)); - eodata = content.length - 48 - 4096; - if (content.substr(content.length - 128, 5) === 'SAUCE') { - eodata -= 128; - } - this.parseFontData(content.substr(eodata, 4096)); - this.parsePaletteData(content.substr(eodata + 4096, 48)); - y = 0; - x = 0; - this.screen[y] = []; - offset = 12; - while (offset < eodata) { - buffer = content.substr(offset, 2); - info = this.unpackShort(buffer); - offset += 2; - len = 1; - if (info === 1) { - len = this.unpackShort(content.substr(offset, 2)) & 255; - offset += 2; - buffer = content.substr(offset, 2); - offset += 2; - } - ch = buffer.substr(0, 1); - attr = this.getByteAt(buffer, 1); - for (i = _i = 1; 1 <= len ? _i <= len : _i >= len; i = 1 <= len ? ++_i : --_i) { - this.screen[y][x] = { - 'ch': ch, - 'attr': attr - }; - x++; - if (x > this.header.x1) { - x = 0; - y++; - this.screen[y] = []; - } - } - } - if (this.screen[y].length === 0) { - return this.screen.pop(); - } - }; - - return ImageTextModeIDF; - - })(this.ImageTextMode); - -}).call(this); diff --git a/16col/imgtxtmode.coffee b/16col/imgtxtmode.coffee deleted file mode 100644 index c109dc0..0000000 --- a/16col/imgtxtmode.coffee +++ /dev/null @@ -1,115 +0,0 @@ -class @ImageTextMode - - @VERSION = '0.01' - - constructor: ( options ) -> - @screen = [] - @palette = new ImageTextModePaletteVGA() - @font = new ImageTextModeFont8x16() - @[k] = v for own k, v of options - - parseUrl: ( url ) -> - req = new XMLHttpRequest() - req.open 'GET', url, false - req.overrideMimeType 'text/plain; charset=x-user-defined' - req.send null - content = if req.status is 200 or req.status is 0 then req.responseText else '' - @parse content - - unpackShort: ( data ) -> - shrt = ( @getByteAt( data, 1 ) << 8 ) + @getByteAt( data, 0 ) - if shrt < 0 - shrt += 65536 - shrt - - unpackLong: ( data ) -> - lng = ((( @getByteAt( data, 0 ) << 8 ) + @getByteAt( data, 1 ) << 8 ) + @getByteAt( data, 2 ) << 8 ) + @getByteAt( data, 3 ) - if lng < 0 - lng += 4294967296 - lng - - getByteAt: ( data, offset ) -> - data.charCodeAt( offset ) & 0xFF - -# could we replace this with math.max ? Not worth it,called once per view -# we COULD, but we'd do some crap like "Math.max.apply(null,blah) and that's not readable" - getWidth: -> - max = 0 - for y in [ 0 .. @screen.length - 1 ] - max = @screen[ y ].length if @screen[ y ]? && @screen[ y ].length > max - max - - getHeight: -> - @screen.length - - parsePaletteData: ( data ) -> - colors = [] - for i in [ 0 .. 45 ] by 3 - r = @getByteAt( data, i ) - r = r << 2 | r >> 4 - g = @getByteAt( data, i + 1 ) - g = g << 2 | g >> 4 - b = @getByteAt( data, i + 2 ) - b = b << 2 | b >> 4 - colors.push [ r, g, b ] - - @palette = new ImageTextModePalette( colors: colors ) - - parseFontData: ( data, height = 16 ) -> - chars = [] - for i in [ 0 ... data.length / height ] - chr = [] - for j in [ 0 ... height ] - chr.push @getByteAt( data, i * height + j ) - chars.push chr - @font = new ImageTextModeFont( { chars: chars, height: height } ) - -# the majority of time is spent in this routine -# list comprehension seems to speed up from 1.8 seconds to 1.29 seconds from first comprehension / cleanup? - - renderCanvas: ( canvasElem ) -> - w = @getWidth() * @font.width - h = @getHeight() * @font.height - - canvas = document.createElement 'canvas' - canvas.setAttribute 'width', w - canvas.setAttribute 'height', h - ctx = canvas.getContext '2d' - - for cy in [ 0 ... @screen.length ] - if @screen[ cy ]? - for cx in [ 0 ... @screen[ cy ].length ] - pixel = @screen[ cy ][ cx ] - curfillstyle = null - if pixel? - if pixel.attr? - fg = pixel.attr & 15 - bg = ( pixel.attr & 240 ) >> 4 - else - fg = pixel.fg - bg = pixel.bg - - px = cx * @font.width - py = cy * @font.height - - ctx.fillStyle = @palette.toRgbaString( @palette.colors[ bg ] ) - ctx.fillRect px, py, @font.width, @font.height - - ctx.fillStyle = @palette.toRgbaString( @palette.colors[ fg ] ) - chr = @font.chars[ pixel.ch.charCodeAt( 0 ) & 0xff ] - i = 0 - for line in chr - ctx.fillRect px + j, py + i, 1, 1 for j in [ 0 ... @font.width ] when line & (1 << @font.width - 1 - j ) - i += 1 - - canvasElem.setAttribute 'width', w - canvasElem.setAttribute 'height', h - ctx = canvasElem.getContext '2d' - ctx.drawImage canvas, 0, 0 - - toBinaryArray: (str) -> - buf = new ArrayBuffer(str.length * 2) # 2 bytes for each char - bufView = new Uint8Array(buf) - bufView[i] = str.charCodeAt(i) for i in [0...str.length] - buf - diff --git a/16col/imgtxtmode.js b/16col/imgtxtmode.js deleted file mode 100644 index b2db692..0000000 --- a/16col/imgtxtmode.js +++ /dev/null @@ -1,143 +0,0 @@ -// Generated by CoffeeScript 1.7.1 -(function() { - var __hasProp = {}.hasOwnProperty; - - this.VERSION = '0.01'; - - ({ - constructor: function(options) { - var k, v, _results; - this.screen = []; - this.palette = new ImageTextModePaletteVGA(); - this.font = new ImageTextModeFont8x16(); - _results = []; - for (k in options) { - if (!__hasProp.call(options, k)) continue; - v = options[k]; - _results.push(this[k] = v); - } - return _results; - }, - parseUrl: function(url) { - var content, req; - req = new XMLHttpRequest(); - req.open('GET', url, false); - req.overrideMimeType('text/plain; charset=x-user-defined'); - req.send(null); - content = req.status === 200 || req.status === 0 ? req.responseText : ''; - return this.parse(content); - }, - unpackShort: function(data) { - var shrt; - shrt = (this.getByteAt(data, 1) << 8) + this.getByteAt(data, 0); - if (shrt < 0) { - shrt += 65536; - } - return shrt; - }, - unpackLong: function(data) { - var lng; - lng = (((this.getByteAt(data, 0) << 8) + this.getByteAt(data, 1) << 8) + this.getByteAt(data, 2) << 8) + this.getByteAt(data, 3); - if (lng < 0) { - lng += 4294967296; - } - return lng; - }, - getByteAt: function(data, offset) { - return data.charCodeAt(offset) & 0xFF; - }, - getHeight: function() { - return this.screen.length; - }, - parsePaletteData: function(data) { - var b, colors, g, i, r, _i; - colors = []; - for (i = _i = 0; _i <= 45; i = _i += 3) { - r = this.getByteAt(data, i); - r = r << 2 | r >> 4; - g = this.getByteAt(data, i + 1); - g = g << 2 | g >> 4; - b = this.getByteAt(data, i + 2); - b = b << 2 | b >> 4; - colors.push([r, g, b]); - } - return this.palette = new ImageTextModePalette({ - colors: colors - }); - }, - parseFontData: function(data, height) { - var chars, chr, i, j, _i, _j, _ref; - if (height == null) { - height = 16; - } - chars = []; - for (i = _i = 0, _ref = data.length / height; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) { - chr = []; - for (j = _j = 0; 0 <= height ? _j < height : _j > height; j = 0 <= height ? ++_j : --_j) { - chr.push(this.getByteAt(data, i * height + j)); - } - chars.push(chr); - } - return this.font = new ImageTextModeFont({ - chars: chars, - height: height - }); - }, - renderCanvas: function(canvasElem) { - var bg, canvas, chr, ctx, curfillstyle, cx, cy, fg, h, i, j, line, pixel, px, py, w, _i, _j, _k, _l, _len, _ref, _ref1, _ref2; - w = this.getWidth() * this.font.width; - h = this.getHeight() * this.font.height; - canvas = document.createElement('canvas'); - canvas.setAttribute('width', w); - canvas.setAttribute('height', h); - ctx = canvas.getContext('2d'); - for (cy = _i = 0, _ref = this.screen.length; 0 <= _ref ? _i < _ref : _i > _ref; cy = 0 <= _ref ? ++_i : --_i) { - if (this.screen[cy] != null) { - for (cx = _j = 0, _ref1 = this.screen[cy].length; 0 <= _ref1 ? _j < _ref1 : _j > _ref1; cx = 0 <= _ref1 ? ++_j : --_j) { - pixel = this.screen[cy][cx]; - curfillstyle = null; - if (pixel != null) { - if (pixel.attr != null) { - fg = pixel.attr & 15; - bg = (pixel.attr & 240) >> 4; - } else { - fg = pixel.fg; - bg = pixel.bg; - } - px = cx * this.font.width; - py = cy * this.font.height; - ctx.fillStyle = this.palette.toRgbaString(this.palette.colors[bg]); - ctx.fillRect(px, py, this.font.width, this.font.height); - ctx.fillStyle = this.palette.toRgbaString(this.palette.colors[fg]); - chr = this.font.chars[pixel.ch.charCodeAt(0) & 0xff]; - i = 0; - for (_k = 0, _len = chr.length; _k < _len; _k++) { - line = chr[_k]; - for (j = _l = 0, _ref2 = this.font.width; 0 <= _ref2 ? _l < _ref2 : _l > _ref2; j = 0 <= _ref2 ? ++_l : --_l) { - if (line & (1 << this.font.width - 1 - j)) { - ctx.fillRect(px + j, py + i, 1, 1); - } - } - i += 1; - } - } - } - } - } - canvasElem.setAttribute('width', w); - canvasElem.setAttribute('height', h); - ctx = canvasElem.getContext('2d'); - return ctx.drawImage(canvas, 0, 0); - }, - toBinaryArray: function(str) { - var buf, bufView, i, _i, _ref; - buf = new ArrayBuffer(str.length * 2); - bufView = new Uint8Array(buf); - for (i = _i = 0, _ref = str.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) { - bufView[i] = str.charCodeAt(i); - } - return buf; - } - }); - -}).call(this); diff --git a/16col/pallette.coffee b/16col/pallette.coffee deleted file mode 100644 index f3d738d..0000000 --- a/16col/pallette.coffee +++ /dev/null @@ -1,62 +0,0 @@ -class @ImageTextModePalette - - constructor: ( options ) -> - @colors = [] - @[k] = v for own k, v of options - - toRgbaString: ( color ) -> - return 'rgba(' + color.join( ',' ) + ',1)'; - -# getting a "cannot call super outside an instance method" error here - -# the resulting code produced does not end up using the super/parent bit -# or at least it doesn't produce bugs in the result if it is not here. -# calling the constructor without super works, and with super the difference is -# ImageTextModePaletteVGA.__super__.constructor.apply(this, arguments); -# is placed inside the constructor. I believe the end result, based on how -# this is used, is identical. -# I am not seeing this pattern (the 'super by itself') being used or referenced -# - instead I am seeting very different patterns using super to reference -# complete items. (referenced meaning "in books, searches, or coffescript -# documentation") - -class @ImageTextModePaletteVGA extends @ImageTextModePalette - constructor: (options) -> - @colors = [ - [ 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xaa ], - [ 0x00, 0xaa, 0x00 ], - [ 0x00, 0xaa, 0xaa ], - [ 0xaa, 0x00, 0x00 ], - [ 0xaa, 0x00, 0xaa ], - [ 0xaa, 0x55, 0x00 ], - [ 0xaa, 0xaa, 0xaa ], - [ 0x55, 0x55, 0x55 ], - [ 0x55, 0x55, 0xff ], - [ 0x55, 0xff, 0x55 ], - [ 0x55, 0xff, 0xff ], - [ 0xff, 0x55, 0x55 ], - [ 0xff, 0x55, 0xff ], - [ 0xff, 0xff, 0x55 ], - [ 0xff, 0xff, 0xff ] - ] - -class @ImageTextModePaletteANSI extends @ImageTextModePalette - constructor: (options) -> - @colors = [ - [ 0x00, 0x00, 0x00 ], - [ 0xaa, 0x00, 0x00 ], - [ 0x00, 0xaa, 0x00 ], - [ 0xaa, 0x55, 0x00 ], - [ 0x00, 0x00, 0xaa ], - [ 0xaa, 0x00, 0xaa ], - [ 0x00, 0xaa, 0xaa ], - [ 0xaa, 0xaa, 0xaa ], - [ 0x55, 0x55, 0x55 ], - [ 0xff, 0x55, 0x55 ], - [ 0x55, 0xff, 0x55 ], - [ 0xff, 0xff, 0x55 ], - [ 0x55, 0x55, 0xff ], - [ 0xff, 0x55, 0xff ], - [ 0x55, 0xff, 0xff ], - [ 0xff, 0xff, 0xff ] - ] \ No newline at end of file diff --git a/16col/pallette.js b/16col/pallette.js deleted file mode 100644 index e5fd7b7..0000000 --- a/16col/pallette.js +++ /dev/null @@ -1,22 +0,0 @@ -// Generated by CoffeeScript 1.7.1 -(function() { - var __hasProp = {}.hasOwnProperty; - - ({ - constructor: function(options) { - var k, v, _results; - this.colors = []; - _results = []; - for (k in options) { - if (!__hasProp.call(options, k)) continue; - v = options[k]; - _results.push(this[k] = v); - } - return _results; - }, - toRgbaString: function(color) { - return 'rgba(' + color.join(',') + ',1)'; - } - }); - -}).call(this); diff --git a/16col/pcboard.coffee b/16col/pcboard.coffee deleted file mode 100644 index e1e370d..0000000 --- a/16col/pcboard.coffee +++ /dev/null @@ -1,67 +0,0 @@ - -class @ImageTextModePCBoard extends @ImageTextMode - - constructor: ( options ) -> - super - @tabstop = 8 - @linewrap = 80 - @codes = { POFF: '', WAIT: '' } - this[k] = v for own k, v of options - - parse: ( content ) -> - @screen = [] - @state = 0 - @x = 0 - @y = 0 - @attr = 7 - - for key, val of @codes - code = new RegExp '@' + key + '@', 'g' - content.replace code, val - - content = content.split( '' ) - while ch = content.shift() - if @state is 0 - switch ch - when "\x1a" then @state = 2 - when '@' then @state = 1 - when "\n" - @x = 0 - @y++ - when "\r" then break - when "\t" - i = ( @x + 1 ) % @tabstop - @putpixel ' ' while i-- > 0 - else - @putpixel ch - else if @state is 1 - if ch is 'X' - @attr = ( parseInt( content.shift(), 16 ) << 4 ) + parseInt( content.shift(), 16 ) - else if ch + content[ 0..2 ].join( '' ) is 'CLS@' - content.shift() for [ 1 .. 3 ] - @screen = [] - else if ch + content[ 0..2 ].join( '' ) is 'POS:' - content.shift() for [ 1 .. 3 ] - @x = content.shift() - @x += content.shift() if content[ 0 ] isnt '@' - @x-- - - content.shift() - else - @putpixel '@' - @putpixel ch - - @state = 0 - else if @state is 2 - break - else - @state = 0 - - putpixel: ( ch ) -> - @screen[ @y ] = [] if !@screen[ @y ]? - @screen[ @y ][ @x ] = { ch: ch, attr: @attr } - - if ++@x >= @linewrap - @x = 0 - @y++ - diff --git a/16col/pcboard.js b/16col/pcboard.js deleted file mode 100644 index 1ea273f..0000000 --- a/16col/pcboard.js +++ /dev/null @@ -1,119 +0,0 @@ -// Generated by CoffeeScript 1.7.1 -(function() { - var __hasProp = {}.hasOwnProperty, - __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; - - this.ImageTextModePCBoard = (function(_super) { - __extends(ImageTextModePCBoard, _super); - - function ImageTextModePCBoard(options) { - var k, v; - ImageTextModePCBoard.__super__.constructor.apply(this, arguments); - this.tabstop = 8; - this.linewrap = 80; - this.codes = { - POFF: '', - WAIT: '' - }; - for (k in options) { - if (!__hasProp.call(options, k)) continue; - v = options[k]; - this[k] = v; - } - } - - ImageTextModePCBoard.prototype.parse = function(content) { - var ch, code, i, key, val, _i, _j, _ref, _results; - this.screen = []; - this.state = 0; - this.x = 0; - this.y = 0; - this.attr = 7; - _ref = this.codes; - for (key in _ref) { - val = _ref[key]; - code = new RegExp('@' + key + '@', 'g'); - content.replace(code, val); - } - content = content.split(''); - _results = []; - while (ch = content.shift()) { - if (this.state === 0) { - switch (ch) { - case "\x1a": - _results.push(this.state = 2); - break; - case '@': - _results.push(this.state = 1); - break; - case "\n": - this.x = 0; - _results.push(this.y++); - break; - case "\r": - break; - case "\t": - i = (this.x + 1) % this.tabstop; - _results.push((function() { - var _results1; - _results1 = []; - while (i-- > 0) { - _results1.push(this.putpixel(' ')); - } - return _results1; - }).call(this)); - break; - default: - _results.push(this.putpixel(ch)); - } - } else if (this.state === 1) { - if (ch === 'X') { - this.attr = (parseInt(content.shift(), 16) << 4) + parseInt(content.shift(), 16); - } else if (ch + content.slice(0, 3).join('') === 'CLS@') { - for (_i = 1; _i <= 3; _i++) { - content.shift(); - } - this.screen = []; - } else if (ch + content.slice(0, 3).join('') === 'POS:') { - for (_j = 1; _j <= 3; _j++) { - content.shift(); - } - this.x = content.shift(); - if (content[0] !== '@') { - this.x += content.shift(); - } - this.x--; - content.shift(); - } else { - this.putpixel('@'); - this.putpixel(ch); - } - _results.push(this.state = 0); - } else if (this.state === 2) { - break; - } else { - _results.push(this.state = 0); - } - } - return _results; - }; - - ImageTextModePCBoard.prototype.putpixel = function(ch) { - if (this.screen[this.y] == null) { - this.screen[this.y] = []; - } - this.screen[this.y][this.x] = { - ch: ch, - attr: this.attr - }; - if (++this.x >= this.linewrap) { - this.x = 0; - return this.y++; - } - }; - - return ImageTextModePCBoard; - - })(this.ImageTextMode); - -}).call(this); diff --git a/16col/sauce.coffee b/16col/sauce.coffee deleted file mode 100644 index dad1590..0000000 --- a/16col/sauce.coffee +++ /dev/null @@ -1,56 +0,0 @@ -class @ImageTextModeSAUCE - - parseUrl: ( url ) -> - req = new XMLHttpRequest() - req.open 'GET', url, false - req.overrideMimeType 'text/plain; charset=x-user-defined' - req.send null - content = if req.status is 200 or req.status is 0 then req.responseText else '' - @parse content - - parse: ( content ) -> - sauceMarker = content.length - 128; - return false if content.substr( sauceMarker, 5 ) isnt 'SAUCE' - @id = 'SAUCE' - @version = content.substr( sauceMarker + 5, 2 ) - @title = content.substr( sauceMarker + 7, 35 ) - @author = content.substr( sauceMarker + 42, 20 ) - @group = content.substr( sauceMarker + 62, 20 ) - @date = content.substr( sauceMarker + 82, 8 ) - @fileSize = @unpackLong content.substr( sauceMarker + 90, 4 ) - @dataType = @getByteAt content.substr( sauceMarker + 94, 1 ) - @fileType = @getByteAt content.substr( sauceMarker + 95, 1 ) - @tinfo1 = @unpackShort content.substr( sauceMarker + 96, 2 ) - @tinfo2 = @unpackShort content.substr( sauceMarker + 98, 2 ) - @tinfo3 = @unpackShort content.substr( sauceMarker + 100, 2 ) - @tinfo4 = @unpackShort content.substr( sauceMarker + 102, 2 ) - @commentCount = @getByteAt content.substr( sauceMarker + 104, 1 ) - @flags = @getByteAt content.substr( sauceMarker + 105, 1 ) - @filler = content.substr( sauceMarker + 106, 22 ) - - commentMarker = sauceMarker - 5 - @commentCount * 64 - if @commentCount > 0 and content.substr( commentMarker, 5 ) is 'COMNT' - commentMarker += 5 - @comments = [] - i = @commentCount - while i-- > 0 - @comments.push content.substr( commentMarker, 64 ) - commentMarker += 64 - - return true - - unpackLong: ( data ) -> - lng = ((( @getByteAt( data, 3 ) << 8 ) + @getByteAt( data, 2 ) << 8 ) + @getByteAt( data, 1 ) << 8 ) + @getByteAt( data, 0 ) - if lng < 0 - lng += 4294967296 - return lng; - - unpackShort: ( data ) -> - shrt = ( @getByteAt( data, 1 ) << 8 ) + @getByteAt( data, 0 ) - if shrt < 0 - shrt += 65536 - return shrt - - getByteAt: ( data, offset ) -> - return data.charCodeAt( offset ) & 0xFF - diff --git a/16col/sauce.js b/16col/sauce.js deleted file mode 100644 index a75bf99..0000000 --- a/16col/sauce.js +++ /dev/null @@ -1,68 +0,0 @@ -// Generated by CoffeeScript 1.7.1 -(function() { - ({ - parseUrl: function(url) { - var content, req; - req = new XMLHttpRequest(); - req.open('GET', url, false); - req.overrideMimeType('text/plain; charset=x-user-defined'); - req.send(null); - content = req.status === 200 || req.status === 0 ? req.responseText : ''; - return this.parse(content); - }, - parse: function(content) { - var commentMarker, i, sauceMarker; - sauceMarker = content.length - 128; - if (content.substr(sauceMarker, 5) !== 'SAUCE') { - return false; - } - this.id = 'SAUCE'; - this.version = content.substr(sauceMarker + 5, 2); - this.title = content.substr(sauceMarker + 7, 35); - this.author = content.substr(sauceMarker + 42, 20); - this.group = content.substr(sauceMarker + 62, 20); - this.date = content.substr(sauceMarker + 82, 8); - this.fileSize = this.unpackLong(content.substr(sauceMarker + 90, 4)); - this.dataType = this.getByteAt(content.substr(sauceMarker + 94, 1)); - this.fileType = this.getByteAt(content.substr(sauceMarker + 95, 1)); - this.tinfo1 = this.unpackShort(content.substr(sauceMarker + 96, 2)); - this.tinfo2 = this.unpackShort(content.substr(sauceMarker + 98, 2)); - this.tinfo3 = this.unpackShort(content.substr(sauceMarker + 100, 2)); - this.tinfo4 = this.unpackShort(content.substr(sauceMarker + 102, 2)); - this.commentCount = this.getByteAt(content.substr(sauceMarker + 104, 1)); - this.flags = this.getByteAt(content.substr(sauceMarker + 105, 1)); - this.filler = content.substr(sauceMarker + 106, 22); - commentMarker = sauceMarker - 5 - this.commentCount * 64; - if (this.commentCount > 0 && content.substr(commentMarker, 5) === 'COMNT') { - commentMarker += 5; - this.comments = []; - i = this.commentCount; - while (i-- > 0) { - this.comments.push(content.substr(commentMarker, 64)); - commentMarker += 64; - } - } - return true; - }, - unpackLong: function(data) { - var lng; - lng = (((this.getByteAt(data, 3) << 8) + this.getByteAt(data, 2) << 8) + this.getByteAt(data, 1) << 8) + this.getByteAt(data, 0); - if (lng < 0) { - lng += 4294967296; - } - return lng; - }, - unpackShort: function(data) { - var shrt; - shrt = (this.getByteAt(data, 1) << 8) + this.getByteAt(data, 0); - if (shrt < 0) { - shrt += 65536; - } - return shrt; - }, - getByteAt: function(data, offset) { - return data.charCodeAt(offset) & 0xFF; - } - }); - -}).call(this); diff --git a/16col/tundra.coffee b/16col/tundra.coffee deleted file mode 100644 index b1960b7..0000000 --- a/16col/tundra.coffee +++ /dev/null @@ -1,70 +0,0 @@ - -class @ImageTextModeTundra extends @ImageTextMode - - constructor: ( options ) -> - super - this[k] = v for own k, v of options - - parse: ( content ) -> - colors = [ [ 0, 0, 0 ] ] - palidx = 1 - x = 0 - y = 0 - fg = 0 - bg = 0 - - @screen[ y ] = [] - content = content.substr( 8 ).split( '' ) - while command = content.shift() - break if command == "\x1a" - command = command.charCodeAt( 0 ) - - if command is 1 - y = @unpackLong( content.splice( 0, 4 ).join( '' ) ) - x = @unpackLong( content.splice( 0, 4 ).join( '' ) ) - @screen[ y ] = [] if !@screen[ y ]? - continue - - ch = null - - if command is 2 - ch = content.shift() - rgb = @unpackLong( content.splice( 0, 4 ).join( '' ) ) - fg = palidx++ - colors.push [ - ( rgb >> 16 ) & 0x000000ff, - ( rgb >> 8 ) & 0x000000ff, - rgb & 0x000000ff - ] - else if command is 4 - ch = content.shift() - rgb = @unpackLong( content.splice( 0, 4 ).join( '' ) ) - bg = palidx++ - colors.push [ - ( rgb >> 16 ) & 0x000000ff, - ( rgb >> 8 ) & 0x000000ff, - rgb & 0x000000ff - ] - else if command is 6 - ch = content.shift() - fg = palidx++ - bg = palidx++ - for [ 0 .. 1 ] - rgb = @unpackLong( content.splice( 0, 4 ).join( '' ) ) - colors.push [ - ( rgb >> 16 ) & 0x000000ff, - ( rgb >> 8 ) & 0x000000ff, - rgb & 0x000000ff - ] - - ch = String.fromCharCode( command ) unless ch? - - @screen[ y ][ x ] = { 'ch': ch, 'fg': fg, 'bg': bg } - x++ - if x == 80 - x = 0 - y++ - @screen[ y ] = [] - - @screen.pop() if @screen[ y ].length == 0 - @palette = new ImageTextModePalette( { colors: colors } ) diff --git a/16col/tundra.js b/16col/tundra.js deleted file mode 100644 index 043a303..0000000 --- a/16col/tundra.js +++ /dev/null @@ -1,89 +0,0 @@ -// Generated by CoffeeScript 1.7.1 -(function() { - var __hasProp = {}.hasOwnProperty, - __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; - - this.ImageTextModeTundra = (function(_super) { - __extends(ImageTextModeTundra, _super); - - function ImageTextModeTundra(options) { - var k, v; - ImageTextModeTundra.__super__.constructor.apply(this, arguments); - for (k in options) { - if (!__hasProp.call(options, k)) continue; - v = options[k]; - this[k] = v; - } - } - - ImageTextModeTundra.prototype.parse = function(content) { - var bg, ch, colors, command, fg, palidx, rgb, x, y, _i; - colors = [[0, 0, 0]]; - palidx = 1; - x = 0; - y = 0; - fg = 0; - bg = 0; - this.screen[y] = []; - content = content.substr(8).split(''); - while (command = content.shift()) { - if (command === "\x1a") { - break; - } - command = command.charCodeAt(0); - if (command === 1) { - y = this.unpackLong(content.splice(0, 4).join('')); - x = this.unpackLong(content.splice(0, 4).join('')); - if (this.screen[y] == null) { - this.screen[y] = []; - } - continue; - } - ch = null; - if (command === 2) { - ch = content.shift(); - rgb = this.unpackLong(content.splice(0, 4).join('')); - fg = palidx++; - colors.push([(rgb >> 16) & 0x000000ff, (rgb >> 8) & 0x000000ff, rgb & 0x000000ff]); - } else if (command === 4) { - ch = content.shift(); - rgb = this.unpackLong(content.splice(0, 4).join('')); - bg = palidx++; - colors.push([(rgb >> 16) & 0x000000ff, (rgb >> 8) & 0x000000ff, rgb & 0x000000ff]); - } else if (command === 6) { - ch = content.shift(); - fg = palidx++; - bg = palidx++; - for (_i = 0; _i <= 1; _i++) { - rgb = this.unpackLong(content.splice(0, 4).join('')); - colors.push([(rgb >> 16) & 0x000000ff, (rgb >> 8) & 0x000000ff, rgb & 0x000000ff]); - } - } - if (ch == null) { - ch = String.fromCharCode(command); - } - this.screen[y][x] = { - 'ch': ch, - 'fg': fg, - 'bg': bg - }; - x++; - if (x === 80) { - x = 0; - y++; - this.screen[y] = []; - } - } - if (this.screen[y].length === 0) { - this.screen.pop(); - } - return this.palette = new ImageTextModePalette({ - colors: colors - }); - }; - - return ImageTextModeTundra; - - })(this.ImageTextMode); - -}).call(this); diff --git a/16col/xbin.coffee b/16col/xbin.coffee deleted file mode 100644 index 4faa076..0000000 --- a/16col/xbin.coffee +++ /dev/null @@ -1,117 +0,0 @@ - -class @ImageTextModeXBin extends @ImageTextMode - - # Header constants - PALETTE = 1 - FONT = 2 - COMPRESSED = 4 - NON_BLINK = 8 - FIVETWELVE_CHARS = 16 - - # Compression type constants - NO_COMPRESSION = 0 - CHARACTER_COMPRESSION = 64 - ATTRIBUTE_COMPRESSION = 128 - FULL_COMPRESSION = 192 - - # Compression byte constants - COMPRESSION_TYPE = 192 - COMPRESSION_COUNTER = 63 - - constructor: ( options ) -> - super - @header = { width: 0, height: 0, fontisze: 0, flags: 0 } - this[k] = v for own k, v of options - - parse: ( content ) -> - @screen = [] - headerData = content.substr( 0, 11 ) - if headerData.length isnt 11 || !headerData.match( '^XBIN\x1a' ) - throw new Error( 'File is not an XBin' ) - - @header.width = @unpackShort( headerData.substr( 5, 2 ) ) - @header.height = @unpackShort( headerData.substr( 7, 2 ) ) - @header.fontsize = @getByteAt( headerData.substr( 9, 1 ) ) - @header.flags = @getByteAt( headerData.substr( 10, 1 ) ) - offset = 11 - - if @header.flags & PALETTE - @parsePaletteData( content.substr( offset, 48 ) ); - offset += 48 - - if @header.flags & FONT - fontlength = @header.fontsize - if @header.flags & FIVETWELVE_CHARS - fontlength *= 512 - else - fontlength *= 256 - @parseFontData( content.substr( offset, fontlength ), @header.fontsize ); - offset += fontlength - - if @header.flags & COMPRESSED - @_parse_compressed( content.substr( offset ) ) - else - @_parse_uncompressed( content.substr( offset ) ) - - _parse_compressed: ( data ) -> - x = 0 - y = 0 - @screen[ y ] = [] - - data = data.split( '' ) - while info = data.shift() - info = @getByteAt( info, 0 ) - break if info == 26 - - type = info & COMPRESSION_TYPE - counter = ( info & COMPRESSION_COUNTER ) + 1 - - ch = null - attr = null - - while counter-- > 0 - switch type - when NO_COMPRESSION - ch = data.shift() - attr = data.shift() - when CHARACTER_COMPRESSION - ch = data.shift() if !ch? - attr = data.shift() - when ATTRIBUTE_COMPRESSION - attr = data.shift() if !attr? - ch = data.shift() - else - ch = data.shift() if !ch? - attr = data.shift() if !attr? - - @screen[ y ][ x ] = { ch: ch, attr: @getByteAt( attr, 0 ) } - - x++ - if x == @header.width - x = 0 - y++ - break if y == @header.height - @screen[ y ] = [] if !@screen[ y ]? - - _parse_uncompressed: ( data ) -> - x = 0 - y = 0 - @screen[ y ] = [] - - for i in [ 0 .. data.length - 2 ] by 2 - ch = data.substr( i, 1 ) - break if ch == "\x1a" - attr = @getByteAt( data, i + 1 ) - @screen[ y ][ x ] = { 'ch': ch, 'attr': attr } - x++ - if x == @header.width - x = 0 - y++ - break if y == @header.height - @screen[ y ] = [] if !@screen[ y ]? - - getWidth: -> - return @header.width - - getHeight: -> - return @header.height diff --git a/16col/xbin.js b/16col/xbin.js deleted file mode 100644 index eb5a6cb..0000000 --- a/16col/xbin.js +++ /dev/null @@ -1,200 +0,0 @@ -// Generated by CoffeeScript 1.7.1 -(function() { - var __hasProp = {}.hasOwnProperty, - __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; - - this.ImageTextModeXBin = (function(_super) { - var ATTRIBUTE_COMPRESSION, CHARACTER_COMPRESSION, COMPRESSED, COMPRESSION_COUNTER, COMPRESSION_TYPE, FIVETWELVE_CHARS, FONT, FULL_COMPRESSION, NON_BLINK, NO_COMPRESSION, PALETTE; - - __extends(ImageTextModeXBin, _super); - - PALETTE = 1; - - FONT = 2; - - COMPRESSED = 4; - - NON_BLINK = 8; - - FIVETWELVE_CHARS = 16; - - NO_COMPRESSION = 0; - - CHARACTER_COMPRESSION = 64; - - ATTRIBUTE_COMPRESSION = 128; - - FULL_COMPRESSION = 192; - - COMPRESSION_TYPE = 192; - - COMPRESSION_COUNTER = 63; - - function ImageTextModeXBin(options) { - var k, v; - ImageTextModeXBin.__super__.constructor.apply(this, arguments); - this.header = { - width: 0, - height: 0, - fontisze: 0, - flags: 0 - }; - for (k in options) { - if (!__hasProp.call(options, k)) continue; - v = options[k]; - this[k] = v; - } - } - - ImageTextModeXBin.prototype.parse = function(content) { - var fontlength, headerData, offset; - this.screen = []; - headerData = content.substr(0, 11); - if (headerData.length !== 11 || !headerData.match('^XBIN\x1a')) { - throw new Error('File is not an XBin'); - } - this.header.width = this.unpackShort(headerData.substr(5, 2)); - this.header.height = this.unpackShort(headerData.substr(7, 2)); - this.header.fontsize = this.getByteAt(headerData.substr(9, 1)); - this.header.flags = this.getByteAt(headerData.substr(10, 1)); - offset = 11; - if (this.header.flags & PALETTE) { - this.parsePaletteData(content.substr(offset, 48)); - offset += 48; - } - if (this.header.flags & FONT) { - fontlength = this.header.fontsize; - if (this.header.flags & FIVETWELVE_CHARS) { - fontlength *= 512; - } else { - fontlength *= 256; - } - this.parseFontData(content.substr(offset, fontlength), this.header.fontsize); - offset += fontlength; - } - if (this.header.flags & COMPRESSED) { - return this._parse_compressed(content.substr(offset)); - } else { - return this._parse_uncompressed(content.substr(offset)); - } - }; - - ImageTextModeXBin.prototype._parse_compressed = function(data) { - var attr, ch, counter, info, type, x, y, _results; - x = 0; - y = 0; - this.screen[y] = []; - data = data.split(''); - _results = []; - while (info = data.shift()) { - info = this.getByteAt(info, 0); - if (info === 26) { - break; - } - type = info & COMPRESSION_TYPE; - counter = (info & COMPRESSION_COUNTER) + 1; - ch = null; - attr = null; - _results.push((function() { - var _results1; - _results1 = []; - while (counter-- > 0) { - switch (type) { - case NO_COMPRESSION: - ch = data.shift(); - attr = data.shift(); - break; - case CHARACTER_COMPRESSION: - if (ch == null) { - ch = data.shift(); - } - attr = data.shift(); - break; - case ATTRIBUTE_COMPRESSION: - if (attr == null) { - attr = data.shift(); - } - ch = data.shift(); - break; - default: - if (ch == null) { - ch = data.shift(); - } - if (attr == null) { - attr = data.shift(); - } - } - this.screen[y][x] = { - ch: ch, - attr: this.getByteAt(attr, 0) - }; - x++; - if (x === this.header.width) { - x = 0; - y++; - if (y === this.header.height) { - break; - } - if (this.screen[y] == null) { - _results1.push(this.screen[y] = []); - } else { - _results1.push(void 0); - } - } else { - _results1.push(void 0); - } - } - return _results1; - }).call(this)); - } - return _results; - }; - - ImageTextModeXBin.prototype._parse_uncompressed = function(data) { - var attr, ch, i, x, y, _i, _ref, _results; - x = 0; - y = 0; - this.screen[y] = []; - _results = []; - for (i = _i = 0, _ref = data.length - 2; _i <= _ref; i = _i += 2) { - ch = data.substr(i, 1); - if (ch === "\x1a") { - break; - } - attr = this.getByteAt(data, i + 1); - this.screen[y][x] = { - 'ch': ch, - 'attr': attr - }; - x++; - if (x === this.header.width) { - x = 0; - y++; - if (y === this.header.height) { - break; - } - if (this.screen[y] == null) { - _results.push(this.screen[y] = []); - } else { - _results.push(void 0); - } - } else { - _results.push(void 0); - } - } - return _results; - }; - - ImageTextModeXBin.prototype.getWidth = function() { - return this.header.width; - }; - - ImageTextModeXBin.prototype.getHeight = function() { - return this.header.height; - }; - - return ImageTextModeXBin; - - })(this.ImageTextMode); - -}).call(this); diff --git a/textmode.coffee b/textmode.coffee deleted file mode 100644 index e2749f5..0000000 --- a/textmode.coffee +++ /dev/null @@ -1,1980 +0,0 @@ -class @ImageTextMode - - @VERSION = '0.01' - - constructor: ( options ) -> - @screen = [] - @palette = new ImageTextModePaletteVGA() - @font = new ImageTextModeFont8x16() - @[k] = v for own k, v of options - - parseUrl: ( url ) -> - req = new XMLHttpRequest() - req.open 'GET', url, false - req.overrideMimeType 'text/plain; charset=x-user-defined' - req.send null - content = if req.status is 200 or req.status is 0 then req.responseText else '' - @parse content - - unpackShort: ( data ) -> - shrt = ( @getByteAt( data, 1 ) << 8 ) + @getByteAt( data, 0 ) - if shrt < 0 - shrt += 65536 - shrt - - unpackLong: ( data ) -> - lng = ((( @getByteAt( data, 0 ) << 8 ) + @getByteAt( data, 1 ) << 8 ) + @getByteAt( data, 2 ) << 8 ) + @getByteAt( data, 3 ) - if lng < 0 - lng += 4294967296 - lng - - getByteAt: ( data, offset ) -> - data.charCodeAt( offset ) & 0xFF - -# could we replace this with math.max ? Not worth it,called once per view -# we COULD, but we'd do some crap like "Math.max.apply(null,blah) and that's not readable" - getWidth: -> - max = 0 - for y in [ 0 .. @screen.length - 1 ] - max = @screen[ y ].length if @screen[ y ]? && @screen[ y ].length > max - max - - getHeight: -> - @screen.length - - parsePaletteData: ( data ) -> - colors = [] - for i in [ 0 .. 45 ] by 3 - r = @getByteAt( data, i ) - r = r << 2 | r >> 4 - g = @getByteAt( data, i + 1 ) - g = g << 2 | g >> 4 - b = @getByteAt( data, i + 2 ) - b = b << 2 | b >> 4 - colors.push [ r, g, b ] - - @palette = new ImageTextModePalette( colors: colors ) - - parseFontData: ( data, height = 16 ) -> - chars = [] - for i in [ 0 ... data.length / height ] - chr = [] - for j in [ 0 ... height ] - chr.push @getByteAt( data, i * height + j ) - chars.push chr - @font = new ImageTextModeFont( { chars: chars, height: height } ) - -# the majority of time is spent in this routine -# list comprehension seems to speed up from 1.8 seconds to 1.29 seconds from first comprehension / cleanup? - - renderCanvas: ( canvasElem ) -> - w = @getWidth() * @font.width - h = @getHeight() * @font.height - - canvas = document.createElement 'canvas' - canvas.setAttribute 'width', w - canvas.setAttribute 'height', h - ctx = canvas.getContext '2d' - - for cy in [ 0 ... @screen.length ] - if @screen[ cy ]? - for cx in [ 0 ... @screen[ cy ].length ] - pixel = @screen[ cy ][ cx ] - curfillstyle = null - if pixel? - if pixel.attr? - fg = pixel.attr & 15 - bg = ( pixel.attr & 240 ) >> 4 - else - fg = pixel.fg - bg = pixel.bg - - px = cx * @font.width - py = cy * @font.height - - ctx.fillStyle = @palette.toRgbaString( @palette.colors[ bg ] ) - ctx.fillRect px, py, @font.width, @font.height - - ctx.fillStyle = @palette.toRgbaString( @palette.colors[ fg ] ) - chr = @font.chars[ pixel.ch.charCodeAt( 0 ) & 0xff ] - i = 0 - for line in chr - ctx.fillRect px + j, py + i, 1, 1 for j in [ 0 ... @font.width ] when line & (1 << @font.width - 1 - j ) - i += 1 - - canvasElem.setAttribute 'width', w - canvasElem.setAttribute 'height', h - ctx = canvasElem.getContext '2d' - ctx.drawImage canvas, 0, 0 - - toBinaryArray: (str) -> - buf = new ArrayBuffer(str.length * 2) # 2 bytes for each char - bufView = new Uint8Array(buf) - bufView[i] = str.charCodeAt(i) for i in [0...str.length] - buf - - - -class @ImageTextModeANSI extends @ImageTextMode - constructor: ( options ) -> - super @screen - super @font - @palette = new ImageTextModePaletteANSI - @tabstop = 8 - @linewrap = 80 - @[k] = v for own k, v of options - - ANSI_ESC = String.fromCharCode(0x1b) - ANSI_CSI = ANSI_ESC + '[' - ANSI_TEXT_PROP = 'm' - ANSI_RESET = '0' - ANSI_FG = '3' - ANSI_BG = '4' - ANSI_FG_INTENSE = '9' - ANSI_BG_INTENSE = '10' - ANSI_CUR_DOWN = 'B' - ANSI_SEP = ';' - ANSI_RETURN = 'A' - -# not going to mess with this for now, as I think it is the 'write' code -# for the actual ansi editor. That would be bad to mess up. -# did redo the for loops to read nicer tho. - - write: -> - content = "#{ ANSI_CSI }2J" # initiate document - for y in [0...@screen.length] - content += "\n" if !@screen[y]? - continue if !@screen[y]? - for x in [0...@getWidth()] - pixel = @screen[y][x] - if !pixel? - pixel = { ch: ' ', attr: 7 } - attr = @gen_args(pixel.attr) - if (attr != prevattr) - content += "#{ANSI_CSI}0;#{attr}#{ANSI_TEXT_PROP}" - prevattr = attr - content += if pixel.ch? then pixel.ch else ' ' - max_x = x - content += "#{ ANSI_CSI }0m" - @toBinaryArray(content) - - gen_args: ( attr ) -> - fg = 30 + ( attr & 7 ) - bg = 40 + ( ( attr & 112 ) >> 4) - bl = if attr & 128 then 5 else '' - intense = if attr & 8 then 1 else '' - -# um why do we make this attrs variable and not use it? - - attrs = a for a in [fg, bg, bl, intense] when a != '' - return [fg, bg, bl, intense].join(";") - - parse: ( content ) -> - @screen = [] - @state = 0 - @x = 0 - @y = 0 - @save_x = 0 - @save_y = 0 - @attr = 7 - @argbuf = '' - - content = content.split( '' ) - while ch = content.shift() - if @state is 0 - switch ch - when "\x1a" then @state = 3 - when "\x1b" then @state = 1 - when "\n" - @x = 0 - @y++ - when "\r" then break - when "\t" - i = ( @x + 1 ) % @tabstop - @putpixel ' ' while i-- > 0 - else - @putpixel ch - - else if @state is 1 - if ch isnt "[" - @putpixel "\x1b" - @putpixel "[" - @state = 0 - else - @state = 2 - - else if @state is 2 - if ch.match( '[A-Za-z]' ) - args = ( parseInt( i ) for i in @argbuf.split ';' ) - - switch ch - when "m" - for arg in args - if arg is 0 - @attr = 7 - else if arg is 1 - @attr |= 8 - else if arg is 5 - @attr |= 128 - else if 30 <= arg <= 37 - @attr &= 248 - @attr |= ( arg - 30 ) - else if 40 <= arg <= 47 - @attr &= 143 - @attr |= ( arg - 40 ) << 4 - - when "H", "f" - @y = ( args[ 0 ] or 1 ) - 1 - @x = ( args[ 1 ] or 1 ) - 1 - @y = 0 if @y < 0 - @x = 0 if @x < 0 - when "A" - @y -= args[ 0 ] or 1 - @y = 0 if @y < 0 - when "B" - @y += args[ 0 ] or 1 - when "C" - @x += args[ 0 ] or 1 - when "D" - @x -= args[ 0 ] or 1 - @x = 0 if @x < 0 - when "E" - @y += args[ 0 ] or 1 - @x = 0 - when "F" - @y -= args[ 0 ] or 1 - @y = 0 if @y > 0 - @x = 0 - when "G" - @x = ( args[ 0 ] or 1 ) - 1 - when "s" - @save_x = @x - @save_y = @y - when "u" - @x = @save_x - @y = @save_y - when "J" - if args.length is 0 or args[ 0 ] is 0 - @screen[ i ] = null for i in [ @y + 1 .. screen.length - 1 ] - @screen[ @y ][ i ] = null for i in [ @x .. screen[ @y ].length - 1 ] - else if args[ 0 ] is 1 - @screen[ i ] = null for i in [ 0 .. @y - 1 ] - @screen[ @y ][ i ] = null for i in [ 0 .. @x ] - else if args[ 0 ] is 2 - @x = 0 - @y = 0 - @screen = [] - when "K" - if args.length is 0 or args[ 0 ] is 0 - @screen[ @y ][ i ] = null for i in [ @x .. @screen[ @y ].length - 1 ] - else if args[ 0 ] is 1 - @screen[ @y ][ i ] = null for i in [ 0 .. @x ] - else if args[ 0 ] is 2 - @screen[ @y ] = null - - @argbuf = '' - @state = 0 - - else - @argbuf += ch - - else if @state is 3 - break - - else - @state = 0 - - - putpixel: ( ch ) -> - @screen[ @y ] = [] if !@screen[ @y ]? - @screen[ @y ][ @x ] = { ch: ch, attr: @attr } - - if ++@x >= @linewrap - @x = 0 - @y++ - - -class @ImageTextModeBin extends @ImageTextMode - - constructor: ( options ) -> - super - @linewrap = 160 - this[k] = v for own k, v of options - - parse: ( content ) -> - x = 0 - y = 0 - @screen[ y ] = [] - - for i in [ 0 .. content.length - 2 ] by 2 - ch = content.substr( i, 1 ) - break if ch == "\x1a" - attr = @getByteAt( content, i + 1 ) - @screen[ y ][ x ] = { 'ch': ch, 'attr': attr } - x++ - if x == @linewrap - x = 0 - y++ - @screen[ y ] = [] - - @screen.pop() if @screen[ y ].length == 0 - - -class @ImageTextModeIDF extends @ImageTextMode - - constructor: ( options ) -> - super - @header = { x0: 0, x1: 0, y0: 0, y1: 0 } - this[k] = v for own k, v of options - - parse: ( content ) -> - headerData = content.substr( 0, 12 ) - if headerData.length isnt 12 || !headerData.match( '^\x041.4' ) - throw new Error( 'File is not an IDF' ) - - @header.x0 = @unpackShort( headerData.substr( 4, 2 ) ) - @header.y0 = @unpackShort( headerData.substr( 6, 2 ) ) - @header.x1 = @unpackShort( headerData.substr( 8, 2 ) ) - @header.y1 = @unpackShort( headerData.substr( 10, 2 ) ) - - eodata = content.length - 48 - 4096 - - if content.substr( content.length - 128, 5 ) == 'SAUCE' - eodata -= 128 - - @parseFontData( content.substr( eodata, 4096 ) ) - @parsePaletteData( content.substr( eodata + 4096, 48 ) ) - - y = 0 - x = 0 - @screen[ y ] = [] - offset = 12 - - while offset < eodata - buffer = content.substr( offset, 2 ) - info = @unpackShort( buffer ) - offset += 2 - len = 1 - - if info == 1 - len = @unpackShort( content.substr( offset, 2 ) ) & 255 - offset += 2 - buffer = content.substr( offset, 2 ) - offset += 2 - - ch = buffer.substr( 0, 1 ) - attr = @getByteAt( buffer, 1 ) - - for i in [ 1 .. len ] - @screen[ y ][ x ] = { 'ch': ch, 'attr': attr } - x++ - if x > @header.x1 - x = 0 - y++ - @screen[ y ] = [] - - @screen.pop() if @screen[ y ].length == 0 - - -class @ImageTextModeADF extends @ImageTextMode - - COLOR_INDEX = [ 0, 1, 2, 3, 4, 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63 ] - - constructor: ( options ) -> - super - @header = { version: 0 } - this[k] = v for own k, v of options - - parse: ( content ) -> - @header.version = @getByteAt( content, 0 ) - @parsePaletteData( content.substr( 1, 192 ) ) - @parseFontData( content.substr( 193, 4096 ) ) - - x = 0 - y = 0 - @screen[ y ] = [] - - for i in [ 4289 .. content.length - 2 ] by 2 - ch = content.substr( i, 1 ) - break if ch == "\x1a" - attr = @getByteAt( content, i + 1 ) - @screen[ y ][ x ] = { 'ch': ch, 'attr': attr } - x++ - if x == 80 - x = 0 - y++ - @screen[ y ] = [] - - @screen.pop() if @screen[ y ].length == 0 - - parsePaletteData: ( data ) -> - colors = [] - for i in COLOR_INDEX - j = i * 3 - r = @getByteAt( data, j ) - r = r << 2 | r >> 4 - g = @getByteAt( data, j + 1 ) - g = g << 2 | g >> 4 - b = @getByteAt( data, j + 2 ) - b = b << 2 | b >> 4 - colors.push [ r, g, b ] - - @palette = new ImageTextModePalette( { colors: colors } ) - -class @ImageTextModeSAUCE - - parseUrl: ( url ) -> - req = new XMLHttpRequest() - req.open 'GET', url, false - req.overrideMimeType 'text/plain; charset=x-user-defined' - req.send null - content = if req.status is 200 or req.status is 0 then req.responseText else '' - @parse content - - parse: ( content ) -> - sauceMarker = content.length - 128; - return false if content.substr( sauceMarker, 5 ) isnt 'SAUCE' - @id = 'SAUCE' - @version = content.substr( sauceMarker + 5, 2 ) - @title = content.substr( sauceMarker + 7, 35 ) - @author = content.substr( sauceMarker + 42, 20 ) - @group = content.substr( sauceMarker + 62, 20 ) - @date = content.substr( sauceMarker + 82, 8 ) - @fileSize = @unpackLong content.substr( sauceMarker + 90, 4 ) - @dataType = @getByteAt content.substr( sauceMarker + 94, 1 ) - @fileType = @getByteAt content.substr( sauceMarker + 95, 1 ) - @tinfo1 = @unpackShort content.substr( sauceMarker + 96, 2 ) - @tinfo2 = @unpackShort content.substr( sauceMarker + 98, 2 ) - @tinfo3 = @unpackShort content.substr( sauceMarker + 100, 2 ) - @tinfo4 = @unpackShort content.substr( sauceMarker + 102, 2 ) - @commentCount = @getByteAt content.substr( sauceMarker + 104, 1 ) - @flags = @getByteAt content.substr( sauceMarker + 105, 1 ) - @filler = content.substr( sauceMarker + 106, 22 ) - - commentMarker = sauceMarker - 5 - @commentCount * 64 - if @commentCount > 0 and content.substr( commentMarker, 5 ) is 'COMNT' - commentMarker += 5 - @comments = [] - i = @commentCount - while i-- > 0 - @comments.push content.substr( commentMarker, 64 ) - commentMarker += 64 - - return true - - unpackLong: ( data ) -> - lng = ((( @getByteAt( data, 3 ) << 8 ) + @getByteAt( data, 2 ) << 8 ) + @getByteAt( data, 1 ) << 8 ) + @getByteAt( data, 0 ) - if lng < 0 - lng += 4294967296 - return lng; - - unpackShort: ( data ) -> - shrt = ( @getByteAt( data, 1 ) << 8 ) + @getByteAt( data, 0 ) - if shrt < 0 - shrt += 65536 - return shrt - - getByteAt: ( data, offset ) -> - return data.charCodeAt( offset ) & 0xFF - - - -class @ImageTextModeTundra extends @ImageTextMode - - constructor: ( options ) -> - super - this[k] = v for own k, v of options - - parse: ( content ) -> - colors = [ [ 0, 0, 0 ] ] - palidx = 1 - x = 0 - y = 0 - fg = 0 - bg = 0 - - @screen[ y ] = [] - content = content.substr( 8 ).split( '' ) - while command = content.shift() - break if command == "\x1a" - command = command.charCodeAt( 0 ) - - if command is 1 - y = @unpackLong( content.splice( 0, 4 ).join( '' ) ) - x = @unpackLong( content.splice( 0, 4 ).join( '' ) ) - @screen[ y ] = [] if !@screen[ y ]? - continue - - ch = null - - if command is 2 - ch = content.shift() - rgb = @unpackLong( content.splice( 0, 4 ).join( '' ) ) - fg = palidx++ - colors.push [ - ( rgb >> 16 ) & 0x000000ff, - ( rgb >> 8 ) & 0x000000ff, - rgb & 0x000000ff - ] - else if command is 4 - ch = content.shift() - rgb = @unpackLong( content.splice( 0, 4 ).join( '' ) ) - bg = palidx++ - colors.push [ - ( rgb >> 16 ) & 0x000000ff, - ( rgb >> 8 ) & 0x000000ff, - rgb & 0x000000ff - ] - else if command is 6 - ch = content.shift() - fg = palidx++ - bg = palidx++ - for [ 0 .. 1 ] - rgb = @unpackLong( content.splice( 0, 4 ).join( '' ) ) - colors.push [ - ( rgb >> 16 ) & 0x000000ff, - ( rgb >> 8 ) & 0x000000ff, - rgb & 0x000000ff - ] - - ch = String.fromCharCode( command ) unless ch? - - @screen[ y ][ x ] = { 'ch': ch, 'fg': fg, 'bg': bg } - x++ - if x == 80 - x = 0 - y++ - @screen[ y ] = [] - - @screen.pop() if @screen[ y ].length == 0 - @palette = new ImageTextModePalette( { colors: colors } ) - - -class @ImageTextModePCBoard extends @ImageTextMode - - constructor: ( options ) -> - super - @tabstop = 8 - @linewrap = 80 - @codes = { POFF: '', WAIT: '' } - this[k] = v for own k, v of options - - parse: ( content ) -> - @screen = [] - @state = 0 - @x = 0 - @y = 0 - @attr = 7 - - for key, val of @codes - code = new RegExp '@' + key + '@', 'g' - content.replace code, val - - content = content.split( '' ) - while ch = content.shift() - if @state is 0 - switch ch - when "\x1a" then @state = 2 - when '@' then @state = 1 - when "\n" - @x = 0 - @y++ - when "\r" then break - when "\t" - i = ( @x + 1 ) % @tabstop - @putpixel ' ' while i-- > 0 - else - @putpixel ch - else if @state is 1 - if ch is 'X' - @attr = ( parseInt( content.shift(), 16 ) << 4 ) + parseInt( content.shift(), 16 ) - else if ch + content[ 0..2 ].join( '' ) is 'CLS@' - content.shift() for [ 1 .. 3 ] - @screen = [] - else if ch + content[ 0..2 ].join( '' ) is 'POS:' - content.shift() for [ 1 .. 3 ] - @x = content.shift() - @x += content.shift() if content[ 0 ] isnt '@' - @x-- - - content.shift() - else - @putpixel '@' - @putpixel ch - - @state = 0 - else if @state is 2 - break - else - @state = 0 - - putpixel: ( ch ) -> - @screen[ @y ] = [] if !@screen[ @y ]? - @screen[ @y ][ @x ] = { ch: ch, attr: @attr } - - if ++@x >= @linewrap - @x = 0 - @y++ - - -class @ImageTextModeAVATAR extends @ImageTextMode - - constructor: ( options ) -> - super - @tabstop = 8 - @linewrap = 80 - this[k] = v for own k, v of options - - parse: ( content ) -> - @screen = [] - @x = 0 - @y = 0 - @attr = 3 - - content = content.split( '' ) - while ch = content.shift() - if ch is "\x1a" - break - else if ch is "\n" - @x = 0 - @y++ - else if ch is "\r" - continue - else if ch is "\t" - i = ( @x + 1 ) % @tabstop - @putpixel ' ' while i-- > 0 - else if ch.charCodeAt( 0 ) is 12 - @screen = [] - @attr = 3 - @insert = false - else if ch.charCodeAt( 0 ) is 25 - ch = content.shift() - i = content.shift().charCodeAt( 0 ) - @putpixel( ch ) while i-- > 0 - else if ch.charCodeAt( 0 ) is 22 - c = content.shift().charCodeAt( 0 ) - switch c - when 1 - @attr = content.shift().charCodeAt( 0 ) & 0x7f - when 2 - @attr |= 0x80 - when 3 - @y-- - @y = 0 if @y < 0 - when 4 - @y++ - when 5 - @x-- - @x = 0 if @x < 0 - when 6 - @x++ - when 7 - @screen[ @y ][ i ] = null for i in [ @x .. screen[ @y ].length - 1 ] - when 8 - @y = content.shift().charCodeAt( 0 ) - 1 - @x = content.shift().charCodeAt( 0 ) - 1 - @y = 0 if @y < 0 - @x = 0 if @x < 0 - else - @putpixel ch - - putpixel: ( ch ) -> - @screen[ @y ] = [] if !@screen[ @y ]? - @screen[ @y ][ @x ] = { ch: ch, attr: @attr } - - if ++@x >= @linewrap - @x = 0 - @y++ - - -class @ImageTextModeXBin extends @ImageTextMode - - # Header constants - PALETTE = 1 - FONT = 2 - COMPRESSED = 4 - NON_BLINK = 8 - FIVETWELVE_CHARS = 16 - - # Compression type constants - NO_COMPRESSION = 0 - CHARACTER_COMPRESSION = 64 - ATTRIBUTE_COMPRESSION = 128 - FULL_COMPRESSION = 192 - - # Compression byte constants - COMPRESSION_TYPE = 192 - COMPRESSION_COUNTER = 63 - - constructor: ( options ) -> - super - @header = { width: 0, height: 0, fontisze: 0, flags: 0 } - this[k] = v for own k, v of options - - parse: ( content ) -> - @screen = [] - headerData = content.substr( 0, 11 ) - if headerData.length isnt 11 || !headerData.match( '^XBIN\x1a' ) - throw new Error( 'File is not an XBin' ) - - @header.width = @unpackShort( headerData.substr( 5, 2 ) ) - @header.height = @unpackShort( headerData.substr( 7, 2 ) ) - @header.fontsize = @getByteAt( headerData.substr( 9, 1 ) ) - @header.flags = @getByteAt( headerData.substr( 10, 1 ) ) - offset = 11 - - if @header.flags & PALETTE - @parsePaletteData( content.substr( offset, 48 ) ); - offset += 48 - - if @header.flags & FONT - fontlength = @header.fontsize - if @header.flags & FIVETWELVE_CHARS - fontlength *= 512 - else - fontlength *= 256 - @parseFontData( content.substr( offset, fontlength ), @header.fontsize ); - offset += fontlength - - if @header.flags & COMPRESSED - @_parse_compressed( content.substr( offset ) ) - else - @_parse_uncompressed( content.substr( offset ) ) - - _parse_compressed: ( data ) -> - x = 0 - y = 0 - @screen[ y ] = [] - - data = data.split( '' ) - while info = data.shift() - info = @getByteAt( info, 0 ) - break if info == 26 - - type = info & COMPRESSION_TYPE - counter = ( info & COMPRESSION_COUNTER ) + 1 - - ch = null - attr = null - - while counter-- > 0 - switch type - when NO_COMPRESSION - ch = data.shift() - attr = data.shift() - when CHARACTER_COMPRESSION - ch = data.shift() if !ch? - attr = data.shift() - when ATTRIBUTE_COMPRESSION - attr = data.shift() if !attr? - ch = data.shift() - else - ch = data.shift() if !ch? - attr = data.shift() if !attr? - - @screen[ y ][ x ] = { ch: ch, attr: @getByteAt( attr, 0 ) } - - x++ - if x == @header.width - x = 0 - y++ - break if y == @header.height - @screen[ y ] = [] if !@screen[ y ]? - - _parse_uncompressed: ( data ) -> - x = 0 - y = 0 - @screen[ y ] = [] - - for i in [ 0 .. data.length - 2 ] by 2 - ch = data.substr( i, 1 ) - break if ch == "\x1a" - attr = @getByteAt( data, i + 1 ) - @screen[ y ][ x ] = { 'ch': ch, 'attr': attr } - x++ - if x == @header.width - x = 0 - y++ - break if y == @header.height - @screen[ y ] = [] if !@screen[ y ]? - - getWidth: -> - return @header.width - - getHeight: -> - return @header.height - -class @ImageTextModePalette - - constructor: ( options ) -> - @colors = [] - @[k] = v for own k, v of options - - toRgbaString: ( color ) -> - return 'rgba(' + color.join( ',' ) + ',1)'; - -# getting a "cannot call super outside an instance method" error here - -# the resulting code produced does not end up using the super/parent bit -# or at least it doesn't produce bugs in the result if it is not here. -# calling the constructor without super works, and with super the difference is -# ImageTextModePaletteVGA.__super__.constructor.apply(this, arguments); -# is placed inside the constructor. I believe the end result, based on how -# this is used, is identical. -# I am not seeing this pattern (the 'super by itself') being used or referenced -# - instead I am seeting very different patterns using super to reference -# complete items. (referenced meaning "in books, searches, or coffescript -# documentation") - -class @ImageTextModePaletteVGA extends @ImageTextModePalette - constructor: (options) -> - @colors = [ - [ 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xaa ], - [ 0x00, 0xaa, 0x00 ], - [ 0x00, 0xaa, 0xaa ], - [ 0xaa, 0x00, 0x00 ], - [ 0xaa, 0x00, 0xaa ], - [ 0xaa, 0x55, 0x00 ], - [ 0xaa, 0xaa, 0xaa ], - [ 0x55, 0x55, 0x55 ], - [ 0x55, 0x55, 0xff ], - [ 0x55, 0xff, 0x55 ], - [ 0x55, 0xff, 0xff ], - [ 0xff, 0x55, 0x55 ], - [ 0xff, 0x55, 0xff ], - [ 0xff, 0xff, 0x55 ], - [ 0xff, 0xff, 0xff ] - ] - -class @ImageTextModePaletteANSI extends @ImageTextModePalette - constructor: (options) -> - @colors = [ - [ 0x00, 0x00, 0x00 ], - [ 0xaa, 0x00, 0x00 ], - [ 0x00, 0xaa, 0x00 ], - [ 0xaa, 0x55, 0x00 ], - [ 0x00, 0x00, 0xaa ], - [ 0xaa, 0x00, 0xaa ], - [ 0x00, 0xaa, 0xaa ], - [ 0xaa, 0xaa, 0xaa ], - [ 0x55, 0x55, 0x55 ], - [ 0xff, 0x55, 0x55 ], - [ 0x55, 0xff, 0x55 ], - [ 0xff, 0xff, 0x55 ], - [ 0x55, 0x55, 0xff ], - [ 0xff, 0x55, 0xff ], - [ 0x55, 0xff, 0xff ], - [ 0xff, 0xff, 0xff ] - ] -class @ImageTextModeFont - constructor: ( options ) -> - @chars = [] - @width = 8 - @[k] = v for own k, v of options - -class @ImageTextModeFont8x16 extends @ImageTextModeFont - constructor: ( options ) -> - super @width - @chars = [ - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x7e, 0x81, 0xa5, 0x81, 0x81, 0xbd, 0x99, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x7e, 0xff, 0xdb, 0xff, 0xff, 0xc3, 0xe7, 0xff, 0xff, 0x7e, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x6c, 0xfe, 0xfe, 0xfe, 0xfe, 0x7c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x7c, 0xfe, 0x7c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x18, 0x3c, 0x3c, 0xe7, 0xe7, 0xe7, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x18, 0x3c, 0x7e, 0xff, 0xff, 0x7e, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xc3, 0xc3, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0x42, 0x42, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0xff, 0xff, 0xff, 0xff, 0xff, 0xc3, 0x99, 0xbd, 0xbd, 0x99, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff ], - [ 0x00, 0x00, 0x1e, 0x0e, 0x1a, 0x32, 0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x3f, 0x33, 0x3f, 0x30, 0x30, 0x30, 0x30, 0x70, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x7f, 0x63, 0x7f, 0x63, 0x63, 0x63, 0x63, 0x67, 0xe7, 0xe6, 0xc0, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x18, 0x18, 0xdb, 0x3c, 0xe7, 0x3c, 0xdb, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfe, 0xf8, 0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x02, 0x06, 0x0e, 0x1e, 0x3e, 0xfe, 0x3e, 0x1e, 0x0e, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x7f, 0xdb, 0xdb, 0xdb, 0x7b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x7c, 0xc6, 0x60, 0x38, 0x6c, 0xc6, 0xc6, 0x6c, 0x38, 0x0c, 0xc6, 0x7c, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0c, 0xfe, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x60, 0xfe, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x6c, 0xfe, 0x6c, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x38, 0x7c, 0x7c, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x7c, 0x7c, 0x38, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x3c, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x66, 0x66, 0x66, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x6c, 0x6c, 0xfe, 0x6c, 0x6c, 0x6c, 0xfe, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x18, 0x18, 0x7c, 0xc6, 0xc2, 0xc0, 0x7c, 0x06, 0x06, 0x86, 0xc6, 0x7c, 0x18, 0x18, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0xc2, 0xc6, 0x0c, 0x18, 0x30, 0x60, 0xc6, 0x86, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x38, 0x6c, 0x6c, 0x38, 0x76, 0xdc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x30, 0x30, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x30, 0x18, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x3c, 0xff, 0x3c, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x38, 0x6c, 0xc6, 0xc6, 0xd6, 0xd6, 0xc6, 0xc6, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x18, 0x38, 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x06, 0x3c, 0x06, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x0c, 0x1c, 0x3c, 0x6c, 0xcc, 0xfe, 0x0c, 0x0c, 0x0c, 0x1e, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xfe, 0xc0, 0xc0, 0xc0, 0xfc, 0x06, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x38, 0x60, 0xc0, 0xc0, 0xfc, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xfe, 0xc6, 0x06, 0x06, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0x06, 0x0c, 0x78, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x06, 0x0c, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x0c, 0x18, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x0c, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xde, 0xde, 0xde, 0xdc, 0xc0, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x66, 0x66, 0x66, 0x66, 0xfc, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xf8, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x6c, 0xf8, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xde, 0xc6, 0xc6, 0x66, 0x3a, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x1e, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xe6, 0x66, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xf0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xc6, 0xee, 0xfe, 0xfe, 0xd6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xd6, 0xde, 0x7c, 0x0c, 0x0e, 0x00, 0x00 ], - [ 0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x6c, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x60, 0x38, 0x0c, 0x06, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x7e, 0x7e, 0x5a, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x6c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xd6, 0xd6, 0xd6, 0xfe, 0xee, 0x6c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xc6, 0xc6, 0x6c, 0x7c, 0x38, 0x38, 0x7c, 0x6c, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xfe, 0xc6, 0x86, 0x0c, 0x18, 0x30, 0x60, 0xc2, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x3c, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x70, 0x38, 0x1c, 0x0e, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x3c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x3c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x10, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00 ], - [ 0x00, 0x30, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xe0, 0x60, 0x60, 0x78, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x1c, 0x0c, 0x0c, 0x3c, 0x6c, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x1c, 0x36, 0x32, 0x30, 0x78, 0x30, 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0xcc, 0x78, 0x00 ], - [ 0x00, 0x00, 0xe0, 0x60, 0x60, 0x6c, 0x76, 0x66, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x18, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x06, 0x06, 0x00, 0x0e, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x66, 0x66, 0x3c, 0x00 ], - [ 0x00, 0x00, 0xe0, 0x60, 0x60, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0xfe, 0xd6, 0xd6, 0xd6, 0xd6, 0xc6, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xf0, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0x0c, 0x1e, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x76, 0x66, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x10, 0x30, 0x30, 0xfc, 0x30, 0x30, 0x30, 0x30, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xd6, 0xd6, 0xd6, 0xfe, 0x6c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x6c, 0x38, 0x38, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0xf8, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xcc, 0x18, 0x30, 0x60, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x0e, 0x18, 0x18, 0x18, 0x70, 0x18, 0x18, 0x18, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x70, 0x18, 0x18, 0x18, 0x0e, 0x18, 0x18, 0x18, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0x66, 0x3c, 0x18, 0x70, 0x00, 0x00 ], - [ 0x00, 0x00, 0xcc, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x0c, 0x18, 0x30, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x10, 0x38, 0x6c, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xcc, 0x00, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x60, 0x30, 0x18, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x38, 0x6c, 0x38, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x18, 0x70, 0x00, 0x00 ], - [ 0x00, 0x10, 0x38, 0x6c, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xc6, 0x00, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x60, 0x30, 0x18, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x66, 0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x18, 0x3c, 0x66, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x60, 0x30, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0xc6, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00 ], - [ 0x38, 0x6c, 0x38, 0x10, 0x38, 0x6c, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00 ], - [ 0x0c, 0x18, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0x36, 0x36, 0x7e, 0xd8, 0xd8, 0x6e, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x3e, 0x6c, 0xcc, 0xcc, 0xfe, 0xcc, 0xcc, 0xcc, 0xcc, 0xce, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x10, 0x38, 0x6c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xc6, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x60, 0x30, 0x18, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x30, 0x78, 0xcc, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x60, 0x30, 0x18, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xc6, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0x78, 0x00 ], - [ 0x00, 0xc6, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0xc6, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x18, 0x18, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x38, 0x6c, 0x64, 0x60, 0xf0, 0x60, 0x60, 0x60, 0x60, 0xe6, 0xfc, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x18, 0x7e, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0xf8, 0xcc, 0xcc, 0xf8, 0xc4, 0xcc, 0xde, 0xcc, 0xcc, 0xcc, 0xc6, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x0e, 0x1b, 0x18, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x18, 0xd8, 0x70, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x18, 0x30, 0x60, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x0c, 0x18, 0x30, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x18, 0x30, 0x60, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x18, 0x30, 0x60, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x76, 0xdc, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00 ], - [ 0x76, 0xdc, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x3c, 0x6c, 0x6c, 0x3e, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x38, 0x6c, 0x6c, 0x38, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x30, 0x30, 0x00, 0x30, 0x30, 0x60, 0xc0, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x60, 0xe0, 0x62, 0x66, 0x6c, 0x18, 0x30, 0x60, 0xdc, 0x86, 0x0c, 0x18, 0x3e, 0x00, 0x00 ], - [ 0x00, 0x60, 0xe0, 0x62, 0x66, 0x6c, 0x18, 0x30, 0x66, 0xce, 0x9a, 0x3f, 0x06, 0x06, 0x00, 0x00 ], - [ 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x3c, 0x3c, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x6c, 0xd8, 0x6c, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x6c, 0x36, 0x6c, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44 ], - [ 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa ], - [ 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77 ], - [ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 ], - [ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 ], - [ 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 ], - [ 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xf6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 ], - [ 0x36, 0x36, 0x36, 0x36, 0x36, 0xf6, 0x06, 0xf6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 ], - [ 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x06, 0xf6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 ], - [ 0x36, 0x36, 0x36, 0x36, 0x36, 0xf6, 0x06, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 ], - [ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 ], - [ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 ], - [ 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 ], - [ 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 ], - [ 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x30, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x30, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 ], - [ 0x36, 0x36, 0x36, 0x36, 0x36, 0xf7, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xf7, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 ], - [ 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x30, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x36, 0x36, 0x36, 0x36, 0x36, 0xf7, 0x00, 0xf7, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 ], - [ 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 ], - [ 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 ], - [ 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xff, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 ], - [ 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x18, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 ], - [ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 ], - [ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff ], - [ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0 ], - [ 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f ], - [ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0xd8, 0xd8, 0xd8, 0xdc, 0x76, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x78, 0xcc, 0xcc, 0xcc, 0xd8, 0xcc, 0xc6, 0xc6, 0xc6, 0xcc, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xfe, 0xc6, 0xc6, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xfe, 0xc6, 0x60, 0x30, 0x18, 0x18, 0x30, 0x60, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0x70, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xc0, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x7e, 0x18, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x38, 0x6c, 0xc6, 0xc6, 0xc6, 0x6c, 0x6c, 0x6c, 0x6c, 0xee, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x1e, 0x30, 0x18, 0x0c, 0x3e, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xdb, 0xdb, 0xdb, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x03, 0x06, 0x7e, 0xdb, 0xdb, 0xf3, 0x7e, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x1c, 0x30, 0x60, 0x60, 0x7c, 0x60, 0x60, 0x60, 0x30, 0x1c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0xfe, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x30, 0x18, 0x0c, 0x06, 0x0c, 0x18, 0x30, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x0c, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0c, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x0e, 0x1b, 0x1b, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 ], - [ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xd8, 0xd8, 0xd8, 0x70, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x7e, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0x00, 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x38, 0x6c, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x0f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0xec, 0x6c, 0x6c, 0x3c, 0x1c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x6c, 0x36, 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x3c, 0x66, 0x0c, 0x18, 0x32, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ] - ] - @height = 16 - @[k] = v for own k, v of options - -class @ImageTextModeFont8x8 extends @ImageTextModeFont - constructor: ( options ) -> - super @width - @chars = [ - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x7e, 0x81, 0xa5, 0x81, 0xbd, 0x99, 0x81, 0x7e ], - [ 0x7e, 0xff, 0xdb, 0xff, 0xc3, 0xe7, 0xff, 0x7e ], - [ 0x6c, 0xfe, 0xfe, 0xfe, 0x7c, 0x38, 0x10, 0x00 ], - [ 0x10, 0x38, 0x7c, 0xfe, 0x7c, 0x38, 0x10, 0x00 ], - [ 0x38, 0x7c, 0x38, 0xfe, 0xfe, 0xd6, 0x10, 0x38 ], - [ 0x10, 0x38, 0x7c, 0xfe, 0xfe, 0x7c, 0x10, 0x38 ], - [ 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x18, 0x00, 0x00 ], - [ 0xff, 0xff, 0xe7, 0xc3, 0xc3, 0xe7, 0xff, 0xff ], - [ 0x00, 0x3c, 0x66, 0x42, 0x42, 0x66, 0x3c, 0x00 ], - [ 0xff, 0xc3, 0x99, 0xbd, 0xbd, 0x99, 0xc3, 0xff ], - [ 0x0f, 0x07, 0x0f, 0x7d, 0xcc, 0xcc, 0xcc, 0x78 ], - [ 0x3c, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x18 ], - [ 0x3f, 0x33, 0x3f, 0x30, 0x30, 0x70, 0xf0, 0xe0 ], - [ 0x7f, 0x63, 0x7f, 0x63, 0x63, 0x67, 0xe6, 0xc0 ], - [ 0x18, 0xdb, 0x3c, 0xe7, 0xe7, 0x3c, 0xdb, 0x18 ], - [ 0x80, 0xe0, 0xf8, 0xfe, 0xf8, 0xe0, 0x80, 0x00 ], - [ 0x02, 0x0e, 0x3e, 0xfe, 0x3e, 0x0e, 0x02, 0x00 ], - [ 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x7e, 0x3c, 0x18 ], - [ 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x66, 0x00 ], - [ 0x7f, 0xdb, 0xdb, 0x7b, 0x1b, 0x1b, 0x1b, 0x00 ], - [ 0x3e, 0x61, 0x3c, 0x66, 0x66, 0x3c, 0x86, 0x7c ], - [ 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x7e, 0x00 ], - [ 0x18, 0x3c, 0x7e, 0x18, 0x7e, 0x3c, 0x18, 0xff ], - [ 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x00 ], - [ 0x18, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x00 ], - [ 0x00, 0x18, 0x0c, 0xfe, 0x0c, 0x18, 0x00, 0x00 ], - [ 0x00, 0x30, 0x60, 0xfe, 0x60, 0x30, 0x00, 0x00 ], - [ 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xfe, 0x00, 0x00 ], - [ 0x00, 0x24, 0x66, 0xff, 0x66, 0x24, 0x00, 0x00 ], - [ 0x00, 0x18, 0x3c, 0x7e, 0xff, 0xff, 0x00, 0x00 ], - [ 0x00, 0xff, 0xff, 0x7e, 0x3c, 0x18, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x18, 0x3c, 0x3c, 0x18, 0x18, 0x00, 0x18, 0x00 ], - [ 0x66, 0x66, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x6c, 0x6c, 0xfe, 0x6c, 0xfe, 0x6c, 0x6c, 0x00 ], - [ 0x18, 0x3e, 0x60, 0x3c, 0x06, 0x7c, 0x18, 0x00 ], - [ 0x00, 0xc6, 0xcc, 0x18, 0x30, 0x66, 0xc6, 0x00 ], - [ 0x38, 0x6c, 0x38, 0x76, 0xdc, 0xcc, 0x76, 0x00 ], - [ 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x0c, 0x18, 0x30, 0x30, 0x30, 0x18, 0x0c, 0x00 ], - [ 0x30, 0x18, 0x0c, 0x0c, 0x0c, 0x18, 0x30, 0x00 ], - [ 0x00, 0x66, 0x3c, 0xff, 0x3c, 0x66, 0x00, 0x00 ], - [ 0x00, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30 ], - [ 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00 ], - [ 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0x80, 0x00 ], - [ 0x38, 0x6c, 0xc6, 0xd6, 0xc6, 0x6c, 0x38, 0x00 ], - [ 0x18, 0x38, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x00 ], - [ 0x7c, 0xc6, 0x06, 0x1c, 0x30, 0x66, 0xfe, 0x00 ], - [ 0x7c, 0xc6, 0x06, 0x3c, 0x06, 0xc6, 0x7c, 0x00 ], - [ 0x1c, 0x3c, 0x6c, 0xcc, 0xfe, 0x0c, 0x1e, 0x00 ], - [ 0xfe, 0xc0, 0xc0, 0xfc, 0x06, 0xc6, 0x7c, 0x00 ], - [ 0x38, 0x60, 0xc0, 0xfc, 0xc6, 0xc6, 0x7c, 0x00 ], - [ 0xfe, 0xc6, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x00 ], - [ 0x7c, 0xc6, 0xc6, 0x7c, 0xc6, 0xc6, 0x7c, 0x00 ], - [ 0x7c, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0x78, 0x00 ], - [ 0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x00 ], - [ 0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x30 ], - [ 0x06, 0x0c, 0x18, 0x30, 0x18, 0x0c, 0x06, 0x00 ], - [ 0x00, 0x00, 0x7e, 0x00, 0x00, 0x7e, 0x00, 0x00 ], - [ 0x60, 0x30, 0x18, 0x0c, 0x18, 0x30, 0x60, 0x00 ], - [ 0x7c, 0xc6, 0x0c, 0x18, 0x18, 0x00, 0x18, 0x00 ], - [ 0x7c, 0xc6, 0xde, 0xde, 0xde, 0xc0, 0x78, 0x00 ], - [ 0x38, 0x6c, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00 ], - [ 0xfc, 0x66, 0x66, 0x7c, 0x66, 0x66, 0xfc, 0x00 ], - [ 0x3c, 0x66, 0xc0, 0xc0, 0xc0, 0x66, 0x3c, 0x00 ], - [ 0xf8, 0x6c, 0x66, 0x66, 0x66, 0x6c, 0xf8, 0x00 ], - [ 0xfe, 0x62, 0x68, 0x78, 0x68, 0x62, 0xfe, 0x00 ], - [ 0xfe, 0x62, 0x68, 0x78, 0x68, 0x60, 0xf0, 0x00 ], - [ 0x3c, 0x66, 0xc0, 0xc0, 0xce, 0x66, 0x3a, 0x00 ], - [ 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00 ], - [ 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00 ], - [ 0x1e, 0x0c, 0x0c, 0x0c, 0xcc, 0xcc, 0x78, 0x00 ], - [ 0xe6, 0x66, 0x6c, 0x78, 0x6c, 0x66, 0xe6, 0x00 ], - [ 0xf0, 0x60, 0x60, 0x60, 0x62, 0x66, 0xfe, 0x00 ], - [ 0xc6, 0xee, 0xfe, 0xfe, 0xd6, 0xc6, 0xc6, 0x00 ], - [ 0xc6, 0xe6, 0xf6, 0xde, 0xce, 0xc6, 0xc6, 0x00 ], - [ 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00 ], - [ 0xfc, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xf0, 0x00 ], - [ 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xce, 0x7c, 0x0e ], - [ 0xfc, 0x66, 0x66, 0x7c, 0x6c, 0x66, 0xe6, 0x00 ], - [ 0x3c, 0x66, 0x30, 0x18, 0x0c, 0x66, 0x3c, 0x00 ], - [ 0x7e, 0x7e, 0x5a, 0x18, 0x18, 0x18, 0x3c, 0x00 ], - [ 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00 ], - [ 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x6c, 0x38, 0x00 ], - [ 0xc6, 0xc6, 0xc6, 0xd6, 0xd6, 0xfe, 0x6c, 0x00 ], - [ 0xc6, 0xc6, 0x6c, 0x38, 0x6c, 0xc6, 0xc6, 0x00 ], - [ 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x3c, 0x00 ], - [ 0xfe, 0xc6, 0x8c, 0x18, 0x32, 0x66, 0xfe, 0x00 ], - [ 0x3c, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3c, 0x00 ], - [ 0xc0, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x02, 0x00 ], - [ 0x3c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x3c, 0x00 ], - [ 0x10, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff ], - [ 0x30, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0x76, 0x00 ], - [ 0xe0, 0x60, 0x7c, 0x66, 0x66, 0x66, 0xdc, 0x00 ], - [ 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xc6, 0x7c, 0x00 ], - [ 0x1c, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00 ], - [ 0x00, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0x7c, 0x00 ], - [ 0x3c, 0x66, 0x60, 0xf8, 0x60, 0x60, 0xf0, 0x00 ], - [ 0x00, 0x00, 0x76, 0xcc, 0xcc, 0x7c, 0x0c, 0xf8 ], - [ 0xe0, 0x60, 0x6c, 0x76, 0x66, 0x66, 0xe6, 0x00 ], - [ 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x3c, 0x00 ], - [ 0x06, 0x00, 0x06, 0x06, 0x06, 0x66, 0x66, 0x3c ], - [ 0xe0, 0x60, 0x66, 0x6c, 0x78, 0x6c, 0xe6, 0x00 ], - [ 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00 ], - [ 0x00, 0x00, 0xec, 0xfe, 0xd6, 0xd6, 0xd6, 0x00 ], - [ 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x00 ], - [ 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0x00 ], - [ 0x00, 0x00, 0xdc, 0x66, 0x66, 0x7c, 0x60, 0xf0 ], - [ 0x00, 0x00, 0x76, 0xcc, 0xcc, 0x7c, 0x0c, 0x1e ], - [ 0x00, 0x00, 0xdc, 0x76, 0x60, 0x60, 0xf0, 0x00 ], - [ 0x00, 0x00, 0x7e, 0xc0, 0x7c, 0x06, 0xfc, 0x00 ], - [ 0x30, 0x30, 0xfc, 0x30, 0x30, 0x36, 0x1c, 0x00 ], - [ 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00 ], - [ 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0x6c, 0x38, 0x00 ], - [ 0x00, 0x00, 0xc6, 0xd6, 0xd6, 0xfe, 0x6c, 0x00 ], - [ 0x00, 0x00, 0xc6, 0x6c, 0x38, 0x6c, 0xc6, 0x00 ], - [ 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0xfc ], - [ 0x00, 0x00, 0x7e, 0x4c, 0x18, 0x32, 0x7e, 0x00 ], - [ 0x0e, 0x18, 0x18, 0x70, 0x18, 0x18, 0x0e, 0x00 ], - [ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00 ], - [ 0x70, 0x18, 0x18, 0x0e, 0x18, 0x18, 0x70, 0x00 ], - [ 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0x00 ], - [ 0x7c, 0xc6, 0xc0, 0xc0, 0xc6, 0x7c, 0x0c, 0x78 ], - [ 0xcc, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00 ], - [ 0x0c, 0x18, 0x7c, 0xc6, 0xfe, 0xc0, 0x7c, 0x00 ], - [ 0x7c, 0x82, 0x78, 0x0c, 0x7c, 0xcc, 0x76, 0x00 ], - [ 0xc6, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0x76, 0x00 ], - [ 0x30, 0x18, 0x78, 0x0c, 0x7c, 0xcc, 0x76, 0x00 ], - [ 0x30, 0x30, 0x78, 0x0c, 0x7c, 0xcc, 0x76, 0x00 ], - [ 0x00, 0x00, 0x7e, 0xc0, 0xc0, 0x7e, 0x0c, 0x38 ], - [ 0x7c, 0x82, 0x7c, 0xc6, 0xfe, 0xc0, 0x7c, 0x00 ], - [ 0xc6, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0x7c, 0x00 ], - [ 0x30, 0x18, 0x7c, 0xc6, 0xfe, 0xc0, 0x7c, 0x00 ], - [ 0x66, 0x00, 0x38, 0x18, 0x18, 0x18, 0x3c, 0x00 ], - [ 0x7c, 0x82, 0x38, 0x18, 0x18, 0x18, 0x3c, 0x00 ], - [ 0x30, 0x18, 0x00, 0x38, 0x18, 0x18, 0x3c, 0x00 ], - [ 0xc6, 0x38, 0x6c, 0xc6, 0xfe, 0xc6, 0xc6, 0x00 ], - [ 0x38, 0x6c, 0x7c, 0xc6, 0xfe, 0xc6, 0xc6, 0x00 ], - [ 0x18, 0x30, 0xfe, 0xc0, 0xf8, 0xc0, 0xfe, 0x00 ], - [ 0x00, 0x00, 0x7e, 0x18, 0x7e, 0xd8, 0x7e, 0x00 ], - [ 0x3e, 0x6c, 0xcc, 0xfe, 0xcc, 0xcc, 0xce, 0x00 ], - [ 0x7c, 0x82, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0x00 ], - [ 0xc6, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0x00 ], - [ 0x30, 0x18, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0x00 ], - [ 0x78, 0x84, 0x00, 0xcc, 0xcc, 0xcc, 0x76, 0x00 ], - [ 0x60, 0x30, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00 ], - [ 0xc6, 0x00, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0xfc ], - [ 0xc6, 0x38, 0x6c, 0xc6, 0xc6, 0x6c, 0x38, 0x00 ], - [ 0xc6, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00 ], - [ 0x18, 0x18, 0x7e, 0xc0, 0xc0, 0x7e, 0x18, 0x18 ], - [ 0x38, 0x6c, 0x64, 0xf0, 0x60, 0x66, 0xfc, 0x00 ], - [ 0x66, 0x66, 0x3c, 0x7e, 0x18, 0x7e, 0x18, 0x18 ], - [ 0xf8, 0xcc, 0xcc, 0xfa, 0xc6, 0xcf, 0xc6, 0xc7 ], - [ 0x0e, 0x1b, 0x18, 0x3c, 0x18, 0xd8, 0x70, 0x00 ], - [ 0x18, 0x30, 0x78, 0x0c, 0x7c, 0xcc, 0x76, 0x00 ], - [ 0x0c, 0x18, 0x00, 0x38, 0x18, 0x18, 0x3c, 0x00 ], - [ 0x0c, 0x18, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0x00 ], - [ 0x18, 0x30, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00 ], - [ 0x76, 0xdc, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x00 ], - [ 0x76, 0xdc, 0x00, 0xe6, 0xf6, 0xde, 0xce, 0x00 ], - [ 0x3c, 0x6c, 0x6c, 0x3e, 0x00, 0x7e, 0x00, 0x00 ], - [ 0x38, 0x6c, 0x6c, 0x38, 0x00, 0x7c, 0x00, 0x00 ], - [ 0x18, 0x00, 0x18, 0x18, 0x30, 0x63, 0x3e, 0x00 ], - [ 0x00, 0x00, 0x00, 0xfe, 0xc0, 0xc0, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0xfe, 0x06, 0x06, 0x00, 0x00 ], - [ 0x63, 0xe6, 0x6c, 0x7e, 0x33, 0x66, 0xcc, 0x0f ], - [ 0x63, 0xe6, 0x6c, 0x7a, 0x36, 0x6a, 0xdf, 0x06 ], - [ 0x18, 0x00, 0x18, 0x18, 0x3c, 0x3c, 0x18, 0x00 ], - [ 0x00, 0x33, 0x66, 0xcc, 0x66, 0x33, 0x00, 0x00 ], - [ 0x00, 0xcc, 0x66, 0x33, 0x66, 0xcc, 0x00, 0x00 ], - [ 0x22, 0x88, 0x22, 0x88, 0x22, 0x88, 0x22, 0x88 ], - [ 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa ], - [ 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd ], - [ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 ], - [ 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0x18, 0x18 ], - [ 0x18, 0x18, 0xf8, 0x18, 0xf8, 0x18, 0x18, 0x18 ], - [ 0x36, 0x36, 0x36, 0x36, 0xf6, 0x36, 0x36, 0x36 ], - [ 0x00, 0x00, 0x00, 0x00, 0xfe, 0x36, 0x36, 0x36 ], - [ 0x00, 0x00, 0xf8, 0x18, 0xf8, 0x18, 0x18, 0x18 ], - [ 0x36, 0x36, 0xf6, 0x06, 0xf6, 0x36, 0x36, 0x36 ], - [ 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 ], - [ 0x00, 0x00, 0xfe, 0x06, 0xf6, 0x36, 0x36, 0x36 ], - [ 0x36, 0x36, 0xf6, 0x06, 0xfe, 0x00, 0x00, 0x00 ], - [ 0x36, 0x36, 0x36, 0x36, 0xfe, 0x00, 0x00, 0x00 ], - [ 0x18, 0x18, 0xf8, 0x18, 0xf8, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x18, 0x18, 0x18 ], - [ 0x18, 0x18, 0x18, 0x18, 0x1f, 0x00, 0x00, 0x00 ], - [ 0x18, 0x18, 0x18, 0x18, 0xff, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0xff, 0x18, 0x18, 0x18 ], - [ 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x18, 0x18 ], - [ 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00 ], - [ 0x18, 0x18, 0x18, 0x18, 0xff, 0x18, 0x18, 0x18 ], - [ 0x18, 0x18, 0x1f, 0x18, 0x1f, 0x18, 0x18, 0x18 ], - [ 0x36, 0x36, 0x36, 0x36, 0x37, 0x36, 0x36, 0x36 ], - [ 0x36, 0x36, 0x37, 0x30, 0x3f, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x3f, 0x30, 0x37, 0x36, 0x36, 0x36 ], - [ 0x36, 0x36, 0xf7, 0x00, 0xff, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xff, 0x00, 0xf7, 0x36, 0x36, 0x36 ], - [ 0x36, 0x36, 0x37, 0x30, 0x37, 0x36, 0x36, 0x36 ], - [ 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00 ], - [ 0x36, 0x36, 0xf7, 0x00, 0xf7, 0x36, 0x36, 0x36 ], - [ 0x18, 0x18, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00 ], - [ 0x36, 0x36, 0x36, 0x36, 0xff, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xff, 0x00, 0xff, 0x18, 0x18, 0x18 ], - [ 0x00, 0x00, 0x00, 0x00, 0xff, 0x36, 0x36, 0x36 ], - [ 0x36, 0x36, 0x36, 0x36, 0x3f, 0x00, 0x00, 0x00 ], - [ 0x18, 0x18, 0x1f, 0x18, 0x1f, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x1f, 0x18, 0x1f, 0x18, 0x18, 0x18 ], - [ 0x00, 0x00, 0x00, 0x00, 0x3f, 0x36, 0x36, 0x36 ], - [ 0x36, 0x36, 0x36, 0x36, 0xff, 0x36, 0x36, 0x36 ], - [ 0x18, 0x18, 0xff, 0x18, 0xff, 0x18, 0x18, 0x18 ], - [ 0x18, 0x18, 0x18, 0x18, 0xf8, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x1f, 0x18, 0x18, 0x18 ], - [ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff ], - [ 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff ], - [ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0 ], - [ 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f ], - [ 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x76, 0xdc, 0xc8, 0xdc, 0x76, 0x00 ], - [ 0x78, 0xcc, 0xcc, 0xd8, 0xcc, 0xc6, 0xcc, 0x00 ], - [ 0xfe, 0xc6, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00 ], - [ 0x00, 0x00, 0xfe, 0x6c, 0x6c, 0x6c, 0x6c, 0x00 ], - [ 0xfe, 0xc6, 0x60, 0x30, 0x60, 0xc6, 0xfe, 0x00 ], - [ 0x00, 0x00, 0x7e, 0xd8, 0xd8, 0xd8, 0x70, 0x00 ], - [ 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x7c, 0xc0 ], - [ 0x00, 0x76, 0xdc, 0x18, 0x18, 0x18, 0x18, 0x00 ], - [ 0x7e, 0x18, 0x3c, 0x66, 0x66, 0x3c, 0x18, 0x7e ], - [ 0x38, 0x6c, 0xc6, 0xfe, 0xc6, 0x6c, 0x38, 0x00 ], - [ 0x38, 0x6c, 0xc6, 0xc6, 0x6c, 0x6c, 0xee, 0x00 ], - [ 0x0e, 0x18, 0x0c, 0x3e, 0x66, 0x66, 0x3c, 0x00 ], - [ 0x00, 0x00, 0x7e, 0xdb, 0xdb, 0x7e, 0x00, 0x00 ], - [ 0x06, 0x0c, 0x7e, 0xdb, 0xdb, 0x7e, 0x60, 0xc0 ], - [ 0x1e, 0x30, 0x60, 0x7e, 0x60, 0x30, 0x1e, 0x00 ], - [ 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00 ], - [ 0x00, 0xfe, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0x00 ], - [ 0x18, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x7e, 0x00 ], - [ 0x30, 0x18, 0x0c, 0x18, 0x30, 0x00, 0x7e, 0x00 ], - [ 0x0c, 0x18, 0x30, 0x18, 0x0c, 0x00, 0x7e, 0x00 ], - [ 0x0e, 0x1b, 0x1b, 0x18, 0x18, 0x18, 0x18, 0x18 ], - [ 0x18, 0x18, 0x18, 0x18, 0x18, 0xd8, 0xd8, 0x70 ], - [ 0x00, 0x18, 0x00, 0x7e, 0x00, 0x18, 0x00, 0x00 ], - [ 0x00, 0x76, 0xdc, 0x00, 0x76, 0xdc, 0x00, 0x00 ], - [ 0x38, 0x6c, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00 ], - [ 0x0f, 0x0c, 0x0c, 0x0c, 0xec, 0x6c, 0x3c, 0x1c ], - [ 0x6c, 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, 0x00 ], - [ 0x78, 0x0c, 0x18, 0x30, 0x7c, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x3c, 0x3c, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ] - ] - @height = 8 - @[k] = v for own k, v of options - -class @ImageTextModeFontAmiga extends @ImageTextModeFont - constructor: ( options ) -> - super @width - @chars = [ - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x83, 0x83, 0x39, 0x39, 0x21, 0x21, 0x29, 0x29, 0x21, 0x21, 0x3f, 0x3f, 0x87, 0x87, 0xff, 0xff ], - [ 0xc3, 0xc3, 0x99, 0x99, 0x99, 0x99, 0x81, 0x81, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xff, 0xff ], - [ 0x83, 0x83, 0x99, 0x99, 0x99, 0x99, 0x83, 0x83, 0x99, 0x99, 0x99, 0x99, 0x83, 0x83, 0xff, 0xff ], - [ 0xe1, 0xe1, 0xcf, 0xcf, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0xcf, 0xcf, 0xe1, 0xe1, 0xff, 0xff ], - [ 0x87, 0x87, 0x93, 0x93, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x93, 0x93, 0x87, 0x87, 0xff, 0xff ], - [ 0x81, 0x81, 0x9f, 0x9f, 0x9f, 0x9f, 0x87, 0x87, 0x9f, 0x9f, 0x9f, 0x9f, 0x81, 0x81, 0xff, 0xff ], - [ 0x81, 0x81, 0x9f, 0x9f, 0x9f, 0x9f, 0x87, 0x87, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0xff, 0xff ], - [ 0xc3, 0xc3, 0x99, 0x99, 0x9f, 0x9f, 0x91, 0x91, 0x99, 0x99, 0x99, 0x99, 0xc1, 0xc1, 0xff, 0xff ], - [ 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x81, 0x81, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xff, 0xff ], - [ 0xc3, 0xc3, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xc3, 0xc3, 0xff, 0xff ], - [ 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0x99, 0x99, 0xc3, 0xc3, 0xff, 0xff ], - [ 0x9c, 0x9c, 0x99, 0x99, 0x93, 0x93, 0x87, 0x87, 0x93, 0x93, 0x99, 0x99, 0x9c, 0x9c, 0xff, 0xff ], - [ 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x81, 0x81, 0xff, 0xff ], - [ 0x9c, 0x9c, 0x88, 0x88, 0x80, 0x80, 0x94, 0x94, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0xff, 0xff ], - [ 0x9c, 0x9c, 0x8c, 0x8c, 0x84, 0x84, 0x90, 0x90, 0x98, 0x98, 0x9c, 0x9c, 0x9c, 0x9c, 0xff, 0xff ], - [ 0xc3, 0xc3, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xc3, 0xc3, 0xff, 0xff ], - [ 0x83, 0x83, 0x99, 0x99, 0x99, 0x99, 0x83, 0x83, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0xff, 0xff ], - [ 0xc3, 0xc3, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x91, 0x91, 0xc0, 0xc0, 0xff, 0xff ], - [ 0x83, 0x83, 0x99, 0x99, 0x99, 0x99, 0x83, 0x83, 0x93, 0x93, 0x99, 0x99, 0x99, 0x99, 0xff, 0xff ], - [ 0xc3, 0xc3, 0x99, 0x99, 0x8f, 0x8f, 0xc3, 0xc3, 0xf1, 0xf1, 0x99, 0x99, 0xc3, 0xc3, 0xff, 0xff ], - [ 0x81, 0x81, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xff, 0xff ], - [ 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xc3, 0xc3, 0xff, 0xff ], - [ 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x81, 0xc3, 0xc3, 0xe7, 0xe7, 0xff, 0xff ], - [ 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x94, 0x94, 0x80, 0x80, 0x88, 0x88, 0x9c, 0x9c, 0xff, 0xff ], - [ 0x3c, 0x3c, 0x99, 0x99, 0xc3, 0xc3, 0xe7, 0xe7, 0xc3, 0xc3, 0x99, 0x99, 0x3c, 0x3c, 0xff, 0xff ], - [ 0x3c, 0x3c, 0x99, 0x99, 0xc3, 0xc3, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xff, 0xff ], - [ 0x80, 0x80, 0xf9, 0xf9, 0xf3, 0xf3, 0xe7, 0xe7, 0xcf, 0xcf, 0x9f, 0x9f, 0x80, 0x80, 0xff, 0xff ], - [ 0xc3, 0xc3, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xc3, 0xc3, 0xff, 0xff ], - [ 0x3f, 0x3f, 0x9f, 0x9f, 0xcf, 0xcf, 0xe7, 0xe7, 0xf3, 0xf3, 0xf9, 0xf9, 0xfc, 0xfc, 0xff, 0xff ], - [ 0xc3, 0xc3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xc3, 0xc3, 0xff, 0xff ], - [ 0xf7, 0xf7, 0xe3, 0xe3, 0xc9, 0xc9, 0x9c, 0x9c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00 ], - [ 0x6c, 0x6c, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x6c, 0x6c, 0x6c, 0x6c, 0xfe, 0xfe, 0x6c, 0x6c, 0xfe, 0xfe, 0x6c, 0x6c, 0x6c, 0x6c, 0x00, 0x00 ], - [ 0x18, 0x18, 0x3e, 0x3e, 0x60, 0x60, 0x3c, 0x3c, 0x06, 0x06, 0x7c, 0x7c, 0x18, 0x18, 0x00, 0x00 ], - [ 0x00, 0x00, 0x66, 0x66, 0xac, 0xac, 0xd8, 0xd8, 0x36, 0x36, 0x6a, 0x6a, 0xcc, 0xcc, 0x00, 0x00 ], - [ 0x38, 0x38, 0x6c, 0x6c, 0x68, 0x68, 0x76, 0x76, 0xdc, 0xdc, 0xce, 0xce, 0x7b, 0x7b, 0x00, 0x00 ], - [ 0x18, 0x18, 0x18, 0x18, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x0c, 0x0c, 0x18, 0x18, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x18, 0x18, 0x0c, 0x0c, 0x00, 0x00 ], - [ 0x30, 0x30, 0x18, 0x18, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x18, 0x18, 0x30, 0x30, 0x00, 0x00 ], - [ 0x00, 0x00, 0x66, 0x66, 0x3c, 0x3c, 0xff, 0xff, 0x3c, 0x3c, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x30, 0x30 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00 ], - [ 0x03, 0x03, 0x06, 0x06, 0x0c, 0x0c, 0x18, 0x18, 0x30, 0x30, 0x60, 0x60, 0xc0, 0xc0, 0x00, 0x00 ], - [ 0x3c, 0x3c, 0x66, 0x66, 0x6e, 0x6e, 0x7e, 0x7e, 0x76, 0x76, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x18, 0x18, 0x38, 0x38, 0x78, 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00 ], - [ 0x3c, 0x3c, 0x66, 0x66, 0x06, 0x06, 0x0c, 0x0c, 0x18, 0x18, 0x30, 0x30, 0x7e, 0x7e, 0x00, 0x00 ], - [ 0x3c, 0x3c, 0x66, 0x66, 0x06, 0x06, 0x1c, 0x1c, 0x06, 0x06, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x1c, 0x1c, 0x3c, 0x3c, 0x6c, 0x6c, 0xcc, 0xcc, 0xfe, 0xfe, 0x0c, 0x0c, 0x0c, 0x0c, 0x00, 0x00 ], - [ 0x7e, 0x7e, 0x60, 0x60, 0x7c, 0x7c, 0x06, 0x06, 0x06, 0x06, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x1c, 0x1c, 0x30, 0x30, 0x60, 0x60, 0x7c, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x7e, 0x7e, 0x06, 0x06, 0x06, 0x06, 0x0c, 0x0c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00 ], - [ 0x3c, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x3c, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x3e, 0x06, 0x06, 0x0c, 0x0c, 0x38, 0x38, 0x00, 0x00 ], - [ 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00 ], - [ 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x30, 0x30 ], - [ 0x00, 0x00, 0x06, 0x06, 0x18, 0x18, 0x60, 0x60, 0x18, 0x18, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x00, 0x00, 0x7e, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x60, 0x60, 0x18, 0x18, 0x06, 0x06, 0x18, 0x18, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00 ], - [ 0x3c, 0x3c, 0x66, 0x66, 0x06, 0x06, 0x0c, 0x0c, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00 ], - [ 0x7c, 0x7c, 0xc6, 0xc6, 0xde, 0xde, 0xd6, 0xd6, 0xde, 0xde, 0xc0, 0xc0, 0x78, 0x78, 0x00, 0x00 ], - [ 0x3c, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x7e, 0x7e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00 ], - [ 0x7c, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x7c, 0x00, 0x00 ], - [ 0x1e, 0x1e, 0x30, 0x30, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x30, 0x30, 0x1e, 0x1e, 0x00, 0x00 ], - [ 0x78, 0x78, 0x6c, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x6c, 0x6c, 0x78, 0x78, 0x00, 0x00 ], - [ 0x7e, 0x7e, 0x60, 0x60, 0x60, 0x60, 0x78, 0x78, 0x60, 0x60, 0x60, 0x60, 0x7e, 0x7e, 0x00, 0x00 ], - [ 0x7e, 0x7e, 0x60, 0x60, 0x60, 0x60, 0x78, 0x78, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00 ], - [ 0x3c, 0x3c, 0x66, 0x66, 0x60, 0x60, 0x6e, 0x6e, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x3e, 0x00, 0x00 ], - [ 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7e, 0x7e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00 ], - [ 0x3c, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0xc6, 0xc6, 0xcc, 0xcc, 0xd8, 0xd8, 0xf0, 0xf0, 0xd8, 0xd8, 0xcc, 0xcc, 0xc6, 0xc6, 0x00, 0x00 ], - [ 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7e, 0x7e, 0x00, 0x00 ], - [ 0xc6, 0xc6, 0xee, 0xee, 0xfe, 0xfe, 0xd6, 0xd6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00 ], - [ 0xc6, 0xc6, 0xe6, 0xe6, 0xf6, 0xf6, 0xde, 0xde, 0xce, 0xce, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00 ], - [ 0x3c, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x7c, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x7c, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00 ], - [ 0x78, 0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xdc, 0xdc, 0x7e, 0x7e, 0x00, 0x00 ], - [ 0x7c, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x7c, 0x6c, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00 ], - [ 0x3c, 0x3c, 0x66, 0x66, 0x70, 0x70, 0x3c, 0x3c, 0x0e, 0x0e, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x7e, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00 ], - [ 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x3c, 0x3c, 0x18, 0x18, 0x00, 0x00 ], - [ 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xd6, 0xd6, 0xfe, 0xfe, 0xee, 0xee, 0xc6, 0xc6, 0x00, 0x00 ], - [ 0xc3, 0xc3, 0x66, 0x66, 0x3c, 0x3c, 0x18, 0x18, 0x3c, 0x3c, 0x66, 0x66, 0xc3, 0xc3, 0x00, 0x00 ], - [ 0xc3, 0xc3, 0x66, 0x66, 0x3c, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00 ], - [ 0xfe, 0xfe, 0x0c, 0x0c, 0x18, 0x18, 0x30, 0x30, 0x60, 0x60, 0xc0, 0xc0, 0xfe, 0xfe, 0x00, 0x00 ], - [ 0x3c, 0x3c, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0xc0, 0xc0, 0x60, 0x60, 0x30, 0x30, 0x18, 0x18, 0x0c, 0x0c, 0x06, 0x06, 0x03, 0x03, 0x00, 0x00 ], - [ 0x3c, 0x3c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x10, 0x10, 0x38, 0x38, 0x6c, 0x6c, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe ], - [ 0x18, 0x18, 0x18, 0x18, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x3c, 0x3c, 0x06, 0x06, 0x3e, 0x3e, 0x66, 0x66, 0x3e, 0x3e, 0x00, 0x00 ], - [ 0x60, 0x60, 0x60, 0x60, 0x7c, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x7c, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x3c, 0x3c, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x06, 0x06, 0x06, 0x06, 0x3e, 0x3e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x3e, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x3c, 0x3c, 0x66, 0x66, 0x7e, 0x7e, 0x60, 0x60, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x1c, 0x1c, 0x30, 0x30, 0x7c, 0x7c, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x3e, 0x3e, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x3e, 0x06, 0x06, 0x3c, 0x3c ], - [ 0x60, 0x60, 0x60, 0x60, 0x7c, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00 ], - [ 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0c, 0x0c, 0x00, 0x00 ], - [ 0x0c, 0x0c, 0x00, 0x00, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x78, 0x78 ], - [ 0x60, 0x60, 0x60, 0x60, 0x66, 0x66, 0x6c, 0x6c, 0x78, 0x78, 0x6c, 0x6c, 0x66, 0x66, 0x00, 0x00 ], - [ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0c, 0x0c, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0xec, 0xec, 0xfe, 0xfe, 0xd6, 0xd6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x7c, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x3c, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x7c, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x7c, 0x60, 0x60, 0x60, 0x60 ], - [ 0x00, 0x00, 0x00, 0x00, 0x3e, 0x3e, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x3e, 0x06, 0x06, 0x06, 0x06 ], - [ 0x00, 0x00, 0x00, 0x00, 0x7c, 0x7c, 0x66, 0x66, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x3c, 0x3c, 0x60, 0x60, 0x3c, 0x3c, 0x06, 0x06, 0x7c, 0x7c, 0x00, 0x00 ], - [ 0x30, 0x30, 0x30, 0x30, 0x7c, 0x7c, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x1c, 0x1c, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x3e, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x18, 0x18, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xd6, 0xd6, 0xfe, 0xfe, 0x6c, 0x6c, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0x6c, 0x6c, 0x38, 0x38, 0x6c, 0x6c, 0xc6, 0xc6, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x18, 0x18, 0x30, 0x30 ], - [ 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x0c, 0x0c, 0x18, 0x18, 0x30, 0x30, 0x7e, 0x7e, 0x00, 0x00 ], - [ 0x0e, 0x0e, 0x18, 0x18, 0x18, 0x18, 0x70, 0x70, 0x18, 0x18, 0x18, 0x18, 0x0e, 0x0e, 0x00, 0x00 ], - [ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00 ], - [ 0x70, 0x70, 0x18, 0x18, 0x18, 0x18, 0x0e, 0x0e, 0x18, 0x18, 0x18, 0x18, 0x70, 0x70, 0x00, 0x00 ], - [ 0x72, 0x72, 0x9c, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x0f, 0x0f, 0x3c, 0x3c, 0xf0, 0xf0, 0xc3, 0xc3, 0x0f, 0x0f, 0x3c, 0x3c, 0xf0, 0xf0, 0x00, 0x00 ], - [ 0xcf, 0xcf, 0xe7, 0xe7, 0xc3, 0xc3, 0x99, 0x99, 0x81, 0x81, 0x99, 0x99, 0x99, 0x99, 0xff, 0xff ], - [ 0xf3, 0xf3, 0xe7, 0xe7, 0xc3, 0xc3, 0x99, 0x99, 0x81, 0x81, 0x99, 0x99, 0x99, 0x99, 0xff, 0xff ], - [ 0xe7, 0xe7, 0x99, 0x99, 0xc3, 0xc3, 0x99, 0x99, 0x81, 0x81, 0x99, 0x99, 0x99, 0x99, 0xff, 0xff ], - [ 0x8e, 0x8e, 0x71, 0x71, 0xc3, 0xc3, 0x99, 0x99, 0x81, 0x81, 0x99, 0x99, 0x99, 0x99, 0xff, 0xff ], - [ 0x99, 0x99, 0xff, 0xff, 0xc3, 0xc3, 0x99, 0x99, 0x81, 0x81, 0x99, 0x99, 0x99, 0x99, 0xff, 0xff ], - [ 0xe7, 0xe7, 0xdb, 0xdb, 0xc3, 0xc3, 0x99, 0x99, 0x81, 0x81, 0x99, 0x99, 0x99, 0x99, 0xff, 0xff ], - [ 0xe0, 0xe0, 0xc3, 0xc3, 0xc3, 0xc3, 0x90, 0x90, 0x83, 0x83, 0x33, 0x33, 0x30, 0x30, 0xff, 0xff ], - [ 0xe1, 0xe1, 0xcf, 0xcf, 0x9f, 0x9f, 0x9f, 0x9f, 0xcf, 0xcf, 0xe1, 0xe1, 0xf3, 0xf3, 0xe7, 0xe7 ], - [ 0xcf, 0xcf, 0xe7, 0xe7, 0x81, 0x81, 0x9f, 0x9f, 0x87, 0x87, 0x9f, 0x9f, 0x81, 0x81, 0xff, 0xff ], - [ 0xf3, 0xf3, 0xe7, 0xe7, 0x81, 0x81, 0x9f, 0x9f, 0x87, 0x87, 0x9f, 0x9f, 0x81, 0x81, 0xff, 0xff ], - [ 0xe7, 0xe7, 0x99, 0x99, 0x81, 0x81, 0x9f, 0x9f, 0x87, 0x87, 0x9f, 0x9f, 0x81, 0x81, 0xff, 0xff ], - [ 0x99, 0x99, 0xff, 0xff, 0x81, 0x81, 0x9f, 0x9f, 0x87, 0x87, 0x9f, 0x9f, 0x81, 0x81, 0xff, 0xff ], - [ 0xcf, 0xcf, 0xe7, 0xe7, 0xc3, 0xc3, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xc3, 0xc3, 0xff, 0xff ], - [ 0xf3, 0xf3, 0xe7, 0xe7, 0xc3, 0xc3, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xc3, 0xc3, 0xff, 0xff ], - [ 0xe7, 0xe7, 0x99, 0x99, 0xc3, 0xc3, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xc3, 0xc3, 0xff, 0xff ], - [ 0x99, 0x99, 0xff, 0xff, 0xc3, 0xc3, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xc3, 0xc3, 0xff, 0xff ], - [ 0x87, 0x87, 0x93, 0x93, 0x99, 0x99, 0x09, 0x09, 0x99, 0x99, 0x93, 0x93, 0x87, 0x87, 0xff, 0xff ], - [ 0x8e, 0x8e, 0x31, 0x31, 0x19, 0x19, 0x09, 0x09, 0x21, 0x21, 0x31, 0x31, 0x39, 0x39, 0xff, 0xff ], - [ 0xcf, 0xcf, 0xe7, 0xe7, 0xc3, 0xc3, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xc3, 0xc3, 0xff, 0xff ], - [ 0xf3, 0xf3, 0xe7, 0xe7, 0xc3, 0xc3, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xc3, 0xc3, 0xff, 0xff ], - [ 0xe7, 0xe7, 0x99, 0x99, 0xc3, 0xc3, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xc3, 0xc3, 0xff, 0xff ], - [ 0x8e, 0x8e, 0x71, 0x71, 0xc3, 0xc3, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xc3, 0xc3, 0xff, 0xff ], - [ 0x3c, 0x3c, 0xc3, 0xc3, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xc3, 0xc3, 0xff, 0xff ], - [ 0xff, 0xff, 0x39, 0x39, 0x93, 0x93, 0xc7, 0xc7, 0x93, 0x93, 0x39, 0x39, 0xff, 0xff, 0xff, 0xff ], - [ 0xc0, 0xc0, 0x99, 0x99, 0x91, 0x91, 0x81, 0x81, 0x89, 0x89, 0x99, 0x99, 0x03, 0x03, 0xff, 0xff ], - [ 0xcf, 0xcf, 0xe7, 0xe7, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xc3, 0xc3, 0xff, 0xff ], - [ 0xf3, 0xf3, 0xe7, 0xe7, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xc3, 0xc3, 0xff, 0xff ], - [ 0xe7, 0xe7, 0xdb, 0xdb, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xc3, 0xc3, 0xff, 0xff ], - [ 0x99, 0x99, 0xff, 0xff, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xc3, 0xc3, 0xff, 0xff ], - [ 0xf9, 0xf9, 0xf7, 0xf7, 0x3c, 0x3c, 0x99, 0x99, 0xc3, 0xc3, 0xe7, 0xe7, 0xe7, 0xe7, 0xff, 0xff ], - [ 0x3f, 0x3f, 0x3f, 0x3f, 0x03, 0x03, 0x39, 0x39, 0x03, 0x03, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff ], - [ 0xc3, 0xc3, 0x99, 0x99, 0x99, 0x99, 0x93, 0x93, 0x99, 0x99, 0x99, 0x99, 0x93, 0x93, 0x9f, 0x9f ], - [ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x80 ], - [ 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00 ], - [ 0x00, 0x00, 0x0c, 0x0c, 0x3e, 0x3e, 0x6c, 0x6c, 0x3e, 0x3e, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x1c, 0x1c, 0x36, 0x36, 0x30, 0x30, 0x78, 0x78, 0x30, 0x30, 0x30, 0x30, 0x7e, 0x7e, 0x00, 0x00 ], - [ 0x42, 0x42, 0x3c, 0x3c, 0x66, 0x66, 0x3c, 0x3c, 0x42, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0xc3, 0xc3, 0x66, 0x66, 0x3c, 0x3c, 0x18, 0x18, 0x3c, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00 ], - [ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00 ], - [ 0x3c, 0x3c, 0x60, 0x60, 0x3c, 0x3c, 0x66, 0x66, 0x3c, 0x3c, 0x06, 0x06, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x7e, 0x7e, 0x81, 0x81, 0x9d, 0x9d, 0xb1, 0xb1, 0x9d, 0x9d, 0x81, 0x81, 0x7e, 0x7e, 0x00, 0x00 ], - [ 0x1c, 0x1c, 0x24, 0x24, 0x44, 0x44, 0x3c, 0x3c, 0x00, 0x00, 0x7e, 0x7e, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x33, 0x33, 0x66, 0x66, 0xcc, 0xcc, 0x66, 0x66, 0x33, 0x33, 0x00, 0x00, 0x00, 0x00 ], - [ 0x3e, 0x3e, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x7e, 0x7e, 0x81, 0x81, 0xb9, 0xb9, 0xa5, 0xa5, 0xb9, 0xb9, 0xa5, 0xa5, 0x81, 0x81, 0x7e, 0x7e ], - [ 0x7e, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x3c, 0x3c, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x18, 0x18, 0x18, 0x18, 0x7e, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x7e, 0x7e, 0x00, 0x00 ], - [ 0x78, 0x78, 0x0c, 0x0c, 0x18, 0x18, 0x30, 0x30, 0x7c, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x78, 0x78, 0x0c, 0x0c, 0x18, 0x18, 0x0c, 0x0c, 0x78, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x18, 0x18, 0x30, 0x30, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7f, 0x7f, 0x60, 0x60 ], - [ 0x3e, 0x3e, 0x7a, 0x7a, 0x7a, 0x7a, 0x3a, 0x3a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30, 0x30 ], - [ 0x30, 0x30, 0x70, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ], - [ 0x38, 0x38, 0x44, 0x44, 0x44, 0x44, 0x38, 0x38, 0x00, 0x00, 0x7c, 0x7c, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0xcc, 0xcc, 0x66, 0x66, 0x33, 0x33, 0x66, 0x66, 0xcc, 0xcc, 0x00, 0x00, 0x00, 0x00 ], - [ 0x40, 0x40, 0xc6, 0xc6, 0x4c, 0x4c, 0x58, 0x58, 0x32, 0x32, 0x66, 0x66, 0xcf, 0xcf, 0x02, 0x02 ], - [ 0x40, 0x40, 0xc6, 0xc6, 0x4c, 0x4c, 0x58, 0x58, 0x3e, 0x3e, 0x62, 0x62, 0xc4, 0xc4, 0x0e, 0x0e ], - [ 0xc0, 0xc0, 0x23, 0x23, 0x66, 0x66, 0x2c, 0x2c, 0xd9, 0xd9, 0x33, 0x33, 0x67, 0x67, 0x01, 0x01 ], - [ 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x30, 0x30, 0x60, 0x60, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x30, 0x30, 0x18, 0x18, 0x3c, 0x3c, 0x66, 0x66, 0x7e, 0x7e, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00 ], - [ 0x0c, 0x0c, 0x18, 0x18, 0x3c, 0x3c, 0x66, 0x66, 0x7e, 0x7e, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00 ], - [ 0x18, 0x18, 0x66, 0x66, 0x3c, 0x3c, 0x66, 0x66, 0x7e, 0x7e, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00 ], - [ 0x71, 0x71, 0x8e, 0x8e, 0x3c, 0x3c, 0x66, 0x66, 0x7e, 0x7e, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00 ], - [ 0x66, 0x66, 0x00, 0x00, 0x3c, 0x3c, 0x66, 0x66, 0x7e, 0x7e, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00 ], - [ 0x18, 0x18, 0x24, 0x24, 0x3c, 0x3c, 0x66, 0x66, 0x7e, 0x7e, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00 ], - [ 0x1f, 0x1f, 0x3c, 0x3c, 0x3c, 0x3c, 0x6f, 0x6f, 0x7c, 0x7c, 0xcc, 0xcc, 0xcf, 0xcf, 0x00, 0x00 ], - [ 0x1e, 0x1e, 0x30, 0x30, 0x60, 0x60, 0x60, 0x60, 0x30, 0x30, 0x1e, 0x1e, 0x0c, 0x0c, 0x18, 0x18 ], - [ 0x30, 0x30, 0x18, 0x18, 0x7e, 0x7e, 0x60, 0x60, 0x78, 0x78, 0x60, 0x60, 0x7e, 0x7e, 0x00, 0x00 ], - [ 0x0c, 0x0c, 0x18, 0x18, 0x7e, 0x7e, 0x60, 0x60, 0x78, 0x78, 0x60, 0x60, 0x7e, 0x7e, 0x00, 0x00 ], - [ 0x18, 0x18, 0x66, 0x66, 0x7e, 0x7e, 0x60, 0x60, 0x78, 0x78, 0x60, 0x60, 0x7e, 0x7e, 0x00, 0x00 ], - [ 0x66, 0x66, 0x00, 0x00, 0x7e, 0x7e, 0x60, 0x60, 0x78, 0x78, 0x60, 0x60, 0x7e, 0x7e, 0x00, 0x00 ], - [ 0x30, 0x30, 0x18, 0x18, 0x3c, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x0c, 0x0c, 0x18, 0x18, 0x3c, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x18, 0x18, 0x66, 0x66, 0x3c, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x66, 0x66, 0x00, 0x00, 0x3c, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x78, 0x78, 0x6c, 0x6c, 0x66, 0x66, 0xf6, 0xf6, 0x66, 0x66, 0x6c, 0x6c, 0x78, 0x78, 0x00, 0x00 ], - [ 0x71, 0x71, 0xce, 0xce, 0xe6, 0xe6, 0xf6, 0xf6, 0xde, 0xde, 0xce, 0xce, 0xc6, 0xc6, 0x00, 0x00 ], - [ 0x30, 0x30, 0x18, 0x18, 0x3c, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x0c, 0x0c, 0x18, 0x18, 0x3c, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x18, 0x18, 0x66, 0x66, 0x3c, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x71, 0x71, 0x8e, 0x8e, 0x3c, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0xc3, 0xc3, 0x3c, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x00, 0x00, 0xc6, 0xc6, 0x6c, 0x6c, 0x38, 0x38, 0x6c, 0x6c, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00 ], - [ 0x3f, 0x3f, 0x66, 0x66, 0x6e, 0x6e, 0x7e, 0x7e, 0x76, 0x76, 0x66, 0x66, 0xfc, 0xfc, 0x00, 0x00 ], - [ 0x30, 0x30, 0x18, 0x18, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x0c, 0x0c, 0x18, 0x18, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x18, 0x18, 0x24, 0x24, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x06, 0x06, 0x08, 0x08, 0xc3, 0xc3, 0x66, 0x66, 0x3c, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00 ], - [ 0xc0, 0xc0, 0xc0, 0xc0, 0xfc, 0xfc, 0xc6, 0xc6, 0xfc, 0xfc, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00 ], - [ 0x3c, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x6c, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x6c, 0x6c, 0x60, 0x60 ], - [ 0x30, 0x30, 0x18, 0x18, 0x3c, 0x3c, 0x06, 0x06, 0x3e, 0x3e, 0x66, 0x66, 0x3e, 0x3e, 0x00, 0x00 ], - [ 0x0c, 0x0c, 0x18, 0x18, 0x3c, 0x3c, 0x06, 0x06, 0x3e, 0x3e, 0x66, 0x66, 0x3e, 0x3e, 0x00, 0x00 ], - [ 0x18, 0x18, 0x66, 0x66, 0x3c, 0x3c, 0x06, 0x06, 0x3e, 0x3e, 0x66, 0x66, 0x3e, 0x3e, 0x00, 0x00 ], - [ 0x71, 0x71, 0x8e, 0x8e, 0x3c, 0x3c, 0x06, 0x06, 0x3e, 0x3e, 0x66, 0x66, 0x3e, 0x3e, 0x00, 0x00 ], - [ 0x66, 0x66, 0x00, 0x00, 0x3c, 0x3c, 0x06, 0x06, 0x3e, 0x3e, 0x66, 0x66, 0x3e, 0x3e, 0x00, 0x00 ], - [ 0x18, 0x18, 0x24, 0x24, 0x3c, 0x3c, 0x06, 0x06, 0x3e, 0x3e, 0x66, 0x66, 0x3e, 0x3e, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x1b, 0x1b, 0x7f, 0x7f, 0xd8, 0xd8, 0x77, 0x77, 0x00, 0x00 ], - [ 0x00, 0x00, 0x00, 0x00, 0x3c, 0x3c, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x3c, 0x3c, 0x18, 0x18 ], - [ 0x30, 0x30, 0x18, 0x18, 0x3c, 0x3c, 0x66, 0x66, 0x7e, 0x7e, 0x60, 0x60, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x0c, 0x0c, 0x18, 0x18, 0x3c, 0x3c, 0x66, 0x66, 0x7e, 0x7e, 0x60, 0x60, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x18, 0x18, 0x66, 0x66, 0x3c, 0x3c, 0x66, 0x66, 0x7e, 0x7e, 0x60, 0x60, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x66, 0x66, 0x00, 0x00, 0x3c, 0x3c, 0x66, 0x66, 0x7e, 0x7e, 0x60, 0x60, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x30, 0x30, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0c, 0x0c, 0x00, 0x00 ], - [ 0x0c, 0x0c, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0c, 0x0c, 0x00, 0x00 ], - [ 0x18, 0x18, 0x66, 0x66, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0c, 0x0c, 0x00, 0x00 ], - [ 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0c, 0x0c, 0x00, 0x00 ], - [ 0x60, 0x60, 0xfc, 0xfc, 0x18, 0x18, 0x3c, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x71, 0x71, 0x8e, 0x8e, 0x00, 0x00, 0x7c, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00 ], - [ 0x30, 0x30, 0x18, 0x18, 0x00, 0x00, 0x3c, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x0c, 0x0c, 0x18, 0x18, 0x00, 0x00, 0x3c, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x18, 0x18, 0x66, 0x66, 0x00, 0x00, 0x3c, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x71, 0x71, 0x8e, 0x8e, 0x00, 0x00, 0x3c, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x3c, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x00, 0x00 ], - [ 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x7e, 0x7e, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 ], - [ 0x00, 0x00, 0x02, 0x02, 0x7c, 0x7c, 0xce, 0xce, 0xd6, 0xd6, 0xe6, 0xe6, 0x7c, 0x7c, 0x80, 0x80 ], - [ 0x30, 0x30, 0x18, 0x18, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x3e, 0x00, 0x00 ], - [ 0x0c, 0x0c, 0x18, 0x18, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x3e, 0x00, 0x00 ], - [ 0x18, 0x18, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x3e, 0x00, 0x00 ], - [ 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x3e, 0x00, 0x00 ], - [ 0x0c, 0x0c, 0x18, 0x18, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x18, 0x18, 0x30, 0x30 ], - [ 0x60, 0x60, 0x60, 0x60, 0x7c, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x7c, 0x60, 0x60, 0x60, 0x60 ], - [ 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x18, 0x18, 0x30, 0x30 ] - ] - @height = 16 - @[k] = v for own k, v of options - -Sahli Editor -============ - -Editor for Sahli files. - -- open existing file -- create new item - * get filename from dir - * insert SAUCE data if available - * use SAUCE data to find font - * allow Amiga choices - * colorpicker -- edit existing item -- remove item -- clear whole file -- copy/clone -- move items around -- sort items -- output to screen (copy into file) - * run from node - save filename dialog - -*** -It should be noted that this does not do bounds checking, and it would be very -possible to overflow this by using a debugger and such. As the purpose of this -is limited, and this should NOT be put on a live website, I feel that is ok for -now. Perhaps I will fix it after Revision. - -*** - -== Create Initial crappage -We need to make a screen that has a few things in it for starters -Title, load existing, and new file options. - -Silliness for checking that this works. - - $(-> $("h1").hide().slideDown(500)) - -Create buttos to choose between the New and Load functionalities -(As we are not going to ever load a file _and_ do a new file.) -(If someone wants to do that, they can restart with F5 or something.) -Also hide the editor until needed, and initialize some elements. - - $(-> - $("#newsahli") - .button { disabled: false} - .click -> newsahli() - ) - - $(-> - $("#loadsahli") - .button { disabled: false} - .click -> loadsahli() - ) - $(-> - $(".hidden").hide() - $("#entryamiga").button {icons: {primary:"ui-icon-gear"}} - .click -> - stuff = $(@).children() - if @.value == "1" - stuff[1].textContent = 'Ansi' - @.value = "0" - else - stuff[1].textContent = 'Ascii' - @.value = "1" - $(".45box").css {width:'45%',display:'inline-block'} - $(".groupbox p").css {margin:"0 0 .25em 0"} - $("#entryfilepick").change -> - if @.files[0]? then $("#entryfile").val @.files[0].name - $("#entryfile").click -> - $("#entryfilepick").click() - ) - -The sahli file definition format is as follows: -"file" - the actual filename on disk, "name" - the title of the piece, -the boolean 'amiga' indicates if it is ansi or ascii (True = ascii), -width is the width (widest point of the file), author the author of the piece, -the color and bg items define the color for amiga ascii, and the font -defines the font similarly. For PC ansi, this should be 'ansifont.' -The three remaining lines are informational and optional. - -The slide format is currently unused, but consists of a background picture, -a html template, and a css file. - - class Sahli - constructor: -> - @emptyfiledef = { - "file": "", - "name": "", - "amiga": true, - "width": "", - "author": "", - "font": "Propaz", - "color": [ 0,0,0,0 ], - "bg": [ 0,0,0,0 ], - "line1": "", - "line2": "", - "text": "" - } - @emptyslidesdef = { - "background": "", - "template": "", - "css": "" - } - @empty = { - "slides": @emptyslidesdef, - "filedata": [ ] - } - - loader: -> - $.ajax { - url: '../list.sahli', - dataType: "json", - success: (result) => - @data = result - @.edit() - } - -Editor functionality: -Close the new/load buttons - unneeded now. -list, and allow dragon-droppings for sorting. Doubleclick to edit, or use -edit button. - - edit: -> - $('#buttonbox').hide() - $('#listsave').button {icons: {primary:"ui-icon-disk"}} - .click => - console.log dumpjson @.data - - -You need to save the order, and extract these in that order; moving around -does not alter the array. Alternately, _have_ it alter the array. - - @buildlist @data - - buildlist: (data) -> - $('#list').show 100 - x = 0 - $('#sortlist').append @.additem item,x++ for item in @data.filedata - $('#sortlist').sortable - start: (event,ui) -> - ui.item.data {startpos:ui.item.index()} - stop: (event,ui) => - s = ui.item.data().startpos - e = ui.item.index() - @data.filedata = @.rearrangearray s,e,@data.filedata - console.log name.author for name in @data.filedata - console.log '---' - -Given a start and and end position, pop the array element at start off and -insert it into the array at end position. A la the draggon-dropping. - - rearrangearray: (startpos,endpos,a) -> - moving = a[startpos] - alen = a.length - tarr = a[0...startpos].concat a[startpos+1..-1] - tarr[0...endpos].concat [moving].concat tarr[endpos..-1] - - - additem: (item,pos) -> - entry = @.genentryline item,pos - entry.dblclick => - @.editline item,pos - - genentryline: (item,pos) -> - arrows = "" - amigastatus = ansiorascii booltoint item.amiga - delbutton = $("delete") - .click ((_this) -> - (event) -> - pos = @.id.replace "del-","" - console.log _this.data.filedata.splice pos,1 - @.parentNode.remove() - )(this) - entry = $("