Last active
December 11, 2015 20:49
-
-
Save FiXato/4658366 to your computer and use it in GitHub Desktop.
A bit of an updated version of my ansinator script. Should toss it in a proper repo.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env ruby | |
| # encoding: utf-8 | |
| # Based on the 'colors' zsh script I found online somewhere years ago. | |
| # It looks like it is based on works posted at http://crunchbanglinux.org/forums/topic/13645/ansi-colorschemes-scripts/page/2/ | |
| # I've basically just edited it a bit to work with IRC control codes as well. | |
| # ~~Filip H.F. "FiXato" Slagter, 2012 | |
| abort("You need at least Ruby 1.9 to run this script due to encoding issues") if RUBY_VERSION < '1.9' | |
| class String | |
| def center(str_length) | |
| delta = str_length - self.length | |
| return self unless delta > 0 | |
| half=(delta/2) | |
| remainder = (delta-half) | |
| '%s%s%s' % [' ' * half, self, ' ' * remainder] | |
| end | |
| end | |
| class IrcFormatter | |
| COLOR_TABLE = { | |
| :mirc => { | |
| :white => 0, | |
| :black => 1, | |
| :blue => 2, :navy => 2, | |
| :green => 3, | |
| :red => 4, | |
| :brown => 5, :maroon => 5, | |
| :purple => 6, | |
| :orange => 7, :olive => 7, | |
| :yellow => 8, | |
| :lightgreen => 9, :lime => 9, | |
| :teal => 10, :darkcyan => 10, | |
| :cyan => 11, :aqua => 11, | |
| :lightblue => 12, :royal => 12, | |
| :pink => 13, :lightpurple => 13, | |
| :grey => 14, :gray => 14, | |
| :lightgrey => 15, :silver => 15, | |
| :transparent => 99, | |
| }, | |
| } | |
| COLOR_ESCAPE_CODE = "\003" | |
| BOLD_ESCAPE_CODE = "\002" | |
| ITALIC_ESCAPE_CODE = "\035" | |
| UNDERLINE_ESCAPE_CODE = "\037" | |
| REVERSE_ESCAPE_CODE = "\0026" | |
| RESET_ESCAPE_CODE = "\017" | |
| attr_accessor :type | |
| def initialize(type=:mirc) | |
| @type = type | |
| end | |
| #Convert colour name to appropriate colour code | |
| def c(name) | |
| return name unless name.kind_of?(Symbol) | |
| COLOR_TABLE[type][name] | |
| end | |
| def color(fg,bg=nil) | |
| arr = [COLOR_ESCAPE_CODE] | |
| arr << c(fg) if fg | |
| arr << ',' if bg | |
| arr << c(bg) if bg | |
| arr.join('') | |
| end | |
| def default | |
| color(:white,:black) | |
| end | |
| def fg(colour_name) | |
| colour = color(colour_name) | |
| end | |
| def bg(colour_name) | |
| color(nil,colour_name) | |
| end | |
| def b(text=nil) | |
| format(BOLD_ESCAPE_CODE, text) | |
| end | |
| def i(text=nil) | |
| format(ITALIC_ESCAPE_CODE, text) | |
| end | |
| def u(text=nil) | |
| format(UNDERLINE_ESCAPE_CODE, text) | |
| end | |
| def r(text=nil) | |
| format(REVERSE_ESCAPE_CODE, text) | |
| end | |
| def reset | |
| RESET_ESCAPE_CODE | |
| end | |
| def strip_formatting(str) | |
| str = str.clone | |
| str.gsub!(/#{COLOR_ESCAPE_CODE}\d{0,2}(,\d{1,2})?/,'') | |
| str.gsub!(BOLD_ESCAPE_CODE,'') | |
| str.gsub!(ITALIC_ESCAPE_CODE,'') | |
| str.gsub!(UNDERLINE_ESCAPE_CODE,'') | |
| str.gsub!(REVERSE_ESCAPE_CODE,'') | |
| str.gsub!(RESET_ESCAPE_CODE,'') | |
| str | |
| end | |
| private | |
| def format(format_code, text=nil) | |
| str = format_code | |
| str += [text, format_code] unless text.nil? | |
| str | |
| end | |
| end | |
| if ARGV == ['mirctable'] | |
| f = IrcFormatter.new(:mirc) | |
| str = "" | |
| (0..15).map do |i| | |
| str += [IrcFormatter::COLOR_ESCAPE_CODE,i,'....'].join("") | |
| end | |
| str += "#{f.reset}\n" | |
| (0..15).map do |i| | |
| str += [IrcFormatter::COLOR_ESCAPE_CODE,i,',',i,'....'].join("") | |
| end | |
| str += "#{f.reset}\n" | |
| (0..15).map do |i| | |
| str += [IrcFormatter::COLOR_ESCAPE_CODE,1,',',i,'....'].join("") | |
| end | |
| str += "#{f.reset}\n" | |
| (0..15).map do |i| | |
| str += [IrcFormatter::COLOR_ESCAPE_CODE,0,',',i,'....'].join("") | |
| end | |
| str += "#{f.reset}\n" | |
| (0..15).map do |i| | |
| str += [f.reset,IrcFormatter::COLOR_ESCAPE_CODE,nil,',',i,'....'].join("") | |
| end | |
| str += "#{f.reset}\n" | |
| (0..15).map do |i| | |
| str += ' %02i ' % i | |
| end | |
| puts str + f.reset | |
| exit | |
| end | |
| class AnsiSprite | |
| attr_accessor :primary_colour, :secondary_colour, :formatter, :replacement_char, :subtitle, :name, | |
| :raw, :sprite, :transformations | |
| def initialize(name) | |
| #Defaults | |
| @formatter = IrcFormatter.new(:mirc) | |
| @primary_colour = :black | |
| @secondary_colour = :white | |
| @sprites_dir = File.join(File.dirname(File.expand_path(__FILE__)), 'ansi-shapes') | |
| @subtitle = '' | |
| @transformations = [] | |
| @name = name | |
| end | |
| def load_sprite(name=nil) | |
| @name = name unless name.nil? | |
| filename = File.join(@sprites_dir, File.basename(@name) + '.shape') | |
| raise 'Unknown Shape' unless File.exist?(filename) | |
| @raw = File.readlines(filename).map{|l|l.gsub("\n",'')} | |
| @sprite = @raw | |
| end | |
| def append_subtitle | |
| delta = width - subtitle.length | |
| if delta > 0 | |
| @sprite << @subtitle.center(width) | |
| else | |
| @sprite.map! do |line| | |
| line += (' '*delta.abs) | |
| end | |
| @sprite << @subtitle | |
| end | |
| end | |
| def unformatted_sprite | |
| @sprite.map do |line| | |
| line.gsub(/\$\{(.+?)\}/, '') | |
| end | |
| end | |
| def optimise_sprite | |
| unformatted_sprite.each_with_index do |line,index| | |
| # Make sure each line starts with the primary colour | |
| formatted_line = '${1}%s' % @sprite[index] | |
| # Pad each line so each line is of equal length | |
| difference = width-line.length | |
| formatted_line += (' '*difference) if difference > 0 | |
| # And end each line with the reset colour | |
| formatted_line += '${r}' | |
| @sprite[index] = formatted_line | |
| end | |
| end | |
| def transform | |
| @transformations.each do |transformation| | |
| case transformation | |
| when :mirror | |
| @sprite.map! do |line| | |
| sections = line.split(/(\$\{\S+?\})/) | |
| next line.reverse if sections.size == 1 | |
| pairs = sections.each_slice(2).to_a | |
| #puts "====" | |
| #p pairs | |
| #puts "-----" | |
| i = -1 | |
| pairs.reverse! | |
| pairs.map do |a| | |
| a[0].reverse! | |
| a.reverse! | |
| #p a | |
| #p ['swapping',a[0],'for', pairs[i][0]] | |
| a[0] = pairs[i][0] | |
| i -= 1 | |
| a | |
| end#.rotate(1) | |
| #pairs[-1].reverse! | |
| #p pairs | |
| #puts "====" | |
| pairs.join('') | |
| end | |
| end | |
| end | |
| end | |
| def formatted_sprite | |
| @sprite.map do |line| | |
| str = line.gsub(/\$\{(.+?)\}/) do |match| | |
| style($1) | |
| end | |
| str.gsub!(' ',@replacement_char) if replace_spaces? | |
| #[formatter.fg(@primary_colour), str, formatter.reset].join('') | |
| #[str, formatter.reset].join('') | |
| [formatter.default, str, formatter.reset,formatter.default].join('') | |
| end | |
| end | |
| def width | |
| unformatted_sprite.max_by{|line|line.length}.length | |
| end | |
| def style(format_string) | |
| case format_string.to_s | |
| when /#(\d+)(,(\d+))?/ | |
| return formatter.color($1,$3) | |
| when /([01]),([01])/ | |
| fg = ($1.to_i == 0 ? @secondary_colour : @primary_colour) | |
| bg = ($2.to_i == 0 ? @secondary_colour : @primary_colour) | |
| return formatter.color(fg,bg) | |
| when '0' | |
| return formatter.fg(@secondary_colour) | |
| when '1' | |
| return formatter.fg(@primary_colour) | |
| when 'r' | |
| return formatter.reset | |
| end | |
| end | |
| def replace_spaces? | |
| !(replacement_char == '' || replacement_char.nil?) | |
| end | |
| def number_of_lines | |
| @sprite.size | |
| end | |
| end | |
| class AnsiScene | |
| require 'yaml' | |
| attr_accessor :scenes_dir | |
| attr_reader :shapes | |
| def initialize(*shapes) | |
| @shapes = [] | |
| shapes.each{|shape|add_shape(shape)} | |
| @scenes_dir = File.join(File.dirname(File.expand_path(__FILE__)), 'ansi-shapes') | |
| end | |
| def add_shape(shape) | |
| raise 'Not an AnsiSprite' unless shape.kind_of?(AnsiSprite) | |
| @shapes << shape | |
| end | |
| def height | |
| @shapes.max_by{|g|g.number_of_lines}.number_of_lines | |
| end | |
| def irc_lines | |
| lines = Array.new(height) | |
| (0...height).each do |i| | |
| shapes.map{|s|[s.formatted_sprite,s]}.each do |fsprite,shape| | |
| lines[i] ||= IrcFormatter.new.default | |
| if fsprite[i] | |
| lines[i] += fsprite[i] | |
| else | |
| lines[i] += ' ' * shape.width | |
| end | |
| lines[i] += ' ' | |
| end | |
| end | |
| lines | |
| end | |
| def store(name) | |
| filename = File.basename(name.to_s) | |
| abort("Invalid ansinator scene name: #{name}") if filename.length < 1 | |
| filename += ".scene.ansinator" | |
| File.open(File.join(@scenes_dir, filename), "w") do |f| | |
| f.puts @shapes.to_yaml | |
| end | |
| end | |
| def load(name) | |
| filename = File.basename(name.to_s) | |
| abort("Invalid ansinator scene name: #{name}") if filename.length < 1 | |
| filename += ".scene.ansinator" | |
| @shapes = YAML.load_file(File.join(@scenes_dir, filename)) | |
| end | |
| end | |
| scene = AnsiScene.new | |
| if ARGV.include?('pacman') | |
| s = AnsiSprite.new('pacman') | |
| s.subtitle = 'Pac-Man' | |
| s.replacement_char = 'Β ' #'.' | |
| s.primary_colour = :yellow | |
| s.secondary_colour = :white | |
| s.load_sprite | |
| s.optimise_sprite | |
| s.append_subtitle | |
| scene.add_shape(s) | |
| [[:red, 'Blinky'], [:pink, 'Pinky'], [:cyan, 'Inky'], [:orange, 'Clyde']].each do |color, name| | |
| s = AnsiSprite.new('ghost') | |
| s.subtitle = name | |
| s.replacement_char = 'Β ' #'.' | |
| s.primary_colour = color | |
| s.secondary_colour = :white | |
| # s.transformations << :mirror | |
| s.load_sprite | |
| s.optimise_sprite | |
| # s.transform | |
| s.append_subtitle | |
| scene.add_shape(s) | |
| end | |
| end | |
| if ARGV.include?('space') | |
| i = 0 | |
| [[ :green, 'greeny'], [ :blue, 'bluey'], [ :red, 'Blinky'], [ :pink, 'Pinky'], [ :cyan, 'Inky'], [ :orange, 'Clyde'], [ :lightgreen, 'limey'], [ :lightblue, 'cloudy']].each do |color, name| | |
| s = AnsiSprite.new('spaceinvader%i' % (i%2 + 1)) | |
| i+=1 | |
| s.subtitle = name | |
| s.replacement_char = 'Β ' #'.' | |
| s.primary_colour = color | |
| s.secondary_colour = :white | |
| # s.transformations << :mirror | |
| s.load_sprite | |
| s.optimise_sprite | |
| # s.transform | |
| # s.append_subtitle | |
| scene.add_shape(s) | |
| end | |
| end | |
| if ARGV.include?('kirby') | |
| [[ :green, 'greeny']].each do |color, name| | |
| s = AnsiSprite.new('kirby') | |
| s.subtitle = name | |
| s.replacement_char = 'Β ' #'.' | |
| s.primary_colour = color | |
| s.secondary_colour = :white | |
| # s.transformations << :mirror | |
| s.load_sprite | |
| s.optimise_sprite | |
| # s.transform | |
| # s.append_subtitle | |
| scene.add_shape(s) | |
| end | |
| end | |
| if ARGV.include?('owl') | |
| [[ :green, 'greeny']].each do |color, name| | |
| s = AnsiSprite.new('owl') | |
| s.subtitle = name | |
| s.replacement_char = 'Β ' #'.' | |
| s.primary_colour = color | |
| s.secondary_colour = :white | |
| # s.transformations << :mirror | |
| s.load_sprite | |
| s.optimise_sprite | |
| # s.transform | |
| # s.append_subtitle | |
| scene.add_shape(s) | |
| end | |
| end | |
| if ARGV.include?('russia') | |
| [[ :green, 'greeny']].each do |color, name| | |
| s = AnsiSprite.new('russia') | |
| s.subtitle = name | |
| s.replacement_char = 'Β ' #'.' | |
| s.primary_colour = color | |
| s.secondary_colour = :white | |
| # s.transformations << :mirror | |
| s.load_sprite | |
| s.optimise_sprite | |
| # s.transform | |
| # s.append_subtitle | |
| scene.add_shape(s) | |
| end | |
| end | |
| if ARGV.include?('dkjr') | |
| [[ :brown, 'greeny']].each do |color, name| | |
| s = AnsiSprite.new('dkjr') | |
| s.subtitle = name | |
| s.replacement_char = 'Β ' #'.' | |
| s.primary_colour = color | |
| s.secondary_colour = :white | |
| # s.transformations << :mirror | |
| s.load_sprite | |
| s.optimise_sprite | |
| # s.transform | |
| # s.append_subtitle | |
| scene.add_shape(s) | |
| end | |
| end | |
| if ARGV.include?('smiley') | |
| [[ :brown, 'greeny']].each do |color, name| | |
| s = AnsiSprite.new('smiley') | |
| s.subtitle = name | |
| s.replacement_char = 'Β ' #'.' | |
| s.primary_colour = color | |
| s.secondary_colour = :white | |
| # s.transformations << :mirror | |
| s.load_sprite | |
| s.optimise_sprite | |
| # s.transform | |
| # s.append_subtitle | |
| scene.add_shape(s) | |
| end | |
| end | |
| if ARGV.include?('mario') | |
| [[ :brown, 'Mario']].each do |color, name| | |
| s = AnsiSprite.new('mario') | |
| s.subtitle = name | |
| s.replacement_char = 'Β ' #'.' | |
| s.primary_colour = color | |
| s.secondary_colour = :white | |
| # s.transformations << :mirror | |
| s.load_sprite | |
| s.optimise_sprite | |
| # s.transform | |
| s.append_subtitle | |
| scene.add_shape(s) | |
| end | |
| end | |
| #s = AnsiSprite.new('pacman') | |
| #s.subtitle = 'Pac-Man' | |
| #s.replacement_char = 'Β ' #'.' | |
| #s.primary_colour = :yellow | |
| #s.secondary_colour = :white | |
| #s.transformations << :mirror | |
| #s.load_sprite | |
| #s.optimise_sprite | |
| #s.transform | |
| #s.append_subtitle | |
| #scene.add_shape(s) | |
| #s = AnsiSprite.new('ghost') | |
| #s.subtitle = 'Ghost' | |
| #s.replacement_char = 'Β ' #'.' | |
| #s.primary_colour = :cyan | |
| #s.secondary_colour = :white | |
| #s.load_sprite | |
| #s.optimise_sprite | |
| #s.transform | |
| #s.append_subtitle | |
| #scene.add_shape(s) | |
| #s = AnsiSprite.new('ghost') | |
| #s.subtitle = 'Reversie' | |
| #s.replacement_char = 'Β ' #'.' | |
| #s.primary_colour = :blue | |
| #s.secondary_colour = :white | |
| #s.transformations << :mirror | |
| #s.load_sprite | |
| #s.optimise_sprite | |
| #s.transform | |
| #s.append_subtitle | |
| #scene.add_shape(s) | |
| #scene.store("pacman_chasing_and_ghosts") | |
| #scene.load("pacman_chasing_and_ghosts") | |
| puts scene.irc_lines |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ${#1,1}ββ${#12,12}β${#1,1}βββββββββββββββββββββββ${#12,12}β${#1,1}βββ | |
| ${#1,1}β${#12,12}β${#1,1}β${#12,12}β${#1,1}βββββββββββββββββββββ${#12,12}β${#1,1}β${#12,12}β${#1,1}ββ | |
| ${#7,7}βββ${#12,12}β${#7,7}β${#1,1}ββββββββββ${#0,0}β${#7,7}β${#5,5}βββ${#1,1}βββββ${#12,12}β${#1,1}β${#12,12}β${#1,1}ββ | |
| ${#7,7}ββ${#12,12}β${#1,1}β${#7,7}β${#5,5}β${#1,1}ββββββββ${#0,0}β${#1,1}β${#7,7}βββ${#5,5}ββ${#1,1}βββββ${#12,12}β${#1,1}βββ | |
| ${#7,7}βββ${#1,1}β${#5,5}βββ${#1,1}ββββ${#7,7}ββ${#5,5}ββ${#0,0}β${#1,1}β${#0,0}β${#7,7}ββ${#5,5}β${#1,1}βββββ${#12,12}β${#1,1}βββ | |
| ${#1,1}β${#7,7}β${#1,1}β${#12,12}β${#5,5}βββββ${#1,1}β${#7,7}ββββββ${#0,0}ββ${#7,7}β${#5,5}β${#7,7}β${#1,1}ββββ${#12,12}β${#1,1}β${#7,7}βββ | |
| ${#1,1}β${#12,12}β${#1,1}β${#12,12}β${#5,5}ββββββ${#7,7}β${#5,5}β${#7,7}βββββββββ${#0,0}β${#1,1}βββ${#7,7}β${#1,1}β${#12,12}β${#7,7}ββ | |
| ${#1,1}ββ${#12,12}β${#1,1}ββ${#5,5}βββββ${#0,0}β${#7,7}β${#5,5}ββββ${#7,7}ββββ${#0,0}β${#5,5}ββ${#1,1}β${#5,5}β${#7,7}β${#12,12}β${#7,7}βββ | |
| ${#1,1}ββ${#12,12}β${#1,1}βββ${#5,5}βββ${#0,0}ββ${#7,7}ββ${#5,5}ββββ${#7,7}βββ${#0,0}β${#5,5}βββββ${#12,12}β${#1,1}β${#7,7}β${#1,1}β | |
| ${#1,1}β${#12,12}β${#1,1}β${#12,12}β${#1,1}βββ${#5,5}ββ${#0,0}ββ${#5,5}β${#7,7}ββ${#5,5}ββ${#7,7}βββ${#0,0}β${#5,5}ββββββ${#1,1}β${#12,12}β${#1,1}ββ | |
| ${#1,1}β${#12,12}β${#1,1}β${#12,12}β${#1,1}ββββ${#5,5}β${#0,0}βββ${#5,5}β${#7,7}βββββ${#0,0}β${#5,5}βββββββ${#1,1}β${#12,12}β${#1,1}ββ | |
| ${#1,1}ββ${#12,12}β${#1,1}ββββββ${#0,0}ββββ${#5,5}βββ${#0,0}ββ${#5,5}βββββββ${#1,1}β${#12,12}β${#1,1}βββ | |
| ${#1,1}ββ${#12,12}β${#1,1}βββββ${#5,5}ββ${#0,0}ββ${#5,5}β${#0,0}ββββββ${#5,5}β${#0,0}β${#1,1}βββββ${#12,12}β${#1,1}βββ | |
| ${#1,1}β${#12,12}β${#1,1}β${#12,12}β${#1,1}ββ${#7,7}β${#5,5}βββ${#0,0}βββ${#5,5}ββ${#0,0}βββββ${#5,5}βββ${#1,1}ββ${#5,5}ββ${#12,12}β${#1,1}ββ | |
| ${#1,1}β${#12,12}β${#1,1}β${#12,12}β${#1,1}β${#7,7}β${#5,5}βββββ${#0,0}ββ${#5,5}β${#0,0}ββββ${#5,5}βββββββ${#7,7}ββ${#12,12}β${#1,1}ββ | |
| ${#1,1}ββ${#12,12}β${#1,1}ββ${#7,7}β${#5,5}ββββββ${#0,0}βββββ${#5,5}ββββββ${#7,7}ββββ${#1,1}βββ | |
| ${#1,1}ββ${#12,12}β${#1,1}ββ${#7,7}ββ${#5,5}βββ${#1,1}βββββββββββ${#5,5}β${#7,7}ββ${#1,1}ββ${#12,12}β${#1,1}βββ | |
| ${#1,1}β${#12,12}β${#1,1}β${#12,12}β${#1,1}ββ${#7,7}βββ${#1,1}ββββββββββββββββ${#12,12}β${#1,1}β${#12,12}β${#1,1}ββ | |
| ${#1,1}β${#12,12}β${#1,1}β${#12,12}β${#1,1}βββββββββββββββββββββ${#12,12}β${#1,1}β${#12,12}β${#1,1}ββ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ββββββββ | |
| β${0}βββ${1}ββ${0}βββ${1}βββ | |
| β${0}βββ${1}ββ${0}βββ${1}βββ | |
| ββββββββββββ | |
| ββββββββββββ | |
| β β β β |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ${#0,0}ββββ${#1,1}ββββββ${#0,0}ββ${#1,1}ββββββββββββ | |
| ${#0,0}ββ${#1,1}ββ${#13,13}ββββββ${#1,1}ββ${#13,13}ββββββββββββ${#1,1}ββββ | |
| ${#1,1}ββ${#13,13}ββββββ${#1,1}ββ${#13,13}ββββββββββββββββββ${#1,1}ββ | |
| ${#1,1}ββ${#13,13}ββββββββββββ${#1,1}ββ${#13,13}ββ${#1,1}ββ${#13,13}ββββββββββ${#1,1}ββ | |
| ${#1,1}ββ${#13,13}ββββββββββββ${#1,1}ββ${#13,13}ββ${#1,1}ββ${#13,13}ββββββββββββ${#1,1}ββ | |
| ${#1,1}ββ${#13,13}ββββββββββββ${#1,1}ββ${#13,13}ββ${#1,1}ββ${#13,13}ββββββββββββ${#1,1}ββ | |
| ${#0,0}ββ${#1,1}ββ${#13,13}ββββ${#4,4}ββββ${#13,13}ββ${#1,1}ββ${#13,13}ββ${#1,1}ββ${#13,13}ββ${#4,4}ββββ${#13,13}ββββββββ${#1,1}ββ | |
| ${#1,1}ββ${#13,13}ββββββ${#4,4}ββββ${#13,13}ββββββββββ${#4,4}ββββ${#13,13}ββββββββββ${#1,1}ββ | |
| ${#1,1}ββ${#13,13}ββββββββββ${#13,13}ββββ${#1,1}ββ${#13,13}ββββββββββββββββββββ${#1,1}ββ | |
| ${#1,1}ββ${#13,13}ββββββββββ${#13,13}ββββ${#1,1}ββ${#13,13}ββββββββββββββββββββ${#1,1}ββ | |
| ${#1,1}ββ${#13,13}ββββββββββ${#13,13}ββββ${#1,1}ββ${#13,13}ββββββββββββββββββββ${#1,1}ββ | |
| ${#0,0}ββ${#1,1}ββ${#13,13}ββββββββββββββββββββββ${#1,1}ββββ${#13,13}ββββββ${#1,1}ββ | |
| ${#0,0}ββ${#1,1}ββ${#13,13}ββββββββββββββββββββ${#1,1}ββ${#4,4}ββββ${#1,1}ββββββ | |
| ${#0,0}ββββ${#1,1}ββ${#13,13}ββββββββββββββββ${#1,1}ββ${#4,4}ββββββββ${#1,1}ββ | |
| ${#0,0}ββ${#1,1}ββ${#4,4}ββββββββ${#13,13}ββββββββ${#1,1}ββ${#4,4}ββββββββββ${#1,1}ββ | |
| ${#1,1}ββ${#4,4}ββββββββββββ${#1,1}ββββββ${#4,4}ββββββββββ${#1,1}ββ | |
| ${#1,1}ββ${#4,4}ββββββββββββ${#1,1}ββ${#0,0}ββββ${#1,1}ββ${#4,4}ββββββ${#1,1}ββ | |
| ${#1,1}ββββββββββββββ${#0,0}ββββββββ${#1,1}ββββββ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ${#1,1}ββββββ${#05}βββββ${#1,1}ββ${#07}βββ${#1,1}ββ${r} | |
| ${#1,1}βββββ${#05}βββββββββ${#07}ββ${#1,1}ββ${r} | |
| ${#1,1}βββββ${#03}βββ${#07}ββ${#01}β${#07}β${#01}β${#05}βββ${#1,1}ββ${r} | |
| ${#1,1}ββββ${#03}β${#07}β${#03}β${#07}βββ${#01}β${#07}βββ${#05}ββ${#1,1}ββ${r} | |
| ${#1,1}ββββ${#03}β${#07}β${#03}ββ${#07}βββ${#01}β${#07}βββ${#05}β${#1,1}ββ${r} | |
| ${#1,1}ββββ${#03}ββ${#07}ββββ${#01}ββββ${#05}β${#1,1}βββ${r} | |
| ${#1,1}ββββββ${#07}βββββββ${#05}ββ${#1,1}βββ${r} | |
| ${#1,1}βββ${#05}ββββ${#12}β${#05}βββ${#12}β${#05}ββ${#1,1}ββ${#05}β${#1,1}β${r} | |
| ${#1,1}β${#07}ββ${#05}βββββ${#12}β${#05}βββ${#12}β${#1,1}ββ${#05}ββ${#1,1}β${r} | |
| ${#1,1}β${#07}βββ${#05}ββββ${#12}ββββ${#08}β${#12}ββ${#05}ββ${#1,1}β${r} | |
| ${#1,1}ββ${#07}β${#1,1}ββ${#12}β${#05}β${#12}ββ${#08}β${#12}βββββ${#05}ββ${#1,1}β${r} | |
| ${#1,1}ββ${#05}βββ${#12}βββββββββ${#05}ββ${#1,1}ββ${r} | |
| ${#1,1}ββ${#05}βββ${#12}ββββββ${#1,1}βββββββ${r} | |
| ${#1,1}ββ${#05}ββ${#1,1}ββββββββββββββ${r} | |
| ${#1,1}ββββββββββββββββββ${r} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ${#1,1}ββββββββββββββββ${#14,14}ββ${#15,15}ββββββ${#14,14}ββ${#1,1}ββββββββββββββββββ${r} | |
| ${#1,1}ββββββββββ${#14,14}ββ${#15,15}ββββββ${#0,0}ββββββββ${#15,15}ββ${#14,14}ββ${#1,1}ββββββββββββββ${r} | |
| ${#1,1}ββββββββ${#14,14}ββ${#15,15}ββββ${#0,0}ββββββββββββββββ${#15,15}ββββ${#1,1}ββββββββββ${r} | |
| ${#1,1}ββββββ${#14,14}ββ${#15,15}ββ${#0,0}ββββββββββββββββββ${#15,15}ββ${#8,8}ββ${#15,15}ββββ${#1,1}ββββββββ${r} | |
| ${#1,1}ββββ${#15,15}ββ${#0,0}ββββββ${#8,8}ββββ${#15,15}ββ${#0,0}ββββββββββ${#14,14}ββ${#1,1}ββ${#8,8}ββ${#0,0}ββ${#14,14}ββ${#1,1}ββββββ${r} | |
| ${#1,1}ββ${#14,14}ββ${#15,15}ββ${#0,0}ββββ${#8,8}ββ${#1,1}ββββ${#8,8}ββ${#15,15}ββ${#0,0}ββββββββ${#15,15}ββ${#14,14}ββ${#8,8}ββ${#0,0}ββ${#15,15}ββ${#1,1}ββββββ${r} | |
| ${#1,1}ββ${#15,15}ββ${#0,0}ββββββ${#8,8}ββ${#1,1}ββββ${#8,8}ββ${#0,0}ββββββββ${#15,15}ββ${#0,0}ββ${#15,15}ββββ${#0,0}ββββ${#14,14}ββ${#1,1}ββββ${r} | |
| ${#1,1}ββ${#15,15}ββ${#0,0}ββββββββ${#8,8}ββββ${#0,0}ββββββββββ${#14,14}ββ${#15,15}ββ${#0,0}ββββββββ${#15,15}ββ${#1,1}ββββ${r} | |
| ${#14,14}ββ${#15,15}ββ${#0,0}ββββββββββββββββββββββ${#5,5}ββ${#14,14}ββ${#0,0}ββββββββ${#15,15}ββ${#1,1}ββββ${r} | |
| ${#14,14}ββ${#15,15}ββ${#0,0}ββββββββββββββββββββ${#14,14}ββ${#5,5}ββ${#14,14}ββ${#15,15}ββ${#0,0}ββββββββ${#14,14}ββ${#1,1}ββ${r} | |
| ${#15,15}ββββ${#0,0}ββββββββββββ${#15,15}ββ${#14,14}ββββββ${#5,5}ββββ${#7,7}ββ${#0,0}ββββββββββ${#14,14}ββ${#1,1}ββ${r} | |
| ${#15,15}ββ${#0,0}ββββββββββββββββ${#15,15}ββ${#7,7}ββ${#5,5}ββ${#4,4}ββ${#5,5}ββ${#14,14}ββ${#0,0}ββββββββββ${#15,15}ββ${#1,1}ββ${r} | |
| ${#15,15}ββ${#0,0}ββββββββββββββββββββ${#14,14}ββ${#1,1}ββ${#7,7}ββ${#15,15}ββ${#0,0}ββββββββββ${#15,15}ββ${#1,1}ββ${r} | |
| ${#14,14}ββ${#15,15}ββ${#0,0}ββββββββββββββββββββ${#15,15}ββ${#14,14}ββ${#15,15}ββ${#0,0}ββββββββββ${#15,15}ββ${#1,1}ββ${r} | |
| ${#14,14}ββ${#15,15}ββ${#0,0}ββββββββββββββββββββββββββββββββββββββ${#14,14}ββ${r} | |
| ${#14,14}ββ${#15,15}ββ${#0,0}ββββββββββββββββββββββββββββββββββββββ${#15,15}β${r} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| βββββββββ | |
| ββββββββββββ | |
| ββββββββ | |
| ββββββββ | |
| ββββββββββββ | |
| βββββββββ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ${#5}LOΠ£AL TO MOTHEΠ― Π―USSIA | |
| ${#4,4}ββββββββββββββββββββββββ | |
| ${#4,4}ββββββ${#8,8}ββββ${#4,4}ββββ${#8,8}ββ${#4,4}ββββββββ | |
| ${#4,4}ββββ${#8,8}ββββ${#4,4}ββββββββ${#8,8}ββ${#4,4}ββββββ | |
| ${#4,4}ββββ${#8,8}ββ${#4,4}ββ${#8,8}ββ${#4,4}ββββββββ${#8,8}ββ${#4,4}ββββ | |
| ${#4,4}ββββββββββ${#8,8}ββ${#4,4}ββββββ${#8,8}ββ${#4,4}ββββ | |
| ${#4,4}ββββββββββββ${#8,8}ββ${#4,4}ββββ${#8,8}ββ${#4,4}ββββ | |
| ${#4,4}ββββββ${#8,8}ββ${#4,4}ββββββ${#8,8}ββ${#4,4}ββ${#8,8}ββ${#4,4}ββββ | |
| ${#4,4}ββββ${#8,8}ββ${#4,4}ββ${#8,8}ββ${#4,4}ββββββ${#8,8}ββ${#4,4}ββββββ | |
| ${#4,4}ββ${#8,8}ββ${#4,4}ββββββ${#8,8}ββββββ${#4,4}ββ${#8,8}ββ${#4,4}ββββ | |
| ${#4,4}ββββββββββββββββββββ${#8,8}ββ${#4,4}ββ | |
| ${#4,4}ββββββββββββββββββββββββ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ${#11,11}βββββββββββββ${#1,1}ββββββββββββββββββββ${#11,11}ββββββββββββββ | |
| ${#12,12}ββββββββββ${#1,1}βββ${#8,8}ββββββββββββββββββββ${#1,1}ββββ${#12,12}ββββββββββ | |
| ${#11,11}ββββββββ${#1,1}ββ${#8,8}βββββββββββββββββββββββββββ${#1,1}ββ${#11,11}ββββββββ | |
| ${#12,12}βββββββ${#1,1}β${#8,8}βββββββββββββββββββββββββββββββ${#1,1}β${#12,12}βββββββ | |
| ${#11,11}ββββββ${#1,1}β${#8,8}ββ${#1,1}ββββββββ${#8,8}βββββββββ${#1,1}ββββββββ${#8,8}ββββββ${#1,1}β${#11,11}ββββββ | |
| ${#12,12}ββββββ${#1,1}β${#8,8}β${#1,1}β${#0,0}βββββ${#1,1}ββββ${#8,8}βββββββ${#1,1}β${#0,0}βββββ${#1,1}ββββ${#8,8}βββββ${#1,1}β${#12,12}ββββββ | |
| ${#11,11}βββββ${#1,1}β${#8,8}ββ${#1,1}β${#0,0}βββββ${#1,1}βββββ${#8,8}βββββ${#1,1}β${#0,0}ββββββ${#1,1}βββββ${#8,8}βββββ${#1,1}β${#11,11}βββββ | |
| ${#12,12}βββββ${#1,1}β${#8,8}ββ${#1,1}β${#0,0}βββββββββ${#1,1}β${#8,8}βββββ${#1,1}β${#0,0}ββββββββββ${#1,1}β${#8,8}βββββ${#1,1}β${#12,12}βββββ | |
| ${#11,11}ββββ${#1,1}β${#8,8}ββββ${#1,1}βββββββββ${#8,8}βββββββ${#1,1}ββββββββββ${#8,8}βββββββ${#1,1}β${#11,11}ββββ | |
| ${#12,12}ββββ${#1,1}β${#8,8}βββββββββββββββββββββββββββββββββββββ${#1,1}β${#12,12}ββββ | |
| ${#11,11}ββββ${#1,1}β${#8,8}ββ${#1,1}βββββββββββββββββββββββββββββ${#8,8}ββββββ${#1,1}β${#11,11}ββββ | |
| ${#12,12}ββββ${#1,1}β${#8,8}ββββ${#1,1}ββ${#6,6}ββββββββ:Dβ=)βfaceββββββ${#1,1}ββ${#8,8}βββββ${#1,1}β${#12,12}ββββ | |
| ${#11,11}βββββ${#1,1}β${#8,8}βββ${#1,1}ββ${#6,6}ββββββββββββββββββββββββ${#1,1}ββ${#8,8}ββββ${#1,1}β${#11,11}βββββ | |
| ${#12,12}βββββ${#1,1}β${#8,8}βββ${#1,1}ββ${#6,6}ββββββββββββ${#13,13}ββββββ${#6,6}ββββββ${#1,1}ββ${#8,8}ββββ${#1,1}β${#12,12}βββββ | |
| ${#11,11}ββββββ${#1,1}β${#8,8}βββ${#1,1}ββ${#6,6}βββββββββ${#13,13}ββββββββββ${#6,6}βββ${#1,1}ββ${#8,8}ββββ${#1,1}β${#11,11}ββββββ | |
| ${#12,12}ββββββ${#1,1}β${#8,8}ββββ${#1,1}ββ${#6,6}ββββββ${#13,13}βββββββββββββ${#6,6}ββ${#1,1}ββ${#8,8}ββββ${#1,1}β${#12,12}ββββββ | |
| ${#11,11}βββββββ${#1,1}β${#8,8}ββββ${#1,1}βββ${#6,6}βββ${#13,13}βββββββββββββ${#1,1}ββββ${#8,8}ββββ${#1,1}β${#11,11}βββββββ | |
| ${#12,12}ββββββββ${#1,1}ββ${#8,8}ββββ${#1,1}ββββββββββββββββββ${#8,8}βββββ${#1,1}ββ${#12,12}ββββββββ | |
| ${#11,11}ββββββββββ${#1,1}βββ${#8,8}ββββββββββββββββββββ${#1,1}ββββ${#11,11}ββββββββββ | |
| ${#12,12}βββββββββββββ${#1,1}ββββββββββββββββββββ${#12,12}ββββββββββββββ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ββ ββ | |
| βββββββββ | |
| βββββββββββ | |
| β βββ βββ β |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| βββ | |
| βββββββββ | |
| βββββββββββ | |
| βββββββββ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment