aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2022-10-20 16:29:00 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2022-10-20 16:29:00 -0400
commitbc962303c4757ff94229022b3a9867f437243ed0 (patch)
tree9abc2f614a00bac5fa39971124747831776a256b
downloadsayeth-bc962303c4757ff94229022b3a9867f437243ed0.tar.gz
Initial commit
-rw-r--r--.gitignore4
-rw-r--r--CMakeLists.txt6
-rw-r--r--LICENSE24
-rw-r--r--README.md119
-rw-r--r--fierrhea.h24
-rw-r--r--jenkins.h32
-rw-r--r--main.c226
-rw-r--r--romero.h49
8 files changed, 484 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..64e2423
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.idea
+cmake-*
+*.o
+sayeth
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..f6c6069
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,6 @@
+cmake_minimum_required(VERSION 3.23)
+project(sayeth C)
+
+set(CMAKE_C_STANDARD 99)
+
+add_executable(sayeth main.c fierrhea.h jenkins.h romero.h)
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..fdddb29
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,24 @@
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or
+distribute this software, either in source code form or as a compiled
+binary, for any purpose, commercial or non-commercial, and by any
+means.
+
+In jurisdictions that recognize copyright laws, the author or authors
+of this software dedicate any and all copyright interest in the
+software to the public domain. We make this dedication for the benefit
+of the public at large and to the detriment of our heirs and
+successors. We intend this dedication to be an overt act of
+relinquishment in perpetuity of all present and future rights to this
+software under copyright law.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+For more information, please refer to <https://unlicense.org>
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..5fea1f3
--- /dev/null
+++ b/README.md
@@ -0,0 +1,119 @@
+# Sayeth
+
+A `cowsay`-like program featuring a few of my favorite characters.
+
+```
+usage: sayeth [-d driver_name] [-] {input}
+-h Show this help message
+-d Driver name (fierrhea, jenkins, romero)
+
+- Read from standard input
+input A quoted string
+```
+
+## Characters like...
+
+### Fierrhea Fury
+
+A bit like Fiorina Fury 161 -- only with a face, and on fire.
+
+```
+ ,▌
+ ▄▓
+ ÆJ▓ ,
+ Æ ▀█▄ ██
+ ▐ ▄▓▄▀█▄, █▐█
+ █ █▌██ `▓ █ ▐▓
+ ▐▌ ▐█ ▀▀██▀ ▀█,
+ ╒█▄▄▄▄▄,█ █ ▐█ ╒█ ▀µ ,█
+ █ ▀ ,▀▀` ▐██ █æ▀'▄
+ ▐▄ ═▀▀▄▄╦▓▓▌▀`▀ⁿw ▀
+ ▐` æ'` ▓▓▓', ¬r' V ▐
+ ▄P Æ ` '' ▄ ,▀
+ F Æ 4▀▀▓ ▀▀ ▄ ▄▀
+ █ █ ]█N` ▀█ⁿ ,, ▐ '▌ ▄▄m
+ █ ▐█ ╘▀' ╙▀² /// ▌ ▌ ,▓══
+▄ⁿHÅ█,╙ ╟ ╒A█▓R▄ ```⌐`█w,▄W'
+▀M▀▄ ▀█▄▄'Y ▀▓▓▌ ┌ < Æ √`
+ ╙m'`▀▀ ╙w ` ,∞ ,,
+ ⁿw, ,+²'
+ `
+```
+
+## Jenkins
+
+Because who doesn't love sifting through thousands of lines of tracebacks?
+
+```
+ ┌╓╓┌
+ ▄▄▓▀▀╙└└└▀▀▀▄┌
+ ▄▀▄▓▀ ░░░░░░░░░░▀█┐
+ ▓▀▌▓▌░░┌▄▀╛░░░░░░▀▀█─
+ █╫▓▓▓▀░░╨░░░╥░░░─░░▐ ▌
+ ██▓▓▓▓ ░░░░░▄▄▓░░▀░┌▄▌█
+ ╫▌▐▓▄▀╜░░░░░ └ ░░░▀▄░░█
+ █░─ ░░░░░░░░░╒┌┌▄╫╜▐▌
+ ▀▓█ ░░░░░░ ░╪▄█▄▄▓▀█▒
+ █─░░╨▄ ░░▐▀╪╪╧ ╥█▒
+ ▒▓██▄┌░ ▀▄▄┌┌┌▄▄▓███▓▒
+▓██▓▓▓▓██▀▄▌▒▀████▀▒▒█▓▓█
+█▓▓▓▓▓▓▓▓▓▓▌╫╫▒█▀▀▓▓▓█▓▓▌
+██▓▓▓▓▓▓▓▓▓█▓▓▀▒▓▐▐▒▄█▓█
+╫█▓▓▓▓▓▓▌▓▓▓█▓▄▄▒▓▐▓▓▓█▒▓▓█─
+██▌▓▓▓▓████▀▀▀▀▀▀████▀▌▀▄ █
+ ▀█▓▓▓▓▓█ ░▓▓█ ▌ ╚┌ ▐▌
+ █▓▓▓▓▓█ ░█▓█▄▀▄▄▄▄▓─
+ ╙▀▀███▌ ░▌▀▌
+ █ ░▌░█
+ └▌ ░█▀└
+ ╙▀▀▀▀▀▀└
+```
+
+## Romero
+
+*Hiss*
+You have thirty seconds.
+
+```
+ ▒╫▄╦ ▒╫▓▄▄▓▓▓▄▓▒╦╦▄▓▓▒╩ ╫▓▓▒▒╫
+ ╫▓▓▓▓▒ ╦▓▓▓▓▓▓██▓▓▓▓▓██▓▓░▓▓▓▓▓▓▓▀▓
+ └ ╦▓▓▓▓▓▓▒▄▓█▓██████████████▄▓████▓▓▄▓▄▒▒╨
+ ▒▒╦┌▒▒╦╦▓▓█▓▓▓▓▓▓███████████████▓▓███████▓▓▓▓▓▒╥
+ ╦ ╫▀▓▓▓▓█████▓▓█████████████████▓███████▓▓▓▓▓▓▓▓▓▓▀╙
+ ╫▓▓▓▓██████████████████████████▓███████▓▓▓███████╬
+ ▐▓▓█████████████████████████████████████████████▓▓▀▒▒░
+ ╥▓▓██████████████████████▓███████████████████████▓▓▓╨┘
+ ▓▓▄╥╓╥▓█▓██████████████████████████████████████▓███████▓▓▓▄╦▄╗▄
+ ▓▓▓▓▓█▓▓█▓██████████████████████████████████████████▓▓██████▓▓▓▓▓▓▓▓▓▄▄╦╥
+ ╥▀█████████████▓██████▓█▓▓▓▓▓▓▓▓▓▓▓▓▓████████████████████▓▓█████▓╫▒ ╥▓▓█▓▓▀▀╫
+ ░░▓███████████████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█████████████▓▓▓▓▓████▓▓▓████▓▓▒▒▒▒
+ ╥╫▓██████████████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓██████████▓▓▓██████████▓▓▓▌░
+ ▒▓▓█████████████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓███████████████████▓▓▓▓▒╦░
+ ╘╫▓████████████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓╫▓▓▓▓▓▓▓▓▓▓███████████▓▓▓▓▓▓█▓▓▓╫▒▒▒▒
+ ╦▒▓▓██████████▓▓▓▓▓▓▓▓▓▓╫╫▒╫╫▓╫▓▓▓▓▓▓▓▓▓▓▓▓▓▓╫▓▓▓▓▓▓▓▀▓▓▓██▓██████▓█████▓▓▓▒▒▒
+ ╫▓▓▓███████▓████████▓▓▓▓╫╫╫▒╫▒▒▒▒▒▒▒╫╫▓╫▒╫▒╫▓▓▓▓▓▓▓╫╫▓▓▓▓▓▓▓███▓▓▓████▓▓▓▒
+ ╨▓█▓▓█████████▓▓▓▓██████▓▓▓▓▒▒▒╫▓▓▓▓▓▓▓▓▓╫▒▒╫▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓████▓▓▒
+ ▒▓▓█████████████▓▓█▓████▓▓▓╫╫▓▓▓▓████████▓▓▓╫╫╫▓▓▓▓██████▓█████▓█████▓▓▓▒
+ ╝▓▓█████████▓▓▓█████████▓▓▓▓▓▓▓▓▓▓█▓█▓▓▓███▓▄▒▓▓▓███████████▓███████▓▓▓▒
+ ▀██████▓█████████▓██▓▓▓▓▓▓███▓▓█▓▀▓▓█████▓▓▓╫▓▓████████▓▓▓▓▓██████▓▀▒
+ ╘▓██▓▓▓▓▓█▓████▓▓▓▓▓▓▓▒╫▓▓▓██▓▓▓▓▓███████▓▓▓▓▓▓█████████▓▓██████▓▓▓▓▒
+ ╫▓█▓▓▓▓▓▓▓▓▓▓▓██▓▓▓▓▓▓▓▓▓▓▓▓▓████▓██▓█████▓▓█▓▓██████████████▓▓▓▓▓▓▒
+ ▓█▓▓▓▓▓▓▓▓▓▓█████▓▓▓██▓▓▓▓▓▀▓▓▓██████▓▓▓▓▓▓▓▓▓█████████████████▓▓▓▓╜
+ ▓███▓▓▓▓▓▓▓▓▓▓███████████▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓████████████▓▀▀╨ ╨
+ ▓███▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒╫▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓██████████▓▓▓▓▒
+ ═████▓▓▓▓▓██████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓╫▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓██████████▓▓▓▓
+ ▓███▓▓▓█████▀█▀██████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█▓█▓█▓▓▓▓▓▓▓▓██▓▓▓▓▀╩
+ ▓███▓▓▓███▓▓▓▓╫▓▓▒╫▓▀╫███▓▓▓▓▓▓▓▓███▓████▓█████▓▓▓▓▓▓█▓▒▓▓▓░
+ ▐███▓▓▓▓█████████▓██▄▓▒▓██▓▓▓▓▓▓▓█████▓████▓█▓▓▓▓╫▓▓▓▓▓ ▀▀
+ ███▓▓████████████████████▓▓▓▓▓▓████▓▓▓█████▓▓▓▓▓▓▓▓▀╨╨
+ ███▓▓██████▓███████████▓▓▓▓▓▓▓███▓▓▓▓▓████▓▓▓▓▓▓▓▀╩
+ ▓████▓██████████████████▓▓▓▓▓▓██▓▓▓▓▓██▓▓▓▓▓▓▓▓▒
+ ████▓▓▓▓▓█████▓▓▓▓█▓▓▓▓▓▓▓▓▓██▓▓▓▓▓▓█▓▓██▓▓▓▓▓▓░
+ ▓███████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█▓▓▓▓▓▓█████████▓▓▓▓
+ █████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓██████████▓▓▓▓▓
+ ▓███████████████████████████████▓▓▓▓╩ ╙╨░╨╩▀▓▓▒
+ █████████████████████████████▓▓▓▓▓▓▌ ╨╩
+ ████████▓▓▓▓███████████████▓▓▓▓▓▓▓▓▌
+ ▄▓▓█▓▄▓████████▓▓▓▓▓╫▓▓▓▓▓▓▓▓▓██▓▓▓▓▓▓▓▓▓▓▓╦
+```
+
diff --git a/fierrhea.h b/fierrhea.h
new file mode 100644
index 0000000..c8b30c5
--- /dev/null
+++ b/fierrhea.h
@@ -0,0 +1,24 @@
+#ifndef SAYETH_FIERRHEA_H
+#define SAYETH_FIERRHEA_H
+#define FIERRHEA \
+" ,▌\n" \
+" ▄▓\n" \
+" ÆJ▓ ,\n" \
+" Æ ▀█▄ ██\n" \
+" ▐ ▄▓▄▀█▄, █▐█\n" \
+" █ █▌██ `▓ █ ▐▓\n" \
+" ▐▌ ▐█ ▀▀██▀ ▀█,\n" \
+" ╒█▄▄▄▄▄,█ █ ▐█ ╒█ ▀µ ,█\n" \
+" █ ▀ ,▀▀` ▐██ █æ▀'▄\n" \
+" ▐▄ ═▀▀▄▄╦▓▓▌▀`▀ⁿw ▀\n" \
+" ▐` æ'` ▓▓▓', ¬r' V ▐\n" \
+" ▄P Æ ` '' ▄ ,▀\n" \
+" F Æ 4▀▀▓ ▀▀ ▄ ▄▀\n" \
+" █ █ ]█N` ▀█ⁿ ,, ▐ '▌ ▄▄m\n" \
+" █ ▐█ ╘▀' ╙▀² /// ▌ ▌ ,▓══\n" \
+"▄ⁿHÅ█,╙ ╟ ╒A█▓R▄ ```⌐`█w,▄W'\n" \
+"▀M▀▄ ▀█▄▄'Y ▀▓▓▌ ┌ < Æ √`\n" \
+" ╙m'`▀▀ ╙w ` ,∞ ,,\n" \
+" ⁿw, ,+²'\n" \
+" `"
+#endif //SAYETH_FIERRHEA_H \ No newline at end of file
diff --git a/jenkins.h b/jenkins.h
new file mode 100644
index 0000000..e5bbd60
--- /dev/null
+++ b/jenkins.h
@@ -0,0 +1,32 @@
+//
+// Created by jhunk on 10/19/22.
+//
+
+#ifndef SAYETH_JENKINS_H
+#define SAYETH_JENKINS_H
+
+#define JENKINS \
+" ┌╓╓┌\n" \
+" ▄▄▓▀▀╙└└└▀▀▀▄┌\n" \
+" ▄▀▄▓▀ ░░░░░░░░░░▀█┐\n" \
+" ▓▀▌▓▌░░┌▄▀╛░░░░░░▀▀█─\n" \
+" █╫▓▓▓▀░░╨░░░╥░░░─░░▐ ▌\n" \
+" ██▓▓▓▓ ░░░░░▄▄▓░░▀░┌▄▌█\n" \
+" ╫▌▐▓▄▀╜░░░░░ └ ░░░▀▄░░█\n" \
+" █░─ ░░░░░░░░░╒┌┌▄╫╜▐▌\n" \
+" ▀▓█ ░░░░░░ ░╪▄█▄▄▓▀█▒\n" \
+" █─░░╨▄ ░░▐▀╪╪╧ ╥█▒\n" \
+" ▒▓██▄┌░ ▀▄▄┌┌┌▄▄▓███▓▒\n" \
+"▓██▓▓▓▓██▀▄▌▒▀████▀▒▒█▓▓█\n" \
+"█▓▓▓▓▓▓▓▓▓▓▌╫╫▒█▀▀▓▓▓█▓▓▌\n" \
+"██▓▓▓▓▓▓▓▓▓█▓▓▀▒▓▐▐▒▄█▓█\n" \
+"╫█▓▓▓▓▓▓▌▓▓▓█▓▄▄▒▓▐▓▓▓█▒▓▓█─ \n" \
+"██▌▓▓▓▓████▀▀▀▀▀▀████▀▌▀▄ █ \n" \
+" ▀█▓▓▓▓▓█ ░▓▓█ ▌ ╚┌ ▐▌\n" \
+" █▓▓▓▓▓█ ░█▓█▄▀▄▄▄▄▓─\n" \
+" ╙▀▀███▌ ░▌▀▌\n" \
+" █ ░▌░█\n" \
+" └▌ ░█▀└\n" \
+" ╙▀▀▀▀▀▀└"
+
+#endif //SAYETH_JENKINS_H
diff --git a/main.c b/main.c
new file mode 100644
index 0000000..05c274d
--- /dev/null
+++ b/main.c
@@ -0,0 +1,226 @@
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <unistd.h>
+#include "fierrhea.h"
+#include "romero.h"
+#include "jenkins.h"
+
+#define INPUT_BUFSIZ 4096
+
+size_t START_Y = 0;
+const char *A_TAB = " ";
+
+void repchar(char ch, size_t limit) {
+ while (limit > 0) {
+ putc(ch, stdout);
+ limit--;
+ }
+}
+
+size_t get_longest_line(char *s) {
+ size_t lengths[INPUT_BUFSIZ] = {0};
+ size_t len;
+ size_t line;
+
+ len = 0;
+ line = 0;
+ for (size_t i = 0; i < strlen(s); i++) {
+ if (s[i] == '\n') {
+ lengths[line] = len;
+ line++;
+ len = 0;
+ continue;
+ }
+ len++;
+ }
+
+ size_t longest;
+
+ longest = lengths[0];
+ for (size_t i = 0; i < sizeof(lengths) / sizeof(*lengths); i++) {
+ if (lengths[i] > longest) {
+ longest = lengths[i];
+ }
+ }
+ return longest;
+}
+
+void box_draw_top(size_t y, size_t longest) {
+ repchar(' ', y);
+ repchar('/', 1);
+ repchar('-', longest);
+ repchar('\\', 1);
+}
+
+void box_draw_bottom(size_t y, size_t longest) {
+ repchar(' ', y);
+ repchar('\\', 1);
+ repchar('-', longest);
+ repchar('/', 1);
+}
+
+void box_draw_next_line(size_t y) {
+ repchar(' ', y);
+ repchar('|', 1);
+}
+
+void box_draw_end_line(size_t longest, size_t len) {
+ repchar(' ', longest - len);
+ repchar('|', 1);
+}
+
+int boxprintf(const char *fmt, ...) {
+ int count;
+ va_list list;
+ va_start(list, fmt);
+ size_t len = 0;
+ char data[INPUT_BUFSIZ] = {0};
+ char output[INPUT_BUFSIZ] = {0};
+ vsnprintf(data, sizeof(data) - 1, fmt, list);
+
+ // convert tabs to spaces
+ for (size_t i = 0, n = 0; i < strlen(data) && n < sizeof(output); i++, n++) {
+ if (data[i] == '\t') {
+ strcat(&output[n], A_TAB);
+ n = n + strlen(A_TAB) - 1;
+ continue;
+ }
+ output[n] = data[i];
+ }
+
+ size_t longest = get_longest_line(output);
+
+ box_draw_top(START_Y, longest);
+ puts("");
+
+ for (size_t i = 0; i < strlen(output); i++) {
+ if (i == strlen(output) - 1) {
+ box_draw_end_line(longest, len);
+ continue;
+ }
+
+ if (len == 0) {
+ box_draw_next_line(START_Y);
+ }
+
+ if (output[i] == '\n') {
+ box_draw_end_line(longest, len);
+ putc('\n', stdout);
+ len = 0;
+ continue;
+ }
+
+ putc(output[i], stdout);
+
+ len++;
+ }
+ puts("");
+ box_draw_bottom(START_Y, longest);
+
+ va_end(list);
+ return count;
+}
+
+void driver_fierrhea(char *input) {
+ START_Y = 22;
+ printf("%s", FIERRHEA);
+ printf("\\ /\n");
+ printf(" \\/\n");
+ boxprintf(input);
+ puts("");
+}
+
+void driver_jenkins(char *input) {
+ START_Y = 18;
+ boxprintf(input);
+ puts("");
+ printf(" | /\n");
+ printf(" | /\n");
+ printf(" |/\n");
+ puts(JENKINS);
+}
+
+void driver_romero(char *input) {
+ START_Y = 11;
+ boxprintf(input);
+ puts("");
+ printf(" \\ |\n");
+ printf(" \\ |\n");
+ printf(" \\|\n");
+ puts(ROMERO);
+}
+
+void usage(char *prog) {
+ printf("usage: %s [-d driver_name] [-] {input}\n"
+ "-h Show this help message\n"
+ "-d Driver name (fierrhea, jenkins, romero)\n"
+ "\n"
+ "- Read from standard input\n"
+ "input A quoted string\n", prog);
+}
+
+int main(int argc, char *argv[]) {
+ char driver_name[255] = {0};
+ char input[INPUT_BUFSIZ] = {0};
+ char *iptr = input;
+
+ // set default driver
+ strcpy(driver_name, "fierrhea");
+
+ int option;
+ while ((option = getopt (argc, argv, "hd:")) != -1) {
+ switch (option) {
+ case 'h':
+ usage(argv[0]);
+ exit(0);
+ case 'd':
+ strcpy(driver_name, optarg);
+ break;
+ case ':':
+ fprintf(stderr, "option requires value\n");
+ usage(argv[0]);
+ exit(1);
+ break;
+ case '?':
+ fprintf(stderr, "unknown option: %c\n", optopt);
+ usage(argv[0]);
+ exit(1);
+ break;
+ default:
+ usage(argv[0]);
+ exit(1);
+ }
+ }
+
+ if (optind < argc) {
+ strcpy(input, argv[optind]);
+ } else {
+ fprintf(stderr, "Missing input string or standard input (`-`)\n");
+ usage(argv[0]);
+ exit(1);
+ }
+
+ if (input[0] == '-') {
+ fread(input, 1, sizeof(input) - 1, stdin);
+ }
+
+ if (input[strlen(input) - 1] != '\n') {
+ input[strlen(input)] = '\n';
+ }
+
+ if (!strcmp(driver_name, "fierrhea")) {
+ driver_fierrhea(input);
+ } else if (!strcmp(driver_name, "jenkins")) {
+ driver_jenkins(input);
+ } else if (!strcmp(driver_name, "romero")) {
+ driver_romero(input);
+ } else {
+ fprintf(stderr, "invalid driver: '%s'\n", driver_name);
+ exit(1);
+ }
+
+ puts("");
+ return 0;
+}
diff --git a/romero.h b/romero.h
new file mode 100644
index 0000000..fa1df48
--- /dev/null
+++ b/romero.h
@@ -0,0 +1,49 @@
+//
+// Created by jhunk on 10/19/22.
+//
+
+#ifndef SAYETH_ROMERO_H
+#define SAYETH_ROMERO_H
+
+#define ROMERO \
+" ▒╫▄╦ ▒╫▓▄▄▓▓▓▄▓▒╦╦▄▓▓▒╩ ╫▓▓▒▒╫\n" \
+" ╫▓▓▓▓▒ ╦▓▓▓▓▓▓██▓▓▓▓▓██▓▓░▓▓▓▓▓▓▓▀▓\n" \
+" └ ╦▓▓▓▓▓▓▒▄▓█▓██████████████▄▓████▓▓▄▓▄▒▒╨\n" \
+" ▒▒╦┌▒▒╦╦▓▓█▓▓▓▓▓▓███████████████▓▓███████▓▓▓▓▓▒╥\n" \
+" ╦ ╫▀▓▓▓▓█████▓▓█████████████████▓███████▓▓▓▓▓▓▓▓▓▓▀╙\n" \
+" ╫▓▓▓▓██████████████████████████▓███████▓▓▓███████╬\n" \
+" ▐▓▓█████████████████████████████████████████████▓▓▀▒▒░\n" \
+" ╥▓▓██████████████████████▓███████████████████████▓▓▓╨┘\n" \
+" ▓▓▄╥╓╥▓█▓██████████████████████████████████████▓███████▓▓▓▄╦▄╗▄\n" \
+" ▓▓▓▓▓█▓▓█▓██████████████████████████████████████████▓▓██████▓▓▓▓▓▓▓▓▓▄▄╦╥\n" \
+" ╥▀█████████████▓██████▓█▓▓▓▓▓▓▓▓▓▓▓▓▓████████████████████▓▓█████▓╫▒ ╥▓▓█▓▓▀▀╫\n" \
+" ░░▓███████████████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█████████████▓▓▓▓▓████▓▓▓████▓▓▒▒▒▒\n" \
+" ╥╫▓██████████████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓██████████▓▓▓██████████▓▓▓▌░\n" \
+" ▒▓▓█████████████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓███████████████████▓▓▓▓▒╦░\n" \
+" ╘╫▓████████████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓╫▓▓▓▓▓▓▓▓▓▓███████████▓▓▓▓▓▓█▓▓▓╫▒▒▒▒\n" \
+" ╦▒▓▓██████████▓▓▓▓▓▓▓▓▓▓╫╫▒╫╫▓╫▓▓▓▓▓▓▓▓▓▓▓▓▓▓╫▓▓▓▓▓▓▓▀▓▓▓██▓██████▓█████▓▓▓▒▒▒\n" \
+" ╫▓▓▓███████▓████████▓▓▓▓╫╫╫▒╫▒▒▒▒▒▒▒╫╫▓╫▒╫▒╫▓▓▓▓▓▓▓╫╫▓▓▓▓▓▓▓███▓▓▓████▓▓▓▒ \n" \
+" ╨▓█▓▓█████████▓▓▓▓██████▓▓▓▓▒▒▒╫▓▓▓▓▓▓▓▓▓╫▒▒╫▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓████▓▓▒\n" \
+" ▒▓▓█████████████▓▓█▓████▓▓▓╫╫▓▓▓▓████████▓▓▓╫╫╫▓▓▓▓██████▓█████▓█████▓▓▓▒\n" \
+" ╝▓▓█████████▓▓▓█████████▓▓▓▓▓▓▓▓▓▓█▓█▓▓▓███▓▄▒▓▓▓███████████▓███████▓▓▓▒\n" \
+" ▀██████▓█████████▓██▓▓▓▓▓▓███▓▓█▓▀▓▓█████▓▓▓╫▓▓████████▓▓▓▓▓██████▓▀▒\n" \
+" ╘▓██▓▓▓▓▓█▓████▓▓▓▓▓▓▓▒╫▓▓▓██▓▓▓▓▓███████▓▓▓▓▓▓█████████▓▓██████▓▓▓▓▒\n" \
+" ╫▓█▓▓▓▓▓▓▓▓▓▓▓██▓▓▓▓▓▓▓▓▓▓▓▓▓████▓██▓█████▓▓█▓▓██████████████▓▓▓▓▓▓▒\n" \
+" ▓█▓▓▓▓▓▓▓▓▓▓█████▓▓▓██▓▓▓▓▓▀▓▓▓██████▓▓▓▓▓▓▓▓▓█████████████████▓▓▓▓╜\n" \
+" ▓███▓▓▓▓▓▓▓▓▓▓███████████▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓████████████▓▀▀╨ ╨\n" \
+" ▓███▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒╫▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓██████████▓▓▓▓▒\n" \
+" ═████▓▓▓▓▓██████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓╫▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓██████████▓▓▓▓\n" \
+" ▓███▓▓▓█████▀█▀██████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█▓█▓█▓▓▓▓▓▓▓▓██▓▓▓▓▀╩\n" \
+" ▓███▓▓▓███▓▓▓▓╫▓▓▒╫▓▀╫███▓▓▓▓▓▓▓▓███▓████▓█████▓▓▓▓▓▓█▓▒▓▓▓░\n" \
+" ▐███▓▓▓▓█████████▓██▄▓▒▓██▓▓▓▓▓▓▓█████▓████▓█▓▓▓▓╫▓▓▓▓▓ ▀▀\n" \
+" ███▓▓████████████████████▓▓▓▓▓▓████▓▓▓█████▓▓▓▓▓▓▓▓▀╨╨\n" \
+" ███▓▓██████▓███████████▓▓▓▓▓▓▓███▓▓▓▓▓████▓▓▓▓▓▓▓▀╩\n" \
+" ▓████▓██████████████████▓▓▓▓▓▓██▓▓▓▓▓██▓▓▓▓▓▓▓▓▒\n" \
+" ████▓▓▓▓▓█████▓▓▓▓█▓▓▓▓▓▓▓▓▓██▓▓▓▓▓▓█▓▓██▓▓▓▓▓▓░\n" \
+" ▓███████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█▓▓▓▓▓▓█████████▓▓▓▓\n" \
+" █████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓██████████▓▓▓▓▓\n" \
+" ▓███████████████████████████████▓▓▓▓╩ ╙╨░╨╩▀▓▓▒\n" \
+" █████████████████████████████▓▓▓▓▓▓▌ ╨╩\n" \
+" ████████▓▓▓▓███████████████▓▓▓▓▓▓▓▓▌\n" \
+" ▄▓▓█▓▄▓████████▓▓▓▓▓╫▓▓▓▓▓▓▓▓▓██▓▓▓▓▓▓▓▓▓▓▓╦"
+#endif //SAYETH_ROMERO_H