├── .DS_Store ├── lib ├── firew0rks │ ├── error.rb │ ├── version.rb │ ├── frame.rb │ ├── terminal.rb │ └── frames │ │ ├── 30.txt │ │ ├── 31.txt │ │ ├── 32.txt │ │ ├── 26.txt │ │ └── 28.txt └── firew0rks.rb ├── Rakefile ├── sample └── fireworks_show.gif ├── .gitignore ├── sig └── firew0rks.rbs ├── bin ├── setup └── console ├── Gemfile ├── Gemfile.lock ├── exe └── firew0rks ├── README.md ├── LICENSE.txt └── firew0rks.gemspec /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mark24Code/firew0rks/HEAD/.DS_Store -------------------------------------------------------------------------------- /lib/firew0rks/error.rb: -------------------------------------------------------------------------------- 1 | module Firew0rks 2 | class Error < StandardError; end 3 | end 4 | -------------------------------------------------------------------------------- /Rakefile: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require "bundler/gem_tasks" 4 | task default: %i[] 5 | -------------------------------------------------------------------------------- /sample/fireworks_show.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mark24Code/firew0rks/HEAD/sample/fireworks_show.gif -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /.bundle/ 2 | /.yardoc 3 | /_yardoc/ 4 | /coverage/ 5 | /doc/ 6 | /pkg/ 7 | /spec/reports/ 8 | /tmp/ 9 | -------------------------------------------------------------------------------- /lib/firew0rks/version.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module Firew0rks 4 | VERSION = "0.5.0" 5 | end 6 | -------------------------------------------------------------------------------- /sig/firew0rks.rbs: -------------------------------------------------------------------------------- 1 | module Firew0rks 2 | VERSION: String 3 | # See the writing guide of rbs: https://github.com/ruby/rbs#guides 4 | end 5 | -------------------------------------------------------------------------------- /bin/setup: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -euo pipefail 3 | IFS=$'\n\t' 4 | set -vx 5 | 6 | bundle install 7 | 8 | # Do any other automated setup that you need to do here 9 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | source "https://rubygems.org" 4 | 5 | # Specify your gem's dependencies in firew0rks.gemspec 6 | gemspec 7 | 8 | gem "rake", "~> 13.0" 9 | -------------------------------------------------------------------------------- /Gemfile.lock: -------------------------------------------------------------------------------- 1 | PATH 2 | remote: . 3 | specs: 4 | firew0rks (0.2.0) 5 | 6 | GEM 7 | remote: https://rubygems.org/ 8 | specs: 9 | rake (13.2.1) 10 | 11 | PLATFORMS 12 | arm64-darwin-24 13 | ruby 14 | 15 | DEPENDENCIES 16 | firew0rks! 17 | rake (~> 13.0) 18 | 19 | BUNDLED WITH 20 | 2.6.2 21 | -------------------------------------------------------------------------------- /bin/console: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | # frozen_string_literal: true 3 | 4 | require "bundler/setup" 5 | require "firew0rks" 6 | 7 | # You can add fixtures and/or initialization code here to make experimenting 8 | # with your gem easier. You can also use a different console, if you like. 9 | 10 | require "irb" 11 | IRB.start(__FILE__) 12 | -------------------------------------------------------------------------------- /exe/firew0rks: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require_relative "../lib/firew0rks" 3 | require_relative "../lib/firew0rks/terminal" 4 | 5 | def setup 6 | Terminal.open_buffer 7 | Terminal.hide_cursor 8 | Terminal.clear_screen 9 | end 10 | 11 | def clean_up 12 | Terminal.close_buffer 13 | Terminal.clear_screen 14 | Terminal.show_cursor 15 | end 16 | 17 | trap("INT") { 18 | clean_up 19 | puts "" 20 | puts "Bye." 21 | exit 0 22 | } 23 | 24 | begin 25 | setup 26 | Fireworks.new.run 27 | rescue => error 28 | puts error 29 | ensure 30 | clean_up 31 | end 32 | -------------------------------------------------------------------------------- /lib/firew0rks/frame.rb: -------------------------------------------------------------------------------- 1 | 2 | 3 | class Frame 4 | def initialize 5 | @dir = File.dirname(__FILE__) 6 | end 7 | 8 | def get_name_order(name_path) 9 | if name_path 10 | return File.basename(name_path, ".txt").to_i 11 | end 12 | end 13 | 14 | def get_frames 15 | frame_files = Dir.glob(File.join(@dir, "frames", "*.txt").to_s) 16 | 17 | frame_files = frame_files.sort do |a, b| 18 | get_name_order(a) <=> get_name_order(b) 19 | end 20 | 21 | frame_contents = frame_files.map do |frame_files| 22 | File.open(frame_files, 'r').read 23 | end 24 | 25 | return frame_contents 26 | end 27 | end 28 | -------------------------------------------------------------------------------- /lib/firew0rks/terminal.rb: -------------------------------------------------------------------------------- 1 | # ANSI_escape_code 2 | # Ref: https://xn--rpa.cc/irl/term.html 3 | # https://en.wikipedia.org/wiki/ANSI_escape_code#CSIsection 4 | 5 | class Terminal 6 | class << self 7 | 8 | def clear_buffer 9 | print "\x1b[3J" 10 | end 11 | 12 | def clear_screen 13 | print "\x1b[2J" 14 | end 15 | 16 | def hide_cursor 17 | print "\x1b[?25l" 18 | end 19 | 20 | def show_cursor 21 | print "\x1b[?25h" 22 | end 23 | 24 | def open_buffer 25 | # 打开特殊缓存 26 | print "\x1b[?1049h" 27 | end 28 | 29 | def close_buffer 30 | # 关闭特殊缓存 31 | print "\x1b[?1049l" 32 | end 33 | end 34 | end 35 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Firew0rks 2 | 3 | Play fireworks text art animations in your terminal! 4 | 5 | ![fireworks_show](./sample/fireworks_show.gif) 6 | 7 | ## Installation 8 | 9 | `$ gem install firew0rks` 10 | 11 | ## Usage 12 | 13 | 1) Run program 14 | 15 | `$ firew0rks` 16 | 17 | 2) Quit 18 | 19 | `Ctrl + C` 20 | 21 | ## Acknowledgments 22 | This project is a Ruby version of [text_art_animations](https://github.com/rvizzz/text_art_animations) by [rvizzz](https://github.com/rvizzz). Thank you for the inspiration and the amazing ASCII art animations! 23 | 24 | ## Contributing 25 | 26 | Bug reports and pull requests are welcome on GitHub at https://github.com/Mark24Code/firew0rks. 27 | 28 | ## License 29 | 30 | The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT). 31 | -------------------------------------------------------------------------------- /lib/firew0rks.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | require "io/console" 3 | require_relative "firew0rks/version" 4 | require_relative "firew0rks/frame" 5 | require_relative "firew0rks/error" 6 | require_relative "firew0rks/terminal" 7 | 8 | 9 | class Fireworks 10 | def initialize 11 | @first_frame = true 12 | @frames = Frame.new.get_frames 13 | @backspace_adjust = "\033[A" * (@frames[0].split("\n").length + 1) 14 | end 15 | 16 | 17 | def clear_screen 18 | Terminal.clear_buffer 19 | end 20 | 21 | def init_screen 22 | clear_screen 23 | end 24 | 25 | def render 26 | loop do 27 | @frames.each do |content| 28 | if !@first_frame 29 | $stdout.print @backspace_adjust 30 | end 31 | clear_screen 32 | $stdout.print content 33 | @first_frame = false 34 | sleep(0.05) 35 | end 36 | end 37 | end 38 | 39 | def run 40 | init_screen 41 | render 42 | end 43 | end 44 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2025 Mark24 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /firew0rks.gemspec: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative "lib/firew0rks/version" 4 | 5 | Gem::Specification.new do |spec| 6 | spec.name = "firew0rks" 7 | spec.version = Firew0rks::VERSION 8 | spec.authors = ["Mark24"] 9 | spec.email = ["mark.zhangyoung@gmail.com"] 10 | 11 | spec.summary = "Fireworks in your terminal 🎆 " 12 | spec.description = "Fireworks in your terminal 🎆 power by Ruby" 13 | spec.homepage = "https://github.com/Mark24Code/firew0rks" 14 | spec.license = "MIT" 15 | spec.required_ruby_version = ">= 3.1.0" 16 | 17 | 18 | spec.metadata["homepage_uri"] = spec.homepage 19 | spec.metadata["source_code_uri"] = "https://github.com/Mark24Code/firew0rks" 20 | spec.metadata["changelog_uri"] = "https://github.com/Mark24Code/firew0rks" 21 | 22 | # Specify which files should be added to the gem when it is released. 23 | # The `git ls-files -z` loads the files in the RubyGem that have been added into git. 24 | gemspec = File.basename(__FILE__) 25 | spec.files = IO.popen(%w[git ls-files -z], chdir: __dir__, err: IO::NULL) do |ls| 26 | ls.readlines("\x0", chomp: true).reject do |f| 27 | (f == gemspec) || 28 | f.start_with?(*%w[bin/ test/ spec/ features/ .git appveyor Gemfile sample/]) 29 | end 30 | end 31 | spec.bindir = "exe" 32 | spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) } 33 | spec.require_paths = ["lib"] 34 | 35 | # Uncomment to register a new dependency of your gem 36 | # spec.add_dependency "example-gem", "~> 1.0" 37 | 38 | # For more information and examples about making a new gem, check out our 39 | # guide at: https://bundler.io/guides/creating_gem.html 40 | end 41 | -------------------------------------------------------------------------------- /lib/firew0rks/frames/30.txt: -------------------------------------------------------------------------------- 1 |                                                                               2 |                                                                               3 |                                                                               4 |                                                                               5 |                                                                               6 |        +    Y            _                                                    7 |    _   `\   ',          +'                                 .                  8 |     '+   '   ,        _7               .                    ;                 9 |       '=.'!  -       .'     __        -'        ` `  .  `,  '. .              10 | ^^+,    ^+`^, {,   ^.`    -'  ._+^-   '`        `  `, `  !  ``  ;             11 | =+__'    ';`; *;_ =`.   .;+^*'.-''^^ .'`       .    '    '      '             12 |   ^;^^7^[_.-'.'-;;;_`  -'. ' '.` `   ;        -`    `       ;   `  `          13 | ___,.' 4*\;.--'-{*-'`.;+^*'   '.-'`'^*=      .)     `   `   -      `          14 | ^'`)=\=!+;;;__.-^*`;^*^  .__.'`         .` ` `)     ``   ` `;  ` `   `        15 |    .=[(!;;/;*'=;;*z/%^x=;` .7/--__     .;    '! .   ''   '  ;   , .           16 | -, 37]{!;;;--'*\;;Y*;;;'*x'`''^*x+7.. .-! `  `! ;.`  ' ` `  )   ' '  `        17 |  '`_y^]^.-/;;;]*')/[;))2+_;,__``  .'^ '`'.`.`-! )-`  , `. ` .         .       18 |  _+*``'._Y^;/;*--)z^x;$[;*z)^11x+_;. _`  - `-;'`;;`  ' `,`-                   19 | x^_+;`-xy`{Y]](;;{;;)[);`'+_^];Yz,74'{._ !.';'`` '` '`` ;`;  _       `  `     20 | =^;-.`*^ =7Y55[;{][;;yzx--`;Y'*/^;('+_ `*z.`' ``' ``,`- ) !  `         `.     21 | _;'      0;^-$$!^Z*;;7;;;.;;'!' -;;'='*,``-````   ``,--.-.(        `    ;     22 | `      -.[! _97;;7-)!^[.);;))_'-.^!-_^x`  '  -    -.`;;'`-'`  .  `  `         23 |      -  ]]  $5Z;)[;;];3``1!(^^+-'+' -\_.  '``;    ;``;['-; '  '   . `,   ,    24 |     '' )Z'  )-*))y`,7['_-;Y^/77[`.$ `'Y$.````'  ` !``'7,;; `  `   ` `-   `    25 |   _;` ' y   [')([( \'3`'/'`+/^7 ` = ' -*'  ```  ``! ` ^!;;     ``    -     .  26 |  ,,  /      y'][yy 1 )  Z.) [. +  `Y.-` ;   `   ' ( - .-;'      `  `  `    '  27 | /_  x`      1 y/'  ), , -- [^; ;z;  `;  ' ` `   , / `  '-' `    '.     '    , 28 | =           Y  -    , [   , '`\`^!` `' .' - `   ``  `  ';'       ,     `    ' 29 |             ^  ) `  ] *   ^.   $ ' . ``-  ,``    `  `  `'!  '    '            30 |                ] ,  Y      '    ' -;   ;  ' `  ` .  `   '-  `     .           31 |                Y 7                '' ` '    `    '  '   ``  '     `           32 |                  ^             -  ,' `      `   `.                 ,          33 |                                '  `              '      `          '          34 |                                               `'`       `          `          35 |                                               `                               36 |                                         `                                     37 |                                            '             `                    38 |                                            '                                  39 |                                                                               40 |                                                                               41 |                                                                               42 | -------------------------------------------------------------------------------- /lib/firew0rks/frames/31.txt: -------------------------------------------------------------------------------- 1 |                                                                               2 |                                                                               3 |                                                                               4 |                                                                               5 |                                                                               6 |       ._    Y            _                                                    7 |    _    \   `           +'                                 .                  8 |     '+   '   ,        _7`              .                    ;                 9 |       '+.'!  -       .'     ._        .'        ` `  .  `,  '. .              10 | ^^-.    ^,'^, ^,   !''    .'  .,+^-   ''        `   , `  !  '`  -             11 | =+__'    '.`; *;_ =`.   .;-^*'.-''^^ .'        .    ' `  '      '             12 |  `^'^^7^\,.''.'.;-;_`  .'. ' '.` `   ;        -`    '       ;   '  `          13 | ___,.' 4*(;.--'-/*-'`.;+^*,   '.-'`''*=      .)     `   `   -      `          14 | ''`)=+=!;;'-__.-^Y`;^$*  .__.'`      `  .` ` `;     ``   ` `;  `     `        15 |    ;=7!;;;/;*'+--*[/%^x+;` .7y--__     .-    '! .   ``   '  ;   , .           16 | -. Z*](!;;;--`Y\;-7*;;)'*='`''^^x-7_. .-; `  -; -.`  ' ` `  )   ' '  `        17 |  ' _y^]^'-(;;-]*';;(;;;x+(;,,.`` '.'* ''' `.`-! )-`  , `. .+-X=x, `   .       18 |  _+*`''._x^;(;4--;[*[;[];^[;^]][-_;. _`  - `-',`;;`  '  ,-7%]985]_            19 | x^_--`-x7')]]]!-;)!;{]\^''!_^]^7%,7$')._ ; ';```''` ``` ;7#8ZZ7571   `` `     20 | ]^;-.`x7 =[YZZ/;)](-;7z[--`;1'*/^+(')( `^x.`'`````` ,`- )+998Y49^^     `.     21 | .-'      8;*77[;^72;-Y^^;.-,'*''-;;'='^,``^``.` ' ``,`-.- ^778XZ*  `    ;     22 | `      ..[! _5Y;;7';;)].!;;;),'-.^!-,^x'  '  -    .``-;`--^`  `  `  `         23 |      -  ]/  xZY;;[;`{'Z,`]';^^+-`_' -\+'  '``-    ;``;\'-; ,  '   .  ,   .    24 |     '` )$`  7^Y;)Z`,1['_-;Y^+17[`.Y `'7x.````'  ` ;``'1''; `  `   ` `-   `    25 |   _;` ''5   ]')!/[ )^Z`'/''+*;3'` ='' -\7  ```  ` ;'` ^-;;     ``    -     .  26 |  .,  /      [`][77 ] ;  Z.) /. _  `*'-` ;   `   ` ! ` `!;'      `  ` ``    '  27 | /,  =`     '1 Z/^' ;, , ^+ \^; '='  ^;  ' ` `   , ( `  '-- `    '.     '    , 28 | )   '       ] `'    , \   ,'!`\`^(` `' .` ' `   ``` `  ';'       ,          . 29 | '           y  ) `  \ *   ^    $ ` . '`-  ,``   ``  `  `',  '    '            30 |                / ,  Y `    \   -` -;   -  ' `  ` `  `   '-  `     .           31 |                7 [  '             ;' ` '    '    '  '   ''  '     `           32 |                ` y             -  ,. ` `        `.          '      ,          33 |                                '  `              `      `          '          34 |                                `              `'`       `          '          35 |                                               `'                              36 |                                         `                                     37 |                                            `             `                    38 |                                            .                                  39 |                                                                               40 |                                                                               41 |                                                                               42 | -------------------------------------------------------------------------------- /lib/firew0rks/frames/32.txt: -------------------------------------------------------------------------------- 1 |                                                                               2 |                                                                               3 |                                                                               4 |                                                                               5 |                                                                               6 |       ._    *            .                                                    7 |    _    +   `           ;`                                 .                  8 |     ',   '   .        _^'              .                    -                 9 |       '_.^-  -       .'     ._        .'        `       `.  '. .              10 | ^^-.   `^,'^. ^,   ;^'    .'  .,+^=   '.        `   ` `  ,  '`  -             11 | ++__'    '.`- *-_ _`.   .;-^*'.-''^^. '        .    ' `  .      `             12 |  -^''^7'(,.'`.`.--;_`  .'. ' '.` `   ;        .`    '    `  `   .  `          13 | __,..' z^!;.--'-)y-''.,-^*,   '.-' ''^+       -     `       .      `          14 | ''`;/+=!--'-_,.-^z`-^z*  .,_ '`      ' `.` ` `;     `    ` `-  `     `        15 |    ^_7;;--+'y'+,-1[;$^=+,` `7z--__     .-    '; `   ``   '  =,  x .           16 | -. 5^[!;;;-.``Z;-'7z-;)^7='`'''^=-7,  .`; `  .' -`` `, .=4  x4y *=!           17 |  ' \Z^]!'';;--)]';;(;;;x-)-...`  ^.'=.`'' `.``! ;-`  ,_7-x=]]9Y97*^+  `       18 |  _+7`)'._]!;;;3'-;[*[;[]-^[;)]][-__. .` `. `.'.`--`  _.`\8@y4#45z+Y='`        19 | =^_--`-=*^)]\{!-;)*-*(7^''^,))77%.^x')._ ; '-```''` `''=9%9Z%zY19Y*^ _` `     20 | [^'..`xy _[7ZZ(-))(-;][]--`']'*(^=!'^) `^[.'`````'  ,``^6=%%Z7]08y__x` `.     21 | .-'   '  X;]7Y[;1]z--Z*^;`-,^x'^-;''+'^,`'* ' ` ' ``'`*'1*487Y%Z97'`    ;     22 | `      ..7; -Zy-;Y';;;\ ;;-;;,`-.!;-,^=^  '  -    .``-;`'*^Y%*'^2'_,`         23 |      -  ]/  ]y$;;7;`)'Y.`)';)^+-`+' -!_^  `  -    '``-('`- x''xZy `  ,   `    24 |     '` )]   Y*Z;;$ ,][^,-;1;+\//``\ `'1=. -``'    ;``'[`'- '  `   ` `-   '    25 |   ,.` '^Z   /')!(7 )YZ`'/';+1'Y^` +^` '^y  ``     ;```1--;     `   ` -        26 |  ..  /  '   [`]([[ ) )  $.; (.`+  `*-.` - ` `   ` ! ` `!;'      `    `     `  27 | /,  =`     '[ 7(y^ ', , ^+ \^; '='  *;  ' `     ` ( `  ';- `    `.     '    , 28 | )   ^       ] ^'    , \   ,'(`\.^(` `' .  `     ` ' `  '-`       ,          ` 29 | '           7  ) `  \ ^   ^    x ' . '`-  ,``   ``  `  `',  '    !            30 |             '  / ,  ] '    [   ^- .'   ,  ' `    `      `-  `     .           31 |                [ \  -      `      -'   '    `    `  `   ,'  `     `           32 |                ^ 7             -  ,` ` '         .  '   `   '      ,          33 |                  ^             '  `              `      `          '          34 |                                '              ````      `          .          35 |                                               `.                              36 |                                         `                                     37 |                                                                               38 |                                            `                                  39 |                                                                               40 |                                                                               41 |                                                                               42 | -------------------------------------------------------------------------------- /lib/firew0rks/frames/26.txt: -------------------------------------------------------------------------------- 1 |                                                                               2 |                                                                               3 |                                                                               4 |                                                                               5 |                                                                               6 |             x                                                                 7 |        '$   ^,          Y'              .                  .                  8 |     ^=   !   _        =*               _``      . .       ``\                 9 |       ^_.`[. -       _^     _.        ;^`       ; ` ..  ',  ',..              10 |  '+_.   7=`Y, ](   7_'    +'  _=*     !        ``  `!`,  (      !             11 | _=_(^,  `^\`\ 7(_ x',`  .]=*_^_+^^'  .'``.     .   `' `    ..   ^  .          12 |   `^7*[7$_-^',^())\='  _'_ - '_' ;`  ]   `    )`         `  )      '          13 | _x=_,' ^YY[_+;-)Y[)-`_)=*^'`  '_-^'^^'  ``   .].    `  ``.``)...    .         14 | `^'^**=Y=/^\\=;;{\']77' `__\`'`        .-'`` ;)`    -,  `'`-)  '`-   ;        15 |  `  -xY[{)*^!^x/)7%777Yx!;.)+_++=   `  -) .` '[`-`. `-.. '  ]   ( , .         16 | ^_ _^Zy7]{)!;;;](!{){][^7'^'^^7*^++..`-'! `` .! )-' `, ; `  )   ` '  -        17 |  '``4777;!x1)(4*;17Y][71=+____;`  ;' .!``.`.`;^`])`` (`-. -   .      `.       18 |  _x^''.,xy^]y][!;/^][(^1\717Y70*^=/` )'``; ;)! `']'```.`!-;         .  `    ` 19 |  _++)`!x*'xy357(]Z()Y2x!-^=[Y$^1`_[.^*__`[.!) .,-```,`-.)`!          -. '     20 | =7\-;'`  -8\7ZZ(7Z1)17()))`/1;.''\/'=( .``-'` ' '```--;`] [  `         '`     21 | _^^      =]^.5Z[]7)\)7_\/_/_-(^.=;/^x.` ``;``-'  `--`;),'.^  ` `.  `    )     22 | `      -.]7 {83\][!1[7*.7[][*(-\.^(+_; ..`;``;   `;;`)['.;`,  ,  ` `;   '.    23 |      +- *Z  .[{]1[))Z/[`,7'[*7+-^-`'\$-;`.'-`;  ``!'`;Y-;) ' ``   -``, `.     24 |     ^'.'`'  ]+)77(-()^^[-[_'=\'`-, .-^;'.`.`''  ``['` 7;({    ``  ` `^   `.   25 |   _\` ^     Z^Y7y^ $  '*[^;_]7,.'`= `.;`;` ``   -`( - -!{!     `.  . '.   `,  26 | ./,  '      '''^-  ^ \  ',* Y;'z  ' `)` ! .``   '`[ ;  ;;'`.    ;.    `,   ^  27 | ^'          ]' _   ;.',  ^  ^] ' ) `.) `! ; ` . !`` '  !;, '    ),     !    , 28 |                - `  + `  `-  ''  (` ''.-  !``  ``.  ;  `!!  ,   `.     -      29 |            `   7 _  `            '.;` -) .(`-  ``'  )   !!  !    `            30 |            `    `!`             ; ;)  `( `' `  ``;  -   '-  -     ;           31 |                 ` `               )^ ` ' `  `  .`)      ``  `     `           32 |                 ` `            )  ,      `` ` .---      `'         ,          33 |                   `            `  `      `` ` `-`       '          '          34 |                                         .     -'`                             35 |                   `                     `  -  '          `                    36 |                                         `  '  `          '                    37 |                                            '                                  38 |                                                                               39 |                                                                               40 |                                                                               41 |                                                                               42 | -------------------------------------------------------------------------------- /lib/firew0rks/frames/28.txt: -------------------------------------------------------------------------------- 1 |                                                                               2 |                                                                               3 |                                                                               4 |                                                                               5 |                                                                               6 |        +    $            .                                                    7 |    .   '=   ',          ='                                 .                  8 |     ^+   '   _        _*               .``        `       ``!                 9 |       ^=.`\. -       _^     __        ;^        ` `  .  `,  ^, .              10 | `^+_    ^_`7, ](   7.'    ,'  _+=^    !        `'  `,``  (   `  ;             11 | ==+_',   ')`! 7!_ x',   .)+^!'_-^^^` .'``      .    ' `    ..   ^             12 |   '^^^]^x_--',',;;!='  -'. - ',` ;   )   `    -`            ;      '          13 | _=__.' **1(,---;][;'`_;+^*'`  '--!''^*       .)     `   ` ``;..               14 | ^''^x=x1+;^!)_-;^*')7*^ `___.^`         .``` ;;     ``  ````;  ```   `        15 |  ` .x=[\);]!^;x;;7x77*4=/'.;7_+-__  `  .;  ` '(`- ` ', . '  )   ! ,           16 | -_ +7Z71{(;;;;^]!;7!))/'*!;'''^*x^__.`-'! .` .! ;-`  ' ` `  )   ' '  `        17 |  '`_z7Z^;;](;;x7;]/[){{*=_)___'`  -' .-``.`.`;!`);`` , `. . ` .      `.       18 |  _=^```,)7^)[){;;/*{[)*x;7\]7Z3z^=/. _`` ; ;;!``')```'.`,`;           `       19 | `7_+^`;4*'=7$Z[!)];;]$];.^\/^x!Y+_7^'*__ (.')`.'.'``,`` ;`;          `. `     20 | x*!-;''' xy{991!1Y[;{Z**;;`;%-7'`(;'+_ `7--'' ` ' ``,`-`) (  `         `.     21 | _!'      7\'.3y!)y!);]_);;+_-(!.+\;'x_^ ` -` -'   ``'-;.-.1  `     `    ;     22 | `      -.7^ )5Z()7-{(^x.^/)]^_'+.^(+_* .``;``-    --`;/'.; ,  ,  ` `-         23 |      -- ]7  *74/{z);7;7``7^/\7=-'=``\Y_- `'``;    ;``'[--) '  '   .``,   `    24 |     !'.^%'  )+){1[`!Yz'_-(_^=Y7`'-'.'^4*.`.``'  ``!'`'7-;)        ` `-   `.   25 |   _;` ^     $!][7[ 1 ^`^x^,_/^,.' x '.- -````   ``! ` '!)!     `.  , '.   `.  26 |  /,  y      Y'Z7*' Y \  Y.^ *,'x  `^ -` ! .``   '`[ ; '-!-      -.    `    '  27 | y/   `      -` _   '  ,  - ^^\ ^!;   ; `! - `   , ' '  ';` `    ;,     '    , 28 | `           Y  -    , x   _  `$  (` `!.-  ;``   '`  -  ';,  .   `!     '      29 |                ] ,  $ `   ^    ` '.-  `;  !`.  ```  ;   !!  ;    '            30 |                x -  `           - ;;  `( `' '  ``-  .   --  '     -           31 |                 `y`               ;! ` !    `   `;  '    `  '     `           32 |                 ` `            -  ,  `   `  `  ``-      `          ,          33 |                   `            '  '      `` ` `.`'      `          -          34 |                                               '-`                             35 |                                         `  -  '                               36 |                                         `  .             .                    37 |                                            '             `                    38 |                                                                               39 |                                                                               40 |                                                                               41 |                                                                               42 | --------------------------------------------------------------------------------