First commit
This commit is contained in:
commit
52f703ac70
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
iwd
|
197
configuration.nix
Normal file
197
configuration.nix
Normal file
|
@ -0,0 +1,197 @@
|
||||||
|
# Edit this configuration file to define what should be installed on
|
||||||
|
# your system. Help is available in the configuration.nix(5) man page
|
||||||
|
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [
|
||||||
|
# Include the results of the hardware scan.
|
||||||
|
./hardware-configuration.nix
|
||||||
|
#user home configuration
|
||||||
|
./users
|
||||||
|
];
|
||||||
|
|
||||||
|
# Use the systemd-boot EFI boot loader.
|
||||||
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
|
networking.hostName = "patricknix"; # Define your hostname.
|
||||||
|
networking.hostId = "68438432";
|
||||||
|
# Pick only one of the below networking options.
|
||||||
|
networking.wireless.iwd.enable = true;
|
||||||
|
# I would advise against pushing your secrets
|
||||||
|
#system.activationScripts.getIWD.text = ''
|
||||||
|
# cp -r /etc/nixos/iwd /var/lib/
|
||||||
|
#'';
|
||||||
|
|
||||||
|
networking.useNetworkd = true;
|
||||||
|
networking.dhcpcd.enable = false;
|
||||||
|
systemd.network.wait-online.anyInterface = true;
|
||||||
|
services.resolved = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Set your time zone.
|
||||||
|
time.timeZone = "Europe/Berlin";
|
||||||
|
|
||||||
|
# Configure network proxy if necessary
|
||||||
|
# networking.proxy.default = "http://user:password@proxy:port/";
|
||||||
|
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
||||||
|
|
||||||
|
# Select internationalisation properties.
|
||||||
|
i18n.defaultLocale = "C.UTF-8";
|
||||||
|
console = {
|
||||||
|
font = "ter-v28n";
|
||||||
|
packages = with pkgs; [terminus_font];
|
||||||
|
useXkbConfig = true; # use xkbOptions in tty.
|
||||||
|
};
|
||||||
|
|
||||||
|
# Configure keymap in X11
|
||||||
|
services.xserver = {
|
||||||
|
enable = true;
|
||||||
|
displayManager.startx.enable = true;
|
||||||
|
layout = "de";
|
||||||
|
xkbVariant = "bone";
|
||||||
|
videoDrivers = ["modesetting" "nvidia"];
|
||||||
|
};
|
||||||
|
|
||||||
|
#TODO sollte nur bestimmte packages sein nicht alle
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
# services.xserver.xkbOptions = {
|
||||||
|
# "eurosign:e";
|
||||||
|
# "caps:escape" # map caps to escape.
|
||||||
|
# };
|
||||||
|
|
||||||
|
# Enable CUPS to print documents.
|
||||||
|
# services.printing.enable = true;
|
||||||
|
|
||||||
|
# Enable sound.
|
||||||
|
# sound.enable = true;
|
||||||
|
# hardware.pulseaudio.enable = true;
|
||||||
|
|
||||||
|
# Enable touchpad support (enabled default in most desktopManager).
|
||||||
|
services.xserver.libinput.enable = true;
|
||||||
|
|
||||||
|
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||||||
|
users.users.patrick = {
|
||||||
|
isNormalUser = true;
|
||||||
|
uid = 1000;
|
||||||
|
createHome = true;
|
||||||
|
extraGroups = ["wheel" "audio" "video" "input"]; # Enable ‘sudo’ for the user.
|
||||||
|
group = "patrick";
|
||||||
|
shell = pkgs.zsh;
|
||||||
|
};
|
||||||
|
users.groups.patrick.gid = 1000;
|
||||||
|
|
||||||
|
users.users.root = {
|
||||||
|
initialPassword = "ctie";
|
||||||
|
openssh.authorizedKeys.keys = [
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDZixkix0KfKuq7Q19whS5FQQg51/AJGB5BiNF/7h/LM"
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJSXqbGLOeTVFRgeafkCJ1IRMyxl3/VcpLRdAJ7Br3CW"
|
||||||
|
];
|
||||||
|
shell = pkgs.zsh;
|
||||||
|
};
|
||||||
|
|
||||||
|
security.sudo.enable = false;
|
||||||
|
|
||||||
|
# List packages installed in system profile. To search, run:
|
||||||
|
# $ nix search wget
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
||||||
|
xterm
|
||||||
|
wget
|
||||||
|
htop
|
||||||
|
gcc
|
||||||
|
];
|
||||||
|
|
||||||
|
# Some programs need SUID wrappers, can be configured further or are
|
||||||
|
# started in user sessions.
|
||||||
|
# programs.mtr.enable = true;
|
||||||
|
# programs.gnupg.agent = {
|
||||||
|
# enable = true;
|
||||||
|
# enableSSHSupport = true;
|
||||||
|
# };
|
||||||
|
|
||||||
|
# List services that you want to enable:
|
||||||
|
|
||||||
|
# Enable the OpenSSH daemon.
|
||||||
|
services.openssh = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
PasswordAuthentication = false;
|
||||||
|
KbdInteractiveAuthentication = false;
|
||||||
|
PermitRootLogin = "yes";
|
||||||
|
};
|
||||||
|
hostKeys = [
|
||||||
|
{
|
||||||
|
path = "/etc/ssh/ssh_host_ed25519_key";
|
||||||
|
type = "ed25519";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
services.thermald.enable = true;
|
||||||
|
services.pcscd.enable = true;
|
||||||
|
services.fstrim.enable = true;
|
||||||
|
hardware.cpu.intel.updateMicrocode = true;
|
||||||
|
# Open ports in the firewall.
|
||||||
|
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||||
|
# networking.firewall.allowedUDPPorts = [ ... ];
|
||||||
|
# Or disable the firewall altogether.
|
||||||
|
networking.firewall.enable = false;
|
||||||
|
|
||||||
|
services.udev.packages = with pkgs; [yubikey-personalization libu2f-host];
|
||||||
|
programs.gnupg.agent = {
|
||||||
|
enable = true;
|
||||||
|
enableSSHSupport = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.shellInit = ''
|
||||||
|
gpg-connect-agent /bye
|
||||||
|
export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
|
||||||
|
'';
|
||||||
|
|
||||||
|
# Copy the NixOS configuration file and link it from the resulting system
|
||||||
|
# (/run/current-system/configuration.nix). This is useful in case you
|
||||||
|
# accidentally delete configuration.nix.
|
||||||
|
system.copySystemConfiguration = true;
|
||||||
|
|
||||||
|
# This value determines the NixOS release from which the default
|
||||||
|
# settings for stateful data, like file locations and database versions
|
||||||
|
# on your system were taken. It‘s perfectly fine and recommended to leave
|
||||||
|
# this value at the release version of the first install of this system.
|
||||||
|
# Before changing this value read the documentation for this option
|
||||||
|
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||||||
|
system.stateVersion = "23.05"; # Did you read the comment?
|
||||||
|
|
||||||
|
nix = {
|
||||||
|
settings = {
|
||||||
|
auto-optimise-store = true;
|
||||||
|
allowed-users = ["@wheel"];
|
||||||
|
trusted-users = ["root" "@wheel"];
|
||||||
|
system-features = ["recursive-nix"];
|
||||||
|
substituters = [
|
||||||
|
"https://nix-config.cachix.org"
|
||||||
|
"https://nix-community.cachix.org"
|
||||||
|
];
|
||||||
|
trusted-public-keys = [
|
||||||
|
"nix-config.cachix.org-1:Vd6raEuldeIZpttVQfrUbLvXJHzzzkS0pezXCVVjDG4="
|
||||||
|
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||||
|
];
|
||||||
|
cores = 0;
|
||||||
|
max-jobs = "auto";
|
||||||
|
};
|
||||||
|
daemonCPUSchedPolicy = "batch";
|
||||||
|
daemonIOSchedPriority = 5;
|
||||||
|
distributedBuilds = true;
|
||||||
|
extraOptions = ''
|
||||||
|
builders-use-substitutes = true
|
||||||
|
experimental-features = nix-command flakes recursive-nix
|
||||||
|
flake-registry = /etc/nix/registry.json
|
||||||
|
'';
|
||||||
|
optimise.automatic = true;
|
||||||
|
gc.automatic = true;
|
||||||
|
};
|
||||||
|
}
|
90
data/herbstluftwm/keybinds.nix
Normal file
90
data/herbstluftwm/keybinds.nix
Normal file
|
@ -0,0 +1,90 @@
|
||||||
|
MOD: TAGS:
|
||||||
|
{
|
||||||
|
# ${MOD} will be set to the main modifier key
|
||||||
|
|
||||||
|
# General
|
||||||
|
"${MOD}-q" = " close";
|
||||||
|
#"${MOD}-Shift-Escape" = " spawn ${HOME}/.config/rofi/powermenu/powermenu.sh";
|
||||||
|
|
||||||
|
# Moving
|
||||||
|
"${MOD}-Shift-Left" = " shift left";
|
||||||
|
"${MOD}-Shift-Down" = " shift down";
|
||||||
|
"${MOD}-Shift-Up" = " shift up";
|
||||||
|
"${MOD}-Shift-Right" = " shift right";
|
||||||
|
|
||||||
|
"${MOD}-Shift-n" = " shift left";
|
||||||
|
"${MOD}-Shift-r" = " shift down";
|
||||||
|
"${MOD}-Shift-l" = " shift up";
|
||||||
|
"${MOD}-Shift-s" = " shift right";
|
||||||
|
|
||||||
|
# Resizing
|
||||||
|
"${MOD}-Control-Left" = " resize left +$RESIZE_STEP";
|
||||||
|
"${MOD}-Control-Down" = " resize down +$RESIZE_STEP";
|
||||||
|
"${MOD}-Control-Up" = " resize up +$RESIZE_STEP";
|
||||||
|
"${MOD}-Control-Right" = " resize right +$RESIZE_STEP";
|
||||||
|
|
||||||
|
"${MOD}-Control-n" = " resize left +$RESIZE_STEP";
|
||||||
|
"${MOD}-Control-r" = " resize down +$RESIZE_STEP";
|
||||||
|
"${MOD}-Control-l" = " resize up +$RESIZE_STEP";
|
||||||
|
"${MOD}-Control-s" = " resize right +$RESIZE_STEP";
|
||||||
|
|
||||||
|
"${MOD}-Shift-Control-Left" = " resize right -$RESIZE_STEP";
|
||||||
|
"${MOD}-Shift-Control-Down" = " resize up -$RESIZE_STEP";
|
||||||
|
"${MOD}-Shift-Control-Up" = " resize down -$RESIZE_STEP";
|
||||||
|
"${MOD}-Shift-Control-Right" = " resize left -$RESIZE_STEP";
|
||||||
|
|
||||||
|
"${MOD}-Shift-Control-s" = " resize right -$RESIZE_STEP";
|
||||||
|
"${MOD}-Shift-Control-l" = " resize up -$RESIZE_STEP";
|
||||||
|
"${MOD}-Shift-Control-r" = " resize down -$RESIZE_STEP";
|
||||||
|
"${MOD}-Shift-Control-n" = " resize left -$RESIZE_STEP";
|
||||||
|
|
||||||
|
# Focusing
|
||||||
|
"${MOD}-Left" = " focus left";
|
||||||
|
"${MOD}-Down" = " focus down";
|
||||||
|
"${MOD}-Up" = " focus up";
|
||||||
|
"${MOD}-Right" = " focus right";
|
||||||
|
# Focusing
|
||||||
|
"${MOD}-n" = " focus left";
|
||||||
|
"${MOD}-r" = " focus down";
|
||||||
|
"${MOD}-l" = " focus up";
|
||||||
|
"${MOD}-s" = " focus right";
|
||||||
|
|
||||||
|
"${MOD}-BackSpace" = " cycle_monitor";
|
||||||
|
"${MOD}-c" = " cycle";
|
||||||
|
"${MOD}-i" = " jumpto urgent";
|
||||||
|
"${MOD}-Tab" = " cycle_all +1";
|
||||||
|
"${MOD}-Shift-Tab" = " cycle_all -1";
|
||||||
|
|
||||||
|
# Tag cycle
|
||||||
|
"${MOD}-period" = " use_index +1 ";
|
||||||
|
"${MOD}-comma" = " use_index -1 ";
|
||||||
|
|
||||||
|
# Splitting frames
|
||||||
|
"${MOD}-x" = " split bottom";
|
||||||
|
"${MOD}-v" = " split right";
|
||||||
|
"${MOD}-Control-space" = " split explode";
|
||||||
|
|
||||||
|
# Layouting
|
||||||
|
"${MOD}-Return" = " fullscreen toggle";
|
||||||
|
"${MOD}-shift-x" = " remove";
|
||||||
|
"${MOD}-f" = " floating toggle";
|
||||||
|
"${MOD}-p" = " pseudotile toggle";
|
||||||
|
"${MOD}-space" = " cycle_layout +1";
|
||||||
|
"${MOD}-Shift-space" = " cycle_layout -1";
|
||||||
|
|
||||||
|
"${MOD}-t " = "spawn kitty";
|
||||||
|
"${MOD}-b " = "spawn firefox";
|
||||||
|
"${MOD}-m " = "spawn thunderbird";
|
||||||
|
"${MOD}-Shift-l " = "spawn systemctl suspend";
|
||||||
|
"${MOD}-Shift-f " = "spawn /home/patrick/scripts/fix_shit.sh";
|
||||||
|
}
|
||||||
|
// builtins.listToAttrs (map (x: {
|
||||||
|
name = "${MOD}-${x}";
|
||||||
|
value = "use_index ${x}";
|
||||||
|
})
|
||||||
|
TAGS)
|
||||||
|
// builtins.listToAttrs (map (x: {
|
||||||
|
name = "${MOD}-Shift-${x}";
|
||||||
|
value = "move_index ${x}";
|
||||||
|
})
|
||||||
|
TAGS)
|
23
data/herbstluftwm/xinitrc
Executable file
23
data/herbstluftwm/xinitrc
Executable file
|
@ -0,0 +1,23 @@
|
||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# ~/.xinitrc
|
||||||
|
#
|
||||||
|
# Executed by startx (run your window manager from here)
|
||||||
|
|
||||||
|
xrdb load "${HOME}/.Xresources"
|
||||||
|
xset r rate 235 60
|
||||||
|
xset m 1 0
|
||||||
|
# numlockx on
|
||||||
|
syndaemon -d -i 1.2 -t -K
|
||||||
|
xsetroot -solid '#000000'
|
||||||
|
#setxkbmap de bone
|
||||||
|
#autorandr -c
|
||||||
|
#xgamma -gamma 1
|
||||||
|
#echo disabled > /sys/bus/usb/devices/1-1/power/wakeup
|
||||||
|
#
|
||||||
|
#touchegg &
|
||||||
|
#
|
||||||
|
#gpg-connect-agent "\bye" &
|
||||||
|
#dunst &
|
||||||
|
exec dbus-launch --sh-syntax --exit-with-session -- herbstluftwm --locked
|
||||||
|
# exec icewm-session
|
27
data/newpubkey.gpg
Normal file
27
data/newpubkey.gpg
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
|
mDMEY8fw7xYJKwYBBAHaRw8BAQdA9SnRTn6kCb127eI39inOEc8hcYszo8wRXyyR
|
||||||
|
ravT5My0KVBhdHJpY2sgR3Jvc3NtYW5uIDxwYXRyaWNrZGdyb0BnbWFpbC5jb20+
|
||||||
|
iJEEExYKADkCGwEECwkIBwQVCgkIBRYCAwEAAh4FAheAFiEE3g3oaTKsDpGOpSP/
|
||||||
|
vYrbqlwC1QwFAmPH9HUCGQEACgkQvYrbqlwC1QwN/QD+LnPY7A7y7fgaI80S51Bw
|
||||||
|
GcwNTlW5LaPmi3ou3tEehQAA/i8go9rYG8WxLpQlQErn4Q6BbB4494kUhp9piI6k
|
||||||
|
K0gLtCxQYXRyaWNrIEdyb3NzbWFubiA8cGF0cmljay5ncm9zc21hbm5AdHVtLmRl
|
||||||
|
PoiOBBMWCgA2FiEE3g3oaTKsDpGOpSP/vYrbqlwC1QwFAmPH9BICGwEECwkIBwQV
|
||||||
|
CgkIBRYCAwEAAh4FAheAAAoJEL2K26pcAtUM534BAN32iy4ssjGm5DuwSCIc/UDz
|
||||||
|
3gks29aKWi/eqlhqspbeAP4yhJcIyl9HY4eAsOargkrPxLcA2z7A6k23tTn9byAB
|
||||||
|
DLgzBGPH80MWCSsGAQQB2kcPAQEHQJNT1azcNatyc0LmeTpMo/Oi2LddMaNoWGv/
|
||||||
|
oqvutWgNiO8EGBYKACAWIQTeDehpMqwOkY6lI/+9ituqXALVDAUCY8fzQwIbAgCB
|
||||||
|
CRC9ituqXALVDHYgBBkWCgAdFiEE0A2EcgdFZgLCQgnEU+drLzc8zRMFAmPH80MA
|
||||||
|
CgkQU+drLzc8zRPKfAEAkp5bVwq7Kv6SaXHj4oL8YaFTbtLD5SiWgw6vLnSbB40B
|
||||||
|
AKHG2DWbIFdQsNjSizk+IP1cQC4auKlIK6aKPLf82ZACctABAIRQoBKYQG7+GIr7
|
||||||
|
W2O4n/deZMOgqwoygPyGGgS6fUAbAP4rxNaVgTdyLfdVo3WXE67+4GbwPuEJ6N/r
|
||||||
|
vxVXAX4VCrg4BGPH86USCisGAQQBl1UBBQEBB0CFKCVr4/vXBMnSdgiaQceXwjuu
|
||||||
|
/nzgue6a9QjIcI2ZcwMBCAeIeAQYFgoAIBYhBN4N6GkyrA6RjqUj/72K26pcAtUM
|
||||||
|
BQJjx/OlAhsMAAoJEL2K26pcAtUMmYMBAKSUJe4fj3pC8YbQXW2hE/2bIn7+XjOn
|
||||||
|
2ufbPHQP9ePwAQDBsyY8n5KfXMm8w4Icr/yQoTVjC+M/YiroUQHLGaV+C7gzBGPH
|
||||||
|
874WCSsGAQQB2kcPAQEHQHxD4GOrwrBTG4/qQhm5hoSB2CP7W9g1LPWP11oLGOjQ
|
||||||
|
iHgEGBYKACAWIQTeDehpMqwOkY6lI/+9ituqXALVDAUCY8fzvgIbIAAKCRC9ituq
|
||||||
|
XALVDN/qAPwPSJLiQ9FclH991/SooSiyA8Pt4OC8Qgg4aNjAzeC1VgD+OjRvb8i6
|
||||||
|
0C+noricZRLXpo/XOSU8oJeFanpvDjwj8gg=
|
||||||
|
=kdCQ
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
15
data/nvim/init.lua
Normal file
15
data/nvim/init.lua
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
-- required programs
|
||||||
|
-- ripgrep
|
||||||
|
-- git
|
||||||
|
|
||||||
|
|
||||||
|
-- general settings
|
||||||
|
|
||||||
|
require "core"
|
||||||
|
|
||||||
|
|
||||||
|
--Plugins
|
||||||
|
require "plugins"
|
||||||
|
|
||||||
|
|
||||||
|
-- Lua config lets go
|
81
data/nvim/lua/core/config.lua
Normal file
81
data/nvim/lua/core/config.lua
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
local opt = vim.opt
|
||||||
|
|
||||||
|
-- Set maximum undo levels
|
||||||
|
opt.undolevels = 1000000
|
||||||
|
-- Persistent Undo
|
||||||
|
opt.undofile = true
|
||||||
|
opt.undodir = vim.fn.stdpath("cache") .. "/undo"
|
||||||
|
|
||||||
|
-- swap file save interval
|
||||||
|
opt.updatetime = 300
|
||||||
|
|
||||||
|
-- Ignore *.o and *~ files in wildmenu
|
||||||
|
opt.wildignore = "*.o,*~"
|
||||||
|
-- Only complete the longest common prefix and list all results.
|
||||||
|
-- You can use the cursor keys to select an item in this list
|
||||||
|
opt.wildmode = {"list", "full"}
|
||||||
|
|
||||||
|
-- set case handling
|
||||||
|
opt.ignorecase = true
|
||||||
|
opt.smartcase = true
|
||||||
|
|
||||||
|
-- ╓──────────────────╖
|
||||||
|
-- ║ Editor visuals ║
|
||||||
|
-- ╙──────────────────╜
|
||||||
|
|
||||||
|
-- Enable true color in terminals
|
||||||
|
opt.termguicolors = true
|
||||||
|
-- set font
|
||||||
|
opt.guifont = "FiraCode Nerd Font Mono:h10.5"
|
||||||
|
-- full mouse support
|
||||||
|
opt.mouse = "a"
|
||||||
|
|
||||||
|
-- Do not wrap text longer than the window's width
|
||||||
|
opt.wrap = false
|
||||||
|
|
||||||
|
-- Show line numbers
|
||||||
|
opt.number = true
|
||||||
|
opt.relativenumber = false
|
||||||
|
|
||||||
|
-- Keep 2 lines around the cursor.
|
||||||
|
opt.scrolloff = 2
|
||||||
|
opt.sidescrolloff = 2
|
||||||
|
|
||||||
|
-- Set indentation of tabs to be equal to 4 spaces.
|
||||||
|
opt.tabstop = 4
|
||||||
|
opt.shiftwidth = 4
|
||||||
|
opt.softtabstop = 4
|
||||||
|
--round indentation to shifwidth
|
||||||
|
opt.shiftround = true
|
||||||
|
|
||||||
|
|
||||||
|
-- ╓────────────────────╖
|
||||||
|
-- ║ Editing behavior ║
|
||||||
|
-- ╙────────────────────╜
|
||||||
|
|
||||||
|
-- r = insert comment leader when hitting <Enter> in insert mode
|
||||||
|
-- q = allow explicit formatting with gq
|
||||||
|
-- j = remove comment leaders when joining lines if it makes sense
|
||||||
|
opt.formatoptions = "rqj"
|
||||||
|
|
||||||
|
-- Allow the curser to be positioned on cells that have no actual character;
|
||||||
|
-- Like moving beyond EOL or on any visual 'space' of a tab character
|
||||||
|
opt.virtualedit = "all"
|
||||||
|
|
||||||
|
-- Do not include line ends in past the-line selections
|
||||||
|
opt.selection = "old"
|
||||||
|
|
||||||
|
-- Use smart auto indenting for all file types
|
||||||
|
opt.smartindent = true
|
||||||
|
|
||||||
|
-- Only wait 20 milliseconds for characters to arrive (see :help timeout)
|
||||||
|
opt.timeoutlen = 20
|
||||||
|
opt.ttimeoutlen = 20
|
||||||
|
|
||||||
|
-- Disable timeout, set ttimeout (only timeout on keycodes)
|
||||||
|
opt.timeout = false
|
||||||
|
opt.ttimeout = true
|
||||||
|
|
||||||
|
-- replace grep with ripgrep
|
||||||
|
opt.grepprg = "rg --vimgrep --smartcase --follow"
|
||||||
|
|
18
data/nvim/lua/core/init.lua
Normal file
18
data/nvim/lua/core/init.lua
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
|
||||||
|
--required programs
|
||||||
|
--ripgrep
|
||||||
|
--fd
|
||||||
|
--?pynvim
|
||||||
|
--git
|
||||||
|
--nvim
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--basic global settings
|
||||||
|
require "core.config"
|
||||||
|
require "core.keybinds"
|
||||||
|
require "core.lsp"
|
||||||
|
|
||||||
|
--set venv
|
||||||
|
vim.g.python3_host_prog=vim.fn.stdpath("data").."/venv/bin/python3"
|
42
data/nvim/lua/core/keybinds.lua
Normal file
42
data/nvim/lua/core/keybinds.lua
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
-- global keybinds
|
||||||
|
vim.g.mapleader = " "
|
||||||
|
|
||||||
|
local map = vim.api.nvim_set_keymap
|
||||||
|
local opts = {noremap = true, silent = true}
|
||||||
|
|
||||||
|
|
||||||
|
-- change window with alt
|
||||||
|
map("", "<M-down>" , "<down>" , { noremap = true, silent = true })
|
||||||
|
map("", "<M-up>" , "<up>" , { noremap = true, silent = true })
|
||||||
|
map("", "<M-left>" , "<left>" , { noremap = true, silent = true })
|
||||||
|
map("", "<M-right>", "<right>", { noremap = true, silent = true })
|
||||||
|
|
||||||
|
-- scroll with cursor loch
|
||||||
|
map("" , "<S-down>" , "" , { noremap = true, silent = true })
|
||||||
|
map("" , "<S-up>" , "" , { noremap = true, silent = true })
|
||||||
|
map("i", "<S-down>" , "a", { noremap = true, silent = true })
|
||||||
|
map("i", "<S-up>" , "a", { noremap = true, silent = true })
|
||||||
|
|
||||||
|
|
||||||
|
-- Plugin: LSP
|
||||||
|
map("n", "gD", "<cmd>lua vim.lsp.buf.declaration()<CR>", opts)
|
||||||
|
map("n", "gd", "<cmd>lua vim.lsp.buf.definition()<CR>", opts)
|
||||||
|
map("n", "K", "<cmd>lua vim.lsp.buf.hover()<CR>", opts)
|
||||||
|
map("n", "gI", "<cmd>lua vim.lsp.buf.implementation()<CR>", opts)
|
||||||
|
map("n", "gk", "<cmd>lua vim.lsp.buf.signature_help()<CR>", opts)
|
||||||
|
map("n", "<leader>wa", "<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>", opts)
|
||||||
|
map("n", "<leader>wr", "<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>", opts)
|
||||||
|
map("n", "<leader>wl", "<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>", opts)
|
||||||
|
map("n", "gt", "<cmd>lua vim.lsp.buf.type_definition()<CR>", opts)
|
||||||
|
map("n", "<leader>r", "<cmd>lua vim.lsp.buf.rename()<CR>", opts)
|
||||||
|
map("n", "<leader>A", "<cmd>lua vim.lsp.buf.code_action()<CR>", opts)
|
||||||
|
map("n", "gr", "<cmd>lua vim.lsp.buf.references()<CR>", opts)
|
||||||
|
map("n", "gl", "<cmd>lua vim.diagnostic.open_float()<CR>", opts)
|
||||||
|
map("n", "gp", "<cmd>lua vim.diagnostic.goto_prev()<CR>", opts)
|
||||||
|
map("n", "gn", "<cmd>lua vim.diagnostic.goto_next()<CR>", opts)
|
||||||
|
map("n", "<leader>q", "<cmd>lua vim.diagnostic.setloclist()<CR>", opts)
|
||||||
|
map("n", "<leader>f", "<cmd>lua vim.lsp.buf.formatting()<CR>", opts)
|
||||||
|
|
||||||
|
-- Plugin: EasyAlign
|
||||||
|
map("n", "<leader>a", "<Plug>(EasyAlign)", {silent = true})
|
||||||
|
map("v", "<leader>a", "<Plug>(EasyAlign)", {silent = true})
|
8
data/nvim/lua/core/lsp.lua
Normal file
8
data/nvim/lua/core/lsp.lua
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
local lsp_symbol = function(name, icon)
|
||||||
|
vim.fn.sign_define("DiagnosticSign" .. name, { text = icon, texthl = "Diagnostic" .. name })
|
||||||
|
end
|
||||||
|
|
||||||
|
lsp_symbol("Error", "E")
|
||||||
|
lsp_symbol("Warn", "W")
|
||||||
|
lsp_symbol("Info" ,"I")
|
||||||
|
lsp_symbol("Hint", "H")
|
23
data/nvim/lua/plugins/config/alpha.lua
Normal file
23
data/nvim/lua/plugins/config/alpha.lua
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
local A = require('plugins.utils.alpha')
|
||||||
|
local images = require("plugins.data.alpha")
|
||||||
|
math.randomseed(os.time())
|
||||||
|
local header = images[math.random(#images)]
|
||||||
|
|
||||||
|
local separator = '╼═╾────────────────────────────────────────────╼═╾'
|
||||||
|
|
||||||
|
require('alpha').setup {
|
||||||
|
layout = {
|
||||||
|
A.pad(2), A.text(header, 'Type'),
|
||||||
|
A.pad(2), A.text(separator, 'Number'),
|
||||||
|
A.pad(1), A.buttons {
|
||||||
|
A.button("e", " New file", ":enew<CR>"),
|
||||||
|
},
|
||||||
|
A.pad(2), A.buttons {
|
||||||
|
A.button("u", " Update plugins", ":PackerSync<CR>"),
|
||||||
|
A.button("c", " Check health", ":checkhealth<CR>"),
|
||||||
|
A.button("q", " Quit", ":qa<CR>"),
|
||||||
|
},
|
||||||
|
A.text(separator, 'Number'),
|
||||||
|
},
|
||||||
|
opts = { margin = 5 },
|
||||||
|
}
|
15
data/nvim/lua/plugins/config/better-whitespace.lua
Normal file
15
data/nvim/lua/plugins/config/better-whitespace.lua
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
local map = vim.api.nvim_set_keymap
|
||||||
|
local opts = {noremap = true, silent = true}
|
||||||
|
|
||||||
|
function _G.whitespace_visibility()
|
||||||
|
if vim.api.nvim_eval("&buftype") == "nofile" then
|
||||||
|
vim.cmd('execute "DisableWhitespace"')
|
||||||
|
else
|
||||||
|
vim.cmd('execute "EnableWhitespace"')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.cmd("autocmd BufEnter * lua whitespace_visibility()")
|
||||||
|
|
||||||
|
-- Strip whitespace
|
||||||
|
map('n', '<leader>$', ':StripWhitespace<CR>', opts)
|
1
data/nvim/lua/plugins/config/comment.lua
Normal file
1
data/nvim/lua/plugins/config/comment.lua
Normal file
|
@ -0,0 +1 @@
|
||||||
|
require("Comment").setup()
|
4
data/nvim/lua/plugins/config/indent-blankline.lua
Normal file
4
data/nvim/lua/plugins/config/indent-blankline.lua
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
require("indent_blankline").setup {
|
||||||
|
buftype_exclude = { "help", "terminal", "packer", "nofile" },
|
||||||
|
filetype_exclude = { "terminal", "lsp-info" },
|
||||||
|
}
|
1
data/nvim/lua/plugins/config/lightbulb.lua
Normal file
1
data/nvim/lua/plugins/config/lightbulb.lua
Normal file
|
@ -0,0 +1 @@
|
||||||
|
vim.cmd [[autocmd CursorHold,CursorHoldI * lua require("nvim-lightbulb").update_lightbulb()]]
|
6
data/nvim/lua/plugins/config/lualine.lua
Normal file
6
data/nvim/lua/plugins/config/lualine.lua
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
require "lualine".setup {
|
||||||
|
options = {
|
||||||
|
theme = "auto"
|
||||||
|
},
|
||||||
|
extensions = {"nvim-tree", "quickfix"},
|
||||||
|
}
|
4
data/nvim/lua/plugins/config/mundo.lua
Normal file
4
data/nvim/lua/plugins/config/mundo.lua
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
local map = vim.api.nvim_set_keymap
|
||||||
|
local opts = {noremap = true, silent = true}
|
||||||
|
|
||||||
|
map("n", "<leader>u", ":MundoToggle<CR>", opts)
|
105
data/nvim/lua/plugins/config/neotree.lua
Normal file
105
data/nvim/lua/plugins/config/neotree.lua
Normal file
|
@ -0,0 +1,105 @@
|
||||||
|
vim.cmd [[let g:neo_tree_remove_legacy_commands = 1]]
|
||||||
|
|
||||||
|
local map = vim.api.nvim_set_keymap
|
||||||
|
local opts = {noremap = true, silent = true}
|
||||||
|
|
||||||
|
map("n", "<leader>t", ":Neotree toggle<CR>", opts)
|
||||||
|
local notify = function(message, level)
|
||||||
|
vim.notify(message, level, { title = "NeoTree" })
|
||||||
|
end
|
||||||
|
|
||||||
|
require("neo-tree").setup {
|
||||||
|
sort_case_insensitive = true,
|
||||||
|
use_popups_for_input = false,
|
||||||
|
popup_border_style = "rounded",
|
||||||
|
-- source_selector = {
|
||||||
|
-- winbar = true,
|
||||||
|
-- separator = { left = "", right= "" },
|
||||||
|
-- },
|
||||||
|
win_options = {
|
||||||
|
winblend = 0,
|
||||||
|
},
|
||||||
|
default_component_configs = {
|
||||||
|
modified = {
|
||||||
|
symbol = "~ ",
|
||||||
|
},
|
||||||
|
indent = {
|
||||||
|
with_expanders = true,
|
||||||
|
},
|
||||||
|
name = {
|
||||||
|
trailing_slash = true,
|
||||||
|
},
|
||||||
|
git_status = {
|
||||||
|
symbols = {
|
||||||
|
added = "+",
|
||||||
|
deleted = "✖",
|
||||||
|
modified = "",
|
||||||
|
renamed = "➜",
|
||||||
|
untracked = "?",
|
||||||
|
ignored = "",
|
||||||
|
unstaged = "",
|
||||||
|
staged = "",
|
||||||
|
conflict = "",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
window = {
|
||||||
|
width = 34,
|
||||||
|
position = "left",
|
||||||
|
mappings = {
|
||||||
|
["<CR>"] = "open_with_window_picker",
|
||||||
|
["s"] = "split_with_window_picker",
|
||||||
|
["v"] = "vsplit_with_window_picker",
|
||||||
|
["t"] = "open_tabnew",
|
||||||
|
["z"] = "close_all_nodes",
|
||||||
|
["Z"] = "expand_all_nodes",
|
||||||
|
["a"] = { "add", config = { show_path = "relative" } },
|
||||||
|
["A"] = { "add_directory", config = { show_path = "relative" } },
|
||||||
|
["c"] = { "copy", config = { show_path = "relative" } },
|
||||||
|
["m"] = { "move", config = { show_path = "relative" } },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
filesystem = {
|
||||||
|
window = {
|
||||||
|
mappings = {
|
||||||
|
["gA"] = "git_add_all",
|
||||||
|
["ga"] = "git_add_file",
|
||||||
|
["gu"] = "git_unstage_file",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
group_empty_dirs = true,
|
||||||
|
follow_current_file = true,
|
||||||
|
use_libuv_file_watcher = true,
|
||||||
|
filtered_items = {
|
||||||
|
hide_dotfiles = false,
|
||||||
|
hide_by_name = { ".git" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
event_handlers = {
|
||||||
|
{
|
||||||
|
event = "file_added",
|
||||||
|
handler = function(arg)
|
||||||
|
notify("Added: " .. arg, "info")
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
event = "file_deleted",
|
||||||
|
handler = function(arg)
|
||||||
|
notify("Deleted: " .. arg, "info")
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
event = "file_renamed",
|
||||||
|
handler = function(args)
|
||||||
|
notify("Renamed: " .. args.source .. " -> " .. args.destination, "info")
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
event = "file_moved",
|
||||||
|
handler = function(args)
|
||||||
|
notify("Moved: " .. args.source .. " -> " .. args.destination, "info")
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
143
data/nvim/lua/plugins/config/nvim-cmp.lua
Normal file
143
data/nvim/lua/plugins/config/nvim-cmp.lua
Normal file
|
@ -0,0 +1,143 @@
|
||||||
|
local present, cmp = pcall(require, "cmp")
|
||||||
|
if not present then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
local lspkind = require('lspkind')
|
||||||
|
|
||||||
|
function format(opts)
|
||||||
|
if opts == nil then
|
||||||
|
opts = {}
|
||||||
|
end
|
||||||
|
|
||||||
|
return function(entry, vim_item)
|
||||||
|
vim_item.kind = lspkind.symbolic(vim_item.kind, opts)
|
||||||
|
|
||||||
|
if opts.menu ~= nil then
|
||||||
|
vim_item.menu = opts.menu[entry.source.name]
|
||||||
|
end
|
||||||
|
|
||||||
|
if entry.source.name == 'cmp_tabnine' then
|
||||||
|
if entry.completion_item.data ~= nil and entry.completion_item.data.detail ~= nil then
|
||||||
|
vim_item.menu = entry.completion_item.data.detail .. ' ' .. vim_item.menu
|
||||||
|
end
|
||||||
|
vim_item.kind = ''
|
||||||
|
end
|
||||||
|
|
||||||
|
if opts.maxwidth ~= nil then
|
||||||
|
vim_item.abbr = string.sub(vim_item.abbr, 1, opts.maxwidth)
|
||||||
|
end
|
||||||
|
|
||||||
|
return vim_item
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
cmp.setup({
|
||||||
|
-- Integrate luasnip
|
||||||
|
snippet = {
|
||||||
|
expand = function(args)
|
||||||
|
require('luasnip').lsp_expand(args.body)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
-- Add pictograms from lspkind
|
||||||
|
formatting = {
|
||||||
|
format = format({
|
||||||
|
with_text = false,
|
||||||
|
maxwidth = 50,
|
||||||
|
menu = {
|
||||||
|
buffer = "[Buf]",
|
||||||
|
calc = "[Calc]",
|
||||||
|
cmp_git = "[Git]",
|
||||||
|
cmp_tabnine = "[TN]",
|
||||||
|
emoji = "[Emoji]",
|
||||||
|
luasnip = "[Snip]",
|
||||||
|
nvim_lsp = "[LSP]",
|
||||||
|
nvim_lua = "[Lua]",
|
||||||
|
path = "[Path]",
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
mapping = {
|
||||||
|
['<C-d>'] = cmp.mapping(cmp.mapping.scroll_docs(-4), { 'i', 'c'}),
|
||||||
|
['<C-f>'] = cmp.mapping(cmp.mapping.scroll_docs(4), { 'i', 'c'}),
|
||||||
|
['<C-Space>'] = cmp.mapping(cmp.mapping.complete(), { 'i', 'c'}),
|
||||||
|
['<C-e>'] = cmp.mapping(cmp.mapping.close(), { 'i', 'c'} ),
|
||||||
|
['<CR>'] = cmp.mapping.confirm({ select = false }),
|
||||||
|
["<Tab>"] = function(fallback)
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_next_item()
|
||||||
|
elseif require("luasnip").expand_or_jumpable() then
|
||||||
|
vim.fn.feedkeys(vim.api.nvim_replace_termcodes("<Plug>luasnip-expand-or-jump", true, true, true), "")
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
["<S-Tab>"] = function(fallback)
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_prev_item()
|
||||||
|
elseif require("luasnip").jumpable(-1) then
|
||||||
|
vim.fn.feedkeys(vim.api.nvim_replace_termcodes("<Plug>luasnip-jump-prev", true, true, true), "")
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
sources = {
|
||||||
|
{ name = 'luasnip' },
|
||||||
|
{ name = 'buffer' },
|
||||||
|
{ name = 'path' },
|
||||||
|
{ name = 'nvim_lsp' },
|
||||||
|
{ name = 'nvim_lua' },
|
||||||
|
{ name = 'cmp_git' },
|
||||||
|
{ name = 'emoji' },
|
||||||
|
{ name = 'calc' },
|
||||||
|
{ name = 'cmp_tabnine' },
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Use buffer source for `/` (if you enabled `native_menu`, this won't work anymore).
|
||||||
|
cmp.setup.cmdline('/', {
|
||||||
|
sources = {
|
||||||
|
{ name = 'buffer' }
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore).
|
||||||
|
cmp.setup.cmdline(':', {
|
||||||
|
sources = {
|
||||||
|
{ name = 'path' },
|
||||||
|
{ name = 'cmdline' }
|
||||||
|
}
|
||||||
|
})
|
||||||
|
-- language servers
|
||||||
|
local sumneko_root_path = vim.fn.stdpath("data").."/lua-language-server"
|
||||||
|
local sumneko_binary = sumneko_root_path.."/bin/lua-language-server"
|
||||||
|
|
||||||
|
require("lspconfig").sumneko_lua.setup { -- lua: https://github.com/sumneko/lua-language-server
|
||||||
|
cmd = { sumneko_binary, "-E", sumneko_root_path .. "/main.lua" },
|
||||||
|
settings = {
|
||||||
|
Lua = {
|
||||||
|
diagnostics = {
|
||||||
|
-- Get the language server to recognize the `vim` global
|
||||||
|
globals = {'vim'},
|
||||||
|
},
|
||||||
|
workspace = {
|
||||||
|
-- Make the server aware of Neovim runtime files
|
||||||
|
library = vim.api.nvim_get_runtime_file("", true),
|
||||||
|
},
|
||||||
|
-- Do not send telemetry data containing a randomized but unique identifier
|
||||||
|
telemetry = { enable = false, },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
require('lspconfig').clangd.setup {} --needs clang
|
||||||
|
require('lspconfig').rust_analyzer.setup {} --still needs rust analyzer installed
|
||||||
|
require('lspconfig').bashls.setup {} --needs bash-language-server from npm
|
||||||
|
require('lspconfig').cmake.setup {} --still needs cmake language servers
|
||||||
|
require('lspconfig').html.setup {} --needs npm vscode-langservers-extracted
|
||||||
|
require('lspconfig').hls.setup {} --still needs github: haskell-language-server
|
||||||
|
-- maybe use jdtls ??? require('lspconfig').java_language_server.setup {} --still needs github java-language-server
|
||||||
|
require('lspconfig').pyright.setup {} -- needs npm pyright
|
||||||
|
require('lspconfig').texlab.setup {} -- needs github texlab
|
||||||
|
require'lspconfig'.gopls.setup{} -- needs gopls installed
|
||||||
|
require'lspconfig'.zls.setup{}
|
6
data/nvim/lua/plugins/config/onedark.lua
Normal file
6
data/nvim/lua/plugins/config/onedark.lua
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
-- setup onedark
|
||||||
|
require("onedark").setup{
|
||||||
|
toggle_style_key = "<nop>",
|
||||||
|
}
|
||||||
|
|
||||||
|
require("onedark").load()
|
34
data/nvim/lua/plugins/config/telescope.lua
Normal file
34
data/nvim/lua/plugins/config/telescope.lua
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
require('telescope').setup{
|
||||||
|
defaults = {
|
||||||
|
-- Default configuration for telescope goes here:
|
||||||
|
-- config_key = value,
|
||||||
|
mappings = {
|
||||||
|
i = {
|
||||||
|
-- map actions.which_key to <C-h> (default: <C-/>)
|
||||||
|
-- actions.which_key shows the mappings for your picker,
|
||||||
|
-- e.g. git_{create, delete, ...}_branch for the git_branches picker
|
||||||
|
["<C-h>"] = "which_key"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
pickers = {
|
||||||
|
-- Default configuration for builtin pickers goes here:
|
||||||
|
-- picker_name = {
|
||||||
|
-- picker_config_key = value,
|
||||||
|
-- ...
|
||||||
|
-- }
|
||||||
|
-- Now the picker_config_key will be applied every time you call this
|
||||||
|
-- builtin picker
|
||||||
|
},
|
||||||
|
extensions = {
|
||||||
|
-- Your extension configuration goes here:
|
||||||
|
-- extension_name = {
|
||||||
|
-- extension_config_key = value,
|
||||||
|
-- }
|
||||||
|
-- please take a look at the readme of the extension you want to configure
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
require('telescope').load_extension('fzf')
|
||||||
|
require('telescope').load_extension('cheatsheet')
|
7
data/nvim/lua/plugins/config/treesitter.lua
Normal file
7
data/nvim/lua/plugins/config/treesitter.lua
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
require "nvim-treesitter.configs" .setup {
|
||||||
|
ensure_installed = "all",
|
||||||
|
highlight = {
|
||||||
|
enable = true,
|
||||||
|
use_languagetree = true
|
||||||
|
}
|
||||||
|
}
|
2
data/nvim/lua/plugins/config/vim-visual-multi.lua
Normal file
2
data/nvim/lua/plugins/config/vim-visual-multi.lua
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
local map = vim.api.nvim_set_keymap
|
||||||
|
local opts = {noremap = true, silent = true}
|
746
data/nvim/lua/plugins/data/alpha.lua
Normal file
746
data/nvim/lua/plugins/data/alpha.lua
Normal file
|
@ -0,0 +1,746 @@
|
||||||
|
return { {
|
||||||
|
"⬛⬛🔴🔴🔴🔴⬛🔴⬛⬛🔴⬛🔴🔴🔴🔴⬛⬛",
|
||||||
|
"⬛⬛🔴⬛⬛⬛⬛🔴⬛⬛🔴⬛🔴⬛⬛⬛⬛⬛",
|
||||||
|
"⬛⬛🔴🔴🔴🔴⬛🔴⬛⬛🔴⬛🔴🔴🔴🔴⬛⬛",
|
||||||
|
"⬛⬛⬛⬛⬛🔴⬛🔴⬛⬛🔴⬛⬛⬛⬛🔴⬛⬛",
|
||||||
|
"⬛⬛🔴🔴🔴🔴⬛⬛🔴🔴⬛⬛🔴🔴🔴🔴⬛⬛",
|
||||||
|
"⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛",
|
||||||
|
}, {
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⢿⣻⣫⢯⣗⣗⣗⣗⣗⡷⡽⣝⡯⣟⢿⢿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⢿⢝⣞⣗⢷⡽⣽⣺⣳⢯⣾⣺⡽⣽⣳⢯⢯⢯⢯⢞⢿⢿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⢿⣕⡯⣟⣞⡾⣽⢽⣳⣟⣾⣻⣞⣷⣻⣽⣞⣯⢿⡽⣽⢽⢽⢵⣻⣿⣿⣿",
|
||||||
|
"⣿⣿⢯⣳⣳⢽⣳⢯⡯⣿⣽⣻⡾⣷⢿⣞⣿⣞⣷⣟⣾⢯⣯⢷⣻⡽⣳⢧⡻⣿⣿",
|
||||||
|
"⣿⣏⣗⢷⢽⡽⣞⣯⣿⣳⢟⣷⢿⣻⣽⣟⣾⣻⣾⣻⢾⢿⣞⣯⣷⣻⢽⣳⣝⣝⣿",
|
||||||
|
"⣿⣺⣪⢿⢽⡽⣯⢷⡯⢐⠄⠄⣻⣟⣷⢿⣽⣻⡞⠠⡂⠄⢻⣗⣷⢯⣟⣞⡮⣖⣿",
|
||||||
|
"⣿⡺⣺⢽⢯⣻⣽⢯⣧⠐⠐⡀⣺⣽⣾⢿⣽⣯⣇⢐⠠⠈⣼⣟⣾⣻⣺⣵⡻⡮⣿",
|
||||||
|
"⣿⡺⡽⡽⡯⣷⣻⣻⣽⣾⣲⢾⣽⢷⣟⣿⣳⣯⡿⣶⢶⣽⣻⣾⣳⡯⣷⡳⣯⡳⣻",
|
||||||
|
"⣿⡺⣝⡯⡿⡽⣞⣯⣷⢿⣽⢿⣽⢿⣽⢷⣟⣷⢿⣻⡿⣽⢷⣻⢾⣽⣳⢯⣗⢝⣿",
|
||||||
|
"⣿⣝⣞⡽⡽⡯⣟⣷⠉⡁⠅⠡⠁⠅⠡⠁⠅⠡⢉⠨⠈⠌⡉⣿⢽⣞⣞⣗⡗⣽⣿",
|
||||||
|
"⣿⣿⡼⣺⢽⢯⣟⣞⡷⡶⡾⡶⣷⢾⡶⣷⢾⣶⢶⣶⢷⡶⡾⣽⢽⣺⢞⡞⣼⣿⣿",
|
||||||
|
"⣿⣿⣿⣮⢯⣳⡳⡯⡯⣟⣟⣯⢿⡽⣯⣟⣿⣺⡯⣯⡯⣯⢿⢽⢽⡺⡹⣼⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣷⣧⡫⡯⡯⣗⣟⡾⣽⢽⣳⢯⢾⣺⢽⣳⢯⢯⢯⢏⢇⣿⣾⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣾⣽⣕⡳⡫⣗⢟⢾⣝⢯⢯⢻⢪⡫⣽⣼⣾⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣾⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
}, {
|
||||||
|
"⡏⠉⠉⠉⠉⠉⠉⠋⠉⠉⠉⠉⠉⠉⠋⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠙⠉⠉⠉⠹",
|
||||||
|
"⡇⢸⣿⡟⠛⢿⣷⠀⢸⣿⡟⠛⢿⣷⡄⢸⣿⡇⠀⢸⣿⡇⢸⣿⡇⠀⢸⣿⡇⢸",
|
||||||
|
"⡇⢸⣿⣧⣤⣾⠿⠀⢸⣿⣇⣀⣸⡿⠃⢸⣿⡇⠀⢸⣿⡇⢸⣿⣇⣀⣸⣿⡇⢸",
|
||||||
|
"⡇⢸⣿⡏⠉⢹⣿⡆⢸⣿⡟⠛⢻⣷⡄⢸⣿⡇⠀⢸⣿⡇⢸⣿⡏⠉⢹⣿⡇⢸",
|
||||||
|
"⡇⢸⣿⣧⣤⣼⡿⠃⢸⣿⡇⠀⢸⣿⡇⠸⣿⣧⣤⣼⡿⠁⢸⣿⡇⠀⢸⣿⡇⢸",
|
||||||
|
"⣇⣀⣀⣀⣀⣀⣀⣄⣀⣀⣀⣀⣀⣀⣀⣠⣀⡈⠉⣁⣀⣄⣀⣀⣀⣠⣀⣀⣀⣰",
|
||||||
|
}, {
|
||||||
|
"⣿⣿⣿⡇⠄⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⡇⠄⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⡇⠄⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⡇⠄⣿⣿⣿⡿⠟⠋⣉⣉⣉⡙⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⠃⠄⠹⠟⣡⣶⡿⢟⣛⣛⡻⢿⣦⣩⣤⣤⣤⣬⡉⢻⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⠄⢀⢤⣾⣿⣿⣿⣿⡿⠿⠿⠿⢮⡃⣛⣛⡻⠿⢿⠈⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⡟⢡⣴⣯⣿⣿⣿⣉⠤⣤⣭⣶⣶⣶⣮⣔⡈⠛⠛⠛⢓⠦⠈⢻⣿⣿⣿⣿⣿",
|
||||||
|
"⠏⣠⣿⣿⣿⣿⣿⣿⣿⣯⡪⢛⠿⢿⣿⣿⣿⡿⣼⣿⣿⣿⣶⣮⣄⠙⣿⣿⣿⣿",
|
||||||
|
"⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣾⡭⠴⣶⣶⣽⣽⣛⡿⠿⠿⠿⠿⠇⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⠿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣝⣛⢛⡛⢋⣥⣴⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⢿⠱⣿⣿⣛⠾⣭⣛⡿⢿⣿⣿⣿⣿⣿⣿⣿⡀⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⠑⠽⡻⢿⣿⣮⣽⣷⣶⣯⣽⣳⠮⣽⣟⣲⠯⢭⣿⣛⣛⣿⡇⢸⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⠄⠄⠈⠑⠊⠉⠟⣻⠿⣿⣿⣿⣿⣷⣾⣭⣿⣛⠷⠶⠶⠂⣴⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⠄⠄⠄⠄⠄⠄⠄⠄⠁⠙⠒⠙⠯⠍⠙⢉⣉⣡⣶⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠙⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
}, {
|
||||||
|
"⢀⡴⠑⡄⠀⠀⠀⠀⠀⠀⠀⣀⣀⣤⣤⣤⣀⡀⠀⠀⠀⠀ ",
|
||||||
|
"⠸⡇⠀⠿⡀⠀⠀⠀⣀⡴⢿⣿⣿⣿⣿⣿⣿⣿⣷⣦⡀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠑⢄⣠⠾⠁⣀⣄⡈⠙⣿⣿⣿⣿⣿⣿⣿⣿⣆⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⢀⡀⠁⠀⠀⠈⠙⠛⠂⠈⣿⣿⣿⣿⣿⠿⡿⢿⣆⠀",
|
||||||
|
"⠀⠀⠀⢀⡾⣁⣀⠀⠴⠂⠙⣗⡀⠀⢻⣿⣿⠭⢤⣴⣦⣤⣹⠀",
|
||||||
|
"⠀⠀⢀⣾⣿⣿⣿⣷⣮⣽⣾⣿⣥⣴⣿⣿⡿⢂⠔⢚⡿⢿⣿⣦",
|
||||||
|
"⠀⢀⡞⠁⠙⠻⠿⠟⠉⠀⠛⢹⣿⣿⣿⣿⣿⣌⢤⣼⣿⣾⣿⡟",
|
||||||
|
"⠀⣾⣷⣶⠇⠀⠀⣤⣄⣀⡀⠈⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇",
|
||||||
|
"⠀⠉⠈⠉⠀⠀⢦⡈⢻⣿⣿⣿⣶⣶⣶⣶⣤⣽⡹⣿⣿⣿⣿⡇",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠉⠲⣽⡻⢿⣿⣿⣿⣿⣿⣿⣷⣜⣿⣿⣿⡇",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣷⣶⣮⣭⣽⣿⣿⣿⣿⣿⣿⣿⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⣀⣀⣈⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀⠀⠀⠀⠀",
|
||||||
|
}, {
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣀⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⠋⠉⠉⠉⠙⠛⠻⢶⣤⡀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⡾⠁⠀⠀⠀⠀⠀⠀⠀⠀⠈⢻⡆⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣠⣴⠟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⡟⠁⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⠶⠟⠛⠉⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⡟⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣠⣴⠾⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⠁⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⡶⠛⠛⠋⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⠞⠋⠀⠀⠀⠀⣠⣴⠶⠶⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⣄⣀⣀⣤⡴⠟⠋⠀⠀⠀⠘⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣟⠉⠙⢷⣄⠀⠀⠀⠀⠀⠀⠘⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⣷⡀⠀⠹⣧⡀⠀⠀⠀⠀⠀⣼⠃⠀⠀⠀⠀⠀⠀⠀⢀⣾⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣷⡀⠀⠈⠛⣷⣤⣴⠶⠟⠃⠀⠀⠀⠀⠀⠀⠀⢀⣾⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣷⡀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠻⠟⠛⣻⡿⠀⠀⠀⠀⠀⢀⣤⡾⠛⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⡾⠋⠀⠀⠀⠀⢀⣴⠟⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⠟⠀⠀⠀⠀⣠⣾⡿⠁⢀⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⠏⠀⠀⠀⢀⡾⢫⣿⠁⠀⣼⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡾⠃⠀⠀⢀⣴⠟⢡⡟⣿⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠟⠁⠀⠀⣰⠟⠁⢠⡿⠀⢿⡄⢰⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⠏⠀⠀⢠⣾⠋⠀⢀⡿⠁⠀⠈⠛⠿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡏⠀⠀⣴⢿⡟⠀⠀⣾⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢷⣄⣾⠋⠘⣧⡀⢰⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠁⠀⠀⠈⠛⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
}, {
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣧⠻⣿⣿⠿⠿⠿⢿⣿⠟⣼⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⠟⠃⠁⠀⠀⠀⠀⠀⠀⠘⠻⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⡿⠃⠀⣴⡄⠀⠀⠀⠀⠀⣴⡆⠀⠘⢿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⣿⣿⣿",
|
||||||
|
"⣿⠿⢿⣿⠶⠶⠶⠶⠶⠶⠶⠶⠶⠶⠶⠶⠶⠶⠶⣿⡿⠿⣿",
|
||||||
|
"⡇⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⢸",
|
||||||
|
"⡇⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⢸",
|
||||||
|
"⡇⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⢸",
|
||||||
|
"⡇⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⢸",
|
||||||
|
"⣧⣤⣤⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣤⣤⣼",
|
||||||
|
"⣿⣿⣿⣿⣶⣤⡄⠀⠀⠀⣤⣤⣤⠀⠀⠀⢠⣤⣴⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⣿⣿⣿⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣤⣤⣴⣿⣿⣿⣦⣤⣤⣾⣿⣿⣿⣿⣿⣿",
|
||||||
|
}, {
|
||||||
|
"⠀⠀⠀⠀⠀⠀⢀⣠⡶⠖⠛⠉⠉⠉⠉⠉⠛⠲⣦⣄⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⣤⠖⠋⠁⠀⠀⠀⠀⢀⣴⣿⠛⠙⠛⢷⣤⣈⢿⠀⠀",
|
||||||
|
"⠀⠀⣴⠋⠀⠀⠀⠀⣀⣤⣶⠶⠚⠛⠁⠀⠀⠀⠀⠀⠀⠀⣿⠀",
|
||||||
|
"⢀⡟⣠⣶⠖⠛⠉⢁⣠⣴⣶⢶⡄⠀⠺⣯⣭⣭⣭⣿⠿⠗⢸⡆",
|
||||||
|
"⣾⠀⠀⠀⣴⣞⣉⣈⣿⡿⠛⠁⠀⠀⠀⠀⣻⣦⠶⠛⠉⠙⢿⡇",
|
||||||
|
"⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣤⠶⠛⠉⠀⠀⠀⠀⠀⡶⢻⠁",
|
||||||
|
"⣿⠀⠀⠀⠀⠀⠛⠛⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⡇⣿⠀",
|
||||||
|
"⠘⣆⠀⠀⠀⠀⠀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⡟⣼⠃⠀",
|
||||||
|
"⠀⠹⣄⠀⠀⠀⠀⠀⠀⠀⠛⣦⣀⠀⠀⠀⠀⣠⡶⠋⣼⠃⠀⠀",
|
||||||
|
"⠀⠀⠈⠛⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⡾⠋⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠈⠉⠛⠛⠶⣤⣿⣿⣴⣶⠛⠉⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠋⢸⠀⠙⢷⡀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⣾⠁⠀⢸⠀⠀⠀⠈⢷⡀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⢠⡟⠀⠀⠀⢸⡆⠀⠀⠀⠀⠘⢶⡀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⣾⠃⠀⠀⠀⠀⠀⣇⠀⠀⠀⠀⠀⠀⠻⡄⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⢀⡿⠀⠀⠀⠀⠀⠀⣀⣿⣀⣀⣀⣀⣀⣀⡀⢹⣦⣤⠄",
|
||||||
|
"⢀⣤⣶⣿⣿⣷⣶⠟⠛⠉⠀⠀⢸⡄⠀⠀⠉⠙⠛⠿⣿⣿⣦⢻",
|
||||||
|
"⠀⣸⠃⢿⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠘⣿⠀⠀",
|
||||||
|
}, {
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡤⠶⢶⣶⣦⣄⡀⠀⠀ ",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⡄⠒⠪⢝⠻⣿⣿⣦⡀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣿⡿⢉⡀⠀⠈⠐⠄⢿⣿⣿⣷",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⡇⠀⠀⠈⡄⠤⢀⠈⣾⣿⣿⣿",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡾⣿⣟⣕⡤⡠⠘⠀⠀⠀⢱⣿⣿⣿⣿",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣾⣾⣿⣞⣄⠮⠔⠈⡢⠄⣠⣾⣿⣿⣿⣿",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⢿⣿⢽⡻⣿⣿⣿⣽⣵⣾⡽⣿⣿⣿⣿⣿⡏",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣗⣿⡟⠈⠉⠚⢽⣻⢷⡝⣿⡿⣿⣿⣿⣿⡿⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⣿⣿⠇⠀⠀⠀⠀⠀⢩⣯⣭⣾⣿⣿⣿⣿⠁⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣿⣿⠃⠀⠀⠀⠀⠀⣰⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣿⣿⡿⠃⠀⠀⠀⠀⣠⣼⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⢞⣿⣿⡿⠁⠀⠀⠀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣾⣿⠏⠀⠀⠀⠀⣾⣿⣿⣿⣿⣿⣿⡟⣿⣿⠏⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⠃⠀⠀⠀⠀⣸⣿⣿⣿⣿⣿⣟⣷⣾⣿⠏⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⢀⣾⣿⣿⣿⣿⠃⠀⠀⠀⢀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⠋⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⡰⢿⣿⣿⣯⡶⠁⠀⠀⢀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠃⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⢀⣼⣟⣿⣿⡿⠃⠀⠀⢀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⢀⣾⣿⣿⡯⣿⠀⠀⢠⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⣾⣿⣿⣿⣿⣿⣶⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠿⣿⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠛⠀⠈⠀⠻⣿⣿⣿⣿⣿⣟⣛⣿⣿⡭⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠢⡀⠀⠀⠀⠀⠻⣿⣿⣿⣿⣿⣭⠟⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠈⠐⠤⢀⡀⠀⢀⣙⣿⠿⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ",
|
||||||
|
}, {
|
||||||
|
"⣿⣿⡿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣿⣿⣿",
|
||||||
|
"⣿⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢿⣿",
|
||||||
|
"⡇⠀⠀⠀⠀⣤⣤⣀⣀⣠⣤⣤⣷⣦⣤⣤⣤⣤⣀⣀⣀⣀⠀⠀⠀⠀⠀⠀⠀⢸⣿",
|
||||||
|
"⡇⠀⠀⠀⠈⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣶⣄⠀⠀⢸⣿",
|
||||||
|
"⣷⠀⠀⠈⠨⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀⠀⢸⣿",
|
||||||
|
"⣿⡄⠀⠀⣈⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠀⠀⢸⣿",
|
||||||
|
"⣿⡇⠀⠀⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠁⠀⠀⢸⣿",
|
||||||
|
"⡇⠀⠀⠀⠀⠉⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠿⡿⢀⡀⠀⣔⣿",
|
||||||
|
"⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠛⣿⣿⣿⠿⠛⠛⠛⠋⠈⠀⠀⠀⠀⠘⡇⢠⣾⣿",
|
||||||
|
"⣇⠇⠀⣠⣄⠀⠀⠀⠀⣀⣀⣀⡀⢸⣿⣿⣇⣀⣀⢠⣀⢀⠀⠀⣀⣠⣶⡇⣾⣿⣿",
|
||||||
|
"⣿⡄⠀⢸⣿⣶⣤⣀⣀⣠⣽⣿⠁⣼⣿⣿⣿⣿⣿⣼⣬⣭⣶⣶⣿⣿⣿⠀⣿⣿⣿",
|
||||||
|
"⣿⡇⠀⠀⢹⣿⣿⣿⣿⣿⣿⡿⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠁⠀⣿⣿⣿",
|
||||||
|
"⣿⣷⡄⠀⠈⢿⣿⣿⣿⣿⣿⠁⢬⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠀⢠⣿⣿⣿",
|
||||||
|
"⣿⣿⣇⠀⠀⠘⠿⣿⣿⣿⣿⠀⠈⠛⠿⠟⠙⠛⣻⣿⣿⣿⣿⣿⣯⠀⠀⣼⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⡄⠀⠀⠀⠙⢿⣿⣿⣖⣄⣀⠀⢰⣿⣿⢿⣿⢿⣿⣿⡿⠀⠀⠸⢿⣿⣿⣿",
|
||||||
|
"⠛⠋⠉⠀⠀⠀⠀⠀⢀⣄⡀⠈⢈⠙⠛⢟⣋⢁⢁⣠⣤⣼⡿⠀⠀⠀⠀⠀⠀⠈⠙",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠹⠟⢀⢀⠚⠚⠛⠙⠛⢛⣿⣿⡟⠛⠁⠀⡀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠨⢿⣷⣿⣾⣿⣿⣿⣿⠇⠂⠀⠀⢠⡇⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⢐⠀⠀⠀⠀⠈⠛⠯⠿⡹⠛⠟⠉⠀⠀⠀⢀⣾⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⢆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⡟⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠸⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⢿⠁⠀⠀⠀⠀⠀ ",
|
||||||
|
}, {
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⡀⠠⠤⠀⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⣀⢤⡒⠉⠁⠀⠒⢂⡀⠀⠀⠀⠈⠉⣒⠤⣀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⣠⠾⠅⠈⠀⠙⠀⠀⠀⠈⠀⠀⢀⣀⣓⡀⠉⠀⠬⠕⢄⠀⠀",
|
||||||
|
"⠀⣰⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡤⠶⢦⡀⠑⠀⠀⠀⠀⠈⢧⠀",
|
||||||
|
"⠀⡇⠀⠀⠀⠀⠀⢤⣀⣀⣀⣀⡀⢀⣀⣀⠙⠀⠀⠀⠀⠀⠀⢸⡄",
|
||||||
|
"⠀⢹⡀⠀⠀⠀⠀⡜⠁⠀⠀⠙⡴⠁⠀⠀⠱⡄⠀⠀⠀⠀⠀⣸⠀",
|
||||||
|
"⠀⠀⠱⢄⡀⠀⢰⣁⣒⣒⣂⣰⣃⣀⣒⣒⣂⢣⠀⠀⠀⢀⡴⠁⠀",
|
||||||
|
"⠀⠀⠀⠀⠙⠲⢼⡀⠀⠙⠀⢠⡇⠀⠛⠀⠀⣌⣀⡤⠖⠉⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⢸⡗⢄⣀⡠⠊⠈⢦⣀⣀⠔⡏⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠈⡇⠀⢰⠁⠀⠀⠀⢣⠀⠀⣷⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⣠⠔⠊⠉⠁⡏⠀⠀⠀⠀⠘⡆⠤⠿⣄⣀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⣧⠸⠒⣚⡩⡇⠀⠀⠀⠀⠀⣏⣙⠒⢴⠈⡇⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠈⠋⠉⠀⠀⢳⡀⠀⠀⠀⣸⠁⠈⠉⠓⠚⠁⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠓⠛⠛",
|
||||||
|
}, {
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⣠⠞⠉⢉⠩⢍⡙⠛⠋⣉⠉⠍⢉⣉⣉⣉⠩⢉⠉⠛⠲⣄⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⡴⠁⠀⠂⡠⠑⠀⠀⠀⠂⠀⠀⠀⠀⠠⠀⠀⠐⠁⢊⠀⠄⠈⢦⠀⠀⠀",
|
||||||
|
"⠀⣠⡾⠁⠀⠀⠄⣴⡪⠽⣿⡓⢦⠀⠀⡀⠀⣠⢖⣻⣿⣒⣦⠀⡀⢀⣈⢦⡀⠀",
|
||||||
|
"⣰⠑⢰⠋⢩⡙⠒⠦⠖⠋⠀⠈⠁⠀⠀⠀⠀⠈⠉⠀⠘⠦⠤⠴⠒⡟⠲⡌⠛⣆",
|
||||||
|
"⢹⡰⡸⠈⢻⣈⠓⡦⢤⣀⡀⢾⠩⠤⠀⠀⠤⠌⡳⠐⣒⣠⣤⠖⢋⡟⠒⡏⡄⡟",
|
||||||
|
"⠀⠙⢆⠀⠀⠻⡙⡿⢦⣄⣹⠙⠒⢲⠦⠴⡖⠒⠚⣏⣁⣤⣾⢚⡝⠁⠀⣨⠞⠀",
|
||||||
|
"⠀⠀⠈⢧⠀⠀⠙⢧⡀⠈⡟⠛⠷⡾⣶⣾⣷⠾⠛⢻⠉⢀⡽⠋⠀⠀⣰⠃⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠑⢤⡠⢂⠌⡛⠦⠤⣄⣇⣀⣀⣸⣀⡤⠼⠚⡉⢄⠠⣠⠞⠁⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠉⠓⠮⣔⡁⠦⠀⣤⠤⠤⣤⠄⠰⠌⣂⡬⠖⠋⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠒⠤⢤⣀⣀⡤⠴⠒⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
}, {
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀⠀⠀⠠⣀⣠⣤⣤⣤⣤⣤⣄⡠⠤⠄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⠤⠄⠒⠒⠒⠂⠂⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀⠈⠳⠤⢀⡀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⣠⠊⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⡆⠀⠀⠀⠀⠀⠀⠈⠳⡄⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⡠⠒⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠘⣄⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⢄⠀",
|
||||||
|
"⠀⠀⠀⢀⢖⣿⡷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⣿⣿⣿⣿⣿⣿⣿⡿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀",
|
||||||
|
"⠀⠀⠀⢸⡾⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣿⣿⣿⣿⣿⣿⣿⠟⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢇⠀",
|
||||||
|
"⠀⠀⠀⣴⣛⣿⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢺⣿⣿⣿⣿⣿⣿⣿⢥⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡸⠀",
|
||||||
|
"⠀⠀⣾⣾⣿⣿⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣤⠽⠿⠿⠿⠿⠿⣧⣄⡈⠛⠛⠛⣛⣛⣳⣶⣶⣦⣄⡀⠀⠀⠀⠀⡎⠀⠀",
|
||||||
|
"⠀⠘⡿⣿⣿⣿⣿⣿⣦⣄⠀⠀⣀⣠⠤⠤⣤⣖⡺⢟⣩⠥⢒⡊⠭⠭⠝⢑⣒⠲⠤⢭⢖⣪⠭⠜⠓⢒⣒⠒⠒⢒⣛⢷⣄⠀⢀⡇⠀⠀",
|
||||||
|
"⠀⢀⣽⣿⣿⣿⣿⣿⣿⣿⣠⠞⠉⢀⣤⣿⡭⠷⡺⠚⠉⢩⣾⣩⡿⠻⣦⡀⠀⠀⠀⠁⠲⡠⠒⠁⠀⣴⣈⡿⠷⣦⠀⠈⠈⠙⠻⣄⠀⠀",
|
||||||
|
"⠀⢸⣿⣿⣿⣿⣿⡭⠟⠉⠁⠀⠀⠘⠓⠒⠲⡉⠀⠀⠀⢸⣿⣬⣷⣶⣿⡇⠀⠀⠀⠀⠈⠀⠀⠀⢸⣿⣧⣿⣶⣿⠇⠀⠀⠀⠀⣸⠀⠀",
|
||||||
|
"⠀⠀⠈⠓⣿⠶⠟⠁⠀⠀⠀⠀⠀⠘⠛⠂⠀⠈⠑⠠⢀⠈⢛⣿⣿⠛⠋⣀⡀⣀⠠⠐⠂⠀⢀⣀⠀⠙⠻⠿⢿⣍⡀⠤⠤⠒⢊⡍⠀⠀",
|
||||||
|
"⠀⠀⠀⡴⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⢠⣄⣤⣾⣿⣷⣤⠀⠀⠀⠀⠀⠀⣀⡤⡎⠀⠀⠀",
|
||||||
|
"⠀⠀⡸⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⡤⠤⠶⠦⢤⣤⣀⠀⠀⢠⣿⣿⣿⣤⣿⣿⣿⣿⣇⣀⣀⣤⢶⠛⠁⢀⡏⠀⠀⠀",
|
||||||
|
"⠀⢰⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣅⡀⠐⠦⣤⣤⣀⣈⠉⠙⠻⣿⣿⣿⣿⣿⣿⣿⡿⠉⠀⢀⣀⣠⣤⠴⢻⠀⠀⠀⠀",
|
||||||
|
"⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠳⠶⢤⣄⣉⠉⠛⠛⠛⠻⠻⣿⣿⣿⠿⠿⠿⠛⠛⠋⠉⠁⣀⣴⠏⠀⠀⠀⠀",
|
||||||
|
"⠀⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠰⢦⣀⠀⠀⠀⠀⠀⠀⠈⠉⠓⠒⠦⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠶⠒⠋⠉⡘⠀⠀⠀⠀⠀",
|
||||||
|
"⢀⣧⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⡇⠀⠀⠀⠀⠀",
|
||||||
|
"⢸⠀⠙⠦⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡔⠑⠒⠦⢤⣄⠀⠀⠀⠀⠀⠀⠀⣀⠤⠤⠤⢤⣀⣀⣀⠴⠚⠉⠀⢸⠀⠀⠀⠀⠀",
|
||||||
|
"⢸⠀⠀⠀⠈⠉⠛⠒⠦⠤⢤⣀⣀⣀⣀⣀⣀⣀⣰⠁⠀⠀⠀⠀⠈⠑⡤⠒⠒⢢⠖⣉⠀⠀⠀⠀⠀⠉⠁⠀⠀⠀⠀⠀⠈⠳⣄⠀⠀⠀",
|
||||||
|
"⠸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠩⠇⠀⠀⠀⠧⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠈⢦⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⡀⠜⠒⠤⠀⠐⠒⠤⡀⠀⠀⠀⡰⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠱⡄",
|
||||||
|
}, {
|
||||||
|
"⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄",
|
||||||
|
"⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢀⣀⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄",
|
||||||
|
"⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢀⣴⣿⣿⣿⣿⣷⣄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄",
|
||||||
|
"⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣸⣿⣿⠋⠉⠹⣿⣿⡆⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄",
|
||||||
|
"⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢹⣿⣿⣄⡀⣰⣿⣿⠃⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄",
|
||||||
|
"⠄⠄⠄⠄⠄⢀⣤⣶⣶⣶⣦⣄⡙⢿⡿⣱⣿⣿⠋⣠⣤⣤⣤⣤⡀⠄⠄⠄⠄⠄",
|
||||||
|
"⠄⠄⠄⠄⢠⣿⣿⡿⠛⠛⢿⣿⣿⣷⣾⣿⣿⢣⣾⣿⡿⠿⢿⣿⣿⣆⠄⠄⠄⠄",
|
||||||
|
"⠄⠄⠄⠄⢸⣿⣿⣄⠄⢀⣴⣮⣝⠻⢿⣿⣿⣷⣭⣛⠄⠄⠄⣽⣿⣿⠄⠄⠄⠄",
|
||||||
|
"⠄⠄⠄⠄⠄⠻⣿⣿⣿⣿⣿⡿⠃⠄⠄⠈⠙⠻⢿⣿⣿⣶⣿⣿⣿⠃⠄⠄⠄⠄",
|
||||||
|
"⠄⠄⠄⠄⠄⠄⠄⠉⠉⠉⠁⠄⠄⠄⠄⠄⠄⠄⠄⠈⠙⠛⠛⠉⠄⠄⠄⠄⠄⠄",
|
||||||
|
"⠄⠄⠄⠄⢰⡿⠛⠿⢸⡇⢀⡾⠛⣿⣾⣿⠀⣿⢸⡏⠻⣦⢰⡟⢻⣷⠄⠄⠄⠄",
|
||||||
|
"⠄⠄⠄⠄⠘⠿⠶⠟⠸⠷⠆⠻⠶⠿⠛⠿⠶⠿⠸⠷⠾⠏⠘⢷⣾⠏⠄⠄⠄⠄",
|
||||||
|
"⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠾⠋⠄⠄⠄⠄⠄",
|
||||||
|
"⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄",
|
||||||
|
}, {
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⡿⠟⠿⣿⣿⣿⣿⣿⣿⠿⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⡟⠁⠀⠀⠀⠈⠉⠻⣻⣻⠁⠀⡄⠬⠍⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⠀⠀⡔⠛⠛⠒⠦⠀⠈⠛⢄⣈⣧⠤⣀⠀⠘⣾⢛⡿⠿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⡏⠀⠘⣇⠀⠀⠀⠀⠀⠀⠀⠈⢉⠔⠉⡈⠉⠛⡷⠁⣤⡀⠈⢻⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣷⠀⠀⠈⠳⢄⠀⠀⠀⠀⠀⠀⡜⠀⣸⠻⡆⠀⠈⠀⣿⣩⠀⠀⢻⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣷⡶⣾⠂⠀⠀⠀⠀⠀⠀⠀⢳⡀⠿⠞⠀⠀⠀⡦⣈⣁⣠⣔⣽⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣹⠃⠀⠀⣀⡀⡀⠀⢰⡀⠸⣑⢤⣀⣠⡤⠎⠙⠲⠯⣭⡋⠛⠿⣿⣿⣟⣿",
|
||||||
|
"⣿⣿⠃⠀⠀⢉⠟⠉⠛⢯⣛⠉⠛⠛⠛⠋⠙⠛⠋⠀⠀⠀⠀⠀⠀⣀⣠⣄⣀⣹",
|
||||||
|
"⣿⡏⠈⠉⠉⢹⠉⠙⣭⣉⠉⠙⠛⠛⠿⠿⠿⠿⠶⠒⠒⣒⣚⣫⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⡇⠀⠀⠀⠈⢧⣀⡀⠉⠙⠓⠒⠒⠒⠒⠒⠛⢛⣉⣉⣭⣴⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⠋⠀⠀⠀⠀⠀⠀⠀⠉⠙⠛⠓⠖⠲⠒⠒⣛⣭⣿⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠠⠤⠤⠴⠶⠖⠚⠉⠉⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
}, {
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⠿⠋⠉⠉⠉⠉⠛⠿⠿⣿⣿⣿⣿⣿⡿⣟⠟⠉⠋⠉⠛⠛⠻⢿⢿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⠟⠛⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠹⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⡿⠟⠁⠀⢀⡤⠖⠒⠛⠛⠒⠒⠲⠤⣄⣀⠀⠀⠀⠀⢀⣀⣤⣤⣤⣤⣤⣤⣀⠀⠀⠀⠀⠙⢿⣿⣿⣿",
|
||||||
|
"⣿⡿⠃⠀⠀⡔⣁⡤⠖⠒⠛⠛⠛⠛⠒⠒⠤⣉⠳⣆⣠⠞⢉⣁⡤⠤⠤⠤⣀⣀⡉⠛⢶⣄⠀⠀⠘⣿⣿⣿",
|
||||||
|
"⣿⡅⠀⠀⢸⠏⠁⠀⠀⢀⣀⣤⣄⣀⠀⠀⠀⠈⠳⣼⡧⠞⠁⠀⠀⠀⠀⠀⠀⠈⠉⠓⠦⣙⢦⠀⠀⢰⣿⣿",
|
||||||
|
"⡏⡇⠀⠀⡎⠀⠀⢀⣾⣟⢙⣿⠿⢿⣷⡄⠀⠀⠀⢸⠁⠀⠀⢠⣴⡾⣿⡿⢻⣷⣦⡀⠀⠈⢻⡇⠀⠐⠛⣿",
|
||||||
|
"⠟⠁⠀⠀⢱⠀⠀⣾⣿⣿⣿⣧⣀⣠⣿⣿⠄⠀⠀⢸⠀⠀⢠⣿⣇⣀⣼⣷⣾⣿⣿⣧⠀⠀⢠⠃⠀⠈⠛⣿",
|
||||||
|
"⠀⠀⠀⠀⠀⠱⣤⣿⣿⣿⣿⣿⣿⣿⣿⡟⠀⠀⣠⣾⣆⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⢀⡴⠃⠀⠀⠀⠀⠙",
|
||||||
|
"⣰⠞⠛⠲⢄⡀⠀⠉⠛⠿⢿⣿⣿⣿⣿⠶⠖⠚⠁⠀⠙⠷⣌⣿⣿⣿⣿⣿⣿⣿⡿⠟⠋⠀⠀⠀⣀⡤⢤⡀",
|
||||||
|
"⣿⠀⠀⠀⠀⠙⠢⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠉⠉⠉⠉⠀⠀⠀⠀⣠⠴⠛⠁⠀⠀⢻",
|
||||||
|
"⠹⣇⠀⢳⣄⡀⠀⠈⠙⠦⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣠⠖⠋⠀⠀⣀⣤⠀⠀⡼",
|
||||||
|
"⠀⠘⣦⠀⠹⣍⠒⠤⣀⡀⠀⠉⠓⠶⠤⣤⣄⣀⣀⣀⣀⣀⣀⣀⣤⠤⠴⠖⠛⠉⠀⣀⠤⠒⢉⡴⠁⢀⠞⠁",
|
||||||
|
"⠄⠀⠈⠳⣄⠈⠓⢤⡀⠉⠁⠒⠤⢤⣀⡀⠀⠀⠉⠁⠀⠀⠀⠀⠀⢀⣀⡠⠤⠒⠉⢁⣠⠖⠁⢀⡴⠋⠀⢀",
|
||||||
|
"⣯⣆⠀⠀⠈⠳⢤⣀⠙⠲⢤⣀⡀⠀⠀⠀⠈⠉⠉⠉⠉⠉⠉⠉⠉⠀⠀⢀⣀⠴⠒⠉⢀⣤⠞⠁⠀⠀⠠⣾",
|
||||||
|
"⣿⣿⣧⣄⠀⠀⠀⠉⠓⠦⣄⣀⠉⠙⠒⠒⠲⠤⠤⠤⠤⠤⠤⠔⠒⠒⠋⠉⣀⣠⠴⠚⠉⠀⠀⠀⠀⢀⣾⣿",
|
||||||
|
"⣿⣿⣿⣿⣧⡦⣶⠤⣤⣀⡀⠈⠙⠓⠒⠶⠤⠤⠤⣤⠤⠤⠤⠴⠶⠖⠛⠋⠁⠀⠀⢀⣀⠤⠶⣶⣴⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⠃⠀⠀⠀⠉⠉⠁⠒⠒⠒⠶⠦⠤⠤⠤⠤⠤⠤⠤⠴⠶⠖⠒⠊⠉⠉⠀⠀⠀⢻⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⡿⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⣶⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡆⠀⠀⠀⠀⢸⣿⣿⣿⣿",
|
||||||
|
}, {
|
||||||
|
"⠄⠰⠛⠋⢉⣡⣤⣄⡉⠓⢦⣀⠙⠉⠡⠔⠒⠛⠛⠛⠶⢶⣄⠘⢿⣷⣤⡈⠻⣧",
|
||||||
|
"⢀⡔⠄⠄⠄⠙⣿⣿⣿⣷⣤⠉⠁⡀⠐⠒⢿⣿⣿⣿⣶⣄⡈⠳⢄⣹⣿⣿⣾⣿",
|
||||||
|
"⣼⠁⢠⡄⠄⠄⣿⣿⣿⣿⡟⠄⡐⠁⡀⠄⠈⣿⣿⣿⣿⣿⣷⣤⡈⠻⣿⣿⣿⣿",
|
||||||
|
"⢻⡀⠈⠄⠄⣀⣿⣿⣿⡿⠃⠄⡇⠈⠛⠄⠄⣿⣿⣿⣿⣿⣿⠟⠋⣠⣶⣿⣿⣿",
|
||||||
|
"⠄⢉⡓⠚⠛⠛⠋⣉⣩⣤⣤⣀⠑⠤⣤⣤⣾⣿⣿⣿⡿⠛⢁⣤⣾⣿⣿⣿⣿⣿",
|
||||||
|
"⠄⠈⠙⠛⠋⣭⣭⣶⣾⣿⣿⣿⣷⣦⢠⡍⠉⠉⢠⣤⣴⠚⢩⣴⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⠄⢴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣭⣭⣭⣥⣴⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⠄⣴⣶⡶⠶⠶⠶⠶⠶⠶⠶⠶⣮⣭⣝⣛⠿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⠄⠙⣿⡄⠄⠄⢀⡤⠬⢭⣝⣒⢂⠭⣉⠻⠿⣷⣶⣦⣭⡛⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⠄⠄⠸⣿⡇⠄⠸⣎⣁⣾⠿⠉⢀⠇⣸⣿⣿⢆⡉⠹⣿⣿⢸⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⠄⠄⠄⣿⡇⠄⢀⡶⠶⠶⠾⠿⠮⠭⠭⢭⣥⣿⣿⣷⢸⣿⢸⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⠄⠄⠄⣿⡇⠄⠈⣷⠄⠄⠄⣭⣙⣹⢙⣰⡎⣿⢏⣡⣾⢏⣾⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⠄⠄⢰⣿⡇⠄⠄⢿⠄⠄⠈⣿⠉⠉⣻⣿⡷⣰⣿⡿⣡⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⠄⠄⢸⣿⡇⠄⠄⠘⠿⠤⠤⠿⠿⠿⢤⣤⣤⡿⣃⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⠄⠄⠘⢿⣷⣤⣄⣀⣀⣀⣀⣀⣠⣴⣾⡿⢋⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋",
|
||||||
|
}, {
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⠟⠋⠁⠄⠄⠄⠄⠄⠄⠄⠄⠙⢿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⡟⠁⠄⠄⠄⠄⣠⣤⣴⣶⣶⣶⣶⣤⡀⠈⠙⢿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⡟⠄⠄⠄⠄⠄⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣆⠄⠈⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⠁⠄⠄⠄⢀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄⢺⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⡄⠄⠄⠄⠙⠻⠿⣿⣿⣿⣿⠿⠿⠛⠛⠻⣿⡄⠄⣾⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⡇⠄⠄⠁ ⠄⢹⣿⡗⠄ ⢄⡀⣾⢀⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⡇⠘⠄⠄⠄⢀⡀⠄⣿⣿⣷⣤⣤⣾⣿⣿⣿⣧⢸⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⡇⠄⣰⣿⡿⠟⠃⠄⣿⣿⣿⣿⣿⡛⠿⢿⣿⣷⣾⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⡄⠈⠁⠄⠄⠄⠄⠻⠿⢛⣿⣿⠿⠂⠄⢹⢹⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⡐⠐⠄⠄⣠⣀⣀⣚⣯⣵⣶⠆⣰⠄⠞⣾⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣷⡄⠄⠄⠈⠛⠿⠿⠿⣻⡏⢠⣿⣎⣾⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⡿⠟⠛⠄⠄⠄⠄⠙⣛⣿⣿⣵⣿⡿⢹⡟⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⠿⠿⠋⠉⠄⠄⠄⠄⠄⠄⠄⣀⣠⣾⣿⣿⣿⡟⠁⠹⡇⣸⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⠁⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠙⠿⠿⠛⠋⠄⣸⣦⣠⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
}, {
|
||||||
|
"⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠔⠊⠉⠉⠉⠉⠉⠐⢦⡄⠄⠄⠄⠄⠄⠄⠄⠄",
|
||||||
|
"⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⡐⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠘⣆⠄⠄⠄⠄⠄⠄⠄",
|
||||||
|
"⠄⠄⠄⠄⠄⠄⠄⠄⢀⠖⠁⢀⣾⣆⡰⠶⡷⠶⣀⣾⣄⠄⠈⣆⠄⠄⠄⠄⠄⠄",
|
||||||
|
"⠄⠄⡄⠄⠠⢤⣤⠔⠃⠄⠄⠄⠄⠘⢧⣤⢣⣤⠋⠄⠄⠄⠄⠈⠣⢤⡠⠄⠄⠄",
|
||||||
|
"⠄⠄⠘⠦⡀⠄⠄⠄⠄⠄⠄⠄⢻⡟⠻⣿⣿⡿⠻⡟⠃⠄⠄⠄⠄⠄⠄⠄⡀⠞",
|
||||||
|
"⠄⠄⠄⠄⠉⢢⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠁⠄⠄⠄⠄⠄⠄⠄⠄⠄⡠⠊⠄⠄",
|
||||||
|
"⠄⠄⠄⠄⠄⠄⠈⠢⣤⣤⣴⣶⡶⢶⣶⣶⣶⣆⢒⣤⣤⠄⢠⠤⠤⠚⠄⠄⠄⠄",
|
||||||
|
"⠄⠄⠄⠄⠄⢀⣠⣾⣿⣿⣿⣿⣎⢻⣿⠁⡀⣿⡎⣿⣿⣀⣃⠧⡀⠄⠄⠄⠄⠄",
|
||||||
|
"⠄⠄⣠⣶⣾⣿⣿⣿⣿⣿⣿⣿⡹⡼⢿⣠⠵⠿⣑⢿⣟⣛⠤⣩⡁⠄⠄⠄⠄⠄",
|
||||||
|
"⢠⣿⣿⣿⢏⡜⡻⣷⡽⣿⣷⣭⣿⣮⣽⣯⣽⣿⣿⣷⣤⣾⡿⠟⠃⠄⠄⠄⠄⠄",
|
||||||
|
"⠻⣿⣿⣿⣌⢷⣙⠾⠯⣒⡿⠭⣝⣛⣛⣛⣛⠛⠭⠭⠟⢣⠌⠄⠄⠄⠄⠄⠄⠄",
|
||||||
|
"⠄⠻⣿⣿⣿⣮⣟⠷⣦⣤⣝⣛⠲⠶⠶⠒⢂⣀⠠⠄⠐⠁⠄⠄⠄⠄⠄⠄⠄⠄",
|
||||||
|
"⠄⠄⠄⠙⠿⠿⢿⣿⡷⠶⠭⠭⠭⠵⠶⠒⠋⠉⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄",
|
||||||
|
}, {
|
||||||
|
"⠀⠀⠉⠛⠛⠻⢿⣿⣿⣿⣿⣿⣿⣶⣶⣶⣶⣶⣶⣶⣶⣦⣤⣄⡀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠚⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡄⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠘⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⢿⣿⣿⣿⠟⠛⠋⠉⠉⠉⠙⣿⣿⣿⣿⣶⣀⠀",
|
||||||
|
"⠀⠀⠀⠰⠶⠿⢰⣿⣶⣦⠀⠀⢸⣿⣿⣦⡄⠀⢀⣴⣾⣿⣿⣿⡿⠿⣿⣿⣿⠇",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠻⠿⠃⠀⠀⠀⣿⣿⣿⣧⠀⠀⠉⣉⣉⣩⣥⡶⠀⠀⠀⣿⡇",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠻⣿⣿⣿⣿⠀⠀⣻⣿⣿⣿⠃⠀⠀⢠⣿⠃",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠁⣴⣿⣿⣿⠟⠃⡀⠀⢠⣿⠟⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣤⣄⠀⣤⣤⣤⢰⣿⡦⣿⠀⣿⣿⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠛⠛⠛⠀⠛⠛⠋⠈⠉⠀⠀⢀⣿⣿⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢴⡆⣤⣤⣄⡄⢀⣀⣀⢀⣀⢀⡄⠀⢨⣿⣿⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠃⣿⣿⣿⠇⣿⣿⡋⣿⠏⠛⣃⣤⣾⣿⣿⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣤⣤⣄⣠⣤⣠⣴⣶⣾⣿⣿⣿⣿⣿⣿⡀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠺⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠁",
|
||||||
|
}, {
|
||||||
|
"⠄⠄⠄⠄⠄⠄⠄⠄⢀⢀⣴⣿⣿⣷⣶⣤⣄⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄",
|
||||||
|
"⠄⠄⠄⠄⠄⢀⣤⡶⠿⢘⣥⠢⠐⠗⣹⣿⣿⣿⣤⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄",
|
||||||
|
"⠄⠄⠄⠄⠄⠘⣅⣂⠹⣪⣭⣥⣶⣿⡿⠿⢭⡻⣿⣷⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄",
|
||||||
|
"⠄⠄⢀⣤⣤⡀⠄⣭⣧⣾⡿⠿⡋⢅⡪⠅⣢⣿⡿⠟⢁⣶⣶⣶⣤⣠⣄⡀⠄⠄",
|
||||||
|
"⢠⣴⣿⣿⣟⣤⣤⡉⠭⣑⡨⢔⣊⣵⣶⡿⠛⢉⣴⡾⠿⠿⣿⣿⣿⣎⠻⣿⣦⡀",
|
||||||
|
"⣼⣧⢻⣿⣿⣿⡈⣿⢰⢰⠌⣻⣭⣭⣶⡷⣠⡤⠶⠾⠛⢓⣒⣮⣝⡻⠸⣼⣿⣿",
|
||||||
|
"⣿⣝⢶⣿⣿⣿⡃⠄⢏⣸⡄⢻⡿⣿⣟⣵⠶⢛⣛⣛⣛⡒⠦⣝⠿⣿⣦⡙⣿⡿",
|
||||||
|
"⠻⣿⣿⣿⣿⣿⣷⣦⣜⡿⣿⣄⢓⡘⠃⣴⣾⣿⣿⣿⣿⢹⣯⣶⣅⢺⣿⡇⠻⠁",
|
||||||
|
"⠄⠈⠛⠻⣿⣿⣿⣿⣿⣿⣿⡾⣿⣷⣾⣝⣻⢿⣿⣿⣿⠸⣛⣿⡟⣢⢻⣿⠄⠄",
|
||||||
|
"⠄⠄⠄⠄⠘⢿⣿⣿⣿⣿⣿⣷⣦⣭⣿⣿⣿⣦⣵⡾⢃⣾⣿⣿⢱⡿⣸⠋⠄⠄",
|
||||||
|
"⠄⠄⠄⠄⠄⠄⢻⣿⢿⣿⣿⠻⣿⣿⡿⠿⣟⣛⣉⣰⣿⣿⣿⠇⠛⠃⠄⠄⠄⠄",
|
||||||
|
"⠄⠄⠄⠄⠄⠄⠄⠉⠲⣝⣫⣓⡙⣿⣜⣛⣛⣛⣻⡯⠹⠛⠁⠄⠄⠄⠄⠄⠄⠄",
|
||||||
|
"⠄⠄⠄⠄⠄⠄⠄⠄⠄⠈⠙⠛⢻⡈⢿⡿⠟⠛⠁⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄",
|
||||||
|
}, {
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⣿⣿⣿⣿⣿⡿⠟⠋⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⡿⣿⣿⣾⣿⠿⠟⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣽⣿⣿⠏⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣩⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⡟⣽⣿⡏⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠻⣿⣿⣾⣿⣿⣿⣿",
|
||||||
|
"⣿⡿⢃⣾⡿⠏⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣇⣾⣿⠅⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢽⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⡗⠀⠀⠀⠀⠀⠀⢀⣸⣿⣿⣿⣶⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣶⣿⣿⣿⣧⣤⣄⡀⠀⠀⠀⠀⠀⠘⣿⣿⡿⢿",
|
||||||
|
"⣿⣿⣿⠀⠀⠀⠀⣠⣴⡿⠟⠛⠛⠿⢿⣿⣿⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⣿⣿⣿⡿⠛⠉⠉⠉⠙⠻⣷⣄⠀⠀⠀⠀⣻⣿⡆⢸",
|
||||||
|
"⣰⣿⡷⠀⠀⠀⣼⠟⠁⠀⢀⣀⡀⠀⠀⠙⢿⣿⣿⣿⡄⠀⠀⠀⠀⠀⠀⢠⣿⣿⡟⣻⠏⠀⠀⢀⣤⣤⡀⠀⠈⢻⡄⠀⠀⠀⢸⣿⣧⢠",
|
||||||
|
"⢻⣿⠇⠀⠀⢰⡟⠀⠀⢠⣿⣿⣿⡆⠀⠀⠘⡧⠙⢿⣿⠀⠀⠀⠀⠀⠀⣾⡿⠋⠀⣿⠀⠀⠀⣿⣿⣿⡿⠀⠀⠈⡗⠀⠀⠀⠘⣿⣿⢸",
|
||||||
|
"⣼⣿⡆⠀⠀⠀⣧⠀⠀⠀⠙⠿⠟⠁⠀⠀⣸⣇⡀⠀⠁⠀⠀⠀⠀⠀⠀⠈⠀⣠⣶⣿⡄⠀⠀⠉⠛⠛⠁⠀⠀⣸⠇⠀⠀⠀⢠⣿⣿⢸",
|
||||||
|
"⡿⣿⣷⠀⠀⠀⠘⢷⣀⠀⠀⠀⠀⠀⢀⡴⠋⠻⣿⣶⣄⠀⠀⠀⠀⠀⣀⣴⣾⠟⠁⠀⠙⣦⡀⠀⠀⠀⠀⣀⡴⠋⠀⠀⠀⠀⢨⣿⡟⢸",
|
||||||
|
"⣿⣿⣿⣷⣧⣤⠤⠶⠿⠷⠶⢶⣶⣾⣯⣀⣀⣀⣈⣛⣿⣿⣶⣤⣤⣤⡟⠋⠁⠀⠀⠀⢠⣿⣿⣿⣶⣿⣿⣷⣶⣤⣤⣤⣼⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⡿⠛⠀⠀⠀⠀⠀⠀⢸⣿⠉⠉⠉⠉⠙⠛⠛⠛⠛⠛⠛⠛⠛⠀⠀⠀⠀⠀⠀⠘⠛⠈⠉⠉⣭⡍⠛⠛⠛⠛⠛⠛⠉⠻⣿⣿⣿",
|
||||||
|
"⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⣦⣄⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣠⣤⣶⣿⣇⠀⠀⠀⠀⠀⠀⠀⠀⢹⣿⣿",
|
||||||
|
"⣿⣿⡁⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⡀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿",
|
||||||
|
"⣿⣿⣷⡄⠀⠀⠀⠀⠀⢀⣼⡿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠛⣿⣷⡀⠀⠀⠀⠀⠀⣠⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣶⣤⣤⣤⣶⣿⡟⠁⠀⠈⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠋⠀⠀⠈⠹⣿⣷⣶⣤⣶⣾⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⡄⠀⠀⠀⠀⠀⠉⠛⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠿⠛⠋⠀⠀⠀⠀⠀⢀⣠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⡀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠉⠉⠉⠉⠉⠀⠀⠀⠀⠀⠀⠀⢀⣤⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣤⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣠⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣶⣶⣶⣶⣶⣶⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
}, {
|
||||||
|
"⣿⣿⣿⣿⣿⠿⠿⠛⠛⠻⠿⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⠃⣠⣴⣶⣾⣿⣿⣷⣶⣦⣤⣈⠙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⡇⢰⣿⣿⡿⠟⠛⠛⠛⠻⢿⣿⣿⣶⠀⠿⠿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⡇⢸⣿⡇⠀⠀⠀⠀⠀⣶⡀⠹⣿⣿⡇⢀⣶⣶⠈⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⠃⣼⣿⣷⣄⣀⠀⠀⠀⠛⠃⣀⣿⣿⣧⠀⣿⣿⡇⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⠀⣿⣿⣿⣿⣿⣿⣿⣶⣾⣿⣿⣿⣿⣿⠀⣿⣿⠃⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⣿⡟⠀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠐⠋⢀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣆⠀⠀⠀⠤⠄⠀⠀⠀⠀⠈⠉⠉⠙⠃⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⠇⠀⢠⡆⠀⠀⠐⣶⠀⢠⣦⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⠀⠀⣿⡇⠀⠀⠛⠛⠀⣠⡇⠀⠀⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⡇⠀⠀⣿⡟⠁⢰⡟⠀⠾⠿⠛⠀⠀⠛⠋⠉⠉⠉⠉⠉⠉⠉⠙⠛⠿⢿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣦⡀⠘⠀⠾⣿⣧⣤⣤⣶⡶⠀⠀⣿⣿⣿⣿⡀⢀⠉⠉⠁⢲⣦⣤⡄⢹⣿⣿",
|
||||||
|
"⣿⣿⣉⠉⠁⢠⠀⠐⠀⠌⠙⠛⠛⠋⠀⠀⣈⣉⣁⣀⣄⠈⠛⠻⠿⠿⠿⠟⢁⣼⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣶⣶⣾⣶⣶⣶⣿⣿⣿⣿⣿⣷⣶⣶⣶⣶⣶⣶⣿⣿⣿⣿",
|
||||||
|
}, {
|
||||||
|
"⠄⠄⠄⠄⠄⢀⣴⣾⣿⣿⣿⣶⣶⣤⣄⡀⠄⢀⣤⣴⣶⣶⣶⣦⡀⠄⠄⠄⠄⠄",
|
||||||
|
"⠄⠄⠄⠄⣰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⣾⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀⠄⠄⠄",
|
||||||
|
"⠄⠄⢀⣼⣿⣿⠿⣛⣛⣛⣛⣛⠿⣿⣯⣼⣿⡿⠟⣛⣛⣛⣛⣛⠿⢿⣿⣄⠄⠄",
|
||||||
|
"⠄⢠⣿⢿⡫⢞⣫⣥⣴⣶⣶⣦⣭⡲⣝⣟⡥⣚⣭⣥⣶⣶⣬⣭⣟⡳⣼⣻⣧⡀",
|
||||||
|
"⠄⣿⠛⣮⠗⠉⠁⠐⠶⠄⠰⠶⠭⢉⣿⣿⣃⠉⠵⠶⠄⠰⠖⠂⠉⠓⢮⣟⠻⡇",
|
||||||
|
"⢸⣿⣿⣁⣰⣿⡭⠵⠶⠟⣛⣉⠴⠿⣣⣇⡿⠶⣍⣑⠻⠷⠾⢭⣤⣷⣈⣹⣿⡇",
|
||||||
|
"⠄⠻⣿⣟⣻⢯⣍⣛⣛⣿⢭⣐⣭⣿⣿⣿⣿⣧⣗⣨⢿⣛⣛⣛⣭⡿⣟⣿⡿⠄",
|
||||||
|
"⠄⠄⣀⣍⡛⠿⠿⢿⣿⣿⣿⣿⠿⠿⣿⣿⣿⣟⠿⣿⣿⣿⣿⣿⣿⣿⡿⣛⠄⠄",
|
||||||
|
"⠄⣾⣿⣿⣿⣿⣶⣶⣦⣬⣥⣴⣶⣿⣿⣿⣿⣿⣷⣬⣛⣛⣛⣛⣭⣭⣶⣿⣦⠄",
|
||||||
|
"⠄⣿⡈⠿⠟⠁⣀⣤⣄⣀⣐⡲⠶⠶⠶⠶⠶⠶⠶⠶⠶⠶⠶⣶⠉⣿⢻⣿⣿⠄",
|
||||||
|
"⢀⣈⣤⣾⣏⣿⣿⣿⣿⢛⡭⠭⠤⡘⠸⢸⠃⣿⡇⣿⡇⡿⢇⠜⣠⢧⠞⣽⣿⠄",
|
||||||
|
"⣾⡿⢹⣿⡿⠉⣿⣿⡟⡜⣢⣭⡒⢉⢠⢸⡄⣭⡅⠗⣢⠖⣡⡞⣥⣾⣾⠟⠁⠄",
|
||||||
|
"⣿⡇⣾⣿⡇⣴⣿⣿⣇⢶⣿⡷⠚⣬⣬⣬⣷⣶⡾⢛⣽⣾⣿⣿⡿⠛⠁⠄⠄⠄",
|
||||||
|
"⢟⡇⠿⠿⠇⣛⣭⣭⣍⢰⢆⣺⢨⣭⣭⣭⣥⣶⣿⡿⠿⠟⠋⠉⠄⠄⠄⠄⠄⠄",
|
||||||
|
"⠈⠛⠈⠿⠿⣙⣭⣥⣤⣤⣴⣾⡇⣛⣛⣛⣛⣩⣥⣴⣿⣿⣿⣷⣦⣤⣄⣀⠄⠄",
|
||||||
|
}, {
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠿⠟⠛⠛⠛⠛⠛⠛⠛⡛⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠛⠛⠉⠁⠀⠀⠀⠀⠀⠀⠈⠒⠀⠀⠀⠈⠑⠂⠈⠙⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⡿⠛⠷⠤⣄⠈⠛⠦⣀⠀⠑⠂⠀⠀⠀⠀⠀⠐⠂⠀⠀⠀⠀⠀⠀⠙⠒⠤⣘⣯⡻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⡿⠓⠢⢤⣀⠀⠀⠙⢦⡀⠈⠓⢤⡀⠀⠀⠉⠐⠠⢀⠀⠀⠈⠐⠄⡀⠈⠢⡀⠀⠀⠹⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⡷⡶⠤⣄⡈⠳⣤⡀⠀⠙⠲⣄⡀⠈⠓⠤⣀⡀⠀⠀⠑⠂⠀⠀⠀⢀⡐⠀⣈⣁⣠⡀⡻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⡿⠉⠻⣷⣤⡙⢦⣤⣍⣓⣦⣰⣶⡽⣷⣶⡟⠛⠿⠿⠶⠟⠛⠛⠛⠛⠋⠉⠉⠋⠈⠉⠙⠉⠉⠛⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⠃⠀⠀⠀⠉⠛⢦⣙⡄⠀⠉⠉⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⠏⠀⢀⡀⠀⣀⣀⠀⠈⠏⠀⠀⠀⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀⢹⡄⠀⠀⠀⠀⠀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⡀⣦⣀⣤⣶⣒⣶⣤⣀⠀⠀⠀⠀⠀⠀⢿⠀⢀⣠⡶⠛⠉⠻⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⠙⠚⠛⣦⠤⡤⠬⡙⠓⠦⠀⠀⠀⠀⢸⡇⢿⡉⠀⠒⠢⡄⢹⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⠇⠀⠆⠀⣻⣛⣂⣤⠜⠀⠀⠀⠀⠀⠀⠘⣏⠳⣽⣤⡴⠦⡌⡄⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⠏⠀⡌⠀⠀⠈⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡏⠳⡄⢸⡇⠀⢀⠇⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⡟⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣴⡋⠹⣗⡙⠻⡇⠀⠈⣰⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⠁⠀⠀⠀⠀⠤⢄⠀⠀⠀⠀⠀⠀⠀⡜⢿⠀⠹⢦⡀⢨⡁⣇⢀⣼⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣦⣤⣤⣶⣤⣤⡨⠀⢰⠖⠒⢤⡀⡼⡇⠈⠳⡀⠀⠀⠀⠙⣿⡏⠘⠦⠤⠤⠤⠴⠶⠦⠴⠖⠒⠋⢙⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⡇⢠⡀⢨⡙⠦⢤⣸⠟⡆⢠⢻⠃⢷⠀⠀⠘⠦⠀⠀⠁⠈⢻⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣷⣦⣵⣄⠉⡀⠀⠈⢿⠁⢴⡾⠀⠈⢧⡀⠀⠀⠀⠀⠀⠈⢹⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣷⣿⣿⣿⣿⡟⠚⣿⠿⠶⠶⠶⣦⠃⡴⠶⠶⠶⠶⣶⠾⠷⠶⠶⠶⠶⠶⠶⣦⠀⣠⡴⠶⠛⠛⠛⠻⠿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⡟⠉⠁⠀⣿⠉⠄⢻⡀⠀⠀⠀⢸⣿⡇⠀⠀⠀⢀⣿⠀⠀⠀⠀⠀⠀⠀⠀⣿⣼⠋⠀⠀⠀⠀⠀⠀⠀⠀⠙⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⢯⠇⠀⠀⠀⣼⠀⠈⢸⣧⠀⠀⠀⠈⣿⠀⠀⠀⠀⣼⣿⠀⠀⠀⠀⠀⣀⣀⣀⣿⡏⠀⠀⠀⠀⣴⣆⠀⠀⠀⠀⢻⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⡾⢀⠀⠀⢠⠏⠀⠀⢀⣿⡄⠀⠀⠀⠟⠀⠀⠀⢰⣏⣽⠀⠀⠀⠀⠀⣿⠀⠀⠸⡇⠀⠀⠀⠀⠻⣿⣀⣀⣀⣀⣼⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣄⣸⣤⣴⠋⠄⠀⡄⠈⡻⣧⠀⠀⠀⠀⠀⠀⠀⣾⠁⢸⠀⠀⠀⠀⠀⠛⠛⠛⣷⣷⡀⠀⠀⠀⠀⠈⠛⢿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⡇⠙⠋⠈⣷⠀⠀⠀⠈⠀⠁⢹⡄⠀⠀⠀⠀⠀⢸⠇⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣷⣄⡀⠀⠀⠀⠀⠀⠈⠻⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⡀⡀⠄⠀⠀⠆⠀⠀⡀⢀⣬⣷⠀⠀⠀⠀⢀⡟⠀⠀⢸⠀⠀⠀⠀⠀⣴⣶⣶⣿⣿⣿⣿⣿⣶⣄⠀⠀⠀⠀⠀⢹⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣄⣠⣄⣀⣀⣠⣿⣿⣿⣿⠀⠀⠀⠀⢸⡇⣀⣠⣼⠀⠀⠀⠀⠀⣿⣿⣿⣿⡇⠀⠀⠀⠀⣿⣷⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⢸⣿⣿⣿⣿⠀⠀⠀⠀⠀⠛⠛⠛⢻⣷⠀⠀⠀⠀⢻⡿⠀⠀⠀⠀⢸⡟⠛⠛⠛⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⢸⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣄⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⡇⠀⠀⠀⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣤⣤⣤⣼⣿⣿⣿⣿⣦⣤⣤⣤⣤⣤⣤⣤⣼⣿⣿⣷⣦⣤⣤⣤⣤⣤⣶⣿⣿⣷⣤⣤⣤⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
}, {
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⡖⠋⠉⠉⠙⢲⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⡿⠀⠀⠀⠀⠀⠀⠃⠀⣤⡄⠀⠠⣤⠀⠀⢤⡄⡠⠤⣤⡀⡠⠤⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣇⠀⠀⠀⠀⠀⠀⠀⠀⣿⡇⠀⠀⣿⠀⠀⢸⡏⠀⠀⢸⡇⠀⠀⢹⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⣄⠀⠀⠀⠀⢀⠄⠀⢿⡇⠀⢀⣿⡀⠀⢸⡇⠀⠀⢸⡇⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠓⠒⠒⠊⠁⠀⠀⠈⠛⠒⠁⠛⠃⠐⠚⠛⠂⠐⠚⠓⠂⠐⠛⠓⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
}, {
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣤⣴⣶⣿⠿⣿⣿⠿⠿⠿⠿⠿⢿⣿⣷⣶⣶⣤⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣶⣿⣿⣿⣿⣭⣤⣤⠤⠤⢤⣀⣀⣀⣀⣀⣀⣀⡈⠉⢙⣿⣿⣿⣶⣤⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⢀⣤⣾⠟⠋⠀⠀⣀⣤⣴⣿⡿⠿⢲⣤⣤⣄⣀⣀⠀⡀⠀⠀⣠⡾⠿⠟⠛⠛⠿⢿⣿⣿⣶⣤⣤⣀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⣰⣾⠟⠁⢀⣤⣾⣿⠟⠋⣉⣀⣀⣀⣈⣉⣩⠭⠭⠭⠭⠭⠭⠭⠤⠤⠀⠀⠀⣠⣶⠿⠿⠿⠿⣿⣿⣿⣿⣶⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⢠⣾⡟⠁⣠⣾⣿⡿⠋⠀⣠⡾⠛⠋⠉⠉⠙⠛⠿⣦⡀⠀⠀⠀⠀⠀⠀⠀⢀⣴⡿⠋⠀⠀⠀⣠⣾⣿⡟⢻⣿⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⢠⣿⠏⠠⠞⠛⠛⠋⠀⢀⣾⠋⠀⠀⠀⠀⠀⠀⠀⠀⠸⣷⠀⠀⠀⠀⠀⠀⠀⣾⠏⠀⠀⠀⠀⠀⠙⠻⠿⠁⢸⣿⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⣾⡿⠀⠀⠀⠀⠀⠀⠀⣸⡏⠀⣀⣤⣤⡀⠀⠀⠀⠀⠀⣿⡄⠀⠀⠀⠀⠀⠠⣏⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⢠⣿⠃⠀⠀⠀⠀⠀⢰⣶⣿⡇⠀⣿⣿⣿⡿⠂⠀⠀⠀⠀⣿⠃⠀⠀⠀⠀⠀⠀⢿⣄⠀⠀⠀⠀⠀⠀⠀⣀⣼⠏⣿⡇⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⢸⣿⠀⠀⠀⠀⠀⠚⠛⢛⣿⣿⣤⡙⠛⠋⠀⠀⠀⠀⢀⣼⠟⠀⠀⠀⠀⠀⠀⠀⠈⠙⠛⠳⣶⣶⠿⠛⠛⠛⠿⣦⣿⣿⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⣾⡇⠀⠀⠀⠀⠀⠀⠀⠞⠉⠀⠈⠛⠿⠶⣦⣤⣴⡾⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣴⠟⠁⢀⣀⣤⣀⡀⠀⠙⢿⣧⠀⠀⠀",
|
||||||
|
"⠀⠀⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⢤⣤⣤⣤⣤⡤⠴⠖⢻⣿⠃⢀⣴⡿⠉⠉⠉⠻⣦⠀⠀⢿⣧⠀⠀",
|
||||||
|
"⠀⠀⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣤⣤⣤⣤⣤⣤⠤⠖⠀⣠⣿⠃⠀⣼⡿⣿⡟⢲⡶⣤⣿⣆⠀⢸⣿⠀⠀",
|
||||||
|
"⠀⠀⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠻⠿⢯⣥⣤⣤⣤⠖⠀⣿⡏⠀⢰⣿⣀⣿⣀⣸⣀⣿⣉⣿⠀⢸⣿⠀⠀",
|
||||||
|
"⠀⠀⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⣤⣤⣤⣤⣤⣄⣀⣀⠀⣿⡇⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⣿⠂⣼⡇⠀⠀",
|
||||||
|
"⠀⠀⢸⣇⠀⢠⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣧⠀⢸⡇⠀⠀⠀⠀⠀⠀⢰⡿⢠⣿⠁⠀⠀",
|
||||||
|
"⠀⠀⠘⣿⡀⠈⣧⠀⠸⡆⠀⢤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⠀⢸⡇⠀⠀⠀⠀⠀⢠⣿⠁⣾⡇⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⢸⣧⠀⠸⣧⠀⣷⠀⠀⠳⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⠀⢸⡇⠀⠀⠀⠀⠀⣾⡇⠀⣿⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⢿⡄⠀⠘⣷⣻⡇⠀⠀⠙⢦⠀⠀⠀⠀⠀⠤⣤⣤⣤⣀⠀⠀⠀⠀⠀⠀⠀⢸⣿⠀⣾⡇⠀⠀⠀⠀⠀⣿⡇⠀⣿⡇⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠘⣿⡀⠀⠘⣿⣿⡀⠀⠀⠈⣷⠀⠀⠀⠀⠀⠐⠒⠾⠿⣷⣦⡀⠀⠀⠀⠀⣸⡏⢀⣿⠀⠀⠀⠀⠀⠀⢿⡇⠀⠸⣷⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠹⣧⠀⠀⢸⣿⣷⠀⠀⠀⢻⠀⠀⠀⠀⠀⠀⠐⠲⢶⣬⡙⠻⣦⠀⠀⢀⡿⠁⢸⡟⠉⠙⠓⠲⣄⠀⢸⣷⠀⠀⡇⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⢹⣇⠀⠀⢻⡟⣧⠀⠀⠸⣄⠀⠀⠀⠀⢀⣀⣀⠀⠈⠻⢦⣄⠀⠀⣾⡇⠀⣿⡇⠀⠀⠀⠀⠈⢷⡀⣿⠀⠀⡇⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⢿⣆⠀⠈⢷⡘⣧⠀⠀⠈⠳⣄⠀⠀⠀⠉⠉⠛⠲⣦⡀⠙⠷⠀⣿⠀⠀⣿⠶⠶⡶⠶⡶⢶⠶⢿⣿⠀⠀⡇⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠈⢿⣆⠀⠀⠻⣿⡷⣤⣀⠀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠙⠷⣄⠀⣿⠀⠀⢿⣧⣸⣧⣤⡇⢸⣆⣼⡏⠀⢀⡇⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣧⡀⠀⠈⠳⣄⠉⠓⢦⣀⠈⠻⢦⡀⠀⠀⠀⠀⠀⠈⢷⣿⠀⠀⠘⣿⣅⠀⠈⠉⢙⣻⡟⠀⠀⣼⡇⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣦⡀⠀⠈⠙⠶⣤⣽⣿⣦⣄⡀⠀⠀⠀⠀⠀⠀⠀⢿⣇⠀⠀⠈⠙⠻⠿⠿⠟⠋⠀⠀⣼⡿⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠻⢷⣦⣀⠀⠀⠈⠙⠻⠿⢿⣿⣶⣶⡶⠶⠶⣤⣼⣿⣷⣄⣀⠀⠀⠀⠀⢀⣀⣤⡾⠋⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠿⣶⣤⣄⡀⠀⠀⠈⠉⠙⠛⠓⠶⠶⠶⠆⠀⠉⠛⠛⢻⣾⣿⡿⠟⠋⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠿⢿⣶⣦⣄⡀⠀⠀⠀⠀⠀⢀⣶⣶⣶⡶⠟⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠙⠻⢷⣶⣶⣶⣶⠾⠟⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
}, {
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣤⣤⣤⣤⣤⣶⣦⣤⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⡿⠛⠉⠙⠛⠛⠛⠛⠻⢿⣿⣷⣤⡀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⠋⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⠈⢻⣿⣿⡄⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⣸⣿⡏⠀⠀⠀⣠⣶⣾⣿⣿⣿⠿⠿⠿⢿⣿⣿⣿⣄⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⣿⣿⠁⠀⠀⢰⣿⣿⣯⠁⠀⠀⠀⠀⠀⠀⠀⠈⠙⢿⣷⡄⠀",
|
||||||
|
"⠀⠀⣀⣤⣴⣶⣶⣿⡟⠀⠀⠀⢸⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀⣿⣷⠀ ",
|
||||||
|
"⠀⢰⣿⡟⠋⠉⣹⣿⡇⠀⠀⠀⠘⣿⣿⣿⣿⣷⣦⣤⣤⣤⣶⣶⣶⣶⣿⣿⣿⠀",
|
||||||
|
"⠀⢸⣿⡇⠀⠀⣿⣿⡇⠀⠀⠀⠀⠹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠃⠀",
|
||||||
|
"⠀⣸⣿⡇⠀⠀⣿⣿⡇⠀⠀⠀⠀⠀⠉⠻⠿⣿⣿⣿⣿⡿⠿⠿⠛⢻⣿⡇⠀⠀",
|
||||||
|
"⠀⣿⣿⠁⠀⠀⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣧⠀⠀",
|
||||||
|
"⠀⣿⣿⠀⠀⠀⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⠀⠀",
|
||||||
|
"⠀⣿⣿⠀⠀⠀⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⠀⠀",
|
||||||
|
"⠀⢿⣿⡆⠀⠀⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⡇⠀⠀",
|
||||||
|
"⠀⠸⣿⣧⡀⠀⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⠃⠀⠀",
|
||||||
|
"⠀⠀⠛⢿⣿⣿⣿⣿⣇⠀⠀⠀⠀⠀⣰⣿⣿⣷⣶⣶⣶⣶⠶⠀⢠⣿⣿⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⣿⣿⠀⠀⠀⠀⠀⣿⣿⡇⠀⣽⣿⡏⠁⠀⠀⢸⣿⡇⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⣿⣿⠀⠀⠀⠀⠀⣿⣿⡇⠀⢹⣿⡆⠀⠀⠀⣸⣿⠇⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⢿⣿⣦⣄⣀⣠⣴⣿⣿⠁⠀⠈⠻⣿⣿⣿⣿⡿⠏⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠈⠛⠻⠿⠿⠿⠿⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
}, {
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣴⣆⣠⣤⠀⠀⠀⠀⠀⠀⠀ ",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣻⣿⣯⣘⠹⣧⣤⡀⠀⠀⠀⠀⠀ ",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠛⠿⢿⣿⣷⣾⣯⠉⠀⠀⠀⠀⠀⠀ ",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⣿⠜⣿⡍⠀⠀⠀⠀⠀⠀⠀ ",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⠁⠀⠘⣿⣆⠀⠀⠀⠀⠀⠀ ",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⡟⠃⡄⠀⠘⢿⣆⠀⠀⠀⠀⠀ ",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⣿⣁⣋⣈ ⣤⣮⣿⣧⡀⠀ ",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣤⣤⣤⣤⣤⣶⣦⣤⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⡿⠛⠉⠙⠛⠛⠛⠛⠻⢿⣿⣷⣤⡀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⠋⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⠈⢻⣿⣿⡄⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⣸⣿⡏⠀⠀⠀⣠⣶⣾⣿⣿⣿⠿⠿⠿⢿⣿⣿⣿⣄⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⣿⣿⠁⠀⠀⢰⣿⣿⣯⠁⠀⠀⠀⠀⠀⠀⠀⠈⠙⢿⣷⡄⠀",
|
||||||
|
"⠀⠀⣀⣤⣴⣶⣶⣿⡟⠀⠀⠀⢸⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣷⠀",
|
||||||
|
"⠀⢰⣿⡟⠋⠉⣹⣿⡇⠀⠀⠀⠘⣿⣿⣿⣿⣷⣦⣤⣤⣤⣶⣶⣶⣶⣿⣿⣿⠀",
|
||||||
|
"⠀⢸⣿⡇⠀⠀⣿⣿⡇⠀⠀⠀⠀⠹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠃⠀",
|
||||||
|
"⠀⣸⣿⡇⠀⠀⣿⣿⡇⠀⠀⠀⠀⠀⠉⠻⠿⣿⣿⣿⣿⡿⠿⠿⠛⢻⣿⡇⠀⠀",
|
||||||
|
"⠀⣿⣿⠁⠀⠀⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣧⠀⠀",
|
||||||
|
"⠀⣿⣿⠀⠀⠀⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⠀⠀",
|
||||||
|
"⠀⣿⣿⠀⠀⠀⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⠀⠀",
|
||||||
|
"⠀⢿⣿⡆⠀⠀⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⡇⠀⠀",
|
||||||
|
"⠀⠸⣿⣧⡀⠀⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⠃⠀⠀",
|
||||||
|
"⠀⠀⠛⢿⣿⣿⣿⣿⣇⠀⠀⠀⠀⠀⣰⣿⣿⣷⣶⣶⣶⣶⠶⠀⢠⣿⣿⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⣿⣿⠀⠀⠀⠀⠀⣿⣿⡇⠀⣽⣿⡏⠁⠀⠀⢸⣿⡇⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⣿⣿⠀⠀⠀⠀⠀⣿⣿⡇⠀⢹⣿⡆⠀⠀⠀⣸⣿⠇⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⢿⣿⣦⣄⣀⣠⣴⣿⣿⠁⠀⠈⠻⣿⣿⣿⣿⡿⠏⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠈⠛⠻⠿⠿⠿⠿⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
}, {
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠋⣵⣶⣬⣉⡻⠿⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⠿⠿⠛⣃⣸⣿⣿⣿⣿⣿⣿⣷⣦⢸⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⢡⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣭⣙⠿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⡿⠿⠘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⢸⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⠋⣴⣾⣿⣿⣿⡟⠁⠄⠙⣿⣿⣿⣿⠁⠄⠈⣿⣿⣿⣿⣈⠛⢿⣿⣿",
|
||||||
|
"⣿⣿⣇⢸⣿⣿⣿⣿⣿⣿⣦⣤⣾⣿⣿⣿⣿⣦⣤⣴⣿⣿⣿⣿⣿⣷⡄⢿⣿",
|
||||||
|
"⣿⠟⣋⣠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢸⣿",
|
||||||
|
"⢁⣾⣿⣿⣿⣿⣿⡉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⣹⣿⣿⣿⣦⠙",
|
||||||
|
"⣾⣿⣿⣿⣿⣿⣿⣿⣦⣄⣤⣶⣿⣿⣿⣿⣿⣿⣷⣦⣄⣤⣾⣿⣿⣿⣿⣿⣧",
|
||||||
|
"⠘⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏",
|
||||||
|
"⣷⣦⣙⠛⠿⢿⣿⣿⡿⠿⠿⠟⢛⣛⣛⡛⠻⠿⠿⠿⣿⣿⣿⣿⠿⠟⢛⣡⣾",
|
||||||
|
}, {
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁⣠⣤⣤⣤⣤⣤⣀⣀⠉⠻⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠄⣾⣬⣽⣿⣿⣿⣿⡿⢿⣿⣆⠈⢻⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⡿⢀⣞⡉⢩⣙⣿⡿⠉⠄⣠⣤⠤⠉⠄⠄⢿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⠁⣼⣿⣿⣯⣿⣿⠁⢰⣾⣦⡤⠄⢀⣶⡀⠸⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⡏⢀⣿⣿⣿⣿⣿⠟⠁⠄⠈⢿⣿⣿⣿⣿⡇⠄⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⠇⢸⣿⣿⡟⠛⠃⡠⠄⠄⠄⠈⣿⣿⣿⣿⡇⠄⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⠄⣿⣿⣿⣶⣾⣿⣿⣿⣤⣤⣄⣘⣿⣿⠁⡀⠄⢻⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⡇⢰⣿⣿⣿⣿⣿⣏⣉⣽⣿⣿⣿⣿⣿⣿⣿⣿⠄⢸⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⠄⣼⣿⣁⣸⣿⣿⣿⣿⣿⡿⠟⠉⠙⠋⠹⠟⠁⠄⢸⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⡏⢀⣿⣿⣿⣿⠋⢠⣤⣤⣤⣤⠈⢿⣿⣷⣦⣄⠄⠄⢸⣿⣿⣿",
|
||||||
|
"⣿⠋⣀⣤⣄⣠⣼⣿⣿⣿⣿⡀⢹⣿⣿⣿⣿⠄⢸⣿⣿⣿⣿⣿⠄⢸⣿⣿⣿",
|
||||||
|
"⣧⠄⢿⣿⣿⣿⣿⣿⣿⣿⡿⠃⢸⠿⠛⠉⣁⣠⣿⣿⣿⣿⣿⣿⠄⣼⣿⣿⣿",
|
||||||
|
"⣿⣷⣄⣉⠉⠉⢉⣉⣉⣁⣤⣾⡏⠄⣾⣿⣿⣿⣿⣿⣿⣿⣿⡟⠄⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣤⣈⠙⠛⠛⠟⠛⠛⢉⣁⣤⣾⣿⣿⣿⣿",
|
||||||
|
}, {
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠛⠛⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠘⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠛⣿⠀⠀⣄⣀⣈⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠀⢀⣤⣿⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⢿⣿⡿⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⡀⠀⠉⠀⢀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣟⡛⠛⣻⣛⡏⢹⣿⣿⣛⠛⣛⣿⠿⢿⣿⠉⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⣿⠀⡇⢈⠰⣿⣿⠀⣿⠀⣶⡆⢹⠀⡁⢾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⣤⣿⣤⣧⣼⣦⣼⣿⣤⣿⣦⣤⣴⣿⣤⣷⣤⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
}, {
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡀⠤⠲⠦⠉⠉⠉⠏⠉⠒⢄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡠⠲⠃⢀⣤⠀⠀⠀⠲⠂⠀⠠⠆⠀⠙⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⢀⡔⠁⣤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⢀⠊⠁⠀⢁⡴⠚⠉⣉⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⠠⠤⠔⠒⡄⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⡆⢰⠆⠀⠋⣠⠔⠉⠁⣀⡠⠄⠒⠂⠀⠀⠀⠀⠀⠀⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠔⠊⠁⠀⠀⠀⠀⠀⣠⡴⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⢠⡆⠀⠀⠀⡜⠁⣠⠔⠋⢁⡔⠒⠒⠤⡀⠀⠀⠀⠀⡐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠎⠀⠀⠀⢀⣀⣤⣶⡾⠋⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⡆⡶⠀⠀⢀⡜⠁⢀⣀⢸⠀⠀⠀⠀⠈⢆⠀⠀⡜⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠤⠊⠁⠀⢀⡀⣴⡿⠿⠛⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠰⡀⠀⠀⠘⠀⡞⠁⠀⠉⢇⠀⣿⣄⠀⠈⡆⠀⠕⠒⠉⣉⡒⡄⠀⠀⠀⠀⢀⠤⠊⠁⢀⡠⠔⠊⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠑⢄⡀⠀⠀⢇⠀⣤⡄⠈⢢⡈⠻⡖⢀⡞⣀⠔⠊⠁⠀⠀⠉⠐⠒⠠⢎⢁⡠⠔⠂⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠉⢂⠘⢿⣦⡇⠉⠓⢶⡫⠞⠁⣀⣤⣤⣤⣤⣤⣤⣤⠴⠛⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢡⠦⠭⡇⠀⡠⠊⠀⣠⣮⣬⣿⣿⣿⣿⣿⣯⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⠁⢀⠔⡧⠊⠀⢀⡜⠁⠙⣿⣿⣿⡿⠟⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣀⣡⠎⠀⠀⢠⠊⠀⠀⠀⣸⣿⣿⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠃⠀⠀⣰⣧⣀⣀⡠⣴⣿⣿⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢧⣤⣤⣾⡿⠿⠋⠁⠀⢹⣿⣿⣿⣿⣿⣿⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠁⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⣿⣿⣿⣿⣿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⠿⠛⠛⠛⠛⠻⢿⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡸⠀⠀⠀⠀⠀⠀⠀⡸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⠁⡰⢤⣀⣀⡄⢠⠞⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
}, {
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⠠⠤⠐⠒⠀⠉⠉⠉⠉⠉⠁⠒⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠄⠂⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⡴⠂⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⠢⠤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⠛⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠲⣦⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⡿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠙⣵⡀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⣿⠖⣒⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡖⠋⠉⠉⠙⠛⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡄⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⢀⣠⡔⡆⠀⠀⠀⢀⢔⣒⠢⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⣴⡿⡏⠀⡇⠀⠀⠀⠘⣼⣿⡇⡇⠀⠀⢀⡠⠤⢤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡁⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⣸⣿⣽⠣⠀⡇⠀⠀⠀⠐⠮⠭⠚⠀⠀⢠⡏⣶⣿⣧⢳⠀⢀⡀⠀⠀⠀⠀⠀⠀⠀⠠⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠃⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⢿⣯⢗⠀⠀⣱⠀⠀⠀⠀⠐⢗⠀⡄⡀⢎⢣⡹⠿⣣⠏⠀⠀⠉⠉⠉⠂⠀⠀⠀⠀⠀⠀⢜⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡞⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⢸⣗⡁⠀⡀⣿⣷⡀⠀⠀⠀⠀⠀⠀⠋⠀⠁⠈⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢑⢷⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⡎⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⢠⡿⠛⢳⢸⠏⠙⠿⢿⡦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡁⣿⡄⠀⠀⠀⠀⠀⢀⠀⠀⣠⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠉⠀⠀⠀⠫⠂⠀⠀⠈⠻⣮⣝⢦⣄⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡀⠄⠂⣡⡾⠟⠀⠀⠀⠀⠀⠄⠀⣠⣾⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⢷⣧⣈⠉⠑⠲⠒⠠⠤⠤⠤⠄⠂⠀⠒⠒⠀⠉⠀⠀⣐⡧⠡⠤⠤⡀⠀⠀⢀⣠⣴⣾⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠻⢿⣷⣶⣦⣤⣀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⠟⣁⠀⠀⠀⠀⢸⣴⡾⠿⠟⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠙⠛⠻⠿⣿⣶⣶⣴⣮⣿⣾⣿⣿⡴⠋⠀⠀⠀⢀⡾⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠉⣻⣿⠟⠀⠀⠀⠀⠀⠌⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⢄⡒⠶⠮⠸⠛⠀⠀⠀⠀⡠⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢈⠇⣠⠄⢀⠠⠤⠄⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠴⠔⠊⠹⡔⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
}, {
|
||||||
|
" lニヽ ",
|
||||||
|
" |= | ",
|
||||||
|
" |_ | ",
|
||||||
|
" /⌒|~ |⌒i-、",
|
||||||
|
" /| | | | |",
|
||||||
|
" |( ( ( ( |",
|
||||||
|
" | |",
|
||||||
|
" \ /",
|
||||||
|
" \ |",
|
||||||
|
}, {
|
||||||
|
"░░░░░░░░░░▀▀▀██████▄▄▄░░░░░░░░░░",
|
||||||
|
"░░░░░░░░░░░░░░░░░▀▀▀████▄░░░░░░░",
|
||||||
|
"░░░░░░░░░░▄███████▀░░░▀███▄░░░░░",
|
||||||
|
"░░░░░░░░▄███████▀░░░░░░░▀███▄░░░",
|
||||||
|
"░░░░░░▄████████░░░░░░░░░░░███▄░░",
|
||||||
|
"░░░░░██████████▄░░░░░░░░░░░███▌░",
|
||||||
|
"░░░░░▀█████▀░▀███▄░░░░░░░░░▐███░",
|
||||||
|
"░░░░░░░▀█▀░░░░░▀███▄░░░░░░░▐███░",
|
||||||
|
"░░░░░░░░░░░░░░░░░▀███▄░░░░░███▌░",
|
||||||
|
"░░░░▄██▄░░░░░░░░░░░▀███▄░░▐███░░",
|
||||||
|
"░░▄██████▄░░░░░░░░░░░▀███▄███░░░",
|
||||||
|
"░█████▀▀████▄▄░░░░░░░░▄█████░░░░",
|
||||||
|
"░████▀░░░▀▀█████▄▄▄▄█████████▄░░",
|
||||||
|
"░░▀▀░░░░░░░░░▀▀██████▀▀░░░▀▀██░░",
|
||||||
|
}, {
|
||||||
|
"⢀⡴⠑⡄⠀⠀⠀⠀⠀⠀⠀⣀⣀⣤⣤⣤⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ",
|
||||||
|
"⠸⡇⠀⠿⡀⠀⠀⠀⣀⡴⢿⣿⣿⣿⣿⣿⣿⣿⣷⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ",
|
||||||
|
"⠀⠀⠀⠀⠑⢄⣠⠾⠁⣀⣄⡈⠙⣿⣿⣿⣿⣿⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀ ",
|
||||||
|
"⠀⠀⠀⠀⢀⡀⠁⠀⠀⠈⠙⠛⠂⠈⣿⣿⣿⣿⣿⠿⡿⢿⣆⠀⠀⠀⠀⠀⠀⠀ ",
|
||||||
|
"⠀⠀⠀⢀⡾⣁⣀⠀⠴⠂⠙⣗⡀⠀⢻⣿⣿⠭⢤⣴⣦⣤⣹⠀⠀⠀⢀⢴⣶⣆ ",
|
||||||
|
"⠀⠀⢀⣾⣿⣿⣿⣷⣮⣽⣾⣿⣥⣴⣿⣿⡿⢂⠔⢚⡿⢿⣿⣦⣴⣾⠁⠸⣼⡿ ",
|
||||||
|
"⠀⢀⡞⠁⠙⠻⠿⠟⠉⠀⠛⢹⣿⣿⣿⣿⣿⣌⢤⣼⣿⣾⣿⡟⠉⠀⠀⠀⠀⠀ ",
|
||||||
|
"⠀⣾⣷⣶⠇⠀⠀⣤⣄⣀⡀⠈⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀ ",
|
||||||
|
"⠀⠉⠈⠉⠀⠀⢦⡈⢻⣿⣿⣿⣶⣶⣶⣶⣤⣽⡹⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀ ",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠉⠲⣽⡻⢿⣿⣿⣿⣿⣿⣿⣷⣜⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀ ",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣷⣶⣮⣭⣽⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀ ",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⣀⣀⣈⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⠀⠀⠀⠀⠀⠀⠀ ",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀ ",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀ ",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠻⠿⠿⠿⠿⠛⠉",
|
||||||
|
}, {
|
||||||
|
"⠀⠀⢀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⠀⠀⠀",
|
||||||
|
"⢠⣾⡿⠿⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠀",
|
||||||
|
"⢸⣿⢠⠞⣩⡄⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠛⠉⠉⠀⠀⠀⠀⠉⠛⢿⡆",
|
||||||
|
"⢸⣿⣄⣈⣉⣴⣿⣿⣿⣿⣿⣿⣿⠟⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⢸⣿⣿⣿⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⢸⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⢸⣿⣿⣿⣿⡿⠃⠀⠀⠀⠀⠀⠀⣀⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⢸⣿⣿⣿⡟⠁⠀⠀⢀⣤⣶⣿⣿⣿⣿⣿⣿⣿⣷⣤⡀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⢸⣿⣿⡏⠀⠀⢀⣴⣿⣿⣿⣿⣿⠿⠿⠿⣿⣿⣿⣿⣷⡄⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⢸⣿⠏⠀⠀⢠⣿⣿⣿⣿⠟⠁⠀⠀⣠⣶⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⢸⡟⠀⠀⢠⣿⣿⣿⡟⠁⠀⢀⣠⣾⣿⣿⣿⡿⠋⣿⣿⣿⡇⠀⠀⠀⠀⠀",
|
||||||
|
"⠘⠀⠀⠀⢸⣿⣿⣿⠁⢀⣴⣿⣿⢿⣿⠿⠋⠀⢀⣿⣿⣿⠇⠀⠀⠀⣼⠀",
|
||||||
|
"⠀⠀⠀⠀⢸⣿⣿⣿⣶⣿⣿⣿⣿⠟⠁⠀⠀⢠⣾⣿⣿⡿⠀⠀⠀⣼⣿⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⢿⣿⣿⣿⣿⣿⠟⠁⠀⣀⣠⣶⣿⣿⣿⡿⠁⠀⠀⣼⣿⣿⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⠀⠀⢀⣾⣿⣿⣿⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠙⠻⠿⣿⣿⣿⣿⣿⠿⠟⠋⠀⠀⠀⣠⣾⣿⣿⣿⣿⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⣿⣿⣿⣿⣿⣿⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⣿⣿⣿⣿⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀",
|
||||||
|
"⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣾⣿⣿⣿⣿⣿⣿⣿⠟⣋⠛⢿⣿⠀",
|
||||||
|
"⢸⣷⣤⣀⡀⠀⠀⠀⣀⣠⣤⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠞⣡⡼⢸⣿⠀",
|
||||||
|
"⠈⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣤⣥⣴⣿⠟⠀",
|
||||||
|
}, {
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⣠⣶⡾⠏⠉⠙⠳⢦⡀⠀⠀⠀⢠⠞⠉⠙⠲⡀⠀",
|
||||||
|
"⠀⠀⠀⣴⠿⠏⠀⠀⠀⠀⠀⠀⢳⡀⠀⡏⠀⠀⠀⠀⠀⢷ ",
|
||||||
|
"⠀⠀⢠⣟⣋⡀⢀⣀⣀⡀⠀⣀⡀⣧⠀⢸⠀⠀⠀⠀⠀ ⡇",
|
||||||
|
"⠀⠀⢸⣯⡭⠁⠸⣛⣟⠆⡴⣻⡲⣿⠀⣸⠀⠀OK⠀ ⡇",
|
||||||
|
"⠀⠀⣟⣿⡭⠀⠀⠀⠀⠀⢱⠀⠀⣿⠀⢹⠀⠀⠀⠀⠀ ⡇",
|
||||||
|
"⠀⠀⠙⢿⣯⠄⠀⠀⠀⢀⡀⠀⠀⡿⠀⠀⡇⠀⠀⠀⠀⡼ ",
|
||||||
|
"⠀⠀⠀⠀⠹⣶⠆⠀⠀⠀⠀⠀⡴⠃⠀⠀⠘⠤⣄⣠⠞⠀ ",
|
||||||
|
"⠀⠀⠀⠀⠀⢸⣷⡦⢤⡤⢤⣞⣁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⢀⣤⣴⣿⣏⠁⠀⠀⠸⣏⢯⣷⣖⣦⡀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⢀⣾⣽⣿⣿⣿⣿⠛⢲⣶⣾⢉⡷⣿⣿⠵⣿⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⣼⣿⠍⠉⣿⡭⠉⠙⢺⣇⣼⡏⠀⠀⠀⣄⢸⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⣿⣿⣧⣀⣿.........⣀⣰⣏⣘⣆⣀⠀⠀ ",
|
||||||
|
}, {
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⠀⠰⠛⠻⢿⣿⠿⠿⠟⡿⠿⢿⣿⠿⠿⣿⠃⠀⠟⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⣴⡄⠀⠘⡇⠀⣤⣤⡇⠀⣼⣿⠀⢠⡏⠀⢠⣦⠀⠀⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀⠀⠛⠃⠀⡼⠀⠀⣿⣿⠀⠀⠛⠃⠀⢸⠁⠀⣼⡏⠀⢠⡟⠉⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣶⣶⣶⣾⣷⣶⣾⣿⣿⣷⣶⣶⣶⣶⣿⣶⣶⣿⣷⣶⣾⣷⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||||
|
}, {
|
||||||
|
"⠄⠄⠄⠄⠄⠄⢀⣠⣤⣶⣶⣶⣤⣄⠄⠄⢀⣠⣤⣤⣤⣤⣀⠄⠄⠄⠄⠄⠄⠄",
|
||||||
|
"⠄⠄⠄⠄⢠⣾⣿⣿⣿⣿⠿⠿⢿⣿⣿⡆⣿⣿⣿⣿⣿⣿⣿⣷⡄⠄⠄⠄⠄⠄",
|
||||||
|
"⠄⠄⠄⣴⣿⣿⡟⣩⣵⣶⣾⣿⣷⣶⣮⣅⢛⣫⣭⣭⣭⣭⣭⣭⣛⣂⠄⠄⠄⠄",
|
||||||
|
"⠄⠄⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣭⠛⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀⠄",
|
||||||
|
"⣠⡄⣿⣿⣿⣿⣿⣿⣿⠿⢟⣛⣫⣭⠉⠍⠉⣛⠿⡘⣿⠿⢟⣛⡛⠉⠙⠻⢿⡄",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣶⣶⣶⣶⣶⣶⣶⣭⣍⠄⣡⣬⣭⣭⣅⣈⣀⣉⣁⠄",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣶⣭⣛⡻⠿⠿⢿⣿⡿⢛⣥⣾⣿⣿⣿⣿⣿⣿⣿⠿⠋⠄",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠿⣩⣵⣾⣿⣿⣯⣙⠟⣋⣉⣩⣍⡁⠄⠄⠄",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣿⣿⣿⣿⣷⡄⠄⠄",
|
||||||
|
"⣿⣿⣿⣿⣿⣿⡿⢟⣛⣛⣛⣛⠿⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠿⡀⠄",
|
||||||
|
"⣿⣿⣿⣿⣿⡟⢼⣿⣯⣭⣛⣛⣛⡻⠷⠶⢶⣬⣭⣭⣭⡭⠭⢉⡄⠶⠾⠟⠁⠄",
|
||||||
|
"⣿⣿⣿⣿⣟⠻⣦⣤⣭⣭⣭⣭⣛⣛⡻⠿⠷⠶⢶⣶⠞⣼⡟⡸⣸⡸⠿⠄⠄⠄",
|
||||||
|
"⣛⠿⢿⣿⣿⣿⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠷⡆⣾⠟⡴⣱⢏⡜⠆⠄⠄⠄",
|
||||||
|
"⣭⣙⡒⠦⠭⣭⣛⣛⣛⡻⠿⠿⠟⣛⣛⣛⣛⡋⣶⡜⣟⣸⣠⡿⣸⠇⣧⡀⠄⠄",
|
||||||
|
"⣿⣿⣿⣿⣷⣶⣦⣭⣭⣭⣭⣭⣭⣥⣶⣶⣶⡆⣿⣾⣿⣿⣿⣷⣿⣸⠉⣷⠄⠄",
|
||||||
|
},{
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣶⣶⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⢸⣄⠀⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⠛⠀⠀⠹⣧⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⠀⠀⣿⠀⠀⠀⠀⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⢠⠀⡄⠀⣿⠀⢀⣤⣤⠀⠀",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⢰⡏⠚⠀⠃⠀⣿⣴⠞⠉⢹⠀⠀",
|
||||||
|
"⠀⣀⡀⠀⠀⠀⠀⢀⣸⠇⠀⠀⠀⠀⠈⠀⠀⣀⡿⠀⠀",
|
||||||
|
"⢸⣟⠛⢳⣤⣤⡶⠛⠃⠀⣠⠀⠀⠀⠚⣶⡾⠟⠀⠀⠀",
|
||||||
|
"⠀⠉⢷⣤⣀⣀⣀⣀⣠⡾⠻⣧⡀⠀⠀⢘⣷⣄⣀⣤⣄",
|
||||||
|
"⠀⠀⠀⠈⠉⠉⠉⠉⠉⠀⠀⠘⠻⣦⣤⣈⣁⣀⣠⣾⠋",
|
||||||
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠉⠉⠉⠀⠀",
|
||||||
|
} }
|
||||||
|
|
173
data/nvim/lua/plugins/init.lua
Normal file
173
data/nvim/lua/plugins/init.lua
Normal file
|
@ -0,0 +1,173 @@
|
||||||
|
local fn = vim.fn
|
||||||
|
|
||||||
|
-- clone package manager if not existant
|
||||||
|
local intall_path = fn.stdpath("data").."/site/pack/packer/start/packer.nvim"
|
||||||
|
if fn.empty(fn.glob(intall_path)) > 0 then
|
||||||
|
fn.system({"git", "clone", "--depth", "1", "https://github.com/wbthomason/packer.nvim", intall_path})
|
||||||
|
vim.cmd "packadd packer.nvim"
|
||||||
|
end
|
||||||
|
|
||||||
|
local function conf(module)
|
||||||
|
return "require('plugins.config." .. module .. "')"
|
||||||
|
end
|
||||||
|
|
||||||
|
return require("packer").startup(function(use)
|
||||||
|
--packer managing itself
|
||||||
|
use "wbthomason/packer.nvim"
|
||||||
|
|
||||||
|
|
||||||
|
-- Appereance ---------------------------------------------------
|
||||||
|
-- Lelegs -------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
--statusline
|
||||||
|
use { "nvim-lualine/lualine.nvim",
|
||||||
|
requires = {"kyazdani42/nvim-web-devicons", opt = true},
|
||||||
|
config = function() require("plugins.config.lualine") end
|
||||||
|
}
|
||||||
|
|
||||||
|
--colorscheme
|
||||||
|
use { "navarasu/onedark.nvim", config = function() require("plugins.config.onedark") end}
|
||||||
|
|
||||||
|
-- nice line before lines
|
||||||
|
use { "lukas-reineke/indent-blankline.nvim", config = conf("indent-blankline")}
|
||||||
|
-- make spaces red
|
||||||
|
use { "ntpeters/vim-better-whitespace", config = conf("better-whitespace")}
|
||||||
|
|
||||||
|
-- signale für git
|
||||||
|
use { "lewis6991/gitsigns.nvim",
|
||||||
|
requires = {
|
||||||
|
'nvim-lua/plenary.nvim'
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
require("gitsigns").setup {
|
||||||
|
}
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
|
use { 'kosayoda/nvim-lightbulb', config = conf("lightbulb") }
|
||||||
|
|
||||||
|
-- dressing macht refactoring fenster schöner
|
||||||
|
use { 'stevearc/dressing.nvim' }
|
||||||
|
|
||||||
|
-- Language Support ---------------------------------------------
|
||||||
|
-- leligs -------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
--treesitter
|
||||||
|
use {
|
||||||
|
"nvim-treesitter/nvim-treesitter",
|
||||||
|
event = "BufRead",
|
||||||
|
config = conf("treesitter"),
|
||||||
|
}
|
||||||
|
|
||||||
|
--sane(I hope) default configs for a number of lsps ------------
|
||||||
|
use { "neovim/nvim-lspconfig" }
|
||||||
|
|
||||||
|
use { "ziglang/zig.vim" }
|
||||||
|
|
||||||
|
-- autocomplete wuhu -------------------------------------------
|
||||||
|
use {
|
||||||
|
"hrsh7th/nvim-cmp",
|
||||||
|
requires = { { "hrsh7th/cmp-buffer" },
|
||||||
|
{ "hrsh7th/cmp-path" },
|
||||||
|
{ "hrsh7th/cmp-cmdline" },
|
||||||
|
{ "petertriho/cmp-git" },
|
||||||
|
{ "hrsh7th/cmp-calc" },
|
||||||
|
{ "hrsh7th/cmp-nvim-lsp" },
|
||||||
|
{ "hrsh7th/cmp-nvim-lua" },
|
||||||
|
{ "hrsh7th/cmp-emoji" },
|
||||||
|
},
|
||||||
|
config = function() require("plugins.config.nvim-cmp") end
|
||||||
|
}
|
||||||
|
|
||||||
|
--snippet engine required for nvim cmp
|
||||||
|
use { "L3MON4D3/LuaSnip", after = "nvim-cmp" }
|
||||||
|
|
||||||
|
use { "saadparwaiz1/cmp_luasnip", after = "LuaSnip" }
|
||||||
|
|
||||||
|
--additional functionality for nvim cmp
|
||||||
|
-- function signature on hover
|
||||||
|
use { "ray-x/lsp_signature.nvim", after = "nvim-lspconfig",
|
||||||
|
config = function() require("lsp_signature").setup() end }
|
||||||
|
|
||||||
|
--pictograms in lsp completion
|
||||||
|
use { "onsails/lspkind-nvim" }
|
||||||
|
|
||||||
|
-- Addons ------------------------------------------------------
|
||||||
|
-- Lelugs ------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
--file browser
|
||||||
|
|
||||||
|
use {
|
||||||
|
"nvim-neo-tree/neo-tree.nvim",
|
||||||
|
branch = "v2.x",
|
||||||
|
requires = {
|
||||||
|
"nvim-lua/plenary.nvim",
|
||||||
|
"kyazdani42/nvim-web-devicons", -- not strictly required, but recommended
|
||||||
|
"MunifTanjim/nui.nvim",
|
||||||
|
},
|
||||||
|
config = conf("neotree")
|
||||||
|
}
|
||||||
|
|
||||||
|
-- window picker to use with neotree
|
||||||
|
use {
|
||||||
|
's1n7ax/nvim-window-picker',
|
||||||
|
tag = 'v1.*',
|
||||||
|
config = function()
|
||||||
|
require'window-picker'.setup()
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
||||||
|
--startup page
|
||||||
|
use {
|
||||||
|
"goolord/alpha-nvim",
|
||||||
|
requires = "kyazdani42/nvim-web-devicons",
|
||||||
|
config = function() require("plugins.config.alpha") end
|
||||||
|
}
|
||||||
|
|
||||||
|
--finder lel
|
||||||
|
use {
|
||||||
|
'nvim-telescope/telescope.nvim',
|
||||||
|
requires = { {"nvim-lua/plenary.nvim"},
|
||||||
|
{"nvim-treesitter/nvim-treesitter", opt =true},
|
||||||
|
{"kyazdani42/nvim-web-devicons", opt = true},
|
||||||
|
{"sudormrfbin/cheatsheet.nvim"},
|
||||||
|
{"nvim-telescope/telescope-fzf-native.nvim", run = 'make'} },
|
||||||
|
cmd = "Telescope",
|
||||||
|
config = conf("telescope")
|
||||||
|
}
|
||||||
|
|
||||||
|
-- make notification
|
||||||
|
use {
|
||||||
|
"rcarriga/nvim-notify"
|
||||||
|
}
|
||||||
|
|
||||||
|
-- undo tree weil badly needed
|
||||||
|
use { "simnalamburt/vim-mundo", config = conf("mundo") }
|
||||||
|
|
||||||
|
-- vim multi cursor witl malze meint es wäre gut
|
||||||
|
use { "mg979/vim-visual-multi", config = conf("vim-visual-multi") }
|
||||||
|
-- git in vim für die die es brauchen
|
||||||
|
use { "tpope/vim-fugitive" }
|
||||||
|
|
||||||
|
-- Plugins for editing wuhu
|
||||||
|
|
||||||
|
-- Surround shit pls
|
||||||
|
use { "tpope/vim-surround" }
|
||||||
|
|
||||||
|
-- Commenting
|
||||||
|
use { "numToStr/Comment.nvim", config = conf("comment") }
|
||||||
|
|
||||||
|
-- align thing according to shit
|
||||||
|
use { "junegunn/vim-easy-align" }
|
||||||
|
|
||||||
|
|
||||||
|
-- gpg edit in vim
|
||||||
|
use { "jamessan/vim-gnupg"}
|
||||||
|
|
||||||
|
|
||||||
|
end)
|
||||||
|
|
||||||
|
|
55
data/nvim/lua/plugins/utils/alpha.lua
Normal file
55
data/nvim/lua/plugins/utils/alpha.lua
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
local M = {}
|
||||||
|
local if_nil = vim.F.if_nil
|
||||||
|
|
||||||
|
M.button = function(shortcut, txt, keybind, keybind_opts)
|
||||||
|
local opts = {
|
||||||
|
position = "center",
|
||||||
|
shortcut = shortcut,
|
||||||
|
cursor = 5,
|
||||||
|
width = 50,
|
||||||
|
align_shortcut = "right",
|
||||||
|
hl_shortcut = "Keyword",
|
||||||
|
}
|
||||||
|
|
||||||
|
if keybind then
|
||||||
|
keybind_opts = if_nil(keybind_opts, {noremap = true, silent = true})
|
||||||
|
opts.keymap = { "n", shortcut, keybind, keybind_opts }
|
||||||
|
end
|
||||||
|
|
||||||
|
local function on_press()
|
||||||
|
local key = vim.api.nvim_replace_termcodes(shortcut .. '<Ignore>', true, false, true)
|
||||||
|
vim.api.nvim_feedkeys(key, "normal", false)
|
||||||
|
end
|
||||||
|
|
||||||
|
return {
|
||||||
|
type = "button",
|
||||||
|
val = txt,
|
||||||
|
on_press = on_press,
|
||||||
|
opts = opts,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
M.buttons = function(xs, spacing)
|
||||||
|
return {
|
||||||
|
type = "group",
|
||||||
|
val = xs,
|
||||||
|
opts = { spacing = if_nil(spacing, 1) }
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
M.text = function(value, hl)
|
||||||
|
return {
|
||||||
|
type = "text",
|
||||||
|
val = value,
|
||||||
|
opts = {
|
||||||
|
position = "center",
|
||||||
|
hl = hl,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
M.pad = function(lines)
|
||||||
|
return { type = "padding", val = lines }
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
27
data/pubkey.gpg
Normal file
27
data/pubkey.gpg
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
|
mDMEYUOD7hYJKwYBBAHaRw8BAQdAZEmQrmzXN4nBaWWyVtI+xMbqPeX+XsPIkoHC
|
||||||
|
DEi5oj20KVBhdHJpY2sgR3Jvc3NtYW5uIDxwYXRyaWNrZGdyb0BnbWFpbC5jb20+
|
||||||
|
iJAEExYIADgWIQReTD10gMI1/i8L0j991qcuyJlhfQUCYUOD7gIbAQULCQgHAgYV
|
||||||
|
CgkICwIEFgIDAQIeAQIXgAAKCRB91qcuyJlhfZRdAQDaKEvbf3/V5fOipZrrJwGz
|
||||||
|
6uyFcweI3YL+GTMMTO5L1gD/fLJvcbll5hoGvMSLr/Be3dh+9jzap8Nvm8rwW+R8
|
||||||
|
qQy0NlBhdHJpY2sgR3Jvc3NtYW5uIChUVU0gS0VZKSA8cGF0cmljay5ncm9zc21h
|
||||||
|
bm5AdHVtLmRlPoiQBBMWCAA4FiEEXkw9dIDCNf4vC9I/fdanLsiZYX0FAmFDhYoC
|
||||||
|
GwEFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQfdanLsiZYX2HBgD+N2qb6mfJ
|
||||||
|
5yPuuDXxR2Khufrqxm/brRvOZA27lIJsxVsBAJrkgZ+9odKPXZNFkVqHPTJlhBz/
|
||||||
|
eWLYpAdujOQveg4BuDMEYUOEUxYJKwYBBAHaRw8BAQdAZRvIGN45HGNjFPCJk8M3
|
||||||
|
llPlTi3S8ke5SKD4dvYigcOI7wQYFggAIBYhBF5MPXSAwjX+LwvSP33Wpy7ImWF9
|
||||||
|
BQJhQ4RTAhsCAIEJEH3Wpy7ImWF9diAEGRYIAB0WIQQmAxoloW2M95H4rTRFH5Xv
|
||||||
|
uL7NDwUCYUOEUwAKCRBFH5XvuL7ND2RzAP9az8cD5ywv3Kcus/X3DYEC8b+bck8P
|
||||||
|
T7gWhI+JZkDyewEAj9rS4vJy8Un7F1j80D+5eb5wfXvJNHjKABjNjLxdiw98nAEA
|
||||||
|
kVABsZMvNdL8oEdKCiudFxGmVyPGvrhRQeOiuX5tnioA/j2hHplcNPYu1aTtaq/X
|
||||||
|
slL6KnKtFgeGdgO6t6zkewMPuDMEYUOEtxYJKwYBBAHaRw8BAQdANmLGSLHQp8q6
|
||||||
|
rtDX3CFLkVBCDnX8AkYHkGI0X/uH8syIeAQYFggAIBYhBF5MPXSAwjX+LwvSP33W
|
||||||
|
py7ImWF9BQJhQ4S3AhsgAAoJEH3Wpy7ImWF9qx4BAIAdDCSY260Xw8setwJUxTpD
|
||||||
|
4xu0pR8GQtb+svs4aDj7APsHhAJPrUpIN3SnCUD+e+N04OJwF5+aPCz2KhEEg343
|
||||||
|
D7g4BGFDhOASCisGAQQBl1UBBQEBB0CZAILTjqhibKl57jUo6Iy2dIffYDfSmvcW
|
||||||
|
yHA84y+IZgMBCAeIeAQYFggAIBYhBF5MPXSAwjX+LwvSP33Wpy7ImWF9BQJhQ4Tg
|
||||||
|
AhsMAAoJEH3Wpy7ImWF9fwwBALZ9WQjp62H4IclkwiHyDig2h++dmf8xWRNF+C/v
|
||||||
|
whwYAQCkvCIDKXpFMKP+dCNT8LbP/HQ4F1f8DFC48nHWIXCaAw==
|
||||||
|
=l8kc
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
515
data/zshrc
Normal file
515
data/zshrc
Normal file
|
@ -0,0 +1,515 @@
|
||||||
|
|
||||||
|
|
||||||
|
# REQUIRES (execute as root):
|
||||||
|
# umask 022
|
||||||
|
|
||||||
|
source ${HOME}/.zsh/plugins//powerlevel10k/share/zsh-powerlevel10k/config/p10k-lean-8colors.zsh
|
||||||
|
|
||||||
|
# zsh histdb
|
||||||
|
typeset -g HISTDB_FILE="$HOME/.zsh_history.db"
|
||||||
|
|
||||||
|
# Use emacs-like key bindings by default:
|
||||||
|
bindkey -e
|
||||||
|
|
||||||
|
# Autoloading
|
||||||
|
autoload colors && colors
|
||||||
|
autoload add-zsh-hook
|
||||||
|
autoload zmv
|
||||||
|
autoload zed
|
||||||
|
if autoload history-search-end; then
|
||||||
|
zle -N history-beginning-search-backward-end history-search-end
|
||||||
|
zle -N history-beginning-search-forward-end history-search-end
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
function bind2maps() {
|
||||||
|
local i sequence widget
|
||||||
|
local -a maps
|
||||||
|
|
||||||
|
while [[ "$1" != "--" ]]; do
|
||||||
|
maps+=( "$1" )
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
shift
|
||||||
|
|
||||||
|
if [[ "$1" == "-s" ]]; then
|
||||||
|
shift
|
||||||
|
sequence="$1"
|
||||||
|
else
|
||||||
|
sequence="${key[$1]}"
|
||||||
|
fi
|
||||||
|
widget="$2"
|
||||||
|
|
||||||
|
[[ -z "$sequence" ]] && return 1
|
||||||
|
|
||||||
|
for i in "${maps[@]}"; do
|
||||||
|
bindkey -M "$i" "$sequence" "$widget"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
if (( ${+terminfo[smkx]} )) && (( ${+terminfo[rmkx]} )); then
|
||||||
|
function zle-smkx() {
|
||||||
|
emulate -L zsh
|
||||||
|
printf '%s' ${terminfo[smkx]}
|
||||||
|
}
|
||||||
|
function zle-rmkx() {
|
||||||
|
emulate -L zsh
|
||||||
|
printf '%s' ${terminfo[rmkx]}
|
||||||
|
}
|
||||||
|
function zle-line-init() {
|
||||||
|
zle-smkx
|
||||||
|
}
|
||||||
|
function zle-line-finish() {
|
||||||
|
zle-rmkx
|
||||||
|
}
|
||||||
|
zle -N zle-line-init
|
||||||
|
zle -N zle-line-finish
|
||||||
|
fi
|
||||||
|
|
||||||
|
typeset -A key
|
||||||
|
key=(
|
||||||
|
Home "${terminfo[khome]}"
|
||||||
|
End "${terminfo[kend]}"
|
||||||
|
Insert "${terminfo[kich1]}"
|
||||||
|
Delete "${terminfo[kdch1]}"
|
||||||
|
Up "${terminfo[kcuu1]}"
|
||||||
|
Down "${terminfo[kcud1]}"
|
||||||
|
Left "${terminfo[kcub1]}"
|
||||||
|
Right "${terminfo[kcuf1]}"
|
||||||
|
PageUp "${terminfo[kpp]}"
|
||||||
|
PageDown "${terminfo[knp]}"
|
||||||
|
BackTab "${terminfo[kcbt]}"
|
||||||
|
)
|
||||||
|
|
||||||
|
bind2maps emacs -- Home beginning-of-line
|
||||||
|
bind2maps emacs -- End end-of-line
|
||||||
|
bind2maps viins vicmd -- Home vi-beginning-of-line
|
||||||
|
bind2maps viins vicmd -- End vi-end-of-line
|
||||||
|
bind2maps emacs viins -- Insert overwrite-mode
|
||||||
|
bind2maps vicmd -- Insert vi-insert
|
||||||
|
bind2maps emacs -- Delete delete-char
|
||||||
|
bind2maps viins vicmd -- Delete vi-delete-char
|
||||||
|
bind2maps emacs viins vicmd -- Up up-line-or-search
|
||||||
|
bind2maps emacs viins vicmd -- Down down-line-or-search
|
||||||
|
bind2maps emacs -- Left backward-char
|
||||||
|
bind2maps viins vicmd -- Left vi-backward-char
|
||||||
|
bind2maps emacs -- Right forward-char
|
||||||
|
bind2maps viins vicmd -- Right vi-forward-char
|
||||||
|
bind2maps emacs viins -- -s '^xp' history-beginning-search-backward-end
|
||||||
|
bind2maps emacs viins -- -s '^xP' history-beginning-search-forward-end
|
||||||
|
bind2maps emacs viins -- PageUp history-beginning-search-backward-end
|
||||||
|
bind2maps emacs viins -- PageDown history-beginning-search-forward-end
|
||||||
|
bind2maps emacs viins -- -s ' ' magic-space
|
||||||
|
|
||||||
|
# Use Ctrl-left-arrow and Ctrl-right-arrow for jumping to word-beginnings on
|
||||||
|
# the command line.
|
||||||
|
# kitty: Shift-Left/Right
|
||||||
|
bind2maps emacs viins vicmd -- -s '\e[1;2C' forward-word
|
||||||
|
bind2maps emacs viins vicmd -- -s '\e[1;2D' backward-word
|
||||||
|
# kitty: Alt-Left/Right
|
||||||
|
bind2maps emacs viins vicmd -- -s '\e[1;3C' forward-word
|
||||||
|
bind2maps emacs viins vicmd -- -s '\e[1;3D' backward-word
|
||||||
|
# kitty: Ctrl-Del
|
||||||
|
bind2maps emacs viins vicmd -- -s '\e[3;5~' kill-line
|
||||||
|
# Key bindings
|
||||||
|
bind2maps emacs viins vicmd -- -s '^H' backward-kill-line
|
||||||
|
bind2maps emacs viins vicmd -- -s '^P' expand-or-complete-prefix
|
||||||
|
|
||||||
|
# Enable partial search using up and down keys for completion
|
||||||
|
bind2maps emacs viins vicmd -- -s '^[[A' history-beginning-search-backward-end
|
||||||
|
bind2maps emacs viins vicmd -- -s '^[[B' history-beginning-search-forward-end
|
||||||
|
bind2maps emacs viins vicmd -- -s '\eOA' history-beginning-search-backward-end
|
||||||
|
bind2maps emacs viins vicmd -- -s '\eOB' history-beginning-search-forward-end
|
||||||
|
|
||||||
|
|
||||||
|
typeset -g POWERLEVEL9K_PROMPT_ADD_NEWLINE=false
|
||||||
|
typeset -g POWERLEVEL9K_DIR_ANCHOR_BOLD=true
|
||||||
|
# The list of segments shown on the left. Fill it with the most important segments.
|
||||||
|
typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(
|
||||||
|
# os_icon # os identifier
|
||||||
|
context # user@hostname
|
||||||
|
dir # current directory
|
||||||
|
vcs # git status
|
||||||
|
prompt_char # prompt symbol
|
||||||
|
)
|
||||||
|
|
||||||
|
# The list of segments shown on the right. Fill it with less important segments.
|
||||||
|
# Right prompt on the last prompt line (where you are typing your commands) gets
|
||||||
|
# automatically hidden when the input line reaches it. Right prompt above the
|
||||||
|
# last prompt line gets hidden if it would overlap with left prompt.
|
||||||
|
typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(
|
||||||
|
status # exit code of the last command
|
||||||
|
command_execution_time # duration of the last command
|
||||||
|
background_jobs # presence of background jobs
|
||||||
|
direnv # direnv status (https://direnv.net/)
|
||||||
|
asdf # asdf version manager (https://github.com/asdf-vm/asdf)
|
||||||
|
virtualenv # python virtual environment (https://docs.python.org/3/library/venv.html)
|
||||||
|
anaconda # conda environment (https://conda.io/)
|
||||||
|
pyenv # python environment (https://github.com/pyenv/pyenv)
|
||||||
|
goenv # go environment (https://github.com/syndbg/goenv)
|
||||||
|
nodenv # node.js version from nodenv (https://github.com/nodenv/nodenv)
|
||||||
|
nvm # node.js version from nvm (https://github.com/nvm-sh/nvm)
|
||||||
|
nodeenv # node.js environment (https://github.com/ekalinin/nodeenv)
|
||||||
|
# node_version # node.js version
|
||||||
|
# go_version # go version (https://golang.org)
|
||||||
|
# rust_version # rustc version (https://www.rust-lang.org)
|
||||||
|
# dotnet_version # .NET version (https://dotnet.microsoft.com)
|
||||||
|
# php_version # php version (https://www.php.net/)
|
||||||
|
# laravel_version # laravel php framework version (https://laravel.com/)
|
||||||
|
# java_version # java version (https://www.java.com/)
|
||||||
|
# package # name@version from package.json (https://docs.npmjs.com/files/package.json)
|
||||||
|
rbenv # ruby version from rbenv (https://github.com/rbenv/rbenv)
|
||||||
|
rvm # ruby version from rvm (https://rvm.io)
|
||||||
|
fvm # flutter version management (https://github.com/leoafarias/fvm)
|
||||||
|
luaenv # lua version from luaenv (https://github.com/cehoffman/luaenv)
|
||||||
|
jenv # java version from jenv (https://github.com/jenv/jenv)
|
||||||
|
plenv # perl version from plenv (https://github.com/tokuhirom/plenv)
|
||||||
|
phpenv # php version from phpenv (https://github.com/phpenv/phpenv)
|
||||||
|
scalaenv # scala version from scalaenv (https://github.com/scalaenv/scalaenv)
|
||||||
|
haskell_stack # haskell version from stack (https://haskellstack.org/)
|
||||||
|
kubecontext # current kubernetes context (https://kubernetes.io/)
|
||||||
|
terraform # terraform workspace (https://www.terraform.io)
|
||||||
|
aws # aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html)
|
||||||
|
aws_eb_env # aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/)
|
||||||
|
azure # azure account name (https://docs.microsoft.com/en-us/cli/azure)
|
||||||
|
gcloud # google cloud cli account and project (https://cloud.google.com/)
|
||||||
|
google_app_cred # google application credentials (https://cloud.google.com/docs/authentication/production)
|
||||||
|
#context # user@hostname
|
||||||
|
nordvpn # nordvpn connection status, linux only (https://nordvpn.com/)
|
||||||
|
ranger # ranger shell (https://github.com/ranger/ranger)
|
||||||
|
nnn # nnn shell (https://github.com/jarun/nnn)
|
||||||
|
vim_shell # vim shell indicator (:sh)
|
||||||
|
midnight_commander # midnight commander shell (https://midnight-commander.org/)
|
||||||
|
nix_shell # nix shell (https://nixos.org/nixos/nix-pills/developing-with-nix-shell.html)
|
||||||
|
# vpn_ip # virtual private network indicator
|
||||||
|
# load # CPU load
|
||||||
|
# disk_usage # disk usage
|
||||||
|
# ram # free RAM
|
||||||
|
# swap # used swap
|
||||||
|
todo # todo items (https://github.com/todotxt/todo.txt-cli)
|
||||||
|
timewarrior # timewarrior tracking status (https://timewarrior.net/)
|
||||||
|
# taskwarrior # taskwarrior task count (https://taskwarrior.org/)
|
||||||
|
time # current time
|
||||||
|
# ip # ip address and bandwidth usage for a specified network interface
|
||||||
|
# public_ip # public IP address
|
||||||
|
# proxy # system-wide http/https/ftp proxy
|
||||||
|
# battery # internal battery
|
||||||
|
# wifi # wifi speed
|
||||||
|
# example # example user-defined segment (see prompt_example function below)
|
||||||
|
)
|
||||||
|
|
||||||
|
# No color prompt symbol
|
||||||
|
typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=
|
||||||
|
typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=
|
||||||
|
# Default prompt symbol.
|
||||||
|
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='$'
|
||||||
|
# Prompt symbol in command vi mode.
|
||||||
|
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION=':'
|
||||||
|
# Prompt symbol in visual vi mode.
|
||||||
|
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION='V'
|
||||||
|
# Prompt symbol in overwrite vi mode.
|
||||||
|
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIOWR_CONTENT_EXPANSION='▶'
|
||||||
|
|
||||||
|
# Default context color without privileges
|
||||||
|
typeset -g POWERLEVEL9K_CONTEXT_FOREGROUND=6
|
||||||
|
# Context color when running with privileges.
|
||||||
|
typeset -g POWERLEVEL9K_CONTEXT_ROOT_FOREGROUND=1
|
||||||
|
# Context color in SSH without privileges.
|
||||||
|
typeset -g POWERLEVEL9K_CONTEXT_REMOTE_FOREGROUND=2
|
||||||
|
# Context color in SSH with privileges.
|
||||||
|
typeset -g POWERLEVEL9K_CONTEXT_REMOTE_SUDO_FOREGROUND=1
|
||||||
|
|
||||||
|
# Context format when running with privileges: user@(bold)hostname.
|
||||||
|
typeset -g POWERLEVEL9K_CONTEXT_ROOT_TEMPLATE='%n%B@%m'
|
||||||
|
# Context format when in SSH without privileges: user@hostname.
|
||||||
|
typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_TEMPLATE='ssh://%n%B@%m'
|
||||||
|
# Default context format (no privileges, no SSH): user@hostname.
|
||||||
|
typeset -g POWERLEVEL9K_CONTEXT_TEMPLATE='%n%B@%m'
|
||||||
|
|
||||||
|
# No directory icons
|
||||||
|
typeset -g POWERLEVEL9K_DIR_{,NOT_WRITABLE_}VISUAL_IDENTIFIER_EXPANSION=""
|
||||||
|
# Disable instant prompt
|
||||||
|
typeset -g POWERLEVEL9K_INSTANT_PROMPT=off
|
||||||
|
|
||||||
|
# Don't show context unless running with privileges or in SSH.
|
||||||
|
# Tip: Remove the next line to always show context.
|
||||||
|
unset POWERLEVEL9K_CONTEXT_{DEFAULT,SUDO}_{CONTENT,VISUAL_IDENTIFIER}_EXPANSION
|
||||||
|
|
||||||
|
# Completion
|
||||||
|
autoload -Uz compinit
|
||||||
|
compinit
|
||||||
|
|
||||||
|
# Make sure the completion system is initialised
|
||||||
|
(( ${+_comps} )) || return 1
|
||||||
|
|
||||||
|
# Don't insert tabs when there is no completion (e.g. beginning of line)
|
||||||
|
zstyle ':completion:*' insert-tab false
|
||||||
|
|
||||||
|
# allow one error for every three characters typed in approximate completer
|
||||||
|
zstyle ':completion:*:approximate:' max-errors 'reply=( $((($#PREFIX+$#SUFFIX)/3 )) numeric )'
|
||||||
|
|
||||||
|
# don't complete backup files as executables
|
||||||
|
zstyle ':completion:*:complete:-command-::commands' ignored-patterns '(aptitude-*|*\~)'
|
||||||
|
|
||||||
|
# start menu completion only if it could find no unambiguous initial string
|
||||||
|
zstyle ':completion:*:correct:*' insert-unambiguous true
|
||||||
|
zstyle ':completion:*:corrections' format $'%{\e[0;31m%}%d (errors: %e)%{\e[0m%}'
|
||||||
|
zstyle ':completion:*:correct:*' original true
|
||||||
|
|
||||||
|
# activate color-completion
|
||||||
|
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
|
||||||
|
|
||||||
|
# format on completion
|
||||||
|
zstyle ':completion:*:descriptions' format $'\e[0;31mcompleting \e[1m%d\e[0m'
|
||||||
|
|
||||||
|
# insert all expansions for expand completer
|
||||||
|
zstyle ':completion:*:expand:*' tag-order all-expansions
|
||||||
|
zstyle ':completion:*:history-words' list false
|
||||||
|
|
||||||
|
# activate menu
|
||||||
|
zstyle ':completion:*:history-words' menu yes
|
||||||
|
|
||||||
|
# ignore duplicate entries
|
||||||
|
zstyle ':completion:*:history-words' remove-all-dups yes
|
||||||
|
zstyle ':completion:*:history-words' stop yes
|
||||||
|
|
||||||
|
# match uppercase from lowercase
|
||||||
|
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'
|
||||||
|
|
||||||
|
# separate matches into groups
|
||||||
|
zstyle ':completion:*:matches' group 'yes'
|
||||||
|
zstyle ':completion:*' group-name ''
|
||||||
|
|
||||||
|
if [[ "$NOMENU" -eq 0 ]] ; then
|
||||||
|
# if there are more than 5 options allow selecting from a menu
|
||||||
|
zstyle ':completion:*' menu select=5
|
||||||
|
else
|
||||||
|
# don't use any menus at all
|
||||||
|
setopt no_auto_menu
|
||||||
|
fi
|
||||||
|
|
||||||
|
zstyle ':completion:*:messages' format '%d'
|
||||||
|
zstyle ':completion:*:options' auto-description '%d'
|
||||||
|
|
||||||
|
# describe options in full
|
||||||
|
zstyle ':completion:*:options' description 'yes'
|
||||||
|
|
||||||
|
# on processes completion complete all user processes
|
||||||
|
zstyle ':completion:*:processes' command 'ps -au$USER'
|
||||||
|
|
||||||
|
# offer indexes before parameters in subscripts
|
||||||
|
zstyle ':completion:*:*:-subscript-:*' tag-order indexes parameters
|
||||||
|
|
||||||
|
# provide verbose completion information
|
||||||
|
zstyle ':completion:*' verbose true
|
||||||
|
|
||||||
|
# recent (as of Dec 2007) zsh versions are able to provide descriptions
|
||||||
|
# for commands (read: 1st word in the line) that it will list for the user
|
||||||
|
# to choose from. The following disables that, because it's not exactly fast.
|
||||||
|
zstyle ':completion:*:-command-:*:' verbose false
|
||||||
|
|
||||||
|
# set format for warnings
|
||||||
|
zstyle ':completion:*:warnings' format $'%{\e[0;31m%}No matches for:%{\e[0m%} %d'
|
||||||
|
|
||||||
|
# define files to ignore for zcompile
|
||||||
|
zstyle ':completion:*:*:zcompile:*' ignored-patterns '(*~|*.zwc)'
|
||||||
|
zstyle ':completion:correct:' prompt 'correct to: %e'
|
||||||
|
|
||||||
|
# Ignore completion functions for commands you don't have:
|
||||||
|
zstyle ':completion::(^approximate*):*:functions' ignored-patterns '_*'
|
||||||
|
|
||||||
|
# Provide more processes in completion of programs like killall:
|
||||||
|
zstyle ':completion:*:processes-names' command 'ps c -u ${USER} -o command | uniq'
|
||||||
|
|
||||||
|
# complete manual by their section
|
||||||
|
zstyle ':completion:*:manuals' separate-sections true
|
||||||
|
zstyle ':completion:*:manuals.*' insert-sections true
|
||||||
|
zstyle ':completion:*:man:*' menu yes select
|
||||||
|
|
||||||
|
# Search path for sudo completion
|
||||||
|
zstyle ':completion:*:sudo:*' command-path \
|
||||||
|
/usr/local/sbin \
|
||||||
|
/usr/local/bin \
|
||||||
|
/usr/sbin \
|
||||||
|
/usr/bin \
|
||||||
|
/sbin \
|
||||||
|
/bin
|
||||||
|
|
||||||
|
# provide .. as a completion
|
||||||
|
zstyle ':completion:*' special-dirs ..
|
||||||
|
|
||||||
|
# run rehash on completion so new installed program are found automatically:
|
||||||
|
function _force_rehash() {
|
||||||
|
(( CURRENT == 1 )) && rehash
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# No correction
|
||||||
|
zstyle ':completion:*' completer _oldlist _expand _force_rehash _complete _files _ignored
|
||||||
|
|
||||||
|
# use generic completion system for programs not yet defined; (_gnu_generic works
|
||||||
|
# with commands that provide a --help option with "standard" gnu-like output.)
|
||||||
|
for compcom in cp deborphan df feh fetchipac gpasswd head hnb ipacsum mv pal stow uname ; do
|
||||||
|
[[ -z ${_comps[$compcom]} ]] && compdef _gnu_generic ${compcom}
|
||||||
|
done; unset compcom
|
||||||
|
|
||||||
|
# see upgrade function in this file
|
||||||
|
compdef _hosts upgrade
|
||||||
|
|
||||||
|
# History settings
|
||||||
|
HISTFILE=~/.zsh_history
|
||||||
|
HISTSIZE=1000000
|
||||||
|
SAVEHIST=1005000
|
||||||
|
|
||||||
|
# Append history when zsh exits
|
||||||
|
setopt append_history
|
||||||
|
# Also save timestamp and duration
|
||||||
|
setopt extended_history
|
||||||
|
# Ignore commands beginning with a space
|
||||||
|
setopt hist_ignore_space
|
||||||
|
# Remove repeated duplicates
|
||||||
|
setopt hist_ignore_dups
|
||||||
|
# Remove trailing whitespace from history
|
||||||
|
setopt hist_reduce_blanks
|
||||||
|
# Save history after each command
|
||||||
|
setopt inc_append_history
|
||||||
|
# If history is full, delete oldest duplicate commands first
|
||||||
|
setopt hist_expire_dups_first
|
||||||
|
# When a history line is selected from expansion, don't execute but fill line buffer
|
||||||
|
setopt hist_verify
|
||||||
|
|
||||||
|
# Emit an error when a glob has no match
|
||||||
|
setopt nomatch
|
||||||
|
# Allow extended globbing
|
||||||
|
setopt extendedglob
|
||||||
|
# * shouldn't match dotfiles. ever.
|
||||||
|
setopt noglobdots
|
||||||
|
# Whenever a command completion is attempted, make sure the entire
|
||||||
|
# command path is hashed first.
|
||||||
|
setopt hash_list_all
|
||||||
|
|
||||||
|
# Change directory by typing the directory name
|
||||||
|
setopt auto_cd
|
||||||
|
# Automatically pushd on cd to have a directory stack
|
||||||
|
setopt auto_pushd
|
||||||
|
# Don't push the same dir twice
|
||||||
|
setopt pushd_ignore_dups
|
||||||
|
# Display PID when suspending processes as well
|
||||||
|
setopt longlistjobs
|
||||||
|
# Don't send SIGHUP to background processes when the shell exits
|
||||||
|
setopt nohup
|
||||||
|
# Report the status of background jobs immediately
|
||||||
|
setopt notify
|
||||||
|
# Allow comments in interactive shells
|
||||||
|
setopt interactive_comments
|
||||||
|
# Don't beep
|
||||||
|
setopt nobeep
|
||||||
|
|
||||||
|
# Don't try to correct inputs
|
||||||
|
setopt nocorrect
|
||||||
|
# Allow in-word completion
|
||||||
|
setopt completeinword
|
||||||
|
# Don't autocorrect commands
|
||||||
|
setopt no_correct_all
|
||||||
|
# Allow completion from within a word/phrase
|
||||||
|
setopt complete_in_word
|
||||||
|
# List choices on ambiguous completions
|
||||||
|
setopt auto_list
|
||||||
|
# Use menu completion if requested explicitly
|
||||||
|
setopt auto_menu
|
||||||
|
# Move cursor to end of word if there was only one match
|
||||||
|
setopt always_to_end
|
||||||
|
|
||||||
|
# Ignore certain commands in history
|
||||||
|
HISTORY_IGNORE_REGEX='^(.|. |..|.. |rm .*|rmd .*|git fixup.*|git unstash|git stash.*|git checkout -f.*|l .*|ll .*|ls .*)$'
|
||||||
|
function zshaddhistory() {
|
||||||
|
emulate -L zsh
|
||||||
|
[[ ! $1 =~ "$HISTORY_IGNORE_REGEX" ]]
|
||||||
|
}
|
||||||
|
|
||||||
|
# Start ssh-agent if not already running
|
||||||
|
# if ! pgrep -c -u "$USER" ssh-agent &>/dev/null; then
|
||||||
|
# ssh-agent -t 4h -s | grep -Fv 'echo' > ~/.ssh/ssh-agent-env \
|
||||||
|
# && source ~/.ssh/ssh-agent-env
|
||||||
|
# elif [[ -e ~/.ssh/ssh-agent-env ]]; then
|
||||||
|
# source ~/.ssh/ssh-agent-env
|
||||||
|
# else
|
||||||
|
# echo "error: could not start 'ssh-agent'" >&2
|
||||||
|
# fi
|
||||||
|
|
||||||
|
# Aliases
|
||||||
|
alias l="ls -lahF --group-directories-first --show-control-chars --quoting-style=escape --color=auto"
|
||||||
|
alias ll="ls -lahF --group-directories-first --show-control-chars --quoting-style=escape --color=auto"
|
||||||
|
alias t="tree -F --dirsfirst -L 2"
|
||||||
|
alias tt="tree -F --dirsfirst -L 3 --filelimit 16"
|
||||||
|
alias ttt="tree -F --dirsfirst -L 6 --filelimit 16"
|
||||||
|
|
||||||
|
alias md="mkdir"
|
||||||
|
alias rmd="rm -d"
|
||||||
|
|
||||||
|
#because 2 less keys is still only half the work
|
||||||
|
alias ta="task"
|
||||||
|
alias tat="taskwarrior-tui"
|
||||||
|
|
||||||
|
#what the fuck is going on here????
|
||||||
|
alias cpr="rsync -axHAWXS --numeric-ids --info=progress2"
|
||||||
|
|
||||||
|
alias cp="cp -vi"
|
||||||
|
alias mv="mv -vi"
|
||||||
|
alias rm="rm -I"
|
||||||
|
alias chmod="chmod -c --preserve-root"
|
||||||
|
alias chown="chown -c --preserve-root"
|
||||||
|
alias -s {md,txt,cpp,hpp,h,c}=vim
|
||||||
|
|
||||||
|
alias ip="ip --color"
|
||||||
|
alias tmux="tmux -2"
|
||||||
|
alias rg="rg -S"
|
||||||
|
|
||||||
|
#tar any number of given filen and compress them
|
||||||
|
alias comptar="tar -c -f archive.tar.xz -v -I 'pixz -9'"
|
||||||
|
|
||||||
|
#random functions
|
||||||
|
#compress all files in current directory excluding folders and already compressed files
|
||||||
|
function compressAll() {
|
||||||
|
for i in $(ls -p | grep -E -v "/|(.xz|.gz|.zip)")
|
||||||
|
do
|
||||||
|
echo "compressing: " $i
|
||||||
|
pixz -9 $i
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
#extract random file
|
||||||
|
function ex () {
|
||||||
|
if [ -f $1 ] ; then
|
||||||
|
case $1 in
|
||||||
|
*.tar.bz2) tar xjf $1 ;;
|
||||||
|
*.tar.gz) tar xzf $1 ;;
|
||||||
|
*.tar.xz) tar xfJ $1 ;;
|
||||||
|
*.bz2) bunzip2 $1 ;;
|
||||||
|
*.rar) unrar x $1 ;;
|
||||||
|
*.gz) gunzip $1 ;;
|
||||||
|
*.tar) tar xf $1 ;;
|
||||||
|
*.tbz2) tar xjf $1 ;;
|
||||||
|
*.tgz) tar xzf $1 ;;
|
||||||
|
*.zip) unzip $1 ;;
|
||||||
|
*.Z) uncompress $1;;
|
||||||
|
*.7z) 7z x $1 ;;
|
||||||
|
*) echo "'$1' cannot be extracted via ex()" ;;
|
||||||
|
esac
|
||||||
|
else
|
||||||
|
echo "'$1' is not a valid file"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Aliases when X is running
|
||||||
|
if xset q &>/dev/null; then
|
||||||
|
alias zf="zathura --fork" #pdf viewer
|
||||||
|
fi
|
||||||
|
alias vi="nvim"
|
||||||
|
alias vim="nvim"
|
||||||
|
|
||||||
|
# Set umask
|
||||||
|
umask 077
|
||||||
|
|
||||||
|
alias luamake=/home/patrick/.local/share/nvim/lua-language-server/3rd/luamake/luamake
|
45
hardware-configuration.nix
Normal file
45
hardware-configuration.nix
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
modulesPath,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [
|
||||||
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = ["xhci_pci" "nvme" "usb_storage" "usbhid" "sd_mod" "rtsx_pci_sdmmc"];
|
||||||
|
boot.initrd.kernelModules = [];
|
||||||
|
boot.supportedFilesystems = ["ntfs"];
|
||||||
|
boot.kernelModules = ["kvm-intel"];
|
||||||
|
boot.extraModulePackages = [];
|
||||||
|
|
||||||
|
fileSystems."/" = {
|
||||||
|
device = "rpool/ROOT/nixos";
|
||||||
|
fsType = "zfs";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" = {
|
||||||
|
device = "/dev/disk/by-uuid/BC47-8FB9";
|
||||||
|
fsType = "vfat";
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [];
|
||||||
|
|
||||||
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
# still possible to use this option, but it's recommended to use it in conjunction
|
||||||
|
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||||
|
networking.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.enp0s20f0u2u4.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.wlp0s20f3.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
|
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
|
||||||
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
# high-resolution display
|
||||||
|
hardware.video.hidpi.enable = lib.mkDefault true;
|
||||||
|
}
|
71
users/common/default.nix
Normal file
71
users/common/default.nix
Normal file
|
@ -0,0 +1,71 @@
|
||||||
|
{ config, pkgs, ...} :
|
||||||
|
{
|
||||||
|
|
||||||
|
programs.fzf.enable = true;
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
sqlite
|
||||||
|
bat
|
||||||
|
ripgrep
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.gpg = {
|
||||||
|
enable = true;
|
||||||
|
scdaemonSettings.disable-ccid = true;
|
||||||
|
publicKeys = [
|
||||||
|
{ source = ../../data/pubkey.gpg;
|
||||||
|
trust = 5;
|
||||||
|
}
|
||||||
|
{ source = ../../data/newpubkey.gpg;
|
||||||
|
trust = 5;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
services.gpg-agent = {
|
||||||
|
enable = true;
|
||||||
|
enableSshSupport = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.git.signing = {
|
||||||
|
key = null;
|
||||||
|
signByDefault = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.zsh = {
|
||||||
|
enable = true;
|
||||||
|
initExtra = builtins.readFile ../../data/zshrc;
|
||||||
|
plugins = [
|
||||||
|
{ name = "powerlevel10k";
|
||||||
|
file = "share/zsh-powerlevel10k/powerlevel10k.zsh-theme";
|
||||||
|
src = pkgs.zsh-powerlevel10k;
|
||||||
|
}
|
||||||
|
{ name = "fzf-tab";
|
||||||
|
file = "share/fzf-tab/fzf-tab.plugin.zsh";
|
||||||
|
src = pkgs.zsh-fzf-tab;
|
||||||
|
}
|
||||||
|
{ name = "fast-syntax-highlighting";
|
||||||
|
file = "share/zsh/site-functions/fast-syntax-highlighting.plugin.zsh";
|
||||||
|
src = pkgs.zsh-fast-syntax-highlighting;
|
||||||
|
}
|
||||||
|
{ name = "zsh-histdb";
|
||||||
|
file = "sqlite-history.zsh";
|
||||||
|
src = pkgs.fetchFromGitHub {
|
||||||
|
owner = "larkery";
|
||||||
|
repo = "zsh-histdb";
|
||||||
|
rev = "30797f0";
|
||||||
|
sha256 = "PQIFF8kz+baqmZWiSr+wc4EleZ/KD8Y+lxW2NT35/bg=";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
#{ name = "zsh-histdb-skim";
|
||||||
|
# file = "zsh-histdb-skim.zsh";
|
||||||
|
# src = pkgs.fetchFromGitHub {
|
||||||
|
# owner = "m42e";
|
||||||
|
# repo = "zsh-histdb-skim";
|
||||||
|
# rev = "v0.8.1";
|
||||||
|
# sha256 = "pcXSGjOKhN2nrRErggb8JAjw/3/bvTy1rvFhClta1Vs=";
|
||||||
|
# };
|
||||||
|
#}
|
||||||
|
];
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
11
users/common/desktop.nix
Normal file
11
users/common/desktop.nix
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...}:
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
zathura
|
||||||
|
pinentry
|
||||||
|
arandr
|
||||||
|
];
|
||||||
|
}
|
85
users/common/herbstluftwm.nix
Normal file
85
users/common/herbstluftwm.nix
Normal file
|
@ -0,0 +1,85 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
# set the modifier key to WIN
|
||||||
|
MOD = "Super";
|
||||||
|
#set the default resize step for herbstluft
|
||||||
|
RESIZE_STEP = 0.05;
|
||||||
|
TAGS = map toString (lib.lists.range 1 9);
|
||||||
|
in {
|
||||||
|
home.file.".xinitrc".source = ../../data/herbstluftwm/xinitrc;
|
||||||
|
xsession.windowManager.herbstluftwm = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.herbstluftwm.overrideAttrs (finalAttrs: previousAttrs: {
|
||||||
|
doCheck = false;
|
||||||
|
});
|
||||||
|
extraConfig = ''
|
||||||
|
herbstclient set auto_detect_monitors 1
|
||||||
|
autorandr -c
|
||||||
|
herbstclient detect_monitors
|
||||||
|
herbstclient merge_tag default
|
||||||
|
|
||||||
|
herbstclient attr theme.tiling.reset 1
|
||||||
|
herbstclient attr theme.floating.reset 1
|
||||||
|
herbstclient attr theme.active.color "#9fbc00"
|
||||||
|
herbstclient attr theme.normal.color "#454545"
|
||||||
|
herbstclient attr theme.urgent.color orange
|
||||||
|
herbstclient attr theme.inner_width 1
|
||||||
|
herbstclient attr theme.inner_color black
|
||||||
|
herbstclient attr theme.border_width 3
|
||||||
|
herbstclient attr theme.floating.border_width 4
|
||||||
|
herbstclient attr theme.floating.outer_width 1
|
||||||
|
herbstclient attr theme.floating.outer_color black
|
||||||
|
herbstclient attr theme.active.inner_color "#3E4A00"
|
||||||
|
herbstclient attr theme.active.outer_color "#3E4A00"
|
||||||
|
herbstclient attr theme.background_color "#141414"
|
||||||
|
'';
|
||||||
|
|
||||||
|
tags = TAGS;
|
||||||
|
|
||||||
|
mousebinds = {
|
||||||
|
"${MOD}-Button1" = "move";
|
||||||
|
"${MOD}-Button2" = "zoom";
|
||||||
|
"${MOD}-Button3" = "resize";
|
||||||
|
};
|
||||||
|
|
||||||
|
keybinds = import ../../data/herbstluftwm/keybinds.nix MOD TAGS;
|
||||||
|
settings = {
|
||||||
|
"default_frame_layout" = 3;
|
||||||
|
|
||||||
|
"frame_border_active_color" = "#222222";
|
||||||
|
"frame_border_normal_color" = "#101010";
|
||||||
|
"frame_bg_normal_color" = "#565656";
|
||||||
|
"frame_bg_active_color" = "#345F0C";
|
||||||
|
"frame_border_width" = 1;
|
||||||
|
"always_show_frame" = 1;
|
||||||
|
"frame_bg_transparent" = 1;
|
||||||
|
"frame_transparent_width" = 5;
|
||||||
|
"frame_gap" = 4;
|
||||||
|
|
||||||
|
"window_gap" = 0;
|
||||||
|
"frame_padding" = 0;
|
||||||
|
"smart_window_surroundings" = 0;
|
||||||
|
"smart_frame_surroundings" = 1;
|
||||||
|
"mouse_recenter_gap" = 0;
|
||||||
|
|
||||||
|
"tree_style" = "╾│ ├└╼─┐";
|
||||||
|
};
|
||||||
|
rules = [
|
||||||
|
# Focus new clients by default
|
||||||
|
"focus=on"
|
||||||
|
|
||||||
|
# Focus dialogs
|
||||||
|
"windowtype='_NET_WM_WINDOW_TYPE_DIALOG' focus=on"
|
||||||
|
|
||||||
|
# Do not manage windows of type NOTIFICATION, DOCK, DESKTOP
|
||||||
|
"windowtype~'_NET_WM_WINDOW_TYPE_(NOTIFICATION|DOCK|DESKTOP)' manage=off"
|
||||||
|
|
||||||
|
# Use pseudotiles for windows of type DIALOG, UTILITY, SPLASH
|
||||||
|
"windowtype~'_NET_WM_WINDOW_TYPE_(DIALOG|UTILITY|SPLASH)' pseudotile=on"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
79
users/common/kitty.nix
Normal file
79
users/common/kitty.nix
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
programs.kitty = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.kitty.overrideAttrs (finalAttrs: prevAttrs: {
|
||||||
|
doCheck = false;
|
||||||
|
});
|
||||||
|
font = {
|
||||||
|
package = pkgs.nerdfonts;
|
||||||
|
name = "FiraCode Nerd Font";
|
||||||
|
size = 10;
|
||||||
|
};
|
||||||
|
settings = {
|
||||||
|
# Use xterm-256color because copying terminfo-kitty is painful.
|
||||||
|
term = "xterm-256color";
|
||||||
|
|
||||||
|
# Do not wait for inherited child processes.
|
||||||
|
close_on_child_death = "yes";
|
||||||
|
|
||||||
|
# Disable ligatures.
|
||||||
|
disable_ligatures = "always";
|
||||||
|
|
||||||
|
# Modified onehalfdark color scheme
|
||||||
|
foreground = "#c9d3e5";
|
||||||
|
background = "#090a0c";
|
||||||
|
cursor = "#cccccc";
|
||||||
|
|
||||||
|
color0 = " #090a0c";
|
||||||
|
color8 = " #393e48";
|
||||||
|
color1 = " #b2555d";
|
||||||
|
color9 = " #e06c75";
|
||||||
|
color2 = " #81a566";
|
||||||
|
color10 = "#98c379";
|
||||||
|
color3 = " #ccab6e";
|
||||||
|
color11 = "#e6c17c";
|
||||||
|
color4 = " #5395cc";
|
||||||
|
color12 = "#61afef";
|
||||||
|
color5 = " #9378de";
|
||||||
|
color13 = "#c678dd";
|
||||||
|
color6 = " #cc9c66";
|
||||||
|
color14 = "#e5ab69";
|
||||||
|
color7 = " #979eab";
|
||||||
|
color15 = "#abb2bf";
|
||||||
|
|
||||||
|
selection_foreground = "#282c34";
|
||||||
|
selection_background = "#979eab";
|
||||||
|
|
||||||
|
# Disable cursor blinking
|
||||||
|
cursor_blink_interval = "0";
|
||||||
|
|
||||||
|
# Big fat scrollback buffer
|
||||||
|
scrollback_lines = "100000";
|
||||||
|
# Set scrollback buffer for pager in MB
|
||||||
|
scrollback_pager_history_size = "256";
|
||||||
|
|
||||||
|
# Don't copy on select
|
||||||
|
copy_on_select = "no";
|
||||||
|
|
||||||
|
# Set program to open urls with
|
||||||
|
open_url_with = "xdg-open";
|
||||||
|
|
||||||
|
# Fuck the bell
|
||||||
|
enable_audio_bell = "no";
|
||||||
|
};
|
||||||
|
keybindings = {
|
||||||
|
# Keyboard mappings
|
||||||
|
"shift+page_up" = "scroll_page_up";
|
||||||
|
"shift+page_down" = "scroll_page_down";
|
||||||
|
"ctrl+shift+." = "change_font_size all -2.0";
|
||||||
|
};
|
||||||
|
extraConfig = ''
|
||||||
|
# Use nvim as scrollback pager
|
||||||
|
scrollback_pager nvim -u NONE -c "set nonumber nolist showtabline=0 foldcolumn=0 laststatus=0" -c "autocmd TermOpen * normal G" -c "silent write! /tmp/kitty_scrollback_buffer | te head -c-1 /tmp/kitty_scrollback_buffer; rm /tmp/kitty_scrollback_buffer; cat"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
22
users/default.nix
Normal file
22
users/default.nix
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
home-manager = builtins.fetchTarball "https://github.com/nix-community/home-manager/archive/master.tar.gz";
|
||||||
|
in {
|
||||||
|
imports = [
|
||||||
|
(import "${home-manager}/nixos")
|
||||||
|
];
|
||||||
|
home-manager.users.patrick.imports = [./patrick.nix];
|
||||||
|
home-manager.users.root = {
|
||||||
|
imports = [ ./common ];
|
||||||
|
programs.neovim.enable = true;
|
||||||
|
programs.git.enable = true;
|
||||||
|
xdg.configFile.nvim = {
|
||||||
|
recursive = true;
|
||||||
|
source = ../data/nvim;
|
||||||
|
};
|
||||||
|
home.stateVersion = "23.05";
|
||||||
|
};
|
||||||
|
}
|
36
users/patrick.nix
Normal file
36
users/patrick.nix
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
home = {
|
||||||
|
stateVersion = "23.05";
|
||||||
|
packages = with pkgs; [
|
||||||
|
firefox
|
||||||
|
thunderbird
|
||||||
|
discord
|
||||||
|
];
|
||||||
|
};
|
||||||
|
imports = [
|
||||||
|
common/kitty.nix
|
||||||
|
common/herbstluftwm.nix
|
||||||
|
common/desktop.nix
|
||||||
|
./common ];
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
xsession.enable = true;
|
||||||
|
programs.neovim = {
|
||||||
|
enable = true;
|
||||||
|
viAlias = true;
|
||||||
|
vimAlias = true;
|
||||||
|
vimdiffAlias = true;
|
||||||
|
#withNodes = true;
|
||||||
|
};
|
||||||
|
programs.git.enable = true;
|
||||||
|
|
||||||
|
programs.zsh.enable = true;
|
||||||
|
|
||||||
|
xdg.configFile.nvim = {
|
||||||
|
recursive = true;
|
||||||
|
source = ../data/nvim;
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in a new issue