Needs a litle something, though⦠Maybe a redundant read for exiting?
What for? Ctrl+C does the trick.
Besides, itβs such a beautiful clock, youβll never want to exit from it
Sure CTRLC works - but some users might not have that hard-wired into their brains yet! Touching the ANY key might beβ¦
BLOAT!!1!
A few functions and aliases that I use which some people may or may not find useful.
#Fix video timestamp
ffmpegfix ()
{
ffmpeg -i "$1" -an -map 0:v -vcodec copy -bsf:v h264_mp4toannexb output.h264
ffmpeg -fflags +genpts -r 25 -i "output.h264" -vcodec copy output2.mp4
}
#Play music from youtube
mpvmusic ()
{
mpv --no-config --volume=70 --volume-max=200 --ytdl-format=bestaudio "$1"
}
#Play live stream videos using streamlink and mpv
streampv ()
{
streamlink --player=mpv "$1" best
}
#Cut video using ffmpeg stream copy
ffmpegcut ()
{
ffmpeg -ss "$2" -i "$1" -to "$3" -c copy "${1%.*}-cut.mkv"
}
#Watch youtube/vimeo/dailymotion video using mpv
mpvyt ()
{
mpv --no-config --fs --volume=70 --volume-max=200 --ytdl-format=22/best --video-sync=display-resample --interpolation=yes --tscale=oversample --scale=ewa_lanczossharp --cscale=bicubic "$1"
}
#Sync wallpapers to pcloud
alias syncpcloud='rsync -avrP --update --delete-before /home/galadriel/Downloads/pix/walls/ "/home/galadriel/pcloud/pics/pics 1"'
Itβs not really much of a script, but for those of you on KDE Plasma, who have issues with gamma not applying on nVidia graphics cards, I have a line sitting in my .bashrc that executes a script with one line :
nvidia-settings -a 0/RedGamma[DP-0]=0.700000 -a 0/BlueGamma[DP-0]=0.700000 -a 0/GreenGamma[DP-0]=0.700000
Obviously change the integers according to your needs, but until this bug is fixed, itβs a way to automatically force this without having to drop into the system settings for display.
A few weeks ago, I shared a simple digital clock, a bash script that made a figlet-like display that animated in the terminal.
Then @freebird54 reacted with a emoji and I got an ideaβ¦
I quickly dismissed this idea as too complicated, and decided not to bother with it. But two nights ago I had a dream in which I figured out how to do it, so yesterday and last night, I did it.
So, I present to you bashclock2
, an animated scalable analogue clock, completely written in bash:
#!/usr/bin/env bash
# An analogue version of bashclock
function cleanup_() {
printf '\033[?25h' # unhide cursor
stty echo 2>/dev/null
}
trap cleanup_ EXIT
REFRESH_INTERVAL=0.2 # display the clock every 0.2 seconds, adjust if necessary
CLOCK_RADIUS=23 # default size of the clock, adjust if necessary
# parsing the only option
# bashclock N, where N is an integer, for a clock of a different size.
# minumum radius is 7, maximum radius is 37, adjust if necessary
if (( $# >= 1 )) && (( $1 >= 7 && $1 <= 37 )); then
CLOCK_RADIUS=$1
fi
# Trigonometric & other mathematical functions -------------------------------
# Table of sines, first quadrant, 1Β° increment
declare -r sin_table=(
0 17452406 34899497 52335956 69756474 87155743 104528463
121869343 139173101 156434465 173648178 190808995 207911691 224951054
241921896 258819045 275637356 292371705 309016994 325568154 342020143
358367950 374606593 390731128 406736643 422618262 438371147 453990500
469471563 484809620 500000000 515038075 529919264 544639035 559192903
573576436 587785252 601815023 615661475 629320391 642787610 656059029
669130606 681998360 694658370 707106781 719339800 731353702 743144825
754709580 766044443 777145961 788010754 798635510 809016994 819152044
829037573 838670568 848048096 857167301 866025404 874619707 882947593
891006524 898794046 906307787 913545458 920504853 927183855 933580426
939692621 945518576 951056516 956304756 961261696 965925826 970295726
974370065 978147601 981627183 984807753 987688341 990268069 992546152
994521895 996194698 997564050 998629535 999390827 999847695 1000000000
)
function cosE9() { # returns 1000000000*cos($1), $1=0..360Β°
if (($1 >= 0 && $1 <= 90)); then printf ${sin_table[90-$1]}
elif (($1 > 90 && $1 <= 180)); then printf -- -${sin_table[$1-90]}
elif (($1 > 180 && $1 <= 270)); then printf -- -${sin_table[270-$1]}
elif (($1 > 270 && $1 <= 360)); then printf ${sin_table[$1-270]}
fi
}
function sinE9() { # returns 1000000000*sin($1), $1=0..360Β°
if (($1 >= 0 && $1 <= 90)); then printf ${sin_table[$1]}
elif (($1 > 90 && $1 <= 180)); then printf ${sin_table[180-$1]}
elif (($1 > 180 && $1 <= 270)); then printf -- -${sin_table[$1-180]}
elif (($1 > 270 && $1 <= 360)); then printf -- -${sin_table[360-$1]}
fi
}
function abs() {
if (($1 >= 0)); then printf $1
else printf -- -$1
fi
}
function signum() {
if (($1 > 0)); then printf 1
elif (($1 == 0)); then printf 0
else printf -- -1
fi
}
#-----------------------------------------------------------------------------
W=$((2*CLOCK_RADIUS+1)) # clock width
H=$((CLOCK_RADIUS+1)) # clock height
declare RASTER_MATRIX # array of pixels
declare CLOCK_MATRIX # the clock face without hands
# runs once on startup, draws the clock and saves it as the CLOCK_MATRIX
function generate_CLOCK_MATRIX() {
# Midpoint circle rasterising algorithm
local E=-$CLOCK_RADIUS
local x=$CLOCK_RADIUS
local y=0
while ((y <= x)); do
CLOCK_MATRIX[$(((CLOCK_RADIUS+x)+(CLOCK_RADIUS+y)*W))]=1
CLOCK_MATRIX[$(((CLOCK_RADIUS+x)+(CLOCK_RADIUS-y)*W))]=1
CLOCK_MATRIX[$(((CLOCK_RADIUS-x)+(CLOCK_RADIUS+y)*W))]=1
CLOCK_MATRIX[$(((CLOCK_RADIUS-x)+(CLOCK_RADIUS-y)*W))]=1
CLOCK_MATRIX[$(((CLOCK_RADIUS+y)+(CLOCK_RADIUS+x)*W))]=1
CLOCK_MATRIX[$(((CLOCK_RADIUS+y)+(CLOCK_RADIUS-x)*W))]=1
CLOCK_MATRIX[$(((CLOCK_RADIUS-y)+(CLOCK_RADIUS+x)*W))]=1
CLOCK_MATRIX[$(((CLOCK_RADIUS-y)+(CLOCK_RADIUS-x)*W))]=1
E=$((E+2*y+1))
y=$((y+1))
if ((E >= 0)); then
E=$((E-(2*x-1)))
x=$((x-1))
fi
done
# hour ticks
for ((phi = 0; phi < 360; phi+=30)) {
x=$((CLOCK_RADIUS+((CLOCK_RADIUS*$(cosE9 $phi))/1050000000)))
y=$((CLOCK_RADIUS-((CLOCK_RADIUS*$(sinE9 $phi))/1050000000)))
CLOCK_MATRIX[x+y*W]=1
}
CLOCK_MATRIX[CLOCK_RADIUS+CLOCK_RADIUS*W]=1
}
function reset_RASTER_MATRIX() {
local l=$((W*(W+1)))
for ((i = 0; i < l; i++)); do
RASTER_MATRIX[i]=${CLOCK_MATRIX[i]}
done
}
function plot_line() {
# Bresenham's line rasterising algorithm
local x0=$1
local y0=$2
local x1=$3
local y1=$4
local dx=$((x1-x0))
local sx=$(signum $dx)
local dx=$(abs $dx)
local dy=$((y1-y0))
local sy=$(signum $dy)
local dy=-$(abs $dy)
local E=$((dx+dy))
while true; do
local x=$((CLOCK_RADIUS+x0))
local y=$((CLOCK_RADIUS-y0))
RASTER_MATRIX[x+y*W]=1
local e2=$((2*E))
if ((e2 >= dy)); then
((x0 == x1)) && return
E=$((E+dy))
x0=$((x0+sx))
fi
if ((e2 <= dx)); then
((y0 == y1)) && return
E=$((E+dx));
y0=$((y0+sy))
fi
done
}
#-----------------------------------------------------------------------------
function draw_HOURS_hand() {
local phi=$(((($HOURS*30+$MINUTES*30/60)+270)%360))
local x=$(((CLOCK_RADIUS*$(cosE9 $phi))/1700000000))
local y=-$(((CLOCK_RADIUS*$(sinE9 $phi))/1700000000))
plot_line 0 0 $x $y
}
function draw_MINUTES_hand() {
local phi=$(((($MINUTES*6+$SECONDS*6/60)+270)%360))
local x=$(((CLOCK_RADIUS*$(cosE9 $phi))/1200000000))
local y=-$(((CLOCK_RADIUS*$(sinE9 $phi))/1200000000))
plot_line 0 0 $x $y
}
function draw_SECONDS_hand() {
local phi=$(((($SECONDS*6)+270)%360))
local x=$(((CLOCK_RADIUS*$(cosE9 $phi))/1060000000))
local y=-$(((CLOCK_RADIUS*$(sinE9 $phi))/1060000000))
plot_line 0 0 $x $y
}
# converts the pixel array into characters β, β, and β, prints to stdout
function print_RASTER_MATRIX() {
for ((r = 0; r < H; r++)); do
printf ' ' # indentation
for ((c = 0; c < W; c++)); do
if ((RASTER_MATRIX[c+2*r*W] == 1 && RASTER_MATRIX[c+2*r*W+W] == 1))
then printf 'β'
elif ((RASTER_MATRIX[c+2*r*W] == 1 && RASTER_MATRIX[c+2*r*W+W] == 0))
then printf 'β'
elif ((RASTER_MATRIX[c+2*r*W] == 0 && RASTER_MATRIX[c+2*r*W+W] == 1))
then printf 'β'
else
printf ' '
fi
done
printf '\n'
done
}
#-----------------------------------------------------------------------------
generate_CLOCK_MATRIX
stty -echo 2>/dev/null
printf '\033[?25l\n' # hide cursor
unset EXIT_
while true; do
HOURS=$((10#$(printf "%(%H)T" $((EPOCHSECONDS)))))
MINUTES=$((10#$(printf "%(%M)T" $((EPOCHSECONDS)))))
SECONDS=$((10#$(printf "%(%S)T" $((EPOCHSECONDS)))))
reset_RASTER_MATRIX
draw_HOURS_hand
draw_MINUTES_hand
draw_SECONDS_hand
print_RASTER_MATRIX
[[ -z $EXIT_ ]] || exit 0
read -t $REFRESH_INTERVAL -n 1 && EXIT_=1;
printf "\033[${H}A\r" # move cursor to beginning
done
You can change the size of the clock with a command line argument. The default radius is 20, but it can be anything between 7 and 37. The bigger clock looks nicer. The big sizes require a fast terminal emulator. It works very nice on Konsole (with the Hack font). It also looks great in the TTY.
This is a bit more complex than the previous script. It uses the same trick of writing the escape sequence \033[F
to move the cursor to the beginning of the last line, so as to overwrite what was written previously. However, this drawing is slightly more complex than just printing out the βfigletisedβ digits. It involves rasterising vector graphics composed of two primitive types: a line and a circle. The algorithms for that are well-known, and used all the time: Midpoint Circle Algorithm and the Bresenhamβs Line Algorithm. You can find a very nice description of both (which I used as a guide when writing this), here:
https://members.chello.at/~easyfilter/Bresenham.pdf
After figuring that out, drawing lines and circles using the characters β, β, and β was quite easy, however the bigger problem with the script was performance. In order for the animation to be fairly smooth and not skip seconds, the clock has to be updated several times a second. The problem is that drawing the hands of the clock requires trigonometry, and bash has no support for floating point computations. Using integers, it is fairly straightforward to implement fixed point computation in bash, but computing sine and cosine functions in fixed point, at runtime, was out of the question (due to precision and time). The obvious way to use floating point computations in bash is to outsource it and do the calculation in another program like bc
or awk
, but running a separate process for every frame of the animation was out of the question. The solution, which works rather well, is to hardcode the trigonometric functions. BTW, this was done in Doom (1993), in order to maximise performance.
Oh, and just for @freebird54, Iβm using read
instead of sleep
, so that one can exit with the press of the Any key (that, and the clock looks ugly when you exit in the middle of the frame).
Three additional tricks: using escape sequences to hide the cursor, turning off stty echo, and using trap
to cleanup the mess on exit.
PS. After spending hours working on this, when I close my eyes, all I see is clocks.
Edit: updated the script to get rid of calling the external date
process. Bash has builtin printf
which provides the facilities for outputting the time without calling an external process. This should improve performance significantly.
Thatβs some old-school bash scripting right there!
BASED CLOCK
Really impressive! If Iβm going to influence further development, though, I just have mention the 24 hr variant - or, more to the point, a separately updated AM/PM designation (below the clock face?).
After all, only frogs always know whether itβs day or night! (especially if they keep my kind of hours)
Thanks!
But are there no limits to your desire for even MOAR BLOAT!?
Coming from a creature that bloats up just to βsingββ¦ Anyway - I did have to check an alternative (24 hr) clock to be sure - as this time of day at this latitude thereβs some daylight either wayβ¦
@Kresimir
Really impressive!
For what its worth, a couple years ago I tested the speed of some popular terminals.
Then clearly the fastest was qterminal
. Donβt know how it is today, but maybe qterminal
is worth a try for the bash clock.
I got bored, constantly changing to various directories in ~/.config
so I wrote this:
cfg() {
cd ~/.config
if [[ "$1" != "" ]]; then
cd $1
fi
}
Usage:
# cfg <directory> e.g.:
cfg autostart
Saves a bit of typing/multiple aliases.
Nice!
Another bash solution for the same problem is to use variable CDPATH
.
It is a colon separated list of folder paths, and cd looks for subdirectories under those folders (usage is similar to your function).
More info with command: man bash
A very important script:
#!/bin/sh
if [ "$COLORTERM" = "truecolor" ]; then
printf " \033[38;2;36;55;26mβ\033[38;2;111;166;79mβ\033[48;2;119;178;85m\033[38;2;62;93;44mβ\033[38;2;98;147;70mβ\033[38;2;113;170;81mβ\033[38;2;112;168;80mβ\033[38;2;91;137;65mβ\033[38;2;51;76;36mβ\033[0m\033[38;2;99;148;70mβ\033[38;2;22;34;16mβ β\033[38;2;99;148;71mβ\033[48;2;119;178;85m\033[38;2;51;77;36mβ\033[38;2;92;137;65mβ\033[38;2;112;168;80mβ\033[38;2;113;170;81mβ\033[38;2;98;147;70mβ\033[38;2;62;92;44mβ\033[0m\033[38;2;111;166;79mβ\033[38;2;36;55;26mβ \033[0m\n \033[48;2;103;155;74m\033[38;2;32;48;23mβ\033[48;2;120;178;86m\033[38;2;116;173;83mβ\033[48;2;182;213;164m\033[38;2;119;178;86mβ\033[48;2;254;254;253m\033[38;2;154;198;129mβ\033[48;2;255;255;255m\033[38;2;204;226;192mβ\033[38;2;216;233;206mβ\033[38;2;192;219;176mβ\033[48;2;242;248;239m\033[38;2;136;187;106mβ\033[48;2;149;195;122m\033[38;2;119;178;85mββ\033[48;2;104;156;74mβ\033[48;2;81;122;58m\033[38;2;18;27;13mβ\033[0m\033[38;2;18;27;13m \033[48;2;82;122;58mβ\033[48;2;119;178;85m\033[38;2;104;156;74mβ \033[38;2;149;195;123mβ\033[48;2;242;248;239m\033[38;2;136;188;107mβ\033[48;2;255;255;255m\033[38;2;192;219;176mβ\033[38;2;216;233;206mβ\033[38;2;204;226;192mβ\033[48;2;254;254;253m\033[38;2;154;197;129mβ\033[48;2;181;213;163m\033[38;2;119;178;86mβ\033[48;2;120;178;86m\033[38;2;116;173;83mβ\033[48;2;103;155;74m\033[38;2;32;48;23mβ\033[0m\033[38;2;32;48;23m \033[0m\n \033[48;2;75;112;54m\033[38;2;43;65;31mβ\033[38;2;119;178;85mβ\033[48;2;183;214;165m\033[38;2;143;191;115mβ\033[48;2;255;255;255m\033[38;2;252;253;251mβ\033[48;2;219;220;221m\033[38;2;254;254;254mβ\033[48;2;48;54;58m\033[38;2;206;207;208mβ\033[48;2;41;47;51m\033[38;2;163;165;167mβ\033[48;2;87;92;95m\033[38;2;232;232;233mβ\033[48;2;252;252;252m\033[38;2;255;255;255mβ\033[48;2;246;250;244m\033[38;2;226;238;219mβ\033[48;2;146;193;118m\033[38;2;123;180;90mβ\033[38;2;119;178;85mβ\033[48;2;111;166;79mβ\033[48;2;106;159;75m\033[38;2;24;36;17mβ\033[0m\033[38;2;117;174;83mβ\033[48;2;119;178;85m\033[38;2;38;57;27mβ\033[38;2;57;85;41mβ\033[38;2;66;99;47mββ\033[38;2;57;85;41mβ\033[38;2;38;57;27mβ\033[0m\033[38;2;117;174;83mβ\033[48;2;106;159;75m\033[38;2;24;37;17mβ\033[48;2;119;178;85m\033[38;2;111;167;79mβ \033[48;2;146;193;119m\033[38;2;123;180;90mβ\033[48;2;246;250;244m\033[38;2;226;238;219mβ\033[48;2;251;252;252m\033[38;2;255;255;255mβ\033[48;2;86;91;94m\033[38;2;232;232;233mβ\033[48;2;41;47;51m\033[38;2;163;165;167mβ\033[48;2;47;53;57m\033[38;2;207;208;209mβ\033[48;2;219;220;221m\033[38;2;254;254;254mβ\033[48;2;255;255;255m\033[38;2;252;253;251mβ\033[48;2;182;214;165m\033[38;2;142;191;114mβ\033[38;2;119;178;85mβ\033[48;2;75;112;53m\033[38;2;43;65;31mβ\033[0m\033[38;2;43;65;31m \033[0m\n \033[48;2;85;127;60m\033[38;2;87;131;62mβ\033[38;2;119;178;85mβ\033[48;2;161;201;137m\033[38;2;189;218;173mβ\033[38;2;255;255;255mβ\033[48;2;248;248;249m\033[38;2;199;201;202mβ\033[48;2;133;137;139m\033[38;2;41;47;51mβ\033[48;2;83;88;91mβ\033[48;2;181;183;185m\033[38;2;66;71;75mβ\033[48;2;255;255;255m\033[38;2;245;246;246mβ\033[48;2;239;246;235m\033[38;2;248;251;246mβ\033[48;2;131;184;100m\033[38;2;150;196;124mβ\033[38;2;119;178;85mββββββββββββββ\033[48;2;131;185;100m\033[38;2;151;196;125mβ\033[48;2;239;246;235m\033[38;2;248;251;247mβ\033[48;2;255;255;255m\033[38;2;245;245;246mβ\033[48;2;180;183;184m\033[38;2;66;71;75mβ\033[48;2;83;88;91m\033[38;2;41;47;51mβ\033[48;2;134;137;140mβ\033[48;2;248;248;249m\033[38;2;199;201;202mβ\033[38;2;255;255;255mβ\033[48;2;160;201;136m\033[38;2;189;218;173mβ\033[38;2;119;178;85mβ\033[48;2;84;126;60m\033[38;2;87;131;62mβ\033[0m\033[38;2;87;131;62m \033[0m\n \033[48;2;23;34;16m\033[38;2;63;95;45mβ\033[48;2;118;176;84m\033[38;2;119;178;85mβ\033[48;2;123;180;90mβ\033[48;2;128;183;97m\033[38;2;221;235;212mβ\033[48;2;203;226;191m\033[38;2;255;255;255mβ\033[48;2;250;252;249mβ\033[48;2;254;254;254mβ\033[48;2;241;247;237mβ\033[48;2;176;210;156m\033[38;2;252;253;252mβ\033[48;2;120;178;86m\033[38;2;181;213;162mβ\033[38;2;119;178;85mββββββββββββββββ\033[38;2;181;213;163mβ\033[48;2;176;210;157m\033[38;2;252;253;252mβ\033[48;2;241;247;238m\033[38;2;255;255;255mβ\033[48;2;254;254;254mβ\033[48;2;250;252;249mβ\033[48;2;203;225;190mβ\033[48;2;128;183;97m\033[38;2;220;235;211mβ\033[48;2;119;178;85m\033[38;2;123;180;90mβ\033[38;2;118;176;84mβ\033[48;2;22;33;16m\033[38;2;63;94;45mβ\033[0m\033[38;2;63;94;45m \033[0m\n \033[38;2;74;111;52mβ\033[48;2;89;133;64m\033[38;2;119;178;85mβββ\033[48;2;123;180;91mβ\033[48;2;131;185;100mβ\033[48;2;120;178;87mββββββββββββββββββββββ\033[48;2;131;185;100mβ\033[48;2;123;180;91mβββ\033[48;2;90;135;64mβ\033[0m\033[38;2;73;110;52mβ \033[0m\n \033[38;2;91;128;69mβ\033[48;2;119;178;85m\033[38;2;101;145;76mβ \033[38;2;101;145;75mβ\033[0m\033[38;2;90;127;68mβ \033[0m\n \033[48;2;118;173;87m\033[38;2;55;77;43mβ\033[38;2;119;178;85mββββββββββββββββββββββββββββββββββ\033[48;2;118;172;87m\033[38;2;54;76;42mβ\033[0m\033[38;2;54;76;42m \033[0m\n \033[48;2;120;176;87m\033[38;2;77;109;58mβ\033[38;2;119;178;85mββββββββββββββββββββββββββββββββββββ\033[48;2;120;175;87m\033[38;2;77;109;59mβ\033[0m\033[38;2;77;109;59m \033[0m\n\033[48;2;88;127;66m\033[38;2;58;80;45mβ\033[38;2;119;178;85mβββββββββββββ\033[48;2;111;169;78mβ\033[48;2;97;152;64mβ\033[48;2;109;166;76mββββββββ\033[48;2;97;152;64mβ\033[48;2;112;169;78mββββββββββββββ\033[48;2;87;126;65m\033[38;2;58;80;45mβ\033[0m\n\033[48;2;121;178;88m\033[38;2;118;170;89mβ\033[38;2;119;178;85mβββββββββββββ\033[48;2;117;176;83m\033[38;2;106;162;72mβ\033[48;2;111;168;77m\033[38;2;92;145;59mβ\033[48;2;117;175;83m\033[38;2;103;158;69mβ\033[38;2;119;178;85mββββββ\033[48;2;116;175;83m\033[38;2;103;158;69mβ\033[48;2;111;168;77m\033[38;2;92;145;59mβ\033[48;2;117;176;83m\033[38;2;106;162;72mβ\033[38;2;119;178;85mβββββββββββββ\033[48;2;122;179;89m\033[38;2;118;170;89mβ\033[0m\n\033[48;2;123;179;90m\033[38;2;120;178;86mβ\033[38;2;119;178;85mββββββββββββββ\033[48;2;120;179;87mβ\033[48;2;129;184;97mβ\033[48;2;138;190;108mβ\033[48;2;144;194;114mβ\033[48;2;147;196;118mββ\033[48;2;144;194;114mβ\033[48;2;138;190;108mβ\033[48;2;129;184;97mβ\033[48;2;120;179;87mβββββββββββββββ\033[48;2;122;179;90m\033[38;2;120;178;86mβ\033[0m\n\033[48;2;92;118;77m\033[38;2;117;164;89mβ\033[48;2;120;179;87m\033[38;2;119;178;85mβββββ\033[48;2;120;178;86mβ\033[48;2;134;188;103mβ\033[48;2;154;200;126mβ\033[48;2;173;213;150mβ\033[48;2;192;225;172m\033[38;2;120;178;86mβ\033[48;2;198;229;179m\033[38;2;134;188;103mβ\033[38;2;153;199;125mβ\033[38;2;169;211;145mβ\033[38;2;185;220;163mβ\033[38;2;196;227;176mβ β\033[38;2;185;220;163mβ\033[38;2;169;211;145mβ\033[38;2;152;199;125mβ\033[38;2;134;188;103mβ\033[48;2;192;225;172m\033[38;2;120;178;86mβ\033[48;2;173;213;150m\033[38;2;119;178;85mβ\033[48;2;154;200;126mβ\033[48;2;134;188;103mβ\033[48;2;120;178;86mβββββ\033[48;2;120;179;87mβ\033[48;2;92;117;78m\033[38;2;116;164;89mβ\033[0m\n\033[38;2;45;52;40mβ\033[48;2;149;173;135m\033[38;2;185;220;164mβ\033[48;2;198;229;179m\033[38;2;161;205;135mβ\033[38;2;157;202;130mβ\033[38;2;163;206;138mβ\033[38;2;176;215;153mβ\033[38;2;193;225;172mβ β\033[38;2;176;215;153mβ\033[38;2;163;206;138mβ\033[38;2;157;202;130mβ\033[38;2;161;205;136mβ\033[48;2;150;174;136m\033[38;2;185;220;164mβ\033[0m\033[38;2;44;51;40mβ\033[0m\n \033[38;2;40;46;36mβ\033[48;2;84;98;76m\033[38;2;192;222;174mβ\033[48;2;197;228;178m\033[38;2;198;229;179mββββββββββββββββββββββββββββββββββ\033[48;2;85;99;77m\033[38;2;192;223;174mβ\033[0m\033[38;2;40;46;36mβ \033[0m\n \033[38;2;98;114;89mβ\033[48;2;79;91;71m\033[38;2;197;228;178mβ\033[48;2;189;219;171m\033[38;2;198;229;179mβββββββββββββββββββββββββββββ\033[48;2;190;220;172mβ\033[48;2;79;91;71m\033[38;2;197;228;178mβ\033[0m\033[38;2;99;114;90mβ \033[0m\n \033[38;2;35;40;31mβ\033[38;2;147;171;133mβ\033[48;2;62;72;56m\033[38;2;198;229;179mβ\033[48;2;154;178;139mβ\033[48;2;197;228;178mββββββββββββββββββββββ\033[48;2;153;178;139mβ\033[48;2;62;71;55mβ\033[0m\033[38;2;150;173;135mβ\033[38;2;35;40;31mβ \033[0m\n \033[38;2;35;40;31mβ\033[38;2;108;125;98mβ\033[38;2;169;195;152mβ\033[48;2;25;29;23m\033[38;2;197;228;178mβ\033[48;2;68;80;62m\033[38;2;198;229;179mβ\033[48;2;106;123;96mβ\033[48;2;136;158;123mβ\033[48;2;160;185;144mβ\033[48;2;177;204;160mβ\033[48;2;188;218;170mβ\033[48;2;194;225;176mββ\033[48;2;188;218;170mβ\033[48;2;177;204;160mβ\033[48;2;160;185;144mβ\033[48;2;136;157;123mβ\033[48;2;106;122;95mβ\033[48;2;68;79;62mβ\033[48;2;25;29;22m\033[38;2;197;228;178mβ\033[0m\033[38;2;168;194;152mβ\033[38;2;109;126;98mβ\033[38;2;39;46;36mβ \033[0m\n"
else
printf "Sorry, your terminal sucks. Try Konsole or Alacritty.\n"
fi
Only works in a terminal emulator that supports 24-bit colour, like Konsole, Alacritty, Kitty, Terminator (in fact most modern terminals should support this). Also, you need a terminal font that correctly displays block characters: βββ
The code for this script was generated using a little experimental program I wrote, called Fay:
Works fine in Terminator.
That is very impressive for a
I just pasted it in to try and it works, and made me laugh thank you
Nicely done. My xfce4-terminal likes the pond life, and I enjoy the smile!
How does the generator work? Does it only work for ponds?
It takes a picture, downsamples it to fit the terminal size (using ImageMagick API), then loops through all the pixels and prints them on the screen using four characters: ' '
, 'β'
, 'β'
, and 'β'
, and a bunch of ANSI escape codes to change the foreground and background colours (it tries to minimise the number of escape sequences).
You can just run it to display an image:
To generate a character sequence to use in a script (the potential for terminal ricing is near endless), you just run it with two additional options and redirect the stdout to a text file:
fay nice_frog.webp --width 49 --escape > nice_frog.txt
And you get this:
nice_frog.txt
\033[48;2;58;103;57m\033[38;2;58;97;58mβ\033[48;2;60;108;57m\033[38;2;57;102;58mβ\033[48;2;60;108;60m\033[38;2;57;103;60mβ\033[48;2;62;108;62m\033[38;2;58;103;60mβ\033[48;2;63;109;60m\033[38;2;59;101;58mβ\033[48;2;63;109;61m\033[38;2;61;102;58mβ\033[48;2;66;113;65m\033[38;2;62;106;62mβ\033[48;2;69;118;70m\033[38;2;66;111;68mβ\033[48;2;73;120;74m\033[38;2;69;114;71mβ\033[48;2;75;121;73m\033[38;2;69;116;69mβ\033[48;2;75;122;72mβ\033[48;2;74;121;73m\033[38;2;69;115;70mβ\033[48;2;74;121;72mβ\033[48;2;74;121;71mβ\033[48;2;73;120;70m\033[38;2;68;114;68mβ\033[38;2;68;114;69mβ\033[38;2;69;114;69mβ\033[38;2;71;113;69mβ\033[48;2;71;120;70m\033[38;2;69;114;69mβ\033[48;2;72;120;69m\033[38;2;69;114;68mβ\033[48;2;72;119;71m\033[38;2;67;113;68mβ\033[48;2;72;118;72m\033[38;2;67;112;69mβ\033[48;2;72;118;70m\033[38;2;68;110;65mβ\033[48;2;71;117;71m\033[38;2;68;109;66mβ\033[48;2;70;116;69m\033[38;2;67;108;68mβ\033[48;2;69;115;68m\033[38;2;66;107;66mβ\033[48;2;67;114;68m\033[38;2;64;105;63mβ\033[48;2;67;113;67m\033[38;2;64;105;65mβ\033[38;2;64;105;62mβ\033[48;2;67;112;67m\033[38;2;64;105;64mβ\033[48;2;68;112;65m\033[38;2;63;103;64mβ\033[48;2;68;112;66m\033[38;2;63;105;62mβ\033[38;2;61;103;64mβ\033[48;2;68;110;65m\033[38;2;62;103;64mβ\033[48;2;66;110;63m\033[38;2;60;102;60mβ\033[48;2;64;106;62m\033[38;2;60;100;59mβ\033[48;2;60;102;59m\033[38;2;56;97;56mβ\033[48;2;58;99;57m\033[38;2;53;94;53mβ\033[48;2;56;97;55m\033[38;2;52;92;50mβ\033[38;2;52;90;49mβ\033[48;2;54;95;54m\033[38;2;52;89;51mβ\033[48;2;53;95;53m\033[38;2;51;88;51mβ\033[48;2;51;92;50m\033[38;2;49;87;48mβ\033[48;2;50;91;48m\033[38;2;47;84;47mβ\033[48;2;48;88;47m\033[38;2;46;83;43mβ\033[48;2;47;87;46m\033[38;2;45;82;45mβ\033[48;2;46;87;46m\033[38;2;44;81;43mβ\033[48;2;47;86;48mβ\033[48;2;43;81;43m\033[38;2;42;75;43mβ\033[0m\n\033[48;2;58;104;57m\033[38;2;57;103;57mβ\033[48;2;63;109;61m\033[38;2;60;108;58mβ\033[48;2;64;110;63m\033[38;2;63;109;62mβ\033[48;2;65;111;64m\033[38;2;64;110;61mβ\033[48;2;66;112;65m\033[38;2;64;110;63mβ\033[48;2;67;114;66m\033[38;2;65;112;65mβ\033[48;2;70;116;69m\033[38;2;68;115;67mβ\033[48;2;73;120;72m\033[38;2;73;118;72mβ\033[48;2;75;122;72m\033[38;2;75;121;73mβ\033[48;2;76;123;73m\033[38;2;75;122;73mβ\033[48;2;77;123;72m\033[38;2;75;122;74mβ\033[48;2;77;123;73m\033[38;2;75;122;73mβ\033[48;2;75;122;72m\033[38;2;74;121;70mβ\033[48;2;74;121;71m\033[38;2;73;120;70mβββ\033[48;2;73;121;70mβ\033[48;2;72;120;70mβ\033[38;2;72;119;70mβ\033[48;2;73;119;70mβ\033[48;2;72;119;69m\033[38;2;72;118;72mβ\033[48;2;72;119;68m\033[38;2;72;118;70mββ\033[48;2;71;117;70mβ\033[48;2;70;116;68m\033[38;2;70;116;67mββ\033[48;2;68;115;67m\033[38;2;68;114;67mβ\033[48;2;70;115;67m\033[38;2;69;114;65mβ\033[48;2;71;114;67m\033[38;2;68;114;66mβ\033[48;2;71;112;66m\033[38;2;67;113;65mβ\033[48;2;72;113;67m\033[38;2;69;112;65mβ\033[38;2;69;112;66mβ\033[38;2;70;111;64mβ\033[48;2;70;111;67m\033[38;2;68;110;64mβ\033[48;2;69;111;65mβ\033[48;2;67;109;63m\033[38;2;67;108;63mβ\033[48;2;65;106;61m\033[38;2;64;105;59mβ\033[48;2;62;104;58m\033[38;2;61;102;61mβ\033[48;2;61;103;57m\033[38;2;59;100;58mβ\033[48;2;61;102;59m\033[38;2;58;99;57mβ\033[48;2;59;100;59m\033[38;2;57;97;56mβ\033[48;2;57;98;56m\033[38;2;55;96;55mβ\033[48;2;55;96;53m\033[38;2;53;95;51mβ\033[48;2;54;94;51m\033[38;2;53;92;49mβ\033[48;2;52;94;51m\033[38;2;52;90;48mβ\033[48;2;54;92;49m\033[38;2;50;89;48mβ\033[48;2;50;89;49m\033[38;2;49;86;48mβ\033[48;2;48;87;49m\033[38;2;49;86;49mβ\033[38;2;44;82;44mβ\033[0m\n\033[48;2;62;108;62m\033[38;2;60;106;59mβ\033[48;2;69;115;66m\033[38;2;66;112;63mβ\033[48;2;69;115;68m\033[38;2;66;113;66mβ\033[48;2;71;117;70m\033[38;2;68;115;67mβ\033[48;2;72;119;71m\033[38;2;69;115;68mβ\033[48;2;73;119;72m\033[38;2;70;116;69mβ\033[48;2;74;121;72m\033[38;2;72;119;71mβ\033[48;2;74;121;70m\033[38;2;74;121;71mβ\033[48;2;76;122;72m\033[38;2;75;122;72mβ \033[48;2;76;122;73m\033[38;2;77;123;73mβ\033[48;2;75;122;74m\033[38;2;76;122;75mβ\033[38;2;74;121;72mβ\033[48;2;75;121;73mβ\033[48;2;79;118;80m\033[38;2;75;121;74mβ\033[48;2;92;119;94m\033[38;2;77;121;74mβ\033[48;2;108;136;109m\033[38;2;74;120;73mβ\033[48;2;111;142;120m\033[38;2;73;119;72mβ\033[48;2;102;136;105m\033[38;2;72;118;72mβ\033[48;2;81;119;76m\033[38;2;72;119;69mβ\033[48;2;75;117;69m\033[38;2;72;118;68mβ\033[48;2;72;118;69m\033[38;2;72;119;69mβ\033[38;2;72;118;70mβ\033[48;2;72;119;69mβ\033[48;2;71;117;70m\033[38;2;71;118;68mβ\033[48;2;70;115;68m\033[38;2;70;116;68mβ\033[38;2;71;114;68mββ\033[48;2;73;113;68m\033[38;2;73;114;67mβ\033[38;2;78;112;74mβ\033[48;2;105;132;106m\033[38;2;75;113;72mβ\033[48;2;127;152;134m\033[38;2;88;123;93mβ\033[48;2;131;148;108m\033[38;2;101;134;104mβ\033[48;2;97;108;95m\033[38;2;93;119;72mβ\033[48;2;103;120;112m\033[38;2;72;110;64mβ\033[48;2;74;94;54m\033[38;2;65;108;62mβ\033[48;2;65;102;57m\033[38;2;65;106;61mβ\033[48;2;63;106;60m\033[38;2;63;105;59mβ\033[48;2;62;105;59mβ\033[48;2;62;104;58m\033[38;2;61;103;59mβ\033[48;2;62;104;57m\033[38;2;61;103;58mβ\033[48;2;61;103;57m\033[38;2;59;101;55mβ\033[48;2;60;101;59m\033[38;2;57;98;56mβ\033[48;2;58;99;58m\033[38;2;56;97;56mβ\033[48;2;56;96;55m\033[38;2;55;94;53mβ\033[48;2;53;95;53m\033[38;2;53;94;52mβ\033[48;2;52;93;51m\033[38;2;51;92;50mβ\033[48;2;52;90;50m\033[38;2;50;88;50mβ\033[48;2;45;83;45m\033[38;2;44;82;44mβ\033[0m\n\033[48;2;64;110;64m\033[38;2;63;109;62mβ\033[48;2;71;117;68m\033[38;2;69;115;66mβ\033[48;2;71;117;71m\033[38;2;71;117;69mβ\033[48;2;74;121;73m\033[38;2;73;120;72mβ\033[38;2;75;122;72mβ\033[48;2;77;123;72m\033[38;2;75;122;73mβ\033[48;2;77;123;73m\033[38;2;75;121;72mβ\033[48;2;74;121;71m\033[38;2;73;120;70mβ \033[48;2;74;121;73m\033[38;2;75;122;72mβ\033[48;2;74;121;74m\033[38;2;75;122;73mβ\033[48;2;75;116;74m\033[38;2;74;120;73mβ\033[48;2;56;73;52m\033[38;2;73;116;73mβ\033[48;2;47;60;46m\033[38;2;83;114;89mβ\033[48;2;114;130;113m\033[38;2;108;133;144mβ\033[48;2;108;126;109m\033[38;2;79;97;126mβ\033[48;2;88;99;89m\033[38;2;62;76;62mβ\033[48;2;132;153;74m\033[38;2;131;151;105mβ\033[48;2;171;201;128m\033[38;2;127;148;115mβ\033[48;2;155;183;109m\033[38;2;113;135;95mβ\033[48;2;130;153;88m\033[38;2;87;122;68mβ\033[48;2;80;114;68m\033[38;2;72;117;71mβ\033[48;2;71;118;71mβ\033[48;2;71;117;70m\033[38;2;72;118;71mβ\033[38;2;70;116;68mβ\033[48;2;70;115;68mβ\033[48;2;71;114;69m\033[38;2;71;115;68mβ\033[48;2;73;110;69m\033[38;2;72;114;68mβ\033[48;2;76;94;50m\033[38;2;76;105;66mβ\033[48;2;109;125;55m\033[38;2;91;108;66mβ\033[48;2;140;160;70m\033[38;2;113;133;85mβ\033[48;2;174;205;112m\033[38;2;145;174;113mβ\033[48;2;180;202;133m\033[38;2;141;163;107mβ\033[48;2;148;161;165m\033[38;2;113;122;115mβ\033[48;2;162;169;176m\033[38;2;129;139;129mβ\033[48;2;153;169;193m\033[38;2;113;126;95mβ\033[48;2;57;66;69m\033[38;2;62;72;39mβ\033[48;2;26;30;15m\033[38;2;61;87;53mβ\033[48;2;59;93;56m\033[38;2;63;104;61mβ\033[48;2;63;105;60m\033[38;2;62;104;60mβ\033[48;2;63;105;58m\033[38;2;62;104;58mβ\033[48;2;63;105;59m\033[38;2;62;103;58mβ\033[48;2;62;103;61m\033[38;2;61;102;61mβ\033[48;2;60;101;59m\033[38;2;60;101;60mβ\033[48;2;56;97;55m\033[38;2;56;97;56mβ\033[48;2;55;96;54m\033[38;2;54;95;54mβ\033[48;2;54;95;52m\033[38;2;53;94;50mβ\033[48;2;52;93;50m\033[38;2;52;91;51mβ\033[48;2;46;87;45m\033[38;2;47;85;47mβ\033[0m\n\033[48;2;70;116;69m\033[38;2;66;112;66mβ\033[48;2;76;122;73m\033[38;2;72;119;70mβ\033[48;2;76;122;74m\033[38;2;73;120;72mβ\033[48;2;76;123;73m\033[38;2;76;122;72mβ\033[48;2;77;123;73m\033[38;2;77;123;72mβ\033[38;2;77;123;74mβ \033[38;2;76;122;72mβ\033[48;2;76;122;73m\033[38;2;74;121;71mβ\033[48;2;75;122;74m\033[38;2;74;121;73mβ\033[48;2;80;122;76mβ\033[48;2;32;41;26m\033[38;2;55;79;53mβ\033[48;2;24;31;42m\033[38;2;17;26;22mβ\033[48;2;15;21;23m\033[38;2;14;20;15mβ\033[48;2;31;34;26m\033[38;2;86;95;67mβ\033[48;2;32;39;28m\033[38;2;90;100;83mβ\033[48;2;165;180;156m\033[38;2;138;150;146mβ\033[48;2;122;147;73m\033[38;2;138;163;76mβ\033[48;2;185;212;103m\033[38;2;174;199;87mβ\033[48;2;178;201;111m\033[38;2;175;202;112mβ\033[48;2;148;172;95m\033[38;2;158;181;99mβ\033[48;2;126;146;84m\033[38;2;115;137;70mβ\033[48;2;76;112;68m\033[38;2;74;116;70mβ\033[48;2;75;116;75m\033[38;2;73;117;71mβ\033[48;2;72;117;75m\033[38;2;73;116;71mβ\033[48;2;73;116;77m\033[38;2;71;114;70mβ\033[48;2;81;118;81m\033[38;2;70;113;69mβ\033[48;2;79;101;79m\033[38;2;71;100;59mβ\033[48;2;100;117;91m\033[38;2;79;92;44mβ\033[48;2;116;135;93m\033[38;2;117;136;60mβ\033[48;2;167;188;104m\033[38;2;151;172;67mβ\033[48;2;214;238;150m\033[38;2;175;201;98mβ\033[48;2;153;180;151m\033[38;2;177;202;153mβ\033[48;2;208;220;210m\033[38;2;171;181;183mβ\033[48;2;53;59;54m\033[38;2;77;82;84mβ\033[48;2;61;67;49m\033[38;2;93;103;133mβ\033[48;2;28;31;21m\033[38;2;79;89;102mβ\033[48;2;18;21;11m\033[38;2;16;20;8mβ\033[48;2;41;53;29m\033[38;2;41;61;35mβ\033[48;2;66;106;63m\033[38;2;65;106;62mβ\033[48;2;65;107;59m\033[38;2;63;105;58mβ\033[38;2;63;105;59mβ\033[48;2;62;104;58m\033[38;2;63;104;59mβ\033[38;2;61;103;58mβ\033[48;2;62;103;59m\033[38;2;60;101;56mβ\033[48;2;59;100;56m\033[38;2;57;98;57mβ\033[48;2;57;98;56m\033[38;2;55;96;55mβ\033[48;2;54;95;52mβ\033[48;2;53;90;52m\033[38;2;50;89;49mβ\033[0m\n\033[48;2;72;117;71m\033[38;2;71;117;71mβ\033[48;2;75;123;73m\033[38;2;76;123;74mβ\033[48;2;77;123;72mβ\033[38;2;77;123;73mβ\033[38;2;77;123;74mββ\033[38;2;77;123;73mββ\033[48;2;76;123;73m\033[38;2;77;123;75mβ\033[48;2;74;121;74m\033[38;2;75;122;74mβ\033[48;2;75;115;70m\033[38;2;78;117;75mβ\033[48;2;100;110;81m\033[38;2;45;52;35mβ\033[48;2;120;130;95m\033[38;2;21;28;19mβ\033[48;2;119;124;69m\033[38;2;45;50;28mβ\033[48;2;41;44;23m\033[38;2;48;50;31mβ\033[48;2;123;145;87m\033[38;2;56;67;48mβ\033[48;2;111;133;83m\033[38;2;157;180;133mβ\033[48;2;123;144;58m\033[38;2;102;126;61mβ\033[48;2;126;142;53m\033[38;2;169;198;82mβ\033[48;2;102;112;51m\033[38;2;124;138;69mβ\033[48;2;79;87;47m\033[38;2;128;145;96mβ\033[48;2;93;110;72m\033[38;2;135;155;120mβ\033[48;2;143;168;141m\033[38;2;137;165;155mβ\033[48;2;147;169;157m\033[38;2;132;163;165mβ\033[48;2;125;143;150m\033[38;2;135;165;165mβ\033[48;2;147;165;161m\033[38;2;139;170;169mβ\033[48;2;146;163;154m\033[38;2;147;176;174mβ\033[48;2;150;162;106m\033[38;2;144;166;162mβ\033[48;2;148;163;74m\033[38;2;124;141;119mβ\033[48;2;137;151;99m\033[38;2;137;157;103mβ\033[48;2;145;165;76m\033[38;2;157;179;88mβ\033[48;2;172;198;94m\033[38;2;182;206;121mβ\033[48;2;154;185;123m\033[38;2;157;185;118mβ\033[48;2;135;161;138m\033[38;2;181;198;167mβ\033[48;2;191;209;169m\033[38;2;141;160;137mβ\033[48;2;90;91;58m\033[38;2;56;58;33mβ\033[48;2;111;110;75m\033[38;2;134;136;102mβ\033[48;2;76;84;56m\033[38;2;110;114;91mβ\033[48;2;68;87;56m\033[38;2;80;95;57mβ\033[48;2;63;107;62m\033[38;2;65;106;64mβ\033[48;2;65;107;60m\033[38;2;66;107;61mβ\033[48;2;65;106;61m\033[38;2;65;106;60mβ\033[48;2;64;105;59m\033[38;2;63;105;59mβββ\033[48;2;62;104;58m\033[38;2;61;103;57mβ\033[48;2;60;101;60m\033[38;2;58;99;57mβ\033[48;2;57;98;57m\033[38;2;56;97;56mβ\033[48;2;52;92;49m\033[38;2;52;90;51mβ\033[0m\n\033[38;2;72;117;71mβ\033[48;2;75;123;73m\033[38;2;76;122;73mβ\033[48;2;77;123;73m\033[38;2;76;123;75mβ\033[48;2;78;124;74m\033[38;2;77;123;72mβ\033[38;2;77;123;73mββ\033[48;2;78;124;75mββ\033[48;2;77;123;76m\033[38;2;77;123;75mβ\033[48;2;75;121;75m\033[38;2;74;120;75mβ\033[48;2;74;121;74m\033[38;2;77;120;77mβ\033[48;2;76;103;62m\033[38;2;70;88;56mβ\033[48;2;66;73;43m\033[38;2;77;86;50mβ\033[48;2;67;73;39m\033[38;2;107;113;67mβ\033[48;2;81;96;54m\033[38;2;62;71;32mβ\033[48;2;92;113;54m\033[38;2;142;166;90mβ\033[48;2;135;157;60m\033[38;2;108;131;66mβ\033[48;2;167;194;80m\033[38;2;119;140;58mβ\033[48;2;167;197;99m\033[38;2;127;147;59mβ\033[48;2;147;172;82m\033[38;2;101;117;46mβ\033[48;2;127;147;61m\033[38;2;97;111;50mβ\033[48;2;104;117;45m\033[38;2;104;118;62mβ\033[48;2;114;121;50m\033[38;2;123;136;69mβ\033[48;2;123;126;51m\033[38;2;136;147;79mβ\033[48;2;111;114;74m\033[38;2;123;132;95mβ\033[48;2;127;138;127m\033[38;2;124;140;119mβ\033[48;2;161;177;179m\033[38;2;144;161;143mβ\033[48;2;179;192;200m\033[38;2;159;172;128mβ\033[48;2;151;162;144m\033[38;2;158;167;83mβ\033[48;2;147;156;79m\033[38;2;155;167;64mβ\033[48;2;141;150;61m\033[38;2;159;174;69mβ\033[48;2;174;184;68m\033[38;2;189;209;99mβ\033[48;2;180;193;72m\033[38;2;190;220;144mβ\033[48;2;183;199;83m\033[38;2;172;207;130mβ\033[48;2;170;191;81m\033[38;2;141;176;143mβ\033[48;2;121;140;79m\033[38;2;109;131;97mβ\033[48;2;65;73;62m\033[38;2;84;87;57mβ\033[48;2;51;59;44m\033[38;2;78;83;55mβ\033[48;2;69;96;59m\033[38;2;69;97;60mβ\033[48;2;66;107;64m\033[38;2;65;107;63mβ\033[48;2;66;107;61m\033[38;2;66;107;60mβ\033[38;2;65;106;60mββ\033[48;2;66;107;62mβ\033[48;2;64;105;59m\033[38;2;63;105;59mββ\033[48;2;63;104;62m\033[38;2;62;103;62mβ\033[48;2;61;102;61m\033[38;2;60;100;59mβ\033[48;2;55;94;54m\033[38;2;53;92;52mβ\033[0m\n\033[38;2;72;117;71mβ\033[48;2;76;124;73m\033[38;2;76;123;73mβ\033[48;2;77;123;74m\033[38;2;77;123;72mβ\033[38;2;78;124;75mβββ\033[38;2;78;124;74mβ\033[38;2;77;124;74mβ\033[38;2;77;123;75mβ\033[48;2;76;122;74m\033[38;2;75;122;74mβ\033[48;2;81;122;76m\033[38;2;76;121;72mβ\033[48;2;74;81;50m\033[38;2;76;100;62mβ\033[48;2;52;56;34m\033[38;2;50;59;34mβ\033[48;2;107;122;53m\033[38;2;53;63;34mβ\033[48;2;137;154;62m\033[38;2;99;119;53mβ\033[48;2;128;145;52m\033[38;2;142;164;61mβ\033[48;2;149;169;68m\033[38;2;151;174;66mβ\033[48;2;148;171;68m\033[38;2;162;188;75mβ\033[48;2;131;155;58m\033[38;2;154;180;78mβ\033[48;2;119;138;56m\033[38;2;126;146;57mβ\033[48;2;119;134;59m\033[38;2;135;155;67mβ\033[48;2;105;117;46m\033[38;2;128;145;66mβ\033[48;2;101;105;39m\033[38;2;97;103;54mβ\033[48;2;110;108;41m\033[38;2;108;107;49mβ\033[48;2;106;98;41m\033[38;2;96;93;49mβ\033[48;2;99;89;49m\033[38;2;107;109;78mβ\033[48;2;134;131;70m\033[38;2;142;147;117mβ\033[48;2;166;169;75m\033[38;2;164;175;141mβ\033[48;2;170;178;82m\033[38;2;170;182;138mβ\033[48;2;164;177;75m\033[38;2;180;199;112mβ\033[48;2;147;166;69m\033[38;2;164;181;74mβ\033[48;2;118;142;74m\033[38;2;165;191;77mβ\033[48;2;147;174;77m\033[38;2;174;196;76mβ\033[48;2;147;171;69m\033[38;2;167;187;73mβ\033[48;2;139;158;64m\033[38;2;154;175;70mβ\033[48;2;147;162;63m\033[38;2;147;165;59mβ\033[48;2;150;164;57m\033[38;2;141;154;60mβ\033[48;2;156;168;65m\033[38;2;73;79;43mβ\033[48;2;129;134;48m\033[38;2;92;100;54mβ\033[48;2;89;114;51m\033[38;2;69;107;62mβ\033[48;2;66;107;63m\033[38;2;66;108;60mβ\033[48;2;65;106;60m\033[38;2;66;107;61mβ\033[38;2;64;106;60mβ\033[48;2;63;105;59m\033[38;2;65;106;61mβ\033[38;2;62;104;58mββ\033[48;2;62;103;57m\033[38;2;63;105;61mβ\033[38;2;61;103;60mβ\033[48;2;57;97;52m\033[38;2;56;96;53mβ\033[0m\n\033[48;2;78;120;75m\033[38;2;72;117;71mβ\033[48;2;80;127;77m\033[38;2;78;124;74mβ\033[48;2;79;126;76m\033[38;2;78;124;75mβ\033[48;2;79;125;76mβ\033[48;2;78;125;75mβ\033[48;2;77;123;74mβ\033[48;2;77;123;73mββ\033[48;2;76;122;75m\033[38;2;77;123;75mβ\033[48;2;77;111;68m\033[38;2;77;121;74mβ\033[48;2;97;105;52m\033[38;2;82;104;62mβ\033[48;2;122;130;60m\033[38;2;76;80;40mβ\033[48;2;117;127;49m\033[38;2;112;122;59mβ\033[48;2;115;125;45m\033[38;2;126;139;61mβ\033[48;2;111;122;40m\033[38;2;117;129;51mβ\033[48;2;116;130;49m\033[38;2;121;136;50mβ\033[48;2;108;121;44m\033[38;2;118;138;52mβ\033[48;2;92;101;38m\033[38;2;102;121;42mβ\033[48;2;84;89;37m\033[38;2;95;107;43mβ\033[48;2;96;100;37m\033[38;2;95;104;41mβ\033[48;2;91;92;35m\033[38;2;80;85;32mβ\033[48;2;92;92;27m\033[38;2;88;88;35mβ\033[48;2;96;89;24m\033[38;2;106;101;37mβ\033[48;2;110;97;25m\033[38;2;118;113;31mβ\033[48;2;119;103;29m\033[38;2;122;112;39mβ\033[48;2;123;107;34m\033[38;2;112;98;40mβ\033[48;2;120;105;36m\033[38;2;127;117;51mβ\033[48;2;117;104;37m\033[38;2;155;151;59mβ\033[48;2;142;135;45m\033[38;2;161;162;56mβ\033[48;2;134;132;41m\033[38;2;136;141;50mβ\033[48;2;115;117;48m\033[38;2;146;159;62mβ\033[48;2;112;114;50m\033[38;2;130;149;65mβ\033[48;2;135;144;77m\033[38;2;100;117;70mβ\033[48;2;116;122;78m\033[38;2;129;152;80mβ\033[48;2;110;114;61m\033[38;2;140;161;73mβ\033[48;2;134;148;60m\033[38;2;156;178;58mβ\033[48;2;162;179;70m\033[38;2;173;196;69mβ\033[48;2;143;155;60m\033[38;2;166;187;63mβ\033[48;2;125;133;47m\033[38;2;175;193;65mβ\033[48;2;170;187;66m\033[38;2;134;153;53mβ\033[48;2;99;119;58m\033[38;2;69;100;60mβ\033[48;2;67;101;58m\033[38;2;65;106;60mβ\033[38;2;63;104;59mβ\033[48;2;62;105;59mβ\033[48;2;63;104;60m\033[38;2;62;104;58mβ\033[48;2;63;104;61m\033[38;2;62;103;58mβ\033[48;2;63;104;59mβ\033[48;2;63;105;58mβ\033[48;2;59;99;55m\033[38;2;58;98;55mβ\033[0m\n\033[48;2;106;149;99m\033[38;2;87;130;84mβ\033[48;2;110;158;107m\033[38;2;91;138;88mβ\033[48;2;108;154;106m\033[38;2;89;135;87mβ\033[48;2;101;148;100m\033[38;2;85;131;84mβ\033[48;2;100;147;96m\033[38;2;83;130;81mβ\033[48;2;99;147;91m\033[38;2;84;131;80mβ\033[48;2;100;148;91m\033[38;2;88;135;82mβ\033[48;2;98;146;88m\033[38;2;89;136;85mβ\033[48;2;84;118;70m\033[38;2;87;132;86mβ\033[48;2;113;124;55m\033[38;2;89;109;55mβ\033[48;2;115;126;48m\033[38;2;125;133;59mβ\033[48;2;85;83;36m\033[38;2;115;116;52mβ\033[48;2;98;99;37m\033[38;2;109;119;44mβ\033[48;2;77;78;28m\033[38;2;116;128;38mβ\033[48;2;72;71;26m\033[38;2;119;130;44mβ\033[48;2;68;62;27m\033[38;2;104;111;43mβ\033[48;2;79;77;31m\033[38;2;83;86;36mβ\033[48;2;99;99;45m\033[38;2;64;62;30mβ\033[48;2;107;112;68m\033[38;2;63;62;32mβ\033[48;2;112;119;69m\033[38;2;80;77;33mβ\033[48;2;122;130;67m\033[38;2;75;68;29mβ\033[48;2;122;126;51m\033[38;2;79;73;26mβ\033[48;2;121;121;41m\033[38;2;87;76;22mβ\033[48;2;122;117;30m\033[38;2;88;73;19mβ\033[48;2;118;113;24m\033[38;2;100;84;18mβ\033[48;2;116;113;31m\033[38;2;112;98;25mβ\033[48;2;116;117;47m\033[38;2;106;90;27mβ\033[48;2;121;126;55m\033[38;2;96;76;28mβ\033[48;2;131;134;42m\033[38;2;106;91;25mβ\033[48;2;145;145;37m\033[38;2;115;107;31mβ\033[48;2;140;142;61m\033[38;2;117;117;57mβ\033[48;2;142;150;89m\033[38;2;109;103;68mβ\033[48;2;180;186;78m\033[38;2;138;137;74mβ\033[48;2;194;207;104m\033[38;2;141;138;75mβ\033[48;2;195;208;126m\033[38;2;113;106;61mβ\033[48;2;215;225;115m\033[38;2;96;86;44mβ\033[48;2;162;168;105m\033[38;2;90;86;44mβ\033[48;2;129;129;70m\033[38;2;84;78;43mβ\033[48;2;92;87;39m\033[38;2;100;93;48mβ\033[48;2;106;106;37m\033[38;2;151;161;52mβ\033[48;2;135;143;47m\033[38;2;150;171;60mβ\033[48;2;149;165;68m\033[38;2;79;106;47mβ\033[48;2;80;111;55m\033[38;2;64;104;60mβ\033[48;2;63;104;59m\033[38;2;62;104;60mβ\033[48;2;63;105;57m\033[38;2;63;104;60mβ\033[48;2;62;104;57m\033[38;2;63;105;59mβ\033[48;2;62;104;58m\033[38;2;63;105;58mβ\033[38;2;63;105;59mβ\033[48;2;58;101;56m\033[38;2;59;100;56mβ\033[0m\n\033[48;2;144;182;133m\033[38;2;127;168;118mβ\033[48;2;150;193;144m\033[38;2;132;178;128mβ\033[48;2;148;189;146m\033[38;2;129;175;126mβ\033[48;2;140;185;142m\033[38;2;123;169;121mβ\033[48;2;132;179;132m\033[38;2;117;164;114mβ\033[48;2;124;171;121m\033[38;2;113;160;107mβ\033[48;2;116;164;106m\033[38;2;107;156;96mβ\033[48;2;107;132;70m\033[38;2;100;145;87mβ\033[48;2;133;142;56m\033[38;2;90;104;53mβ\033[48;2;108;111;44m\033[38;2;127;139;53mβ\033[48;2;71;66;28m\033[38;2;110;117;37mβ\033[48;2;67;64;26m\033[38;2;73;68;36mβ\033[48;2;119;120;53m\033[38;2;53;48;22mβ\033[48;2;153;158;66m\033[38;2;71;65;31mβ\033[48;2;134;138;52m\033[38;2;98;97;40mβ\033[48;2;91;94;44m\033[38;2;122;124;62mβ\033[48;2;108;110;53m\033[38;2;145;151;61mβ\033[48;2;113;116;38m\033[38;2;142;150;67mβ\033[48;2;99;97;23m\033[38;2;130;141;67mβ\033[48;2;90;88;28m\033[38;2;107;112;54mβ\033[48;2;93;91;24m\033[38;2;104;105;40mβ\033[48;2;99;98;30m\033[38;2;103;107;41mβ\033[48;2;102;103;43m\033[38;2;106;113;48mβ\033[48;2;99;98;42m\033[38;2;108;109;38mβ\033[48;2;96;94;30m\033[38;2;106;104;25mβ\033[48;2;104;98;20m\033[38;2;111;107;22mβ\033[48;2;106;101;21m\033[38;2;112;110;27mβ\033[48;2;99;98;25m\033[38;2;107;111;46mβ\033[48;2;97;98;31m\033[38;2;106;109;46mβ\033[48;2;100;99;35m\033[38;2;110;109;35mβ\033[48;2;101;98;32m\033[38;2;105;104;38mβ\033[48;2;102;95;20m\033[38;2;107;102;30mβ\033[48;2;106;91;18m\033[38;2;125;114;26mβ\033[48;2;111;93;18m\033[38;2;139;134;51mβ\033[48;2;116;100;25m\033[38;2;140;138;73mβ\033[48;2;121;112;47m\033[38;2;164;168;75mβ\033[48;2;138;137;85m\033[38;2;158;167;108mβ\033[48;2;189;190;87m\033[38;2;213;222;121mβ\033[48;2;201;211;104m\033[38;2;184;188;96mβ\033[48;2;217;222;98m\033[38;2;113;109;44mβ\033[48;2;109;110;53m\033[38;2;82;82;38mβ\033[48;2;71;65;36m\033[38;2;116;117;45mβ\033[48;2;125;126;50m\033[38;2;140;157;69mβ\033[48;2;111;138;60m\033[38;2;69;108;58mβ\033[48;2;63;105;59m\033[38;2;63;104;59mβ\033[48;2;64;106;60m\033[38;2;62;104;58mβ\033[48;2;65;106;60m\033[38;2;64;105;59mβ\033[48;2;64;106;60m\033[38;2;63;105;59mβ\033[48;2;60;100;56m\033[38;2;59;100;56mβ\033[0m\n\033[48;2;152;190;144m\033[38;2;150;188;139mβ\033[48;2;159;202;155m\033[38;2;158;200;153mβ\033[48;2;160;201;159m\033[38;2;156;197;156mβ\033[48;2;156;195;155m\033[38;2;150;193;153mβ\033[48;2;145;188;146m\033[38;2;140;185;141mβ\033[48;2;135;176;132m\033[38;2;129;177;129mβ\033[48;2;125;145;83m\033[38;2;122;162;107mβ\033[48;2;89;88;31m\033[38;2;129;139;57mβ\033[48;2;54;46;18m\033[38;2;97;96;40mβ\033[48;2;105;99;47m\033[38;2;53;47;22mβ\033[48;2;164;165;66m\033[38;2;84;76;38mβ\033[48;2;145;146;46m\033[38;2;163;167;69mβ\033[48;2;103;101;40m\033[38;2;157;163;60mβ\033[48;2;99;94;30m\033[38;2;141;144;53mβ\033[48;2;104;91;26m\033[38;2;108;102;36mβ\033[48;2;99;87;22m\033[38;2;102;97;34mβ\033[48;2;96;90;22m\033[38;2;98;96;34mβ\033[48;2;99;94;20m\033[38;2;92;89;31mβ\033[48;2;104;97;18m\033[38;2;93;87;22mβ\033[48;2;111;106;28m\033[38;2;98;94;25mβ\033[48;2;112;113;48m\033[38;2;102;104;39mβ\033[48;2;109;109;46m\033[38;2;103;104;43mβ\033[48;2;108;102;31m\033[38;2;102;101;40mβ\033[48;2;103;98;31m\033[38;2;99;97;39mβ\033[48;2;99;96;29m\033[38;2;96;95;31mβ\033[48;2;98;93;24m\033[38;2;98;93;19mβ\033[48;2;102;92;20m\033[38;2;101;94;18mβ\033[48;2;105;92;17m\033[38;2;101;93;20mβ\033[48;2;105;92;16m\033[38;2;101;93;22mβ\033[48;2;106;94;17m\033[38;2;104;95;23mβ\033[48;2;110;97;20m\033[38;2;107;97;22mβ\033[48;2;108;94;18m\033[38;2;106;95;16mβ\033[48;2;106;90;15m\033[38;2;105;89;18mβ\033[48;2;104;89;16m\033[38;2;105;87;17mβ\033[48;2;103;86;15m\033[38;2;106;87;16mβ\033[48;2;113;97;21mβ\033[48;2;112;92;17m\033[38;2;130;110;30mβ\033[48;2;123;105;16m\033[38;2;151;141;49mβ\033[48;2;136;123;35m\033[38;2;163;163;90mβ\033[48;2;149;144;56m\033[38;2;208;212;84mβ\033[48;2;142;143;84m\033[38;2;176;190;98mβ\033[48;2;150;156;76m\033[38;2;87;85;40mβ\033[48;2;64;55;28m\033[38;2;84;74;28mβ\033[48;2;83;75;32m\033[38;2;115;123;55mβ\033[48;2;85;108;57m\033[38;2;68;104;60mβ\033[48;2;65;107;60m\033[38;2;66;107;61mβ\033[48;2;65;106;60mββ\033[48;2;61;100;57m\033[38;2;61;101;57mβ\033[0m\n\033[48;2;138;174;136m\033[38;2;145;181;140mβ\033[48;2;149;184;143m\033[38;2;156;195;149mβ\033[48;2;149;184;144m\033[38;2;157;194;153mβ\033[48;2;148;185;146m\033[38;2;153;191;151mβ\033[48;2;146;180;136m\033[38;2;147;187;146mβ\033[48;2;116;126;60m\033[38;2;143;170;118mβ\033[48;2;53;47;23m\033[38;2;96;96;40mβ\033[48;2;90;86;37m\033[38;2;51;43;17mβ\033[48;2;132;130;55m\033[38;2;102;98;43mβ\033[48;2;119;117;34m\033[38;2;150;153;63mβ\033[48;2;118;110;24m\033[38;2;141;142;37mβ\033[48;2;105;95;19m\033[38;2;106;103;24mβ\033[48;2;101;90;19m\033[38;2;88;83;22mβ\033[48;2;99;87;17m\033[38;2;96;88;19mβ\033[48;2;96;84;13m\033[38;2;97;82;16mβ\033[48;2;103;90;16m\033[38;2;99;86;17mβ\033[48;2;106;93;16m\033[38;2;104;91;19mβ\033[48;2;114;101;17m\033[38;2;110;97;16mβ\033[48;2;114;102;13m\033[38;2;114;103;14mβ\033[48;2;114;104;17m\033[38;2;115;109;22mβ\033[48;2;118;109;22m\033[38;2;115;115;33mβ\033[48;2;118;111;30m\033[38;2;112;110;41mβ\033[48;2;115;111;30m\033[38;2;112;106;31mβ\033[48;2;117;105;18m\033[38;2;112;102;17mβ\033[48;2;115;99;18m\033[38;2;111;99;20mβ\033[48;2;112;98;16m\033[38;2;107;95;19mβ\033[48;2;115;102;15m\033[38;2;109;96;17mβ\033[48;2;115;104;17m\033[38;2;109;98;14mβ\033[48;2;113;102;17m\033[38;2;109;98;15mβ\033[48;2;114;98;16m\033[38;2;109;96;16mβ\033[48;2;115;99;16m\033[38;2;110;96;16mβ\033[48;2;113;97;14m\033[38;2;109;95;14mβ\033[48;2;114;99;13m\033[38;2;110;95;15mβ\033[48;2;115;99;16m\033[38;2;107;92;13mβ\033[48;2;112;98;15m\033[38;2;105;90;16mβ\033[48;2;113;97;17m\033[38;2;105;88;16mβ\033[48;2;109;92;17m\033[38;2;108;87;17mβ\033[48;2;111;93;19m\033[38;2;114;95;18mβ\033[48;2;108;90;11m\033[38;2;122;104;20mβ\033[48;2;113;96;15m\033[38;2;128;114;25mβ\033[48;2;131;114;26m\033[38;2;141;133;46mβ\033[48;2;156;151;47m\033[38;2;164;169;63mβ\033[48;2;125;125;44m\033[38;2;87;84;41mβ\033[48;2;58;51;30m\033[38;2;66;53;27mβ\033[48;2;100;97;46m\033[38;2;118;124;52mβ\033[48;2;69;108;61m\033[38;2;67;108;57mβ\033[48;2;66;107;61m\033[38;2;66;107;60mββ\033[38;2;61;100;56mβ\033[0m\n\033[48;2;146;179;145m\033[38;2;141;172;137mβ\033[48;2;153;181;146m\033[38;2;154;184;146mβ\033[48;2;147;168;136m\033[38;2;155;183;147mβ\033[48;2;144;163;135m\033[38;2;144;172;138mβ\033[48;2;127;131;96m\033[38;2;133;151;97mβ\033[48;2;69;64;34m\033[38;2;74;71;28mβ\033[48;2;71;67;28m\033[38;2;75;70;36mβ\033[48;2;99;96;27m\033[38;2;104;103;39mβ\033[48;2;109;104;26m\033[38;2;102;99;29mβ\033[48;2;110;102;22m\033[38;2;102;95;24mβ\033[48;2;105;93;16m\033[38;2;112;100;21mβ\033[48;2;102;89;16m\033[38;2;103;90;15mβ\033[48;2;105;95;16m\033[38;2;101;89;15mβ\033[48;2;108;95;15m\033[38;2;100;88;17mβ\033[48;2;111;99;15m\033[38;2;102;90;13mβ\033[48;2;114;101;14m\033[38;2;109;97;16mβ\033[48;2;119;106;14m\033[38;2;114;100;17mβ\033[48;2;121;107;15m\033[38;2;117;102;14mβ\033[48;2;119;106;14m\033[38;2;116;102;14mβ\033[48;2;114;102;11m\033[38;2;113;101;13mβ\033[48;2;120;109;19m\033[38;2;117;107;16mβ\033[48;2;121;113;19m\033[38;2;118;112;23mβ\033[48;2;122;116;28m\033[38;2;119;115;33mβ\033[48;2;122;117;32m\033[38;2;121;112;25mβ\033[48;2;122;117;40m\033[38;2;118;107;23mβ\033[48;2;116;112;33m\033[38;2;115;104;19mβ\033[48;2;118;113;31m\033[38;2;117;107;20mβ\033[48;2;120;114;33m\033[38;2;119;110;24mβ\033[48;2;119;109;20m\033[38;2;117;105;20mβ\033[48;2;120;107;16m\033[38;2;115;100;15mβ\033[48;2;121;106;19m\033[38;2;117;101;15mβ\033[48;2;120;106;19m\033[38;2;118;102;16mβ\033[48;2;117;103;16m\033[38;2;116;101;15mβ\033[48;2;120;105;16m\033[38;2;119;103;17mβ\033[38;2;123;108;16mβ\033[48;2;127;112;20m\033[38;2;119;104;16mβ\033[48;2;122;108;20m\033[38;2;116;99;19mβ\033[48;2;121;108;16m\033[38;2;109;92;17mβ\033[48;2;125;109;18m\033[38;2;110;93;15mβ\033[48;2;118;102;14m\033[38;2;106;89;17mβ\033[48;2;120;105;17m\033[38;2;111;96;19mβ\033[48;2;122;105;23m\033[38;2;131;120;28mβ\033[48;2;110;100;36m\033[38;2;124;120;42mβ\033[48;2;76;69;40m\033[38;2;64;60;40mβ\033[48;2;107;111;64m\033[38;2;86;87;50mβ\033[48;2;100;122;97m\033[38;2;78;112;75mβ\033[48;2;90;119;84m\033[38;2;71;111;66mβ\033[48;2;78;114;70m\033[38;2;67;108;63mβ\033[48;2;62;101;58m\033[38;2;61;101;57mβ\033[0m\n\033[48;2;140;157;122m\033[38;2;145;177;143mβ\033[48;2;143;155;122m\033[38;2;145;171;141mβ\033[48;2;145;153;122m\033[38;2;140;155;129mβ\033[48;2;151;159;128m\033[38;2;145;157;128mβ\033[48;2;153;162;132m\033[38;2;141;151;120mβ\033[48;2;80;84;52m\033[38;2;72;74;43mβ\033[48;2;77;75;26m\033[38;2;73;71;29mβ\033[48;2;96;89;19m\033[38;2;103;97;20mβ\033[48;2;99;87;15m\033[38;2;103;91;18mβ\033[48;2;103;90;16m\033[38;2;103;90;17mβ\033[48;2;109;95;15m\033[38;2;105;93;17mβ\033[48;2;116;100;17m\033[38;2;104;93;16mβ\033[48;2;114;100;14m\033[38;2;114;102;17mβ\033[48;2;123;107;18m\033[38;2;118;102;14mβ\033[48;2;121;106;14m\033[38;2;121;107;14mβ\033[48;2;122;108;15m\033[38;2;121;107;15mβ\033[48;2;123;109;17m\033[38;2;122;109;14mβ\033[48;2;123;111;15m\033[38;2;122;111;15mβ\033[48;2;127;117;14m\033[38;2;122;112;14mβ\033[48;2;126;117;21m\033[38;2;122;113;17mβ\033[48;2;123;118;23m\033[38;2;121;115;25mβ\033[48;2;123;115;21m\033[38;2;125;116;23mβ\033[48;2;121;114;29m\033[38;2;124;114;26mβ\033[48;2;117;116;39m\033[38;2;120;117;36mβ\033[48;2;118;117;45m\033[38;2;118;119;49mβ\033[48;2;120;116;34m\033[38;2;117;117;43mβ\033[48;2;121;115;27m\033[38;2;119;115;31mβ\033[48;2;121;117;32m\033[38;2;120;116;32mβ\033[48;2;126;118;28m\033[38;2;123;113;22mβ\033[48;2;127;123;32m\033[38;2;127;115;23mβ\033[48;2;121;125;56m\033[38;2;124;119;37mβ\033[48;2;128;122;29m\033[38;2;124;113;24mβ\033[48;2;125;114;14m\033[38;2;123;110;18mβ\033[48;2;127;116;19m\033[38;2;122;107;15mβ\033[48;2;131;120;21m\033[38;2;129;114;19mβ\033[48;2;125;115;15m\033[38;2;127;116;16mβ\033[48;2;134;119;19m\033[38;2;130;120;21mβ\033[48;2;142;129;17m\033[38;2;136;123;20mβ\033[48;2;135;117;12m\033[38;2;139;123;18mβ\033[48;2;157;140;21m\033[38;2;150;134;19mβ\033[48;2;150;135;22m\033[38;2;140;120;23mβ\033[48;2;144;129;35m\033[38;2;126;112;24mβ\033[48;2;121;110;36m\033[38;2;106;95;31mβ\033[48;2;83;76;24m\033[38;2;102;94;38mβ\033[48;2;121;119;62m\033[38;2;123;125;67mβ\033[48;2;136;149;138m\033[38;2;115;131;119mβ\033[48;2;141;154;137m\033[38;2;112;129;108mβ\033[48;2;130;146;121m\033[38;2;100;124;92mβ\033[48;2;100;119;92m\033[38;2;72;101;68mβ\033[0m\n\033[48;2;124;125;75m\033[38;2;134;139;95mβ\033[48;2;138;138;86m\033[38;2;147;150;105mβ\033[48;2;129;129;91m\033[38;2;142;144;106mβ\033[48;2;117;122;100m\033[38;2;139;143;117mβ\033[48;2;124;133;115m\033[38;2;148;156;131mβ\033[48;2;142;149;124m\033[38;2;116;120;90mβ\033[48;2;102;103;46m\033[38;2;87;85;30mβ\033[48;2;104;97;25m\033[38;2;96;89;18mβ\033[48;2;106;95;18m\033[38;2;104;94;17mβ\033[48;2;114;101;19m\033[38;2;110;97;17mβ\033[48;2;117;101;15m\033[38;2;120;106;19mβ\033[48;2;120;106;18m\033[38;2;110;94;11mβ\033[48;2;116;104;19m\033[38;2;115;99;15mβ\033[48;2;113;104;27m\033[38;2;117;103;16mβ\033[48;2;110;107;35m\033[38;2;116;105;15mβ\033[48;2;111;107;34m\033[38;2;116;106;15mβ\033[48;2;112;109;30m\033[38;2;118;110;18mβ\033[48;2;116;115;41m\033[38;2;123;116;22mβ\033[48;2;114;110;30m\033[38;2;124;116;18mβ\033[48;2;118;110;20m\033[38;2;126;117;21mβ\033[48;2;117;109;27m\033[38;2;123;114;20mβ\033[48;2;119;110;22m\033[38;2;121;112;21mβ\033[48;2;116;115;40m\033[38;2;120;115;38mβ\033[48;2;115;116;48m\033[38;2;116;116;44mβ\033[48;2;117;113;43m\033[38;2;118;115;40mβ\033[48;2;120;112;27m\033[38;2;122;113;23mβ\033[48;2;122;113;31m\033[38;2;125;116;24mβ\033[48;2;116;113;49m\033[38;2;120;116;41mβ\033[48;2;113;114;53m\033[38;2;122;119;49mβ\033[48;2;113;115;54m\033[38;2;119;122;51mβ\033[48;2;116;118;59m\033[38;2;120;125;68mβ\033[48;2;117;116;54m\033[38;2;125;123;42mβ\033[48;2;119;115;42m\033[38;2;124;117;22mβ\033[48;2;118;110;22m\033[38;2;125;118;26mβ\033[48;2;124;113;19m\033[38;2;129;121;24mβ\033[48;2;132;118;17m\033[38;2;129;116;16mβ\033[48;2;140;125;18m\033[38;2;130;114;12mβ\033[48;2;137;119;13m\033[38;2;133;118;10mβ\033[48;2;141;123;13m\033[38;2;142;125;15mβ\033[48;2;151;133;19m\033[38;2;145;128;18mβ\033[48;2;168;153;27m\033[38;2;151;135;26mβ\033[48;2;166;158;31m\033[38;2;150;138;35mβ\033[48;2;156;154;38m\033[38;2;132;127;36mβ\033[48;2;114;112;30m\033[38;2;91;88;30mβ\033[48;2;152;157;76m\033[38;2;143;143;75mβ\033[48;2;147;159;138m\033[38;2;142;154;140mβ\033[48;2;149;161;144m\033[38;2;143;155;141mβ\033[48;2;152;165;151m\033[38;2;147;159;138mβ\033[48;2;137;149;133m\033[38;2;132;144;118mβ\033[0m\n\033[48;2;145;155;122m\033[38;2;128;132;87mβ\033[48;2;150;161;125m\033[38;2;154;162;124mβ\033[48;2;147;162;104m\033[38;2;158;168;141mβ\033[48;2;130;143;93m\033[38;2;157;174;149mβ\033[48;2;122;132;83m\033[38;2;158;177;154mβ\033[48;2;104;115;75m\033[38;2;146;162;140mβ\033[48;2;95;98;50m\033[38;2;106;112;63mβ\033[48;2;105;103;21m\033[38;2;108;103;26mβ\033[48;2;112;103;18m\033[38;2;110;99;18mβ\033[48;2;118;110;17m\033[38;2;115;102;17mβ\033[48;2;124;115;18m\033[38;2;120;107;16mβ\033[48;2;121;112;14m\033[38;2;116;104;14mβ\033[48;2;117;102;14m\033[38;2;120;111;15mβ\033[48;2;119;105;18m\033[38;2;118;111;21mβ\033[48;2;113;104;18m\033[38;2;114;112;41mβ\033[48;2;112;104;22m\033[38;2;111;110;44mβ\033[48;2;110;102;17m\033[38;2;109;106;36mβ\033[48;2;113;106;17m\033[38;2;112;110;33mβ\033[48;2;112;106;25m\033[38;2;108;105;29mβ\033[48;2;110;106;50m\033[38;2;106;104;30mβ\033[48;2;109;109;51m\033[38;2;110;109;42mβ\033[48;2;114;115;50m\033[38;2;118;113;35mβ\033[48;2;110;111;45m\033[38;2;114;115;44mβ\033[48;2;104;104;43m\033[38;2;112;111;50mβ\033[48;2;103;104;42m\033[38;2;113;110;47mβ\033[48;2;108;105;46m\033[38;2;113;111;41mβ\033[48;2;106;106;45m\033[38;2;113;111;44mβ\033[48;2;101;102;43m\033[38;2;108;108;47mβ\033[48;2;98;99;43m\033[38;2;107;107;48mβ\033[48;2;100;103;46m\033[38;2;107;106;48mβ\033[48;2;110;113;52m\033[38;2;110;110;41mβ\033[48;2;114;113;44m\033[38;2;112;113;41mβ\033[48;2;118;113;27m\033[38;2;113;114;44mβ\033[48;2;116;102;19m\033[38;2;114;104;21mβ\033[48;2;113;98;13m\033[38;2;118;103;14mβ\033[48;2;123;108;14m\033[38;2;129;114;18mβ\033[48;2;133;119;16m\033[38;2;134;117;13mβ\033[48;2;134;122;20m\033[38;2;137;120;16mβ\033[48;2;143;131;16m\033[38;2;148;133;18mβ\033[48;2;158;144;21m\033[38;2;162;148;24mβ\033[48;2;174;161;26m\033[38;2;168;155;24mβ\033[48;2;175;164;33m\033[38;2;176;166;31mβ\033[48;2;153;152;45m\033[38;2;154;154;38mβ\033[48;2;132;137;65m\033[38;2;103;101;31mβ\033[48;2;159;170;88m\033[38;2;145;149;84mβ\033[48;2;159;175;114m\033[38;2;153;164;130mβ\033[48;2;128;139;98m\033[38;2;140;155;129mβ\033[48;2;130;139;106m\033[38;2;135;151;136mβ\033[48;2;137;149;119m\033[38;2;133;148;141mβ\033[0m\n\033[38;2;166;174;149mβ\033[38;2;162;168;134mβ\033[38;2;146;150;113mβ\033[38;2;138;140;113mβ\033[38;2;133;135;109mβ\033[38;2;120;122;94mβ\033[38;2;109;109;81mβ\033[38;2;139;137;95mβ\033[38;2;131;127;60mβ\033[38;2;115;110;22mβ\033[38;2;111;105;21mβ\033[38;2;112;105;20mβ\033[38;2;111;101;20mβ\033[38;2;108;97;20mβ\033[38;2;104;92;19mβ\033[38;2;102;89;20mβ\033[38;2;101;92;22mβ\033[38;2;104;99;31mβ\033[38;2;110;103;33mβ\033[38;2;107;102;38mβ\033[38;2;102;104;45mβ\033[38;2;102;102;47mβ\033[38;2;97;97;41mβ\033[38;2;95;95;39mβ\033[38;2;97;97;41mβ\033[38;2;101;97;42mβ\033[38;2;98;97;42mβ\033[38;2;93;92;41mβ\033[38;2;93;93;40mβ\033[38;2;99;102;45mβ\033[38;2;107;110;51mβ\033[38;2;108;105;34mβ\033[38;2;110;103;22mβ\033[38;2;102;90;18mβ\033[38;2;101;89;22mβ\033[38;2;106;94;21mβ\033[38;2;118;107;26mβ\033[38;2;124;113;31mβ\033[38;2;134;123;29mβ\033[38;2;148;136;34mβ\033[38;2;158;142;36mβ\033[38;2;143;134;35mβ\033[38;2;111;110;43mβ\033[38;2;99;102;50mβ\033[38;2;131;139;72mβ\033[38;2;174;186;115mβ\033[38;2;169;180;118mβ\033[38;2;162;174;133mβ\033[38;2;146;156;120mβ\033[0m\n
which you can easily convert into a shell script by manually adding a printf
command in front of it.
Iβm pretty sure that it works for images other than those of frogs, as well, but I only have pictures of frogs on my drive, so I have not tested it on anything else.