From 479cba9eac797c93ef8552e7db9f0ee28d03dd5d Mon Sep 17 00:00:00 2001 From: Simon Rieger Date: Mon, 30 Jan 2023 14:28:59 +0100 Subject: [PATCH] [+] First Commit --- desktop-bilder/background.jpg | Bin 0 -> 1080430 bytes dot_bash_profile | 45 + dot_config/alacritty/executable_alacritty.yml | 895 + .../alacritty/executable_alacritty.yml.old | 869 + dot_config/dunst/executable_alert.sh | 2 + dot_config/dunst/executable_dunstrc | 440 + dot_config/executable_gtkrc | 6 + dot_config/executable_gtkrc-2.0 | 5 + dot_config/executable_sway-mimeapps.list | 5 + dot_config/executable_user-dirs.dirs | 15 + dot_config/executable_user-dirs.locale | 1 + dot_config/fish/executable_config.fish | 17 + dot_config/fontconfig/executable_fonts.conf | 27 + .../fontconfig/executable_fonts.conf.back | 27 + .../fontconfig/executable_fonts.conf.bak | 27 + dot_config/gtk-3.0/executable_bookmarks | 7 + dot_config/gtk-3.0/executable_colors.css | 84 + dot_config/gtk-3.0/executable_gtk.css | 1 + .../gtk-3.0/executable_settings-backup.ini | 15 + dot_config/gtk-3.0/executable_settings.ini | 19 + .../executable_settings.ini-1667168286~ | 20 + .../gtk-3.0/executable_settings.ini.old | 20 + dot_config/gtk-4.0/executable_settings.ini | 9 + dot_config/i3/executable_arch-update | 123 + dot_config/i3/executable_backlight_system.sh | 4 + dot_config/i3/executable_bandwidth | 112 + dot_config/i3/executable_batterybar | 137 + dot_config/i3/executable_calendar | 40 + dot_config/i3/executable_compton.conf | 240 + dot_config/i3/executable_compton.conf_old | 240 + dot_config/i3/executable_config | 657 + dot_config/i3/executable_cpu | 48 + dot_config/i3/executable_disk-io | 92 + dot_config/i3/executable_disk.sh | 38 + dot_config/i3/executable_hui_light.sh | 4 + dot_config/i3/executable_hui_light_color.sh | 4 + .../i3/executable_i3-blocks-bottom.conf | 342 + dot_config/i3/executable_i3-blocks-top.conf | 342 + dot_config/i3/executable_i3-blocks.conf | 338 + dot_config/i3/executable_key_layout | 23 + dot_config/i3/executable_load | 20 + dot_config/i3/executable_mem | 8 + dot_config/i3/executable_monitor_manager | 728 + dot_config/i3/executable_picom.conf | 246 + dot_config/i3/executable_sensors.sh | 5 + dot_config/i3/executable_shutdown_menu | 186 + dot_config/i3/executable_usb | 368 + dot_config/i3/executable_vpn.sh | 9 + dot_config/i3/executable_weather.rb | 59 + .../i3status-rust/executable_config.toml | 71 + dot_config/kitty/executable_kitty.conf | 2242 ++ dot_config/lxqt/executable_archiver.conf | 9 + .../executable_lxqt-config-appearance.conf | 4 + ...cutable_lxqt-config-file-associations.conf | 2 + .../lxqt/executable_lxqt-config-locale.conf | 2 + dot_config/lxqt/executable_lxqt-config.conf | 2 + dot_config/lxqt/executable_lxqt.conf | 19 + dot_config/lxqt/executable_session.conf | 6 + .../lxqt/executable_windowmanagers.conf | 2 + dot_config/mako/executable_config | 27 + dot_config/ncmpcpp/executable_config | 601 + .../default/executable_recent-files.conf | 2 + .../default/executable_settings.conf | 118 + .../pcmanfm/default/executable_pcmanfm.conf | 30 + dot_config/private_mimeapps.list | 116 + .../qt5ct/colors/executable_arc-dark.conf | 4 + dot_config/qt5ct/colors/executable_arc.conf | 4 + dot_config/qt5ct/executable_qt5ct.conf | 35 + dot_config/qt5ct/qss/.keep | 0 dot_config/sov/executable_config | 68 + dot_config/sway/executable_arch-update | 123 + dot_config/sway/executable_bandwidth | 112 + dot_config/sway/executable_batterybar | 137 + dot_config/sway/executable_calendar | 40 + dot_config/sway/executable_compton.conf | 234 + dot_config/sway/executable_config | 653 + dot_config/sway/executable_cpu | 48 + dot_config/sway/executable_disk-io | 92 + dot_config/sway/executable_disk.sh | 38 + dot_config/sway/executable_dot_bash_profile | 5 + .../sway/executable_i3-blocks-bottom.conf | 342 + dot_config/sway/executable_i3-blocks-top.conf | 342 + dot_config/sway/executable_i3-blocks.conf | 338 + dot_config/sway/executable_key_layout | 23 + dot_config/sway/executable_load | 20 + dot_config/sway/executable_mem | 8 + dot_config/sway/executable_monitor_manager | 728 + dot_config/sway/executable_sensors.sh | 5 + dot_config/sway/executable_shutdown_menu | 186 + dot_config/sway/executable_sunset.jpg | Bin 0 -> 171929 bytes dot_config/sway/executable_swayexit-openrc | 34 + dot_config/sway/executable_swayexit-systemd | 30 + dot_config/sway/executable_usb | 368 + dot_config/sway/executable_vpn.sh | 9 + dot_config/sway/executable_weather.rb | 59 + dot_config/wezterm/executable_wezterm.lua | 132 + .../executable_icons.screen0-1904x1037.rc | 99 + .../desktop/symlink_icons.screen.latest.rc | 1 + dot_config/xfce4/executable_helpers.rc | 3 + .../xfce4/executable_xfce4-screenshooter | 12 + .../executable_16637035441.desktop | 15 + .../executable_16637035442.desktop | 16 + .../executable_16637035443.desktop | 16 + .../executable_16637035444.desktop | 15 + .../xfce4/terminal/executable_terminalrc | 31 + .../executable_displays.xml | 5 + .../executable_keyboards.xml | 7 + .../executable_ristretto.xml | 9 + .../xfce-perchannel-xml/executable_thunar.xml | 14 + .../executable_xfce4-desktop.xml | 25 + .../executable_xfce4-keyboard-shortcuts.xml | 130 + .../executable_xfce4-panel.xml | 109 + .../executable_xfce4-power-manager.xml | 15 + .../executable_xfce4-screensaver.xml | 11 + .../executable_xfce4-session.xml | 32 + .../executable_xfce4-settings-editor.xml | 9 + .../executable_xfce4-settings-manager.xml | 8 + .../executable_xfce4-taskmanager.xml | 15 + .../xfce-perchannel-xml/executable_xfwm4.xml | 13 + .../executable_xsettings.xml | 44 + dot_config/xfce4/xfwm4/.keep | 0 dot_config/xournalpp/autosave/.keep | 0 .../xournalpp/executable_colornames.ini | 2 + dot_config/xournalpp/executable_settings.xml | 234 + dot_gtkrc-2.0 | 18 + dot_oh-my-zsh/CODE_OF_CONDUCT.md | 76 + dot_oh-my-zsh/CONTRIBUTING.md | 245 + dot_oh-my-zsh/LICENSE.txt | 21 + dot_oh-my-zsh/README.md | 367 + dot_oh-my-zsh/SECURITY.md | 24 + dot_oh-my-zsh/cache/completions/.keep | 0 dot_oh-my-zsh/cache/dot_zsh-update | 1 + dot_oh-my-zsh/cache/empty_dot_gitkeep | 0 dot_oh-my-zsh/cache/grep-alias | 3 + dot_oh-my-zsh/custom/example.zsh | 10 + .../custom/plugins/example/example.plugin.zsh | 2 + dot_oh-my-zsh/custom/themes/example.zsh-theme | 4 + dot_oh-my-zsh/dot_editorconfig | 8 + dot_oh-my-zsh/dot_git/FETCH_HEAD | 1 + dot_oh-my-zsh/dot_git/HEAD | 1 + dot_oh-my-zsh/dot_git/branches/.keep | 0 dot_oh-my-zsh/dot_git/config | 22 + dot_oh-my-zsh/dot_git/description | 1 + .../hooks/executable_applypatch-msg.sample | 15 + .../hooks/executable_commit-msg.sample | 24 + .../executable_fsmonitor-watchman.sample | 174 + .../hooks/executable_post-update.sample | 8 + .../hooks/executable_pre-applypatch.sample | 14 + .../hooks/executable_pre-commit.sample | 49 + .../hooks/executable_pre-merge-commit.sample | 13 + .../dot_git/hooks/executable_pre-push.sample | 53 + .../hooks/executable_pre-rebase.sample | 169 + .../hooks/executable_pre-receive.sample | 24 + .../executable_prepare-commit-msg.sample | 42 + .../hooks/executable_push-to-checkout.sample | 78 + .../dot_git/hooks/executable_update.sample | 128 + dot_oh-my-zsh/dot_git/index | Bin 0 -> 102712 bytes dot_oh-my-zsh/dot_git/info/exclude | 6 + dot_oh-my-zsh/dot_git/logs/HEAD | 2 + dot_oh-my-zsh/dot_git/logs/refs/heads/master | 1 + .../dot_git/logs/refs/remotes/origin/master | 1 + dot_oh-my-zsh/dot_git/objects/info/.keep | 0 ...b12e5db99c28653c26368754290c2fb39547a4.idx | Bin 0 -> 37696 bytes ...12e5db99c28653c26368754290c2fb39547a4.pack | Bin 0 -> 1130174 bytes dot_oh-my-zsh/dot_git/refs/heads/master | 1 + .../dot_git/refs/remotes/origin/master | 1 + dot_oh-my-zsh/dot_git/refs/tags/.keep | 0 dot_oh-my-zsh/dot_git/shallow | 1 + dot_oh-my-zsh/dot_github/CODEOWNERS | 11 + dot_oh-my-zsh/dot_github/FUNDING.yml | 2 + .../dot_github/ISSUE_TEMPLATE/bug_report.yml | 68 + .../ISSUE_TEMPLATE/bug_report_omz.yml | 77 + .../dot_github/ISSUE_TEMPLATE/config.yml | 8 + .../ISSUE_TEMPLATE/feature_request.yml | 37 + .../dot_github/PULL_REQUEST_TEMPLATE.md | 20 + dot_oh-my-zsh/dot_github/workflows/main.yml | 44 + .../dot_github/workflows/project.yml | 140 + dot_oh-my-zsh/dot_gitignore | 11 + dot_oh-my-zsh/dot_gitpod.Dockerfile | 5 + dot_oh-my-zsh/dot_gitpod.yml | 9 + dot_oh-my-zsh/dot_prettierrc | 4 + dot_oh-my-zsh/lib/bzr.zsh | 10 + dot_oh-my-zsh/lib/cli.zsh | 820 + dot_oh-my-zsh/lib/clipboard.zsh | 107 + dot_oh-my-zsh/lib/compfix.zsh | 44 + dot_oh-my-zsh/lib/completion.zsh | 78 + dot_oh-my-zsh/lib/correction.zsh | 15 + dot_oh-my-zsh/lib/diagnostics.zsh | 353 + dot_oh-my-zsh/lib/directories.zsh | 38 + dot_oh-my-zsh/lib/functions.zsh | 255 + dot_oh-my-zsh/lib/git.zsh | 282 + dot_oh-my-zsh/lib/grep.zsh | 41 + dot_oh-my-zsh/lib/history.zsh | 40 + dot_oh-my-zsh/lib/key-bindings.zsh | 138 + dot_oh-my-zsh/lib/misc.zsh | 35 + dot_oh-my-zsh/lib/nvm.zsh | 6 + dot_oh-my-zsh/lib/prompt_info_functions.zsh | 43 + dot_oh-my-zsh/lib/spectrum.zsh | 37 + dot_oh-my-zsh/lib/termsupport.zsh | 136 + dot_oh-my-zsh/lib/theme-and-appearance.zsh | 59 + dot_oh-my-zsh/lib/vcs_info.zsh | 53 + dot_oh-my-zsh/log/empty_dot_gitkeep | 0 dot_oh-my-zsh/oh-my-zsh.sh | 191 + .../plugins/1password/1password.plugin.zsh | 9 + dot_oh-my-zsh/plugins/1password/README.md | 40 + dot_oh-my-zsh/plugins/1password/_opswd | 19 + dot_oh-my-zsh/plugins/1password/opswd | 90 + dot_oh-my-zsh/plugins/adb/README.md | 8 + dot_oh-my-zsh/plugins/adb/_adb | 67 + dot_oh-my-zsh/plugins/ag/README.md | 13 + dot_oh-my-zsh/plugins/ag/_ag | 66 + dot_oh-my-zsh/plugins/alias-finder/README.md | 46 + .../alias-finder/alias-finder.plugin.zsh | 47 + dot_oh-my-zsh/plugins/aliases/README.md | 28 + .../plugins/aliases/aliases.plugin.zsh | 14 + dot_oh-my-zsh/plugins/aliases/cheatsheet.py | 68 + dot_oh-my-zsh/plugins/aliases/dot_gitignore | 1 + dot_oh-my-zsh/plugins/aliases/termcolor.py | 168 + dot_oh-my-zsh/plugins/ansible/README.md | 34 + .../plugins/ansible/ansible.plugin.zsh | 28 + dot_oh-my-zsh/plugins/ant/README.md | 12 + dot_oh-my-zsh/plugins/ant/_ant | 22 + dot_oh-my-zsh/plugins/ant/ant.plugin.zsh | 2 + .../plugins/apache2-macports/README.md | 21 + .../apache2-macports.plugin.zsh | 6 + dot_oh-my-zsh/plugins/arcanist/README.md | 43 + .../plugins/arcanist/arcanist.plugin.zsh | 39 + dot_oh-my-zsh/plugins/archlinux/README.md | 183 + .../plugins/archlinux/archlinux.plugin.zsh | 184 + dot_oh-my-zsh/plugins/asdf/README.md | 30 + dot_oh-my-zsh/plugins/asdf/asdf.plugin.zsh | 27 + dot_oh-my-zsh/plugins/autoenv/README.md | 20 + .../plugins/autoenv/autoenv.plugin.zsh | 72 + dot_oh-my-zsh/plugins/autojump/README.md | 11 + .../plugins/autojump/autojump.plugin.zsh | 37 + dot_oh-my-zsh/plugins/autopep8/README.md | 8 + dot_oh-my-zsh/plugins/autopep8/_autopep8 | 32 + dot_oh-my-zsh/plugins/aws/README.md | 76 + dot_oh-my-zsh/plugins/aws/aws.plugin.zsh | 213 + dot_oh-my-zsh/plugins/battery/README.md | 29 + .../plugins/battery/battery.plugin.zsh | 262 + dot_oh-my-zsh/plugins/bazel/README.md | 14 + dot_oh-my-zsh/plugins/bazel/_bazel | 341 + dot_oh-my-zsh/plugins/bbedit/README.md | 20 + .../plugins/bbedit/bbedit.plugin.zsh | 21 + dot_oh-my-zsh/plugins/bedtools/README.md | 5 + dot_oh-my-zsh/plugins/bedtools/_bedtools | 64 + dot_oh-my-zsh/plugins/bgnotify/README.md | 54 + .../plugins/bgnotify/bgnotify.plugin.zsh | 106 + dot_oh-my-zsh/plugins/bower/README.md | 17 + dot_oh-my-zsh/plugins/bower/_bower | 58 + dot_oh-my-zsh/plugins/bower/bower.plugin.zsh | 84 + dot_oh-my-zsh/plugins/branch/README.md | 49 + .../plugins/branch/branch.plugin.zsh | 35 + dot_oh-my-zsh/plugins/brew/README.md | 40 + dot_oh-my-zsh/plugins/brew/brew.plugin.zsh | 52 + dot_oh-my-zsh/plugins/bridgetown/README.md | 26 + .../plugins/bridgetown/bridgetown.plugin.zsh | 12 + dot_oh-my-zsh/plugins/bundler/README.md | 74 + dot_oh-my-zsh/plugins/bundler/_bundler | 105 + .../plugins/bundler/bundler.plugin.zsh | 127 + dot_oh-my-zsh/plugins/cabal/README.md | 9 + dot_oh-my-zsh/plugins/cabal/cabal.plugin.zsh | 93 + dot_oh-my-zsh/plugins/cake/README.md | 15 + dot_oh-my-zsh/plugins/cake/cake.plugin.zsh | 33 + dot_oh-my-zsh/plugins/cakephp3/README.md | 16 + .../plugins/cakephp3/cakephp3.plugin.zsh | 38 + dot_oh-my-zsh/plugins/capistrano/README.md | 14 + dot_oh-my-zsh/plugins/capistrano/_capistrano | 49 + .../plugins/capistrano/capistrano.plugin.zsh | 11 + dot_oh-my-zsh/plugins/cask/README.md | 15 + dot_oh-my-zsh/plugins/cask/cask.plugin.zsh | 26 + dot_oh-my-zsh/plugins/catimg/README.md | 23 + .../plugins/catimg/catimg.plugin.zsh | 17 + dot_oh-my-zsh/plugins/catimg/catimg.sh | 88 + dot_oh-my-zsh/plugins/catimg/colors.png | Bin 0 -> 353 bytes dot_oh-my-zsh/plugins/celery/README.md | 9 + dot_oh-my-zsh/plugins/celery/_celery | 129 + dot_oh-my-zsh/plugins/charm/README.md | 9 + dot_oh-my-zsh/plugins/charm/charm.plugin.zsh | 14 + dot_oh-my-zsh/plugins/chruby/README.md | 21 + .../plugins/chruby/chruby.plugin.zsh | 94 + dot_oh-my-zsh/plugins/chucknorris/README.md | 38 + .../chucknorris/chucknorris.plugin.zsh | 24 + .../plugins/chucknorris/dot_gitignore | 1 + .../plugins/chucknorris/fortunes/chucknorris | 568 + dot_oh-my-zsh/plugins/cloudfoundry/README.md | 58 + .../cloudfoundry/cloudfoundry.plugin.zsh | 34 + dot_oh-my-zsh/plugins/codeclimate/README.md | 8 + .../plugins/codeclimate/_codeclimate | 82 + dot_oh-my-zsh/plugins/coffee/README.md | 31 + dot_oh-my-zsh/plugins/coffee/_coffee | 81 + .../plugins/coffee/coffee.plugin.zsh | 16 + dot_oh-my-zsh/plugins/colemak/README.md | 48 + dot_oh-my-zsh/plugins/colemak/colemak-less | 6 + .../plugins/colemak/colemak.plugin.zsh | 38 + dot_oh-my-zsh/plugins/colemak/dot_gitignore | 1 + .../plugins/colored-man-pages/README.md | 32 + .../colored-man-pages.plugin.zsh | 53 + .../colored-man-pages/executable_nroff | 12 + dot_oh-my-zsh/plugins/colorize/README.md | 56 + .../plugins/colorize/colorize.plugin.zsh | 114 + .../plugins/command-not-found/README.md | 34 + .../command-not-found.plugin.zsh | 69 + .../plugins/common-aliases/README.md | 130 + .../common-aliases/common-aliases.plugin.zsh | 90 + dot_oh-my-zsh/plugins/compleat/README.md | 9 + .../plugins/compleat/compleat.plugin.zsh | 20 + dot_oh-my-zsh/plugins/composer/README.md | 35 + .../plugins/composer/composer.plugin.zsh | 76 + dot_oh-my-zsh/plugins/copybuffer/README.md | 11 + .../plugins/copybuffer/copybuffer.plugin.zsh | 16 + dot_oh-my-zsh/plugins/copyfile/README.md | 11 + .../plugins/copyfile/copyfile.plugin.zsh | 7 + dot_oh-my-zsh/plugins/copypath/README.md | 15 + .../plugins/copypath/copypath.plugin.zsh | 15 + dot_oh-my-zsh/plugins/cp/README.md | 32 + dot_oh-my-zsh/plugins/cp/cp.plugin.zsh | 4 + dot_oh-my-zsh/plugins/cpanm/README.md | 9 + dot_oh-my-zsh/plugins/cpanm/_cpanm | 64 + dot_oh-my-zsh/plugins/dash/README.md | 28 + dot_oh-my-zsh/plugins/dash/dash.plugin.zsh | 84 + dot_oh-my-zsh/plugins/debian/README.md | 87 + .../plugins/debian/debian.plugin.zsh | 227 + dot_oh-my-zsh/plugins/deno/README.md | 19 + dot_oh-my-zsh/plugins/deno/deno.plugin.zsh | 27 + dot_oh-my-zsh/plugins/dircycle/README.md | 78 + .../plugins/dircycle/dircycle.plugin.zsh | 54 + dot_oh-my-zsh/plugins/direnv/README.md | 15 + .../plugins/direnv/direnv.plugin.zsh | 16 + dot_oh-my-zsh/plugins/dirhistory/README.md | 62 + .../plugins/dirhistory/dirhistory.plugin.zsh | 221 + dot_oh-my-zsh/plugins/dirpersist/README.md | 10 + .../plugins/dirpersist/dirpersist.plugin.zsh | 21 + dot_oh-my-zsh/plugins/dnf/README.md | 29 + dot_oh-my-zsh/plugins/dnf/dnf.plugin.zsh | 15 + dot_oh-my-zsh/plugins/dnote/README.md | 51 + dot_oh-my-zsh/plugins/dnote/_dnote | 39 + .../plugins/docker-compose/README.md | 33 + .../plugins/docker-compose/_docker-compose | 421 + .../docker-compose/docker-compose.plugin.zsh | 23 + .../plugins/docker-machine/README.md | 19 + .../plugins/docker-machine/_docker-machine | 359 + .../docker-machine/docker-machine.plugin.zsh | 33 + dot_oh-my-zsh/plugins/docker/README.md | 69 + dot_oh-my-zsh/plugins/docker/_docker | 3123 +++ .../plugins/docker/docker.plugin.zsh | 33 + dot_oh-my-zsh/plugins/doctl/README.md | 9 + dot_oh-my-zsh/plugins/doctl/doctl.plugin.zsh | 17 + dot_oh-my-zsh/plugins/dotenv/README.md | 92 + .../plugins/dotenv/dotenv.plugin.zsh | 67 + dot_oh-my-zsh/plugins/dotnet/README.md | 24 + .../plugins/dotnet/dotnet.plugin.zsh | 33 + dot_oh-my-zsh/plugins/droplr/README.md | 19 + .../plugins/droplr/droplr.plugin.zsh | 15 + dot_oh-my-zsh/plugins/drush/README.md | 66 + dot_oh-my-zsh/plugins/drush/drush.complete.sh | 50 + dot_oh-my-zsh/plugins/drush/drush.plugin.zsh | 107 + dot_oh-my-zsh/plugins/eecms/README.md | 11 + dot_oh-my-zsh/plugins/eecms/eecms.plugin.zsh | 20 + dot_oh-my-zsh/plugins/emacs/README.md | 30 + dot_oh-my-zsh/plugins/emacs/emacs.plugin.zsh | 68 + .../plugins/emacs/executable_emacsclient.sh | 38 + dot_oh-my-zsh/plugins/ember-cli/README.md | 33 + dot_oh-my-zsh/plugins/ember-cli/_ember-cli | 189 + .../plugins/ember-cli/ember-cli.plugin.zsh | 12 + dot_oh-my-zsh/plugins/emoji-clock/README.md | 14 + .../emoji-clock/emoji-clock.plugin.zsh | 33 + dot_oh-my-zsh/plugins/emoji/README.md | 127 + .../plugins/emoji/emoji-char-definitions.zsh | 7274 ++++++ dot_oh-my-zsh/plugins/emoji/emoji-data.txt | 4122 +++ dot_oh-my-zsh/plugins/emoji/emoji.plugin.zsh | 110 + dot_oh-my-zsh/plugins/emoji/gemoji_db.json | 21538 ++++++++++++++++ dot_oh-my-zsh/plugins/emoji/update_emoji.py | 213 + dot_oh-my-zsh/plugins/emotty/README.md | 39 + .../plugins/emotty/emotty.plugin.zsh | 55 + .../plugins/emotty/emotty_emoji_set.zsh | 24 + .../plugins/emotty/emotty_floral_set.zsh | 18 + .../plugins/emotty/emotty_love_set.zsh | 34 + .../plugins/emotty/emotty_nature_set.zsh | 58 + .../plugins/emotty/emotty_stellar_set.zsh | 25 + .../plugins/emotty/emotty_zodiac_set.zsh | 29 + dot_oh-my-zsh/plugins/encode64/README.md | 73 + .../plugins/encode64/encode64.plugin.zsh | 27 + dot_oh-my-zsh/plugins/extract/README.md | 60 + dot_oh-my-zsh/plugins/extract/_extract | 7 + .../plugins/extract/extract.plugin.zsh | 88 + dot_oh-my-zsh/plugins/fabric/README.md | 9 + dot_oh-my-zsh/plugins/fabric/_fab | 69 + .../plugins/fabric/empty_fabric.plugin.zsh | 0 dot_oh-my-zsh/plugins/fancy-ctrl-z/README.md | 14 + .../fancy-ctrl-z/fancy-ctrl-z.plugin.zsh | 12 + dot_oh-my-zsh/plugins/fasd/README.md | 21 + dot_oh-my-zsh/plugins/fasd/fasd.plugin.zsh | 16 + dot_oh-my-zsh/plugins/fastfile/README.md | 85 + .../plugins/fastfile/fastfile.plugin.zsh | 128 + dot_oh-my-zsh/plugins/fbterm/README.md | 10 + .../plugins/fbterm/fbterm.plugin.zsh | 7 + dot_oh-my-zsh/plugins/fd/README.md | 9 + dot_oh-my-zsh/plugins/fd/_fd | 273 + dot_oh-my-zsh/plugins/fig/README.md | 9 + dot_oh-my-zsh/plugins/fig/fig.plugin.zsh | 13 + dot_oh-my-zsh/plugins/firewalld/README.md | 22 + .../plugins/firewalld/firewalld.plugin.zsh | 17 + dot_oh-my-zsh/plugins/flutter/README.md | 28 + .../plugins/flutter/flutter.plugin.zsh | 29 + dot_oh-my-zsh/plugins/fluxcd/README.md | 9 + .../plugins/fluxcd/fluxcd.plugin.zsh | 14 + dot_oh-my-zsh/plugins/fnm/README.md | 9 + dot_oh-my-zsh/plugins/fnm/fnm.plugin.zsh | 13 + dot_oh-my-zsh/plugins/forklift/README.md | 23 + .../plugins/forklift/forklift.plugin.zsh | 122 + dot_oh-my-zsh/plugins/fossil/README.md | 7 + dot_oh-my-zsh/plugins/fossil/_fossil | 32 + .../plugins/fossil/fossil.plugin.zsh | 56 + .../plugins/frontend-search/README.md | 75 + .../plugins/frontend-search/_frontend | 161 + .../frontend-search.plugin.zsh | 111 + dot_oh-my-zsh/plugins/fzf/README.md | 61 + dot_oh-my-zsh/plugins/fzf/fzf.plugin.zsh | 237 + dot_oh-my-zsh/plugins/gas/README.md | 10 + dot_oh-my-zsh/plugins/gas/_gas | 39 + dot_oh-my-zsh/plugins/gatsby/README.md | 7 + dot_oh-my-zsh/plugins/gatsby/_gatsby | 24 + dot_oh-my-zsh/plugins/gcloud/README.md | 24 + .../plugins/gcloud/gcloud.plugin.zsh | 49 + dot_oh-my-zsh/plugins/geeknote/README.md | 10 + dot_oh-my-zsh/plugins/geeknote/_geeknote | 157 + .../plugins/geeknote/geeknote.plugin.zsh | 2 + dot_oh-my-zsh/plugins/gem/README.md | 17 + dot_oh-my-zsh/plugins/gem/_gem | 72 + dot_oh-my-zsh/plugins/gem/gem.plugin.zsh | 7 + dot_oh-my-zsh/plugins/genpass/README.md | 66 + .../plugins/genpass/executable_genpass-apple | 79 + .../plugins/genpass/executable_genpass-monkey | 32 + .../plugins/genpass/executable_genpass-xkcd | 68 + .../plugins/genpass/genpass.plugin.zsh | 1 + dot_oh-my-zsh/plugins/gh/README.md | 23 + dot_oh-my-zsh/plugins/gh/gh.plugin.zsh | 14 + .../plugins/git-auto-fetch/README.md | 50 + .../git-auto-fetch/git-auto-fetch.plugin.zsh | 65 + .../plugins/git-escape-magic/README.md | 16 + .../plugins/git-escape-magic/git-escape-magic | 135 + .../git-escape-magic.plugin.zsh | 9 + dot_oh-my-zsh/plugins/git-extras/README.md | 17 + .../plugins/git-extras/git-extras.plugin.zsh | 498 + dot_oh-my-zsh/plugins/git-flow-avh/README.md | 19 + .../git-flow-avh/git-flow-avh.plugin.zsh | 526 + dot_oh-my-zsh/plugins/git-flow/README.md | 40 + dot_oh-my-zsh/plugins/git-flow/_git-flow | 327 + .../plugins/git-flow/git-flow.plugin.zsh | 32 + dot_oh-my-zsh/plugins/git-hubflow/README.md | 24 + .../git-hubflow/git-hubflow.plugin.zsh | 333 + dot_oh-my-zsh/plugins/git-lfs/README.md | 24 + .../plugins/git-lfs/git-lfs.plugin.zsh | 17 + dot_oh-my-zsh/plugins/git-prompt/README.md | 68 + .../plugins/git-prompt/git-prompt.plugin.zsh | 113 + dot_oh-my-zsh/plugins/git-prompt/gitstatus.py | 103 + dot_oh-my-zsh/plugins/git/README.md | 254 + dot_oh-my-zsh/plugins/git/git.plugin.zsh | 344 + dot_oh-my-zsh/plugins/gitfast/README.md | 15 + dot_oh-my-zsh/plugins/gitfast/_git | 286 + .../plugins/gitfast/executable_update | 8 + .../plugins/gitfast/git-completion.bash | 3677 +++ dot_oh-my-zsh/plugins/gitfast/git-prompt.sh | 589 + .../plugins/gitfast/gitfast.plugin.zsh | 11 + dot_oh-my-zsh/plugins/github/README.md | 45 + dot_oh-my-zsh/plugins/github/_hub | 174 + .../plugins/github/github.plugin.zsh | 77 + dot_oh-my-zsh/plugins/gitignore/README.md | 17 + .../plugins/gitignore/gitignore.plugin.zsh | 12 + dot_oh-my-zsh/plugins/glassfish/README.md | 9 + dot_oh-my-zsh/plugins/glassfish/_asadmin | 1150 + .../glassfish/empty_glassfish.plugin.zsh | 0 dot_oh-my-zsh/plugins/globalias/README.md | 79 + .../plugins/globalias/globalias.plugin.zsh | 23 + dot_oh-my-zsh/plugins/gnu-utils/README.md | 38 + .../plugins/gnu-utils/gnu-utils.plugin.zsh | 63 + dot_oh-my-zsh/plugins/golang/README.md | 40 + dot_oh-my-zsh/plugins/golang/_golang | 249 + .../plugins/golang/golang.plugin.zsh | 37 + .../plugins/golang/templates/empty_search.txt | 0 .../plugins/golang/templates/package.txt | 29 + dot_oh-my-zsh/plugins/gpg-agent/README.md | 9 + .../plugins/gpg-agent/gpg-agent.plugin.zsh | 17 + dot_oh-my-zsh/plugins/gradle/README.md | 30 + dot_oh-my-zsh/plugins/gradle/_gradle | 420 + .../plugins/gradle/gradle.plugin.zsh | 26 + dot_oh-my-zsh/plugins/grails/README.md | 16 + .../plugins/grails/grails.plugin.zsh | 60 + dot_oh-my-zsh/plugins/grc/README.md | 15 + dot_oh-my-zsh/plugins/grc/grc.plugin.zsh | 17 + dot_oh-my-zsh/plugins/grunt/README.md | 37 + dot_oh-my-zsh/plugins/grunt/grunt.plugin.zsh | 255 + dot_oh-my-zsh/plugins/gulp/README.md | 8 + dot_oh-my-zsh/plugins/gulp/gulp.plugin.zsh | 29 + dot_oh-my-zsh/plugins/hanami/README.md | 45 + .../plugins/hanami/hanami.plugin.zsh | 19 + dot_oh-my-zsh/plugins/hasura/README.md | 9 + .../plugins/hasura/hasura.plugin.zsh | 13 + dot_oh-my-zsh/plugins/helm/README.md | 18 + dot_oh-my-zsh/plugins/helm/helm.plugin.zsh | 18 + dot_oh-my-zsh/plugins/heroku-alias/README.md | 127 + .../plugins/heroku-alias/heroku.alias.sh | 92 + dot_oh-my-zsh/plugins/heroku/README.md | 9 + .../plugins/heroku/heroku.plugin.zsh | 9 + .../history-substring-search/README.md | 198 + .../executable_update-from-upstream.zsh | 129 + .../history-substring-search.plugin.zsh | 19 + .../history-substring-search.zsh | 759 + dot_oh-my-zsh/plugins/history/README.md | 17 + .../plugins/history/history.plugin.zsh | 3 + dot_oh-my-zsh/plugins/hitchhiker/README.md | 44 + .../plugins/hitchhiker/dot_gitignore | 1 + .../plugins/hitchhiker/fortunes/hitchhiker | 275 + .../plugins/hitchhiker/hitchhiker.plugin.zsh | 28 + dot_oh-my-zsh/plugins/hitokoto/README.md | 15 + .../plugins/hitokoto/hitokoto.plugin.zsh | 18 + dot_oh-my-zsh/plugins/homestead/README.md | 9 + .../plugins/homestead/homestead.plugin.zsh | 10 + dot_oh-my-zsh/plugins/httpie/README.md | 14 + dot_oh-my-zsh/plugins/httpie/_httpie | 181 + dot_oh-my-zsh/plugins/invoke/README.md | 10 + .../plugins/invoke/invoke.plugin.zsh | 5 + dot_oh-my-zsh/plugins/ionic/README.md | 30 + dot_oh-my-zsh/plugins/ionic/ionic.plugin.zsh | 15 + dot_oh-my-zsh/plugins/ipfs/LICENSE | 22 + dot_oh-my-zsh/plugins/ipfs/README.md | 17 + dot_oh-my-zsh/plugins/ipfs/_ipfs | 791 + dot_oh-my-zsh/plugins/isodate/README.md | 22 + .../plugins/isodate/isodate.plugin.zsh | 7 + dot_oh-my-zsh/plugins/istioctl/README.md | 9 + .../plugins/istioctl/istioctl.plugin.zsh | 4 + dot_oh-my-zsh/plugins/iterm2/README.md | 29 + .../plugins/iterm2/iterm2.plugin.zsh | 68 + dot_oh-my-zsh/plugins/jake-node/README.md | 9 + .../plugins/jake-node/jake-node.plugin.zsh | 14 + dot_oh-my-zsh/plugins/jenv/README.md | 27 + dot_oh-my-zsh/plugins/jenv/jenv.plugin.zsh | 36 + dot_oh-my-zsh/plugins/jfrog/README.md | 11 + dot_oh-my-zsh/plugins/jfrog/jfrog.plugin.zsh | 11 + dot_oh-my-zsh/plugins/jhbuild/README.md | 34 + .../plugins/jhbuild/jhbuild.plugin.zsh | 32 + dot_oh-my-zsh/plugins/jira/README.md | 81 + dot_oh-my-zsh/plugins/jira/_jira | 25 + dot_oh-my-zsh/plugins/jira/jira.plugin.zsh | 149 + dot_oh-my-zsh/plugins/jruby/README.md | 21 + dot_oh-my-zsh/plugins/jruby/jruby.plugin.zsh | 4 + dot_oh-my-zsh/plugins/jsontools/README.md | 79 + .../plugins/jsontools/jsontools.plugin.zsh | 113 + dot_oh-my-zsh/plugins/juju/README.md | 130 + dot_oh-my-zsh/plugins/juju/juju.plugin.zsh | 172 + dot_oh-my-zsh/plugins/jump/README.md | 31 + dot_oh-my-zsh/plugins/jump/jump.plugin.zsh | 59 + dot_oh-my-zsh/plugins/kate/README.md | 20 + dot_oh-my-zsh/plugins/kate/kate.plugin.zsh | 9 + dot_oh-my-zsh/plugins/keychain/README.md | 45 + .../plugins/keychain/keychain.plugin.zsh | 32 + dot_oh-my-zsh/plugins/kitchen/README.md | 9 + dot_oh-my-zsh/plugins/kitchen/_kitchen | 85 + dot_oh-my-zsh/plugins/kn/README.md | 17 + dot_oh-my-zsh/plugins/kn/kn.plugin.zsh | 8 + dot_oh-my-zsh/plugins/knife/README.md | 25 + dot_oh-my-zsh/plugins/knife/_knife | 257 + dot_oh-my-zsh/plugins/knife_ssh/README.md | 14 + .../plugins/knife_ssh/knife_ssh.plugin.zsh | 18 + dot_oh-my-zsh/plugins/kops/README.md | 12 + dot_oh-my-zsh/plugins/kops/kops.plugin.zsh | 3 + dot_oh-my-zsh/plugins/kube-ps1/README.md | 241 + .../plugins/kube-ps1/kube-ps1.plugin.zsh | 386 + dot_oh-my-zsh/plugins/kubectl/README.md | 137 + .../plugins/kubectl/kubectl.plugin.zsh | 191 + dot_oh-my-zsh/plugins/kubectx/README.md | 26 + .../plugins/kubectx/kubectx.plugin.zsh | 13 + dot_oh-my-zsh/plugins/kubectx/prod.png | Bin 0 -> 3834 bytes dot_oh-my-zsh/plugins/kubectx/stage.png | Bin 0 -> 3829 bytes dot_oh-my-zsh/plugins/lando/LICENSE | 21 + dot_oh-my-zsh/plugins/lando/README.md | 37 + dot_oh-my-zsh/plugins/lando/lando.plugin.zsh | 41 + dot_oh-my-zsh/plugins/laravel/README.md | 57 + dot_oh-my-zsh/plugins/laravel/_artisan | 40 + .../plugins/laravel/laravel.plugin.zsh | 41 + dot_oh-my-zsh/plugins/laravel4/README.md | 18 + .../plugins/laravel4/laravel4.plugin.zsh | 20 + dot_oh-my-zsh/plugins/laravel5/README.md | 18 + .../plugins/laravel5/laravel5.plugin.zsh | 19 + .../plugins/last-working-dir/README.md | 33 + .../last-working-dir.plugin.zsh | 28 + dot_oh-my-zsh/plugins/lein/README.md | 9 + dot_oh-my-zsh/plugins/lein/_lein | 69 + dot_oh-my-zsh/plugins/lighthouse/README.md | 29 + .../plugins/lighthouse/lighthouse.plugin.zsh | 12 + dot_oh-my-zsh/plugins/lol/README.md | 71 + dot_oh-my-zsh/plugins/lol/lol.plugin.zsh | 51 + dot_oh-my-zsh/plugins/lpass/README.md | 13 + dot_oh-my-zsh/plugins/lpass/_lpass | 169 + dot_oh-my-zsh/plugins/lxd/README.md | 9 + dot_oh-my-zsh/plugins/lxd/lxd.plugin.zsh | 26 + dot_oh-my-zsh/plugins/macos/README.md | 63 + dot_oh-my-zsh/plugins/macos/_security | 90 + dot_oh-my-zsh/plugins/macos/macos.plugin.zsh | 269 + dot_oh-my-zsh/plugins/macos/music | 170 + dot_oh-my-zsh/plugins/macos/spotify | 478 + dot_oh-my-zsh/plugins/macports/README.md | 47 + dot_oh-my-zsh/plugins/macports/_port | 92 + .../plugins/macports/macports.plugin.zsh | 44 + dot_oh-my-zsh/plugins/magic-enter/README.md | 17 + .../magic-enter/magic-enter.plugin.zsh | 38 + dot_oh-my-zsh/plugins/man/README.md | 13 + dot_oh-my-zsh/plugins/man/man.plugin.zsh | 37 + dot_oh-my-zsh/plugins/marked2/README.md | 13 + .../plugins/marked2/marked2.plugin.zsh | 12 + dot_oh-my-zsh/plugins/mercurial/README.md | 69 + .../plugins/mercurial/mercurial.plugin.zsh | 118 + dot_oh-my-zsh/plugins/meteor/README.md | 46 + dot_oh-my-zsh/plugins/meteor/_meteor | 67 + .../plugins/meteor/meteor.plugin.zsh | 33 + dot_oh-my-zsh/plugins/microk8s/README.md | 24 + .../plugins/microk8s/microk8s.plugin.zsh | 82 + dot_oh-my-zsh/plugins/minikube/README.md | 9 + .../plugins/minikube/minikube.plugin.zsh | 13 + dot_oh-my-zsh/plugins/mix-fast/README.md | 28 + .../plugins/mix-fast/mix-fast.plugin.zsh | 30 + dot_oh-my-zsh/plugins/mix/README.md | 19 + dot_oh-my-zsh/plugins/mix/_mix | 156 + dot_oh-my-zsh/plugins/mongo-atlas/README.md | 10 + .../mongo-atlas/mongo-atlas.plugin.zsh | 14 + dot_oh-my-zsh/plugins/mongocli/README.md | 19 + .../plugins/mongocli/mongocli.plugin.zsh | 4 + dot_oh-my-zsh/plugins/mosh/README.md | 9 + dot_oh-my-zsh/plugins/mosh/mosh.plugin.zsh | 2 + dot_oh-my-zsh/plugins/multipass/README.md | 22 + dot_oh-my-zsh/plugins/multipass/_multipass | 73 + .../plugins/multipass/multipass.plugin.zsh | 7 + dot_oh-my-zsh/plugins/mvn/README.md | 61 + dot_oh-my-zsh/plugins/mvn/mvn.plugin.zsh | 344 + .../plugins/mysql-macports/README.md | 20 + .../mysql-macports/mysql-macports.plugin.zsh | 8 + dot_oh-my-zsh/plugins/n98-magerun/README.md | 21 + .../n98-magerun/n98-magerun.plugin.zsh | 42 + dot_oh-my-zsh/plugins/nanoc/README.md | 20 + dot_oh-my-zsh/plugins/nanoc/_nanoc | 92 + dot_oh-my-zsh/plugins/nanoc/nanoc.plugin.zsh | 6 + dot_oh-my-zsh/plugins/nats/README.md | 14 + dot_oh-my-zsh/plugins/nats/nats.plugin.zsh | 23 + dot_oh-my-zsh/plugins/ng/README.md | 10 + dot_oh-my-zsh/plugins/ng/_ng | 56 + dot_oh-my-zsh/plugins/nmap/README.md | 27 + dot_oh-my-zsh/plugins/nmap/nmap.plugin.zsh | 32 + dot_oh-my-zsh/plugins/node/README.md | 19 + dot_oh-my-zsh/plugins/node/node.plugin.zsh | 6 + dot_oh-my-zsh/plugins/nomad/README.md | 15 + dot_oh-my-zsh/plugins/nomad/_nomad | 153 + dot_oh-my-zsh/plugins/npm/README.md | 48 + dot_oh-my-zsh/plugins/npm/npm.plugin.zsh | 111 + dot_oh-my-zsh/plugins/nvm/README.md | 60 + dot_oh-my-zsh/plugins/nvm/_nvm | 34 + dot_oh-my-zsh/plugins/nvm/nvm.plugin.zsh | 105 + dot_oh-my-zsh/plugins/oc/README.md | 13 + dot_oh-my-zsh/plugins/oc/oc.plugin.zsh | 8 + dot_oh-my-zsh/plugins/octozen/README.md | 12 + .../plugins/octozen/octozen.plugin.zsh | 11 + dot_oh-my-zsh/plugins/operator-sdk/README.md | 11 + .../operator-sdk/operator-sdk.plugin.zsh | 4 + dot_oh-my-zsh/plugins/otp/README.md | 22 + dot_oh-my-zsh/plugins/otp/otp.plugin.zsh | 45 + dot_oh-my-zsh/plugins/pass/README.md | 22 + dot_oh-my-zsh/plugins/pass/_pass | 144 + dot_oh-my-zsh/plugins/paver/README.md | 12 + dot_oh-my-zsh/plugins/paver/paver.plugin.zsh | 16 + dot_oh-my-zsh/plugins/pep8/README.md | 8 + dot_oh-my-zsh/plugins/pep8/_pep8 | 34 + .../plugins/per-directory-history/README.md | 48 + .../per-directory-history.zsh | 174 + .../symlink_per-directory-history.plugin.zsh | 1 + dot_oh-my-zsh/plugins/percol/README.md | 23 + .../plugins/percol/percol.plugin.zsh | 25 + dot_oh-my-zsh/plugins/perl/README.md | 37 + dot_oh-my-zsh/plugins/perl/perl.plugin.zsh | 56 + dot_oh-my-zsh/plugins/perms/README.md | 25 + dot_oh-my-zsh/plugins/perms/perms.plugin.zsh | 87 + dot_oh-my-zsh/plugins/phing/README.md | 9 + dot_oh-my-zsh/plugins/phing/phing.plugin.zsh | 7 + dot_oh-my-zsh/plugins/pip/README.md | 36 + dot_oh-my-zsh/plugins/pip/_pip | 100 + dot_oh-my-zsh/plugins/pip/pip.plugin.zsh | 135 + dot_oh-my-zsh/plugins/pipenv/README.md | 28 + .../plugins/pipenv/pipenv.plugin.zsh | 52 + dot_oh-my-zsh/plugins/pj/README.md | 45 + dot_oh-my-zsh/plugins/pj/pj.plugin.zsh | 34 + dot_oh-my-zsh/plugins/please/README.md | 26 + .../plugins/please/please.plugin.zsh | 7 + dot_oh-my-zsh/plugins/pm2/README.md | 19 + dot_oh-my-zsh/plugins/pm2/_pm2 | 168 + dot_oh-my-zsh/plugins/pm2/pm2.plugin.zsh | 6 + dot_oh-my-zsh/plugins/pod/README.md | 10 + dot_oh-my-zsh/plugins/pod/_pod | 682 + dot_oh-my-zsh/plugins/poetry/README.md | 9 + .../plugins/poetry/poetry.plugin.zsh | 14 + dot_oh-my-zsh/plugins/postgres/README.md | 22 + .../plugins/postgres/postgres.plugin.zsh | 13 + dot_oh-my-zsh/plugins/pow/README.md | 21 + dot_oh-my-zsh/plugins/pow/pow.plugin.zsh | 85 + dot_oh-my-zsh/plugins/powder/README.md | 8 + dot_oh-my-zsh/plugins/powder/_powder | 4 + dot_oh-my-zsh/plugins/powify/README.md | 10 + dot_oh-my-zsh/plugins/powify/_powify | 55 + dot_oh-my-zsh/plugins/pre-commit/README.md | 19 + .../plugins/pre-commit/pre-commit.plugin.zsh | 8 + dot_oh-my-zsh/plugins/profiles/README.md | 25 + .../plugins/profiles/profiles.plugin.zsh | 12 + dot_oh-my-zsh/plugins/pyenv/README.md | 24 + dot_oh-my-zsh/plugins/pyenv/pyenv.plugin.zsh | 98 + dot_oh-my-zsh/plugins/pylint/README.md | 16 + dot_oh-my-zsh/plugins/pylint/_pylint | 31 + .../plugins/pylint/pylint.plugin.zsh | 1 + dot_oh-my-zsh/plugins/python/README.md | 29 + .../plugins/python/python.plugin.zsh | 83 + dot_oh-my-zsh/plugins/qrcode/README.md | 8 + .../plugins/qrcode/qrcode.plugin.zsh | 17 + dot_oh-my-zsh/plugins/rails/README.md | 118 + dot_oh-my-zsh/plugins/rails/_rails | 624 + dot_oh-my-zsh/plugins/rails/rails.plugin.zsh | 116 + dot_oh-my-zsh/plugins/rake-fast/README.md | 35 + .../plugins/rake-fast/rake-fast.plugin.zsh | 43 + dot_oh-my-zsh/plugins/rake/README.md | 41 + dot_oh-my-zsh/plugins/rake/rake.plugin.zsh | 9 + dot_oh-my-zsh/plugins/rand-quote/README.md | 15 + .../plugins/rand-quote/rand-quote.plugin.zsh | 23 + dot_oh-my-zsh/plugins/rbenv/README.md | 26 + dot_oh-my-zsh/plugins/rbenv/rbenv.plugin.zsh | 68 + dot_oh-my-zsh/plugins/rbfu/README.md | 18 + dot_oh-my-zsh/plugins/rbfu/rbfu.plugin.zsh | 49 + dot_oh-my-zsh/plugins/rbw/README.md | 22 + dot_oh-my-zsh/plugins/rbw/rbw.plugin.zsh | 43 + dot_oh-my-zsh/plugins/react-native/README.md | 88 + .../plugins/react-native/_react-native | 32 + .../react-native/react-native.plugin.zsh | 75 + dot_oh-my-zsh/plugins/rebar/README.md | 9 + dot_oh-my-zsh/plugins/rebar/_rebar | 79 + dot_oh-my-zsh/plugins/redis-cli/README.md | 15 + dot_oh-my-zsh/plugins/redis-cli/_redis-cli | 142 + dot_oh-my-zsh/plugins/repo/README.md | 25 + dot_oh-my-zsh/plugins/repo/_repo | 279 + dot_oh-my-zsh/plugins/repo/repo.plugin.zsh | 10 + dot_oh-my-zsh/plugins/ripgrep/README.md | 9 + dot_oh-my-zsh/plugins/ripgrep/_ripgrep | 640 + dot_oh-my-zsh/plugins/ros/README.md | 10 + dot_oh-my-zsh/plugins/ros/_ros | 64 + dot_oh-my-zsh/plugins/rsync/README.md | 16 + dot_oh-my-zsh/plugins/rsync/rsync.plugin.zsh | 4 + dot_oh-my-zsh/plugins/ruby/README.md | 33 + dot_oh-my-zsh/plugins/ruby/ruby.plugin.zsh | 26 + dot_oh-my-zsh/plugins/rust/README.md | 9 + dot_oh-my-zsh/plugins/rust/_rustc | 228 + dot_oh-my-zsh/plugins/rust/rust.plugin.zsh | 26 + dot_oh-my-zsh/plugins/rvm/README.md | 36 + dot_oh-my-zsh/plugins/rvm/rvm.plugin.zsh | 55 + dot_oh-my-zsh/plugins/safe-paste/README.md | 9 + .../plugins/safe-paste/safe-paste.plugin.zsh | 100 + dot_oh-my-zsh/plugins/salt/README.md | 5 + dot_oh-my-zsh/plugins/salt/_salt | 279 + dot_oh-my-zsh/plugins/samtools/README.md | 5 + dot_oh-my-zsh/plugins/samtools/_samtools | 40 + dot_oh-my-zsh/plugins/sbt/README.md | 32 + dot_oh-my-zsh/plugins/sbt/_sbt | 56 + dot_oh-my-zsh/plugins/sbt/sbt.plugin.zsh | 25 + dot_oh-my-zsh/plugins/scala/README.md | 16 + dot_oh-my-zsh/plugins/scala/_scala | 249 + dot_oh-my-zsh/plugins/scd/README.md | 159 + dot_oh-my-zsh/plugins/scd/_scd | 60 + dot_oh-my-zsh/plugins/scd/executable_scd | 533 + dot_oh-my-zsh/plugins/scd/scd.plugin.zsh | 17 + dot_oh-my-zsh/plugins/screen/README.md | 10 + .../plugins/screen/screen.plugin.zsh | 54 + dot_oh-my-zsh/plugins/scw/README.md | 7 + dot_oh-my-zsh/plugins/scw/_scw | 333 + dot_oh-my-zsh/plugins/sdk/README.md | 14 + dot_oh-my-zsh/plugins/sdk/sdk.plugin.zsh | 58 + dot_oh-my-zsh/plugins/sfdx/README.md | 11 + dot_oh-my-zsh/plugins/sfdx/_sfdx | 1110 + dot_oh-my-zsh/plugins/sfffe/README.md | 17 + dot_oh-my-zsh/plugins/sfffe/sfffe.plugin.zsh | 28 + dot_oh-my-zsh/plugins/shell-proxy/README.md | 62 + .../plugins/shell-proxy/dot_editorconfig | 3 + .../plugins/shell-proxy/executable_proxy.py | 78 + .../shell-proxy/executable_ssh-agent.py | 16 + .../shell-proxy/executable_ssh-proxy.py | 36 + .../shell-proxy/shell-proxy.plugin.zsh | 44 + dot_oh-my-zsh/plugins/shrink-path/README.md | 116 + .../shrink-path/shrink-path.plugin.zsh | 182 + dot_oh-my-zsh/plugins/sigstore/README.md | 13 + .../plugins/sigstore/sigstore.plugin.zsh | 22 + dot_oh-my-zsh/plugins/singlechar/README.md | 118 + .../plugins/singlechar/singlechar.plugin.zsh | 123 + dot_oh-my-zsh/plugins/skaffold/README.md | 9 + .../plugins/skaffold/skaffold.plugin.zsh | 14 + dot_oh-my-zsh/plugins/spring/README.md | 25 + dot_oh-my-zsh/plugins/spring/_spring | 29 + dot_oh-my-zsh/plugins/sprunge/README.md | 38 + .../plugins/sprunge/sprunge.plugin.zsh | 52 + dot_oh-my-zsh/plugins/ssh-agent/README.md | 106 + .../plugins/ssh-agent/ssh-agent.plugin.zsh | 108 + dot_oh-my-zsh/plugins/stack/README.md | 9 + dot_oh-my-zsh/plugins/stack/stack.plugin.zsh | 4 + dot_oh-my-zsh/plugins/sublime-merge/README.md | 17 + .../sublime-merge/sublime-merge.plugin.zsh | 55 + dot_oh-my-zsh/plugins/sublime/README.md | 37 + .../plugins/sublime/sublime.plugin.zsh | 124 + dot_oh-my-zsh/plugins/sudo/README.md | 75 + dot_oh-my-zsh/plugins/sudo/sudo.plugin.zsh | 108 + dot_oh-my-zsh/plugins/supervisor/README.md | 13 + .../plugins/supervisor/_supervisorctl | 143 + dot_oh-my-zsh/plugins/supervisor/_supervisord | 33 + .../plugins/supervisor/supervisor.plugin.zsh | 14 + dot_oh-my-zsh/plugins/suse/README.md | 96 + dot_oh-my-zsh/plugins/suse/suse.plugin.zsh | 59 + dot_oh-my-zsh/plugins/svcat/README.md | 9 + dot_oh-my-zsh/plugins/svcat/svcat.plugin.zsh | 6 + dot_oh-my-zsh/plugins/svn-fast-info/README.md | 56 + .../svn-fast-info/svn-fast-info.plugin.zsh | 74 + dot_oh-my-zsh/plugins/svn/README.md | 67 + dot_oh-my-zsh/plugins/svn/svn.plugin.zsh | 89 + dot_oh-my-zsh/plugins/swiftpm/README.md | 22 + dot_oh-my-zsh/plugins/swiftpm/_swift | 876 + .../plugins/swiftpm/swiftpm.plugin.zsh | 8 + dot_oh-my-zsh/plugins/symfony/README.md | 9 + .../plugins/symfony/symfony.plugin.zsh | 13 + dot_oh-my-zsh/plugins/symfony2/README.md | 28 + .../plugins/symfony2/symfony2.plugin.zsh | 34 + dot_oh-my-zsh/plugins/systemadmin/README.md | 51 + .../systemadmin/systemadmin.plugin.zsh | 163 + dot_oh-my-zsh/plugins/systemd/README.md | 97 + .../plugins/systemd/systemd.plugin.zsh | 118 + dot_oh-my-zsh/plugins/taskwarrior/README.md | 18 + dot_oh-my-zsh/plugins/taskwarrior/_task | 285 + .../taskwarrior/taskwarrior.plugin.zsh | 7 + dot_oh-my-zsh/plugins/term_tab/README.md | 18 + .../plugins/term_tab/term_tab.plugin.zsh | 41 + dot_oh-my-zsh/plugins/terminitor/README.md | 9 + dot_oh-my-zsh/plugins/terminitor/_terminitor | 38 + dot_oh-my-zsh/plugins/terraform/README.md | 43 + .../plugins/terraform/terraform.plugin.zsh | 23 + dot_oh-my-zsh/plugins/textastic/README.md | 15 + .../plugins/textastic/textastic.plugin.zsh | 17 + dot_oh-my-zsh/plugins/textmate/README.md | 17 + .../plugins/textmate/textmate.plugin.zsh | 14 + dot_oh-my-zsh/plugins/thefuck/README.md | 13 + .../plugins/thefuck/thefuck.plugin.zsh | 21 + dot_oh-my-zsh/plugins/themes/README.md | 18 + .../plugins/themes/themes.plugin.zsh | 35 + dot_oh-my-zsh/plugins/thor/README.md | 10 + dot_oh-my-zsh/plugins/thor/_thor | 4 + dot_oh-my-zsh/plugins/tig/README.md | 16 + dot_oh-my-zsh/plugins/tig/tig.plugin.zsh | 3 + dot_oh-my-zsh/plugins/timer/README.md | 18 + dot_oh-my-zsh/plugins/timer/timer.plugin.zsh | 35 + dot_oh-my-zsh/plugins/tmux-cssh/README.md | 10 + dot_oh-my-zsh/plugins/tmux-cssh/_tmux-cssh | 25 + dot_oh-my-zsh/plugins/tmux/README.md | 43 + dot_oh-my-zsh/plugins/tmux/tmux.extra.conf | 2 + dot_oh-my-zsh/plugins/tmux/tmux.only.conf | 1 + dot_oh-my-zsh/plugins/tmux/tmux.plugin.zsh | 113 + dot_oh-my-zsh/plugins/tmuxinator/README.md | 19 + dot_oh-my-zsh/plugins/tmuxinator/_tmuxinator | 23 + .../plugins/tmuxinator/tmuxinator.plugin.zsh | 5 + dot_oh-my-zsh/plugins/toolbox/README.md | 25 + .../plugins/toolbox/toolbox.plugin.zsh | 5 + dot_oh-my-zsh/plugins/torrent/README.md | 13 + .../plugins/torrent/torrent.plugin.zsh | 17 + dot_oh-my-zsh/plugins/transfer/README.md | 41 + .../plugins/transfer/transfer.plugin.zsh | 97 + dot_oh-my-zsh/plugins/tugboat/README.md | 12 + dot_oh-my-zsh/plugins/tugboat/_tugboat | 106 + dot_oh-my-zsh/plugins/ubuntu/README.md | 61 + .../plugins/ubuntu/ubuntu.plugin.zsh | 127 + dot_oh-my-zsh/plugins/ufw/README.md | 18 + dot_oh-my-zsh/plugins/ufw/_ufw | 115 + .../plugins/universalarchive/README.md | 46 + .../universalarchive/_universalarchive | 6 + .../universalarchive.plugin.zsh | 70 + dot_oh-my-zsh/plugins/urltools/README.md | 29 + .../plugins/urltools/urltools.plugin.zsh | 42 + .../plugins/vagrant-prompt/README.md | 6 + .../vagrant-prompt/vagrant-prompt.plugin.zsh | 33 + dot_oh-my-zsh/plugins/vagrant/README.md | 40 + dot_oh-my-zsh/plugins/vagrant/_vagrant | 133 + .../plugins/vagrant/vagrant.plugin.zsh | 33 + dot_oh-my-zsh/plugins/vault/README.md | 15 + dot_oh-my-zsh/plugins/vault/_vault | 400 + dot_oh-my-zsh/plugins/vi-mode/README.md | 132 + .../plugins/vi-mode/vi-mode.plugin.zsh | 145 + .../plugins/vim-interaction/README.md | 82 + .../vim-interaction.plugin.zsh | 69 + dot_oh-my-zsh/plugins/virtualenv/README.md | 15 + .../plugins/virtualenv/virtualenv.plugin.zsh | 7 + .../plugins/virtualenvwrapper/README.md | 38 + .../virtualenvwrapper.plugin.zsh | 91 + dot_oh-my-zsh/plugins/volta/README.md | 11 + dot_oh-my-zsh/plugins/volta/volta.plugin.zsh | 14 + dot_oh-my-zsh/plugins/vscode/README.md | 78 + .../plugins/vscode/vscode.plugin.zsh | 41 + dot_oh-my-zsh/plugins/vundle/README.md | 19 + .../plugins/vundle/vundle.plugin.zsh | 27 + dot_oh-my-zsh/plugins/wakeonlan/README.md | 43 + dot_oh-my-zsh/plugins/wakeonlan/_wake | 4 + .../plugins/wakeonlan/wakeonlan.plugin.zsh | 14 + dot_oh-my-zsh/plugins/watson/README.md | 9 + dot_oh-my-zsh/plugins/watson/_watson | 34 + dot_oh-my-zsh/plugins/wd/LICENSE | 21 + dot_oh-my-zsh/plugins/wd/README.md | 264 + dot_oh-my-zsh/plugins/wd/_wd.sh | 98 + dot_oh-my-zsh/plugins/wd/wd.plugin.zsh | 15 + dot_oh-my-zsh/plugins/wd/wd.sh | 513 + dot_oh-my-zsh/plugins/web-search/README.md | 81 + .../plugins/web-search/web-search.plugin.zsh | 86 + dot_oh-my-zsh/plugins/wp-cli/README.md | 109 + .../plugins/wp-cli/wp-cli.plugin.zsh | 123 + dot_oh-my-zsh/plugins/xcode/README.md | 88 + dot_oh-my-zsh/plugins/xcode/_xcselv | 19 + dot_oh-my-zsh/plugins/xcode/xcode.plugin.zsh | 201 + dot_oh-my-zsh/plugins/yarn/README.md | 58 + dot_oh-my-zsh/plugins/yarn/_yarn | 502 + dot_oh-my-zsh/plugins/yarn/yarn.plugin.zsh | 46 + dot_oh-my-zsh/plugins/yii/README.md | 15 + dot_oh-my-zsh/plugins/yii/yii.plugin.zsh | 17 + dot_oh-my-zsh/plugins/yii2/README.md | 7 + dot_oh-my-zsh/plugins/yii2/yii2.plugin.zsh | 29 + dot_oh-my-zsh/plugins/yum/README.md | 27 + dot_oh-my-zsh/plugins/yum/yum.plugin.zsh | 16 + dot_oh-my-zsh/plugins/z/LICENSE | 21 + dot_oh-my-zsh/plugins/z/MANUAL.md | 343 + dot_oh-my-zsh/plugins/z/README.md | 24 + dot_oh-my-zsh/plugins/z/_z | 82 + dot_oh-my-zsh/plugins/z/z.plugin.zsh | 968 + dot_oh-my-zsh/plugins/zbell/README.md | 33 + dot_oh-my-zsh/plugins/zbell/zbell.plugin.zsh | 96 + dot_oh-my-zsh/plugins/zeus/README.md | 50 + dot_oh-my-zsh/plugins/zeus/_zeus | 98 + dot_oh-my-zsh/plugins/zeus/zeus.plugin.zsh | 70 + dot_oh-my-zsh/plugins/zoxide/README.md | 14 + .../plugins/zoxide/zoxide.plugin.zsh | 5 + .../plugins/zsh-interactive-cd/README.md | 23 + .../zsh-interactive-cd.plugin.zsh | 148 + .../plugins/zsh-navigation-tools/LICENSE | 700 + .../plugins/zsh-navigation-tools/Makefile | 35 + .../plugins/zsh-navigation-tools/NEWS | 17 + .../plugins/zsh-navigation-tools/README.md | 259 + .../plugins/zsh-navigation-tools/_n-kill | 41 + .../doc/executable_generate_single_file | 35 + .../doc/executable_install.sh | 70 + .../doc/executable_znt-tmux.zsh | 50 + .../doc/img/n-history2.png | Bin 0 -> 108316 bytes .../zsh-navigation-tools/doc/n-preview | 224 + .../dot_config/znt/n-aliases.conf | 33 + .../dot_config/znt/n-cd.conf | 68 + .../dot_config/znt/n-env.conf | 38 + .../dot_config/znt/n-functions.conf | 41 + .../dot_config/znt/n-history.conf | 43 + .../dot_config/znt/n-kill.conf | 46 + .../dot_config/znt/n-list.conf | 55 + .../dot_config/znt/n-options.conf | 34 + .../dot_config/znt/n-panelize.conf | 34 + .../plugins/zsh-navigation-tools/n-aliases | 47 + .../plugins/zsh-navigation-tools/n-cd | 71 + .../plugins/zsh-navigation-tools/n-env | 47 + .../plugins/zsh-navigation-tools/n-functions | 54 + .../plugins/zsh-navigation-tools/n-help | 135 + .../plugins/zsh-navigation-tools/n-history | 371 + .../plugins/zsh-navigation-tools/n-kill | 96 + .../plugins/zsh-navigation-tools/n-list | 517 + .../plugins/zsh-navigation-tools/n-list-draw | 133 + .../plugins/zsh-navigation-tools/n-list-input | 377 + .../plugins/zsh-navigation-tools/n-options | 84 + .../plugins/zsh-navigation-tools/n-panelize | 68 + .../zsh-navigation-tools/znt-cd-widget | 8 + .../zsh-navigation-tools/znt-history-widget | 22 + .../zsh-navigation-tools/znt-kill-widget | 8 + .../zsh-navigation-tools/znt-usetty-wrapper | 40 + .../zsh-navigation-tools.plugin.zsh | 77 + dot_oh-my-zsh/templates/zshrc.zsh-template | 101 + dot_oh-my-zsh/themes/3den.zsh-theme | 7 + dot_oh-my-zsh/themes/Soliah.zsh-theme | 85 + dot_oh-my-zsh/themes/adben.zsh-theme | 118 + dot_oh-my-zsh/themes/af-magic.zsh-theme | 46 + dot_oh-my-zsh/themes/afowler.zsh-theme | 10 + dot_oh-my-zsh/themes/agnoster.zsh-theme | 269 + dot_oh-my-zsh/themes/alanpeabody.zsh-theme | 24 + dot_oh-my-zsh/themes/amuse.zsh-theme | 18 + dot_oh-my-zsh/themes/apple.zsh-theme | 24 + dot_oh-my-zsh/themes/arrow.zsh-theme | 14 + dot_oh-my-zsh/themes/aussiegeek.zsh-theme | 8 + dot_oh-my-zsh/themes/avit.zsh-theme | 85 + dot_oh-my-zsh/themes/awesomepanda.zsh-theme | 16 + dot_oh-my-zsh/themes/bira.zsh-theme | 32 + dot_oh-my-zsh/themes/blinks.zsh-theme | 30 + dot_oh-my-zsh/themes/bureau.zsh-theme | 126 + dot_oh-my-zsh/themes/candy-kingdom.zsh-theme | 34 + dot_oh-my-zsh/themes/candy.zsh-theme | 7 + dot_oh-my-zsh/themes/clean.zsh-theme | 14 + dot_oh-my-zsh/themes/cloud.zsh-theme | 10 + dot_oh-my-zsh/themes/crcandy.zsh-theme | 8 + dot_oh-my-zsh/themes/crunch.zsh-theme | 39 + dot_oh-my-zsh/themes/cypher.zsh-theme | 4 + dot_oh-my-zsh/themes/dallas.zsh-theme | 27 + dot_oh-my-zsh/themes/darkblood.zsh-theme | 9 + dot_oh-my-zsh/themes/daveverwer.zsh-theme | 7 + dot_oh-my-zsh/themes/dieter.zsh-theme | 56 + dot_oh-my-zsh/themes/dogenpunk.zsh-theme | 77 + dot_oh-my-zsh/themes/dpoggi.zsh-theme | 14 + dot_oh-my-zsh/themes/dst.zsh-theme | 16 + dot_oh-my-zsh/themes/dstufft.zsh-theme | 19 + dot_oh-my-zsh/themes/duellj.zsh-theme | 7 + dot_oh-my-zsh/themes/eastwood.zsh-theme | 23 + dot_oh-my-zsh/themes/edvardm.zsh-theme | 6 + dot_oh-my-zsh/themes/emotty.zsh-theme | 113 + dot_oh-my-zsh/themes/essembeh.zsh-theme | 50 + dot_oh-my-zsh/themes/evan.zsh-theme | 2 + dot_oh-my-zsh/themes/fino-time.zsh-theme | 37 + dot_oh-my-zsh/themes/fino.zsh-theme | 47 + dot_oh-my-zsh/themes/fishy.zsh-theme | 35 + dot_oh-my-zsh/themes/flazz.zsh-theme | 19 + dot_oh-my-zsh/themes/fletcherm.zsh-theme | 12 + dot_oh-my-zsh/themes/fox.zsh-theme | 9 + dot_oh-my-zsh/themes/frisk.zsh-theme | 12 + dot_oh-my-zsh/themes/frontcube.zsh-theme | 13 + dot_oh-my-zsh/themes/funky.zsh-theme | 14 + dot_oh-my-zsh/themes/fwalch.zsh-theme | 6 + dot_oh-my-zsh/themes/gallifrey.zsh-theme | 11 + dot_oh-my-zsh/themes/gallois.zsh-theme | 24 + .../themes/garyblessington.zsh-theme | 6 + dot_oh-my-zsh/themes/gentoo.zsh-theme | 30 + dot_oh-my-zsh/themes/geoffgarside.zsh-theme | 5 + dot_oh-my-zsh/themes/gianu.zsh-theme | 6 + dot_oh-my-zsh/themes/gnzh.zsh-theme | 43 + dot_oh-my-zsh/themes/gozilla.zsh-theme | 15 + dot_oh-my-zsh/themes/half-life.zsh-theme | 93 + dot_oh-my-zsh/themes/humza.zsh-theme | 26 + dot_oh-my-zsh/themes/imajes.zsh-theme | 5 + dot_oh-my-zsh/themes/intheloop.zsh-theme | 23 + dot_oh-my-zsh/themes/itchy.zsh-theme | 18 + dot_oh-my-zsh/themes/jaischeema.zsh-theme | 12 + dot_oh-my-zsh/themes/jbergantine.zsh-theme | 6 + dot_oh-my-zsh/themes/jispwoso.zsh-theme | 10 + dot_oh-my-zsh/themes/jnrowe.zsh-theme | 37 + dot_oh-my-zsh/themes/jonathan.zsh-theme | 124 + dot_oh-my-zsh/themes/josh.zsh-theme | 43 + dot_oh-my-zsh/themes/jreese.zsh-theme | 14 + dot_oh-my-zsh/themes/jtriley.zsh-theme | 2 + dot_oh-my-zsh/themes/juanghurtado.zsh-theme | 41 + dot_oh-my-zsh/themes/junkfood.zsh-theme | 30 + dot_oh-my-zsh/themes/kafeitu.zsh-theme | 6 + dot_oh-my-zsh/themes/kardan.zsh-theme | 12 + dot_oh-my-zsh/themes/kennethreitz.zsh-theme | 15 + dot_oh-my-zsh/themes/kiwi.zsh-theme | 10 + dot_oh-my-zsh/themes/kolo.zsh-theme | 24 + dot_oh-my-zsh/themes/kphoen.zsh-theme | 43 + dot_oh-my-zsh/themes/lambda.zsh-theme | 4 + dot_oh-my-zsh/themes/linuxonly.zsh-theme | 58 + dot_oh-my-zsh/themes/lukerandall.zsh-theme | 24 + dot_oh-my-zsh/themes/macovsky.zsh-theme | 12 + dot_oh-my-zsh/themes/maran.zsh-theme | 6 + dot_oh-my-zsh/themes/mgutz.zsh-theme | 6 + dot_oh-my-zsh/themes/mh.zsh-theme | 24 + dot_oh-my-zsh/themes/michelebologna.zsh-theme | 79 + dot_oh-my-zsh/themes/mikeh.zsh-theme | 21 + dot_oh-my-zsh/themes/miloshadzic.zsh-theme | 8 + dot_oh-my-zsh/themes/minimal.zsh-theme | 26 + dot_oh-my-zsh/themes/mira.zsh-theme | 23 + dot_oh-my-zsh/themes/mlh.zsh-theme | 105 + dot_oh-my-zsh/themes/mortalscumbag.zsh-theme | 65 + dot_oh-my-zsh/themes/mrtazz.zsh-theme | 7 + dot_oh-my-zsh/themes/murilasso.zsh-theme | 14 + dot_oh-my-zsh/themes/muse.zsh-theme | 16 + dot_oh-my-zsh/themes/nanotech.zsh-theme | 7 + dot_oh-my-zsh/themes/nebirhos.zsh-theme | 21 + dot_oh-my-zsh/themes/nicoulaj.zsh-theme | 43 + dot_oh-my-zsh/themes/norm.zsh-theme | 7 + dot_oh-my-zsh/themes/obraun.zsh-theme | 10 + dot_oh-my-zsh/themes/peepcode.zsh-theme | 47 + dot_oh-my-zsh/themes/philips.zsh-theme | 14 + dot_oh-my-zsh/themes/pmcgee.zsh-theme | 16 + .../themes/pygmalion-virtualenv.zsh-theme | 54 + dot_oh-my-zsh/themes/pygmalion.zsh-theme | 32 + dot_oh-my-zsh/themes/random.zsh-theme | 47 + dot_oh-my-zsh/themes/re5et.zsh-theme | 15 + dot_oh-my-zsh/themes/refined.zsh-theme | 108 + dot_oh-my-zsh/themes/rgm.zsh-theme | 8 + dot_oh-my-zsh/themes/risto.zsh-theme | 6 + dot_oh-my-zsh/themes/rixius.zsh-theme | 21 + dot_oh-my-zsh/themes/rkj-repos.zsh-theme | 35 + dot_oh-my-zsh/themes/rkj.zsh-theme | 9 + dot_oh-my-zsh/themes/robbyrussell.zsh-theme | 7 + dot_oh-my-zsh/themes/sammy.zsh-theme | 6 + dot_oh-my-zsh/themes/simonoff.zsh-theme | 99 + dot_oh-my-zsh/themes/simple.zsh-theme | 6 + dot_oh-my-zsh/themes/skaro.zsh-theme | 7 + dot_oh-my-zsh/themes/smt.zsh-theme | 83 + dot_oh-my-zsh/themes/sonicradish.zsh-theme | 37 + dot_oh-my-zsh/themes/sorin.zsh-theme | 42 + dot_oh-my-zsh/themes/sporty_256.zsh-theme | 13 + dot_oh-my-zsh/themes/steeef.zsh-theme | 103 + dot_oh-my-zsh/themes/strug.zsh-theme | 25 + dot_oh-my-zsh/themes/sunaku.zsh-theme | 25 + dot_oh-my-zsh/themes/sunrise.zsh-theme | 93 + dot_oh-my-zsh/themes/superjarin.zsh-theme | 18 + dot_oh-my-zsh/themes/suvash.zsh-theme | 21 + .../themes/symlink_macovsky-ruby.zsh-theme | 1 + dot_oh-my-zsh/themes/takashiyoshida.zsh-theme | 27 + dot_oh-my-zsh/themes/terminalparty.zsh-theme | 8 + dot_oh-my-zsh/themes/theunraveler.zsh-theme | 16 + dot_oh-my-zsh/themes/tjkirch.zsh-theme | 15 + dot_oh-my-zsh/themes/tjkirch_mod.zsh-theme | 13 + dot_oh-my-zsh/themes/tonotdo.zsh-theme | 12 + dot_oh-my-zsh/themes/trapd00r.zsh-theme | 132 + dot_oh-my-zsh/themes/wedisagree.zsh-theme | 109 + dot_oh-my-zsh/themes/wezm+.zsh-theme | 7 + dot_oh-my-zsh/themes/wezm.zsh-theme | 7 + dot_oh-my-zsh/themes/wuffers.zsh-theme | 5 + .../themes/xiong-chiamiov-plus.zsh-theme | 6 + dot_oh-my-zsh/themes/xiong-chiamiov.zsh-theme | 6 + dot_oh-my-zsh/themes/ys.zsh-theme | 80 + dot_oh-my-zsh/themes/zhann.zsh-theme | 25 + dot_oh-my-zsh/tools/check_for_upgrade.sh | 211 + dot_oh-my-zsh/tools/executable_changelog.sh | 476 + dot_oh-my-zsh/tools/executable_install.sh | 523 + .../tools/executable_require_tool.sh | 161 + .../tools/executable_theme_chooser.sh | 98 + dot_oh-my-zsh/tools/executable_upgrade.sh | 251 + dot_oh-my-zsh/tools/uninstall.sh | 40 + dot_profile | 36 + dot_swaylock/executable_config | 26 + dot_zprofile | 45 + dot_zshrc | 103 + .../private_executable_gpg-agent.conf | 3 + scripte/executable_i3exit | 30 + scripte/executable_swayexit | 30 + 1137 files changed, 120430 insertions(+) create mode 100644 desktop-bilder/background.jpg create mode 100644 dot_bash_profile create mode 100644 dot_config/alacritty/executable_alacritty.yml create mode 100644 dot_config/alacritty/executable_alacritty.yml.old create mode 100644 dot_config/dunst/executable_alert.sh create mode 100644 dot_config/dunst/executable_dunstrc create mode 100644 dot_config/executable_gtkrc create mode 100644 dot_config/executable_gtkrc-2.0 create mode 100644 dot_config/executable_sway-mimeapps.list create mode 100644 dot_config/executable_user-dirs.dirs create mode 100644 dot_config/executable_user-dirs.locale create mode 100644 dot_config/fish/executable_config.fish create mode 100644 dot_config/fontconfig/executable_fonts.conf create mode 100644 dot_config/fontconfig/executable_fonts.conf.back create mode 100644 dot_config/fontconfig/executable_fonts.conf.bak create mode 100644 dot_config/gtk-3.0/executable_bookmarks create mode 100644 dot_config/gtk-3.0/executable_colors.css create mode 100644 dot_config/gtk-3.0/executable_gtk.css create mode 100644 dot_config/gtk-3.0/executable_settings-backup.ini create mode 100644 dot_config/gtk-3.0/executable_settings.ini create mode 100644 dot_config/gtk-3.0/executable_settings.ini-1667168286~ create mode 100644 dot_config/gtk-3.0/executable_settings.ini.old create mode 100644 dot_config/gtk-4.0/executable_settings.ini create mode 100644 dot_config/i3/executable_arch-update create mode 100644 dot_config/i3/executable_backlight_system.sh create mode 100644 dot_config/i3/executable_bandwidth create mode 100644 dot_config/i3/executable_batterybar create mode 100644 dot_config/i3/executable_calendar create mode 100644 dot_config/i3/executable_compton.conf create mode 100644 dot_config/i3/executable_compton.conf_old create mode 100644 dot_config/i3/executable_config create mode 100644 dot_config/i3/executable_cpu create mode 100644 dot_config/i3/executable_disk-io create mode 100644 dot_config/i3/executable_disk.sh create mode 100644 dot_config/i3/executable_hui_light.sh create mode 100644 dot_config/i3/executable_hui_light_color.sh create mode 100644 dot_config/i3/executable_i3-blocks-bottom.conf create mode 100644 dot_config/i3/executable_i3-blocks-top.conf create mode 100644 dot_config/i3/executable_i3-blocks.conf create mode 100644 dot_config/i3/executable_key_layout create mode 100644 dot_config/i3/executable_load create mode 100644 dot_config/i3/executable_mem create mode 100644 dot_config/i3/executable_monitor_manager create mode 100644 dot_config/i3/executable_picom.conf create mode 100644 dot_config/i3/executable_sensors.sh create mode 100644 dot_config/i3/executable_shutdown_menu create mode 100644 dot_config/i3/executable_usb create mode 100644 dot_config/i3/executable_vpn.sh create mode 100644 dot_config/i3/executable_weather.rb create mode 100644 dot_config/i3status-rust/executable_config.toml create mode 100644 dot_config/kitty/executable_kitty.conf create mode 100644 dot_config/lxqt/executable_archiver.conf create mode 100644 dot_config/lxqt/executable_lxqt-config-appearance.conf create mode 100644 dot_config/lxqt/executable_lxqt-config-file-associations.conf create mode 100644 dot_config/lxqt/executable_lxqt-config-locale.conf create mode 100644 dot_config/lxqt/executable_lxqt-config.conf create mode 100644 dot_config/lxqt/executable_lxqt.conf create mode 100644 dot_config/lxqt/executable_session.conf create mode 100644 dot_config/lxqt/executable_windowmanagers.conf create mode 100644 dot_config/mako/executable_config create mode 100644 dot_config/ncmpcpp/executable_config create mode 100644 dot_config/pcmanfm-qt/default/executable_recent-files.conf create mode 100644 dot_config/pcmanfm-qt/default/executable_settings.conf create mode 100644 dot_config/pcmanfm/default/executable_pcmanfm.conf create mode 100644 dot_config/private_mimeapps.list create mode 100644 dot_config/qt5ct/colors/executable_arc-dark.conf create mode 100644 dot_config/qt5ct/colors/executable_arc.conf create mode 100644 dot_config/qt5ct/executable_qt5ct.conf create mode 100644 dot_config/qt5ct/qss/.keep create mode 100644 dot_config/sov/executable_config create mode 100644 dot_config/sway/executable_arch-update create mode 100644 dot_config/sway/executable_bandwidth create mode 100644 dot_config/sway/executable_batterybar create mode 100644 dot_config/sway/executable_calendar create mode 100644 dot_config/sway/executable_compton.conf create mode 100644 dot_config/sway/executable_config create mode 100644 dot_config/sway/executable_cpu create mode 100644 dot_config/sway/executable_disk-io create mode 100644 dot_config/sway/executable_disk.sh create mode 100644 dot_config/sway/executable_dot_bash_profile create mode 100644 dot_config/sway/executable_i3-blocks-bottom.conf create mode 100644 dot_config/sway/executable_i3-blocks-top.conf create mode 100644 dot_config/sway/executable_i3-blocks.conf create mode 100644 dot_config/sway/executable_key_layout create mode 100644 dot_config/sway/executable_load create mode 100644 dot_config/sway/executable_mem create mode 100644 dot_config/sway/executable_monitor_manager create mode 100644 dot_config/sway/executable_sensors.sh create mode 100644 dot_config/sway/executable_shutdown_menu create mode 100644 dot_config/sway/executable_sunset.jpg create mode 100644 dot_config/sway/executable_swayexit-openrc create mode 100644 dot_config/sway/executable_swayexit-systemd create mode 100644 dot_config/sway/executable_usb create mode 100644 dot_config/sway/executable_vpn.sh create mode 100644 dot_config/sway/executable_weather.rb create mode 100644 dot_config/wezterm/executable_wezterm.lua create mode 100644 dot_config/xfce4/desktop/executable_icons.screen0-1904x1037.rc create mode 100644 dot_config/xfce4/desktop/symlink_icons.screen.latest.rc create mode 100644 dot_config/xfce4/executable_helpers.rc create mode 100644 dot_config/xfce4/executable_xfce4-screenshooter create mode 100644 dot_config/xfce4/panel/launcher-17/executable_16637035441.desktop create mode 100644 dot_config/xfce4/panel/launcher-18/executable_16637035442.desktop create mode 100644 dot_config/xfce4/panel/launcher-19/executable_16637035443.desktop create mode 100644 dot_config/xfce4/panel/launcher-20/executable_16637035444.desktop create mode 100644 dot_config/xfce4/terminal/executable_terminalrc create mode 100644 dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_displays.xml create mode 100644 dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_keyboards.xml create mode 100644 dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_ristretto.xml create mode 100644 dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_thunar.xml create mode 100644 dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xfce4-desktop.xml create mode 100644 dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xfce4-keyboard-shortcuts.xml create mode 100644 dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xfce4-panel.xml create mode 100644 dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xfce4-power-manager.xml create mode 100644 dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xfce4-screensaver.xml create mode 100644 dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xfce4-session.xml create mode 100644 dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xfce4-settings-editor.xml create mode 100644 dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xfce4-settings-manager.xml create mode 100644 dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xfce4-taskmanager.xml create mode 100644 dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xfwm4.xml create mode 100644 dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xsettings.xml create mode 100644 dot_config/xfce4/xfwm4/.keep create mode 100644 dot_config/xournalpp/autosave/.keep create mode 100644 dot_config/xournalpp/executable_colornames.ini create mode 100644 dot_config/xournalpp/executable_settings.xml create mode 100644 dot_gtkrc-2.0 create mode 100644 dot_oh-my-zsh/CODE_OF_CONDUCT.md create mode 100644 dot_oh-my-zsh/CONTRIBUTING.md create mode 100644 dot_oh-my-zsh/LICENSE.txt create mode 100644 dot_oh-my-zsh/README.md create mode 100644 dot_oh-my-zsh/SECURITY.md create mode 100644 dot_oh-my-zsh/cache/completions/.keep create mode 100644 dot_oh-my-zsh/cache/dot_zsh-update create mode 100644 dot_oh-my-zsh/cache/empty_dot_gitkeep create mode 100644 dot_oh-my-zsh/cache/grep-alias create mode 100644 dot_oh-my-zsh/custom/example.zsh create mode 100644 dot_oh-my-zsh/custom/plugins/example/example.plugin.zsh create mode 100644 dot_oh-my-zsh/custom/themes/example.zsh-theme create mode 100644 dot_oh-my-zsh/dot_editorconfig create mode 100644 dot_oh-my-zsh/dot_git/FETCH_HEAD create mode 100644 dot_oh-my-zsh/dot_git/HEAD create mode 100644 dot_oh-my-zsh/dot_git/branches/.keep create mode 100644 dot_oh-my-zsh/dot_git/config create mode 100644 dot_oh-my-zsh/dot_git/description create mode 100644 dot_oh-my-zsh/dot_git/hooks/executable_applypatch-msg.sample create mode 100644 dot_oh-my-zsh/dot_git/hooks/executable_commit-msg.sample create mode 100644 dot_oh-my-zsh/dot_git/hooks/executable_fsmonitor-watchman.sample create mode 100644 dot_oh-my-zsh/dot_git/hooks/executable_post-update.sample create mode 100644 dot_oh-my-zsh/dot_git/hooks/executable_pre-applypatch.sample create mode 100644 dot_oh-my-zsh/dot_git/hooks/executable_pre-commit.sample create mode 100644 dot_oh-my-zsh/dot_git/hooks/executable_pre-merge-commit.sample create mode 100644 dot_oh-my-zsh/dot_git/hooks/executable_pre-push.sample create mode 100644 dot_oh-my-zsh/dot_git/hooks/executable_pre-rebase.sample create mode 100644 dot_oh-my-zsh/dot_git/hooks/executable_pre-receive.sample create mode 100644 dot_oh-my-zsh/dot_git/hooks/executable_prepare-commit-msg.sample create mode 100644 dot_oh-my-zsh/dot_git/hooks/executable_push-to-checkout.sample create mode 100644 dot_oh-my-zsh/dot_git/hooks/executable_update.sample create mode 100644 dot_oh-my-zsh/dot_git/index create mode 100644 dot_oh-my-zsh/dot_git/info/exclude create mode 100644 dot_oh-my-zsh/dot_git/logs/HEAD create mode 100644 dot_oh-my-zsh/dot_git/logs/refs/heads/master create mode 100644 dot_oh-my-zsh/dot_git/logs/refs/remotes/origin/master create mode 100644 dot_oh-my-zsh/dot_git/objects/info/.keep create mode 100644 dot_oh-my-zsh/dot_git/objects/pack/readonly_pack-eab12e5db99c28653c26368754290c2fb39547a4.idx create mode 100644 dot_oh-my-zsh/dot_git/objects/pack/readonly_pack-eab12e5db99c28653c26368754290c2fb39547a4.pack create mode 100644 dot_oh-my-zsh/dot_git/refs/heads/master create mode 100644 dot_oh-my-zsh/dot_git/refs/remotes/origin/master create mode 100644 dot_oh-my-zsh/dot_git/refs/tags/.keep create mode 100644 dot_oh-my-zsh/dot_git/shallow create mode 100644 dot_oh-my-zsh/dot_github/CODEOWNERS create mode 100644 dot_oh-my-zsh/dot_github/FUNDING.yml create mode 100644 dot_oh-my-zsh/dot_github/ISSUE_TEMPLATE/bug_report.yml create mode 100644 dot_oh-my-zsh/dot_github/ISSUE_TEMPLATE/bug_report_omz.yml create mode 100644 dot_oh-my-zsh/dot_github/ISSUE_TEMPLATE/config.yml create mode 100644 dot_oh-my-zsh/dot_github/ISSUE_TEMPLATE/feature_request.yml create mode 100644 dot_oh-my-zsh/dot_github/PULL_REQUEST_TEMPLATE.md create mode 100644 dot_oh-my-zsh/dot_github/workflows/main.yml create mode 100644 dot_oh-my-zsh/dot_github/workflows/project.yml create mode 100644 dot_oh-my-zsh/dot_gitignore create mode 100644 dot_oh-my-zsh/dot_gitpod.Dockerfile create mode 100644 dot_oh-my-zsh/dot_gitpod.yml create mode 100644 dot_oh-my-zsh/dot_prettierrc create mode 100644 dot_oh-my-zsh/lib/bzr.zsh create mode 100644 dot_oh-my-zsh/lib/cli.zsh create mode 100644 dot_oh-my-zsh/lib/clipboard.zsh create mode 100644 dot_oh-my-zsh/lib/compfix.zsh create mode 100644 dot_oh-my-zsh/lib/completion.zsh create mode 100644 dot_oh-my-zsh/lib/correction.zsh create mode 100644 dot_oh-my-zsh/lib/diagnostics.zsh create mode 100644 dot_oh-my-zsh/lib/directories.zsh create mode 100644 dot_oh-my-zsh/lib/functions.zsh create mode 100644 dot_oh-my-zsh/lib/git.zsh create mode 100644 dot_oh-my-zsh/lib/grep.zsh create mode 100644 dot_oh-my-zsh/lib/history.zsh create mode 100644 dot_oh-my-zsh/lib/key-bindings.zsh create mode 100644 dot_oh-my-zsh/lib/misc.zsh create mode 100644 dot_oh-my-zsh/lib/nvm.zsh create mode 100644 dot_oh-my-zsh/lib/prompt_info_functions.zsh create mode 100644 dot_oh-my-zsh/lib/spectrum.zsh create mode 100644 dot_oh-my-zsh/lib/termsupport.zsh create mode 100644 dot_oh-my-zsh/lib/theme-and-appearance.zsh create mode 100644 dot_oh-my-zsh/lib/vcs_info.zsh create mode 100644 dot_oh-my-zsh/log/empty_dot_gitkeep create mode 100644 dot_oh-my-zsh/oh-my-zsh.sh create mode 100644 dot_oh-my-zsh/plugins/1password/1password.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/1password/README.md create mode 100644 dot_oh-my-zsh/plugins/1password/_opswd create mode 100644 dot_oh-my-zsh/plugins/1password/opswd create mode 100644 dot_oh-my-zsh/plugins/adb/README.md create mode 100644 dot_oh-my-zsh/plugins/adb/_adb create mode 100644 dot_oh-my-zsh/plugins/ag/README.md create mode 100644 dot_oh-my-zsh/plugins/ag/_ag create mode 100644 dot_oh-my-zsh/plugins/alias-finder/README.md create mode 100644 dot_oh-my-zsh/plugins/alias-finder/alias-finder.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/aliases/README.md create mode 100644 dot_oh-my-zsh/plugins/aliases/aliases.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/aliases/cheatsheet.py create mode 100644 dot_oh-my-zsh/plugins/aliases/dot_gitignore create mode 100644 dot_oh-my-zsh/plugins/aliases/termcolor.py create mode 100644 dot_oh-my-zsh/plugins/ansible/README.md create mode 100644 dot_oh-my-zsh/plugins/ansible/ansible.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/ant/README.md create mode 100644 dot_oh-my-zsh/plugins/ant/_ant create mode 100644 dot_oh-my-zsh/plugins/ant/ant.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/apache2-macports/README.md create mode 100644 dot_oh-my-zsh/plugins/apache2-macports/apache2-macports.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/arcanist/README.md create mode 100644 dot_oh-my-zsh/plugins/arcanist/arcanist.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/archlinux/README.md create mode 100644 dot_oh-my-zsh/plugins/archlinux/archlinux.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/asdf/README.md create mode 100644 dot_oh-my-zsh/plugins/asdf/asdf.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/autoenv/README.md create mode 100644 dot_oh-my-zsh/plugins/autoenv/autoenv.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/autojump/README.md create mode 100644 dot_oh-my-zsh/plugins/autojump/autojump.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/autopep8/README.md create mode 100644 dot_oh-my-zsh/plugins/autopep8/_autopep8 create mode 100644 dot_oh-my-zsh/plugins/aws/README.md create mode 100644 dot_oh-my-zsh/plugins/aws/aws.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/battery/README.md create mode 100644 dot_oh-my-zsh/plugins/battery/battery.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/bazel/README.md create mode 100644 dot_oh-my-zsh/plugins/bazel/_bazel create mode 100644 dot_oh-my-zsh/plugins/bbedit/README.md create mode 100644 dot_oh-my-zsh/plugins/bbedit/bbedit.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/bedtools/README.md create mode 100644 dot_oh-my-zsh/plugins/bedtools/_bedtools create mode 100644 dot_oh-my-zsh/plugins/bgnotify/README.md create mode 100644 dot_oh-my-zsh/plugins/bgnotify/bgnotify.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/bower/README.md create mode 100644 dot_oh-my-zsh/plugins/bower/_bower create mode 100644 dot_oh-my-zsh/plugins/bower/bower.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/branch/README.md create mode 100644 dot_oh-my-zsh/plugins/branch/branch.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/brew/README.md create mode 100644 dot_oh-my-zsh/plugins/brew/brew.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/bridgetown/README.md create mode 100644 dot_oh-my-zsh/plugins/bridgetown/bridgetown.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/bundler/README.md create mode 100644 dot_oh-my-zsh/plugins/bundler/_bundler create mode 100644 dot_oh-my-zsh/plugins/bundler/bundler.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/cabal/README.md create mode 100644 dot_oh-my-zsh/plugins/cabal/cabal.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/cake/README.md create mode 100644 dot_oh-my-zsh/plugins/cake/cake.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/cakephp3/README.md create mode 100644 dot_oh-my-zsh/plugins/cakephp3/cakephp3.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/capistrano/README.md create mode 100644 dot_oh-my-zsh/plugins/capistrano/_capistrano create mode 100644 dot_oh-my-zsh/plugins/capistrano/capistrano.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/cask/README.md create mode 100644 dot_oh-my-zsh/plugins/cask/cask.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/catimg/README.md create mode 100644 dot_oh-my-zsh/plugins/catimg/catimg.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/catimg/catimg.sh create mode 100644 dot_oh-my-zsh/plugins/catimg/colors.png create mode 100644 dot_oh-my-zsh/plugins/celery/README.md create mode 100644 dot_oh-my-zsh/plugins/celery/_celery create mode 100644 dot_oh-my-zsh/plugins/charm/README.md create mode 100644 dot_oh-my-zsh/plugins/charm/charm.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/chruby/README.md create mode 100644 dot_oh-my-zsh/plugins/chruby/chruby.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/chucknorris/README.md create mode 100644 dot_oh-my-zsh/plugins/chucknorris/chucknorris.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/chucknorris/dot_gitignore create mode 100644 dot_oh-my-zsh/plugins/chucknorris/fortunes/chucknorris create mode 100644 dot_oh-my-zsh/plugins/cloudfoundry/README.md create mode 100644 dot_oh-my-zsh/plugins/cloudfoundry/cloudfoundry.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/codeclimate/README.md create mode 100644 dot_oh-my-zsh/plugins/codeclimate/_codeclimate create mode 100644 dot_oh-my-zsh/plugins/coffee/README.md create mode 100644 dot_oh-my-zsh/plugins/coffee/_coffee create mode 100644 dot_oh-my-zsh/plugins/coffee/coffee.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/colemak/README.md create mode 100644 dot_oh-my-zsh/plugins/colemak/colemak-less create mode 100644 dot_oh-my-zsh/plugins/colemak/colemak.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/colemak/dot_gitignore create mode 100644 dot_oh-my-zsh/plugins/colored-man-pages/README.md create mode 100644 dot_oh-my-zsh/plugins/colored-man-pages/colored-man-pages.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/colored-man-pages/executable_nroff create mode 100644 dot_oh-my-zsh/plugins/colorize/README.md create mode 100644 dot_oh-my-zsh/plugins/colorize/colorize.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/command-not-found/README.md create mode 100644 dot_oh-my-zsh/plugins/command-not-found/command-not-found.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/common-aliases/README.md create mode 100644 dot_oh-my-zsh/plugins/common-aliases/common-aliases.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/compleat/README.md create mode 100644 dot_oh-my-zsh/plugins/compleat/compleat.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/composer/README.md create mode 100644 dot_oh-my-zsh/plugins/composer/composer.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/copybuffer/README.md create mode 100644 dot_oh-my-zsh/plugins/copybuffer/copybuffer.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/copyfile/README.md create mode 100644 dot_oh-my-zsh/plugins/copyfile/copyfile.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/copypath/README.md create mode 100644 dot_oh-my-zsh/plugins/copypath/copypath.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/cp/README.md create mode 100644 dot_oh-my-zsh/plugins/cp/cp.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/cpanm/README.md create mode 100644 dot_oh-my-zsh/plugins/cpanm/_cpanm create mode 100644 dot_oh-my-zsh/plugins/dash/README.md create mode 100644 dot_oh-my-zsh/plugins/dash/dash.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/debian/README.md create mode 100644 dot_oh-my-zsh/plugins/debian/debian.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/deno/README.md create mode 100644 dot_oh-my-zsh/plugins/deno/deno.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/dircycle/README.md create mode 100644 dot_oh-my-zsh/plugins/dircycle/dircycle.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/direnv/README.md create mode 100644 dot_oh-my-zsh/plugins/direnv/direnv.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/dirhistory/README.md create mode 100644 dot_oh-my-zsh/plugins/dirhistory/dirhistory.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/dirpersist/README.md create mode 100644 dot_oh-my-zsh/plugins/dirpersist/dirpersist.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/dnf/README.md create mode 100644 dot_oh-my-zsh/plugins/dnf/dnf.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/dnote/README.md create mode 100644 dot_oh-my-zsh/plugins/dnote/_dnote create mode 100644 dot_oh-my-zsh/plugins/docker-compose/README.md create mode 100644 dot_oh-my-zsh/plugins/docker-compose/_docker-compose create mode 100644 dot_oh-my-zsh/plugins/docker-compose/docker-compose.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/docker-machine/README.md create mode 100644 dot_oh-my-zsh/plugins/docker-machine/_docker-machine create mode 100644 dot_oh-my-zsh/plugins/docker-machine/docker-machine.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/docker/README.md create mode 100644 dot_oh-my-zsh/plugins/docker/_docker create mode 100644 dot_oh-my-zsh/plugins/docker/docker.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/doctl/README.md create mode 100644 dot_oh-my-zsh/plugins/doctl/doctl.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/dotenv/README.md create mode 100644 dot_oh-my-zsh/plugins/dotenv/dotenv.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/dotnet/README.md create mode 100644 dot_oh-my-zsh/plugins/dotnet/dotnet.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/droplr/README.md create mode 100644 dot_oh-my-zsh/plugins/droplr/droplr.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/drush/README.md create mode 100644 dot_oh-my-zsh/plugins/drush/drush.complete.sh create mode 100644 dot_oh-my-zsh/plugins/drush/drush.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/eecms/README.md create mode 100644 dot_oh-my-zsh/plugins/eecms/eecms.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/emacs/README.md create mode 100644 dot_oh-my-zsh/plugins/emacs/emacs.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/emacs/executable_emacsclient.sh create mode 100644 dot_oh-my-zsh/plugins/ember-cli/README.md create mode 100644 dot_oh-my-zsh/plugins/ember-cli/_ember-cli create mode 100644 dot_oh-my-zsh/plugins/ember-cli/ember-cli.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/emoji-clock/README.md create mode 100644 dot_oh-my-zsh/plugins/emoji-clock/emoji-clock.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/emoji/README.md create mode 100644 dot_oh-my-zsh/plugins/emoji/emoji-char-definitions.zsh create mode 100644 dot_oh-my-zsh/plugins/emoji/emoji-data.txt create mode 100644 dot_oh-my-zsh/plugins/emoji/emoji.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/emoji/gemoji_db.json create mode 100644 dot_oh-my-zsh/plugins/emoji/update_emoji.py create mode 100644 dot_oh-my-zsh/plugins/emotty/README.md create mode 100644 dot_oh-my-zsh/plugins/emotty/emotty.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/emotty/emotty_emoji_set.zsh create mode 100644 dot_oh-my-zsh/plugins/emotty/emotty_floral_set.zsh create mode 100644 dot_oh-my-zsh/plugins/emotty/emotty_love_set.zsh create mode 100644 dot_oh-my-zsh/plugins/emotty/emotty_nature_set.zsh create mode 100644 dot_oh-my-zsh/plugins/emotty/emotty_stellar_set.zsh create mode 100644 dot_oh-my-zsh/plugins/emotty/emotty_zodiac_set.zsh create mode 100644 dot_oh-my-zsh/plugins/encode64/README.md create mode 100644 dot_oh-my-zsh/plugins/encode64/encode64.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/extract/README.md create mode 100644 dot_oh-my-zsh/plugins/extract/_extract create mode 100644 dot_oh-my-zsh/plugins/extract/extract.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/fabric/README.md create mode 100644 dot_oh-my-zsh/plugins/fabric/_fab create mode 100644 dot_oh-my-zsh/plugins/fabric/empty_fabric.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/fancy-ctrl-z/README.md create mode 100644 dot_oh-my-zsh/plugins/fancy-ctrl-z/fancy-ctrl-z.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/fasd/README.md create mode 100644 dot_oh-my-zsh/plugins/fasd/fasd.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/fastfile/README.md create mode 100644 dot_oh-my-zsh/plugins/fastfile/fastfile.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/fbterm/README.md create mode 100644 dot_oh-my-zsh/plugins/fbterm/fbterm.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/fd/README.md create mode 100644 dot_oh-my-zsh/plugins/fd/_fd create mode 100644 dot_oh-my-zsh/plugins/fig/README.md create mode 100644 dot_oh-my-zsh/plugins/fig/fig.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/firewalld/README.md create mode 100644 dot_oh-my-zsh/plugins/firewalld/firewalld.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/flutter/README.md create mode 100644 dot_oh-my-zsh/plugins/flutter/flutter.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/fluxcd/README.md create mode 100644 dot_oh-my-zsh/plugins/fluxcd/fluxcd.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/fnm/README.md create mode 100644 dot_oh-my-zsh/plugins/fnm/fnm.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/forklift/README.md create mode 100644 dot_oh-my-zsh/plugins/forklift/forklift.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/fossil/README.md create mode 100644 dot_oh-my-zsh/plugins/fossil/_fossil create mode 100644 dot_oh-my-zsh/plugins/fossil/fossil.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/frontend-search/README.md create mode 100644 dot_oh-my-zsh/plugins/frontend-search/_frontend create mode 100644 dot_oh-my-zsh/plugins/frontend-search/frontend-search.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/fzf/README.md create mode 100644 dot_oh-my-zsh/plugins/fzf/fzf.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/gas/README.md create mode 100644 dot_oh-my-zsh/plugins/gas/_gas create mode 100644 dot_oh-my-zsh/plugins/gatsby/README.md create mode 100644 dot_oh-my-zsh/plugins/gatsby/_gatsby create mode 100644 dot_oh-my-zsh/plugins/gcloud/README.md create mode 100644 dot_oh-my-zsh/plugins/gcloud/gcloud.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/geeknote/README.md create mode 100644 dot_oh-my-zsh/plugins/geeknote/_geeknote create mode 100644 dot_oh-my-zsh/plugins/geeknote/geeknote.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/gem/README.md create mode 100644 dot_oh-my-zsh/plugins/gem/_gem create mode 100644 dot_oh-my-zsh/plugins/gem/gem.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/genpass/README.md create mode 100644 dot_oh-my-zsh/plugins/genpass/executable_genpass-apple create mode 100644 dot_oh-my-zsh/plugins/genpass/executable_genpass-monkey create mode 100644 dot_oh-my-zsh/plugins/genpass/executable_genpass-xkcd create mode 100644 dot_oh-my-zsh/plugins/genpass/genpass.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/gh/README.md create mode 100644 dot_oh-my-zsh/plugins/gh/gh.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/git-auto-fetch/README.md create mode 100644 dot_oh-my-zsh/plugins/git-auto-fetch/git-auto-fetch.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/git-escape-magic/README.md create mode 100644 dot_oh-my-zsh/plugins/git-escape-magic/git-escape-magic create mode 100644 dot_oh-my-zsh/plugins/git-escape-magic/git-escape-magic.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/git-extras/README.md create mode 100644 dot_oh-my-zsh/plugins/git-extras/git-extras.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/git-flow-avh/README.md create mode 100644 dot_oh-my-zsh/plugins/git-flow-avh/git-flow-avh.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/git-flow/README.md create mode 100644 dot_oh-my-zsh/plugins/git-flow/_git-flow create mode 100644 dot_oh-my-zsh/plugins/git-flow/git-flow.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/git-hubflow/README.md create mode 100644 dot_oh-my-zsh/plugins/git-hubflow/git-hubflow.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/git-lfs/README.md create mode 100644 dot_oh-my-zsh/plugins/git-lfs/git-lfs.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/git-prompt/README.md create mode 100644 dot_oh-my-zsh/plugins/git-prompt/git-prompt.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/git-prompt/gitstatus.py create mode 100644 dot_oh-my-zsh/plugins/git/README.md create mode 100644 dot_oh-my-zsh/plugins/git/git.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/gitfast/README.md create mode 100644 dot_oh-my-zsh/plugins/gitfast/_git create mode 100644 dot_oh-my-zsh/plugins/gitfast/executable_update create mode 100644 dot_oh-my-zsh/plugins/gitfast/git-completion.bash create mode 100644 dot_oh-my-zsh/plugins/gitfast/git-prompt.sh create mode 100644 dot_oh-my-zsh/plugins/gitfast/gitfast.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/github/README.md create mode 100644 dot_oh-my-zsh/plugins/github/_hub create mode 100644 dot_oh-my-zsh/plugins/github/github.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/gitignore/README.md create mode 100644 dot_oh-my-zsh/plugins/gitignore/gitignore.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/glassfish/README.md create mode 100644 dot_oh-my-zsh/plugins/glassfish/_asadmin create mode 100644 dot_oh-my-zsh/plugins/glassfish/empty_glassfish.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/globalias/README.md create mode 100644 dot_oh-my-zsh/plugins/globalias/globalias.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/gnu-utils/README.md create mode 100644 dot_oh-my-zsh/plugins/gnu-utils/gnu-utils.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/golang/README.md create mode 100644 dot_oh-my-zsh/plugins/golang/_golang create mode 100644 dot_oh-my-zsh/plugins/golang/golang.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/golang/templates/empty_search.txt create mode 100644 dot_oh-my-zsh/plugins/golang/templates/package.txt create mode 100644 dot_oh-my-zsh/plugins/gpg-agent/README.md create mode 100644 dot_oh-my-zsh/plugins/gpg-agent/gpg-agent.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/gradle/README.md create mode 100644 dot_oh-my-zsh/plugins/gradle/_gradle create mode 100644 dot_oh-my-zsh/plugins/gradle/gradle.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/grails/README.md create mode 100644 dot_oh-my-zsh/plugins/grails/grails.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/grc/README.md create mode 100644 dot_oh-my-zsh/plugins/grc/grc.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/grunt/README.md create mode 100644 dot_oh-my-zsh/plugins/grunt/grunt.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/gulp/README.md create mode 100644 dot_oh-my-zsh/plugins/gulp/gulp.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/hanami/README.md create mode 100644 dot_oh-my-zsh/plugins/hanami/hanami.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/hasura/README.md create mode 100644 dot_oh-my-zsh/plugins/hasura/hasura.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/helm/README.md create mode 100644 dot_oh-my-zsh/plugins/helm/helm.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/heroku-alias/README.md create mode 100644 dot_oh-my-zsh/plugins/heroku-alias/heroku.alias.sh create mode 100644 dot_oh-my-zsh/plugins/heroku/README.md create mode 100644 dot_oh-my-zsh/plugins/heroku/heroku.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/history-substring-search/README.md create mode 100644 dot_oh-my-zsh/plugins/history-substring-search/executable_update-from-upstream.zsh create mode 100644 dot_oh-my-zsh/plugins/history-substring-search/history-substring-search.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/history-substring-search/history-substring-search.zsh create mode 100644 dot_oh-my-zsh/plugins/history/README.md create mode 100644 dot_oh-my-zsh/plugins/history/history.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/hitchhiker/README.md create mode 100644 dot_oh-my-zsh/plugins/hitchhiker/dot_gitignore create mode 100644 dot_oh-my-zsh/plugins/hitchhiker/fortunes/hitchhiker create mode 100644 dot_oh-my-zsh/plugins/hitchhiker/hitchhiker.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/hitokoto/README.md create mode 100644 dot_oh-my-zsh/plugins/hitokoto/hitokoto.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/homestead/README.md create mode 100644 dot_oh-my-zsh/plugins/homestead/homestead.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/httpie/README.md create mode 100644 dot_oh-my-zsh/plugins/httpie/_httpie create mode 100644 dot_oh-my-zsh/plugins/invoke/README.md create mode 100644 dot_oh-my-zsh/plugins/invoke/invoke.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/ionic/README.md create mode 100644 dot_oh-my-zsh/plugins/ionic/ionic.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/ipfs/LICENSE create mode 100644 dot_oh-my-zsh/plugins/ipfs/README.md create mode 100644 dot_oh-my-zsh/plugins/ipfs/_ipfs create mode 100644 dot_oh-my-zsh/plugins/isodate/README.md create mode 100644 dot_oh-my-zsh/plugins/isodate/isodate.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/istioctl/README.md create mode 100644 dot_oh-my-zsh/plugins/istioctl/istioctl.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/iterm2/README.md create mode 100644 dot_oh-my-zsh/plugins/iterm2/iterm2.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/jake-node/README.md create mode 100644 dot_oh-my-zsh/plugins/jake-node/jake-node.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/jenv/README.md create mode 100644 dot_oh-my-zsh/plugins/jenv/jenv.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/jfrog/README.md create mode 100644 dot_oh-my-zsh/plugins/jfrog/jfrog.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/jhbuild/README.md create mode 100644 dot_oh-my-zsh/plugins/jhbuild/jhbuild.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/jira/README.md create mode 100644 dot_oh-my-zsh/plugins/jira/_jira create mode 100644 dot_oh-my-zsh/plugins/jira/jira.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/jruby/README.md create mode 100644 dot_oh-my-zsh/plugins/jruby/jruby.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/jsontools/README.md create mode 100644 dot_oh-my-zsh/plugins/jsontools/jsontools.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/juju/README.md create mode 100644 dot_oh-my-zsh/plugins/juju/juju.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/jump/README.md create mode 100644 dot_oh-my-zsh/plugins/jump/jump.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/kate/README.md create mode 100644 dot_oh-my-zsh/plugins/kate/kate.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/keychain/README.md create mode 100644 dot_oh-my-zsh/plugins/keychain/keychain.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/kitchen/README.md create mode 100644 dot_oh-my-zsh/plugins/kitchen/_kitchen create mode 100644 dot_oh-my-zsh/plugins/kn/README.md create mode 100644 dot_oh-my-zsh/plugins/kn/kn.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/knife/README.md create mode 100644 dot_oh-my-zsh/plugins/knife/_knife create mode 100644 dot_oh-my-zsh/plugins/knife_ssh/README.md create mode 100644 dot_oh-my-zsh/plugins/knife_ssh/knife_ssh.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/kops/README.md create mode 100644 dot_oh-my-zsh/plugins/kops/kops.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/kube-ps1/README.md create mode 100644 dot_oh-my-zsh/plugins/kube-ps1/kube-ps1.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/kubectl/README.md create mode 100644 dot_oh-my-zsh/plugins/kubectl/kubectl.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/kubectx/README.md create mode 100644 dot_oh-my-zsh/plugins/kubectx/kubectx.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/kubectx/prod.png create mode 100644 dot_oh-my-zsh/plugins/kubectx/stage.png create mode 100644 dot_oh-my-zsh/plugins/lando/LICENSE create mode 100644 dot_oh-my-zsh/plugins/lando/README.md create mode 100644 dot_oh-my-zsh/plugins/lando/lando.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/laravel/README.md create mode 100644 dot_oh-my-zsh/plugins/laravel/_artisan create mode 100644 dot_oh-my-zsh/plugins/laravel/laravel.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/laravel4/README.md create mode 100644 dot_oh-my-zsh/plugins/laravel4/laravel4.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/laravel5/README.md create mode 100644 dot_oh-my-zsh/plugins/laravel5/laravel5.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/last-working-dir/README.md create mode 100644 dot_oh-my-zsh/plugins/last-working-dir/last-working-dir.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/lein/README.md create mode 100644 dot_oh-my-zsh/plugins/lein/_lein create mode 100644 dot_oh-my-zsh/plugins/lighthouse/README.md create mode 100644 dot_oh-my-zsh/plugins/lighthouse/lighthouse.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/lol/README.md create mode 100644 dot_oh-my-zsh/plugins/lol/lol.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/lpass/README.md create mode 100644 dot_oh-my-zsh/plugins/lpass/_lpass create mode 100644 dot_oh-my-zsh/plugins/lxd/README.md create mode 100644 dot_oh-my-zsh/plugins/lxd/lxd.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/macos/README.md create mode 100644 dot_oh-my-zsh/plugins/macos/_security create mode 100644 dot_oh-my-zsh/plugins/macos/macos.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/macos/music create mode 100644 dot_oh-my-zsh/plugins/macos/spotify create mode 100644 dot_oh-my-zsh/plugins/macports/README.md create mode 100644 dot_oh-my-zsh/plugins/macports/_port create mode 100644 dot_oh-my-zsh/plugins/macports/macports.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/magic-enter/README.md create mode 100644 dot_oh-my-zsh/plugins/magic-enter/magic-enter.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/man/README.md create mode 100644 dot_oh-my-zsh/plugins/man/man.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/marked2/README.md create mode 100644 dot_oh-my-zsh/plugins/marked2/marked2.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/mercurial/README.md create mode 100644 dot_oh-my-zsh/plugins/mercurial/mercurial.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/meteor/README.md create mode 100644 dot_oh-my-zsh/plugins/meteor/_meteor create mode 100644 dot_oh-my-zsh/plugins/meteor/meteor.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/microk8s/README.md create mode 100644 dot_oh-my-zsh/plugins/microk8s/microk8s.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/minikube/README.md create mode 100644 dot_oh-my-zsh/plugins/minikube/minikube.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/mix-fast/README.md create mode 100644 dot_oh-my-zsh/plugins/mix-fast/mix-fast.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/mix/README.md create mode 100644 dot_oh-my-zsh/plugins/mix/_mix create mode 100644 dot_oh-my-zsh/plugins/mongo-atlas/README.md create mode 100644 dot_oh-my-zsh/plugins/mongo-atlas/mongo-atlas.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/mongocli/README.md create mode 100644 dot_oh-my-zsh/plugins/mongocli/mongocli.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/mosh/README.md create mode 100644 dot_oh-my-zsh/plugins/mosh/mosh.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/multipass/README.md create mode 100644 dot_oh-my-zsh/plugins/multipass/_multipass create mode 100644 dot_oh-my-zsh/plugins/multipass/multipass.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/mvn/README.md create mode 100644 dot_oh-my-zsh/plugins/mvn/mvn.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/mysql-macports/README.md create mode 100644 dot_oh-my-zsh/plugins/mysql-macports/mysql-macports.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/n98-magerun/README.md create mode 100644 dot_oh-my-zsh/plugins/n98-magerun/n98-magerun.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/nanoc/README.md create mode 100644 dot_oh-my-zsh/plugins/nanoc/_nanoc create mode 100644 dot_oh-my-zsh/plugins/nanoc/nanoc.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/nats/README.md create mode 100644 dot_oh-my-zsh/plugins/nats/nats.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/ng/README.md create mode 100644 dot_oh-my-zsh/plugins/ng/_ng create mode 100644 dot_oh-my-zsh/plugins/nmap/README.md create mode 100644 dot_oh-my-zsh/plugins/nmap/nmap.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/node/README.md create mode 100644 dot_oh-my-zsh/plugins/node/node.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/nomad/README.md create mode 100644 dot_oh-my-zsh/plugins/nomad/_nomad create mode 100644 dot_oh-my-zsh/plugins/npm/README.md create mode 100644 dot_oh-my-zsh/plugins/npm/npm.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/nvm/README.md create mode 100644 dot_oh-my-zsh/plugins/nvm/_nvm create mode 100644 dot_oh-my-zsh/plugins/nvm/nvm.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/oc/README.md create mode 100644 dot_oh-my-zsh/plugins/oc/oc.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/octozen/README.md create mode 100644 dot_oh-my-zsh/plugins/octozen/octozen.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/operator-sdk/README.md create mode 100644 dot_oh-my-zsh/plugins/operator-sdk/operator-sdk.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/otp/README.md create mode 100644 dot_oh-my-zsh/plugins/otp/otp.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/pass/README.md create mode 100644 dot_oh-my-zsh/plugins/pass/_pass create mode 100644 dot_oh-my-zsh/plugins/paver/README.md create mode 100644 dot_oh-my-zsh/plugins/paver/paver.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/pep8/README.md create mode 100644 dot_oh-my-zsh/plugins/pep8/_pep8 create mode 100644 dot_oh-my-zsh/plugins/per-directory-history/README.md create mode 100644 dot_oh-my-zsh/plugins/per-directory-history/per-directory-history.zsh create mode 100644 dot_oh-my-zsh/plugins/per-directory-history/symlink_per-directory-history.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/percol/README.md create mode 100644 dot_oh-my-zsh/plugins/percol/percol.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/perl/README.md create mode 100644 dot_oh-my-zsh/plugins/perl/perl.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/perms/README.md create mode 100644 dot_oh-my-zsh/plugins/perms/perms.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/phing/README.md create mode 100644 dot_oh-my-zsh/plugins/phing/phing.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/pip/README.md create mode 100644 dot_oh-my-zsh/plugins/pip/_pip create mode 100644 dot_oh-my-zsh/plugins/pip/pip.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/pipenv/README.md create mode 100644 dot_oh-my-zsh/plugins/pipenv/pipenv.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/pj/README.md create mode 100644 dot_oh-my-zsh/plugins/pj/pj.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/please/README.md create mode 100644 dot_oh-my-zsh/plugins/please/please.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/pm2/README.md create mode 100644 dot_oh-my-zsh/plugins/pm2/_pm2 create mode 100644 dot_oh-my-zsh/plugins/pm2/pm2.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/pod/README.md create mode 100644 dot_oh-my-zsh/plugins/pod/_pod create mode 100644 dot_oh-my-zsh/plugins/poetry/README.md create mode 100644 dot_oh-my-zsh/plugins/poetry/poetry.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/postgres/README.md create mode 100644 dot_oh-my-zsh/plugins/postgres/postgres.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/pow/README.md create mode 100644 dot_oh-my-zsh/plugins/pow/pow.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/powder/README.md create mode 100644 dot_oh-my-zsh/plugins/powder/_powder create mode 100644 dot_oh-my-zsh/plugins/powify/README.md create mode 100644 dot_oh-my-zsh/plugins/powify/_powify create mode 100644 dot_oh-my-zsh/plugins/pre-commit/README.md create mode 100644 dot_oh-my-zsh/plugins/pre-commit/pre-commit.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/profiles/README.md create mode 100644 dot_oh-my-zsh/plugins/profiles/profiles.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/pyenv/README.md create mode 100644 dot_oh-my-zsh/plugins/pyenv/pyenv.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/pylint/README.md create mode 100644 dot_oh-my-zsh/plugins/pylint/_pylint create mode 100644 dot_oh-my-zsh/plugins/pylint/pylint.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/python/README.md create mode 100644 dot_oh-my-zsh/plugins/python/python.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/qrcode/README.md create mode 100644 dot_oh-my-zsh/plugins/qrcode/qrcode.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/rails/README.md create mode 100644 dot_oh-my-zsh/plugins/rails/_rails create mode 100644 dot_oh-my-zsh/plugins/rails/rails.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/rake-fast/README.md create mode 100644 dot_oh-my-zsh/plugins/rake-fast/rake-fast.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/rake/README.md create mode 100644 dot_oh-my-zsh/plugins/rake/rake.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/rand-quote/README.md create mode 100644 dot_oh-my-zsh/plugins/rand-quote/rand-quote.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/rbenv/README.md create mode 100644 dot_oh-my-zsh/plugins/rbenv/rbenv.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/rbfu/README.md create mode 100644 dot_oh-my-zsh/plugins/rbfu/rbfu.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/rbw/README.md create mode 100644 dot_oh-my-zsh/plugins/rbw/rbw.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/react-native/README.md create mode 100644 dot_oh-my-zsh/plugins/react-native/_react-native create mode 100644 dot_oh-my-zsh/plugins/react-native/react-native.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/rebar/README.md create mode 100644 dot_oh-my-zsh/plugins/rebar/_rebar create mode 100644 dot_oh-my-zsh/plugins/redis-cli/README.md create mode 100644 dot_oh-my-zsh/plugins/redis-cli/_redis-cli create mode 100644 dot_oh-my-zsh/plugins/repo/README.md create mode 100644 dot_oh-my-zsh/plugins/repo/_repo create mode 100644 dot_oh-my-zsh/plugins/repo/repo.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/ripgrep/README.md create mode 100644 dot_oh-my-zsh/plugins/ripgrep/_ripgrep create mode 100644 dot_oh-my-zsh/plugins/ros/README.md create mode 100644 dot_oh-my-zsh/plugins/ros/_ros create mode 100644 dot_oh-my-zsh/plugins/rsync/README.md create mode 100644 dot_oh-my-zsh/plugins/rsync/rsync.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/ruby/README.md create mode 100644 dot_oh-my-zsh/plugins/ruby/ruby.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/rust/README.md create mode 100644 dot_oh-my-zsh/plugins/rust/_rustc create mode 100644 dot_oh-my-zsh/plugins/rust/rust.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/rvm/README.md create mode 100644 dot_oh-my-zsh/plugins/rvm/rvm.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/safe-paste/README.md create mode 100644 dot_oh-my-zsh/plugins/safe-paste/safe-paste.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/salt/README.md create mode 100644 dot_oh-my-zsh/plugins/salt/_salt create mode 100644 dot_oh-my-zsh/plugins/samtools/README.md create mode 100644 dot_oh-my-zsh/plugins/samtools/_samtools create mode 100644 dot_oh-my-zsh/plugins/sbt/README.md create mode 100644 dot_oh-my-zsh/plugins/sbt/_sbt create mode 100644 dot_oh-my-zsh/plugins/sbt/sbt.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/scala/README.md create mode 100644 dot_oh-my-zsh/plugins/scala/_scala create mode 100644 dot_oh-my-zsh/plugins/scd/README.md create mode 100644 dot_oh-my-zsh/plugins/scd/_scd create mode 100644 dot_oh-my-zsh/plugins/scd/executable_scd create mode 100644 dot_oh-my-zsh/plugins/scd/scd.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/screen/README.md create mode 100644 dot_oh-my-zsh/plugins/screen/screen.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/scw/README.md create mode 100644 dot_oh-my-zsh/plugins/scw/_scw create mode 100644 dot_oh-my-zsh/plugins/sdk/README.md create mode 100644 dot_oh-my-zsh/plugins/sdk/sdk.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/sfdx/README.md create mode 100644 dot_oh-my-zsh/plugins/sfdx/_sfdx create mode 100644 dot_oh-my-zsh/plugins/sfffe/README.md create mode 100644 dot_oh-my-zsh/plugins/sfffe/sfffe.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/shell-proxy/README.md create mode 100644 dot_oh-my-zsh/plugins/shell-proxy/dot_editorconfig create mode 100644 dot_oh-my-zsh/plugins/shell-proxy/executable_proxy.py create mode 100644 dot_oh-my-zsh/plugins/shell-proxy/executable_ssh-agent.py create mode 100644 dot_oh-my-zsh/plugins/shell-proxy/executable_ssh-proxy.py create mode 100644 dot_oh-my-zsh/plugins/shell-proxy/shell-proxy.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/shrink-path/README.md create mode 100644 dot_oh-my-zsh/plugins/shrink-path/shrink-path.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/sigstore/README.md create mode 100644 dot_oh-my-zsh/plugins/sigstore/sigstore.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/singlechar/README.md create mode 100644 dot_oh-my-zsh/plugins/singlechar/singlechar.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/skaffold/README.md create mode 100644 dot_oh-my-zsh/plugins/skaffold/skaffold.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/spring/README.md create mode 100644 dot_oh-my-zsh/plugins/spring/_spring create mode 100644 dot_oh-my-zsh/plugins/sprunge/README.md create mode 100644 dot_oh-my-zsh/plugins/sprunge/sprunge.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/ssh-agent/README.md create mode 100644 dot_oh-my-zsh/plugins/ssh-agent/ssh-agent.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/stack/README.md create mode 100644 dot_oh-my-zsh/plugins/stack/stack.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/sublime-merge/README.md create mode 100644 dot_oh-my-zsh/plugins/sublime-merge/sublime-merge.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/sublime/README.md create mode 100644 dot_oh-my-zsh/plugins/sublime/sublime.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/sudo/README.md create mode 100644 dot_oh-my-zsh/plugins/sudo/sudo.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/supervisor/README.md create mode 100644 dot_oh-my-zsh/plugins/supervisor/_supervisorctl create mode 100644 dot_oh-my-zsh/plugins/supervisor/_supervisord create mode 100644 dot_oh-my-zsh/plugins/supervisor/supervisor.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/suse/README.md create mode 100644 dot_oh-my-zsh/plugins/suse/suse.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/svcat/README.md create mode 100644 dot_oh-my-zsh/plugins/svcat/svcat.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/svn-fast-info/README.md create mode 100644 dot_oh-my-zsh/plugins/svn-fast-info/svn-fast-info.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/svn/README.md create mode 100644 dot_oh-my-zsh/plugins/svn/svn.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/swiftpm/README.md create mode 100644 dot_oh-my-zsh/plugins/swiftpm/_swift create mode 100644 dot_oh-my-zsh/plugins/swiftpm/swiftpm.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/symfony/README.md create mode 100644 dot_oh-my-zsh/plugins/symfony/symfony.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/symfony2/README.md create mode 100644 dot_oh-my-zsh/plugins/symfony2/symfony2.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/systemadmin/README.md create mode 100644 dot_oh-my-zsh/plugins/systemadmin/systemadmin.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/systemd/README.md create mode 100644 dot_oh-my-zsh/plugins/systemd/systemd.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/taskwarrior/README.md create mode 100644 dot_oh-my-zsh/plugins/taskwarrior/_task create mode 100644 dot_oh-my-zsh/plugins/taskwarrior/taskwarrior.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/term_tab/README.md create mode 100644 dot_oh-my-zsh/plugins/term_tab/term_tab.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/terminitor/README.md create mode 100644 dot_oh-my-zsh/plugins/terminitor/_terminitor create mode 100644 dot_oh-my-zsh/plugins/terraform/README.md create mode 100644 dot_oh-my-zsh/plugins/terraform/terraform.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/textastic/README.md create mode 100644 dot_oh-my-zsh/plugins/textastic/textastic.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/textmate/README.md create mode 100644 dot_oh-my-zsh/plugins/textmate/textmate.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/thefuck/README.md create mode 100644 dot_oh-my-zsh/plugins/thefuck/thefuck.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/themes/README.md create mode 100644 dot_oh-my-zsh/plugins/themes/themes.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/thor/README.md create mode 100644 dot_oh-my-zsh/plugins/thor/_thor create mode 100644 dot_oh-my-zsh/plugins/tig/README.md create mode 100644 dot_oh-my-zsh/plugins/tig/tig.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/timer/README.md create mode 100644 dot_oh-my-zsh/plugins/timer/timer.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/tmux-cssh/README.md create mode 100644 dot_oh-my-zsh/plugins/tmux-cssh/_tmux-cssh create mode 100644 dot_oh-my-zsh/plugins/tmux/README.md create mode 100644 dot_oh-my-zsh/plugins/tmux/tmux.extra.conf create mode 100644 dot_oh-my-zsh/plugins/tmux/tmux.only.conf create mode 100644 dot_oh-my-zsh/plugins/tmux/tmux.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/tmuxinator/README.md create mode 100644 dot_oh-my-zsh/plugins/tmuxinator/_tmuxinator create mode 100644 dot_oh-my-zsh/plugins/tmuxinator/tmuxinator.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/toolbox/README.md create mode 100644 dot_oh-my-zsh/plugins/toolbox/toolbox.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/torrent/README.md create mode 100644 dot_oh-my-zsh/plugins/torrent/torrent.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/transfer/README.md create mode 100644 dot_oh-my-zsh/plugins/transfer/transfer.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/tugboat/README.md create mode 100644 dot_oh-my-zsh/plugins/tugboat/_tugboat create mode 100644 dot_oh-my-zsh/plugins/ubuntu/README.md create mode 100644 dot_oh-my-zsh/plugins/ubuntu/ubuntu.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/ufw/README.md create mode 100644 dot_oh-my-zsh/plugins/ufw/_ufw create mode 100644 dot_oh-my-zsh/plugins/universalarchive/README.md create mode 100644 dot_oh-my-zsh/plugins/universalarchive/_universalarchive create mode 100644 dot_oh-my-zsh/plugins/universalarchive/universalarchive.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/urltools/README.md create mode 100644 dot_oh-my-zsh/plugins/urltools/urltools.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/vagrant-prompt/README.md create mode 100644 dot_oh-my-zsh/plugins/vagrant-prompt/vagrant-prompt.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/vagrant/README.md create mode 100644 dot_oh-my-zsh/plugins/vagrant/_vagrant create mode 100644 dot_oh-my-zsh/plugins/vagrant/vagrant.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/vault/README.md create mode 100644 dot_oh-my-zsh/plugins/vault/_vault create mode 100644 dot_oh-my-zsh/plugins/vi-mode/README.md create mode 100644 dot_oh-my-zsh/plugins/vi-mode/vi-mode.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/vim-interaction/README.md create mode 100644 dot_oh-my-zsh/plugins/vim-interaction/vim-interaction.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/virtualenv/README.md create mode 100644 dot_oh-my-zsh/plugins/virtualenv/virtualenv.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/virtualenvwrapper/README.md create mode 100644 dot_oh-my-zsh/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/volta/README.md create mode 100644 dot_oh-my-zsh/plugins/volta/volta.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/vscode/README.md create mode 100644 dot_oh-my-zsh/plugins/vscode/vscode.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/vundle/README.md create mode 100644 dot_oh-my-zsh/plugins/vundle/vundle.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/wakeonlan/README.md create mode 100644 dot_oh-my-zsh/plugins/wakeonlan/_wake create mode 100644 dot_oh-my-zsh/plugins/wakeonlan/wakeonlan.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/watson/README.md create mode 100644 dot_oh-my-zsh/plugins/watson/_watson create mode 100644 dot_oh-my-zsh/plugins/wd/LICENSE create mode 100644 dot_oh-my-zsh/plugins/wd/README.md create mode 100644 dot_oh-my-zsh/plugins/wd/_wd.sh create mode 100644 dot_oh-my-zsh/plugins/wd/wd.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/wd/wd.sh create mode 100644 dot_oh-my-zsh/plugins/web-search/README.md create mode 100644 dot_oh-my-zsh/plugins/web-search/web-search.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/wp-cli/README.md create mode 100644 dot_oh-my-zsh/plugins/wp-cli/wp-cli.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/xcode/README.md create mode 100644 dot_oh-my-zsh/plugins/xcode/_xcselv create mode 100644 dot_oh-my-zsh/plugins/xcode/xcode.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/yarn/README.md create mode 100644 dot_oh-my-zsh/plugins/yarn/_yarn create mode 100644 dot_oh-my-zsh/plugins/yarn/yarn.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/yii/README.md create mode 100644 dot_oh-my-zsh/plugins/yii/yii.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/yii2/README.md create mode 100644 dot_oh-my-zsh/plugins/yii2/yii2.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/yum/README.md create mode 100644 dot_oh-my-zsh/plugins/yum/yum.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/z/LICENSE create mode 100644 dot_oh-my-zsh/plugins/z/MANUAL.md create mode 100644 dot_oh-my-zsh/plugins/z/README.md create mode 100644 dot_oh-my-zsh/plugins/z/_z create mode 100644 dot_oh-my-zsh/plugins/z/z.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/zbell/README.md create mode 100644 dot_oh-my-zsh/plugins/zbell/zbell.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/zeus/README.md create mode 100644 dot_oh-my-zsh/plugins/zeus/_zeus create mode 100644 dot_oh-my-zsh/plugins/zeus/zeus.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/zoxide/README.md create mode 100644 dot_oh-my-zsh/plugins/zoxide/zoxide.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/zsh-interactive-cd/README.md create mode 100644 dot_oh-my-zsh/plugins/zsh-interactive-cd/zsh-interactive-cd.plugin.zsh create mode 100644 dot_oh-my-zsh/plugins/zsh-navigation-tools/LICENSE create mode 100644 dot_oh-my-zsh/plugins/zsh-navigation-tools/Makefile create mode 100644 dot_oh-my-zsh/plugins/zsh-navigation-tools/NEWS create mode 100644 dot_oh-my-zsh/plugins/zsh-navigation-tools/README.md create mode 100644 dot_oh-my-zsh/plugins/zsh-navigation-tools/_n-kill create mode 100644 dot_oh-my-zsh/plugins/zsh-navigation-tools/doc/executable_generate_single_file create mode 100644 dot_oh-my-zsh/plugins/zsh-navigation-tools/doc/executable_install.sh create mode 100644 dot_oh-my-zsh/plugins/zsh-navigation-tools/doc/executable_znt-tmux.zsh create mode 100644 dot_oh-my-zsh/plugins/zsh-navigation-tools/doc/img/n-history2.png create mode 100644 dot_oh-my-zsh/plugins/zsh-navigation-tools/doc/n-preview create mode 100644 dot_oh-my-zsh/plugins/zsh-navigation-tools/dot_config/znt/n-aliases.conf create mode 100644 dot_oh-my-zsh/plugins/zsh-navigation-tools/dot_config/znt/n-cd.conf create mode 100644 dot_oh-my-zsh/plugins/zsh-navigation-tools/dot_config/znt/n-env.conf create mode 100644 dot_oh-my-zsh/plugins/zsh-navigation-tools/dot_config/znt/n-functions.conf create mode 100644 dot_oh-my-zsh/plugins/zsh-navigation-tools/dot_config/znt/n-history.conf create mode 100644 dot_oh-my-zsh/plugins/zsh-navigation-tools/dot_config/znt/n-kill.conf create mode 100644 dot_oh-my-zsh/plugins/zsh-navigation-tools/dot_config/znt/n-list.conf create mode 100644 dot_oh-my-zsh/plugins/zsh-navigation-tools/dot_config/znt/n-options.conf create mode 100644 dot_oh-my-zsh/plugins/zsh-navigation-tools/dot_config/znt/n-panelize.conf create mode 100644 dot_oh-my-zsh/plugins/zsh-navigation-tools/n-aliases create mode 100644 dot_oh-my-zsh/plugins/zsh-navigation-tools/n-cd create mode 100644 dot_oh-my-zsh/plugins/zsh-navigation-tools/n-env create mode 100644 dot_oh-my-zsh/plugins/zsh-navigation-tools/n-functions create mode 100644 dot_oh-my-zsh/plugins/zsh-navigation-tools/n-help create mode 100644 dot_oh-my-zsh/plugins/zsh-navigation-tools/n-history create mode 100644 dot_oh-my-zsh/plugins/zsh-navigation-tools/n-kill create mode 100644 dot_oh-my-zsh/plugins/zsh-navigation-tools/n-list create mode 100644 dot_oh-my-zsh/plugins/zsh-navigation-tools/n-list-draw create mode 100644 dot_oh-my-zsh/plugins/zsh-navigation-tools/n-list-input create mode 100644 dot_oh-my-zsh/plugins/zsh-navigation-tools/n-options create mode 100644 dot_oh-my-zsh/plugins/zsh-navigation-tools/n-panelize create mode 100644 dot_oh-my-zsh/plugins/zsh-navigation-tools/znt-cd-widget create mode 100644 dot_oh-my-zsh/plugins/zsh-navigation-tools/znt-history-widget create mode 100644 dot_oh-my-zsh/plugins/zsh-navigation-tools/znt-kill-widget create mode 100644 dot_oh-my-zsh/plugins/zsh-navigation-tools/znt-usetty-wrapper create mode 100644 dot_oh-my-zsh/plugins/zsh-navigation-tools/zsh-navigation-tools.plugin.zsh create mode 100644 dot_oh-my-zsh/templates/zshrc.zsh-template create mode 100644 dot_oh-my-zsh/themes/3den.zsh-theme create mode 100644 dot_oh-my-zsh/themes/Soliah.zsh-theme create mode 100644 dot_oh-my-zsh/themes/adben.zsh-theme create mode 100644 dot_oh-my-zsh/themes/af-magic.zsh-theme create mode 100644 dot_oh-my-zsh/themes/afowler.zsh-theme create mode 100644 dot_oh-my-zsh/themes/agnoster.zsh-theme create mode 100644 dot_oh-my-zsh/themes/alanpeabody.zsh-theme create mode 100644 dot_oh-my-zsh/themes/amuse.zsh-theme create mode 100644 dot_oh-my-zsh/themes/apple.zsh-theme create mode 100644 dot_oh-my-zsh/themes/arrow.zsh-theme create mode 100644 dot_oh-my-zsh/themes/aussiegeek.zsh-theme create mode 100644 dot_oh-my-zsh/themes/avit.zsh-theme create mode 100644 dot_oh-my-zsh/themes/awesomepanda.zsh-theme create mode 100644 dot_oh-my-zsh/themes/bira.zsh-theme create mode 100644 dot_oh-my-zsh/themes/blinks.zsh-theme create mode 100644 dot_oh-my-zsh/themes/bureau.zsh-theme create mode 100644 dot_oh-my-zsh/themes/candy-kingdom.zsh-theme create mode 100644 dot_oh-my-zsh/themes/candy.zsh-theme create mode 100644 dot_oh-my-zsh/themes/clean.zsh-theme create mode 100644 dot_oh-my-zsh/themes/cloud.zsh-theme create mode 100644 dot_oh-my-zsh/themes/crcandy.zsh-theme create mode 100644 dot_oh-my-zsh/themes/crunch.zsh-theme create mode 100644 dot_oh-my-zsh/themes/cypher.zsh-theme create mode 100644 dot_oh-my-zsh/themes/dallas.zsh-theme create mode 100644 dot_oh-my-zsh/themes/darkblood.zsh-theme create mode 100644 dot_oh-my-zsh/themes/daveverwer.zsh-theme create mode 100644 dot_oh-my-zsh/themes/dieter.zsh-theme create mode 100644 dot_oh-my-zsh/themes/dogenpunk.zsh-theme create mode 100644 dot_oh-my-zsh/themes/dpoggi.zsh-theme create mode 100644 dot_oh-my-zsh/themes/dst.zsh-theme create mode 100644 dot_oh-my-zsh/themes/dstufft.zsh-theme create mode 100644 dot_oh-my-zsh/themes/duellj.zsh-theme create mode 100644 dot_oh-my-zsh/themes/eastwood.zsh-theme create mode 100644 dot_oh-my-zsh/themes/edvardm.zsh-theme create mode 100644 dot_oh-my-zsh/themes/emotty.zsh-theme create mode 100644 dot_oh-my-zsh/themes/essembeh.zsh-theme create mode 100644 dot_oh-my-zsh/themes/evan.zsh-theme create mode 100644 dot_oh-my-zsh/themes/fino-time.zsh-theme create mode 100644 dot_oh-my-zsh/themes/fino.zsh-theme create mode 100644 dot_oh-my-zsh/themes/fishy.zsh-theme create mode 100644 dot_oh-my-zsh/themes/flazz.zsh-theme create mode 100644 dot_oh-my-zsh/themes/fletcherm.zsh-theme create mode 100644 dot_oh-my-zsh/themes/fox.zsh-theme create mode 100644 dot_oh-my-zsh/themes/frisk.zsh-theme create mode 100644 dot_oh-my-zsh/themes/frontcube.zsh-theme create mode 100644 dot_oh-my-zsh/themes/funky.zsh-theme create mode 100644 dot_oh-my-zsh/themes/fwalch.zsh-theme create mode 100644 dot_oh-my-zsh/themes/gallifrey.zsh-theme create mode 100644 dot_oh-my-zsh/themes/gallois.zsh-theme create mode 100644 dot_oh-my-zsh/themes/garyblessington.zsh-theme create mode 100644 dot_oh-my-zsh/themes/gentoo.zsh-theme create mode 100644 dot_oh-my-zsh/themes/geoffgarside.zsh-theme create mode 100644 dot_oh-my-zsh/themes/gianu.zsh-theme create mode 100644 dot_oh-my-zsh/themes/gnzh.zsh-theme create mode 100644 dot_oh-my-zsh/themes/gozilla.zsh-theme create mode 100644 dot_oh-my-zsh/themes/half-life.zsh-theme create mode 100644 dot_oh-my-zsh/themes/humza.zsh-theme create mode 100644 dot_oh-my-zsh/themes/imajes.zsh-theme create mode 100644 dot_oh-my-zsh/themes/intheloop.zsh-theme create mode 100644 dot_oh-my-zsh/themes/itchy.zsh-theme create mode 100644 dot_oh-my-zsh/themes/jaischeema.zsh-theme create mode 100644 dot_oh-my-zsh/themes/jbergantine.zsh-theme create mode 100644 dot_oh-my-zsh/themes/jispwoso.zsh-theme create mode 100644 dot_oh-my-zsh/themes/jnrowe.zsh-theme create mode 100644 dot_oh-my-zsh/themes/jonathan.zsh-theme create mode 100644 dot_oh-my-zsh/themes/josh.zsh-theme create mode 100644 dot_oh-my-zsh/themes/jreese.zsh-theme create mode 100644 dot_oh-my-zsh/themes/jtriley.zsh-theme create mode 100644 dot_oh-my-zsh/themes/juanghurtado.zsh-theme create mode 100644 dot_oh-my-zsh/themes/junkfood.zsh-theme create mode 100644 dot_oh-my-zsh/themes/kafeitu.zsh-theme create mode 100644 dot_oh-my-zsh/themes/kardan.zsh-theme create mode 100644 dot_oh-my-zsh/themes/kennethreitz.zsh-theme create mode 100644 dot_oh-my-zsh/themes/kiwi.zsh-theme create mode 100644 dot_oh-my-zsh/themes/kolo.zsh-theme create mode 100644 dot_oh-my-zsh/themes/kphoen.zsh-theme create mode 100644 dot_oh-my-zsh/themes/lambda.zsh-theme create mode 100644 dot_oh-my-zsh/themes/linuxonly.zsh-theme create mode 100644 dot_oh-my-zsh/themes/lukerandall.zsh-theme create mode 100644 dot_oh-my-zsh/themes/macovsky.zsh-theme create mode 100644 dot_oh-my-zsh/themes/maran.zsh-theme create mode 100644 dot_oh-my-zsh/themes/mgutz.zsh-theme create mode 100644 dot_oh-my-zsh/themes/mh.zsh-theme create mode 100644 dot_oh-my-zsh/themes/michelebologna.zsh-theme create mode 100644 dot_oh-my-zsh/themes/mikeh.zsh-theme create mode 100644 dot_oh-my-zsh/themes/miloshadzic.zsh-theme create mode 100644 dot_oh-my-zsh/themes/minimal.zsh-theme create mode 100644 dot_oh-my-zsh/themes/mira.zsh-theme create mode 100644 dot_oh-my-zsh/themes/mlh.zsh-theme create mode 100644 dot_oh-my-zsh/themes/mortalscumbag.zsh-theme create mode 100644 dot_oh-my-zsh/themes/mrtazz.zsh-theme create mode 100644 dot_oh-my-zsh/themes/murilasso.zsh-theme create mode 100644 dot_oh-my-zsh/themes/muse.zsh-theme create mode 100644 dot_oh-my-zsh/themes/nanotech.zsh-theme create mode 100644 dot_oh-my-zsh/themes/nebirhos.zsh-theme create mode 100644 dot_oh-my-zsh/themes/nicoulaj.zsh-theme create mode 100644 dot_oh-my-zsh/themes/norm.zsh-theme create mode 100644 dot_oh-my-zsh/themes/obraun.zsh-theme create mode 100644 dot_oh-my-zsh/themes/peepcode.zsh-theme create mode 100644 dot_oh-my-zsh/themes/philips.zsh-theme create mode 100644 dot_oh-my-zsh/themes/pmcgee.zsh-theme create mode 100644 dot_oh-my-zsh/themes/pygmalion-virtualenv.zsh-theme create mode 100644 dot_oh-my-zsh/themes/pygmalion.zsh-theme create mode 100644 dot_oh-my-zsh/themes/random.zsh-theme create mode 100644 dot_oh-my-zsh/themes/re5et.zsh-theme create mode 100644 dot_oh-my-zsh/themes/refined.zsh-theme create mode 100644 dot_oh-my-zsh/themes/rgm.zsh-theme create mode 100644 dot_oh-my-zsh/themes/risto.zsh-theme create mode 100644 dot_oh-my-zsh/themes/rixius.zsh-theme create mode 100644 dot_oh-my-zsh/themes/rkj-repos.zsh-theme create mode 100644 dot_oh-my-zsh/themes/rkj.zsh-theme create mode 100644 dot_oh-my-zsh/themes/robbyrussell.zsh-theme create mode 100644 dot_oh-my-zsh/themes/sammy.zsh-theme create mode 100644 dot_oh-my-zsh/themes/simonoff.zsh-theme create mode 100644 dot_oh-my-zsh/themes/simple.zsh-theme create mode 100644 dot_oh-my-zsh/themes/skaro.zsh-theme create mode 100644 dot_oh-my-zsh/themes/smt.zsh-theme create mode 100644 dot_oh-my-zsh/themes/sonicradish.zsh-theme create mode 100644 dot_oh-my-zsh/themes/sorin.zsh-theme create mode 100644 dot_oh-my-zsh/themes/sporty_256.zsh-theme create mode 100644 dot_oh-my-zsh/themes/steeef.zsh-theme create mode 100644 dot_oh-my-zsh/themes/strug.zsh-theme create mode 100644 dot_oh-my-zsh/themes/sunaku.zsh-theme create mode 100644 dot_oh-my-zsh/themes/sunrise.zsh-theme create mode 100644 dot_oh-my-zsh/themes/superjarin.zsh-theme create mode 100644 dot_oh-my-zsh/themes/suvash.zsh-theme create mode 100644 dot_oh-my-zsh/themes/symlink_macovsky-ruby.zsh-theme create mode 100644 dot_oh-my-zsh/themes/takashiyoshida.zsh-theme create mode 100644 dot_oh-my-zsh/themes/terminalparty.zsh-theme create mode 100644 dot_oh-my-zsh/themes/theunraveler.zsh-theme create mode 100644 dot_oh-my-zsh/themes/tjkirch.zsh-theme create mode 100644 dot_oh-my-zsh/themes/tjkirch_mod.zsh-theme create mode 100644 dot_oh-my-zsh/themes/tonotdo.zsh-theme create mode 100644 dot_oh-my-zsh/themes/trapd00r.zsh-theme create mode 100644 dot_oh-my-zsh/themes/wedisagree.zsh-theme create mode 100644 dot_oh-my-zsh/themes/wezm+.zsh-theme create mode 100644 dot_oh-my-zsh/themes/wezm.zsh-theme create mode 100644 dot_oh-my-zsh/themes/wuffers.zsh-theme create mode 100644 dot_oh-my-zsh/themes/xiong-chiamiov-plus.zsh-theme create mode 100644 dot_oh-my-zsh/themes/xiong-chiamiov.zsh-theme create mode 100644 dot_oh-my-zsh/themes/ys.zsh-theme create mode 100644 dot_oh-my-zsh/themes/zhann.zsh-theme create mode 100644 dot_oh-my-zsh/tools/check_for_upgrade.sh create mode 100644 dot_oh-my-zsh/tools/executable_changelog.sh create mode 100644 dot_oh-my-zsh/tools/executable_install.sh create mode 100644 dot_oh-my-zsh/tools/executable_require_tool.sh create mode 100644 dot_oh-my-zsh/tools/executable_theme_chooser.sh create mode 100644 dot_oh-my-zsh/tools/executable_upgrade.sh create mode 100644 dot_oh-my-zsh/tools/uninstall.sh create mode 100644 dot_profile create mode 100644 dot_swaylock/executable_config create mode 100644 dot_zprofile create mode 100644 dot_zshrc create mode 100644 private_dot_gnupg/private_executable_gpg-agent.conf create mode 100644 scripte/executable_i3exit create mode 100644 scripte/executable_swayexit diff --git a/desktop-bilder/background.jpg b/desktop-bilder/background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..eb77e6d69485a9483f73d413670f4958b4a6ea80 GIT binary patch literal 1080430 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 qpfey71%9lwAUWiwzjcpcHJE>Uk9y? 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%0D$?yr=2dWX{I2$3&{OXWlif0b|m7GfS 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
    !79YGp&Td$9`pN}(LvP#( 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 Tn0nyQT1z}5Oisp#YpIbl_n(H1I8r0 zNFzH@hm}9b1Jn$@Z|@2#2`%&Po!`PE`8Q-%hl@LX-j{hOae?F_ogl9--RP|^T7OBehdxUnB($h>?Y;TWbbTl^%oO>Wkbl@Qf-l`dj zHxN;vZL|e!<)pl&DS|Vs4fCIqA&rK2N;|2m55&&6&7nFiR=-hi1!I0U?4gHAYD_wV zf4vL^epr33IM}K@^_J~jIi>-tL54k8{LQVe*}He9=g}NOf`}6>Qo1{;--#bw1WP<2 z@PS)_sH)L4E@T2xU*?d)4_x0gq5%sqU4A$5`u5$S=3;g60c6UOjIG$igxwa|mwg4@ zGC??My&pTzAhK1}>|=F|KMykzh1XTvXk8kLm70p$JG@y8iUcRFCh%bW1)C;IN`&Rw z77AUxncr>jY%NOM`m3&8iB3`-UDu2%II|OdUrd!Gxh#5@8)di?MOi6NX;U;-e%y7K zTeskdARUGMC%p49x}*45^Wr_pn!ljtMt{AaBqZ(maI50Pk|6vjs70S>0Z&VKWW^cM zu!P-qVn5Hr8@D)xo)o~TNo@>)=g-_MmuXVQ%sgy56@FYMJE)=TpDt=P!~II#Ycbf= zB?1#ne%AJ2uEOn+gVQCrsfRQ81JtxO&WXWu!N5+$B^Uy%DP9(mX!oi8ZBqJ6O1PUPsCX%(QM zr*q&5ZR_&%qitHn|5@4p74|)W!%{yRL1B;c9A zyrdK5<8=GKWS7HIJT3H0ds~1dBiB;D!8@H7gEi&p%X|?#m~vjFeur=b3V5g;yO13sqPO^K)vLA{9=PP6F|ST9mlRzxLROtBu!XQX@U;I& z&B~8=T541#y-xH+g~zQ&I~H`{VJ0XwW!z7-;2BTjMI~|?pd#}F`5{a)iG36lr-YdF zF1%y&NTmBRWS^5^iEnqU`QB1WouYT!ivJvc`xR8FB;+EH{kkQ*YmVWHA@&o*{q?MW zGzH8T=%FYTSW+XWjNHj_(+0NM;2r^0*ZxSG$Nr9r9y8}o{ib{y5fxP--P&P~K8ZqC z@8zel@6oi)h|mFJCPOdp(}k*#1kc~EXL%d@bevGx z_N3L3j@{hB{wdM*0-%DeAfV;#=~R#d5r9rEH&&}+3n3zpa_3_FJc9)RO@NdwLY|;C zpeDiUJ5eP2IwEZ6TGKW8(pxc-=wya@7F35v5cbS%DwTI}PQ-CKhgn}!*kaE2;)BMr zla*sVphC;ifPg=zfNAD-ei%N1iDAnbz}ev7&duwPqrXNsvQtlrl)2?F!XT3=#xcok zYa}Z>vk$~*^3jdGUcpgeVci1`bNoB!#JXEH`cFx*h}vME5oA6fMD*yo>4w1|KohPe zY?0F0!nnOUIl}P6f5G9}vAWmpReqoc@jjwTh^3xu zzFzBMMp@Xk9pjR`%6rUY_|FcY)n*1wVb!d-b3HzJd3v*YT$-W^Q9Eap?5|9mi=(A4 zRUjGY|vMQh|AM{0ZA1hy?U|vTlDQK|JzD>?c z0MK%)RB+;N;@AuyOI1s;0O6In+U9dh2UXnNcY__xNkyo-j9JSN7D6QyDWs^;7feBy zV7Eh$95LCA(k$Qpea-6s(e#yZQNG{POQ&>6cS(1{(#_JKlz^0UcT0B*0=uwu2$IqY zD`Vj_pysS6Y-7clBm zJEGZ;*=p+L_7)4omHJ|&{8KhsmP8|=H&(YjlZko6_`XRlDC_9a>jO?=NexX7z~((X zr@SYhdIoi$!sl&{P$Jz)f#dqSI? z-wIyflWr_sy^rUj{)H6Gb&m6!ASU{iu>6y_#*cmy&C>sg3SM%u-ADjBnQHes6L9R% zg7G^O5PwtM+9zDq0TSTOj3DpE>5!!EXyERmEjAf+H;^bra>DFM zoSfVQMI{gvP(XQ&{voXY3VEZpl!@kj?ulXKEZy#s&3#0ecftA`TBU zgDX$!#dnMz3G>lEK%ZouB~hEd?u#@@;Hm?R9~Sp6&x>asIpUL@LH}b0Gp!ciA~9%< zW0DBXs(1c(;{Qmymz$Ix7h~**d36no(0v_Rk@y!hin@>0pX}(Iwvcj>X&T1xcL?;1 z2nB?KhK7y?LPbLXK0qK8Vi1!c5m^7FS5zh=tXbfb!sN;NDa7XQA_yD!J&HUL1_Io2 zciz-v@Fy-)NFFU{le%b}YL3F}izq&+aIb5BSS@D`BKAW5C|2VsO=3J)f|>~PA~6%j zn!}jRm(fWPOT0BZZZ=qx7dS(t5g=q0$pgvxGsAADfD_FD2L5P>&%@gJBcr@ic1$`b z=ByE0x><3kal*h;4yo1UDBcEQcrWE47uoMknidseg! z^W^1ZJM)64`1UP=SvIPlMs-5oqQVgDUYZ2CE;aDc6468nOfZZj&ZLC}fPFyH@oekHhv9f=M!?dq=s|M3bEa~Ixz;jijU+_3iGCQ|c z#cz=K%0)zcA%;!k1=zEY$cj2@-X)G*JgrsaDA<`9Y2!chX|col`NlL_dlcB@*91lq z;@F(-l4b(h^{U>8B%a4KV6L-wf8K1s!t3YKCWsh+UHC$;1k2-HjAwq*z@fEQCBbdA z?ybX*p&3l<8GCw-*EEuSJp0@5^@UmY4qsBIRyz@=YDEt!UI_j|#YaAf*VHPy77QKLPA)1ROYSY4Mb zr#^B&)zmh3Y_o)8p+pLWsc4?!EEl|y+yANw-D>_rp1r#HAwwBVLfkoZ^sJ|l0xcEn z1zvd&37{1|-lR*r7+NUlEboD&;GQj34yWN7kB<;#`!;tg`FJd%#EwZ^Gre*p%ZPfc z(G4>hkBSYN7T8m0!4&;|c;X6QO7#p0Rm18N{i+r;%h>Sax066Rd7&A5J#P|;98%cj zr>^FgkHys*^KRP3@6Dl9xEjn^Joib?7-`7EW8+UA%XH2joF-N~aJpLV-pEyE*ObH$ zqJmF8V*^v^I{52zyqe>gc`=!b->~yvy}NRz@IY|ytik*<5$Vesz3+CO^v`nbdYzLX zR=*i{pB8S5qdlrHjyLRi=&q9C>$Y@%kP%sQm~?Ovo-Wi?4HDFUi!Sgx97sfjJ1dFu zCNo5gVY2QY8+bezNy<*ut&$PNrSv5nds(g}nAsKzx+)#bN zc2^1J!7;RtmQ^mOENVh zBUekx8fxQBn4~q`R&pV^hW>#kh$3lRf`=rAgeA|?@YmLd3Sow5$ zD*Ci%k8+Jr^2=%Uw*n6kE!v6f#+gh9SmF{nzV0+si*|-m@Z%|%v@n{5RRu)cvmHrX z5Ien~wXJ7Fy1`S7krZ`)n-b0fmc8X8N2`tS~OX9bf0YlodSZ95^2;06f)>N0ax z!Tq)#LU9klR60r+{US%zdr??C`U2?bPg38sBMm`;k}jTClFak z9{aQI{aE5JqW)=go&mFp0n=$q(r#uIoZ2cIW!3A?Dy}REyFg2SLAf9fF0s0_LIzbo z7FCYh$LcNoya%*wk+i<^q+r0o!7*D7@NUqoEUjh)XFzn z8+b|TwmHIvHq9FNp;^iWg`gMGyxdzM5SsEo1x0p^88!6IrhEzQHj8q2=-b(YO0U+^ z;~YJrb8V$w7p()I7K`1oTptO_$S%#>MozvTR=O$69ygx02j4e*FFRm(xSbC?ukm3a zH~ZamvgN`X#Ux~$Z)K6sB@;@t-(t?rev2}DUtwbXra9NskIyBW^1fljiMMGg&e_83 z?gp9=&C23cqpJDgXdRX=>Jr{jGp@@m1JsG%s9vsL5Fx%l9EvwC5e zZ*#$5;o@*3Y$g@i(&#+BWcL>XReZ;Ln8j{1sDBQc} zw%NwLWpx|&yo0pZftgC*VwE8kO#%?mV(zA-8J`9Y?Rjca+S6aLqdy9~1nj^x94HW2oCnZd$=jwL>l< zy$ckXh<&V&c`$MwMJ)bq-f`LD8O}iiGf#>XBbjRk7IM#1W~;&M!| z|Bu(=UZ$Tg!#p%YTthLQBz`g>DJE>L6C_Z&c;6=|>%`F^g4TCD2-|FY)*9gQqUtap z3__NhcqE_jgFh~HlyAD@S{GM2Z6;nY-hO8tEz5;~(0HOTe_1UL*77hPFsqlep0 z$_jagp_i5MYKhu6j9Vk~++{CpLe;~ivnR0exRyC3Ap|B&W2$u&OF0TTnT{({h6X;sx72)Kq%dKk<4#2s^ zN@eOU?s9Iw9z*NrKs}~#274szV;MT4kA<7V2zA=r+9SdlPA{DzwZo0@e?J(-T$JP`>Z&Vm+dv>5h>7(EwDm{h{Nu5R^B0*c2;M-g+ye|g>BvsOpN+>qOc zm&78q27BLtK(k3&-k6k~p_Y_G%Rr?t^%^)kD^GX8oYGTD3;o zk0udaEH;Nsi)6CTP+FI7u<;70ZW(@&SU04Qna+nkjG15sVTuK2AOZ-Me&7ayq6hT!Y01I&`Fqz=LPM z?zsf$W|v>sS%gU8vkb};G12QK9-GE z^|wAA&QT8G^R;VfsTXEgMGwH;t_$W>npA2H%!yZqzhKbC+n$neOv)F#uX^HdANRS5 zM#4FO&4$b$*7-5gm&t^3D)u@Mn9oTz9CXS|u98$36Hyh}7kNk(+hZE$jUeAKXM}J* zipU;L2SX4Uza6rKOcQ~{w6yZeW~)mOS8FK5`*x#6Iy7fRW_svss?pNtbbM`*A(2knV?^no=N2;$gBxIdN)15@Ab&jo?hAx+N9*0;dL;5V{d zi)O$@#>L-(8BzxAWLd2UwGk!JJl-oMaZ$87fG`?Kypv8BNf-25kbI;?>$vcXNmlK3 zz1Oq;0`t#pw)>N%hH`bk#CChy7${?LTW=rSDN8_;gCr2i9XI$7=p{2#M`$#e|UiT7t*(H7mW=k*u!$wh=f_WCr5~| z7ZtJ%`w?a&Of$pGcuZ`$4`Q5f7V8)B34?$!XV_$0V?R-X*sesd!hQRKzb5Qrxz~A# zM;@C51(+BwyYGH%XQ&-UuqLS+rb6nF%mP#FuK|{qDCWdS!2SB|19afyO029{wFQmd zb%6_}nC@`5-17)u;5-EN69X!nhM1G$2Csp|_)$iD<&1ie+#`0fJ%TmmIn+2wC?n=rz@RhXSTWuKQI*hg-@= zc7Aas<@0x$v$YXy{;D}K0+w8xIxds3if)`Lm@(A8q1E&M3)(Nw<#@d(R+8fvh$_`Jw#Rr-XBnic%v!K^7VH-sh8LRQR{n zo%gq3hxxytX2UMpY8Vf3EGX9sI9%R7|aMG6rh{ zONZCfi+!X+pW=wmbM#6NOUyYvsLptA-}Zj&6(`Ngq6&Y?MJfi*;k`RcxkO^y&41?j zkPgJUdpX42+N&ah@stOq9N|C0TiJ4^FvSTa<MO(qMne=;nBh+qG3$dgvYM<6W~JnZ>seOt@|d&GD5$!$#qHW_|q1P$!32#uP21^lOY zW$ny{wT(;#Z>kl0rZmW2(i)HlaVhl3Q}tY=GWNC~bBmh`*I{4&bu9bSB2d4MuTOS*_cTO4JBBedlQsJ{@}`6urA?N1IIcY; zOezL6R;85{7`9kyret3l?isF?VSk}_p($Nfi|bl7it2xn%fZo$-WDmC7%{!y6yj{R zM&)UCs~2qNMRns}(Et%an|_7^gD_BTF)=SZX@J;uA`{R6>fGj~sMy*=gxnscX~OP}gsxXQi5alpbau3j&#NkX z+?)WY8YP^UVWDPU*=d=g-s-8=M3sc{Ya`$Vhe4clyEa|CYEF0V`~J;cxaH_ykoA+S z<)BCXf+ovx)wkr#FuER-(W4xkBBOSm@I8M1E(7FP0KA}=E6)3{48;_kgN?cSY$ttf zfp@+b@^{JXDbLTqQdl=c06~AcKdfv)#JOSkp8&|C+7a?kH05Bx97EgQF`u zds$=T2=1Ax=Wnnie`??z0vDoN1aj%mfO~k}KiYQ1cj1zti^ElN2}k`dA0^OP)zyMS z*J;ieFy3ZWP5o;(#t#+k^%(Gy5dnG$6S}y&20BB@oBF&b5R6o1lw*BR$i%0W+n3=x z=MVbPL49RbZx$mz0g@aw6^H+Y5TR58%d!lEA6nfBK8ba(+aux2-$!~Lie%D~WHcz+ zKhG1cOg@c0COM;EFJL*oel;3OF^6T@hpO8R;Ah(D&ZceuO}7TVp|kKuIIG|A36>I) zDJ>VRaR#sbRHu=lHY%g#%Pjtvi%f^|a8aQ@y&m+wZA11R%#>vm8Mx<#D>9Qg-cw5C z54-j3E@FFE5W$1@BjX3#&>VmznbREvo-0CXF1QVegPGp!r_i9n^E3Y?F7=fO~>13b%kcOTQ;I6%R_!bn(@cGI3jUja)(TX>cv704%IXz? zG$v~Pw$Tt(AnbH-24?yT+S0ZaCe5v}XgM7pMkwUv8ShxouMT8!h^88l_|$LXe2k7; zl%5>9)W8(7y4{{p%;jviG{M-&9<ffQhzrmf~@q2)*!egPmsPR6Po(@ z;%bYx3#z6iucaBxfKF${rR$sa`LoT-?WQ6OKL5USJ#pI zrwpHNDSB^nxxxXtwxZ*%$k}xXsA2r_rc)FPTRhO zSQL;-PPjZHIO5U`bF23l|BibxEILWma%IR^q%5~9tD}u8$QjO{qpSU1zPe*BVHHD0 zOyNR)^*bdQ+fsj_`YS?F%$-BOzFHYkRAzq3>y55R-D*jhV=bwoeGi%Y4r}XQ+Hw4{ zf#({FtG<_aEZZ>|j|aU+(6vjIkmo>U&_5p_-#%A=OAWN+8C0l=xnF=*UjJ#oTkWRH z(QOU6oM!Y%8XxjWYV2ENK$y``{1|nYztG`!G7R|E_{(`U#Jm@unZbw+U1RdsnG@Tt z<+TG0z2H<)BD&5KL-|Aevg_|#f{#!m6yr#t>GGzb(;4xgAGewbjaLyb?-w}-g5*Vk zXC++NV&v*9YIoBpQ}X?V^cI|fAYXm3BquiAlKW}uJ}7KAvveccF<3F3!55^B6pQK* zWmMHR@o;10B#8rA=Dov()7T3Bpsd{|mNh?A)a}-1l;l8|kuu~&hszkK6cdeG*Q&o< zg!OChk!ZApk*Ej2d9Ixm-zFoU>Tl!-mT-UGdL}~Jzz5mT?Gli9;iPb~5#?otCG~l& z80YO`G!LY>rwwDrX&S9#n6j^+jv`8oGvw2siGVz)0A>Zc1lb1hkfFzKhODTAYXNDa zk&%E@vUnFr@#R15SV!PBiAKBcQ>+SX$)Y8Ty{IJ>wE3YG6(YscE-Ihu$m!=Xq zd9V6v8Zse59X0`k&|rwm(Yr!iA%hI-D9<2nQh(*W^kePG%z-c7+}~BG66uMbo<(QM zqw4&sFyqv}S2LcY$iTnfB-i_TX@`b5A|=H&?4FEovQ9nqQD=5Xjo_jQ?82ZJ)6@UF zr9F5`Gw@6ImxY7(&S6*A4zo=?MtR9$`x??7V67my_NkP^ByR1hs+|weYly}+r_#&q znaT?dzx7v#w-Tk1EJBfz{oOkNo*I3qvkHfA33AUcx}mpM(YVC=}mAD}U(&3Rr1E2hS9{llq+; zqf`$dI!;tHkl~e2P!+06PI<$qLY{FUq)t)b)~V;lTd=Ao|-&C~ok19WJ#0~j%2-k*-^7~jJ~ z1JdQmvgq~z+BJV5Z=HlIU1%$YRDZ#S-aN-ivViAIQQUm*NjfiOcJ|eke?OIqe_jNp zi*ut9Hr{K`n+3g1irU?14w-qk!5&o~SsObD0TzMuq*T`R}B-1@(;<4ls zy)Dm8Q?TN~aRnA%Y5>{hq!!GJx3NuQVCBUTEZR)G6=uK(7+C#t+nZ$xqfbg{8!W%f z>E-OOFQ;}Afgt^JX@6fnLiW;su8f_2yddMWL3SJ`4RU>&KH$ zkU+EkOr)S~9ic+PtP9|}VRUxmtq|$^Pq%`Gm_v`N%K})AGP}gDih*v8 z^?)M`3Bc7HaBUzl|4?7dUHu|S$RnbLSoP~?uX4YjaAK~6%!ShZ3h%LeD2=44oV8Y2 z67k6aYt5*G+x;`t6CMAs`3D_I|9P9Ud!N^I=lG%jgAhd$iCIKy!L_*6ZMF20;V#nV z&x{6r9d&}CIm;_4a!~H*bNG_eH2d3W@j&dsmDo&flh$5Hk7cm@)7`7_{aVj5_dXDE_CHgCdsPT!4|u)Lc@v84I(TZ z=GXCl8nCL~6!^04fJ-V6W0g#FrvlM~l5caMLDo1H!Muss zsGJ5iGe(=5Sd#Hgd_7m_8~jlf#4aH|bedU#e8&LAP;!1(y39AJyNq4Yl!GvW7oI#F0wx ziGDu@$7`zFMr{=;N6X?lIP1!T4v`v>svE=(ljaD$)2DrnO(tZUfuM2 zrve>@WHp}-JU;<5!BG9KG?;zBAg?lS`)gIH%{3g`ZLx+gf^lWj?IH-BKZBQ+<=y6_ zqUizJ&m%v9EuMRvB91G$5taM}9K7_(@qfB;2mP%}*;ra5(9`o6#3q-ebTiYJv5}1) zQYbGsEvPx^HnNnrW4X3tnB9t*Jax2*N$&OveP`7V$;EZE?*PuFpAiiBj?R}R&Ql%u z+ok0UBx`4{3tuOVbyk)$p6S-(2%ukZJN*pX6(ZCeI@TS_o5XznQ>-J{ApD&nv)-&I zf6JMW%=^zRuN|Ov8}b*G+^W2#Z{Aco$MVn!M_GcI&@EI)bR*waY6pMZ02q|9C&`1M zvH@Hv>@TS6`{BK$oFH*mCDvFiJcxHneeF1TpQn`+R|aKFPfM{u!l+g5-%InO1I$79C1L%E z0cbf(lKyMyhA%8{+WcnY#22OQ$|2D`($(Y9qBG1$My@StM0Dd^LA>N0py;9#11&i~ z#=uk)oIER$!qdUvud;hnV7g;-)`arx{U{A@eH)3n8R!^0eCZa7AHS@rCCiCIT(laT zXS>4flO=b7@oDNU0f#a2shaIy5Smc8Q4vEf=4vqAF(M#LpTfZnuG%^%D{&|GtNjj_ z+@lZ!<)H`f55LKS*yjh!G>o+R#wM{rI8LkhHDhTyS*GJ!w32#?JWy9|>`F`zF4NL8 z_`wH&@+$imL-{?(0J@GLH7B#oYEPtcU9Gk4jKmv7L27c#y2?f^W>(V(@Y z!tI3vc*14>b8HqDY#G;?{GWIAE3;VoP+q%e_|aQsJR^3Rl+)Bw1z$^(YsX3V&3|WKzcu-1UD0kbP-Mk1UpHO ze&?Ct$adV*zo5eCk&ot8Upag<1v!WwX4?eE`B+Ww0k-229lhY}a6H7^Qy^t;7uJ*+3T^9ZJR0 zo+yZ<_L2_oo435v}huj7d;h`_Q}^HGl9G`OW~tsXa|>Pv}rQ z8)`G%Erj5`{7&zC5t?plwqH>EP$_F)N!IpToS~q4|F@@#&ky=T`+gR6 z{vI!eOQY4_O(~JF?)87sItshDmnyjC!TZv$bh}5oaVtbH?G1PdfNqvBSO)kQ_hK}n zsbqp5mMZ>vk^s~CBUWdVd?7snwj-PsZ(0Pl&kNotsO@cJ@yuUVB>sYD$#2BUW_6^C z;$0#IIhLQQ@nZKpbwVTi8R9pk_4c9Om`S?SFA2_@l|ok|vA)ux&6Iv$-Fle>1ZX~i zc>p5?xAPimq@#GIfc~)+I(?9FzH)*|19Gk}(7kv%@v*JPYljM#cX=Bmp6m;x{v|eb!*Q_ zAH343f={G;`R;TUH1k0wR8Y4og=O9V-C3ISQu#+hn*2=fC5m-(TKnl5oBxAqpTgis34Y-OlxXAKXm* zLo!faqmgfhX@J5A8#CMmqoN~i6(hOz!}zz)*U+x3nkWkKEHp_tLk#D;{ zb$n_ebs8QN*P&XGnWD2yfDtf^M|VFX1*6 zPVudAa5zf(=$l94Q;f+k(YDLZ#dmi5>Vo6m`cp*20Fz(;O_L-RBCu!r)0O(;*Nx0p z8Zs7?D=kSDu{NOVzu^w!VmG9$w!qtng(mn{#T-SViEYC&5=vfo??;0+HN@^3-%y|> zVc5Y}k`3_YEN`y{P6_HsDoT@wPcQ`ZRf=S0!0-LoHx{jnMa> z8o`6I(rwhs4a#sY!aQ)vPP2SvPq=@qZPdYr)rnGwhz^xzX@SLCLfevwd?yE;_mE+) z(VkuckQ)pA_8bT>1*D4%Fho4r9IFv?CcY1vex!f@HM+0MDBh6FV-avk{tLp~U`xIl zk4s%A6`Y1*B^TKau`*&c{2#Bt@*EOJ28=Qf257Axs38`^TR0ZT zT9Yh(GAKjXvzI$&Fa1TpOx2M9A!L=FF{c@G8F`9#SveSsw5@4${L>O*$oOW{?SQ4P zs8#y(6k%3Ni9YAyCLrxBk#&c7GTn>i7hVlm_V+A9Ri4fOqYlj>IK3BCij4^7qAN>g z8LR;;e*;}X4U;CUKT#ZDkdX*{x6?KZWB89a;g#J z`l8q3xkD6Zk&ku2AX>*~BCS%XiuYM=E-?{DImH3fSiyTB!sE+nsYB0ymAfzaL*rlc zO@QQJeDFZN0sp4s{o}rQX88ZL>Ee>^TfdEdU%!nwJ%tm{wzl{8(qnZQ7K36!_uY2r zYwT0ASsY-Jif%0mR5Hhw3QueUZni5WOXE@PW_enw--S4{F<>j32+CYT@q9|7acux) zt_)h~LILrFU_RsMs}`D~&=tuTCCheLmXjzxz-q%eL}Dvd@Q~_SwiOT|E*-?5&a+n% z?`YF6!iQCTk(y)?*mPEMq(TE&Me=sl*=?I;H;RIkQ`#QAd_-Dr2Ps8t3+!>r z3&53zUc~fmnDH@9e?fYxSq7-Tb9uhEjNMi{#A$5DHU|I=RpsEf@bRNOzNyaUt9y0f zgJ9h;PWEg3)`4V#fbbV@bG!rg{{8gbDy?C(Berydb_zW(T1h*zrju2Y@Mq>4%fa3= zqf}TSGQw*7azD}rX#Y`)`g0h=zu9b{oE>WS@O{%IBHE??4tZMcpysR|b>Vgr{RyB9 zj7S{Y<1Gr!3m0OU!(MQ%}ZlnsP(| zBtQ%~RoB4HN*K3auMP~;uek5uk1lGt)Lf8Rj0RnqD&+m??})mvYXA5yc5CeiPe3k% z`_s=dEQddwZZaV;8Gk{O%LAd}=|DdPj}z(q6tuL1HaYwm(?7foNRhz`R>|lpAD`pA z1QMRZqjyt$JySY`Iq?$Cic!*qB$TQBG13G}k(tsTR1@g@D-}MIC)p5;9H^cN>;T=> zG-^=8CK5$|Ba_OB)k*}XS^dAZjl{1_QO&}{$#yAhn&~N_pG0pL1cjkB=4EOJG!GZ7 z@paC_C91fzK|yRK#2B%`J^S*YBHAZR+&OvGg3N@a00uJQ))3GWq0EV660XDoYA*D5 zO0x3E;O@=NwG;@6pY`&i?#LkYtE|X>iW^XAldB)gqEz}BWZh)cP8>Ka=Y6q&i}~d>7s28uM;hNM{)qTJNY=^tK#a}HgX}9&R#l0D zWBFN8%|%xNG?!17)AW0|+7ip#Nu4}W{OG1@wUHB}g$`o* zyu^>Xa#KnZM$dS7>8Alm_J4)@?JjXaEHsxd2(asLd>yLXSHGz+UeSMx)=I=lVFlA> z9Vq;m;H1UCW|>B435)w0k7^}IbQ^ru^-;nvGOBd=3mT62Qe>ts7k>jeJ!STg6NY3a z?3p1r={0UTNDIwD*tcZ?uYjpwVLh{R{VjlL;}ku-#`yW$t7hdvqDJfv_OWBx!lTN$ zy3z;INdd?givJbdK1qBR2!Y;=1f!7B&fvd5`uqi{aKTt!jws;Z{7SMXN*5TbRpZG> zd%Fo-UH=0yM1YpN74V{MiWTJ-ZMWvIQPR-X=l~X%e*Rg9wK0=xDV1RSfj)<24bV!Z zCnas)>;awzJWhT)lV>;EA&Y8`L^}6EzJYDn8~#PF3wa2UrPb%!yBDw!?jR$=BJT+* z=Q({bT+A9wmM{oz&RIjR`@yY#)X?EUBwDx~Z~$fute=LbGCO2^n8A1OszLuhK=Ur7bMGgKA<{#mq` zn zWPrE=0G)o2#0WWp<{XAbkPn}BZs9qZ4PVJNtnODt+H55`@ zu16D)P}=F2Qh&GmP7CdRC_GOW?oqFOR4=-*DlsIm4rg&<|Z z_NSP}5>5QwPGg(X3LX3_!O5-dr%OgfK<*9SsX)QQBSDN%q}e|zVd)yZSUZ$?GLTLv zylN$qM$KIWRk@@T9lJ^CcM?Rbm|@Ep1?3m`R7=559~8qfuV`%IW5!vBZy)h-y2ao} z^VJ!o8)&2xzfNPYWyS~RjbG|%oU6M&-UmhO9jY&3A&CniXmybCB17LdB?gT{X24Z- zTvX$ee~Ku-P1V-c`I%cM@ZrE{p!&1X!zOU*t*X{LtqQs5*jUS^v9W!D9UOj8vm)zS z^=j3!u1+Fc{Z+xC=2KXfi$-EE3S>z^s>dKJY%0!0Mb@XxKE-_(6JWc%$0D%8=V@OM z8l-K?&j!0-5AoMuFC?M(^Z^Z}C_rSJ?#jFtw1Aa5jbwi z_;!W4@?-Ws=rhvvj&V&Y;_`gL_FV&)t8jM&W;b z+`)h0oLzYEq{1=v+VP3MUwbXq`%HVKr_=x3b)=R!EH-$Gz>SnxiE-ww9@0urDh#2s z2|tkSHQ}0jC%dayD6jhLB7WzpuHVNZL_~;?y>V|U9BAeJz#}3yw6S3(;3=5*P^Ev; zJEhiqtHxswzZpzoEG#U=%CBnrJ?F)^s8{S%@|4O?ov2dVM)cXo=0agOKTHM z$p=N7=ytXqnjf!e^r)%SO5=hKmMrd_UhY1)045U<9JR{so;J$k17OQiIPBt)9Dj;J zQ4~zvnUQ0#7%+mSZLXa#In`<$pi;n%X;ExaYjNcLo2JP1oiVTDDe}auU`{Ts> z*T`8RU;Sy&hQI3cF7`z#L(!);{T3LH*n_#{R8_ie#H6^xArOda9&Kvv>#zGp%`~Cp zK8n~Pkdnd$+1;!aXHyY@bh4`UFUbnSmdk=#{{SwD9&Y#b*@MeOU!Tq#sQX{^Q{TzM2@v;dn5D8_vkQgI;R05%n#7k`jI&1<0LeJn z&ZmGmDq8y4Bmk}Wr>l?|+QYp#tY0^kwKEl257;vXe(xn4d`FZ^+4w`(4wP1Ay@Cpn zhl*Yh1^A*ijzF zT4_wQ zWUgi6iQ^@ULqfB~)`B&}P=`JCE#R4T#h{B%g_plFRX-AGVYJ)Dc#w*s#f zUv(9KZ1H2rUW}TKsRaXnfSZ--;7O0aYJF)1VpGAUo)=7Lr7JqW(FydefaCqx;(whX_o~bi0S0 zE&^m(-?hml9woFZUHkNKrf>R?AjjU+ec5bu_L}RkSrMIEDR;ptM?-c zUQZm}e>!?UaVkn1gHQunw!fel{jKUV;JPq8`?cF|@xc;&s29`wNGH`E+vL<-$D0*Qqacm z0Esm@=Bh8ruqch?f%G)wiZcag%f7N{@1QfaAfSOYMueG$D$dhuAWBS_(=k7=mzC>F zjro;&3Lw)@(5;w5y$KVXq{~}GBQMPPcT11mNYe-L7OZ3R)p6)z-F> z+Cq=JH51967Nv|*AWzvM(Kgl9DU_A9kqV>*$QSIJ_biNOIui6+QT4Go!(mg)j;!i8HT`(V^2sHTGrtIq}Nb!docY*9exSJW4G78wUE{}$NF`<_7wrQ+I4)^lf&c(-$AR2G1-T!?R%?;US$1ty zCa3iMcd({w7;_M(aza7KVXgYR8K^5MSuHS>5v#D`Kc`bFRu!F(mRicN5`%q$G~=^q zwTdPd+Xez6i&4;bI_{dMe*hPelcDyFH`fvw|5 zJ=E#^yOQ`vmB0M{H;pLSCt1V8Vt=Y8 zrCekeR>PWp4Zt=anKNT%0hVE*RweESLJ?TH>@G02L}K(kWTGpenrz{&j1|5DU8`KO zM>y=y$w|<)4IG;Hwz3F!41JQxKI0H)Kxy?)%<{q4BwRY6(xfytwwPh&Cb;YRIe+4O z2n=4cZ@lUhh>WsVRc_e1wn)pX;#_~I0#Me*f13VZLR~9nr2G$y3eKvj{eg&jHd}cy zy`DUlJJ1adRz8bL#qRh~h+R^@i_R0ukHua<*agHF@eLb0E1QTN#%dW%xLSPN(3@qQ zlw4JSv5gmAiV>^1*;F32L_%$hxC4ncf4dk@ig9e!b;y#4RJC^q6%&J-qE z)`M&@4ur1bfbEr)w=0^edZdfB(>3#31=d0dhpX>F#|ZB2*f`XXdWRegGrYQJcnk%E zA4lS%QJ|?iKj)<8^f{R0^}eDx_tj`HX?h5R;I5x%Bd4=+cto5o6}SR0ob8)58GZ)K zvZiVNwK7r2O5D?{xtu>6P+{5zT;i8+mwy8TBu1Ii#=BIdeyp*}FdoYtml6Kwz?qqu zvhu*GMg#aGE153`({h^qiw@H}bg~`-D_D5bYzQf{`mFAo7I8BhyljpNi5$^V}IdiZ^L^H1ND?;;{>!aSWdq9u`Gcoz%cL zU=O%K4EtyhRB~>GkOQ-YQ8c?vdFPDhI+uQTDO|>N&RA;H3h&_+r_|)LRp^U=8LJ zoWT>Mjh<8@_}^r&5|A&zAtf$WARRd!I6Qq9rogeQ-H>FFDXGHlasV@SZvYX6qMAWb zae?F;=k(&-eU>}p|3}U7lb#Z1~-NR20 z>J7R$)YUH4ctj$Zq9#!py(k)Tq_KWw`Dc7h`>8e}Qsn-Ra(L=z73(}2RS}mu{Up@c zrb?6O{tSu{rj$kaQ;(Uz>DTqz+);D0n>rtC&j`G?9f{_jw3I%yATsweGnwsCJYXlG z++Q7DVQ)|$O@-~oFx*vsgb;Rxpz7SQMS25Jv2UnQvWWHY!s7*%+vF+`>^vC1hNE}o zlVQIIr4hHbFAT}U=VAw8AxAh&>T`Kw)33a90}V77kHKZ&NH}0zy&eo*hpU526gWHi zbF?jxj@1NA>B?=ilVo;61id50!{80FD(WlRImNg*HxY%5T}Z*_H?@TdkM)(GhrX?9 z*duf-u+?W6w4O6`D&E(t4PCu(Y1$q87BCyqI7oCY%5D6O$d|BZIagjNz{6KY1qhCd zl7bVdi}^i9ry?qE#Ehfo2m1AC9W3RwEyh2}7`*pP!x&f&=c1T@6+!J#0CPs zgfd@ZZ_vgKlTOT%>ty2EQlJs^``HaOpoH|Nze%`$I^%CtvW|y|(p0R0)pv3f`c;;P zjsbK=3mz$0L#DKfcFL-Rk7wSiI{6y1kWmZZin*qCx95H#hQ^wo(?=@8z=L5MU~f|( zSVG6pfNhR5d>gA)L);Yl}~? z?_EB{>5<3WA8p?LN#oo)qu;9Y1rp$ZjruhzI{OaurwSg6(+F?eLVm-Dls()J{0ybq z3%sZ?%Mt(wOwp&@&fGppTCb|-KvT_r5~B+9)vWJv*>7PTMS{t~a z5%ZRZRe!maW!BHa`#Px^KEyB$(}w|Jqvr@BBCO3-1L!S`qB2H5t<#QC{+aydVpenR zS_DxSr224~m!6|;7&B_Gn9HrXXtEqHp`d4o-ah^l#~{rbI{iIkR&HfU`5RR6$^KN| z6R4NTt-&9(Uui!|@fz}@ugXhaRY;BSPc{k)Hsw*zvE&o%jkFxApw-iN3PQOg4K=Z3 z>yAc_O$CB*FkQHG7Ic3-a#8St^lS&Gkn6>^t>tdk>Q)X|l$r_SsvEt{t(ZGYj(d{I}n-PZrR<11GeT zNSRJ%7@f) z^~DaP9CTAh3K?&Df<4VBe>_nBFs(zZYjS!!*;i93bEDuU?*lwC*sal)39&0aOXrot zLVvbR6dx&ceEr^rBOiI#9g^?ZD?meYKWiTzKbBtGR)+JfX|?VS4=@LeQfU#|PjfQ* zT7ON|kvdyRCRQ@;YiSp*1Qm8;FG@FX^adfix^d=1ynKPJNszDH7Yu%`km{@MYVQl# zYlGnt?zT&Vw$A<1b4`J!5xtZ&r*Xtj&zOwCOT%4lH8h@3&E)WG!SLHj5oWW8`|z|s zyU=0M(Np$Bet;-4v5=eue@o;iwzVs<7tICQ;v{2fqs;tcaE9&bX2JnjNO<_PB&x5s z^n{hBpyI;ttpRKbhe|)feiiF*qW8U}Oxdb|1{sibyD|jP4irYriga0sfVv7m3J8;= zvZgd<9o6eKQO+mVQ#Msk^wsr@poBLWvBb;B0j4l7X%~%dJq!zsvAlAmn>qKOAEs@B z`)%(ZL0;83fEu(AaGDQ8Pi0S(<4i^jd=SGyil?Opt(FkjdNDdF5z40BU18* z{bt*WMd?!z=@eapzh3LJ^uG8=k2{LI6h-9PmNUYzuSj{VGTC&=HF7$Qd8)naA-CXy z+wy%|Nr*ZJBKO2AwdnwAT4~UuMauQ9=F{U}LFl8842h28oip&B^h557 zCpnpzsgDt@5FI(E8~tIkJ~>T=yI2H*g>&>RSP&s_XeG*0wbGZgf|2W{L$g2|b}y0# z6~lQ?O=^}r(Jk4XFdhX8YQx7&^`gsgahd#B=Zj$&drypMDVUyo=Z7Ism_GivZQoI7 zIsDF5eS!0L}zYCIlQ%>iDsDLee+K(tFw? zf5h&zPfB;l zGvd{%n%lslm%{etx$S#bi{$OLbu_#*IOFXSiO5?p*85 z)g!Y9&MlajRR+#vmUjH8a2v~FNcWp~Mc7syaDtisa#)ce(;96(RFwVLD&(GRRvz9z zkWw^MwE2??tnD1qm_A*iMRE$52MiH51wSMEjhT#-N-cW^zMHFA)*@o@uw-Hl3J10r z<$}0i=&bl?h5n-JOg*wXE&cA-1fK|i0xgqwc{U+0a~qHnI2y$!hQ9Fdcv}@^S-`=5 zm&k>y^Sc*D*{A%gsacWhG6yBhgjQd4=*Y@DrsTy+T;~`Loq_$;6(>2PVyW#?LjRz& zWV$pbrl?uZhr+g&3NA-T98$DZa#Z1~|TqWLWrz|~Frt-O)e+rDOC2J7bMo)k)NBWerH1Ls~ zHo?^MJXfHO26{LzUzwfTsM)Rm6UU-7=?Nyf zy`qe?>i2feL@?*0mk*q^P>;2EPKr|N^35BGMzVPRuDit_FcTvnL!M+*$zE-Z~LQaeB{rRHiMt)X`u176bl`9{nwM6(%I%Ddj zO)t1enkqh@)wP)d#gfNt26rjwAKH>t&>jzh!nv-pHXrPii9ixR{p` z1aARaVo$|k8_MHseLaI=x?2K;x6KzJ!N+l^^exE8-Y27Od%(hl+Q-JXY1x1RQ3$~y zqV*^Odt-{lz=3&Z$d{U2g2CZb$eVv4LaZL2g<0K*KNVAWFQ>@;L}25y34x$o?Duv- zUD$wpRzs-9*n<@Ekf;L^{RLCfcv$e6&+2Q&KnIQyO^hK&AX~U_b1Rrv2rR5hC+Xnr z&RHE2iy=cuV|etC$FEqKsh_0b-U6fr!^4(DMmea|ux;MWSOua>4Bs1kRqGxFGOC$ue`L4Zw|zvTp?aBb~S?Jnv%ImNMSIZZM zeQGVd-d2uq)pVav6Hd!7Ej@5;H6E%8)y(ur`iOd;?G8oo~xdib>eAJU6k~#R2h#}afSyf zV9ky74~0(0rsHV~4Z(B$8|ey-C?;3dTvsiiux3WR48CR-{B&ARYtz!yHIplIau*Be~nkYIP38 zt`DairTL2jrX(D9GoTSAjo#>8jig;4&&R6Y&831UjT*v*X&iUE3i$Kc$F6G%ckyHb zQ&v9fC1zjDOPvaK+hhNugjiUGYya8Tf3s8L7F=aKg2jM#fZ*oL773sql(~V1pw-22 z2n?O5HH)GoW_^|sIk`?e5*C(NO1*a0L`UPQuL8y)6GuuOf7+LU-__i?;p+S5X;q5u zrJp=XKkcsmfqXC<;ZA9N>WPwKpDn@w%)-hC%N6sUWshn0=`>t3UcSu)#uO6@e6-^} zT{&1I*Us?Fms?y)!m44W=L*CdIU+osa4L`sEQpRxxtNQOS3mGstL3&>Lw6cu#fzR0 z9?9MqVrey8AJ4|0N+Z8#z2UAn222rw*18xQAK;e=r|~ysE7(Gy76hDK7fv)-040tb zeRMP`PELA`ier;e`NKCOA{RMN=G{gtKW8&|n6N&@xi}nEN=3l5U-NlhJm3r{@VOS7 zdV6Xl#O0`XFs7kuSvvCOZkHb`^l7+r1~s$|i1T#+qTDyTKoV0;E72Kb_i#WDBQb$={>>{0-R z`zYPa%W5t+fMkC@BboZ-NSQ59?Z|eLQ3`plS@L&UX!=O6ZU5chpjx1c%>Jv+lDq#6 zk=HAr>OLlsa>DjoEafcB!@#=ivw1JmB=<--WH%$V<-C!ak@%@!&T&O0k~(zqF?Kqw~drU|W}YvQU4HX$qJu~10q4c|` zR}P&)4 zxM;9;>B5bk&$PFFB2=MCH|1O?1+8^8+%-sk^&t3MpU7tf(gNH<#Nr`ew;fxSBL$wy zs9^N07chJD>5*XiLjVml)VOtLwcrU@TaQa`5Z+#G?=>J3)YG;?Ww=A>sxlkI`jpNYMZrWe_Ia~FQ~BA{SIN5(HX-2L2Txv{oX$zwvsRY(y%^Sn zD%t#4!y#uuh-de4eP{8Ffel_Nnyv(;!3zUrX$SJ}`9D0~iU@u8hB^fxk@+IP@lXpT z)sZMw+N+}BAZ9d_&yl3hD&$NWp;DMd&cIC^8F8S6UGM|QP2h?8%gAwe7YcStt=B1T zMeNix?fB>MJNaQxjG2aLVUPxmKzHdWaU)77dJjtzmYd2+zLCwW@&CIwmSnosjYggf zR_MfpcOHW0&-bmO?u9Dt472(rmz3A{qQZ#yqK|^&92^Bx)q=KSFkelIP6ORwl~N-( zni_mPLWJ&X>z*=!!6FU)je9bcmjQhv6pdMTPz1k`8Z*VyhalBp-MK$T?L+KGF945> zmL{)_b9{zA8c`r2ft?ugFXvZ;`6YV*=f$I_EJPG)<~J_E;OUH5Rqmt}PnRA!;#9kYoVBFqcF8IKlIz8g!B#J}DtN~>T=p=!xwBvu?&6gAI?^SQ_trd(Nz(Ve|2 zP4~6CfO6l&ziH$iGA$eV?4Av$ItSt+bq!6A1hHjacFR8(LX>@y);YinMK6#Rw~v44 z1y@#6HLakdLF5v5%b%h{*H&~}vpZWNuEF_@UkUCB_X2S9hUZs)-ceHz623(7dMmH0 zZ2slRAlit?cgoOjESWD49rGMf(AHRVD;*9(IXxVz2}15h6M}@lI6tg!uvjmytM3GR zIazfM>d!36B7@C<=S1f3Pcy?3$)+k-zn6ZYvncgrY`B+5!)2S6dh_}p$ho?T``HJKvmu(7Z_Ix@1hh}m|U5ucvsxgX<9K!|cm|9aly5QbM zZ0|#GC$^ewH~JJf_1+9P{F#6FkUO~jBYWY}oYel?k%Z%)f{DPfo#x<_q|=@79D^TY z9U7!^#2_9wy7ERMCAbgr;kxJEnwyhlHt;sk1NCYO8 zRot^6AH6r`8kMJ(gM}8xgV!U|hZb0NhTW$u?DC{oW(AhUBgcc471Et-4!vKzLzczP z^B3R%KFAtAv~)ZFo>~7hz8WcryX^es3mhR^=C~%qp570w_boOrIA=D~2%t1P@*i3A z0Z&dC?H&?!)O$yt?_5Ew|9bt>EHv+F+w z>gn5dqm1}D6(oqjy>Kz%mWlT9C*qd55B1!i*(8}cW939hP}=QFrxb#L1}%sO$6Qy4wx zbVY|2??knuSIjj8L*yEQ>ANdXt05$fGRZl;5y}>@w;msfeRQ=dr9|JaO$_s0##3VE zpkDFl_?m6bl@t0uv@uor2lCx+MU(i`?>;8X-2Q(cD2M(kc;Tb(zKjw%FW2MIQOGJv z%u5@L%#-!DBfQ%#l^RaGswb^NfY8PeYrZXR>H_dGq2h_R~XpG02=xu2)|AG9fi+8wS6m^&VC>)$m{V<+cOLl^TgfYmA3 z`INw*ie&Emn!XY$qD~61FY%6~dGXhyo1hKt<#}pp5!lf#Ck=@3x`d}6s&J)4wf})wl2vCU z!rsnai)#5E=%FofkEq*#&R2sKPlP`RK+@6!bgdypsCH;vX63_lo4NWUm^nZ9(6RgZ z9WxHqg>BhC5OzGoxAyuYEbTFx=NGGgCPn9Tfpbnw%0+kwx1V!y#Fu4Rs{B*FL~?gu z_+xy%a_3Xv8L@vM7i9JFFEWV~-^U1hUp%71pbM5SB)onsOAX_HlY-?f`uRa_?q`Gi z@ELdt8_*f}pwWwh^Vb2LVd%^>h4wuU_*a>!QwJi7Wob#7;~Ny{HnI9rN2?<@W$ldZ zEnXuBeQ4XZ2F0kx{M+F7jXA_wwmcx{dNXT91#g`GqQ>u*%wuE8HMP$0O?ER`y^qS{ zCPH#H?fE3q(S@1)r;cgEfF6@6Jk)uGD?oP6xNj6^d%mmh7EJWjFYEXSy$`Z?Qj%A& z8>gs$-)=&l>W(?d_u}UrUs1BgfUGog ze-*28!IZ-%stA4p;Exa1qmkwZ7B~$V;qlU z^7Nv$gZcS*q@%fG6yrlOjy45iqpvuM34|=*zTNb%nVjyu41s@SVexJI@LrgShWC6>i1$CBeO zSCgcSo^hsQO{#5rhj8}`dNVb(C4f=X06de7&2LvRSQ=KHpy~1<6ZX707V$jJ)fDWY zd(pOGDjTZorHDGEJnQC)3T4`}Nn-?En^y8o(~lnt;Y0m$esISg8F} z%_@I1EM*TmpFUBRi)Sg?Y%e+xeE7+=dudITF0fp_X2)Ks-wHVWKuuk0xJd&Bk z$GT^2#YK#k+I|{-;OJnhU@=%Ih8yOH_fbB1d!fnkcgUS`u=6Ptk8%baw>pRR<1}o$1yAa6M_g$Lj_te1r!V+}4q@92*;(wSv$a567YhyrGQbc#{Jw zeM;OgGYMc&neN_2E_Vqx_$IC5Gb?8KXO^_Lxl>#@Do5NWQ`UZ8EzrV^R~uJDG=^&Ofl?!$*lSjPt01!?s@tKm}M_M<^B zIHVaoaT4R3zH3|Lzu{-ww-IE)M(ic1`m}jrjVrp@F*9>Hq=`$bIan@v{yr#QV(PiJ zKjuNFHTUo5Gv98%563#b*%xvz`gt@5_CwK@`SQvBY#_{naM*?jm9C%$e>jJ0(#-;c zV@5wx4l6$+zB(s|+7LIy&ppfi`fMKqr)m!wiLJ0dH!W|WClzUbz%^GaUI_j#mA&*} zh(>9dq})cARHRozT{LAY*b8*XIQ-fhmgl`^r9%`!Rja8~01i<%Obq*b<{@#K^<6T2 zJa&Lhws80ZY@l=>93R(3r4%1`%1VnVyND&;`%^--Ggz$cY5QKIa|-^1$`gpUxK2Qm zz5|53aXJz3)*5gae&FmUsJdx3CDNpmQ-Gmsl~zYA)N#+sog7VC&WLTlDUDL-5{}w` z?SLjeB!-?K1ZcO)hB48{e#Tkf3{(d0$!C;%w^QOxZi-TJ4vmqo;7`R!_`lAw zb|~~gwLQe})6siSUaG$fqto}q(I!cU{TGV>Kz;uOhad|VZgRFBf+ZT|Rp>Lt(WkKD zBM;z`)xRU~2oK`;VFqn!{!odC(#O!|)i;6ecque8ND{35!Q7-M0Ge~|(>nu)CQlz- z&EbQ$T^{Br2kP&K^O1@Whwgo6RbpU3Io556tCaMt-3!SpQO}#O;;@>Ay0420lv*jQ zzfCbwIKE4JIc&ifQ2slNgg{PgOUB5>Oc58wkj%T}6V(Vl2e@3oE}rO}&6V&~Y;t%l zzucC8Y{bl6j2q=P3a?>AUH$!VFX+odX93>Q-yW2iCsqX8>|a*@Xgs(?%Bdm5Ws;zAXun9#bAH??OXnQ z{i>2sH=OB2cd%~<^W{RLVtP9L1p-4sTUg?5;K^w!)f@amvBH#4UX(U-wQuQW#(uzp zalM4P0T$OA$)hN>vB66(RQdc>sd-l~`;~1;bgq#rr=!6b6_26xP6>XPT$p+`3)0lQ z(aM1FW4gz?gtU(8+pxOA7+{zK8Tbu`So*?y>-Q|(8x{@Bz1w_T1E@>bRoKmpeV#^q z=3ntMcq;u5vi_EgXv%}NmyHnen`j0cBK*>xc*!e~tA9PrC-R+frrOLzvxywv>JR=i{F-;hu+|&DdJj*iEv4?Xa(u6@>sH$Vi0BmRo`Q7|AeSXMfwLIp{FL!msML^-iNM zM)++XkFEc*y*AwIM}@fRorB^KBi=4)le01z-E#R!CIgc($kKinG!ILY5z(7%25zXoDaoV#`y z3PzH}=m0q;Q{vOx@xO%%FwOII2&?~|uIjf(k6RW!QZA*XY21}Pvz+e%yb^GJkT=`< zcZ~z}aBy4)I%jVAL-O3R7*eFEfFq_MdFZ}L&<{M;UNP2)p!+hJvee_M6h)g0sY{Nq z*QQPk@6KV-6vnA=wKB)W4G6=rB7eW!p&x{8u|or)))w3v*QD+VEDKdifH&U!i;wpN zsE&Fkn?BJ8Q%uO8ffS&N)k8(H*}ZqC_YxnCyyv#0V%}GB*ia8i=d(III4!Pi%|F!o zPS|Sv4H5YWY4?1ZNCRc|y6Aqy`TMP*?cK^W(>MLk+C7_#(=kdiH>6lvoPE6uKf;z5 zg}^yC)<#^`X1MmCsm6-=B9{OtFwLekruw5QYxkIg%w<(KnnZgJZX$a(R5uzZ00Rt2 zprgf8ud2WCM&EKG{3b#nwINb8-;#En=_hk{ifCX3`4-@f13H6<)5$j-RigJE!lW@eT&T0K_Axe{ZhO`b*XmP*9U@T9}-*R?^?&#?yslb6B;7bR2QONDmAxUy?c$pyyIq=kTw3*tMkK=!fewt5oOIf`^DgT(Mugdf0$3#G{o}GE#j5kM)b-L{&aSa zf$yLT^gD3>mg#u<&M5qF&8>Yx{NDY_MDhO|a9dZ58EA+((MG%oy=JZ|j=(ew^pYhm zGAh^!6uj*)HNk*As!ktATDc|fidYd@F7|N07?*G7W^j4=0WrWgKs{FA@-X;GVcDf* zoo-$2*eRR2xl;YD%W5h{9nj>ubcoKn7ua%h z^`xQ*R!|J;W4q6>@%t(iBaN`wH$7V7glW`wn^GtSe}`SmJ%Se|l4Fba5&~-T@v_Vf zYL?vQ&2vvTaMS_fSMSQ#6!blUXD;h0R^FdL5XA#-wwM%rKo|k#Zx8&b%p6$=#h?j* zqwyuV|HUbL1AEOmWR?P_(;<^NZgRZAwD{6ZHX&!nQqrL z`OWq$eR@Mb1O*cTK5I@6-35!x_5V_ ztkquy!g?_u9njA!aLMRk`b!ZTF6CL1p(?nXVGO)u@r&`KF<|gGGLZO$IKFGpAWc<@ z$n1;j=z|v69v!^8tHgNvE4lWvk%yFGf~fb^!a7_6Bi+5#)A-4xA5dpnq1K3RB8&dy zNBF{KIX{(%& zcR;;E_`<~(d6ObB>yQA%RqXEv20aj3Co=ay!vf1UK*6V5_}drUsK8UuvE+eh2|Wh! zh6?t~JU2$9!dAIP<}{bu65SSkgrga`e@7w*!*n#IPmW{p=$R8k2E)EgGcI9xbe?TU zjq~}9Vk+$f=(3Ne!U+9$-R9HHa%WBot`Q%UEPHMYv~_m>rdN3$&^;UsYB$2GcLz0n zBtKy4XJjkBm4yD9-hyf5xP$-ulYJjW9nS7&e*&lepuT}(3f++;14WVUKM;yx4pni! zUMGa|JhM@~U}7lA{Slv>$lgl>r+n{8vTCHg@r?Q0qrZ2LYO8og&%-sN*tZ$bezwPqxhQgs)=0M5a2u&!6k& zpmu#A|L6=h;-u`OzjHDwU=>wm`+ae%DO0bLc#G*+A0gQm+IYtQiK#-Yvhs_!x9U18 zaLxS(5~KcXL1*<4md(1FYKw$WJPf3qj{vJ^18AljRZ@f~OSN96PBZ(;h{;X-!3l=4Af_))EpU9!Yx6ZD#g8dW$Z_>YnI>OQ=?z!CRL-VG`gi!wga zse;3<@l;7v1?#7i{=?4>1YWldiU-7T*`@F%-FK*>?mAU?^$7h3F_tVkKTAY*O#XpL zKfO87lFn{A?X&gg1)jioiRAPa1(Q!0h$+bmU*)10VBlC>#vvklIKk!)x+> zV({h>V#`&%Y*T=Xx7()F?}2NCd}=Y??No>^!N8IlYi#p5Om|=I&+Lud`O_nS4_f4Y z`Uld~1w0;Fy=m_*iw(V4EC)$mL8UN@V2`SQRaLbk`?`D!uh*I4OA|+UUE%z0AVTM` z8*nHK+yWDLOV15=l~8emz&i8Vv-8V3K(pNjQqoaAjZs!gyUg$aJo+NKB(t!uX>vVic7BNm{PUNxcZGCAqdHy|V!2F#CM2Uu%Q)5W!85jaCf#OUo z=|HHA&=DA%uo{2AeO>j30rto8+Hs3{Sa^r{T`OdhIk1zBOqv)L+z^h{oL%bF3PQ>C{k7;fsE3) zb5I3>fnB(;q=xJM52WZ8UfR*c-oeY?6)V!*w$}Uw!fT0wy(#T1N&xpi%<5ZtQALT?ylk)gBUd z(BD;(NCzU4PA9Li3+q209j?tsq@>~YE6>*jhF{ya>R#HG5FLXHzy(mK$~lfN#k34H zN-QusGnK|RuqIfQBrQ$KeP)eCgz^JMe6j8KrE!7}KOP$oYOW6eAQj}GY~!wwgVZ~} z3ftUns)QAYq5$fuyX<-d7c-R);~L0_p}GX-nu$vBEKub~{g_L4mRJEsev{-4m(}q= zyN83?a{-GhI;i+P9gCk^uWXime6;txkn)1{f=V*o9G%qb*-olY?E!6!=EqMyMZkBX zUY@lGg#E5VqsgS1&z+K3F;iPlo zZDM0>rG@>1d8)q_SldM-btqmSHIT}C8XEbRq#LG#v{elf1`h!M!ma~q9#w8F=0KS8qCPINwT#uUc#Ax!E3P}Yzx2`4#V8&{BH;Nm#^LBxUv z9n_g?r%t?nUt#49rzQJT=a~1rKrHoj4;%Y;RQH}KIDWSf3hX~M_F=yd0uHyJoAxJJ zjQxNjX$|B5dr{s+db%Jhs64d8Yv$AuSy+QUjIDzU-oQYuK>Y0eD;l;B*QTa(9Vk6x z;n)}PUsR(~+$7+*$c?uLBt0m8J+5x`%=geu`*gGi?Cn5$WbuxN8s{|2y{Tv0`52t- ziDXBwLsM7Z{>o(D75rE~oyO4r^xKC-9D@uVWhVg8p41{+k zKWjBg?#uE!4WD!T}2hhl6iTt zhQK`#39<*<_j>)~7x*jSJYrGqh?Nk}|2 zL1jIqLhp+B2Qqn94E(|0H$Mt*ba_=&tniH!O#NPzC~YF=iLJ>=Z0ecxw75OTB<-(b z(zI2|u1eSvKnPtPp&AWHmzgM=uQAgq$rJcVIFJXuwkcc&J8c?|I!wgfAN0hKWi3aZeDXik&Rus?=dbs}YV-IuW&MHNEmQRP zAIJggLJW)Y)4g)ygXPkWh3$8b%|)xdBZ=2j>*LuWk0j(?v%Xk906yc=Q?;blDtHJ* z4`~B!i>uPd6A8N$N@9b28yRV*_p6N(KaMQ|C*&f=NN0kfLKW^Tz)$jG^y1J6b#GxD zxQL-X*WdqbMWxR%djTfz?8RpFvNjhUOp`U)tV#_IM?96561wo^$cf~;3J39n4v;q# z8bSOg8bnzLY8@s8NX$ui_B0D1k6;ke6eL|1(DG0Y#x?yty?6QMo|Kngy#yH*7r5d4 z<%uDHqG(efOT4cj=&1ok5>MWU=Y!~fF3j>!^1mI=0FWmkov(Hk#DN5~ z;lF^{zmqij;+@0a53{(Zw6*e9IaD$+D(v=*>#4UVdhio2NVq!EK86JD@bO`IAw>Kc zyoQ>{B`|7H*;S=ybK;t~jC)plvaE%^0T{xDee|Dr>C4p$yqreoRT+F|#Xu;>aGgu$ zkH*Ki!*aWF4%Dt93{ekeRe3wmq3x%A#Lokyu$@!3EudxA-oSM4#2}etqxI!Ae~OZH21~JKCt;gXkMcM2!E|lHjF>8U z0HV_RV@M~#jcba@L{#I2nxrG1cA5NY*dWwc};V`R$6lN zfg*nRwB5~jZQZ%DYs)~y0|K!WCGUUz`f6;&mufcfIII4KhndC-J*c@&3|sGMWMQKq+8b8-&0-`2E++oLWkoPv${6MwZCNp^e#H->5Ob~z#~{Lq-`dPY~z zixhuJSmly$Lfem4w2H|u+5!he=_$}TES+hJs1lrCU=J*Db9w?Mld6q4Mh2ywcE@{m zjOH^ExvfXEw8VQUW()EP9wLBHQNne-UlP{I^^KrLKjYefOws|3MJ63bewbE4YL)60 zsUlmR&W=_J?UOJOe-C6-v%J3p$22iWge!`$vWi@m-oyGZZIv`-!ja_1eou)dmcqBG z97~X77p*eh3Y?_@V3b0(VfbbRxg{ghEaSWeK7(6V%+~jyYMO{zS5tuc26;RlJM7nf zetn13ztJE~oTI)x1%!K`OSMl?yU}M;{!NQihqEEw(Hn^83;oo0Hr4=u;*uN}*9Orw zl}bZt!C>McH$f^^?8$Fm0m0|Lx)pG2lFuc_44nV33o=t%eu8M&uVB&t`H(-6L*C*n z+xy4honm3Xyzh_yeF=PtLYn-^Mn+#OVG5-}h-73KN*VemWP`l|6ehJ-o0Awwb+#BO zR@#qW*&vH)=Wubn&o&N&lX^J;x2#{*eH@iaJF%|AS(Y0FGyz0+Zf2emGoM6!BXIZG ziQ@h7m@zUGYc(J)Rh7iOybYXi3&>u6FG#EawI`Pn2EDqPK%h-4K6HrS>rZqyxlID|I}u z>*Ll|DF&7*IZws|8%E7Fo(KoGyhpj+M@27m85?u$12JD(vfL#~jAA^pTvjrOysnw( z2=<16=+A4Tmh5GYMtRkO$2h`VS*j#0g^9mLcm}67&&+Grx0iF}l3_|$ytka!4~aPQ zy1po5r4?~m(t2Nr^S%GPPfoOwJDUg2^cy+ILG{2H4F7%+O{c>{ zelU<(2@WAf*mmqWJ_#UOnPK}))0j$$W_>Luy#)PMmmHGMq=+Rl!ew)!=|^YiKphJ% zQ(hdvJ|XdFN*Do^cmWJmxE;_x`Bqwqk9BKN2J@J7EIsqz;J2GRDDk7SAMd|(Jpx$r z1eVzwjpZaLO9JVQg#CuX0|NU*{PV%z`JXB@tmUx1HVap!%Oz%Dq49f9p89cwf8*{6`jnKc1@qYf-&LrquSc~{6Y?1Uv{YuQU*)O`C$$2Q-AUv9&xs^?yv z5eC~4JBh2mm ziK{46{5fcnLG0sO?>YSdZHxZkyqLfOsDw-4_6OgI=P(_cUBWF*+t{KJ2&EdJcmWZ7 zN&o|T{n3$4kF)=;xG04iv^OACi$hA)Y>eZ`mmDKfoC~AO{mbwBGjhGR4gx^$*pZHh zTo*MU0B;I8cb>lP5sgmaG)e(EHCtRv;pp*y*W^JbK$ur>ey}&7p3E-LO`1Va3UTR) z!g+1H1=tKZe_K^p$w8X}1#;W_d))Q@7ga@qGhs4$4*xT{mVoK@9=a;)VIcLZTiunF z&$yp%W^g}!-%#S1f+)ZN!;1)$Mh9@1cIn#neX_!tpGzL0CE4$(%9|G=+a55z1eujW zNHT9#^1P_`Pr$x4W}V5B-o;%|`xSh?7edkNchz9!EcC(xo*`M>{qiAcERxtO#m&&r zvmC~+ioLzB1R~dr2#xa$WBE|zDL_G%{`AecS91y%8GaNM7allbtqu!eAl$o{f~u0d zU>NJ$JozAdN*Y!^X{?3bVfblYk78=&lL|UeI8Onk3c|Ys zl-XMqGS&{BAD&jis8X;f_Akj>CBl8|vyJ4dShm@D6_=)}E66A&n|$$`QundG62%<& z(Ctl%`}qA@7KykIQ@(crqW7~;E5)VWKXem-298IwaI&&9EpHED6|`{ss41SJx%vqu zNj)jaPTZo+4VuK_o0IT%-FuzOy<75H5ewK&78(IMpCoHMJ+h^(r?FPId%#SoJ-q>M z+0WB}Atwbqg{joy=^xJXzS%#PA-{(vGuh>bR(+|`v%Sp?)H^eEeRmZ^CLOxs`MF|j z{g-!Qu?-;wZZpjbbq3jmXCQO{3)stoPcTeqYiPjpTAG&6KA1^9=&z9eX`nd!v?`^% zQtD^set%sk8pB2KO5xEsTamaHrJI`Eqae9Sn2kwYqwRzV&v`{e=IrJJ@XH92-a!15 zq41xqi@z!{R34sH}215mEf5c#J!{aKa(E;9C*ztoc>NcVAllv0y z=ztJfGJpn)z@xJL7_M^u02U^4J2A96DGGk6^tA5_vVCvM?~{O6rQ0Y+SN^dBnXy4~ z4@P&8Xk)P#fNxeCadk2Y#0?uh-ARR^&>~esqJMik{{qZ)q5+PxlB9(cN z^KzjOC-;=ItLr`xT@#6vb3^B)=gX-%V-6KK-%p{0 z0R!jXFiy1@YwF1DEKX0Y0 z=+{^Lwm0@X{3_<=(>iM6mZ&hpQ)|W5 zlQMiVg5&CsFL&1cb-<3#r7H?i+l$Z;O~ikyjw*mLhM2(tw3?sNX=S8pxP8DJ7FstZ zYD$0udF1N9gC%fl&-VFC-ej|F(Xe?Ak*m8WN_U|#RhB`PI@=KbyFe$k_gVDSKJRwr z&ni77OOjkFX4#BE!h0$50CG z?i`(E#6Uj8YlT=@ER3~jQ9?jMYWHsBvLQGH;uY?w2K%sxV9)AIBj#t(U(z@*TivoX zST35+G|fPSFSlw$ih1?gq7MILQx!Epe$2-&Z1}{HLM1l%LRnO@^d7tk82+^0_je$b z7arGTQdIq8GCF!C|9@IpE#6YZXZm=13Ke< z?+6z|d9_zlioht6G5D*5_$|^Kaxx*s-;VK_8pnCe94T78&reTx@5cN73t%fZn;4v* zDv^4WVlGJ5xKYZbrh@ja!2n;T!2THnk5M)V76$+Rfq;a%kG-sjIO8t0+*!Rh5U5zU z(nAI`@5xjuiRGlu1d&`J9b~t_9taAz(rwl|A;8~JrC?igFd%TsweX-)ynP1Tbqx@> z?k8GLP>+G*AbjlIzSoCFO}kmlFVZbQ6VOz{XK}^7k$-lb7Scxl5h1>CzQ%w%vQ~fV z2fV=eHrdb5UP;{{o?%*ib8DL}6<1u0=E(HE!&5n4=8+1V;`koVlqRSvEOYPpMpu2q zY&!hUPFU)h23w7*K%H{I+6LzmE|z-<+?*^$!)a1{*fR!;H71Wxl!?#_;5Ea=_kW%4 z1vV9n==^3>@>;SuzzBOXTLKn71qv>fE!U!< z4NV!<@QAe$SPFstI!xVx_zj3{1B89*nvVBUH;ZdOk;Z=@y#)R#9_BQK0hz{IkUlhF zk(*|*(|GS(nBXAv;(>22gY+K=jrmUu z{%$^-3(IsBroo2Jz0L}SSwAq1hH)W>%&`0ab1waVHc-HBK#row0*50f*d>6xfIsmG zj{WkX^Uh~v|E`sx$Q83y16+juUXFIqF=_I*DGrh4URqEoZWi_ zQoqMGF^8D9%J&*g*d2rqluT@%{F~2Xbl|;_R{uxr91xsr;eL{(%)7dVQ8@$kB{tj6 zWQmWYIq~JJxX_@+>kl7fc_QzwY&9T7yM!%I9Nxy4u@6_y69-g@7cnnIBJJ_aeW0=l z52OuQxWv&ZR6~Snimj%UowN~(d7>b2`u@I3@`ldX)AM)u1Np|+avRs65GUAlH6hH< zyNPN~uK3KU6|%CscOQNP64@XV6#43p+$EiLM-Cf_8M+rS?_O9w$SVHw&3B-6L}@O^ zQc-Jz`@qOy)arO|a zR#uj}^`VH~*zN-6R4}h2Zh@%k`11k>b*wr+?O&ce_=ys;B$Kh^jX?UUnempiHeDuf zu}1gm$6B*9Cxh@(iIK&-8#E7>+;I#-=^GL>9z8Obdm%rULzmHdDeOrU$e9~dqzA-e z1PG--J4TaS?D2-1h1X63CK;QXu2N|OH71ya$3IIcNH-iCsN_B5dG(NK6H~vMHPZSD zMerz%)HafOJ>A0qi+|S7Aa4qI{HO@N@KDFzOoHEc^CQk$xZrdN5-Lc=ZB%u0ZPhjx zSTxA6Yt}Stt9m`Z^1^up5QS-hmGo7=^`RrufME}=WwyTJIh|h=Uk@Gv1$09rVkHsY zcb*VvG2~kVH2Y;~!V1!*P(33l`P=xC^h8C=8DCKJ9>{|ApBt#!4>Zv~*ZgGC^;uWX zQ^vBM3|`}I8$~gKb;G)o8hFUW(vY}AXAuyt1y9zg_;Cb6<@Q)dcGw9# zA$29S*Sum3W{oOdvCIzn=aPaW@|KCAL#r2*N|~!n4_c!LUEtY6T-3yKJVgJ8w6~6m za%}5mr33`2^X?fv=lDEt zed~MI@(&r(CHvmj^-GK!Z@E!2C7)~7pvc1Qzfq4CPn2%?iwxvi1LMmj)0>UucVPbv zOsSqu2)7ixhc@gyxsK-#bm8H4k-e`DFv7fWV;3a-;lwpP1LI5J6>_Gr*W|v`f-^_Z z{wp>{3Aoo)#)*2fxZ0!w)I3?o>0%w+AonM`t*OZC#MSz$BIM2PF9WIMzu<1)KS%Tz zxci4X0`RL6sR*_3uj?J5p(q+9AO+6{plU+wuZYvHs=>otY_jXB6?VFyV6__Ts6%~f zKNOhFI{!6T_Bkr|TMUQgTQ-iuz%2&^+=VJa;3`=G+453Ac^TVGp(UpGaE3#w<(ZkP zjxq)ytXpXmZAvdU2}66w&F_z?-?3GS>>Ux!v#6~N5y8l#sT~d0Ej%yyH0y%LdO8$}!+Sr8csNvWKM$FmI7^t< zPEX}iob{bgH#n1;d#yz?k5;l`9dr_O<1I!-F&2apcTj zW9~CK=@s(T^$JpZRW8#`Y;5cFt@+T6$S(O^iT5C&*{)v(7DwL;fnc(81?`>j_k&JN%%@3G-sSXK8Am3f}63xe2C& z+_fwwtehh6xLx0gPzR=YdLe2(|8l`=O{KVZN!-ov)>|>rElTl#zR88wXDXTHszLVg zTBGu5o3!AP&qTUcw^ruz_mbhd{SG!1^Mu%euXOu;%p4hyK^kx+sXYPT^%hM81#G`o zfAzT1Q%0=(C*6Lnt^rbBvcYu+2>y%sm^mlWG&Rp=Gk0tMqcUUr=^b{w;DXw#2S?^u zp3s4y9gX(OpNt-aN72YV_p|a1l!ldvR->PLxswINqkcZ71z{`4F6xJ){Cnq!J}Akk zQA0#}8Q# z##{~UcqPf?y{3u!%vPB;6^UDR6F7uMH1-!2b4W$Uq{5V8d-FI3kdbm=K}5#<}F8mSVWhk432u;*oJyQFIY?6-E=ScBHw$| znVR||->94vYe`YXBSmjyU+Xzf1-2iNFm$C{&L>Sl?JHXYh1S zM9Gzl8kP@4JbVyKI1K1Gr0{94;Eq`i2-7=m;~K>jNH{(blydMoG7>y5h*YUhfG7&6 ztw8+|Vs&0mV||#h^~3MuV#zi6IFn3Cg~CJLdpGz#Rr?s0;!#3VjZ$s`IX+oLxTRz| zYq!u+jpxKq>UWSnQw5v{MMa8A_xsR7aOB`Rtt-3m74NXF1}yebqG*T{pq~9_a8KgT zg@)UZ=*!PsU-*g*iz$1!Hv(WICS=62N~T#3*j^Sclotty8}m@&iRO z-Sn&!^7V28DKyLYl}8|%bJIC1;dEGSaZ>%$Fi!68x@+^h$k%Ar$@CcI#EdQ}DJ%7# z!!rJY@I%`qd!0(c>Xluqhgx(NBh+5c@(LYeqw2JP2435T6iyfcYoItf*2d>YdHhYdw}Z@U z{q%Gaby^sdkQM%d2mrpeSY!7wMnE*&ZKOI$F7G9d4;nQ?b3LjYNWgtBnKgQ=>sQ1t zG+E`tfk5rZ8&+4)OacFpV%2=m!xa1^K&K|>$2e1jH&Wo3^y+DIUkWN94pZKY2=&au zQgNyr9JwJGkh=XI)XFGk)soW(C-eXA=Lp%Q|B~C53HQU~HEYd2XityU6B#pM5iFsf4_&Rg zAyF|Rtoi8lFNk;P<7*Hr9qxvKb}Td z!IG)YgbADm#K!e9HbT&%Vme3BulHqlNw=gP9m>iT3I|ZdJd(J75v>=OwJ_A7zi1lA z7Bf-`qU0q_v!N>@GvJVx{NCQ-P}|V_G#bV)Ee5NCBBN`weAM!NyD#6NmL?(zRLlxi zcMJ&}2=jwQ84LU7$(g{8O+;kG(otb_OMF{Ds+pE-+4iDrd2_v#@1*h0;smIr;OYBW z;;0WI9+wL#!@Bijz=oelem4=J?Q?WT2vtAD-;eH5)QxWSDVe=`N}(f zI#qYqUwl~Lr``uP4gOAEo@1kL{K+g#0T2}ur_vS!o022i-u15v_7D_gJX-2e4MWcg z(MCWdfvTnSa-8B6QugG0aSY+*4!)fiC ze4^%KXKPWWyY`74+ZR;fbQJd99n8o^${f-%W=~k^9o!qCL;Ya0FA7QzhQP0L*+;c; zsLk`|>=_(Seux<1byW9C3uN+4e!ek!Q|qx&`2m(perUGeSfJRZd7iz&%~|x@Z#N#Q zmH5(m-=9IB^=HA00C)5>`iL_|Kr*r437j1oq5PD@VrXemUn8m$R;PER(PeDZ*BOM< zo*E_4?~jSdQ@jk#)&M!-AG%P`L38M#Do^e!=&+0gy^&pp%ELg^*Jv4Fm^W79eFTR2 z>gm79qu;kM*w@G8qLcR|5Lpysh+Fvo1coER)DVm=U0eRUZIwN_o0<*WAj%26Ibsf{ zqCjvfgbsY6SjxZE)2K+#3uX7NYzZScEDCiaDA6uZ4=_EHdNi)065%U+sf`M}-4Ga& zRuXJLxJ6jfnj(=q=cVzv8Y7A-tzlhnSTUU?viylIuFGm!E(-Z>L)2n~CRv`=e(MuCWd-WZD$mZwmL09brPK(g z`{wDS)bUq7<1X`epY=#9G=jdjWYR(z|JEf=l|yB)WY}CdQAC_QQa-SPq`Ex+8jb%k zQ=`DEWPeZcyo{}e0mZEWA}OhlL*g0iB9!p@NRgvM6weK8_=WOZ{2j0hJH5Mw@{BaB zw=)FUTH6~!I*IFEamFad{v4Nlt9IvW33elS;`;-T_n+MJI4xRzVn*_tMOf+{8#(Uq z4Cc?m(A3H_pRI?E6S8&mL{E)=&a8RLf)&s&vEw<>$_7?*R01i_>1v}HRS=L z>BX>Yn`t1o!WrYzq96>1Liu4d`Nv-uHtlB;_&zVY%937;$!^F^V@F}a^qKH0LsDJA zePt?f2Y!UL5F~ing2^Y8Jo61hWTBW#QP2z+-Dg+m21w6eERZgh_%y>SaNw(ciCB|3q3lS@ z%jCspz=97PheE~QR?|N^`spy(Tup%L)5=^~&cuZI?`gPf<@{gD(R@ zvCp^+$sDlyyv~vGQk_NNVHO1t=PWFlTy--F>+BvIZzNXFEdb$xqwEG=dbQa9BLSY7oeKOims z?dGEPhhOS+P7z;%{Y7<{7I1_uzPoka;u;^#20@Ln=|DO1b3KS1<>DX+IG^%$7Obxv zXt6l0L97<&fPxp3g3JjedJxn&LBs^Q;v}d(mKfncZg;V_9dzGWRZ3y=oA&eg?|b`S zKpvid@vpb=59P-m0+Rcs`WOK^Rbsi0kqY&N1`tpME^Ah}3Bsdr0tuM`o3_<_zp8k@ z`e^NsberE#6fBEB0Kk{EW-tA_MUkl!6`Xv(MI{lExDdc~T$6ijQlP>V9#8z)qnx}3 z! zFVw-Rer{~ss~Z5!jMKqSx?y!r3vr5uU_!~t^(<5n0X zMZrQPl-m$V8C$tVH~1vt(r zjb-~{ghhgf8Z0RawyQb0FUwYr`{pRX%L6+eHO1!;NZU;18pd6KXj}_6PPDB-e}iGJ|t4EPUeB8G7RGnj4@}#k3FR2myfRy)x>|>d6Wyrz=K#?8KFPO&g?4 za@a<($V=vBoaCpHB>N<}vK;QMh`rbV{V@-BNKsB4jQaC!fg=wnC`^<%aK@|b9mAP4 zt}4yDozhVRrd9~`b3yg+42DT1Em^g5?jMl6LBUF9dA$Buk2JrA_fYGaA|=lKf~NR$ z*q1WSTi2+3GtX1_KJ+_eULoWoB-lZ2QlnF!N&CtrO8ZvN>>i4rNWE8Q_%ueYdm)L- zl*ya1sQ1zSpMm?oA-X?Y{P432k%9;O#E|^Mqy1*!{+RIL;>^E=UeLUoriBSpcK^#* zfYDH+Z|Y@BD;FF3>$582 z$bt!Br+wb)NXg}36GXI5t<5a5DV|jRV5sTP7_lO-QyabZh%cBa#j2A^UVpwP*2lD} z>xBC9p^LeiXj2vUV}I^^_b*U_Q+}@$awV_l=P$4*vCgNHD0A5)VMupoZx}QrZfY8 z0_y8V?hp5(7Y=8re&7)%nK zJA2u5J+7t7Bb4JpbGXVek)d_6{J=@Emje?10W<#Vw%-1hV+xM=6XAtl^Eyy}#mkg{ zps%@MO_8~!JPm%BJbM&ou3S|e3*}ESMPGsZz#b4Z?oPndd7!rDJAvDNTs%y*SPl+r zi2&f=V{KmSGLBsVR;~G+QdB3&&6tzblFaNQ7`!vN+Mm1(e$d^CNd3#LcbOtr>P=WJ zSEaK(RC0BfJMLT@_J5;Y3P>Sve$DIuU>x~V)NQ|w-P?Wn6|(hJx#hT}UvV@vSxM1| zTC{wyUp-WeW?;lj%)bx9)0!_1F9n_4G|nksn;U62D-TNVj=XCdmb_y@@?6LcrZ)=R z*KVdXq8Kz{jwW=ztI4v~$I86KpM++u(*Eu{G*o_YXwl4mS1|{*%d@lQPTy%6Df&Hp zj8*|tCoTO3lAF8X6hgkX&Z1zCcSDOYa0^71&fZu03!*;NGbGcwgt6E%CPiZw%B%=L zWQ*b_@kM0ig-0_sa0QGnO{%FD+X<=%N+SvRE4(1bU>4@K--vv%8zLzHuKc292?~$G z5wTBhm$@jwmzPcA-nlnY|8WH_bz0BE`|Mng(F!cjfwEzvf&~Jn_WG_1UqRaQi^C0g zU_k>2{sebBS*`2->az86DvZP%ij>G0<^yqF)=bocK#+lVmF^!3{f`3-)S7#Lq(1)l z6X6d<_J6bTppE?xEG{b!=M_xiaIY8+$^F)wRexSE_Fb+n#k=JVhI{`@l9QYL-w~MH z3rZq$j|}r=dBn5l5>=CK(UQxUTT^7yc99h8#`pVjZM2?m)m@^l@^F`FJd~9 zi;!m}362RF0wZ@pxL2Wd4X{goDRHTCYXzD#_2ibdYgPc@fmCJH3?_Kt&vYH|>FxkT zZzea7+N3A2rxH`NVdzOA?+r!#WtT6ox|nv_`YRoZ%rLV;yb7{3K@vb;dp61zSv$Y@ z5Y)3;eXGAGE}hJeE#D6-2H-I_uoMu6-N03aZ$ z2aH1iW@nQYX2VS{^;*x@aRha&D$92SNS=D4-MOoh*(q@w zyP-#Dc0KjS?9aCrzPn&k_wt)a7MA(ABH{v_1=_QgQ4>?~E#RYYgO1#dp>_BAB2)gt zP8RnidrAVVv?>5Iqvgapk({ZGUumQ6x8?RV7eH>`(coYjC0a`&X z$Xf*kiptmw5zVKmq=t&PZ|SGflWZPZt24dbvnP9QnOoK^x|H~6O$PPIJN9G*2Mx=| z1h(dp+-u19QPIo=+{^{-hk878AGdHd>bxZtwIVw}DVw z`<(!CmkB!&-Q(c+kc68|vV%ueq;uyppxWcCIO#74=y9!z&8`6jc?Al~hQJr$&&$~t zo!F!i>Nw-NvbF-xhlPINJoJ`*_!G8X^dZlVNCGZIJEL=-Pa^XtFkY5Gh3&k9pwKJe z4x;$Kiw}Mcf#5?RNdLz*d_s%B;{+}CdMsV+_)qO8JU}@sSnm&AS|H{fFpCpd6azN> zHVXNF&i9zAD1&A))g0|dWstc2vfzu|egysozy2@bve7&8XX3~3KrI9oFR6F3rb2sm zfX=CpPIWssh0-&)87HW&T9{S+q^@2)3lwb`QKCPxfp=)f$utL!dRq|5O?p7@uQsPBxCxxtnYDDh0H$ldSc~2B8U!{zG8QD6Bl#~=~H%$F{ z9j%pTP#i1UQ1_v`o5)kCH(LHRoP?*o6uwh;x$wAUlI4Izgs;-Ye69lpWy&HWZI2ZN ziOAZ1^kMymgtl~Y3yh5GkSM79aef27RP$Naeelct?hug2XT5<0$&`^3#=WFow`lvL zh3>WOZA3rCJw46eD^?-H;_+DI7{OsIO5C#djJI19dJ{j?w>5u%S`l=1@`IZ?m8BGb z-KAa|#0E6r5UcC=Ps&0cHMe5+HNR*@LSKn|ygJVGekPT-Kl!Oo3A+z}h!C*gp49ok ztd^+_b1(EubZwe7avrT^8P5;wBBt?2Ki@JtDXtFeMWc?u0k|z4tlGmlv8nbAVVD_qV7>o&O(}OC}5%Eh!;gCGTwo> zjcp)x)_Ea#UaY#){;U#%7EsVs|;YwkW@djJ=zRmHSfjwX`H`lX^@EA+(QJ$9{7 z%ff!;jpY^OrzPvoqC=KK3@X!ZOF`$BUU zykdpmgi(pm-MqLXeB(0&A_;+@QlI`Jul^f0`wysWgz0Z-=|3+=L;C(}CPx5f#l?(* zfGGcs&lL+MePPI&hq{x&y;3vk3ylb*4e{0ZwM67=;NZHHC)c!^C;GgV=M;pIwiP~& zL!UduQawRk#M62(E>$MNy%Lsek*#tmYJhN>>Pg%b1~r|2u^J@r?}>e>ZCUE4s) z0+cZZDIKlaa3|x{xQC0f42TSh-npCSHc&5rRSYabK=GlvmJFxJLiks(YlzgN2@i9j zeV^^`%Vo3$h5j%k%NVZg(nLOxZ;gzmVU{!rDhEj%lz94+;?uOy-0$wf4UvV?22@#? zTA_@=Q(tpNwwTo292-6uYl%=gx4j=L<&cdxyzgtvx#>ZY`xq~&- zCq^$j=7Ky= zWakJomvW0QsM!l)3#{!}zV^G+R3d}nV4M~HO5#dMS1iLpx{TuS+)i`7B$ADipD;V~ z9g9?;u+Bu@3m(Yifzp31zH&KH>`^G^+&GnfThDZZO56=9Jf9=B3mQWIU8;fFU`>I= zK?_70V7S_Yhap57zYzLGSufc*=#goP-C$;fT(QN+9a!Io)j6?=1@KpG+Xabk?D}Zk zKA;uICFWB+zF)4tl@N`40k50|d$SlW8@=o(c&P{C3X<#I&Oo6OOzzhxAjC>v1&n7XNA_Z*e5)6s8)&>)2yreCd zDaBnk)}EYGckX{!MTOv?fxJ8>oIBtBIw=I}iUUDxOl>D@YtB3yv3$%{pO)I4VQDxI*HCHBp?r;v%ph2T6-zetnm7{Oa6~~A zu!Gu5Kx+AFDSCqb^$oyT`*-3@#b?`oy$N(|2hgFCpkxLqxRi(*y+J z=#XYgh~twXCq7k^T%gSd8MXB4{2&L2W4aH5l*kvx5%~C->+Juh0UEK@{$p?YXRe07 z{ENBzL(mGx&k#fxmIWhd=|VUl`{XU?TD!~~5a9xFJLG!7Eq=JroG!%aAJ;}7LfnQR z%0f+F+!Mqs4YUkorn>K;)_3^mwbjj}*Av5T3`wCf`cf3EG>snLHs{9jamHRJ5)~=| zB{{!`TT}ed3_SWLRafQ2O-n=$1ZE7~cPhw84undgBlC~2iSU!p64y1Gd?LayC>!ZP z`9>^5+?qX}IbcE?q;bdZ*nDy}rubuQX#OPBDag~aZ)nEb z_Q_cZ)0b%J@;AZ6FWw>d@0h=6Ss+aOMj;yiC4oYjqw!)K>q!djsUPl_k1QRAqKVAoBP;Ra+Oh9jWw!Kh;8lGjevLWe6rblhC1xE?OGA&0e93OKFbGBr_K zgii`sG+ZhhT+}g)pr`nm%;y@lYTMq&LZ66S2xw@t!saD4in4xb!yA!Dk4p;%4x~>9 z7Oh=6Iaq8cf~HqX`0ft?iP|ANDx}WmBiy)Qy%z>zO8BLgEx>?11-4_00_6;HwC7ks zN%nyR1?rr9*u^C&PrBAnq`979sYKW7KAhA9`=5|_+0Bk+Fhpl?`r8VsA5+hr!^p&W zC)q@Ue&F>gC#13up)_@T_JzQBYoL%WIX2<+fLNuEPD(`FyEAY$SUdbF-v0RnhDim) z+w4WMnd|-vD2eqhh9B)$<7U2LmsL_NMSxSn<6sl!do{ufsunh?39GK z+64xZn3wr zD+~OB1*s@_gjSve%Ldg}7c%*;!zdm)+))tQLMS}jgy;}b07hrz{(3A5?$l8{uhK+2_&~Gq>RR2 zjQ~-)bOD(%ge419?}5myz2ftUkLz-Iw;`RJQ_38vyh7;L(O#v2f^O@#{L^^#KfZce z!p>H3+ovl>Gk#~2-Ul4eBD*!2yCo;^YtnB!vDEM}%RTnebtBv&toiueI_a8Yjc-MF zOE%}drbD|(*pal8ReWHt*q_>tccwH2 z%|PDzx96+rPL-Xv=er|!CemD$$?a4g#S2WwI4sDL=j(vxT4MAs10V>CL&>};n%oYX zo>p{p8E1ZZ(*k$*4fEuOqn;j3JAGOw>CZmX;nLUduzWg43o`nTn{QoRD>|mhK60da zTZrMnA5LE{LwBSH%G^76d}cUQ*x#!iH&}Fk$}jy3atDXS5bI)K5fcsREiZpD1>)RJ zgt~!z0QJKWiwL}28?j9i6k)XfbswSa*CKK6oEa%!0=3r&50C%-5<7!zkE(A*d(8_7 zUHGBAcHGvR*$X=jnK-Ds*NX|hPBeX`(TmG;&Z#DjkDd>Z4HXJ53d7;y0d_U*#0wS| zmjW8@PkHYKG1#o7hM|Y7KKUluq=(vCxQi1qa<4XrxVcRuwHCx*E7sfgVLbCMLqWPc z5(#PG^bx<-mL***As5GgDnr$*FI=4GPt+XrcrThJE`P;BzkgnxBkn{BZpj$2iM-xg zTl~o1(l`Pr8|(?^lwWsWp?Vv%LXL!iJI?%^h+)G*rTQ^PG`XESUS? zsE(UgprPSS}@*7V!AB$#@nK&EF*W&6u z;B`;&BVt@IP^q5GppN4?D&F;=l%H=hnpMsPvG+y(B-zG!C)PI#wUDOx={qYYGQ8&9 zG$s4k-rH-nfl<(w0Bc;@!kM^C6%JG>8d0!Yi0v!4d}QhD6EUk)Zg!I%ATKfg3xZt9 z)xE^xko8t<&g%>{Vfq$I!dJAevD4sS%n^taz*xGVBcgtPK}2JvhB?!=DfU4U2WE<6 z8n{GNb!)+yd?7XuAY_Hxs`VHxy4N)qXm85O?h4U93#f=BZ+G+@SM;`95(4$w2Bm;n ziU9O|78T3WdZ;M2E)RYDqowQ|d;y6Jt5X$4j`v`kJ(ITZInW*2UoXgt+nrByEyTSb z5xH_JF=|C}Y^cnI5P6JOfN8gJRjHodBxezlGhI>X9d+Zw&F6_KKpA{)Y%UpUPSvY4 z8xV$+jkBmE-m^%=IiUD6F>-kYhtLS$3Z-!bI>2#}tCOoD(G7g`}So{-KaBEg4t4+1D&g3Gbl{+#j58U(|?EIiQRW zyaSj~3FKSG7BE?<>P)rOS192gC-#BKTFuq*OqN!H*ikZ}H19j94l$ zzrzzaYJcZ*6zuh(gJL=##9c zA!LEmyo~$5*WPepev~Z?XLM!Ux8FF21tnzNx`Fd*EAFu>fjauWw)kECZ#z!t1S_w& zcrW!0Md+|a!nWjQ^{CvQv)HvP#h~yCd_z)tfn7a;vIr0|d~`^e0eiE{q->JVWInm* z^2J$k)T9jK#Cb7W53w`6U3;2dooo#BW%7EwiNK5Fma`}OFvh7Ns%y{Px>R)6zQ?tD z`V!bM+|n6rcHp0wBYx*LHlqXKoA7#vl%+&jDMA7!yB^6>_N}j-{ICWaZ|wlxamn*> zb5k}^{$TojV0<(^XJP^{l3P+;ug5gH7F?DosF#avG!uii;~Z||{8=AnnIDYQ!e8lW z8e97ebOgw_?Sm*12z~$^Cwk(bjZf!FyWd20Ks1O2UKE)UGWHPjPt#(yjB{abIl5RP;W z+<5gFfc*l-w=(&D>EmJO4cwDE$+Xgrv5Z6VvQ@;zKN2RGm&t|t?G-Z-88{kzv6T1j z?~Ev`Ev%P5_QxdK!BYmy=LC<#$~>!&F+l4o000lJP5?dFPYqL>-9h+;mdvv=QA5Rgqk(+TVW9I% z!his5aNBe#_TIXnZ!j{p=zjnF_VKJ~_~lrXZwj(Ol*}{Xa&%LE!XIxEdx36r{aE|u z?CZzRXhuKo(^A3N8PtwfN4y^>sN$MsH(a^e&<`4=KxcuQ68-WQLdPirN?DLMIo}1c zCg~on7o>hUJOHWe{jm%B#WBLq9THkGqJ~}{T#i}KEqm*$I|rmvkuVlTqjgO%D|`t_ zPE14srCew4wz%8q`k{id_&4@$Pm0tanL{K4|1WIJ-^(OaEjnkJ>JQD;-&5$HI_O_# z>Q{0GTxW$<`yayUGFiC>WV$4JDjDT;{b$JmhP)_#Dtyhqq#CW=o)T&IKDkr@&s4c0 z9Cc!iVj=RAE~?pd+{r=+F+xQi^t1<3jycoZ%t9Ne5At}}awVf*K*jgMZt?+RgKbm= z@osP`YzT`S1CueTPoq@*OX--&<9gYShqTVZzNYJ2u1{#XiCN33+XJb535j>g8+Z+k z-R;ty5^V0p`i63Oj|gbT@j;V**n=(t!9822IeZP|8ZJ5E0ZIvk$)vJ5&gohcNu23Eo;bSeR&I6J0?P!=9o)s2 z1`^8yf*Rp06TVHp+-F4snsWr9l{;KJ*ZGlyqL-gr65fTHTISsg0wGg^tXXvH$?yjI zGhniBWg0XJaSnwuBp|01o-|hljQNJLgSneTLXXgTJ?!7nv8s60A7&F15tQKhwsm1K zN8LiE2ccHh1q4kI1!|I+1Y1&{@g2-8#}jb!Z)G~s5}_U);nOVQ^-TryN}SD=v9Dlv zn~yY_3~8Q8F5o5#?}9=vkh&pDkbkX}cC2j?_GyBx^%VRxjwjPMCxGvGn)486z>ok{ zR*7)!63d{w8)`hT(T~Bj11{xJP)<@z7PT8KJM_Y(Y%b9racDRHe;itb#6r{W@Zvv) z(m#z(@KE-@<0S!V1P=QDEX%OJ)x`6H5ec`Za~7eK22Ab1?_(R>`HBKlC>z16GGU(L z!tdX|Gd(_Ez<(K$9ifs`P!-xk?LzKofsLD=pCwOGCtz9rK)U}enGyW%rD%oT7zV{U z!%Z@u#izS6&LBjS9kL?Hj$2GuBuso7i~^NtWap_Q-jNANEVEP2qMP(;Y6Hpj(S4sJ z=4<2VpE>S!pI?p)^oNVQDok7A$1hEhdA1>Aw*r)Eir~JbCL~@{85P}*S$?uLtycVL z^9k|%iEm_mE-^Kw==MYRH{p|g^j3^m%&U0OBOh1CHj^IXfo=ebkfvy?5}|3ewe0O( zs!LGaMbywx*WvtqX#Y@CTEb3G7`6mQf({~Yj(@&}8sC&OX7&pR52@^9+jO~P1l}|{ zp198FkE)~s0p_|G_N@v56^##Y`0)qQnhl@d;*2~69ru%P6gEy4&uuSfSqf?9_~}^z ztF2Y+NJG$vY^4Q~*t^i*OJ^slr!J;<9I%5h9QVdZ$r-_jrU z2w5_Yi2*BJXTK+!;cN0&;DDwF*3_7g(I~cY(i_5G8jwH3Tahqrs$s7wXb$`uX$%uM z6w-tFI2xpefVxY%40S#?Ef&zEE9c`tDRTDZ^sE*~UIcl08U{fN3_R<$$r+UhW?MN2 z(%{Cd^|^xLbDA5w1Qgc0`;UgGZzD~A;_rzH_r5bVJAXdqcJ|&|3r8EEo=hKmJHxBs|i6y`ab>aIaTK_xOok6cR^_JFz)0T~Dw@E7L<4Cb>lO zZt6K_1}JP$w(%2Thu)gFV26IeY%Q|sX`JGJ zv}Bvngg($qcgAW0lNGz9*8PGUVu!i3(|eq(i%A;oHQ@P))U8A3HXckK*L+06PY_{!6yo2~U zs5sn;elj48OSrIL-w^3W8!)W|Ie7=%I&PYEMhR`+Wo)4;eD-{$R8d%eK^kLmhj$3m zXN8#Q??I!M`jD1EM8Cz=9oc2^zaUXE_sDY3N{n}I@5dg$Oj)Xv-G$o?Vn`jVnoa%j zWFNo4xWfujZb(AS4~(wbwlZLk9*%~RA$7@NmQ+y%T@n9D)#}-<$#TCpuz9iAOAMxm zikn#x>`+Rd&V#p~vnWfwYuZPQ@1qPk7fwF(5;wu?jJiRR&Phh|YV8Y%QRs0l{R-?N z!MA?Q=JKF_>)iJSS;kcvd?s9-p%L1@YT0vT;bCyXT?@E%w}t>yiGMsF7b9D%N@g1D zRuBqlip`LJ&pvU3>74UNXtn`s-T3>}5;po|FRV#_^*$alB^0_R3Bz9xe20lX^h4>0 ztZcFRksWW2(LG1Tr;OY|sh;lxZD3++BSLxkkTiYOPV!%n?LDYqGdV1==4*Xc(A2;I zQ<7%RLiDarN$Bv=B^Dx>C;Z9%zc0|OE3Jh<2pD-KA^870#~)m*koz~y@k=NCCoaVQ z$rl{UYdau>z^a9xN7Py%w}42!I9dfMJd!+laK3Xwx5))6ybn~0_;PTr6kniU zUi>McWnScF35K3PYXVGp!oi4&+hV$1#Hj^!njkhuQ~F}J4}!T2RKjkT9q{i4VrfN- zq~tLtd1#&c*zgUEe4D(>QYYKDzT9Uj4Y-`B2Qama}@OTAE@hNYQ;texTQ z%2dF#x{}2J>Ski@=79T&qILwhf*)`veuE`!(>M@y4lgAKRbg1J{8Bs#U|yH?;A`9n5bQt!SGC1d=lNO*^sU@X0)M;G6;ty4}N59Nn}pPW9VgLC?*x7G7%~F0F7mZh8sbMHT4H1jtY-ZqtObi1rcA zus;rzo@UTr;JhS$jg~yBA1}fp^^oJ8v{-VfXK8TyV~{KnOym&?N_K(YAA!OGr7+{z zYKi3we%w7abw8&A1PHh5(*qFwl-R8#wu$0236mILs zATa1PwNuf{31rBdwOMCHiA^$TPzyl&H47+RK3d24LqDaq9iCNTgHE!u;UH8jKA~b= z3*xVOrYT>F#U#2?tYOdFg$kMnsNJ6qm?`V`{H?l<{%C}k7b zfBS~F@dfH8@=#z%ElBR7xA;E1H$@HTH}FG95j4W1hmP6w2(E50CC5fHLuwM~+^v+_ zBMZ6uWDb@qcGk;Z%NSO84m~JGA6xg;{Cc{zVc+$+A)!YG`{l{jbFpRsF#UYK2T0GN zi2k^KzD6^y4pc5bTv`eXPe7!M?I&4Z1$62pGdIz_U`+q{zV5i_;mQ;Mr3CWsxr$49 zRf6-%!b|^*z(@G5{jYJ9D7w} z^(o2O4&eg&BD0WY&y5+iJb(Px%xwxD1+CY*5`A#!7DTWkJ%OIe?6rOHfN^7dA5zM^ zB-!DnWRpk-CPQX|I=}Sg2YiG}8j~azryY#~dF~*}H3r3T#$NJMi!z3h{XhC61+cXS z0>a)Eh?Ja=kexw@2cmyr$9^FXQhOM&|!KUou~C(*a=GR< zHanjY5y<7$PQO(6`aq5kZrCaS+4k1~j#MX`Ke3N@E(4wHMwr$evD_MIdREleDo8N> z2CMJBH#ZVenPq{FA>_-`GuF$Xn&HUj3f{p5G20i?R_W)Mnu9Mfg_-Ih^(a9QB zpEp(DrkrY7iD@ZIiH6&6-IcLEeg~H-JlgJa*?&6jf1|g*-wSSBP<^|B@b{tC?w6oL z3igpY`DKm%bquK6IVIUWJb?#yA>>L25Q2_P<~~r9`26P-sMfp@cxM(_HzAdhuv1D? z@gio2;8ZosqF<@;>xeKX`3bUr+Bn54DR`tTmib?huYZI^uOq~X6u&f4dN1vz4B}&J zl2wuvoXnC?!inYxh!s}X+QjB-Miaa4e9-yWkFMWVyA({F{j$xL-o3-~UHZNoQ`7T$ zyw)zkn#g)95nmQT ze|$rM7u!b_px{hdmr||i8aoHIOr7HfcF@w@=36%Bv*1waf%~d9FYjdTBv_nQ*&~ z2+7C~(z($Gvsh3SRo{FoN<3xRiQLI-#L)NsZ3zAq1dnO9_+oy2;cC>Jo|QarIX%Ftl|uF95!n)8O<)#(TZ}a$&J?xm#35#aN^R6Cmt-Nz z^`juzlZ}((r?S9zdjp!g5(HosM&z06;I?T6e=Z?)9xVs;dZ3#`@u?1Q&??m{lYOA} zCp5#`z00wU{rqx9{er)Urz$=hP6TZy%XBdDfaZ;T8u&$<%s#m+riUrF*!Agw=AzcyHK$m#l|8zi zM8TN*N<>Li!o~1_*T$sr{z~LS(7>)p?NQD?55N$R>4MF4$@}t*bAk-@Xc{Om9g+8U2yJ!H?hEH?| z&%a|+mq~<7Ba9xH#1tGB!ac1NnU!r6Rm<$nb*(Dfs zDq}MIdQgpeq+)QQmL=!*iV%GYq~gvSj4YHuqqY@)N7g!SPLUVs#<^!yZ8{}iL%Mz9 zj?fa?Bg05prB4APRGcLA6HX@GEjb2#t1RSA=ZJ&6#V4y`6`sc&-(8{-vzjpJnk>!T}o}raW0cqJ6t$(lw2-R{+g>p z`KkF3tA7#|iiGhK3)|$plw^&C7;=kQbUf|7B-waMZgl`=vXv6?g_;WbOH3ch6MlBw z6|*V-sX4J0!KXy)xpPZbCW;^@zkrH=CEi`o%NtNg2l&*^g`qo6mPV-{y)=$E1dzNS zDw8Vrr8>BJa;%7$HsR{ixauZI2nb z+1HKL!bOzW#~_m8&ZSQ)G%6*2Kf>hJjAuj%;lpMLNPPUl`#pD=e4mLQox5@?&0=ix z_X}EG4gki?zDZm+`Y~G1{isNZcis}NgqSIF)ts{vP<1s5pW}~p>jTN`z;mBTn8E6K z5Ao1}2RduX;DVi+@))@N-T)J?!|mbgEzf@A{u*me)-P75Q#TU1ztS9h>QTs<$S|Lh z#7-j(_sz4zA90N7S~>X8+bz1h?kws{%PeF1$b7qe@Wpp}FJuC`gZOedVD|Sn5K$01 zBm4v!hw+a=8Ua{C=(Z14yh%V0L?N}RmZa#FJqfm{lU3z`6h`3db1@LL&tbU% z;JAYkOm8Q>A+1@{U0m}d1%^70Pea`IQu*;AB>y{{8k8aZt(w^Sm3#a23Iuol);Pi+ z0e>WX{Q|z>0U^N*9J05T{r@BUhiUf$KE5D-&H`{ayoU+x*QXcnEKUSL16H8=A9hhW z&t_rS#5}{4CE(jO_$4$2Qq2ig`BPx?)#isfyongrE-t7APmhYarmq1O{#u2fzTlaA z7qUd+_(qkqoUv#91=+a!Od)19bQuk4`tPlz_+A^qR2E$NF@@-Ng8!2UNml!uI=wM# z;UfsDNn3mv;{B1kr0c)3NwxF`z8dHx2D@}AN3ngp}FM@c$2$$`l-3TmKBvV|n zyGd|IlHN4zP`}SQ8{jz#KOc9Gms-e{nTJvdR0soqEfp zrv9~8Rme7L34zkh*dWiXp2#R=DpBD7$%fc0sA zDOYruipi!cyg+MGi)=zeGYExCs_9#e~GxXpT5-9 zG;KDm6Tl0$!v6kEcj$5ZCEfBxiO|5b;vPauDNf1Kntlr0vodY?83OTi^I4cxB`PbivzWC zThE@*u_mu!4_amF&3X{O*@tK?Pu|exTI2^|3-y=s-fX9|i%ijv1dMnC+{AWIH969l z*LfuZbP|h_KXeU=+O?XM5=;IM&fYto>i_@$KSuU;$liNoWRr31JuACHLS~_??47;I zCcA8vQw<=oGG+-}#K%IB%8-vg!t z?xO93tXXUk^i}g`CiNR(eh$Vh>~5{V2uP5lP3Ab<({b`0q?)<|{;p`kX9yD?BOWIO zV%FdZ_tc4=i$bqS0KFcxKzW0qse~_vrc*PGzqK!*IbRj$r1Y_0w7@;iuzd9!DdJ%= zf#Y%1MOWJLlH~$`F)`-d&w#D$?C;GDAPst zm_1~BKdv_<55xOwdHugBx`v{6eklPvFiHXaf27X;;EJG0KdB;y*>?Y@^(JfQfk9=oF-uQL7u15Y6WDMv} zkkLlBgMTF%7+1R~P@?bzI&&LDCk;_RN(<0~h>zH?&O0wwsTKSkODQRi@#Xs#Oi#D< zaV4CDEDuJdUmog5Zjt%B4=FGazS{&reaxXU2KoXIikYcfF3&SIus?lr1K)bb1W<{K zYT|lfOrLiz2vL{z#qO8WFzW}n1C6VrT0uKKWI{O!|w+YBB;vwjBf zMX*g61zUr~-92#zcOX-Vffn{_H3-$lU~`Z9pF{e)lE-;PXb6~dg<(|sWk#krcu}YF zi$brpjBrUQ;CssNSb8RuU3NFuU5QM)Ygw(F+B|kHrAcX1ow+CEtD@Uiu(#Mp)|pR5 z7(`K0@O!iv`?xyA8c;GuP{e{d<$$GRPBRAy-*J0{EK+{c3Du~`hO9rOOO*yb3gDc&FIkj}6X+(O zG*@k{ybV~1YRunV4xwU`v!n%9L#_JcZ_vI%}5>6vK z($9#Hgx>*JtPKC#`0m%GB-_xDm`ueucX;FU!=lhyU*NC!vfhZ)7rt{0ofOsTGzoT} z{^U|3C1q1lT^OjxUcC^!%G1gM-t=T~Kh+up2yf9&Z1Y)>Wa*Wp$PHUl53J133;2I; zF$#!DQRlgazc~B<{aE*R$rw!)`X!G^vEZV)h5Qd+2DIeA4?O|&(LgaSoTY55`Fd+H z325|Liw$lISW$_zf?>3&rU(Cd5tkAnO$meP^bQ-)d>bIr0qP`}j{*_5fkvmW%0Wr3 zuSEy@i3GIBEbwgGb=lcKxuPLZAry**N^j=jm$oXwws=*5#W(3y#%KNG5AkHk0;!ad zE~eS`HappRiaZ}(Z)LI_VNzsxFT5PofNEca72T(5LY0n=vbR6%oMaplIi-M3`&WjA zKz{YEzS!DW{2Kd{u9ukTW-rUigv(rS+1dphUKvK>O_6@Seorn%ctx>J4(rUWebZYk zhimF_VK@*S_T(iX0SMGv?-Q+&U_`vety6|*?d+7T+@J1GIaWV4(-Ol8cwyi0<-*G+ zUpN`nMO(g@$JE{@N|QA+Xe1Udmb4%C1 zvyy?U@oyNZqR8%Ho+g}ni3itWJ}6Kg_j*8Sm{x8>yjK~T7WTEpt6QaHAPmXgPxMPK zo7WR8qEY7crI?az?UL+=zhPCS$)aMG?u}O%0aqA6h#Z_|N2kE6iO6_dHJWjjOC^tO z12h&8#6S(wnd&8T-J=0{nSekHGUGsSWC&4HG0wPvl(8gtgr<&8eY-8c*Sr?K8vn~N zE}a>pD=d+O@6?!)VavOyxSEB0&o{D2P$;6p?A8v9hcK@{=4t=H_AEO8;Co9ixg|X_ znlTI}2nVlvN!BRW!^U8yJ!ooD0S%1mEQP)WNr9|+}MoXE$!ZW0FJmXgj)67)wvCuH;=U(CsytWn9 z13_C->zHhE!abupOfZn3gmrgqqQT+cJ(%iA1Bi_>aJ;xycz^_DZsu?Y|6V#dmWQK` zQDPOJU+0G@41`LlRmeZ{#aw-GIk6xvNRYwxm&~YZN%MEwqg>$gc-M=kjrnD*Z-0`O zCB}3DHpiDWaee0FDWH{o?%i*Uzgl+yE;Y;Bc~yOb+G<9?~uV{>3erCMKn0v}Gf@&=EAAp79`SaOq+Q`B8h{FPqm-8J; zcGLB7V3^jIh*iH;RYOryHm_*`3-wJsrq04hGmTp zJaj1RWXZct$aWlroZ>zyccu=HFM)q-~2n3(R;e#;P z+#rJExd3pvygt|_pIYc&m}!`6rq4lO>cjPYlHFPBGPbe%m9?WiEiyC^A}n%|mjJ<8 zz~{}UuU;>bGEEK!=%!a8XVxbUi#tGb2sjQPbiw;gx0H0jN0`E!l6q->@~6^4iG!h; zx;~SJjjb3brNzeD%V&o5J_Br}%7Xn#8sByu?ipN}9_Zfi9l8{4c^|tm@zPX6lA{sM zSAHIwJDZ5hO1XjY@ut1Kx@@_fnUo0YpIHIdt)CZs69&%h(S&=(w0DMY*h+#tUm)sh zVST+-JWwDtE&^oq{ws~i%`dkK`VD($ zkqH^wt_1-%L5|Lt?9Z`n5PCJy$3QtZR-z@>G44}}NZQBM7NJA%+SG5sK;AbM{_~;nK@i8+mespz&rf9N&^Z|mQ8PjB*Sjx7@eOevg2E5~z5j~eB zNfnx6)hqkpT}mq0P}2479I%0RE~$I zs^eWwv9VE9K0UWdr|G4^`QL9V|I^lk0>BwY|L=>}KP?JailD|G6p}?$68UML)Eb;u z{;{07qqMyx7F?J#&>~{!nUT2jw!Y8Zld_NQX`nRNfnWskvD83U(Z73>q%7=5PWQ+U z=4iBvnu-mp);=Tm}n_Gy=sOjoz=R>_;lux=YYMR~}9W}@-B611dkVQH!u`G}I8l*{GI91g?C~kJ@<_I&g$}o}Qd|`O(nkF(gV^pSaZSzyX^y~0Oo&_$=N2N`(cv9<%-yHD9os)Ls%2O~pUmq8`eKpUdlLc5UZ6cpf z;lxoYdH~L1A0N#}a*ct8tYw@sLjdS=7r}}(?5r1vCJGSAFa#bh0gGWNZSU6XCf7Ec zOI@}i zM)CHgdkSF=yL5vCh;1|3E9W=t>~(nryxnsJb!NVb`F;Y&2t9*eFxToePBitP{jS* znjkBnp*ZsV45xn=ZXC-$_dIWgi?DiJQgQ%scj_2d5dj2g6bRz8 zT?&hkAYib!q+_01uH#gHz{sBnU0B|c@>!e~o7Ll{V}`w_8*;F+_u;Kp z65q*BZ!Z+XHo3`D!4JrHs8h-Sx!9*E9F}`gPn|fyM%Cewj*Bj5Hpi{gm-{6b@n<%Qz-qv|9-JAB_SMFQN@`ORg_kw33 z-v&Pny6#^|+`P)`nA$vV#PcCyV7UAHp^5akbA7dd#`OVtSBozsNB2ZY;(bnXk{IM7 z*`m@{OpxW_b0UiFW%P9Stq@;n*P&Bv^mAZo1JOo6w73a05{nPCC+vj*tf3L?ORQeE zdOJX&mg=}OC!l#?k&6T8821Lv@|5>P?+JodA}7%}BT4xpTNAB0XEnpebW5Inv44>^ zOPJ9#`^e9zS%JrQ)kU)O(CW?F$6e801>4xjq`F?=<`W%xDu#I zXGSO7yu-tnF3!WCbcNB^BdEK8Idzl$>|m_J9*MXW!=;#gJQO?7RTLZ79Js!exvm}) zw*0x0&N%kQvH`soban?cMl%5iG%;NS{?*Tk;pdlb3#!TgKi^{hSa1HOwTR|Mp{hUu zAVkXJ-+C!RwjxyzGh=K(RS$WyA~$h6j&b5%<~!GB^HSI8*Pr4#)37*C{|uRwx!%{x zqe?I|bCjoJGhL-{_3}TA7u4-Xj|x2^lc4%AB6G)}CwXeJ(Azp+x%wKOA}2b2y>!tV z%KRE6Z_!Y%W{C#Iy$;VL{-y&ZT(u>;M;Mtn12dLf*{iF0E~^q1N^WCONhObfR5PM~ zI~Zdlr6t_E&gJTZ&>(Z?GJglnDAK@h$qS%6@OS@!weNz9G+5Yjy#8E0pyA!V)CF{E zBs>ZP8iInSwVXWQe6=fe;S4XieA?Lp{qlDeF3l(V>dk1wW1I(skxfJosfiO3Yu|Sz>ksP>TxvkJknp*wT^h=KjI@LM?j+rYC5q2g8H?^6+h zN6gQG-U`6IKBo*H_udc((VZ=XZ=`UgCoA<5L}UqJ2}RKy{;Ql8tw`Z(6~IlD%;s&G zNamy#Klx4r_z$AQbL{54O0#>!R2T-j3x==XVhbZngfAs3t;CS50bshz5%K8_U2neo z>LhuV#}Mc-kni>O_v-oq0Xy!Se5aJyRP{T+KRb_)uQmKLDCNOmmp-{m6m4!jZ|$SH zajrP1 zTwCS>Q@DoYAi{xIM zNj^8Nj4b6eMb_ed(0qWy&~pKDou1D1xyK@%-ox>BVA?9cT$l#b3IIa`1lOV^R;o?i z4{y*GC;1}Xu!>GIR)~C4l_o6?fF#S2ks`VtLPPT1pk3Pvb4umoFCS&OO)9Wn!gGj~ zBzfDp>NgC#89Md)ZGfOe%3oLX+GX@&X>hRaQD6**sh2ce1~gs(yHOmAW8C7NlN|A- zyLAn2j@EsWpsSwcG+105J+J@k#*idOE-xaE(*Q(_gs&PkGlsEOhxCIlti^sNs z#67J~^VC{zo{8PHT>0VK?qtb>*yG4iFyPw`8D60O28~N>2|%F}-_clO-gPD#xV{Ye z*@uC#Zyby*A>kIK>cqcckb*igiFmyB!u?0Xs*bG_IHIkpIfOqhired*MRg}LRU0tR1 zB3M||o<EB-+hsbf5%K(UjsOLeYs{J4x#X)y$TjVWmgyOfy7WO-tL#Xue_##ziGxe<0!;&~AD(&ugv?w!Z zf*r0Zanuw6sV{wd$FM|kss+37f)3_<%|@N{{iJ!z1{0HO8|^=q%qohmc12RX9ZvpW zDvRU%WC$U4#787#KL^cHyi<7B`{dpW>q;^8nFt0CWTFKR2*nEx@W1su;=cI{4M1%c zPVRg5b?Sz8Y-@VQqfNon0)A+#1-?H&C1LbnBDA$~jn73P+^W8)rLpM3`5xuQpYUJW zfsAJJ_FFPmECo!fBX%J zcL0HR_*rafF*9=Ly+@0*Dm-DmX-FRK*ec=~%eA@-_!@SAQwhcz!B~K!EMKl72nHcL zc6Vs>VvAhyCzzTSF$(w-w7zQ9l8Pzm!XcB^jhzoD95h3N=yxQ3*Vs0WO{+=Y^FWVb zT;-agczIXpxYB>x8ok(9@HvEuMJ3i}3i$^54MKLH6?0j25>t8>vEmq?7;V(gQQs?{ z+ks2OC>VfnAy5xUNCtpwUVepCOy%NdtESphA9hY{)p~=+bJ)J5$L+5_&BJXsFX#&S z#i^xOg+pYD0BMS(VZgy0W|}Z_m@oP^mLM&J20;=bNjBIA2Y(|_ly9yTEm}0r~4gl*oHp=_36bLeGI}6Jz^2X$KYJ z#tnblAdepr#6ed5w8pc`9o-Y5y9`&-rzY#sub$Q^X?(JR)F<2IAx0k3m;PDNqMhf5 zoYVR*@H+3fceQ1i8z;8r%JGy zc&N#uXg{F%=4V>-nbA!&ghXb}l0;@W?uaM@&8DCJu8J?c>W|imv_k|L(|S)4*grpq zJHxVw-c#Nylp;K(2xw!5{Wi89Qh#UezzJAoRtz{K|> zqG=*ixB@-H2_a7)qiougG8ZU$CB(Mdo@@zMuQOvv*wF4nH9twf_f*)m8=!yDf4i3t z`j=;5jQZx_C?mxd`6=wO8IsHAmZ8_m5M=Twc?!}4*YCQw*p}#DC2aPeXJ@IYmGF*T z#U+RCKw=DBi@SOeU*T*Tf`imd@sZ;Jcds1qmLzwV_|Y{63~aggZ@le%sjYq?LL z=BRacyL9X;CI8WNp4tr{XH&qLUZ|GnEb%scw6~BrG#O<%UTj`5f0S1{?LaXpJy}G% zCIM0J8+WId@@_4n_yWN#=jGH_W@PGFicPJ3_=v-vDL8f=s5X|^n%_pU&-2SZ)UfFI z@dWd%fa$4ntI!DrDLqc!o3UR2n;d(NJQgZVmc<$wY(vNbNudVrvRcNvHrB6cXU7dJ zfiSN0)<@uW#6dp*BrJu%{9Ny5qB4+qU9P&&ezhd&Q+9X=#wZN-hL>Q|xv1$Df6`ouo1)1|=o>YCsdlqN&;+4(3>NuG(8)(%pvg1~17fFVH`r!ON|CZ;anUkW+PJLf<= zdm(3a0K4OtoQa^;{4H_;Q9vZ@HqX>LQtU4A_y2}bCDTSer)=@b-BD(scLVDQN!7+^fMq z@4JnX9?dBlq~8~X14Z@p#~OE%EA_OJGLe3xGP335ERXZq5!f8Qt%2p6=;4EitPnll`i(^%iE% zRWK$Xk^krP^eq72XD!G){6+x2_0Ru7>iQpQxIdBWR7=uBeECsaxBSYX^5ZG!4c4_6 zh87;knew+z7W%_DO!@pPT!NQiQ$E83Z*#a<&o3lwc9i%8kE_0n2Qmil52^ai{UeN# zSJi}qaPtbhszJ#W5G9=19s$Imr636C+0cAkKqY)q)^pN%yHR!@rMyR>8#*2RK(+vo z`F$$1e3k_SbDkUOdYAhS^px(kd{qxx6q>#_3T?FQ0MvZ2a(WSjwGcsMURVb}VE zM|>fE6+j7%h=NHA3*EL~+{y2NjAWJi%oa7z?M!40IMgz`Izna{ zH=gxUGM?rnGy8yN98ybW_W?vAAi0Zrbg5&S&(rzZF}y9ShN)eIlsW8t{5Px})dHzC zM;^RzNK&e_#{D${5GbJY8IwmTUAW);DhP8>B^cIJwB<%J$i)y2PG!(4Py@pZ--#(H zTjjj?Z2(%LGRL zl)JyoJ@Z~K6<#ro@N?0TUmJ`GehcDjV%{|y+^R#cZ8~XxiNSp5=WsPuqTs#Tcd&6$ z+3PCAIjK-<*DbDSe&~lqItE4<=C?MR`QX6(qncrg4K49N7Sk{EFYM=iXu&fjQNrd{ z5PzULnN439BPeY&QXYKI8)Rv6>1yBpJS*7();Ymrm`cpAo*E@{oOy1q-a+yoTrk9j zb{A@d9xfHBq=JzBk-+gO=&@m_$Ex0lP1PO3Zn-P=0Fyi-Hdr(2 zwGUhocjqVs5H|vvv}nQoyABwH)bG}Ry|L4IP?YWxlqUg)*AWWVw(j3^X<^K#iH?>t z`oxYN(p!CMmsa9n@};R0;eG!clc*juus5*?oRvjcpHD#!7jS(pg|^PNiKsJG(PSyr zv~zv%9l&zuM2Yf2Lo!PA#+S)Ms6g!*;P0~ieeaHq6$Kz(_tuUMG=ztivvFd8Bt?4! zHK|-~RU6s*4|fN4SEffZjHC(#-Zy^rp1bMZ^BBEyrc9*n9Fl5rHzvw8Ay#;VWJbvy z2!3NSuGm4PwgmWNhgk{1FN%zNe-PZwkgMl?mkMAWLE~TW6}1*z<|QDm5p~jtsGpdv zv+5tcM}`bC&Z1=g*BTjgEf@VqKK!YSRS?0;8;RA^Gy2XgNLtc22!ap0-o(Vw!5oET%|r>$<}l{@VxziB0s-E-9Bd0);FP@47%?*#Co{4vatsulV$ouz$nsFj59E zjiIAbUcXf*SPPEg&s`e=O^^ub*n@9FbJ^>t_T?hr9#y{MZ1fwFG4~#^KitQxz2_-TwoZ0n{eY??`H^r;c)S<`_p4`+#T*cop!4>3 zlILKrOvdrT^4Jz^L{5ef$u2S@ZjyjLNbBh?rbxW*dcYmF9!5UAzWECXY@(_2@eFKy zZg9;BbMUU@Sh+1|fNwGCJh>(5ekV`Y-2w@bu-%@d1m`#P1qVbDcekM-I}H^%nOaXnDunl+LM>iuuyn zdaaIl_J6cQTOO#d0Xp%cs5W*^OsixKf;qH}H%N+kvG#^T-)sbtwgCAk!_Skv9shEs zgzm2Qn`dQLd@p^jh*jU}IFQn$v-s+ySMDqP=!nc9Z^d!kDphA~Fp-|*f!ADG!?9$M z)+vXu5W&-SebNbxlRRq4E8*LsYB+RnMjfQAcR5G(2`GAufx>I7csGl2sQ8S8JH=Cr zzeW2FhRe^++d_`#<=3lj2X}}*vj>)e^+aVZAW_#tjd+IUpU%KpeghTS)4$gM+;|5N znqnPgIvUopffm|8=~tl6xC@j)kW6^E&o%FQ3LWpv_xbOLd=eWK()H0c?lCmp?7h_e zqJ67E%uY7vSlXT?(}1KU(3K4%CPl&VN)3>!$T=9RSilJmY|P!kRiBq>n3X7!O&Y3M zV1~S(c58nqi?89zgRRIKTlE5uE9n%GH3cO9;T}>Uo*N#KhD+p#3H@!k_UQK0JE1_yD}5$rbJQ`I?uXrrau z1ch^mlQc>Y`BxOt=3m#d?JKvtMgAP|Q3j!C1)=&6L-gyH;RL1_;sXj-F_$8^w zD&hy_GmV>#Y3?KGjzUj`8X2csv8|`s`!@}gYAQ?OrH1bvet1X09SIZgfRk78&a&Z? zwV=x_+CcO9B5eqfX>&Lt2I>k?JngiTojR>Y!GxtOiyV2Z%u<^w+y-*hB zZupGO{g!(iWKXX&71}Q)V`L}U23s?$6|v6ccam=Z&?yK{ulzK%ayU|HSj3@Lsk2W$ z$dw3}Q3p3iL8kEZ(I^MUuC5wL*tyxFWxb-XQrEW^w0&GJOw&Pxbdwpa z-VOA(-oL(ZH?HaKK0HHYHK(mR1|5bhdezMHX`6kCmiXjF7}4P`#DXcgn75ufom1t@ zXrVc~DAq7Hd2~LuQ74WsF9J7@VoGu&-6bpSn26&84%JBnFt2%>ME!=nDa>n^-N4=0 zj2;`}piPrXkvIk7ma0SBo};9Ocibv|r`{Q9 zFV9agOZ?-X!?!vg0pZkWA^t}oNW_+1dQwWzva@eD=NEW3^pg?OPyg+;V8ySma8GoW zJghgux)U{SAn6M^qsVb5>4EmE-+Q3;3 zj9{QnsY6bGCmVM+u)Ct*d}vJXdBmfaOo{k~;B#Zad-q*K+pHE>VfDH?7&871xcLW) zb79{@DfQrF;e6l)b`d882#kLyj9M+(r9ejWM>Pj=ApaB}DF53K&#Urd?B5rz~$z( zAV>cne>xZ*G2|hH!-Brb0Yo(A)r;7pb#kk4!3pud^N>PH7y5v1_;t)-BNr?v$R+qM z&$GDV8@Mz399~Lb*vR+`6O6}KhBI_MYe~`4ZS1h;b>OcTGgU1+V)yZrP)(Znt?RtL z#4YHKH>M9uwYu;Pgm(`SW~ua0=d+fVGCQoba59vW6lSz@a2EjQ*^y==j-{%e`ZEfo zSe5VO4P;Oy1|z&HUG5aCVZd_$-sS+=kOQTUAbnR;WLAuO|uqsVoyk~ z_FvlRo=U!)fhUVoV1V?PCz+!kpD?Jz@cOg15$n9$Kp7mY ziXso>%`qe8g9QLb1QnbDdJux(Poar!Z`UybLV}bQxsb^p^IcM+1r^j%`@5syLe<8f zQPB)Pym%Ja{qqmutp83*8y{T+4g(Pr1}>Dj0d!S%1mxZZe@d%D(S|TmPx@<>Bs!ojswMYZVGt_}T^{&qfe4qXlB#DhboK ze>$Es?DLXX&t-^cGGnijGbidMv#4*>GVFd`V~)Fp+nD?E)K?C`PcC7ZK4#zO6va!e zHsxjy!X}TxKgrK~V7V6f@y*La1CpFx{k|_?J-I^OLrC258u9&GxtULuR<$?@O+vfq zzu1`G!14%@wU*K&Glt0V*eUT?_>CK!65bMSmG^J}Z!X%$P5&MFGuu4#A8b*zTp!0W zY_ykBIev{q3JV#4OT3yHM*&N>Gdp!kR z-urSdsdXfY(Ybu0!wi!a@pYqku!H!kVE|5jDX0lRLP|I&;2X$$|9XCmB zSE!C70F?=jIy3!qQimQg#2-x2d_3Gv^4g-T*7b_qE^6F?g!?s7H0?^TUctA62RCi~ zD9=k7w|>KJ#Nnk+sR0w@G`Rjb5*g537Vu#-YM)%wJTAU1YZS^y^uYvdgbUFcElpzu z{U9UM#ePQ*i|eBJ%t8`CN282CFt2)iD5aryKuIur=>QG(;c>yGI9}1;Fnx_W@%>>% zU-zo7om_G3KvPWfG+S&f86Lo{g*N_NslEVSouj{$aEtZ;e8p!YUb|4)lBbwG&IjF7 ze!qk;*!i>&A-}3C{q1O~SMlTjfbcs8oP_two=x@IMzLFkuYy=`$uP+RG9KhB1vp0N zC5Wn%Cjm0;@mfv(+dUPXFGKM)4}o96T;~|vyCrM}q*M1o4Ei3x&f1?u zaXt7RJo~e3HP+%|QF*|(xQzrdS3^AYHR_H^FtK33jhLeEPH?Swt_*&f<9TFqz0YfO z((4Hj=nMtO%FQbI&j9u#&3o<2b9l5JoBO*D;Hv!vqp5$=SHJ1eO_oxH->}YlvhWtA z{L*BR^OtiqdrpL3W9Uadg$qPQ3i}e$4uWqTOhiH;kQ_8BhVIWktI>X~qNW$909z8& zRP#q~V-=W*gqEw zc5+LbsUNoxk+<0X$z~&InJulAu_FnSF}!d%z)?VkTi2P9`SD(Vfpv)*hZb=T6~xYEf3RO!se?^>_u(j{)ni`YhB_30Hr_ z;W&p_?Ds6Mux(f`3T_>^Y%Vj84*tmN)5QSRbWm9tbo^7ON!45k464G(29$rp0?W1v zmrB|UX5@J5z6F|bijE(@Xc`j|bNW>oT5E6PjM=kAUnEYFAUC<<7^Va_*IPcN;C&q4 zSzo_rmUAQxbLNULVCa`5OjL4av487TwG6ULvke@F72!$HdKok;vinKYvIn3~F%}Bn z$OCYOn_B2rLydaT&(MR4+VR7xCNbY1{9l?2EP=F*en*|G zAmOl@B!>tYr3#`>*P8ayNWk+#28^7SA{ETl4+T&3{)-_~ze%?R8fKo5sHY7NK$UYC z;D#?IH);*sbTm%+4gYmWWjx}`lA`vlS2}`)X{_~qLGVXZMF1-lMzjmTud$gFxM1hk z?`nTQd6B|&zI-8X4ci+47pF)(S7g#0=sOJHo7x|~DylzS^fD8v))c;U4C2)HX?1D1 zy;F1SW_ z0kxme;BOeK#rIvhmXRhw$0usC-4B8&Ea}&S={0DY)!05c^MWnL)!U@iOpm#0@$*6| z<-QQ&E~lwaMoL9}@?nuCH@u5Srk)*GmK{0nswyupA*vPMWIilRviF$#61=yz8IUi6 z?&Z~!U~4~Az+brL8 zqxSFU`(GW>2{ZR%@CcCWi%IlbnXhgr@GC@PichF%n-twpurJYWeq#kK(m zG!gYWvy!TF+^PBGLeAXKSvF?>Q>w$g$RwhuOADFTuQ%7eJyoXWQc60~yITSjWIGGL zI!n50VqcxJ-7NC9XAXCH8fN2{%a+7F`ds$aGtmrx*Xru zLu*~MKjAdsd56h_x-|&UE)c>&UH-uAa5{__Hgj4>Ag|0ANwOWdXpfS22;GQE3ZdD2 zv5K|v<}z=kpImuJ;+g=Qn#3n`-SXOpBJ<|zVq%h!R|2RpO2^vSflMd{O9fN5`Q6L@ z5mC;!Ej8_U5H`m4!Nib ze!5;H(Uq`0j1OiJy{reXc9_GMN~9X_dB^K+~Tzb<#}{KH&~r%4#H$3EN8i_w^Dj-;W+7ZQQ~v z+Tu~H;_7iw=uw~4ZPrB^uwpHRYEBWyC8bI+WcfovKV>>Vq`xXnM98eNZ$-m;j+&W?Vk z2>3DpF?qv&x)CgQp#R{tYuKsycc1kqcrRb;nw{$}Xh{z3rgrF-6+j|3P)c_|q4x~X zB1tI#4PBv@6JDsc{yyR+4{7c6V$#~3U!+I_-q}gV@WYCCVXA3zhoGc zDaf1aWOmHuUmny=PVYIa`oyBnmhqxzhSg?8=gaVnag!=ddV(*V(H9wV|6RoZ+xPsz zqL=XL{9l*$5ayk~y1yBuo3Dzzx>nn8mUSk#qw|A&XO+huhrjub{W6g&=E~rU^V$Hob*Teq>1}U`VW2*`-NjgineF*J534i( zfe}jy8B-Ys8r#?#rgVn#vj1`}|7V{JcF23`^w2_u!_{w{Ej}+`4J69y1-}4=07aDJ zu>3Uo7s;_P6o01y`uM*_KoRm}^o@ne)Fu}ny?1pNm#QPER6@6M)Q%|~0;=+`{&U6u zHdjUE(_M=NC;f8px97#KlQxaFomKXWjYP~R6}Rc+`T z6?DGl!1DC69-4M~hb_r(*e5%JFz4F7xo{58l-v0qEW>BHF~eJ_dk=%xUJiGC&J@PB z1yyun`C@Bspa?)3TW<1v{+kHnWdRCW_mi@>@~s=tBUDJGFUT3dp+VlI##Zsof5k?+ z_*m~Y-m{LFsi5&LDMMZ(wu)E<wfWo^n>L=D27A215JTO(*IF|IQL58U$D|MEC~_tp)+E?D6lp#=z+;^o%RivI#>SkiLCaqlBd_v&K3fiY)=y_%`BRLj}dJ{nbIyOiypQ55`1XEZWa! zWgYNaHwdsZ;}}-`59%4PYk33?X_#wNoQtvVwp@y1k{ct{!1pEpQIO$FlKzaIP{?PU zEL&D!3YnKR6@2RR(Bww7yesVJOna&P^R+kZUrwD*_X*X!x;zNJ6& zjl{Q~&Q?bseS7;!{-OFOIo^`5aJhA^Yb6!lcM@LgF2&bg+aUaqgYg@tyAbtB3|T-> z4-g{2qL+M!fd|Cb!`U8XX1&|l1=LG~w74wT=g{+LI5L?lks=M>sG{FsRF3b}Qra@6 zO)W!{Y}nE7`AU8WN_76mr7(q+?5i3i4{sl}VoKrkD93`0FB%s!{NRP8*HO?1(F_czB7yiDu$9 z7#L&M*={~;(q{T}s~k8eq+UZ?lYe?Je3x86Y52!K`d5qs-8}Z(f9=B1d#S)l3i4<| zn_IAo{wvf|jo8JZv2wv>EYBpS6g7pt!}(+8bmwr&mvVw46c+Eyw)nsIcOTZcll#*sUN-Azm8wVN zS+PmL()?WIjcJ~M)yEeS>^o_$FCH$b=`D~~pHXDq^b%2OPa~*Og%4H5$=uZZ7P=;G zTM*>Lx0sqg9_V@RM-_fk1IgUYmPdYHEa<)sRSsZbJ^HTwM}%z{dAt-rnlWff*2Q{_ z`w9=nqi*I)P~}3iPGmpR`{Ax6qGlMz-C0GHs@Vf%wjta_Ht%#s*?jDR6!ns>sy#eV zztj>Ve05okJ$siTQ!7VAoh77DB&0Dir&*jF1Sf@YsU=5rn3R&EA<#TbN#tYu$oi?~ zGD8BW$k7+u&8MTNHB_%-Dyg1>`%~d&*z+bwFFyFB;>lB^g|*^v@jC|&;R!ZI>B_JV zAJVHw`Cgretre_k-HGVeA9+T)Z-;68%IufX#Rj*^#GO^AB2l?53is2?(tkbTxaAVl~LLYo(+)FBgS; zcPXrQwo`v-TUUx!Z}-D%gfcg!l=-pCR2cPAog&UyQUX^ghHwLp8|y~)NG8?2sMivv z@B;n;N>(9=hyk?5P=GKH7~=7#5A*bhfg@WP9V-OFH=%fxPvvCx*3mSXlLj3>^bH6X zhO|OnAn^C^oD;*)P-ySN+<@bZA#z|1LEzA?n;O4odi^YSgBem zxjX3A!G>y^?iQr^27B;}LIoM&vFfr5cY4xrt6j=Nr}Wf&sE&GZtc)v1nl+;Iu7LvJ*P?-w*8 zj#Q8B(u8fPiQllc->|qv!#C%6;0w%Ld$g%R4gOiaP4U+2T!Qw_QEZaf_Bb$k>RqF= zCz$*g8!;WYi1|u1Cv~7vw#T_qowV?t=J-Q1q3FU+uAZ+d2uGdtijaBFCtQ~v)+n)Q z3XC9+^Q1Rz<7%1|XVg{{m@%twehg3)+_6E(SAAH^OL%t(5$*fWH!~pTDUbo_iFFik z+tTFdHsfM0)X4OzkTAjP+n<-4ZwKA>t}JQ;y$ZB*Lfyu|N~-%}Ek%0ssl8f?5~B}X+9Q-?T~I}zCY-QeAUXON^xoYgfwcyeN**uJ|^zkDEBL(eU^5g zGGPYiQFP{v0owrT%kH4qfYH$5b9SNg{z}=x#CATQTm#z0PCL|X7@JdD0o^sUEExR9 z2zKE`rGZ6TqU@k@Tc24T{V8uyH?;!JQh%!=hvYp`)NW{OMYUdrY|j`yfEvlj)^k}w z!|OmV(0ZiBLS0TL7^EXQCx>LQ4+XruWG?o`XZaf!%fI&Uq1t(j%iUn%;T&a0w5(hWRUPa_( z;KvMMb##IsYG;{sARmgv^8jHM+QJU;B@|hT^k4EJp)?~rqT7IhMDM*`dh&qAGQVfb zDPTfc7Gu{i&vVyJJ$$1}fHRM*qvIRoGfFwOcGG@KJDPKprBvIQrq(qkAd?|GL#Ytd z)?lG54qHvJKOrq3vX_>uqzS?N@OX9QU3`%;DQSpfruF2A2wEfg(WAxov@y&ng3{|T z*ls^Z$X-4WZQI`M-_GlhG1BvNLNLUNAPlZ?g;62RdgR&BW^BMs)}en}=^l$Dl}2Dz zL;Dl-oOki_HF|<~x{t`dselyU`9+dTB$ls`r&xR4{k1Xxzg-wkJf;>rIkvsBS)|X4 z^T6z8(x)g=sPRFau!hw3jzFJbq{h4KyC7##j!A@Oe%Ac*gV6{0gvH_#F{jAge)f~k zHqTr{TqZ!+l+g!Clv8y|qKMjQfQ-YEL1gO$9Jy4~yADFsIwgFjuVZ}9Opf%UyS5ER zt{0y>IW%h`^0kaAMKNQ!h`1jp$Ql<)VVa{|;=bsUz+1zGa2jwmYLwgl=!h=jS;124 zLL>C&jCOHT16`Uyi2L7A4!sy|8B>qy<&W#Pf96ZjDBT$Y$pp_kzYmlta5{6{n!1FG zmckh&Plf)Fkl@|Ep#M85ciDCHP>rWe(y7G+Bi+-xH;0tR0$vy|JgHHOmtbq5;KcE4 zI=K1ttML3%IA^Bimr5vaxcKCn>2q+x+Tes&XLRX?sO}tHK@RMLa8s`7H+rBn1BYlx zfz^n`{B>E4ZSZc|Ok5rwK3>N15CoYbDvKj!)!0DB+bNRq3^$G8BVjudLzEpKhf+xi zBz+>Cknk5Ex!jtyM-6C|;v-blV|sDshD^=ug3Ol2tZdGaS}nJW2{xq~f8-wBGNr_b z(i3mqgJ3D1jFC504KfHKGhp5Qp#-%oEDsSnZ;TQpWkJ?Pg8BS4@V=TzONEpgj$cI z?sI>AI2r)K3BE$mn^`|_7PAeGa+z35GwSm&Xkfta4YT^{SE_`rHA(J(54GzDzhR#% z1b<*K8WDYM_BW!GTbz2~=&6lHb_mD1IS+&pnn?wVCqoMnQxlA{v^|q>tUC*L#dfsQ zj>{sH8;02t2>KU#&*H`9fwcLmn}V}9c%Ntvcb%Z!MN}X3`(LlVY`euJZ-$gMGJEqt zbG=ybV5qh9T2!qM2!zJLCdf(5ZdY1pHKm9Bd@Xl>|2`XwatiS*!9ZF>>|uUjN(9A| zbz9<(ClyRV=G2TRtBPKNpGT$lIhfiUOWYVTS{{)S~j z|M&6*ol=v-I@O0Go|5c&{{>Nd1jGS9pNZy4EByPmiGgm5(+2zd{bHMoERVJkZ(yS* zhoczI+q9p;7-hGoDcqUzwMCIb2(8PuX;PC_XY~6)hRGg+>-AFBRa)th^5V~$UD$BJ zZfsA2;)#8`JwEzw*BLtzR;;^{l4erwj7F*Qp|73kw_inu=Cc4M@aLokQ1)nO<2WM3 zoRYMrvIa$y6z@QW{2}dG`2s#U=_(H8srNIa0J>h%UnX{_FdT&6?%#m z>pZyQ2L*4#mk~9X-Q8GH1g)i$IgLgW;R(2YUtWYZRe>myxG-IBXHL#;+n2nrMUm6R z)>@;Z)jJ(Gp72t?I0XRjNE;h_axb#tOVf=^IUDD~if|{HF9+wC9e2}m7s$eQX?5k^ zgS|RkR;u?9*kpsXHaM)AWjnn%w~OSY9btV*h(rZZb_E0q!MEuQ>#E8EX>Y3@&+d$P zcb^ao@TP3c)%obbVDX6@O9lk2@iVEjZ!J7bWjy3~;k^+~q8}qlajj(Q0W44~$HJm8 zMn&OyEzeFKVR#kYz%sFj@a631fxsTBNV4nwDHhCh!h}$V1T@<^m?ii+#FM)^RBIu3 zN-U}##HyCV!lG=Q!iro6*yDlYjA> zn$|*h>5E4+prc`7#ONKa0ondCSnHW8KBTi3pb%y(Eikb(4Zrg^@MoWv`s}2y(QA+j z9ZZyUTws!xMM$Prnba_4a=jN6jPAAcW+ZTp*jW%c09K*W^HWg${JGk%xeu@@((RbM z)KFk9h(Mmwc4yySIIzImp}-h%0JgTK4vTrCLOC2DPqd2ph*`E+*U7#JXYwfsthI0* z=2l|G%}+>I85)kJ)Y?^dx>nz2P$#=yO=tg@iP}}{|D)?HqpIB7ZolY8NvS32A8ok(BaW_rks3{hl+l8oU;5$s?^b3ckf< zo-mC)@hdJEALqP}R~^NdDz*5MU@~OW^Dhbrc10)qBG|eh_@4g=3jX=PIytCe59gU- zo!CrAgCZ>pf@gNrZO~l|f+H_FZ*P%FL-CU5nrit`oun->e#?23?v{D2sqg0Rx`$J7)5z&U$W!j| zA~QA_Mu7a(9TtHS%%>NyzTZ;B{52~ujzw-UEHFojNhH>7Tezlw#!t)klmy?WVAOc! zKJr%#CB>ES#Wi&C_R*g2W-dS}Vrz22*Mw>z zO)Z#i`|hWdtWK(!ddi(LbC2qs%LUY!jNw<*9Jp;s4{GQFCDPXR|LN9xE_(M^w=Nx2 zNs#nb57tI9Bz~W>Uy^z=prS+Hv>;EY_x)Q4LN0`BApi{vIDIU}?w4yPf=PY}(ug1v z(C~()UQ5y>t(ANK+E=#vcXe;arLR&utUf)`iKWqdaFsK$73-F;)Fzmi@@6j#gt>V; z9lwV@dtNPeVxNbSdXMgu@xZN2o}W*9Tc-PkD&vI8)m9x}zBe+NbbS5=|Ndcp_Y9cX z6?6&!=_A|x{X>Iatk%a5y)}Es%>LrP!*upPTY7;uXyxE5R{q;>LJ2o9*y_XOm*ffU zzbz?(C@5aMLd2QXh}!RVd0!w4@gLMw*Xn^Kv?FsqMyvE!T)Q#cV{&@v-&VV9{M)Q3 zGY|2<-I=BBy4T{EhCLkCF05o6otlrotd`*24|WiS-0=HuAXfsdHLQ2;VwImA?H)wZ zP@a&TA&4|!_avz%!FBTMT8S+hE^lpjpDAVS7r z0TU}%W7i$U6dd^nq~H9oAt-P!8||qmAs}IW^#?Vos{`hZksc#fT%}u-_wxzW@@(*8 zbB1CtDK;Kcyi7NIn|L~4rauxszbmOwm{%ObevbwTc6{;~c=lC=>8P)E{6k&@yLsZV z0gcYbt*GM{M}1}ol36pP@&;+XtFBS9-W#ZKkhKGd*E2do_#Ba`iSSHvx zLd*ItYTxLpShw~G_+#SI;y?Iz++J_-q?6w0C4qa1$4Wp4~ zqLYZVuEPo#8T*J8Q#^?=6w^WCcMgeRfXpKd`h}MuFa~>uMb51F3Szy2RdtisIxM*L zKDYcqG1}@)-SV4WDSBLE86LUa6(A}svE(-jbDm!yPzB?JKJ0+4V|Sj?B3Qof8gefy z?HWYBT^wOh{aSGNjL%|w3Pu#>7e~BtB=Q6tEhu@D5++EHGZTLJ?fg#@zJT-@f!}rT z;gM!VBxK*~?JUfG)6}N&w{MA3z8T4KUA~v0sOYI2& zNrH_74eE$ozPDF!E3&otcBTti-4f&v3SRZm`E2m&LKZO-=MRHa;L%P@Z2RIf@fkT*05H)g4&IXDD|GAAKc`<%NsNiO7;g9Gqvx|LOXI6I|`)7|=$An3sG}I?McZE97 z&n45m^ei!kz7IlA_P?eoWYt2R`9Ei}|JW`p>KB`;bpD%;hHS6r{k7o5IQ{-7&mlCZ1&;UV-L~FE zz^Jb!^jf;FZ7=E4Ke=LxY51H9BTE$`&;I2J$zDi5EfMwXN>J>VM2MDAu~Dm4t{DI& zw!Y|X*-Ch#dVD{xtDSQXJ+=xwYn@%2)t!9G>CwkT4ri;(EThb?uiu8?%!Jsd-1RrI zx$;Qa4xcTj;(Qi8x7PFV3>-dR>#&Hb!|bLzJL&$KJ^vLowEuI>TY(QJeL)qs?CcIt zGWfL2XR$lOs1J=4{-)!KW`t$jt$y0yQc(o?N@R5dm@2;|hpiaZOMxqb0Wupc+R+DGoCUt~ zvAgqeLdr=IS5@_Z_;o#Vv%q2Xt#$l|>uZT-qsr9Ii+<~Ew6h~$@hVeye9zWP)Sv5r zcjdwDuQ-zd3w!2#(AakGm1`H!HIV|}9QM(|_*gMB65f6&pkRPnr^vKl6 zP_+AA4)%dSs*!g9AwR%7rf?JJi(#pGeC+spMUlA|i9wrH#2DJHhZ1h(Qg?I07?#2J zqXQoWh3viuM3H{SOmK7xT(t8fVMEhtCGO_})^d3+E!RN>k;DhqiH|kWrU^-_dn2Wg zmS9|T=!3bw^)OqnVO=hf0U?n=U=tY9@9q8tpu>{Z7Pr=jS+|L`y*KkRAnW7(e&6}pa z@cu0Wmfximu9W!SlpOWTw!^z@(%DC5^Q~NJH64Y->aa2T=lZJ-XV-WRCSNrT&-i{l zy6Ys4eVU#4>=imug%(^*QTaqd{s3$ZbykRSf&>|M;m{UXpKQgp;_O;+B{>$;$oU(5 z6{sEL+s9B!GGazbF|-4R{{#*IAb0_70YK*-Qnb}4{$pA~Dlc>cZ~S_ZfBXL)pN#Ij zJn@8+U>Ng=9;_hY0~TQU)`K|8QXE#37GgiedRHXO%+B)Ug)hQ5bBJL6(8sLbj`hXy zH++}L=s)=J-6`<3;p8vs@C<3&Hn0jL-&0#7qD7$xpx&fQJs5bfB8DH83Rj(fo4KHU zDfD=;8QWD17AdKK!I*=Xl~`gr-D}7W2>pi-{rfk=)S0C^2a*${=itYM4-iEUDTKcB zQ=O>nmKde;OlYYy>%;q~8J0OmPLXi_bjZdN7IdqJ%u*7FLg26J7aq~!LSL^ZqG}~Y ztIj;fjg60Nu8LmYeu?K4jpraJwWvFt5_p#%hkMQi#!9@GqR&{ZB_uO67}fy1(vD~l zg$x3&ppxA3-RmCXwzYBAzpGHEj2G_w*|hp|^@>gu{!QyZ>i1yJQ??&>sXp=}qSoE` z{fuSpx;)l6UAIWw`rZeOUr~FYG_jny!Ke*fKdsz!h}h8gcqo73m03vgs3m2m|h9#?}U?1 z{+$=VB!<8PBhG?nOID%16B3AycTmmK=8Y6`^MOx-%ghK6>n?ptsLiHAdoRa-#(kMZ zRjTP|7kU{xc)*6BIew26WnqNzN3$UR7Z)lm$$d)u#D(B~$UDFr9i-UnrO=E|N_w0D-GSBl`zrY*U;3D%gpj|lQMJWi4m+-cK z`Deb{0}8Pw>BWH@PSX;5i!H%Z&35V55jh>m9#V+LnwJSXUAU3%d{#7XY05VUjN`wv zJBM&7#KcUNuD4|cikUgy4ZRm)g>!?WlIwMnT!O=B{IIMICk9)wPC`q7L^1REGH`ee z#M3p9>m{qGq@onCQtu`R)G+QI<^Q1S;A>=Rn0Wn#aEzXPwA%tFj)g)+W#(2fkrm)U zg`tZuN)$h>A;9;Eos00=+^%PSmK@jrvnV)m0u9_LKnC`c;4`$m#UZ(JvJTt0$fHXV zDV)F}zhHLI%lXE^3PiUyx)xOw;^IB%;|2+PT=|(IzB@aGb{U>}7`U-Y7jE|uCeysc zlOA8hu=HVf5t2V6f__lPSVE(?FrmY+{hFX-TTyv?D9Yah9@$d(<_)g_|%$go-Ks4>h-?zGTY4y4@yiNimH?r`3969>}St#|<2|gYQ%6 zjQGdI7?qt$qTd=|;}v-P2UP+A!t!v4&AR!4;_=PM1c>wM3)!uJz0GD}V*MknXqT>#T!DZ|qDUw2(ji98fe zq&{w9z!5Uuu_?dsam#%}KUIAu1Z$9(t*uE-W{Z9MVt&wjn{&TZ$M4fVytE`S83LMG zXyFst@_tWISMP(%ARUQRL}&|b@Zoq$Bxdek;VsB>|M#gwR|gTTEp;v;kKe6=mtj^5 zT+~2o_{X+LK9h#WA;5fxLXc)IF+B2tD(4_ZRYT+tUG+vIuf~V{jO*b97gGyZV$WLl zE4Q2Sd*xZkbn=W}ts}ni{A|Rrcjv<72e>CG@DX?$Tui(U#Edqq-c~xvo9g^`b|NsE zHp*0l6`~g=KVR%;q7URhWHa8Evm7VRPH)c?q|PM zgl|7nBygUIQ%gCo#BBXa)9cP0^V|!ctcJ@^KUWXxhVILdaG9NdmV3_Z-W^SkO_R41 zmwL{TTdI7YjOIG8SiNnUDez*&74^R_691?${LHveQ4MIV=)VOQz4d~nUH)GM8A$12 zWVYLfS=llTeRAy4q`!kObj9giik95hpwk6CNKbWHGM($aRrR6N_gMaUr81WK=~O8; zD_z+m8Kanuvf|)`hBJmz*f%(YW_^}dA9G;6G`VNBTB|_Cqgg3yOVUk^e2WYvi^*|{ zhI$@m#qjuvM#|-M0l(lT+}{uPK8eGV=f$f)ypSn~?l%AIlMHeSI8h*~-jh!a`a%u& zXyI>eV`&@#n~Kz7ZcB#FQ`w)dH@bE27dwk0A;_TCPIgp1bB*JEUwV_7$vgiOXDmzX@l#v#x;+6 z$MqLmZC$Ah6>a6&T3hEp-jkLdoR!WLCDI?U%&vP)lRIm)S=0Y~&BN}Rz|G_c8iKnF z^MOj-tlf7_+f3tl+hdiVqQRyb}h{fr7Z~_$BKEHvc>agOx{Z z)RrUR7fG*7H>vb@>h^8H;0WeZkXQ9vmfH$mbMn#wpAU#AU~kphFYJ3((nvx2V{uSK-j!Nq+Ynq#X!IPqF)vDP z^D#xQ48!FCZ3Pg7DDP-W4_v2nlDog#I*7#BWk$Aaen>`_P#a6wnqMkhryBIP7Sr%G zaka&nWWqV6y~6q8_%5OA9wJ&VZdm~7$!{_>o8~Uv4b`2jB&^~Xh$m)hV#|#QNBi?& z-2RITcxnLD08Ns%IDbzL#qE&~qCOnrnsMByG}Wrp6bfB}OA)_fELpz&L9OI)d>K=f z9$AVBT8W&(d&xyE#&fCnjZFrR(FOB_8#1y(At=>Ix&(;Fs34u~b@P^~dZ~y1{}28~ z_(mA1aHIHd*}3V>s<3 zr)_6lBmcC?<)jlQu?V4;wC_o`dw45s1rPRQe!?Nt7V*ltVpBom@ZGYSKakJ6w<51n z?nE7L$PRxdKoD{;UU&Og9KYK=S?YPm8Qub&1n#o^5L>>$-l;*NS!Rg$4da6emtWGTcv0y2F+GF1)!TY|4 zAZiiK)%=I4LN`4IJHsE&hl2DdjZcNuUbL<1CNzrhHluAP+hgCmPD$ z3zCyF#-y?VV6qLBngq(ob86G{cnMGXRR!W=6k~2s&YT_9ZHBVJ&|wEvf$;9uEd$+< z*Lnd%TRB;z(HmVMmi7A*Y~eMAN}A5*8i+sO)z+e^NdIGH zLGRT6*4~_!`NS`a)9awDf`HVMlu}*2&^&xjW!KZUMZGB{2v$wAT(m=DgkvEvNQN*A z$5`oHA7w+#a!B(9C!DvH+97OfRqf8M%9aC;++Hv9V}IBLrRfhj8(^yl>i%M$&lIRp zYF}`;Mf~jt(E-yj`2ka9lDQM{z*o_(B4oZ;Be*MolSxT&d=8>qSGPO&XSEj7^VU3)CQ7;A4UtPmA?>j3zpBT;-!4#h&F04PsX<~{*m2=d za^Oq#RNJ9w(d5ZL`yepk?oOc@X5Eda5hl<$QdpaY)WaGYQh9Nh*~U6CAG?`dgc~{Y z6np{lq{ce1rt9*8ba(tB4u}Q8`lGuXt zS6;)Tauqr_vX%S~JPj(p#dd6|C-Q^vP_(IcS}=PvKEEg>y8h3e4Lz(E?eH@-eBIE9 zrGKr^ojcKJgvQNP)JOq%ca*3kZy9p=Mk5GTiJsY6H#N zb;f5K8rP&n$1?ZV`k5rxh72dS(!j0iF2~y1qR;wJ1Y0Zk)RA`gr9Pw29rBu1z+n98 z$SF&IH$hAF2}{yGKe0&aj(wGm(l9B=Ip5 zg{FJtymC`orQfGXutn$tA7}`F6zr@G0xrI3@9;x+&*Up7d&XSxjMBL{u%h%uEnpNv zcaW{O6{9bqV!wW>WkGa%D-y1kwF}=6Zc)ll#zroiZ~|fYc#Kq__?#-? z3y~u>Y??tI4Tf0+MMMePW>PTZ7hteI6@vJUf3D)H6G+p0QYS5cUzHLeWfDpIZ$fCu zQ0%3#`>=taC1z_ejxn|12##hqoeIB=WoPH+*;kRUfRY@mp>}gr01mVsT9J z#=u7VQ!n~DMDQU+>%uu2)_)$EE&&viC=+80k zE9f?!V@{_BD;;na$YC>mdE-8XA#LKKE{`;wl{Rsd9}fMMa5~84ZV(Npb*aI%1W-&k zKQVY)Ibu7ItIx?G4LU~NI+G1bK8X$mKD^~#sfB1BKzd|f-ax01S04>v#JOveCFVMZ zyb1Njp~9Aq`8|qmb$PQJbRWxa12#_NjwUw4-gY&= zNB26gA@I2rc%XY4R|A;AQh8 z%d_6Dx>b%*%_*Jc)Vp`|zTEX2-ze8sWD$DdFG!tD3W%88|H;vkr{% zqFwYd0m@~Zt>z#p{XWs*Qa>D~Z(=c;KKZ3M@)6PgN#{V_Zxi?UN$7gIB|RS6Hvjg z{l|Pj+5e2J?qCAe!97>TZmMz`48#-J!^|!Tr4#nE@ZRC_jNHt@Lw5DvHS1=sQ)@3MB4P}aeuxwM^zzByM+T>68;g}5lJ z-nNgxyV+A}f4m|`BQct>AdzB5OP)FsW$s-9;*q<&qh{a=rYDwYINH6+QhB$<)z^E? z7$rv|PQh!wmR-=a;I1PVc-#82?f-L{`7h<}BsLOSO+eI*jX3uq#5=@hjV^JP$l)dk z^;ainOElMa@hhmi+{A~Fn@xgOw%@xYc$c2hNgOVO8E1VdAYoR1n>O$@@~#Ywh{dkG zfA7$d<063^b7$C1pN-#Tk2F$UZ$u_SLOQfozip4_Y~G^yZ{(ty>H;P9SGm+(iyJ?j ze_q6iOE1gz%ErVb!GQH|z?a!lC#b?FdSG8f{z7H>#%H38D$7}K^lDCaD#|G3p3gGH zI944g?&wK9SJECn%3(Fz+)az5&WU-i*L?0v5?P3jE$OM7G#)-z6%r|0nR&2Th}rbc zH>#cC-|U#2uD|U1zRC~kJH8q-W?GI{meVXN~gMrdBH$LOJ;bLx{{Hr2O&FG#OZw04$Be}gC?B;D9EjZRmXC1hk}gW{1qc?C9^AEl6lphq!Nc06}?P*e$rF^hYAG=$x8dydz2aLjtd6e25 z$HF*kpzw?0W*vdFb)lDu5RiwVl-1*!Jk?LI<-`7BlgEHdJ`;$Vd7AMe`;)YQae?)N zylwWYGi{@ufJ6sd5S()X{Q%%`sG9JOo&^jIP}-g&=mf9?Y=)sJMLO00e8~yHskSNyBzIRAbez8-IVBxA`ce{cN)3hFP9xwVXzy|{(`TTw;Y1N+c z1E!<^*qz+jow^}bv8<{JFnDZlGBoC{l=#PyA2v zV67xwCjEnoLnVy_?_R!qxwoAz%N4mVXovsH14pJYT-1vcL?{8%U(q=WSbhA3fcwL* zna=M>oaiWogCq{0i&o+N1A3T+lp4pLYFv>TIfD|^T=7+B^Hnfd>#iZc4IQe4Nampd zMIJb-tZQ6GOhX{E&H>^x{Piv<@Fo>X{wlpTWH%iXPY~7qG_;6+~A#`S~h${R|<44m+YZH$-B$}oien<^n=_Pj`w#+roSP@CW z3-Fo!=(Cg-d-e7nY+l@lEUt{IsIg_yT$q7*q1M$`dVVfy`hcyK-8?3H_6wwjc}qADe3fM*P{I=)O8D% zIkxy%2rWsfO-z`~)n?pVziiX^84o~O=merTu!r{bq64@d7z?+~*o;2B+devAN@_Fm zylk4NraR#)4#09xWZ)&R7Oe~Q2K&sQno9-4j+%}znR|UWWq+Pyw^>BiWC@zbtxusN z4175_uSzMbJJ5rn4)+f#HK*AlTRaPnEg*;eDh)v-J<2bhfQ3c}k|qJX0(#B=9V~tF zmCI;?-G%7z2&Jr?lyRuVqc%G# zyVpCptkW%YMtxkFzZXVK?{O@RzN3VVQx*&FxPy#r(92%f!kUW3$YL%&Fuc*dzKMjg z`d`d%A93o-x8DQxRWS(f<7H>(U_RVdFIPX~?cE3JTbjKv%41(H&e>LWlR@l54`9|uDr3e-~cNFmIlR5Gr0;h9kxH(ss<^?)9y z-Cunste zqY_e^)jVZs!%N;VRge1X*x!)8+)XfA(9ipgw2cDxkT30nbu(8`8$-s=}>&c|MOt%0?t9yfn^=) zHA;>Qhk$XLLVAeD`UWixBq(w^5X1j^ENH8mOPo#vD;~hwj?MC6ORnVn%I5>Yj-MC@L4$EFL zj1hbzVoQe~5l0{aX=pr>6H-P}X(uZ^+w}}BZ%9peIT#a3y#hwaX=E2fd82(dH&ffb z?6t@HLXKuD|MYO-pdmYvVQxAahrwr!kIJLp=HOnnt;Vaf4jxx=>J%gboyGKnG8&cG z9U|^qLwM5LOM-5w@z0+Tg7l6*@B6WW7|~%JJ8Uy|kSn0E@@O^)^0xlH{8bRpd_+nm zKVual4gS9#dr_ZrtKVXeiVwXl4@)FOOm}E@dx&HCk7=20#dEU55!4_3JQ3kzEyFeR z3T9z0;sy3_j)rtWAfGq;YOMU>RG4n<#`^(mxyohrd@Q>`XQ{ylECyDL0&Nv@EI; z%={c%NCFv&6f)arw)G;rHVZH1r2)PtI8@B5#8N4H=6fGJ1#teLhH71-^o(z%=lqbL zoxW>v+?8OHyv80X} z>y|009TiM`W^A5(c(gQ}7d=lVM-6h&T|fk(4JbJZlR;-Rcd>QwPWw`=LF`tKCM6Za z91N?zryy%tx29F)qBnm&t{Swzxo|YKDCGgwQ!xBr(@1Ai_l_ww<++$ZY(47{|yg3^`uhCGH zbQ)9;Q-GD%d~%d+@L_TRTn>j%o{RcGp7ZqkhlsACEEBIPewwjET;aag*K#qgaSxGz z9|xy?7g~O9Nc&Hz?)LH2%J3JvUsi>@-@WmdcuB~pM}r9^8!u&}-bs|3inS2F7P-#U>a7NYLvR!20 z)r_CD%$ntW;wK!r-ThJMt7Pkf_uVI>$V>gQnoA&Y&-rJBR*tCnLthd!@ncS|BN;;u zK7&{c-wf`VDcOrs(MLx`&kv$)X9ZWq+#-7La6ee*wkYI(T2kP{IqH#c+-b%6{5M?4 z_C$;h zA0z#Br9eTWW%b)9T2fpv;5ui=39B1dy0DNtFy}F=v9mt7eJMJ>={ur5#GLwNG~PP? z2Nh+YG@n$ymUhor@SgPWrNcY!cWS35nofV+o%^t1@G$T8;q>lks>*{k2;gZEs%lj1 z{aC%@qSOwT7fqovk$sPIt;>uUM_&1L22K8YTF=cME|V7Qm3CeR^v5C15(T1drnhQ8 z`a0K(OJ!{;Fh+G^<2j`%($ek7-2SP?u@1}8v-McMe^3HnJuk>a19%%=l#A`n4D3@b z*tLa2uy!@cy*nRS_o}$97DyPTz(2%QpO0*wAc2X}>5}1FXBC}&)K?~KrLBSPcN82A zsXAW(B}Nr;T*N~*sYR`A#I~-CPRv4_Sb)2L9@*u|on2}_nWdJ@j4eb*>~i8`Fw+%A zMbs4$e;ha;W_hLyecUAE7#7XPUoEgn<&*+6eg1_N4%jY1^$xonan2&R?v-+U=okYx z^!jjz`Syd%4fiIM*XxGL@x>gi(&0qeZR?P{v&wDfL3Ih@ihs3@Z!r|)Qt8IS*5WqR z0{F0!USFYjmT5Z4SMTa5UBQ1!wvo~?0eP950gDStby5ahbrny31WcX!cF62Hrg(d9 z5KSy4%IQQ0OdMjM?)fnvB&F%KiLY$vbsd~&0AGZ8c4%@CGl{>n^v&XiOu)Uy6ZwPA zeY)n)?}!{R=dT3^sB{2?JCtHVy5_?rEq z#na<}YLzF?!!e~Wl*THy0x|Hc9w?-S9s+k5y$uz9bd7`LTy)o(r@$2wOA@Fy=wgk2?sP z!3o9ne2iZQcGm{2k23NwuWUFe|&~_36O@n6bK1Fp2RQk}eTd;r6p_d#nZs^+24viO8CDCPe{UUwn zwzwopHGLhC9|K(AO% z>Yt^Z))^M3a=CqLhU}can6_!=8xtkILUF<V+Bz-;C=tDrNBMaiMl2lEuH+E$X4HJqH&O`gc)L)W0`RrBDEI^bCz+?L6S+WeA zw`tMHQkz?}3k6*7#;6pNB?l~13V=1!(=1%zg(ScH^96cOZ#`=TS)oNlP!~+j2nh>n zwk10#+>MWq>un8VmyuYQh(jt)ABwG2P05|#4l*M0 z?Yh)08p)iJ`oedt|gIwc^H%K=`2IlK5wME7Z|m)lTk!q2tJ)zK0za+uzX3HLCuA~J#hBqIB&Zms4-|g0*Ieois zk>ZC=bE|e+AQa~AS+ds&7H-nA!Oa{OT)JB^?AFuv`_o!)^gP2Ve7muG4XLBZe5Ll z3VVa({T+RF*R+oXjNf|-@ClsU{BH#((ah3ct5Hw&j__= zk!-fbEd4epK9Z=z;1&NRG5AQM&Pu(d6;))FY3DI14gNtH41*nFSJM(ktOo+Szk5a= z+I(7qY^U7_8R7t#IBt0;ARZnNlPY`^GGd z5HtBz3ksVGhgp64hn~xY3Cxpk=CNONDmfWJfBqW~*Gctcaw3K^gNn4Wkd1TXJjxhF z8mGwo%kZ8O{d@?;MyGlwG3Etj!d~{Q-Cb>~%af`$v#<+B-X@~47N4UN|2tFf;2EVIjTLMCGh2i|)34O@T0 zxI-0GLaO0WzeLII%`W-m*k`tr?v)w@5&ZP0j99$Cm#z9_Tm6i$-WR8hmXSTVu~Qw8 zQ2F{iRP7rsUU>J)%^efpJIxH(H`!HqysXlf= zYKb97F|gIw*ArY5#2h(-tVGXmQ#i?=Z&lw~i!YbMrU5QDw4r}BHK5KO3dd@CH!0Wp z>*xf5`3U=ZKC**C`da{K&j+y6oY&iU>I$co&8zUBjm(c0zo*F zqDJoo5BV+9cdo6VgxA23&QPbU-ByuvhI`B28QzGKb{d(FsmlZ2bS0mj83ak*p%s{L z#|)tS$BhDE3!OVByZgYRV6w;DTe*Q13zXUOm zTWd%J#eI^mZ#)TSurhU@4#5^7tVJy-Y4YIsV;NFeLz!zw*Mikf)i9#wd4$>h9Ui2; z52sdq@Gcv@I498AM5G*tJgMmPB5Af(UNY!QDb5vK z)m*f{1S_k!ysAe7*76&Uv(o1a1bi+?*`4}>V)fhFYwIBJr1qvdo8H$UdoH;ngVR%D zthnMj-S&9}al7!)vzOd`rM&g=nJE}F67|$e%v$`GdMsxbbPJLU~-mZ`!Sapu|=L>$sumeGt{8fbqZ#U zG&B9Gt21>6<_8d!^5#Zmx-=L2Iq}vw`e<>NT$y81vwa0p_Jh3Y3ci)G?vvjb&h zgZ1Ns)rIe=tpD=Yay(@A6z_qi0$`8fWH{!zptnTL!=@FTM+t@5}Qj!amy^Ne{ za&X*D<((BLCS5S^__iuZpB1(Xr_cMbss!TI3LfQR&$e^y_Cm8!QASEhPTB_V;H(`ZfjgC zyuYxc$4p5WHvnQ?ir|W;s?Kz-Hv{9TwhIt3J~n^Va|-qO#wLsNwf!kK47IMc_q3%P z%bac13}#|+AG+j+UHr~>{ZTU}S)kIl0&YtK!_(=M^LS^kj*pCO}Ioy5wVTy|E)(%Dfylaq}SXid`qsaK( znSQqVgvVi(fp|6d-AWaMcSf&TMJUSqsP+g+B~-ShbV2j^|k2K0#U|wa->THH|gJ*K9S_BwX~(3yvx?l1~)mRb}KINs+l(T=Fod#1q}?u?vj;{R}Ip{-5(hP{D{|> z0(g4Bpa{kr5DDK^5QYIZT)xlFA*jQz@2Fhepj6W`2xByxG=I1ziu zZF9Qtq)Okj(pyKSdfzwo5A#F7lHq8gvOkAYbdMDqyy zJOMXL&zCONI2ya#yTBfk=K>}o-Ba=c5wM=NwVvx_zxWcaY}TTj-#gnhOsr2aL66Kc z+pI@K^2O+@(80@%1!I6K_K`m>4dVTPldM7}&>WSTH1hFD=LO|{r)>?x=WvnUzpoCu=rnu&G#B@{)d`D%-@RCGTWSrcZa}I9Jp6#iSCI1Axa}UB!V|L_y0!2 z`|}w!2AS8~GYpwlAboZ1llEsn;f9`InG%c)FLj)#Z@)Hnpovn0_`h!}7T{jHPe_!tvN-xvyEEAaU7eW=;U1K!4;Z?)Rl0r!VZBSEkXgxf@|0h2wmkm>A~qoK2b`}_DRuNR zJRQW^eH?!M#}$)MWIdnC5}o~=e2Zo6(y5IbT{>NVQ21?v*2J>?y?5uCe}rWh&`M-# zkhd5fS5$n%S_>HzKQ`8o{*p-}Uc5p7h0~C9iNWsllQARuAz@+GMyVXj4!kra!f=VJ zvLEc|!6c@v88o&!Pi?W$U?jhR4Wv6uS_O4>)Z>-0<9totYy>xtk$e|IQ;AO$6L8ywKMQ8xk7!2EDUe4{A z$kXT(OA^cKVDQ&D`W)B)D=|Y0sMV%BH+7$$oAM)3748k z5@#}{>LdnnIcX02z`j`G{P@aUzc#h(oVrg^Px78n?rWG_O};xSzV~_7PKc%ZsFT)Q z=FFK-gS}Q(?*m`g2V|o`@!9xeAk4MQKm|K1sdph|7#H=gom>)m5(6b4?juTfC~KVA z+qDgYyyRLse`Q74Xj!oEFow8#X-d#O_i?|Ub$t9&0^j){0lCDRCA1~vslK*tT?8-% zca_I3324CX2@&LDoIil42KU)5Z*olcG4x{S2Bo6Qy8OfzhW{Qz{+_*izENpSyk^+$ z;c&(lT7Mr{rpJpT50t>7*OB!)mt^lu8DSVTa@b}@BH^c&S^gh|x=(WqjnQOaH)5^p z)T!rww54}`*@&7Erld^%BTL1$|>>lP^5F|8EZYF z9@SYJq@w(TTKKVtfV8gGX+MsluUk|*C?%?w-Sn>LTrJ?vYs+JF*r@ECyyf(x7hB(F z&3;|(-rhuB>f{`c-X4WoW)Sl=X z=;7pAQ>-$*@3q7v%KGr8pVLg#?;Mn08XIF8QM&uf$c6IXobhT~`HRE5p?LKx4*5+Wm(o99pWj_ws#{ZC&tnneiR_CqUYrPkZ84U7UQ#Ec(Ny|C(R=B~kJk3Z(G9(w-JnuXCA{)J>S@IMlh!r7qM;?MguOiXBj~CX<46(N zw+I7;-3n{)&4oT%-;3W`)euOS$@%KHpG+a#(ZL6xvMDygrk>1&1$3H02e^ybCmFW8vQa01RlwwIX3A$;gs>yTG z(GlReaQqB4q2hN|yKC2GXMtw*sDbAxZ4kh7)#BKHwA1t{D zbl~OLMe_yNP1&A);A<1=wrFz!2WG_+=O-L~{=@Gq5~6uyToX|9no950%GlBKYU}+I z?cd2GmBmM{n8-p4#oRyo?23OajoyCVlZ{4Sz2hP{A#et2w;YtxtO)PweNnvR1gx5c zX4p@aPK*jlpcVgcoQ6DN2N-LSxX@i)D&_hQJ-A|fO2C(>eEQe(gJDmO#xtArBD8yd+_YV4|PI{xJ~KOJkbR_3`wqVJTD zx0G}d1~2O{=Ih`kx{9BA-Rl~H-}VsKT)`E804X+Yxj5fc^W?5P3MF%#<7F#QV}+ySSEK2j~+8 z&?usk-UUiLQwn*QXYFlU3dGWt&y0vFOG~f) zQa`|S0CqF@ee=pZU$R$%Z^W;pw50sUSQtI|oOW;_1{7TnBzjT4yYl#)-41-5i-ZfZ zYXxvic6{pNm6|OG;;NeC>aIC{wLTjcl4!O0GyIu#ra(xXpf_Dur-0q@z&W*nTUo#N z=Hr;!vKBykCL2w8F_)v`*8{z4jw@+oTVu1h7mkdsdA2q4rY}szs~#G#ooYJQsTR-_ zGp*i2+Q~C=I0RHYt9J{H{3|pDCmDcTCLk*A7>+$cEZ0j2)5M1~yd$ zAA`UpmI?V=F<%=#bj-ZwnDO{CqwwpbuqO0p5R0NM^&QAcC%zjK8Y|g@ftyV^m>lF` zzC1Ko{LRr61MNdE?HaH1T?+1Y z$C0e#;l#RD8S!@YNGv%H9@!GoCz}_8_P3&Xb@}?cdbyV>SGFD}r6| zGcp!z$0X_#WW52ajm(;?z1v(-X@qGkorMR1+ia7m>a&ZmVY=cl`Cw1sbwgnoGX${Z zr|Y;~t(jHBw{g}`na84HMieq*F7_;+qHuNW9Fo@i6r3rOBWV=Rt;j!Bjbx{QniypM zu=N@t8v^GlqAezzCb4098!4ZW^H?mXzv>WbR&@bhDEpbMxc&O}H43q2Fs}0~rsN&xQ%!Wjk(!Kd+gV%!fai^ZfM1 z^YWD|OFxUT%jn_G?dz=2s{)wVNQ>Dbim)320E2SN0RMoD$oRk>y;ZuNJVOgp&#t=3m3bj_gvHushZ;7@|IAEus{a|d*AiVg>w+R@jwrv{wL2!ds(&S;ek zS$_dgj(~%}o%?Yji>f45w$s%2FWX7~P}&!F>Wu$j_?p58lbZES1m82nd%~94f#Uh< z-yo1;jOsIjDeqE3U0&WDm+dul*>hhqDptR)jQcwYf;1FW1FX3KwIt;X4VQh>#n}T94Xy+C*62w(f+tioG#vbW88q4I8z#>o5PRJgw(nl zAtp*U2FsG(y}b#a-)B%qW)?l{DTG%9-3gzb;?N-IcswV4Y3`FVU@HGc5?Z!K-B8Is zxnA?%&MGAK{CUmnYVKSU{hL{i1m$|M>Gs(do2RV`GvH<{Vf5kDXFI|-vnINUTgMB^ z%K>0T(WnxE2A`2YJ;V9V5ch%V#Hs+Qttu?!?%vd;EKm@hB34tcekH%eei}^ZKyR-3<0!gx>0*xKq+CM*!N&K#OiFI`MboA$TN+)r z#xz*H3SmzMvmyjk|F=~3igWS1=YS?nU9&U(3WsCBLCF6%|9+I?ObIVllOW_HuqcTA z5F{yjA6y3mZ)Lgvi#9TezCwV` z_UsdrxZKAaLtwdO)M&w-Z8fqcy;VR%xxqh5^S(Txj*E*yS942WQ;#mg^C?Trm}{n^bT71Y15tahWe2mwVe)im2x!i!4O)ivS*H(RlY*dI56uUyK^O$NZic z;fHZf)3jz9SAzI%k0Wj%;6xzRc!;-y*w`xc+4~bCZKc5q5^RLs6(i=p+ekxODg6q$ zA3YCPC~}Wd;c`N;BR|hfAm7vT4={M!Y^KBrUuwP$Z|t%6QO3&osUt0l}g8S>aoT5jMJs~9+Pfb;Y==*^2~ z!m?Q>$=X{#1p{B2n+2>4#w1vZ67W|bU57sok-n?t)rE3lT_4FaNxI+V@>sUBRAToL zJjGKAYquWnY?5&Hvh#`+68Lpg*GIqZyo$c7r%U}NpFT8Nvj-h?rXy~Cs*Q;6Cq?|r z7{}iXXZ9h+NaIP4VyL%A>BK4HAIBT zBzP?oI5CpkJ~xxpBiiV-gE$+G#CIhV@4q^zflS)VA!teslvq7!U2^hdRN{NzJ>{1M zwn_Cnj?!^8hc5|!_C`Fj`1JEk4qa6(H~l&9-p~E z&UQ?H?i|6(vvy@2lV>k5mgo9Drn=?5sKZB8X@Y;9mKneto(jPfa!z_vJ!BS)Pg>3q zq{CA#^q$428oA|DXmAcy%Im>ns~YlsEJcG=Esiu%8PL=Zo@=$jD1{fWa5QGZu#`QR51vsS4+y_ zhhHSbW}N#)8Z3}6mPh%pdPA#5pY(|oth<#Mh`%2UWATm!Cm#uzW!`OZ-WmSbL`^Ac z@m3U#3=nQ8_Vg*ds3^XM9^UnJu)e={`C%fBM&~Cv5_v&49U=HWVEb znJJJiM14FNB!pC7bOP?OW%+28u+rek88<}ZUgFpZHu-gS+zF^@C{F9jkre2b@!fM8 z@xN8J7d^u_#lmC=@Tv`Ym(-AI$tVg8CuG4aMVGySXf5Gb6?ktR>8YhYG-1DZ2b6y) zL^=hsGVT(~KH`?AXH(yoj%wtimmkKGyKSo;2=KpIJk&GIcP1)t-J`hCH(&PX!peFS zlZ-@dfWMF5x@1BY4dKIM;L7G^LT8#k%kxLH~ImA9ge%OCn4&9t{G_Ds@)Hz-Ecqav(S-s;D z3wU|7wQ+yWZVzoFVa7*pxN_{<79GDf>%cR0o8Ct@U^B^jb<{8L3dKqYB;p>qC4S~!JlXS<`YbK%p%%wQCrO4>H`hZ{+5~HMjeof=B zgin!oYi&JR+uE6r;VOhK7m1J9rr4yotpGVjWd!6pYJ7c7Obv^g!OslOQCNC^D!^T6N+)>oS&2z;rY zQ`U^^3jUxBaWdu|mFef?(A;~-=AkW;<(^M@M>138Mw0xQekUB2mX~Y8m(s_NXs6DZ z^;joO#3kyVIO7}jzUvQhP%DC$U%+TVkfA({Rhds zn|YO{MRXlN%>}ov+C4ZgL4CDW@B|kH#OalyR^*kp-Sv+cAI0WYz_({q+NKfr;)1=| zNZ3A9`#fM>)c<=yeQI}4CSD%VPT>sz#lIO|-CjFhjVfk8`dQj$eZ10Jn;MTG`+MNH zeURTsJl|*%nQUqx$gTft>Yb{W;u1YeZU|Y4l$u8o>)tW4&hoQUpF)x=768G@Z8iww zuh2kg$kWd8Pxb}fIxg#XvbZ>(bIK^59n|`kNLZ`X8t2j&ldgEm!d8Rw>8-yNsiU7v zZ$_$N9dKA36z$pU>YGC2q@C%RYY!_-)~dHnx|Q$1IluYDUaNcPh@BbB5GBKE!uvfe zdaVqJNQR2#B=JS^MA8el(~8i|Tlw|Z5f#T~o|)D-G@P-G_GxJ6JBTt1&A$=Lr67Sl z{v=((H{E-5r}n8AI)1`EbEha{*Yy2vDx?d3 zi8R4?N=Z!_!u&)I6pK|jxY-+6&vfIEW#Cdz zk^qBlhpMdsqe?nodQnC1eSv#zP7PZRejUXENKN#E{_jV>y_js@so-Nv=g8k{EH=%& z1~lB-RLx&^RcQ*X5CdQ=Y4766%k52F;>fZRpOl%6*rUH-lzLaAyn*|!FjNmIj@y)V zrmm87r9Kz|6?dnxuXPosoc~Z3?GoMYb5XMNI5sw$iURhQUa!1^gj!y* z*fYH#s19Vd$FQqV8J_bOfxAS~z3cx_>$K5o_l9oX7vA~pTuQ5ZU)q7>{rGfnGw2yT zQ8nUgD()_Sd*FH#^Z>3xL$;opvG|1MBZRJDiq00Ep#D`)j%BkMM$;dS9s5VejvXzxfdDg;Z?uRG6ele5iv8}2o>LNEbHznoO!d9;X=mr{~fqw{-YW3#}#?=0Pn>E_*@i$jFXn;VgWmoMP%Dv`wf zL%k2{^P+jRF_yYLq9$Y<#hWv*&Rq1P{vE+Lw+$=|CJY?2x4{j7gCpHwSo~IH1Wr)# z34tp`Ky;EIe5=?(eZ6l*n|KB>5us};$+Vu$_O*fci~b)fHw3scRdT%bu`m57g$}9i z^oN&B(X-qif&Tgrpe^23xr@Cszb2hJdcsT`@#Nq@2j=>R&qmx%ia)xETk?`KVyO3& z7Wb)-Lu`pcMObDT65~WdkEjs~F)A^HnRkmm4uOD)voo~WqJk*!A8N(<0RAi=`z)XV zZbf#@h^YrzKw~**Fg8ZF`F4S6J^-n%p6(+NRxZ_aS-BK@?NwA%S%bR`@w{w7&&{Inyw`lrWSJyha9^*p z`Y=gPuFm>5hOB-FV#whzs*0I^A;fyeVOM3AlrxX(o!YVKIh=Er;v*`A1gk436h2DX zkB8vyPoCD*?dg^0=V>4%cvm@49&ER~e?#)Ws(H^Ed;fqB02|HvWxZ2wc;GX(w7!F{@U58K*EqcJ5(VQsrNH{UFP&8Q zB%HQ-I$T}rLTB0}>r3*ALYBB=cZzfq4>wtK4TJmM5#0B$g@02?=^V%Zo^K$e1tN(F zqKB$(M(4?c@~8h`GPr(JKdfI=b-8gd79^~FP^<-6*${EohN`7}s8DkgcI+jo=~yJ> zQE?~#da~NufVhQaL~9Zj6WpLMWa7g7 zY=11RTdwk)KUo7|I@wHP>oFoI%rm*q21}{x9spAS1xl5xve}=hFZjPp60+E4-ueXF zqWKfv%p%^vU)UNA@SeK(t)L4Gz)&3rAtz-B>A;Jux$009e#j9j^tJSS#Ep?x*UZJL zzLlIO8QVs7Mz6__%97K=kWN~l9qSOXjSlQ!4Lps^+C}L<-i%bqwjM1-^2~QhMmI4f zs?&O(Xvc^!;~0JwE@H{BjRy&vCRV(9Uw0e~Detpw=S}-o6!Dbumwror8iK34x_X^y-XVDei`UIX+U`_muv{1gM~|2zl-##Xv=zb@`HBl|?h^j{c&V#U|j! zLmm_{2N#fOKUy>tU$OadZKqzcKK>e!{Mvd3{@2kXw%TKjHn;up8nnc|PC#+lb@gcR zNzKMw$#F+y9T{XgLM`UQ#C1!9_&#-#IR-a07{@aIw2|$Gs(L=xn%aN8cPYMx<11;0 zk66A2d=7xGFTC0r^j+nb0;h!x-EXr@1wC3}jC{%Y)3owb!@Z1v(5o_oCZRchiMmQc ztTyTheLc%LZw+Zh*E14L7wb~F_NdT*(3LLgXf~0e`XWV(ebI;376E^hzP59L_y6JvN1fqyi;PZXB@k$lu8 z0#+AB49pLTN%kC-m!0l*Nf&zl7?|6>yn;S$Scjha~ zvRahNmiTy9=AK|glFCx_CtJkkyah_z|1Ey>p!f~W+H4!!)K<}GQP{b&p@FlYTT~?I zO+)B!8&rxdbm!kJB?&E2MonHEek3jObtYQ6+Ql&Sd5qs7!5u17mb{c~^HijZH#YRg zSL$Z^KlBO~cBi>)oiNvky>RU`7-u4t@UV{`^Zrlpe}v!~(t;IyQv`Mc3tkz-mhcP9 zx5%e_Qgk1j_Gj$=fXViM{{4{I7JfJ zPoW5wB~BEfCO5shJ_t80pS?)=oZO*c^2IQU!Z2P4s~VkLL+pZA?47NZoPN)*gb$mE zCM7VH4;I?IV_Q`F%XK`I$iYIsS`{;|wVEiDuzncu^Dgqf9f5m=;k;nfU@1GLb>r(Q z3ECIcd@J<&8bb4E8!`2R1t7mNDqiOB0aE0&mGv=yqJk&LuO-}#%&JIX3%eevlr?# zZAN-WiODrL809xdd) zSpRZXV?J1Zw}dIxi{;N`5YYmwsZWpQq&@ATUkI0~+J`}xza}~$4lBNGw4~X1^P6eyk%}=qsAi6K@&%m;P z-YvPkE`8I%iatG`*&#M(E8kMKFq|~AmNZrJ=vhT_xjg`o%M#}`0^hnuQDrahw4@7) zW{n7TkREF597~Av{IC2DeDHV`%nl}5@A(Ki`w~Y=tbl4P5h|ge~WX=7c z1S4L94fX8%g=a2YgF72y!X3LUwFkl11ll7yyTw^r>zVTgttnT<_Sb>qgaFKmK!nv< zenM2uOHmkvpv8$l=!_!f$EQBKxUD04X|^Ce#(p6vbs_m3bY0-R zGrbIx1ktSz1^hTTIF_P*=1)JB=s{eiPYmmem!Xs|r8o`nTVLAgkls_zI~mU|0appb8Ywm?s3-eKoR27JdoPxc@FlJ(kECinv-8=S}K~Ok^*D=#zIDix+b4 z0mEtaF7}RGnS-skc!3`W%|xe;1VJ84l$ZD8aUL#tN_M?J=S`AEwKMR21@WR_2EPq- zuJ9+f@BV%`qGxS*ze7L!b#6`HoFDvhp}L}cp!AH7Tsd*)YQb;syy-;>|D^|KKe~*@ zOObxx=xnaQb`)r^Lzt=a{`Pu`Poyci{U!}D1zr{0uOy=P5-AVzaxx|{X=+)1_Qy!; z<}ksp74Ig@r4&ymruY@ju*NA9u2^-khl_1n=?ZG~QJqx+b`vk_)_@rY>7PmYsvPEo z{Zp^*D4)s;rnLboyZ0}b*i9EZk7f-nzk#ZC&|$`Q!N!?4T;Z1*;iWQzBtfBz13SDi z*)Q^O&Nd;Q1}MPiCTK|BiOHZBYhaqXqiZ%|%-)o{pfYcAfe4MF5wC&ppEU|w~g{ov&Ly%Z^yjzE&mq$%7mb;v`mASV(0qy=s3qyFJi2z z>Tm23kxdCSe(;VzjD^h*a>GecU{XQ_$~#zkwj{Pna(lEC3P(4B*sp?hCtqNtU+_am zX~_`Jg@KylWtlozn{1YBXY<9mt^6R_e6HffQCX;?9-)uy-6gqVS-)Q&fQh-VyXPac z?%>0v{A9#qPF6@fRCs*)GgM1Cd3k-Pg#b84N6tx$99`11Rn`|iO70K<6%{Ba8DIO3 zBXrdPtki1lDq!QtUP0wWu0-L@u(yI8^N57mEA^(oNBXbJzw`GleQ9!6BN?K|N|Cr% zQj>p(dN-pht3T$hPZ>l)gWc$z&e|W-ky9LgDV8~&;5VX~z4VEa$&bpWPzuQ( zfb_3ud6}Dkd)$>8X$h{o5~L*8Fr4=>bnc-SdTeQSy4petTxut7`k%5*d*wm3ExeGQ`>}`E zW-`KkHmTVD8WC44_=Z*3wv1%$4Rxg$xI|7%B!SPLF(8C&%jy)Z44@`ASA+Qt>d{5YhP3 z!9-39VecKptYhFZQl)D))s-nT99$e%qIrDAqukH7t?uh;+pj~jIHp`Kyn-{#Ke!pTNjro2pL0gz8IozUzlu*RVQo>RAy$3W*4=3y`}t8&t4?{&sF0O z)D4-P0Wq|w%WrSRM91e(2IDx#DdJ*Ex!pD+zfr6POj*!5%wFO%>J7s5gF;!#vFB3? zVJjnZiy)Q3+sOxoX`PV*gZ>LYk@ilT`b*vi#buhJHLQFwTnD0iat!1Fr0USm>y_sm zhN!8ql~8-Jr*F+L=*UCzDS1keFAEYX zP2uU#5<$qkkBe6iegk|; zNZ!&SaS*zDOx}jI&U1|v`Zfz1Y5t#Y&_6Q2#Hr+zO-V_acyr=jm^_n5!l~fT>KQi#;KDuu}_cRgp zr}d-1{gc8Y)JA@D+-upe@1zHIpH)z%`i}_-E7avprc-&B$#h45k?~J@^Uo_4nM_}L zvYSVB?&46jg1~D7-K)yQVVZJLB>dmQ9C@fF!w-tYtA{e(cz4pZuj__}k)o#+20};v zatn+=YwL3HOKPx~0GcdDN#KmAcgVi|!14JXJzcw7GX)&ZEqz}D5>U7yIG)$6p58a+ zeh>ksfSo0t3rjrYkAj>3XzP?Et{Dof?Ae4)|20WwJMLmjsXSN9?i+x6_SM|Ake91h zg>wzpfk#817`g8yYvUeJ(JLt&E*!SiR`jdIL(b1ZG@cF5b0!G0T*TfI^m_)P2eL^^ zGcntDmNvc5Ny2_MCD^!?(RvXuFgjNp2dgpd7eQ4x80IH0Ym;?_Uqe3Gz(v>ra8!Bk zJ;3CLu;R#fNh5EnRp74}jZuwha4*a~aD2Pn3V9w&Yz;dBa~N(qV&|mwP;?4sJ`-=0 zT5P3963A$V z_fNFaaV~C{jAG$K^JlVwYeB9OKC6F=8FuU7D6~!%mMFV^m|n)Z*m~^85Uu{FxY3|* zT@|x@IHUgtBTDW280UxC`rwZJ^7I_dx=n|&ZeOgWbNCEM95HH;6EZ?Zez}RI2b{Q} zaIt?-t%c|({E%d4`avkS7Wm1(ALMhdn)-no32s4$5?9G{_)bYTAAfdTf4}zJC08NE z>qGjSDhMfTohU8qyy_}>9jh7<=IJS7A6I2wnLU*!ttJ$jv}bQb@moBsJ&^{(+<5GV z^sgw+^9SJ5L%`ye%`XtS5tU9)oJZ=>a|Z};Fy_5ZAT_E0xsoAbgMiFJT2~WtSwWfE z=``@)_swTX>Uf?<_~iGl-*I1$+3u~#S)NHkZ*G+(+_5VcwPL>G(^r9xocS*pU{Fw@ z35n=|_&XECj_(-O_eaO0WpJiswoScb{MhfArlX(T&t2uv#%luM_#PQ~feH(D3npQh zEu&{iGEqho)U`^eCyq^f!vsbzs&vp2il=FZ@ULqHzs}S$CAxl5ZNXn01}=(ILE%AU z-N1~wcPJV0j_aK&=JUtxn4GYQOs98ei@Ik*lRGn{qh3RpVtxxBZKO?H?cKe6PR!#~ z=tc8fa7go`ZdDam7G%zGWYrRI#;!UMFyCvPxG}ANUXjEW7dnaUnNb+qyWqGq(w^3 z&+n0mII-YmSGw(fBk_NzZ;-B-cj`uz_^x6o%9Q=bkQJLpRa{SQbdv1;b+c9=t*%Sw zAdhi6&as$#x8WX48e>})#B z#hr)hi2%Vt%~_D-2dLxBH(l~JmGq)I6K(5T+SD z4NT4r598ua(BLZ6O&#E?)uBWNL20-?O5yd znB%LbH-_H;DGnBrJu0JROw<1%$4Rc|C*5}3K#aBqQDc4%d9toOdiHlb%Ombt2g*&0 z7(A$1jj{ivY|D2v*fa4=CCGfcV43@%T=(;C2iiZ&WIs|MCD$lWkh87IEg_}H(}Xr^LdXa{_Zi! zb(4vKd1>hD^njXVHX-B5R#%JW=ad%WyZLdqixv?()u`aeNwuvYL`XC~t3Q1A7(y~S|f_|=SPO>OB2CrUZ_oBWz2 z{hxRxXt=_P$v)2OANzWqwlzy+icQSVXkC#RXO=7LsA)GWlxbP1RNk$$*)_%)`J2Ha zQl1DOV>mXG)e%`gk8wG_jg|CU9Ek2e{otl_xYW^m)2D#l!pm!hV-er8IO*HbrGcf}OIvIi~3ixuq-qZJqKY&TqL`vv(Q zwMOKP2(ug$dseXV#yE$VW#!_gD4AKkUcflu7+ zP)XcymBD8sFHS%7Rm)QRvBRyO)+xc~FB*813MaAXF03mIK50Eg(&a>XK4>Vp@qTf( zuOEX3F#8PPF0#a^;zlasVwTo(=iJbrVm0vZctFQXT|GISFe7;Kz_d>wNUHAJT!A0F z_2a!n%!wBFl(_6f$)_oklqYN+AAWhE-@AO%W!kryj4Aq2?|#!YVQ0|+VnLfKqhs`@*Q+(=N>Q^T|Tx?8O>%amkiZWW17 zVO{Mp`8n1hZpPv-yLE&bqwo6u(o&aM%Y;Be`i(UXNtUC|}0Wq<-Z~mhwmn`0u7j!;la6(PI zHTX+!Mb;PdXf+?-W>|cFzm%)ETx+NX$y}`&fW2p(0GS({S~TnFB=2dS?YCuwjJhA5 zb$42}pLmQTXeVo~p#_QwmZl9~73bjy~=vbz}ESJ=Mw6c;!*y;luid zzf2(%L|O1kG5)zTDQ)UOxb+6l3F4*)9db39`%eXto$g*MA$PtXK)~nY|CU$mq{7At z@fbpd^$30$NZ|wuGUA*B4{S8-gnG}^M^rVq_f^RdxYK{q!v6^*dSP*!??5tMhY%*P zRkgopl4o#3NJSZ+7XSHb1J?4spO-PoHG}1=5`IR9ZHIRAGvJ9F_24R_LBgfs`loa)UZ(a`S&EENgA=OsUW4R)kzbnGW+8>mccjhZt_nr*?w1RO9zwG&bM3 zW!JV&;puorPuxM;!6$cLp$uABc3eE2CnU__L>{!|QzH?tcpa(bZ|-k=fwcPV4aTcn zg{pDZXG9jiZx2aIrRq=ZYXBF9LmR8scaq6*0P!#1?Sb0$fht5p$Qcr;dbJTLzXBTV z9eD3f3I8~^NtZ3A{iu57&c$j-O*n-|er)u%n9$dx&@QqLxkS4A;DjVg$<)0r_!Ax9 zYx&-M%Dp_ZQMH7h8t?emC2Nu$z_W17C!RXZVC?B3lS2;sA1BxeHE@dUR{IBQ6L_tNChMaoZ)CkpL;X{b}*86=9}RFz>QCKaK`UOz0i z!t?cO9dSH`dPkAnL;5Qoxx}OCqQi!&^r!f%Kd!~(?&{IR4Vc11%ny0E7<^JShufLQ zby>D4PMyVz4<3(BfmEw7yeA3^hDoVZkDQzNea9hwqh$$HwXhB47XG~i8pcdaU$`ce zZp|MsNpjWG)-7Ls@Jq*~0KYAOiabg;rskgJmNG^>Z%f(#YcZ-%j0d{gWPC~-=Ugkl zg*E08L?8@zOCZERB-Ry=SCGPkiN&?#R~CM%6ZeJaXS>()@A{6KZtd4ACY;pDvpKEW z|G*AQjgH?I7DHe{kUt5b#IA0Kh|=@3GBs?Us5O(h#$ZZVYePjQ^B{g&{4tEE*Wmw0 zwd=9*TQK6hwvo%DmKjUyFOF9FU5>73S0j2Xx7a~BfWGmd@!h~$AQ4UN!uxEh)Wi2i z&n*COv9Pm?mJ^uSbEM`C$BemYc^)0pL@Ryb-k~-++imz@ijjNtS#*0?M4`A5qIei+ z+>U}Ln>I58_6gpEmovJubM!9K@p@!gRhUs#~EN61;}Y; ztVlO+rSSIm!{kr{g)V9Hu9CLe)dZ zUFx9I#YPpZR>2tB@Iw3U4pM3{SW6$^FtkW~;m>Vib!az6?6))@Q)>qfhfd7%3`sQB&$1oC!(?C42#1a$=t}Ux3eKH zNQ$Z_?{k&Wo{|%VmQZ*Ubdq`Szypa$FVzyfK6`P!1)n+DXySOuOpXgsTeBr$n#GHZ znsRJpq#Pl*{$E)iezo;UW0YY<9yJtW+Kl?1 zEI<51g)Dgvj$L&p;a~G}a=y64?K_0tT^D6>g-P>or0>lbCI^rPY1~lcE~d-!EK|PR zL`zMeW^)8vU_HQ%f5Bmqd>@L-RV#euX5L}jQI2B+%5m{UO85B?kT#78Zk z1TL~{_;|c;i?C$)T|EqOn@am?+>nm|#hQBycv6E2j%r_gz-U7j_kTHBD$Z%cI+Q{f z<*eEw=#wA&u&nn7$=a6jcGoS8YqjNlm}+rq`{TpVV3ckYOqZd!q;tL5><#fQCYo)j z!7nBCxJ-jljJn6VbUT%(MxrV1Mf0tl{dZii&M7gRROHLNUAr4se|wZYcg;!R_R54P z_tu}H4Pr%Sy&O#F0;0&YQR!1!&+T_Y$i5VJU(5s@L+QP?b+$D_h=@LuKJ_D-cVCdS zWeIdkd2>Y_(Z`3}ozP#Wckf~{s5@BptF@#ZZO1&34Kt#AR4sN0 zX^3UlsqL);r35+E%0HBB`FkdW(>TF7n412-l@#o@K$Kusfj}VdTQ9oK%oNoOom z$0r7P`QuQvRe!!}zJ%-rt#34%{59qzxNgnQ9+~qzF5`@_YD2)>P60cL5(j5p*{X&@ zq^gwFw1KWamp<`xb~asoqpY7{)0Pf%EVq~K;i94QK;3N3Ol)bCG%F;%YWQU`u%=;^ z{-hFj*LvXPf*Z$uP3NL5PnJSThnz&HZrIhglKAW>(Npo$cRTOrO(!ltMQa_G&3g-+ zF5N)eMK#gs=e9+sCcL`Zp6f~Wf!&T~Voeg5h@GX_ol}}xwoZPJ&B5S`VcUC9BEANJ-Ykh56f+aX9Y;!y6doO5@iCb0ICXS zTpl4U60?X@&TjoTsWw7jvu865z_%dSZm;2j7(~Cy%HF1HhL9h2-%@*e7@4+0kBjACc%OTd!Z1Tqs<64Iu6l_Kp8(QpdQ6Ywv9;~{DBMR zdBwj*2@gkbGySyeI~~YWgWc#oPS&|slaUn^P}v@Wp@2nlvz>|SVV~;u25r@Y2&H?U z9FW|JFW&4MnKbMkiVAZA+dX%Vf|+r4zdl})BX0HKX;27F zPYRw%N5l<8w>oyC!6CcG>cq-oum0h$1yT{v+8v%hh*fe6q|I+%1$U=`HAy#qWcF=ualr-^vV2oSBgDk}QD^OMjKj+vA^%ORCpC9`5`@ z(I>7*!kj(t&96zmp5OZP%iCRTSC(fLsyQu={zO0TdE)Oq_dT6{IfqwLT;AdbyFz0G z>mQllPIfB+!L@D`?7Z_mEvMgJT__FDik6h~b9$5-;sObEfO%;tA=@1mIImk1&NkPV zQC^i@u>RVwLq+bpPCcK~$JdIMk#8a%byu?z zg|AeT#Qj-jb;l$7wv{b&>m>bWU=IPhe+-${9|OK@b}FKaIq4hRt-J|$*R4wPetvSP_z5>vC$PDV`8l2#YqDU>JzfCeWt!yqEZyCF zW+~VV^V{*0NyD`J82|Ht^o}4PC5nl-E_xI_){41QrtD^}GZtpfoA7qe!JS;kWLD8D zpT46za?qMN*CRhOxxh28V?3ka4%MaQ0C&lH{h?b|gf5c1Io%zOi6~-CU{Oj*es&jc zcdpHUeN9mQ@-Zs$rS+TYmdc*^*8xlSj1q+Ir; zRguW57%cV*FT{8hg|XC5{i%dil%drxv*-4^vm8Sm3Nsn0?kyR01S?l+P{J=xfjL_& zH&JZRthpawMH!>PN;fSj>sML(VgZmH5^k0rOZx?U$9-B_OqFyg_j@GR!x&k{dp)=>;UV_`Jgw3 z-7O>VRlgw$ca;vOnm<^^{9QJO50v!iMj~jPf*MpCU$z@A-+xV$b#9!H9^CP44jK>fiB7WxZa)H z17EIJQ;#Br4Gy=;Dm@dmVaDfcU$Zp|U`gU9nah%+`U2RL4)|&nHVmhd8?JlEsBZt} zI~QW^lGRDZyA)osEpadANQ#3g*9W1xz*MTd+kYU_0 z*1sl*^tKcr!!qe?H}X!=8C)RyGpx_9Q|A-ffihr!w(~DSP0f%Dtv;6;&aCkIRGpc~ zdQzIbkH6K8U^9t*hmzBqUZ&Tk-x zQ$2>w5HfsLD}f%tANol6>!t*AJD@zm9&Gy0-UtHeAB6C{*pRKiuweQEVtHtpm|RC< z6qY&1gEJvet4KL}2m0Nenrh2%Gt-GCH+0UA$CCp2w?vRfEU)!&=KmGXeFAh16Dj!`;&n%k+S2VFgk1-8lqX$uye{A z)RX1CS~bO}&PnWFM=8|jMz~!na@*+9vUQE;Kn;_mjOI$cEv21CVeJ4I zY{jQ-|ERjMte7hjx%mHAPY>NSMlbjgHXm0E9l5G-=bgRqgY8y`vUfhp$@QWiF6u|D zSBsQ7ZE3Pf>s+?c5Yu0s6DSnCM*@UDE+AMHbdcJ$SNp(yI{I zA-{{nckEdFaA^WXMC0cbef^OEUCDe#DuspVI0y7D7{P0_8P*qt$eW?Go{Xgcm>7nm zE0oI<<14q(yLdsCD*9?Z-g5bS}gF9T!=DFmw+`PKmMZ#xl z#qI?OugzC+#g-)sdCmlj%E5t%M&rG~sF7LUYA{#Ofa>qL{4xE*FP1Niu8A(ErkpZ8 zQ}OnS)On^(^_vScTm|pb%B&itKHTQs{VYOZnA~i$_gMPoPqffgxjwkl zP(Yf51l$gAzcE#l{;m_-`(cuzwdo&9C6Gv}hSE7Bep`w5T$2NMr#QaOynG?F{9i+z z%^DmJjr4~N-Sp(SIWr##<^P%Mi0Pagk$Rk`T?6&lGcV^=N-@HGw{Pu+wQ#Mp`ak)H5}&t~$y#IdFjR z`){#SX~s>U)o6Fwei|dFiHURQwb6IQpv*;zuSvL)luaf;dU${ZE5#b-nG_ z?`p@Zf6LMP`>Oo}v1`y@3DLn3!+)p?{p=_rT+|&#ZOeKkqDoy4!8z49=_rsS@|Fo| zWm<_WV%GmwI!>(4U)?p^EBSoKMlHO9pKm0i4A?N-0_}!TNy2plQ#HSfa1GD>&fP$| z>P8FoP=3v5Nxd)%>l@vQ1%*r31=2HK;#84VSaLKzsu?~!6grDIlQdj5HZA3U6&@IP7A&}9)ScHwy;>j@?+~Bd2Xa$Ka7Ee@UVDC0S7v_# z6;?Q(+e{kJsCk7vJPhOh4%%KwI=eA+|7o3hZFHRp!E0)czcfVE*;es73?Oo7J+zNY ztBF5ZU#LE2QC=qD_dnEcc+Sox=SkB#^HFy-!nP1MH+13jAZMEX3{C9_=KMW4DH&X@V`7QkL1Wi7&V0L@LZY=of zbPUgVmQ0ekryC3=BZeIOKd;f-BR?;1P4b#%a&MJPdx0QgeCId1)UsrjaVt!#^g)($ zS;56?F+g7$Gcve=e?R}7QE>1+_P!(6B5%T?5h+I5v0#-WNN5bm9IbmF`q@+We&z{z zOy<4vn<>iZQHrT3S??A(jj@Ur8L;$yK2&u-%OXZw?$UCBer>7EpZ<4mq4Oi^63442&qSsDqgaHxtbM8eZwx}wC&b&to zgv1Z%<|b}>^nAVEUJ80+Hqy-U8?zeiV=2_H%J5ODR9uMyW@+M~^-Mi1w<5p>U-1)( z^%?=`JT11*hARL6TsZSZ6{b^r_e7BPny6ZZW!Jlm*DGQu*>9ynKj2^kdhpO6*d?@E z+!6A2FXKh#TTZ-D;dj^N8M7>FT8q8w3zqs6&cg}mi(M-=G*zD8=7TnWZN7Mv9_8%9 z)JRPC^;$O;H_`g`+yBSZSw=x;sRM4go<*DM17T zq*IWVmXc1NGyLxVTF(pLFgmat&i8y`?`wN!IpqPa;FiimqE@JkRMleVZXmnniyCN= zn(84}7*4GhLI0OTR3}Ap4zm}2Pz2z_iBWrW{~897p@X7zX@$Sfht`uX#qf}9tytc! z8~315y$Sz#CTGL_M5DPlIYayvSPsD>@!%q1RpjwcZ)f1T4Al#nL*)oPT#n^a@ply# z6l<~u#jiILwsIqty^V{WOq4TXzkH4GSSr7)U;7EZT|EigrXNfsz@-SslYF+rTZght?W1&6}Q(ESR`?-kng#oE zs!dN_MSDq*VhuD;*Zk5bX8=M*FdQEE0d`4=WLwXD7aSfiM_B)TYH*OOoe0EFa(nLjAD8Vf^gKxE2N2dhMd>g9a ztnkxFm&m{bIpMgad7C}`@D(VYoSgEX1eH{BxxBIyB|{a=4fh?3x4iI(4+b~~M&SRP zt$-7ODTxkD0Ki5UM-ees620%oVj5ZgdhSBzs9zOMpn~7X09pQ$zV)dC_Y(G1A+g9X zbPl*|;VZ5@Vge6%>}>xx4pg5~JWa&uhLvCbdOXng1{vF0{W(_eB!W9V<3?}oNKNMl z4gpbeUlG<++=PkX70?7)?N#gdzHEQ)t0V+}UZ}cLuU(Uo7Q~%0yxFo^q1#=&T=Bll z>}YRP3|nSUI$eJ2Ap_)$2oOr5m+u54`$qmSyyO)q0s#%WL*qW`oq=aUhS6pLNJJ~yG+G7MBatxpT)qNK)v1 zg%Sm?wxr(I9xAPi4uqby2G3r0`p#699|1hR^dUWd%)hpsB(|M9Ij}6QLB#t#B2shN zNnhDXe^*NYX?bf;!aPJq_Q~G*)At5wp9GeGSA7NieIPc4Z;#=UDsW#{hIgETsTc@A z2Y*mv@jE^htHwio5l?3bMQ%~gsdr^XLuulHGP>PZHuW{!CvSdO_G%K$u0VjVUcQ#-caAtwZV<9dVa1(*i9ga%%e9(B%`oV!xN=m?{2Di}>Jw#oCsq_RtU3;oA z?fZ2DOQksLM5ahS_73BN!ZO%zg=5nymH>i=`K=}yNB)6d^K}VBg1$}X1RPzJ{w7ur z1$(*XbNsZk96!Si_NOnG`sN^WkKtRRz6cc&SeQs9)+&q>XiW=uI#dXSHsA2{vWpw5 zVE(>D=C&o~y;0R{n<5ZimklxcH3L-3fv1IU?GSM09LyZne4FsOAAxd0p42&TjCoR# zz}SkcLM(|mE|Czm*eA3iOo*%I&G+rW7M8+e`kZlg5a|BW_`@h`=O^k$e}B**UmPVr zoMKhqv*VTQom+c2aM2~+RN+z}%Ps z$#fF&P)=@+09tF|tuvFbk&*WI%j)tv9UGYSnf zlCy>tP>7F#h~FZG)iM=^AH?ZPc9s9N*$s(&0E7;AuS4kIm*|6xnbBoAzUXxwXqO$3 z@tZ|vegh_Rs59Xa{4|&Cp1^rg#3Nw`Na4A7Dg__^bL3U%h=NlMMrmWI*xL{nsck^n zD8bt~0(xbyFr|21uh&J|RLiB1C}XdQfS3IJ_vB~lX#98&QZ6WtAX66Mp#if`aCFJd z=b7WX07NZdn9BJgT%p*+H`2>yQ&@iosEptf=wuss&RJ}AdcAECi3sVUz<@}8frJT{ ziS*0G#I;o0neT3QE1t(C-&VG(poKkEF_@r~SZj4K6Y$VmTY3dJ$5pOMV!{SnN{>n_ zR*%b6zvoXRlqWDy)<5poU(Vt2m^^i6s2%rIbbJN(ZT z8^Ks2MeZ$aS7AOL&oRH8NSPwei7L8!6MH24vz*VJ?9Z}RITaRGlFMss_=ifr({7)@ zfR_i2+C_y)d@Sa$B3%k)a-?i=@mWaoK`;3RJXBs5speG3%v2+1X`XVF7Gl0602rtQ zlDAmrFO-)qyr=4@?C7w;r92f%>VV&)_4N;L@jz3qh2kVq#neZZQQZlCJ^ zu4Oo$7|uZU1nb}TsUq-d8JK!XQXOmZP#1w60f1>ZzWX*s9xAg|of?X72V$ng9P0aQ zaql+7hA~-PgG(8xIGSX!^XOX}`BYuJmHB6e{!~>}eSH5&2mkYh8OjEs9Opu9tWPip zs_7mP8FQ4P)wJ5M6DYIO96mL3$a88X3PeOXdR5T#+)btMJEW3YK8F8G9Whbhbtr@? z%Iw-If*-TtCELr`h;Ij40|JG)YZ+xXis= z=geL4E=4tcFBZ?|^zZ|F{O);KO)D8j3OUIgpUa@#v%46N;=l)|}_i-x2)T&okG4&>6RmPBuR zfdo3*b&wj?B>j*xK<~EFj*gc=x~Qy_$peQsgH}@_LcuvROezCGUO#K zQa750fb;fW2p39`;#|KGK|lEp&^%LN7`Z(d?(itFE=p2G!JUoBz*>8n*S~1mx!_U4 zN`!F|63?@)M0$6^H_$crOI{xh)a z)6al7n)f!Q;x)4!|AE-mjolQGee3(bJ{AwAy}J)a%IYqPeAPbAf@sUHFKed)lFwje zx|ZxH&)cUK-c!C}l`pL`(S~xY2&j`607xg2O{Gf$H6k&0F zWqW;}!7;0}6ln=0?}(xt1E%MCIi(KF!jVFV=X8sZ0FTcX;JOna>&<0G|Dg{o>hC;d zZDae=I{uK2ZTgLE99N*7)PpTAUMiEj77%8s6*&U7Dh1$NlunKG*QZI@l<~buIf>dW z)>xAF%gq*FmWNtC1}iG<#*-sr0&*+&pT`Fn8F0bZPu%>Sz6O_Zgm!W8)xFN%R# zebhI~PX`-^umh2BWL8`t_VOJnF6L+~$O$vJH)hUrb%%*|>rnnUh`md!BdjQ9MoW_u zDSV|MDbiVQ#yxO{-Z%9P&+qX?(as`LVC1W)K1@spdD;w5JJX%0 z9yU?rK+=t$2t3j)t>D}%+9c=HW4>cvN{74_S9zL3>>j|^|BUUdXxmTelm4rQgPa)h zy^<(hG5*G@3N0IKi^1wDNb|{yD){Al`QM={PWy6tD{H{6q??cE zsLPl?kNyu*U$Qy36oMw@CdF;|2EO+C{PVto-gI#fETn@bvpQjl-jB6WIBORQq^B7| zV>&?WoW=gbO`cZ+f7gw8Cmrv_GG#L9q+e|-5qM6@j!Lb%*=L1eKKA`OQyAUak8x$2 zRJ&sKWT9>qSc6nLPuAz-8|uqYowWFB4Y8Aem=Y0<2Yw|-6du&8JQ51bji?7ptiFn_ z76~m9mGFGqyI5ByTenWiRiqA=`znHtiLQ1#kUvt#O>D6-wa}n}>0*-?Gg3xsJccnR zd!^qkzv1|fNf?pbd9x<@2WF~M(oON)n)+zEJmD^oIiexc3O zSg6Lk0La)SgL8vy<}s8wKd9Usi$A97Q`!D{W^CT-nqv zFjZ<#xp4`PBQ&H0kUdTHoT+&Ve2J>(_0c4a0w$u{sR0C6Ehn)44DPz{@h5mo@E>^t72jYj0&Bw zz}?1qc6v=I9WkdW9F-!-!HB2o$ijp??FlTcb{Y<>s0ISb2TkOHa;;0g6-K_QE7JTN z2~;gYG{y5N!39~}n?6kO0J@FjecV`825SD`xq?I|66BS9x0B-mUcYuoIBXHP)7~E3DtpI9Z zI?^%iz9=3U?2CmqS|xv^1dmEHJD_zm$I??e?5ak&c#nGxw@EyUvTV=>B{}Uk%sdrt zz5Bfi|Js&m`gTd7OX#2a>{3S>7Y&34?kcbxdY|Dx9_Hiey8#UGdUJ0*%S&oB39}az zv0|{3=kBC%LbCDjP#`6EEz5q0-9pPwoP5-qZ$D8PO|xZ;fZ>}ZyXqh?(o?-MC*1OD z|Hat8!#9^_{pXx@t-fYD#-nSikk1!Tk>S!01JVSur5z^Cj95e@8L4INidT0UB|0=y z;h9e$;wq*)Oz+-UrCvj|3Fr|a=9OCC74r)?Xgmq}TfILijq40|j^K!3*?!fnW9~`y zv>lusDr20z)Z@wA@@B#~dl^ET z?RWFvv{mZV63O$#d}PvPu6s*N^Mp!>y@t4};{|N6)GUZW;n$nxxgTaBO`+%d#4R{% z+AWOD(cw^|2)8Ocrz<&O4jU>Vp!)_Bb~fxUo~a83ekfea=b@1c0@e#3h{`|P*2ZeK z?LHzC$V81FvB!Idg`-~<_84I^W%q+BP5W>zUo4`3LvF0Wpw)c$TE|R`xab|)n4x_UeG0;;w<@qs{urFMjsMfbpY9u47T$2y1KpFvH^?FJ=P4SRWD7~ z3#(NmM`={?ej-@GaN}Q$w>GCBJG1}_|HK?G1pw6HR*rPwp+SxrHfWY#ieb`8sJ3e$ zmD(1Iv+Ud6!)18(hFH^>6357o2f+cEi6tUQqi$C1pp_UGw`zs0=yj+I?pGhDj2!$M zFa$z^Sgoh2=VnB+aBGua`UL6;2UkUGB();3$ToRO?Ui0A@D>PI0R5LsQO@zn2kyv%=lHvJ*yVKSqg@yh9(_=!YQsT?9$PARPh=pfsNYK*O*bRd)T@=&4E%?iXv*dl^cT_<@~O2bSmpWTX797S(&2_4;e z0o^rx3XN(6p(_s`en_jAj)utXyxG8@Bn!+S4Lij{rA5Q?u@&I^BzsU2+4bS3FZA(o z2iw=gyyrS`1T|M)vfj21as!e!iTCe``QmQjvh9VmP=bC#562i%1mV*1*jpCENS z?yw0lc`U@`F&By@z0L`M#53Q2c*)yA)cyg3;;J2Qz_AZ3!;{HOt+qShLL`A zSGoRBEQ|VFp!$gHP+9(&%QBHY6F6QI4^wEyyvKV9;Nz*P2^Y(2(ToIf~%~NxBR0_x+a?v=L?5VZBc&sy=;Ci zhBHb^0(=@WeWNpBA~um+I%&11APJ4EM~uyO5iRvuqI^eLq>6AM@P7i!u{l>QhAhOW zzp;M1)N$y|2_n)`j;#4WtB|h%B5CIe|HV}mj{VwAi8`2IhhVoXmAa1(Sm5|L$Uh!l zciFJD0hz$uTLbwGGnqHkyt17VYUk3^s$JR5on+PQHu^VKml|PD4i7*EXiy9YCIR@H zTeL)Iuym_dpHGu~&z?exXytO5*sU%W>8v1Q*)mZ9nGYMjt~fkU^nY%L+T$&K$3MUV z)C@#fea_Hh)?Kb?@dip?Z4H{BpR=Lb8_+VL&Kq zpFzp0;$#=Sn)W~^H_z}%>g>x`RShu*loLB`=*oWk6 z;MTZ|_;}<79zbi?qlbVxN=p|a(P2MCM*kytQla;xv&bxOhcO~xe3mF(mWZJL7VNEk z1JjGQH~v9FSA3Om5W!$c#v@>!jgI9y8n7I})mlF`LvK--7SnrDCM#yz%Jzu>VNn}L z)uj(g*!L~6>#c^M8b;Ab>aW65?%y;%-BV(!Pas;v+k>&$rFvR_e=%lO1qw|maZn+~ zwPs@SMsTCr@5E{JH(>=NL8Tz#IRP48Lv?58*gnOS-E?@|dum@`dFR=yiarwQZx*St znJq2*Vz~>9u~nc>1omhMtlVN-R|=fsc64HkQ_J;YEHajt3(B&%!J+1G*J@Zcu_JO^mYK^JaXoB&v_0;`Fh{%#)nYY{7h*SUS{5BMon zAQ|P=PO?zmEw^a1S3X3Ug8BYjVcsP8a=HBx&yfTRjOBEc6Db9Ls#o}(jahEsG3ET4 zk1PEJ80;<~(Lx;GMsF&UJDPXovBpR+0Hx|IeT5&A>H-OhxS>)mM>$=QAx}&FXc*Z zWypXV>}WnbV29ZP7wv8adY0;c*&ER}i;bN${bJf&`S>2s*>yB{d)D`)nu_Lqp*+dJ zrkCun>WJ%vw+8@kB;8&jBeW5%oN0+=SCTxznjj_B;c&T#rNqc+IA{0n@+tgO@R<2s z#Iqs$u?(exD%qHGcJ-lQ1w&{#d&po2xvHB0_On&STKzCm0dr&&$NRlD!Gbg6LK{T8 z?)e5~^*xX0Z0?;{=R8N>n9laDtS`pF1{yizwe9b5*?DSxaqrL`-aN~oLsu- zR3Rm7jRIX)7s4N6@s03?7al_RK<+4#SOQ`*eYQ1VOuQ>DcS1qw-4_StY(3m03|DRo zKHzQy0k*ZTLX;&M^XnqJbu#blN}+cwyvT<~l^Et%fO&U0rrT{HE~lEVKs3rT%MWx} zHm7Rv*5Cy~1{lgC)Aa_mbKC)$4GPD!nJ1x6W*xbzOnl+NfGRqpj?L3w`mk6t7xyP=6^#(%JW)z z-{zWYJ&(5R<3*67M$dMz9p^3#?guj%4>BTPaa>HK$dp1<+mN9miyl-xH|19Kx?g-N zjSQClN@3W90Z>Oi5z&wAr40syB^SzZ9!;MywXtEQ6m4xXKV!G?v{Fr;Bc=8Ol?8R0 zDMs9c3i0{855X(@TG@_gk{KsFtAMzdB>jGp{ z%wFksna*El2X#Ve!mc<3-Z{~|bdj$j(kvnQiu4Jj4}HeY1ph4%JEuiBxC1${+V17P zA7yj@a+g9gn50txb=uKGc<(J};IU`>O1eekwyixoqqt+Cp&6&>^11DQKR*GA6x{_~ z=a=*;F{gA#V=`1)U#0Gm=x)aMdj~|)l-7RT&e9=s>v^Y z{llmJui1g~0{$9ENdZdLM*@KD3c|j@LhKM85F1W+1DCq&&}V`>J|PNjM{ZEXF9omU zmtN6hkJk~&5Mx-pRhdtr@j}rm8&pH zzvSJ(TRJP-JsAZ9@r?=e76+EE3hOd`3!0(vRLgQN9-}{68T0?}Xa6a(e(KOixqx8? z>H>C!`ot{|e;nKgigLC2WiR@v(UZp)el~5vQ0oc=zJ2w+!=CLU`}Pi%v*&44a&}}# zJa;o_RNvn1`3Ih!i3puN>3^SLMDF+aAT(L5{4yKqqu-cv*}SSRP78d+c%^Jj?fhK5To<_ho(-KhR=h-&bC9^xMNT==rtb6ZkheLhDvo>I-pH<* zQK1(~X-rF|-n;qA_oNC$rKlpW15?I(-BdgGR2yEmRBeVyD>BwXU!1B!g!zP}Oz>g1 z+MHinn1(zJsb=M$yyElUNz?y&6fjkLT&wCa7yGj;NU(oYsDoRon0X< znTxTITFXVaV_8b%!4?&=#xtp#(kkiDcD#g@WF$3L}Giw3U|jIeicfBuXR!+)@0qoX3t+a0Q43=7Y4zpAfA_JxD`D; z)peU|AYSxP6NC?6rW#rkGNfOGn%)Lz)xCqNYU@hfa)APL1&a#!U%F0k1A1<*=sPyw zvC|%(6yrW!CBUn8-JSlUV>2X?Zqe(k_0szuuS0ys0sl*6^<#WFp3C`qc_=V+q$lT% zeihy<$<8~Pn&>)*wY)pEZV!?5q`Oqj^NJpg#{bAKLxqj8{QF=gJbRZ)E!?UL`!2D1BrP%a(h z^Jo`AAwDf<>1Dy_w9O}+eoI^HUW%U>_ljJiDPXm zmA}|ov-z$7z(2Sq^)O>rYQqReiq8CaNVj(AbC&d8|7ES&d@L|i0`Lq0_Rflbsb~-% zIa~qWiBI2g=n_tXc;`UW=3|8n=4YQP#}FFRbPQ^Dr0P|^{*j)Dy4IS}?ULUu<*Yc$ zu&?hfXdhn@$|LTiE|lMmoIj|VOY{*bCUpFzw<1H|=Fo4O*KqaZXkY04$y)I4=UU5N z1cEE+Y3rO(fw#=-p3P;y%`VC?3Fkj`{V_`Bh2{&YFr<=sm#9e-eWQAilBd0Dpe3u>mp5C2p_!71_>m{sH`OJ9Y2?}!pv>rjc z4{SI<`=m_n3#)!1&lu?nr~l>uhJEyh+rDO4{UTU1=Vb^<(N7eH8=6pv+LatSAZ>CZJ`-g5Wdc}K zi(AGTsw6Df^HlT**|0n!dH^*J@hQ+Fv`i&i7eq`_(|;Nq395R$Z1czQb|4!3hY@QH zrUhfBAiDgbM-3oZa<){d&4rV8E0mI7Mmq8j~&ywVW)+7fJs8bEO|f%U@%!|-`7o|lJ$#vEHl zCibydMB$+hw5}!$mXztAat+HAEsr~>eSsWP$?O)325y@gP)tOcMMjC2-lCocb~*^h zk^7cr1Zri!70yLrnN6MZkJb6~SnF|~#P4b?HIy^Ew}CaXP)fU(?|A=;Ss>>{*mo~Z zZxydM<*Po6^Wf^pe=AKy&fB4?^XxOx>ISoC0kd(YgOBUapETv)G}b#RQHI%>MnPml z5WE9OinIq~T^0h&C!U!MPCB4Jxa31h*d0eav_@C`LFgiGsTp#hM}L#gh_W|rFYOjb zx^OWDu{?&2sUPd=d;eTe8E)Tm<1)pJbfQv{CV{F;y1~)~hDneT(DQ7aph>|f)to6X zHxRKm+xHO!*bg@i`xcin+4AeeCgx>WEhY6!pI!OcHrLF)(7W58r! z5$Izc|3cg_c!Uwvh_6YuIWOWrpN_1B_^eKgP{ksE(A*=H>l;IBk(K8ch&kjj9Be@A zr-YPW$M{uAVSLK{9;#>k>Jp;mr67k*FW#1(AH+ z(7DT*E=c5iaXgbuPf$|+{+K||QPOH%P-Vb!P7X(4tYUURAs-k2y%+xN3}E z26+nO=FgGmQ?Xi9QR&r{3({F63h(sNv22v~3v*N)8%a}tZ5&%vhJ7DCEg5oM-L|Yz zMRR`2OoQRlaFApjip3?H7?ESJ`BV@(>Um=A8RF5QzzeLz@I|3IxVrB$3M^wV>-8Uam?WFBKU?%_fL&zXJCdyE9PZ-`*7)wpykDC^FNnx;X7Yti650#Fs(9ZXg zeGw^%H;Z=tb6AO)GE6ECQ0qa1eU?UYDB7Dml49nN6 zQ$ZE6WNcs=jjVcMYu{#xq!0dzqhLwJvs; z{Q2@ww_OKD`(onY4Fg+prV>jEkvgwH&PN%(Ph~+!7X4oXe5iEnEv-i)ow=OdWIddq z7RPWACBkx?ScPqKSl&Vu(JAAP8A2wX%Xk2y{xw1Qa}}nnK2JHUh_QC|I^qLIMmg(f zZ=*#1t`23KFjW3iiOOWwQNl1>B#Y1&d6yKOeh3%3GlN+iyzmn7>;@t_FC<1cDyGeY;v(yPqv=cW5DtrHK*PQS1IGNgO$m*MY| zJYD3i>4gRBLG0_%sV2}bk3ky{nqN?(z!bAkV|g(tm^UBIjjeEh3z0dNhr&{w__SPU z=%QXtx}SdYCA%(FtE0o!shrY>wtSS@qd=lN{88n;5kYsftit{I!ho&k?-%JaWp^T8 zU`0b*H>|b3DGH#Ch|(pBNaURW%F&fKrl}NYj6mmF_ri8>?W2N8M-c@|_ke?i@T zlAXU(2RJFHhF8{8?n?(bt$S0(Um#AO)|pE{F`&YR0|%DDjVC2W-XK&Qj$Y7yy^N|s zm$5j8>C-Qe`UFHW6=|{x;>oUsjZaANnf4!kMSh0~=o?@kpUcGP^B6MODe^UVl{ zXeyGZAC-)$b`jL2a_FuuM5giN6WP+kS^q zf}olJTWatw^8Dio)}^0pbyzN!64{RCT4V@Jk0-(rk_OSO3V6XmmgNKiP?Xw?d7tS9 z|3PY-Fl9y#y{5-snwgT_FmYjZ#*|<|AR@dJU^r34^cL{!VnN=)fB?|HujisM-UkW4 zL5FgWUpL!lV(^`WI{OA_Xrf`BIq1|Gn@c?*Ab8V}y16(Ef7 zl>I9#ALwDoOUnLfRjJ%8w#unKK`eXg+7LT%=FlDW`G+wWY**MLIaW;?Lo=gzNsK+@ zv@QwU2EgLpOEloQGI_;3=?4%Or+)<2Zg7St7GsYf9Aos{cXJc4QyRby@V`y~Cec#p zqwv4+ekq)Jdt3!)qW~rQ<`fXmfz>@oJ^kNxFY!(l9s%+6+*j2px`aRWA zMOeEd90U8Se0%0)rX{m1F~}8$_W_nAtby168^}Yo#TTrOPs%3OWih#@26i3Ryl2!z ze{MbdY6y8Ac&BV z^;;sU3GXJhfi0Jm)YoM~j6ZgeYX3q0M?TSOK3=#a;#ZzGb5l-Q9|Q!Rg!iHAsnQGGKKrQ-IX7<~LTp^nwI z84rk-ByI0B%&i|G(jGOTW(XkED=x9igyB!9rg{0fm9*Jv2^+98(jfUk(ML{UYDG3I zqIL&xq zi<@g$O8jDHK4vfa{1DMtiXVh=*$9E8hxr8xm(=Xmq6CeDjR^%pgi=ZcwaHH4??)?F zbT5wq0)K-w9s?kM&^ z5MqC_<8rzJ6HZ-hK6-9JwlrqWEsWU_ zR-!MW+T$2cY+06lS$#%;NO>eoNo{IT4l~gE}FyQGguBC?V=I>LHw}N zKgiJsr^hoMf;!sCcHapYwab8?(?Kit0s4SVA|DQ3sl_SC6~)N}lClmEf0Qcr6PT$V zk{&=)4n%Jcs@4$>n}OHDK{Jt1VkU$P2XuDVxAcxatwW0E?ny@NH5rF;@#zdIU~oPl zF*W1eZv@YHi1;+)z}+(+Jg^y;HF77AylbnF+|{2@C4DX+lZv=oM=Yf7O)q(@gDMs5 z)%m_E(MFsyz>%;^yx<@-omHbE%~n+89v##A(l+V(%h|C(+k+(x1R}m6znF=14yNd8 z4@T<|;Cm`a{~sFg^d9|xT)>vH3f#U@A!9ME1W<7%6#JodxE%pq(qk|HLl6DBFZZ0^ zrW(oR&Ct;j?2E~mtk{A<0qG>#SHjLIVGt9KCq5xhltQgi#?t$#7j3OHdOnoMBwip6 z)`KCn`ZM2&Hp9)SJ(-4c^4yk?eeEBlaZPJeI`*yhC;CTid)f>vSJewZmJ*W&C=BQI z8#!#fi+8zjBWX$WuIA^G-iEvhcgsu!JxF>pq?8|jVbY_d4F=O@hya^ zpL|SV)>8U9CI`n3%Q~MKG+X=05w53Qm0B!`&s>yzYMA(ImepC1sW{aX27(r|y5s)_UDOOmi@&~i^0;T~louVp^lQh_r( z``fgoxN88~tK|5u0366ki#S=Zu>&G9B9H(f`X$;Kk8nPcEBJ4s;}J4eS}?HTdB>*t z^g^La>8EpN4!!tHYZ(iVD`cmKQE`Ys#1y91Yh4*iiU`p85-0GSz6j0qW{*_rz{MoX zSD-c-dvlY^%njsU7gd-I;-2rb(cgJt#TzAjfA-oY402J3$k~gJi0c14RzdqC&s!~U zO+Qu-ZjH|3p5{e(7J_cX)<-CbY8L!=CG{{d!+aa)&w)uT1Tuiov5mebQ8W8%dQ6-M z548gl#VEFPGdKD~`a{lg9xYkpS!|B%eZQtT9_ib-DvGdY><|%O(Wbg4+VA8N9~s?5 zyatv^d3tgE@5hQ5(cRcA$Lqo4;sxY$%Z5ptR=kuD?9jP!BVMDE9mB5>VgHgT;zV1) z$@vsMhu`!oRaD}HkJ`=rl!lSX*1|TIGnmvDa*47%N}gjnQ-a^bEZdlZ;(ZNKS6n+h zY7lSrSxW1cV>mXiU18gLLD%cJ5b#y3Jv-2TIN7|F7;Y^uvBk8tR zCn-pl$5eh*RP$uc_`4G-0Yt8?pwdpuitYq>Kj9a|U$oN2c4<5V9r$oNh;W)q=_jV( zSo^OMIuTv~=>Wb84}byKhKIYA8VJyz#hEv+|AXMRBFMkSV_zK)SDd z?~0!Lp!8eOevK&EimXXketHC?oyaoG1~_)H@mS6Wx5=mbYP^BK8h&Ebv9*>&nzhZlawwk z#NmbnR?Znw_Pwzb3y1d^G%J3%XR;t@=Gty=WF6|Tjo$rYk!haHkQ;f&*C#?R+@?jo z&z^wQKNl#LLed;}!<1^%&AkD9tY)c*pR(9|Fyy7G7#e0>Q(Vdq8q5-CUx9u!xo^eM zPVCuOHe=AILWt-R5KoXZiobHT?B(Tsb-#bqG8eR3@FJ6bR-I;2i$&%Z$tc7LdC)o*A;>Sui#GJo->xuMk;zj}a-p{peTKc@J^FE;}Ki<6LU_r_%j z1NSid=+;qK9YHe^S0N{m4j4=w?#U6o{k|vmV<_xHfG^=aa|IPACqft-y;oM2*2ZJ+ zzzH4GW1Z1FExC^!)QAR~Aq+NRdfvomvSeet5mV_av2yO&0t*pG^-{ z+&J9?e9kK95dG)vAoWB8wDQz4$j3ShA;_9&goEC>7=)UUdXR9THEwG*u!->OIOc|Jaeu2p#9?y_1t!%P7A6V5CQlj1WC>aTy0U?S!GLEtS- zZ5GNKhbZ3TF5n{$eqEtbE3wIZ>B%)Jz8t{Ugs{9kNak-9ReXOcQ+$v*n6z8U`{f7; zmwXxto5R4VNwMxs85@LX^8C<1SniSM54wVNh);yVFKQiSKFtf*q03qik zL|@YsepIC{;{iLX;r_S|w3gy2dS!Bb`0wq-)iGU?V(6CNr)E1PoGg-@;xzA9(kM@# zgPyn>7P1$p-thsJF36_|qU-S-KdLHq1MBif`D!i5cLZUIVK$Y2kj-qtge!o5DMqT< z2J^1G4-|2zaZ`$)n!}Km8eX$1GF^HC>A0%=B&!q1B`9BHiiYHGQk53M+<}j>Y#sxN(eyO6xe3kd%c!5&nSK-U2EL%s)J58qT`Lnc#{YL=Q zmu=MnXX9VNmfoSZJ{!7C11+?t=FCkgb)UBgypblDF1(1`5iW|jO z93Mex(Pb@q?C0xY%I*5xessQWMH&Tf3b1AQ+Z6#DPzBL(tBDsAjc=*tg_>)@&jLJRFmG-OshcsS?XC>+ zw`K*T?hWwmqQgI{BV0@>w;%q;5S`A{d-90QbHVI0+b2yvC6rS&l>XORSed^UbbV4m zp@IJ{Fy7A?qj}v;HO)2!p*~GCtp=H|Rj{Bt0PjZ-)lBWRyU>k0=IDL)x53&^G zG~4;vm-eE@U57VyPEs2Z!VQ3E8)?hxBlGO0>sz_4M;B*8H<9jUPr#U~lH9_Y{nOhq z#iS6nHd+WAbTqHi*8AiZ%*6rmOy%!xat~0(c`EBBWdhNso!%-b|zaQ+*?9@*R!ZZ{++Lny|OlV95K{EoH70^@vefi`fqv z8>^g@-Yz4eSHpyba+bQG571w2{}{p6{nFK^*_jovLQY+#;sDF_m)S)r%VT% zYLuBb!uE0_`sczH)3=@;Cp|KQN~)gINu^wz^V<^qo+xItbs0QFycDqv3759NSv2cF z?J&Aa?T64n`uMvyQFIXlPYl}l$G@v7QIgQH%!7beUoUE@h zIkyh_p{V54$}9Z`z4rev+w^NS3Xr_$2Hwq z5}g$^_W}vVL3on2K*H)&-0ty|HSPHWRLKLly8#bD05rHGF+|Wr=4W-t8*8EZ*)^$g zT%A31+Ef8wwOVU73gK9?0x!n0YY^&E1Q3OlVuwKQl1uhkV;+?^YnoYXTzW@Wqk+6k zdH66mjquA~o|m$Hr>>#?k3_DRQl8tgU)`dMO)TYFf_TJfloyn6fQ|bM%P62QQjxE(X6E_)Ou}TV_(D5c0 z8VBB4BDD7>!rX>wgOcOAYLt*0?hD0teUo>UBv$rm$GIcYSV?{?uj#&v%MOq1yjdlQ z`T_V58^$%$#a=tK*z>8Z0b*8~qpje{*IVY|Wc4V?*p9~M?v^nr)#C-Lu!fLB?b%-g z(y$<$1EBK=+Fdzx_$4tj?Cx_9g#-L$8i$$nF8~R+fLTa4fw^Zlg^$&5pxkWfC@H^3 zl$-Gw449ed*8gMj?l71<1vH(9gNC1J_KJc}Qj=qEaE5*Zn81K{i8$>yMi${q=D)%s zSU3H-p%6si0SLjJ&1Y&`{?fa0Ql{#Darx(-f$5iuM0yQ#KPilp(CPe=jMYa5Lq%)U zsJl!&`%m#bsYARk1%hFP@qQwOHyD0`C=2a+)LfNG|L1$KOvx#Qu*Yzb7{X#k7#m$8 zn+~n6it{(Cm9ONm@Y?IL+QQ8l)J4y=m2>D{4(RlZPvow*Qj_A!3i~FWWLV88oj-yl zDEZ^U2a0})PK>p8b5!qM^`hk%5Zs|Y-;*49jcPz9pq;DSe6uZ;U3tCsLkRcgAfmpB ztlqWNO+`+5AO5`=-IaD*I&|t*&9?3Wp!f&Lmfn}WR^q2)%(z|&?$N^)bm2}a$=xO_ z)WdHxNO---JOj>yCra2$SgShFRxd?Op6~sXf#QG44pJsIw4o49krT0%XF5J1&$9r5 z_e1Q~v0&ld`goF2)o_Ob5Hu1O#8fR}Gi_Xkv4%m6f%}19IoXK-X}O;uISC$4*eJG! zqt} zCqut6$CI@NmX#l3Ngpyv!Nm*c{@ciW-kUHX&55~kc4|zWkSd63Gsd%(58=x`F~usw ztp6akLx15g>f02P{tbh;1B2?1H}6^dP=v(swRu*rFH82|%9BT#K^!!BAcXjh^T5P( zO4@Do;|}(A@0Q_b`n!WCCD?Vh0BLf$b}4ci^oof~+K%2gs43oag0=S^FWIMwiMKH9 zb+yCX>U9N|6;AvT!z&_XfS@$2MC7xojS(v4V&9ySx^;Rjsh!PdVC!;I%I>b2;(+8v zHu4_dK2uyvnlU{Yl2IlQ7I1|Z))Xb=nkSu%CV_lYSsq7ru2uPDgF5C`N2`Fg;#J;) ziPYNs#3LPtS+HlVX9ks>1b&|s3DyWLKcf~N~lQv$t~9rweS6z#Y3jc zde)X$rBH*CRC-%yd+AgCypaLTNR0OOvEMcasF1K9! z+8^X)h)N+!m5MDVI-hM?3Mj%}*7?@LhCjow@CC11(Rw*P!aX7kE(zO*BVrWT-_g6J zQMY*ttVv6_wJ@ZdRpuO&Q`onjSo+0j0YoDe#9zCIq&MkX>TP3u3oz+ks>BoBkxfjy z?yzIuO3)}){!;!XwHqtI^MmFUGXc&t+Ka_KNxRrb2^0%ljpR4Cg{b=b?AzdT_3=Wt zx@TkP6{i|K1e33&fB;y1)}Aivb2wjRZLT-os}hs-95Z1x5zx_D7{b%cOtnnEOYUv>U_65b~^m z9vCqq#)@R|qd^@N>pYi+{bM|2HTNJ`d zokh4p71t})r3^Jr5Bq2$qzb{y0E2_=F(c}Y?}d(~??uAxFn~(YcBLvZ8Qu$k#NS>F zKDKN%X8!S?U;)eAZ_uoTX(>MAreC-~lzB4$z<>l>HY|O&t0L@N-%bjJfqQ{0%8B@Q z-uFbQ)I0PEI?6sJkvo6;NEMIiLVur z1>a~R#Wcz6HDS>VqaZawiUUXB{%ScimpibvqL5MBs0cfhI$M(10X$Gz+W}4I3&w;- z#ji2ZmPMmKwSEQL*J+kk^@d~e5ELRf$rRDj)1D$s@jxoX8%=!^HMA6DDH)Wf{-h;y z7gp|+&5R-h?FQY1ru;4#M3nyr>G~+Gw<}w3e^UstGr++HkTh5sN%H2xHl4Wr8|R}Z zUO!z^Rw`i);;+IN zR>SA3brbmfw+HW27*i$w@~56#GFfZDLHXIll%AuH5vacXKcdcpt;+U^_M7fT1nCax zmhSEnB$SYnknRwWZV(WpJ4BF@?vic+VN=rG?YXz_|D5v$ye@UmGxyA_^;;lN96dtt z%S2W141z0dz4el)U@n6N!}wB(azh2tXap}cjaMC*R()DW@EKHp*$~ip(7r_Ru`x5+ z2LZ2}U+GtOssbDzr@;|fjYF&bb%bbdImPo> z7R{SvTAAX)UQ{a9s56d_3C>#G6UvL2RP61Z6R7w3D!w3TO=u`k3t9ZRkf6zQVYbe} z{Pkw?uN6QIe-0;t^FA+M&C;hPDh zF#a@4XaTj2B#%{nB&CjD+(nKu@;RQ?p{Lwg=y+khs6VAglvw#Q zGzokirDUrOn0%H4S5I<=p=~w^^jS<;Tdms|{H-N&qP*XSWxq+KS#NqhuP=uO7v<*d zDU8LJV!vCp4v4nAU}LmG|Gc*WHo!0yB(&TCLUI3#(t;O^9IOPJw(p1Ie$|GB788b9 z_=>+}l$K9HfFXpXF;4*2zQCOBTW3Vj-U)5p1@M^eh-LJyHa^_uqxj5PSHVo&n&%C@ z;J7QW51@j20J%U866o^H7caNLJ?6|VkqNJ&;3{=c$ywFij?@uka<(%(}4xiu>L9oX!r)Pl{a9;Z8$=D?wXYFxr zrfU3@lt)IOrssI>?t|2t^`84Zr(L&pE4A%=sM<> zHo^o@LTIt$iIy9<2)73*8(U}iP%>4T-p-;Jx1lAq0$#lUT&g=uh9CXiSr5jq3PAAFfF5=HXxh2}GbnAz&;cgP4atXHA6< zNkrTTDLwXm1Klk~?Rt?|$UqkKh&x_JY=1rZkfYqmASQcXo~97Q7DheyJ*17*loX5r?IpejI zzCga+%I&x$^1^2;vqZbGS5}UfxhOCBSpOirjk98(MpCPW*sE)}8Ya_kTWLniryo3F z*o8g=stPI8zRzGOgQaxIzop3k3h%;in>Sh|^^KAHEO$u#8PB`#I%``vNeSmM)tsj|Hs+IagvYPpxB9Z{>c05fMxRs<{_>HA>H;$rS(V>uz&AeFbxHO= zZc%pVt%n-Ssv+;WF+T70j&I;0;0lPi$2z5W|AEUkVGu&t_#FRH<%VY5QfR#u&UWB? z6g?P-!O1v_or0ejt|^R2;0q?Vy%Zfl9o%mN3LpZ%S8>I4sRirfbfrNl>hHU8ZVAj3 z_=4We&a>9%?mKLtAXkGIuh$ym#x~M7=lArl+OBxi%f(TxgZ&9PNh#B~D4Fp3fH^1LiZ8xD z9wBs>6A^2r@OfJmaZJi*JR)Xy*s)O=^-n8(zsm~ZpuagiO+nwxZGd;juK6nUG;DiS z0OJuYS|$?bzOfpIKJG}6zH*P&Qp7%grlyh7LHgA&A~B=WnX~V3jgW5=aRUxqY=QHb zHp8=^pkXfg-H>E`}YS8 zOvn2~@fnren891q(qHhq{q@fg>P&7bDY-# zFVi~@j(LFcWNUr(^Ww`ld*X;hcin3TKQ{oV3hGu$OkyH*X2-xy@O~_nTIKp@ucpI zOa9%%!oSNgOVpcx6%M{Lv|HrAv2=eVKs+2LL2LHk%mva3h!aQwdRe$oNlkq85ce~P zo0y;RvDK{M%Qn^S)(U-`cRbeNVp<8HfHGO$X^%@7);_g$m3D<24id(a%ucPYr#+05 zoX3xo(42UMSp?xD)=?iSt8k^tTRHXRQfpevCdvLuf|9hxgAiy|C2UQX^zKRKQJdykG0TjH>2VFz8WUaTSqBfhZ!(v3&}`mj{uhUS z{5ch+LwPFTL)2MZP>Q>OZg=CfW9W1#NhIPI3{Um%pQ24?Flp?ray~Xs6iTB>Xxc$j zwKc-_wJhW&DRl9;QPj)|ABJ%E1c0rjsyzo;N#m^tJ|BOY()AY;%96mI6?B%9u`Gb62_MM05mw z2|G}3%&9?RBxX29;nht^<=#*A5 zT7N*RJ4CozPg>0|8ig|M_hs-292vh1Is_uK#52K>CmMj%8I}T@WSdR_v~K}lvh^QB z@XlKk6&-A^P$gkpKTEPFuuZZ-W+|=s{q=rneUm37kR!uh=q6?tjFv>!u+lIHa?kcFt9`w6>D z``3;+-eRl59Ys+$|7c(GyJUd7^Y78!=5GgxLGwQl(#oKHgE{z}Rry|2)I@Y@fWkyE(B?t9yf2_Kd_!IKJl@q-4I>k8LC% zmieA7QK&Lc|MXt%v9^w!z;U#_$8bRG#E~H`Ky8eR;ZF7Y~d;FP%)sGFu zQ_-0qpi@g69=Vx#DG(Q5(49`$t@W8r#H=v+<~EVC>C?-!%!Kb==}CYnGig3v8puD| zhu6A#pms7c76ekF6r*_Djqk+Hfh_`<9bv(7uv!F5Vpv{e;eJC~sE_nRfa~SjW+X*S zcJO~leg$}~KzifAQq>@EW4Gj4s9#*YJiV~Cpl~Hb`dnS3ZT-`9B<$gWTqZ(;<|UjW zSvW}_CZ4+_RlV%}vh8oxPJ|!HmnI7bV!RqnokM!0(|QIg9iESf8NAdx4JQ!*i3yy@ z^4gJj-Rph^XaW;E^0WjpL5${8l%FE!KDCMuD$W-CdVF*t)`hMmSgmre^$}Nmcq+J@ zz%2)Y6M4DpVwFbL*m5n7G#@WI4sxkC?n-J8BA-%J?OJ4xaF5PL;)2<6K}w#uz;0tw zV6*Dd^1mJ;dM-T7Xbni9v%y3I3oDjNF`^dhwv zguGk}nB2a7Z!+NUMItlbhl>kp+9&hl+^zGVa)dJX*@{g)YWDB!Ur_o}tvwU!v;44H zuv>DCxfzE9y=n}GTxD8t{*$cIdQJ`$&n_hM8K3}m1t`6U$L?Wp~n z9lQVGA`b|+i>|(E#Ty8~M9dHbQMph_0frE~KNAuuo!Zh!SI2-og*-tSfI712eyyL9 zHS@6hU!M+u&@u&LB?!$rp!S(`>2V0Z7!grSJC)7RZ*;0%Ce;Yfew)rf^d!|kwlT8} z#h-PzH>81=HZ+6v6{*Hm`vJAgx@4x$Ur2b6v~&7?Cbtfa+?%Xg+Atuw1E|V6i<&K7 zdxcG=HZs-hFM-Vj3}_SD?TQDOS!Lj#kL8Y+3TFE+-0lBmeh79-%dnl0*@-w3jJFBG z741cK0(Y>3yfq%iVPhjAK9n%?<1Hve*pxVl@T_BE+xc9i_mvTAKgKyv)M+g@7T>_p zEUdLTT~TRE-+A<72V;mKaRmR?rxqvFu^ z!NBI4*3#n`o`;IR1)q`JLX1P%2hg-&cl4stKC6B8%fn1kLebCn_gsyxE9@EI01MMZ^A^cRa#w%Ri4FK zWmfzZA3a+`e)h19U?>QWvRe*8n_Dhhs=kvzl=rX2TjhR7CdaUl4Yzv>tN2;4HNv-> zekCL;aqd(Qe$ncz_VT&b^yK*suEXz2&X59^*a^#ima+z217i>{sA$JUkBE1Clmp?I zQEb1^5|kee;+!tB+&nQZir|_w=8OV2IyCKYiSh|G&p%b6h@MFFCGqJ~*EL2?WK1WHPI<@2 zPN@r6DqmiwYl-S{_&FI&A=F2b^qSj<7y{}=F^5!g>_mCH%byGDs$3K92r0Si z=VHklh$T4)@Hm9@Au$VqL`~x1-Lo@(J}ocYlnejGd`Mg z^Acc1#u*KANw000(#%3kPb8OTs5O_tN{9)TNQK3v#U>FjCH4AI$c8EO;Y`9&^hi5f z&{0a@czRRW*&^r2c6AYlx6^r(R#AmZS-=H&1+CU?G#w#t_NzBuz<3=B{EC9_xaBiG zJr+Og&@U1h5;6^1SZw4nuvNTypS1-#rs%pqiI=QDsN3j73 z)HOKtJa=o&Us~B+h_Id)5Aaa&$b(A*mpiOdPT8ev=8ZGW23`Q(Bnx~`a-RDmN`zAP zIi2`DdPgr4S;792$VpC@*!i9c`M&XOIq_kH6Q-Cur3A56^f3y#ZFeF6Kysmnr@>L+2{r2;Ie>&R}phB5%2@(uM|n$c#ACQkdt{7*hO|bzXF` z0Oche7xsc)WAfCT*mapdaf)^%nE-<1TtxShmh(s{M=cNwcm%4D8sFK?69LZC}+s5Dd&sEPFQT&Y72Bgd}!W~bpt2=6Kj z8!|Zk%D6G~UlyKxQR^XyFpbC2%}`kao4#l3OF1kY6yt*rW3wu#G6G+w|3S2kg#Bl! zXa8j`^3?r<`!ITcU^kzEUrz%op_#!wh9C)hw;W8;r{gxJ8t{8;NWqMs4L$q9nT74a zr3V&Hr|zex`zO8UsM5;bf;%kTY~k{T{K5C*uI?|N)`z&6r^z3n3X)69xhaSPx8m0M zApjOpB%k+fy#nbF8p+C4;}6er_=^%g6z{$~_O@9bJ8k?Ym$@|Enxh6WtppE`<{tpK zl=4$oLX{q^L{{Kg{`iS|e86uz$GaHO0X$ujj@{Ls;ib*TaC+Q;IMB#RnLl-i1N~K7 zk9$%EQ55MN>z4T|R9pfDgE;Jb`2DR?8k;#ZzpC?7_s@%xjOvesq!h28cstI4!8ic& zZ#~54-Xjm~vNWQELwPBUc(@Zio|pG?rG=g_gQ}~E#;6Y)##)ct>;r^=N$}mJRh^2QL;kjywLD12p+(bG=w5Xz5|BY)Yadwr z6dFMy=*W?y1@OcCu|?P|6})skE^W@@p%cd`a-)vBaWw39dQRAE)}~pG#mIs97{N7q zZ5%aSt_t#Dpvn#G0+N!^YLU;>*nE%QlT?&YCBwZ9>e|=_ahlmHJ%eF;*OPWY%`1}x z%lh^QhUEE2vVn|3!PxX*sQCe^BZl`s{Mj&)Di8h)hpIVGr*q`-(v5nH}w zY{dNiky4}8*|jFOmLg$9q8RE66xH?7c!fg^WkUAol(Sq5Pats}o zG$)#2ZGr`X`wcrK?YIbsiLfD(NFHPf18$zVf4ZUzy~JKUjHIcW1D7}#WDxi%3hRlm z9hN;b3)xVqli*#LV1Z=D6PD8eH-MwLFXSvvPfcC2`h(Sf8II(vb5{$5)iLwC|bY+$yyWl*Yb`k=bAinN>+y=F!wMw6ewZI8gXZ z(Ds4JXGXyprSWl3z$W0;k(d}f>eVq*vGP48L30HIjpa11{4?-9z5@2593Wk`w2F*E zNPAlsZ%xXe-b9jg`;OOSHA`MAhAB-IGIGlsJ9}kN@KNx_%;S-Z%!YyC-iD?Js>r}_ zE2UZMa?0Z)ETSdow?AD(Txw}~KgsVKKwQK;#G@Pf7s5pTO5-{9EA@BUIAOfikCu~rG>HlvLWZhzCepK{(uiB#qGi*%3s=3iSnr9FEq^ftD$4Tt3Y}daBN55HMaBs zi+C~W6B~U%cV^UiNzp5IacH?eO~STQetg&gQK!+$*HhHq8m05c3&p5*o$^%u3e=B( zA&u82OkBRlDoRW47|lAw^MMWw{UR0bCkwS1&usd-^jmgB)lHX$Ph`3E#XDeey#Zv{ z&DQb4J=v_Y)s!2F2{jVu0sic$OV=`qIM?Dcukf5TB;id-#DK*}*m;t>=+-+{fd;!#RyP#%>P% zmN0)x>m?o3qjW3 zg+1d|Z;}%2`=&SEX51Utd9cob>>)a_J*JQ>^`MXzlM6=1R*g_PDR#=1hj-70@Oz+c z^SAy6P1{u*i1(!BL#JbXUq7zvR1EWGy|SBmV}dq0;5qYKNWBAh(H`FDS*Lat7})y) z9S_f)MKv<+>Vr7z*t$-2afBSh(5V7Iq9UexWhxwdI@TFYswQQ7cd!@;H3%mu~DZeVJe49nt!EZN(|Bi2jh)2{7KtANWcYy(KB8aO#bDIP; zX~p9LP-2&ZP)~OPfAzSD5-;btWxg2vjZvNKC=KKb(r7UJG=;6b^UwJ_f`R>w9VOFn zkG)c8lsKyz@N8L8xK9x&9}v2TBsb8?^UOHffSH-3-H2WZ>JL!2Q1GQ-9VZ?0nXKL+ zq@_qVu>8n5`D;OJ8_4_vR>WzK(B%kt0{^@(?!cY1fvz&My6%5VR&OB6cmJ4G)Y2-cb3F1=oVndYaV&#eKT zIbOhW2JRb2k#|>=b<}>;haJYHyIbelv2$)r9IS}1@8-PWHOTezDoC53G)otzzm?DS z?$Yl|iV}T<*K=Z)Rg9$iFi_>0{$*!_1i=X#PPWwoljcOJ(4nHT)rn>?qoy6mr8@x^ zw))Rs6B1+6C?~$KB2^fsK$Pao= z*%4$M$EA&#{g8{VB-tv0<6542z0x)|`<-0HH(mkO1uJ52d;DQf87YQ2e(MBbz$;nT zNMSN2A2`r_<7jRD*|XM$D66`N?R#8aj<;Y5G=`xu=?E6vt;S3vl%(((f=>$3NwxdF z7zR8{Bsl>e5JDhC2tm1eZ|6x~JMG-$yj{!h)`-Zu>{V=^>(Isu*s&X*W^*qxl))4y zq^eu6vOd+MqjOtakx7bZ#gp-sh5M=V#&b;$vrg$C#Zo%^Iy;5BNEOhmva?h{J~%i; z8o8E`C8@3Wzk8lHwN{PYw7FA;$ic>BoCm<>eJE}?d>G^8h@UPLh08+TXG6QR(P6KDse}^uF(54lkU&9?LZGt^Rs71~oQ3-ha}@<*8L46p}$0ku*9D6Gb4@iwXg9;W<2a{aWrJ z8;~+;KizuP=Y4R@Itp!vi?sUv7n?YhirfthlXa-DDTlC>@*RGp;A#EJb*Gg2@8z5YT_JQqa+;)N+y zVcNVmxpZ#nRV`zuXhH`$MbF~DVMUTa=_7!RkRbt0jRRC#@x zaz0nExObC?K~y4RuZZqcbh5R!==i+W2iNrvdvAhNs zhU+JvEqZ~s?Ly|)iVZ-GfCGje_POP~S;4BfEHg!ICscuT-6{qVxs2dzDYUWZ!3uNK zd3XQ3mDy^BnLJ;Yc7|O){QBXQ!cHrqev!nEx0eV|jM#?c^S8dX2MB7aYve&PlSI35 zq!_t7O!8Nc+e#yO!3k!cbPbGZ4~0|}zog?9RK2u+3y|lrK*b7sc$Ng0XMcdH{G`)C zz}r8kxs5=)<8u<4kWO&;^-kciTh<7w2qN0Fz&4ybvfNWx_mIbr9Qi8;YjF#x@Tr%;aYg|S9NJ;AN z9?$HE4N;Z1MY~d@?1n&D!HO&t)(bat;#vW_t<2oqKNvx@$X9!D@P9GGzTrQx2NJc< zmICCMB;upsb**Is{UN)B%D(Y`ZpRLn$fh7v5{R9>yoK5}U}*}DndBzSYJT>)Np;&w z;!GYDP6FuxDBs*BIMT8XU-JfwH57Q0SqGQ*QvcABMWB6Z2dVR?@eC#9Ly`m-y_$w= zPM(^J`w}|d@b1z#g5#^}Hy&}~qtTTcKTqV%DAmh|WE@F^lS9uI&Oi1qu|n^exVD)i z>Y0_pm96x-!uB@N15+x|+evj~f7Ic|3`DY`P(soP7?p@ctbj+;S|Zb*Tj)hW(!O=S z*TV!OrpUAcg$Otv0k>T5+c@2yVaTJ3Qs>qmq7g|?-cvD>%+l+}qBl&4zwVI(5U2U< zGHwsp(kvG5>=X=l^v=ECWalhy_|5DnQU4_58Ko@MF(#7me~k9SNm1nz-u>hlO1lBn zbA%y%0dt*AElul7*Ooi^rk>ZYUdoB=5SU;ZiIn6xfMC0TZ;_=KytEk7zq89oi@iad z9UQT>Ptt|7>yh+)b`xk-_Ur9^8{R3Q4uwrs-}R=Y!ls^(p~N#{vq)i~u;Vp>CEtij zjLBY=yp~)>+EN|&i>17gSzZhj0~01hg(DP{xT_+^P=`-7#_49{ZX=Vq@7W||$QRzG zeL=SNqWD7`Tuqq6^;CT<)E<7QIwweUJN|{?wA@}6dzfB`TNQ=>PRR4gsGF2XC0h8t z%AHBu6QD?w(*F4ncBNmGPj#vmDPIOI@&=l$FX9WG7F8DpQB*BO7UeBgr-KBHwt=(; z)~7&j)^j98JRorTL2j?5;+nm}rHGKkUIK*jq5OWnQs!SFaJ^`ak0qT3?@7zFQrRlTJfyc7P{ea6bcH@Dl8xQxJUatl*h+9I)$46(q&d{e@^UHERnb%g2#53 zVwXI-Zss-N2aLvY_bkBf*q==L3sGtyiY*xLp-$k>=U=LD*JiNT^OiDdTc}0djI~O- z2fSS{(v_MqOal;k#l5q#^JaW@4KL3(Z~J=haYOzL-EE`w;=WS{b5{Tbj|?3g0f+-l z94srCO`8YDIYsv$(OmI(ieYfqvd^dI255kRY}HVf>h3zI8F?=#{x{VN4uZHQc8ej|l#Pq2ehZ)*3VO+&cWa99u3#l>bqmWd8Oq1fs)CfZC-S82q)h zjF`@q^28Fn@8k9joWTWrdv6mTp zL6z=l0sv2l1O!UITboVazq>KVdlSVuX9exk#?)zP+Zh;Qof=a?3sRwVh^=W0%z45I z$I?uQ1fdRmdbR;x`v7rv?P9xnVC1(O++w&|vjXsDNxC0A8KT_-yoslr=Ly4Tk*ihM z{xzagjaZT!q?W7vgx!MQXO7{9W3U&XFxQ2o+mYn&xTes#ozT!_;a$p8h(G){di9#^ zA0iTc%B`=0Un#kbe0W06EVQ6KMhQ^(5!WOEc z)BKCF>ODz0r3?>{l}?X6P653y-j}PCSGI}NA#%EbK~IpSpFVfbN4+TgVBDhhT*UV1 z_jPlVNd=1j+*3mxl$YZ011CzoE$w`8dXP_Rc~%+@G-EoRQbV}W;^{#4a@~E{kWGl+ z*~{KjG!+|Dw4JILB`FSiK^H@zN;zIrT56`LQ^tQDss{ ztDojeaH-?Hrf$0$!mxG}*<&*M_)!@5u2eqsKJ30I!$jMP2p8&SPR+`%b%0_2riG^PtN0@k(snSw{AWN9%0!G%#y_1L4rRBqFEJVCY8v+>w3X&M{D?8Nk=+tNvBasldfFz zVtarn9RIogJ(7@Nl&pn2WqyR|bKZJE%W9n!L`82{}oA@>KOkx*28k)=d_md+#{SR$z`Ck z2)RZ#wf2GT0!GcYJlZiKEOPxqa#_78>D>{s_5ZIcgpipcxSfkad%9jFR(jl@1Kto8 zDQwZLB)wzJP26AsZFV((;>qi$W*@uGY?bKI*3PkYoB2yH;fmA&_TH=9>qJXJz#5pR z=woe>)w-+4cgNWY;o4t*1zEI-=J~t^t3en@zl#V}eKv1ZSbgT-V}q29^GvvyArhr5xufSCBs7*IC(6H@#l8iwEYw7uByvX0 zh+SE*9TDnDF>);o-|hb?|G~Xjl&7qBL7Uyb%;GOZ0s7ztonG?)IO;1~Fa2F2`3#emU`mridSxiV-))Qp3Ni-TkPX(sX5aW6 z*Ue#Dpek2Zt^>W5NvMW1aUSc_YfOF?C#(Z#7qxrcwne7NUMkHd0nINvaLA&NWqh=C z+sfqpDSrW}DPv-AYdf<9ZM*l2tkRz$4kqU#M>P+1sp((jypOaL994Our3KKNiLwI) zD3k!$50lXbh|2ECK;Xu@=bfP+Q5f3qJ)r6a6Iq=C3h9I=yI1MJDRk;#I$VfSkkr8h6zmJB|wJgrlnT#@#M5&1$b z-GBm^%E))E5KtNQIQ|sqC`2)w=cc5r^)E+~_&O?i6Xv>q>WyoHEi=cgPZk2nO<0sG zD0Q&Y{uG!Q;M$u>`y1HXeZ6VU_zMYc@p`m=vS@EX#8Ib^ODEWVI^f3jNOL-rPasu` z-Mw3df4n$#L&x3A`0l~i!qq7^FIjLzkkdPPnC^#$SP9m*{pu&q#4A{=+##8+68=K? z2??~X(glD30h<_r?CEHORc4}=qsOZVzQme(Uyd*K2gDZ=}s# z6#z{T^tyWx7K-C(Ej)N7Pl-;k@}My&I71+4jg=tqO!C4Q+p&>?TMoUkhLs3W^JnJn z!&;dygn1`?l;Njo>zV;Zgo~{K9M{M$0-{ZtYw@;RBqI<`IegKb$)z)Ce zhUtYuj*(5iy%N5?;mZoRQouXxl)%w7rXgffFb)LvCNIU6UbknqJbvU;N%HiUzS~9= zN*cm_;m{u^+Ke_>boRl(0p#|iMH1gul3g*TL|^z@Kaj-YwZ;&ZuK>9Rgw>e;ZSELW$r69L)sFN~wEQKZh~8edhH90C#w!{1C zteizXTge7O@&kYo(o;@}o_wN;Yzde$^$g_2U~|<=;Yo=?z#EyyIi`LI};4-4|;0=8zVTe;uG57Pra6Cb~MAXl#ghS z)(hQ-Cwb4(B)m^XZ3CUnpGgW@CxTI$1nAarSa!#lSj_JY1?JQlx@ zvlnTu6~$R>8=De{<8qp=at`H};JR#S!ya~NJuW{qEHL?W!&)$2_i?tni89YQdLq4U z;;Vi^<&6;;I_=Ljy)MGfOL z;di$R3Pm+zw@)Qs(EI1>|yF}{Kw@~c9O?5xdGg-3)rUwepF@F^hXI5G}uZ+MO zVqS>Peh+fVd5-iHLtc%k+V9vY7uuPl8VTTjDhZk8ZF$&VmuUUHuEAjVZ|f3lJA#N; zureKPuCj!psZIIgz5Y(1>$BST2TCCa1x3WUN8Siwy}*IvMs|OSZ{M!@SOSM+q^k91 zIjr@ubck%b9Q2jQDpl0gatur0pE|~yUP~?}Dz#!H0?UVMQVIOLw@Qji`Jcs1Y2P?`r0c1d)SL=bxOD8dgY6?I1O&P zwrOr20=o-z+PUeRpz0k6VFjC_1w^Ci- zv^OwX>pflwC7XsK)SHltn*QVx%%0BGggFf~%C81#O#BOBbzJmv^ z;w;Pw>E$<5`?j~gsTR|d=ddOn93ybyNU{=S2jm(3XPhujo0XR5M9kvrf!h{F(7Hyb zo+>25o<>x?%#~-=OcoiJBs2fkAvO9`c+&VoM67MVgULtE;&-~kq|P~98?Epqjsqnd zhp3O+&RWFZKcQlby}nS#2X^IOtxmh405rLOFS- zghH0v3haf~$lQ0YyP+qj2-Ur)X)com&|9#z0ed^r2XHGa?$lnX9BbOYD>=S@+lTV$ z&6@B#A>28zQ2eA2K`d2nXP@@HYa8psEyXL2WVqmOQn8&cc)Gq`JQTctq zy#)9jHjF^{-dPWi?D%Lt-nj20u<8V*i%pqK+UBU0^YLn08$&z1o=4JAbXz##O5%Nb zq^YeF4oSCCV=i$(6VX-~$5dNT+P_zHOEO#Al+2aBL#SpzRBnSkK~JD(QO9Q&J?{-@iL!^oDyJf)oTebKT(V zCd3&sYo=2AsS{1DYDh_as0CuB;7ctpvczl z)-h&`^^GCS?_c2UwG=_A1ymE|CAdOByS+|wp|eGYKS^^@1_u8S@e<&)?ywct(J1Vn z7-Y6d30>t@EVllHEMlGO4>~C6;VlD=8ncY)g7@@5qQz%s{ZDq~he8t{@h&}b8Rw;i zuE77=UkEX0k2xaa6IEn2S$osXIL4vXIgFjM}F(Bx8=x_5n!zxzVoQ8AS$cr9qG zrm(hv8GNMsUlJu{nxI!8M%fCB1FJk-nrhU$*W6@$4XMM;MOy5UhZBjOZNMf3cKQY8 zl~ANxi3Y!3nWLTf!#}q4!$#CFUM?6S7izJdv}j_Rmd$(u|I){GCsd3Fm% zV);ug-_deZ+~jniAST%yCy`Eqi$PA)(3Qfu;JD#pU7wx?-oSL79o-8T9u`YOh&WS! zvkT?}C5XCTfjw|(xw^qMka{_h7)ps&EvvDC-0Mz6a-cW4;c=IRW61h^kNuLZaX(6jj(Ouga-f^Y`MP!v!^P~k z{Yl1Hx{!KgHWE#j+anX`yDa9EQ;OBc$y86dMu2AA@Dt{zPCg2YcP#Jal8}7Wa18Yv z(woB+rx=H{X`q$h7jNZ-qZQkTRs{di60vlY=Nj9YYGgUnG`*9HMBG$^hUo7PT!_+ zpAMu;$mu7MhYGQ7Wt_EO4j1MqI$MR(L{BNxpiPL8`tAhJSBy(g?9r38FbKQ5?MM>) z%?!=yk164wL-ndGg1@IyTD5{m_crNyf~y#uK=^em;j?~~dkjX|UHtRqW)0;hF(iyWGy)kRt!el)pX?^+bOdxQy~n}vwR`PLb#IAIts#Bs z3W!b1=8LFDD`24vs&oV=cZCS6=U5PvO>pR6Q#dL}BArem@Iw?O&87!I6Z|j`3GrD% zRSVf4>?aaNzX!&-_q&hnny1C{YLrNhw^w8Ru|d5W52FU{TZj;)XzTOSI9T*1&M~+W zqS>fRN9wme2a_i|R>K@WAsqQWdPLN+N0ak|=CGDS#{>h%4fr6l8h`CA{84?S{Pdm0 zRjWsFT$4d_e*Y5MOrcR5e*wvb!e*}s*fYWo7=)=r2Y#}+(#h~MvK(w$L2ER$Avdqz z3Fuv89|m0Aldq3md$qMEp!hQ@-z2(~N67@x7bN^4uLb3h(R{ zq)kVa&TN{LYBs65d%S>QLo^kBTg<{!623W*L_Y(%v`i|;MT+zHEwUG#%ORYDnV96Y zbi~$eR7=}lksr7Vr!u~6*MDv!scWqg1s%6Z8~M+RaCsFd=7N3n*y4N%XP`vnKC1?P zkL6(B9~nbhB0tPoOo7*S(z{9gJ3fcjaU4ghF4~LDHYCgayTKX0c}WNQW1eTie6hr) z$lf%0mDg=@@5kXFiL^AnJ=J3~OuH_5CYhy{9CymhB;@k}g?qa1gF1;u&Hz;0yyQ7! zTVsec1E#rb0L*O`o&>_UkE_oeNxN__Q}UhO(PR< zjj#KiR9(&A1V^=6ojUWnYsxWQ_;$j}g`RF(==@s?#ONC@fKqBv3XcbuXW}EI9I0BT zF{X24D{nh^GIuXWeZ@bKA`c|Br<`FTw=Zw7(ott13`Gq6GlGn__jTyt;96K7I|o8> za~^8 z0DBtQ?44%7e7?|n(Z;|=+&V4~MsHwLRDXxf zFV(ZT^@)M|b?J0LtnQa{zNBT4>H3-ZZF+{h0dOdf0CFvCcGY3VlBW6^q^Ln!DCUKv zys;#=#*1^=#$)+jGe8;HP~XbBW=(*H_zX8ka5ck;{aLcG`3>mv-_-(-fbI_(-7b6*W>Cz+@n8J=UBU0#TZNw3I~=59HSWlS zXT&Mtz<-C}W#!?pA=A+;yPHEwBzps=Pwciuv<5!>6x_;>S9&pa_Y6Ws#fpp*8LB_l zIkcRDk}J;lyyabzaW=!ya?sw$3!i%~VW68MEC^*v;MYMK#dU8^2L&6n>@#QFlq}kL z3yc61lXsvYCJ}96p?JY2*%RvO|E5wY$HRZ+`D#?039ODo6?;*;CWkmZr?s*E-;D+k z;*^}n|6e&T{4|X`5dDe0<~PyZW$n{_{-5rZ?+05AKGjPMQ|wRPDb(c6tNf2FNB&>t zbKcqz3m5KOZ*KJ%Ik6jUl;7(#ns)v?k?kRFENJMx zzrwRQ8l>!~*6GpIQYUS8Z^uV<#D=vmX{x{WzhcJ`LRWcFk;-lMp(!kkun;vFd9kO( znrTog@WkGDD#?hFxXQTUm_d{@05QsZ+}CvS^cES=%SNPVPO(wg(8`)qC2J42!R-YR zuPd6b3epTNoas~X<9f6y<|Jr*1X4WGe@>joKy(AJl_q?k- zCuiMP$H0r(jk2{;?)fhFyOXuh*f*l0{wXPT@m&rg99#k!<25QwJn)F^Fa8nit+f6R zTi*eW^&a;B*ktd$w~S;)_TD@sLiXOf5QXfKnUOuR%g)XY*_#l`3<)9Q{J+0P=e+NG zUH|JkqoY&KDfjoj@6WocOn<_a3oyT4-yaJvUbx2`{~X*aC~V*#6=MB-ATxDTG~DB{ zxXuOw@lZqBu){v-eavjI>;7_7aBNY56)tgGkWi^fAz?KaD|WuP%ndF^^1N@2H1pRL zt*5MLIZDhJvKhtkmMn9?mhIR$VEENTyikrdi<(oo)IyjGGvY{1 zxqe%QUvMro`bh8vo?V{EG(nccc9QXuU|(!6o%Zf=$%-Uo~*+rlx;5cFlN=d?u2D| zm737yx$qCHxPWgmnmMgt*ydLc<9itCmL43=85k|9_mYX3Am&s5aC7T!d{$t=_oU@a z?Ec;_Vw&mYxr4l;$=VpmYfNLmsbpFN&C`v7qHUj-06&7wuiBjiI4Adaq25RG3?MDti89eODs z+Ep#}ma?)~&9~)v*>6ru1d1y&`FjI8y}{~_vOXsa^JGdc)pdE+^5yQ;h%}v~SmTX8zOB(;El$Ph+bUqd) z`y+E6TbE%KTk-qbA?;NIGl4_~4gG-~-BAJ5=!@G=aMK+WMEvPfl9P=mT_m%;Uh%fZ z|0%*?y{*JgEW@F$p={lo#g4fmjqquJNC z!KOiK;j`igLO5i!qgZ=tv}FYxL%@~w5|V{D+cJ+nwrM^oQFY;iSZ0m|ift7}nsZK1 z)=F9s&jV#z16@#=E)L|u(2SrVp-JZkyxtAK8>BAdxMLuLRe3U`wnQRb5n4*YKU^!;3~5TY=gk{+uzBk zq$q!HKpVrF?qg8?v2w=|;p@>dCJKhYmz<-Obws@j4@MvwHG{ADz=$18(kc+A>atzq zUo?0M4dmLxx5Y`4$S;eGw-7|n5(~hl9t<<=OjOx}xmnAFQ%(pCwMa{JA`+_yS?XSI z=hLC9hTUtNa9#SZkn{0e)ECJ3u31#Y*E@c(B&d+t%ldh152;cX{#aiR3NSr$*Y1|& zkfy&HQ_fbs!#vu9v$ckC``W=wfnoMoRLno4S2nixLY^;WNKviZ-|YJMvmkZz;_BUB zdvkgBQVrN@#qElGV+F+RliJg>>VV70)|m=bB;!HkqOAOWi(~r28#(~|?Pkj7KmN{P zQpg42FC%O3)U{@3lFV(CUdo)PFL0L+iP?ZxVFuq}prFWtHT}*!-%NB!Fw&|3S$POn zFgdfMOIo3MErl<`JMa7rJmZ(|_iE*c$kIfHc)xg;_!5lf1uaLJ4XQSM*1EppFjpWW zVT{_TrDdR9{|Tww%fprNC)6(aDjDIs^is7_ZB`}kpU{E5Co;n4bHxL5>9gkCDg0O!xEB2$6%1D;&owYHrPm{ZB6fa=+OR*3V z$%k%aEoL^c)H8nGtDcmWPBmdgtrbHx<(o;&|1UyZn+?V;``7uFoM^y z#`AsbJ?|^5pa$Qof3yxK*Oy(Actze4BNk;5-nP56orm+ZGP~)F+g5pyMUFTF33L9> zHOw&fKqDE%P->Km4PXcGUi|}G5|p=iM|eL6CVuAiyxZlE3jd1;SDkQM=Rr8|eX9#D zJr3#`m9-RM$RhuQ8gX~gkN#BCm`o|Kh?{X3YRkf`aCOuNPq>~Y%PJ0_*a|EqM?I%U z88RFE{?O2HYWZnx8Q!H{V#9T5gwbjPfWhEXp7)Au`>vm9W5NiKkmjJJH$TkY2=rK) z9HWUQfGm3{%<87wYd(YH{6Ww@e=Ab(oos`aH`-z)=azfbKwzsLxnbb;O)*>a?{U~P zX!+0jJ-HZTWJtjLV$V;O?X~`#(E^Fvlu%KTXw51wn=#JP_4n=yv>}fud|o_jjIEvB z1j>lXOZB)DK-{WSSxpkn#%_abpSlOu=l3*?P8BIP&-nefI9;!FVd|{AzFk~#-zlsp z&DW)t#b-L1?zUDP=w~HW%;250?W!MKHi0@t)#Tw3^|$N$uH*nCLq$&)`fi)f$z)RA z>dV=DIzBWPOa1PdfEU!QS+qN*IfwFb2%`*bssZTkKWV;K@Y_wF3&YP6M{jS8-kk{`nDrnyKGDL%TC}8omwcndRx8v>WIqNFJ`2 z$l_-!Ius73m-T;{r~e_B*q4yHb8mD~pzj+f$LrBqww3tb^#?s0GJ)b-VT8Skm?w5< zHY!XJNq9J4Gs889rRc&P`Q7qOiL#E`1iQbO_cJ0LRfaC(h37DCR17L9ML`B$OX6oZ zuM@6<{5mXzv{$G>3JV$~CmEfP@4o%h?tu=!SLlaLu{1AyvQ8+J!sU@HeWPHg=$!9q zR?ZZ8bueA|rzXdWP+E0Ug*ia3T4M5GO@}Z$y%W}NJLp7I$o?NpyvDIk{;Xr7oMSsS znuNl_m`ezyf;Kqoy=P$PUTrY+I%J_t(Sa;ZmP57fK?Y~j}!ah%bDu; z44E30ZsneL*2al){&mQl{mlTRs7<^)`lUTw$~MeZv2bUZgOmQOM2+fxwpOU`L)2j+ zUSqditgxj+S+a3|?bu7fqU;2q#b|B?38B{1aW26w&s_)T6@W%_9+FgN&B&M7G0iA~BsA1N*|As? zKSdP$(qs01@!{B>sy?#i3u2G{9@Q8x)r%r7Wy%eP?3LBE6p&KQ{gD6sQjP1^Fr~OD zsNkJFZnHeb8s(i^&$-?saZO?Jz5Wxl`;G+ZIqW$ZF8h-Pj!$1*b4NdvPllXa*9`;r zF}guK031#q8FBV(XI90AH^k4!df4Lvx)7|NHSeTwGB&nVaeB`(9t;(3xZlwOR(6p3 zQ9-w00XAl^lXJT_M9GcZ`d-YopfNPfU+z z{(=2AJuv-YCxq^a8dMXfR7U;e;E*uDG*)j0|w{1sy9N$UFpA|mQIo4xY(wWby6d@{iHJ4PcG z(Jl9dzAVN_!WY5&c9#Hs#|?hQ9Omd|yd1W&T$5%Iyt|zD;d;#HI$2^h_W)|hXRfjV zEy#Ke0qN|~Vz*?UC&&0836$S@{YCV_VCQ#`G9SWloOd79G8w!GW1!~EdrpPsvUEX zLLH^h6iymU&wF7+@(G`&E`Ar20-iRj;Y@RJ+pH%UBM2AEq&Up`Kw8u$)OEEaU%1ha zFuZTdQ$qK3>sT?xTaXB?$HsOj?fdgmc%R{uz!*w_)W=Ae>IY6;_n=e18G~7trgk{3 z!@`@x0FqQM${#}L7WcKEBY$+WJ3KYnwK`R8n)vqRADC_svCcN#0Lo1{!lY5r7)C3% z>B6a?dh&MyYImb(RiI^xr}wk$`t$Fg3yuJo{ee^uSmJf%S%|&ZkGLFyw$6$qK7cJc z`z41BB!P+tL~o)6An?#;Oq+Gb)~YwcGP`VCMVjVZGh-TXv@9DpqX<#uRR|M+Ym@n! zlQG;i(rgbTNdE)F{K7ZunxR6HU<*=TZ-Ti{LRZBK`H!?m=Iq_^Kz@j>*xiTgC@FJ! z%BS-ZNLQOOVSYLx^;Vf5@@y6Tw`#wTa2L2s9uHJGjBuj4nTBU@D|uiW6k*q?*!pP? zkwmyyX7P*fX1?ndF(Gkn%p$(seqz8{#PzyD&M*yP#_Q%D-+H7_XGsv3UZ*`|B7xtt z;#oZNBzK<=)*m$5 zb@|0Zzw*=w&5dHQNaQZD8tc|@=g$X`?y^8O?Zq<+_Q^l$*E`JE@GnxF?Q^@b=E6Q; ze3DrG0~Agm>f{?RLCFFbdEn2DSLG+zLYt)YHqPDBOZHjW*hPTQ;twXG#tvu)WvEBN z$m>ng1!2%F{T_vGBVkW=qdo=;0*edz;}hWPe!eOMeK+8do^tpHIUss$P}Gqrhy4it zBb)o;BIFBOV}<#sG~c}RUbqn$RwNS5v#T6gss$v9wY+8jXho+oWkr`!iZ}HFi&ay> zxnGF&&Gi@;(rq)2Pa=j|gE)9J;_%mbQ9us$nx|G3^(e0H+fmT^`anqIPt~q~s#uuf zFXzJb;sxqaDl#=K4S8CR?H6;_c4~CjgxM_)MEwA}CZ+6%1-DB8LE{O|rtcD&r$!Lm zXTW|r5ALLFF+-c+uR^!@9z1&LZM4rW?u7#|8m#hsQ`{|wqS)7Z`EyDiCejTznGw;j zAOyrEyIsrGlvE`}*nQzuOguTq0^6(ie)ae1y>JVcsfZgDr_&dpip#Q9A@JVxX z2;i4E#_=WT@sd(r+tkO8Yv?z2F_Us1?@* z*FD3Wh4pP6pw7xKK570$aJWk2u0IqKxxWRnR!uUbWCdN?P9hqj6foBrCoAz?_kbKh zWcg7R|dmAs=r}KA9&O;I^FBV;2~ z>QJZI`+{OIv&|)1XMaxCq8iM+EwXxOXD^UFAk}-HvKs7b_%of6SEY*PsNcyPNr=Kh52Ml&a0WDJ zpWxk5s&v~Zl3ohoDL~K+D%V0PhNC_}+Dv#(KBIF*L(%?^V zb7Q)I`O=Q$n*=tlaDdiKkeCB)b?I(+ZVE%~v;qg_&x8^X5t-POb$$2sT~jbvXkG|1 z$5Px$-FTI1b0Q3{X$bmV_&GC9^N$3dw5M%Yqg>N4<7Kf3jVF9f^YxSxUZT1S@Y`sd zl}1@ndxCy9W9tB9h_;3n!air{gRDKB{sV^<$pVI(X4q$3hJmn=7Es}rF72&jtfRY4QP-ZiSP0E%&SS8_Ac5387oDT(o2A^}Z z?7tC|2grU6T8!A+Amzm7!}w<6a@p@{$jIx}$l4_D@1DFlx5Uh3rza2mev64CCZbEH z?>X!lM$m=pPv3a4)DCiR{;i%l%_p3yc_QJinlLQeluw; zIzy3Ntq}eq15VuTfKd=7qhkh!gF?pdSJ5HYyE^E|UC6KU+;98TVo=ZEvQ17nGPltS zxW?!V0ob%tY|XcP6b{ELmkvr?rVKg zBrEz5sAmaU-wirj5`5vvB|CBqDH-r54GcP_Y2qJXn)gQ$87>4O0e#Xpzlv(-20KI< z?tn6V2SR4b5;uapLVSn8cNQ+(k8=>t8u$-2`YUKcYCUaZw%Z@;*Zd5G#(Hst|GENN zfil92&`|*~1ruM);s>pZDa#kMCO#=8@G30%H4+z5vIbn#l&7Rzt;!+ury#e@7XIn5 z>bBsIU1znzBRGS>2jAU%x_H6J?0%}xXAQN43+C6nX^mia?zPGb;J^+j=q2N87lSMP zo`f(Og;>06L6L0!S&)8EU|FY`|2QlV9cw8U@GI51H(FksV9YTYy5onkU*)XD@)epC zROTB^%=VhV*#IVypA+EjlbRa6)k$#DIm48FRtvFTrR~b51vnQxWw+Z?t^m3>)92TdnNNzySq|(>r97efzz(`H2vwY=&}MHKqFTi`WY6X*+8Vf*I(#r@4f^Y=hHO1=+)|Aae3MPDCdj zUfjjm#zO^WOSHc^>pKX97*{&6EmkVnBHBgG5WwtMD(}qNZ%!9(pn3okEYvn0i*F%~r_zc?oYuuSVY28r_Z>7PGsB!UMy&uG7Pju>1C> zq|TX8nu58$MAoCj{YuyS0MJumdjfM0A~G#Wav$ZO@tO+FpUQZzIH2$gFBIU5YbL6z zxY$R?io6ATU!bID*0!zL55x}0U+j>=9x)hx8m@8F{YBcnFWRa5u*T#pLTY1#xk%o6u#Ms( zvsbc9#Wo@{K%mgT^yQ>9EB5`5AipT{QXAjg#_W@Ld?7@F$nuSQ2FQ1@;c1rA2w1hW zy|;Y}lx=}%qY&F>rXD)AcFMcY+Qk%?Mfx@yXW)n5#E{g>>Js#Vrn$=zS%1si9$;o= zz~w>v=^_`4!8hF1kcLo$NPfjVgz(^Ge8W;y{d7Hf-SL!LMY z&tdqRaMJH@cQZw+X#F|9X{T7NzKy?BiP#jLT0Yi)d)Iufnqhx}CTs!UeT)ixy%wnB z0=qPvA|zxB{6+6jk!xDciH!rasoy8@x|V+J1kt> z+&Q6RdE0Fi%+%WY6P{G4dBdm%xtV%vmx~%8s$9*W+wovlmu3AKi0LVfK8m$wu>~K0 z{fGGd0m~9rYPUB3>sMTz@1>oPL*2FK`|mq&T)!EMlX{N0a`4mE!p|b4ExTESIFWOL zrHM!S>+u9@A{{LcD*Ujd`~I`B0XFKK+sw@S840k~_R(N1C0maaZWjAk0Ed=hi$Pav zvMNv2=IP6H8c#voF~GNFsYih{0;nKR&BMgCN7{Cz3C%y$?D@Kn%PlWJ>2yLI{kOhU z1RI%>&&%plV=kl1jN!4Rcq)s7Jnjj`tYf;Z?I)gV`MKm#-IMqWG8S}moDaoVfI}Vp z?f$c^Y99chj%7UpP|QIu=U!hFrCf__8tulLeG|6Cu6K@b+SmSiqAij6;28m{<9>-) zt6sWUx#`UDJK6u=_?jI~l9!?HbK9!pG57?a*H&BpMrijpp6^_Pw*=#1ROWfEut#b} zY+eEnT(LOndsV%$2~G|v^Gr0?DD~$1>pxHO2;}7xc%{AqlI51W!MjIL4oOA608k!M zf@}2GGVCU$OrWPePqO{?wdwj@XE$ZE1OJbLz{)nNABU-()A&U+!JdO+XgozAu}?~Sj1;VWg?LT9UWD1J z*5#!p;fO>V8Ov40-Vu)8M)r19mGh+8j`sz(I3dUf5=l@V;s;$$vimvlQ4Lg|ODm|G ziV^)-POrUpq?yFpzP&AJPZ;(Nlk8HDO<>p3u|CzW29}&l14Pp;;1idB&?KZ&?$za!CdG3HyZejw!qXd3@+ofv@=FxO(((Ca19w`j{UN^U$~ z6}-_Ng5s@D?gD^MzK+xR*&v7qLvS&QIxcp2*R%`-F@~*`lZ@g zuZnjH4(#?4UTC*J@Q*p&8dDo<$-66(xkVKA@=O1tJBq>(vdS{#Tz8cN?%W;#^PBVw zsY_rXy`~CG(ImW~Je2omadicHEa1a`^19F3y!xA|xa=%KrO?H3UJNl5s(6!&z-^qqX zq8mXCX#Lr3lH947rzU1C-=eu1Qopkr>L{kj^cIYIZR5%6RXo z`hhkJ>3D$*Datl^PcSYpNv@~OO`Df|tI&zSw?*5G>S0K=sw>a!4|@)}T&H#brLF93 z95V@W48+w#JACbb|SlQXB0P zRuqsOMI0oDmX4EUT0o{A2MN0VEopR2=-{oqtj5_S!Pz}%nKXL$jC6*gXNo*Tlt<+VMC9iq-uZy=BKAf75oFq!^$qw3BST=G|?RY)< z(j|5=8oU2Wo{Ba9*!YYQ%?%SoFgX^T>U=Mu%urUG3QbKeqC8cQ#@!)i(M#14tvCC9 zW;HAP-r)(6dX`dLLn%)+IR_v9v}k`iz#E!H&)`-e$QGxWL1>DimI2x#652FUv;7u! zie$-s12LZm`Sa9^%$f#t~g3LWB<0pNVxH~C(~({^CdXSgO~#FUVt$i@u=*sAD37h1E4CmHR~D$ws4EETk10k z1GlnQ?`mn6sFWF8A$jig&NZ6;Plh(*G)ekZxg4*8QiGyY(`%jX-t4-su?xKTg1I{r z2|LNO#@b!HIFt8UTyoHYgEpc=Mtg0i^z@W%b93I?!I&<#DH?po5|;m9SuQ6U@y{Ad zERnDf|0GaqzB|$fIcWe}0x~GK?!n8x-Z>PSsTqH!cdo`&^-w1|8Ccr}oNQjwPi7GI zH4?0ZoR>`%Q_#X`e^)u8$I`*@VU}T-09mmGdl?CM#Aa6OyEYSYyC)M-uTg+-Yb}cW>md4#pWLR8D%}}qR#Ee-eWgQ3Px4;QoDd`Z&iAKu zfHAjv(8iG97K_=ua++!gjmrR@Kmvx}Aj>i(UyA=$&jD8*e1@Y?Kzbdbah zVf-E6)kN$O55*&y>9reLr?Di2hy;VlRa3KEAm%cWd{95|76?v!9>s7cGBiIuc(BoG z3pCT8kgUq`;0*2rkur!>TX5R_juW_5eJGqQP_|DhjkaLSC~HH1;_NuuK5u$6ByIE(^P3W$#DF^$P5O;Yau;C3j_(B>_x7Iz5ouA|c(nFbw8YpHgcBW}N2B)$c zO^WRw^0o*L8)O}S-YdkDIn+-z6|Q={gb9y${HtztATYjnX5A<4!0Pl znfcm{1~4(KH(fw91-5!!4`Hz3+oi+R-D=T>8!sq7m^uI^C8B@c1Ck{*(eCKtz)SIP zw1Ft$#^p$nbr{RfwP4JB zHMHylp1t6vV?s!JlcAk>HpeFT{}`#sJb{E186;LE%#>Jh9CVkC{O8&Lv;s0hFr^iR z&QDtkGRR$LSk*R6fvhjXF-(jmg=E@rx?RkM?t~dz$p&9BVyM#+&`E{^7* zYhKTd-AvfUv|cHb6MlGIs`{~!?G4iOhqZE=uj@1l#Yn6Jd=|VkxtV8`fuvNF%;xgt_Pgv(yA`)qGEQ2cPY)Q1vP2=&@M3fH`SL`g`zWL>R4fTCu z@((Nq5rPR8W{}SJ4~%fY{c6eFO#`d3MX!mAr)_$7dX53_5i2U?dcjqhVb(_A({kcB z&CJ;Dfho-BjQO9NCrXz<@CP0Ck#TpCyxT|`@Ff;<2|Dr7iFkLUdL5@-*B;F=%vESB(g_BO)@l$}(xuUP`#vji2Oa|40I zDhO;}!RaotDTbQ4(C58kP4JBcn-{6(SgCO#LQW`(zT~nPX7}N8cQrYH62CNSBNU`X zB!PtXkVpZPtB1bRNTH|7>u+&%Xy3N&7`-DejU8DOJd~J9kX$4^j3vR z4YsQt!sxvwl}zJ}0@^3eAbi3bCTj|HU%l^*6iI@0^*MhRTb6IvSnB+_Kn{WJIjzW( zO@;RhSl?+`+JP@3v|62s`LzHzXbE6tK*gej|A8_s0BcM9CIZ7nv~b8*h+OEse`CPM()+Ll`|UttkP;CDw1wx57Q(umB0bhVlS6>bZ|$SO8v>PNU@#VicN7eg{p8lLV zp6CvN0TP!s(i6M3SK=XQ71p@)udujKKqfHR41Z=aNntuiqa2THYlN!LoxoYYd5MYP z1(5OZ;6qy}q(&ncjO5|^G<9Uq<|UI!=w2Eo7P&h*R@9K%J@I9(Vy}OJBi#t(ed|mV9=R`8=pmy;+XhaUh}mc zHJ$5Ez4WT+C*N~RG$w!8v$zp2$I!N`p(N+xG}U`fs+-tJ&+}fFKbf>_xzbjpsWv$E ze(pmA*!TA=%c2$2e7tEA?Hqc{09Qg(rt!qf1upHS*H8NrRtve`z|qNfB4HbacYFDr zhUo>F#ryh$GHm0s-k13)GTFoqGR;@*E zOg8>DFKUT=#uVxILAj|Ly%7@rrbNm0?Q{|r2_kT@sf7TKM+)^X{AVR=2m9BE4OnoR&kMji>1>}~G$;OtV2%|Tt5XnxvHz^n8 zwjaEcyGcc*9#OJY|LxF#Q)2H?(v7^4L`Zd}dotd)+|%VChe^J0wJzOc@2538=F#Bp zTqQE?E4f#c)&zc`+NYWx?pJ z+ESZ*CaZmFP`TOn0wHd&2Q5|x)xUDKxa6aVJnooo8J!R7Z19e3<0HD$tGq9VasqyY zy_`0i5DN<(ydTrWWpn}yYQ)BsZz=!hIHK_OduzF|ePJ#Ea%~+T#eFM@B5YI;EU`UI zr)M7g+IN0%Zn9hE*zxW{EwP_er)`cV<49u-JZSPE~&4@L;4kM&(6E@Vm}$ zt9$ia8?U^d6iGC2%JId5E{aekMNyWD0mi4~?$C|#^_tR>g&;4WcZ#C?%Oyb-Uiy&de~Fk7@Rt!lzW>A3 z5TfMbggp&fau%c4cl8CtWJYBP(#?8aHH*Jx?;{#&`XqdKzIaIqE-;)kS#_UWX7=YC z5iR?}e>W~sMDCL1d4#7sGCu6lKzXt8=U(8bbbxYXl-ubUCyUH;23)q03gGwwQFnp- z=$#T?p5MhRO8X0gyaq|L`|`D3U4Vlm#aQ13dzHIC>pI#Uflg|CK_wVbZxFd{Sic9Z zbVt;|Wi>65zfX#2@E1E%WA`;l9GllRL}4rX7Rg#n0pZhU<aXs{*yGBkx$y8B3Bowkx8z6wN76G@BLa_a<;-<4n_BONMV+QZ8ROw$5 zet1J7(NWJCTM!M}1!P-aT@|D=KhegnakXW?2(bP>hM0{XP$bQ809Hs~^BxBtEm4A1 z_}AP6i@Xmf+7!5%GRh{B3rYAdN`B4yPHQFRc5mk`<8nl^3q&;u&}RTUyl_Lf^OjLI zV0VuR&HE-*EsM|Wc-s(LF7YPkOHP|@QozoA)xdZv#R0y=1xg`vE@4-YUyvRFW-nyi zyUFa8bEQ4DL#cs!J_hmT*F<91P~2&WUZk#oQ1k15oAcM!+tN!Pr-BQbmBP2m^IGLk z;ZK>qVb5?sy(J$iOCX*c-aZWMi@NOC9j8|r{{E%?>JWvI^M+0%HbM3e@i1z&!Pvnr zsBQ)_+p2ubQ(3&0DU10PU2xklRbmHR-`4G@6v?4N5%4QuEtbEv(K(CZJV?lrr>Kgu z5*0izb(_J#=-y)GEsMCo6OgrH9`kcd{6pz`zdRpzS(d%?{7xRs)ePBl4v6oS4z)dc z$cXnt_l*Rh;P<3lso;b!`yda8^5s(*dau~2dCM!fHHA~TsybE!@uD0xWs}v3>9*aw z_o&;b@|1N%LU-cq0;Q&J-%qt)7s3kDNoefMVNQIm5??Ea5~Db6+lE_cJW*CwHdyiQ z3tKzMSJ7wV36v-1T@)iXZT(Mn zsM3hz9OY@m)-G0|0uj-tZ{xC3Br4Kj^1Zj-#~9uJ9n=Yo?NYI9!z}!luRxsWHGu6M zCw?=7@%9>xZ_3Y77f&9RQi6ncF7;)y&SNt8-nf&P){2xfyFTQ5$fY3o;o;n+NS>Qiu#h^e6cfd22};0l6>AXY~HQ~ibQB`Ce2*U z0QzH+szW2e;YkG$F#*g2fLgYhWlPZ0`i3@yp1MWGf8%j|aIYsjBgU=Y1N2h!AC+Wp zrWgE^X?rdT<#4aJ{>x)KBI%kOkcsO{9{IN5Q>u}?RjV6g3Y3z{1pdc)`Z8Zv)qRN@{6XO zT4%OJZNeuTKo6CNpp8LzX(eoBXmWeO^$fE&h*t^^@U`0__{1dB4 zcn&S#As{7gg`u*wH7G(^S%!12@xI;xGT$?+XRNXmU6Ra#WQBvXvr-QFpGGdE?&D1v z(*?3wl{67ieZ?rTWQ z9)T_xhP?`z?es)8}87&dR4?Cc_L&&{sdA($@uxc4H>G8nSFsW;)waC@%|+LtWUsL z9F^XJW_n4w$%tKc9@h)r^8QCwpXWF$JcYhRbifdCHf*-yw2wa5t!5y>P%LHV*t_pC zne%u?1v}&T-*tYTz%_@HpGVrs&-$KM`QC#M4Mlt!r8ig+N_nq}cgRla+Ddco&LP}7 z_&;6=k|eqVT<`zHP=F@=dbd|5^$`N6f|@PhhxFHe|L2E?cw{vZkT{wvR`*u2p@_QQ z!o=XtEduPaJq4ZwQA65IQchxNV5H4B0An*k;@F}rR#%=Ovl6Ad2)TX6z;@2HsTAKv zB4EVYd?c&6=fdMGf+v04<*fswiV2xq_qo$BbEqYF&-5$HJV>?ffOg>i!@@{V#@Adp z7~qTd(zoOGsq!;RUb=czB693z8Y=PMoYtlfD7|C(;hzkDNi#FMbI7c@B7>3yQYSh4O?n(nkSjFWM#K?Y3JyNYNs4VVrgCX&c{P|E z=`;B`)++tzOOvP{I4H0gih5vO2oCD1hW3^!!0MIdAG|Df=x&Hn{^CeVqCQC1abehu z=(CO)U=P*;US8ebmP+`}JZu-xLF+IrKVQ70Vy!UtXLtPVliDoRr{a=|x2Xpv5%#eWP!icY6tlfD$=%cwaZH{3+fc(L!Y{@6P*) z7m_84dt93l6L*|0ZZl+O=Ad^$7rU54gOW`ymQ&^;VoTyi$$-+aFkV6}+0C=AXB?T~ zdV!Knk}2&GCTn{z@B*;!gl#Vux((mJVqq!~QwkBetJ&w}Nd>F!_8CA0nb0kWAfFKS z-L3$6BUXf?7cZCMm#fNw^waE>wM`+095u9<$_!m`geil)mQB)*nM!!^Fw#nm+efe%B44g`c4_0K#mJJ+KaPNX# za>`2k_Tu-Za35c3#c_~x`f_cuPcsl;ep8_*_0LJ)zAoE2$KDn4WX2i(AsE7xYLarm?&n-A}65osQB z`dh_3x&3m%Et7#_)wBzuoZjXE8OXn8dW0Tw3#aC4BKr#z*ZprUY9m=nR@6M-Y}A8c z9 zIxBG7Q*r0lHt5J8G*umRXaiL1Nr484m};o%obeh4z8_%zVfVYuAb$(lrBIX>(6h%g zq6kgZ)Qz}UV<6Mvfmg?Y5beSQ-OO zr!`@9t{M6XPu^(Ytey7$O_1AVk$>z7thcY0H-4WXlvq%R948}~_YX2q!nN{#^&T9` zvXfw7{h~p;%J&`BP~g=b4s-40b&jJ-9LGO6tA_RT<8x%Kbi(v!-g+IV5Y`Nf``Gt3 z4U;KFeUR{7NUq(fh#q_rdL?1UE8KQEMrLUN5;6qAjqkJ$L82ExceRVzn1P^@TEJD& zjnFocF{0b+F=Q^BY_mG8xgPQG6JgdL+D3zZ?^7nIFkpv*VFd0-q&}%$j2st8Tq#3W zbqj^HS=sh-z_2bzZcD93b;v%x_Zzb78gE|{9QIWHSC!u887(*`i^2MRIk z*_`G^_+?gdCqGj+o@`W4q$nHC7(`lR#;#We^-a|bwV4<;g6kO3o>)!!BhMzWUyFzU zMfA1{=`)7Z7V~<;BjwfM!q8&)%2%RZrWd@ug#OvWxBWYng3wS|t6{ zYV&=%#6=EQ$p(V}=~hiErry_F+SkY_5y4D%;!1(%wUG=6tE4aQfg(k~&&@Yt4?)&w zs5wrrB{T!rdij`LAK=ry3&7(Jz^W47C4@zm6=ITr5#UDI44LW?KgAfW>EMHrXmYz@ zQxcp+`zZr-?KXBbJzKQ8J_FQTGJDjp3=1r+0V7(uPbHYEJwqCi$>s{am5EnRfY}x| z*sqztTPk@HGw|k}xk*?(29_Xc^_s)KY*3G7G$F^*hhrq^RQ^mIjPLkHUVw?<$o^>XOq|G>I;o?~KSBZVl14CN2D zw-ej#3h~n(8Z_%;ID3e1T}4!+z4>~o+~d_$lDgUqGVft{sZq&^KltT(B2)oCIyT5$zrkUf6Q<&hFz5xqCe9I*1ck9s3Wf?HrQu^ zdY`d%_5l|!=oWrVikMKB4_l4Ti4CLjwPMB-e&Ic4>RyBB-g{3L>~2tF{5vQ08kxcO zcunh7hz0C-|F@*$!QU`AH>Q_&dbw&EbAiOF2<>SUh**74zEJ!i;m1~PS6_tG?ie^G z^>QaJQxNZ?|3cFHbBL@a?AA_uPJ?yLE=CUm3qNFqDYsau$0 z4)Z1q@8yXth)Uut#5<$_BZ9L6B=oofHy~EJK*npnPNYGc&YA?3cZY(Kn*Q3XI+KO%#F$_!<)68WPThng0e?^GH)6q%D@ zAN1|cLo-LujCA5CbF-SOV-l-ei8JWZsPSU^tNBx{>sv_$O>zUQZ0A%dAu-y;9Q^+G zwQ2l3Wz!1r**IRy52%rH*=Ur&E&ZjCXg`!&y8njbUdD&6_4@$jz@|=`mH$=>O+C}Z4YUCIk_rzTu!3Qci}}70KaaTN9ooWe9@8k__=T5tR++H zeJ%m>MQ$pGI>tY++f>S_S4FA9(OnrXLk5(DayT6=oP7q9 zEoDo$e+enG!>g?lxO)DTfczh_3DM6HJL`??8DLi6HWEO;z-FxC-2PYhAq>)Na))^S z!?>r^$Q|6-P*q>{jyJ1Ho7)Xo59J{He3viOS4+Qwj-okn@W!F}!jRYoNsP{|BwZ-slvILd?@xo?y8g6)kS}|XXonNT0{MtCgzU3k3{IJH>pwD< zYO`uP%rJbI;ie=7t2v|^!I1L8MCp6E#wWU~f!Spfv|4$9e=&32q~br_`^xzx-u9M` zKIM>4N{${^f|Aw1(~?VU^ea{LyEv@!T_F-oX$-tAzq!QJlh|m-b*v8)H}?~kq&F!e z0gl!9FiQZWV&FbV-G5qST)v#JRRz)D=+&E{;~C;?UKmD)Rw7UK)7X3Z7@2!_;jQ5#BKGxRxVb@d7Xn95X8wI9XF=6--ybZz?g*$ zJ5@BCn*wSt*~ejCMExCMM{5NVJ^(NS1G`SDk6>pbK|_9%jJP!^=2M!nNVX7iz!!rH zP#~iwwi_G-9)KH;?pfo$rIEr}zYkesnF8PFGPC`Nl<~CTgHt~`qSpC*A}c~4+#TQq zpqVSd)-4+TO1$&kS-T^Ri_~a(v%V&sj z(BH=)QC}3-mLajuisgQq*S$cd48!bV(GaE+Qg8mo^M!|Fp=GjvIr=6Q4lJ?UOAyQj zY9H#Es!jh#TTSF^56L-K%Dx!=tHMsjFT3gLH)e;dsBXfNx$wwL5v=hgF&G65 z6Zw@^KM+V8^=DbNZ!Rg9`md&1+L-ovJOJYB31}?H1H1I=zNwIQh!gvtq6bKqff0@L{shmA0TYvlKI#I`Q4*RL`_-Y$M>mmw zz+(b|WNzS&K_tk3eaYyc(NVVjZ0ejVAO-Dcot{vX>zQ~E7w-0LQIR6yxM{n2^C6#m z4s;=(e$}m4VoYj3c4;ah7SSkO7CqA_sMxVi%tU?^rtLg^rRPxyyimBe)){24cYV^B z@Qg_46~I--_dIFsAKJE;MO$(|5Zr_PAVPM(ubU*&ci=rW%ihM%;y%oaVn*ka_?-K5 zYSV!_EDU@pJTP1O2lkV_OovaG)881V{~14!6S#Y<_zZhw)iH~{KUEWx?0P~%nDhqi z0FTSNz0>mmFVUz8ql?ZrMz1ZVP70IDnBeux1;azQK2QTPdBehGk_jeKYj(W=X!aXR;Ytr2snugut!Nr z#0s68tLCV%B?^puz9TaWETrcR+6OzeGN=v=@m^rr55}wV2B(p6-}(eY7tS#eh7B_i z^23?QXcJAbyv;jdW{=TEMphzBfd)c%xov62qT?ZVOC{#I?2HH9j@rHXO`Y_nQ(0G# z%HHi6mRlQ}Er?N2lpQ}Q8~@1g@vj`hEIU5UlVle6Sw&>B;pPq82+$FlmzW$q{7LlkIhy`QU8l8N ziZ4$0YI@LA>^W5pAEpQ@6~fCG4ZC^1&cZ@DwJIq4=|U=Fal&0 z1&k8O*WjEF2=4`d1mYWn>Xy zUa9Ea2K8>dx5dRsZN^?vz_+7VxJ@&JvrQjx z7tBx*g)dK;Daq#1*H0RUm zvKylwa2N_a<}2NH>!x3|-(cXoy}(r5f@JcokOW-@OSQ?7E!cYSntlmz`Rv`qAWU;N zWKn;28K~5gR)Egk27yDI3~P4II6QV_OAC9oDf|I;ZxtwpATIqTZcm%+=V?@}&!pUf zsaH{Y++49E(Rj1W??2}%18L`~OwLisUCHGcboPM@NYnq)<0V6`4>LxSGGc->xYWM` ze4z{kaNVgZGK^fC7LVO1QZ`&pNzREiWNMnPDpn!-&cH4KorRhDe{8*VRFzx%{Y{5- zNOz}7NFyDa+=K`cN=S!vDBax+QX8a18fldh5ZF>mBS=dL2vX;_ZamNPecmzNf6h2# z9M4gQ=U!`F^P2NB!S}wyd7nFi7kFsh+1sp3g~Y9cFq;4*|bz5|3hLZ6); z5~tMl{kLlH(&FCu$O4ATUTL;((SAIK{>PCr%6-0T%P={CHShC6mOlC`fEW+}j~1lb zivTo2kT9Hpk|Z@p;FaGfxl{hp2gfEludql%X1kW|N;uiqQ?%rjfXqG=@&aaK`O;?nEtf) zJ~1i`;aQyapxxjfF^u~t_2hlNxKp0D+%A;1{%6CkqRGbnk*(UrX8)K@~8LxqQTB-G1L)4 z%|YsOZ)w;dg&r`xzo+=UWa8c~HcrN>-atcb;hP~itlxx$j(pOaz6b<_@{_gp;ijwg z*Be*_xWMF*7@v#(wZS5VmERCjd1*wuVihu%Fbzc9PUzRH(DDz&axtO%2L+5GEl>;R z(IrxvE>JABW-{4EF3JBA)Nx+Zua1@kJ;VRq>UT+BV+;gE02EZr@N3r%J8raVAyj;@ zBSshzuuaV&+POoHB8&2rkKCmrNgubTLgPuk?h?lJMh0nG>o#P{MC5AMQymm(&MGB}cykNUQI z$1ciyvscOIEUsLE1)lfY_ddhO^5Ho-4SsbYu!5Lu5c2M`{#$cVedyAb+@5#)!4d6b z8Pyko@SPmCvN@@3%xrL{@67@f;R&-xcK;1>A#n&z>sIo|`@lhAdbmWj83xSS8WEu#Ps$enW8k(@he~QmY zeyFUU)|%-D7XMt{Qt;&s>->I;E89qccN@@jLn(4u{K;4{GlsH!%a6KMVY|3=?G$?Q zH43>!SRV_6UH`k;w#@5IGW^8HK+3^>q2p+>+~HM(#xM`c#L5)`UMA@Kbv}+KT>-V^ z&k6Q|*hcq4u&kgFG5k4xi?4wMD8VHQxHB(O6(l+RMO1OKr!RuU4bE>~86|(g+@PDJ z@!6&=`=)6Tw!tp&`hwpFbb=6GenUcqqzOE_%FjJY79(8hV&X54xrv^|8cN>kQ<5A^ zVe9>N2Yo77J{nyR{=Y8Q|FH!Sdpfw!`g}oV+$4$qZM46*l zbgXr;Kqt)@0%JUc z;Y$YM6RFSyo3EshpA^5Fr`$Ln=lCLIyN)0(;aLv!;H_NlSul5VzK%bU4PRR>Wu@Ph zeb<2*a}VWeO5VF1%T;6_aSc!k8uZtExYSx}-Q;-$cTE|$xrgayc_?W(6av;>F9}CF z9FMSRJhgZows?S)6-p#G%5Q!>x)xy?k}I5xHSly-2RBUJ`FUV>m#t!Q^1Ccs!HO;i zUMc=6>?Wp}^0(ry#@zC|J&+#xIc#lOP?p z^Gx2|vJ$Mc0apbaRABkxSe*k)Ix9nyzmnN&x-&MElZ@>rthn?>QagQ9nW&UUHmxX{ zesPzHEeXFw%XVyAm84#!PbfiS&F=c@*KtIb@X23 z0&E~sb zZ{KiLz&-`)m`f2Yc&04W*ke!lOYimvy*@d2U<<-~sY^om66`DyIL7PKk2_lTHK#UK zaicrANShHD8%^Nrp2CIoRj`ifuA%l^Z&Rhen34Jdx*d2c6aYTSq%OV;95~Q4cGF$A zE%_?DC`;|(m^~D9U-v6~eDH1qoKI?t0(lPaM~@)q(O(G64Tya6-Y6(-xQ*_czyU&c zjqrQBi)A?clNOQpR|I5T_D;CeyyMGl@-&BT)mO(CoKDB^MZ0^x%exF0P(&s^d7rOB z&YJlBUuw(?|4C7qHuUZ`(9V);2r{@JK1dG4q9Qtu=CDYehKGydGC7k&g&P+rB^Z0a zf3(t40M%)LlJGKHCV(;S4p7OS$)&njX+JNYYm%>$PP7OiU^v(*XD9&J1m=Y*oTfN+gs zUK%#hF)}iF%Tb3V)~Ah()fYLegH{0=&<|;ulFV))fKSk%6?R)Yl8~aV6l+!o%ilq-=V+V=_z{5pmJ+7e+ zvELu{S}K7Cm34j|Lbo1DzM;3*xpOAM1?)Dxd*1+O_2#q!OtR?bw!d&=>-gOTd&`El z>1k-itdA*-m&pom&V>wMJpAh${0|JKT%>ynvK_Rc^L2Yb#{3*T{l#_Z9*ak7sM}TnEa9!o{82A{B%0>8MLEwc~3q7-{%w92{&Zgqac=!w_Y9Hpp zcVvD0{rVKeA7xsj64b+)(l@pB#Fx`aOxQI@<eRuiZNgQ& z5dU`0+em(`X(z1(qTTBB`Ub-Em+Oqx<8G%DqH4YS2ZMlcGnK0ZdX-Y7bF5C^vFnOoup8PZH?D4k8EOf^)oIwWBE*~^8;Z?V1+B!3nS zA=tFQHq@ypdrt>wuwX-yDKbF7*KmoZ%at2vKq<bU|!vGQP$B+vO47x1`@o&7@Z*3?@hYv&BHLP#B4Z$ZT zS%_PY=fm{gmUQ6KfGd2ynSk*67H-|&^W(noul^C-+|ku$;Axr#4>g3k^TJj|i0>Cz zln4^~!R#WV3tTPN;}Kt<>#+%NWA=L4*3yvCd=>cB+@wmEbLtgQ|I4a)7y#P-GKh!E zARNuG*Df>;-B_6`1V2EQCDW}{PzUs1bWKx~mlTSqn&WUbMwM2PnZeL$A^XJ`4Fd8m zm2*V`e;5>$FVif!K!E0DmBS6gzN02=+LaGfL}IA5xaJB3b*Su^$s}Y#;JJinIh=!U zbXoQf%AaCT{FDCQmIIz4sN{j(foWkzI75g*Lq2_}q$k$kUT-P&V}eaM7Lnv;iV~aA zHI;X}+xlF?#nL4;VVO)Wn2@$Wb|{A2s#G*#`r3%FjF*zG_k~5et52aF%gFqdMeWStl;l%0(uM$(&uQcpC}Qx}`{*s|En(Ci9^$ge#|FS}w|1_QP5~{p};Scr#D+PU)Kis=X zq$TyaHR#Xd)=-Z{!USW5aP_4#RSPXn!z*@%@$W5^#sNS8)aRv(#+frf zc@8dm$VBc03^pJkNgeX+#OZ5Y9}$=C}p1Z_2mvaaSd&AYoE z9i;CqNwF@OTKS#A8^CfMREmg-Wv|j%qpA&cPgh zunE$Hn3hh*K*yDbL|mZ1!2gTgDdGDG-{`FEU28Osm%ADivp^>tC-zhzd1dQ@nczSDy#u!uP(f7JLbn091M)=wXSDen^PTOu5p4iI zQYY13fg6eP&=FIEEWQ6-uA9?)B_iKqo4^I2dQ7p!IDvHH; zSigmFEprBXBK~x}Yts**?Z!7d|BPK0OyNA&gdaMZTmSkVsy2Z*gNNuV*YQ_(BeHv% zisLF`$Kxi(nqOr`%KTBaW?_o@G>L()V#5HCxxbs?EG`z(mly&+Dw^;lL&H|eK9R0E z*Ql&fAMzcl+*Q5!lJ~2@Ptm-bPwR^b=uT;PJ!zl@jubUmgONZ})iZ0a@n4ocS7pH7 zK?Fg1pgr)^%kQ_gKm5)Sp$r9koBHnV1bZ*ShLS|i-GB2@3`=zXqT7Mv1gXYN1xnRP z-=M6IMqyv(O|DX|L(AUgnH}Swc`imj^D=H$hPycE&S-G}t&?2oy10hdw=}~et7E{Fv*tmi0-qgD-|u;F zK;-^3h9D!*-=^AjODb_tjZSDbH%JeOGgM0Y(hAQ39w=Bg>&`#E%86p&GS1K8*vU3v zq>a^>ES2pRElLS&oqW2tD_SIAad}_Twp{5umu` zu|CVJ@UcPe6FKKj(F!4YiS6JFr@q^Ew5+JtXSR|<_2S;3tc0Yq;ZQC+4<0}EYIy&W z$rR%nMc~(m^>j5Jwd%^X>5uy%ue2q^EiFKC;5D`Qif@Ycz+zC|+#9X=Uq_H*1PW3> z_U)S_Mdi&E{z!-5)8t@o@@KY8Jxh1`itv6dp9-c{r1B!++O4A22GerWJOdZPl1_O+ z=EY#-;Q_f-h2)<8F5u6;!3XTsHT<2$U_t<72ff$gugX=(kN-jGZ$K=n!xQFp&37Z3 zpLhbMAQB;SSuvmLOv8z8vz?@BPdF#TUP_SX_l{uzU1?+e*HQj%=+oDD*LFDl@~9ST zbA`DR!)BwxB3D+D;H&NmF+42_@h!|eEv0G}fsTO?u}O|T4AegB@Z{!W7_UsDk!Yd( z&-O2wMdcYH!(SD!AL(Hn6~!LK;40+c)E&UTW!f`JP$)Y8IL8u+IB`6%Ok%g%9^@qV zpT4giR4+<>TM zK3nV9*+nc(XN%gB8UtfVrt-)E#I`vX2}H6yJ6BRTB}qA<*N)^V4x#Lm_?wO-Z?M5e z6&!}v$QovBY5fYk?pPcLW^beMqkiEg%@p&ws!EnqJyYIpZ^Vni&Akppi7ZL{?pr!k zCGe&!(+9A-u)f(c8DHD6mM!&ymk0O2(TKa_$@TLr%vZQ&MRFYrrD3DbT!H%wMGS|x z_EBkfWnaUc$h)Bradu+Jys`Ygew)S<%R5wHKRF1Q-)2MI?WB^lt(Lg8?`4Q(N~WE< znBRlgN_}9)QpEnrY001$zy)Yx_m+wnXKiON&#sI z!nl9l)jlbH-$ABg3TT)kZZ9Sx0fBZ9qGTQ&41ym6LK%ugI4Rh&jNCW;tqMg^E|6pd z$|x{Tmk6Auq>vTN5`KPAA*kMz^DOvY1jV*~8+9yvL2?|IpagPw*H>`vf_P$8s?2sq zH0E)d;+!76h5uw|odqbSqC6S>AAWr# z^}utU@Ee?Dk(5{xJqlt4654|X);-sYud78=?h*pdG^le4nPqvo&DwIChXlk;AWm)= z?7=<5(f!;1?Ueultx`oP@y@{hfIHa6x}jB;+Er(kAKV$TW%LSBVox?yRj-`NGmE_C zuphycF8@C9_qP+5i`0XiS(B8lbnTvx4vRi~=o>(6)Y^wXKMe=Fn513scSRcTOlN;R zkBmTjbrGL4d@zjIJ*B-8=4nX@qi8wN#ig?jnQ76DPmHvIQE%m|bY7Q(%|ia&!3%OB zw|22v#K|kQkD}r$SqNnz1qx?pU1yWa3hQS%B8UlUT1jX9U0wG_ZR=n}g%G|0;}wXefNI43_u1Zch_c>xkCFvy zR!N;tyg!c+ECltt<)Jmlii^>)`z1>CJrYSK-yM48=OvyiRN&&b?0(J5#a$NSli+)itWv zZ)B}R_%(}~v4eYRg=!KGCFl?a%}YFyw9r7pJ#eTBu()T$AbxfES-GFfJQc89attY_ z=q?g{c~whmCW%qiaCeMeTVnEux}9ramo`zg%Ioacyeq{Kbt!Cddt8H!2wW_WlicrP zk+z?`H*PXfzfmp?Oj=Q%Z*oMKz1CE|0}X_!wb!dim^r@oJMbOsvL&9XaPrZB?d`Cyb!^g?WKjjx*ZRIXs;Z$eM&OZHJLgcdl*CqPj?gz)aSlMkmsTvAz#9n~lmj*DH zm7=-O30@aIO4xopJD&|e@SvpOj+1jXxX0`JI)zsmtU-h-cMjG(m8Gt$8k~3=FggE0 z=`He#QWUTFVgAANb*l=?o!$GGpS%4$qAZnp6epY-rlHy-aM`E9`oQ*9{_oa=XQR22 z+QJTf>18_g)*!SYVTxV^Krq=J>EA#=j8_L$e}2)+5rJFsA+*+-n>P6MNbgkO8Q=Mr zTy0e$n7SPi_;WILBxVaWsPLZVVH~vRfn}ZME8Y7Wxb~BK0yU6VXtVt(O7b1o!#9Ar zG-iOoKtAhnDtDoNx)reJ%uSv|d|LZ{7A0qODuV-}D-m)Ff7)Ne&g7U2#!?4&R(Z)U z(12h_bruKOf=de?OT7vVYe2NK=~gARv6nN2Itj@}xr}I1T906``h!g;Ac~Ea0dQxU z^i+sGN?SAc0IOh@V{7!C_tqc{tu)gow|=&x(>Hoy4+IIE6nF_c>J~LZZpo^6vu?v? zjpd1?%w9OHE?G*(T~e13)E;PEJIr(GqU$|hPJAjaRvMF;@vX46<=gaKx4{AXkx3cN zyKbZnZgizLg@~`61Flgjqji@tzczUQ0-~6udu6d}lHJMPUW*;Je+(ll9&(bB?>c(@-YC+o(k%Q2_)+l0kY+|p5yYCN?U{^_5~aTy9-1)Lg`KM z8~RQX@Yg(=XN)_AQ$9HB$xv%hdxH`37Wt087lSF1F@@W0n@MN#XmAjnYRFuq@r-{{yopsOhXJW zw$jwk$UmRSffcB-CnS!(>BE7^J6A+4E%`FG*Cd(bV|)Kqly~iUXdXr3PNNRILjmJWhH|;0T5TkouVZ7fEDP&h2a?uR)R0V8H1Y zp4|a<%CfdsSpeRv^4kCey$trM9Wvz@1Mz1?&7filt@Cxr{`FPDdZ#3^N%&4NGurhE zC0VI~H`JFz-lJAMGI9vU@kbniQ`}p#lhXSJ_ajExpXQ(_qM--%fgDP3uIHcun|FmX zW16Ve37f`TDJ1TVKlA&$xFj`Ntlo5&4}Z#;Bj8XYp}a}Y17P$zsjx%!qJ_`>yn4-jlwU$HK8M{qxqwB-&j%`n9P>1hzp zCXUWV6#BaQth}+Ddb^sBVF6C5pzl2H6Dp0K*$BgiuQZ?41x6gzXNAeFAbzl%lW$=V zt7SHn{Zu7&hVuyZfw-zLU`6QRKeF3{1J)qo4bPYk zVY5qVC7cB*!8>OFiIYIuwE?Vv5|EO~dTmE5v!EfX?XU@1$;`qR@aaM2`8jPBpJe$b zp;CzifD&90m~?YDk~H*|L{`!T*mFm4v}@jSNl1&-i-ErbsAK%QHaV%OOM_XK0`@5* zIRw>*WA@or{WiitgMjx91;x_mu)9f_7m?chgTgh}I5S^H-4j+sCk&9I6NCP(2$k!u z&<6LP73Qtep`!g0OTm8(@}Dv~Jl;~KB_?%N0=}jV;TseIAbj2C$uzK||9}Q- z$9KR%2T;UQWwQwA*Uq52cZmi+EmUVbgwp87k{9$_c{;g2EmajM<2pTwRWenVM;|%i z7<=t&$Gv#_1yP2lSr)=)hr0G&r?_&Z7B6~GCw;k&&k=Wwr81FAc11B;;0yY{smzd_ zy9+!@%xZ0Ov_rW@FvZWkaiv%fjUH*Pj>h-Tc_MFgOVEm%OTjbT7;SkCMWOmJ;Py6)(F`k}pG5hleT7Qq9ToeNXx^S>g*g z;oF0}D>&8z3PaV6QX#&Az`mFKr}W)(|DXhZSd^L!|MkM2QbcT_yv8y?CJvy1H-f*q z_MV(X{Q)||XY~mVg18;eI`5@d!D7yX0CCA*L znnJGm$F#lFvrU09w^%N5yf{EbA1R*k9?fps#IUhY8#H|GTm^71Ae>U@ocw+3gumvqU(O#E3BQx3FA}ey& zJq!^PmQbM#Q;A)~UCkjr-MpnpTwPUX&wo(Rpyh@Fzv_3I)EwY5)m0qn1onxr-ql=P zoG$144zS18Ls+!+=2GAz0ZK{QCBQJdrv-mn@zpCD@IzgJmkHe1Jrj^KaaR}7A;bLdA*KTO3o>$v{_rM3Ot$pf@3 zi)8b&7z@bql^7FYOUU^BZ@MK!YOjaQi){6~ShMC(#@BODiVJE?P;m|RtpmH?XkC6Q z>3)NoYvaU}9pZ^X;#+iAzAh4;6tvKY>M7d}^EK-&8+;eHo{`k7M%^l(xHW>ax&pjO z)(FRp*1+4p&0GJdF4umiA^toDdwU*3BBRA)oMq96 zQI9`HUiDmSPLtKHdBJphCkzM=_RxPU$>oPLFnYOaXx23mG-XaA8S-~QS#qv*IJJ*& zH4R<0xFKOR`Qt&%b`O{Rp;5b_5KwW1QvS4y*Ujeq#o5>Y3c?hs0%p~oF5LwyU&FI|5l1cTY_~Z^0Ky#5S@1+gCoN9B z0nFS~?A4P*&972e$r5j;Uk5&(65 z(C1EjJRzlWS{WQ@GC|reQqGWI%Sl-*-mTdk<{}?-&v$8s|Lcd+pg{9W*fC$8RHAa7 zrBzDjz$N)Ri!d0kF!NT+A=J_sSm1M1bugefHHaQ_=X2ho-`~$0d+4JFj4KWkpU19V zHO@q}{L_l9#lfXwr|6$7N&9Tc?QaBw_LOl(37i`ATSpn>6+x19y7=T`4^MAd7Sier z&Sv57j*kRT;$(I1@74iZfhgtgjs+7p32k7F0N)NE+?K+H>Q7%g)rBgi7<+aCoC(!N4>@?NfH)c! z-dGz+MDXDHRPGx|LZcG}+Sm3<;W90t0}|IG|2ITiL)=O2hbX5%{L0;F7pHnWb_;$x zPG6xo?{UhYQ(9tDcFny^6M}}Ba>hvE%3%e3u+5Zpy%dy0nI~F0RKPhjFlHNu%`VXB zq>j#VGjvBx-tm7v1Hz{uaQbvq6x^3aH5s$*i*~e8u&rZ6)Z~@T9%$7_Mi>J8bIt z7=6hNk(GN`SaR+Ti?snOJ#D#x2-3=B@rtG4NxO0JkBT{HhU*}576Sf?vQi}Yn*daZ zfHUAM3Q*wgd3r!n!U;T<*l9X%%{tDS3|rGYv(|0XsM)K8vb`(Ovh7ll-jo$c2={9b z=((&9v6iqithJx&w&7&SI~!osw;3Oet2y@8SJC;d!qnN%Eny?03(y20ukb*4QEH1? zd@9RQ(l#VON>@Hl7ngudpd{k%mvL-8@>v^4!1?D}m{dOn^Bqdwi$Z#{00HV2%~`T9 z{RTmN4nE?9c?G?xupc__cjZwr*pwB47cD47==TZ#yO`VmsrtV*&78?onzK)61 zF{zM-qoL4YFy6-~6gT9`5L~O17yA+dw?xxq5auHF#6H!=USMzhT}4zM+v_4v*nVj+ zVX0(e`<1op&DO$hnO$;7URu^Zj)c3UfpZ&MNvqLWvAS0OsAP8nX_hlK{}{-b3);=Xto3I`E5+vAal{|^7j;YmR6pgU!MJZRq^&Noq-E?YzIL( z19I zxl%P2s~z1H!&Q4-31gibAAz2fYah&i)l!(_dRL9oUIl+rPNg*((bw9ep6gekF?L?G zA6S`w=H!>b;sp4l>A=M8HliNga$BIo;Vy`WLB|l}x*~6Ecdog7h}_9|ACC4Nw|rFbdYV;WaR|Gc27(d)eY_JZ*j)E%7#$q_BJaZ~c+E&1p&YiU z)@;K{Ps7~W{n?y)wUnT!^|!9lXEA$_BUulp>T#0QpT7Xkg@#7SlcE$l$325bOusoc ziuhsh!Jt_GuANS=8#3yAR`CkbKYcd*Zow>DiNl-`dDKs8dXrQSgmT&4QOLNoza8QT zm!&fRG}hqEA|Mig;OyDm#n|Jm16+j#i$wil+$dM=rvxK}*Ns8}0_Cy{*UUnBZN%)u z0gX>=k+=UrG5+pZll$WQN7tMludX`!a=@Df)*h^%kv1;plQs{HO!JSy1&vDGVkXRI zOq*kk@Ng~3_%abQz~FPH0ZWy@uo3DCAJrc5PQ34UXY(6Ew|i$Tt7m@&&msgky9!98 z2~FUETUX@hRl@~Qm3vacF$T(vE7ANJzsD|t+gj!WcudW{w7dVgAaDTcYW*X}UWiYE z7;ovR_(dTrv2Uz!Emr!BvSwD!`H4P}U$PkGz8YTmsmye_h@2R##Dv+Es`O{#6v|W6 zH-1d$+3^&ZE3uK88t`vs>_~G4>WTu2Dftfar@IO`2P4jAinVO{G4VMl@wNJKyZt8u zR4RTdytd`?I$1y37z4H~dOs}~oIhJBY)u>*+*guYm9Q>SEW%POQ^v#WR#67C{$h$F zGD0dn(F>GyKubTn2M3^y^4(UdGnX(CS8_Fkg_vMx+E}`sLtJF^*J;qmGzQ)P2zMfV zd2PKK?aNgSt>f>zhF_oiR$l^BC4CQK2Z^9dRZNTZ27F?sPAoMLl2hu)x0h-}A@h?T zzK_$elG1Pw>7z$tL(k2oWp6Aq#Y0AkFk&VDT5tDZ=6+JWV5i?dDCLk4kmvd1=K6P$ z-gb@hh5SXpv`|VSzJ9{5fzc}HF(+;5XV{s){%}%WVyDnsi3N`!x(~Ev@ux-H+L3-7 z;du_Yf4}vDLdR3czsD5B&F*%e?7ik&l>~{;ys?KF{4K(1ZUXiZw_2Kyvztck+$|Q| z)m<&_z{@B~@AcPPywr-Jv{fNY2EgOcicce`AN4sn?oyWG5xnkHvubhFtrBv72{(N) zp55gIN?b}oe!W6b9qKSOpnM7c^9t%iK=i$ZN}W|%Yu0)AMT-0wx2jOf^u|jUKO{6t z=HC3CP<#JCzuA<}z&I2`(jx)NWns2cS=u5wc0GVNmpB3!OohCaeW3iS3Dl})d>*rn z$7K1bBa*B2{vVXCrfyl<_UN(q5dI$ka7eXd`eq-`egNm{d7(%b=L&a3FfMG#B@sB! zk^}T+xL#H~X*pX)TNgAc-3^=#8)T$@P?jyU{H6gbKewP!gDfA|6GoFG^H0)PM{~#G zag_unV>{T`w()g06%((1cvzLMhrJ`ZG)ZZH4DR{`0GFYkwKnm?Sm$ilI1&kJ7LGIL#Rfe&c@*09wfu7f=i|`PfoM{cDb!yDo;kwnz~Vv??1CU+ zDzjZ`_804g4T(ddIi}B9!eBhKq9Rr2|DXu?%+1J}KII{>iQY|^h7rrZg?0$Qg)YbC zE=R%5YOxy)o-`}O*qs<8Yd{tq>jhbRjH10dy%745oZwhLa$*&7sOL|GhD>Di788F! z0LH9%6OP0hlIJwGZLoQ6hlx10OhMXgp@N~e>narGx#5}RZTh>Ck@=SwuPrUMEaxZX zfk-F}Hj2V|mff1{qKUV2RN*%IDcsCj+!zrlREXUBtYuTLTt4m^bzn<_YhEX1P~I>5 zzW8||{!7&7aKai99?3SxK#XasmXp9J9TG(=b#}T6DmoSOE1>#AVMR{{n7}c zIt6K#fYR`#ZSVn)+>^BL6%<+w!t6~o^I2}!sEg#^tQ@Ku8b0U~y+Ytd2rNc&dRxt*uRff1Z%3Oq@u~!1Epj1Etnccd|o@;Le>$6X6FootsVr7cprHl)n`A(WX4}qX59X%QUb{N;TtC`cngSHaUuWc_P-gOe4 z77G~>)&|;r$`iFY)mg3MDve5ge_b&fTCPhcW8?BnG}{<_sMAr~gUg**1>zB z5yuSf3^gxU|EEcVCyf=s=?tXTIysQ-{9z05fYZVqVJ}kuzz|q>((q#WibJ{NvS2`F z*lO+-f-qP<=;q^&e9*#-M*F$=@bdx+2s1k+9{?vz>`(z+qffdc} z%s4jNxL3;>kdh23V?O!jJbaYT^v%Dtdy3k|QU}AOtB!Q7i0{R?IzJ`8+$@^qo9gvs zT3RW63fF`wjQSGo-`>pSY!!)3B7XNKGu#_SK|G$;9BIz>99em9<`2F}1%Kq}I@h2) z=T;xzlO;71thLc5_PopWmyZjZwTE=yNZfV_yI}Z9Z}RA(6W7Os38`Xs3^FE2os?Y1 zCpBDD8!-Tm!@fS3{#;#oN`%?`;o*A&1*WE(L1GWI>mv6@ZtMuGiNU#t@k~Om2!WQ^ z9ZdEz0Fn^h_A8TOtdu9wXzB8PS7=b=YSsSwb_=EMAZXMQTVkx%bf?+^uhq{$NPZu^ z6ywJ^ts9FKm#TBs5k}$1A|5Jg0W8Uaohdp}b6tI#noC=Z>{(%JD)TQGmp&6dM+bQs zEfUHyT$>6tW>e23qP@?nH_noA4bTP_P@W!j_YQ2yH4_3i87WSDZ`gXam#9fW@0z>` z_z;b&O%|M`yFVxyw<@rK(v+I{oiLJ$+6OgoCxFa@f zGT=Fmcd>gxvjXuB&>(=G=pT>POTE_hYr;R)e>}razoU`9=mb%taRjOkVxA6t+>dcg zuj?dbvRbj5j=J+vJt0dXJrs&x{pG}fa_9$AEhO{b%J(^EWUzF^tifZ|JX>6RZx5o3 zs)WLeQ%=Kg_Vot?WmAet(T|ofpeft5z@w=l#9ctvNhl)&uV+V2Jw24pwY-c9(Lf^g z2-M16uY~;a-@=;v949Qq-uroLAnhm7ajvjpht<4hN+?u77=V@q#XM>=M0Y^*?*q=3 zzkLr+P;U^GIfTC+US}xSF)@4q8U8l_0DNej{{V;c^#aqzmF{n+9@XsefPw?S9;kMW zl-dM<2*pnPO#rbfoBM!e{1nqH?Yl__X?EGr3I2P1=#z%(Jf+L#$P0(jQD=CVRx%#? zHO#m--4%ZCn3q6SQJvv_Au9q$l%FdAv53@kEOIMp5>)KYHJKRQzcJIl`Z{63I%EU4Gy$Uijj$u#9HLe@CqE z&unSKUTTHATIl7c->tP11d7({PrtD~#hS(Sqx1l_=)w#s@Nn2ypxj`jZh3Aff?V{e zdu@+{zVu!lImzEV{1x(Mm9XNv3hHa-VPju6#rU7GNEsog$N>9pov8$Q9|+#-sh#B zi^YbY-~j;qN?#}8VHU|$4)?Z<8iDv%ZkU-S52r=pZ#R*a)`{AFyGHEfVBkb~7gQ(| z;go$m01>ShQ^Tpvj~Bdxrvvx>Y*zByrp*yW0_2 zAi_PoBuk&i2`?_v|E^{kcF<22vK%p-u@rgjn*ZB=<@OaK$ts%FK8||_$Z^L-D@Ilo zx4tbUp2*7oI0TI*ewR-dj{JZ>$Z54JDbyU>K$<4(FF83kXK_T6pp`K-(0@a4J+;OWgg0S6!(;nkv)b@9I zn<;oUBbtjjS;c0$;5=%ivYG{N2Qr_1m#C-N`=Es>Fp#P=gJb046Qcx|*75ICHHDS~ zF8UQj)4ETw>NlRXTFdX~DRz>NQ)q*u`2)8h6%HEG0gb{_=neteg9g*@d^nG%*FByIT%a*K7Rz zv?x}TTflp-Wv0ln$2!GXbfyT%lz%FFe=1SP!%Sg^O@B(uM-YksqM)MBN0#feROhHJGVe2o7r2et_yupSLe}Cs zor1+SEtgdzB?0+{cG%~Lk3E;T^`?>Oc=+y3DBDMuPu~?TXKof!x5vjskDNQ&Ifz>V zCAND&_z89QMxsezD6?dN=k5GM1gK897V7;qUSnz^&~S-T=;OdieevY7qGmUtF^pF0 z0?zPJI|{tV1hrxXknuu_k=?>1v?ogsvz-We**eT#rA)n3mRn;vkHw~)h-`Aixc3=2 zKLc97w4J^^^R9;cyO64H*Pt;Ky`&h!jYnY`aW!%RsLPFL(zhfJlz`ReUiDOBJ}I00 zpa#;nSH$7bXwlLv)|@?zFmI3Il5RmQ)YR($vP2j$C-3K8z#mBf-~-pI1k zc5v{vQ3-A)+JkM8{L?!+y>44kat$ zBVC)ie(Mt|LQ~*?Kf4BVJ`T#Wl|9r;Ck5WQ9u^N5c zLfknq8y=Ta3*u+^LSP!bSttac0YoiFnCoYKt$D%+q(XYJXV=ueMH(-^;IFWVmx{jQ zEYYCdaK0~j4q%M833`iI6Dn2g+9q`4*EM%A-v`&;3RxS%W8Zl`x`y5!10RbhY;`Rn zRSOvv@j>8sUsl2Ry+SVXsmmFY;=6t4Q)@!v(x|$gZ?d+4(Bv-+Wm?HJ!SLjFhpOn` zvWt|Z=nGbu-IPiu(l>o$#6B^h`Qa0O-M+lh1Ny)>nTFXAsLxux4k`?b8sf|8=XL4d zm9iJMNQ}RTPi~W*FS~5D($x-`I0zqW-Z z|EzswOTRl65vNX7A^CGFLF!P^C$r#c8lf~Y+_`kH9@%yDs$hV4aUZW~Sxn#2aOD1zB;BPcVa{m%VRBcRi!QQ!u*+bbsIsBrnQ{&FD`y8QAE9O^$um z$=|ff=hF<9dK}n>Q&)W3N8___gHL4H1CEK&iXcIeH~Wuq2io3uoFGuvg!=F|q7fQF zxCB8wsEMx39efPfAHDq*p6@TrEzm9qF1nZCWYhj`Vx{1xJ~jL^brb0Myjz^U$ZH*x zUO^=&ABjiq^7eQOT%22=*}xN#A`E=HGob1O_?=q&ShP8Wu3OY_stzP&uMAy5N!{;dLwX1Wj6fZ*gYHN4mo zi_F3y=);t2W%Oikn*kYF&x-Il$x=|Mi^hDoGx>46A%6%xqDVaKg0Xochcb~@BhddU>UR7=W_GP? ztT;*OBw-1yT#nQ!6MX;=XU8eQX9II>p?$fwHf|W-aPV+sQxES3$_SD>7M)rsnZKf1 zHMH3CnIcM!Cn?BnF8q)H=7e!G*#e1>$T|Sptvyf3)t!}fGb-IDdQ8LIHl~sjh4u~O zl%QJ@&V;6zKJzz(NX@}&fS)zed6P=izqo=A%3Ktqv#sSipv_4+DX<+CcVPQ~+IW`( zhJ#7ms6v!PcGRUF6H2WaFg)MCk>^H3497Nll_`=N2L8URALc6wn4IIe#sv0Hi9Fa< z|0Xr<=?k7yGN)RG-zp;BGZsw9@firS;DB(D-2<*t$na1 z_chSOQ2WDPPgKNP^73@%f}yi*{JXXGMP!llF$POW&^=6N0#qToH0&#h7(v|(n`thF zc<7FGQ@lc!0DoXAg<6b!&u#X+>&eemsBHA#7BU{``L6VVbvx7;POOp4V*d0^d)E-u`_VcFW4a99bL|)htgIm-uZp3Puk_V_I9x;>@`p z|Dc>qEqMSZ!vG^UXcjp`^lP_aTFNOak>OgE2S?&_bzu0+Ddg9io@4E*rv^XKY2rzH z_{`wZrG~}ZzSv{;OU#s7&q6Qe;dB(s4ST+&3ZUEfFPM#lz8g1XmDWxPN(vl%*-f&t z2cGq@FBB1_^uO=TpW)JB8tj=x93QP?89=)&#T2gkUDhI@jy_3jqlpLoDf6Qn!T_QU z+-}%i;s%71dGC|wH&3e57G6Nay7K(IRf9Jh#;a%1b;Xzm6y4ii`8X?kssGT% zFOB`Trlb}!72YZ^I$38y_D1d#R4*>vNx9#olE^MP`@_p#o`m<~+~N2;gbpM!M?}bN z!2eeEacr!SH&tsB8=e;2&-qXO9@N!O=|3uD&$wpnEDsNnM3>G*+Md?JJRC~(EiHI} z4)o@99ZKm<@V0ywm4eG^w*wp{7ij$rT75`#Ri{qcasq=zU2iFHd4BAF+)QF6fHvxp zeH(XSd}fxkw8j4l0cXRtg?Ek4Y!xPnvHI%|gzyOQ&bGzB8$_(yu7pw=?EvUw1pTT{ zN%rVDKKr+uWgFq@DmgaMd-JRuUGpQqv_oCK0j;KigJ~iyhDLfUx?^cS{RY7?VH|b; z^(7KzHF1WjHz%gsxB5;pGyf$b z{$W7D0u`sXY?|~mk82<~tz)?L?HavYt}I=@+_34`A zc58TnrIs>Mkmz^&G2r>ArigX_gJMrBHurkShPt=*?xpuFwD4Tln?)SX%uy4eOXAS3 zE}%@RGK;z%WI{e5Qqt+WF5JK8|9(~X7%;|O*IMU1=RD>xK@*pzKsFC=*e7Kw&&K6CXAAb_BltpGfUfM9IdwR{aWm5TEg7d$>vw*4b;U)LP)84?{3{H+Bg*K{Zk`YmM_ok0k8Dz2+eq`p2Lk$aKj< z|mXyY|;hRF`^nfh}x-7OrMms< z{Wgaqb{R4NJSj`Cmql3~5h=B3118w%XkHlCLW^aGcr$&qoHJ0xr1=}yN$|TB1KiI6 zbrEU66V(GuzXe0C7K3AY*?SBy@!- zPWXj)&vUJq^mcX0;yz@5Tez0|9IORCUPqzKPsd7m2zMzZ1yt?D)g(Q@E&KFrbLg9L zeIFB11sN{GYqxG`te1PVjPsKI{Wtt0|CM*ANz+Oq1S1<#fg{d>E_huc9LXfp2E6%& z{WIPd@`Uy5e;!d3+ID<$bv+2q*LWs#&)+nMFx{q4x@je3lk^B2TJTChBy>1ccjB4) z=>OeGpQFu5g}qIUT{V9YCC(Bl4EHQu#kUjy$O|lI*|uF>yQ5=qxSi(IFy7vM{JvbOFwquKmGCtt2+xwQ)YG zdwaCM03m6oz^Az{$cHUTWhg4p*>p*KfA+;Mx#3N6(c^exvCVt>Dh!ABqnCW^DOaFv zS&IDQ2feOw>6+AlO2)Kk#E)-Opk~O6R3*vd=9lLbh2c%rJfwq3!xR(2NZAXkW*77> zniui*2YYlE@Y`6n+GMp4Qcv_AMnDq}x0*OxJ@I%6c1?La>BhQgnbe_0xfZ>uqEBS! zl94n$=ClYmvbvNp?NSo#2d^+TGmO3B<(ftP9$EWK1T=!sg$B#?LSwhQDpFv4k(aRp z@-RSuu_D(QZ|R9{D_ABy6+gm9EUw@J3-7+1z;n@WaL4Nke83%0?iUY;EprB|MBsVN! zEU?!G@Hu^Sx2PUofH9mjCsCDZh&iR4XEp0=fRA+YA1U?O+R+1UatR3DKE)XKi5OJF zzO(?Rn&S=V8~m^GWGIYKcanZZ^%zW=3`(Z}uc2z4-v~;f9^&YCRUUg7ou%%GkZ9r;FN}Jrv1aiLG$~s!Jf_Q&2I_h;0iwdPgV$+O<)}PL-e!) zWtq2|Y9yNdHNx&;uD!e10|02&Sjj9A@|_xF9rBblup=$1sz^ zMbAN+uXG5PDd$CH`YIhcC{`?Zy#Z?3Xb@T%WoCa| z=a1>+IBaY4Bt|!^$UBBnynyNnJ~NqJ8W+#x`Fi4WlPjD*(YHM;Vo%6Dlqk+P%X2)8 z;;XwHWq)Xh+*m6eKXk&!J^Euc_jG%Cw+Kq0>yd-pNl=g}4}NGo*#4LSDXSbvOEvER zz1%WK_F*hr0@HyQ<%NgLAc6?4HZZFf^?%=$r{kl|53?49C>cAiP4khIG2h4cooPf+ z({PI_f@J()W1h@DA71^d)F#H_@ujtWUD3MU4=+7d+={*)<_sR(#!NHbnj0p@FULb% zu);Jyy6XF_RkDo@^C~zzd9PFVCf@$hG77dfwh)<3WaGbU46E>dH$po6Zahssrp;n4 z!w$OsuuhBQU!c})V&ScXv?9Ayo#}AU^rvQ7eVqY5_VZ5?{Zg+4ZUZp}uSe!VY9$D| zSCQSBg@S&bkZFBi_5Mw{*sUXQ5!iZGQo#73hjJU-_{khtgM)}_hB%eWp9g<$qplZy z%@-4HgDM2silsBonc(BZ^=<0j0ocBb_7>LCmH24V-6&R|LA2qe>o}7gD{ukhmOf8BKC!0W6+Z zlp&JeNkfo29$A(?`PMY;kBeA94+3ubjM!6Ahhjo^Pu;thHSuV;IiODUuNvO=6G_;| zmA2XLL;CaGBKfqyw}Jc(%DIKc8Vwdne7>TBg?d~7Wg!wyp)F-`t8k>!%+uRuXQM4C z!6}T@KOj}t_k4LFXK*lcvm>%d5kO8Yb@`F~Y?jaKd=V9JVws#gL1ZRu#-SQ~$XHY( zUp_F8Cjg~s!+a>pdV9IHNb+1h=2ESXMz&vN+2#7VSAwkR?MAR)AHbCy=g*_!6 zxho;`tfQH|zQ({CJOSP}9KxPi=pW(qcBQ)emmP%F>pa@;D9~8Iz`h^0#lG?Nw81S* zvLUNBr1MBpoB|k9#1wo;E99~Dvu&BRO0~DE+c&5^`+~NK}EqvoZFxh9?#&WY%r+`G8)%P7|JJYI*BJ8J9xC67ZQzN zd2C5zee?K{6zxf_gpyw79QNXC(^id2y$NuS0@YbRv#{&H9S|&Gpv(CoG7^S=pYYN| z-=YFj4aibe6h~qBk;Iv}#+#dO7yLZ3(qW4h`S%jd26Zzao!SUI8}RREvjO%ARH&@1 z9i$)e38)*^H&E{R&hR`(>M!Jg0$=yDqso?1e z1I!!nhydyP4`!#J5Xs02kx9aB@v@|$w1}YC=8U}3x#T2IZ$h$Z0_0am-YxhXzs-#e zVpiayFbfXDLB!b(QV1ByEbhi@;r|?l$Mpqrq}}@t2zNotR9_N zkqUZmb+Dg0PVu&zbVP-s=fMhZ;ybPDIuK5|`dEXqf?x2o4SF zA##Mz@ZdPc@4I@}By$J;2pmdNwQN1kI2z=CYkdTra%x&98=?nKffucWZ6(;Ln~*v% zxnwq-eD7oJnTY&nWu09Nc_H$+p---k@L|pD3_^zsB{cf)*%u0r*#CK4i@ERVAKZ#C zl2Ffu5jT~Ce~=S3mq4Qc4^8P+)Ha;NAg6vrMz9Uu#ZVj<5HL#p+?+*@OqLX5)7YH! za_$KZRWGGqS%3tJeEL$m2Oq%xIMy4Uiox02BDVxy{TOK!^2ZMSY_ zok`Rt@hLyVE!%|GyIyYIN129M5u;aWaBT0rAj$QHJ@3UjC+34@I_t$&*8D(HIcdO| zFtk!pEDtj6pNLT!O3f_ekDOcs_wXfH*g(ynW*|ZisWOa=}MAQVWU2glK9Gv7S9-y>8$HYL7$9u(vGkQ zykLoa${Cl8lmev$IWb`&abyLw4~__c5T^JfBT|Q*j6LKU9CC^Xiv#c`F}M^f zTM?QMG~_g@6)qo5|2|EPgjzypxW>(baBu-~OCDrL=0)J}B$7BYHD}Jqd+du9rI|II zpa1vXSKl$rc6sc73c{$qHR)!IGIYviAER$UBm{!|tHu_5o59UtmI$JV@S-@jxngZz zGW7tac1uon*V!PuCo1yRPgKAV{L8f-JPD9K{*FY%an1Y1$Uci^92>`#S^J-B%$a>% zc>H01=r78>&t0&$9wP&KqHuj+&7xp!bpyrQ*Tx<+ncsqwuz5qvXqjJI{yI8zB!7HO zlXCt~&;#DF2TGm1%CTv-ha@DD2{NS7>{@?j@9#PW4=R|8JQ)uOGRZ6vreMbUsr87R z*MPzb7PM}qw9KMpbdyWoSn;LUA!Q*~m>t=i4^gGT_5zUOsPK_dzD@d4de1934xP{s z&_hx+NScl+??%n?o7nZU#e=34rVxpaKsWSg>uy0b*`Pv{ZofXFo;)b@wtU$8-PP7B zv*bnL76`xdL%=pPJ zZl(Llpwj!98o>RmjR4PVrs%W{;+^+CqNt0{MdH0<1=2jl5=3U)g<(LL8Vk`dl)!gijn0ht; zS|?x`%H8)sAOHM8wdg%N`t7}>m7Vt@*SUd1al(&YFon=`nS_}U4H7Yir85ePxcepc zBFS!eB2hT~3^5k*l=|55TKdbJOIa*}wLLk86`}|9nC@-)IH75>xE$v@*nFrQ>pEuz z)0_kv7Y6}GkzlFPlc_;KlmS{*9P8V(8Si2P@G_5aDtZqRUy)tE3c~Fkl_!EG-}|0R z-aksdA^rFxz6IBkq`_$%!59}0R8h(!>v+QArLOVK0r`W9o;}rN8h2NEy8_RN0;gW~ zr;u{9nm3@b5OfVLTMM!>M17fZ0kc3V{6{DJOXw=FV`v4LW_){rcW6yX}eX@P);G6@TDc zLp^+z{jDHh>?EO+;9qlaE@>LGaB41*)o-pv5~>hCI$DQ3Q-uB$irtp?@P`=G_d$XS zwDuaVHp%nb{01{T5UMWe)WKqUZx-uN@uTQ{mzC_Wr0b`f?HAgF2A&(+mdb~{_yC*_ zf}$0Oz-ICWCyVJ_%mq^&vq+600q%@9)Ap%W#?!DRlRDDvi=3wTy(sKEXZJq6{4%9a z5lIGqgY8~582sBd)#F{h*>h&%=KWz)TH|iZRE9HHqF~|V(IvN)JjH?f5fuZZ$Btj6 zEXha85l1$Kq4zBW5wApLv{=x3yD@0S}eA16aSLey`*<&bjA&B)3G?2?KoE#u?yLp>wN= zu;Lyjfd*ti(nSG!w&J_KK!+k?JFlN;G!knN}IEzJ66R=+@pZdvCctEKO-Jaefi_g;$&G>?m9uoArTBKg#@r5YC<*khL~*$l|xWE2tBC zXG*eydGAx4P2oMPSZUHc#AABfZiXA1c;`xd!GPwWg$HpaGKm8RiFh zwBk~K0@MVfwEIlC>hTXi#||}j+pD*XcGL33R|@$G#}DE#$uFx+5iJw=5{!;HKBMw0 z6@G=k8e2=Lp*BzdNuJF!{6g)M&+_|VzSGYF)s_dpmlM4^hdX)d%*M@{M0d=hXCnEv zRcsAjD-k2ZJzjGbG7kj3!KV%Ku!CoOeOp%F&U1H50~k!{5NHE)P4^l#!OYWWLg{>n za8TwT>0|0wU>_CBFgrETeml-h_={?BfFmulDSS2;L-6pw((l*Y1$tnOXoJK#QEx)r z+k3y>AB?nvVCM_&QU7db8im3(pXxJ5=Q2y?=nLub4dx&|DyhU4@U$kNe5fR>;z<%-RQG`- zHeP&oy>jd`I0J=h=uib`jd0*}8z9$}(meW;kSZZ)`9ACNN!EMzp`^bs3{8w@RTisM z55M`)N#k+H#vrXfo$`A21MMfhe$e&Qa%O+rT3o^AM7`4$U|?IzDZ4<*bn)ACfsq*c zq--}cAD5z+W~Qaq8(9{b1k)JbBKt##0qXiM?B^JQ%j|fk+!t#-&ds0JK=|UtVH=cX zVvUfv48Y2d)S*y)2fr&glf=WsT&_8uSRk{$4kTuo#z2eU)DX=UAI+Of2FTnvXywJ1 zG~{g&Q~|3I3xDuSZjj}}hw=~o&0kTP^m2SeAy=ss>@VyHB;5A9zC78=to$6Qdi$Bd zuFC(#1B}*dM6!xm2Ks@MgJ&)c**>M|Gy{KOlRJk%k>18NSQ02`u(s9$$QL=g9_Y6_ z@0i0>cu4+is3c5JTU2Yg6UXq!Y^=J{hs3|IKMJHNabF{z1VkVGU=0@%I=oJ6T3ZRBX-Gce%(3^Hp=~vR)Wt0kkjg^Yui6lGNwhwf)9uF zIVh%Z*^y!p-~wBsS~6{HyD0F027Cmw;#WJMRZDj+3AiZv(^-@wJ4_WbKIz|f=Iike zccZ|;+10|c25~Ml)*5|gY_BxHzN-=$H+suEm?P6zeRwA9{ii|~7b9f+u6rBM-@Ir= zl}BY=-@JYZi$G;UJo$$C>to%sn>79#AF&m!sC!acm(k50aHP0w-+UV4)>$4AtLl$z zpac}q8^A>EGS%bciDJTg9w0?o`i*?|U>=x!WrMhKi+JzJ?CNN(u|@4( ziMvn(Oer-J;Mi)c-9p%iR2l^eg>6VM^6qYbjqM02mh8i)AS@YCA~(Y{L{_vQX{Xq?PI#|+N9 zd`DnmLcfpd^qD+6#Q2$c`DV`Zr!zSbd<+_{JGnmk7kPGEqXMH0JNUGX+vMM_MjkdF zDvVc{2O~$N{X6^RTM-l5{m4q^kz`o)=dD@Zof4?>51tjHj$CV*@KG9;tB+(MCXm(5 z!ryw&v$E+WkBqg;lI&{C4DYI#KbfMdeGbsr3H~=)z;4Y~eKn4+$D$hAtz<6ZQjt6_ zZBFW3BJy5?-}Yz0vTEdXm@~Br*RR|h|DX+z_&mt)If7;x0!w_SsUeeI$7QQuSs`ss zX_iNPHWlDdaAQ(PC7nH+J}}oN&-wWjN^zV!uv=%(OyvBa{zRI<4ACT5sl+y=-4$P0 zJ>g8$LC}zXz!Wyj?Nq&e=g|yfkRNJX#cl)qs9aJGCqZCDoWw)i@Q!-)+AfoPg{K|R zAO6A!jIohBpuP?)zMd(JKkfH9q?gX6k_=py-jAEr3z9wP9a2i#xS5P~vRp~%bg#7? zk$fCu?sjQkgtauHB-B1IJuN@H|uyJ{>px|HMJ~A(4D;uP-SGu%d%pHUo7gl){t*g3P^3bO82K zUT)QV7Kbx<1)2XNZynp@T@7;OiKr;cN2GJ5QhfqJyG<*B^df5)eZP*R6Fwmx0WB;v zb1I|lIb_D{0XHbLQU)$-0Ka@wU8AouK8Y&wqFUQ(axiH1>7t{6eiQ&JfR!`F1f8@> z0-^^Av*AiT*m7~ZjrhNLo)*}BinU`FjzF5N=mc<$0P-p@U!XjS;AW!>U~i`7@0zX4 zuPs9~aBLH$t_t1mG43$1(De!WUb8y0Dcqi1Fy5|Y#HOSc(&$ky1G+pks+%Hb!I2YL zgV3r`J-aRni?R9GhE81fW{POtx$tI;Vb@&ahyH>Vl#A%%>l~mmsHdsNcNCd$zOXro$UZ?Zwr^#(|vO z&qI%b!unq87j@XSK0B*GlUUo{o4CqKdp4k1YWf%Ev~7WfCxiY(vfCv~ksX_tOBbb8 zzrvsA8W>b& zye9Y^8Wc@sPD({?p?uaL!`osU$;Pkn96HDBLh6Sf4OfB$G9vpLVooN@3HvVO5x$Rv z(nC-5tF-d<0Gp+eenMpzF*k!ymj>|w znT8ZH432`WSpU4;cvyVH3ryKYyepNOH{BBCKhw9rbEVWV*Tf6UntNIW*5ZDft7_MG zl75)}0@xf>w(8yTYb^q5$r6@4W<%A<%Fj423Td=|ycFNk7^Y>~CoUix!w^X+(i1$= z#60rid}p<`ulIi<+XS7WOid9)VFEl>UC~m2xYZ0|=6KZY!UXffrSB@AP!g%DhEkXH z5TRkb(K&6fNX?5f7hgVeorPOo2X}V};30tSHZu-PXLkWCc#7~HbV&tDV`)=Q z)oX*fefJ@GN80tD+d3A4iUP06-j7#I%h*PkrrujC2~4fkMD*|8O>1Lj@QRs%17b-} z{pNW*;RYtas{!1&U5isUf83nSw!B`-N@3%Bt@R(vB{(=9=|0lBIoLGPdBQ*%%8jv5 z+KdYE_|Ax4wdNO}SF~n3u1joJA3|h~r(x?}M`k!+;9UY>iZZX19iVnj1ebkD-4H9M zbTgrIW-OJu#E%j1Z^HdXVX~-27j(F8`%_I?+>cIO+jp5bXI7>Eyx95#PW?a|X3U>I zEzOU!q%4&LcdbJ8!^s*i#Wwl-&Yn`DA>uB2)#3z#;UmX^KUdD|#!f?~d+5KD55^83 zA(L)N%j_l~kLL#8GC$ZY0T78IqEh7ssJ@eoY*&2Jfb*50(nxndUQ~hgID?!}>ob3c zcUm?yssc=_%m0~E0j5qP#TabtAe#w+2KHZAcoR0J*c^`M$u5Ue=tS9^Fq%L%s5Hz zef#qkM(lH;EFEK`7CAPICmL-639ov7Gd?cdRCFtmvb^t2f`@0(SFuXpZkd#yl3o6e z85QA6?60z_`>&(vmCTD$rIIZ7nzlD#DiJuV(j8U}2CdDYyZy-0-=I{Sqyp+Rn$M*PZxN*?4h5(jwh_^idI~kkW2MFO55Q?wqta5V*ymZKkP=VFaA1nMXc@|A z^AyO2M95zI*~^0_+VW04-H15dXvP6*uOCxUj;O90Q zpuh{3h8Elj_kJu-UJfGrA^8}`NZa+l|KU921=v2BN zA(I%Fo2wb_OPQwn=YY3k-fUT;i+#mH$4_KX_se#{uX-DN5Nq($@PP1!g#Glb;JO3n zb649#$hp^7od&NwHQy536Z9`$K9^w?-=_TNuYi{R9Adi^X2ojLq<2%#=Zt+{p z>=5^VDG#WH7pF;s<)-{#AI#JkadzcJ-s=hRIROkzz-FR5cwS#Kx*qDCf0ax9G8Nq< zZerHJ=bO8`;j98ye4z6ne=y{IN-tzBPIsQIl@&@}VXBYd!u4q5jiq~lG z*G8%vVI>qtw=jxdkm^5jYQC3r>`tObFU}$|SE-28DauIj_#vvpJJs)*Xvrw_e_^Fq z)hytHfrTg4VPZMt2KVs;>8Qv1+UP?i=-jg{Gr0=@w zE8rwG4sC;DTd_L)N0R3=pF2m@An`J{256#F%)p+fhXVOY*ex-^rfCVEhAH3O7U0%Z<9bEd=%{BFH--3sa6({X{?;dH##Z6JI}V)jp; zOP42$*8?Ae+TY~n1_|~@lJL2-hYWElR{hJv@4?}R9_S~7{jGv=N!unLE+W^UFo~cHJ z5Byh_@ooR5#o(eSMYuE`2`IhCV+#Q?W(la4Tz1bmzsD}b;_;C2z+Z4rw8oxD7`+WB zwMTdhM&Q7dEM=%|J2@E#PQ;pS%E1rYLn69ktI~+Xij48&#(qMtP>xR#d?ktm71Kq# zDZt}C-P`FdLF_psS}_zukw_2j_%f$$y#Q!p7FZkWjSw3#xRtLX?4L_rPXDFL4*|n4 z1E+^G6fd;*BeXgV;&GJ2=@@KqRO+d-j>|;#J~BKYuAUF|)cBG#`iM!Nr{1)LaAwv9 z5L$qA;2S`>S0DKi6R-MZA#jXRoIw{m%CdMf@uwSj_IX^8W5Fvk;A!8{_@TyNAz(Ml zhi_V5`r1tgxDx-*C=Y!ff*Zx3Er=xOcG8-A3DnG)<}_phF9AILs!mnMitzi*2<4xK z6q(l1U{VZh!C(zi+x*5%VPS@+`Isp8<&s>f>yG_wATm^mqDskw)mpg>tkFe4vAR$& zbG;gOym+Zufs7!Zkn?+xBPO^5RC6A`t6<$dM>SdOmU08oO5R`b#T0J{*^B|ctr8p7 zt=Ex`uv4hvBrU)KaaYnK0{1muIu_JZ&MNzUR-r+$)q{E>$QxMDBhsf3bMcN>lIAHM zK1nVx%tBqMnum?W3is{0&;^hV|CHN#@5K4JI?dP z0a;DNN%XUaEViA$D05kTi&<-(Ywo}Du|}xR1Dsc7yuo9)kl`s`CMR9cDUpXxYE#7W z%-F7WM1ssR4Ip7tzRWulJq-$d?9cI48Qr?}RfG+o!|ad@>gl$x2#+y_Bm9MlIWIh! zvY_$@mGMAyKU6SUb5^k3NZS^slQCM43#9#Qg{(;s=Ai|9`CI%X+e5{PVHUNwtpuU! z=MV8L&}#>rtE6AWC?XMd6n@q@X+%R!0dNGfY;_>Ct8HlLAW z+iVVLs>)SD0L=m0afy*>giDS9V;k(%{apMk+Ms87Q!v7Ptl)+B_bE1wvY0SGZSiI7 zPOqlxFk{3jD(NMt$>qx*VOFhTPb%hBteLC;y`LLA>H%#z>vBDp&Yh`TZuS>wg(Frk zAvL-zek_x3_3#z_(95mz3EfRY&=W`XE6uuXQ<_3?5TM?t1yt^8E6bob%GbjJrwWT< z%^Rkwm#F5qD>Yya0e_y`exCqx!mXEQU4k%KVu&UfGcF^^+Kvau3Z(SNkbRQ7VLtds zJ{?*#<~QTW7CUBfB|owr!(~KQPB?h0(uUcxL9(J$PdD;VQy_IGU;eHfyUf&2W}4Y? zl?d%d(7TS|8piX7aqZ=orS}EV&4yJj*eV8x>V0ya_<-5U5q=6BI1sp?0_huSvNtCE zUC|S=qu3@E_CapKa+er9-FT8bA9AyfJctEdiK6kr?om&f3t;LcLuFbWwbtzsI(=_9p;&j@ zXD|emN6zeckTw8K;G_;4=%U|F;4|%*C8z=%L?b};tRk$T4afoQ!(fFFu_{zyKSfR= zGt%+QUHf*$Cv`x=mbP)Ev(*kCWgw%#g1%tEe2J^s2_G46yMTYtyQe?~rKd^pRBYop z>Z5x=reBkir6CmZ{*uOh+TQU6T!qvz?u-|{x~TdHNrB%rTwD)T0&J(8-3=mheVf0x z38@r|3ams*QC20xx(+kLE72YIYrjh67P90}V~Ifg?(TNAB8Ta=O%uNI$-=@y5 zs{csGZFqU9RUSE~)n{i}j(X{!VCQf0ul{LM()C8DvdZpbg58iW`9EjJ9Hy{FZ@Vezd>4(QswhoBs^+u}hnyu!PC= zO8paY_=(3uBE-w z3YYXyMd|l7v8!R;w}TOFQJ0anQ>~<(sM?Rd3}D&D`3|0(n`ZA`B)M?R><}Cm6NeGL zmE2Tfsoj@;>x93y-3R)gz@lOQ1Bj23;Im(yjDlKgkXV6U{)ojN_}nFHnW_gzN6fgh zF#z6e7I<&L4g!=vvC>mzgHOw|J{G;durE7$p4@ZI+O~vI|q^h(pc&WYZq5gHi*&>UYOXLkoUp}Mw!~v`4{~Dg0&Hx|jRd?pR zzsrxZ1PxN^f&O_A1|E~mByjQ&Lr=ly^pW*Pj<;&zj{Ba1o##2h$$BMialpdP16A$9 zqln9JFKTik*Mm4$jzyO*EkydH=dR#q*bdSGSr#Ipz=*H5ugk;rUu+GG4}d(UXdRAj z!w=pt|C|ESvoD=RhqY+O#=Tzu@9QPvt(Xw*yy%e{VGjw1PyuK7L=-vux-Hq*Fvk-P zhrBhvuElXb|-noJ{hJK===Sy~i2s^sRhqNL;MnZCb%kQ!&y zVNDWd)8NHNv>P0N(-%SCT zpjf8Y`T&*;e; zAiLpOkYr1=0?7bPCZsBCWz&<0`75O1CBJ!-^Nsc;L+WZc%+H3Z^aL+0I+u!Y#IQBXBy1 zO~LejO47uE@ zRviBgD!>axl=0(qA(8K>qNWI&Z-Br3rW&xk*Ro-mOD58dQkNHMy)HCiOpx_F_A4(H zjq*tt$M|Poejas0P{>5KNtm1>53?_CE^(1&>Ko-(6(cI{`?W#YAAnoJ)bse~$l}y2 z)26p`j!T{H_$p_+qK{GtJt}?_5!{jHEm&<^C&h&}i1NyOo;y;M_K+gyf&A}lv^@1E zK$Eau&0-2AulYV@+4(b9PEjIU?6B;C0I1Sd79zTLY?Oox>&W(+b&+f3xOOgexPFh* zc%zZzI2J#~?RAaI`PAG4hi(jAK%6z!s~4ZgNm6dn#gfYW;N^DC!}cw1uW4;&I=3-& z!I@QcoRI(!Jz#Y(7^e!ZMRvBmMxkDxcL6g(G@VN(N}NN9e;LS}kWeWlBVoi3#b!P8 zFDg;8+1Gge+wGiCN##W0IReWMG=kT{qImx2uTmF+914Op@$c={3l;Qr=(lm=?Zpwf zUPwA&PtqoJ?)jjwk*ue1)~{De_3SIcX22rg9xkpB$q%E%PV;NpKx5+3;Ki?PvC4Y-Fs+0+Z#(uQO_r_?;)p@7e5 z5fWfTWCfG_I(%Yqc8CF-`Cu%#Bd(cj7+5Yi0Su=e6U~V!_)}=J2$8UvyA?I{nL%DX z>m+Ru#W&vwBy^r9_(;jZ;E1pG?57laTjc44*-j(v-)Y-`$pAR=6>ZzVSH)~>$9U&e zi?$-wZR&fCF|*yR`rq*jN!`m^ZQKfW__;=P__%g;bltZlW;2m@lelTmZx!SeFU>x8 z+IJIcLDyz+m~<&2I5wg$5y=uXTd7P@fPJ7V5!A>5#N{%r(zpZk&PR)q@=% z1b(z+QjX?ebxn2&&d~M%AGjj+zWRwKH^Db4;91RPW3#|S6n(?2{w_G7+)-O{++A4I zm}Ti6Vw*s4{uz)Jq-V051Hueef)+$Zv99!r<0ql8=|3fLFj0U@a-C8Oa4XkaP)5wL zJ-`ED0(7wojDYX}_&vx|E{har_FgQ`0~(G>Sg-yd3KzHFXFi_SVx!@{Ap2t+)Bw_)+yu!IA%;6HYYYxb3#LYogT3vbF!#6BP8*>josJ@ zPe$}K%DCq}COEUlJPs@vkmTbeWmAHroXWVsrrGZ8HH|`8+9EDc3qLzPG9c zNY{?&hSo?eJG9FIiJhp&g4C!aSHDnw*T0*r&2a2Z^$aA_ zg^pQwViVXT;IyH^zHE4>p@h6K#TkHEFR(QN8c zQN*J?sWi7CQDRKq=d(;k8W_F`8{)kS#sVJW)~8djA|$u$oRgH1#R2g;LTT2A>osUl z&kN|f2mh1mWynFAVUx&6U@hc000ogmSkK~a78E6zFuP1uErD)HtX?z#S|F_Y)S%G> zLc49H%MC0PXh?EsP()@~ntcyWEnxU{s7;t!Xi$US9bh9(7RLd`AGM~e>|YCo z*kA(?=D57U-yBm;PcNm-IEe-oqa``&n>Yrxj8Rx8SV$#KispQXO0Fsme<+!E&^B_HR>jrTB#%DL5{@zAcn z!82VYu(o^idjhoA#p0!Wf8n!#qt(4_b|h+{iOI6~UWu0(&#!eWGu@P;?%t^H``Tg2 zwxS^7(41zxn$LyWCE3;e3!WesBDHK#rbro8m>!^8MH*R~?u zjV!NxY7xemXEJN`q5`yFe}wL>0p#;)f<1_uK;In5>z$^}@!+BT5E&oli9S)Fjz?C( zK-S;nj~w91#E42R{vJxbgJQvFe!mJuO@%GzjOP4(SYu8e!hOl8qO})0(O0|y^@6K< z)*GiuJp1xruy5J2SUBA&U;R4T%X}u^$z%^>osIb_prqULJ#YXJ<^OTtY6pn~MrZH! zyl`eY<`{#n)In~P>WwtqMWlJS)JggLKs2yj7oKk_AA8KKUxOX=VUr}KG%_m5lN zCala-9o~WnGI*St!8Oj8jY1iTy?qVz`Gw;FHhu31&?ZkZh;ZDRB|d##O|I;nfclV| zK{545-OZi4h^%uSifAT$xE_md4YKb&%#ObGByEJ1O_Tt1adrDj>rDav?w4T7lWgy< z7egR8s)e$Ly%$K#if9KoA*&u>bK_#~R$tRhf%Q=;aMAJNT`j2V%7J(C`oxRZ#+u6& zo*L&Fb)FnP8{DxxR6^aJ_`PRd!5Z%vKyEPhm8=TD*?6#hBKwW!OrCOhAtcjUf5f-O zxlnsXM^$5e39>xtDt7|n321S!5;1xrO7f{IhODB$4{?l&{mQP$931q~&TfboZD^ZX z5X6hprpF3pdB7FV1ARAql8)^93SQmoYk2zKpg=JZ_mr2&?_liCxB#N}O0O3fpZ@NN zqL>s3F(TA4DbX4xyecT;Z}-rbZV0pcPEDpUfGH6YK7sPoU6?OOZxJj_CB{{G&O>KXfA8&uKG2?fBaC z!v7P5t7sJ0BHz^ze7XdT?4bPt>$H@N_5f#M#bl$R1&>1|*Vk|e;E&qanZKXz8v_HkP zA+4Q%+saY?dxPzn=dHF0dIAH0$i>-Op}e@-^mm;^rMZz?!}xJsdH6HWR4s7Fw;f+} z|3tDjR7~-a*$nhk0aOOX*cEu(LoW!7q)={a%6ZX!oKCZHW1|yE;FT1~O3fR1eD)Yv ztpc0(>r{PR_W#M8t713XM-E$#!PY#sG`T^;&(rWbr7>=w{|hl`kb(wu?MZ77UP_0EKUX}dOO0t}~mO4s{lROkglJ%S8MQ1nYVud@5`RV?d+J3L> zZN7_Z@=co~J-Gca=CkA5EhU`Eu#6L$jPm{Wi2|z3X2SU2R3+LKT|Hi83q7f+vAn#} zMg-mo20z%A+^}|JOIP_=#8Lk||#^bH9(Vg<3kNb9Em zw|#A#U)Qc`&H;+^&J!K$cjsANi8lTk$cOLS*NESx@{{o%$Zt3<-|Fj+0!Jw88+6(m zQC3${1=gQ`VNJJhDWazjhY|`wqK~#hJ_l?3FU+>R4|ai-e`5)&G;AznIcG9n1JJ7c z#4Q_=4gyY$R#`Nugz{59BJ*3wJnbQrL+)ycJBWcgpr~|OQQT8@??4481_Foqf%Zd< znaAIE%Zzqau@>h53J!2^qupc>1G|iJJ0u>~-b2CbXf`8fzF0?NZ zgBTiAuiozXhCdb1ZPF{7fcxlQ_v^G+PYP&#Dh)Rq4*qymI1r8w|ApEwYwu&s=6Ok2cO2Q-rejLizchF%nar3cU=ud369*8>hqFwUKB! zKLRtcGtlU!u9oh5TdFL+oecx7m`G!R{%0Xcc%-OsFcLXl zqzDFnEk^SG`wc%w$o@a3&N3?Mum9SBq;yDkgM>(Tcc&mBB_$!U3_de;91FIdWmv*vuyC-%NJbBK#LT;8C9ER`#_dQ;UY5bR*)dM-cx zOAwfb&gc@2-+NtrXj@Rk#w~F=pcV?7X|_1DF6_Ahi%OtgE`O9bQRuIg?#D+(W}+^YIAswpHt=+%Ju7S{PR=Fw1mW$6ID$$ zr!;l!Y_^jC%!;T8XGC|6nHLME8exkqKD|l<@eIL3LWBDK1DQ*>FpgZvmDhOzK&>|9 z*{1=bqcm$5$~lfr_IHnuKRUTz(l!fY`qYJiw!3#=Q&fIcZIl z+gKpd{nU(-t27}T{nIDrNVi3t;<=3)>oBKM92$<1J!Px*Tt7LT_9H|}Un3w;m z+Gi{c)TK|uH`NKB|GcRJN&&J8x^6y8vi@`QCZpxSq9DIkL9RDo%qa=qq$ zsYv!Tzi9a+pR)SEN+^fB6oSt*Z%YT8xmjAnSX*8bnByJ0TmW)1uc%I#hJ)0$i-FbP zV**mhvTx~gd=ds`$Ww{_q+zRHaNAJVtGFLP_dE@j20;V43UrO z`%T5O-%}qr0pmh$$mx@c{$O5?u9#YyQpb&M{Hq*k^=&{x_B0;~XOd%d>1Q=pZqxex z+3#<7rnDN55`BFJ~VsA<5YgpXgr_54Ext}Jc_!$Cpg&iqx)Rf0ZFxX(K<8-oQoc-#4>U$ zB(1>&{KA&cH&gb`j`Ee#t4Bp%9J#ft7J3-CPjIPNrGLPg$rE6Sv^w<5bN}v^0;wUO zpq{4htuVh48d(|bRK&4tfk0KKM~)$LlAJUFKBEKvYZi;Yh3$`BG0$RCySFsVo(d$q zBAOdF<738vqGy2UN7lC)E2S(L@ZG|*mZOwMDWO8%Mf4+mL#LPIjJ>`C{O>dr@(;u! ze&JszpQU`-B1Mw?vr?NI|Lpcd;mWJ_YwO3{Xq;BMnf=kqbD2NRrIGDhBDn+jh9&(! z1ze+OgqUv~^8RHT?D^7ziW^zj=z9HO?pf@pir4dfLCG*8NP$hlZ?Z8E0BM+!-D*ln zby$?b+iabCtYG8?1JWb6?C?N6alw)pTIV{w+?dQq_mx(qTOb_M4e|j^ca2#8@WZ|aHCcKk2!^R>-b8m+P~FoVfs9ihQ&gEV{{v6R_={{MX;V zL2H(0jOUGMb!&v{1)W*=N?M>++Yc53oyWi0ZAy9s>@Wgb*Fls^D&WF`J08T0(6eUZ zN0cK!<4j1veF^ptQO(vBzxph_D?q1jc;PYnlt~3SSH4tIdL5_>ae-@SBA#F9B$w|) z{=!psQ7H3^W~_3}hWFtu%qf6FNL1${uo4cKvOM)JNlU)ZJUlAZl1ut*c#?Q8I#56u zgHDpUiqdNlM`-y)FYW!GrlVh|v80+ztV>o?<|q`hzNN&lXSEEiE7R9VBr{4{XHPx7R#vl z?p_`N=X1fK(a$}k5?YpUT%nS$w4INE@6dbvekwY!UjxQEehUf+>G`M`aH5qstn90h zZ2ER$WwBUSYvDMa``s?|Z}(}!$lQIb&yEv7XWrDuw9Po*1p7bsgD!Qv=+vy0I5#$E zMu~k&AlO4zlasLtLMW!R98p277 z$Tfl{*#4XdCGM(76*rby$^@nxvGVNZJ_m|`U)XO#G9mrL4_y8Rn-%{d$bO_kR4O0@ zc?jRU1GIX@v6vCgo6F91K4sn(8%jt+Q`2V{>GznDUBQK?lhJeJb595o`gZY zWx{)gmCO;xM)1^Oe7O*XdLQI5R;s+^MLLC7kge3crFx^2Ed9$)sEStrPSgMnm~2$^Sx>7y zDT#D)(6+*lE=nr;A+hJ`D{7>2^q>I%M6P{SzKXh4%TwoT=}Ch zSa=Q@CZm}0C`ZB*5mo|%3icyd0)B}dlA^BY?=JI&T9d4EkXp#G3@?TY+gi6fxOMA7eIf_a%u!X+Q}6VS9x0@3F2bQMsYqCI=fSf^Tx=E5%s#dR_1^~wk8q4vfHFVL z1@E};vBiN(+gR)tmE;T}2xm;dr}1Qn7IjiGy3oSo-LID{WIEe9pMV`P5~wEhy`yc)0W1hvR=GMpt499CxW@r!E7K9yxeNz`q44 zU1!0@I#`KrF8lsD#+4nKmgK2wwFc|M<-w21WdFB2cL)vnB{-mERlMF{(Sz)=|diQhZGP zA>|zp80r-(eG8oC=}?=WgYrv>(PlI@MoJ&W5RJbLRGTc?DSojgdtGw3tJMpky_0ty z{0|}i$3z&|Q*FN^V?$2D$beNlfB6Z=>K%OsHvZpEmwW{ItD#)C?nO*aWb2x@vpD5j zSWEp`-TRir@pDv`5>l;wIF?Jd7S{6s_3gDDZTWU0#_@$;iiVI-S*Qnw`AQo8d6!ze zJdiwl`Cf`z(fEC#cgaZXS`zk$o#bP8up<4<9ZPxTew1uAGQCBn7@#Bj1|l}m&l;a) zIW`XPp_Mw8tEe1g&wt(4TMpju*4r$mV^AH>LTb$aOwo#pFviFX{}^y!^8bOB&mX4f zmWk36M2nnE>zKAXN}>TRI7xblhfn+?Pe!U5lM?B*a^nkD0z>N-OJ4S*baayG&?v}H zXK`|EPIx5r)lWa6k7rEN4oOm+nav~TD|t)=)i1^`8Gj@B*|GT%^OM@tY3GJ6+YN+f zdM0XfcAi4cyZ^uoCv-iV764IeB3fr3hqom9Og5_+qvNdM^FUcqG671R zUJ2<*koy4i0(?+tynz!hJot^U3z0e^9S8!?5L;{cpc-FiK|KMS|EWCgPi?DaL)DnK zMKB(uKo1fFkOmJ@6cLm$Ed5ze;PV0q&<=b6!$6Qj0pAi3fRmuvK2E$@L5i#-_oXEr zGI&V-=na~I4BnPOtbS#-7yVb)!%UyGX$yj*8(`le9x_06|23iL+|(rCo09=;KP|_? zA~8Vo1e`6E6?fMAKdat$>|}zAv0vWyt5@mpT&W6z@ek>rZpRCdhvf=f4+))$Jelzi|hqe9uXKywvmK4U2pjvoI_)!ijHh+^C*8UT#8IwoKp%N{BUSRRcR!yWzP&NC*`YSrR5XOU~PlcSouI0I+~n9gf!`U z1upH@J!R$K8(FN01a?w8^G0WEAb_)sEAuuBzZ_uKhmni zCLfmz=!}3zn7&U%=~DBnIShhDExJd*=4k}-$5>yd9~(^N&5g+Q-P5rNl+j|k_t8I_ z+|Q~TvikT~Qt4Q^EsEyrC}Pt-$JlDRMC*ZaZ^p5@HOO$@>h!%b#3Xcrj-PCDrruWI z5Gckn(h6(?I;H~N?pZ~siXrNve&El8M&A^~4s?`;m0B@jL?1Hcu!Q(N1HNW(gc+S?$3!Ng>FJd+$wB|# zL|~QU#A`S9fZTyIzqaAV0N^=Nf&P$XJPG7EnkpVpn zP5M!xw%EJoq|*GKf;!=$<)ai`Cbb6&sx{YLxY;dd*yDO=xaX&~E+!MyH@N|FR<0eC}T$HjO&a z$bgUERn$^~^$r*!gB}YsvxVbUhjwecNubWG2tFVx>~+2@jNe6|pm$M=?)>bHBl^*w znT-Wjbju)1VpMc^S81GIDb~l-;$IRD@A&mdQjbcT+j+X^krX)l7?&`{!m>VCVSj4W zwO`~Tpp3JT$xvU_208)2WK){2@0whO z*V#(QoP`sq1Fs-fM&1EN+OLQK1x*zw0HP_j~^x8eNw z6I#3-p*|;pPOvoxWn^llvrD1!%mfsv7fbX%8;e5c@532o6-@H?d@#?O6o@VKgPV=n^*vs;O*ZC&Pe2Z{<0ONeE0x%L~ zfd;_F=}R^{0ZJ=X!8yDi0HKU5T?%Y63goz#HVyw&#pQvq17m}?)6tA+>*c)5k62x{`q#Hj3{`z3tAzXQ z*&vG?zC&99Mm$LjE~C2=r$k9Q)%5tb?m1lUSy$CUV(m4`+M5n3`3Apo0qY6v)_Yxg z!l9NVQpX$i?@IS+pmDo3KsvX>uKT@P4|->Q7A9x1DvP#Wzzl>nt{vzey*LR|b$5%RO6Kv-nt*Kw&nHZorp@h%WMI%n>I5{l&DvV|3y@f$ng+{j@7% zneRR=8EA$T;ZP1jb^4Ux`ogiZ1T#gx0|CRe!@`gQKPdp_fl~0aoP9k`;FpEHiarhE$|cSF9N($WA{flPU8 z^llpp`$(DCVb%b5*(&MWR0STY= zxvMm(uW*?@$hf>LiKl4FijXs2A3Tm#YDtL`EW&US&hfb^jo#OElD4Isrtl9)^7N^} zz{La%&gf#`g(=wRbEg2gYiwL9%e7?)crtRI3+USFFQiCeE541&^72WqMk-FhEG<6z zoA#G4KP^RZZq83`9gr%49+9>5-M1ylRzGQZf|wWSA7O=oG;5o>D0}K0A`{e!*fL0a z?)N^^_9q~fcZN}sh&J)Es%FQz{jp^@$xy2#8&0_c>g9j~+GqOs&6gS!vOFrwoxx6Y z0Y|#+?h5WfY^vOrYzBTi29F}TBpm@<@23$p+v_|OmMU`V%lc>lxi?IxF#rsE1yRXH zh5ge?0-m5PWlX!ybYyEwANQ3;&maGetnGUJ(KLK+DBdLK*`FPyBIp6efFSz<>;!;| zaN#ND(qhGp{vM@)6U7IpDl(<_SN|uxo)6ssd_n*iz-rVp5A{N1c2x-O7K6DFS!d0Z zxal3Y-ixqNBJMZm8>9tzc|%j#PofSFTxQc6eoYTzi#_bNLxEi9L%m=l*JsFC(|N7*4+6xF{mEw*erkngr_P z$TUwDH^MTG)9n)-ISFdMkY1K8rL}VvQrSLbo7EX)(okHOef{f-5y#!t4^oxGM92x` z8IB78)LCl1!H0*5!>5&LqK$7e4URkD@$c-UOeLs0di!$pQ@I>vWagu>T>Pok8rbYo)nkHvu~Y6PydG z+g7M7A@LMu*6qgvMCvjbrINuim8P!~bIJW%_8BeH75!{vZVM!6Z2%GqlBd5TXsD4w~j z_8}d+=g9$mkYnfKPqtXHp4sgrucZeTAe=%5G=UE2qCwu3!pdTece8x;zlDi4YKWgV zC#|t@uFOXC>#VL@-frmjeEi=d!+sl}5J3u(whw-rgHgyuqlTpjKzOrK-|D3j`ayM4 z#CGLs`w!XtQ3Yralu+u`4i9nwTI}GuoY6V>F^Z2FuMQ9K*z1oQV=CbvE}Srj8!hB z{g>c@j`A!lghpLWETgm-@R6PW0$6nl*do#^t0Mi@8Q~X5XsmVc0@KuXkf{8%?(ZbM ziqVUVH)yRROhSKhQs^54J~f z<|%8B?nC9?-|Qs|4ne)(m%dCEocLwl_I^x)knlnUgIKytWpnh@FY|tve(~*w92Q?o z!CmE2Q1-`-1XX_VBR~6|`<3LuUNG_=l2n%$@>^jQU957;CD2%!Vwg>L8xIa)eP3nT zk@v^FS&8TmqwmsTYAj_c*{TDvLJ-`YfEh`nj!M@^<|6ZUd`Yj!u7*@}DpR?xPOszn zs~lOZWuC;3C}Nx5MVz>8|HBd_{0W@w{RT&sz&tJ7eF1Dl;fzaet>oi&k<(Tvm)@PR zRBQe@azp~5gB82*vx$Gn9PmkiomlVer0ljvYYx$}(9fzPY!gvoW|--z6q(4L8Gr#xc)qm7k_ zHHG^3Qo@+#TC0RPl+|s2kiqd5Y`-E9r*(ZdwAHjo5&kYnel*})7_4xU>QP*0O7x4U zH=H;=kjfAS{SC;&q&cmWg2&di4%>ab~8!&ZS_!Nh|_BhO0R4W^dcfAEKS-98OJ7-k~%hCbn5a3oc|y|Vo4z9E28@kfeJ1cfH^ze zC@FEafkfxNF#ZVUUfYjIa2m;vejSdtfr;lYrcj|BikHgtV~=>}f&<0C!8!lDGJG3kd)`~+ZRZOVyOR?DECdzc2Is)oFLHOtUnJx`gEm~J0IDri6 zG(;I(Jv@oumC|Y*KLiF1Yy3QMdN&szu0@5xC^5VdXWBu}+Ipn(#hnVNTy|cK>6DTV z;uqEn`&BKod8qWFO?Dh`;9O7UHU?Gz?yZ(d{|-@nHf90SKum~6Qhe!^@a9qZ2m8)} zyK|kZ>|Lp9TFmd03z(#vp_&!##68pwDbP$U~_9F%W(p{0Q^Y9M;mh`?45~Bj2|-2 ztU#O{iMT^JQ{pf^XHe&Dgx7ki4b4Yu4|fBN_wbZ+B~O8>2x4PY6;{F5 zc5rYXk(@ReSh-~(HsY=Qj&!Zh57EoLtXTvXu;OLoyDw&7G>`$N1AS8Z2uubDHAi#0 z_u!--GPPF^8NArw!Flz2rGy;+?L5>hgrsjRe4Fiw@|W-rVp{osmfb6R`FP#san<)m z2cd`BMg!Z?^xj2~bbqH&&JqKIA|Cq|L%lAdbFfHFvcjirW6wTbB* z3H}H+CFV}LkY$9xcFNzdba7v9H@*p9R5Ek&DL+_MTlo2R(nu6)0|tUIt5S^1{Hfl5 z>I@vdi%drfeNc9Po40oZ;8v9+8hc7A&*2?~Vi3pf!->}E=z}NaSwFZJXW-LBT$c#; zVruF$VyWf$jR3oOFjEj{yPU?Wc)KTJwGEU67E=X9l0-v4b9}hlJZ!LvL_V0V!mZ*&ne>g+{Ja?_lvU|x->D@fyXlI zD`(X-hDi8A$2vWB{EL->*Z9j7dU0;uCF>q~`PD`$~)d5ax1tyNajucw3p)LmO#yUtKuBQwwrK%-FAI2uqxQ^kBO8I(!?(+;ODV|MFs%kNf0*SKDGQhkx=Lbj_RJO` zyj3W{g6Ihn_A!Fds*~8PD`Ixo(`@SRKQCka$YcD-U|&Vsk&BM%rCHsjiTOcx?n4Gv z%>=mMDOxaLDSy8?c2(Z+RxGatd+Zsl{fDsk;y2}TuwEQ`EdjYwLWgV7SCHmg?m(|! zA8r}x(y|;Rg|2*mk0yCPB|{Ocm(<&gRH*W?grC^B_>NC`MO1Hv!Zs|#-K7E2!cboM zcVk_vHS`3kwATVr%p*#cyg5OL2*Y1V$L#yTJbu+NP;l}R-3V|gTHaN3fd9b%0zEb@ zwOyQpMZrA2I=Ej-9*vzt_h+}Sn(nfGFvkwT4ifX+ zb+Ct>yY^7gzptblc{qRK%5Dc4I(&o2z#9x-?TgElqIRy{y@AxGC}0fGR$4yf&V zqa8M)W6`*VX)FRdIyz#A1QOCLU3@TWLIn{+?3XT-Me}8QOVh}4%<7}#1tirB75%ZL z9c8z+v8|^BGC?{VN^7G5NWKKyXZ@o&uM)-H`2O_o14+6mNv+PSUC&>Mvop`ma|1YO z4X9)*<2j#mQ4vi32D^jlbqG@>MSeBbH;rkPSAR_=El-$l)7JAL{G)&PB8Qw+w#n}I zS6Y7k_;aWug{m^V>CVr1IQukEa^87H;%X&~E*ne@1g(|nZUVakl zhcSRNZA>A4xF6MZpA-AGe-o;dH9%Gs&of_|nal}+#cW-a{>E1AeAy_JDPu0g=Di|u z1_+m83GAvzPT+XkD#K|8Iq*;@{Ky0&wM<^*5!BzPjBLmPq6zma==3v!85#575oVQIWQ{t&_)`O4i4+E(hVP=sahVm#9 zW9R4JbH!lP46zP!1RbPQYw-&^JT!9D0pWc14N=?L@UN5@#RG2}CDQKJnk38kAHSuy zlWURWm!|tbyqB0e_y|6V>n;2yrdMLO;vmyEDlZRs&J|zliURjtI6;_|(+Y zN9?Kh=S$`emVXf#xUqs`#j%2yW#b>Z@Rn!q39~U z7lj~s-a^2G*(tBGFt_y$xze~A45K$kKVg9t*8#u(dObpU@lV6wfB;g{h;yTM%WS-D z_p$2NW7TADx^(ayz+i6?&jGy5Eo{f!EHR=UR$R|Gl@T=B)ADh)pf7)k6`dG42 zZrF)$&Ww#-BvoZ2>Au?RCD4b#m-!~(OHT1*8_o%hDB&-#lEJ3{3cY9DtuX{AlKKP| z0wD33jChY*0IcT_T>k~U|MW}rU*yye5C+)Hk7BemhCG= zQwbwzMitnnZ-IxBA}QB~RW3BI0vp+A3(nuuA$vOi6|CB;>-iI_Kb)SsY|nuf zg{ce5lwlRw4xvLxcZY%0x>msj6A#0Vs<^K${g3Apa^wlo!MgOa@0uBF(7WK|ajNE4{P@zI)`iig({d9n z?nL>8{dK7Vc?t-CnFai*(!r}rQO7+N0CaCuV%Y#Y=_w3sv)goz(LqRKSu`eZgcOl+ zb4gc`)0d2hF06^n^7A*!-}cwq(pAf8o6#amtnpY8Op&FZMnsKn%PFkmg(Ae1eHCE+ z?6#1bkOB6=PbCo(wF^hxQdN;oH0Rz2ELJ`_>x5U}#i)PFlZLK}Jt?)CkIJ)LdSwnQ z2RPZ&UmF3+HecU=2nrd}amG>71nM}iXh^IJ$T7taJTHGFIWV@bR%iV+MQ}W{!^k+g zRcq|$e?HbeuuPnPXQY2EC*t|%Ev1_TwOS>@oefWZ7~>qBLF zcl9(ltE+Ow%VXY%FN`hkbNZ)7AObFxTDIP3MrX9H0V==AYkVURsP*s~Z0()R;S0%b zL{d>27b=T4_Slf~r4rr-+KsEi8V(Yt@Eni&XKDo+W~TQM1mtqT)DCa5@20?~a~3n} zhMn`xf?1B*A~p+>ddf`bfqtk@&2$fA9vCcq;ulg+Yyl%glU{6sMqCD)G|~dEs#9IY z%u3Olmh49?#(kb?--m-6LRS2z#;4&s`W>?^C zz2#odZxWl^1u4rif90798-|Z0eSC zouqAU7l8f1gCVkniswb{0#BdeH{K}_yA9v~s$`VV?YwVGX{e7J%_e#-mdVT}?U`%d zdv5AgBsLVWl;EoTyLe06^2R(tcW3`x!U1PdM0wQ)OwRz7S}C3{Ox8fDGATlhL30kj z@h`JGR}I2ru}%ZhW#LV%x+8YMrMpqoO{vdFdTa(3^T-hEkPJ3`l+hsFK}n`vsX{~# zeB@g89uD6uib4d|P`omRCf%X!ypkNFw_1Z@Y4ucwmrwJ7qy*rhb_Mh3bF>i&TJ;bn zVBNEmVjD!I1=z?%BTwFtHq*MSN6KX+jkENNX(J4OhQQThAdrKPv@vlE#`_~G=Yb{x zax5fY;m4(=WmHJE$3)S*wpwl+EAMsM{bsrGh=iwJF;m0x5)L! z^0*36IGLYF4ewk3fSbNB}Hjqj~^us?s*WL7aokAD12QIW}?b6e~Tq; zr`g4UmJ~GesCFhXmUBc*m%{2J2j-u&)d3>5xBwz9SQpkvPV%%%{8bAW{#*H>d6N%D zkDjmB7XZmOGZfv==|6;RYwt_owxdgM9|7DyIAYV>Pj~_oH@1n>R-CU*Ox*ueQO14! zD7dP|CKuP({%Lvd`yAuV$dJZ(s48zK^eIDdHNJBi!}|~XHh;lD%@!PSzCj?SPbogH zf}HwszixpMR2p*i3FkB0bNHac#nMW-7XgFfxKE#U3EIxP0X+^WDIs@clof-s`6}ix9pdvL&|wc$Nq6F9VgK<8p`kM;%DtL^YOw zZmc0JGwocN*APq0;a;=lnBcU2{gLS>d;{-Ml>ndUUJRDW+cuU_;Vu$lSqR45Y%Ja5 zPb3cuGoZgtrJ@6-fR)Ht5$rndiklEQpR;AFY}+J%HoS$?ag^v%KRw~G+4+3<;#u8^ z1KxNy+vnb2z-?}nmC%yoXP0uqvc)Rv%p754TWdeZQdL>b{?z`g9hfamf)AkTao=0~ zJ77Ffkuw4rs~!vyrBUi@5hZVqlIHt|+{&Jfn>qMci0dFqMX)AQ<&fgPrVwBBvPUdQ zVqL4`xSJRh%AvIsd5^flV(Wk(sc;J=9NI5>vk95_K4%>_k;0MOZI{coX$gF@6TCKo zmEYzO_hk28ChoQlyIM(@73G?T(~k5cag4vkD1+ILPd5b)lyr zaD~yP_nROrp?*!K!;>Z`tEc0l5R;eEjPx$!IIC)KgIdj3_^g+j&B7YQbTXTpDBHEZ ziM#0dOqI#eza7=KMij>RPOIoz8Z#3mi#U7su0gx4PE(z$x6aw^611B%3u(=>x-L(i zTQ9kJ7ZIqy9qrh8E=407$|D2cX>roN`nvuOZ%m2w%bnJ5EPdUA@QNto9czbS`RKb7 zL{@je;ms}#;{#VXXv71MsZ5dUk4ov^{`9KZ0c$jzS73^!hf~ge*1=Ph;q&q5kye=a z9xKGRf<|%qIfGxac@NjZ$;I>~8JhE4IZtUO@6CxcU1^%&#>Xct@4J;5b!2iK26?>F zonf;)J+D&KbMVd?Y6G}j)BWeCE!ovdl%w8d z?`*hji4X~N3HeOl{fr9D0fbeSydK`wtd1Ns4f8ZTPQp-WOY2kKUlhK)xhKnV7G!s^*>uGp#Snc zUh#VaLuI86M@ifat24YYm)tEqMzr#`y79ggToIYtq*gzJ*N0QgY7*Ue@Ubl1`Zr?p z7#IiblY@zXc+vxp_}vs{&ul75TU?6X`@uVK>^G-o@g;^qqK@ZhTc0AidBtU*gefM@ z7H3lG{JK(n7MSlKf8Ufq;W8v6WRs3bI0cXujU{rSHJi^myl@Z8o~Rg^6L(xm17cv4N~bHLzHg$cau!wOrR+}zVrhLEi8`|)L2mBUmW zZQWJl)F%A3#^`Q}MLkl$37uKX7MLK+(!`e)xhN}O3iok9=9%J1WBwxxYBdJmuGSpx z?;4gxjX@Mzeg)|aaes@bKvhwog(!tkhlkB=O>Hc2QAo8X!RsZT?*9?oujyEjUM-V> zEk?mbY-x9jT)--VPimFjC7ZHo_|cs5%>VECl%;NmKLnxhKPJYx`gm~&|5>`9B=z_; z2=V5Q2wzCC@be;AEo2b!5WVT}l670jK^F|JgbG_@yRxI!Z*TL?AY)g>gt+k;cQYb; zAS45Hz(rhJ>Z}ivndi#i-@0$dqZ#ipTP)2VEAlw)oNJ|c;xESHGnPwJ*eaN;ZfsIF zIlOukAZo7c*(Z}b8D)1uuVK_W2)5KxY4BYYSX!w~NW=5$Ky_>@k7SHOFQ6!zL#i0d zg)4$wbgbJWz{(Wv_mH2B;QHIwh{KB`P$3NHMDdvpJB_Y5-p6@AFi>c*Xs|cN`|-wO zpXhMBc6gd~JHy27G-fZ$&mQkwF4Qsp1r@8i;7hbxPXW4Nd*GCsSxZy?XP{5l0>|)~ zNY;d=vjc(ZDTqh2-B`==02eHYo1*7^Q|Ru_8XZM}hcU>-@rVVY9SOpQOi{klp?z5} zYV+i9k>jSJS)pU?;uoD%dmQXIDCIUaNmsn4c0cmV_yc@lf2-k>rp}c zVN?FS)JYc}cBc|5#xfUNT#*?m9!~Tx*SGu(&1c(*{4|ky0TjBGEt*UePZCu5Qbrk~ z^syH5$%-)8<#P9JZ}J*fYS}!DDBw-+KNu#mT&;^>QQkPwVc*Zf_KV7zlJ!%WV$wJp z<{GE?-1JQ7qoDVXEi^38cm=QRaJ&Vdvc{})^P%=`5EfP#jjn)fE3ZDd^$eFA(q|zY zKWr~5dp6y9mL7;4f7aErk^$0dj6W6LKJ&UQWpqtQiw36?{=AY^A&r^BToeWZP_C1W z+B$ITXbTdFqIzw%mE=K# z&*2a2yXprRYH4Iw5K;kdL&+VGJ>wDb0a4u^(q&LV)#);UBJXD zncAi7^4)Nx<8}6l4uX59*}Itc?Rry!JAQbcBfo`ue8#^Ped$3#LdT-PffePbe;aWL zLHC)k24df=44#&brJXX3RdlZy^Rjf4)*ux!duI+n#cN%3W*rf;V~DIkYI6bGp-Uwr zb@P6jPyZp%2)6d}wq9Xde3Mu`Hm&F{Az_8%u^x_*GF%weq%x- zocX%F?RQoSYS1*cv#J|c6vPRn`W}c>odw|6Ury_( zu#-V}jaD%O`d~Ku&m_**ow{cX3I}lXT$y()TwFc?50d6*)o@WwKbnP$Kc+1XwPSm^ z8LQ@O;`1NsUwCkZ(cqeBT5)p9a}bK7ZJaynB%oh`c|NPO*C66qM5V#1NJJk1SA?Rk zr%`!TDcGEqL2{2}1tp#tfOCp=N3=>Xn)>s8dEc5%RZwCWYoNSzvs>gA7Y--RUfND^ z1Vx-DDdgMrWSW9yX`?lK5ED!MXpYS-O#{_M$7KAFV~6?nqV{auU?WzRSprJnCzei^ z=m1d;g01Xd#f(2FI@2~vT#Jc^dUdfgPs&X8{9Bww6>qgixEm5q@AT>^Tz_X=jM<#A zMZ)80i#HP+LX%T}OmvzwXr&FbOHBjW)-2$TsbuJgcbP3t^d4Zk-9%M2+n`u z1W%Tg%Cw42__4c?N|)+~Ie6J6{Y_FGv3YX`EZK^Mof=d?1_h(t_%#r&ldA@`6{&Hb z>w+noI?j_*zZBnnp)y4RfpvD0Y`RDXrCdngI!LWs#!Pv|F(1}Pmmt`y&W~8YQO&4m z5&$<6J=C(XaKIJl_m_6$Am9?s0WGa(*tR4as>nmLC%?Y4SSY|1p^;*kz4DdUF3Oc zY{Sr_(k{$CrAy@MiQ&|u`qH%xCpolMC5w~Hn=;x{P_)W2l$~)!Ng{*@O?-0?ziZNZ zV$N0jxQB#u2C905ugn~u$|AZ-8~&j%Lww&!Y?mMk7}-FH8i3XHNnw@i5nsY9)c(>q z-wD-)>ns+?gbMX}F2h(>%@lzU2N;<5ibaXitc1u}Cwd}vZ9MV6zC7a4>_WVvisD1( zc)fh3G&Em`PT1tAXI0Awm{GaQ1s^#!@h^TO&F?AsUe81vcBoW$+(NhAf6$O|S>IG5 z4C~Z_>`eMdJP6;|VN@y@f#NemK}jNcFW}-51q)8n61b(o;Mlp)$5r38*$&M?;Hp8f zf_zr}%1MW%W+qui^o{|Y8u6~`QuTZHR${fj5*Pm66PynjitQ0ATP!vbd#`@!Md^a9 zDGHA(Ckb|U-&n2MQn(Hp2J1`E8en66~+V*|FY6IHZUW8dYmk1Q>q`j)d~s zHyTT?L-?SzDt%y9Md*}j+Yo|)7*exMSQ0IhD z8(p&+v#7muFDE8%2h6JAJ`kP3!Fg7>RQX415Pf5a}~w8SyBL z4`@)@V7f$TCE$D(_B#+ET6Qnqb80Z4EHsrSZ4)HgmZ5NyZhqkJsWiRs0y9ySqPAvQ#_>a*$?Mv) zOw!vjsb6BfM5m6F8}Ij&r9Gb!aiot(Lk0KweqA1WFcE#Wel@}2^PXwG+&W1c$KEpj&L(aK+^_VQC06Ncg&d_<4 zM>l`q09IpQIoX~bgyww>$qT;G$}nusj#VqpYSf9S_%Ipn?q+GvFhad6kjz4nhV>o* z;rA;4`Yn}`488?|u^_LbH_Xhp0cE2XU9?6V$!cm9H>^ZhHN+n<5fDXQW}#?3H$d3V zi>*^DviPkD&qcPErQG=Rbxh2oH1diayh-b+K|OlWz3_WegmJ!n(fS6&v>kwnkv+<& zv#T~uI~~NP{y^YB7I{n|)8}NiW1`bB8hsWKl~w?8P|yZ%o{k7TI*j&hn}BNYK^eD$ z1@qd6j@k4)zCNt*ArTTwt|Z&jhEnIHt=``WAxG=EBAoj^swC={tn#Lgvqkh+?9GCk{f5;Hh)*Ed9lbs{2gX%rELKSIb`UuaU4g+hE2nWCdMuC(r1E z6)qXr_rSnR8LWHYmn^Xa9)~H}jX=*aC%q+a8Y~xz3=}x49VaCuUMPjy5HsMHi@JF7WZZ9_E{rb}G zZ(sXpTZ$=JN5|6&2Q6TVJml<4Y)2jmE3Grm@Zxms%R-dG!N_12KQRZm^! zSpE;;q&0vyIQiMWxbgMn|0C)v!=l{6wE>at?(XjHZibXpx+FwO>5}eF=|-fHMr8H93v1+F zqw>^PrtUQTiU=gc*WLWJxtvy`^~b_e$Q7-&dFegxA>Af0mX7EOIL(N)Y#9m!KGn=_G0x<71LLMI0v;MDNNi^lAqLV`jQ(RjeVB!ZMh z9_&u%^apn}$Y-j#;RnTzg2wa;frS4d_}8ytO_oM#Um$4glyLbw{LZTZsjbfW@J5&x zNvCR7QSo9@w5Lx16_l4{^b4r35af6fvQPUq9>qJ^omDRR?aKum215CbudGg8iQeLw zECtdo^$*zmGTpfg^ff=yaEt zRMM1u=2ysc)M88uBfTzKxHRZ(6WgP{1*s|Fzf*%<7^n`O;D!5p<7M08{NfNx9h#$A z*;T?GQWat_(f_gFVGx1KLXpNYfdeedX%e z%HWA|AByP)E!f8;$gjPD8uw{bFbev%<`PDH?V8=R9;MOPsZtGj4Nm1Xh=$55MKlT( zt@(@}vaZP8=%FUjqsJe3AGr4Db)|^NYN+W1OU+FnRxoydic1UZaKf&OI}4v1}U$*C*0nwtG!qf36Lb zGvDjo&1Nm%%x#|5gEa~N7UE>9gcx5&;R6L!XaF@JigrJ2{V~h3=s(a6Ow>x{t6<_g z(EsE*?{)!Y;2tah?XBsiOSG&z%G!>SQj_GnrRtP=0b;?mzFVMB$>SZ%%(RC>sF7=Y;K-e1Sda@MshW9x=6#`)i zX8qY)UxC8i_bMs9FQjkvx77T^@ zEgMbpVaop;hYNpjdANqSgQ}jZnBjNT)XShKyK|`Ym{c2n#B-Vc%o1{G7%yZzonEY| zGh}&|ht(v)qJ zj$Tpv98#I0=uX4=Dy`ywdk%IJ>JDw30&cb{n;j)H*`u`k|0*t1*m~TDAd~r@4I2-EmYj4 zIoWQ7ADmRN=C-STsk6tFkh#4*XZYe5m%q@bU5mEr*)wa-TI;%S8b_-NC6C952%tSx z$T17uB(U~5Gvi>bO#OHDG_V-I3nuVes6eiOBS?nRXSB>*tWrDSil9JrJk4U_u$WfB zXaV@iA-Y6q3Jzy@s6^q)Iy4R|F52z+lexR?QB<`gjS*q4@*+s62yXn0%>s;Iw=xT4 zY5h6`fXE}11s7ZIGV2$s4LX~H)frpAepU|gbVb@+;j``Q6?SA++jX#*^`u^NYR}Uz zl~!$U8AqUt_2!%xjPvB9Nh;DnRDyFbN zfq-e4*xF3-w!PYfMe;v!XET(B2!M zE82wF+J<Pl%NBYK_z_NO+7X{r?K zDm+?ZrsvO2i{>!oVg}UImW%+P#hpcUI2C`I9I8nL?`6()w3SZ@ngW7MJRh%WkjgkH za%Y7}^KBmz17dv>0+vgcR;m@d<+6$^k#k z{%$Ne937iQ6}h*@=n1C~f5Is|CIme-@myd?wd{(ev+(*>- zHQQWX*#T^;-AYTTSoWDq9x!8uTLXK!mRN8r41V@5 z9bHW^mCy4`Y_GI0I4WM}?j@7TDB11BTAuzjPC?ddp`8We(-EyxD}GPAK-*G4 zKUOA4Wpz#i3tg3K@%-Pz?(kDp ztwnTH%cMioMu5#-pky>Z(B+C*JP$&lr;{k{k z5S~u?iLgq*hQNp(Ly(NDILOI}&%FMw7QE}Q@T~{KBrh0D;|-oNPUJY+%NOPGLIA@y z{9bhUF9Nd6t?DB5s0=H?H3Jo0Ln7UC6rPW=xVNAqWmvFn*9@@?_-0aAC!L-)+d$%f zq;=4~BqX3a$KHkG27;LbW;e-;K0~z|slWDcskc1&UqiE@w zCwa}<{yR7*&0s$Y^rVXRVO2>S%ciI;PWg!9Ioh9TQYm9%7z`G8j&^p9Ma8QH)bI8H z%!!3QYGC)Px|!o6gTn9H54Ffyz7@EVPCyOGjm#J+1Usly4dM@&K@l%e(PSozXI`IS z?2E*nIgG(yjB2&ZnkD2FUlPJ)MHu%!szxT)vyjUu<#?TWm7s z7&)rs77WlIu}>mkN^GX7PJ^FEW_Oxx0v3c`jxE-2P~DpvnP=y*JbrYkSC(ZqD<7Iq z`Z@tBwnkcm%4N(^p5oYu_?`V#XbtaoqC=tZzfLg-&p7+}bwtZM7L;xNGG<*EEI6xR z(0!6ji*^vu(6}iVLBbP4ls80jctk|Ew=zHFc$a<{jG(mU z&UUWl$^}Uyd+Di=*wQ9kP&$0SW=Lu6CXcL-b3@ejmd{O7v;wVlRKg9$=J$Oyc1?oy z^({2y88Y=%jiHrq#p9Ehs*38bhd(Ne%-^l8$8G(cQ{>htrdusOXt^apA07A)Aupm% zqw_z6KPQ0#0YG+XeLBHMcz&ct?N@#hYZvuKU(~=FSVJO30G8 z`3m0;Zvk|6PRE7ahkLMgi%+e?iPe~$_=N?LT1yXov^5w`73=%m)%|GSCXOp!;yrWM zRR-A6L>xM{<=M4!{P>1W($#uRMEGmzD|YYR(dT1@bQ#?JtRIo1Ktp9AQzy8rerzB9 zKZVmCa3_|%ihA>+`G{Ybi|$lp&b(B&Iie>6HfPIX1KOlPeacQr5LheX+L-sjRzRXX3K1DFnN`2^^Rvb@F{Y4l%fn@+@dh!Ss z2R$;c6KxAJv+}Jsiffjf%5K{y$$ck@^7m%O$Kj&h417F2kJmDaU+pmVaDkS1i+h7F zsn&3H`H@AzLkhM=ZJm#OupK2yj1v>3y$C>?pAm7HH~@}o3V_)l z2xbN)C)tt{C7dT@;}{`oSx6b372A%$bhFesYV>86WU$eQFBC2{)qDJDI<(-Gv&CC> z^>6+k7AD=rdeKHZ3+-6^W#SBV&CHWumNwWL5jpr?0YaM16 z1NLS%OSxY*akYN&;qMMFu#uFse4J&^NmAC>+IVsT8fg#HMx%I%&~gAL2IaM#HtV)U z?`f@L-^fI@j&`Zk0m*Yrmd&Mr;;` zTVi$JlN(JCL3$<)>(fc3PhJZr53^GZ+g8l9`%bHVbU(VC;hu>zvcIa*{6Tq3d*sr; zgc=`l%O9UHMe~$h2@6?eHY1Yv+o@c@ITRHIbBDZq)oGVInRo{5r{`XsC$XtgQ$eHD zy9+4$(u{dAIKp=*Yw(7w72_xC@P&1(PG7EivaPbqpyO95q0D3ompH&HZ{7n*lw{Eg zeTxT-giRIwZkH`;+ma@`+|GJ^tryRfKHVYLE^@h8$6CBiL=Y_nHq^j~^QQ&eeLFu0 zh-fSGwbnOCLH?${+hZ{o^^h|9%DYcU9({r zd30tY!R!W!QRC9oMH_s3#x(`Z?}| zFO_jsB}h~g1tfPqylOGwFlh-6CcI2q#AjMw-m3iF{=F0lL;Gh-DKL6e#N>NgU`;~5 z@a`W@i$K=mS0W?s&S`<|HF?@V=-r><2Nd0$J? zRjYk?V;QJEuLw6&s4*8(Q!54S$LGlC&^H4bI8$0=;t-z?ylJ^;dWZ-tU%h^&#~d7c z|G1ykU(r4Pqmw-#dL_F$7t)SPih9-gyTjY{0*bZgQ>^LmVk=JZ0_hIc z79Qbfgxk47;G#(UsNh<5^u3G`mYFy?l?}#D1(8n^IO*imPd$?|c{F|70PD*ykJnwW z)q9;)>}k`fMpL|4`?|oe5UAu#6Mv?G4F`lI45{(pd~RM<`vAFLO~R+_pW?||W1Wb>?HEen6;Xa_v@PBKJVYucq1yJ(qxS+>*A>z@vbSx8$;g3L@kOo2($h=B z9)D7l)Cmalv{I?3L(C3j0H;b0-q;(aIF&wOv*WdzAI9@_6Y<_`VS=UvK}A3>K*^8q z4XJAuhn!NS?8>nuH?-gWhj6ssk*C-yHH{pZlWv4nvJxkkM#x|7Jchk^x{nXo0`^L1U0ke}AuI;)#FnO#hTKG^-9(3{0?b9Qg(!|!W8 zyaEDBqE=$DtovPC?#C7U$AI`z3KRyG!P>}7=7RgV_4e%$BD?`arx{_S!>Xn>E}+Pm zvB$8YH_H6RmRyFzap;dnC^+za2gKtAB9BR_*NRQ41>jIUY6Wa zO>loTsp*{Vajuijlp#iWCEdo<;^pXHSa|XoVoU3gR`yozO18ZsV*c>b<8NsJl_WeK zT~i#?xKS3k%tbT8k8ClU6Ek|`p8<%gb0b8W*!vEfJ4zsR5?; z^X$FD?fR*Py+>IYs@=|VgOa3}#s@1LrPK=T86MjXp++t(H?0M!Sbq{mhudA6&PP@6 z;})=}#5v>q8lq@UjKw=FGWj(8R@vT=_w?~vp1oY)*o+O6T-jFValA;4&vM4{hCezC znO;liGg98~j1uM-%o2!Fykf0%`FF)!{#o9v*v7y&nX26f%sz5TcKZ;Xt=atHq>SS1 z2@SQDvR66zc_1ANp>P+EI*-JYn1}$~{^c(LOBKV%bO=IWsl`%Q!U%Y<{v$Is(m82H zsG4A#Jkl9y*W1vW$&S}h_<8U;#5nXPRc5z-I)h(5aaik%bV#edUA-Z*#M4k)dBZqq zwni!<4}M$XZgFM|6Uj!yY;xah+meVjJHImbhr{GMGRaktGs`Vor)3m3zb76@fj&;e zrXT@dfO;2>S~zoYP0r!)Z3$ny|7Nf}G@m$Q==!73wnl!Y{a+7$**_AKbO@m$_tYCO zfZ1k5)Je;X`nn!^otcHq5%m`wa)b0|N!MKbBup4+|x@%qFFr{@)kqsv!|jKLuT zuWo=e;+`bhDW_=VIBluOn=f}C??WMkYuAR_S z&u`i}UIs>B=^|3%e0Q{H*>zkPH8n;BH*7`N4Ezcaw|4FGt+T zB4>XR`B>ZNm!W5`W~HiCX~&tq$U$PiH<`Lmvm>!6MLt}Ka?}wj8oOpH`gG8ne#D)~ zpLpyW^R3@hK6*U=Sd%XHv!CO|HHSh)SDK%bv19-n4fZ%YQ(PEx3OH(R)n`roTZzI- zedYzTkwG5taZG^6tMmcD1hnza9<&5~aXSH9NSaD`6%Hjqz?m;278rtFqstnGMJ@B3 z3%-8aA~gDPoS=Y2RAQGgGH{yLn`U>hN=JhkJ&Tm)e4aQR*JU8*I?ghigJ`9+2w@a_ zIh11?R0ure^l1`-dcb#Rj$w8qGLXtk_boGp332$hm*zUX^?g(?-|t~4$#zD~hYRu4 zoNsK8p5FjZPQ_PJkt;xG5jSo-L?RwmbQbPy4oy))qAO=hC3aWKk6Iweo4pVCaj6rD zt&J1cSs90vAwDGpVI~F&d6varJMB0UxhQ-XK0nV-5mSvEoQBfc?^8h*)k3kLOU=UZB%0 zTpZhWYZ=-X#z9S5(H>QxVS~>FgQ%Ddg@Zitx_jSz-0T0{2jfd%Hcf}~U;+N$6e?GX z(lUXyHY=954!A0iA z62}wg@BbmxiuTAE+}Y4(RGL4p%wt#q9SWQhSpLaL(ksa56dGc|PL0t*>~U%O+s!GM zObe^;BUPg^1Q)Z=f%rM)#kQ9I7+`)e8!r20sWaGE#;eI*`WTvm_Rs)s3 z)>y=03t)B5TeMb$;HoB*KePmq1u(HBVeyFPkE-r!1O-q+b2J6JWLx~h3BxvN&mh(M z35@7^FL)xBLb^0jP6-dd8m10o9P{W(fM`W2m1sfQU4aZ*IK2h&`}V|k5Jnh6Q`*~3 zfu_$uB*;Vu`~Vql2JTG9fTW(E_EZn4yOyanK^R$TcV0}{(eZj>!7Td0M??Ln1*-ME z??HGX1}ASJe5`5p;_N^GyZ>M<)Aw5_Wkj|Hs`g-Z5ogr0sBSpDQ~SSO6$J?vLjPPC z-DsTA{f0jT)^(u9meSD!6&MZHCPUJ`e)2+zM+yS$u9f58I<+eI^Q96W6bcQ8HhSHw0R8rDz8?brNq(K9gef#2q4A zw^}s6_{od{As%9+6O!rINqS5HKT0XQw8!-uW)#VzplvdoS(Jzg0cI% zonip@#|jBx>x9&h>JSLp>>C7Q)uD{!o2zR3 ziVsbI)A+*>P9oAvS4~91hkjY}I%u-u3u-@cat6>UR|ZXlQv+Y+wHMITv*ScUqI}Iy z%1}QSMRDWN9UbRvElKW*=s4&6DyNz}NckM~j)BmTwTlR+hVl#A2s3jwq}y z=Ki;L9)!t&_-TjSu3Pw2<*5^<6(-i$KYb3*eGp2~&oTwFT+>$6GzG4YOoNvAf#b6P zcAeTVxj~P!_|SUadHWi zn70#Px#z{LKEAQn{W7n75K?yZGyUagRF<37S{|{;p+5HU^3Sw@92eO9EAT{)0Wp$4 zGKRN0)wkc#rNFUKI3Pjb?*NvS^zAA5`?Ao>8 z4axdTY+Tera{TV|+JRQSjTqSFyP@<=@J`41I(%SrS;7{GT~&xgy4A5mC$XlLbd3bf z*?lsUC-UTG8Ydi_0@vmMB#8qj9gGh`O2g6i?suIg<-ow0P}hOssq}C`hl0;AB(w=f z_yKlV9kHF?3~8@>{puq44Ka;ceVqlCn+u<=P^?1g0O@mn<+H3{6dZk|lIL}&vipBo z0BJ!1|F_2pwHl-56t5Y!a4N}DZjSaZ^yxHn7PQfEk;I*Nb@~V0CXHz0N{q#W()UF# zrW3PsocY$3xjB}F^Ue|-(hJ%vNpWmDiJWP=^=D-Op5k*|SW1pM*|to(d-br)GK@Vt zG}@YDoptYfRq%gCxf_DaI-ob@Wfd!l&tz`Azr~Dz=Z)FXsDs9q{Gq=kX(90D1<;H! zK~#3ngX=V>5XIT4k`*0@{Dc=VP0u6%M*Mmw{f8ZS5ysSoLabfb)HOg;D2!9y_8sh&a z8M;)4>{sH)D9o1E)MdbyQ>94ftl~IyUv$x+geVE>&mahz(RM|kp(Y|BNI9)ILY(%u zECHCBXy5sf-&2 zmlFC=0R1Y*6Rw@KA1t?1m|3?6>aUjt{MgjP8yr;g7^)NSvx{U8;lrhz1i=0# zgos);9N|~JNRaaaUI%+lmWLQc)DfQ@Aox}wFCxBEy_k#P= zCXosAVr&WdzQz+x18eZU+h;EG-$s_Xh$s>wka+fNXHqWUIZA|elg!z`fr3Yb_AH)> z!_~Z+BaTpE0#-H153<@jdziLxE@RF|ZQzy%GE{cMnbE#%~INR zbJFFga~33M5Pc&*7LeH?yg-SOjl@~NZ#GshIMnY+syh+Ghu=`>sT}}SKPB+Vzg#&r zdb|1Nir%k>sHz0iCVm?fx`Ug%goh<+X~E90k3a`gti`C;e{KN8Jj96m--)c zuzCy`2q;(1H2{*91K>sYxYesn%;!S!U)7s@pLYC{%HV!q8C95sOMg1z?-kOOtFdHMK*V zp42wU8~FXAWVgaa`*A|erP&it=5z9G-k1;4B{VV_6Dje)%<%l*! zTxJx6F{=_4ak`g9E``q472m~su>^;bJ-j1ijg~HnI%f3|1Pg1q!^U}JXaPGG;PME; zSk+$uEFvI-gCaHRS&4BHBcH_fqA|j(d}q;{dUt+{ogrxS*2tnCjaXB4Jgse%H2Uc0 z4U)+K#!}W#0-wUBe`LVOQE|jUJ|dsFu}O*)I+aH!9agdtOgjJ>}S|f8S*^-ULiF zitQ%s_D{Ii;szo*9-}a~KsjxO*9Mk6VJPA~v3XCw-2wATcLT^SbGkq1Ao`B@Bs@Hq zw_HrB`cWu$AJfuk0%@qnRIo#P(N5|TB8|3RvM?Xgul}-IG#_>(b*dSW*6k3GO9rEh zNn>J+%93Z-v6rp-90XEh(3bxSx`jvK|Agl`Q>RaSY@w7j%FD&?f!P8n4U%?_e_#}A zTkmw{>&c^zU+VZj=OQ$57A3b`%xj+S1TgW82?w{#;L-}mXKmz}*L=;0Lo(w$9ZOn7 zn^2+96O9kJBEaEmzOtz8PPreu28@`X<6J}Ex#gezixo^&gvHylc8^zYy8tq2 zH&w1Gs3+jvYtsymAOn`n+RRl>5M@;9q)9+sn4Vwe8d$*A?6%yC;jfvRl|g1P7bioZ z;rH1u`oaT(ry1>9bQZ!uI7wvr)ewTKx@f*v_+tf6)UJO{UJpTUc|6s0c>814+}Hs5 z(^*Tl{GiT3Ow!^v4#vM%o$SbBE9hVQRWWTAtzDj~w`iUJuCp)|XOE}E_;CCni^clD z_|1iiO6+wFPsruQ1$=>=JeVqUmc`0rd_DDEcRYnZIGsX!;Rq#IJEkb;&QFAry{Nq( z;FABL>x#L1Iacbh6CCs45numEg@@N4STew+vE^g_&Mi^R)LdD9b$d`I=@{(~$qLm) zy}Z7)f|F$g&E~+j29pnPg!?@Hed(gjrREfC=gXAduBbV}n+J)xykIZAOq71HgLtsEjwk7frc)y?(U*V; z8L)l#MR3>&QU9n}25MbZOqyQED>*Itc_VypKLJ#CiJf)QbH=_D55Y#PaKoU`1M4w{74oq5M2P&sfJHOelG(Zrea@PtjWAJ0+ zq-Nr~N>mr{8Fh?(AE@hmb6TN_8I`lQ=bfnH%yFn}mrPxx{ zr>}2!6lYu_L}l4Osc4X+=8+pDM^60GS)O{yqJI4!mIEX&T; zt`04R3lcjS*%ZG4D5-`HgL^O|mW&=G=y2hBdOUG{Lp}$SpXM$+_D>u5rmY)v{edXP zwE8n9-=N66f@o&uRVRc@z?Ire$;OQ-3Hq4VZZQj7g5z>;Yiw9%cX-qYM6w0HwQ1775Z5XVDyOGb5o!T{~Bf$jAUe>|OCR^f#WDO21TW z$o#73DS7Vt&pM2=gbwS)uuv5W<_tvdb1=Yl!?|56&_5aUfE{9~4b0wkt@*mL{BB$44{L zbte|u&ykLGnj2jm#ILwN=K-TrmSeD!MQ%!@4K9)~Tfj&Dj7J~u{j42i-6()*P2@18arrWuK0HXPY`a=o6sPwFm$*)b+-Klsz zEs&PR0b)x3%I6n>NsMRw+%R_Zi>)O#tUUQJi@5I`)y0b;GZ92>R?<8t)ksn7d75=Z zD8V&&LL9%EAyaD*U3%7_u^9N|dsULg_xz#2*=E*22pWO$-tnYnWUEE&6d9Vx$ABpW zWF@nlkK8c!XW?=>PV|=*XJ&xpH;~hD@sM`Z@po=fMn129d)Bl{2Ewz;qT7oNmpwH~ zB#qtpF`$x5_`&^HE1ZOVInp(b!onXs%C$alo3^^Y7Y342pBdrYrS;s!ro%}*v`>_j z*-t(aATkV)*SRYv5YEm0{UD~9yGpyz`?Ml#k@dViJf~QiM%aY)-bs}fEv#VIzT@_1 zxx_#DYc*B6Hp5HX7gZ5;Kb^IYe0g2&jd%4z4=RFEZt?_fe2IDZzWcEwOIc-Jgq1{k z5i^g47-qBPjaYr~61(qz^N>|p`EeZeZdNJr?W-v?AS;F8sX5UVxXxxvf$kMHK$`u0 z^L^Y_`pf!@bvSdk6PHf(FJ(u9u1&*z0-OdV3wFNS9%g!#@-Vu$7UvZ0Wxkw7?2#4( zaTJ{}Fxx=-qW^XC7LX3W1IXhm^0Q2o9Y8q(lVO~09plo*>?{sUn6!puOr38sZ^~&@ zDJsdf0O1D5M-8GYm-qigfK1zn^37oUQRV~J&PKS+naRMTD;4l~@Q9FEDerl7Y8YWq z)n0zcFQi9na1AK1ONKpMj1wk$C_CTIeQ02Q5de}^PUFcXm z2lu#nFh>do6=yPEce@g+0MG&-tRoXiQ2rwNTl?R+bB5S<1yJLuYYI$<5|p~a@Gnyh z@^g;YGL$QuWYdsXOzlW{!phhP!6DN;XH)KE^mL?xu$U92&bV2>&{pp_mlJErp9KKz zS2b^*zcu8Di=p8SS(Tht*K>3v{>q6&=&nS`Vc|_mAQ88bmpE9HOuWLPPoyTpYHVVR zb#Qd;FZj744dhd;+E*WjJo4x5u5xv7{}mmWli)J&;p<+b3IL>BO`s% zs?AOl*I9;-X<`vLi_6SzIA<0h>tmI4PKUo{GDOHLsH0{*ry;RZNt4l(H+WRs^;Pu- z9)^p&!d<`WH=f(IE9q$}433>HgF>)M-JqAx^DAup>YejdKAlv$Sm{e>g^GH60OSa{ zhSRxOw(Ky{Jp>tz0JaQytK2H&Mg1SiWc{t9dx$PFRf_(Y2sk3 zLCToX(v00-98=>25F=TjO}KUV-qjEam8fzypcJ5Z@Iw5B!sBc&{{$I6UFQJ#hf_Kz z7a@%@KjRQe6=_c5@R2{MpSpc(L+^9e5_40>PF-FtA72u4W`NO+-^{Nk;;FeD=~kxU z@pk^PYzQhMS>I;|a|4EL7qP|Ti<_?(d=&Jstb5r)ELtle#~vD9`)-CGV%k$|apxol zZC6vwc+WL6Yq)HWjPo7+O_*z_46H0o#CjF*Lt}n&K%4r7WhE|6bo;B?Ihbuk12wfw}Z)%FvafWJ%$HSgvQL5Gki)lrGbHh50* z?52)niB$+QJSA`|on-V9P7o-V0Dj-wgAvmU{5_l%@daa6|8L${3TPHLXJiVfq+O6# zc{SbeWt>+ev~?_L*g|~Xgx97%f+>n{9cs8{9O%#_gR1x2U7?50=Qnq z_y8Gw#s_Fo&MYNo^*f=qTi~we|L+WI(tGyN1nfYd@|0ga!wi2;Y_khLxpucgl_x=l zmdMn&jqq1D>Vd$i`Y}{9A;BaO@ss-iHY@d4D^6OVB`)#PFAGFE`u@2$akF;Re4qx54dZg9DeZi#ZJsNBoW_u znQ;Lay1(n;cuQikRrNqfmS9oCwSCd_=a>qFi?Ot%A3aGQPt$M@+UM@F$zWRMR%8Mp zlBgH=Om<`Lt?LJhqHGTS{MtkYZ+M^k0KyJG-LoQ6ynK_9*ljzgaF&VGqP~kRC0v{` z(IQacN!(D?2X@!)!6_SocVJ@A>sKYTRkaUgYwb{&_-h4TEaqbl<+ee(Rp7)!@xTFI$ehtw zGh2~YF}_0m*n5}^cM<$A0G4C2s#E6LpCV)FY0lkss*Oy^_+1z)C3l6aJJPzWF zHU1*YJ8L2;6jTMJ{=S8qES(lSFV#tTTxY}uhlNEtzcr-U+1q&#p)*nQS8gim7rT?y z@R%-d{{pBf&FzEcQP`ya+jWgw#9`I?FwOH`rkqcH*pB=~Up|ZlJF&dfuDFFW+|8`% zg@zyE99_>V9sbswMFin_sgYg^MY$FJq)@X3CgN(c5javQhuQ3`$j#SIR}LwTIv6ia zdWZQ*H#ChIzP?CF{PxvytI7BCEEd7a8wLV+z$SPV5`=WF#-dnDjD);{So^}c`-w=U zbNEYnJuF^pYCT7wBOa!p-INEx?aM<7)kDx|K&Vuedtn^(MxsFb70~g0p?S`1GHkWu zQCjd7@zUI26b0)_w?&hko-x`Y*(ks}p^8Ljx zI7xfSSqc3gS)Is1e9(aNe8u$VPIUBqOtfPmV8p=`!iCY46X3X&PL1kgpJXCD>NE>B2t1=Zt8Z;J;zomCb#f5JuXEWeGux~~?CCOAdNbd)!@gA%x| z?|G(1V}9$zUp;0lvsaiFYN$oN5#N)GOHU?|$Njr8vW>cHe$e?X4RPaz9UQGAx_0&B z<4C4bGNZXozApT{^rlHICtQsy7J$X$BR+zq$ZD*n!DZ_}Z1T;3HHhw@Q-P@nU-fKT zm3n>_6*O$sgCe#K*+=%@wb)1ur1nbEGCEDIpULNJwIN1wF^V;PCK0j6hFzT zi)!Uux+b$CBLH_*l~e^v5qa8@_~eEK_hdF(a3 zUYgAqOSz}xd*_Y>hDBL>iM!(1b%lOhS{+AcFy2DHkhjeRYTTso^G0X{Wx=G*xAb1i-3Ot*(Jd&EDW&B;Y zlwLOFDnGLpfg909HtlZjmf5 zUc##dM7VjWh|SguKmtb2oMKf*gZ&Lc;Ip}{ zVzbb2zPGC%snx4`JKf-|h{W(8LM8NRgnAdwe+bp5Y67AMKrRELeDzktfK=v8A-S)0 z8`lM*VGisFv>CC5@aKj%D5FpSg3W)aS1>&;_%U_HnH<*#ciAb?`~VE zMZ0;i_d)8`v;!q&;j(mTdKOe*&G@`_>KIsj z4G-sWe=p?PQdFBtox>=P@#l--L_7qzjMQ3=D!4OxtF^@3rG!!)e-#+|I?QjZS?GTh zud;E6=kw}c4}}X-npRRiA}PA7J1= zv#XnKugfTpAHD`)ktNyN&Sn^0$b%5#;akCN0bT7bh6;*RgRpyJTd0#st6jlX#Z+- z7FXol?^)<;=Y_%A=jd%Gi0bC{;YrC%>`=CmMcyE!tUq35d_%s~_M?}jB5pIvSTh(O zA0x9ogQ@8FduT~_trm-+71lfve%w56*MFt>GqTAyHPoRwN+Zz|-!vNc_fAH*VDgs$ z82lPJDb{kMmgN)C@r!O)MML9QpAje4bXb_E5Ou6n8>H^P=qh2vPs(7!m7#z;7v!Y^ z30$WmMa+eYF*1-V28gUfwZgh+)Ms}$goR(Z-yu&9KF^X}IM3Rcmt; zek11N={S6tFDlh#Q#mKhc3TabJ*tE1IPSaflBh2QAun^bX~jG< z`g+e!PgrQ>v)FWN1F6Pj8QP)$$TOuf_+uajVfU6&wJ0)Kk)obZljF4R_l2ko3Wb)x{q5~aRvn8x)UU-TX>KTpJL*Nx?%Q`xWTly+S&VE9D}VLr>1?WJ>W7{4)j2>V=#duT5_3#EO;n?AX?bEH+gcVVd3;MG zsOiIcQ+n#SR|TpL=S0v4t0?5%cDZ`CX1{*@x(?5O;&;S<>x^6uWzT6U2Qb**Qni9< zMM7zB`q$AHmE4Y(#^fV+51}))!ziP*9nf|X zzoytP!bxiOpiUtMQ%B8q#3JtXdF*Z)+`%f$yS74U z8#pEI22LO!NGd+>Mg50hSDE^J>wL0D8`byX4N`6C7qzDtyFrsCXNFWXt>AP5LL#qR zuK?%SKR9fC#E_53ajZwpSD?^*k1{~}5piz#ljlrGWKzCMagkw*@7s}NY2OHAg;DY}*i7sUYta~3{V%Rst9&cgWfU!D(F;jYHz zWc%N1C){8e`f#r})P9N}CjnfcC1qss;bR;;tQ^^ka7^a;r)P~iF8H!1pz>PyF)QUP znMcGs?XvoP`Yd)OY3uswkKAk$2O5f9)Ac%Q#9x03e-#?;F6&&ne8L+ial`YFh1@!EKyAnao&xS`-QXiR8t>y-$(q(~Q;1kECMtL2KH zv)1yB%uB);nB@tHb>p_33^l6^uYyDYB$inx#0Qcc1`~OzcFA>@!I+#O&$!B!M>^^i z)Z>!wP!#4zBy%OBksyl1{KtH+EQ&mMq<@ZLn;B`r-*Qsf%|E@gSOQ`$XHoPsz z)keYg+l&d4WbZT;4&*G&vC{8o9^!@MOVUp6Mf+M2w3$#K+slpV>`UCy`u$6MzgXpR z{~>%Lj{F=Z&8=Vpv{ww2vm1Zlz8mknbUYE0OD(o4nbri$zFE-$rZXBW8F3I_2RH9b zM$DbVgLmtx;1+{FaOwfVOR)^cKFR-IPiGw!_49Y}r5ovx?vRj>MoPLXk3zYNK#BxgkSt;LCor5N@1p*wrAnF&H2?Dfxm_`YX*pyO_)q?erq>|i>4-@| z6``vTcpq0OR0~jjRA2672Nz@}o9rX`; zq5R|IlPcF79mFp1gYe3aQVDj0ug-2E<-kvAYX5Vh*woceC;+wy{Iy;SN>M?F`=WPSS`qO$oZp-pRnUc1)^?xbD*X zH&w)69T}BD>xh^L)_{^Z+uG;nu6(N@)bJ5*J8_>f`(;FvMoTeoa+TahDx=>OvkgDq zt}Hzoj7$HXP!?(Knw8kz+NjM-_tl;tOeZy?_NGKjIKwyKghKbjA&B) z=kTa-dR5xHY{8qRk~J&0=^5~mID{brLpujB64zE5kv?X9+HZ-O3b-g)M6tpi>CwD7x@ z023ZDk<@;JCZSBcbk%9rZ#{|&`Coq_Hq_ioE1~w`$?+NXSd5B-EiIQ~ziT=^2zOkU zvVJ>&S#yLhrsEE-2y|ZpXgb47sU;OYuYz2BinBueT9V3aEx58Zoey*5p|rdX9Z3{M zHb(bM7M&nrzh%%9#HgDd9}l0X@)LHC-tZCXXK3JraNkWql;}Y~Cl%^3OG^7C9z~c; z-?%OoFqVL=1t6T1oTA3glxg1k0Hxx0(Vb&vE652`ij=cj4w|5T{2}cY^*b`WC0c5# z23BUQ=L;Fv3v@OqQo~*sA84FohzUR8iw*K|r!x8K{8}TjgZNqX^pxP%iiUAMg z3oHzJ1E6QP7G=B#c4NfK5YBt_HuKVnyvxG3$n_fh3?keOj%|295W5m@fUwyUpn0$Z z4X+Q8J}p5};_B#p_h`b)w6LV}?p8s*<;TL^O>vjF!CM-E{g6z+oCWY;J)SAx6$YJ{ zyGe%MO4?cvm2#@6o8HMA=&xPXh-rn>bZeRPU7UT#zQOUCv@QZ8h)~6XH~{1aL$F(V zCclIACvlDQ>!h(A;%J_?&+d;{K6v8q=V916^f`lQ@7W}yQnKb>2rp_zAM&+6${Q&P zaVk*o?#WyGzWD7sf{wn5>q6Rv2{s&YuaPbm1aBcd2`(iL8!hIaj6vFG(WR0#kc^!Uwp{_o|0X1Q~9NDMvh1MN7%V&5~3fPx^dyDb)0O zKvL?01@<@(&os}gCFzpJ!pa9Cz~0DMa@bxpxMJihoM~FCQV5J#8xmKiyrvDN{~lSV$nk14ok+95L(N< z9iYVT_%%)TP6&qc5X;(S7a91np4%4?Jhd~CJf4~$BvFjLc3Y+nP^|V&XiHQuvdu|{dVh>Cq z6bZbt>=i_IRDNQ6-VdxYcDs{9x(=R>C;tn{Y+$k)FRlI(n|Zb+dxul={D)eEAB@ zvIQ3crx}Isrk;yBYsHt5qAUq3H{KZYc0F9OUj2aIsaGTrprfV;k6d-McK?wbauhQo z)J3u&eE4DD_iZ^TUk{p`G+zEU9`^8DO1n7L3TPvaZ zI<)Z@g3)B0-6`N&6aZZN-pm?wE0Dv$?3ay*I4xjPb}SP9_0Zs^5lQJ82^ra|BZW(@9XFkKQ-p|kj35Ee4m%V+)C{;p2;eGA zZM|3svSLrt_Lv-F{QhU1L|&8Mg$Dlbt7pXUICu50cEm?vHxF&ghM!ZxsXlVqC+fRw z1k(&Vk|R$pyGRk+>?~SMFqkefHmH9GImVd1UGTh|@3FXbE6uQwmmx@9<#mt({9N(VW(Cz1j`=!YtVdWGQw+5o!m#c?O zF;6)MFaV{pz4(-7QV#b->$x*dQvPVDQ6EbW7D+0K!R&MgOUcI@x0 zsl#8Ef%zsBvboc5zDCMGcBI5dc2_FYbBOjO$XjL&syne!Y|`GY#vMIHOdPEY!i&%dTEEzTJ3S?<7g!k(%ZZtvM%K$47w`@gBE)R{(Jj=0qCIywe=gF zQD1MASFfhoDp{j(j(`Z5H2I}Mk|uXVcFezg`~9gBdG6$!JnCNPZrp$S&d7|_DW|{V8w(dl6x2l5%_+-&m!w#flNX$Ze z_k%;m>^vLrqm#s!CuG?<@Pb7PKS@jTJn+*x+Hdfy(*5XBIxWNQWfT%TkyCt&#H|uH zWQ+4E_O!CgyL&f=%XdPVSr4nzPwD+Gy>B+UD*2Vw<^2AR;Jw@CevLEJjJA>t*pAKA*8KrA9|J}fd4VNT?LSBg9$41@T7WaD&LKY69 zN~LbScST{y*em7X?jZ9Ws)Zw$A&IMn1i?UqLdS&mis!s;ik)RM1oGWVb9lRabL;12 z)DQsPVvyC5zs_-Z^8V*p0dasr?=N+6m@-MlbDl091J9cHAP3Vy%li-15oF9nsc7Gt z*Y76em={v6%T?hbaFZKw+eDG5!H*}ng3sbdSA#J@R3}V3tWo=cdN(q2ny`lCb1Bm&;iq?%&*^MbIK^+S zc0d=Q&M2a}QB5M73y}0}fuC*V^%No1Es3NJFiCp2W&jX>d(*Z-966xg{^+XUe5n#l+S}$#Gm@;SR|3pzt`F@QoRJ=B z5VW%sh4cvwJAv6fSfjtdzbnE1Tm5Jcm(qwvyWh!jY&)T)#=>A$wFTKuf`RN6~$>jjsYseDRsMch+Y?8YVcvAV7&6pOm(t%C~F%&+mNg1%Mvk+MhL zYRrx;v)a4!?5^g#dq7IZqQWSt_S6wmIpYxa`eC%*5Xz}p1P&G-(u&Ecj_hiH{(@I0 zXuy*dlTv3Vw@OXQtIuT<{<0|0;y6Xc)&QJW6w>`_4pgRxMSRZF{9}GsTqWs0aV6^f ziyduLavFAEE$5ZF$ikO!cb@A?E1Eg%E@IqJ^9$|9&bN?wXMyko9cB!q-{UKikG_s_ zTgqbLv0J|v%xux@aA9Kj6|Wn%XILHS&=t9)74DWEV))2%46dS^pcksJmWn+_q-ud5 zp#8@}hr4g>{z|5P=lq-1Bot7u-{~71dUqeNKQ=5v?VRDb46stW)05v$ud{iYE8O)4 zHEHzZ)8Wa$QJHL_O{`PSl8kWOvyqutb<>eL{?BsD(nqlSYCdo*2A z_UlsvqIY6JsJ3_~b`^gii)OZV5;Lqy_fI}$Y^`>X5NOi%J^6YxS3L4FU4H(Vao*_d zr-8K*{jn6o!J{w8!f(3~tMx6R;poLJ4ha8DJ3jl0jPg?B(a>2}<;~T%Vzu>DvS$k* zw#?F*&}zCEoiBAyz=`}3wdsWCmiJQ25JNWfIKgGl`007}SP+mEIK+;$Js>Rt+!y7i z{!bG3?KImaB0gSq8Ai>8VV=mc?R`nHf8z~fiO~<2|cO_@y-+*KkACz1N8$#DQv3 zWPP0~$})Jpt)%yPA8U&-8;Pp_i>Ct=ny=y5Hw097;6zrPrF2TlRSg?f#b`1B2JCbn ztp_g%2LOWTeK)Xs>BfgUG^APif{}LxchhhYdHuuU=o0qxY2q#fin}I9ZNDnlx&;dJ zfGV||yv=537!w??H~a(Quz>xY%tVMVWOCd3PN_Nv&cOwA2ayQ7jAC3`a$in=9-Mmf z+uWyleyE(adTpQF_YPabnn&@`Y4@Kih1rIiX`3E1cH5mWT)ZKoO z@K9jd9*{AnX?=aCMUNI;DEX9vT}@4{u{ zk+nCHLakUH7%5#rV~LN;!fyl#i%`s2u=v>4pdkOZ3+o@RCc$zrE@WDbP3_6;v@gKB z_9%>Wz+t#w@zrz@RO-*^S;K%c8o^i&=i|t*q6P$-2$e{sS$#`=tWiRfEkZ8UKFZ;R zh3_W&m%We`{g$hs*vtU>Djt}4m#-a^_#Iv%{G2ly(_aeDjl$1tkiS*I;rqCQDvr3&%fQsE4s)~=M`Ov>WdIFhD_;(Y6D|DNHf zQR9{N6dw=TTOkx)U4iuC^SH?yT$*NLX!_obETI5Ej)lmSy9dlPutFpzzy@M0-){SW zf3e;%k6-~ND|#@X<0 z?h)nf)xSYql>z_V8vsGb>FGu2KfqgNkL)t}$#28chx-}j+T$C=+diNfyOvpR2nZi# z8`;gPv}Ld&;4F|T#A>fzrWTO>grU{}>A5@}0E=7>cUt!D!9C9h+Dspc_FQoGV+TWW zpflDRNU+)`!>^AJd0HA|Rl9g6^!Sxr;PZr&B(>KNUY2s>gpFky3ilihNHPo19UF-0 z{z1$%1YP4s*_n|-UT!6>gK*e2o*RmbL3Xj1t`gkahe-W@~1dV_5ly|l0L)A|3@Iiwk{FwmryhpFq~9RE%0ps zS6qI3!1)G9-<*4~J9!cD`clhjc?kt9)G%86-?T3w^b!wE$uX+JwUI<&0a86w&L7RC zPOSG!Rc_44Z>2;Q9F0CN={!&$fn!?%Sj!Yf(S@pI2l5XM4HW|)cZNkXT6+yDR8ouC zq^>r667hXZv857ht4Nt>Af<^GnHdn&UZtWPxqN~ zS58pb`X>}v)ecpvI+!1ep(F%AoG(QtQ6m#6GL(vy_LYk>-EMTIWH6jYAerOaoZBF` zS;GZhk56#Ki9DVyj)454i@)9)n!~}z&KFhehwmUim4-6@2?gVYoDiIk+k5;4M~V+W zUCmoIvYLk$$oq9N&nSZ-B9b8D5d~iqEx<51v=QO`p%&!{lB_?)F0_oTk977{gSoVV z4+6L_(A(I1C7e2+fq3F+y;ID0LaGo3?eAzO%Iw0v))WgirutSB<3&bYm857IalmXn zNoM=T0K-xA4H#g=cGVg-fq*W=`yY~Qseqm3K>#Yu;9u?!tkvpSaP2j_#zY32Gx(|R z(3R@>N2q@xWMNzklYby-2{gxoWWx$Q~l!YE-e2q!KK_%*UOu zS8kN2UaJWT2?lrA=N2rcp|xDR(OSy8C>Bo?A`!r3d+9j6A zC`0=*{t(*==CdaI{S+XllgEO5oIn3A96AAo69#?jCGQ$F#DjjtB0WaRyU2$gOAZ&e zkWM!0@<`3%w39}^kw7?OWJT`ZwhqO!0qAChM3|)5{(UOZ}LEV8Jw(CCI%)bOL z+(xi~WybL?dvu4#0CR};wWT5_cB9BEWM4+H=Sn@d1FSVg(KOXKG`F)?@=g8nC+&un za+YjPaWp!0gt-b*-uNqz8($@OW+)AC{RZpd@L7RLiXEA3jP|?Klw|eRO<-7)ch!sx zjPr%URYj}w(GS4!6#fz*Lv1I&LJi3htMddGRLJdtsf~fKz0^^ybXv@A^BJmEuqtMY zK!)_|nV=(^po0&H!#8)e&)|!AHsZe!U(cm#<+PuRK^e06wh?^F*pcw@j&QY9G;nQP z(Xl`uX<=t0kTn$zstM8Fi28IOCoD+7R)YYOL#?hZl_}|oWsM_J+D9+caM)?qr&EH| z?aYvGUT%alGV-+EjUy=$dcWqiR$E=) zM0x0ZvBW56sy{HRSnR#d`=$clG$HPJ!O!19-+heqoz!`$o_p}ExFJbO?@TWII_*&mwcoPcYd^ zx%gVU^4H0e4hfVVY-c!2g<_ zlDzz1CO<%><-}hS99uY0VfiW8^oVctLu0nxOO8h(JINGqY)1Cj=+A=ExKt5j2`E1u zDKc9)&`1U#`4x+ZmYllxXG&QUil${n*Aq&eu?hv<y8qbT&_t%k?)^?J;xw z)5T1N$F3>6jVn}BX8QVb2hs_8Vp#qDh3qvnrh5D}I6?AWk!k%~gsvraC{3Fl4K|;*- zedZ2KN4Y1Pstfg*rp}qUCcZk&w0(9x-dA6MBH=j?7bBQy@wzE>03#VqU?SDnoAM58 z*~TY?y*?=>?m=T$lxH)&NC%*Q-O89p!l;y-7O$AM|HPC*)u8-)t2iDyCUu`Xd}Q}=bVaI@S_bN#o>cJ?Z%H< zk%`Eo*_DrSqzsy%aE(!ianuf=BFjEcjil3VqFR&?&cq~6vw~LDwSnEPObM%Y@oYQ%`v_- zVzltzNkQxJR#MVS=Nm1IKusV;I~8&8tW4yFGZOt;_AfE9rQcJ7pD8n|`4lTw6M6!$ zNA$hKbPTS9m#i!yy`{tqfQjR{a3x?Fs@~V$&7$KSWq97tcwaE_CMSbp#HUn)*-@EJ zYK&-N;9WF3l@%$_%(_>mf+V>=r1Q!B+YE;rn_yypd)d1mqu(B25N^@BBCN)=l`?QW&(;LOa}em0pi@b%c|9>({#oZ|E+8MeUmby zIqB35EXGNsd34mv%W&Vs%z3j@V-k*Sz24+sY*0YnaJSpn8HbwdTVhCZDXSVS3KvCw z>-0zJLGBjUb{4JuAXE9Xz-}d{_Hq9 zZc)#oz%>%7eV%QW8`8dTgRygRua&pdgp{xebogY8{n^RJnn3+eEZd#1M`+afdWmIp z>{h-%5IVVUKB=WO)69K7lCK9~;ZSINQ~Nz4C}W4*|V>7DPj#k063h6DlhhQba+7)h8~NmRA~eFb1nceAME z@2Pk@06oL?A#gf%wGH4h4S=YXLn*`YS#e9?ekhgDwL z-mPp#UpU*PJDCfkcj{$l5>_NzuYgN0X&}#0yD zKk#Gl?xK9Z(M|)IwJm2bkf`7hKF#vUJFDY0m zFt1lZXaZ3}WN&3h73aR@u#u!}_O`Nnpd80drM(u8OxP(DSJBp4MiSips9D90L`dtP z*~KOBa)QvC$#+uOl6kpZ!Hmq`!Ir76SWCfwfXt2w3Pg<4Mw2Df+E~uNmnX1r}PAyB04CCR~u3p+Xc7a~O z#9UpoUPaRzVPs!8a-2v!T`M-NughJWlkKVYLn0wOAA(73e#&f4eYpdV2_?){`OkrO z4}w1pV^8SEa~k)oV3J^RXt@VWkcLJ^r@u_g5T0)*g8O zO-b$w$&HlFqQ}_&CW~l0;r&(6c@6%4^Z*-zWnFP!c@L)^OfOnGv=`lIuKWwhta0K| z^AoRuUuMV3c|oqxy3~nTM$;chFMAW^@*=J!SQ=;G3t3M2_OSsce=TXwlKLzZG3n;Q zK%7Wk?;!#&*gR2UTL`@{6u%v~OhB}z6F7t8!x&H~koup^eLE$2hgGgZ`xg>I6rNN) z5ltkaX1=Rgyf_d?)a!wqN-eYz`s5J();VLgjM<~{!5 z#{AI?{}9~boZx3G6uSZ)Rho`>Y3(ym75=!;zGc^!x+z55Pp&AnEJmB@8RG5<$VQJ1 zSrLUfTQxbttcn%7TUGd)Q$%|)Er zKn4MV_r`KjeJ999?U@5uo}Nx%T_50KHfRfE^n(TOh-%8T`?9`~xlh9)|R95|vyzK3kJ^QfC#EG_1-$ikht{`H~ykk*P__3l90C>1F zKXdJ55(DfDj$AMsJF|7(12}Es!j~06PsN91iik`3zu+qPb)Gk^?td=^DYG^~a-p}~ z{6^!4PgRnPqO(*7%8P9X-64KR3(8ty{^QtlGioZ6EEfRNE1j|}}^VB0#JAz3w{`jD8_cj$R$4z1v z7=dt8;5d!dEJNRxpt~heI)5S4u&>KE1f zXyIRCbShjb$@R-`?wJ)$MHe6DVj5veMIf3HB^uNtqh8B0zM||wozbOAtG>Tc*+IZ6 z=nONbOXFi6RzYpzS99Uh&9dBU=1ZY=)$*2@!f=w8%YD}50D*RPu@ytnl)%c@HgPAoZ!%o5x1#t^}Q>kzd2TeK79V_EVOB>n~3x zVWvyp@02WV|5#PCBqAIY^ zxyV|RZB1yC9VXqv+$BTqw5G!QgS`htO}Q)G(hB|Z5wfFjvj%CC0XHf3w{!FJW}eX}QEIHpPUOB8LjD8jxg{9jMKOfVey}xidQYfPhKMo)Iiq za<@*MYh^-acC5~K8DvPo=FO;l(z!v1`*e`A6T?{dDurv}|6 z8fEm}$Y{P6Emuprr#(3Mv&1oY)k+_)O6qqi?hC}C+o@+eA(-KDm&LztVTo89;GkI^ zv7JlrBk)fhSyMU=)gAe9fS7I+M&6a%ZW9PIuU1(zMae{}m%q%_i;z$H1#ouD0 zq6-w%nM1OEsAsI;G(xE!AGRxrVst@_GH*+MCR}QnQMtOP$T;kn=!DEIvTLx(<1O!@ z0ki@|8+bzTGkF~ua&4X|ac!PP@BxX&;X)Vv=19Zt<1WvbAPBTlvSq)iP;_MYNV&fg ze7TXz^efU;C*Ad}R@`{x=+Qa?zg8(~nj?(T@!G8pv_#T+5}&M=Y? zKys3Q1Q@;i99mC7=KXo?Nmi)d*NT@y#6)_?Fw_shqS+Eit=oSgeU-*vj}vz(@FRS@ z%p=#7k9FW{+min1J*mHJ(UPLh$F6w-sA;ABj_tMF~l zSTUQTU5BRN`OCHaklhm{^)Z8BZDr^BFt8G5JXAe9di-oXx8{T zXjI*n0FI;@sOoa^bHMP{}h?pj=42lE0f zl-~+8R#hO6`Ue|DDEo-*7a&uXUEjYgzgEa&VwEGD5PL|)UZ4l=SKHbcL=o-!5N6}ex!{=KGi z7PBEeQn8Cq1ueH>6`{Z|V35B))Wpa&Ey_k4;3M;xs*STA?Y+C6mF~f8J2qB3NXP+n zCm>p~_Z^{Ubyf5&CdzY{4+d}$@e+;hpP^r7XI3zOq)AYc1XBvD=6}}iyB8oCNbfgI z_vD}FjyDiMbOGX8EBFzBe$M;00iRE1&tCQ7`;P|*SHbRMq$jwj@6%~(yfY)!-cMu{ z_+24u?WAJYVLf+L6^I6cqF06~0spv4?0USTQdX;A!x&;dC~}2u1^ycqM#sPWI=I{n zo?rLCnri&+JU(iF_Rq}&?Ug!HUe}I}ly}24e^@J@Dj}UdYC#(k-@_2eet+$$mdGYzkfCt)_R2+K+T~c+w_#{bAC$zR!qj zCmcLqsR4TeW%BMy#u>nFybQ%%4Q49Ht!cyjth-Vhy-vej?IT^^>IUbm0%yRbmd+A; zTK}=%O_}_?Hm%F*Jygdw$U%-v9W^{D_EcUhjkd{z)|+GiuzkOCd{so>KgW8b-5mXh z*Jr=sU?_S*Iwm*e%4eKn4qMNYu$S4uN@wee5(99hep;7v_a58x5{~ieN}Ee1-lydc6ys>0?$RcZgasLE!9i=43W%CMPFf3q zEF>3@16F=o#Dm56MlIWf%o~})t%6~MZi~+esLN}2nI}y(pwYF4EVCl!j~g7s-BeNg zHd5UPetDHW=r9+==>9=c|K4jrjXz~SIBYUsk3NZTxeLhchLbKaZ|69)U$FXrNyK_X zHI)}dvOf6Uah=k4ujFpY;OTtb)10Q=cU4~v2(@^hSD(E$l8{{S5` zxxXE#hGPT=10t#*Je3y06%x5JDd=AXLLR$zbPkeO1U{~}Uy0!w>0j1I;|Pd{;h3m> zr-lp?XId0Yn~Q}=mkBZH+fqT8f0ATuU)Of`|M{eFH2>L&%C2@qu^=HdgqySBmN|gp z9*Z{eskqriaEp29f2*CgvQ5ZLk!hxEE4}|G%C&LJ6V(`<_%f+64yb6J3gPFVpb_`0 zzYsLTmn+T^Q$?#_H8MhCjp@d4!tQj;5*mWN#H7!?s_>3yzOwkPT|;q~|5zQ=&K9d+ zfO{HrOzO!e$@pw?{29LaA{mkL$-ryvXFM&>FN_~VslAz$?l-P~7Qt&m>(q>EQjqA+ znnT&=c=;B9WdG$)Dr{K-B~mM zPcll9#pZd2jDiYA(G4Qdq<|_3_bF?ZU|mnZkc1+!HYC$LxbM{IPh!{etoG@yEI+a3 zc+PoQe*J#`-TjLD8zJ+65euuEAk(m1X5JLVH^-tuKc3KB2luqr;I&W6hygHYD^0dO z>C5`%Y+e|a64Pt5;KpAd z!P_@dIrx2^62#Q^b#aUA8>NGu zZywx-F+QF|vu4F10m1Y|{@g)p*ne zzvyj9w(4Nxx4$*b)a6F&=ue0j^MLh-7A*azmD0b6G#sr}zzAZh4-qXERc0hL#-*od z(W0#E$iWi8^+ild z5Q_B`1R7%=k^N9JJ5MxvDafpXdtL}bKa*#DMYn?NtcSGfR>~U`CB_Baei@KB#fdk8 zvA<$VV_cEU>ES{0)#i9og%uH8rSY7>a?V(4IKM@1QDnB3j|re zk;}MB2*hx)N`m5q3Y9U9{hQT4y(8j{i&NvIr4(>UR$v=H|)F&tWzq_Mt ze{AD=Y-Q7blC05*%SYpQYkXO5FeLZ3cOYDxdmR>=NdFA!^q){*SY>mK5EJ+%ao-3f zNcA@PUw!iN`0(Gl2Ty}5V6vAXL{)m01dDgY+~@9oufWkKh8o7`81?k>pQ?ap2x-pa yzLa*qTDwB64H~OLyJbf;X?u~x_{rjN5XF?s{dq*Mps>a{&B8Sdm+ryeh5rKyl4N24 literal 0 HcmV?d00001 diff --git a/dot_bash_profile b/dot_bash_profile new file mode 100644 index 0000000..18b44ee --- /dev/null +++ b/dot_bash_profile @@ -0,0 +1,45 @@ +if [ -z $DISPLAY ] && [ "$(tty)" = "/dev/tty1" ]; then + # First make sure dbus is started + + if [ -z "$DBUS_SESSION_BUS_ADDRESS" ]; then + export DBUS_SESSION_BUS_ADDRESS="$(dbus-daemon --session --fork --print-address)" + fi + echo "D-Bus per-session daemon address is: $DBUS_SESSION_BUS_ADDRESS" + + # Set XDG_RUNTIME_DIR + # Paragraph modified from https://wiki.gentoo.org/wiki/Sway + if [ -z "${XDG_RUNTIME_DIR}" ]; then + export XDG_RUNTIME_DIR="/tmp/${UID}-runtime-dir" + if ! [ -d "${XDG_RUNTIME_DIR}" ]; then + mkdir "${XDG_RUNTIME_DIR}" + chmod 0700 "${XDG_RUNTIME_DIR}" + fi + fi + + # Enable SSH agent + eval $(keychain --noask --eval --quiet) + + # Various exports + + #export SHELL="$(command -v zsh)" + + export QT_QPA_PLATFORMTHEME=qt5ct + export QT_QPA_PLATFORM=wayland + export GDK_BACKEND=wayland + export XDG_SESSION_TYPE=wayland + export XDG_CURRENT_DESKTOP=sway + export WLR_NO_HARDWARE_CURSORS=1 + + export _JAVA_AWT_WM_NONREPARENTING=1 #Make java programs work somewhat + + export PAN_MESA_DEBUG=gl3 #Fix alacritty not starting + export MOZ_ENABLE_WAYLAND=1 # Fix firefox not starting + + export PATH="$PATH:~/.local/bin/" + export PATH="$PATH:~/go/bin/" + export PATH="$PATH:~/.local/share/flatpak/exports/bin/" + + #export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:~/.local/lib/ + + exec sway +fi diff --git a/dot_config/alacritty/executable_alacritty.yml b/dot_config/alacritty/executable_alacritty.yml new file mode 100644 index 0000000..4e9de63 --- /dev/null +++ b/dot_config/alacritty/executable_alacritty.yml @@ -0,0 +1,895 @@ +# Configuration for Alacritty, the GPU enhanced terminal emulator. + +# Import additional configuration files +# +# Imports are loaded in order, skipping all missing files, with the importing +# file being loaded last. If a field is already present in a previous import, it +# will be replaced. +# +# All imports must either be absolute paths starting with `/`, or paths relative +# to the user's home directory starting with `~/`. +#import: +# - /path/to/alacritty.yml + +# Any items in the `env` entry below will be added as +# environment variables. Some entries may override variables +# set by alacritty itself. +#env: + # TERM variable + # + # This value is used to set the `$TERM` environment variable for + # each instance of Alacritty. If it is not present, alacritty will + # check the local terminfo database and use `alacritty` if it is + # available, otherwise `xterm-256color` is used. + #TERM: alacritty + +#window: + # Window dimensions (changes require restart) + # + # Number of lines/columns (not pixels) in the terminal. Both lines and columns + # must be non-zero for this to take effect. The number of columns must be at + # least `2`, while using a value of `0` for columns and lines will fall back + # to the window manager's recommended size + #dimensions: + # columns: 0 + # lines: 0 + + # Window position (changes require restart) + # + # Specified in number of pixels. + # If the position is not set, the window manager will handle the placement. + #position: + # x: 0 + # y: 0 + + # Window padding (changes require restart) + # + # Blank space added around the window in pixels. This padding is scaled + # by DPI and the specified value is always added at both opposing sides. + #padding: + # x: 0 + # y: 0 + + # Spread additional padding evenly around the terminal content. + #dynamic_padding: false + + # Window decorations + # + # Values for `decorations`: + # - full: Borders and title bar + # - none: Neither borders nor title bar + # + # Values for `decorations` (macOS only): + # - transparent: Title bar, transparent background and title bar buttons + # - buttonless: Title bar, transparent background and no title bar buttons + #decorations: full + + # Background opacity + # + # Window opacity as a floating point number from `0.0` to `1.0`. + # The value `0.0` is completely transparent and `1.0` is opaque. + #opacity: 1.0 + + # Startup Mode (changes require restart) + # + # Values for `startup_mode`: + # - Windowed + # - Maximized + # - Fullscreen + # + # Values for `startup_mode` (macOS only): + # - SimpleFullscreen + #startup_mode: Windowed + + # Window title + #title: Alacritty + + # Allow terminal applications to change Alacritty's window title. + #dynamic_title: true + + # Window class (Linux/BSD only): + #class: + # Application instance name + #instance: Alacritty + # General application class + #general: Alacritty + + # Decorations theme variant (Linux/BSD only) + # + # Override the variant of the GTK theme/Wayland client side decorations. + # Commonly supported values are `dark` and `light`. Set this to `None` to use + # the default theme variant. + #decorations_theme_variant: None + +#scrolling: + # Maximum number of lines in the scrollback buffer. + # Specifying '0' will disable scrolling. + #history: 10000 + + # Scrolling distance multiplier. + #multiplier: 3 + +# Font configuration +#font: + # Normal (roman) font face + #normal: + # Font family + # + # Default: + # - (macOS) Menlo + # - (Linux/BSD) monospace + # - (Windows) Consolas + #family: monospace + + # The `style` can be specified to pick a specific face. + #style: Regular + + # Bold font face + #bold: + # Font family + # + # If the bold family is not specified, it will fall back to the + # value specified for the normal font. + #family: monospace + + # The `style` can be specified to pick a specific face. + #style: Bold + + # Italic font face + #italic: + # Font family + # + # If the italic family is not specified, it will fall back to the + # value specified for the normal font. + #family: monospace + + # The `style` can be specified to pick a specific face. + #style: Italic + + # Bold italic font face + #bold_italic: + # Font family + # + # If the bold italic family is not specified, it will fall back to the + # value specified for the normal font. + #family: monospace + + # The `style` can be specified to pick a specific face. + #style: Bold Italic + + # Point size + #size: 11.0 + + # Offset is the extra space around each character. `offset.y` can be thought + # of as modifying the line spacing, and `offset.x` as modifying the letter + # spacing. + #offset: + # x: 0 + # y: 0 + + # Glyph offset determines the locations of the glyphs within their cells with + # the default being at the bottom. Increasing `x` moves the glyph to the + # right, increasing `y` moves the glyph upward. + #glyph_offset: + # x: 0 + # y: 0 + + # Use built-in font for box drawing characters. + # + # If `true`, Alacritty will use a custom built-in font for box drawing + # characters (Unicode points 2500 - 259f). + # + #builtin_box_drawing: true + +# If `true`, bold text is drawn using the bright color variants. +#draw_bold_text_with_bright_colors: false + +# Colors (Tomorrow Night) +#colors: + # Default colors + #primary: + # background: '#1d1f21' + # foreground: '#c5c8c6' + + # Bright and dim foreground colors + # + # The dimmed foreground color is calculated automatically if it is not + # present. If the bright foreground color is not set, or + # `draw_bold_text_with_bright_colors` is `false`, the normal foreground + # color will be used. + #dim_foreground: '#828482' + #bright_foreground: '#eaeaea' + + # Cursor colors + # + # Colors which should be used to draw the terminal cursor. + # + # Allowed values are CellForeground/CellBackground, which reference the + # affected cell, or hexadecimal colors like #ff00ff. + #cursor: + # text: CellBackground + # cursor: CellForeground + + # Vi mode cursor colors + # + # Colors for the cursor when the vi mode is active. + # + # Allowed values are CellForeground/CellBackground, which reference the + # affected cell, or hexadecimal colors like #ff00ff. + #vi_mode_cursor: + # text: CellBackground + # cursor: CellForeground + + # Search colors + # + # Colors used for the search bar and match highlighting. + #search: + # Allowed values are CellForeground/CellBackground, which reference the + # affected cell, or hexadecimal colors like #ff00ff. + #matches: + # foreground: '#000000' + # background: '#ffffff' + #focused_match: + # foreground: '#ffffff' + # background: '#000000' + + # Keyboard hints + #hints: + # First character in the hint label + # + # Allowed values are CellForeground/CellBackground, which reference the + # affected cell, or hexadecimal colors like #ff00ff. + #start: + # foreground: '#1d1f21' + # background: '#e9ff5e' + + # All characters after the first one in the hint label + # + # Allowed values are CellForeground/CellBackground, which reference the + # affected cell, or hexadecimal colors like #ff00ff. + #end: + # foreground: '#e9ff5e' + # background: '#1d1f21' + + # Line indicator + # + # Color used for the indicator displaying the position in history during + # search and vi mode. + # + # By default, these will use the opposing primary color. + #line_indicator: + # foreground: None + # background: None + + # Footer bar + # + # Color used for the footer bar on the bottom, used by search regex input, + # hyperlink URI preview, etc. + # + #footer_bar: + # background: '#c5c8c6' + # foreground: '#1d1f21' + + # Selection colors + # + # Colors which should be used to draw the selection area. + # + # Allowed values are CellForeground/CellBackground, which reference the + # affected cell, or hexadecimal colors like #ff00ff. + #selection: + # text: CellBackground + # background: CellForeground + + # Normal colors + #normal: + # black: '#1d1f21' + # red: '#cc6666' + # green: '#b5bd68' + # yellow: '#f0c674' + # blue: '#81a2be' + # magenta: '#b294bb' + # cyan: '#8abeb7' + # white: '#c5c8c6' + + # Bright colors + #bright: + # black: '#666666' + # red: '#d54e53' + # green: '#b9ca4a' + # yellow: '#e7c547' + # blue: '#7aa6da' + # magenta: '#c397d8' + # cyan: '#70c0b1' + # white: '#eaeaea' + + # Dim colors + # + # If the dim colors are not set, they will be calculated automatically based + # on the `normal` colors. + #dim: + # black: '#131415' + # red: '#864343' + # green: '#777c44' + # yellow: '#9e824c' + # blue: '#556a7d' + # magenta: '#75617b' + # cyan: '#5b7d78' + # white: '#828482' + + # Indexed Colors + # + # The indexed colors include all colors from 16 to 256. + # When these are not set, they're filled with sensible defaults. + # + # Example: + # `- { index: 16, color: '#ff00ff' }` + # + #indexed_colors: [] + + # Transparent cell backgrounds + # + # Whether or not `window.opacity` applies to all cell backgrounds or only to + # the default background. When set to `true` all cells will be transparent + # regardless of their background color. + #transparent_background_colors: false + +# Bell +# +# The bell is rung every time the BEL control character is received. +#bell: + # Visual Bell Animation + # + # Animation effect for flashing the screen when the visual bell is rung. + # + # Values for `animation`: + # - Ease + # - EaseOut + # - EaseOutSine + # - EaseOutQuad + # - EaseOutCubic + # - EaseOutQuart + # - EaseOutQuint + # - EaseOutExpo + # - EaseOutCirc + # - Linear + #animation: EaseOutExpo + + # Duration of the visual bell flash in milliseconds. A `duration` of `0` will + # disable the visual bell animation. + #duration: 0 + + # Visual bell animation color. + #color: '#ffffff' + + # Bell Command + # + # This program is executed whenever the bell is rung. + # + # When set to `command: None`, no command will be executed. + # + # Example: + # command: + # program: notify-send + # args: ["Hello, World!"] + # + #command: None + +#selection: + # This string contains all characters that are used as separators for + # "semantic words" in Alacritty. + #semantic_escape_chars: ",│`|:\"' ()[]{}<>\t" + + # When set to `true`, selected text will be copied to the primary clipboard. + #save_to_clipboard: false + +#cursor: + # Cursor style + #style: + # Cursor shape + # + # Values for `shape`: + # - ▇ Block + # - _ Underline + # - | Beam + #shape: Block + + # Cursor blinking state + # + # Values for `blinking`: + # - Never: Prevent the cursor from ever blinking + # - Off: Disable blinking by default + # - On: Enable blinking by default + # - Always: Force the cursor to always blink + #blinking: Off + + # Vi mode cursor style + # + # If the vi mode cursor style is `None` or not specified, it will fall back to + # the style of the active value of the normal cursor. + # + # See `cursor.style` for available options. + #vi_mode_style: None + + # Cursor blinking interval in milliseconds. + #blink_interval: 750 + + # Time after which cursor stops blinking, in seconds. + # + # Specifying '0' will disable timeout for blinking. + #blink_timeout: 5 + + # If this is `true`, the cursor will be rendered as a hollow box when the + # window is not focused. + #unfocused_hollow: true + + # Thickness of the cursor relative to the cell width as floating point number + # from `0.0` to `1.0`. + #thickness: 0.15 + +# Live config reload (changes require restart) +#live_config_reload: true + +# Shell +# +# You can set `shell.program` to the path of your favorite shell, e.g. +# `/bin/fish`. Entries in `shell.args` are passed unmodified as arguments to the +# shell. +# +# Default: +# - (Linux/BSD/macOS) `$SHELL` or the user's login shell, if `$SHELL` is unset +# - (Windows) powershell +#shell: +# program: /bin/bash +# args: +# - --login + +# Startup directory +# +# Directory the shell is started in. If this is unset, or `None`, the working +# directory of the parent process will be used. +#working_directory: None + +# Send ESC (\x1b) before characters when alt is pressed. +#alt_send_esc: true + +# Offer IPC using `alacritty msg` (unix only) +#ipc_socket: true + +#mouse: + # Click settings + # + # The `double_click` and `triple_click` settings control the time + # alacritty should wait for accepting multiple clicks as one double + # or triple click. + #double_click: { threshold: 300 } + #triple_click: { threshold: 300 } + + # If this is `true`, the cursor is temporarily hidden when typing. + #hide_when_typing: false + +# Hints +# +# Terminal hints can be used to find text or hyperlink in the visible part of +# the terminal and pipe it to other applications. +#hints: + # Keys used for the hint labels. + #alphabet: "jfkdls;ahgurieowpq" + + # List with all available hints + # + # Each hint must have any of `regex` or `hyperlinks` field and either an + # `action` or a `command` field. The fields `mouse`, `binding` and + # `post_processing` are optional. + # + # The `hyperlinks` option will cause OSC 8 escape sequence hyperlinks to be + # highlighted. + # + # The fields `command`, `binding.key`, `binding.mods`, `binding.mode` and + # `mouse.mods` accept the same values as they do in the `key_bindings` section. + # + # The `mouse.enabled` field controls if the hint should be underlined while + # the mouse with all `mouse.mods` keys held or the vi mode cursor is above it. + # + # If the `post_processing` field is set to `true`, heuristics will be used to + # shorten the match if there are characters likely not to be part of the hint + # (e.g. a trailing `.`). This is most useful for URIs and applies only to + # `regex` matches. + # + # Values for `action`: + # - Copy + # Copy the hint's text to the clipboard. + # - Paste + # Paste the hint's text to the terminal or search. + # - Select + # Select the hint's text. + # - MoveViModeCursor + # Move the vi mode cursor to the beginning of the hint. + #enabled: + # - regex: "(ipfs:|ipns:|magnet:|mailto:|gemini:|gopher:|https:|http:|news:|file:|git:|ssh:|ftp:)\ + # [^\u0000-\u001F\u007F-\u009F<>\"\\s{-}\\^⟨⟩`]+" + # hyperlinks: true + # command: xdg-open + # post_processing: true + # mouse: + # enabled: true + # mods: None + # binding: + # key: U + # mods: Control|Shift + +# Mouse bindings +# +# Mouse bindings are specified as a list of objects, much like the key +# bindings further below. +# +# To trigger mouse bindings when an application running within Alacritty +# captures the mouse, the `Shift` modifier is automatically added as a +# requirement. +# +# Each mouse binding will specify a: +# +# - `mouse`: +# +# - Middle +# - Left +# - Right +# - Numeric identifier such as `5` +# +# - `action` (see key bindings for actions not exclusive to mouse mode) +# +# - Mouse exclusive actions: +# +# - ExpandSelection +# Expand the selection to the current mouse cursor location. +# +# And optionally: +# +# - `mods` (see key bindings) +#mouse_bindings: +# - { mouse: Right, action: ExpandSelection } +# - { mouse: Right, mods: Control, action: ExpandSelection } +# - { mouse: Middle, mode: ~Vi, action: PasteSelection } + +# Key bindings +# +# Key bindings are specified as a list of objects. For example, this is the +# default paste binding: +# +# `- { key: V, mods: Control|Shift, action: Paste }` +# +# Each key binding will specify a: +# +# - `key`: Identifier of the key pressed +# +# - A-Z +# - F1-F24 +# - Key0-Key9 +# +# A full list with available key codes can be found here: +# https://docs.rs/glutin/*/glutin/event/enum.VirtualKeyCode.html#variants +# +# Instead of using the name of the keys, the `key` field also supports using +# the scancode of the desired key. Scancodes have to be specified as a +# decimal number. This command will allow you to display the hex scancodes +# for certain keys: +# +# `showkey --scancodes`. +# +# Then exactly one of: +# +# - `chars`: Send a byte sequence to the running application +# +# The `chars` field writes the specified string to the terminal. This makes +# it possible to pass escape sequences. To find escape codes for bindings +# like `PageUp` (`"\x1b[5~"`), you can run the command `showkey -a` outside +# of tmux. Note that applications use terminfo to map escape sequences back +# to keys. It is therefore required to update the terminfo when changing an +# escape sequence. +# +# - `action`: Execute a predefined action +# +# - ToggleViMode +# - SearchForward +# Start searching toward the right of the search origin. +# - SearchBackward +# Start searching toward the left of the search origin. +# - Copy +# - Paste +# - IncreaseFontSize +# - DecreaseFontSize +# - ResetFontSize +# - ScrollPageUp +# - ScrollPageDown +# - ScrollHalfPageUp +# - ScrollHalfPageDown +# - ScrollLineUp +# - ScrollLineDown +# - ScrollToTop +# - ScrollToBottom +# - ClearHistory +# Remove the terminal's scrollback history. +# - Hide +# Hide the Alacritty window. +# - Minimize +# Minimize the Alacritty window. +# - Quit +# Quit Alacritty. +# - ToggleFullscreen +# - SpawnNewInstance +# Spawn a new instance of Alacritty. +# - CreateNewWindow +# Create a new Alacritty window from the current process. +# - ClearLogNotice +# Clear Alacritty's UI warning and error notice. +# - ClearSelection +# Remove the active selection. +# - ReceiveChar +# - None +# +# - Vi mode exclusive actions: +# +# - Open +# Perform the action of the first matching hint under the vi mode cursor +# with `mouse.enabled` set to `true`. +# - ToggleNormalSelection +# - ToggleLineSelection +# - ToggleBlockSelection +# - ToggleSemanticSelection +# Toggle semantic selection based on `selection.semantic_escape_chars`. +# - CenterAroundViCursor +# Center view around vi mode cursor +# +# - Vi mode exclusive cursor motion actions: +# +# - Up +# One line up. +# - Down +# One line down. +# - Left +# One character left. +# - Right +# One character right. +# - First +# First column, or beginning of the line when already at the first column. +# - Last +# Last column, or beginning of the line when already at the last column. +# - FirstOccupied +# First non-empty cell in this terminal row, or first non-empty cell of +# the line when already at the first cell of the row. +# - High +# Top of the screen. +# - Middle +# Center of the screen. +# - Low +# Bottom of the screen. +# - SemanticLeft +# Start of the previous semantically separated word. +# - SemanticRight +# Start of the next semantically separated word. +# - SemanticLeftEnd +# End of the previous semantically separated word. +# - SemanticRightEnd +# End of the next semantically separated word. +# - WordLeft +# Start of the previous whitespace separated word. +# - WordRight +# Start of the next whitespace separated word. +# - WordLeftEnd +# End of the previous whitespace separated word. +# - WordRightEnd +# End of the next whitespace separated word. +# - Bracket +# Character matching the bracket at the cursor's location. +# - SearchNext +# Beginning of the next match. +# - SearchPrevious +# Beginning of the previous match. +# - SearchStart +# Start of the match to the left of the vi mode cursor. +# - SearchEnd +# End of the match to the right of the vi mode cursor. +# +# - Search mode exclusive actions: +# - SearchFocusNext +# Move the focus to the next search match. +# - SearchFocusPrevious +# Move the focus to the previous search match. +# - SearchConfirm +# - SearchCancel +# - SearchClear +# Reset the search regex. +# - SearchDeleteWord +# Delete the last word in the search regex. +# - SearchHistoryPrevious +# Go to the previous regex in the search history. +# - SearchHistoryNext +# Go to the next regex in the search history. +# +# - macOS exclusive actions: +# - ToggleSimpleFullscreen +# Enter fullscreen without occupying another space. +# +# - Linux/BSD exclusive actions: +# +# - CopySelection +# Copy from the selection buffer. +# - PasteSelection +# Paste from the selection buffer. +# +# - `command`: Fork and execute a specified command plus arguments +# +# The `command` field must be a map containing a `program` string and an +# `args` array of command line parameter strings. For example: +# `{ program: "alacritty", args: ["-e", "vttest"] }` +# +# And optionally: +# +# - `mods`: Key modifiers to filter binding actions +# +# - Command +# - Control +# - Option +# - Super +# - Shift +# - Alt +# +# Multiple `mods` can be combined using `|` like this: +# `mods: Control|Shift`. +# Whitespace and capitalization are relevant and must match the example. +# +# - `mode`: Indicate a binding for only specific terminal reported modes +# +# This is mainly used to send applications the correct escape sequences +# when in different modes. +# +# - AppCursor +# - AppKeypad +# - Search +# - Alt +# - Vi +# +# A `~` operator can be used before a mode to apply the binding whenever +# the mode is *not* active, e.g. `~Alt`. +# +# Bindings are always filled by default, but will be replaced when a new +# binding with the same triggers is defined. To unset a default binding, it can +# be mapped to the `ReceiveChar` action. Alternatively, you can use `None` for +# a no-op if you do not wish to receive input characters for that binding. +# +# If the same trigger is assigned to multiple actions, all of them are executed +# in the order they were defined in. +#key_bindings: + #- { key: Paste, action: Paste } + #- { key: Copy, action: Copy } + #- { key: L, mods: Control, action: ClearLogNotice } + #- { key: L, mods: Control, mode: ~Vi|~Search, chars: "\x0c" } + #- { key: PageUp, mods: Shift, mode: ~Alt, action: ScrollPageUp } + #- { key: PageDown, mods: Shift, mode: ~Alt, action: ScrollPageDown } + #- { key: Home, mods: Shift, mode: ~Alt, action: ScrollToTop } + #- { key: End, mods: Shift, mode: ~Alt, action: ScrollToBottom } + + # Vi Mode + #- { key: Space, mods: Shift|Control, mode: ~Search, action: ToggleViMode } + #- { key: Space, mods: Shift|Control, mode: Vi|~Search, action: ScrollToBottom } + #- { key: Escape, mode: Vi|~Search, action: ClearSelection } + #- { key: I, mode: Vi|~Search, action: ToggleViMode } + #- { key: I, mode: Vi|~Search, action: ScrollToBottom } + #- { key: C, mods: Control, mode: Vi|~Search, action: ToggleViMode } + #- { key: Y, mods: Control, mode: Vi|~Search, action: ScrollLineUp } + #- { key: E, mods: Control, mode: Vi|~Search, action: ScrollLineDown } + #- { key: G, mode: Vi|~Search, action: ScrollToTop } + #- { key: G, mods: Shift, mode: Vi|~Search, action: ScrollToBottom } + #- { key: B, mods: Control, mode: Vi|~Search, action: ScrollPageUp } + #- { key: F, mods: Control, mode: Vi|~Search, action: ScrollPageDown } + #- { key: U, mods: Control, mode: Vi|~Search, action: ScrollHalfPageUp } + #- { key: D, mods: Control, mode: Vi|~Search, action: ScrollHalfPageDown } + #- { key: Y, mode: Vi|~Search, action: Copy } + #- { key: Y, mode: Vi|~Search, action: ClearSelection } + #- { key: Copy, mode: Vi|~Search, action: ClearSelection } + #- { key: V, mode: Vi|~Search, action: ToggleNormalSelection } + #- { key: V, mods: Shift, mode: Vi|~Search, action: ToggleLineSelection } + #- { key: V, mods: Control, mode: Vi|~Search, action: ToggleBlockSelection } + #- { key: V, mods: Alt, mode: Vi|~Search, action: ToggleSemanticSelection } + #- { key: Return, mode: Vi|~Search, action: Open } + #- { key: Z, mode: Vi|~Search, action: CenterAroundViCursor } + #- { key: K, mode: Vi|~Search, action: Up } + #- { key: J, mode: Vi|~Search, action: Down } + #- { key: H, mode: Vi|~Search, action: Left } + #- { key: L, mode: Vi|~Search, action: Right } + #- { key: Up, mode: Vi|~Search, action: Up } + #- { key: Down, mode: Vi|~Search, action: Down } + #- { key: Left, mode: Vi|~Search, action: Left } + #- { key: Right, mode: Vi|~Search, action: Right } + #- { key: Key0, mode: Vi|~Search, action: First } + #- { key: Key4, mods: Shift, mode: Vi|~Search, action: Last } + #- { key: Key6, mods: Shift, mode: Vi|~Search, action: FirstOccupied } + #- { key: H, mods: Shift, mode: Vi|~Search, action: High } + #- { key: M, mods: Shift, mode: Vi|~Search, action: Middle } + #- { key: L, mods: Shift, mode: Vi|~Search, action: Low } + #- { key: B, mode: Vi|~Search, action: SemanticLeft } + #- { key: W, mode: Vi|~Search, action: SemanticRight } + #- { key: E, mode: Vi|~Search, action: SemanticRightEnd } + #- { key: B, mods: Shift, mode: Vi|~Search, action: WordLeft } + #- { key: W, mods: Shift, mode: Vi|~Search, action: WordRight } + #- { key: E, mods: Shift, mode: Vi|~Search, action: WordRightEnd } + #- { key: Key5, mods: Shift, mode: Vi|~Search, action: Bracket } + #- { key: Slash, mode: Vi|~Search, action: SearchForward } + #- { key: Slash, mods: Shift, mode: Vi|~Search, action: SearchBackward } + #- { key: N, mode: Vi|~Search, action: SearchNext } + #- { key: N, mods: Shift, mode: Vi|~Search, action: SearchPrevious } + + # Search Mode + #- { key: Return, mode: Search|Vi, action: SearchConfirm } + #- { key: Escape, mode: Search, action: SearchCancel } + #- { key: C, mods: Control, mode: Search, action: SearchCancel } + #- { key: U, mods: Control, mode: Search, action: SearchClear } + #- { key: W, mods: Control, mode: Search, action: SearchDeleteWord } + #- { key: P, mods: Control, mode: Search, action: SearchHistoryPrevious } + #- { key: N, mods: Control, mode: Search, action: SearchHistoryNext } + #- { key: Up, mode: Search, action: SearchHistoryPrevious } + #- { key: Down, mode: Search, action: SearchHistoryNext } + #- { key: Return, mode: Search|~Vi, action: SearchFocusNext } + #- { key: Return, mods: Shift, mode: Search|~Vi, action: SearchFocusPrevious } + + # (Windows, Linux, and BSD only) + #- { key: V, mods: Control|Shift, mode: ~Vi, action: Paste } + #- { key: C, mods: Control|Shift, action: Copy } + #- { key: F, mods: Control|Shift, mode: ~Search, action: SearchForward } + #- { key: B, mods: Control|Shift, mode: ~Search, action: SearchBackward } + #- { key: C, mods: Control|Shift, mode: Vi|~Search, action: ClearSelection } + #- { key: Insert, mods: Shift, action: PasteSelection } + #- { key: Key0, mods: Control, action: ResetFontSize } + #- { key: Equals, mods: Control, action: IncreaseFontSize } + #- { key: Plus, mods: Control, action: IncreaseFontSize } + #- { key: NumpadAdd, mods: Control, action: IncreaseFontSize } + #- { key: Minus, mods: Control, action: DecreaseFontSize } + #- { key: NumpadSubtract, mods: Control, action: DecreaseFontSize } + + # (Windows only) + #- { key: Return, mods: Alt, action: ToggleFullscreen } + + # (macOS only) + #- { key: K, mods: Command, mode: ~Vi|~Search, chars: "\x0c" } + #- { key: K, mods: Command, mode: ~Vi|~Search, action: ClearHistory } + #- { key: Key0, mods: Command, action: ResetFontSize } + #- { key: Equals, mods: Command, action: IncreaseFontSize } + #- { key: Plus, mods: Command, action: IncreaseFontSize } + #- { key: NumpadAdd, mods: Command, action: IncreaseFontSize } + #- { key: Minus, mods: Command, action: DecreaseFontSize } + #- { key: NumpadSubtract, mods: Command, action: DecreaseFontSize } + #- { key: V, mods: Command, action: Paste } + #- { key: C, mods: Command, action: Copy } + #- { key: C, mods: Command, mode: Vi|~Search, action: ClearSelection } + #- { key: H, mods: Command, action: Hide } + #- { key: H, mods: Command|Alt, action: HideOtherApplications } + #- { key: M, mods: Command, action: Minimize } + #- { key: Q, mods: Command, action: Quit } + #- { key: W, mods: Command, action: Quit } + #- { key: N, mods: Command, action: SpawnNewInstance } + #- { key: F, mods: Command|Control, action: ToggleFullscreen } + #- { key: F, mods: Command, mode: ~Search, action: SearchForward } + #- { key: B, mods: Command, mode: ~Search, action: SearchBackward } + +#debug: + # Display the time it takes to redraw each frame. + #render_timer: false + + # Keep the log file after quitting Alacritty. + #persistent_logging: false + + # Log level + # + # Values for `log_level`: + # - Off + # - Error + # - Warn + # - Info + # - Debug + # - Trace + #log_level: Warn + + # Print all received window events. + #print_events: false + + # Highlight window damage information. + #highlight_damage: false diff --git a/dot_config/alacritty/executable_alacritty.yml.old b/dot_config/alacritty/executable_alacritty.yml.old new file mode 100644 index 0000000..2a8a3f2 --- /dev/null +++ b/dot_config/alacritty/executable_alacritty.yml.old @@ -0,0 +1,869 @@ +# Configuration for Alacritty, the GPU enhanced terminal emulator. + +# Any items in the `env` entry below will be added as +# environment variables. Some entries may override variables +# set by alacritty itself. +env: + # TERM variable + # + # This value is used to set the `$TERM` environment variable for + # each instance of Alacritty. If it is not present, alacritty will + # check the local terminfo database and use `alacritty` if it is + # available, otherwise `xterm-256color` is used. + TERM: xterm-256color + +window: + # Window dimensions (changes require restart) + # + # Specified in number of columns/lines, not pixels. + # If both are `0`, this setting is ignored. + #dimensions: + # columns: 0 + # lines: 0 + + # Window position (changes require restart) + # + # Specified in number of pixels. + # If the position is not set, the window manager will handle the placement. + #position: + # x: 0 + # y: 0 + + # Window padding (changes require restart) + # + # Blank space added around the window in pixels. This padding is scaled + # by DPI and the specified value is always added at both opposing sides. + padding: + x: 6 + y: 6 + + # Spread additional padding evenly around the terminal content. + dynamic_padding: false + + # Background opacity + # + # Window opacity as a floating point number from `0.0` to `1.0`. + # The value `0.0` is completely transparent and `1.0` is opaque. + opacity: 1.0 + # opacity: 0.80 + + # Window decorations + # + # Values for `decorations`: + # - full: Borders and title bar + # - none: Neither borders nor title bar + # + # Values for `decorations` (macOS only): + # - transparent: Title bar, transparent background and title bar buttons + # - buttonless: Title bar, transparent background, but no title bar buttons + #decorations: full + + # Startup Mode (changes require restart) + # + # Values for `startup_mode`: + # - Windowed + # - Maximized + # - Fullscreen + # + # Values for `startup_mode` (macOS only): + # - SimpleFullscreen + #startup_mode: Windowed + + # Window title + title: Alacritty + + # Window class (Linux/BSD only): + class: + # Application instance name + instance: Alacritty + # General application class + general: Alacritty + + # GTK theme variant (Linux/BSD only) + # + # Override the variant of the GTK theme. Commonly supported values are `dark` and `light`. + # Set this to `None` to use the default theme variant. + #gtk_theme_variant: None + +scrolling: + # Maximum number of lines in the scrollback buffer. + # Specifying '0' will disable scrolling. + history: 5000 + + # Number of lines the viewport will move for every line scrolled when + # scrollback is enabled (history > 0). + #multiplier: 3 + + # Scroll to the bottom when new text is written to the terminal. + #auto_scroll: false + +# Spaces per Tab (changes require restart) +# +# This setting defines the width of a tab in cells. +# +# Some applications, like Emacs, rely on knowing about the width of a tab. +# To prevent unexpected behavior in these applications, it's also required to +# change the `it` value in terminfo when altering this setting. +#tabspaces: 8 + +# Font configuration +font: + # Normal (roman) font face + normal: + # Font family + # + # Default: + # - (macOS) Menlo + # - (Linux/BSD) monospace + # - (Windows) Consolas + family: Source Code Pro + # family: CodeNewRoman Nerd Font + # family: RobotoMono Nerd Font + # family: Hack + # family: JetBrains Mono + # family: UbuntuMono Nerd Font + # family: Monofur Nerd Font + # family: TerminessTTF Nerd Font + # family: Mononoki Nerd Font + + # The `style` can be specified to pick a specific face. + style: Regular + + # Bold font face + bold: + # Font family + # + # If the bold family is not specified, it will fall back to the + # value specified for the normal font. + family: Source Code Pro + # family: CodeNewRoman Nerd Font + # family: RobotoMono Nerd Font + # family: Hack + # family: JetBrains Mono + # family: UbuntuMono Nerd Font + # family: Monofur Nerd Font + # family: TerminessTTF Nerd Font + # family: Mononoki Nerd Font + + # The `style` can be specified to pick a specific face. + style: Bold + + # Italic font face + italic: + # Font family + # + # If the italic family is not specified, it will fall back to the + # value specified for the normal font. + family: Source Code Pro + # family: CodeNewRoman Nerd Font + # family: RobotoMono Nerd Font + # family: Hack + # family: JetBrains Mono + # family: UbuntuMono Nerd Font + # family: Monofuritalic Nerd Font Mono + # family: TerminessTTF Nerd Font + # family: Mononoki Nerd Font + + # The `style` can be specified to pick a specific face. + style: Italic + + # Bold italic font face + bold_italic: + # Font family + # + # If the bold italic family is not specified, it will fall back to the + # value specified for the normal font. + family: Source Code Pro + # family: CodeNewRoman Nerd Font + # family: RobotoMono Nerd Font + # family: Hack + # family: JetBrains Mono + # family: UbuntuMono Nerd Font + # family: Monofuritalic Nerd Font Mono + # family: TerminessTTF Nerd Font + # family: Mononoki Nerd Font + + # The `style` can be specified to pick a specific face. + style: Bold Italic + + # Point size + size: 12.0 + + # Offset is the extra space around each character. `offset.y` can be thought of + # as modifying the line spacing, and `offset.x` as modifying the letter spacing. + offset: + x: 0 + y: 1 + + # Glyph offset determines the locations of the glyphs within their cells with + # the default being at the bottom. Increasing `x` moves the glyph to the right, + # increasing `y` moves the glyph upwards. + #glyph_offset: + # x: 0 + # y: 0 + + # Thin stroke font rendering (macOS only) + # + # Thin strokes are suitable for retina displays, but for non-retina screens + # it is recommended to set `use_thin_strokes` to `false` + # + # macOS >= 10.14.x: + # + # If the font quality on non-retina display looks bad then set + # `use_thin_strokes` to `true` and enable font smoothing by running the + # following command: + # `defaults write -g CGFontRenderingFontSmoothingDisabled -bool NO` + # + # This is a global setting and will require a log out or restart to take + # effect. + #use_thin_strokes: true + +# If `true`, bold text is drawn using the bright color variants. +draw_bold_text_with_bright_colors: true + +####################################### +## START OF COLOR SCHEMES ## +####################################### +schemes: + ### Doom One ### + DoomOne: &DoomOne + primary: + background: '#282c34' + foreground: '#bbc2cf' + cursor: + text: CellBackground + cursor: '#528bff' + selection: + text: CellForeground + background: '#3e4451' + normal: + black: '#1c1f24' + red: '#ff6c6b' + green: '#98be65' + yellow: '#da8548' + blue: '#51afef' + magenta: '#c678dd' + cyan: '#5699af' + white: '#202328' + bright: + black: '#5b6268' + red: '#da8548' + green: '#4db5bd' + yellow: '#ecbe7b' + blue: '#3071db' # This is 2257a0 in Doom Emacs but I lightened it. + magenta: '#a9a1e1' + cyan: '#46d9ff' + white: '#dfdfdf' + + ### Dracula ### + Dracula: &Dracula + primary: + background: '#282a36' + foreground: '#f8f8f2' + cursor: + text: CellBackground + cursor: CellForeground + vi_mode_cursor: + text: CellBackground + cursor: CellForeground + search: + matches: + foreground: '#44475a' + background: '#50fa7b' + focused_match: + foreground: '#44475a' + background: '#ffb86c' + bar: + background: '#282a36' + foreground: '#f8f8f2' + line_indicator: + foreground: None + background: None + selection: + text: CellForeground + background: '#44475a' + normal: + black: '#000000' + red: '#ff5555' + green: '#50fa7b' + yellow: '#f1fa8c' + blue: '#bd93f9' + magenta: '#ff79c6' + cyan: '#8be9fd' + white: '#bfbfbf' + bright: + black: '#4d4d4d' + red: '#ff6e67' + green: '#5af78e' + yellow: '#f4f99d' + blue: '#caa9fa' + magenta: '#ff92d0' + cyan: '#9aedfe' + white: '#e6e6e6' + dim: + black: '#14151b' + red: '#ff2222' + green: '#1ef956' + yellow: '#ebf85b' + blue: '#4d5b86' + magenta: '#ff46b0' + cyan: '#59dffc' + white: '#e6e6d1' + + ### Gruvbox dark ### + GruvboxDark: &GruvboxDark + # Default colors + primary: + # hard contrast: background = '0x1d2021' + background: '#282828' + # soft contrast: background = '0x32302f' + foreground: '#ebdbb2' + + # Normal colors + normal: + black: '#282828' + red: '#cc241d' + green: '#98971a' + yellow: '#d79921' + blue: '#458588' + magenta: '#b16286' + cyan: '#689d6a' + white: '#a89984' + + # Bright colors + bright: + black: '#928374' + red: '#fb4934' + green: '#b8bb26' + yellow: '#fabd2f' + blue: '#83a598' + magenta: '#d3869b' + cyan: '#8ec07c' + white: '#ebdbb2' + +### Monokai ### + MonokaiPro: &MonokaiPro + # Default colors + primary: + background: '#2D2A2E' + foreground: '#FCFCFA' + + # Normal colors + normal: + black: '#403E41' + red: '#FF6188' + green: '#A9DC76' + yellow: '#FFD866' + blue: '#FC9867' + magenta: '#AB9DF2' + cyan: '#78DCE8' + white: '#FCFCFA' + + # Bright colors + bright: + black: '#727072' + red: '#FF6188' + green: '#A9DC76' + yellow: '#FFD866' + blue: '#FC9867' + magenta: '#AB9DF2' + cyan: '#78DCE8' + white: '#FCFCFA' + + ### Nord ### + Nord: &Nord + # Default colors + primary: + background: '#2E3440' + foreground: '#D8DEE9' + + # Normal colors + normal: + black: '#3B4252' + red: '#BF616A' + green: '#A3BE8C' + yellow: '#EBCB8B' + blue: '#81A1C1' + magenta: '#B48EAD' + cyan: '#88C0D0' + white: '#E5E9F0' + + # Bright colors + bright: + black: '#4C566A' + red: '#BF616A' + green: '#A3BE8C' + yellow: '#EBCB8B' + blue: '#81A1C1' + magenta: '#B48EAD' + cyan: '#8FBCBB' + white: '#ECEFF4' + + ### Oceanic Next ### + OceanicNext: &OceanicNext + # Default colors + primary: + background: '#1b2b34' + foreground: '#d8dee9' + + # Colors the cursor will use if `custom_cursor_colors` is true + cursor: + text: '#1b2b34' + cursor: '#ffffff' + + # Normal colors + normal: + black: '#343d46' + red: '#EC5f67' + green: '#99C794' + yellow: '#FAC863' + blue: '#6699cc' + magenta: '#c594c5' + cyan: '#5fb3b3' + white: '#d8dee9' + + # Bright colors + bright: + black: '#343d46' + red: '#EC5f67' + green: '#99C794' + yellow: '#FAC863' + blue: '#6699cc' + magenta: '#c594c5' + cyan: '#5fb3b3' + white: '#d8dee9' + + ### Palenight ### + Palenight: &Palenight + # Default colors + primary: + background: '#292d3e' + foreground: '#d0d0d0' + + # Normal colors + normal: + black: '#292d3e' + red: '#f07178' + green: '#c3e88d' + yellow: '#ffcb6b' + blue: '#82aaff' + magenta: '#c792ea' + cyan: '#89ddff' + white: '#d0d0d0' + + # Bright colors + bright: + black: '#434758' + red: '#ff8b92' + green: '#ddffa7' + yellow: '#ffe585' + blue: '#9cc4ff' + magenta: '#e1acff' + cyan: '#a3f7ff' + white: '#ffffff' + + ### Solarized Dark ### + SolarizedDark: &SolarizedDark + # Default colors + primary: + background: '#002b36' # base03 + foreground: '#839496' # base0 + + # Cursor colors + cursor: + text: '#002b36' # base03 + cursor: '#839496' # base0 + + # Normal colors + normal: + black: '#073642' # base02 + red: '#dc322f' # red + green: '#859900' # green + yellow: '#b58900' # yellow + blue: '#268bd2' # blue + magenta: '#d33682' # magenta + cyan: '#2aa198' # cyan + white: '#eee8d5' # base2 + + # Bright colors + bright: + black: '#002b36' # base03 + red: '#cb4b16' # orange + green: '#586e75' # base01 + yellow: '#657b83' # base00 + blue: '#839496' # base0 + magenta: '#6c71c4' # violet + cyan: '#93a1a1' # base1 + white: '#fdf6e3' # base3 + + ### Solarized Light ### + SolarizedLight: &SolarizedLight + # Default colors + primary: + background: '#fdf6e3' # base3 + foreground: '#657b83' # base00 + + # Cursor colors + cursor: + text: '#fdf6e3' # base3 + cursor: '#657b83' # base00 + + # Normal colors + normal: + black: '#073642' # base02 + red: '#dc322f' # red + green: '#859900' # green + yellow: '#b58900' # yellow + blue: '#268bd2' # blue + magenta: '#d33682' # magenta + cyan: '#2aa198' # cyan + white: '#eee8d5' # base2 + + # Bright colors + bright: + black: '#002b36' # base03 + red: '#cb4b16' # orange + green: '#586e75' # base01 + yellow: '#657b83' # base00 + blue: '#839496' # base0 + magenta: '#6c71c4' # violet + cyan: '#93a1a1' # base1 + white: '#fdf6e3' # base3 + + ### Tomorrow Night ### + TomorrowNight: &TomorrowNight + # Default colors + primary: + background: '#1d1f21' + foreground: '#c5c8c6' + + # Colors the cursor will use if `custom_cursor_colors` is true + cursor: + text: '#1d1f21' + cursor: '#ffffff' + + # Normal colors + normal: + black: '#1d1f21' + red: '#cc6666' + green: '#b5bd68' + yellow: '#e6c547' + blue: '#81a2be' + magenta: '#b294bb' + cyan: '#70c0ba' + white: '#373b41' + + # Bright colors + bright: + black: '#666666' + red: '#ff3334' + green: '#9ec400' + yellow: '#f0c674' + blue: '#81a2be' + magenta: '#b77ee0' + cyan: '#54ced6' + white: '#282a2e' + +###################################################################### +## SET THEME: Choose ONE color scheme from those in the above list. ## +## ################################################################### +# Available themes are: +# *DoomOne +# *Dracula +# *GruvboxDark +# *MonokaiPro +# *Nord +# *OceanicNext +# *Palenight +# *SolarizedLight +# *SolarizedDark +# *TomorrowNight + +colors: *Dracula + +####################################### +## END OF COLOR SCHEMES ## +####################################### + +# Visual Bell +# +# Any time the BEL code is received, Alacritty "rings" the visual bell. Once +# rung, the terminal background will be set to white and transition back to the +# default background color. You can control the rate of this transition by +# setting the `duration` property (represented in milliseconds). You can also +# configure the transition function by setting the `animation` property. +# +# Values for `animation`: +# - Ease +# - EaseOut +# - EaseOutSine +# - EaseOutQuad +# - EaseOutCubic +# - EaseOutQuart +# - EaseOutQuint +# - EaseOutExpo +# - EaseOutCirc +# - Linear +# +# Specifying a `duration` of `0` will disable the visual bell. +#visual_bell: +# animation: EaseOutExpo +# duration: 0 +# color: '#ffffff' + +selection: + #semantic_escape_chars: ",│`|:\"' ()[]{}<>\t" + + # When set to `true`, selected text will be copied to the primary clipboard. + save_to_clipboard: true + +# Allow terminal applications to change Alacritty's window title. +#dynamic_title: true + +#cursor: + # Cursor style + # + # Values for `style`: + # - ▇ Block + # - _ Underline + # - | Beam + #style: Block + + # If this is `true`, the cursor will be rendered as a hollow box when the + # window is not focused. + #unfocused_hollow: true + +# Live config reload (changes require restart) +#live_config_reload: true + +# Shell +# +# You can set `shell.program` to the path of your favorite shell, e.g. `/bin/fish`. +# Entries in `shell.args` are passed unmodified as arguments to the shell. +# +# Default: +# - (macOS) /bin/bash --login +# - (Linux/BSD) user login shell +# - (Windows) powershell +#shell: +# program: /bin/bash +# args: +# - --login + +# Startup directory +# +# Directory the shell is started in. If this is unset, or `None`, the working +# directory of the parent process will be used. +#working_directory: None + +# WinPTY backend (Windows only) +# +# Alacritty defaults to using the newer ConPTY backend if it is available, +# since it resolves a lot of bugs and is quite a bit faster. If it is not +# available, the the WinPTY backend will be used instead. +# +# Setting this option to `true` makes Alacritty use the legacy WinPTY backend, +# even if the ConPTY backend is available. +#winpty_backend: false + +# Send ESC (\x1b) before characters when alt is pressed. +#alt_send_esc: true + +#debug: + # Display the time it takes to redraw each frame. + #render_timer: false + + # Keep the log file after quitting Alacritty. + #persistent_logging: false + + # Log level + # + # Values for `log_level`: + # - None + # - Error + # - Warn + # - Info + # - Debug + # - Trace + #log_level: Warn + + # Print all received window events. + #print_events: false + + # Record all characters and escape sequences as test data. + #ref_test: false + +#mouse: + # Click settings + # + # The `double_click` and `triple_click` settings control the time + # alacritty should wait for accepting multiple clicks as one double + # or triple click. + #double_click: { threshold: 300 } + #triple_click: { threshold: 300 } + + # If this is `true`, the cursor is temporarily hidden when typing. + #hide_when_typing: false + + #url: + # URL launcher + # + # This program is executed when clicking on a text which is recognized as a URL. + # The URL is always added to the command as the last parameter. + # + # When set to `None`, URL launching will be disabled completely. + # + # Default: + # - (macOS) open + # - (Linux/BSD) xdg-open + # - (Windows) explorer + #launcher: + # program: xdg-open + # args: [] + + # URL modifiers + # + # These are the modifiers that need to be held down for opening URLs when clicking + # on them. The available modifiers are documented in the key binding section. + #modifiers: None + +# Mouse bindings +# +# Mouse bindings are specified as a list of objects, much like the key +# bindings further below. +# +# Each mouse binding will specify a: +# +# - `mouse`: +# +# - Middle +# - Left +# - Right +# - Numeric identifier such as `5` +# +# - `action` (see key bindings) +# +# And optionally: +# +# - `mods` (see key bindings) +#mouse_bindings: +# - { mouse: Middle, action: PasteSelection } + +# Key bindings +# +# Key bindings are specified as a list of objects. For example, this is the +# default paste binding: +# +# `- { key: V, mods: Control|Shift, action: Paste }` +# +# Each key binding will specify a: +# +# - `key`: Identifier of the key pressed +# +# - A-Z +# - F1-F24 +# - Key0-Key9 +# +# A full list with available key codes can be found here: +# https://docs.rs/glutin/*/glutin/event/enum.VirtualKeyCode.html#variants +# +# Instead of using the name of the keys, the `key` field also supports using +# the scancode of the desired key. Scancodes have to be specified as a +# decimal number. This command will allow you to display the hex scancodes +# for certain keys: +# +# `showkey --scancodes`. +# +# Then exactly one of: +# +# - `chars`: Send a byte sequence to the running application +# +# The `chars` field writes the specified string to the terminal. This makes +# it possible to pass escape sequences. To find escape codes for bindings +# like `PageUp` (`"\x1b[5~"`), you can run the command `showkey -a` outside +# of tmux. Note that applications use terminfo to map escape sequences back +# to keys. It is therefore required to update the terminfo when changing an +# escape sequence. +# +# - `action`: Execute a predefined action +# +# - Copy +# - Paste +# - PasteSelection +# - IncreaseFontSize +# - DecreaseFontSize +# - ResetFontSize +# - ScrollPageUp +# - ScrollPageDown +# - ScrollLineUp +# - ScrollLineDown +# - ScrollToTop +# - ScrollToBottom +# - ClearHistory +# - Hide +# - Minimize +# - Quit +# - ToggleFullscreen +# - SpawnNewInstance +# - ClearLogNotice +# - ReceiveChar +# - None +# +# (macOS only): +# - ToggleSimpleFullscreen: Enters fullscreen without occupying another space +# +# - `command`: Fork and execute a specified command plus arguments +# +# The `command` field must be a map containing a `program` string and an +# `args` array of command line parameter strings. For example: +# `{ program: "alacritty", args: ["-e", "vttest"] }` +# +# And optionally: +# +# - `mods`: Key modifiers to filter binding actions +# +# - Command +# - Control +# - Option +# - Super +# - Shift +# - Alt +# +# Multiple `mods` can be combined using `|` like this: +# `mods: Control|Shift`. +# Whitespace and capitalization are relevant and must match the example. +# +# - `mode`: Indicate a binding for only specific terminal reported modes +# +# This is mainly used to send applications the correct escape sequences +# when in different modes. +# +# - AppCursor +# - AppKeypad +# - Alt +# +# A `~` operator can be used before a mode to apply the binding whenever +# the mode is *not* active, e.g. `~Alt`. +# +# Bindings are always filled by default, but will be replaced when a new +# binding with the same triggers is defined. To unset a default binding, it can +# be mapped to the `ReceiveChar` action. Alternatively, you can use `None` for +# a no-op if you do not wish to receive input characters for that binding. +key_bindings: + # (Windows, Linux, and BSD only) + - { key: V, mods: Control|Shift, action: Paste } + - { key: C, mods: Control|Shift, action: Copy } + - { key: Insert, mods: Shift, action: PasteSelection } + - { key: Key0, mods: Control, action: ResetFontSize } + - { key: Equals, mods: Control, action: IncreaseFontSize } + - { key: Plus, mods: Control, action: IncreaseFontSize } + - { key: Minus, mods: Control, action: DecreaseFontSize } + - { key: F11, mods: None, action: ToggleFullscreen } + - { key: Paste, mods: None, action: Paste } + - { key: Copy, mods: None, action: Copy } + - { key: L, mods: Control, action: ClearLogNotice } + - { key: L, mods: Control, chars: "\x0c" } + - { key: PageUp, mods: None, action: ScrollPageUp, mode: ~Alt } + - { key: PageDown, mods: None, action: ScrollPageDown, mode: ~Alt } + - { key: Home, mods: Shift, action: ScrollToTop, mode: ~Alt } + - { key: End, mods: Shift, action: ScrollToBottom, mode: ~Alt } diff --git a/dot_config/dunst/executable_alert.sh b/dot_config/dunst/executable_alert.sh new file mode 100644 index 0000000..1e996b1 --- /dev/null +++ b/dot_config/dunst/executable_alert.sh @@ -0,0 +1,2 @@ +#!/bin/sh +paplay /usr/share/sounds/freedesktop/stereo/message.oga diff --git a/dot_config/dunst/executable_dunstrc b/dot_config/dunst/executable_dunstrc new file mode 100644 index 0000000..d303f39 --- /dev/null +++ b/dot_config/dunst/executable_dunstrc @@ -0,0 +1,440 @@ +# See dunst(5) for all configuration options + +[global] + ### Display ### + + # Which monitor should the notifications be displayed on. + monitor = 0 + + # Display notification on focused monitor. Possible modes are: + # mouse: follow mouse pointer + # keyboard: follow window with keyboard focus + # none: don't follow anything + # + # "keyboard" needs a window manager that exports the + # _NET_ACTIVE_WINDOW property. + # This should be the case for almost all modern window managers. + # + # If this option is set to mouse or keyboard, the monitor option + # will be ignored. + follow = none + + ### Geometry ### + + # dynamic width from 0 to 300 + # width = (0, 300) + # constant width of 300 + width = 600 + + # The maximum height of a single notification, excluding the frame. + height = 300 + + # Position the notification in the top right corner + origin = top-right + + # Offset from the origin + offset = 10x50 + + # Scale factor. It is auto-detected if value is 0. + scale = 0 + + # Maximum number of notification (0 means no limit) + notification_limit = 0 + + ### Progress bar ### + + # Turn on the progess bar. It appears when a progress hint is passed with + # for example dunstify -h int:value:12 + progress_bar = true + + # Set the progress bar height. This includes the frame, so make sure + # it's at least twice as big as the frame width. + progress_bar_height = 10 + + # Set the frame width of the progress bar + progress_bar_frame_width = 1 + + # Set the minimum width for the progress bar + progress_bar_min_width = 150 + + # Set the maximum width for the progress bar + progress_bar_max_width = 600 + + + # Show how many messages are currently hidden (because of + # notification_limit). + indicate_hidden = yes + + # The transparency of the window. Range: [0; 100]. + # This option will only work if a compositing window manager is + # present (e.g. xcompmgr, compiz, etc.). (X11 only) + transparency = 0 + + # Draw a line of "separator_height" pixel height between two + # notifications. + # Set to 0 to disable. + separator_height = 2 + + # Padding between text and separator. + padding = 8 + + # Horizontal padding. + horizontal_padding = 8 + + # Padding between text and icon. + text_icon_padding = 0 + + # Defines width in pixels of frame around the notification window. + # Set to 0 to disable. + frame_width = 3 + + # Defines color of the frame around the notification window. + frame_color = "#2f343f" + + # Define a color for the separator. + # possible values are: + # * auto: dunst tries to find a color fitting to the background; + # * foreground: use the same color as the foreground; + # * frame: use the same color as the frame; + # * anything else will be interpreted as a X color. + separator_color = frame + + # Sort messages by urgency. + sort = yes + + # Don't remove messages, if the user is idle (no mouse or keyboard input) + # for longer than idle_threshold seconds. + # Set to 0 to disable. + # A client can set the 'transient' hint to bypass this. See the rules + # section for how to disable this if necessary + # idle_threshold = 120 + + ### Text ### + + font = pango:System San Francisco Display 12 + + # The spacing between lines. If the height is smaller than the + # font height, it will get raised to the font height. + line_height = 0 + + # Possible values are: + # full: Allow a small subset of html markup in notifications: + # bold + # italic + # strikethrough + # underline + # + # For a complete reference see + # . + # + # strip: This setting is provided for compatibility with some broken + # clients that send markup even though it's not enabled on the + # server. Dunst will try to strip the markup but the parsing is + # simplistic so using this option outside of matching rules for + # specific applications *IS GREATLY DISCOURAGED*. + # + # no: Disable markup parsing, incoming notifications will be treated as + # plain text. Dunst will not advertise that it has the body-markup + # capability if this is set as a global setting. + # + # It's important to note that markup inside the format option will be parsed + # regardless of what this is set to. + markup = full + + # The format of the message. Possible variables are: + # %a appname + # %s summary + # %b body + # %i iconname (including its path) + # %I iconname (without its path) + # %p progress value if set ([ 0%] to [100%]) or nothing + # %n progress value if set without any extra characters + # %% Literal % + # Markup is allowed + format = "%s\n%b" + + # Alignment of message text. + # Possible values are "left", "center" and "right". + alignment = left + + # Vertical alignment of message text and icon. + # Possible values are "top", "center" and "bottom". + vertical_alignment = center + + # Show age of message if message is older than show_age_threshold + # seconds. + # Set to -1 to disable. + show_age_threshold = 60 + + # Specify where to make an ellipsis in long lines. + # Possible values are "start", "middle" and "end". + ellipsize = middle + + # Ignore newlines '\n' in notifications. + ignore_newline = no + + # Stack together notifications with the same content + stack_duplicates = true + + # Hide the count of stacked notifications with the same content + hide_duplicate_count = false + + # Display indicators for URLs (U) and actions (A). + show_indicators = yes + + ### Icons ### + + # Align icons left/right/off + icon_position = left + + # Scale small icons up to this size, set to 0 to disable. Helpful + # for e.g. small files or high-dpi screens. In case of conflict, + # max_icon_size takes precedence over this. + min_icon_size = 0 + + # Scale larger icons down to this size, set to 0 to disable + max_icon_size = 32 + + # Paths to default icons. + icon_path = /usr/share/icons/Adwaita/16x16/status/:/usr/share/icons/Adwaita/16x16/devices/:/usr/share/icons/Adwaita/16x16/legacy/ + + ### History ### + + # Should a notification popped up from history be sticky or timeout + # as if it would normally do. + sticky_history = yes + + # Maximum amount of notifications kept in history + history_length = 20 + + ### Misc/Advanced ### + + # dmenu path. + dmenu = /usr/bin/dmenu -p dunst: + + # Browser for opening urls in context menu. + browser = /usr/bin/xdg-open + + # Always run rule-defined scripts, even if the notification is suppressed + always_run_script = true + + # Define the title of the windows spawned by dunst + title = Dunst + + # Define the class of the windows spawned by dunst + class = Dunst + + # Define the corner radius of the notification window + # in pixel size. If the radius is 0, you have no rounded + # corners. + # The radius will be automatically lowered if it exceeds half of the + # notification height to avoid clipping text and/or icons. + corner_radius = 0 + + # Ignore the dbus closeNotification message. + # Useful to enforce the timeout set by dunst configuration. Without this + # parameter, an application may close the notification sent before the + # user defined timeout. + ignore_dbusclose = false + + ### Wayland ### + # These settings are Wayland-specific. They have no effect when using X11 + + # Uncomment this if you want to let notications appear under fullscreen + # applications (default: overlay) + # layer = top + + # Set this to true to use X11 output on Wayland. + force_xwayland = false + + ### Legacy + + # Use the Xinerama extension instead of RandR for multi-monitor support. + # This setting is provided for compatibility with older nVidia drivers that + # do not support RandR and using it on systems that support RandR is highly + # discouraged. + # + # By enabling this setting dunst will not be able to detect when a monitor + # is connected or disconnected which might break follow mode if the screen + # layout changes. + force_xinerama = false + + ### mouse + + # Defines list of actions for each mouse event + # Possible values are: + # * none: Don't do anything. + # * do_action: Invoke the action determined by the action_name rule. If there is no + # such action, open the context menu. + # * open_url: If the notification has exactly one url, open it. If there are multiple + # ones, open the context menu. + # * close_current: Close current notification. + # * close_all: Close all notifications. + # * context: Open context menu for the notification. + # * context_all: Open context menu for all notifications. + # These values can be strung together for each mouse event, and + # will be executed in sequence. + mouse_left_click = close_current + mouse_middle_click = do_action, close_current + mouse_right_click = close_all + +# Experimental features that may or may not work correctly. Do not expect them +# to have a consistent behaviour across releases. +[experimental] + # Calculate the dpi to use on a per-monitor basis. + # If this setting is enabled the Xft.dpi value will be ignored and instead + # dunst will attempt to calculate an appropriate dpi value for each monitor + # using the resolution and physical size. This might be useful in setups + # where there are multiple screens with very different dpi values. + per_monitor_dpi = false + + +[urgency_low] + # IMPORTANT: colors have to be defined in quotation marks. + # Otherwise the "#" and following would be interpreted as a comment. + background = "#2f343f" + foreground = "#F9FAF9" + timeout = 10 + # Icon for notifications with low urgency, uncomment to enable + #default_icon = /path/to/icon + +[urgency_normal] + background = "#2f343f" + foreground = "#F9FAF9" + timeout = 10 + # Icon for notifications with normal urgency, uncomment to enable + #default_icon = /path/to/icon + +[urgency_critical] + background = "#D62929" + foreground = "#F9FAF9" + frame_color = "#ff0000" + timeout = 0 + # Icon for notifications with critical urgency, uncomment to enable + #default_icon = /path/to/icon + +# Every section that isn't one of the above is interpreted as a rules to +# override settings for certain messages. +# +# Messages can be matched by +# appname (discouraged, see desktop_entry) +# body +# category +# desktop_entry +# icon +# match_transient +# msg_urgency +# stack_tag +# summary +# +# and you can override the +# background +# foreground +# format +# frame_color +# fullscreen +# new_icon +# set_stack_tag +# set_transient +# set_category +# timeout +# urgency +# skip_display +# history_ignore +# action_name +# word_wrap +# ellipsize +# alignment +# +# Shell-like globbing will get expanded. +# +# Instead of the appname filter, it's recommended to use the desktop_entry filter. +# GLib based applications export their desktop-entry name. In comparison to the appname, +# the desktop-entry won't get localized. +# +# SCRIPTING +# You can specify a script that gets run when the rule matches by +# setting the "script" option. +# The script will be called as follows: +# script appname summary body icon urgency +# where urgency can be "LOW", "NORMAL" or "CRITICAL". +# +# NOTE: It might be helpful to run dunst -print in a terminal in order +# to find fitting options for rules. + +# Disable the transient hint so that idle_threshold cannot be bypassed from the +# client +#[transient_disable] +# match_transient = yes +# set_transient = no +# +# Make the handling of transient notifications more strict by making them not +# be placed in history. +#[transient_history_ignore] +# match_transient = yes +# history_ignore = yes + +# fullscreen values +# show: show the notifications, regardless if there is a fullscreen window opened +# delay: displays the new notification, if there is no fullscreen window active +# If the notification is already drawn, it won't get undrawn. +# pushback: same as delay, but when switching into fullscreen, the notification will get +# withdrawn from screen again and will get delayed like a new notification +#[fullscreen_delay_everything] +# fullscreen = delay +#[fullscreen_show_critical] +# msg_urgency = critical +# fullscreen = show + +[play_sound] + summary = "*" + script = ~/.config/dunst/alert.sh + +#[espeak] +# summary = "*" +# script = dunst_espeak.sh + +#[script-test] +# summary = "*script*" +# script = dunst_test.sh + +#[ignore] +# # This notification will not be displayed +# summary = "foobar" +# skip_display = true + +#[history-ignore] +# # This notification will not be saved in history +# summary = "foobar" +# history_ignore = yes + +#[skip-display] +# # This notification will not be displayed, but will be included in the history +# summary = "foobar" +# skip_display = yes + +#[signed_on] +# appname = Pidgin +# summary = "*signed on*" +# urgency = low +# +#[signed_off] +# appname = Pidgin +# summary = *signed off* +# urgency = low +# +#[says] +# appname = Pidgin +# summary = *says* +# urgency = critical +# +#[twitter] +# appname = Pidgin +# summary = *twitter.com* +# urgency = normal +# +#[stack-volumes] +# appname = "some_volume_notifiers" +# set_stack_tag = "volume" +# +# vim: ft=cfg diff --git a/dot_config/executable_gtkrc b/dot_config/executable_gtkrc new file mode 100644 index 0000000..b9d3c64 --- /dev/null +++ b/dot_config/executable_gtkrc @@ -0,0 +1,6 @@ +# erstellt von KDE-Plasma, Mo. Okt. 3 18:08:55 2022 +# +#include "/usr/share/themes/Breeze/gtk-2.0/gtkrc" + +#gtk-theme-name="Breeze" + diff --git a/dot_config/executable_gtkrc-2.0 b/dot_config/executable_gtkrc-2.0 new file mode 100644 index 0000000..8229f0f --- /dev/null +++ b/dot_config/executable_gtkrc-2.0 @@ -0,0 +1,5 @@ +# erstellt von KDE-Plasma, Mo. Okt. 3 18:08:55 2022 +# + +#gtk-alternative-button-order = 1 + diff --git a/dot_config/executable_sway-mimeapps.list b/dot_config/executable_sway-mimeapps.list new file mode 100644 index 0000000..8cab4ad --- /dev/null +++ b/dot_config/executable_sway-mimeapps.list @@ -0,0 +1,5 @@ +[Default Applications] +inode/directory=pcmanfm-qt.desktop +text/x-log=vim.desktop +image/png=lximage-qt.desktop +application/pdf=org.gnome.Evince.desktop diff --git a/dot_config/executable_user-dirs.dirs b/dot_config/executable_user-dirs.dirs new file mode 100644 index 0000000..d68f656 --- /dev/null +++ b/dot_config/executable_user-dirs.dirs @@ -0,0 +1,15 @@ +# This file is written by xdg-user-dirs-update +# If you want to change or add directories, just edit the line you're +# interested in. All local changes will be retained on the next run. +# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped +# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an +# absolute path. No other format is supported. +# +XDG_DESKTOP_DIR="$HOME/" +XDG_DOWNLOAD_DIR="$HOME/Downloads" +XDG_TEMPLATES_DIR="$HOME/Templates" +XDG_PUBLICSHARE_DIR="$HOME/Public" +XDG_DOCUMENTS_DIR="$HOME/Dokumente" +XDG_MUSIC_DIR="$HOME/Musik" +XDG_PICTURES_DIR="$HOME/Bilder" +XDG_VIDEOS_DIR="$HOME/Videos" diff --git a/dot_config/executable_user-dirs.locale b/dot_config/executable_user-dirs.locale new file mode 100644 index 0000000..0a0e2fe --- /dev/null +++ b/dot_config/executable_user-dirs.locale @@ -0,0 +1 @@ +de_DE \ No newline at end of file diff --git a/dot_config/fish/executable_config.fish b/dot_config/fish/executable_config.fish new file mode 100644 index 0000000..3788124 --- /dev/null +++ b/dot_config/fish/executable_config.fish @@ -0,0 +1,17 @@ +alias reboot="sudo systemctl reboot" +alias poweroff="sudo systemctl poweroff" +alias halt="sudo systemctl halt" +alias hibernate="sudo systemctl hibernate" +alias hybrid="sudo systemctl hybrid-sleep" +alias suspend="sudo systemctl suspend" + +function fish_prompt +powerline-shell --shell bare $status +end + +# Start X at login +if status is-login +if test -z "$DISPLAY" -a $XDG_VTNR = 1 +exec startx -- -keeptty +end +end diff --git a/dot_config/fontconfig/executable_fonts.conf b/dot_config/fontconfig/executable_fonts.conf new file mode 100644 index 0000000..48974f8 --- /dev/null +++ b/dot_config/fontconfig/executable_fonts.conf @@ -0,0 +1,27 @@ + + + + + + true + + + false + + + hintnone + + + none + + + false + + + lcdnone + + + 102 + + + diff --git a/dot_config/fontconfig/executable_fonts.conf.back b/dot_config/fontconfig/executable_fonts.conf.back new file mode 100644 index 0000000..61fd59c --- /dev/null +++ b/dot_config/fontconfig/executable_fonts.conf.back @@ -0,0 +1,27 @@ + + + + + + false + + + false + + + hintnone + + + none + + + false + + + lcdnone + + + 102 + + + diff --git a/dot_config/fontconfig/executable_fonts.conf.bak b/dot_config/fontconfig/executable_fonts.conf.bak new file mode 100644 index 0000000..48974f8 --- /dev/null +++ b/dot_config/fontconfig/executable_fonts.conf.bak @@ -0,0 +1,27 @@ + + + + + + true + + + false + + + hintnone + + + none + + + false + + + lcdnone + + + 102 + + + diff --git a/dot_config/gtk-3.0/executable_bookmarks b/dot_config/gtk-3.0/executable_bookmarks new file mode 100644 index 0000000..2abb9f4 --- /dev/null +++ b/dot_config/gtk-3.0/executable_bookmarks @@ -0,0 +1,7 @@ +file:///home/simono41/Bilder Bilder +file:///home/simono41/Dokumente Dokumente +file:///home/simono41/Downloads Downloads +file:///home/simono41/Musik Musik +file:///home/simono41/Public Public +file:///home/simono41/Templates Templates +file:///home/simono41/Videos Videos diff --git a/dot_config/gtk-3.0/executable_colors.css b/dot_config/gtk-3.0/executable_colors.css new file mode 100644 index 0000000..821726e --- /dev/null +++ b/dot_config/gtk-3.0/executable_colors.css @@ -0,0 +1,84 @@ +@define-color borders_breeze #5f6265; +@define-color content_view_bg_breeze #1b1e20; +@define-color error_color_backdrop_breeze #da4453; +@define-color error_color_breeze #da4453; +@define-color error_color_insensitive_backdrop_breeze #592930; +@define-color error_color_insensitive_breeze #592930; +@define-color insensitive_base_color_breeze #1a1d1f; +@define-color insensitive_base_fg_color_breeze #656768; +@define-color insensitive_bg_color_breeze #282c30; +@define-color insensitive_borders_breeze #3a3d41; +@define-color insensitive_fg_color_breeze #6e7173; +@define-color insensitive_selected_bg_color_breeze #282c30; +@define-color insensitive_selected_fg_color_breeze #6e7173; +@define-color insensitive_unfocused_bg_color_breeze #282c30; +@define-color insensitive_unfocused_fg_color_breeze #6e7173; +@define-color insensitive_unfocused_selected_bg_color_breeze #282c30; +@define-color insensitive_unfocused_selected_fg_color_breeze #6e7173; +@define-color link_color_breeze #1d99f3; +@define-color link_visited_color_breeze #9b59b6; +@define-color success_color_backdrop_breeze #27ae60; +@define-color success_color_breeze #27ae60; +@define-color success_color_insensitive_backdrop_breeze #1e4d34; +@define-color success_color_insensitive_breeze #1e4d34; +@define-color theme_base_color_breeze #1b1e20; +@define-color theme_bg_color_breeze #2a2e32; +@define-color theme_button_background_backdrop_breeze #31363b; +@define-color theme_button_background_backdrop_insensitive_breeze #2f3338; +@define-color theme_button_background_insensitive_breeze #2f3338; +@define-color theme_button_background_normal_breeze #31363b; +@define-color theme_button_decoration_focus_backdrop_breeze #3daee9; +@define-color theme_button_decoration_focus_backdrop_insensitive_breeze #335c72; +@define-color theme_button_decoration_focus_breeze #3daee9; +@define-color theme_button_decoration_focus_insensitive_breeze #335c72; +@define-color theme_button_decoration_hover_backdrop_breeze #3daee9; +@define-color theme_button_decoration_hover_backdrop_insensitive_breeze #335c72; +@define-color theme_button_decoration_hover_breeze #3daee9; +@define-color theme_button_decoration_hover_insensitive_breeze #335c72; +@define-color theme_button_foreground_active_backdrop_breeze #fcfcfc; +@define-color theme_button_foreground_active_backdrop_insensitive_breeze #6e7173; +@define-color theme_button_foreground_active_breeze #fcfcfc; +@define-color theme_button_foreground_active_insensitive_breeze #6e7173; +@define-color theme_button_foreground_backdrop_breeze #fcfcfc; +@define-color theme_button_foreground_backdrop_insensitive_breeze #727679; +@define-color theme_button_foreground_insensitive_breeze #727679; +@define-color theme_button_foreground_normal_breeze #fcfcfc; +@define-color theme_fg_color_breeze #fcfcfc; +@define-color theme_header_background_backdrop_breeze #2a2e32; +@define-color theme_header_background_breeze #31363b; +@define-color theme_header_background_light_breeze #2a2e32; +@define-color theme_header_foreground_backdrop_breeze #fcfcfc; +@define-color theme_header_foreground_breeze #fcfcfc; +@define-color theme_header_foreground_insensitive_backdrop_breeze #fcfcfc; +@define-color theme_header_foreground_insensitive_breeze #fcfcfc; +@define-color theme_hovering_selected_bg_color_breeze #3daee9; +@define-color theme_selected_bg_color_breeze #3daee9; +@define-color theme_selected_fg_color_breeze #fcfcfc; +@define-color theme_text_color_breeze #fcfcfc; +@define-color theme_titlebar_background_backdrop_breeze #2a2e32; +@define-color theme_titlebar_background_breeze #31363b; +@define-color theme_titlebar_background_light_breeze #2a2e32; +@define-color theme_titlebar_foreground_backdrop_breeze #fcfcfc; +@define-color theme_titlebar_foreground_breeze #fcfcfc; +@define-color theme_titlebar_foreground_insensitive_backdrop_breeze #fcfcfc; +@define-color theme_titlebar_foreground_insensitive_breeze #fcfcfc; +@define-color theme_unfocused_base_color_breeze #1b1e20; +@define-color theme_unfocused_bg_color_breeze #2a2e32; +@define-color theme_unfocused_fg_color_breeze #fcfcfc; +@define-color theme_unfocused_selected_bg_color_alt_breeze #1f485e; +@define-color theme_unfocused_selected_bg_color_breeze #1f485e; +@define-color theme_unfocused_selected_fg_color_breeze #fcfcfc; +@define-color theme_unfocused_text_color_breeze #fcfcfc; +@define-color theme_unfocused_view_bg_color_breeze #1a1d1f; +@define-color theme_unfocused_view_text_color_breeze #656768; +@define-color theme_view_active_decoration_color_breeze #3daee9; +@define-color theme_view_hover_decoration_color_breeze #3daee9; +@define-color tooltip_background_breeze #31363b; +@define-color tooltip_border_breeze #64686b; +@define-color tooltip_text_breeze #fcfcfc; +@define-color unfocused_borders_breeze #5f6265; +@define-color unfocused_insensitive_borders_breeze #3a3d41; +@define-color warning_color_backdrop_breeze #f67400; +@define-color warning_color_breeze #f67400; +@define-color warning_color_insensitive_backdrop_breeze #633914; +@define-color warning_color_insensitive_breeze #633914; diff --git a/dot_config/gtk-3.0/executable_gtk.css b/dot_config/gtk-3.0/executable_gtk.css new file mode 100644 index 0000000..c9763f7 --- /dev/null +++ b/dot_config/gtk-3.0/executable_gtk.css @@ -0,0 +1 @@ +@import 'colors.css'; \ No newline at end of file diff --git a/dot_config/gtk-3.0/executable_settings-backup.ini b/dot_config/gtk-3.0/executable_settings-backup.ini new file mode 100644 index 0000000..defeabc --- /dev/null +++ b/dot_config/gtk-3.0/executable_settings-backup.ini @@ -0,0 +1,15 @@ +[Settings] +gtk-theme-name=Arc-Darker +gtk-icon-theme-name=Arc +gtk-font-name=Cantarell 11 +gtk-cursor-theme-name=capitaine-cursors +gtk-cursor-theme-size=0 +gtk-toolbar-style=GTK_TOOLBAR_BOTH_HORIZ +gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR +gtk-button-images=0 +gtk-menu-images=0 +gtk-enable-event-sounds=1 +gtk-enable-input-feedback-sounds=1 +gtk-xft-antialias=1 +gtk-xft-hinting=1 +gtk-xft-hintstyle=hintmedium diff --git a/dot_config/gtk-3.0/executable_settings.ini b/dot_config/gtk-3.0/executable_settings.ini new file mode 100644 index 0000000..a583619 --- /dev/null +++ b/dot_config/gtk-3.0/executable_settings.ini @@ -0,0 +1,19 @@ + +# Created by lxqt-config-appearance (DO NOT EDIT!) + +[Settings] +gtk-theme-name=Arc-Dark +gtk-icon-theme-name=Arc +# GTK3 ignores bold or italic attributes. +gtk-font-name=Cantarell 11 +gtk-menu-images=1 +gtk-button-images=1 +gtk-toolbar-style=GTK_TOOLBAR_BOTH_HORIZ +gtk-cursor-theme-name=capitaine-cursors +gtk-cursor-theme-size=24 +gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR +gtk-enable-event-sounds=1 +gtk-enable-input-feedback-sounds=1 +gtk-xft-antialias=1 +gtk-xft-hinting=1 +gtk-xft-hintstyle=hintmedium diff --git a/dot_config/gtk-3.0/executable_settings.ini-1667168286~ b/dot_config/gtk-3.0/executable_settings.ini-1667168286~ new file mode 100644 index 0000000..ff2968c --- /dev/null +++ b/dot_config/gtk-3.0/executable_settings.ini-1667168286~ @@ -0,0 +1,20 @@ +[Settings] +gtk-application-prefer-dark-theme=false +gtk-button-images=1 +gtk-cursor-theme-name=capitaine-cursors +gtk-cursor-theme-size=24 +gtk-decoration-layout=icon:minimize,maximize,close +gtk-enable-animations=true +gtk-enable-event-sounds=1 +gtk-enable-input-feedback-sounds=1 +gtk-font-name=Noto Sans, 10 +gtk-icon-theme-name=Arc +gtk-menu-images=1 +gtk-modules=colorreload-gtk-module +gtk-primary-button-warps-slider=false +gtk-theme-name=Arc-Darker +gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR +gtk-toolbar-style=GTK_TOOLBAR_BOTH_HORIZ +gtk-xft-antialias=1 +gtk-xft-hinting=1 +gtk-xft-hintstyle=hintmedium diff --git a/dot_config/gtk-3.0/executable_settings.ini.old b/dot_config/gtk-3.0/executable_settings.ini.old new file mode 100644 index 0000000..8f2507d --- /dev/null +++ b/dot_config/gtk-3.0/executable_settings.ini.old @@ -0,0 +1,20 @@ +[Settings] +gtk-application-prefer-dark-theme=true +gtk-button-images=1 +gtk-cursor-theme-name=capitaine-cursors +gtk-cursor-theme-size=24 +gtk-decoration-layout=icon:minimize,maximize,close +gtk-enable-animations=true +gtk-enable-event-sounds=1 +gtk-enable-input-feedback-sounds=1 +gtk-font-name=Noto Sans, 10 +gtk-icon-theme-name=Arc +gtk-menu-images=1 +gtk-modules=colorreload-gtk-module +gtk-primary-button-warps-slider=false +gtk-theme-name=Arc-Darker +gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR +gtk-toolbar-style=GTK_TOOLBAR_BOTH_HORIZ +gtk-xft-antialias=1 +gtk-xft-hinting=1 +gtk-xft-hintstyle=hintmedium diff --git a/dot_config/gtk-4.0/executable_settings.ini b/dot_config/gtk-4.0/executable_settings.ini new file mode 100644 index 0000000..c39ede6 --- /dev/null +++ b/dot_config/gtk-4.0/executable_settings.ini @@ -0,0 +1,9 @@ +[Settings] +gtk-application-prefer-dark-theme=true +gtk-cursor-theme-name=breeze_cursors +gtk-cursor-theme-size=24 +gtk-decoration-layout=icon:minimize,maximize,close +gtk-enable-animations=true +gtk-font-name=Noto Sans, 10 +gtk-icon-theme-name=Arc +gtk-primary-button-warps-slider=false diff --git a/dot_config/i3/executable_arch-update b/dot_config/i3/executable_arch-update new file mode 100644 index 0000000..9dfec46 --- /dev/null +++ b/dot_config/i3/executable_arch-update @@ -0,0 +1,123 @@ +#!/usr/bin/env python3 +# +# Copyright (C) 2017 Marcel Patzwahl +# Licensed under the terms of the GNU GPL v3 only. +# +# i3blocks blocklet script to see the available updates of pacman and the AUR +import subprocess +from subprocess import check_output +import argparse +import os +import re + + +def create_argparse(): + def _default(name, default='', arg_type=str): + val = default + if name in os.environ: + val = os.environ[name] + return arg_type(val) + + strbool = lambda s: s.lower() in ['t', 'true', '1'] + strlist = lambda s: s.split() + + parser = argparse.ArgumentParser(description='Check for pacman updates') + parser.add_argument( + '-b', + '--base_color', + default = _default('BASE_COLOR', 'green'), + help='base color of the output(default=green)' + ) + parser.add_argument( + '-u', + '--updates_available_color', + default = _default('UPDATE_COLOR', 'yellow'), + help='color of the output, when updates are available(default=yellow)' + ) + parser.add_argument( + '-a', + '--aur', + action = 'store_const', + const = True, + default = _default('AUR', 'False', strbool), + help='Include AUR packages. Attn: Yaourt must be installed' + ) + parser.add_argument( + '-q', + '--quiet', + action = 'store_const', + const = True, + default = _default('QUIET', 'False', strbool), + help = 'Do not produce output when system is up to date' + ) + parser.add_argument( + '-w', + '--watch', + nargs='*', + default = _default('WATCH', arg_type=strlist), + help='Explicitly watch for specified packages. ' + 'Listed elements are treated as regular expressions for matching.' + ) + return parser.parse_args() + + +def get_updates(): + output = check_output(['checkupdates']).decode('utf-8') + if not output: + return [] + + updates = [line.split(' ')[0] + for line in output.split('\n') + if line] + + return updates + + +def get_aur_updates(): + output = '' + try: + output = check_output(['yaourt', '-Qua']).decode('utf-8') + except subprocess.CalledProcessError as exc: + # yaourt exits with 1 and no output if no updates are available. + # we ignore this case and go on + if not (exc.returncode == 1 and not exc.output): + raise exc + if not output: + return [] + + aur_updates = [line.split(' ')[0] + for line in output.split('\n') + if line.startswith('aur/')] + + return aur_updates + + +def matching_updates(updates, watch_list): + matches = set() + for u in updates: + for w in watch_list: + if re.match(w, u): + matches.add(u) + + return matches + + +message = "{1}" +args = create_argparse() + +updates = get_updates() +if args.aur: + updates += get_aur_updates() + +update_count = len(updates) +if update_count > 0: + info = str(update_count) + ' updates available' + short_info = str(update_count) + ' updates' + matches = matching_updates(updates, args.watch) + if matches: + info += ' [{0}]'.format(', '.join(matches)) + short_info += '*' + print(message.format(args.updates_available_color, info)) + print(message.format(args.updates_available_color, short_info)) +elif not args.quiet: + print(message.format(args.base_color, 'system up to date')) diff --git a/dot_config/i3/executable_backlight_system.sh b/dot_config/i3/executable_backlight_system.sh new file mode 100644 index 0000000..50fd5bd --- /dev/null +++ b/dot_config/i3/executable_backlight_system.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +set -x +if lspci | grep -e VGA -e 3D -m 1 | grep AMD; then echo $1 | sudo tee --append /sys/class/backlight/amdgpu_bl*/brightness; else echo $2 | sudo tee --append /sys/class/backlight/intel_backlight/brightness; fi diff --git a/dot_config/i3/executable_bandwidth b/dot_config/i3/executable_bandwidth new file mode 100644 index 0000000..bcbdb65 --- /dev/null +++ b/dot_config/i3/executable_bandwidth @@ -0,0 +1,112 @@ +#!/bin/bash +# Copyright (C) 2012 Stefan Breunig +# Copyright (C) 2014 kaueraal +# Copyright (C) 2015 Thiago Perrotta + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Get custom IN and OUT labels if provided by command line arguments +while [[ $# -gt 1 ]]; do + key="$1" + case "$key" in + -i|--inlabel) + INLABEL="$2" + shift;; + -o|--outlabel) + OUTLABEL="$2" + shift;; + esac + shift +done + +[[ -z $INLABEL ]] && INLABEL="IN " +[[ -z $OUTLABEL ]] && OUTLABEL="OUT " + +# Use the provided interface, otherwise the device used for the default route. +if [[ -z $INTERFACE ]] && [[ -n $BLOCK_INSTANCE ]]; then + INTERFACE=$BLOCK_INSTANCE +elif [[ -z $INTERFACE ]]; then + INTERFACE=$(ip route | awk '/^default/ { print $5 ; exit }') +fi + +# Exit if there is no default route +[[ -z "$IF" ]] && exit + +# Issue #36 compliant. +if ! [ -e "/sys/class/net/${INTERFACE}/operstate" ] || \ + (! [ "$TREAT_UNKNOWN_AS_UP" = "1" ] && + ! [ "`cat /sys/class/net/${INTERFACE}/operstate`" = "up" ]) +then + echo "$INTERFACE down" + echo "$INTERFACE down" + echo "#FF0000" + exit 0 +fi + +# path to store the old results in +path="/dev/shm/$(basename $0)-${INTERFACE}" + +# grabbing data for each adapter. +read rx < "/sys/class/net/${INTERFACE}/statistics/rx_bytes" +read tx < "/sys/class/net/${INTERFACE}/statistics/tx_bytes" + +# get time +time=$(date +%s) + +# write current data if file does not exist. Do not exit, this will cause +# problems if this file is sourced instead of executed as another process. +if ! [[ -f "${path}" ]]; then + echo "${time} ${rx} ${tx}" > "${path}" + chmod 0666 "${path}" +fi + +# read previous state and update data storage +read old < "${path}" +echo "${time} ${rx} ${tx}" > "${path}" + +# parse old data and calc time passed +old=(${old//;/ }) +time_diff=$(( $time - ${old[0]} )) + +# sanity check: has a positive amount of time passed +[[ "${time_diff}" -gt 0 ]] || exit + +# calc bytes transferred, and their rate in byte/s +rx_diff=$(( $rx - ${old[1]} )) +tx_diff=$(( $tx - ${old[2]} )) +rx_rate=$(( $rx_diff / $time_diff )) +tx_rate=$(( $tx_diff / $time_diff )) + +# shift by 10 bytes to get KiB/s. If the value is larger than +# 1024^2 = 1048576, then display MiB/s instead + +# incoming +echo -n "$INLABEL" +rx_kib=$(( $rx_rate >> 10 )) +if hash bc 2>/dev/null && [[ "$rx_rate" -gt 1048576 ]]; then + printf '%sM' "`echo "scale=1; $rx_kib / 1024" | bc`" +else + echo -n "${rx_kib}K" +fi + +echo -n " " + +# outgoing +echo -n "$OUTLABEL" +tx_kib=$(( $tx_rate >> 10 )) +if hash bc 2>/dev/null && [[ "$tx_rate" -gt 1048576 ]]; then + printf '%sM' "`echo "scale=1; $tx_kib / 1024" | bc`" +else + echo -n "${tx_kib}K" +fi diff --git a/dot_config/i3/executable_batterybar b/dot_config/i3/executable_batterybar new file mode 100644 index 0000000..0308aba --- /dev/null +++ b/dot_config/i3/executable_batterybar @@ -0,0 +1,137 @@ +#!/usr/bin/env bash +# batterybar; displays battery percentage as a bar on i3blocks +# +# Copyright 2015 Keftaa +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1301, USA. +# +# +readarray -t output <<< $(acpi battery) +battery_count=${#output[@]} + +for line in "${output[@]}"; +do + percentages+=($(echo "$line" | grep -o -m1 '[0-9]\{1,3\}%' | tr -d '%')) + statuses+=($(echo "$line" | egrep -o -m1 'Discharging|Charging|AC|Full|Unknown')) + remaining=$(echo "$line" | egrep -o -m1 '[0-9][0-9]:[0-9][0-9]') + if [[ -n $remaining ]]; then + remainings+=(" ($remaining)") + else + remainings+=("") + fi +done + +squares="■" + +#There are 8 colors that reflect the current battery percentage when +#discharging +dis_colors=("${C1:-#FF0027}" "${C2:-#FF3B05}" "${C3:-#FFB923}" + "${C4:-#FFD000}" "${C5:-#E4FF00}" "${C6:-#ADFF00}" + "${C7:-#6DFF00}" "${C8:-#10BA00}") +charging_color="${CHARGING_COLOR:-#00AFE3}" +full_color="${FULL_COLOR:-#FFFFFF}" +ac_color="${AC_COLOR:-#535353}" + + +while getopts 1:2:3:4:5:6:7:8:c:f:a:h opt; do + case "$opt" in + 1) dis_colors[0]="$OPTARG";; + 2) dis_colors[1]="$OPTARG";; + 3) dis_colors[2]="$OPTARG";; + 4) dis_colors[3]="$OPTARG";; + 5) dis_colors[4]="$OPTARG";; + 6) dis_colors[5]="$OPTARG";; + 7) dis_colors[6]="$OPTARG";; + 8) dis_colors[7]="$OPTARG";; + c) charging_color="$OPTARG";; + f) full_color="$OPTARG";; + a) ac_color="$OPTARG";; + h) printf "Usage: batterybar [OPTION] color + When discharging, there are 8 [1-8] levels colors. + You can specify custom colors, for example: + + batterybar -1 red -2 \"#F6F6F6\" -8 green + + You can also specify the colors for the charging, AC and + charged states: + + batterybar -c green -f white -a \"#EEEEEE\"\n"; + exit 0; + esac +done + +end=$(($battery_count - 1)) +for i in $(seq 0 $end); +do + if (( percentages[$i] > 0 && percentages[$i] < 20 )); then + squares="■" + elif (( percentages[$i] >= 20 && percentages[$i] < 40 )); then + squares="■■" + elif (( percentages[$i] >= 40 && percentages[$i] < 60 )); then + squares="■■■" + elif (( percentages[$i] >= 60 && percentages[$i] < 80 )); then + squares="■■■■" + elif (( percentages[$i] >=80 )); then + squares="■■■■■" + fi + + if [[ "${statuses[$i]}" = "Unknown" ]]; then + squares="?$squares" + fi + + case "${statuses[$i]}" in + "Charging") + color="$charging_color" + ;; + "Full") + color="$full_color" + ;; + "AC") + color="$ac_color" + ;; + "Discharging"|"Unknown") + if (( percentages[$i] >= 0 && percentages[$i] < 10 )); then + color="${dis_colors[0]}" + elif (( percentages[$i] >= 10 && percentages[$i] < 20 )); then + color="${dis_colors[1]}" + elif (( percentages[$i] >= 20 && percentages[$i] < 30 )); then + color="${dis_colors[2]}" + elif (( percentages[$i] >= 30 && percentages[$i] < 40 )); then + color="${dis_colors[3]}" + elif (( percentages[$i] >= 40 && percentages[$i] < 60 )); then + color="${dis_colors[4]}" + elif (( percentages[$i] >= 60 && percentages[$i] < 70 )); then + color="${dis_colors[5]}" + elif (( percentages[$i] >= 70 && percentages[$i] < 80 )); then + color="${dis_colors[6]}" + elif (( percentages[$i] >= 80 )); then + color="${dis_colors[7]}" + fi + ;; + esac + + # Print Battery number if there is more than one + if (( $end > 0 )) ; then + message="$message $(($i + 1)):" + fi + + if [[ "$BLOCK_BUTTON" -eq 1 ]]; then + message="$message ${statuses[$i]} ${percentages[$i]}%${remainings[i]}" + fi + message="$message $squares" +done + +echo $message diff --git a/dot_config/i3/executable_calendar b/dot_config/i3/executable_calendar new file mode 100644 index 0000000..4ec7d81 --- /dev/null +++ b/dot_config/i3/executable_calendar @@ -0,0 +1,40 @@ +#! /bin/sh + +WIDTH=${WIDTH:-200} +HEIGHT=${HEIGHT:-200} +DATEFMT=${DATEFMT:-"+%a %d.%m.%Y %H:%M:%S"} +SHORTFMT=${SHORTFMT:-"+%H:%M:%S"} + +OPTIND=1 +while getopts ":f:W:H:" opt; do + case $opt in + f) DATEFMT="$OPTARG" ;; + W) WIDTH="$OPTARG" ;; + H) HEIGHT="$OPTARG" ;; + \?) + echo "Invalid option: -$OPTARG" >&2 + exit 1 + ;; + :) + echo "Option -$OPTARG requires an argument." >&2 + exit 1 + ;; + esac +done + +case "$BLOCK_BUTTON" in + 1|2|3) + + # the position of the upper left corner of the popup + posX=$(($BLOCK_X - $WIDTH / 2)) + posY=$(($BLOCK_Y - $HEIGHT)) + + i3-msg -q "exec yad --calendar \ + --width=$WIDTH --height=$HEIGHT \ + --undecorated --fixed \ + --close-on-unfocus --no-buttons \ + --posx=$posX --posy=$posY \ + > /dev/null" +esac +echo "$LABEL$(date "$DATEFMT")" +echo "$LABEL$(date "$SHORTFMT")" diff --git a/dot_config/i3/executable_compton.conf b/dot_config/i3/executable_compton.conf new file mode 100644 index 0000000..703a8e4 --- /dev/null +++ b/dot_config/i3/executable_compton.conf @@ -0,0 +1,240 @@ +# Thank you code_nomad: http://9m.no/ꪯ鵞 + +################################# +# +# Backend +# +################################# + +# Backend to use: "xrender" or "glx". +# GLX backend is typically much faster but depends on a sane driver. +backend = "glx"; + +################################# +# +# GLX backend +# +################################# + +glx-no-stencil = true; + +# GLX backend: Copy unmodified regions from front buffer instead of redrawing them all. +# My tests with nvidia-drivers show a 10% decrease in performance when the whole screen is modified, +# but a 20% increase when only 1/4 is. +# My tests on nouveau show terrible slowdown. +# Useful with --glx-swap-method, as well. +glx-copy-from-front = false; + +# GLX backend: Use MESA_copy_sub_buffer to do partial screen update. +# My tests on nouveau shows a 200% performance boost when only 1/4 of the screen is updated. +# May break VSync and is not available on some drivers. +# Overrides --glx-copy-from-front. +# glx-use-copysubbuffermesa = true; + +# GLX backend: Avoid rebinding pixmap on window damage. +# Probably could improve performance on rapid window content changes, but is known to break things on some drivers (LLVMpipe). +# Recommended if it works. +# glx-no-rebind-pixmap = true; + + +# GLX backend: GLX buffer swap method we assume. +# Could be undefined (0), copy (1), exchange (2), 3-6, or buffer-age (-1). +# undefined is the slowest and the safest, and the default value. +# copy is fastest, but may fail on some drivers, +# 2-6 are gradually slower but safer (6 is still faster than 0). +# Usually, double buffer means 2, triple buffer means 3. +# buffer-age means auto-detect using GLX_EXT_buffer_age, supported by some drivers. +# Useless with --glx-use-copysubbuffermesa. +# Partially breaks --resize-damage. +# Defaults to undefined. +glx-swap-method = "undefined"; + +################################# +# +# Shadows +# +################################# + +# Enabled client-side shadows on windows. +shadow = true; +# Don't draw shadows on DND windows. +no-dnd-shadow = true; +# Avoid drawing shadows on dock/panel windows. +no-dock-shadow = true; +# Zero the part of the shadow's mask behind the window. Fix some weirdness with ARGB windows. +clear-shadow = true; +# The blur radius for shadows. (default 12) +shadow-radius = 5; +# The left offset for shadows. (default -15) +shadow-offset-x = -5; +# The top offset for shadows. (default -15) +shadow-offset-y = -5; +# The translucency for shadows. (default .75) +shadow-opacity = 0.5; + +# Set if you want different colour shadows +# shadow-red = 0.0; +# shadow-green = 0.0; +# shadow-blue = 0.0; + +# The shadow exclude options are helpful if you have shadows enabled. Due to the way compton draws its shadows, certain applications will have visual glitches +# (most applications are fine, only apps that do weird things with xshapes or argb are affected). +# This list includes all the affected apps I found in my testing. The "! name~=''" part excludes shadows on any "Unknown" windows, this prevents a visual glitch with the XFWM alt tab switcher. +shadow-exclude = [ + "! name~=''", + "name = 'Notification'", + "name = 'Plank'", + "name = 'Docky'", + "name = 'Kupfer'", + "name = 'xfce4-notifyd'", + "name *= 'VLC'", + "name *= 'compton'", + "name *= 'Chromium'", + "name *= 'Chrome'", + "class_g = 'Conky'", + "class_g = 'Kupfer'", + "class_g = 'Synapse'", + "class_g ?= 'Notify-osd'", + "class_g ?= 'Cairo-dock'", + "class_g ?= 'Xfce4-notifyd'", + "class_g ?= 'Xfce4-power-manager'", + "_GTK_FRAME_EXTENTS@:c" +]; +# Avoid drawing shadow on all shaped windows (see also: --detect-rounded-corners) +shadow-ignore-shaped = false; + +################################# +# +# Opacity +# +################################# + +menu-opacity = 1; +inactive-opacity = 1; +active-opacity = 1; +frame-opacity = 1; +inactive-opacity-override = false; +alpha-step = 0.06; + +# Dim inactive windows. (0.0 - 1.0) +# inactive-dim = 0.2; +# Do not let dimness adjust based on window opacity. +# inactive-dim-fixed = true; +# Blur background of transparent windows. Bad performance with X Render backend. GLX backend is preferred. +# blur-background = true; +# Blur background of opaque windows with transparent frames as well. +# blur-background-frame = true; +# Do not let blur radius adjust based on window opacity. +blur-background-fixed = false; +blur-background-exclude = [ + "window_type = 'dock'", + "window_type = 'desktop'" +]; + +################################# +# +# Fading +# +################################# + +# Fade windows during opacity changes. +fading = true; +# The time between steps in a fade in milliseconds. (default 10). +fade-delta = 4; +# Opacity change between steps while fading in. (default 0.028). +fade-in-step = 0.03; +# Opacity change between steps while fading out. (default 0.03). +fade-out-step = 0.03; +# Fade windows in/out when opening/closing +# no-fading-openclose = true; + +# Specify a list of conditions of windows that should not be faded. +fade-exclude = [ ]; + +################################# +# +# Other +# +################################# + +# Try to detect WM windows and mark them as active. +mark-wmwin-focused = true; +# Mark all non-WM but override-redirect windows active (e.g. menus). +mark-ovredir-focused = true; +# Use EWMH _NET_WM_ACTIVE_WINDOW to determine which window is focused instead of using FocusIn/Out events. +# Usually more reliable but depends on a EWMH-compliant WM. +use-ewmh-active-win = true; +# Detect rounded corners and treat them as rectangular when --shadow-ignore-shaped is on. +detect-rounded-corners = true; + +# Detect _NET_WM_OPACITY on client windows, useful for window managers not passing _NET_WM_OPACITY of client windows to frame windows. +# This prevents opacity being ignored for some apps. +# For example without this enabled my xfce4-notifyd is 100% opacity no matter what. +detect-client-opacity = true; + +# Specify refresh rate of the screen. +# If not specified or 0, compton will try detecting this with X RandR extension. +refresh-rate = 0; + +# Set VSync method. VSync methods currently available: +# none: No VSync +# drm: VSync with DRM_IOCTL_WAIT_VBLANK. May only work on some drivers. +# opengl: Try to VSync with SGI_video_sync OpenGL extension. Only work on some drivers. +# opengl-oml: Try to VSync with OML_sync_control OpenGL extension. Only work on some drivers. +# opengl-swc: Try to VSync with SGI_swap_control OpenGL extension. Only work on some drivers. Works only with GLX backend. Known to be most effective on many drivers. Does not actually control paint timing, only buffer swap is affected, so it doesn’t have the effect of --sw-opti unlike other methods. Experimental. +# opengl-mswc: Try to VSync with MESA_swap_control OpenGL extension. Basically the same as opengl-swc above, except the extension we use. +# (Note some VSync methods may not be enabled at compile time.) +vsync = "opengl-swc"; + +# Enable DBE painting mode, intended to use with VSync to (hopefully) eliminate tearing. +# Reported to have no effect, though. +dbe = false; + +# Painting on X Composite overlay window. Recommended. +paint-on-overlay = true; + +# Limit compton to repaint at most once every 1 / refresh_rate second to boost performance. +# This should not be used with --vsync drm/opengl/opengl-oml as they essentially does --sw-opti's job already, +# unless you wish to specify a lower refresh rate than the actual value. +#sw-opti = true; + +# Unredirect all windows if a full-screen opaque window is detected, to maximize performance for full-screen windows, like games. +# Known to cause flickering when redirecting/unredirecting windows. +# paint-on-overlay may make the flickering less obvious. +unredir-if-possible = true; + +# Specify a list of conditions of windows that should always be considered focused. +focus-exclude = [ ]; + +# Use WM_TRANSIENT_FOR to group windows, and consider windows in the same group focused at the same time. +detect-transient = true; +# Use WM_CLIENT_LEADER to group windows, and consider windows in the same group focused at the same time. +# WM_TRANSIENT_FOR has higher priority if --detect-transient is enabled, too. +detect-client-leader = true; + +################################# +# +# Window type settings +# +################################# + +wintypes: +{ + tooltip = + { + # fade: Fade the particular type of windows. + fade = true; + # shadow: Give those windows shadow + shadow = false; + # opacity: Default opacity for the type of windows. + opacity = 0.85; + # focus: Whether to always consider windows of this type focused. + focus = true; + }; +}; + + + +opacity-rule = [ + "0:_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'" +]; diff --git a/dot_config/i3/executable_compton.conf_old b/dot_config/i3/executable_compton.conf_old new file mode 100644 index 0000000..703a8e4 --- /dev/null +++ b/dot_config/i3/executable_compton.conf_old @@ -0,0 +1,240 @@ +# Thank you code_nomad: http://9m.no/ꪯ鵞 + +################################# +# +# Backend +# +################################# + +# Backend to use: "xrender" or "glx". +# GLX backend is typically much faster but depends on a sane driver. +backend = "glx"; + +################################# +# +# GLX backend +# +################################# + +glx-no-stencil = true; + +# GLX backend: Copy unmodified regions from front buffer instead of redrawing them all. +# My tests with nvidia-drivers show a 10% decrease in performance when the whole screen is modified, +# but a 20% increase when only 1/4 is. +# My tests on nouveau show terrible slowdown. +# Useful with --glx-swap-method, as well. +glx-copy-from-front = false; + +# GLX backend: Use MESA_copy_sub_buffer to do partial screen update. +# My tests on nouveau shows a 200% performance boost when only 1/4 of the screen is updated. +# May break VSync and is not available on some drivers. +# Overrides --glx-copy-from-front. +# glx-use-copysubbuffermesa = true; + +# GLX backend: Avoid rebinding pixmap on window damage. +# Probably could improve performance on rapid window content changes, but is known to break things on some drivers (LLVMpipe). +# Recommended if it works. +# glx-no-rebind-pixmap = true; + + +# GLX backend: GLX buffer swap method we assume. +# Could be undefined (0), copy (1), exchange (2), 3-6, or buffer-age (-1). +# undefined is the slowest and the safest, and the default value. +# copy is fastest, but may fail on some drivers, +# 2-6 are gradually slower but safer (6 is still faster than 0). +# Usually, double buffer means 2, triple buffer means 3. +# buffer-age means auto-detect using GLX_EXT_buffer_age, supported by some drivers. +# Useless with --glx-use-copysubbuffermesa. +# Partially breaks --resize-damage. +# Defaults to undefined. +glx-swap-method = "undefined"; + +################################# +# +# Shadows +# +################################# + +# Enabled client-side shadows on windows. +shadow = true; +# Don't draw shadows on DND windows. +no-dnd-shadow = true; +# Avoid drawing shadows on dock/panel windows. +no-dock-shadow = true; +# Zero the part of the shadow's mask behind the window. Fix some weirdness with ARGB windows. +clear-shadow = true; +# The blur radius for shadows. (default 12) +shadow-radius = 5; +# The left offset for shadows. (default -15) +shadow-offset-x = -5; +# The top offset for shadows. (default -15) +shadow-offset-y = -5; +# The translucency for shadows. (default .75) +shadow-opacity = 0.5; + +# Set if you want different colour shadows +# shadow-red = 0.0; +# shadow-green = 0.0; +# shadow-blue = 0.0; + +# The shadow exclude options are helpful if you have shadows enabled. Due to the way compton draws its shadows, certain applications will have visual glitches +# (most applications are fine, only apps that do weird things with xshapes or argb are affected). +# This list includes all the affected apps I found in my testing. The "! name~=''" part excludes shadows on any "Unknown" windows, this prevents a visual glitch with the XFWM alt tab switcher. +shadow-exclude = [ + "! name~=''", + "name = 'Notification'", + "name = 'Plank'", + "name = 'Docky'", + "name = 'Kupfer'", + "name = 'xfce4-notifyd'", + "name *= 'VLC'", + "name *= 'compton'", + "name *= 'Chromium'", + "name *= 'Chrome'", + "class_g = 'Conky'", + "class_g = 'Kupfer'", + "class_g = 'Synapse'", + "class_g ?= 'Notify-osd'", + "class_g ?= 'Cairo-dock'", + "class_g ?= 'Xfce4-notifyd'", + "class_g ?= 'Xfce4-power-manager'", + "_GTK_FRAME_EXTENTS@:c" +]; +# Avoid drawing shadow on all shaped windows (see also: --detect-rounded-corners) +shadow-ignore-shaped = false; + +################################# +# +# Opacity +# +################################# + +menu-opacity = 1; +inactive-opacity = 1; +active-opacity = 1; +frame-opacity = 1; +inactive-opacity-override = false; +alpha-step = 0.06; + +# Dim inactive windows. (0.0 - 1.0) +# inactive-dim = 0.2; +# Do not let dimness adjust based on window opacity. +# inactive-dim-fixed = true; +# Blur background of transparent windows. Bad performance with X Render backend. GLX backend is preferred. +# blur-background = true; +# Blur background of opaque windows with transparent frames as well. +# blur-background-frame = true; +# Do not let blur radius adjust based on window opacity. +blur-background-fixed = false; +blur-background-exclude = [ + "window_type = 'dock'", + "window_type = 'desktop'" +]; + +################################# +# +# Fading +# +################################# + +# Fade windows during opacity changes. +fading = true; +# The time between steps in a fade in milliseconds. (default 10). +fade-delta = 4; +# Opacity change between steps while fading in. (default 0.028). +fade-in-step = 0.03; +# Opacity change between steps while fading out. (default 0.03). +fade-out-step = 0.03; +# Fade windows in/out when opening/closing +# no-fading-openclose = true; + +# Specify a list of conditions of windows that should not be faded. +fade-exclude = [ ]; + +################################# +# +# Other +# +################################# + +# Try to detect WM windows and mark them as active. +mark-wmwin-focused = true; +# Mark all non-WM but override-redirect windows active (e.g. menus). +mark-ovredir-focused = true; +# Use EWMH _NET_WM_ACTIVE_WINDOW to determine which window is focused instead of using FocusIn/Out events. +# Usually more reliable but depends on a EWMH-compliant WM. +use-ewmh-active-win = true; +# Detect rounded corners and treat them as rectangular when --shadow-ignore-shaped is on. +detect-rounded-corners = true; + +# Detect _NET_WM_OPACITY on client windows, useful for window managers not passing _NET_WM_OPACITY of client windows to frame windows. +# This prevents opacity being ignored for some apps. +# For example without this enabled my xfce4-notifyd is 100% opacity no matter what. +detect-client-opacity = true; + +# Specify refresh rate of the screen. +# If not specified or 0, compton will try detecting this with X RandR extension. +refresh-rate = 0; + +# Set VSync method. VSync methods currently available: +# none: No VSync +# drm: VSync with DRM_IOCTL_WAIT_VBLANK. May only work on some drivers. +# opengl: Try to VSync with SGI_video_sync OpenGL extension. Only work on some drivers. +# opengl-oml: Try to VSync with OML_sync_control OpenGL extension. Only work on some drivers. +# opengl-swc: Try to VSync with SGI_swap_control OpenGL extension. Only work on some drivers. Works only with GLX backend. Known to be most effective on many drivers. Does not actually control paint timing, only buffer swap is affected, so it doesn’t have the effect of --sw-opti unlike other methods. Experimental. +# opengl-mswc: Try to VSync with MESA_swap_control OpenGL extension. Basically the same as opengl-swc above, except the extension we use. +# (Note some VSync methods may not be enabled at compile time.) +vsync = "opengl-swc"; + +# Enable DBE painting mode, intended to use with VSync to (hopefully) eliminate tearing. +# Reported to have no effect, though. +dbe = false; + +# Painting on X Composite overlay window. Recommended. +paint-on-overlay = true; + +# Limit compton to repaint at most once every 1 / refresh_rate second to boost performance. +# This should not be used with --vsync drm/opengl/opengl-oml as they essentially does --sw-opti's job already, +# unless you wish to specify a lower refresh rate than the actual value. +#sw-opti = true; + +# Unredirect all windows if a full-screen opaque window is detected, to maximize performance for full-screen windows, like games. +# Known to cause flickering when redirecting/unredirecting windows. +# paint-on-overlay may make the flickering less obvious. +unredir-if-possible = true; + +# Specify a list of conditions of windows that should always be considered focused. +focus-exclude = [ ]; + +# Use WM_TRANSIENT_FOR to group windows, and consider windows in the same group focused at the same time. +detect-transient = true; +# Use WM_CLIENT_LEADER to group windows, and consider windows in the same group focused at the same time. +# WM_TRANSIENT_FOR has higher priority if --detect-transient is enabled, too. +detect-client-leader = true; + +################################# +# +# Window type settings +# +################################# + +wintypes: +{ + tooltip = + { + # fade: Fade the particular type of windows. + fade = true; + # shadow: Give those windows shadow + shadow = false; + # opacity: Default opacity for the type of windows. + opacity = 0.85; + # focus: Whether to always consider windows of this type focused. + focus = true; + }; +}; + + + +opacity-rule = [ + "0:_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'" +]; diff --git a/dot_config/i3/executable_config b/dot_config/i3/executable_config new file mode 100644 index 0000000..eb162e2 --- /dev/null +++ b/dot_config/i3/executable_config @@ -0,0 +1,657 @@ +# +#====================== OLD COLOR SCHME +set $foreground #eceff1 +set $background #263238 +set $color0 #263238 +set $color8 #37474f +set $color1 #ff9800 +set $color9 #ffa74d +set $color2 #8bc34a +set $color10 #9ccc65 +set $color3 #ffc107 +set $color11 #ffa000 +set $color4 #03a9f4 +set $color12 #81d4fa +set $color5 #ea427b +set $color13 #ad1457 +set $color6 #009688 +set $color14 #26a69a +set $color7 #cfd8dc +set $color15 #eceff1 +set $transparent #000000FF + + + +set $FOCUS #18A4DB +set $UNFOCUS #127196 +set $BORDERF #00c3FF +set $BORDERU #00245E + +# This file has been auto-generated by i3-config-wizard(1). +# It will not be overwritten, so edit it as you like. +# +# Should you change your keyboard layout some time, delete +# this file and re-run i3-config-wizard(1). +# + +# xmodmap -pke +# xev + +# i3 config file (v4) +# +# Please see https://i3wm.org/docs/userguide.html for a complete reference! + +set $mod Mod1 + +# Font for window titles. Will also be used by the bar unless a different font +# is used in the bar {} block below. +#font pango:Noto Sans Bold 9 +#font pango:Droid Sans 9 +#font pango:FontAwesome 8, pango: Droid Sans Mono 8 +font pango:System San Francisco Display 10 +#font pango:System San Francisco Display 6 +#font pango:monospace 8 + +# This font is widely installed, provides lots of unicode glyphs, right-to-left +# text rendering and scalability on retina/hidpi displays (thanks to pango). +#font pango:DejaVu Sans Mono 8 + +# Before i3 v4.8, we used to recommend this one as the default: +# font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1 +# The font above is very space-efficient, that is, it looks good, sharp and +# clear in small sizes. However, its unicode glyph coverage is limited, the old +# X core fonts rendering does not support right-to-left and this being a bitmap +# font, it doesn’t scale on retina/hidpi displays. + +# Use Mouse+$mod to drag floating windows to their wanted position +floating_modifier $mod + +workspace_auto_back_and_forth yes +force_display_urgency_hint 0 ms +focus_on_window_activation urgent + +# start a terminal +bindsym $mod+Return exec alacritty + +# kill focused window +bindsym $mod+Shift+q kill + +# Menu +#bindsym $mod+d exec rofi -show run -lines 3 -bw 1 -font "Cantarell 18" -opacity "75" +bindsym $mod+d exec rofi -show run -lines 3 -eh 2 -width 100 -padding 150 -markup -opacity "85" -bw 0 -bc "#2f343f" -bg "#2f343f" -fg "#f3f4f5" -hlbg "#2f343f" -hlfg "#9575cd" -font "Droid Sans 18" -theme Arc-Dark +#bindsym $mod+d exec rofi -show run -lines 3 -eh 2 -width 100 -padding 800 -opacity "85" -bw 0 -bc "$bg-color" -bg "$bg-color" -fg "$text-color" -hlbg "$bg-color" -hlfg "#9575cd" -font "System San Francisco Display 18" + +#bindsym $mod+d exec --no-startup-id i3-dmenu-desktop --dmenu='rofi -i -dmenu -font "snap 12" -bg "#222222" -fg "#888888" -hlbg "#285577" -hlfg "#ffffff" -opacity 90 -m 0 -location 2' + +# start dmenu (a program launcher) +#bindsym $mod+d exec dmenu_run +# There also is the (new) i3-dmenu-desktop which only displays applications +# shipping a .desktop file. It is a wrapper around dmenu, so you need that +# installed. +bindsym $mod+shift+d exec --no-startup-id i3-dmenu-desktop + +# change focus +bindsym $mod+j focus left +bindsym $mod+k focus down +bindsym $mod+l focus up +bindsym $mod+odiaeresis focus right + +# alternatively, you can use the cursor keys: +bindsym $mod+Left focus left +bindsym $mod+Down focus down +bindsym $mod+Up focus up +bindsym $mod+Right focus right + +# move focused window +bindsym $mod+Shift+j move left +bindsym $mod+Shift+k move down +bindsym $mod+Shift+l move up +bindsym $mod+Shift+odiaeresis move right + +# alternatively, you can use the cursor keys: +bindsym $mod+Shift+Left move left +bindsym $mod+Shift+Down move down +bindsym $mod+Shift+Up move up +bindsym $mod+Shift+Right move right + +# split in horizontal orientation +bindsym $mod+h split h + +# split in vertical orientation +bindsym $mod+v split v + +# enter fullscreen mode for the focused container +bindsym $mod+f fullscreen toggle + +# change container layout (stacked, tabbed, toggle split) +bindsym $mod+s layout stacking +bindsym $mod+w layout tabbed +bindsym $mod+e layout toggle split + +# toggle tiling / floating +bindsym $mod+Shift+space floating toggle + +# change focus between tiling / floating windows +bindsym $mod+space focus mode_toggle + +# focus the parent container +bindsym $mod+a focus parent + +# focus the child container +#bindsym $mod+d focus child + +# Define names for default workspaces for which we configure key bindings later on. +# We use variables to avoid repeating the names in multiple places. +set $ws1 "1: Terminals " +set $ws2 "2: Browser " +set $ws3 "3: Mail " +set $ws4 "4: Office " +set $ws5 "5: Music " +set $ws6 "6: Speakprogram " +set $ws7 "7: IDE " +set $ws8 "8: Steam " +set $ws9 "9: Chat " +set $ws10 "10: Others " + +# setting good windows settings for my programms +# xwininfo -tree -root +for_window [class="Alacritty"] move --no-auto-back-and-forth to workspace $ws1 +for_window [class="firefox"] move --no-auto-back-and-forth to workspace $ws2 +for_window [class="Thunderbird"] move --no-auto-back-and-forth to workspace $ws3 +for_window [class="vlc"] move --no-auto-back-and-forth to workspace $ws5 +for_window [class="libreoffice"] move --no-auto-back-and-forth to workspace $ws4 +for_window [class="WPS Writer"] move --no-auto-back-and-forth to workspace $ws4 +for_window [class="WPS PDF"] move --no-auto-back-and-forth to workspace $ws4 +for_window [class="WPS Presentation"] move --no-auto-back-and-forth to workspace $ws4 +for_window [class="WPS Spreadsheets"] move --no-auto-back-and-forth to workspace $ws4 +for_window [class="VLC media player"] move --no-auto-back-and-forth to workspace $ws5 +for_window [class="Mixxx"] move --no-auto-back-and-forth to workspace $ws5 +for_window [class="Spotify"] move --no-auto-back-and-forth to workspace $ws5 +for_window [class="TeamSpeak 3"] move --no-auto-back-and-forth to workspace $ws6 +for_window [class="Mumble"] move --no-auto-back-and-forth to workspace $ws6 +for_window [class="discord"] move --no-auto-back-and-forth to workspace $ws6 +for_window [class="Eclipse"] move --no-auto-back-and-forth to workspace $ws7 +for_window [class="Intellij"] move --no-auto-back-and-forth to workspace $ws7 +for_window [class="jetbrains-idea"] move --no-auto-back-and-forth to workspace $ws7 +for_window [class="jetbrains-studio"] move --no-auto-back-and-forth to workspace $ws7 +for_window [class="Steam"] move --no-auto-back-and-forth to workspace $ws8 +for_window [class="Telegram"] move --no-auto-back-and-forth to workspace $ws9 +for_window [class="Element"] move --no-auto-back-and-forth to workspace $ws9 +for_window [class="Quassel IRC"] move --no-auto-back-and-forth to workspace $ws9 + +# switch to workspace +bindsym $mod+1 workspace $ws1 +bindsym $mod+2 workspace $ws2 +bindsym $mod+3 workspace $ws3 +bindsym $mod+4 workspace $ws4 +bindsym $mod+5 workspace $ws5 +bindsym $mod+6 workspace $ws6 +bindsym $mod+7 workspace $ws7 +bindsym $mod+8 workspace $ws8 +bindsym $mod+9 workspace $ws9 +bindsym $mod+0 workspace $ws10 + +# move focused container to workspace +bindsym $mod+Shift+1 move container to workspace $ws1 +bindsym $mod+Shift+2 move container to workspace $ws2 +bindsym $mod+Shift+3 move container to workspace $ws3 +bindsym $mod+Shift+4 move container to workspace $ws4 +bindsym $mod+Shift+5 move container to workspace $ws5 +bindsym $mod+Shift+6 move container to workspace $ws6 +bindsym $mod+Shift+7 move container to workspace $ws7 +bindsym $mod+Shift+8 move container to workspace $ws8 +bindsym $mod+Shift+9 move container to workspace $ws9 +bindsym $mod+Shift+0 move container to workspace $ws10 + +# reload the configuration file +bindsym $mod+Shift+c reload +# restart i3 inplace (preserves your layout/session, can be used to upgrade i3) +bindsym $mod+Shift+r restart +# exit i3 (logs you out of your X session) +bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'" + +# resize window (you can also use the mouse for that) +mode "resize" { + # These bindings trigger as soon as you enter the resize mode + + # Pressing left will shrink the window’s width. + # Pressing right will grow the window’s width. + # Pressing up will shrink the window’s height. + # Pressing down will grow the window’s height. + bindsym j resize shrink width 10 px or 10 ppt + bindsym k resize grow height 10 px or 10 ppt + bindsym l resize shrink height 10 px or 10 ppt + bindsym odiaeresis resize grow width 10 px or 10 ppt + + # same bindings, but for the arrow keys + bindsym Left resize shrink width 10 px or 10 ppt + bindsym Down resize grow height 10 px or 10 ppt + bindsym Up resize shrink height 10 px or 10 ppt + bindsym Right resize grow width 10 px or 10 ppt + + # back to normal: Enter or Escape or $mod+r + bindsym Return mode "default" + bindsym Escape mode "default" + bindsym $mod+r mode "default" +} + +bindsym $mod+r mode "resize" + +set $bg-color #2f343f +set $inactive-bg-color #2f343f +set $text-color #f3f4f5 +set $inactive-text-color #676E7D +set $urgent-bg-color #E53935 + +# window colors +# border background text indicator +client.focused $bg-color $bg-color $text-color #00ff00 +client.unfocused $inactive-bg-color $inactive-bg-color $inactive-text-color #00ff00 +client.focused_inactive $inactive-bg-color $inactive-bg-color $inactive-text-color #00ff00 +client.urgent $urgent-bg-color $urgent-bg-color $text-color #00ff00 + +# Start i3bar to display a workspace bar (plus the system information i3status +# finds out, if available) + +#client.focused #81a2be #81a2be #1d1f21 #282a2e +#client.focused_inactive #373b41 #373b41 #969896 #282a2e +#client.unfocused #282a2e #282a2e #969896 #282a2e +#client.urgent #373b41 #cc6666 #ffffff #cc6666 + +# Status-Bar +#exec_always --no-startup-id $HOME/.config/polybar/launch.sh --cuts + +bar { + font pango:System San Francisco Display, FontAwesome 12 + position top + status_command i3status-rs ~/.config/i3status-rust/config.toml + colors { + #separator #666666 + #background #222222 + #statusline #dddddd + #focused_workspace #0088CC #0088CC #ffffff + #active_workspace #333333 #333333 #ffffff + #inactive_workspace #333333 #333333 #888888 + #urgent_workspace #2f343a #900000 #ffffff + + #background #eceff1 + background $bg-color + statusline #263238 + #separator #556270 + separator #757575 + + #colors outline background number + #focused_workspace $color6 $color6 $color15 + active_workspace $color6 $color6 $color15 + #inactive_workspace $color7 $color7 $color6 + #urgent_workspace $color13 $color13 $color15 + + focused_workspace $bg-color $bg-color $text-color + inactive_workspace $inactive-bg-color $inactive-bg-color $inactive-text-color + urgent_workspace $urgent-bg-color $urgent-bg-color $text-color + } +} + +# Benutzerdefiniert + +# Fenster zu einem Scratchpad +bindsym $mod+Shift+minus move scratchpad +# Zeige das scratcpad window +bindsym $mod+minus scratchpad show + +# Starte Programme über Tastaurkombination + +# Press $mod+o followed by either f to launch firefox, +# Escape or Return to the default mode, respectively. +set $mode_launcher Launch: [f]irefox [t]hunderbird [p]avucontrol [a]randr file[m]anager +bindsym $mod+o mode "$mode_launcher" + +mode "$mode_launcher" { + bindsym f exec firefox + bindsym t exec thunderbird + bindsym p exec pavucontrol + bindsym a exec arandr + bindsym m exec pcmanfm + + bindsym Escape mode "default" + bindsym Return mode "default" +} + +bindsym $mod+b exec firefox +bindsym $mod+t exec pcmanfm +bindsym $mod+shift+t exec thunderbird +bindsym $mod+n exec alacritty -e nmtui + +bindsym $mod+y exec clipmenu +bindsym $mod+shift+y exec passdmenu -P -x clipboard + +#bindsym $mod+o exec termite -e /usr/bin/alsamixer +#bindsym $mod+y exec alacritty -e ncmpcpp + +# Alsa-Steuerung & Lautstärke einstellen +#bindsym $mod+i exec amixer set Speaker 5%+ +#bindsym $mod+u exec amixer set Speaker 5%- +bindsym $mod+i exec pamixer --allow-boost -i 5 +bindsym $mod+shift+i exec pamixer --allow-boost -d 5 +bindsym $mod+shift+v exec "if pamixer --get-mute; then pamixer --unmute; else pamixer --mute; fi" +#bindsym $mod+shift+v exec amixer set Speaker toggle +#bindsym $mod+shift+h exec amixer set Capture toggle + +# https://i3wm.org/docs/userguide.html#assign_workspace +# xprop + +# Einstellungen für spezielle Programme (exact match instead of substring) +for_window [class="(?i)vlc"] floating disable border none +for_window [class="(?i)virtualbox"] floating enable border normal +for_window [class="(?i)claws-mail"] floating enable border normal +for_window [class="mplayer"] floating disable border none +for_window [title="Wicd"] floating enable border normal +for_window [title="galculator"] floating enable border normal +for_window [title="Verbindungsinformationen"] floating enable border normal +for_window [title="Lautstärkeregler"] floating enable border normal +for_window [title="Freundesliste"] floating enable border normal + +# Einstellungen Fensterverhalten für bestimmte Programme im Terminal +for_window [class="Alpine"] floating enable border none +for_window [class="calcurse"] floating enable border none +for_window [class="newsbeuter"] floating enable border none +for_window [class="weechat"] floating enable border none + +# Starter für Progs im Terminal +bindsym $mod+F1 exec alacritty -e arch-install +bindsym $mod+F2 exec alacritty -e htop + +# assign special properties +for_window [class="^Pavucontrol$"] floating enable +for_window [title="MonoDevelop External Console"] floating enable +for_window [class="^Shutter$"] floating enable +# Enables floating windows of the chrome extension "Videostream for Chromecast" +for_window [instance="^crx_cnciopoikihiagdjbjpnocolokfelagl$"] floating enable +# The Chrome "Page Unresponsive" dialog is not floating... +for_window [title="Page Unresponsive"] floating enable +# Share your screen from Google Cast extension +for_window [title="Share your screen - Google Cast"] floating enable +# TeamSpeak new features window +for_window [class="^TeamSpeak 3$" title="^New TeamSpeak Features"] floating enable +# Android Device Monitor startup window +for_window [class="^Monitor$" instance="^Monitor$" title="^Monitor$"] floating enable +# chromeIPass "No logins found." window +for_window [title="^chromeIPass$"] floating enable + +# Jetbrains +for_window [class="^com-intellij-updater-Runner$" title="^Update$"] floating enable +for_window [instance="^sun-awt-X11-XDialogPeer$" title="^Complete Installation$"] floating enable + +# Unity +for_window [class="^Unity$" title="^Starting Unity...$"] floating enable +for_window [class="^Unity$" title="^Hold On$"] floating enable +for_window [class="^Unity$" title="^Preparing Package$"] floating enable +for_window [class="^Unity$" title="^Importing Package$"] floating enable + +# https://github.com/ValveSoftware/steam-for-linux/issues/1040 +for_window [class="^Steam$" title="*"] floating enable +for_window [class="^Steam$" title="*"] resize set 480 640 +# Main Window +for_window [class="^Steam$" title="^Steam$"] floating disable +#for_window [class="^Steam$" title="^Friends$"] floating enable +#for_window [class="^Steam$" title="Steam - News"] floating enable +#for_window [class="^Steam$" title=".* - Chat"] floating enable +#for_window [class="^Steam$" title="^Settings$"] floating enable +#for_window [class="^Steam$" title=".* - event started"] floating enable +#for_window [class="^Steam$" title=".* CD key"] floating enable +#for_window [class="^Steam$" title="^Steam - Self Updater$"] floating enable +#for_window [class="^Steam$" title="^Screenshot Uploader$"] floating enable +#for_window [class="^Steam$" title="^Steam Guard - Computer Authorization Required$"] floating enable +#for_window [class="^Steam$" title="Steam-Bibliotheksordner$"] floating enable +#for_window [class="^Steam$" title="Neuen Steam-Bibliotheksordner auswählen oder erstellen:$"] floating enable +#for_window [class="^Steam$" title="Freundesliste"] floating enable +#for_window [title="^Steam Keyboard$"] floating enable + +# There is no specific property for windows that should be floating (eg. the WM_NAME is the device name (PC1)) +for_window [class="^PacketTracer6$"] floating enable +for_window [class="^PacketTracer6$" title="PT Activity"] floating disable +for_window [class="^PacketTracer6$" title="Cisco Packet Tracer"] floating disable + + +# Alsa-Steuerung & Lautstärke einstellen +bindsym XF86AudioRaiseVolume exec pamixer --allow-boost -i 5 +bindsym XF86AudioLowerVolume exec pamixer --allow-boost -d 5 +bindsym XF86AudioMute exec "if pamixer --get-mute; then pamixer --unmute; else pamixer --mute; fi" +bindsym XF86AudioMicMute exec amixer set Capture toggle +#bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume 0 +5% #increase sound volume +#bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume 0 -5% #decrease sound volume +#bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute 0 toggle # mute sound + +# Steuerung der Helligkeit +#bindsym XF86MonBrightnessUp exec xbacklight +10 +#bindsym XF86MonBrightnessDown exec xbacklight -10 +#bindsym XF86MonBrightnessUp exec xbacklight -inc 20 # increase screen brightness +#bindsym XF86MonBrightnessDown exec xbacklight -dec 20 # decrease screen brightness +bindsym XF86MonBrightnessUp exec "if lspci | grep -e VGA -e 3D -m 1 | grep AMD; then expr $(cat /sys/class/backlight/amdgpu_bl*/brightness) + 20 | sudo tee --append /sys/class/backlight/amdgpu_bl*/brightness; else expr $(cat /sys/class/backlight/intel_backlight/brightness) + 100 | sudo tee --append /sys/class/backlight/intel_backlight/brightness; fi" +bindsym XF86MonBrightnessDown exec "if lspci | grep -e VGA -e 3D -m 1 | grep AMD; then expr $(cat /sys/class/backlight/amdgpu_bl*/brightness) - 20 | sudo tee --append /sys/class/backlight/amdgpu_bl*/brightness; else expr $(cat /sys/class/backlight/intel_backlight/brightness) - 100 | sudo tee --append /sys/class/backlight/intel_backlight/brightness; fi" + + +# Touchpad controls +bindsym XF86TouchpadToggle exec /usr/bin/touchpad_toggle # toggle touchpad + +# Media player controls +bindsym XF86AudioPlay exec playerctl play +bindsym XF86AudioPause exec playerctl pause +bindsym XF86AudioNext exec playerctl next +bindsym XF86AudioPrev exec playerctl previous + +# monitor-picture +bindsym $mod+shift+p exec scrot -e 'mv $f ~/Bilder/' --silent --quality 50 +#bindsym a+Print exec scrot -u -e 'mv $f ~/Bilder/' --silent --quality 50 +bindsym $mod+p exec sleep 1 && scrot --select -e 'mv $f ~/Bilder/' --quality 50 + +# Power control script - a useful replacement for the normal i3 exiting keybind. +# https://wiki.archlinux.org/index.php/i3#Shutdown.2C_reboot.2C_lock_screen +set $mode_system System (1) lock, (e) logout, (s) suspend, (h) hibernate, (r) reboot, (d) shutdown +mode "$mode_system" { + bindsym 1 exec --no-startup-id ~/scripte/i3exit lock, mode "default" + bindsym e exec --no-startup-id ~/scripte/i3exit logout, mode "default" + bindsym s exec --no-startup-id ~/scripte/i3exit suspend, mode "default" + bindsym h exec --no-startup-id ~/scripte/i3exit hibernate, mode "default" + bindsym r exec --no-startup-id ~/scripte/i3exit reboot, mode "default" + bindsym d exec --no-startup-id ~/scripte/i3exit shutdown, mode "default" + # back to normal: Enter or Escape + bindsym Return mode "default" + bindsym Escape mode "default" +} +bindsym $mod+x mode "$mode_system" + +set $backlight_system Brightness (1) 10%, (2) 20%, (3) 30%, (4) 40%, (5) 50%, (6) 60%, (7) 70%, (8) 80%, (9) 100%, (0) 0% +mode "$backlight_system" { + bindsym 1 exec "~/.config/i3/backlight_system.sh 50 500" + bindsym 2 exec "~/.config/i3/backlight_system.sh 75 700" + bindsym 3 exec "~/.config/i3/backlight_system.sh 100 900" + bindsym 4 exec "~/.config/i3/backlight_system.sh 125 1100" + bindsym 5 exec "~/.config/i3/backlight_system.sh 150 1300" + bindsym 6 exec "~/.config/i3/backlight_system.sh 175 1500" + bindsym 7 exec "~/.config/i3/backlight_system.sh 200 1700" + bindsym 8 exec "~/.config/i3/backlight_system.sh 225 1900" + bindsym 9 exec "~/.config/i3/backlight_system.sh 255 2100" + bindsym 0 exec "~/.config/i3/backlight_system.sh 0 0" + # back to normal: Enter or Escape + bindsym Return mode "default" + bindsym Escape mode "default" +} +bindsym $mod+m mode "$backlight_system" + +set $hue_light Phillips-Hue Light (1) 10%, (2) 20%, (3) 30%, (4) 40%, (5) 50%, (6) 60%, (7) 70%, (8) 80%, (9) 100%, (0) 0% +mode "$hue_light" { + bindsym 1 exec "~/.config/i3/hui_light.sh true 50" + bindsym 2 exec "~/.config/i3/hui_light.sh true 75" + bindsym 3 exec "~/.config/i3/hui_light.sh true 100" + bindsym 4 exec "~/.config/i3/hui_light.sh true 125" + bindsym 5 exec "~/.config/i3/hui_light.sh true 150" + bindsym 6 exec "~/.config/i3/hui_light.sh true 175" + bindsym 7 exec "~/.config/i3/hui_light.sh true 200" + bindsym 8 exec "~/.config/i3/hui_light.sh true 225" + bindsym 9 exec "~/.config/i3/hui_light.sh true 255" + bindsym 0 exec "~/.config/i3/hui_light.sh false 0" + # back to normal: Enter or Escape + bindsym Return mode "default" + bindsym Escape mode "default" +} +bindsym $mod+u mode "$hue_light" + +set $hue_light_color Phillips-Hue Color (r) Red, (g) Green, (b) Blue +mode "$hue_light_color" { + bindsym r exec "~/.config/i3/hui_light_color.sh 0" + bindsym g exec "~/.config/i3/hui_light_color.sh 25500" + bindsym b exec "~/.config/i3/hui_light_color.sh 46920" + # back to normal: Enter or Escape + bindsym Return mode "default" + bindsym Escape mode "default" +} +bindsym $mod+shift+u mode "$hue_light_color" + +## Manual management of external displays +# Set the shortcuts and what they do +set $mode_display Ext Screen (v) eDP ON, (h) HDMI ON, (x) eDP OFF, (y) HDMI OFF +mode "$mode_display" { + bindsym v exec --no-startup-id xrandr --output eDP --auto --right-of HDMI-A-0, mode "default" + bindsym h exec --no-startup-id xrandr --output HDMI-A-0 --auto --left-of eDP, mode "default" + bindsym x exec --no-startup-id xrandr --output eDP --auto --off, mode "default" + bindsym y exec --no-startup-id xrandr --output HDMI-A-0 --auto --off, mode "default" + + # back to normal: Enter or Escape + bindsym Return mode "default" + bindsym Escape mode "default" +} +# Declare here the shortcut to bring the display selection menu +bindsym $mod+Shift+m mode "$mode_display" + +#RUN-Menü aufrufen +#bindsym $mod+p exec --no-startup-id i3-input -F 'exec %s' -P 'Auführen: ' + +# springen von Workspace zu workspace mit oder ohne container +workspace_auto_back_and_forth yes +bindsym $mod+z workspace back_and_forth +bindsym $mod+Shift+z move container to workspace back_and_forth; workspace back_and_forth + +# display resoulution +#exec xrandr --output DP-0 --off --output DVI-D-0 --primary --mode 1920x1080 --pos 3840x0 --rotate normal --output DVI-D-1 --mode 1920x1080 --pos 0x0 --rotate normal --output DP-1 --off --output HDMI-0 --mode 1920x1080 --pos 1920x0 --rotate normal +exec --no-startup-id ~/.screenlayout/monitor.sh + +# background +exec_always --no-startup-id feh --bg-scale /opt/deadc0de-remix-os/desktop-bilder/Hyllian-Suite.jpg +#exec_always --no-startup-id feh --bg-scale /opt/deadc0de-os-code/background.jpg + +# conky ;-) +exec --no-startup-id /opt/.Conky/startconky.sh now + +# transparent background termite +#exec --no-startup-id picom -b --config ~/.config/i3/picom.conf + +# volumeicon +#exec --no-startup-id volumeicon + +# Networkmanager +#exec --no-startup-id nm-applet + +# Bluetooth +exec --no-startup-id blueman-applet + +# Start clipmenud +exec --no-startup-id "clipmenud" + +# Start xscreensaver +exec --no-startup-id "xscreensaver -no-splash" + +# Start Pulseaudio Server +#already started +#exec --no-startup-id "pulseaudio --start" + +# Start dunst-notifyd Service +exec --no-startup-id "dunst" + +# Start ntfy +exec --no-startup-id "/usr/bin/ntfy subscribe --config /etc/ntfy/client.yml --from-config" + +# Start volumeicon tray paystray (pulseaudio) +#exec --no-startup-id "pasystray --notify=all" + +# imwheel faster scrolling (deactivated sound bug) +#exec --no-startup-id imwheel + +# authentication manager +exec --no-startup-id lxpolkit + +# xfce4-power-manager +exec --no-startup-id xfce4-power-manager + +# start gnome-keyring-daemon +#exec --no-startup-id /usr/bin/gnome-keyring-daemon --start --components=ssh,secrets,pkcs11 + +# notify service from smartphone +#exec --no-startup-id /opt/an2linuxserver/an2linuxserver.py + +# starting Steam +#exec --no-startup-id sleep 30 && steam-native + +####### + +# i3lock +#convert image.jpg -resize $(xdpyinfo | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/') RGB:- | i3lock --raw $(xdpyinfo | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/'):rgb --image /dev/stdin +#bindsym $mod+shift+x exec i3lock -c 000000 + +bindsym $mod+shift+x exec xtrlock + + +### i3-gaps stuff ### + +# Necessary for i3-gaps to work properly (pixel can be any value) +for_window [class="^.*"] border pixel 3 + +# Smart Gaps +smart_gaps on + +# Smart Borders +smart_borders on + +# Set inner/outer gaps +gaps inner 12 +gaps outer -2 + +# Gaps mode +set $mode_gaps Gaps: (o) outer, (i) inner +set $mode_gaps_outer Outer Gaps: +|-|0 (local), Shift + +|-|0 (global) +set $mode_gaps_inner Inner Gaps: +|-|0 (local), Shift + +|-|0 (global) +bindsym $mod+Shift+g mode "$mode_gaps" + +mode "$mode_gaps" { + bindsym o mode "$mode_gaps_outer" + bindsym i mode "$mode_gaps_inner" + bindsym Return mode "default" + bindsym Escape mode "default" +} + +mode "$mode_gaps_inner" { + bindsym plus gaps inner current plus 5 + bindsym minus gaps inner current minus 5 + bindsym 0 gaps inner current set 0 + + bindsym Shift+plus gaps inner all plus 5 + bindsym Shift+minus gaps inner all minus 5 + bindsym Shift+0 gaps inner all set 0 + + bindsym Return mode "default" + bindsym Escape mode "default" +} +mode "$mode_gaps_outer" { + bindsym plus gaps outer current plus 5 + bindsym minus gaps outer current minus 5 + bindsym 0 gaps outer current set 0 + + bindsym Shift+plus gaps outer all plus 5 + bindsym Shift+minus gaps outer all minus 5 + bindsym Shift+0 gaps outer all set 0 + + bindsym Return mode "default" + bindsym Escape mode "default" +} + +exec notify-send -a i3 "loaded" "Welcome to i3." diff --git a/dot_config/i3/executable_cpu b/dot_config/i3/executable_cpu new file mode 100644 index 0000000..2cb27ad --- /dev/null +++ b/dot_config/i3/executable_cpu @@ -0,0 +1,48 @@ +#!/bin/bash +# Source: http://askubuntu.com/a/450136 + +URGENT_VALUE=90 + +PREV_TOTAL=0 +PREV_IDLE=0 + +cpuFile="/tmp/.cpu" + +if [[ -f "${cpuFile}" ]]; then + fileCont=$(cat "${cpuFile}") + PREV_TOTAL=$(echo "${fileCont}" | head -n 1) + PREV_IDLE=$(echo "${fileCont}" | tail -n 1) +fi + +CPU=(`cat /proc/stat | grep '^cpu '`) # Get the total CPU statistics. +unset CPU[0] # Discard the "cpu" prefix. +IDLE=${CPU[4]} # Get the idle CPU time. + +# Calculate the total CPU time. +TOTAL=0 + +for VALUE in "${CPU[@]:0:4}"; do + let "TOTAL=$TOTAL+$VALUE" +done + +if [[ "${PREV_TOTAL}" != "" ]] && [[ "${PREV_IDLE}" != "" ]]; then + # Calculate the CPU usage since we last checked. + let "DIFF_IDLE=$IDLE-$PREV_IDLE" + let "DIFF_TOTAL=$TOTAL-$PREV_TOTAL" + let "DIFF_USAGE=(1000*($DIFF_TOTAL-$DIFF_IDLE)/$DIFF_TOTAL+5)/10" + echo "${DIFF_USAGE}%" + echo "${DIFF_USAGE}%" + echo "" +else + echo "?" + echo "?" + echo "" +fi + +# Remember the total and idle CPU times for the next check. +echo "${TOTAL}" > "${cpuFile}" +echo "${IDLE}" >> "${cpuFile}" + +if [[ "${DIFF_USAGE}" -gt 0 ]] && [[ "${DIFF_USAGE}" -gt "${URGENT_VALUE}" ]]; then + exit 33 +fi \ No newline at end of file diff --git a/dot_config/i3/executable_disk-io b/dot_config/i3/executable_disk-io new file mode 100644 index 0000000..b6bebc2 --- /dev/null +++ b/dot_config/i3/executable_disk-io @@ -0,0 +1,92 @@ +#!/usr/bin/env bash +# +# Copyright (C) 2016 James Murphy +# Licensed under the terms of the GNU GPL v2 only. +# +# i3blocks blocklet script to monitor disk io + +label="${LABEL:-""}" +dt="${DT:-5}" +MB_only="${MB_ONLY:-0}" +kB_only="${KB_ONLY:-0}" +width="${WIDTH:-4}" +MB_precision="${MB_PRECISION:-1}" +kB_precision="${KB_PRECISION:-0}" +regex="${REGEX:-$BLOCK_INSTANCE}" +regex="${regex:-/^(s|h)d[a-zA-Z]+/}" +threshold="${THRESHOLD:-0}" +warn_color="${WARN_COLOR:-#FF0000}" +sep="${SEPARATOR:-/}" +unit_suffix="${SUFFIX:-B/s}" + +function list_devices { + echo "Devices iostat reports that match our regex:" + iostat | awk '$1~/^(s|h)d[a-zA-Z]+/{print $1}' +} + +while getopts L:t:w:p:P:R:s:ST:C:lLMmKkh opt; do + case "$opt" in + L) label="$OPTARG" ;; + t) dt="$OPTARG" ;; + w) width="$OPTARG" ;; + p) kB_precision="$OPTARG" ;; + P) MB_precision="$OPTARG" ;; + R) regex="$OPTARG" ;; + s) sep="$OPTARG" ;; + S) unit_suffix="" ;; + T) threshold="$OPTARG" ;; + C) warn_color="$OPTARG" ;; + l) list_devices; exit 0 ;; + M|m) MB_only=1 ;; + K|k) kB_only=1 ;; + h) printf \ +"Usage: disk-io [-t time] [-w width] [-p kB_precision] [-P MB_precision] [-R regex] [-s separator] [-S] [-T threshold [-C warn_color]] [-k|-M] [-l] [-h] +Options: +-L\tLabel to put in front of the text. Default: $label +-t\tTime interval in seconds between measurements. Default: $dt +-w\tThe width of printed floats. Default: $width +-p\tThe precision of kB/s floats. Default: $kB_precision +-P\tThe precision of MB/s floats. Default: $MB_precision +-R\tRegex that devices must match. Default: $regex +-s\tSeparator to put between rates. Default: $sep +-S\tShort units, omit B/s in kB/s and MB/s. +-T\tRate in kB/s to exceed to trigger a warning. Default: not enabled +-C\tColor to change the blocklet to warn the user. Default: $warn_color +-l\tList devices that iostat reports +-M\tDo not switch between MB/s and kB/s, use only MB/s +-k\tDo not switch between MB/s and kB/s, use only kB/s +-h\tShow this help text +" && exit 0;; + esac +done + +iostat -dyz "$dt" | awk -v sep="$sep" " + BEGIN { + rx = wx = 0; + } + { + if(\$0 == \"\") { + if ($threshold > 0 && (rx >= $threshold || wx >= $threshold)) { + printf \"\"; + } + printf \"$label\"; + if(!$kB_only && ($MB_only || rx >= 1024 || wx >= 1024)) { + printf \"%-$width.${MB_precision}f%s%$width.${MB_precision}f M$unit_suffix\", rx/1024, sep, wx/1024; + } + else { + printf \"%-$width.${kB_precision}f%s%$width.${kB_precision}f k$unit_suffix\", rx, sep, wx; + } + if ($threshold > 0 && (rx >= $threshold || wx >= $threshold)) { + printf \"\"; + } + printf \"\n\"; + fflush(stdout); + } + else if(\$1~/^Device:?/) { + rx = wx = 0; + } + else if(\$1~$regex) { + rx += \$3; + wx += \$4; + } + }" diff --git a/dot_config/i3/executable_disk.sh b/dot_config/i3/executable_disk.sh new file mode 100644 index 0000000..8572be2 --- /dev/null +++ b/dot_config/i3/executable_disk.sh @@ -0,0 +1,38 @@ +#!/bin/sh +# Copyright (C) 2014 Julien Bonjean + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +DIR="${BLOCK_INSTANCE:-$HOME}" +ALERT_LOW="${1:-10}" # color will turn red under this value (default: 10%) + +df -h -P -l "$DIR" | awk -v alert_low=$ALERT_LOW ' +/\/.*/ { + # full text + print $4 + # short text + print $4 + use=$5 + # no need to continue parsing + exit 0 +} +END { + gsub(/%$/,"",use) + if (100 - use < alert_low) { + # color + print "#FF0000" + } +} +' + diff --git a/dot_config/i3/executable_hui_light.sh b/dot_config/i3/executable_hui_light.sh new file mode 100644 index 0000000..de7b41a --- /dev/null +++ b/dot_config/i3/executable_hui_light.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +set -x +curl --location --request PUT 'http://192.168.1.123/api/EYlLGomum-wwCSoil1oRkIpcmYORn3KR03201tQg/lights/1/state' --header 'Content-Type: text/plain' --data-raw '{"on":'$1', "bri": '$2'}' diff --git a/dot_config/i3/executable_hui_light_color.sh b/dot_config/i3/executable_hui_light_color.sh new file mode 100644 index 0000000..8d92e37 --- /dev/null +++ b/dot_config/i3/executable_hui_light_color.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +set -x +curl --location --request PUT 'http://192.168.1.123/api/EYlLGomum-wwCSoil1oRkIpcmYORn3KR03201tQg/lights/1/state' --header 'Content-Type: text/plain' --data-raw '{"hue":'$1'}' diff --git a/dot_config/i3/executable_i3-blocks-bottom.conf b/dot_config/i3/executable_i3-blocks-bottom.conf new file mode 100644 index 0000000..1aefc5f --- /dev/null +++ b/dot_config/i3/executable_i3-blocks-bottom.conf @@ -0,0 +1,342 @@ +# i3blocks config file +# +# Please see man i3blocks for a complete reference! +# The man page is also hosted at http://vivien.github.io/i3blocks +# +# List of valid properties: +# +# align +# color +# command +# full_text +# instance +# interval +# label +# min_width +# name +# separator +# separator_block_width +# short_text +# signal +# urgent + +command=$SCRIPT_DIR/$BLOCK_NAME +color=#E0E0E0 + +# Global properties +# +# The top properties below are applied to every block, but can be overridden. +# Each block command defaults to the script name to avoid boilerplate. +command=/usr/lib/i3blocks/$BLOCK_NAME +separator_block_width=7 +markup=pango + +#[mediaplayer] +#command=printf " %s" "$(mpc current )" +#instance=mpd +#interval=5 +#signal=10 +#color=#E0E0E0 +#color=#556270 +#color=#FE4365 + +#[batterybar] +#command=~/.config/i3/batterybar +#label=bat: +#interval=60 +#markup=pango +#min_width=bat: ■■■■■ +#color=#E0E0E0 +# Discharging colors low to high +#C1=#FF0027 +#C2=#FF3B05 +#C3=#FFB923 +#C4=#FFD000 +#C5=#E4FF00 +#C6=#ADFF00 +#C7=#6DFF00 +#C8=#10BA00 +#CHARGING_COLOR=#00AFE3 +#FULL_COLOR=#FFFFFF +#AC_COLOR=#535353 + +# Volume indicator +# +# The first parameter sets the step (and units to display) +# The second parameter overrides the mixer selection +# See the script for details. +#[volume] +#command=printf " %s" "$(amixer get Speaker | grep -E -o '[0-9]{1,3}?%' | head -1)" +#command=printf " %s" "$(amixer get PCM | grep -E -o '[0-9]{1,3}?%' | head -1)" +#command=printf " %s" "$(pamixer --get-volume-human)" +#label=♪ +# instance=Master +# instance=PCM +#interval=1 +#color=#E0E0E0 +#color=#556270 +#signal=10 + +#[loading] +#command=printf " %s" "$(awk {'print $1,$2,$3 '} /proc/loadavg)" +#interval=2 +#color=#E0E0E0 +#color=#556270 +#separator=true +# Memory usage +# +# The type defaults to "mem" if the instance is not specified. +#[memory] +#command=printf " %s" "$(bash ~/.config/i3/mem)" +#separator=false +#color=#E0E0E0 +#color=#556270 +#interval=30 +#separator=true + + +#[temperature] +#command=printf " %s" "$(bash ~/.config/i3/sensors.sh)" +#color=#E0E0E0 +#color=#556270 +#interval=5 + +#[vpn] +#command=printf " %s " "$(bash ~/.config/i3/vpn.sh)" +#label= VPN +#color=#E0E0E0 +#color=#556270 +#interval=5 + +[disk] +command=~/.config/i3/disk.sh +interval=1 +label= +color=#E0E0E0 + +#[weather] +#command=printf " %s " "$(ruby ~/.config/i3/weather.rb)" +#interval=300 +#color=#556270 +#separator=true + +#[memory] +#label=SWAP +#instance=swap +#separator=false +#interval=30 + +# Disk usage +# +# The directory defaults to $HOME if the instance is not specified. +# The script may be called with a optional argument to set the alert +# (defaults to 10 for 10%). +#[disk] +#command=printf " %s" "$(/usr/bin/i3blocks/$BLOCK_NAME)" +#instance=/mnt/data +#interval=30 + +# Network interface monitoring +# +# If the instance is not specified, use the interface used for default route. +# The address can be forced to IPv4 or IPv6 with -4 or -6 switches. +#[wifi] +#instance=wlp3s0 +#interval=10 +#separator=false + +# [bandwidth] +#command=printf " %s" "$(/usr/lib/i3blocks/$BLOCK_NAME)" +#instance=eth0 +#interval=5 + +# CPU usage +# +# The script may be called with -w and -c switches to specify thresholds, +# see the script for details. + + +# Battery indicator +# +# The battery instance defaults to 0. +#[battery] +#label=BAT +#label=⚡ +#instance=1 +#interval=30 + +# Date Time +# + +# Generic media player support +# +# This displays "ARTIST - SONG" if a music is playing. +# Supported players are: spotify, vlc, audacious, xmms2, mplayer, and others. +#[mediaplayer] +#instance=spotify +#interval=5 +#signal=10 + +# OpenVPN support +# +#Support multiple VPN, with colors. + +# Temperature +# +# Support multiple chips, though lm-sensors. +# The script may be called with -w and -c switches to specify thresholds, +# see the script for details. +#[temperature] +#label=TEMP +#interval=10 + +# Key indicators +# +# Add the following bindings to i3 config file: +# +# bindsym --release Caps_Lock exec pkill -SIGRTMIN+11 i3blocks +# bindsym --release Num_Lock exec pkill -SIGRTMIN+11 i3blocks +#[keyindicator] +#instance=CAPS +#interval=once +#signal=11 + +#[keyindicator] +#instance=NUM +#interval=once +#signal=11 + + +#[usb] +#command=~/.config/i3/usb +#markup=pango +#signal=1 +#interval=10 +#color=#E0E0E0 +#IGNORE_LIST=[] +#IGNORE_LIST=["sdd1", "mapper/sda1_crypt"] +#INFO_TEXT_COLOR=white +#MOUNTED_COLOR=green +#PLUGGED_COLOR=gray +#LOCKED_COLOR=gray +#UNLOCKED_NOT_MOUNTED_COLOR=yellow +#PARTITIONLESS_COLOR=red +#PARTITIONLESS_TEXT=no partitions +#SEPARATOR= | +#LOCKED_INDICATOR= +#UNLOCKED_INDICATOR= +#READONLY_INDICATOR=ro +#TRUNCATE_FS_LABELS=[not set by default, accepts +/- integers] + +#[shutdown_menu] +#full_text=Quit +# If you are using FontAwesome, we recommend the power-off icon: +# http://fontawesome.io/icon/power-off/ +#command=~/.config/i3/shutdown_menu +#FG_COLOR=#bbbbbb +#BG_COLOR=#111111 +#HLFG_COLOR=#111111 +#HLBG_COLOR=#bbbbbb +#BORDER_COLOR=#222222 +#ROFI_TEXT=Menu: +#ROFI_OPTIONS=-width 11 -location 3 -hide-scrollbar -bw 2 +#ZENITY_TITLE=Menu +#ZENITY_TEXT=Action: +#ZENITY_OPTIONS=--column= --hide-header +#ENABLE_CONFIRMATIONS=true (must be true or false) +#LAUNCHER=rofi (must be rofi or zenity) +#LOCKSCRIPT=i3lock --color=${BG_COLOR#"#"} + +#[pacman-updates] +#label= +#command=~/.config/i3/arch-update +#markup=pango +#interval= 3600 +#QUIET=true +#WATCH=^linux.* ^pacman.* +#BASE_COLOR=#5fff5f +#UPDATE_COLOR=#FFFF85 +#AUR=true + +#[arch-update] +#command=~/.config/i3/arch-update +#label=Updates: +#interval=3600 +#markup=pango + +#[disk-io] +#command=~/.config/i3/disk-io +#command=$SCRIPT_DIR/disk-io -w 3 -M -P 0 +#interval=persist +#markup=pango +#LABEL= +#instance=/^sda/ +#DT=5 +#MB_ONLY=0 #0 or 1 +#KB_ONLY=0 #0 or 1 +#WIDTH=4 +#MB_PRECISION=1 +#KB_PRECISION=0 +#REGEX=/^(s|h)d[a-zA-Z]+/ +#THRESHOLD=0 +#WARN_COLOR="#FF0000" +#SEPARATOR=/ +#PREFIX= +#SUFFIX="B/s" + + +#[calendar] +#command=~/.config/i3/calendar +#interval=1 +#LABEL= +#DATEFMT=+%H:%M:%S +# SHORTFMT=+%H:%M:%S +#HEIGHT=180 +#WIDTH=220 + +[time] +command=printf " %s\n" "$(date '+%b %a %d %Y | %H:%M:%S ')" +interval=1 +color=#E0E0E0 +#color=#556270 +separator=true + +[key_layout] +command=~/.config/i3/key_layout +label=Layout +interval=30 +color=#E0E0E0 + +# Query my default IP address only on startup +[ip] +command=ip addr | grep 'inet' | grep -v inet6 | grep -vE '127\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | grep -o -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | head -1 +label=IP +interval=30 +color=#E0E0E0 + +#[bandwidth] +#command=~/.config/i3/bandwidth +#interval=5 +#INTERFACE=enp2s0f1 +#INLABEL="IN " +#OUTLABEL="OUT " +#TREAT_UNKNOWN_AS_UP=0 + +#[monitors] +#command=~/.config/i3/monitor_manager +#interval=once +#color=#E0E0E0 +#SHOW_ON_OFF=1 +#SHOW_NAMES=1 +#SHOW_PRIMARY=1 +#SHOW_MODE=1 +#SHOW_BLANKED=1 +#SHOW_DUPLICATE=1 +#SHOW_ROTATION=1 +#SHOW_REFLECTION=1 +#SHOW_BRIGHTNESS=1 +#SHOW_BRIGHTNESS_VALUE=0 +#SHOW_UP_DOWN=1 +#FONT_FAMILY=DejaVu Sans Mono +#FONT_SIZE=11 +#CLOSE_TO_BOUNDARY_BUFFER=20 diff --git a/dot_config/i3/executable_i3-blocks-top.conf b/dot_config/i3/executable_i3-blocks-top.conf new file mode 100644 index 0000000..1acc8fe --- /dev/null +++ b/dot_config/i3/executable_i3-blocks-top.conf @@ -0,0 +1,342 @@ +# i3blocks config file +# +# Please see man i3blocks for a complete reference! +# The man page is also hosted at http://vivien.github.io/i3blocks +# +# List of valid properties: +# +# align +# color +# command +# full_text +# instance +# interval +# label +# min_width +# name +# separator +# separator_block_width +# short_text +# signal +# urgent + +command=$SCRIPT_DIR/$BLOCK_NAME/$BLOCK_NAME +color=#E0E0E0 + +# Global properties +# +# The top properties below are applied to every block, but can be overridden. +# Each block command defaults to the script name to avoid boilerplate. +command=/usr/lib/i3blocks/$BLOCK_NAME/$BLOCK_NAME +separator_block_width=7 +markup=pango + +#[mediaplayer] +#command=printf " %s" "$(mpc current )" +#instance=mpd +#interval=5 +#signal=10 +#color=#E0E0E0 +#color=#556270 +#color=#FE4365 + +#[batterybar] +#command=~/.config/i3/batterybar +#label=bat: +#interval=60 +#markup=pango +#min_width=bat: ■■■■■ +#color=#E0E0E0 +# Discharging colors low to high +#C1=#FF0027 +#C2=#FF3B05 +#C3=#FFB923 +#C4=#FFD000 +#C5=#E4FF00 +#C6=#ADFF00 +#C7=#6DFF00 +#C8=#10BA00 +#CHARGING_COLOR=#00AFE3 +#FULL_COLOR=#FFFFFF +#AC_COLOR=#535353 + +# Volume indicator +# +# The first parameter sets the step (and units to display) +# The second parameter overrides the mixer selection +# See the script for details. +[volume] +#command=printf " %s" "$(amixer get Speaker | grep -E -o '[0-9]{1,3}?%' | head -1)" +#command=printf " %s" "$(amixer get PCM | grep -E -o '[0-9]{1,3}?%' | head -1)" +command=printf " %s\n" "$(pamixer --get-volume-human)" +#label=♪ +# instance=Master +# instance=PCM +interval=1 +color=#E0E0E0 +#color=#556270 +signal=10 + +[loading] +command=printf " %s\n" "$(awk {'print $1,$2,$3 '} /proc/loadavg)" +interval=2 +color=#E0E0E0 +#color=#556270 +separator=true +# Memory usage +# +# The type defaults to "mem" if the instance is not specified. +[memory] +command=printf " %s\n" "$(bash ~/.config/i3/mem)" +separator=false +color=#E0E0E0 +#color=#556270 +interval=30 +separator=true + + +[temperature] +command=printf " %s\n" "$(bash ~/.config/i3/sensors.sh)" +color=#E0E0E0 +#color=#556270 +interval=5 + +[vpn] +command=printf " %s \n" "$(bash ~/.config/i3/vpn.sh)" +label= VPN +color=#E0E0E0 +#color=#556270 +interval=5 + +#[disk] +#command=~/.config/i3/disk.sh +#interval=1 +#label= +#color=#E0E0E0 + +#[weather] +#command=printf " %s " "$(ruby ~/.config/i3/weather.rb)" +#interval=300 +#color=#556270 +#separator=true + +#[memory] +#label=SWAP +#instance=swap +#separator=false +#interval=30 + +# Disk usage +# +# The directory defaults to $HOME if the instance is not specified. +# The script may be called with a optional argument to set the alert +# (defaults to 10 for 10%). +#[disk] +#command=printf " %s" "$(/usr/bin/i3blocks/$BLOCK_NAME)" +#instance=/mnt/data +#interval=30 + +# Network interface monitoring +# +# If the instance is not specified, use the interface used for default route. +# The address can be forced to IPv4 or IPv6 with -4 or -6 switches. +#[wifi] +#instance=wlp3s0 +#interval=10 +#separator=false + +# [bandwidth] +#command=printf " %s" "$(/usr/lib/i3blocks/$BLOCK_NAME)" +#instance=eth0 +#interval=5 + +# CPU usage +# +# The script may be called with -w and -c switches to specify thresholds, +# see the script for details. + + +# Battery indicator +# +# The battery instance defaults to 0. +#[battery] +#label=BAT +#label=⚡ +#instance=1 +#interval=30 + +# Date Time +# + +# Generic media player support +# +# This displays "ARTIST - SONG" if a music is playing. +# Supported players are: spotify, vlc, audacious, xmms2, mplayer, and others. +#[mediaplayer] +#instance=spotify +#interval=5 +#signal=10 + +# OpenVPN support +# +#Support multiple VPN, with colors. + +# Temperature +# +# Support multiple chips, though lm-sensors. +# The script may be called with -w and -c switches to specify thresholds, +# see the script for details. +#[temperature] +#label=TEMP +#interval=10 + +# Key indicators +# +# Add the following bindings to i3 config file: +# +# bindsym --release Caps_Lock exec pkill -SIGRTMIN+11 i3blocks +# bindsym --release Num_Lock exec pkill -SIGRTMIN+11 i3blocks +#[keyindicator] +#instance=CAPS +#interval=once +#signal=11 + +#[keyindicator] +#instance=NUM +#interval=once +#signal=11 + + +#[usb] +#command=~/.config/i3/usb +#markup=pango +#signal=1 +#interval=10 +#color=#E0E0E0 +#IGNORE_LIST=[] +#IGNORE_LIST=["sdd1", "mapper/sda1_crypt"] +#INFO_TEXT_COLOR=white +#MOUNTED_COLOR=green +#PLUGGED_COLOR=gray +#LOCKED_COLOR=gray +#UNLOCKED_NOT_MOUNTED_COLOR=yellow +#PARTITIONLESS_COLOR=red +#PARTITIONLESS_TEXT=no partitions +#SEPARATOR= | +#LOCKED_INDICATOR= +#UNLOCKED_INDICATOR= +#READONLY_INDICATOR=ro +#TRUNCATE_FS_LABELS=[not set by default, accepts +/- integers] + +#[shutdown_menu] +#full_text=Quit +# If you are using FontAwesome, we recommend the power-off icon: +# http://fontawesome.io/icon/power-off/ +#command=~/.config/i3/shutdown_menu +#FG_COLOR=#bbbbbb +#BG_COLOR=#111111 +#HLFG_COLOR=#111111 +#HLBG_COLOR=#bbbbbb +#BORDER_COLOR=#222222 +#ROFI_TEXT=Menu: +#ROFI_OPTIONS=-width 11 -location 3 -hide-scrollbar -bw 2 +#ZENITY_TITLE=Menu +#ZENITY_TEXT=Action: +#ZENITY_OPTIONS=--column= --hide-header +#ENABLE_CONFIRMATIONS=true (must be true or false) +#LAUNCHER=rofi (must be rofi or zenity) +#LOCKSCRIPT=i3lock --color=${BG_COLOR#"#"} + +#[pacman-updates] +#label= +#command=~/.config/i3/arch-update +#markup=pango +#interval= 3600 +#QUIET=true +#WATCH=^linux.* ^pacman.* +#BASE_COLOR=#5fff5f +#UPDATE_COLOR=#FFFF85 +#AUR=true + +#[arch-update] +#command=~/.config/i3/arch-update +#label=Updates: +#interval=3600 +#markup=pango + +#[disk-io] +#command=~/.config/i3/disk-io +#command=$SCRIPT_DIR/disk-io -w 3 -M -P 0 +#interval=persist +#markup=pango +#LABEL= +#instance=/^sda/ +#DT=5 +#MB_ONLY=0 #0 or 1 +#KB_ONLY=0 #0 or 1 +#WIDTH=4 +#MB_PRECISION=1 +#KB_PRECISION=0 +#REGEX=/^(s|h)d[a-zA-Z]+/ +#THRESHOLD=0 +#WARN_COLOR="#FF0000" +#SEPARATOR=/ +#PREFIX= +#SUFFIX="B/s" + + +#[calendar] +#command=~/.config/i3/calendar +#interval=1 +#LABEL= +#DATEFMT=+%H:%M:%S +# SHORTFMT=+%H:%M:%S +#HEIGHT=180 +#WIDTH=220 + +#[time] +#command=printf " %s" "$(date '+%b %a %d %Y | %H:%M:%S ')" +#interval=1 +#color=#E0E0E0 +#color=#556270 +#separator=true + +#[key_layout] +#command=~/.config/i3/key_layout +#label=Layout +#interval=30 +#color=#E0E0E0 + +# Query my default IP address only on startup +#[ip] +#command=ip addr | grep 'inet' | grep -v inet6 | grep -vE '127\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | grep -o -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | head -1 +#label=IP +#interval=30 +#color=#E0E0E0 + +#[bandwidth] +#command=~/.config/i3/bandwidth +#interval=5 +#INTERFACE=enp2s0f1 +#INLABEL="IN " +#OUTLABEL="OUT " +#TREAT_UNKNOWN_AS_UP=0 + +#[monitors] +#command=~/.config/i3/monitor_manager +#interval=once +#color=#E0E0E0 +#SHOW_ON_OFF=1 +#SHOW_NAMES=1 +#SHOW_PRIMARY=1 +#SHOW_MODE=1 +#SHOW_BLANKED=1 +#SHOW_DUPLICATE=1 +#SHOW_ROTATION=1 +#SHOW_REFLECTION=1 +#SHOW_BRIGHTNESS=1 +#SHOW_BRIGHTNESS_VALUE=0 +#SHOW_UP_DOWN=1 +#FONT_FAMILY=DejaVu Sans Mono +#FONT_SIZE=11 +#CLOSE_TO_BOUNDARY_BUFFER=20 diff --git a/dot_config/i3/executable_i3-blocks.conf b/dot_config/i3/executable_i3-blocks.conf new file mode 100644 index 0000000..c1714df --- /dev/null +++ b/dot_config/i3/executable_i3-blocks.conf @@ -0,0 +1,338 @@ +# i3blocks config file +# +# Please see man i3blocks for a complete reference! +# The man page is also hosted at http://vivien.github.io/i3blocks +# +# List of valid properties: +# +# align +# color +# command +# full_text +# instance +# interval +# label +# min_width +# name +# separator +# separator_block_width +# short_text +# signal +# urgent + +command=$SCRIPT_DIR/$BLOCK_NAME +color=#E0E0E0 + +# Global properties +# +# The top properties below are applied to every block, but can be overridden. +# Each block command defaults to the script name to avoid boilerplate. +command=/usr/lib/i3blocks/$BLOCK_NAME +separator_block_width=7 +markup=pango + +#[mediaplayer] +#command=printf " %s" "$(mpc current )" +#instance=mpd +#interval=5 +#signal=10 +#color=#E0E0E0 +#color=#556270 +#color=#FE4365 + +[batterybar] +command=~/.config/i3/batterybar +label=bat: +interval=5 +markup=pango +min_width=bat: ■■■■■ +color=#E0E0E0 +# Discharging colors low to high +#C1=#FF0027 +#C2=#FF3B05 +#C3=#FFB923 +#C4=#FFD000 +#C5=#E4FF00 +#C6=#ADFF00 +#C7=#6DFF00 +#C8=#10BA00 +#CHARGING_COLOR=#00AFE3 +#FULL_COLOR=#FFFFFF +#AC_COLOR=#535353 + +# Volume indicator +# +# The first parameter sets the step (and units to display) +# The second parameter overrides the mixer selection +# See the script for details. +[volume] +#command=printf " %s" "$(amixer get Speaker | grep -E -o '[0-9]{1,3}?%' | head -1)" +command=printf " %s" "$(pamixer --get-volume-human)" +#label=♪ +# instance=Master +# instance=PCM +interval=1 +color=#E0E0E0 +#color=#556270 +signal=10 + +[loading] +command=printf " %s" "$(awk {'print $1,$2,$3 '} /proc/loadavg)" +interval=2 +color=#E0E0E0 +#color=#556270 +separator=true +# Memory usage +# +# The type defaults to "mem" if the instance is not specified. +[memory] +command=printf " %s" "$(bash ~/.config/i3/mem)" +separator=false +color=#E0E0E0 +#color=#556270 +interval=30 +separator=true + + +[temperature] +command=printf " %s" "$(bash ~/.config/i3/sensors.sh)" +color=#E0E0E0 +#color=#556270 +interval=5 + +[vpn] +command=printf " %s " "$(bash ~/.config/i3/vpn.sh)" +label= VPN +color=#E0E0E0 +#color=#556270 +interval=5 + +[disk] +command=~/.config/i3/disk.sh +interval=1 +label= +color=#E0E0E0 + +#[weather] +#command=printf " %s " "$(ruby ~/.config/i3/weather.rb)" +#interval=300 +#color=#556270 +#separator=true + +#[memory] +#label=SWAP +#instance=swap +#separator=false +#interval=30 + +# Disk usage +# +# The directory defaults to $HOME if the instance is not specified. +# The script may be called with a optional argument to set the alert +# (defaults to 10 for 10%). +#[disk] +#command=printf " %s" "$(/usr/bin/i3blocks/$BLOCK_NAME)" +#instance=/mnt/data +#interval=30 + +# Network interface monitoring +# +# If the instance is not specified, use the interface used for default route. +# The address can be forced to IPv4 or IPv6 with -4 or -6 switches. +#[wifi] +#instance=wlp3s0 +#interval=10 +#separator=false + +# [bandwidth] +#command=printf " %s" "$(/usr/lib/i3blocks/$BLOCK_NAME)" +#instance=eth0 +#interval=5 + +# CPU usage +# +# The script may be called with -w and -c switches to specify thresholds, +# see the script for details. + + +# Battery indicator +# +# The battery instance defaults to 0. +#[battery] +#label=BAT +#label=⚡ +#instance=1 +#interval=30 + +# Date Time +# + +# Generic media player support +# +# This displays "ARTIST - SONG" if a music is playing. +# Supported players are: spotify, vlc, audacious, xmms2, mplayer, and others. +#[mediaplayer] +#instance=spotify +#interval=5 +#signal=10 + +# OpenVPN support +# +#Support multiple VPN, with colors. + +# Temperature +# +# Support multiple chips, though lm-sensors. +# The script may be called with -w and -c switches to specify thresholds, +# see the script for details. +#[temperature] +#label=TEMP +#interval=10 + +# Key indicators +# +# Add the following bindings to i3 config file: +# +# bindsym --release Caps_Lock exec pkill -SIGRTMIN+11 i3blocks +# bindsym --release Num_Lock exec pkill -SIGRTMIN+11 i3blocks +#[keyindicator] +#instance=CAPS +#interval=once +#signal=11 + +#[keyindicator] +#instance=NUM +#interval=once +#signal=11 + + +#[usb] +#command=~/.config/i3/usb +#markup=pango +#signal=1 +#interval=10 +#IGNORE_LIST=[] +#IGNORE_LIST=["sdd1", "mapper/sda1_crypt"] +#INFO_TEXT_COLOR=white +#MOUNTED_COLOR=green +#PLUGGED_COLOR=gray +#LOCKED_COLOR=gray +#UNLOCKED_NOT_MOUNTED_COLOR=yellow +#PARTITIONLESS_COLOR=red +#PARTITIONLESS_TEXT=no partitions +#SEPARATOR= | +#LOCKED_INDICATOR= +#UNLOCKED_INDICATOR= +#READONLY_INDICATOR=ro +#TRUNCATE_FS_LABELS=[not set by default, accepts +/- integers] + +#[shutdown_menu] +#full_text=Quit +# If you are using FontAwesome, we recommend the power-off icon: +# http://fontawesome.io/icon/power-off/ +#command=~/.config/i3/shutdown_menu +#FG_COLOR=#bbbbbb +#BG_COLOR=#111111 +#HLFG_COLOR=#111111 +#HLBG_COLOR=#bbbbbb +#BORDER_COLOR=#222222 +#ROFI_TEXT=Menu: +#ROFI_OPTIONS=-width 11 -location 3 -hide-scrollbar -bw 2 +#ZENITY_TITLE=Menu +#ZENITY_TEXT=Action: +#ZENITY_OPTIONS=--column= --hide-header +#ENABLE_CONFIRMATIONS=true (must be true or false) +#LAUNCHER=rofi (must be rofi or zenity) +#LOCKSCRIPT=i3lock --color=${BG_COLOR#"#"} + +#[pacman-updates] +#label= +#command=~/.config/i3/arch-update +#markup=pango +#interval= 3600 +#QUIET=true +#WATCH=^linux.* ^pacman.* +#BASE_COLOR=#5fff5f +#UPDATE_COLOR=#FFFF85 +#AUR=true + +#[arch-update] +#command=~/.config/i3/arch-update +#label=Updates: +#interval=3600 +#markup=pango + +#[disk-io] +#command=~/.config/i3/disk-io +#command=$SCRIPT_DIR/disk-io -w 3 -M -P 0 +#interval=persist +#markup=pango +#LABEL= +#instance=/^sda/ +#DT=5 +#MB_ONLY=0 #0 or 1 +#KB_ONLY=0 #0 or 1 +#WIDTH=4 +#MB_PRECISION=1 +#KB_PRECISION=0 +#REGEX=/^(s|h)d[a-zA-Z]+/ +#THRESHOLD=0 +#WARN_COLOR="#FF0000" +#SEPARATOR=/ +#PREFIX= +#SUFFIX="B/s" + + +#[calendar] +#command=~/.config/i3/calendar +#interval=1 +#LABEL= +#DATEFMT=+%H:%M:%S +# SHORTFMT=+%H:%M:%S +#HEIGHT=180 +#WIDTH=220 + +[time] +command=printf " %s" "$(date '+%b %a %d %Y | %H:%M:%S ')" +interval=1 +color=#E0E0E0 +#color=#556270 +separator=true + +[key_layout] +command=~/.config/i3/key_layout +label=Layout +interval=30 +color=#E0E0E0 + +# Query my default IP address only on startup +[ip] +command=ip addr | grep 'inet' | grep -v inet6 | grep -vE '127\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | grep -o -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | head -1 +interval=once + +#[bandwidth] +#command=~/.config/i3/bandwidth +#interval=5 +#INTERFACE=enp2s0f1 +#INLABEL="IN " +#OUTLABEL="OUT " +#TREAT_UNKNOWN_AS_UP=0 + +[monitors] +command=~/.config/i3/monitor_manager +interval=once +color=#E0E0E0 +#SHOW_ON_OFF=1 +#SHOW_NAMES=1 +#SHOW_PRIMARY=1 +#SHOW_MODE=1 +#SHOW_BLANKED=1 +#SHOW_DUPLICATE=1 +#SHOW_ROTATION=1 +#SHOW_REFLECTION=1 +#SHOW_BRIGHTNESS=1 +#SHOW_BRIGHTNESS_VALUE=0 +#SHOW_UP_DOWN=1 +#FONT_FAMILY=DejaVu Sans Mono +#FONT_SIZE=11 +#CLOSE_TO_BOUNDARY_BUFFER=20 diff --git a/dot_config/i3/executable_key_layout b/dot_config/i3/executable_key_layout new file mode 100644 index 0000000..e350614 --- /dev/null +++ b/dot_config/i3/executable_key_layout @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +# Copyright 2016 Patrick Haun +# Edited: Denis Kadyshev +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +setxkbmap -query | awk ' + BEGIN{layout="";variant=""} + /^layout/{layout=$2} + /^variant/{variant=" ("$2")"} + END{printf(" %s\n%s\n",layout,variant)}' diff --git a/dot_config/i3/executable_load b/dot_config/i3/executable_load new file mode 100644 index 0000000..fd241d0 --- /dev/null +++ b/dot_config/i3/executable_load @@ -0,0 +1,20 @@ +#!/bin/bash + +#INSTANCE="${BLOCK_INSTANCE:-1}" +INSTANCE="1,2,3" + +URGENT_VALUE=90 + +LOAD=$(cat /proc/loadavg | awk -F ' ' '{print $'"${INSTANCE}"'}') +if [[ "${LOAD}" != "" ]]; then + LOAD_PERC=$(echo "scale=0; ${LOAD} * 100" | bc -l) + LOAD_PERC=${LOAD_PERC%.*} + + echo "${LOAD}" + echo "${LOAD}" + echo "" + + if [[ "${LOAD_PERC}" -ge "${URGENT_VALUE}" ]]; then + exit 33 + fi +fi diff --git a/dot_config/i3/executable_mem b/dot_config/i3/executable_mem new file mode 100644 index 0000000..33bdd35 --- /dev/null +++ b/dot_config/i3/executable_mem @@ -0,0 +1,8 @@ +#!/bin/bash +# Show used and total memory + +available=$(awk '/MemAvailable/ {$2=$2/1024; printf("%3.2f\n", $2)}' /proc/meminfo) +total=$(awk '/MemTotal/ {$2=$2/1024**2; printf("%3.1f\n", $2)}' /proc/meminfo ) + +echo "${available}" +echo "" diff --git a/dot_config/i3/executable_monitor_manager b/dot_config/i3/executable_monitor_manager new file mode 100644 index 0000000..143e244 --- /dev/null +++ b/dot_config/i3/executable_monitor_manager @@ -0,0 +1,728 @@ +#!/usr/bin/env python3 +# +# Copyright (c) 2016 James Murphy +# Licensed under the GPL version 2 only +# +# monitor_manager is an i3blocks blocklet script to quickly manage your +# connected output devices + + +from tkinter import * +from tkinter import messagebox +from shutil import which +import tkinter.font as font +from subprocess import call, check_output, CalledProcessError +import re +import os + +DESKTOP_SYMBOL = "\uf108" + +UP_ARROW = "\uf062" +DOWN_ARROW = "\uf063" +UNBLANKED_SYMBOL = "\uf06e" +BLANKED_SYMBOL = "\uf070" +NOT_CLONED_SYMBOL = "\uf096" +PRIMARY_SYMBOL = "\uf005" +SECONDARY_SYMBOL = "\uf006" +CLONED_SYMBOL = "\uf24d" +ROTATION_NORMAL = "\uf151" +ROTATION_LEFT = "\uf191" +ROTATION_RIGHT = "\uf152" +ROTATION_INVERTED = "\uf150" +REFLECTION_NORMAL = "\uf176" +REFLECTION_X = "\uf07e" +REFLECTION_Y = "\uf07d" +REFLECTION_XY = "\uf047" +TOGGLE_ON = "\uf205" +TOGGLE_OFF = "\uf204" +APPLY_SYMBOL = "\uf00c" +CANCEL_SYMBOL = "\uf00d" +ARANDR_SYMBOL = "\uf085" +REFRESH_SYMBOL = "\uf021" + +strbool = lambda s: s.lower() in ['t', 'true', '1'] +def _default(name, default='', arg_type=strbool): + val = default + if name in os.environ: + val = os.environ[name] + return arg_type(val) + + +SHOW_ON_OFF = _default("SHOW_ON_OFF","1") +SHOW_NAMES = _default("SHOW_NAMES", "1") +SHOW_PRIMARY = _default("SHOW_PRIMARY", "1") +SHOW_MODE = _default("SHOW_MODE", "1") +SHOW_BLANKED = _default("SHOW_BLANKED", "1") +SHOW_DUPLICATE = _default("SHOW_DUPLICATE", "1") +SHOW_ROTATION = _default("SHOW_ROTATION", "1") +SHOW_REFLECTION = _default("SHOW_REFLECTION", "1") +SHOW_BRIGHTNESS = _default("SHOW_BRIGHTNESS", "1") +SHOW_BRIGHTNESS_VALUE = _default("SHOW_BRIGHTNESS_VALUE", "0") +SHOW_UP_DOWN = _default("SHOW_UP_DOWN", "1") + +FONTAWESOME_FONT_FAMILY = "FontAwesome" +FONTAWESOME_FONT_SIZE = 11 +FONTAWESOME_FONT = (FONTAWESOME_FONT_FAMILY, FONTAWESOME_FONT_SIZE) +DEFAULT_FONT_FAMILY = _default("FONT_FAMILY","DejaVu Sans Mono", str) +DEFAULT_FONT_SIZE = _default("FONT_SIZE", 11, int) +DEFAULT_FONT = (DEFAULT_FONT_FAMILY, DEFAULT_FONT_SIZE) + +BRIGHTNESS_SLIDER_HANDLE_LENGTH = 20 +BRIGHTNESS_SLIDER_WIDTH = 15 +BRIGHTNESS_SLIDER_LENGTH = 50 + +WINDOW_CLOSE_TO_BOUNDARY_BUFFER = _default("CLOSE_TO_BOUNDARY_BUFFER", 20, int) + +class Output: + def __init__(self, name=None, w=None, h=None, x=None, y=None, rate=None, + active=False, primary=False, sameAs=None, blanked=False, rotation="normal", + reflection="normal", brightness=1.0): + self.name = name + self.w = w + self.h = h + self.x = x + self.y = y + self.rate = rate + self.active = active + self.primary = primary + self.sameAs = sameAs + self.blanked = blanked + self.modes = [] + self.currentModeIndex = None + self.preferredModeIndex = None + self.row = None + self.rotation = rotation + self.reflection = reflection + self.brightness = brightness + + def setPreferredMode(self): + if self.preferredModeIndex != None: + self.setMode(self.preferredModeIndex) + elif self.modes != None: + self.setMode(0) + + def setMode(self, index): + self.w, self.h, self.rate = self.modes[index] + self.currentModeIndex = index + + def realOutputs(): + outputs = [] + xrandrText = check_output(["xrandr","--verbose"],universal_newlines=True) + outputBlocks = re.split(r'\n(?=\S)', xrandrText, re.MULTILINE) + infoPattern = re.compile( + r'^(\S+)' # output name + ' connected ' # must be connected + '(primary )?' # check if primary output + '((\d+)x(\d+)\+(\d+)\+(\d+) )?' # width x height + xoffset + yoffset + '(\(\S+\) )?' # mode code (0x4a) + '(normal|left|inverted|right)? ?' # rotation + '(X axis|Y axis|X and Y axis)?') # reflection + brightnessPattern = re.compile(r'^\tBrightness: ([\d.]+)', re.MULTILINE) + modePattern = re.compile(r'^ (\d+)x(\d+)[^\n]*?\n +h:[^\n]*?\n +v:[^\n]*?([\d.]+)Hz$', re.MULTILINE) + for outputBlock in outputBlocks: + output = Output() + infoMatch = infoPattern.match(outputBlock) + if infoMatch: + output.name = infoMatch.group(1) + if infoMatch.group(2): + output.primary = True + if infoMatch.group(3): + output.active = True + output.w, output.h, output.x, output.y = map(int,infoMatch.group(4, 5, 6, 7)) + if infoMatch.group(9): + output.rotation = infoMatch.group(9) + if output.rotation in ["left", "right"]: + output.w, output.h = output.h, output.w + if infoMatch.group(10): + if infoMatch.group(10) == "X axis": + output.reflection = "x" + elif infoMatch.group(10) == "Y axis": + output.reflection = "y" + elif infoMatch.group(10) == "X and Y axis": + output.reflection = "xy" + else: + output.reflection = "normal" + else: + output.reflection = "normal" + brightnessMatch = brightnessPattern.search(outputBlock) + if brightnessMatch: + try: + brightness = float(brightnessMatch.group(1)) + output.brightness = brightness + if abs(brightness) < 1e-09: + output.blanked = True + except ValueError: + pass + modeMatches = modePattern.finditer(outputBlock) + for i, modeMatch in enumerate(modeMatches): + if "*current" in modeMatch.group(0): + output.currentModeIndex = i + output.rate = modeMatch.group(3) + if "+preferred" in modeMatch.group(0): + output.preferredModeIndex = i + output.modes.append(modeMatch.group(1,2,3)) + outputs.append(output) + outputs.sort(key=lambda m: m.x if m.x != None else -1) + prev = None + for output in outputs: + if prev != None and output.active and prev.active and output.x == prev.x: + output.sameAs = prev.name + else: + prev = output + + return outputs + + def modestr(mode): + return "{}x{}@{}".format(*mode) + + def status(self): + if self.active: + if self.sameAs == None or self.sameAs == self.name: + if self.w and self.h and self.rate: + return "{}x{}@{}".format(self.w, self.h, self.rate) + else: + return "auto" + else: + return "duplicate {}".format(self.sameAs) + else: + return "Inactive" + + + def __str__(self): + return "{} {}x{}+{}+{} active:{}, primary:{}\nmodes:{}\ncurrentIndex:{} preferredIndex:{}".format( + self.name, self.w, self.h, self.x, self.y, self.active, self.primary, self.modes, self.currentModeIndex, self.preferredModeIndex) + +class MonitorManager(): + def __init__(self, root): + self.root = root + self.root.withdraw() + self.root.resizable(0,0) + self.root.wm_title("Monitor Manager") + self.frame = None + self.outputs = [] + self.hardRefreshList() + style = {'relief':FLAT, 'padx':1, 'pady':1, 'anchor':'w', 'font':FONTAWESOME_FONT} + + self.infoLabel = Label(self.root, text="", **style) + self.infoLabel.config(font=DEFAULT_FONT) + + self.bottomRow = [] + + self.applyButton = Button(self.root, text=APPLY_SYMBOL, **style) + self.bottomRow.append(self.applyButton) + + self.refreshButton = Button(self.root, text=REFRESH_SYMBOL, **style) + self.bottomRow.append(self.refreshButton) + + if which("arandr"): + self.arandrButton = Button(self.root, text=ARANDR_SYMBOL, **style) + self.bottomRow.append(self.arandrButton) + else: + self.arandrButton = None + + self.cancelButton = Button(self.root, text=CANCEL_SYMBOL, **style) + self.bottomRow.append(self.cancelButton) + + self.infoLabel.grid(row=1,column=0, columnspan=len(self.bottomRow)) + self.gridRow(2, self.bottomRow) + + self.moveToMouse() + self.root.deiconify() + + def registerBindings(self): + self.root.bind("", self.handleApply) + self.root.bind("", self.handleCancel) + + self.applyButton.bind("", self.handleApply) + self.setInfo(self.applyButton, "Apply changes") + + self.refreshButton.bind("", self.hardRefreshList) + self.setInfo(self.refreshButton, "Refresh list") + + if self.arandrButton: + self.arandrButton.bind("", self.handleArandr) + self.setInfo(self.arandrButton, "Launch aRandR") + + self.cancelButton.bind("", self.handleCancel) + self.setInfo(self.cancelButton, "Cancel") + + for toggleButton in self.toggleButtons: + toggleButton.bind("", self.toggleActive) + toggleButton.bind("", self.handleUp) + toggleButton.bind("", self.handleDown) + self.setInfo(toggleButton, "Turn output on/off") + + for primaryButton in self.primaryButtons: + primaryButton.bind("", self.setPrimary) + self.setInfo(primaryButton, "Set primary output") + + for blankedButton in self.blankedButtons: + blankedButton.bind("", self.toggleBlanked) + self.setInfo(blankedButton, "Show/hide output") + + for duplicateButton in self.duplicateButtons: + duplicateButton.bind("", self.toggleDuplicate) + self.setInfo(duplicateButton, "Duplicate another output") + + for rotateButton in self.rotateButtons: + rotateButton.bind("", self.cycleRotation) + self.setInfo(rotateButton, "Rotate output") + + for reflectButton in self.reflectButtons: + reflectButton.bind("", self.cycleReflection) + self.setInfo(reflectButton, "Reflect output") + + for brightnessSlider in self.brightnessSliders: + brightnessSlider.bind("", self.updateBrightness) + self.setInfo(brightnessSlider, "Adjust brightness") + + for upButton in self.upButtons: + upButton.bind("", self.handleUp) + upButton.bind("", self.handleUp) + upButton.bind("", self.handleDown) + self.setInfo(upButton, "Move up") + + for downButton in self.downButtons: + downButton.bind("", self.handleDown) + downButton.bind("", self.handleUp) + downButton.bind("", self.handleDown) + self.setInfo(downButton, "Move down") + + def gridRow(self, row, widgets): + column = 0 + for w in widgets: + w.grid(row=row, column=column) + column += 1 + + def moveToMouse(self): + root = self.root + root.update_idletasks() + width = root.winfo_reqwidth() + height = root.winfo_reqheight() + x = root.winfo_pointerx() - width//2 + y = root.winfo_pointery() - height//2 + screen_width = root.winfo_screenwidth() + screen_height = root.winfo_screenheight() + if x+width > screen_width - WINDOW_CLOSE_TO_BOUNDARY_BUFFER: + x = screen_width - WINDOW_CLOSE_TO_BOUNDARY_BUFFER - width + elif x < WINDOW_CLOSE_TO_BOUNDARY_BUFFER: + x = WINDOW_CLOSE_TO_BOUNDARY_BUFFER + if y+height > screen_height - WINDOW_CLOSE_TO_BOUNDARY_BUFFER: + y = screen_height - WINDOW_CLOSE_TO_BOUNDARY_BUFFER - height + elif y < WINDOW_CLOSE_TO_BOUNDARY_BUFFER: + y = WINDOW_CLOSE_TO_BOUNDARY_BUFFER + + root.geometry('+{}+{}'.format(x, y)) + + def setInfo(self, widget, info): + widget.bind("", lambda e: self.infoLabel.config(text=info, fg="black")) + widget.bind("", lambda e: self.infoLabel.config(text="")) + + def handleApply(self, e=None): + self.root.after_idle(self.doHandleApply) + + def doHandleApply(self): + if not self.getUserConfirmationIfDangerousConfiguration(): + return + command = ["xrandr"] + if not self.existsPrimary(): + command += ["--noprimary"] + partition = self.sameAsPartition() + prevFirstActive = None + for p in partition: + firstActive = None + for output in p: + command += ["--output", output.name] + if output.active: + if firstActive == None: + firstActive = output + else: + command += ["--same-as", firstActive.name] + if output.primary: + command += ["--primary"] + if prevFirstActive != None: + command += ["--right-of", prevFirstActive.name] + if output.w != None and output.h != None and output.rate != None: + command += ["--mode", "{}x{}".format(output.w,output.h)] + command += ["--rate", output.rate ] + else: + command += ["--auto"] + command += ["--brightness", str(output.brightness)] + command += ["--rotate", output.rotation] + command += ["--reflect", output.reflection] + else: + command += ["--off"] + if firstActive: + prevFirstActive = firstActive + self.root.after_idle(lambda: self.executeXrandrCommand(command)) + + def executeXrandrCommand(self, command): + try: + check_output(command, universal_newlines=True) + except CalledProcessError as err: + self.infoLabel.config(text="xrandr returned nonzero exit status {}".format(err.returncode), fg="red") + + def getUserConfirmationIfDangerousConfiguration(self): + result = "yes" + if all(map(lambda o: o.blanked or not o.active, self.outputs)): + result = messagebox.askquestion("All blanked or off", + "All ouputs are set to be turned off or blanked, continue?", + icon="warning") + return result == "yes" + + def sameAsPartition(self): + partition = [] + for output in self.outputs: + place = None + for p in partition: + if place != None: + break; + for o in p: + if place == None and (output.sameAs == o.name or o.sameAs == output.name): + place = p + break; + if place: + place.append(output) + else: + partition.append([output]) + return partition + + + def handleCancel(self, e=None): + self.root.destroy() + + def handleArandr(self, e=None): + call(["i3-msg", "-q", "exec", "arandr"]) + self.root.destroy() + + def handleUp(self, e): + row = e.widget.output.row + if row > 0: + self.swapOutputRows(row-1, row) + self.softRefreshList() + + def handleDown(self, e): + row = e.widget.output.row + n = len(self.outputs) + if row + 1 < n: + self.swapOutputRows(row, row+1) + self.softRefreshList() + + def swapOutputRows(self, row1, row2): + outputs = self.outputs + outputs[row1],outputs[row2] = outputs[row2],outputs[row1] + outputs[row1].row = row1 + outputs[row2].row = row2 + for widget in self.frame.grid_slaves(row=row2): + widget.output = outputs[row2] + for widget in self.frame.grid_slaves(row=row1): + widget.output = outputs[row1] + + def setPrimary(self, e): + output = e.widget.output + output.primary = not output.primary + for otherOutput in self.outputs: + if otherOutput != output: + otherOutput.primary = False + self.softRefreshList() + + def existsPrimary(self): + for output in self.outputs: + if output.primary: + return True + return False + + def toggleActive(self, e): + output = e.widget.output + output.active = not output.active + if output.active: + output.setPreferredMode() + else: + for otherOutput in self.outputs: + if otherOutput.sameAs == output.name: + otherOutput.sameAs = None + self.softRefreshList() + + def toggleBlanked(self, e): + output = e.widget.output + if output.blanked: + output.blanked = False + output.brightness = 1.0 + else: + output.blanked = True + output.brightness = 0.0 + self.softRefreshList() + + def updateBrightness(self, e): + output = e.widget.output + output.brightness = .01 * e.widget.get() + output.blanked = False + if abs(output.brightness) < 1e-09: + output.blanked = True + self.softRefreshList() + + def cycleRotation(self, e): + output = e.widget.output + if output.rotation == "normal": + output.rotation = "right" + elif output.rotation == "right": + output.rotation = "inverted" + elif output.rotation == "inverted": + output.rotation = "left" + else: + output.rotation = "normal" + self.softRefreshList() + + def rotationSymbol(self, rotation): + return { + "normal": ROTATION_NORMAL, + "left": ROTATION_LEFT, + "right": ROTATION_RIGHT, + "inverted": ROTATION_INVERTED, + }[rotation] + + def cycleReflection(self, e): + output = e.widget.output + if output.reflection == "normal": + output.reflection = "x" + elif output.reflection == "x": + output.reflection = "y" + elif output.reflection == "y": + output.reflection = "xy" + else: + output.reflection = "normal" + self.softRefreshList() + + def reflectionSymbol(self, reflection): + return { + "normal": REFLECTION_NORMAL, + "x": REFLECTION_X, + "y": REFLECTION_Y, + "xy": REFLECTION_XY, + }[reflection] + + def toggleDuplicate(self, e): + duplicateButton = e.widget + optionMenu = duplicateButton.statusOptionMenu + output = optionMenu.output + if output.sameAs != None: + output.sameAs = None + self.setMenuToOutput(optionMenu, output) + else: + self.setMenuToDuplicate(optionMenu) + self.softRefreshList() + + def getDuplicableOutputsFor(self, output): + return [o for o in self.outputs if o != output and o.sameAs == None] + + def softRefreshList(self, e=None): + for widget in set().union(self.nameLabels, self.primaryButtons, + self.statusOptionMenus, self.blankedButtons, + self.duplicateButtons, self.rotateButtons, self.reflectButtons, + self.brightnessSliders, self.upButtons, self.downButtons): + widget.config(fg="gray" if not widget.output.active else "black") + + for widget in self.toggleButtons: + widget.config(text=TOGGLE_ON if widget.output.active else TOGGLE_OFF) + + for widget in self.nameLabels: + widget.config(text=widget.output.name) + + for widget in self.primaryButtons: + widget.config(text=PRIMARY_SYMBOL if widget.output.primary else SECONDARY_SYMBOL) + if not widget.output.primary: + widget.config(fg="gray") + + for widget in self.statusOptionMenus: + widget.config(text=widget.output.status()) + if widget.output.sameAs != None: + self.setMenuToDuplicate(widget) + self.setInfo(widget, "Select output to duplicate") + else: + self.setMenuToOutput(widget, widget.output) + self.setInfo(widget, "Select output mode") + + for widget in self.blankedButtons: + widget.config(text=BLANKED_SYMBOL if widget.output.blanked else UNBLANKED_SYMBOL) + + for widget in self.duplicateButtons: + widget.config(text=CLONED_SYMBOL if widget.output.sameAs else NOT_CLONED_SYMBOL) + + for widget in self.rotateButtons: + widget.config(text=self.rotationSymbol(widget.output.rotation)) + + for widget in self.reflectButtons: + widget.config(text=self.reflectionSymbol(widget.output.reflection)) + + for widget in self.brightnessSliders: + widget.set(int(100*widget.output.brightness)) + + def hardRefreshList(self, e=None): + self.outputs = Output.realOutputs() + self.root.after_idle(self.populateGrid) + + def populateGrid(self): + oldFrame = self.frame + self.frame = Frame(self.root) + self.frame.grid(row=0, column=0, columnspan=len(self.bottomRow)) + self.toggleButtons = [] + self.nameLabels = [] + self.primaryButtons = [] + self.statusOptionMenus = [] + self.blankedButtons = [] + self.duplicateButtons = [] + self.rotateButtons = [] + self.reflectButtons = [] + self.brightnessSliders = [] + self.upButtons = [] + self.downButtons = [] + for row, output in enumerate(self.outputs): + self.makeLabelRow(output, row) + self.registerBindings() + if oldFrame: + oldFrame.destroy() + + def makeLabelRow(self, output, row): + output.row = row + style = {'relief':FLAT, 'padx':1, 'pady':1, 'anchor':'w'} + widgets = [] + + toggleButton = Button(self.frame, font=FONTAWESOME_FONT, **style) + toggleButton.output = output + self.toggleButtons.append(toggleButton) + if SHOW_ON_OFF: + widgets.append(toggleButton) + + nameLabel = Label(self.frame, font=DEFAULT_FONT) + nameLabel.output = output + self.nameLabels.append(nameLabel) + if SHOW_NAMES: + widgets.append(nameLabel) + + primaryButton = Button(self.frame, font=FONTAWESOME_FONT, **style) + primaryButton.output = output + self.primaryButtons.append(primaryButton) + if not output.primary: + primaryButton.config(fg="gray") + if SHOW_PRIMARY: + widgets.append(primaryButton) + + var = StringVar(self.frame) + statusOptionMenu = OptionMenu(self.frame, var, None) + statusOptionMenu.output = output + statusOptionMenu.var = var + statusOptionMenu.config(relief=FLAT) + self.statusOptionMenus.append(statusOptionMenu) + if SHOW_MODE or SHOW_DUPLICATE: + widgets.append(statusOptionMenu) + + blankedButton = Button(self.frame, font=FONTAWESOME_FONT, **style) + blankedButton.output = output + self.blankedButtons.append(blankedButton) + if SHOW_BLANKED: + widgets.append(blankedButton) + + duplicateButton = Button(self.frame, font=FONTAWESOME_FONT, **style) + duplicateButton.statusOptionMenu = statusOptionMenu + duplicateButton.output = output + self.duplicateButtons.append(duplicateButton) + if SHOW_DUPLICATE: + widgets.append(duplicateButton) + + rotateButton = Button(self.frame, font=FONTAWESOME_FONT, **style) + rotateButton.output = output + self.rotateButtons.append(rotateButton) + if SHOW_ROTATION: + widgets.append(rotateButton) + + reflectButton = Button(self.frame, font=FONTAWESOME_FONT, **style) + reflectButton.output = output + self.reflectButtons.append(reflectButton) + if SHOW_REFLECTION: + widgets.append(reflectButton) + + brightnessSlider = Scale(self.frame, orient="horizontal", from_=0, to=100, + length=BRIGHTNESS_SLIDER_LENGTH, showvalue=SHOW_BRIGHTNESS_VALUE, + sliderlength=BRIGHTNESS_SLIDER_HANDLE_LENGTH, + width=BRIGHTNESS_SLIDER_WIDTH, font=FONTAWESOME_FONT) + brightnessSlider.output = output + self.brightnessSliders.append(brightnessSlider) + if SHOW_BRIGHTNESS: + widgets.append(brightnessSlider) + + upButton = Button(self.frame, text=UP_ARROW, font=FONTAWESOME_FONT, **style) + upButton.output = output + self.upButtons.append(upButton) + if SHOW_UP_DOWN: + widgets.append(upButton) + + downButton = Button(self.frame, text=DOWN_ARROW, font=FONTAWESOME_FONT, **style) + downButton.output = output + self.downButtons.append(downButton) + if SHOW_UP_DOWN: + widgets.append(downButton) + + for widget in widgets: + widget.output = output + self.gridRow(row, widgets) + self.softRefreshList() + + def setMenuToOutput(self, optionMenu, output): + menu = optionMenu["menu"] + var = optionMenu.var + modes = output.modes + menu.delete(0, END) + for i, mode in enumerate(modes): + label = Output.modestr(mode) + menu.add_command(label=label, command=setLabelAndOutputModeFunc(var,label,output,i)) + if output.currentModeIndex != None: + var.set(Output.modestr(modes[output.currentModeIndex])) + elif output.preferredModeIndex != None: + var.set(Output.modestr(modes[output.preferredModeIndex])) + elif len(modes) > 0: + var.set(Output.modestr(modes[0])) + + def setMenuToDuplicate(self, optionMenu): + menu = optionMenu["menu"] + var = optionMenu.var + output = optionMenu.output + menu.delete(0, END) + duplicables = self.getDuplicableOutputsFor(output) + defaultIndex = 0 + for i,otherOutput in enumerate(duplicables): + label = otherOutput.name + menu.add_command(label=label, command=setLabelAndSameAsFunc(var,label,output)) + if label == output.sameAs: + defaultIndex = i + if len(duplicables) > 0: + var.set(menu.entrycget(defaultIndex, "label")) + output.sameAs = menu.entrycget(defaultIndex, "label") + else: + var.set("None") + + def handleFocusOut(self, event): + self.root.destroy() + +def setLabelAndOutputModeFunc(var, label, output, i): + def func(): + var.set(label) + output.setMode(i) + return func + +def setLabelAndSameAsFunc(var, sameAs, output): + def func(): + var.set(sameAs) + output.sameAs = sameAs + return func + +if os.environ.get('BLOCK_BUTTON') == "1": + if os.fork() != 0: + root = Tk() + if DEFAULT_FONT_FAMILY and DEFAULT_FONT_SIZE: + font.nametofont("TkDefaultFont").config(family=DEFAULT_FONT_FAMILY, size=DEFAULT_FONT_SIZE) + manager = MonitorManager(root) + root.mainloop() + else: + print(DESKTOP_SYMBOL) +else: + print(DESKTOP_SYMBOL) diff --git a/dot_config/i3/executable_picom.conf b/dot_config/i3/executable_picom.conf new file mode 100644 index 0000000..ac1413d --- /dev/null +++ b/dot_config/i3/executable_picom.conf @@ -0,0 +1,246 @@ +# Thank you code_nomad: http://9m.no/ꪯ鵞 +# and Arch Wiki contributors: https://wiki.archlinux.org/index.php/Compton +# +# ▀ ▄▀▀ +# ▄▄▄▄ ▄▄▄ ▄▄▄ ▄▄▄ ▄▄▄▄▄ ▄▄▄ ▄▄▄ ▄ ▄▄ ▄▄█▄▄ +# █▀ ▀█ █ █▀ ▀ █▀ ▀█ █ █ █ █▀ ▀ █▀ ▀█ █▀ █ █ +# █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ +# ██▄█▀ ▄▄█▄▄ ▀█▄▄▀ ▀█▄█▀ █ █ █ █ ▀█▄▄▀ ▀█▄█▀ █ █ █ +# █ +# ▀ +# +################################# +# +# Backend +# +################################# + +# Backend to use: "xrender" or "glx". +# GLX backend is typically much faster but depends on a sane driver. +backend = "glx"; + +################################# +# +# GLX backend +# +################################# + +glx-no-stencil = true; + +# GLX backend: Copy unmodified regions from front buffer instead of redrawing them all. +# My tests with nvidia-drivers show a 10% decrease in performance when the whole screen is modified, +# but a 20% increase when only 1/4 is. +# My tests on nouveau show terrible slowdown. +glx-copy-from-front = false; + +# GLX backend: Use MESA_copy_sub_buffer to do partial screen update. +# My tests on nouveau shows a 200% performance boost when only 1/4 of the screen is updated. +# May break VSync and is not available on some drivers. +# Overrides --glx-copy-from-front. +# glx-use-copysubbuffermesa = true; + +# GLX backend: Avoid rebinding pixmap on window damage. +# Probably could improve performance on rapid window content changes, but is known to break things on some drivers (LLVMpipe). +# Recommended if it works. +# glx-no-rebind-pixmap = true; + +# GLX backend: GLX buffer swap method we assume. +# Could be undefined (0), copy (1), exchange (2), 3-6, or buffer-age (-1). +# undefined is the slowest and the safest, and the default value. +# copy is fastest, but may fail on some drivers, +# 2-6 are gradually slower but safer (6 is still faster than 0). +# Usually, double buffer means 2, triple buffer means 3. +# buffer-age means auto-detect using GLX_EXT_buffer_age, supported by some drivers. +# Useless with --glx-use-copysubbuffermesa. +# Partially breaks --resize-damage. +# Defaults to undefined. +#glx-swap-method = "undefined"; + +################################# +# +# Shadows +# +################################# + +# Enabled client-side shadows on windows. +shadow = true; +# The blur radius for shadows. (default 12) +shadow-radius = 5; +# The left offset for shadows. (default -15) +shadow-offset-x = -5; +# The top offset for shadows. (default -15) +shadow-offset-y = -5; +# The translucency for shadows. (default .75) +shadow-opacity = 0.5; + +# Set if you want different colour shadows +# shadow-red = 0.0; +# shadow-green = 0.0; +# shadow-blue = 0.0; + +# The shadow exclude options are helpful if you have shadows enabled. Due to the way picom draws its shadows, certain applications will have visual glitches +# (most applications are fine, only apps that do weird things with xshapes or argb are affected). +# This list includes all the affected apps I found in my testing. The "! name~=''" part excludes shadows on any "Unknown" windows, this prevents a visual glitch with the XFWM alt tab switcher. +shadow-exclude = [ + "! name~=''", + "name = 'Notification'", + "name = 'Plank'", + "name = 'Docky'", + "name = 'Kupfer'", + "name = 'xfce4-notifyd'", + "name *= 'VLC'", + "name *= 'compton'", + "name *= 'picom'", + "name *= 'Chromium'", + "name *= 'Chrome'", + "name *= 'Firefox'", + "name *= 'Thunderbird'", + "class_g = 'Firefox' && argb", + "class_g = 'Conky'", + "class_g = 'Kupfer'", + "class_g = 'Synapse'", + "class_g ?= 'Notify-osd'", + "class_g ?= 'Cairo-dock'", + "class_g ?= 'Xfce4-notifyd'", + "class_g ?= 'Xfce4-power-manager'", + "_GTK_FRAME_EXTENTS@:c", + "_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'" +]; +# Avoid drawing shadow on all shaped windows (see also: --detect-rounded-corners) +shadow-ignore-shaped = false; + +################################# +# +# Opacity +# +################################# + +inactive-opacity = 1; +active-opacity = 1; +frame-opacity = 1; +inactive-opacity-override = false; + +opacity-rule = [ + "90:class_g = 'Termite' && focused", + "60:class_g = 'Termite' && !focused" +]; + +# Dim inactive windows. (0.0 - 1.0) +# inactive-dim = 0.2; +# Do not let dimness adjust based on window opacity. +# inactive-dim-fixed = true; +# Blur background of transparent windows. Bad performance with X Render backend. GLX backend is preferred. +# blur-background = true; +# Blur background of opaque windows with transparent frames as well. +# blur-background-frame = true; +# Do not let blur radius adjust based on window opacity. +blur-background-fixed = false; +blur-background-exclude = [ + "window_type = 'dock'", + "window_type = 'desktop'" +]; + +################################# +# +# Fading +# +################################# + +# Fade windows during opacity changes. +fading = true; +# The time between steps in a fade in milliseconds. (default 10). +fade-delta = 4; +# Opacity change between steps while fading in. (default 0.028). +fade-in-step = 0.03; +# Opacity change between steps while fading out. (default 0.03). +fade-out-step = 0.03; +# Fade windows in/out when opening/closing +# no-fading-openclose = true; + +# Specify a list of conditions of windows that should not be faded. +fade-exclude = [ ]; + +################################# +# +# Other +# +################################# + +# Try to detect WM windows and mark them as active. +mark-wmwin-focused = true; +# Mark all non-WM but override-redirect windows active (e.g. menus). +mark-ovredir-focused = true; +# Use EWMH _NET_WM_ACTIVE_WINDOW to determine which window is focused instead of using FocusIn/Out events. +# Usually more reliable but depends on a EWMH-compliant WM. +use-ewmh-active-win = true; +# Detect rounded corners and treat them as rectangular when --shadow-ignore-shaped is on. +detect-rounded-corners = true; + +# Detect _NET_WM_OPACITY on client windows, useful for window managers not passing _NET_WM_OPACITY of client windows to frame windows. +# This prevents opacity being ignored for some apps. +# For example without this enabled my xfce4-notifyd is 100% opacity no matter what. +detect-client-opacity = true; + +# Specify refresh rate of the screen. +# If not specified or 0, picom will try detecting this with X RandR extension. +refresh-rate = 0; + +# Vertical synchronization: match the refresh rate of the monitor +vsync = false; + +# Enable DBE painting mode, intended to use with VSync to (hopefully) eliminate tearing. +# Reported to have no effect, though. +dbe = false; + +# Limit picom to repaint at most once every 1 / refresh_rate second to boost performance. +# This should not be used with --vsync drm/opengl/opengl-oml as they essentially does --sw-opti's job already, +# unless you wish to specify a lower refresh rate than the actual value. +#sw-opti = true; + +# Unredirect all windows if a full-screen opaque window is detected, to maximize performance for full-screen windows, like games. +# Known to cause flickering when redirecting/unredirecting windows. +unredir-if-possible = true; + +# Specify a list of conditions of windows that should always be considered focused. +focus-exclude = [ ]; + +# Use WM_TRANSIENT_FOR to group windows, and consider windows in the same group focused at the same time. +detect-transient = true; +# Use WM_CLIENT_LEADER to group windows, and consider windows in the same group focused at the same time. +# WM_TRANSIENT_FOR has higher priority if --detect-transient is enabled, too. +detect-client-leader = true; + +################################# +# +# Window type settings +# +################################# + +wintypes: +{ + tooltip = + { + # fade: Fade the particular type of windows. + fade = true; + # shadow: Give those windows shadow + shadow = false; + # opacity: Default opacity for the type of windows. + opacity = 0.85; + # focus: Whether to always consider windows of this type focused. + focus = true; + }; + menu = { shadow = false; }; + dropdown_menu = { shadow = false; }; + popup_menu = { shadow = false; }; + utility = { shadow = false; }; +}; + +###################### +# +# XSync +# See: https://github.com/yshui/picom/commit/b18d46bcbdc35a3b5620d817dd46fbc76485c20d +# +###################### + +# Use X Sync fence to sync clients' draw calls. Needed on nvidia-drivers with GLX backend for some users. +xrender-sync-fence = true; diff --git a/dot_config/i3/executable_sensors.sh b/dot_config/i3/executable_sensors.sh new file mode 100644 index 0000000..5da8e0a --- /dev/null +++ b/dot_config/i3/executable_sensors.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +gpu_temp=$(sensors | awk '/Sensor 2/ {print $3}') +cpu_temp=$(sensors | awk '/Tctl/ {print $2}') +echo "CPU: ${cpu_temp}|GPU ${gpu_temp}" diff --git a/dot_config/i3/executable_shutdown_menu b/dot_config/i3/executable_shutdown_menu new file mode 100644 index 0000000..c826e1a --- /dev/null +++ b/dot_config/i3/executable_shutdown_menu @@ -0,0 +1,186 @@ +#!/usr/bin/env bash +# +# Use rofi/zenity to change system runstate thanks to systemd. +# +# Note: this currently relies on associative array support in the shell. +# +# Inspired from i3pystatus wiki: +# https://github.com/enkore/i3pystatus/wiki/Shutdown-Menu +# +# Copyright 2015 Benjamin Chrétien +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +####################################################################### +# BEGIN CONFIG # +####################################################################### + +# Use a custom lock script +#LOCKSCRIPT="i3lock-extra -m pixelize" + +# Colors: FG (foreground), BG (background), HL (highlighted) +FG_COLOR="${FG_COLOR:-#bbbbbb}" +BG_COLOR="${BG_COLOR:-#111111}" +HLFG_COLOR="${HLFG_COLOR:-#111111}" +HLBG_COLOR="${HLBG_COLOR:-#bbbbbb}" +BORDER_COLOR="${BORDER_COLOR:-#222222}" + +# Options not related to colors +ROFI_TEXT="${ROFI_TEXT:-Menu:}" +ROFI_OPTIONS=(${ROFI_OPTIONS:--width 11 -location 3 -hide-scrollbar -bw 2}) + +# Zenity options +ZENITY_TITLE="${ZENITY_TITLE:-Menu}" +ZENITY_TEXT="${ZENITY_TEXT:-Action:}" +ZENITY_OPTIONS=(${ZENITY_OPTIONS:---column= --hide-header}) + +####################################################################### +# END CONFIG # +####################################################################### + +# Whether to ask for user's confirmation +enable_confirmation=${ENABLE_CONFIRMATIONS:-false} + +# Preferred launcher if both are available +preferred_launcher="${LAUNCHER:-rofi}" + +usage="$(basename "$0") [-h] [-c] [-p name] -- display a menu for shutdown, reboot, lock etc. + +where: + -h show this help text + -c ask for user confirmation + -p preferred launcher (rofi or zenity) + +This script depends on: + - systemd, + - i3, + - rofi or zenity." + +# Check whether the user-defined launcher is valid +launcher_list=(rofi zenity) +function check_launcher() { + if [[ ! "${launcher_list[@]}" =~ (^|[[:space:]])"$1"($|[[:space:]]) ]]; then + echo "Supported launchers: ${launcher_list[*]}" + exit 1 + else + # Get array with unique elements and preferred launcher first + # Note: uniq expects a sorted list, so we cannot use it + i=1 + launcher_list=($(for l in "$1" "${launcher_list[@]}"; do printf "%i %s\n" "$i" "$l"; let i+=1; done \ + | sort -uk2 | sort -nk1 | cut -d' ' -f2- | tr '\n' ' ')) + fi +} + +# Parse CLI arguments +while getopts "hcp:" option; do + case "${option}" in + h) echo "${usage}" + exit 0 + ;; + c) enable_confirmation=true + ;; + p) preferred_launcher="${OPTARG}" + check_launcher "${preferred_launcher}" + ;; + *) exit 1 + ;; + esac +done +check_launcher "${preferred_launcher}" + +# Check whether a command exists +function command_exists() { + command -v "$1" &> /dev/null 2>&1 +} + +# systemctl required +if ! command_exists systemctl ; then + exit 1 +fi + +# menu defined as an associative array +typeset -A menu + +# Menu with keys/commands +menu=( + [Shutdown]="systemctl poweroff" + [Reboot]="systemctl reboot" + [Hibernate]="systemctl hibernate" + [Suspend]="systemctl suspend" + [Halt]="systemctl halt" + [Lock]="${LOCKSCRIPT:-i3lock --color=${BG_COLOR#"#"}}" + [Logout]="i3-msg exit" + [Cancel]="" +) +menu_nrows=${#menu[@]} + +# Menu entries that may trigger a confirmation message +menu_confirm="Shutdown Reboot Hibernate Suspend Halt Logout" + +launcher_exe="" +launcher_options="" +rofi_colors="" + +function prepare_launcher() { + if [[ "$1" == "rofi" ]]; then + rofi_colors=(-bc "${BORDER_COLOR}" -bg "${BG_COLOR}" -fg "${FG_COLOR}" \ + -hlfg "${HLFG_COLOR}" -hlbg "${HLBG_COLOR}") + launcher_exe="rofi" + launcher_options=(-dmenu -i -lines "${menu_nrows}" -p "${ROFI_TEXT}" \ + "${rofi_colors}" "${ROFI_OPTIONS[@]}") + elif [[ "$1" == "zenity" ]]; then + launcher_exe="zenity" + launcher_options=(--list --title="${ZENITY_TITLE}" --text="${ZENITY_TEXT}" \ + "${ZENITY_OPTIONS[@]}") + fi +} + +for l in "${launcher_list[@]}"; do + if command_exists "${l}" ; then + prepare_launcher "${l}" + break + fi +done + +# No launcher available +if [[ -z "${launcher_exe}" ]]; then + exit 1 +fi + +launcher=(${launcher_exe} "${launcher_options[@]}") +selection="$(printf '%s\n' "${!menu[@]}" | sort | "${launcher[@]}")" + +function ask_confirmation() { + if [ "${launcher_exe}" == "rofi" ]; then + confirmed=$(echo -e "Yes\nNo" | rofi -dmenu -i -lines 2 -p "${selection}?" \ + "${rofi_colors}" "${ROFI_OPTIONS[@]}") + [ "${confirmed}" == "Yes" ] && confirmed=0 + elif [ "${launcher_exe}" == "zenity" ]; then + zenity --question --text "Are you sure you want to ${selection,,}?" + confirmed=$? + fi + + if [ "${confirmed}" == 0 ]; then + i3-msg -q "exec ${menu[${selection}]}" + fi +} + +if [[ $? -eq 0 && ! -z ${selection} ]]; then + if [[ "${enable_confirmation}" = true && \ + ${menu_confirm} =~ (^|[[:space:]])"${selection}"($|[[:space:]]) ]]; then + ask_confirmation + else + i3-msg -q "exec ${menu[${selection}]}" + fi +fi diff --git a/dot_config/i3/executable_usb b/dot_config/i3/executable_usb new file mode 100644 index 0000000..f74f0e4 --- /dev/null +++ b/dot_config/i3/executable_usb @@ -0,0 +1,368 @@ +#!/usr/bin/env python3 +# +# Copyright (C) 2015 James Murphy +# Licensed under the terms of the GNU GPL v2 only. +# +# i3blocks blocklet script to output connected usb storage device info. + +import os + +def _default(name, default='', arg_type=str): + val = default + if name in os.environ: + val = os.environ[name] + return arg_type(val) + +############################################################################### +# BEGIN CONFIG +# Most of these can be specified as command line options, run with --help for +# more information. +# You may edit any of the following entries. DO NOT delete any of them, else +# the main script will have unpredictable behavior. +############################################################################### + +# Color options, can be a color name or #RRGGBB +INFO_TEXT_COLOR = _default("INFO_TEXT_COLOR", "white") +MOUNTED_COLOR = _default("MOUNTED_COLOR", "green") +PLUGGED_COLOR = _default("PLUGGED_COLOR", "gray") +LOCKED_COLOR = _default("LOCKED_COLOR", "gray") +UNLOCKED_NOT_MOUNTED_COLOR = _default("UNLOCKED_NOT_MOUNTED_COLOR", "yellow") +PARTITIONLESS_COLOR = _default("PARTITIONLESS_COLOR", "red") + +# Default texts +PARTITIONLESS_TEXT = _default("PARTITIONLESS_TEXT", "no partitions") +SEPARATOR = _default("SEPARATOR", " | ") + +# Indicate whether an encrypted partition is locked/unlocked, "" is allowed. +LOCKED_INDICATOR = _default("LOCKED_INDICATOR", "\uf023 ") +UNLOCKED_INDICATOR = _default("UNLOCKED_INDICATOR", "\uf09c ") + +# Shows instead of space available when a partition is mounted readonly +READONLY_INDICATOR = _default("READONLY_INDICATOR", "ro") + +# Maximum length of a filesystem label to display. Use None to disable +# truncation, a positive integer to right truncate to that many characters, or +# a negative integer to left truncate to that many characters. Setting this +# option to 0 will disable the displaying of filesystem labels. +TRUNCATE_FS_LABELS = _default("TRUNCASE_FS_LABELS", None) + +# List of devices to ignore. Must be a valid python3 representation of a list +# of strings +IGNORE_LIST = _default("IGNORE_LIST", "[]") +if IGNORE_LIST: + import ast + IGNORE_LIST = list(map(lambda p: + p if p.startswith("/") + else "/dev/{}".format(p), + ast.literal_eval(IGNORE_LIST) + )) + + +# Edit this function to ignore certain devices (e.g. those that are always +# plugged in). +# The dictionary udev_attributes_dict contains all the attributes given by +# udevadm info --query=propery --name=$path +def ignore(path, udev_attributes_dict): + # E.g. how to ignore devices whose device name begins with /dev/sda + #if udev_attributes_dict["DEVNAME"].startswith("/dev/sda"): + # return True + return False + +# Edit this function to ignore devices before the udev attributes are +# computed in order to save time and memory. +def fastIgnore(path): + if path in IGNORE_LIST: + return True + + # E.g. how to to ignore devices whose path begins with /dev/sda + #if path.startswith("/dev/sda"): + # return True + + # E.g. how to ignore a fixed set of paths + #if path in [ "/dev/path1", "/dev/path2", "/dev/path3" ]: + # return True + return False + +############################################################################### +# END CONFIG +# DO NOT EDIT ANYTHING AFTER THIS POINT UNLESS YOU KNOW WHAT YOU ARE DOING +############################################################################### + +from subprocess import check_output +import argparse + +def pangoEscape(text): + return text.replace("&", "&").replace("<", "<").replace(">", ">") + +def getLeafDevicePaths(): + lines = check_output(['lsblk', '-spndo', 'NAME'], universal_newlines=True) + lines = lines.split("\n") + lines = filter(None, lines) + return lines + +def getKernelName(path): + return check_output(['lsblk', '-ndso', 'KNAME', path], + universal_newlines=True).rstrip("\n") + +def getDeviceType(path): + return check_output(['lsblk', '-no', 'TYPE', path], + universal_newlines=True).strip() + +def getFSType(path): + global attributeMaps + return attributeMaps[path].get("ID_FS_TYPE") + +def isLUKSPartition(path): + return getFSType(path) == "crypto_LUKS" + +def isSwapPartition(path): + return getFSType(path) == "swap" + +def getFSLabel(path): + global attributeMaps + label = attributeMaps[path].get("ID_FS_LABEL_ENC", "") + if label: + label = label.encode().decode("unicode-escape") + if type(TRUNCATE_FS_LABELS) == int: + if TRUNCATE_FS_LABELS >= 0: + label = label[:TRUNCATE_FS_LABELS] + elif TRUNCATE_FS_LABELS < 0: + label = label[TRUNCATE_FS_LABELS:] + return label + +def getFSOptions(path): + lines = check_output(['findmnt', '-no', 'FS-OPTIONS', path], + universal_newlines=True).strip() + lines = lines.split(",") + return lines + +def isReadOnly(path): + return "ro" in getFSOptions(path) + +def isExtendedPartitionMarker(path): + global attributeMaps + MARKERS = ["0xf", "0x5"] + return attributeMaps[path].get("ID_PART_ENTRY_TYPE") in MARKERS + +def getMountPoint(path): + return check_output(['lsblk', '-ndo', 'MOUNTPOINT', path], + universal_newlines=True).rstrip("\n") + +def getSpaceAvailable(path): + lines = check_output(['df', '-h', '--output=avail', path], + universal_newlines=True) + lines = lines.split("\n") + if len(lines) != 3: + return "" + else: + return lines[1].strip() + +def getLockedCryptOutput(path): + form = "[{}{}]" + kname = pangoEscape(getKernelName(path)) + output = form.format(LOCKED_COLOR, LOCKED_INDICATOR, kname) + return output + +def getParentKernelName(path): + lines = check_output(['lsblk', '-nso', 'KNAME', path], + universal_newlines=True) + lines = lines.split("\n") + if len(lines) > 2: + return lines[1].rstrip("\n") + else: + return "" + +def getUnlockedCryptOutput(path): + mountPoint = getMountPoint(path) + if mountPoint: + color = MOUNTED_COLOR + if isReadOnly(path): + spaceAvail = READONLY_INDICATOR + else: + spaceAvail = pangoEscape(getSpaceAvailable(path)) + mountPoint = "{}:".format(pangoEscape(mountPoint)) + else: + color = UNLOCKED_NOT_MOUNTED_COLOR + spaceAvail = "" + kernelName = pangoEscape(getKernelName(path)) + parentKernelName = pangoEscape(getParentKernelName(path)) + + block = "[{}{}:{}]" + block = block.format(color, UNLOCKED_INDICATOR, parentKernelName, kernelName) + + label = pangoEscape(getFSLabel(path)) + if label: + label = '"{}"'.format(label) + + items = [block, label, mountPoint, spaceAvail] + return " ".join(filter(None, items)) + +def getSwapOutput(path): + return "" + +def getUnencryptedPartitionOutput(path): + mountPoint = getMountPoint(path) + if mountPoint: + color = MOUNTED_COLOR + if isReadOnly(path): + spaceAvail = READONLY_INDICATOR + else: + spaceAvail = pangoEscape(getSpaceAvailable(path)) + mountPoint = "{}:".format(pangoEscape(mountPoint)) + else: + color = PLUGGED_COLOR + spaceAvail = "" + kernelName = pangoEscape(getKernelName(path)) + + block = "[{}]" + block = block.format(color, kernelName) + + label = pangoEscape(getFSLabel(path)) + if label: + label = '"{}"'.format(label) + + items = [block, label, mountPoint, spaceAvail] + return " ".join(filter(None, items)) + +def getDiskWithNoPartitionsOutput(path): + form = "[{}] {}" + kernelName = pangoEscape(getKernelName(path)) + return form.format(PARTITIONLESS_COLOR, kernelName, PARTITIONLESS_TEXT) + +def getOutput(path): + if isSwapPartition(path): + return getSwapOutput(path) + t = getDeviceType(path) + if t == "part": + if isExtendedPartitionMarker(path): + return "" + elif isLUKSPartition(path): + return getLockedCryptOutput(path) + else: + return getUnencryptedPartitionOutput(path) + elif t == "disk": + return getDiskWithNoPartitionsOutput(path) + elif t == "crypt": + return getUnlockedCryptOutput(path) + elif t == "rom" : + return "" + +def makeAttributeMap(path): + attributeMap = {} + lines = check_output( + ['udevadm','info','--query=property','--name={}'.format(path)], + universal_newlines=True) + lines = lines.split("\n") + for line in lines: + if line: + key, val = line.split("=", maxsplit=1) + attributeMap[key] = val + return attributeMap + +def getAttributeMaps(paths): + return {path : makeAttributeMap(path) for path in paths} + +def parseArguments(): + parser = argparse.ArgumentParser(prog="usb.py", + description="i3blocks blocklet script to output connected" + " usb storage device info") + parser.add_argument("--info-text-color", nargs=1, + help="Set the info text color. " + "Default: {}".format(INFO_TEXT_COLOR)) + parser.add_argument("--mounted-color", nargs=1, + help="Set the color of mounted devices. " + "Default: {}".format(MOUNTED_COLOR)) + parser.add_argument("--plugged-color", nargs=1, + help="Set the color of plugged devices. " + "Default: {}".format(PLUGGED_COLOR)) + parser.add_argument("--locked-color", nargs=1, + help="Set the color of locked crypt devices. " + "Default: {}".format(LOCKED_COLOR)) + parser.add_argument("--unlocked-not-mounted-color", nargs=1, + help="Set the color of unlocked not mounted crypt devices. " + "Default: {}".format(UNLOCKED_NOT_MOUNTED_COLOR)) + parser.add_argument("--partitionless-color", nargs=1, + help="Set the color of devicees with no partitions. " + "Defaut: {}".format(PARTITIONLESS_COLOR)) + parser.add_argument("--partitionless-text", nargs=1, + help="Set the text to display for a device with no partitions. " + "Default: {}".format(PARTITIONLESS_TEXT)) + parser.add_argument("--separator", nargs=1, + help="Set the separator between devices. " + "Default: {}".format(SEPARATOR)) + parser.add_argument("--locked-indicator", nargs=1, + help="Set the indicator to use for a locked crypt device. " + "Default: {}".format(LOCKED_INDICATOR)) + parser.add_argument("--unlocked-indicator", nargs=1, + help="Set the indicator to use for an unlocked crypt device. " + "Default: {}".format(UNLOCKED_INDICATOR)) + parser.add_argument("--readonly-indicator", nargs=1, + help="Set the indicator to use for a readonly device. " + "Default: {}".format(READONLY_INDICATOR)) + parser.add_argument("--truncate-fs-labels", type=int, nargs=1, + help="Trucate device labels to a certain number of characters, must be" + "an integer." + "Default: {}".format(TRUNCATE_FS_LABELS)) + parser.add_argument("-i", "--ignore", action="append", + help="Ignore a device by path. " + "If path doesn't begin with / then it is assumed to be in /dev/") + args = parser.parse_args() + setParsedArgs(args) + +def setParsedArgs(args): + if args.info_text_color != None: + global INFO_TEXT_COLOR + INFO_TEXT_COLOR = args.info_text_color[0] + if args.mounted_color != None: + global MOUNTED_COLOR + MOUNTED_COLOR = args.mounted_color[0] + if args.plugged_color != None: + global PLUGGED_COLOR + PLUGGED_COLOR = args.plugged_color[0] + if args.locked_color != None: + global LOCKED_COLOR + LOCKED_COLOR = args.locked_color[0] + if args.unlocked_not_mounted_color != None: + global UNLOCKED_NOT_MOUNTED_COLOR + UNLOCKED_NOT_MOUNTED_COLOR = args.unlocked_not_mounted_color[0] + if args.partitionless_color != None: + global PARTITIONLESS_COLOR + PARTITIONLESS_COLOR = args.partitionless_color[0] + if args.partitionless_text != None: + global PARTITIONLESS_TEXT + PARTITIONLESS_TEXT = args.partitionless_text[0] + if args.separator != None: + global SEPARATOR + SEPARATOR = args.separator[0] + if args.locked_indicator != None: + global LOCKED_INDICATOR + LOCKED_INDICATOR = args.locked_indicator[0] + if args.unlocked_indicator != None: + global UNLOCKED_INDICATOR + UNLOCKED_INDICATOR = args.unlocked_indicator[0] + if args.readonly_indicator != None: + global READONLY_INDICATOR + READONLY_INDICATOR = args.readonly_indicator[0] + if args.truncate_fs_labels != None: + global TRUNCATE_FS_LABELS + TRUNCATE_FS_LABELS = args.truncate_fs_labels[0] + if args.ignore != None: + args.ignore = list(map(lambda p: + p if p.startswith("/") else "/dev/{}".format(p), args.ignore)) + global fastIgnore + oldFastIgnore = fastIgnore + def newFastIgnore(path): + return oldFastIgnore(path) or path in args.ignore + fastIgnore = newFastIgnore + +parseArguments() +leaves = getLeafDevicePaths() +leaves = [path for path in leaves if not fastIgnore(path)] +attributeMaps = getAttributeMaps(leaves) +leaves = (path for path in leaves if not ignore(path, attributeMaps[path])) +outputs = filter(None, map(getOutput, leaves)) +output = SEPARATOR.join(outputs) +if output: + output = "{}".format(INFO_TEXT_COLOR, output) +print(output) +print(output) diff --git a/dot_config/i3/executable_vpn.sh b/dot_config/i3/executable_vpn.sh new file mode 100644 index 0000000..e846a3d --- /dev/null +++ b/dot_config/i3/executable_vpn.sh @@ -0,0 +1,9 @@ +#!/bin/bash +# +# Use nmcli to display the VPN status +# +if ip link | grep -q tun; then + echo "" +else + echo "" +fi diff --git a/dot_config/i3/executable_weather.rb b/dot_config/i3/executable_weather.rb new file mode 100644 index 0000000..0389c93 --- /dev/null +++ b/dot_config/i3/executable_weather.rb @@ -0,0 +1,59 @@ +#!/usr/bin/env ruby +# Fetch weather for your city from OpenWeatherMap +# You need an API key to fetch data, and store the API key inside ENV +# export I3_OWM_APIKEY="0986273cf8ac41578b90bcc90bc559b4" +# Depends on Weather Icons: https://erikflowers.github.io/weather-icons/ + +require 'open-uri' +require 'json' +# Get info from open weather map +class Weather + API = 'http://api.openweathermap.org/data/2.5/weather?id=CITY&units=metric&APPID=APIKEY' + API_KEY = 'API-KEY-HERE' + + attr_accessor :api_url, :weather + + def initialize(city) + @api_url = API.gsub('CITY', city).gsub('APIKEY', API_KEY) + @weather = contact_openweathermap + end + + # Public - Return formated response - temperature / weather + # + # Returns String + def show + info = @weather['weather'][0]['main'] + temp = @weather['main']['temp'] + " #{temp}  #{icon(info)} #{info}" + end + + private + + # Private - Use FontAwesome icons to show the weather conditions + # + # Returns Unicode char + def icon(weather) + case weather + when 'Fog' then '' + when /Clear/ then ' ' + when /Rain/ then '' + when /Cloud/ then '' + when /Snow/ then '' + else + '' + end + end + + # Private - Fetch information from OpenWeatherMap + # + # Returns Hash + def contact_openweathermap + JSON.parse(open(@api_url).read) + end +end + +# city = 'Zagreb' +city_id = '6618983' +out = Weather.new(city_id).show + +puts "#{out}" diff --git a/dot_config/i3status-rust/executable_config.toml b/dot_config/i3status-rust/executable_config.toml new file mode 100644 index 0000000..3508a2a --- /dev/null +++ b/dot_config/i3status-rust/executable_config.toml @@ -0,0 +1,71 @@ +[theme] +name = "slick" +[theme.overrides] +idle_bg = "#2f343f" +idle_fg = "#f3f4f5" + +[icons] +name = "awesome" +#[icons.overrides] +#bat = " | | " +#bat_full = " |X| " +#bat_charging = " |^| " +#bat_discharging = " |v| " + +[[block]] +block = "networkmanager" +on_click = "wezterm start nmtui" +interface_name_exclude = ["br\\-[0-9a-f]{12}", "docker\\d+"] +interface_name_include = [] +device_format = "{icon} {ap} {ips}" +ap_format = "{ssid} {strength}" + +#[[block]] +#block = "net" +#on_click = "wezterm start nmtui" +#device = "wlan0" +#format = " {ssid} {signal_strength} {ip} {speed_down;K*b} {graph_down:8;M*_b#50}" +#interval = 1 + +[[block]] +block = "disk_space" +path = "/" +alias = "/" +info_type = "available" +unit = "GB" +interval = 20 +warning = 20.0 +alert = 10.0 + +[[block]] +block = "memory" +display_type = "memory" +format_mem = "{mem_used_percents}" +format_swap = "{swap_used_percents}" + +[[block]] +block = "cpu" +interval = 1 +format = "{barchart} {utilization} {frequency}" + +[[block]] +block = "load" +interval = 1 +format = "{1m}" + +[[block]] +block = "sound" +on_click = "pavucontrol-qt" + +[[block]] +block = "time" +interval = 1 +format = "%a %Y-%m-%d %H:%M:%S" + +[[block]] +block = "uptime" + +[[block]] +block = "battery" +interval = 10 +format = "{percentage} {time}" diff --git a/dot_config/kitty/executable_kitty.conf b/dot_config/kitty/executable_kitty.conf new file mode 100644 index 0000000..ac638bc --- /dev/null +++ b/dot_config/kitty/executable_kitty.conf @@ -0,0 +1,2242 @@ +# vim:fileencoding=utf-8:foldmethod=marker + +#: Fonts {{{ + +#: kitty has very powerful font management. You can configure +#: individual font faces and even specify special fonts for particular +#: characters. + +font_family monospace +bold_font auto +italic_font auto +bold_italic_font auto + +#: You can specify different fonts for the bold/italic/bold-italic +#: variants. To get a full list of supported fonts use the `kitty +#: +list-fonts` command. By default they are derived automatically, by +#: the OSes font system. When bold_font or bold_italic_font is set to +#: auto on macOS, the priority of bold fonts is semi-bold, bold, +#: heavy. Setting them manually is useful for font families that have +#: many weight variants like Book, Medium, Thick, etc. For example:: + +#: font_family Operator Mono Book +#: bold_font Operator Mono Medium +#: italic_font Operator Mono Book Italic +#: bold_italic_font Operator Mono Medium Italic + +font_size 11.0 + +#: Font size (in pts) + +force_ltr no + +#: kitty does not support BIDI (bidirectional text), however, for RTL +#: scripts, words are automatically displayed in RTL. That is to say, +#: in an RTL script, the words "HELLO WORLD" display in kitty as +#: "WORLD HELLO", and if you try to select a substring of an RTL- +#: shaped string, you will get the character that would be there had +#: the the string been LTR. For example, assuming the Hebrew word +#: ירושלים, selecting the character that on the screen appears to be ם +#: actually writes into the selection buffer the character י. kitty's +#: default behavior is useful in conjunction with a filter to reverse +#: the word order, however, if you wish to manipulate RTL glyphs, it +#: can be very challenging to work with, so this option is provided to +#: turn it off. Furthermore, this option can be used with the command +#: line program GNU FriBidi +#: to get BIDI +#: support, because it will force kitty to always treat the text as +#: LTR, which FriBidi expects for terminals. + +# symbol_map + +#: E.g. symbol_map U+E0A0-U+E0A3,U+E0C0-U+E0C7 PowerlineSymbols + +#: Map the specified Unicode codepoints to a particular font. Useful +#: if you need special rendering for some symbols, such as for +#: Powerline. Avoids the need for patched fonts. Each Unicode code +#: point is specified in the form `U+`. You +#: can specify multiple code points, separated by commas and ranges +#: separated by hyphens. This option can be specified multiple times. +#: The syntax is:: + +#: symbol_map codepoints Font Family Name + +# narrow_symbols + +#: E.g. narrow_symbols U+E0A0-U+E0A3,U+E0C0-U+E0C7 1 + +#: Usually, for Private Use Unicode characters and some symbol/dingbat +#: characters, if the character is followed by one or more spaces, +#: kitty will use those extra cells to render the character larger, if +#: the character in the font has a wide aspect ratio. Using this +#: option you can force kitty to restrict the specified code points to +#: render in the specified number of cells (defaulting to one cell). +#: This option can be specified multiple times. The syntax is:: + +#: narrow_symbols codepoints [optionally the number of cells] + +disable_ligatures never + +#: Choose how you want to handle multi-character ligatures. The +#: default is to always render them. You can tell kitty to not render +#: them when the cursor is over them by using cursor to make editing +#: easier, or have kitty never render them at all by using always, if +#: you don't like them. The ligature strategy can be set per-window +#: either using the kitty remote control facility or by defining +#: shortcuts for it in kitty.conf, for example:: + +#: map alt+1 disable_ligatures_in active always +#: map alt+2 disable_ligatures_in all never +#: map alt+3 disable_ligatures_in tab cursor + +#: Note that this refers to programming ligatures, typically +#: implemented using the calt OpenType feature. For disabling general +#: ligatures, use the font_features option. + +# font_features + +#: E.g. font_features none + +#: Choose exactly which OpenType features to enable or disable. This +#: is useful as some fonts might have features worthwhile in a +#: terminal. For example, Fira Code includes a discretionary feature, +#: zero, which in that font changes the appearance of the zero (0), to +#: make it more easily distinguishable from Ø. Fira Code also includes +#: other discretionary features known as Stylistic Sets which have the +#: tags ss01 through ss20. + +#: For the exact syntax to use for individual features, see the +#: HarfBuzz documentation . + +#: Note that this code is indexed by PostScript name, and not the font +#: family. This allows you to define very precise feature settings; +#: e.g. you can disable a feature in the italic font but not in the +#: regular font. + +#: On Linux, font features are first read from the FontConfig database +#: and then this option is applied, so they can be configured in a +#: single, central place. + +#: To get the PostScript name for a font, use `kitty +list-fonts +#: --psnames`: + +#: .. code-block:: sh + +#: $ kitty +list-fonts --psnames | grep Fira +#: Fira Code +#: Fira Code Bold (FiraCode-Bold) +#: Fira Code Light (FiraCode-Light) +#: Fira Code Medium (FiraCode-Medium) +#: Fira Code Regular (FiraCode-Regular) +#: Fira Code Retina (FiraCode-Retina) + +#: The part in brackets is the PostScript name. + +#: Enable alternate zero and oldstyle numerals:: + +#: font_features FiraCode-Retina +zero +onum + +#: Enable only alternate zero in the bold font:: + +#: font_features FiraCode-Bold +zero + +#: Disable the normal ligatures, but keep the calt feature which (in +#: this font) breaks up monotony:: + +#: font_features TT2020StyleB-Regular -liga +calt + +#: In conjunction with force_ltr, you may want to disable Arabic +#: shaping entirely, and only look at their isolated forms if they +#: show up in a document. You can do this with e.g.:: + +#: font_features UnifontMedium +isol -medi -fina -init + +# modify_font + +#: Modify font characteristics such as the position or thickness of +#: the underline and strikethrough. The modifications can have the +#: suffix px for pixels or % for percentage of original value. No +#: suffix means use pts. For example:: + +#: modify_font underline_position -2 +#: modify_font underline_thickness 150% +#: modify_font strikethrough_position 2px + +#: Additionally, you can modify the size of the cell in which each +#: font glyph is rendered and the baseline at which the glyph is +#: placed in the cell. For example:: + +#: modify_font cell_width 80% +#: modify_font cell_height -2px +#: modify_font baseline 3 + +#: Note that modifying the baseline will automatically adjust the +#: underline and strikethrough positions by the same amount. +#: Increasing the baseline raises glyphs inside the cell and +#: decreasing it lowers them. Decreasing the cell size might cause +#: rendering artifacts, so use with care. + +box_drawing_scale 0.001, 1, 1.5, 2 + +#: The sizes of the lines used for the box drawing Unicode characters. +#: These values are in pts. They will be scaled by the monitor DPI to +#: arrive at a pixel value. There must be four values corresponding to +#: thin, normal, thick, and very thick lines. + +#: }}} + +#: Cursor customization {{{ + +cursor #cccccc + +#: Default cursor color. If set to the special value none the cursor +#: will be rendered with a "reverse video" effect. It's color will be +#: the color of the text in the cell it is over and the text will be +#: rendered with the background color of the cell. Note that if the +#: program running in the terminal sets a cursor color, this takes +#: precedence. Also, the cursor colors are modified if the cell +#: background and foreground colors have very low contrast. + +cursor_text_color #111111 + +#: The color of text under the cursor. If you want it rendered with +#: the background color of the cell underneath instead, use the +#: special keyword: background. Note that if cursor is set to none +#: then this option is ignored. + +cursor_shape block + +#: The cursor shape can be one of block, beam, underline. Note that +#: when reloading the config this will be changed only if the cursor +#: shape has not been set by the program running in the terminal. This +#: sets the default cursor shape, applications running in the terminal +#: can override it. In particular, shell integration +#: in kitty sets +#: the cursor shape to beam at shell prompts. You can avoid this by +#: setting shell_integration to no-cursor. + +cursor_beam_thickness 1.5 + +#: The thickness of the beam cursor (in pts). + +cursor_underline_thickness 2.0 + +#: The thickness of the underline cursor (in pts). + +cursor_blink_interval -1 + +#: The interval to blink the cursor (in seconds). Set to zero to +#: disable blinking. Negative values mean use system default. Note +#: that the minimum interval will be limited to repaint_delay. + +cursor_stop_blinking_after 15.0 + +#: Stop blinking cursor after the specified number of seconds of +#: keyboard inactivity. Set to zero to never stop blinking. + +#: }}} + +#: Scrollback {{{ + +scrollback_lines 2000 + +#: Number of lines of history to keep in memory for scrolling back. +#: Memory is allocated on demand. Negative numbers are (effectively) +#: infinite scrollback. Note that using very large scrollback is not +#: recommended as it can slow down performance of the terminal and +#: also use large amounts of RAM. Instead, consider using +#: scrollback_pager_history_size. Note that on config reload if this +#: is changed it will only affect newly created windows, not existing +#: ones. + +scrollback_pager less --chop-long-lines --RAW-CONTROL-CHARS +INPUT_LINE_NUMBER + +#: Program with which to view scrollback in a new window. The +#: scrollback buffer is passed as STDIN to this program. If you change +#: it, make sure the program you use can handle ANSI escape sequences +#: for colors and text formatting. INPUT_LINE_NUMBER in the command +#: line above will be replaced by an integer representing which line +#: should be at the top of the screen. Similarly CURSOR_LINE and +#: CURSOR_COLUMN will be replaced by the current cursor position or +#: set to 0 if there is no cursor, for example, when showing the last +#: command output. + +scrollback_pager_history_size 0 + +#: Separate scrollback history size (in MB), used only for browsing +#: the scrollback buffer with pager. This separate buffer is not +#: available for interactive scrolling but will be piped to the pager +#: program when viewing scrollback buffer in a separate window. The +#: current implementation stores the data in UTF-8, so approximatively +#: 10000 lines per megabyte at 100 chars per line, for pure ASCII, +#: unformatted text. A value of zero or less disables this feature. +#: The maximum allowed size is 4GB. Note that on config reload if this +#: is changed it will only affect newly created windows, not existing +#: ones. + +scrollback_fill_enlarged_window no + +#: Fill new space with lines from the scrollback buffer after +#: enlarging a window. + +wheel_scroll_multiplier 5.0 + +#: Multiplier for the number of lines scrolled by the mouse wheel. +#: Note that this is only used for low precision scrolling devices, +#: not for high precision scrolling devices on platforms such as macOS +#: and Wayland. Use negative numbers to change scroll direction. See +#: also wheel_scroll_min_lines. + +wheel_scroll_min_lines 1 + +#: The minimum number of lines scrolled by the mouse wheel. The scroll +#: multiplier wheel_scroll_multiplier only takes effect after it +#: reaches this number. Note that this is only used for low precision +#: scrolling devices like wheel mice that scroll by very small amounts +#: when using the wheel. With a negative number, the minimum number of +#: lines will always be added. + +touch_scroll_multiplier 1.0 + +#: Multiplier for the number of lines scrolled by a touchpad. Note +#: that this is only used for high precision scrolling devices on +#: platforms such as macOS and Wayland. Use negative numbers to change +#: scroll direction. + +#: }}} + +#: Mouse {{{ + +mouse_hide_wait 3.0 + +#: Hide mouse cursor after the specified number of seconds of the +#: mouse not being used. Set to zero to disable mouse cursor hiding. +#: Set to a negative value to hide the mouse cursor immediately when +#: typing text. Disabled by default on macOS as getting it to work +#: robustly with the ever-changing sea of bugs that is Cocoa is too +#: much effort. + +url_color #0087bd +url_style curly + +#: The color and style for highlighting URLs on mouse-over. url_style +#: can be one of: none, straight, double, curly, dotted, dashed. + +open_url_with default + +#: The program to open clicked URLs. The special value default with +#: first look for any URL handlers defined via the open_actions +#: facility and if non +#: are found, it will use the Operating System's default URL handler +#: (open on macOS and xdg-open on Linux). + +url_prefixes file ftp ftps gemini git gopher http https irc ircs kitty mailto news sftp ssh + +#: The set of URL prefixes to look for when detecting a URL under the +#: mouse cursor. + +detect_urls yes + +#: Detect URLs under the mouse. Detected URLs are highlighted with an +#: underline and the mouse cursor becomes a hand over them. Even if +#: this option is disabled, URLs are still clickable. + +# url_excluded_characters + +#: Additional characters to be disallowed from URLs, when detecting +#: URLs under the mouse cursor. By default, all characters that are +#: legal in URLs are allowed. + +copy_on_select no + +#: Copy to clipboard or a private buffer on select. With this set to +#: clipboard, selecting text with the mouse will cause the text to be +#: copied to clipboard. Useful on platforms such as macOS that do not +#: have the concept of primary selection. You can instead specify a +#: name such as a1 to copy to a private kitty buffer. Map a shortcut +#: with the paste_from_buffer action to paste from this private +#: buffer. For example:: + +#: copy_on_select a1 +#: map shift+cmd+v paste_from_buffer a1 + +#: Note that copying to the clipboard is a security risk, as all +#: programs, including websites open in your browser can read the +#: contents of the system clipboard. + +paste_actions quote-urls-at-prompt + +#: A comma separated list of actions to take when pasting text into +#: the terminal. The supported paste actions are: + +#: quote-urls-at-prompt: +#: If the text being pasted is a URL and the cursor is at a shell prompt, +#: automatically quote the URL (needs shell_integration). +#: confirm: +#: Confirm the paste if bracketed paste mode is not active or there is more +#: a large amount of text being pasted. +#: filter: +#: Run the filter_paste() function from the file paste-actions.py in +#: the kitty config directory on the pasted text. The text returned by the +#: function will be actually pasted. + +strip_trailing_spaces never + +#: Remove spaces at the end of lines when copying to clipboard. A +#: value of smart will do it when using normal selections, but not +#: rectangle selections. A value of always will always do it. + +select_by_word_characters @-./_~?&=%+# + +#: Characters considered part of a word when double clicking. In +#: addition to these characters any character that is marked as an +#: alphanumeric character in the Unicode database will be matched. + +# select_by_word_characters_forward + +#: Characters considered part of a word when extending the selection +#: forward on double clicking. In addition to these characters any +#: character that is marked as an alphanumeric character in the +#: Unicode database will be matched. + +#: If empty (default) select_by_word_characters will be used for both +#: directions. + +click_interval -1.0 + +#: The interval between successive clicks to detect double/triple +#: clicks (in seconds). Negative numbers will use the system default +#: instead, if available, or fallback to 0.5. + +focus_follows_mouse no + +#: Set the active window to the window under the mouse when moving the +#: mouse around. + +pointer_shape_when_grabbed arrow + +#: The shape of the mouse pointer when the program running in the +#: terminal grabs the mouse. Valid values are: arrow, beam and hand. + +default_pointer_shape beam + +#: The default shape of the mouse pointer. Valid values are: arrow, +#: beam and hand. + +pointer_shape_when_dragging beam + +#: The default shape of the mouse pointer when dragging across text. +#: Valid values are: arrow, beam and hand. + +#: Mouse actions {{{ + +#: Mouse buttons can be mapped to perform arbitrary actions. The +#: syntax is: + +#: .. code-block:: none + +#: mouse_map button-name event-type modes action + +#: Where button-name is one of left, middle, right, b1 ... b8 with +#: added keyboard modifiers. For example: ctrl+shift+left refers to +#: holding the Ctrl+Shift keys while clicking with the left mouse +#: button. The value b1 ... b8 can be used to refer to up to eight +#: buttons on a mouse. + +#: event-type is one of press, release, doublepress, triplepress, +#: click, doubleclick. modes indicates whether the action is performed +#: when the mouse is grabbed by the program running in the terminal, +#: or not. The values are grabbed or ungrabbed or a comma separated +#: combination of them. grabbed refers to when the program running in +#: the terminal has requested mouse events. Note that the click and +#: double click events have a delay of click_interval to disambiguate +#: from double and triple presses. + +#: You can run kitty with the kitty --debug-input command line option +#: to see mouse events. See the builtin actions below to get a sense +#: of what is possible. + +#: If you want to unmap an action, map it to no_op. For example, to +#: disable opening of URLs with a plain click:: + +#: mouse_map left click ungrabbed no_op + +#: See all the mappable actions including mouse actions here +#: . + +#: .. note:: +#: Once a selection is started, releasing the button that started it will +#: automatically end it and no release event will be dispatched. + +clear_all_mouse_actions no + +#: Remove all mouse action definitions up to this point. Useful, for +#: instance, to remove the default mouse actions. + +#: Click the link under the mouse or move the cursor + +mouse_map left click ungrabbed mouse_handle_click selection link prompt + +#:: First check for a selection and if one exists do nothing. Then +#:: check for a link under the mouse cursor and if one exists, click +#:: it. Finally check if the click happened at the current shell +#:: prompt and if so, move the cursor to the click location. Note +#:: that this requires shell integration +#:: to work. + +#: Click the link under the mouse or move the cursor even when grabbed + +mouse_map shift+left click grabbed,ungrabbed mouse_handle_click selection link prompt + +#:: Same as above, except that the action is performed even when the +#:: mouse is grabbed by the program running in the terminal. + +#: Click the link under the mouse cursor + +mouse_map ctrl+shift+left release grabbed,ungrabbed mouse_handle_click link + +#:: Variant with Ctrl+Shift is present because the simple click based +#:: version has an unavoidable delay of click_interval, to +#:: disambiguate clicks from double clicks. + +#: Discard press event for link click + +mouse_map ctrl+shift+left press grabbed discard_event + +#:: Prevent this press event from being sent to the program that has +#:: grabbed the mouse, as the corresponding release event is used to +#:: open a URL. + +#: Paste from the primary selection + +mouse_map middle release ungrabbed paste_from_selection + +#: Start selecting text + +mouse_map left press ungrabbed mouse_selection normal + +#: Start selecting text in a rectangle + +mouse_map ctrl+alt+left press ungrabbed mouse_selection rectangle + +#: Select a word + +mouse_map left doublepress ungrabbed mouse_selection word + +#: Select a line + +mouse_map left triplepress ungrabbed mouse_selection line + +#: Select line from point + +mouse_map ctrl+alt+left triplepress ungrabbed mouse_selection line_from_point + +#:: Select from the clicked point to the end of the line. + +#: Extend the current selection + +mouse_map right press ungrabbed mouse_selection extend + +#:: If you want only the end of the selection to be moved instead of +#:: the nearest boundary, use move-end instead of extend. + +#: Paste from the primary selection even when grabbed + +mouse_map shift+middle release ungrabbed,grabbed paste_selection +mouse_map shift+middle press grabbed discard_event + +#: Start selecting text even when grabbed + +mouse_map shift+left press ungrabbed,grabbed mouse_selection normal + +#: Start selecting text in a rectangle even when grabbed + +mouse_map ctrl+shift+alt+left press ungrabbed,grabbed mouse_selection rectangle + +#: Select a word even when grabbed + +mouse_map shift+left doublepress ungrabbed,grabbed mouse_selection word + +#: Select a line even when grabbed + +mouse_map shift+left triplepress ungrabbed,grabbed mouse_selection line + +#: Select line from point even when grabbed + +mouse_map ctrl+shift+alt+left triplepress ungrabbed,grabbed mouse_selection line_from_point + +#:: Select from the clicked point to the end of the line even when +#:: grabbed. + +#: Extend the current selection even when grabbed + +mouse_map shift+right press ungrabbed,grabbed mouse_selection extend + +#: Show clicked command output in pager + +mouse_map ctrl+shift+right press ungrabbed mouse_show_command_output + +#:: Requires shell integration +#:: to work. + +#: }}} + +#: }}} + +#: Performance tuning {{{ + +repaint_delay 10 + +#: Delay between screen updates (in milliseconds). Decreasing it, +#: increases frames-per-second (FPS) at the cost of more CPU usage. +#: The default value yields ~100 FPS which is more than sufficient for +#: most uses. Note that to actually achieve 100 FPS, you have to +#: either set sync_to_monitor to no or use a monitor with a high +#: refresh rate. Also, to minimize latency when there is pending input +#: to be processed, this option is ignored. + +input_delay 3 + +#: Delay before input from the program running in the terminal is +#: processed (in milliseconds). Note that decreasing it will increase +#: responsiveness, but also increase CPU usage and might cause flicker +#: in full screen programs that redraw the entire screen on each loop, +#: because kitty is so fast that partial screen updates will be drawn. + +sync_to_monitor yes + +#: Sync screen updates to the refresh rate of the monitor. This +#: prevents screen tearing +#: when scrolling. +#: However, it limits the rendering speed to the refresh rate of your +#: monitor. With a very high speed mouse/high keyboard repeat rate, +#: you may notice some slight input latency. If so, set this to no. + +#: }}} + +#: Terminal bell {{{ + +enable_audio_bell yes + +#: The audio bell. Useful to disable it in environments that require +#: silence. + +visual_bell_duration 0.0 + +#: The visual bell duration (in seconds). Flash the screen when a bell +#: occurs for the specified number of seconds. Set to zero to disable. + +visual_bell_color none + +#: The color used by visual bell. Set to none will fall back to +#: selection background color. If you feel that the visual bell is too +#: bright, you can set it to a darker color. + +window_alert_on_bell yes + +#: Request window attention on bell. Makes the dock icon bounce on +#: macOS or the taskbar flash on linux. + +bell_on_tab "🔔 " + +#: Some text or a Unicode symbol to show on the tab if a window in the +#: tab that does not have focus has a bell. If you want to use leading +#: or trailing spaces, surround the text with quotes. See +#: tab_title_template for how this is rendered. + +#: For backwards compatibility, values of yes, y and true are +#: converted to the default bell symbol and no, n, false and none are +#: converted to the empty string. + +command_on_bell none + +#: Program to run when a bell occurs. The environment variable +#: KITTY_CHILD_CMDLINE can be used to get the program running in the +#: window in which the bell occurred. + +bell_path none + +#: Path to a sound file to play as the bell sound. If set to none, the +#: system default bell sound is used. Must be in a format supported by +#: the operating systems sound API, such as WAV or OGA on Linux +#: (libcanberra) or AIFF, MP3 or WAV on macOS (NSSound) + +#: }}} + +#: Window layout {{{ + +remember_window_size yes +initial_window_width 640 +initial_window_height 400 + +#: If enabled, the window size will be remembered so that new +#: instances of kitty will have the same size as the previous +#: instance. If disabled, the window will initially have size +#: configured by initial_window_width/height, in pixels. You can use a +#: suffix of "c" on the width/height values to have them interpreted +#: as number of cells instead of pixels. + +enabled_layouts * + +#: The enabled window layouts. A comma separated list of layout names. +#: The special value all means all layouts. The first listed layout +#: will be used as the startup layout. Default configuration is all +#: layouts in alphabetical order. For a list of available layouts, see +#: the layouts . + +window_resize_step_cells 2 +window_resize_step_lines 2 + +#: The step size (in units of cell width/cell height) to use when +#: resizing kitty windows in a layout with the shortcut +#: start_resizing_window. The cells value is used for horizontal +#: resizing, and the lines value is used for vertical resizing. + +window_border_width 0.5pt + +#: The width of window borders. Can be either in pixels (px) or pts +#: (pt). Values in pts will be rounded to the nearest number of pixels +#: based on screen resolution. If not specified, the unit is assumed +#: to be pts. Note that borders are displayed only when more than one +#: window is visible. They are meant to separate multiple windows. + +draw_minimal_borders yes + +#: Draw only the minimum borders needed. This means that only the +#: borders that separate the inactive window from a neighbor are +#: drawn. Note that setting a non-zero window_margin_width overrides +#: this and causes all borders to be drawn. + +window_margin_width 0 + +#: The window margin (in pts) (blank area outside the border). A +#: single value sets all four sides. Two values set the vertical and +#: horizontal sides. Three values set top, horizontal and bottom. Four +#: values set top, right, bottom and left. + +single_window_margin_width -1 + +#: The window margin to use when only a single window is visible (in +#: pts). Negative values will cause the value of window_margin_width +#: to be used instead. A single value sets all four sides. Two values +#: set the vertical and horizontal sides. Three values set top, +#: horizontal and bottom. Four values set top, right, bottom and left. + +window_padding_width 0 + +#: The window padding (in pts) (blank area between the text and the +#: window border). A single value sets all four sides. Two values set +#: the vertical and horizontal sides. Three values set top, horizontal +#: and bottom. Four values set top, right, bottom and left. + +placement_strategy center + +#: When the window size is not an exact multiple of the cell size, the +#: cell area of the terminal window will have some extra padding on +#: the sides. You can control how that padding is distributed with +#: this option. Using a value of center means the cell area will be +#: placed centrally. A value of top-left means the padding will be +#: only at the bottom and right edges. + +active_border_color #00ff00 + +#: The color for the border of the active window. Set this to none to +#: not draw borders around the active window. + +inactive_border_color #cccccc + +#: The color for the border of inactive windows. + +bell_border_color #ff5a00 + +#: The color for the border of inactive windows in which a bell has +#: occurred. + +inactive_text_alpha 1.0 + +#: Fade the text in inactive windows by the specified amount (a number +#: between zero and one, with zero being fully faded). + +hide_window_decorations no + +#: Hide the window decorations (title-bar and window borders) with +#: yes. On macOS, titlebar-only can be used to only hide the titlebar. +#: Whether this works and exactly what effect it has depends on the +#: window manager/operating system. Note that the effects of changing +#: this option when reloading config are undefined. + +window_logo_path none + +#: Path to a logo image. Must be in PNG format. Relative paths are +#: interpreted relative to the kitty config directory. The logo is +#: displayed in a corner of every kitty window. The position is +#: controlled by window_logo_position. Individual windows can be +#: configured to have different logos either using the launch action +#: or the remote control facility. + +window_logo_position bottom-right + +#: Where to position the window logo in the window. The value can be +#: one of: top-left, top, top-right, left, center, right, bottom-left, +#: bottom, bottom-right. + +window_logo_alpha 0.5 + +#: The amount the logo should be faded into the background. With zero +#: being fully faded and one being fully opaque. + +resize_debounce_time 0.1 + +#: The time to wait before redrawing the screen when a resize event is +#: received (in seconds). On platforms such as macOS, where the +#: operating system sends events corresponding to the start and end of +#: a resize, this number is ignored. + +resize_draw_strategy static + +#: Choose how kitty draws a window while a resize is in progress. A +#: value of static means draw the current window contents, mostly +#: unchanged. A value of scale means draw the current window contents +#: scaled. A value of blank means draw a blank window. A value of size +#: means show the window size in cells. + +resize_in_steps no + +#: Resize the OS window in steps as large as the cells, instead of +#: with the usual pixel accuracy. Combined with initial_window_width +#: and initial_window_height in number of cells, this option can be +#: used to keep the margins as small as possible when resizing the OS +#: window. Note that this does not currently work on Wayland. + +visual_window_select_characters 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ + +#: The list of characters for visual window selection. For example, +#: for selecting a window to focus on with focus_visible_window. The +#: value should be a series of unique numbers or alphabets, case +#: insensitive, from the set [0-9A-Z]. Specify your preference as a +#: string of characters. + +confirm_os_window_close -1 + +#: Ask for confirmation when closing an OS window or a tab with at +#: least this number of kitty windows in it by window manager (e.g. +#: clicking the window close button or pressing the operating system +#: shortcut to close windows) or by the close_tab action. A value of +#: zero disables confirmation. This confirmation also applies to +#: requests to quit the entire application (all OS windows, via the +#: quit action). Negative values are converted to positive ones, +#: however, with shell_integration enabled, using negative values +#: means windows sitting at a shell prompt are not counted, only +#: windows where some command is currently running. Note that if you +#: want confirmation when closing individual windows, you can map the +#: close_window_with_confirmation action. + +#: }}} + +#: Tab bar {{{ + +tab_bar_edge bottom + +#: The edge to show the tab bar on, top or bottom. + +tab_bar_margin_width 0.0 + +#: The margin to the left and right of the tab bar (in pts). + +tab_bar_margin_height 0.0 0.0 + +#: The margin above and below the tab bar (in pts). The first number +#: is the margin between the edge of the OS Window and the tab bar. +#: The second number is the margin between the tab bar and the +#: contents of the current tab. + +tab_bar_style fade + +#: The tab bar style, can be one of: + +#: fade +#: Each tab's edges fade into the background color. (See also tab_fade) +#: slant +#: Tabs look like the tabs in a physical file. +#: separator +#: Tabs are separated by a configurable separator. (See also +#: tab_separator) +#: powerline +#: Tabs are shown as a continuous line with "fancy" separators. +#: (See also tab_powerline_style) +#: custom +#: A user-supplied Python function called draw_tab is loaded from the file +#: tab_bar.py in the kitty config directory. For examples of how to +#: write such a function, see the functions named draw_tab_with_* in +#: kitty's source code: kitty/tab_bar.py. See also +#: this discussion +#: for examples from kitty users. +#: hidden +#: The tab bar is hidden. If you use this, you might want to create a mapping +#: for the select_tab action which presents you with a list of tabs and +#: allows for easy switching to a tab. + +tab_bar_align left + +#: The horizontal alignment of the tab bar, can be one of: left, +#: center, right. + +tab_bar_min_tabs 2 + +#: The minimum number of tabs that must exist before the tab bar is +#: shown. + +tab_switch_strategy previous + +#: The algorithm to use when switching to a tab when the current tab +#: is closed. The default of previous will switch to the last used +#: tab. A value of left will switch to the tab to the left of the +#: closed tab. A value of right will switch to the tab to the right of +#: the closed tab. A value of last will switch to the right-most tab. + +tab_fade 0.25 0.5 0.75 1 + +#: Control how each tab fades into the background when using fade for +#: the tab_bar_style. Each number is an alpha (between zero and one) +#: that controls how much the corresponding cell fades into the +#: background, with zero being no fade and one being full fade. You +#: can change the number of cells used by adding/removing entries to +#: this list. + +tab_separator " ┇" + +#: The separator between tabs in the tab bar when using separator as +#: the tab_bar_style. + +tab_powerline_style angled + +#: The powerline separator style between tabs in the tab bar when +#: using powerline as the tab_bar_style, can be one of: angled, +#: slanted, round. + +tab_activity_symbol none + +#: Some text or a Unicode symbol to show on the tab if a window in the +#: tab that does not have focus has some activity. If you want to use +#: leading or trailing spaces, surround the text with quotes. See +#: tab_title_template for how this is rendered. + +tab_title_template "{fmt.fg.red}{bell_symbol}{activity_symbol}{fmt.fg.tab}{title}" + +#: A template to render the tab title. The default just renders the +#: title with optional symbols for bell and activity. If you wish to +#: include the tab-index as well, use something like: {index}:{title}. +#: Useful if you have shortcuts mapped for goto_tab N. If you prefer +#: to see the index as a superscript, use {sup.index}. All data +#: available is: + +#: title +#: The current tab title. +#: index +#: The tab index useable with goto_tab N goto_tab shortcuts. +#: layout_name +#: The current layout name. +#: num_windows +#: The number of windows in the tab. +#: num_window_groups +#: The number of window groups (not counting overlay windows) in the tab. +#: tab.active_wd +#: The working directory of the currently active window in the tab (expensive, +#: requires syscall). +#: max_title_length +#: The maximum title length available. + +#: Note that formatting is done by Python's string formatting +#: machinery, so you can use, for instance, {layout_name[:2].upper()} +#: to show only the first two letters of the layout name, upper-cased. +#: If you want to style the text, you can use styling directives, for +#: example: +#: `{fmt.fg.red}red{fmt.fg.tab}normal{fmt.bg._00FF00}greenbg{fmt.bg.tab}`. +#: Similarly, for bold and italic: +#: `{fmt.bold}bold{fmt.nobold}normal{fmt.italic}italic{fmt.noitalic}`. +#: Note that for backward compatibility, if {bell_symbol} or +#: {activity_symbol} are not present in the template, they are +#: prepended to it. + +active_tab_title_template none + +#: Template to use for active tabs. If not specified falls back to +#: tab_title_template. + +active_tab_foreground #000 +active_tab_background #eee +active_tab_font_style bold-italic +inactive_tab_foreground #444 +inactive_tab_background #999 +inactive_tab_font_style normal + +#: Tab bar colors and styles. + +tab_bar_background none + +#: Background color for the tab bar. Defaults to using the terminal +#: background color. + +tab_bar_margin_color none + +#: Color for the tab bar margin area. Defaults to using the terminal +#: background color. + +#: }}} + +#: Color scheme {{{ + +foreground #dddddd +background #000000 + +#: The foreground and background colors. + +background_opacity 1.0 + +#: The opacity of the background. A number between zero and one, where +#: one is opaque and zero is fully transparent. This will only work if +#: supported by the OS (for instance, when using a compositor under +#: X11). Note that it only sets the background color's opacity in +#: cells that have the same background color as the default terminal +#: background, so that things like the status bar in vim, powerline +#: prompts, etc. still look good. But it means that if you use a color +#: theme with a background color in your editor, it will not be +#: rendered as transparent. Instead you should change the default +#: background color in your kitty config and not use a background +#: color in the editor color scheme. Or use the escape codes to set +#: the terminals default colors in a shell script to launch your +#: editor. Be aware that using a value less than 1.0 is a (possibly +#: significant) performance hit. If you want to dynamically change +#: transparency of windows, set dynamic_background_opacity to yes +#: (this is off by default as it has a performance cost). Changing +#: this option when reloading the config will only work if +#: dynamic_background_opacity was enabled in the original config. + +background_image none + +#: Path to a background image. Must be in PNG format. + +background_image_layout tiled + +#: Whether to tile, scale or clamp the background image. The value can +#: be one of tiled, mirror-tiled, scaled, clamped or centered. + +background_image_linear no + +#: When background image is scaled, whether linear interpolation +#: should be used. + +dynamic_background_opacity no + +#: Allow changing of the background_opacity dynamically, using either +#: keyboard shortcuts (increase_background_opacity and +#: decrease_background_opacity) or the remote control facility. +#: Changing this option by reloading the config is not supported. + +background_tint 0.0 + +#: How much to tint the background image by the background color. +#: This option makes it easier to read the text. Tinting is done using +#: the current background color for each window. This option applies +#: only if background_opacity is set and transparent windows are +#: supported or background_image is set. + +dim_opacity 0.75 + +#: How much to dim text that has the DIM/FAINT attribute set. One +#: means no dimming and zero means fully dimmed (i.e. invisible). + +selection_foreground #000000 +selection_background #fffacd + +#: The foreground and background colors for text selected with the +#: mouse. Setting both of these to none will cause a "reverse video" +#: effect for selections, where the selection will be the cell text +#: color and the text will become the cell background color. Setting +#: only selection_foreground to none will cause the foreground color +#: to be used unchanged. Note that these colors can be overridden by +#: the program running in the terminal. + +#: The color table {{{ + +#: The 256 terminal colors. There are 8 basic colors, each color has a +#: dull and bright version, for the first 16 colors. You can set the +#: remaining 240 colors as color16 to color255. + +color0 #000000 +color8 #767676 + +#: black + +color1 #cc0403 +color9 #f2201f + +#: red + +color2 #19cb00 +color10 #23fd00 + +#: green + +color3 #cecb00 +color11 #fffd00 + +#: yellow + +color4 #0d73cc +color12 #1a8fff + +#: blue + +color5 #cb1ed1 +color13 #fd28ff + +#: magenta + +color6 #0dcdcd +color14 #14ffff + +#: cyan + +color7 #dddddd +color15 #ffffff + +#: white + +mark1_foreground black + +#: Color for marks of type 1 + +mark1_background #98d3cb + +#: Color for marks of type 1 (light steel blue) + +mark2_foreground black + +#: Color for marks of type 2 + +mark2_background #f2dcd3 + +#: Color for marks of type 1 (beige) + +mark3_foreground black + +#: Color for marks of type 3 + +mark3_background #f274bc + +#: Color for marks of type 3 (violet) + +#: }}} + +#: }}} + +#: Advanced {{{ + +shell . + +#: The shell program to execute. The default value of . means to use +#: whatever shell is set as the default shell for the current user. +#: Note that on macOS if you change this, you might need to add +#: --login and --interactive to ensure that the shell starts in +#: interactive mode and reads its startup rc files. + +editor . + +#: The terminal based text editor (such as vim or nano) to use when +#: editing the kitty config file or similar tasks. + +#: The default value of . means to use the environment variables +#: VISUAL and EDITOR in that order. If these variables aren't set, +#: kitty will run your shell ($SHELL -l -i -c env) to see if your +#: shell startup rc files set VISUAL or EDITOR. If that doesn't work, +#: kitty will cycle through various known editors (vim, emacs, etc.) +#: and take the first one that exists on your system. + +close_on_child_death no + +#: Close the window when the child process (shell) exits. With the +#: default value no, the terminal will remain open when the child +#: exits as long as there are still processes outputting to the +#: terminal (for example disowned or backgrounded processes). When +#: enabled with yes, the window will close as soon as the child +#: process exits. Note that setting it to yes means that any +#: background processes still using the terminal can fail silently +#: because their stdout/stderr/stdin no longer work. + +# remote_control_password + +#: Allow other programs to control kitty using passwords. This option +#: can be specified multiple times to add multiple passwords. If no +#: passwords are present kitty will ask the user for permission if a +#: program tries to use remote control with a password. A password can +#: also *optionally* be associated with a set of allowed remote +#: control actions. For example:: + +#: remote_control_password "my passphrase" get-colors set-colors focus-window focus-tab + +#: Only the specified actions will be allowed when using this +#: password. Glob patterns can be used too, for example:: + +#: remote_control_password "my passphrase" set-tab-* resize-* + +#: To get a list of available actions, run:: + +#: kitty @ --help + +#: A set of actions to be allowed when no password is sent can be +#: specified by using an empty password, for example:: + +#: remote_control_password "" *-colors + +#: Finally, the path to a python module can be specified that provides +#: a function is_cmd_allowed that is used to check every remote +#: control command. See rc_custom_auth +#: +#: for details. For example:: + +#: remote_control_password "my passphrase" my_rc_command_checker.py + +#: Relative paths are resolved from the kitty configuration directory. + +allow_remote_control no + +#: Allow other programs to control kitty. If you turn this on, other +#: programs can control all aspects of kitty, including sending text +#: to kitty windows, opening new windows, closing windows, reading the +#: content of windows, etc. Note that this even works over SSH +#: connections. The default setting of no prevents any form of remote +#: control. The meaning of the various values are: + +#: password +#: Remote control requests received over both the TTY device and the socket are +#: confirmed based on passwords, see remote_control_password. + +#: socket-only +#: Remote control requests received over a socket are accepted unconditionally. +#: Requests received over the TTY are denied. See listen_on. + +#: socket +#: Remote control requests received over a socket are accepted unconditionally. +#: Requests received over the TTY are confirmed based on password. + +#: no +#: Remote control is completely disabled. + +#: yes +#: Remote control requests are always accepted. + +listen_on none + +#: Listen to the specified UNIX socket for remote control connections. +#: Note that this will apply to all kitty instances. It can be +#: overridden by the kitty --listen-on command line option, which also +#: supports listening on a TCP socket. This option accepts only UNIX +#: sockets, such as unix:${TEMP}/mykitty or unix:@mykitty (on Linux). +#: Environment variables are expanded and relative paths are resolved +#: with respect to the temporary directory. If {kitty_pid} is present, +#: then it is replaced by the PID of the kitty process, otherwise the +#: PID of the kitty process is appended to the value, with a hyphen. +#: See the help for kitty --listen-on for more details. Note that this +#: will be ignored unless allow_remote_control is set to either: yes, +#: socket or socket-only. Changing this option by reloading the config +#: is not supported. + +# env + +#: Specify the environment variables to be set in all child processes. +#: Using the name with an equal sign (e.g. env VAR=) will set it to +#: the empty string. Specifying only the name (e.g. env VAR) will +#: remove the variable from the child process' environment. Note that +#: environment variables are expanded recursively, for example:: + +#: env VAR1=a +#: env VAR2=${HOME}/${VAR1}/b + +#: The value of VAR2 will be /a/b. + +# watcher + +#: Path to python file which will be loaded for watchers +#: . Can be +#: specified more than once to load multiple watchers. The watchers +#: will be added to every kitty window. Relative paths are resolved +#: relative to the kitty config directory. Note that reloading the +#: config will only affect windows created after the reload. + +# exe_search_path + +#: Control where kitty finds the programs to run. The default search +#: order is: First search the system wide PATH, then ~/.local/bin and +#: ~/bin. If still not found, the PATH defined in the login shell +#: after sourcing all its startup files is tried. Finally, if present, +#: the PATH specified by the env option is tried. + +#: This option allows you to prepend, append, or remove paths from +#: this search order. It can be specified multiple times for multiple +#: paths. A simple path will be prepended to the search order. A path +#: that starts with the + sign will be append to the search order, +#: after ~/bin above. A path that starts with the - sign will be +#: removed from the entire search order. For example:: + +#: exe_search_path /some/prepended/path +#: exe_search_path +/some/appended/path +#: exe_search_path -/some/excluded/path + +update_check_interval 24 + +#: The interval to periodically check if an update to kitty is +#: available (in hours). If an update is found, a system notification +#: is displayed informing you of the available update. The default is +#: to check every 24 hours, set to zero to disable. Update checking is +#: only done by the official binary builds. Distro packages or source +#: builds do not do update checking. Changing this option by reloading +#: the config is not supported. + +startup_session none + +#: Path to a session file to use for all kitty instances. Can be +#: overridden by using the kitty --session command line option for +#: individual instances. See sessions +#: in the kitty +#: documentation for details. Note that relative paths are interpreted +#: with respect to the kitty config directory. Environment variables +#: in the path are expanded. Changing this option by reloading the +#: config is not supported. + +clipboard_control write-clipboard write-primary read-clipboard-ask read-primary-ask + +#: Allow programs running in kitty to read and write from the +#: clipboard. You can control exactly which actions are allowed. The +#: possible actions are: write-clipboard, read-clipboard, write- +#: primary, read-primary, read-clipboard-ask, read-primary-ask. The +#: default is to allow writing to the clipboard and primary selection +#: and to ask for permission when a program tries to read from the +#: clipboard. Note that disabling the read confirmation is a security +#: risk as it means that any program, even the ones running on a +#: remote server via SSH can read your clipboard. See also +#: clipboard_max_size. + +clipboard_max_size 64 + +#: The maximum size (in MB) of data from programs running in kitty +#: that will be stored for writing to the system clipboard. A value of +#: zero means no size limit is applied. See also clipboard_control. + +# file_transfer_confirmation_bypass + +#: The password that can be supplied to the file transfer kitten +#: to skip the +#: transfer confirmation prompt. This should only be used when +#: initiating transfers from trusted computers, over trusted networks +#: or encrypted transports, as it allows any programs running on the +#: remote machine to read/write to the local filesystem, without +#: permission. + +allow_hyperlinks yes + +#: Process hyperlink escape sequences (OSC 8). If disabled OSC 8 +#: escape sequences are ignored. Otherwise they become clickable +#: links, that you can click with the mouse or by using the hints +#: kitten . The +#: special value of ask means that kitty will ask before opening the +#: link when clicked. + +shell_integration enabled + +#: Enable shell integration on supported shells. This enables features +#: such as jumping to previous prompts, browsing the output of the +#: previous command in a pager, etc. on supported shells. Set to +#: disabled to turn off shell integration, completely. It is also +#: possible to disable individual features, set to a space separated +#: list of these values: no-rc, no-cursor, no-title, no-cwd, no- +#: prompt-mark, no-complete. See Shell integration +#: for details. + +allow_cloning ask + +#: Control whether programs running in the terminal can request new +#: windows to be created. The canonical example is clone-in-kitty +#: . +#: By default, kitty will ask for permission for each clone request. +#: Allowing cloning unconditionally gives programs running in the +#: terminal (including over SSH) permission to execute arbitrary code, +#: as the user who is running the terminal, on the computer that the +#: terminal is running on. + +clone_source_strategies venv,conda,env_var,path + +#: Control what shell code is sourced when running clone-in-kitty in +#: the newly cloned window. The supported strategies are: + +#: venv +#: Source the file $VIRTUAL_ENV/bin/activate. This is used by the +#: Python stdlib venv module and allows cloning venvs automatically. +#: conda +#: Run conda activate $CONDA_DEFAULT_ENV. This supports the virtual +#: environments created by conda. +#: env_var +#: Execute the contents of the environment variable +#: KITTY_CLONE_SOURCE_CODE with eval. +#: path +#: Source the file pointed to by the environment variable +#: KITTY_CLONE_SOURCE_PATH. + +#: This option must be a comma separated list of the above values. +#: This only source the first valid one in the above order. + +term xterm-kitty + +#: The value of the TERM environment variable to set. Changing this +#: can break many terminal programs, only change it if you know what +#: you are doing, not because you read some advice on "Stack Overflow" +#: to change it. The TERM variable is used by various programs to get +#: information about the capabilities and behavior of the terminal. If +#: you change it, depending on what programs you run, and how +#: different the terminal you are changing it to is, various things +#: from key-presses, to colors, to various advanced features may not +#: work. Changing this option by reloading the config will only affect +#: newly created windows. + +#: }}} + +#: OS specific tweaks {{{ + +wayland_titlebar_color system + +#: The color of the kitty window's titlebar on Wayland systems with +#: client side window decorations such as GNOME. A value of system +#: means to use the default system color, a value of background means +#: to use the background color of the currently active window and +#: finally you can use an arbitrary color, such as #12af59 or red. + +macos_titlebar_color system + +#: The color of the kitty window's titlebar on macOS. A value of +#: system means to use the default system color, light or dark can +#: also be used to set it explicitly. A value of background means to +#: use the background color of the currently active window and finally +#: you can use an arbitrary color, such as #12af59 or red. WARNING: +#: This option works by using a hack when arbitrary color (or +#: background) is configured, as there is no proper Cocoa API for it. +#: It sets the background color of the entire window and makes the +#: titlebar transparent. As such it is incompatible with +#: background_opacity. If you want to use both, you are probably +#: better off just hiding the titlebar with hide_window_decorations. + +macos_option_as_alt no + +#: Use the Option key as an Alt key on macOS. With this set to no, +#: kitty will use the macOS native Option+Key to enter Unicode +#: character behavior. This will break any Alt+Key keyboard shortcuts +#: in your terminal programs, but you can use the macOS Unicode input +#: technique. You can use the values: left, right or both to use only +#: the left, right or both Option keys as Alt, instead. Note that +#: kitty itself always treats Option the same as Alt. This means you +#: cannot use this option to configure different kitty shortcuts for +#: Option+Key vs. Alt+Key. Also, any kitty shortcuts using +#: Option/Alt+Key will take priority, so that any such key presses +#: will not be passed to terminal programs running inside kitty. +#: Changing this option by reloading the config is not supported. + +macos_hide_from_tasks no + +#: Hide the kitty window from running tasks on macOS (⌘+Tab and the +#: Dock). Changing this option by reloading the config is not +#: supported. + +macos_quit_when_last_window_closed no + +#: Have kitty quit when all the top-level windows are closed on macOS. +#: By default, kitty will stay running, even with no open windows, as +#: is the expected behavior on macOS. + +macos_window_resizable yes + +#: Disable this if you want kitty top-level OS windows to not be +#: resizable on macOS. Changing this option by reloading the config +#: will only affect newly created OS windows. + +macos_thicken_font 0 + +#: Draw an extra border around the font with the given width, to +#: increase legibility at small font sizes on macOS. For example, a +#: value of 0.75 will result in rendering that looks similar to sub- +#: pixel antialiasing at common font sizes. + +macos_traditional_fullscreen no + +#: Use the macOS traditional full-screen transition, that is faster, +#: but less pretty. + +macos_show_window_title_in all + +#: Control where the window title is displayed on macOS. A value of +#: window will show the title of the currently active window at the +#: top of the macOS window. A value of menubar will show the title of +#: the currently active window in the macOS global menu bar, making +#: use of otherwise wasted space. A value of all will show the title +#: in both places, and none hides the title. See +#: macos_menubar_title_max_length for how to control the length of the +#: title in the menu bar. + +macos_menubar_title_max_length 0 + +#: The maximum number of characters from the window title to show in +#: the macOS global menu bar. Values less than one means that there is +#: no maximum limit. + +macos_custom_beam_cursor no + +#: Use a custom mouse cursor for macOS that is easier to see on both +#: light and dark backgrounds. Nowadays, the default macOS cursor +#: already comes with a white border. WARNING: this might make your +#: mouse cursor invisible on dual GPU machines. Changing this option +#: by reloading the config is not supported. + +macos_colorspace srgb + +#: The colorspace in which to interpret terminal colors. The default +#: of srgb will cause colors to match those seen in web browsers. The +#: value of default will use whatever the native colorspace of the +#: display is. The value of displayp3 will use Apple's special +#: snowflake display P3 color space, which will result in over +#: saturated (brighter) colors with some color shift. Reloading +#: configuration will change this value only for newly created OS +#: windows. + +linux_display_server auto + +#: Choose between Wayland and X11 backends. By default, an appropriate +#: backend based on the system state is chosen automatically. Set it +#: to x11 or wayland to force the choice. Changing this option by +#: reloading the config is not supported. + +#: }}} + +#: Keyboard shortcuts {{{ + +#: Keys are identified simply by their lowercase Unicode characters. +#: For example: a for the A key, [ for the left square bracket key, +#: etc. For functional keys, such as Enter or Escape, the names are +#: present at Functional key definitions +#: . +#: For modifier keys, the names are ctrl (control, ⌃), shift (⇧), alt +#: (opt, option, ⌥), super (cmd, command, ⌘). See also: GLFW mods +#: + +#: On Linux you can also use XKB key names to bind keys that are not +#: supported by GLFW. See XKB keys +#: for a list of key names. The name to use is the part +#: after the XKB_KEY_ prefix. Note that you can only use an XKB key +#: name for keys that are not known as GLFW keys. + +#: Finally, you can use raw system key codes to map keys, again only +#: for keys that are not known as GLFW keys. To see the system key +#: code for a key, start kitty with the kitty --debug-input option, +#: kitty will output some debug text for every key event. In that text +#: look for native_code, the value of that becomes the key name in the +#: shortcut. For example: + +#: .. code-block:: none + +#: on_key_input: glfw key: 0x61 native_code: 0x61 action: PRESS mods: none text: 'a' + +#: Here, the key name for the A key is 0x61 and you can use it with:: + +#: map ctrl+0x61 something + +#: to map Ctrl+A to something. + +#: You can use the special action no_op to unmap a keyboard shortcut +#: that is assigned in the default configuration:: + +#: map kitty_mod+space no_op + +#: If you would like kitty to completely ignore a key event, not even +#: sending it to the program running in the terminal, map it to +#: discard_event:: + +#: map kitty_mod+f1 discard_event + +#: You can combine multiple actions to be triggered by a single +#: shortcut with combine action, using the syntax below:: + +#: map key combine action1 action2 action3 ... + +#: For example:: + +#: map kitty_mod+e combine : new_window : next_layout + +#: This will create a new window and switch to the next available +#: layout. + +#: You can use multi-key shortcuts with the syntax shown below:: + +#: map key1>key2>key3 action + +#: For example:: + +#: map ctrl+f>2 set_font_size 20 + +#: The full list of actions that can be mapped to key presses is +#: available here . + +kitty_mod ctrl+shift + +#: Special modifier key alias for default shortcuts. You can change +#: the value of this option to alter all default shortcuts that use +#: kitty_mod. + +clear_all_shortcuts no + +#: Remove all shortcut definitions up to this point. Useful, for +#: instance, to remove the default shortcuts. + +# action_alias + +#: E.g. action_alias launch_tab launch --type=tab --cwd=current + +#: Define action aliases to avoid repeating the same options in +#: multiple mappings. Aliases can be defined for any action and will +#: be expanded recursively. For example, the above alias allows you to +#: create mappings to launch a new tab in the current working +#: directory without duplication:: + +#: map f1 launch_tab vim +#: map f2 launch_tab emacs + +#: Similarly, to alias kitten invocation:: + +#: action_alias hints kitten hints --hints-offset=0 + +# kitten_alias + +#: E.g. kitten_alias hints hints --hints-offset=0 + +#: Like action_alias above, but specifically for kittens. Generally, +#: prefer to use action_alias. This option is a legacy version, +#: present for backwards compatibility. It causes all invocations of +#: the aliased kitten to be substituted. So the example above will +#: cause all invocations of the hints kitten to have the --hints- +#: offset=0 option applied. + +#: Clipboard {{{ + +#: Copy to clipboard + +map kitty_mod+c copy_to_clipboard +map cmd+c copy_to_clipboard + +#:: There is also a copy_or_interrupt action that can be optionally +#:: mapped to Ctrl+C. It will copy only if there is a selection and +#:: send an interrupt otherwise. Similarly, +#:: copy_and_clear_or_interrupt will copy and clear the selection or +#:: send an interrupt if there is no selection. + +#: Paste from clipboard + +map kitty_mod+v paste_from_clipboard +map cmd+v paste_from_clipboard + +#: Paste from selection + +map kitty_mod+s paste_from_selection +map shift+insert paste_from_selection + +#: Pass selection to program + +map kitty_mod+o pass_selection_to_program + +#:: You can also pass the contents of the current selection to any +#:: program with pass_selection_to_program. By default, the system's +#:: open program is used, but you can specify your own, the selection +#:: will be passed as a command line argument to the program. For +#:: example:: + +#:: map kitty_mod+o pass_selection_to_program firefox + +#:: You can pass the current selection to a terminal program running +#:: in a new kitty window, by using the @selection placeholder:: + +#:: map kitty_mod+y new_window less @selection + +#: }}} + +#: Scrolling {{{ + +#: Scroll line up + +map kitty_mod+up scroll_line_up +map kitty_mod+k scroll_line_up +map opt+cmd+page_up scroll_line_up +map cmd+up scroll_line_up + +#: Scroll line down + +map kitty_mod+down scroll_line_down +map kitty_mod+j scroll_line_down +map opt+cmd+page_down scroll_line_down +map cmd+down scroll_line_down + +#: Scroll page up + +map kitty_mod+page_up scroll_page_up +map cmd+page_up scroll_page_up + +#: Scroll page down + +map kitty_mod+page_down scroll_page_down +map cmd+page_down scroll_page_down + +#: Scroll to top + +map kitty_mod+home scroll_home +map cmd+home scroll_home + +#: Scroll to bottom + +map kitty_mod+end scroll_end +map cmd+end scroll_end + +#: Scroll to previous shell prompt + +map kitty_mod+z scroll_to_prompt -1 + +#:: Use a parameter of 0 for scroll_to_prompt to scroll to the last +#:: jumped to or the last clicked position. Requires shell +#:: integration +#:: to work. + +#: Scroll to next shell prompt + +map kitty_mod+x scroll_to_prompt 1 + +#: Browse scrollback buffer in pager + +map kitty_mod+h show_scrollback + +#:: You can pipe the contents of the current screen and history +#:: buffer as STDIN to an arbitrary program using launch --stdin- +#:: source. For example, the following opens the scrollback buffer in +#:: less in an overlay window:: + +#:: map f1 launch --stdin-source=@screen_scrollback --stdin-add-formatting --type=overlay less +G -R + +#:: For more details on piping screen and buffer contents to external +#:: programs, see launch . + +#: Browse output of the last shell command in pager + +map kitty_mod+g show_last_command_output + +#:: You can also define additional shortcuts to get the command +#:: output. For example, to get the first command output on screen:: + +#:: map f1 show_first_command_output_on_screen + +#:: To get the command output that was last accessed by a keyboard +#:: action or mouse action:: + +#:: map f1 show_last_visited_command_output + +#:: You can pipe the output of the last command run in the shell +#:: using the launch action. For example, the following opens the +#:: output in less in an overlay window:: + +#:: map f1 launch --stdin-source=@last_cmd_output --stdin-add-formatting --type=overlay less +G -R + +#:: To get the output of the first command on the screen, use +#:: @first_cmd_output_on_screen. To get the output of the last jumped +#:: to command, use @last_visited_cmd_output. + +#:: Requires shell integration +#:: to work. + +#: }}} + +#: Window management {{{ + +#: New window + +map kitty_mod+enter new_window +map cmd+enter new_window + +#:: You can open a new kitty window running an arbitrary program, for +#:: example:: + +#:: map kitty_mod+y launch mutt + +#:: You can open a new window with the current working directory set +#:: to the working directory of the current window using:: + +#:: map ctrl+alt+enter launch --cwd=current + +#:: You can open a new window that is allowed to control kitty via +#:: the kitty remote control facility with launch --allow-remote- +#:: control. Any programs running in that window will be allowed to +#:: control kitty. For example:: + +#:: map ctrl+enter launch --allow-remote-control some_program + +#:: You can open a new window next to the currently active window or +#:: as the first window, with:: + +#:: map ctrl+n launch --location=neighbor +#:: map ctrl+f launch --location=first + +#:: For more details, see launch +#:: . + +#: New OS window + +map kitty_mod+n new_os_window +map cmd+n new_os_window + +#:: Works like new_window above, except that it opens a top-level OS +#:: window. In particular you can use new_os_window_with_cwd to open +#:: a window with the current working directory. + +#: Close window + +map kitty_mod+w close_window +map shift+cmd+d close_window + +#: Next window + +map kitty_mod+] next_window + +#: Previous window + +map kitty_mod+[ previous_window + +#: Move window forward + +map kitty_mod+f move_window_forward + +#: Move window backward + +map kitty_mod+b move_window_backward + +#: Move window to top + +map kitty_mod+` move_window_to_top + +#: Start resizing window + +map kitty_mod+r start_resizing_window +map cmd+r start_resizing_window + +#: First window + +map kitty_mod+1 first_window +map cmd+1 first_window + +#: Second window + +map kitty_mod+2 second_window +map cmd+2 second_window + +#: Third window + +map kitty_mod+3 third_window +map cmd+3 third_window + +#: Fourth window + +map kitty_mod+4 fourth_window +map cmd+4 fourth_window + +#: Fifth window + +map kitty_mod+5 fifth_window +map cmd+5 fifth_window + +#: Sixth window + +map kitty_mod+6 sixth_window +map cmd+6 sixth_window + +#: Seventh window + +map kitty_mod+7 seventh_window +map cmd+7 seventh_window + +#: Eight window + +map kitty_mod+8 eighth_window +map cmd+8 eighth_window + +#: Ninth window + +map kitty_mod+9 ninth_window +map cmd+9 ninth_window + +#: Tenth window + +map kitty_mod+0 tenth_window + +#: Visually select and focus window + +map kitty_mod+f7 focus_visible_window + +#:: Display overlay numbers and alphabets on the window, and switch +#:: the focus to the window when you press the key. When there are +#:: only two windows, the focus will be switched directly without +#:: displaying the overlay. You can change the overlay characters and +#:: their order with option visual_window_select_characters. + +#: Visually swap window with another + +map kitty_mod+f8 swap_with_window + +#:: Works like focus_visible_window above, but swaps the window. + +#: }}} + +#: Tab management {{{ + +#: Next tab + +map kitty_mod+right next_tab +map shift+cmd+] next_tab +map ctrl+tab next_tab + +#: Previous tab + +map kitty_mod+left previous_tab +map shift+cmd+[ previous_tab +map ctrl+shift+tab previous_tab + +#: New tab + +map kitty_mod+t new_tab +map cmd+t new_tab + +#: Close tab + +map kitty_mod+q close_tab +map cmd+w close_tab + +#: Close OS window + +map shift+cmd+w close_os_window + +#: Move tab forward + +map kitty_mod+. move_tab_forward + +#: Move tab backward + +map kitty_mod+, move_tab_backward + +#: Set tab title + +map kitty_mod+alt+t set_tab_title +map shift+cmd+i set_tab_title + + +#: You can also create shortcuts to go to specific tabs, with 1 being +#: the first tab, 2 the second tab and -1 being the previously active +#: tab, and any number larger than the last tab being the last tab:: + +#: map ctrl+alt+1 goto_tab 1 +#: map ctrl+alt+2 goto_tab 2 + +#: Just as with new_window above, you can also pass the name of +#: arbitrary commands to run when using new_tab and new_tab_with_cwd. +#: Finally, if you want the new tab to open next to the current tab +#: rather than at the end of the tabs list, use:: + +#: map ctrl+t new_tab !neighbor [optional cmd to run] +#: }}} + +#: Layout management {{{ + +#: Next layout + +map kitty_mod+l next_layout + + +#: You can also create shortcuts to switch to specific layouts:: + +#: map ctrl+alt+t goto_layout tall +#: map ctrl+alt+s goto_layout stack + +#: Similarly, to switch back to the previous layout:: + +#: map ctrl+alt+p last_used_layout + +#: There is also a toggle_layout action that switches to the named +#: layout or back to the previous layout if in the named layout. +#: Useful to temporarily "zoom" the active window by switching to the +#: stack layout:: + +#: map ctrl+alt+z toggle_layout stack +#: }}} + +#: Font sizes {{{ + +#: You can change the font size for all top-level kitty OS windows at +#: a time or only the current one. + +#: Increase font size + +map kitty_mod+equal change_font_size all +2.0 +map kitty_mod+plus change_font_size all +2.0 +map kitty_mod+kp_add change_font_size all +2.0 +map cmd+plus change_font_size all +2.0 +map cmd+equal change_font_size all +2.0 +map shift+cmd+equal change_font_size all +2.0 + +#: Decrease font size + +map kitty_mod+minus change_font_size all -2.0 +map kitty_mod+kp_subtract change_font_size all -2.0 +map cmd+minus change_font_size all -2.0 +map shift+cmd+minus change_font_size all -2.0 + +#: Reset font size + +map kitty_mod+backspace change_font_size all 0 +map cmd+0 change_font_size all 0 + + +#: To setup shortcuts for specific font sizes:: + +#: map kitty_mod+f6 change_font_size all 10.0 + +#: To setup shortcuts to change only the current OS window's font +#: size:: + +#: map kitty_mod+f6 change_font_size current 10.0 +#: }}} + +#: Select and act on visible text {{{ + +#: Use the hints kitten to select text and either pass it to an +#: external program or insert it into the terminal or copy it to the +#: clipboard. + +#: Open URL + +map kitty_mod+e open_url_with_hints + +#:: Open a currently visible URL using the keyboard. The program used +#:: to open the URL is specified in open_url_with. + +#: Insert selected path + +map kitty_mod+p>f kitten hints --type path --program - + +#:: Select a path/filename and insert it into the terminal. Useful, +#:: for instance to run git commands on a filename output from a +#:: previous git command. + +#: Open selected path + +map kitty_mod+p>shift+f kitten hints --type path + +#:: Select a path/filename and open it with the default open program. + +#: Insert selected line + +map kitty_mod+p>l kitten hints --type line --program - + +#:: Select a line of text and insert it into the terminal. Useful for +#:: the output of things like: `ls -1`. + +#: Insert selected word + +map kitty_mod+p>w kitten hints --type word --program - + +#:: Select words and insert into terminal. + +#: Insert selected hash + +map kitty_mod+p>h kitten hints --type hash --program - + +#:: Select something that looks like a hash and insert it into the +#:: terminal. Useful with git, which uses SHA1 hashes to identify +#:: commits. + +#: Open the selected file at the selected line + +map kitty_mod+p>n kitten hints --type linenum + +#:: Select something that looks like filename:linenum and open it in +#:: vim at the specified line number. + +#: Open the selected hyperlink + +map kitty_mod+p>y kitten hints --type hyperlink + +#:: Select a hyperlink (i.e. a URL that has been marked as such by +#:: the terminal program, for example, by `ls --hyperlink=auto`). + + +#: The hints kitten has many more modes of operation that you can map +#: to different shortcuts. For a full description see hints kitten +#: . +#: }}} + +#: Miscellaneous {{{ + +#: Show documentation + +map kitty_mod+f1 show_kitty_doc overview + +#: Toggle fullscreen + +map kitty_mod+f11 toggle_fullscreen +map ctrl+cmd+f toggle_fullscreen + +#: Toggle maximized + +map kitty_mod+f10 toggle_maximized + +#: Toggle macOS secure keyboard entry + +map opt+cmd+s toggle_macos_secure_keyboard_entry + +#: Unicode input + +map kitty_mod+u kitten unicode_input +map ctrl+cmd+space kitten unicode_input + +#: Edit config file + +map kitty_mod+f2 edit_config_file +map cmd+, edit_config_file + +#: Open the kitty command shell + +map kitty_mod+escape kitty_shell window + +#:: Open the kitty shell in a new window / tab / overlay / os_window +#:: to control kitty using commands. + +#: Increase background opacity + +map kitty_mod+a>m set_background_opacity +0.1 + +#: Decrease background opacity + +map kitty_mod+a>l set_background_opacity -0.1 + +#: Make background fully opaque + +map kitty_mod+a>1 set_background_opacity 1 + +#: Reset background opacity + +map kitty_mod+a>d set_background_opacity default + +#: Reset the terminal + +map kitty_mod+delete clear_terminal reset active +map opt+cmd+r clear_terminal reset active + +#:: You can create shortcuts to clear/reset the terminal. For +#:: example:: + +#:: # Reset the terminal +#:: map f1 clear_terminal reset active +#:: # Clear the terminal screen by erasing all contents +#:: map f1 clear_terminal clear active +#:: # Clear the terminal scrollback by erasing it +#:: map f1 clear_terminal scrollback active +#:: # Scroll the contents of the screen into the scrollback +#:: map f1 clear_terminal scroll active +#:: # Clear everything up to the line with the cursor +#:: map f1 clear_terminal to_cursor active + +#:: If you want to operate on all kitty windows instead of just the +#:: current one, use all instead of active. + +#:: It is also possible to remap Ctrl+L to both scroll the current +#:: screen contents into the scrollback buffer and clear the screen, +#:: instead of just clearing the screen, for example, for ZSH add the +#:: following to ~/.zshrc: + +#:: .. code-block:: zsh + +#:: scroll-and-clear-screen() { +#:: printf '\n%.0s' {1..$LINES} +#:: zle clear-screen +#:: } +#:: zle -N scroll-and-clear-screen +#:: bindkey '^l' scroll-and-clear-screen + +#: Clear up to cursor line + +map cmd+k clear_terminal to_cursor active + +#: Reload kitty.conf + +map kitty_mod+f5 load_config_file +map ctrl+cmd+, load_config_file + +#:: Reload kitty.conf, applying any changes since the last time it +#:: was loaded. Note that a handful of options cannot be dynamically +#:: changed and require a full restart of kitty. Particularly, when +#:: changing shortcuts for actions located on the macOS global menu +#:: bar, a full restart is needed. You can also map a keybinding to +#:: load a different config file, for example:: + +#:: map f5 load_config /path/to/alternative/kitty.conf + +#:: Note that all options from the original kitty.conf are discarded, +#:: in other words the new configuration *replace* the old ones. + +#: Debug kitty configuration + +map kitty_mod+f6 debug_config +map opt+cmd+, debug_config + +#:: Show details about exactly what configuration kitty is running +#:: with and its host environment. Useful for debugging issues. + +#: Send arbitrary text on key presses + +#:: E.g. map ctrl+shift+alt+h send_text all Hello World + +#:: You can tell kitty to send arbitrary (UTF-8) encoded text to the +#:: client program when pressing specified shortcut keys. For +#:: example:: + +#:: map ctrl+alt+a send_text all Special text + +#:: This will send "Special text" when you press the Ctrl+Alt+A key +#:: combination. The text to be sent is a python string literal so +#:: you can use escapes like \x1b to send control codes or \u21fb to +#:: send Unicode characters (or you can just input the Unicode +#:: characters directly as UTF-8 text). You can use `kitty +kitten +#:: show_key` to get the key escape codes you want to emulate. + +#:: The first argument to send_text is the keyboard modes in which to +#:: activate the shortcut. The possible values are normal, +#:: application, kitty or a comma separated combination of them. The +#:: modes normal and application refer to the DECCKM cursor key mode +#:: for terminals, and kitty refers to the kitty extended keyboard +#:: protocol. The special value all means all of them. + +#:: Some more examples:: + +#:: # Output a word and move the cursor to the start of the line (like typing and pressing Home) +#:: map ctrl+alt+a send_text normal Word\x1b[H +#:: map ctrl+alt+a send_text application Word\x1bOH +#:: # Run a command at a shell prompt (like typing the command and pressing Enter) +#:: map ctrl+alt+a send_text normal,application some command with arguments\r + +#: Open kitty Website + +map shift+cmd+/ open_url https://sw.kovidgoyal.net/kitty/ + +#: }}} + +#: }}} + diff --git a/dot_config/lxqt/executable_archiver.conf b/dot_config/lxqt/executable_archiver.conf new file mode 100644 index 0000000..c4c245d --- /dev/null +++ b/dot_config/lxqt/executable_archiver.conf @@ -0,0 +1,9 @@ +[Sizes] +SplitterPos=200 +ViewsIconSize=24 +WindowSize=@Size(944 1031) + +[Window] +DirTree=true +StatusBar=true +ToolBar=true diff --git a/dot_config/lxqt/executable_lxqt-config-appearance.conf b/dot_config/lxqt/executable_lxqt-config-appearance.conf new file mode 100644 index 0000000..c0b6e7b --- /dev/null +++ b/dot_config/lxqt/executable_lxqt-config-appearance.conf @@ -0,0 +1,4 @@ +[General] +ControlGTKThemeEnabled=false +__userfile__=true +size=@Size(675 1031) diff --git a/dot_config/lxqt/executable_lxqt-config-file-associations.conf b/dot_config/lxqt/executable_lxqt-config-file-associations.conf new file mode 100644 index 0000000..39980af --- /dev/null +++ b/dot_config/lxqt/executable_lxqt-config-file-associations.conf @@ -0,0 +1,2 @@ +[General] +size=@Size(626 1031) diff --git a/dot_config/lxqt/executable_lxqt-config-locale.conf b/dot_config/lxqt/executable_lxqt-config-locale.conf new file mode 100644 index 0000000..79b42c6 --- /dev/null +++ b/dot_config/lxqt/executable_lxqt-config-locale.conf @@ -0,0 +1,2 @@ +[General] +__userfile__=true diff --git a/dot_config/lxqt/executable_lxqt-config.conf b/dot_config/lxqt/executable_lxqt-config.conf new file mode 100644 index 0000000..dea729c --- /dev/null +++ b/dot_config/lxqt/executable_lxqt-config.conf @@ -0,0 +1,2 @@ +[General] +size=@Size(944 1031) diff --git a/dot_config/lxqt/executable_lxqt.conf b/dot_config/lxqt/executable_lxqt.conf new file mode 100644 index 0000000..569309b --- /dev/null +++ b/dot_config/lxqt/executable_lxqt.conf @@ -0,0 +1,19 @@ +[General] +__userfile__=true +icon_follow_color_scheme=true +icon_theme=Arc +tool_button_style=ToolButtonTextBesideIcon + +[Palette] +base_color=#ffffff +highlight_color=#308cc6 +highlighted_text_color=#ffffff +link_color=#0000ff +link_visited_color=#ff00ff +text_color=#000000 +window_color=#efefef +window_text_color=#000000 + +[Qt] +font="Cantarell,12,-1,5,50,0,0,0,0,0" +style=qt5ct-style diff --git a/dot_config/lxqt/executable_session.conf b/dot_config/lxqt/executable_session.conf new file mode 100644 index 0000000..e5662f3 --- /dev/null +++ b/dot_config/lxqt/executable_session.conf @@ -0,0 +1,6 @@ +[General] +__userfile__=true + +[Mouse] +cursor_size=24 +cursor_theme=capitaine-cursors diff --git a/dot_config/lxqt/executable_windowmanagers.conf b/dot_config/lxqt/executable_windowmanagers.conf new file mode 100644 index 0000000..79b42c6 --- /dev/null +++ b/dot_config/lxqt/executable_windowmanagers.conf @@ -0,0 +1,2 @@ +[General] +__userfile__=true diff --git a/dot_config/mako/executable_config b/dot_config/mako/executable_config new file mode 100644 index 0000000..6592566 --- /dev/null +++ b/dot_config/mako/executable_config @@ -0,0 +1,27 @@ +sort=-time +layer=overlay +background-color=#2e3440 +width=300 +height=110 +border-size=2 +border-color=#88c0d0 +border-radius=15 +icons=0 +max-icon-size=64 +default-timeout=5000 +ignore-timeout=1 +font=monospace 14 + +[urgency=low] +border-color=#cccccc + +[urgency=normal] +border-color=#d08770 + +[urgency=high] +border-color=#bf616a +default-timeout=0 + +[category=mpd] +default-timeout=2000 +group-by=category diff --git a/dot_config/ncmpcpp/executable_config b/dot_config/ncmpcpp/executable_config new file mode 100644 index 0000000..ca6eca6 --- /dev/null +++ b/dot_config/ncmpcpp/executable_config @@ -0,0 +1,601 @@ +############################################################## +## This is an example configuration file. Copy it to ## +## $XDG_CONFIG_HOME/ncmpcpp/config or $HOME/.ncmpcpp/config ## +## and set up your preferences. ## +############################################################## +# +##### directories ###### +## +## Directory for storing ncmpcpp related files. Changing it is useful if you +## want to store everything somewhere else and provide command line setting for +## alternative location to config file which defines that while launching +## ncmpcpp. +## +# +ncmpcpp_directory = ~/.config/ncmpcpp +# +## +## Directory for storing downloaded lyrics. It defaults to ~/.lyrics since other +## MPD clients (eg. ncmpc) also use that location. +## +# +#lyrics_directory = ~/.lyrics +# +##### connection settings ##### +# +mpd_host = localhost +# +mpd_port = 6600 +# +#mpd_connection_timeout = 5 +# +## Needed for tag editor and file operations to work. +## +#mpd_music_dir = ~/music +# +#mpd_crossfade_time = 5 +# +# Exclude pattern for random song action +# http://www.boost.org/doc/libs/1_46_1/libs/regex/doc/html/boost_regex/syntax/perl_syntax.html +#random_exclude_pattern = "^(temp|midi_songs).*" +# +##### music visualizer ##### +## +## In order to make music visualizer work with MPD you need to use the fifo +## output. Its format parameter has to be set to 44100:16:1 for mono +## visualization or 44100:16:2 for stereo visualization. As an example here is +## the relevant section for mpd.conf: +## +## audio_output { +## type "fifo" +## name "Visualizer feed" +## path "/tmp/mpd.fifo" +## format "44100:16:2" +## } +## +## If the visualization on occasion diverges from the audio output, please set +## 'buffer_time' parameter of your audio output in mpd.conf to '100000' (100ms) +## or less to prevent that from happening. +## +## Note: If you're using Mopidy, an address of a udpsink gstreamer's output is +## also accepted. For example, the following section in mopidy.conf: +## +## [audio] +## output = tee name=t ! queue ! autoaudiosink t. +## ! queue ! audio/x-raw,rate=44100,channels=2,format=S16LE +## ! udpsink host=localhost port=5555 +## +## will make localhost:5555 available as a source of data for the stereo +## visualizer. +## +# +visualizer_data_source = /tmp/mpd.fifo +# +## +## Note: Below parameter is needed for ncmpcpp to determine which output +## provides data for visualizer and reset it at the beginning of visualization +## to synchronize with audio. +## +# +#visualizer_output_name = Visualizer feed +# +## +## If you set format to 44100:16:2, make it 'yes'. +## +#visualizer_in_stereo = yes +# +## +## Note: set below to >=10 only if you have synchronization issues with +## visualization and audio. +## +# +#visualizer_sync_interval = 0 +# +## +## Note: To enable spectrum frequency visualization you need to compile ncmpcpp +## with fftw3 support. +## +# +## Available values: spectrum, wave, wave_filled, ellipse. +## +#visualizer_type = spectrum +# +## visualizer_type can be spectrum, wave, or ellipse +visualizer_type = "spectrum" (spectrum/wave) +visualizer_color = 41, 83, 119, 155, 185, 215, 209, 203, 197, 161 +#visualizer_fps = 60 +# +visualizer_autoscale = yes +# +visualizer_look = ●▮ +# +#visualizer_color = blue, cyan, green, yellow, magenta, red +# +## Alternative subset of 256 colors for terminals that support it. +## +#visualizer_color = 47, 83, 119, 155, 191, 227, 221, 215, 209, 203, 197, 161 +# +## +## Note: The next few visualization options apply to the spectrum visualizer. +## +# +## Use unicode block characters for a smoother, more continuous look. +## This will override the visualizer_look option. With transparent terminals +## and visualizer_in_stereo set, artifacts may be visible on the bottom half of +## the visualization. +# +#visualizer_spectrum_smooth_look = yes +# +## A value between 1 and 5 inclusive. Specifying a larger value makes the +## visualizer look at a larger slice of time, which results in less jumpy +## visualizer output. +# +#visualizer_spectrum_dft_size = 2 +# +#visualizer_spectrum_gain = 10 +# +## Left-most frequency of visualizer in Hz, must be less than HZ MAX +# +#visualizer_spectrum_hz_min = 20 +# +## Right-most frequency of visualizer in Hz, must be greater than HZ MIN +# +#visualizer_spectrum_hz_max = 20000 +# +##### system encoding ##### +## +## ncmpcpp should detect your charset encoding but if it failed to do so, you +## can specify charset encoding you are using here. +## +## Note: You can see whether your ncmpcpp build supports charset detection by +## checking output of `ncmpcpp --version`. +## +## Note: Since MPD uses UTF-8 by default, setting this option makes sense only +## if your encoding is different. +## +# +#system_encoding = "" +# +##### delays ##### +# +## Time of inactivity (in seconds) after playlist highlighting will be disabled +## (0 = always on). +## +#playlist_disable_highlight_delay = 5 +# +## Defines how long messages are supposed to be visible. +## +#message_delay_time = 5 +# +##### song format ##### +## +## For a song format you can use: +## +## %l - length +## %f - filename +## %D - directory +## %a - artist +## %A - album artist +## %t - title +## %b - album +## %y - date +## %n - track number (01/12 -> 01) +## %N - full track info (01/12 -> 01/12) +## %g - genre +## %c - composer +## %p - performer +## %d - disc +## %C - comment +## %P - priority +## $R - begin right alignment +## +## If you want to make sure that a part of the format is displayed only when +## certain tags are present, you can archieve it by grouping them with brackets, +## e.g. '{%a - %t}' will be evaluated to 'ARTIST - TITLE' if both tags are +## present or '' otherwise. It is also possible to define a list of +## alternatives by providing several groups and separating them with '|', +## e.g. '{%t}|{%f}' will be evaluated to 'TITLE' or 'FILENAME' if the former is +## not present. +## +## Note: If you want to set limit on maximal length of a tag, just put the +## appropriate number between % and character that defines tag type, e.g. to +## make album take max. 20 terminal cells, use '%20b'. +## +## In addition, formats support markers used for text attributes. They are +## followed by character '$'. After that you can put: +## +## - 0 - default window color (discards all other colors) +## - 1 - black +## - 2 - red +## - 3 - green +## - 4 - yellow +## - 5 - blue +## - 6 - magenta +## - 7 - cyan +## - 8 - white +## - 9 - end of current color +## - b - bold text +## - u - underline text +## - r - reverse colors +## - a - use alternative character set +## +## If you don't want to use a non-color attribute anymore, just put it again, +## but this time insert character '/' between '$' and attribute character, +## e.g. {$b%t$/b}|{$r%f$/r} will display bolded title tag or filename with +## reversed colors. +## +## If you want to use 256 colors and/or background colors in formats (the naming +## scheme is described below in section about color definitions), it can be done +## with the syntax $(COLOR), e.g. to set the artist tag to one of the +## non-standard colors and make it have yellow background, you need to write +## $(197_yellow)%a$(end). Note that for standard colors this is interchangable +## with attributes listed above. +## +## Note: colors can be nested. +## +# +#song_list_format = {%a - }{%t}|{$8%f$9}$R{$3%l$9} +# +#song_status_format = {{%a{ "%b"{ (%y)}} - }{%t}}|{%f} +# +#song_library_format = {%n - }{%t}|{%f} +# +#alternative_header_first_line_format = $b$1$aqqu$/a$9 {%t}|{%f} $1$atqq$/a$9$/b +# +#alternative_header_second_line_format = {{$4$b%a$/b$9}{ - $7%b$9}{ ($4%y$9)}}|{%D} +# +#current_item_prefix = $(yellow)$r +# +#current_item_suffix = $/r$(end) +# +#current_item_inactive_column_prefix = $(white)$r +# +#current_item_inactive_column_suffix = $/r$(end) +# +#now_playing_prefix = $b +# +#now_playing_suffix = $/b +# +#browser_playlist_prefix = "$2playlist$9 " +# +#selected_item_prefix = $6 +# +#selected_item_suffix = $9 +# +#modified_item_prefix = $3> $9 +# +## +## Note: attributes are not supported for the following variables. +## +#song_window_title_format = {%a - }{%t}|{%f} +## +## Note: Below variables are used for sorting songs in browser. The sort mode +## determines how songs are sorted, and can be used in combination with a sort +## format to specify a custom sorting format. Available values for +## browser_sort_mode are "type", "name", "mtime", "format" and "none". +## +# +#browser_sort_mode = type +# +#browser_sort_format = {%a - }{%t}|{%f} {%l} +# +##### columns settings ##### +## +## syntax of song columns list format is "column column etc." +## +## - syntax for each column is: +## +## (width of the column)[color of the column]{displayed tag} +## +## Note: Width is by default in %, if you want a column to have fixed size, add +## 'f' after the value, e.g. (10)[white]{a} will be the column that take 10% of +## screen (so the real width will depend on actual screen size), whereas +## (10f)[white]{a} will take 10 terminal cells, no matter how wide the screen +## is. +## +## - color is optional (if you want the default one, leave the field empty). +## +## Note: You can give a column additional attributes by putting appropriate +## character after displayed tag character. Available attributes are: +## +## - r - column will be right aligned +## - E - if tag is empty, empty tag marker won't be displayed +## +## You can also: +## +## - give a column custom name by putting it after attributes, separated with +## character ':', e.g. {lr:Length} gives you right aligned column of lengths +## named "Length". +## +## - define sequence of tags, that have to be displayed in case predecessor is +## empty in a way similar to the one in classic song format, i.e. using '|' +## character, e.g. {a|c|p:Owner} creates column named "Owner" that tries to +## display artist tag and then composer and performer if previous ones are not +## available. +## +# +#song_columns_list_format = (20)[]{a} (6f)[green]{NE} (50)[white]{t|f:Title} (20)[cyan]{b} (7f)[magenta]{l} +# +##### various settings ##### +# +## +## Note: Custom command that will be executed each time song changes. Useful for +## notifications etc. +## +#execute_on_song_change = "" +# +## +## Note: Custom command that will be executed each time player state +## changes. The environment variable MPD_PLAYER_STATE is set to the current +## state (either unknown, play, pause, or stop) for its duration. +## +# +#execute_on_player_state_change = "" +# +#playlist_show_mpd_host = no +# +#playlist_show_remaining_time = no +# +#playlist_shorten_total_times = no +# +#playlist_separate_albums = no +# +## +## Note: Possible display modes: classic, columns. +## +#playlist_display_mode = columns +# +#browser_display_mode = classic +# +#search_engine_display_mode = classic +# +#playlist_editor_display_mode = classic +# +#discard_colors_if_item_is_selected = yes +# +#show_duplicate_tags = yes +# +#incremental_seeking = yes +# +#seek_time = 1 +# +#volume_change_step = 2 +# +#autocenter_mode = no +# +#centered_cursor = no +# +## +## Note: You can specify third character which will be used to build 'empty' +## part of progressbar. +## +#progressbar_look = => +# +## Available values: database, playlist. +## +#default_place_to_search_in = database +# +## Available values: classic, alternative. +## +#user_interface = classic +# +#data_fetching_delay = yes +# +## Available values: artist, album_artist, date, genre, composer, performer. +## +#media_library_primary_tag = artist +# +#media_library_albums_split_by_date = yes +# +#media_library_hide_album_dates = no +# +## Available values: wrapped, normal. +## +#default_find_mode = wrapped +# +#default_tag_editor_pattern = %n - %t +# +#header_visibility = yes +# +#statusbar_visibility = yes +# +## Show the "Connected to ..." message on startup +#connected_message_on_startup = yes +# +#titles_visibility = yes +# +#header_text_scrolling = yes +# +#cyclic_scrolling = no +# +#lyrics_fetchers = azlyrics, genius, musixmatch, sing365, metrolyrics, justsomelyrics, jahlyrics, plyrics, tekstowo, zeneszoveg, internet +# +#follow_now_playing_lyrics = no +# +#fetch_lyrics_for_current_song_in_background = no +# +#store_lyrics_in_song_dir = no +# +#generate_win32_compatible_filenames = yes +# +#allow_for_physical_item_deletion = no +# +## +## Note: If you set this variable, ncmpcpp will try to get info from last.fm in +## language you set and if it fails, it will fall back to english. Otherwise it +## will use english the first time. +## +## Note: Language has to be expressed as an ISO 639 alpha-2 code. +## +#lastfm_preferred_language = en +# +#space_add_mode = add_remove +# +#show_hidden_files_in_local_browser = no +# +## +## How shall screen switcher work? +## +## - "previous" - switch between the current and previous screen. +## - "screen1,...,screenN" - switch between given sequence of screens. +## +## Screens available for use: help, playlist, browser, search_engine, +## media_library, playlist_editor, tag_editor, outputs, visualizer, clock, +## lyrics, last_fm. +## +#screen_switcher_mode = playlist, browser +# +## +## Note: You can define startup screen by choosing screen from the list above. +## +#startup_screen = playlist +# +## +## Note: You can define startup slave screen by choosing screen from the list +## above or an empty value for no slave screen. +## +#startup_slave_screen = "" +# +#startup_slave_screen_focus = no +# +## +## Default width of locked screen (in %). Acceptable values are from 20 to 80. +## +# +#locked_screen_width_part = 50 +# +#ask_for_locked_screen_width_part = yes +# +#jump_to_now_playing_song_at_start = yes +# +#ask_before_clearing_playlists = yes +# +#clock_display_seconds = no +# +#display_volume_level = yes +# +#display_bitrate = no +# +#display_remaining_time = no +# +## Available values: none, basic, extended, perl. +## +#regular_expressions = perl +# +## +## Note: if below is enabled, ncmpcpp will ignore leading "The" word while +## sorting items in browser, tags in media library, etc. +## +#ignore_leading_the = no +# +## +## Note: if below is enabled, ncmpcpp will ignore diacritics while searching and +## filtering lists. This takes an effect only if boost was compiled with ICU +## support. +## +#ignore_diacritics = no +# +#block_search_constraints_change_if_items_found = yes +# +#mouse_support = yes +# +#mouse_list_scroll_whole_page = no +# +#lines_scrolled = 5 +# +#empty_tag_marker = +# +#tags_separator = " | " +# +#tag_editor_extended_numeration = no +# +#media_library_sort_by_mtime = no +# +#enable_window_title = yes +# +## +## Note: You can choose default search mode for search engine. Available modes +## are: +## +## - 1 - use mpd built-in searching (no regexes, pattern matching) +## +## - 2 - use ncmpcpp searching (pattern matching with support for regexes, but +## if your mpd is on a remote machine, downloading big database to process +## it can take a while +## +## - 3 - match only exact values (this mode uses mpd function for searching in +## database and local one for searching in current playlist) +## +# +#search_engine_default_search_mode = 1 +# +#external_editor = nano +# +## Note: set to yes if external editor is a console application. +## +#use_console_editor = yes +# +##### colors definitions ##### +## +## It is possible to set a background color by setting a color value +## "_", e.g. red_black will set foregound color to red +## and background color to black. +## +## In addition, for terminals that support 256 colors it is possible to set one +## of them by using a number in range [1, 256] instead of color name, +## e.g. numerical value corresponding to red_black is 2_1. To find out if the +## terminal supports 256 colors, run ncmpcpp and check out the bottom of the +## help screen for list of available colors and their numerical values. +## +## What is more, there are two special values for the background color: +## "transparent" and "current". The first one explicitly sets the background to +## be transparent, while the second one allows you to preserve current +## background color and change only the foreground one. It's used implicitly +## when background color is not specified. +## +## Moreover, it is possible to attach format information to selected color +## variables by appending to their end a colon followed by one or more format +## flags, e.g. black:b or red:ur. The following variables support this syntax: +## visualizer_color, color1, color2, empty_tag_color, volume_color, +## state_line_color, state_flags_color, progressbar_color, +## progressbar_elapsed_color, player_state_color, statusbar_time_color, +## alternative_ui_separator_color. +## +## Note: due to technical limitations of older ncurses version, if 256 colors +## are used there is a possibility that you'll be able to use only colors with +## transparent background. +# +#colors_enabled = yes +# +#empty_tag_color = cyan +# +#header_window_color = default +# +#volume_color = default +# +#state_line_color = default +# +#state_flags_color = default:b +# +#main_window_color = yellow +# +#color1 = white +# +#color2 = green +# +#progressbar_color = black:b +# +#progressbar_elapsed_color = green:b +# +#statusbar_color = default +# +#statusbar_time_color = default:b +# +#player_state_color = default:b +# +#alternative_ui_separator_color = black:b +# +#window_border_color = green +# +#active_window_border = red +# diff --git a/dot_config/pcmanfm-qt/default/executable_recent-files.conf b/dot_config/pcmanfm-qt/default/executable_recent-files.conf new file mode 100644 index 0000000..6f2be2f --- /dev/null +++ b/dot_config/pcmanfm-qt/default/executable_recent-files.conf @@ -0,0 +1,2 @@ +[Recent] +Files=@Invalid() diff --git a/dot_config/pcmanfm-qt/default/executable_settings.conf b/dot_config/pcmanfm-qt/default/executable_settings.conf new file mode 100644 index 0000000..a8112ce --- /dev/null +++ b/dot_config/pcmanfm-qt/default/executable_settings.conf @@ -0,0 +1,118 @@ +[Behavior] +AutoSelectionDelay=600 +BookmarkOpenMethod=current_tab +ConfirmDelete=true +ConfirmTrash=false +CtrlRightClick=false +NoUsbTrash=false +QuickExec=false +RecentFilesNumber=0 +SelectNewFiles=false +SingleClick=false +SingleWindowMode=false +UseTrash=true + +[Desktop] +AllSticky=false +BgColor=#000000 +DesktopCellMargins=@Size(3 1) +DesktopIconSize=48 +DesktopShortcuts=@Invalid() +FgColor=#ffffff +Font="Sans Serif,9,-1,5,50,0,0,0,0,0" +HideItems=false +LastSlide= +OpenWithDefaultFileManager=false +PerScreenWallpaper=false +ShadowColor=#000000 +ShowHidden=false +SlideShowInterval=0 +SortColumn=name +SortFolderFirst=true +SortHiddenLast=false +SortOrder=ascending +TransformWallpaper=false +Wallpaper= +WallpaperDialogSize=@Size(700 500) +WallpaperDialogSplitterPos=200 +WallpaperDirectory= +WallpaperMode=none +WallpaperRandomize=false +WorkAreaMargins=12, 12, 12, 12 + +[FolderView] +BackupAsHidden=false +BigIconSize=48 +CustomColumnWidths=@Invalid() +FolderViewCellMargins=@Size(3 3) +HiddenColumns=@Invalid() +Mode=icon +NoItemTooltip=false +ScrollPerPixel=true +ShadowHidden=true +ShowFilter=false +ShowFullNames=true +ShowHidden=false +SidePaneIconSize=24 +SmallIconSize=24 +SortCaseSensitive=false +SortColumn=name +SortFolderFirst=true +SortHiddenLast=false +SortOrder=ascending +ThumbnailIconSize=128 + +[Places] +HiddenPlaces=@Invalid() + +[Search] +ContentPatterns=@Invalid() +MaxSearchHistory=0 +NamePatterns=@Invalid() +searchContentCaseInsensitive=false +searchContentRegexp=true +searchNameCaseInsensitive=false +searchNameRegexp=true +searchRecursive=false +searchhHidden=false + +[System] +Archiver=lxqt-archiver +FallbackIconThemeName=oxygen +OnlyUserTemplates=false +SIUnit=false +SuCommand=lxqt-sudo %s +TemplateRunApp=false +TemplateTypeOnce=false +Terminal=wezterm + +[Thumbnail] +MaxExternalThumbnailFileSize=-1 +MaxThumbnailFileSize=4096 +ShowThumbnails=true +ThumbnailLocalFilesOnly=true + +[Volume] +AutoRun=true +CloseOnUnmount=true +MountOnStartup=true +MountRemovable=true + +[Window] +AlwaysShowTabs=true +FixedHeight=480 +FixedWidth=640 +LastWindowHeight=789 +LastWindowMaximized=false +LastWindowWidth=960 +PathBarButtons=true +RememberWindowSize=true +ReopenLastTabs=false +ShowMenuBar=true +ShowTabClose=true +SidePaneMode=places +SidePaneVisible=true +SplitView=false +SplitterPos=150 +SwitchToNewTab=false +TabPaths=@Invalid() diff --git a/dot_config/pcmanfm/default/executable_pcmanfm.conf b/dot_config/pcmanfm/default/executable_pcmanfm.conf new file mode 100644 index 0000000..7b0af85 --- /dev/null +++ b/dot_config/pcmanfm/default/executable_pcmanfm.conf @@ -0,0 +1,30 @@ +[config] +bm_open_method=0 + +[volume] +mount_on_startup=1 +mount_removable=1 +autorun=1 + +[autorun] +x-content/win32-software=pcmanfm + +[ui] +always_show_tabs=0 +max_tab_chars=32 +win_width=640 +win_height=480 +maximized=1 +splitter_pos=150 +media_in_new_tab=0 +desktop_folder_new_win=0 +change_tab_on_drop=1 +close_on_unmount=1 +focus_previous=0 +side_pane_mode=places +view_mode=icon +show_hidden=1 +sort=name;ascending; +toolbar=newtab;navigation;home; +show_statusbar=1 +pathbar_mode_buttons=0 diff --git a/dot_config/private_mimeapps.list b/dot_config/private_mimeapps.list new file mode 100644 index 0000000..f6ae75d --- /dev/null +++ b/dot_config/private_mimeapps.list @@ -0,0 +1,116 @@ +[Added Associations] +application/json=code-oss.desktop;vim.desktop; +application/pdf=org.gnome.Evince.desktop;com.github.xournalpp.xournalpp.desktop; +application/vnd.openxmlformats-officedocument.wordprocessingml.document=libreoffice-writer.desktop; +application/x-extension-htm=firefox.desktop; +application/x-extension-html=firefox.desktop; +application/x-extension-shtml=firefox.desktop; +application/x-extension-xht=firefox.desktop; +application/x-extension-xhtml=firefox.desktop; +application/x-ms-dos-executable=wine.desktop; +application/x-raw-disk-image-xz-compressed=org.gnome.FileRoller.desktop; +application/x-shellscript=vim.desktop; +application/x-xz-compressed-tar=engrampa.desktop; +application/x-yaml=vim.desktop; +application/xhtml+xml=firefox.desktop; +application/xml=vim.desktop; +audio/flac=vlc.desktop; +audio/mpeg=vlc.desktop; +audio/x-opus+ogg=vlc.desktop; +audio/x-vorbis+ogg=vlc.desktop; +image/png=lximage-qt.desktop;org.xfce.ristretto.desktop;imv.desktop;feh.desktop;org.gnome.eog.desktop; +inode/directory=xfce4-file-manager.desktop;pcmanfm.desktop;pcmanfm-qt.desktop; +text/csv=vim.desktop; +text/html=firefox.desktop; +text/plain=vim.desktop; +video/mp4=vlc.desktop; +video/x-matroska=vlc.desktop; +x-scheme-handler/chrome=firefox.desktop; +x-scheme-handler/geo=openstreetmap-geo-handler.desktop; +x-scheme-handler/http=firefox.desktop; +x-scheme-handler/https=firefox.desktop; +x-scheme-handler/mailto=thunderbird.desktop;userapp-Thunderbird-Y331Y1.desktop; +x-scheme-handler/tel=org.kde.kdeconnect.handler.desktop; +x-scheme-handler/trash=xfce4-file-manager.desktop; +application/x-smb-server=thunar.desktop;pcmanfm.desktop; +application/x-smb-workgroup=pcmanfm.desktop;thunar.desktop; +image/tiff=lximage-qt.desktop; +image/svg+xml=lximage-qt.desktop; +image/jpeg=lximage-qt.desktop; +image/gif=lximage-qt.desktop; +image/bmp=lximage-qt.desktop; +application/vnd.rar=xarchiver.desktop;org.gnome.FileRoller.desktop; +video/quicktime=vlc.desktop; +text/x-log=vim.desktop;code-oss.desktop; +x-scheme-handler/mid=userapp-Thunderbird-Y331Y1.desktop; +x-scheme-handler/news=userapp-Thunderbird-7E70Y1.desktop; +x-scheme-handler/snews=userapp-Thunderbird-7E70Y1.desktop; +x-scheme-handler/nntp=userapp-Thunderbird-7E70Y1.desktop; +x-scheme-handler/feed=userapp-Thunderbird-PY6YY1.desktop; +application/rss+xml=userapp-Thunderbird-PY6YY1.desktop; +application/x-extension-rss=userapp-Thunderbird-PY6YY1.desktop; +x-scheme-handler/webcal=userapp-Thunderbird-IT7VY1.desktop; +x-scheme-handler/webcals=userapp-Thunderbird-IT7VY1.desktop; + +[Default Applications] +application/json=vim.desktop +application/pcx=lximage-qt.desktop +application/pdf=org.gnome.Evince.desktop +application/vnd.openxmlformats-officedocument.wordprocessingml.document=libreoffice-writer.desktop +application/x-extension-htm=firefox.desktop +application/x-extension-html=firefox.desktop +application/x-extension-shtml=firefox.desktop +application/x-extension-xht=firefox.desktop +application/x-extension-xhtml=firefox.desktop +application/x-shellscript=vim.desktop +application/x-xz-compressed-tar=engrampa.desktop +application/x-yaml=vim.desktop +application/xhtml+xml=firefox.desktop +audio/flac=vlc.desktop +audio/x-opus+ogg=vlc.desktop +audio/x-vorbis+ogg=vlc.desktop +image/bmp=lximage-qt.desktop +image/gif=lximage-qt.desktop +image/jpeg=lximage-qt.desktop +image/jpg=lximage-qt.desktop +image/png=lximage-qt.desktop +image/svg+xml=lximage-qt.desktop +image/svg-xml=lximage-qt.desktop +image/tiff=lximage-qt.desktop +image/x-bmp=lximage-qt.desktop +image/x-pcx=lximage-qt.desktop +image/x-portable-bitmap=lximage-qt.desktop +image/x-portable-greymap=lximage-qt.desktop +image/x-portable-pixmap=lximage-qt.desktop +image/x-targa=lximage-qt.desktop +image/x-tga=lximage-qt.desktop +inode/directory=pcmanfm.desktop +text/html=firefox.desktop +text/plain=vim.desktop +video/mp4=vlc.desktop +video/x-matroska=vlc.desktop +x-scheme-handler/chrome=firefox.desktop +x-scheme-handler/discord-402572971681644545=discord-402572971681644545.desktop +x-scheme-handler/discord-516565141911765022=discord-516565141911765022.desktop +x-scheme-handler/geo=openstreetmap-geo-handler.desktop; +x-scheme-handler/http=firefox.desktop; +x-scheme-handler/https=firefox.desktop; +x-scheme-handler/jetbrains=jetbrains-toolbox.desktop +x-scheme-handler/mailto=userapp-Thunderbird-Y331Y1.desktop +x-scheme-handler/tel=org.kde.kdeconnect.handler.desktop; +x-scheme-handler/trash=xfce4-file-manager.desktop +application/x-smb-server=pcmanfm.desktop +application/x-smb-workgroup=pcmanfm.desktop +video/quicktime=vlc.desktop +message/rfc822=userapp-Thunderbird-Y331Y1.desktop +x-scheme-handler/mid=userapp-Thunderbird-Y331Y1.desktop +x-scheme-handler/news=userapp-Thunderbird-7E70Y1.desktop +x-scheme-handler/snews=userapp-Thunderbird-7E70Y1.desktop +x-scheme-handler/nntp=userapp-Thunderbird-7E70Y1.desktop +x-scheme-handler/feed=userapp-Thunderbird-PY6YY1.desktop +application/rss+xml=userapp-Thunderbird-PY6YY1.desktop +application/x-extension-rss=userapp-Thunderbird-PY6YY1.desktop +x-scheme-handler/webcal=userapp-Thunderbird-IT7VY1.desktop +text/calendar=userapp-Thunderbird-IT7VY1.desktop +application/x-extension-ics=userapp-Thunderbird-IT7VY1.desktop +x-scheme-handler/webcals=userapp-Thunderbird-IT7VY1.desktop diff --git a/dot_config/qt5ct/colors/executable_arc-dark.conf b/dot_config/qt5ct/colors/executable_arc-dark.conf new file mode 100644 index 0000000..3096780 --- /dev/null +++ b/dot_config/qt5ct/colors/executable_arc-dark.conf @@ -0,0 +1,4 @@ +[ColorScheme] +active_colors=#ffffff, #383C4A, #979797, #5e5c5b, #302f2e, #4a4947, #ffffff, #ffffff, #ffffff, #3d3d3d, #2F343F, #e7e4e0, #5294e2, #f9f9f9, #5294e2, #a70b06, #5c5b5a, #ffffff, #3f3f36, #ffffff +disabled_colors=#808080, #383C4A, #979797, #5e5c5b, #302f2e, #4a4947, #808080, #ffffff, #808080, #3d3d3d, #2F343F, #e7e4e0, #5294e2, #808080, #5294e2, #a70b06, #5c5b5a, #ffffff, #3f3f36, #ffffff +inactive_colors=#ffffff, #383C4A, #979797, #5e5c5b, #302f2e, #4a4947, #ffffff, #ffffff, #ffffff, #3d3d3d, #2F343F, #e7e4e0, #5294e2, #f9f9f9, #5294e2, #a70b06, #5c5b5a, #ffffff, #3f3f36, #ffffff diff --git a/dot_config/qt5ct/colors/executable_arc.conf b/dot_config/qt5ct/colors/executable_arc.conf new file mode 100644 index 0000000..f93ff03 --- /dev/null +++ b/dot_config/qt5ct/colors/executable_arc.conf @@ -0,0 +1,4 @@ +[ColorScheme] +active_colors=#000000, #F5F6F7, #ffffff, #F3F3F3, #9f9d9a, #b8b5b2, #000000, #ffffff, #000000, #ffffff, #E7E8EB, #b1aeab, #5492DF, #ffffff, #0000ff, #ff0000, #f7f5f3, #000000, #ffffdc, #000000 +disabled_colors=#bebebe, #F5F6F7, #ffffff, #F3F3F3, #9f9d9a, #b8b5b2, #bebebe, #ffffff, #bebebe, #efebe7, #E7E8EB, #b1aeab, #9f9d9a, #ffffff, #0000ff, #ff0000, #f7f5f3, #000000, #ffffdc, #000000 +inactive_colors=#000000, #F5F6F7, #ffffff, #F3F3F3, #9f9d9a, #b8b5b2, #000000, #ffffff, #000000, #ffffff, #E7E8EB, #b1aeab, #5492DF, #ffffff, #0000ff, #ff0000, #f7f5f3, #000000, #ffffdc, #000000 diff --git a/dot_config/qt5ct/executable_qt5ct.conf b/dot_config/qt5ct/executable_qt5ct.conf new file mode 100644 index 0000000..64ab4ad --- /dev/null +++ b/dot_config/qt5ct/executable_qt5ct.conf @@ -0,0 +1,35 @@ +[Appearance] +color_scheme_path=~/.config/qt5ct/colors/arc-dark.conf +custom_palette=true +icon_theme=Arc +standard_dialogs=default +style=Fusion + +[Fonts] +fixed=@Variant(\0\0\0@\0\0\0\x12\0\x43\0\x61\0n\0t\0\x61\0r\0\x65\0l\0l@(\0\0\0\0\0\0\xff\xff\xff\xff\x5\x1\0\x32\x10) +general=@Variant(\0\0\0@\0\0\0\x12\0\x43\0\x61\0n\0t\0\x61\0r\0\x65\0l\0l@(\0\0\0\0\0\0\xff\xff\xff\xff\x5\x1\0\x32\x10) + +[Interface] +activate_item_on_single_click=1 +buttonbox_layout=3 +cursor_flash_time=1000 +dialog_buttons_have_icons=1 +double_click_interval=400 +gui_effects=@Invalid() +keyboard_scheme=4 +menus_have_icons=true +show_shortcuts_in_context_menus=true +stylesheets=@Invalid() +toolbutton_style=4 +underline_shortcut=1 +wheel_scroll_lines=3 + +[QSSEditor] +geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\x8d\0\0\0\xf6\0\0\x3\xf\0\0\x2\xe8\0\0\0\x8d\0\0\0\xf6\0\0\x3\xf\0\0\x2\xe8\0\0\0\0\0\0\0\0\a\x80\0\0\0\x8d\0\0\0\xf6\0\0\x3\xf\0\0\x2\xe8) + +[SettingsWindow] +geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x3\xa9\0\0\x4\0\0\0\0\0\0\0\0\0\0\0\x2\xf0\0\0\x2t\0\0\0\0\x2\0\0\0\a\x80\0\0\0\0\0\0\0\0\0\0\x3\xa9\0\0\x4\0) + +[Troubleshooting] +force_raster_widgets=1 +ignored_applications=@Invalid() diff --git a/dot_config/qt5ct/qss/.keep b/dot_config/qt5ct/qss/.keep new file mode 100644 index 0000000..e69de29 diff --git a/dot_config/sov/executable_config b/dot_config/sov/executable_config new file mode 100644 index 0000000..9044378 --- /dev/null +++ b/dot_config/sov/executable_config @@ -0,0 +1,68 @@ +# anchor, where to display sov, top, bottom, left, right, center +anchor center + +# margin, distance from edges if anchor is set +margin 0 + +# show timeout in millisecs +timeout 200 + +# distance between workspaces +gap 20 + +# columns +columns 5 + +# thumbnail to workspace ratio +ratio 8 + +# font face, use any string that is output by fc-list +font_face Terminus (TTF):style=Bold + +# margin size around text +text_margin_size 7 + +# margin top size over text +text_margin_top_size 4 + +# title text size +text_title_size 14 + +# title text color +text_title_color #FFFFFFFF + +# description text size +text_description_size 12 + +# description text color +text_description_color #999999FF + +# workspace number text size +text_workspace_size 18 + +# workspace number text color +text_workspace_color #FFFFFFFF + +# workspace number x shift +text_workspace_xshift 11 + +# workspace number y shift +text_workspace_yshift -17 + +# border color +border_color #BCBCBCFF + +# background color +background_color #222222FF + +# focused background color +background_color_focused #444444FF + +# window color +window_color #000000AA + +# empty thumb color +empty_color #111111FF + +# empty thumb border +empty_frame_color #555555FF diff --git a/dot_config/sway/executable_arch-update b/dot_config/sway/executable_arch-update new file mode 100644 index 0000000..9dfec46 --- /dev/null +++ b/dot_config/sway/executable_arch-update @@ -0,0 +1,123 @@ +#!/usr/bin/env python3 +# +# Copyright (C) 2017 Marcel Patzwahl +# Licensed under the terms of the GNU GPL v3 only. +# +# i3blocks blocklet script to see the available updates of pacman and the AUR +import subprocess +from subprocess import check_output +import argparse +import os +import re + + +def create_argparse(): + def _default(name, default='', arg_type=str): + val = default + if name in os.environ: + val = os.environ[name] + return arg_type(val) + + strbool = lambda s: s.lower() in ['t', 'true', '1'] + strlist = lambda s: s.split() + + parser = argparse.ArgumentParser(description='Check for pacman updates') + parser.add_argument( + '-b', + '--base_color', + default = _default('BASE_COLOR', 'green'), + help='base color of the output(default=green)' + ) + parser.add_argument( + '-u', + '--updates_available_color', + default = _default('UPDATE_COLOR', 'yellow'), + help='color of the output, when updates are available(default=yellow)' + ) + parser.add_argument( + '-a', + '--aur', + action = 'store_const', + const = True, + default = _default('AUR', 'False', strbool), + help='Include AUR packages. Attn: Yaourt must be installed' + ) + parser.add_argument( + '-q', + '--quiet', + action = 'store_const', + const = True, + default = _default('QUIET', 'False', strbool), + help = 'Do not produce output when system is up to date' + ) + parser.add_argument( + '-w', + '--watch', + nargs='*', + default = _default('WATCH', arg_type=strlist), + help='Explicitly watch for specified packages. ' + 'Listed elements are treated as regular expressions for matching.' + ) + return parser.parse_args() + + +def get_updates(): + output = check_output(['checkupdates']).decode('utf-8') + if not output: + return [] + + updates = [line.split(' ')[0] + for line in output.split('\n') + if line] + + return updates + + +def get_aur_updates(): + output = '' + try: + output = check_output(['yaourt', '-Qua']).decode('utf-8') + except subprocess.CalledProcessError as exc: + # yaourt exits with 1 and no output if no updates are available. + # we ignore this case and go on + if not (exc.returncode == 1 and not exc.output): + raise exc + if not output: + return [] + + aur_updates = [line.split(' ')[0] + for line in output.split('\n') + if line.startswith('aur/')] + + return aur_updates + + +def matching_updates(updates, watch_list): + matches = set() + for u in updates: + for w in watch_list: + if re.match(w, u): + matches.add(u) + + return matches + + +message = "{1}" +args = create_argparse() + +updates = get_updates() +if args.aur: + updates += get_aur_updates() + +update_count = len(updates) +if update_count > 0: + info = str(update_count) + ' updates available' + short_info = str(update_count) + ' updates' + matches = matching_updates(updates, args.watch) + if matches: + info += ' [{0}]'.format(', '.join(matches)) + short_info += '*' + print(message.format(args.updates_available_color, info)) + print(message.format(args.updates_available_color, short_info)) +elif not args.quiet: + print(message.format(args.base_color, 'system up to date')) diff --git a/dot_config/sway/executable_bandwidth b/dot_config/sway/executable_bandwidth new file mode 100644 index 0000000..bcbdb65 --- /dev/null +++ b/dot_config/sway/executable_bandwidth @@ -0,0 +1,112 @@ +#!/bin/bash +# Copyright (C) 2012 Stefan Breunig +# Copyright (C) 2014 kaueraal +# Copyright (C) 2015 Thiago Perrotta + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Get custom IN and OUT labels if provided by command line arguments +while [[ $# -gt 1 ]]; do + key="$1" + case "$key" in + -i|--inlabel) + INLABEL="$2" + shift;; + -o|--outlabel) + OUTLABEL="$2" + shift;; + esac + shift +done + +[[ -z $INLABEL ]] && INLABEL="IN " +[[ -z $OUTLABEL ]] && OUTLABEL="OUT " + +# Use the provided interface, otherwise the device used for the default route. +if [[ -z $INTERFACE ]] && [[ -n $BLOCK_INSTANCE ]]; then + INTERFACE=$BLOCK_INSTANCE +elif [[ -z $INTERFACE ]]; then + INTERFACE=$(ip route | awk '/^default/ { print $5 ; exit }') +fi + +# Exit if there is no default route +[[ -z "$IF" ]] && exit + +# Issue #36 compliant. +if ! [ -e "/sys/class/net/${INTERFACE}/operstate" ] || \ + (! [ "$TREAT_UNKNOWN_AS_UP" = "1" ] && + ! [ "`cat /sys/class/net/${INTERFACE}/operstate`" = "up" ]) +then + echo "$INTERFACE down" + echo "$INTERFACE down" + echo "#FF0000" + exit 0 +fi + +# path to store the old results in +path="/dev/shm/$(basename $0)-${INTERFACE}" + +# grabbing data for each adapter. +read rx < "/sys/class/net/${INTERFACE}/statistics/rx_bytes" +read tx < "/sys/class/net/${INTERFACE}/statistics/tx_bytes" + +# get time +time=$(date +%s) + +# write current data if file does not exist. Do not exit, this will cause +# problems if this file is sourced instead of executed as another process. +if ! [[ -f "${path}" ]]; then + echo "${time} ${rx} ${tx}" > "${path}" + chmod 0666 "${path}" +fi + +# read previous state and update data storage +read old < "${path}" +echo "${time} ${rx} ${tx}" > "${path}" + +# parse old data and calc time passed +old=(${old//;/ }) +time_diff=$(( $time - ${old[0]} )) + +# sanity check: has a positive amount of time passed +[[ "${time_diff}" -gt 0 ]] || exit + +# calc bytes transferred, and their rate in byte/s +rx_diff=$(( $rx - ${old[1]} )) +tx_diff=$(( $tx - ${old[2]} )) +rx_rate=$(( $rx_diff / $time_diff )) +tx_rate=$(( $tx_diff / $time_diff )) + +# shift by 10 bytes to get KiB/s. If the value is larger than +# 1024^2 = 1048576, then display MiB/s instead + +# incoming +echo -n "$INLABEL" +rx_kib=$(( $rx_rate >> 10 )) +if hash bc 2>/dev/null && [[ "$rx_rate" -gt 1048576 ]]; then + printf '%sM' "`echo "scale=1; $rx_kib / 1024" | bc`" +else + echo -n "${rx_kib}K" +fi + +echo -n " " + +# outgoing +echo -n "$OUTLABEL" +tx_kib=$(( $tx_rate >> 10 )) +if hash bc 2>/dev/null && [[ "$tx_rate" -gt 1048576 ]]; then + printf '%sM' "`echo "scale=1; $tx_kib / 1024" | bc`" +else + echo -n "${tx_kib}K" +fi diff --git a/dot_config/sway/executable_batterybar b/dot_config/sway/executable_batterybar new file mode 100644 index 0000000..0308aba --- /dev/null +++ b/dot_config/sway/executable_batterybar @@ -0,0 +1,137 @@ +#!/usr/bin/env bash +# batterybar; displays battery percentage as a bar on i3blocks +# +# Copyright 2015 Keftaa +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1301, USA. +# +# +readarray -t output <<< $(acpi battery) +battery_count=${#output[@]} + +for line in "${output[@]}"; +do + percentages+=($(echo "$line" | grep -o -m1 '[0-9]\{1,3\}%' | tr -d '%')) + statuses+=($(echo "$line" | egrep -o -m1 'Discharging|Charging|AC|Full|Unknown')) + remaining=$(echo "$line" | egrep -o -m1 '[0-9][0-9]:[0-9][0-9]') + if [[ -n $remaining ]]; then + remainings+=(" ($remaining)") + else + remainings+=("") + fi +done + +squares="■" + +#There are 8 colors that reflect the current battery percentage when +#discharging +dis_colors=("${C1:-#FF0027}" "${C2:-#FF3B05}" "${C3:-#FFB923}" + "${C4:-#FFD000}" "${C5:-#E4FF00}" "${C6:-#ADFF00}" + "${C7:-#6DFF00}" "${C8:-#10BA00}") +charging_color="${CHARGING_COLOR:-#00AFE3}" +full_color="${FULL_COLOR:-#FFFFFF}" +ac_color="${AC_COLOR:-#535353}" + + +while getopts 1:2:3:4:5:6:7:8:c:f:a:h opt; do + case "$opt" in + 1) dis_colors[0]="$OPTARG";; + 2) dis_colors[1]="$OPTARG";; + 3) dis_colors[2]="$OPTARG";; + 4) dis_colors[3]="$OPTARG";; + 5) dis_colors[4]="$OPTARG";; + 6) dis_colors[5]="$OPTARG";; + 7) dis_colors[6]="$OPTARG";; + 8) dis_colors[7]="$OPTARG";; + c) charging_color="$OPTARG";; + f) full_color="$OPTARG";; + a) ac_color="$OPTARG";; + h) printf "Usage: batterybar [OPTION] color + When discharging, there are 8 [1-8] levels colors. + You can specify custom colors, for example: + + batterybar -1 red -2 \"#F6F6F6\" -8 green + + You can also specify the colors for the charging, AC and + charged states: + + batterybar -c green -f white -a \"#EEEEEE\"\n"; + exit 0; + esac +done + +end=$(($battery_count - 1)) +for i in $(seq 0 $end); +do + if (( percentages[$i] > 0 && percentages[$i] < 20 )); then + squares="■" + elif (( percentages[$i] >= 20 && percentages[$i] < 40 )); then + squares="■■" + elif (( percentages[$i] >= 40 && percentages[$i] < 60 )); then + squares="■■■" + elif (( percentages[$i] >= 60 && percentages[$i] < 80 )); then + squares="■■■■" + elif (( percentages[$i] >=80 )); then + squares="■■■■■" + fi + + if [[ "${statuses[$i]}" = "Unknown" ]]; then + squares="?$squares" + fi + + case "${statuses[$i]}" in + "Charging") + color="$charging_color" + ;; + "Full") + color="$full_color" + ;; + "AC") + color="$ac_color" + ;; + "Discharging"|"Unknown") + if (( percentages[$i] >= 0 && percentages[$i] < 10 )); then + color="${dis_colors[0]}" + elif (( percentages[$i] >= 10 && percentages[$i] < 20 )); then + color="${dis_colors[1]}" + elif (( percentages[$i] >= 20 && percentages[$i] < 30 )); then + color="${dis_colors[2]}" + elif (( percentages[$i] >= 30 && percentages[$i] < 40 )); then + color="${dis_colors[3]}" + elif (( percentages[$i] >= 40 && percentages[$i] < 60 )); then + color="${dis_colors[4]}" + elif (( percentages[$i] >= 60 && percentages[$i] < 70 )); then + color="${dis_colors[5]}" + elif (( percentages[$i] >= 70 && percentages[$i] < 80 )); then + color="${dis_colors[6]}" + elif (( percentages[$i] >= 80 )); then + color="${dis_colors[7]}" + fi + ;; + esac + + # Print Battery number if there is more than one + if (( $end > 0 )) ; then + message="$message $(($i + 1)):" + fi + + if [[ "$BLOCK_BUTTON" -eq 1 ]]; then + message="$message ${statuses[$i]} ${percentages[$i]}%${remainings[i]}" + fi + message="$message $squares" +done + +echo $message diff --git a/dot_config/sway/executable_calendar b/dot_config/sway/executable_calendar new file mode 100644 index 0000000..4ec7d81 --- /dev/null +++ b/dot_config/sway/executable_calendar @@ -0,0 +1,40 @@ +#! /bin/sh + +WIDTH=${WIDTH:-200} +HEIGHT=${HEIGHT:-200} +DATEFMT=${DATEFMT:-"+%a %d.%m.%Y %H:%M:%S"} +SHORTFMT=${SHORTFMT:-"+%H:%M:%S"} + +OPTIND=1 +while getopts ":f:W:H:" opt; do + case $opt in + f) DATEFMT="$OPTARG" ;; + W) WIDTH="$OPTARG" ;; + H) HEIGHT="$OPTARG" ;; + \?) + echo "Invalid option: -$OPTARG" >&2 + exit 1 + ;; + :) + echo "Option -$OPTARG requires an argument." >&2 + exit 1 + ;; + esac +done + +case "$BLOCK_BUTTON" in + 1|2|3) + + # the position of the upper left corner of the popup + posX=$(($BLOCK_X - $WIDTH / 2)) + posY=$(($BLOCK_Y - $HEIGHT)) + + i3-msg -q "exec yad --calendar \ + --width=$WIDTH --height=$HEIGHT \ + --undecorated --fixed \ + --close-on-unfocus --no-buttons \ + --posx=$posX --posy=$posY \ + > /dev/null" +esac +echo "$LABEL$(date "$DATEFMT")" +echo "$LABEL$(date "$SHORTFMT")" diff --git a/dot_config/sway/executable_compton.conf b/dot_config/sway/executable_compton.conf new file mode 100644 index 0000000..2bc5d47 --- /dev/null +++ b/dot_config/sway/executable_compton.conf @@ -0,0 +1,234 @@ +# Thank you code_nomad: http://9m.no/ꪯ鵞 + +################################# +# +# Backend +# +################################# + +# Backend to use: "xrender" or "glx". +# GLX backend is typically much faster but depends on a sane driver. +backend = "glx"; + +################################# +# +# GLX backend +# +################################# + +glx-no-stencil = true; + +# GLX backend: Copy unmodified regions from front buffer instead of redrawing them all. +# My tests with nvidia-drivers show a 10% decrease in performance when the whole screen is modified, +# but a 20% increase when only 1/4 is. +# My tests on nouveau show terrible slowdown. +# Useful with --glx-swap-method, as well. +glx-copy-from-front = false; + +# GLX backend: Use MESA_copy_sub_buffer to do partial screen update. +# My tests on nouveau shows a 200% performance boost when only 1/4 of the screen is updated. +# May break VSync and is not available on some drivers. +# Overrides --glx-copy-from-front. +# glx-use-copysubbuffermesa = true; + +# GLX backend: Avoid rebinding pixmap on window damage. +# Probably could improve performance on rapid window content changes, but is known to break things on some drivers (LLVMpipe). +# Recommended if it works. +# glx-no-rebind-pixmap = true; + + +# GLX backend: GLX buffer swap method we assume. +# Could be undefined (0), copy (1), exchange (2), 3-6, or buffer-age (-1). +# undefined is the slowest and the safest, and the default value. +# copy is fastest, but may fail on some drivers, +# 2-6 are gradually slower but safer (6 is still faster than 0). +# Usually, double buffer means 2, triple buffer means 3. +# buffer-age means auto-detect using GLX_EXT_buffer_age, supported by some drivers. +# Useless with --glx-use-copysubbuffermesa. +# Partially breaks --resize-damage. +# Defaults to undefined. +glx-swap-method = "undefined"; + +################################# +# +# Shadows +# +################################# + +# Enabled client-side shadows on windows. +shadow = true; +# Don't draw shadows on DND windows. +no-dnd-shadow = true; +# Avoid drawing shadows on dock/panel windows. +no-dock-shadow = true; +# Zero the part of the shadow's mask behind the window. Fix some weirdness with ARGB windows. +clear-shadow = true; +# The blur radius for shadows. (default 12) +shadow-radius = 5; +# The left offset for shadows. (default -15) +shadow-offset-x = -5; +# The top offset for shadows. (default -15) +shadow-offset-y = -5; +# The translucency for shadows. (default .75) +shadow-opacity = 0.5; + +# Set if you want different colour shadows +# shadow-red = 0.0; +# shadow-green = 0.0; +# shadow-blue = 0.0; + +# The shadow exclude options are helpful if you have shadows enabled. Due to the way compton draws its shadows, certain applications will have visual glitches +# (most applications are fine, only apps that do weird things with xshapes or argb are affected). +# This list includes all the affected apps I found in my testing. The "! name~=''" part excludes shadows on any "Unknown" windows, this prevents a visual glitch with the XFWM alt tab switcher. +shadow-exclude = [ + "! name~=''", + "name = 'Notification'", + "name = 'Plank'", + "name = 'Docky'", + "name = 'Kupfer'", + "name = 'xfce4-notifyd'", + "name *= 'VLC'", + "name *= 'compton'", + "name *= 'Chromium'", + "name *= 'Chrome'", + "class_g = 'Conky'", + "class_g = 'Kupfer'", + "class_g = 'Synapse'", + "class_g ?= 'Notify-osd'", + "class_g ?= 'Cairo-dock'", + "class_g ?= 'Xfce4-notifyd'", + "class_g ?= 'Xfce4-power-manager'", + "_GTK_FRAME_EXTENTS@:c" +]; +# Avoid drawing shadow on all shaped windows (see also: --detect-rounded-corners) +shadow-ignore-shaped = false; + +################################# +# +# Opacity +# +################################# + +menu-opacity = 1; +inactive-opacity = 1; +active-opacity = 1; +frame-opacity = 1; +inactive-opacity-override = false; +alpha-step = 0.06; + +# Dim inactive windows. (0.0 - 1.0) +# inactive-dim = 0.2; +# Do not let dimness adjust based on window opacity. +# inactive-dim-fixed = true; +# Blur background of transparent windows. Bad performance with X Render backend. GLX backend is preferred. +# blur-background = true; +# Blur background of opaque windows with transparent frames as well. +# blur-background-frame = true; +# Do not let blur radius adjust based on window opacity. +blur-background-fixed = false; +blur-background-exclude = [ + "window_type = 'dock'", + "window_type = 'desktop'" +]; + +################################# +# +# Fading +# +################################# + +# Fade windows during opacity changes. +fading = true; +# The time between steps in a fade in milliseconds. (default 10). +fade-delta = 4; +# Opacity change between steps while fading in. (default 0.028). +fade-in-step = 0.03; +# Opacity change between steps while fading out. (default 0.03). +fade-out-step = 0.03; +# Fade windows in/out when opening/closing +# no-fading-openclose = true; + +# Specify a list of conditions of windows that should not be faded. +fade-exclude = [ ]; + +################################# +# +# Other +# +################################# + +# Try to detect WM windows and mark them as active. +mark-wmwin-focused = true; +# Mark all non-WM but override-redirect windows active (e.g. menus). +mark-ovredir-focused = true; +# Use EWMH _NET_WM_ACTIVE_WINDOW to determine which window is focused instead of using FocusIn/Out events. +# Usually more reliable but depends on a EWMH-compliant WM. +use-ewmh-active-win = true; +# Detect rounded corners and treat them as rectangular when --shadow-ignore-shaped is on. +detect-rounded-corners = true; + +# Detect _NET_WM_OPACITY on client windows, useful for window managers not passing _NET_WM_OPACITY of client windows to frame windows. +# This prevents opacity being ignored for some apps. +# For example without this enabled my xfce4-notifyd is 100% opacity no matter what. +detect-client-opacity = true; + +# Specify refresh rate of the screen. +# If not specified or 0, compton will try detecting this with X RandR extension. +refresh-rate = 0; + +# Set VSync method. VSync methods currently available: +# none: No VSync +# drm: VSync with DRM_IOCTL_WAIT_VBLANK. May only work on some drivers. +# opengl: Try to VSync with SGI_video_sync OpenGL extension. Only work on some drivers. +# opengl-oml: Try to VSync with OML_sync_control OpenGL extension. Only work on some drivers. +# opengl-swc: Try to VSync with SGI_swap_control OpenGL extension. Only work on some drivers. Works only with GLX backend. Known to be most effective on many drivers. Does not actually control paint timing, only buffer swap is affected, so it doesn’t have the effect of --sw-opti unlike other methods. Experimental. +# opengl-mswc: Try to VSync with MESA_swap_control OpenGL extension. Basically the same as opengl-swc above, except the extension we use. +# (Note some VSync methods may not be enabled at compile time.) +vsync = "opengl-swc"; + +# Enable DBE painting mode, intended to use with VSync to (hopefully) eliminate tearing. +# Reported to have no effect, though. +dbe = false; + +# Painting on X Composite overlay window. Recommended. +paint-on-overlay = true; + +# Limit compton to repaint at most once every 1 / refresh_rate second to boost performance. +# This should not be used with --vsync drm/opengl/opengl-oml as they essentially does --sw-opti's job already, +# unless you wish to specify a lower refresh rate than the actual value. +#sw-opti = true; + +# Unredirect all windows if a full-screen opaque window is detected, to maximize performance for full-screen windows, like games. +# Known to cause flickering when redirecting/unredirecting windows. +# paint-on-overlay may make the flickering less obvious. +unredir-if-possible = true; + +# Specify a list of conditions of windows that should always be considered focused. +focus-exclude = [ ]; + +# Use WM_TRANSIENT_FOR to group windows, and consider windows in the same group focused at the same time. +detect-transient = true; +# Use WM_CLIENT_LEADER to group windows, and consider windows in the same group focused at the same time. +# WM_TRANSIENT_FOR has higher priority if --detect-transient is enabled, too. +detect-client-leader = true; + +################################# +# +# Window type settings +# +################################# + +wintypes: +{ + tooltip = + { + # fade: Fade the particular type of windows. + fade = true; + # shadow: Give those windows shadow + shadow = false; + # opacity: Default opacity for the type of windows. + opacity = 0.85; + # focus: Whether to always consider windows of this type focused. + focus = true; + }; +}; diff --git a/dot_config/sway/executable_config b/dot_config/sway/executable_config new file mode 100644 index 0000000..2a8ca1d --- /dev/null +++ b/dot_config/sway/executable_config @@ -0,0 +1,653 @@ +# This file has been auto-generated by i3-config-wizard(1). +# It will not be overwritten, so edit it as you like. +# +# Should you change your keyboard layout some time, delete +# this file and re-run i3-config-wizard(1). +# + +# xmodmap -pke +# xev + +# i3 config file (v4) +# +# Please see https://i3wm.org/docs/userguide.html for a complete reference! + +set $mod Mod1 + +# Font for window titles. Will also be used by the bar unless a different font +# is used in the bar {} block below. +#font pango:Noto Sans Bold 9 +#font pango:Droid Sans 9 +#font pango:FontAwesome 8, pango: Droid Sans Mono 8 +#font pango:System San Francisco Display 10 +#font pango:System San Francisco Display 6 +#font pango:monospace 8 + +set $bg-color #2f343f +set $inactive-bg-color #2f343f +set $text-color #f3f4f5 +set $inactive-text-color #676E7D +set $urgent-bg-color #E53935 + +#font pango:Terminus (TTF) Bold 12 +font pango:Hack Nerd Font 13 +#font pango:Hack 12 + +# window colors +# border background text indicat> +client.focused $bg-color $bg-color $text-color #00ff00 +client.unfocused $inactive-bg-color $inactive-bg-color $inactive-text-color #00ff00 +client.focused_inactive $inactive-bg-color $inactive-bg-color $inactive-text-color #00ff00 +client.urgent $urgent-bg-color $urgent-bg-color $text-color #00ff00 + +# This font is widely installed, provides lots of unicode glyphs, right-to-left +# text rendering and scalability on retina/hidpi displays (thanks to pango). +#font pango:DejaVu Sans Mono 8 + +# Before i3 v4.8, we used to recommend this one as the default: +# font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1 +# The font above is very space-efficient, that is, it looks good, sharp and +# clear in small sizes. However, its unicode glyph coverage is limited, the old +# X core fonts rendering does not support right-to-left and this being a bitmap +# font, it doesn’t scale on retina/hidpi displays. + +# Use Mouse+$mod to drag floating windows to their wanted position +floating_modifier $mod + +workspace_auto_back_and_forth yes +force_display_urgency_hint 0 ms +focus_on_window_activation urgent + +# start a terminal +bindsym $mod+Return exec wezterm + +# kill focused window +bindsym $mod+Shift+q kill + +# Menu +#bindsym $mod+d exec rofi -show run -lines 3 -bw 1 -font "Cantarell 18" -opacity "75" +bindsym $mod+d exec fuzzel +#bindsym $mod+d exec wofi --show run --width 900 --height 200 +#bindsym $mod+d exec rofi -show run -lines 3 -eh 2 -width 100 -padding 800 -opacity "85" -bw 0 -bc "$bg-color" -bg "$bg-color" -fg "$text-color" -hlbg "$bg-color" -hlfg "#9575cd" -font "System San Francisco Display 18" + +#bindsym $mod+d exec --no-startup-id i3-dmenu-desktop --dmenu='rofi -i -dmenu -font "snap 12" -bg "#222222" -fg "#888888" -hlbg "#285577" -hlfg "#ffffff" -opacity 90 -m 0 -location 2' + +# start dmenu (a program launcher) +#bindsym $mod+d exec dmenu_run +#bindsym $mod+d exec j4-dmenu-desktop --dmenu='bemenu -i --nb "#3f3f3f" --nf "#dcdccc" --fn "pango:DejaVu Sans Mono 12"' --term='termite' +# There also is the (new) i3-dmenu-desktop which only displays applications +# shipping a .desktop file. It is a wrapper around dmenu, so you need that +# installed. +# bindsym $mod+d exec --no-startup-id i3-dmenu-desktop + +# change focus +bindsym $mod+j focus left +bindsym $mod+k focus down +bindsym $mod+l focus up +bindsym $mod+odiaeresis focus right + +# alternatively, you can use the cursor keys: +bindsym $mod+Left focus left +bindsym $mod+Down focus down +bindsym $mod+Up focus up +bindsym $mod+Right focus right + +# move focused window +bindsym $mod+Shift+j move left +bindsym $mod+Shift+k move down +bindsym $mod+Shift+l move up +bindsym $mod+Shift+odiaeresis move right + +# alternatively, you can use the cursor keys: +bindsym $mod+Shift+Left move left +bindsym $mod+Shift+Down move down +bindsym $mod+Shift+Up move up +bindsym $mod+Shift+Right move right + +# split in horizontal orientation +bindsym $mod+h split h + +# split in vertical orientation +bindsym $mod+v split v + +# enter fullscreen mode for the focused container +bindsym $mod+f fullscreen toggle + +# change container layout (stacked, tabbed, toggle split) +bindsym $mod+s layout stacking +bindsym $mod+w layout tabbed +bindsym $mod+e layout toggle split + +# toggle tiling / floating +bindsym $mod+Shift+space floating toggle + +# change focus between tiling / floating windows +bindsym $mod+space focus mode_toggle + +# focus the parent container +bindsym $mod+a focus parent + +# focus the child container +#bindsym $mod+d focus child + +# Define names for default workspaces for which we configure key bindings later on. +# We use variables to avoid repeating the names in multiple places. +#set $ws1 "1: Terminals " +#set $ws2 "2: Browser " +#set $ws3 "3: Mail " +#set $ws4 "4: Office " +#set $ws5 "5: Music " +#set $ws6 "6: Speakprogram " +#set $ws7 "7: IDE " +#set $ws8 "8: Steam " +#set $ws9 "9: Chat " +#set $ws10 "10: Others " + +bindsym --no-repeat $mod+1 workspace number 1; exec "echo 1 > /tmp/sov" +bindsym --no-repeat $mod+2 workspace number 2; exec "echo 1 > /tmp/sov" +bindsym --no-repeat $mod+3 workspace number 3; exec "echo 1 > /tmp/sov" +bindsym --no-repeat $mod+4 workspace number 4; exec "echo 1 > /tmp/sov" +bindsym --no-repeat $mod+5 workspace number 5; exec "echo 1 > /tmp/sov" +bindsym --no-repeat $mod+6 workspace number 6; exec "echo 1 > /tmp/sov" +bindsym --no-repeat $mod+7 workspace number 7; exec "echo 1 > /tmp/sov" +bindsym --no-repeat $mod+8 workspace number 8; exec "echo 1 > /tmp/sov" +bindsym --no-repeat $mod+9 workspace number 9; exec "echo 1 > /tmp/sov" +bindsym --no-repeat $mod+0 workspace number 10; exec "echo 1 > /tmp/sov" + +bindsym --release $mod+1 exec "echo 0 > /tmp/sov" +bindsym --release $mod+2 exec "echo 0 > /tmp/sov" +bindsym --release $mod+3 exec "echo 0 > /tmp/sov" +bindsym --release $mod+4 exec "echo 0 > /tmp/sov" +bindsym --release $mod+5 exec "echo 0 > /tmp/sov" +bindsym --release $mod+6 exec "echo 0 > /tmp/sov" +bindsym --release $mod+7 exec "echo 0 > /tmp/sov" +bindsym --release $mod+8 exec "echo 0 > /tmp/sov" +bindsym --release $mod+9 exec "echo 0 > /tmp/sov" +bindsym --release $mod+0 exec "echo 0 > /tmp/sov" + +bindsym $mod+Shift+1 move container to workspace number 1 +bindsym $mod+Shift+2 move container to workspace number 2 +bindsym $mod+Shift+3 move container to workspace number 3 +bindsym $mod+Shift+4 move container to workspace number 4 +bindsym $mod+Shift+5 move container to workspace number 5 +bindsym $mod+Shift+6 move container to workspace number 6 +bindsym $mod+Shift+7 move container to workspace number 7 +bindsym $mod+Shift+8 move container to workspace number 8 +bindsym $mod+Shift+9 move container to workspace number 9 +bindsym $mod+Shift+0 move container to workspace number 10 + +bindsym $mod+Ctrl+1 [workspace="1"] move workspace to output current +bindsym $mod+Ctrl+2 [workspace="2"] move workspace to output current +bindsym $mod+Ctrl+3 [workspace="3"] move workspace to output current +bindsym $mod+Ctrl+4 [workspace="4"] move workspace to output current +bindsym $mod+Ctrl+5 [workspace="5"] move workspace to output current +bindsym $mod+Ctrl+6 [workspace="6"] move workspace to output current +bindsym $mod+Ctrl+7 [workspace="7"] move workspace to output current +bindsym $mod+Ctrl+8 [workspace="8"] move workspace to output current +bindsym $mod+Ctrl+9 [workspace="9"] move workspace to output current +bindsym $mod+Ctrl+0 [workspace="10"] move workspace to output current + +# reload the configuration file +bindsym $mod+Shift+c reload +# restart i3 inplace (preserves your layout/session, can be used to upgrade i3) +bindsym $mod+Shift+r reload + +# exit sway (logs you out of your Wayland session) +bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit' + +# resize window (you can also use the mouse for that) +mode "resize" { + # These bindings trigger as soon as you enter the resize mode + + # Pressing left will shrink the window’s width. + # Pressing right will grow the window’s width. + # Pressing up will shrink the window’s height. + # Pressing down will grow the window’s height. + bindsym j resize shrink width 10 px or 10 ppt + bindsym k resize grow height 10 px or 10 ppt + bindsym l resize shrink height 10 px or 10 ppt + bindsym odiaeresis resize grow width 10 px or 10 ppt + + # same bindings, but for the arrow keys + bindsym Left resize shrink width 10 px or 10 ppt + bindsym Down resize grow height 10 px or 10 ppt + bindsym Up resize shrink height 10 px or 10 ppt + bindsym Right resize grow width 10 px or 10 ppt + + # back to normal: Enter or Escape or $mod+r + bindsym Return mode "default" + bindsym Escape mode "default" + bindsym $mod+r mode "default" +} + +bindsym $mod+r mode "resize" + +# Start i3bar to display a workspace bar (plus the system information i3status +# finds out, if available) + +#client.focused #81a2be #81a2be #1d1f21 #282a2e +#client.focused_inactive #373b41 #373b41 #969896 #282a2e +#client.unfocused #282a2e #282a2e #969896 #282a2e +#client.urgent #373b41 #cc6666 #ffffff #cc6666 + +# Status-Bar +#exec_always --no-startup-id $HOME/.config/polybar/launch.sh --cuts + +bar { + swaybar_command /usr/bin/swaybar + #font pango:Terminus (TTF) Bold 12 + font pango:Hack Nerd Font 13 + #font pango:Hack 12 + #font pango:DejaVu Sans Mono, FontAwesome 12 + + position top + status_command i3status-rs ~/.config/i3status-rust/config.toml + + # https://fontawesome.com/v4/cheatsheet/ + separator_symbol  + + colors { + background $bg-color + statusline #263238 + separator #757575 + + #colors outline background number + active_workspace #009688 #009688 #eceff1 + focused_workspace $bg-color $bg-color $text-color + inactive_workspace $inactive-bg-color $inactive-bg-color $inactive-text-color + urgent_workspace $urgent-bg-color $urgent-bg-color $text-color + } +} + +input * { + dwt enabled + tap enabled + natural_scroll disabled + middle_emulation enabled + repeat_rate 100 + repeat_delay 250 + xkb_layout de + xkb_variant nodeadkeys + xkb_options grp:alt_space_toggle +} + +seat seat0 xcursor_theme capitaine-cursors 16 + +# display resoulution +output eDP-1 pos 0 0 res 1920x1080 + +exec_always import-gsettings \ + gtk-theme:Arc-Dark \ + icon-theme:Arc \ + cursor-theme:capitaine-cursors + +# background +output "*" background ~/desktop-bilder/background.jpg fill + +# You can get the names of your inputs by running: swaymsg -t get_inputs +# Read `man 5 sway-input` for more information about this section. + + +# Benutzerdefiniert + +# Fenster zu einem Scratchpad +bindsym $mod+Shift+minus move scratchpad +# Zeige das scratcpad window +bindsym $mod+minus scratchpad show + +# Starte Programme über Tastaurkombination + +# Press $mod+o followed by either f to launch firefox, +# Escape or Return to the default mode, respectively. +set $mode_launcher Launch: [f]irefox [t]hunderbird [p]avucontrol [w]displays file[m]anager +bindsym $mod+o mode "$mode_launcher" + +mode "$mode_launcher" { + bindsym f exec firefox + bindsym t exec thunderbird + bindsym p exec pavucontrol-qt + bindsym w exec wdisplays + bindsym m exec pcmanfm-qt + + bindsym Escape mode "default" + bindsym Return mode "default" +} + +bindsym $mod+b exec firefox +bindsym $mod+t exec pcmanfm-qt +bindsym $mod+shift+t exec thunderbird +bindsym $mod+n exec wezterm start nmtui + +#bindsym $mod+y exec clipmenu +#bindsym $mod+shift+y exec passdmenu -P -x clipboard + +#bindsym $mod+o exec termite -e /usr/bin/alsamixer +#bindsym $mod+y exec alacritty -e ncmpcpp + +# Alsa-Steuerung & Lautstärke einstellen +#bindsym $mod+i exec amixer set Speaker 5%+ +#bindsym $mod+u exec amixer set Speaker 5%- +bindsym $mod+i exec pamixer --allow-boost -i 5 +bindsym $mod+shift+i exec pamixer --allow-boost -d 5 +bindsym $mod+shift+v exec "if pamixer --get-mute; then pamixer --unmute; else pamixer --mute; fi" +#bindsym $mod+shift+v exec amixer set Speaker toggle +#bindsym $mod+shift+h exec amixer set Capture toggle + +# https://i3wm.org/docs/userguide.html#assign_workspace +# xprop + +# Einstellungen für spezielle Programme (exact match instead of substring) +for_window [app_id="foot"] border pixel 1 +for_window [app_id="iwgtk"] floating enable +for_window [app_id="blueman-manager"] floating enable +for_window [app_id="blueman-manager"] resize set 1000 600 +for_window [app_id="pavucontrol"] floating enable +for_window [app_id="org.gnome.Nautilus"] floating enable +for_window [app_id="gnome-system-monitor"] floating enable; resize shrink down 100px; resize shrink up 100px +for_window [app_id="wdisplays"] floating enable +for_window [app_id="wdisplays"] resize set 1000 600 +for_window [app_id="pavucontrol"] floating enable +for_window [app_id="pavucontrol"] resize set 1000 600 +for_window [app_id="imv"] floating enable +for_window [app_id="pamac-manager"] floating enable + +for_window [class="(?i)vlc"] floating disable border none +for_window [class="(?i)virtualbox"] floating enable border normal +for_window [class="(?i)claws-mail"] floating enable border normal +for_window [class="mplayer"] floating disable border none +for_window [title="Wicd"] floating enable border normal +for_window [title="galculator"] floating enable border normal +for_window [title="Verbindungsinformationen"] floating enable border normal +for_window [title="Lautstärkeregler"] floating enable border normal +for_window [title="Freundesliste"] floating enable border normal + +# Einstellungen Fensterverhalten für bestimmte Programme im Terminal +for_window [class="Alpine"] floating enable border none +for_window [class="calcurse"] floating enable border none +for_window [class="newsbeuter"] floating enable border none +for_window [class="weechat"] floating enable border none + +# Starter für Progs im Terminal +bindsym $mod+F1 exec wezterm start arch-install +bindsym $mod+F2 exec wezterm start bashtop +bindsym $mod+F3 exec wezterm start nmtui + +# assign special properties +for_window [class="^Pavucontrol$"] floating enable +for_window [title="MonoDevelop External Console"] floating enable +for_window [class="^Shutter$"] floating enable +# Enables floating windows of the chrome extension "Videostream for Chromecast" +for_window [instance="^crx_cnciopoikihiagdjbjpnocolokfelagl$"] floating enable +# The Chrome "Page Unresponsive" dialog is not floating... +for_window [title="Page Unresponsive"] floating enable +# Share your screen from Google Cast extension +for_window [title="Share your screen - Google Cast"] floating enable +# TeamSpeak new features window +for_window [class="^TeamSpeak 3$" title="^New TeamSpeak Features"] floating enable +# Android Device Monitor startup window +for_window [class="^Monitor$" instance="^Monitor$" title="^Monitor$"] floating enable +# chromeIPass "No logins found." window +for_window [title="^chromeIPass$"] floating enable + +# Jetbrains +for_window [class="^com-intellij-updater-Runner$" title="^Update$"] floating enable +for_window [instance="^sun-awt-X11-XDialogPeer$" title="^Complete Installation$"] floating enable + +# Unity +for_window [class="^Unity$" title="^Starting Unity...$"] floating enable +for_window [class="^Unity$" title="^Hold On$"] floating enable +for_window [class="^Unity$" title="^Preparing Package$"] floating enable +for_window [class="^Unity$" title="^Importing Package$"] floating enable + +# https://github.com/ValveSoftware/steam-for-linux/issues/1040 +for_window [class="^Steam$" title="^Friends$"] floating enable +for_window [class="^Steam$" title="Steam - News"] floating enable +for_window [class="^Steam$" title=".* - Chat"] floating enable +for_window [class="^Steam$" title="^Settings$"] floating enable +for_window [class="^Steam$" title=".* - event started"] floating enable +for_window [class="^Steam$" title=".* CD key"] floating enable +for_window [class="^Steam$" title="^Steam - Self Updater$"] floating enable +for_window [class="^Steam$" title="^Screenshot Uploader$"] floating enable +for_window [class="^Steam$" title="^Steam Guard - Computer Authorization Required$"] floating enable +for_window [class="^Steam$" title="Steam-Bibliotheksordner$"] floating enable +for_window [class="^Steam$" title="Neuen Steam-Bibliotheksordner auswählen oder erstellen:$"] floating enable +for_window [title="^Steam Keyboard$"] floating enable +#for_window [title="^Steam$"] floating enable + +# There is no specific property for windows that should be floating (eg. the WM_NAME is the device name (PC1)) +for_window [class="^PacketTracer6$"] floating enable +for_window [class="^PacketTracer6$" title="PT Activity"] floating disable +for_window [class="^PacketTracer6$" title="Cisco Packet Tracer"] floating disable + +# Alsa-Steuerung & Lautstärke einstellen +bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle +bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5% && pamixer --get-volume > /tmp/wob +bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5% && pamixer --get-volume > /tmp/wob + +# Steuerung der Helligkeit +bindsym XF86MonBrightnessDown exec brightnessctl set 5%- | sed -En 's/.*\(([0-9]+)%\).*/\1/p' > /tmp/wob +bindsym XF86MonBrightnessUp exec brightnessctl set +5% | sed -En 's/.*\(([0-9]+)%\).*/\1/p' > /tmp/wob + +# Touchpad controls +bindsym XF86TouchpadToggle exec /usr/bin/touchpad_toggle # toggle touchpad + +# Media player controls +bindsym XF86AudioPlay exec playerctl play +bindsym XF86AudioPause exec playerctl pause +bindsym XF86AudioNext exec playerctl next +bindsym XF86AudioPrev exec playerctl previous + +# monitor-picture +# 1. Capture a Selection +bindsym Print exec grim -g "$(slurp)" $(xdg-user-dir PICTURES)/$(date +'%Y-%m-%d-%H%M%S_grim.png') +# 2. Capture the actually Display +bindsym $mod+Shift+Print exec grim -o $(swaymsg -t get_outputs | jq -r '.[] | select(.focused) | .name') $(xdg-user-dir PICTURES)/$(date +'%Y-%m-%d-%H%M%S_grim.png') + +bindsym $mod+p exec wlogout -p layer-shell + +# Power control script - a useful replacement for the normal i3 exiting keybind. +# https://wiki.archlinux.org/index.php/i3#Shutdown.2C_reboot.2C_lock_screen +set $mode_system System (1) lock, (e) logout, (s) suspend, (h) hibernate, (r) reboot, (d) shutdown +mode "$mode_system" { + bindsym 1 exec --no-startup-id ~/scripte/swayexit lock, mode "default" + bindsym e exec --no-startup-id ~/scripte/swayexit logout, mode "default" + bindsym s exec --no-startup-id ~/scripte/swayexit suspend, mode "default" + bindsym h exec --no-startup-id ~/scripte/swayexit hibernate, mode "default" + bindsym r exec --no-startup-id ~/scripte/swayexit reboot, mode "default" + bindsym d exec --no-startup-id ~/scripte/swayexit shutdown, mode "default" + # back to normal: Enter or Escape + bindsym Return mode "default" + bindsym Escape mode "default" +} +bindsym $mod+x mode "$mode_system" + +set $backlight_system Brightness (1) 10%, (2) 20%, (3) 30%, (4) 40%, (5) 50%, (6) 60%, (7) 70%, (8) 80%, (9) 100%, (0) 0% +mode "$backlight_system" { + bindsym 1 exec "~/.config/i3/backlight_system.sh 50 500" + bindsym 2 exec "~/.config/i3/backlight_system.sh 75 700" + bindsym 3 exec "~/.config/i3/backlight_system.sh 100 900" + bindsym 4 exec "~/.config/i3/backlight_system.sh 125 1100" + bindsym 5 exec "~/.config/i3/backlight_system.sh 150 1300" + bindsym 6 exec "~/.config/i3/backlight_system.sh 175 1500" + bindsym 7 exec "~/.config/i3/backlight_system.sh 200 1700" + bindsym 8 exec "~/.config/i3/backlight_system.sh 225 1900" + bindsym 9 exec "~/.config/i3/backlight_system.sh 255 2100" + bindsym 0 exec "~/.config/i3/backlight_system.sh 0 0" + # back to normal: Enter or Escape + bindsym Return mode "default" + bindsym Escape mode "default" +} +bindsym $mod+m mode "$backlight_system" + +set $hue_light Phillips-Hue Light (1) 10%, (2) 20%, (3) 30%, (4) 40%, (5) 50%, (6) 60%, (7) 70%, (8) 80%, (9) 100%, (0) 0% +mode "$hue_light" { + bindsym 1 exec "~/.config/i3/hui_light.sh true 50" + bindsym 2 exec "~/.config/i3/hui_light.sh true 75" + bindsym 3 exec "~/.config/i3/hui_light.sh true 100" + bindsym 4 exec "~/.config/i3/hui_light.sh true 125" + bindsym 5 exec "~/.config/i3/hui_light.sh true 150" + bindsym 6 exec "~/.config/i3/hui_light.sh true 175" + bindsym 7 exec "~/.config/i3/hui_light.sh true 200" + bindsym 8 exec "~/.config/i3/hui_light.sh true 225" + bindsym 9 exec "~/.config/i3/hui_light.sh true 255" + bindsym 0 exec "~/.config/i3/hui_light.sh false 0" + # back to normal: Enter or Escape + bindsym Return mode "default" + bindsym Escape mode "default" +} +bindsym $mod+u mode "$hue_light" + +set $hue_light_color Phillips-Hue Color (r) Red, (g) Green, (b) Blue +mode "$hue_light_color" { + bindsym r exec "~/.config/i3/hui_light_color.sh 0" + bindsym g exec "~/.config/i3/hui_light_color.sh 25500" + bindsym b exec "~/.config/i3/hui_light_color.sh 46920" + # back to normal: Enter or Escape + bindsym Return mode "default" + bindsym Escape mode "default" +} +bindsym $mod+shift+u mode "$hue_light_color" + +## Manual management of external displays +# Set the shortcuts and what they do +set $mode_display Ext Screen (v) eDP ON, (h) HDMI ON, (x) eDP OFF, (y) HDMI OFF +mode "$mode_display" { + bindsym v exec --no-startup-id output eDP-1 enable && output eDP-1 pos 1920 0 res 1920x1080 + bindsym h exec --no-startup-id output HDMI-A-1 enable && output HDMI-A-1 pos 1920 0 res 1920x1080 + bindsym x exec --no-startup-id output eDP-1 disable + bindsym y exec --no-startup-id output HDMI-A-1 disable + + # back to normal: Enter or Escape + bindsym Return mode "default" + bindsym Escape mode "default" +} + +# For use a Virtual VNC Connection with wayvnc +#swaymsg create_output + +# springen von Workspace zu workspace mit oder ohne container +workspace_auto_back_and_forth yes +bindsym $mod+z workspace back_and_forth +bindsym $mod+Shift+z move container to workspace back_and_forth; workspace back_and_forth + +# volumeicon +#exec --no-startup-id volumeicon + +# Networkmanager +#exec --no-startup-id nm-applet + +# Bluetooth +exec --no-startup-id blueman-applet + +# Start xscreensaver +#exec --no-startup-id "xscreensaver -no-splash" + +# Start Pulseaudio Server +#already started +#exec --no-startup-id "pulseaudio --start" + +# Start mako-notifyd Service +exec --no-startup-id "mako -c .config/mako/config" + +# Start volumeicon tray paystray (pulseaudio) +#exec --no-startup-id "pasystray --notify=all" + +# imwheel faster scrolling (deactivated sound bug) +#exec --no-startup-id imwheel + +# authentication manager +exec --no-startup-id lxpolkit + +# xfce4-power-manager +#exec --no-startup-id xfce4-power-manager + +# start gnome-keyring-daemon +#exec --no-startup-id /usr/bin/gnome-keyring-daemon --start --components=ssh,secrets,pkcs11 + +# notify service from smartphone +#exec --no-startup-id /opt/an2linuxserver/an2linuxserver.py + +# Adjust the color temperature of your screen according to your surroundings. +#exec gammastep + +# starting Steam +#exec --no-startup-id sleep 30 && steam-native + +exec swayidle -w \ + timeout 300 'swaylock -f' \ + timeout 600 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \ + before-sleep 'swaylock -f' + +exec rm -f /tmp/wob && mkfifo /tmp/wob && tail -f /tmp/wob | wob +exec rm -f /tmp/sov && mkfifo /tmp/sov && tail -f /tmp/sov | sov + +####### + +# swaylock +#convert image.jpg -resize $(xdpyinfo | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/') RGB:- | i3lock --raw $(xdpyinfo | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/'):rgb --image /dev/stdin +bindsym $mod+shift+x exec swaylock -c 000000 + +#bindsym $mod+shift+b exec xtrlock + + +### i3-gaps stuff ### + +# Necessary for i3-gaps to work properly (pixel can be any value) +for_window [class="^.*"] border pixel 3 + +# Smart Gaps +smart_gaps on + +# Smart Borders +smart_borders on + +# Set inner/outer gaps +gaps inner 12 +gaps outer -2 + +# Gaps mode +set $mode_gaps Gaps: (o) outer, (i) inner +set $mode_gaps_outer Outer Gaps: +|-|0 (local), Shift + +|-|0 (global) +set $mode_gaps_inner Inner Gaps: +|-|0 (local), Shift + +|-|0 (global) +bindsym $mod+Shift+g mode "$mode_gaps" + +mode "$mode_gaps" { + bindsym o mode "$mode_gaps_outer" + bindsym i mode "$mode_gaps_inner" + bindsym Return mode "default" + bindsym Escape mode "default" +} + +mode "$mode_gaps_inner" { + bindsym plus gaps inner current plus 5 + bindsym minus gaps inner current minus 5 + bindsym 0 gaps inner current set 0 + + bindsym Shift+plus gaps inner all plus 5 + bindsym Shift+minus gaps inner all minus 5 + bindsym Shift+0 gaps inner all set 0 + + bindsym Return mode "default" + bindsym Escape mode "default" +} +mode "$mode_gaps_outer" { + bindsym plus gaps outer current plus 5 + bindsym minus gaps outer current minus 5 + bindsym 0 gaps outer current set 0 + + bindsym Shift+plus gaps outer all plus 5 + bindsym Shift+minus gaps outer all minus 5 + bindsym Shift+0 gaps outer all set 0 + + bindsym Return mode "default" + bindsym Escape mode "default" +} + +default_border none +default_floating_border normal + +#xwayland disable + +include /etc/sway/config.d/* + +exec notify-send "loaded" "Welcome to sway." diff --git a/dot_config/sway/executable_cpu b/dot_config/sway/executable_cpu new file mode 100644 index 0000000..2cb27ad --- /dev/null +++ b/dot_config/sway/executable_cpu @@ -0,0 +1,48 @@ +#!/bin/bash +# Source: http://askubuntu.com/a/450136 + +URGENT_VALUE=90 + +PREV_TOTAL=0 +PREV_IDLE=0 + +cpuFile="/tmp/.cpu" + +if [[ -f "${cpuFile}" ]]; then + fileCont=$(cat "${cpuFile}") + PREV_TOTAL=$(echo "${fileCont}" | head -n 1) + PREV_IDLE=$(echo "${fileCont}" | tail -n 1) +fi + +CPU=(`cat /proc/stat | grep '^cpu '`) # Get the total CPU statistics. +unset CPU[0] # Discard the "cpu" prefix. +IDLE=${CPU[4]} # Get the idle CPU time. + +# Calculate the total CPU time. +TOTAL=0 + +for VALUE in "${CPU[@]:0:4}"; do + let "TOTAL=$TOTAL+$VALUE" +done + +if [[ "${PREV_TOTAL}" != "" ]] && [[ "${PREV_IDLE}" != "" ]]; then + # Calculate the CPU usage since we last checked. + let "DIFF_IDLE=$IDLE-$PREV_IDLE" + let "DIFF_TOTAL=$TOTAL-$PREV_TOTAL" + let "DIFF_USAGE=(1000*($DIFF_TOTAL-$DIFF_IDLE)/$DIFF_TOTAL+5)/10" + echo "${DIFF_USAGE}%" + echo "${DIFF_USAGE}%" + echo "" +else + echo "?" + echo "?" + echo "" +fi + +# Remember the total and idle CPU times for the next check. +echo "${TOTAL}" > "${cpuFile}" +echo "${IDLE}" >> "${cpuFile}" + +if [[ "${DIFF_USAGE}" -gt 0 ]] && [[ "${DIFF_USAGE}" -gt "${URGENT_VALUE}" ]]; then + exit 33 +fi \ No newline at end of file diff --git a/dot_config/sway/executable_disk-io b/dot_config/sway/executable_disk-io new file mode 100644 index 0000000..b6bebc2 --- /dev/null +++ b/dot_config/sway/executable_disk-io @@ -0,0 +1,92 @@ +#!/usr/bin/env bash +# +# Copyright (C) 2016 James Murphy +# Licensed under the terms of the GNU GPL v2 only. +# +# i3blocks blocklet script to monitor disk io + +label="${LABEL:-""}" +dt="${DT:-5}" +MB_only="${MB_ONLY:-0}" +kB_only="${KB_ONLY:-0}" +width="${WIDTH:-4}" +MB_precision="${MB_PRECISION:-1}" +kB_precision="${KB_PRECISION:-0}" +regex="${REGEX:-$BLOCK_INSTANCE}" +regex="${regex:-/^(s|h)d[a-zA-Z]+/}" +threshold="${THRESHOLD:-0}" +warn_color="${WARN_COLOR:-#FF0000}" +sep="${SEPARATOR:-/}" +unit_suffix="${SUFFIX:-B/s}" + +function list_devices { + echo "Devices iostat reports that match our regex:" + iostat | awk '$1~/^(s|h)d[a-zA-Z]+/{print $1}' +} + +while getopts L:t:w:p:P:R:s:ST:C:lLMmKkh opt; do + case "$opt" in + L) label="$OPTARG" ;; + t) dt="$OPTARG" ;; + w) width="$OPTARG" ;; + p) kB_precision="$OPTARG" ;; + P) MB_precision="$OPTARG" ;; + R) regex="$OPTARG" ;; + s) sep="$OPTARG" ;; + S) unit_suffix="" ;; + T) threshold="$OPTARG" ;; + C) warn_color="$OPTARG" ;; + l) list_devices; exit 0 ;; + M|m) MB_only=1 ;; + K|k) kB_only=1 ;; + h) printf \ +"Usage: disk-io [-t time] [-w width] [-p kB_precision] [-P MB_precision] [-R regex] [-s separator] [-S] [-T threshold [-C warn_color]] [-k|-M] [-l] [-h] +Options: +-L\tLabel to put in front of the text. Default: $label +-t\tTime interval in seconds between measurements. Default: $dt +-w\tThe width of printed floats. Default: $width +-p\tThe precision of kB/s floats. Default: $kB_precision +-P\tThe precision of MB/s floats. Default: $MB_precision +-R\tRegex that devices must match. Default: $regex +-s\tSeparator to put between rates. Default: $sep +-S\tShort units, omit B/s in kB/s and MB/s. +-T\tRate in kB/s to exceed to trigger a warning. Default: not enabled +-C\tColor to change the blocklet to warn the user. Default: $warn_color +-l\tList devices that iostat reports +-M\tDo not switch between MB/s and kB/s, use only MB/s +-k\tDo not switch between MB/s and kB/s, use only kB/s +-h\tShow this help text +" && exit 0;; + esac +done + +iostat -dyz "$dt" | awk -v sep="$sep" " + BEGIN { + rx = wx = 0; + } + { + if(\$0 == \"\") { + if ($threshold > 0 && (rx >= $threshold || wx >= $threshold)) { + printf \"\"; + } + printf \"$label\"; + if(!$kB_only && ($MB_only || rx >= 1024 || wx >= 1024)) { + printf \"%-$width.${MB_precision}f%s%$width.${MB_precision}f M$unit_suffix\", rx/1024, sep, wx/1024; + } + else { + printf \"%-$width.${kB_precision}f%s%$width.${kB_precision}f k$unit_suffix\", rx, sep, wx; + } + if ($threshold > 0 && (rx >= $threshold || wx >= $threshold)) { + printf \"\"; + } + printf \"\n\"; + fflush(stdout); + } + else if(\$1~/^Device:?/) { + rx = wx = 0; + } + else if(\$1~$regex) { + rx += \$3; + wx += \$4; + } + }" diff --git a/dot_config/sway/executable_disk.sh b/dot_config/sway/executable_disk.sh new file mode 100644 index 0000000..8572be2 --- /dev/null +++ b/dot_config/sway/executable_disk.sh @@ -0,0 +1,38 @@ +#!/bin/sh +# Copyright (C) 2014 Julien Bonjean + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +DIR="${BLOCK_INSTANCE:-$HOME}" +ALERT_LOW="${1:-10}" # color will turn red under this value (default: 10%) + +df -h -P -l "$DIR" | awk -v alert_low=$ALERT_LOW ' +/\/.*/ { + # full text + print $4 + # short text + print $4 + use=$5 + # no need to continue parsing + exit 0 +} +END { + gsub(/%$/,"",use) + if (100 - use < alert_low) { + # color + print "#FF0000" + } +} +' + diff --git a/dot_config/sway/executable_dot_bash_profile b/dot_config/sway/executable_dot_bash_profile new file mode 100644 index 0000000..bb3b925 --- /dev/null +++ b/dot_config/sway/executable_dot_bash_profile @@ -0,0 +1,5 @@ +if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then + export XKB_DEFAULT_LAYOUT=us,de + export XKB_DEFAULT_OPTIONS=grp:win_space_toggle + sway +fi diff --git a/dot_config/sway/executable_i3-blocks-bottom.conf b/dot_config/sway/executable_i3-blocks-bottom.conf new file mode 100644 index 0000000..cdced4b --- /dev/null +++ b/dot_config/sway/executable_i3-blocks-bottom.conf @@ -0,0 +1,342 @@ +# i3blocks config file +# +# Please see man i3blocks for a complete reference! +# The man page is also hosted at http://vivien.github.io/i3blocks +# +# List of valid properties: +# +# align +# color +# command +# full_text +# instance +# interval +# label +# min_width +# name +# separator +# separator_block_width +# short_text +# signal +# urgent + +command=$SCRIPT_DIR/$BLOCK_NAME +color=#E0E0E0 + +# Global properties +# +# The top properties below are applied to every block, but can be overridden. +# Each block command defaults to the script name to avoid boilerplate. +command=/usr/lib/i3blocks/$BLOCK_NAME +separator_block_width=7 +markup=pango + +#[mediaplayer] +#command=printf " %s" "$(mpc current )" +#instance=mpd +#interval=5 +#signal=10 +#color=#E0E0E0 +#color=#556270 +#color=#FE4365 + +#[batterybar] +#command=~/.config/i3/batterybar +#label=bat: +#interval=60 +#markup=pango +#min_width=bat: ■■■■■ +#color=#E0E0E0 +# Discharging colors low to high +#C1=#FF0027 +#C2=#FF3B05 +#C3=#FFB923 +#C4=#FFD000 +#C5=#E4FF00 +#C6=#ADFF00 +#C7=#6DFF00 +#C8=#10BA00 +#CHARGING_COLOR=#00AFE3 +#FULL_COLOR=#FFFFFF +#AC_COLOR=#535353 + +# Volume indicator +# +# The first parameter sets the step (and units to display) +# The second parameter overrides the mixer selection +# See the script for details. +#[volume] +#command=printf " %s" "$(amixer get Speaker | grep -E -o '[0-9]{1,3}?%' | head -1)" +#command=printf " %s" "$(amixer get PCM | grep -E -o '[0-9]{1,3}?%' | head -1)" +#command=printf " %s" "$(pamixer --get-volume-human)" +#label=♪ +# instance=Master +# instance=PCM +#interval=1 +#color=#E0E0E0 +#color=#556270 +#signal=10 + +#[loading] +#command=printf " %s" "$(awk {'print $1,$2,$3 '} /proc/loadavg)" +#interval=2 +#color=#E0E0E0 +#color=#556270 +#separator=true +# Memory usage +# +# The type defaults to "mem" if the instance is not specified. +#[memory] +#command=printf " %s" "$(bash ~/.config/i3/mem)" +#separator=false +#color=#E0E0E0 +#color=#556270 +#interval=30 +#separator=true + + +#[temperature] +#command=printf " %s" "$(bash ~/.config/i3/sensors.sh)" +#color=#E0E0E0 +#color=#556270 +#interval=5 + +#[vpn] +#command=printf " %s " "$(bash ~/.config/i3/vpn.sh)" +#label= VPN +#color=#E0E0E0 +#color=#556270 +#interval=5 + +[disk] +command=~/.config/sway/disk.sh +interval=1 +label= +color=#E0E0E0 + +#[weather] +#command=printf " %s " "$(ruby ~/.config/i3/weather.rb)" +#interval=300 +#color=#556270 +#separator=true + +#[memory] +#label=SWAP +#instance=swap +#separator=false +#interval=30 + +# Disk usage +# +# The directory defaults to $HOME if the instance is not specified. +# The script may be called with a optional argument to set the alert +# (defaults to 10 for 10%). +#[disk] +#command=printf " %s" "$(/usr/bin/i3blocks/$BLOCK_NAME)" +#instance=/mnt/data +#interval=30 + +# Network interface monitoring +# +# If the instance is not specified, use the interface used for default route. +# The address can be forced to IPv4 or IPv6 with -4 or -6 switches. +#[wifi] +#instance=wlp3s0 +#interval=10 +#separator=false + +# [bandwidth] +#command=printf " %s" "$(/usr/lib/i3blocks/$BLOCK_NAME)" +#instance=eth0 +#interval=5 + +# CPU usage +# +# The script may be called with -w and -c switches to specify thresholds, +# see the script for details. + + +# Battery indicator +# +# The battery instance defaults to 0. +#[battery] +#label=BAT +#label=⚡ +#instance=1 +#interval=30 + +# Date Time +# + +# Generic media player support +# +# This displays "ARTIST - SONG" if a music is playing. +# Supported players are: spotify, vlc, audacious, xmms2, mplayer, and others. +#[mediaplayer] +#instance=spotify +#interval=5 +#signal=10 + +# OpenVPN support +# +#Support multiple VPN, with colors. + +# Temperature +# +# Support multiple chips, though lm-sensors. +# The script may be called with -w and -c switches to specify thresholds, +# see the script for details. +#[temperature] +#label=TEMP +#interval=10 + +# Key indicators +# +# Add the following bindings to i3 config file: +# +# bindsym --release Caps_Lock exec pkill -SIGRTMIN+11 i3blocks +# bindsym --release Num_Lock exec pkill -SIGRTMIN+11 i3blocks +#[keyindicator] +#instance=CAPS +#interval=once +#signal=11 + +#[keyindicator] +#instance=NUM +#interval=once +#signal=11 + + +#[usb] +#command=~/.config/i3/usb +#markup=pango +#signal=1 +#interval=10 +#color=#E0E0E0 +#IGNORE_LIST=[] +#IGNORE_LIST=["sdd1", "mapper/sda1_crypt"] +#INFO_TEXT_COLOR=white +#MOUNTED_COLOR=green +#PLUGGED_COLOR=gray +#LOCKED_COLOR=gray +#UNLOCKED_NOT_MOUNTED_COLOR=yellow +#PARTITIONLESS_COLOR=red +#PARTITIONLESS_TEXT=no partitions +#SEPARATOR= | +#LOCKED_INDICATOR= +#UNLOCKED_INDICATOR= +#READONLY_INDICATOR=ro +#TRUNCATE_FS_LABELS=[not set by default, accepts +/- integers] + +#[shutdown_menu] +#full_text=Quit +# If you are using FontAwesome, we recommend the power-off icon: +# http://fontawesome.io/icon/power-off/ +#command=~/.config/i3/shutdown_menu +#FG_COLOR=#bbbbbb +#BG_COLOR=#111111 +#HLFG_COLOR=#111111 +#HLBG_COLOR=#bbbbbb +#BORDER_COLOR=#222222 +#ROFI_TEXT=Menu: +#ROFI_OPTIONS=-width 11 -location 3 -hide-scrollbar -bw 2 +#ZENITY_TITLE=Menu +#ZENITY_TEXT=Action: +#ZENITY_OPTIONS=--column= --hide-header +#ENABLE_CONFIRMATIONS=true (must be true or false) +#LAUNCHER=rofi (must be rofi or zenity) +#LOCKSCRIPT=i3lock --color=${BG_COLOR#"#"} + +#[pacman-updates] +#label= +#command=~/.config/i3/arch-update +#markup=pango +#interval= 3600 +#QUIET=true +#WATCH=^linux.* ^pacman.* +#BASE_COLOR=#5fff5f +#UPDATE_COLOR=#FFFF85 +#AUR=true + +#[arch-update] +#command=~/.config/i3/arch-update +#label=Updates: +#interval=3600 +#markup=pango + +[disk-io] +command=~/.config/sway/disk-io +#command=$SCRIPT_DIR/disk-io -w 3 -M -P 0 +interval=persist +#markup=pango +#LABEL= +#instance=/^sda/ +#DT=5 +#MB_ONLY=0 #0 or 1 +#KB_ONLY=0 #0 or 1 +#WIDTH=4 +#MB_PRECISION=1 +#KB_PRECISION=0 +#REGEX=/^(s|h)d[a-zA-Z]+/ +#THRESHOLD=0 +#WARN_COLOR="#FF0000" +#SEPARATOR=/ +#PREFIX= +#SUFFIX="B/s" + + +#[calendar] +#command=~/.config/i3/calendar +#interval=1 +#LABEL= +#DATEFMT=+%H:%M:%S +# SHORTFMT=+%H:%M:%S +#HEIGHT=180 +#WIDTH=220 + +[time] +command=printf " %s\n" "$(date '+%b %a %d %Y | %H:%M:%S ')" +interval=1 +color=#E0E0E0 +#color=#556270 +separator=true + +#[key_layout] +#command=~/.config/i3/key_layout +#label=Layout +#interval=30 +#color=#E0E0E0 + +# Query my default IP address only on startup +[ip] +command=ip addr | grep 'inet' | grep -v inet6 | grep -vE '127\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | grep -o -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | head -1 +label=IP +interval=30 +color=#E0E0E0 + +#[bandwidth] +#command=~/.config/i3/bandwidth +#interval=5 +#INTERFACE=enp2s0f1 +#INLABEL="IN " +#OUTLABEL="OUT " +#TREAT_UNKNOWN_AS_UP=0 + +#[monitors] +#command=~/.config/i3/monitor_manager +#interval=once +#color=#E0E0E0 +#SHOW_ON_OFF=1 +#SHOW_NAMES=1 +#SHOW_PRIMARY=1 +#SHOW_MODE=1 +#SHOW_BLANKED=1 +#SHOW_DUPLICATE=1 +#SHOW_ROTATION=1 +#SHOW_REFLECTION=1 +#SHOW_BRIGHTNESS=1 +#SHOW_BRIGHTNESS_VALUE=0 +#SHOW_UP_DOWN=1 +#FONT_FAMILY=DejaVu Sans Mono +#FONT_SIZE=11 +#CLOSE_TO_BOUNDARY_BUFFER=20 diff --git a/dot_config/sway/executable_i3-blocks-top.conf b/dot_config/sway/executable_i3-blocks-top.conf new file mode 100644 index 0000000..bd6a8a9 --- /dev/null +++ b/dot_config/sway/executable_i3-blocks-top.conf @@ -0,0 +1,342 @@ +# i3blocks config file +# +# Please see man i3blocks for a complete reference! +# The man page is also hosted at http://vivien.github.io/i3blocks +# +# List of valid properties: +# +# align +# color +# command +# full_text +# instance +# interval +# label +# min_width +# name +# separator +# separator_block_width +# short_text +# signal +# urgent + +command=$SCRIPT_DIR/$BLOCK_NAME/$BLOCK_NAME +color=#E0E0E0 + +# Global properties +# +# The top properties below are applied to every block, but can be overridden. +# Each block command defaults to the script name to avoid boilerplate. +command=/usr/lib/i3blocks/$BLOCK_NAME/$BLOCK_NAME +separator_block_width=7 +markup=pango + +#[mediaplayer] +#command=printf " %s" "$(mpc current )" +#instance=mpd +#interval=5 +#signal=10 +#color=#E0E0E0 +#color=#556270 +#color=#FE4365 + +[batterybar] +command=~/.config/sway/batterybar +#label=bat: +interval=60 +markup=pango +#min_width=bat: ■■■■■ +color=#E0E0E0 +# Discharging colors low to high +#C1=#FF0027 +#C2=#FF3B05 +#C3=#FFB923 +#C4=#FFD000 +#C5=#E4FF00 +#C6=#ADFF00 +#C7=#6DFF00 +#C8=#10BA00 +#CHARGING_COLOR=#00AFE3 +#FULL_COLOR=#FFFFFF +#AC_COLOR=#535353 + +# Volume indicator +# +# The first parameter sets the step (and units to display) +# The second parameter overrides the mixer selection +# See the script for details. +[volume] +#command=printf " %s" "$(amixer get Speaker | grep -E -o '[0-9]{1,3}?%' | head -1)" +#command=printf " %s" "$(amixer get PCM | grep -E -o '[0-9]{1,3}?%' | head -1)" +command=printf " %s\n" "$(pamixer --get-volume-human)" +#label=♪ +# instance=Master +# instance=PCM +interval=1 +color=#E0E0E0 +#color=#556270 +signal=10 + +[loading] +command=printf " %s\n" "$(awk {'print $1,$2,$3 '} /proc/loadavg)" +interval=2 +color=#E0E0E0 +#color=#556270 +separator=true +# Memory usage +# +# The type defaults to "mem" if the instance is not specified. +[memory] +command=printf " %s\n" "$(bash ~/.config/sway/mem)" +separator=false +color=#E0E0E0 +#color=#556270 +interval=30 +separator=true + + +[temperature] +command=printf " %s\n" "$(bash ~/.config/sway/sensors.sh)" +color=#E0E0E0 +#color=#556270 +interval=5 + +[vpn] +command=printf " %s \n" "$(bash ~/.config/sway/vpn.sh)" +label= VPN +color=#E0E0E0 +#color=#556270 +interval=5 + +#[disk] +#command=~/.config/i3/disk.sh +#interval=1 +#label= +#color=#E0E0E0 + +#[weather] +#command=printf " %s " "$(ruby ~/.config/i3/weather.rb)" +#interval=300 +#color=#556270 +#separator=true + +#[memory] +#label=SWAP +#instance=swap +#separator=false +#interval=30 + +# Disk usage +# +# The directory defaults to $HOME if the instance is not specified. +# The script may be called with a optional argument to set the alert +# (defaults to 10 for 10%). +#[disk] +#command=printf " %s" "$(/usr/bin/i3blocks/$BLOCK_NAME)" +#instance=/mnt/data +#interval=30 + +# Network interface monitoring +# +# If the instance is not specified, use the interface used for default route. +# The address can be forced to IPv4 or IPv6 with -4 or -6 switches. +#[wifi] +#instance=wlp3s0 +#interval=10 +#separator=false + +# [bandwidth] +#command=printf " %s" "$(/usr/lib/i3blocks/$BLOCK_NAME)" +#instance=eth0 +#interval=5 + +# CPU usage +# +# The script may be called with -w and -c switches to specify thresholds, +# see the script for details. + + +# Battery indicator +# +# The battery instance defaults to 0. +#[battery] +#label=BAT +#label=⚡ +#instance=1 +#interval=30 + +# Date Time +# + +# Generic media player support +# +# This displays "ARTIST - SONG" if a music is playing. +# Supported players are: spotify, vlc, audacious, xmms2, mplayer, and others. +#[mediaplayer] +#instance=spotify +#interval=5 +#signal=10 + +# OpenVPN support +# +#Support multiple VPN, with colors. + +# Temperature +# +# Support multiple chips, though lm-sensors. +# The script may be called with -w and -c switches to specify thresholds, +# see the script for details. +#[temperature] +#label=TEMP +#interval=10 + +# Key indicators +# +# Add the following bindings to i3 config file: +# +# bindsym --release Caps_Lock exec pkill -SIGRTMIN+11 i3blocks +# bindsym --release Num_Lock exec pkill -SIGRTMIN+11 i3blocks +#[keyindicator] +#instance=CAPS +#interval=once +#signal=11 + +#[keyindicator] +#instance=NUM +#interval=once +#signal=11 + + +#[usb] +#command=~/.config/i3/usb +#markup=pango +#signal=1 +#interval=10 +#color=#E0E0E0 +#IGNORE_LIST=[] +#IGNORE_LIST=["sdd1", "mapper/sda1_crypt"] +#INFO_TEXT_COLOR=white +#MOUNTED_COLOR=green +#PLUGGED_COLOR=gray +#LOCKED_COLOR=gray +#UNLOCKED_NOT_MOUNTED_COLOR=yellow +#PARTITIONLESS_COLOR=red +#PARTITIONLESS_TEXT=no partitions +#SEPARATOR= | +#LOCKED_INDICATOR= +#UNLOCKED_INDICATOR= +#READONLY_INDICATOR=ro +#TRUNCATE_FS_LABELS=[not set by default, accepts +/- integers] + +#[shutdown_menu] +#full_text=Quit +# If you are using FontAwesome, we recommend the power-off icon: +# http://fontawesome.io/icon/power-off/ +#command=~/.config/i3/shutdown_menu +#FG_COLOR=#bbbbbb +#BG_COLOR=#111111 +#HLFG_COLOR=#111111 +#HLBG_COLOR=#bbbbbb +#BORDER_COLOR=#222222 +#ROFI_TEXT=Menu: +#ROFI_OPTIONS=-width 11 -location 3 -hide-scrollbar -bw 2 +#ZENITY_TITLE=Menu +#ZENITY_TEXT=Action: +#ZENITY_OPTIONS=--column= --hide-header +#ENABLE_CONFIRMATIONS=true (must be true or false) +#LAUNCHER=rofi (must be rofi or zenity) +#LOCKSCRIPT=i3lock --color=${BG_COLOR#"#"} + +#[pacman-updates] +#label= +#command=~/.config/i3/arch-update +#markup=pango +#interval= 3600 +#QUIET=true +#WATCH=^linux.* ^pacman.* +#BASE_COLOR=#5fff5f +#UPDATE_COLOR=#FFFF85 +#AUR=true + +#[arch-update] +#command=~/.config/i3/arch-update +#label=Updates: +#interval=3600 +#markup=pango + +#[disk-io] +#command=~/.config/i3/disk-io +#command=$SCRIPT_DIR/disk-io -w 3 -M -P 0 +#interval=persist +#markup=pango +#LABEL= +#instance=/^sda/ +#DT=5 +#MB_ONLY=0 #0 or 1 +#KB_ONLY=0 #0 or 1 +#WIDTH=4 +#MB_PRECISION=1 +#KB_PRECISION=0 +#REGEX=/^(s|h)d[a-zA-Z]+/ +#THRESHOLD=0 +#WARN_COLOR="#FF0000" +#SEPARATOR=/ +#PREFIX= +#SUFFIX="B/s" + + +#[calendar] +#command=~/.config/i3/calendar +#interval=1 +#LABEL= +#DATEFMT=+%H:%M:%S +# SHORTFMT=+%H:%M:%S +#HEIGHT=180 +#WIDTH=220 + +#[time] +#command=printf " %s" "$(date '+%b %a %d %Y | %H:%M:%S ')" +#interval=1 +#color=#E0E0E0 +#color=#556270 +#separator=true + +#[key_layout] +#command=~/.config/i3/key_layout +#label=Layout +#interval=30 +#color=#E0E0E0 + +# Query my default IP address only on startup +#[ip] +#command=ip addr | grep 'inet' | grep -v inet6 | grep -vE '127\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | grep -o -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | head -1 +#label=IP +#interval=30 +#color=#E0E0E0 + +#[bandwidth] +#command=~/.config/i3/bandwidth +#interval=5 +#INTERFACE=enp2s0f1 +#INLABEL="IN " +#OUTLABEL="OUT " +#TREAT_UNKNOWN_AS_UP=0 + +#[monitors] +#command=~/.config/i3/monitor_manager +#interval=once +#color=#E0E0E0 +#SHOW_ON_OFF=1 +#SHOW_NAMES=1 +#SHOW_PRIMARY=1 +#SHOW_MODE=1 +#SHOW_BLANKED=1 +#SHOW_DUPLICATE=1 +#SHOW_ROTATION=1 +#SHOW_REFLECTION=1 +#SHOW_BRIGHTNESS=1 +#SHOW_BRIGHTNESS_VALUE=0 +#SHOW_UP_DOWN=1 +#FONT_FAMILY=DejaVu Sans Mono +#FONT_SIZE=11 +#CLOSE_TO_BOUNDARY_BUFFER=20 diff --git a/dot_config/sway/executable_i3-blocks.conf b/dot_config/sway/executable_i3-blocks.conf new file mode 100644 index 0000000..c1714df --- /dev/null +++ b/dot_config/sway/executable_i3-blocks.conf @@ -0,0 +1,338 @@ +# i3blocks config file +# +# Please see man i3blocks for a complete reference! +# The man page is also hosted at http://vivien.github.io/i3blocks +# +# List of valid properties: +# +# align +# color +# command +# full_text +# instance +# interval +# label +# min_width +# name +# separator +# separator_block_width +# short_text +# signal +# urgent + +command=$SCRIPT_DIR/$BLOCK_NAME +color=#E0E0E0 + +# Global properties +# +# The top properties below are applied to every block, but can be overridden. +# Each block command defaults to the script name to avoid boilerplate. +command=/usr/lib/i3blocks/$BLOCK_NAME +separator_block_width=7 +markup=pango + +#[mediaplayer] +#command=printf " %s" "$(mpc current )" +#instance=mpd +#interval=5 +#signal=10 +#color=#E0E0E0 +#color=#556270 +#color=#FE4365 + +[batterybar] +command=~/.config/i3/batterybar +label=bat: +interval=5 +markup=pango +min_width=bat: ■■■■■ +color=#E0E0E0 +# Discharging colors low to high +#C1=#FF0027 +#C2=#FF3B05 +#C3=#FFB923 +#C4=#FFD000 +#C5=#E4FF00 +#C6=#ADFF00 +#C7=#6DFF00 +#C8=#10BA00 +#CHARGING_COLOR=#00AFE3 +#FULL_COLOR=#FFFFFF +#AC_COLOR=#535353 + +# Volume indicator +# +# The first parameter sets the step (and units to display) +# The second parameter overrides the mixer selection +# See the script for details. +[volume] +#command=printf " %s" "$(amixer get Speaker | grep -E -o '[0-9]{1,3}?%' | head -1)" +command=printf " %s" "$(pamixer --get-volume-human)" +#label=♪ +# instance=Master +# instance=PCM +interval=1 +color=#E0E0E0 +#color=#556270 +signal=10 + +[loading] +command=printf " %s" "$(awk {'print $1,$2,$3 '} /proc/loadavg)" +interval=2 +color=#E0E0E0 +#color=#556270 +separator=true +# Memory usage +# +# The type defaults to "mem" if the instance is not specified. +[memory] +command=printf " %s" "$(bash ~/.config/i3/mem)" +separator=false +color=#E0E0E0 +#color=#556270 +interval=30 +separator=true + + +[temperature] +command=printf " %s" "$(bash ~/.config/i3/sensors.sh)" +color=#E0E0E0 +#color=#556270 +interval=5 + +[vpn] +command=printf " %s " "$(bash ~/.config/i3/vpn.sh)" +label= VPN +color=#E0E0E0 +#color=#556270 +interval=5 + +[disk] +command=~/.config/i3/disk.sh +interval=1 +label= +color=#E0E0E0 + +#[weather] +#command=printf " %s " "$(ruby ~/.config/i3/weather.rb)" +#interval=300 +#color=#556270 +#separator=true + +#[memory] +#label=SWAP +#instance=swap +#separator=false +#interval=30 + +# Disk usage +# +# The directory defaults to $HOME if the instance is not specified. +# The script may be called with a optional argument to set the alert +# (defaults to 10 for 10%). +#[disk] +#command=printf " %s" "$(/usr/bin/i3blocks/$BLOCK_NAME)" +#instance=/mnt/data +#interval=30 + +# Network interface monitoring +# +# If the instance is not specified, use the interface used for default route. +# The address can be forced to IPv4 or IPv6 with -4 or -6 switches. +#[wifi] +#instance=wlp3s0 +#interval=10 +#separator=false + +# [bandwidth] +#command=printf " %s" "$(/usr/lib/i3blocks/$BLOCK_NAME)" +#instance=eth0 +#interval=5 + +# CPU usage +# +# The script may be called with -w and -c switches to specify thresholds, +# see the script for details. + + +# Battery indicator +# +# The battery instance defaults to 0. +#[battery] +#label=BAT +#label=⚡ +#instance=1 +#interval=30 + +# Date Time +# + +# Generic media player support +# +# This displays "ARTIST - SONG" if a music is playing. +# Supported players are: spotify, vlc, audacious, xmms2, mplayer, and others. +#[mediaplayer] +#instance=spotify +#interval=5 +#signal=10 + +# OpenVPN support +# +#Support multiple VPN, with colors. + +# Temperature +# +# Support multiple chips, though lm-sensors. +# The script may be called with -w and -c switches to specify thresholds, +# see the script for details. +#[temperature] +#label=TEMP +#interval=10 + +# Key indicators +# +# Add the following bindings to i3 config file: +# +# bindsym --release Caps_Lock exec pkill -SIGRTMIN+11 i3blocks +# bindsym --release Num_Lock exec pkill -SIGRTMIN+11 i3blocks +#[keyindicator] +#instance=CAPS +#interval=once +#signal=11 + +#[keyindicator] +#instance=NUM +#interval=once +#signal=11 + + +#[usb] +#command=~/.config/i3/usb +#markup=pango +#signal=1 +#interval=10 +#IGNORE_LIST=[] +#IGNORE_LIST=["sdd1", "mapper/sda1_crypt"] +#INFO_TEXT_COLOR=white +#MOUNTED_COLOR=green +#PLUGGED_COLOR=gray +#LOCKED_COLOR=gray +#UNLOCKED_NOT_MOUNTED_COLOR=yellow +#PARTITIONLESS_COLOR=red +#PARTITIONLESS_TEXT=no partitions +#SEPARATOR= | +#LOCKED_INDICATOR= +#UNLOCKED_INDICATOR= +#READONLY_INDICATOR=ro +#TRUNCATE_FS_LABELS=[not set by default, accepts +/- integers] + +#[shutdown_menu] +#full_text=Quit +# If you are using FontAwesome, we recommend the power-off icon: +# http://fontawesome.io/icon/power-off/ +#command=~/.config/i3/shutdown_menu +#FG_COLOR=#bbbbbb +#BG_COLOR=#111111 +#HLFG_COLOR=#111111 +#HLBG_COLOR=#bbbbbb +#BORDER_COLOR=#222222 +#ROFI_TEXT=Menu: +#ROFI_OPTIONS=-width 11 -location 3 -hide-scrollbar -bw 2 +#ZENITY_TITLE=Menu +#ZENITY_TEXT=Action: +#ZENITY_OPTIONS=--column= --hide-header +#ENABLE_CONFIRMATIONS=true (must be true or false) +#LAUNCHER=rofi (must be rofi or zenity) +#LOCKSCRIPT=i3lock --color=${BG_COLOR#"#"} + +#[pacman-updates] +#label= +#command=~/.config/i3/arch-update +#markup=pango +#interval= 3600 +#QUIET=true +#WATCH=^linux.* ^pacman.* +#BASE_COLOR=#5fff5f +#UPDATE_COLOR=#FFFF85 +#AUR=true + +#[arch-update] +#command=~/.config/i3/arch-update +#label=Updates: +#interval=3600 +#markup=pango + +#[disk-io] +#command=~/.config/i3/disk-io +#command=$SCRIPT_DIR/disk-io -w 3 -M -P 0 +#interval=persist +#markup=pango +#LABEL= +#instance=/^sda/ +#DT=5 +#MB_ONLY=0 #0 or 1 +#KB_ONLY=0 #0 or 1 +#WIDTH=4 +#MB_PRECISION=1 +#KB_PRECISION=0 +#REGEX=/^(s|h)d[a-zA-Z]+/ +#THRESHOLD=0 +#WARN_COLOR="#FF0000" +#SEPARATOR=/ +#PREFIX= +#SUFFIX="B/s" + + +#[calendar] +#command=~/.config/i3/calendar +#interval=1 +#LABEL= +#DATEFMT=+%H:%M:%S +# SHORTFMT=+%H:%M:%S +#HEIGHT=180 +#WIDTH=220 + +[time] +command=printf " %s" "$(date '+%b %a %d %Y | %H:%M:%S ')" +interval=1 +color=#E0E0E0 +#color=#556270 +separator=true + +[key_layout] +command=~/.config/i3/key_layout +label=Layout +interval=30 +color=#E0E0E0 + +# Query my default IP address only on startup +[ip] +command=ip addr | grep 'inet' | grep -v inet6 | grep -vE '127\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | grep -o -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | head -1 +interval=once + +#[bandwidth] +#command=~/.config/i3/bandwidth +#interval=5 +#INTERFACE=enp2s0f1 +#INLABEL="IN " +#OUTLABEL="OUT " +#TREAT_UNKNOWN_AS_UP=0 + +[monitors] +command=~/.config/i3/monitor_manager +interval=once +color=#E0E0E0 +#SHOW_ON_OFF=1 +#SHOW_NAMES=1 +#SHOW_PRIMARY=1 +#SHOW_MODE=1 +#SHOW_BLANKED=1 +#SHOW_DUPLICATE=1 +#SHOW_ROTATION=1 +#SHOW_REFLECTION=1 +#SHOW_BRIGHTNESS=1 +#SHOW_BRIGHTNESS_VALUE=0 +#SHOW_UP_DOWN=1 +#FONT_FAMILY=DejaVu Sans Mono +#FONT_SIZE=11 +#CLOSE_TO_BOUNDARY_BUFFER=20 diff --git a/dot_config/sway/executable_key_layout b/dot_config/sway/executable_key_layout new file mode 100644 index 0000000..a861534 --- /dev/null +++ b/dot_config/sway/executable_key_layout @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +# Copyright 2016 Patrick Haun +# Edited: Denis Kadyshev +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +setxkbmap -query | awk ' + BEGIN{layout="";variant=""} + /^layout/{layout=$2} + /^variant/{variant=" ("$2")"} + END{printf("%s%s",layout,variant)}' diff --git a/dot_config/sway/executable_load b/dot_config/sway/executable_load new file mode 100644 index 0000000..fd241d0 --- /dev/null +++ b/dot_config/sway/executable_load @@ -0,0 +1,20 @@ +#!/bin/bash + +#INSTANCE="${BLOCK_INSTANCE:-1}" +INSTANCE="1,2,3" + +URGENT_VALUE=90 + +LOAD=$(cat /proc/loadavg | awk -F ' ' '{print $'"${INSTANCE}"'}') +if [[ "${LOAD}" != "" ]]; then + LOAD_PERC=$(echo "scale=0; ${LOAD} * 100" | bc -l) + LOAD_PERC=${LOAD_PERC%.*} + + echo "${LOAD}" + echo "${LOAD}" + echo "" + + if [[ "${LOAD_PERC}" -ge "${URGENT_VALUE}" ]]; then + exit 33 + fi +fi diff --git a/dot_config/sway/executable_mem b/dot_config/sway/executable_mem new file mode 100644 index 0000000..33bdd35 --- /dev/null +++ b/dot_config/sway/executable_mem @@ -0,0 +1,8 @@ +#!/bin/bash +# Show used and total memory + +available=$(awk '/MemAvailable/ {$2=$2/1024; printf("%3.2f\n", $2)}' /proc/meminfo) +total=$(awk '/MemTotal/ {$2=$2/1024**2; printf("%3.1f\n", $2)}' /proc/meminfo ) + +echo "${available}" +echo "" diff --git a/dot_config/sway/executable_monitor_manager b/dot_config/sway/executable_monitor_manager new file mode 100644 index 0000000..143e244 --- /dev/null +++ b/dot_config/sway/executable_monitor_manager @@ -0,0 +1,728 @@ +#!/usr/bin/env python3 +# +# Copyright (c) 2016 James Murphy +# Licensed under the GPL version 2 only +# +# monitor_manager is an i3blocks blocklet script to quickly manage your +# connected output devices + + +from tkinter import * +from tkinter import messagebox +from shutil import which +import tkinter.font as font +from subprocess import call, check_output, CalledProcessError +import re +import os + +DESKTOP_SYMBOL = "\uf108" + +UP_ARROW = "\uf062" +DOWN_ARROW = "\uf063" +UNBLANKED_SYMBOL = "\uf06e" +BLANKED_SYMBOL = "\uf070" +NOT_CLONED_SYMBOL = "\uf096" +PRIMARY_SYMBOL = "\uf005" +SECONDARY_SYMBOL = "\uf006" +CLONED_SYMBOL = "\uf24d" +ROTATION_NORMAL = "\uf151" +ROTATION_LEFT = "\uf191" +ROTATION_RIGHT = "\uf152" +ROTATION_INVERTED = "\uf150" +REFLECTION_NORMAL = "\uf176" +REFLECTION_X = "\uf07e" +REFLECTION_Y = "\uf07d" +REFLECTION_XY = "\uf047" +TOGGLE_ON = "\uf205" +TOGGLE_OFF = "\uf204" +APPLY_SYMBOL = "\uf00c" +CANCEL_SYMBOL = "\uf00d" +ARANDR_SYMBOL = "\uf085" +REFRESH_SYMBOL = "\uf021" + +strbool = lambda s: s.lower() in ['t', 'true', '1'] +def _default(name, default='', arg_type=strbool): + val = default + if name in os.environ: + val = os.environ[name] + return arg_type(val) + + +SHOW_ON_OFF = _default("SHOW_ON_OFF","1") +SHOW_NAMES = _default("SHOW_NAMES", "1") +SHOW_PRIMARY = _default("SHOW_PRIMARY", "1") +SHOW_MODE = _default("SHOW_MODE", "1") +SHOW_BLANKED = _default("SHOW_BLANKED", "1") +SHOW_DUPLICATE = _default("SHOW_DUPLICATE", "1") +SHOW_ROTATION = _default("SHOW_ROTATION", "1") +SHOW_REFLECTION = _default("SHOW_REFLECTION", "1") +SHOW_BRIGHTNESS = _default("SHOW_BRIGHTNESS", "1") +SHOW_BRIGHTNESS_VALUE = _default("SHOW_BRIGHTNESS_VALUE", "0") +SHOW_UP_DOWN = _default("SHOW_UP_DOWN", "1") + +FONTAWESOME_FONT_FAMILY = "FontAwesome" +FONTAWESOME_FONT_SIZE = 11 +FONTAWESOME_FONT = (FONTAWESOME_FONT_FAMILY, FONTAWESOME_FONT_SIZE) +DEFAULT_FONT_FAMILY = _default("FONT_FAMILY","DejaVu Sans Mono", str) +DEFAULT_FONT_SIZE = _default("FONT_SIZE", 11, int) +DEFAULT_FONT = (DEFAULT_FONT_FAMILY, DEFAULT_FONT_SIZE) + +BRIGHTNESS_SLIDER_HANDLE_LENGTH = 20 +BRIGHTNESS_SLIDER_WIDTH = 15 +BRIGHTNESS_SLIDER_LENGTH = 50 + +WINDOW_CLOSE_TO_BOUNDARY_BUFFER = _default("CLOSE_TO_BOUNDARY_BUFFER", 20, int) + +class Output: + def __init__(self, name=None, w=None, h=None, x=None, y=None, rate=None, + active=False, primary=False, sameAs=None, blanked=False, rotation="normal", + reflection="normal", brightness=1.0): + self.name = name + self.w = w + self.h = h + self.x = x + self.y = y + self.rate = rate + self.active = active + self.primary = primary + self.sameAs = sameAs + self.blanked = blanked + self.modes = [] + self.currentModeIndex = None + self.preferredModeIndex = None + self.row = None + self.rotation = rotation + self.reflection = reflection + self.brightness = brightness + + def setPreferredMode(self): + if self.preferredModeIndex != None: + self.setMode(self.preferredModeIndex) + elif self.modes != None: + self.setMode(0) + + def setMode(self, index): + self.w, self.h, self.rate = self.modes[index] + self.currentModeIndex = index + + def realOutputs(): + outputs = [] + xrandrText = check_output(["xrandr","--verbose"],universal_newlines=True) + outputBlocks = re.split(r'\n(?=\S)', xrandrText, re.MULTILINE) + infoPattern = re.compile( + r'^(\S+)' # output name + ' connected ' # must be connected + '(primary )?' # check if primary output + '((\d+)x(\d+)\+(\d+)\+(\d+) )?' # width x height + xoffset + yoffset + '(\(\S+\) )?' # mode code (0x4a) + '(normal|left|inverted|right)? ?' # rotation + '(X axis|Y axis|X and Y axis)?') # reflection + brightnessPattern = re.compile(r'^\tBrightness: ([\d.]+)', re.MULTILINE) + modePattern = re.compile(r'^ (\d+)x(\d+)[^\n]*?\n +h:[^\n]*?\n +v:[^\n]*?([\d.]+)Hz$', re.MULTILINE) + for outputBlock in outputBlocks: + output = Output() + infoMatch = infoPattern.match(outputBlock) + if infoMatch: + output.name = infoMatch.group(1) + if infoMatch.group(2): + output.primary = True + if infoMatch.group(3): + output.active = True + output.w, output.h, output.x, output.y = map(int,infoMatch.group(4, 5, 6, 7)) + if infoMatch.group(9): + output.rotation = infoMatch.group(9) + if output.rotation in ["left", "right"]: + output.w, output.h = output.h, output.w + if infoMatch.group(10): + if infoMatch.group(10) == "X axis": + output.reflection = "x" + elif infoMatch.group(10) == "Y axis": + output.reflection = "y" + elif infoMatch.group(10) == "X and Y axis": + output.reflection = "xy" + else: + output.reflection = "normal" + else: + output.reflection = "normal" + brightnessMatch = brightnessPattern.search(outputBlock) + if brightnessMatch: + try: + brightness = float(brightnessMatch.group(1)) + output.brightness = brightness + if abs(brightness) < 1e-09: + output.blanked = True + except ValueError: + pass + modeMatches = modePattern.finditer(outputBlock) + for i, modeMatch in enumerate(modeMatches): + if "*current" in modeMatch.group(0): + output.currentModeIndex = i + output.rate = modeMatch.group(3) + if "+preferred" in modeMatch.group(0): + output.preferredModeIndex = i + output.modes.append(modeMatch.group(1,2,3)) + outputs.append(output) + outputs.sort(key=lambda m: m.x if m.x != None else -1) + prev = None + for output in outputs: + if prev != None and output.active and prev.active and output.x == prev.x: + output.sameAs = prev.name + else: + prev = output + + return outputs + + def modestr(mode): + return "{}x{}@{}".format(*mode) + + def status(self): + if self.active: + if self.sameAs == None or self.sameAs == self.name: + if self.w and self.h and self.rate: + return "{}x{}@{}".format(self.w, self.h, self.rate) + else: + return "auto" + else: + return "duplicate {}".format(self.sameAs) + else: + return "Inactive" + + + def __str__(self): + return "{} {}x{}+{}+{} active:{}, primary:{}\nmodes:{}\ncurrentIndex:{} preferredIndex:{}".format( + self.name, self.w, self.h, self.x, self.y, self.active, self.primary, self.modes, self.currentModeIndex, self.preferredModeIndex) + +class MonitorManager(): + def __init__(self, root): + self.root = root + self.root.withdraw() + self.root.resizable(0,0) + self.root.wm_title("Monitor Manager") + self.frame = None + self.outputs = [] + self.hardRefreshList() + style = {'relief':FLAT, 'padx':1, 'pady':1, 'anchor':'w', 'font':FONTAWESOME_FONT} + + self.infoLabel = Label(self.root, text="", **style) + self.infoLabel.config(font=DEFAULT_FONT) + + self.bottomRow = [] + + self.applyButton = Button(self.root, text=APPLY_SYMBOL, **style) + self.bottomRow.append(self.applyButton) + + self.refreshButton = Button(self.root, text=REFRESH_SYMBOL, **style) + self.bottomRow.append(self.refreshButton) + + if which("arandr"): + self.arandrButton = Button(self.root, text=ARANDR_SYMBOL, **style) + self.bottomRow.append(self.arandrButton) + else: + self.arandrButton = None + + self.cancelButton = Button(self.root, text=CANCEL_SYMBOL, **style) + self.bottomRow.append(self.cancelButton) + + self.infoLabel.grid(row=1,column=0, columnspan=len(self.bottomRow)) + self.gridRow(2, self.bottomRow) + + self.moveToMouse() + self.root.deiconify() + + def registerBindings(self): + self.root.bind("", self.handleApply) + self.root.bind("", self.handleCancel) + + self.applyButton.bind("", self.handleApply) + self.setInfo(self.applyButton, "Apply changes") + + self.refreshButton.bind("", self.hardRefreshList) + self.setInfo(self.refreshButton, "Refresh list") + + if self.arandrButton: + self.arandrButton.bind("", self.handleArandr) + self.setInfo(self.arandrButton, "Launch aRandR") + + self.cancelButton.bind("", self.handleCancel) + self.setInfo(self.cancelButton, "Cancel") + + for toggleButton in self.toggleButtons: + toggleButton.bind("", self.toggleActive) + toggleButton.bind("", self.handleUp) + toggleButton.bind("", self.handleDown) + self.setInfo(toggleButton, "Turn output on/off") + + for primaryButton in self.primaryButtons: + primaryButton.bind("", self.setPrimary) + self.setInfo(primaryButton, "Set primary output") + + for blankedButton in self.blankedButtons: + blankedButton.bind("", self.toggleBlanked) + self.setInfo(blankedButton, "Show/hide output") + + for duplicateButton in self.duplicateButtons: + duplicateButton.bind("", self.toggleDuplicate) + self.setInfo(duplicateButton, "Duplicate another output") + + for rotateButton in self.rotateButtons: + rotateButton.bind("", self.cycleRotation) + self.setInfo(rotateButton, "Rotate output") + + for reflectButton in self.reflectButtons: + reflectButton.bind("", self.cycleReflection) + self.setInfo(reflectButton, "Reflect output") + + for brightnessSlider in self.brightnessSliders: + brightnessSlider.bind("", self.updateBrightness) + self.setInfo(brightnessSlider, "Adjust brightness") + + for upButton in self.upButtons: + upButton.bind("", self.handleUp) + upButton.bind("", self.handleUp) + upButton.bind("", self.handleDown) + self.setInfo(upButton, "Move up") + + for downButton in self.downButtons: + downButton.bind("", self.handleDown) + downButton.bind("", self.handleUp) + downButton.bind("", self.handleDown) + self.setInfo(downButton, "Move down") + + def gridRow(self, row, widgets): + column = 0 + for w in widgets: + w.grid(row=row, column=column) + column += 1 + + def moveToMouse(self): + root = self.root + root.update_idletasks() + width = root.winfo_reqwidth() + height = root.winfo_reqheight() + x = root.winfo_pointerx() - width//2 + y = root.winfo_pointery() - height//2 + screen_width = root.winfo_screenwidth() + screen_height = root.winfo_screenheight() + if x+width > screen_width - WINDOW_CLOSE_TO_BOUNDARY_BUFFER: + x = screen_width - WINDOW_CLOSE_TO_BOUNDARY_BUFFER - width + elif x < WINDOW_CLOSE_TO_BOUNDARY_BUFFER: + x = WINDOW_CLOSE_TO_BOUNDARY_BUFFER + if y+height > screen_height - WINDOW_CLOSE_TO_BOUNDARY_BUFFER: + y = screen_height - WINDOW_CLOSE_TO_BOUNDARY_BUFFER - height + elif y < WINDOW_CLOSE_TO_BOUNDARY_BUFFER: + y = WINDOW_CLOSE_TO_BOUNDARY_BUFFER + + root.geometry('+{}+{}'.format(x, y)) + + def setInfo(self, widget, info): + widget.bind("", lambda e: self.infoLabel.config(text=info, fg="black")) + widget.bind("", lambda e: self.infoLabel.config(text="")) + + def handleApply(self, e=None): + self.root.after_idle(self.doHandleApply) + + def doHandleApply(self): + if not self.getUserConfirmationIfDangerousConfiguration(): + return + command = ["xrandr"] + if not self.existsPrimary(): + command += ["--noprimary"] + partition = self.sameAsPartition() + prevFirstActive = None + for p in partition: + firstActive = None + for output in p: + command += ["--output", output.name] + if output.active: + if firstActive == None: + firstActive = output + else: + command += ["--same-as", firstActive.name] + if output.primary: + command += ["--primary"] + if prevFirstActive != None: + command += ["--right-of", prevFirstActive.name] + if output.w != None and output.h != None and output.rate != None: + command += ["--mode", "{}x{}".format(output.w,output.h)] + command += ["--rate", output.rate ] + else: + command += ["--auto"] + command += ["--brightness", str(output.brightness)] + command += ["--rotate", output.rotation] + command += ["--reflect", output.reflection] + else: + command += ["--off"] + if firstActive: + prevFirstActive = firstActive + self.root.after_idle(lambda: self.executeXrandrCommand(command)) + + def executeXrandrCommand(self, command): + try: + check_output(command, universal_newlines=True) + except CalledProcessError as err: + self.infoLabel.config(text="xrandr returned nonzero exit status {}".format(err.returncode), fg="red") + + def getUserConfirmationIfDangerousConfiguration(self): + result = "yes" + if all(map(lambda o: o.blanked or not o.active, self.outputs)): + result = messagebox.askquestion("All blanked or off", + "All ouputs are set to be turned off or blanked, continue?", + icon="warning") + return result == "yes" + + def sameAsPartition(self): + partition = [] + for output in self.outputs: + place = None + for p in partition: + if place != None: + break; + for o in p: + if place == None and (output.sameAs == o.name or o.sameAs == output.name): + place = p + break; + if place: + place.append(output) + else: + partition.append([output]) + return partition + + + def handleCancel(self, e=None): + self.root.destroy() + + def handleArandr(self, e=None): + call(["i3-msg", "-q", "exec", "arandr"]) + self.root.destroy() + + def handleUp(self, e): + row = e.widget.output.row + if row > 0: + self.swapOutputRows(row-1, row) + self.softRefreshList() + + def handleDown(self, e): + row = e.widget.output.row + n = len(self.outputs) + if row + 1 < n: + self.swapOutputRows(row, row+1) + self.softRefreshList() + + def swapOutputRows(self, row1, row2): + outputs = self.outputs + outputs[row1],outputs[row2] = outputs[row2],outputs[row1] + outputs[row1].row = row1 + outputs[row2].row = row2 + for widget in self.frame.grid_slaves(row=row2): + widget.output = outputs[row2] + for widget in self.frame.grid_slaves(row=row1): + widget.output = outputs[row1] + + def setPrimary(self, e): + output = e.widget.output + output.primary = not output.primary + for otherOutput in self.outputs: + if otherOutput != output: + otherOutput.primary = False + self.softRefreshList() + + def existsPrimary(self): + for output in self.outputs: + if output.primary: + return True + return False + + def toggleActive(self, e): + output = e.widget.output + output.active = not output.active + if output.active: + output.setPreferredMode() + else: + for otherOutput in self.outputs: + if otherOutput.sameAs == output.name: + otherOutput.sameAs = None + self.softRefreshList() + + def toggleBlanked(self, e): + output = e.widget.output + if output.blanked: + output.blanked = False + output.brightness = 1.0 + else: + output.blanked = True + output.brightness = 0.0 + self.softRefreshList() + + def updateBrightness(self, e): + output = e.widget.output + output.brightness = .01 * e.widget.get() + output.blanked = False + if abs(output.brightness) < 1e-09: + output.blanked = True + self.softRefreshList() + + def cycleRotation(self, e): + output = e.widget.output + if output.rotation == "normal": + output.rotation = "right" + elif output.rotation == "right": + output.rotation = "inverted" + elif output.rotation == "inverted": + output.rotation = "left" + else: + output.rotation = "normal" + self.softRefreshList() + + def rotationSymbol(self, rotation): + return { + "normal": ROTATION_NORMAL, + "left": ROTATION_LEFT, + "right": ROTATION_RIGHT, + "inverted": ROTATION_INVERTED, + }[rotation] + + def cycleReflection(self, e): + output = e.widget.output + if output.reflection == "normal": + output.reflection = "x" + elif output.reflection == "x": + output.reflection = "y" + elif output.reflection == "y": + output.reflection = "xy" + else: + output.reflection = "normal" + self.softRefreshList() + + def reflectionSymbol(self, reflection): + return { + "normal": REFLECTION_NORMAL, + "x": REFLECTION_X, + "y": REFLECTION_Y, + "xy": REFLECTION_XY, + }[reflection] + + def toggleDuplicate(self, e): + duplicateButton = e.widget + optionMenu = duplicateButton.statusOptionMenu + output = optionMenu.output + if output.sameAs != None: + output.sameAs = None + self.setMenuToOutput(optionMenu, output) + else: + self.setMenuToDuplicate(optionMenu) + self.softRefreshList() + + def getDuplicableOutputsFor(self, output): + return [o for o in self.outputs if o != output and o.sameAs == None] + + def softRefreshList(self, e=None): + for widget in set().union(self.nameLabels, self.primaryButtons, + self.statusOptionMenus, self.blankedButtons, + self.duplicateButtons, self.rotateButtons, self.reflectButtons, + self.brightnessSliders, self.upButtons, self.downButtons): + widget.config(fg="gray" if not widget.output.active else "black") + + for widget in self.toggleButtons: + widget.config(text=TOGGLE_ON if widget.output.active else TOGGLE_OFF) + + for widget in self.nameLabels: + widget.config(text=widget.output.name) + + for widget in self.primaryButtons: + widget.config(text=PRIMARY_SYMBOL if widget.output.primary else SECONDARY_SYMBOL) + if not widget.output.primary: + widget.config(fg="gray") + + for widget in self.statusOptionMenus: + widget.config(text=widget.output.status()) + if widget.output.sameAs != None: + self.setMenuToDuplicate(widget) + self.setInfo(widget, "Select output to duplicate") + else: + self.setMenuToOutput(widget, widget.output) + self.setInfo(widget, "Select output mode") + + for widget in self.blankedButtons: + widget.config(text=BLANKED_SYMBOL if widget.output.blanked else UNBLANKED_SYMBOL) + + for widget in self.duplicateButtons: + widget.config(text=CLONED_SYMBOL if widget.output.sameAs else NOT_CLONED_SYMBOL) + + for widget in self.rotateButtons: + widget.config(text=self.rotationSymbol(widget.output.rotation)) + + for widget in self.reflectButtons: + widget.config(text=self.reflectionSymbol(widget.output.reflection)) + + for widget in self.brightnessSliders: + widget.set(int(100*widget.output.brightness)) + + def hardRefreshList(self, e=None): + self.outputs = Output.realOutputs() + self.root.after_idle(self.populateGrid) + + def populateGrid(self): + oldFrame = self.frame + self.frame = Frame(self.root) + self.frame.grid(row=0, column=0, columnspan=len(self.bottomRow)) + self.toggleButtons = [] + self.nameLabels = [] + self.primaryButtons = [] + self.statusOptionMenus = [] + self.blankedButtons = [] + self.duplicateButtons = [] + self.rotateButtons = [] + self.reflectButtons = [] + self.brightnessSliders = [] + self.upButtons = [] + self.downButtons = [] + for row, output in enumerate(self.outputs): + self.makeLabelRow(output, row) + self.registerBindings() + if oldFrame: + oldFrame.destroy() + + def makeLabelRow(self, output, row): + output.row = row + style = {'relief':FLAT, 'padx':1, 'pady':1, 'anchor':'w'} + widgets = [] + + toggleButton = Button(self.frame, font=FONTAWESOME_FONT, **style) + toggleButton.output = output + self.toggleButtons.append(toggleButton) + if SHOW_ON_OFF: + widgets.append(toggleButton) + + nameLabel = Label(self.frame, font=DEFAULT_FONT) + nameLabel.output = output + self.nameLabels.append(nameLabel) + if SHOW_NAMES: + widgets.append(nameLabel) + + primaryButton = Button(self.frame, font=FONTAWESOME_FONT, **style) + primaryButton.output = output + self.primaryButtons.append(primaryButton) + if not output.primary: + primaryButton.config(fg="gray") + if SHOW_PRIMARY: + widgets.append(primaryButton) + + var = StringVar(self.frame) + statusOptionMenu = OptionMenu(self.frame, var, None) + statusOptionMenu.output = output + statusOptionMenu.var = var + statusOptionMenu.config(relief=FLAT) + self.statusOptionMenus.append(statusOptionMenu) + if SHOW_MODE or SHOW_DUPLICATE: + widgets.append(statusOptionMenu) + + blankedButton = Button(self.frame, font=FONTAWESOME_FONT, **style) + blankedButton.output = output + self.blankedButtons.append(blankedButton) + if SHOW_BLANKED: + widgets.append(blankedButton) + + duplicateButton = Button(self.frame, font=FONTAWESOME_FONT, **style) + duplicateButton.statusOptionMenu = statusOptionMenu + duplicateButton.output = output + self.duplicateButtons.append(duplicateButton) + if SHOW_DUPLICATE: + widgets.append(duplicateButton) + + rotateButton = Button(self.frame, font=FONTAWESOME_FONT, **style) + rotateButton.output = output + self.rotateButtons.append(rotateButton) + if SHOW_ROTATION: + widgets.append(rotateButton) + + reflectButton = Button(self.frame, font=FONTAWESOME_FONT, **style) + reflectButton.output = output + self.reflectButtons.append(reflectButton) + if SHOW_REFLECTION: + widgets.append(reflectButton) + + brightnessSlider = Scale(self.frame, orient="horizontal", from_=0, to=100, + length=BRIGHTNESS_SLIDER_LENGTH, showvalue=SHOW_BRIGHTNESS_VALUE, + sliderlength=BRIGHTNESS_SLIDER_HANDLE_LENGTH, + width=BRIGHTNESS_SLIDER_WIDTH, font=FONTAWESOME_FONT) + brightnessSlider.output = output + self.brightnessSliders.append(brightnessSlider) + if SHOW_BRIGHTNESS: + widgets.append(brightnessSlider) + + upButton = Button(self.frame, text=UP_ARROW, font=FONTAWESOME_FONT, **style) + upButton.output = output + self.upButtons.append(upButton) + if SHOW_UP_DOWN: + widgets.append(upButton) + + downButton = Button(self.frame, text=DOWN_ARROW, font=FONTAWESOME_FONT, **style) + downButton.output = output + self.downButtons.append(downButton) + if SHOW_UP_DOWN: + widgets.append(downButton) + + for widget in widgets: + widget.output = output + self.gridRow(row, widgets) + self.softRefreshList() + + def setMenuToOutput(self, optionMenu, output): + menu = optionMenu["menu"] + var = optionMenu.var + modes = output.modes + menu.delete(0, END) + for i, mode in enumerate(modes): + label = Output.modestr(mode) + menu.add_command(label=label, command=setLabelAndOutputModeFunc(var,label,output,i)) + if output.currentModeIndex != None: + var.set(Output.modestr(modes[output.currentModeIndex])) + elif output.preferredModeIndex != None: + var.set(Output.modestr(modes[output.preferredModeIndex])) + elif len(modes) > 0: + var.set(Output.modestr(modes[0])) + + def setMenuToDuplicate(self, optionMenu): + menu = optionMenu["menu"] + var = optionMenu.var + output = optionMenu.output + menu.delete(0, END) + duplicables = self.getDuplicableOutputsFor(output) + defaultIndex = 0 + for i,otherOutput in enumerate(duplicables): + label = otherOutput.name + menu.add_command(label=label, command=setLabelAndSameAsFunc(var,label,output)) + if label == output.sameAs: + defaultIndex = i + if len(duplicables) > 0: + var.set(menu.entrycget(defaultIndex, "label")) + output.sameAs = menu.entrycget(defaultIndex, "label") + else: + var.set("None") + + def handleFocusOut(self, event): + self.root.destroy() + +def setLabelAndOutputModeFunc(var, label, output, i): + def func(): + var.set(label) + output.setMode(i) + return func + +def setLabelAndSameAsFunc(var, sameAs, output): + def func(): + var.set(sameAs) + output.sameAs = sameAs + return func + +if os.environ.get('BLOCK_BUTTON') == "1": + if os.fork() != 0: + root = Tk() + if DEFAULT_FONT_FAMILY and DEFAULT_FONT_SIZE: + font.nametofont("TkDefaultFont").config(family=DEFAULT_FONT_FAMILY, size=DEFAULT_FONT_SIZE) + manager = MonitorManager(root) + root.mainloop() + else: + print(DESKTOP_SYMBOL) +else: + print(DESKTOP_SYMBOL) diff --git a/dot_config/sway/executable_sensors.sh b/dot_config/sway/executable_sensors.sh new file mode 100644 index 0000000..96a7847 --- /dev/null +++ b/dot_config/sway/executable_sensors.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +gpu_temp=$(sensors | awk '/temp1/ {print $2}') +cpu_temp=$(sensors | awk '/Tctl/ {print $2}') +echo "CPU: ${cpu_temp} | GPU ${gpu_temp}" diff --git a/dot_config/sway/executable_shutdown_menu b/dot_config/sway/executable_shutdown_menu new file mode 100644 index 0000000..c826e1a --- /dev/null +++ b/dot_config/sway/executable_shutdown_menu @@ -0,0 +1,186 @@ +#!/usr/bin/env bash +# +# Use rofi/zenity to change system runstate thanks to systemd. +# +# Note: this currently relies on associative array support in the shell. +# +# Inspired from i3pystatus wiki: +# https://github.com/enkore/i3pystatus/wiki/Shutdown-Menu +# +# Copyright 2015 Benjamin Chrétien +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +####################################################################### +# BEGIN CONFIG # +####################################################################### + +# Use a custom lock script +#LOCKSCRIPT="i3lock-extra -m pixelize" + +# Colors: FG (foreground), BG (background), HL (highlighted) +FG_COLOR="${FG_COLOR:-#bbbbbb}" +BG_COLOR="${BG_COLOR:-#111111}" +HLFG_COLOR="${HLFG_COLOR:-#111111}" +HLBG_COLOR="${HLBG_COLOR:-#bbbbbb}" +BORDER_COLOR="${BORDER_COLOR:-#222222}" + +# Options not related to colors +ROFI_TEXT="${ROFI_TEXT:-Menu:}" +ROFI_OPTIONS=(${ROFI_OPTIONS:--width 11 -location 3 -hide-scrollbar -bw 2}) + +# Zenity options +ZENITY_TITLE="${ZENITY_TITLE:-Menu}" +ZENITY_TEXT="${ZENITY_TEXT:-Action:}" +ZENITY_OPTIONS=(${ZENITY_OPTIONS:---column= --hide-header}) + +####################################################################### +# END CONFIG # +####################################################################### + +# Whether to ask for user's confirmation +enable_confirmation=${ENABLE_CONFIRMATIONS:-false} + +# Preferred launcher if both are available +preferred_launcher="${LAUNCHER:-rofi}" + +usage="$(basename "$0") [-h] [-c] [-p name] -- display a menu for shutdown, reboot, lock etc. + +where: + -h show this help text + -c ask for user confirmation + -p preferred launcher (rofi or zenity) + +This script depends on: + - systemd, + - i3, + - rofi or zenity." + +# Check whether the user-defined launcher is valid +launcher_list=(rofi zenity) +function check_launcher() { + if [[ ! "${launcher_list[@]}" =~ (^|[[:space:]])"$1"($|[[:space:]]) ]]; then + echo "Supported launchers: ${launcher_list[*]}" + exit 1 + else + # Get array with unique elements and preferred launcher first + # Note: uniq expects a sorted list, so we cannot use it + i=1 + launcher_list=($(for l in "$1" "${launcher_list[@]}"; do printf "%i %s\n" "$i" "$l"; let i+=1; done \ + | sort -uk2 | sort -nk1 | cut -d' ' -f2- | tr '\n' ' ')) + fi +} + +# Parse CLI arguments +while getopts "hcp:" option; do + case "${option}" in + h) echo "${usage}" + exit 0 + ;; + c) enable_confirmation=true + ;; + p) preferred_launcher="${OPTARG}" + check_launcher "${preferred_launcher}" + ;; + *) exit 1 + ;; + esac +done +check_launcher "${preferred_launcher}" + +# Check whether a command exists +function command_exists() { + command -v "$1" &> /dev/null 2>&1 +} + +# systemctl required +if ! command_exists systemctl ; then + exit 1 +fi + +# menu defined as an associative array +typeset -A menu + +# Menu with keys/commands +menu=( + [Shutdown]="systemctl poweroff" + [Reboot]="systemctl reboot" + [Hibernate]="systemctl hibernate" + [Suspend]="systemctl suspend" + [Halt]="systemctl halt" + [Lock]="${LOCKSCRIPT:-i3lock --color=${BG_COLOR#"#"}}" + [Logout]="i3-msg exit" + [Cancel]="" +) +menu_nrows=${#menu[@]} + +# Menu entries that may trigger a confirmation message +menu_confirm="Shutdown Reboot Hibernate Suspend Halt Logout" + +launcher_exe="" +launcher_options="" +rofi_colors="" + +function prepare_launcher() { + if [[ "$1" == "rofi" ]]; then + rofi_colors=(-bc "${BORDER_COLOR}" -bg "${BG_COLOR}" -fg "${FG_COLOR}" \ + -hlfg "${HLFG_COLOR}" -hlbg "${HLBG_COLOR}") + launcher_exe="rofi" + launcher_options=(-dmenu -i -lines "${menu_nrows}" -p "${ROFI_TEXT}" \ + "${rofi_colors}" "${ROFI_OPTIONS[@]}") + elif [[ "$1" == "zenity" ]]; then + launcher_exe="zenity" + launcher_options=(--list --title="${ZENITY_TITLE}" --text="${ZENITY_TEXT}" \ + "${ZENITY_OPTIONS[@]}") + fi +} + +for l in "${launcher_list[@]}"; do + if command_exists "${l}" ; then + prepare_launcher "${l}" + break + fi +done + +# No launcher available +if [[ -z "${launcher_exe}" ]]; then + exit 1 +fi + +launcher=(${launcher_exe} "${launcher_options[@]}") +selection="$(printf '%s\n' "${!menu[@]}" | sort | "${launcher[@]}")" + +function ask_confirmation() { + if [ "${launcher_exe}" == "rofi" ]; then + confirmed=$(echo -e "Yes\nNo" | rofi -dmenu -i -lines 2 -p "${selection}?" \ + "${rofi_colors}" "${ROFI_OPTIONS[@]}") + [ "${confirmed}" == "Yes" ] && confirmed=0 + elif [ "${launcher_exe}" == "zenity" ]; then + zenity --question --text "Are you sure you want to ${selection,,}?" + confirmed=$? + fi + + if [ "${confirmed}" == 0 ]; then + i3-msg -q "exec ${menu[${selection}]}" + fi +} + +if [[ $? -eq 0 && ! -z ${selection} ]]; then + if [[ "${enable_confirmation}" = true && \ + ${menu_confirm} =~ (^|[[:space:]])"${selection}"($|[[:space:]]) ]]; then + ask_confirmation + else + i3-msg -q "exec ${menu[${selection}]}" + fi +fi diff --git a/dot_config/sway/executable_sunset.jpg b/dot_config/sway/executable_sunset.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bcbb7eed8dd1b6fb99ed375afcd66cd56ce0de36 GIT binary patch literal 171929 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

    KHQ@zp*R* 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 BB8~t6 literal 0 HcmV?d00001 diff --git a/dot_config/sway/executable_swayexit-openrc b/dot_config/sway/executable_swayexit-openrc new file mode 100644 index 0000000..dc3d919 --- /dev/null +++ b/dot_config/sway/executable_swayexit-openrc @@ -0,0 +1,34 @@ +#!/bin/sh +lock() { + i3lock +} + +case "$1" in + lock) + swaylock -c 000000 + ;; + logout) + killall sway + ;; + suspend) + echo -n mem | sudo tee --append /sys/power/state + #lock && dbus-send --system --print-reply --type=method_call --reply-timeout=2000 --dest=org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower.Suspend + ;; + hibernate) + echo -n disk | sudo tee --append /sys/power/state + #lock && dbus-send --system --print-reply --type=method_call --reply-timeout=2000 --dest=org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower.Hibernate + ;; + reboot) + sudo openrc-shutdown --reboot now + #dbus-send --system --print-reply --type=method_call --reply-timeout=2000 --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart + ;; + shutdown) + sudo openrc-shutdown --poweroff now + #dbus-send --system --print-reply --type=method_call --reply-timeout=2000 --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop + ;; + *) + echo "Usage: $0 {lock|logout|suspend|hibernate|reboot|shutdown}" + exit 2 +esac + +exit 0 diff --git a/dot_config/sway/executable_swayexit-systemd b/dot_config/sway/executable_swayexit-systemd new file mode 100644 index 0000000..a038ed0 --- /dev/null +++ b/dot_config/sway/executable_swayexit-systemd @@ -0,0 +1,30 @@ +#!/bin/sh +lock() { + i3lock +} + +case "$1" in + lock) + swaylock -c 000000 + ;; + logout) + killall sway + ;; + suspend) + lock && systemctl suspend + ;; + hibernate) + lock && systemctl hibernate + ;; + reboot) + systemctl reboot + ;; + shutdown) + systemctl poweroff + ;; + *) + echo "Usage: $0 {lock|logout|suspend|hibernate|reboot|shutdown}" + exit 2 +esac + +exit 0 diff --git a/dot_config/sway/executable_usb b/dot_config/sway/executable_usb new file mode 100644 index 0000000..f74f0e4 --- /dev/null +++ b/dot_config/sway/executable_usb @@ -0,0 +1,368 @@ +#!/usr/bin/env python3 +# +# Copyright (C) 2015 James Murphy +# Licensed under the terms of the GNU GPL v2 only. +# +# i3blocks blocklet script to output connected usb storage device info. + +import os + +def _default(name, default='', arg_type=str): + val = default + if name in os.environ: + val = os.environ[name] + return arg_type(val) + +############################################################################### +# BEGIN CONFIG +# Most of these can be specified as command line options, run with --help for +# more information. +# You may edit any of the following entries. DO NOT delete any of them, else +# the main script will have unpredictable behavior. +############################################################################### + +# Color options, can be a color name or #RRGGBB +INFO_TEXT_COLOR = _default("INFO_TEXT_COLOR", "white") +MOUNTED_COLOR = _default("MOUNTED_COLOR", "green") +PLUGGED_COLOR = _default("PLUGGED_COLOR", "gray") +LOCKED_COLOR = _default("LOCKED_COLOR", "gray") +UNLOCKED_NOT_MOUNTED_COLOR = _default("UNLOCKED_NOT_MOUNTED_COLOR", "yellow") +PARTITIONLESS_COLOR = _default("PARTITIONLESS_COLOR", "red") + +# Default texts +PARTITIONLESS_TEXT = _default("PARTITIONLESS_TEXT", "no partitions") +SEPARATOR = _default("SEPARATOR", " | ") + +# Indicate whether an encrypted partition is locked/unlocked, "" is allowed. +LOCKED_INDICATOR = _default("LOCKED_INDICATOR", "\uf023 ") +UNLOCKED_INDICATOR = _default("UNLOCKED_INDICATOR", "\uf09c ") + +# Shows instead of space available when a partition is mounted readonly +READONLY_INDICATOR = _default("READONLY_INDICATOR", "ro") + +# Maximum length of a filesystem label to display. Use None to disable +# truncation, a positive integer to right truncate to that many characters, or +# a negative integer to left truncate to that many characters. Setting this +# option to 0 will disable the displaying of filesystem labels. +TRUNCATE_FS_LABELS = _default("TRUNCASE_FS_LABELS", None) + +# List of devices to ignore. Must be a valid python3 representation of a list +# of strings +IGNORE_LIST = _default("IGNORE_LIST", "[]") +if IGNORE_LIST: + import ast + IGNORE_LIST = list(map(lambda p: + p if p.startswith("/") + else "/dev/{}".format(p), + ast.literal_eval(IGNORE_LIST) + )) + + +# Edit this function to ignore certain devices (e.g. those that are always +# plugged in). +# The dictionary udev_attributes_dict contains all the attributes given by +# udevadm info --query=propery --name=$path +def ignore(path, udev_attributes_dict): + # E.g. how to ignore devices whose device name begins with /dev/sda + #if udev_attributes_dict["DEVNAME"].startswith("/dev/sda"): + # return True + return False + +# Edit this function to ignore devices before the udev attributes are +# computed in order to save time and memory. +def fastIgnore(path): + if path in IGNORE_LIST: + return True + + # E.g. how to to ignore devices whose path begins with /dev/sda + #if path.startswith("/dev/sda"): + # return True + + # E.g. how to ignore a fixed set of paths + #if path in [ "/dev/path1", "/dev/path2", "/dev/path3" ]: + # return True + return False + +############################################################################### +# END CONFIG +# DO NOT EDIT ANYTHING AFTER THIS POINT UNLESS YOU KNOW WHAT YOU ARE DOING +############################################################################### + +from subprocess import check_output +import argparse + +def pangoEscape(text): + return text.replace("&", "&").replace("<", "<").replace(">", ">") + +def getLeafDevicePaths(): + lines = check_output(['lsblk', '-spndo', 'NAME'], universal_newlines=True) + lines = lines.split("\n") + lines = filter(None, lines) + return lines + +def getKernelName(path): + return check_output(['lsblk', '-ndso', 'KNAME', path], + universal_newlines=True).rstrip("\n") + +def getDeviceType(path): + return check_output(['lsblk', '-no', 'TYPE', path], + universal_newlines=True).strip() + +def getFSType(path): + global attributeMaps + return attributeMaps[path].get("ID_FS_TYPE") + +def isLUKSPartition(path): + return getFSType(path) == "crypto_LUKS" + +def isSwapPartition(path): + return getFSType(path) == "swap" + +def getFSLabel(path): + global attributeMaps + label = attributeMaps[path].get("ID_FS_LABEL_ENC", "") + if label: + label = label.encode().decode("unicode-escape") + if type(TRUNCATE_FS_LABELS) == int: + if TRUNCATE_FS_LABELS >= 0: + label = label[:TRUNCATE_FS_LABELS] + elif TRUNCATE_FS_LABELS < 0: + label = label[TRUNCATE_FS_LABELS:] + return label + +def getFSOptions(path): + lines = check_output(['findmnt', '-no', 'FS-OPTIONS', path], + universal_newlines=True).strip() + lines = lines.split(",") + return lines + +def isReadOnly(path): + return "ro" in getFSOptions(path) + +def isExtendedPartitionMarker(path): + global attributeMaps + MARKERS = ["0xf", "0x5"] + return attributeMaps[path].get("ID_PART_ENTRY_TYPE") in MARKERS + +def getMountPoint(path): + return check_output(['lsblk', '-ndo', 'MOUNTPOINT', path], + universal_newlines=True).rstrip("\n") + +def getSpaceAvailable(path): + lines = check_output(['df', '-h', '--output=avail', path], + universal_newlines=True) + lines = lines.split("\n") + if len(lines) != 3: + return "" + else: + return lines[1].strip() + +def getLockedCryptOutput(path): + form = "[{}{}]" + kname = pangoEscape(getKernelName(path)) + output = form.format(LOCKED_COLOR, LOCKED_INDICATOR, kname) + return output + +def getParentKernelName(path): + lines = check_output(['lsblk', '-nso', 'KNAME', path], + universal_newlines=True) + lines = lines.split("\n") + if len(lines) > 2: + return lines[1].rstrip("\n") + else: + return "" + +def getUnlockedCryptOutput(path): + mountPoint = getMountPoint(path) + if mountPoint: + color = MOUNTED_COLOR + if isReadOnly(path): + spaceAvail = READONLY_INDICATOR + else: + spaceAvail = pangoEscape(getSpaceAvailable(path)) + mountPoint = "{}:".format(pangoEscape(mountPoint)) + else: + color = UNLOCKED_NOT_MOUNTED_COLOR + spaceAvail = "" + kernelName = pangoEscape(getKernelName(path)) + parentKernelName = pangoEscape(getParentKernelName(path)) + + block = "[{}{}:{}]" + block = block.format(color, UNLOCKED_INDICATOR, parentKernelName, kernelName) + + label = pangoEscape(getFSLabel(path)) + if label: + label = '"{}"'.format(label) + + items = [block, label, mountPoint, spaceAvail] + return " ".join(filter(None, items)) + +def getSwapOutput(path): + return "" + +def getUnencryptedPartitionOutput(path): + mountPoint = getMountPoint(path) + if mountPoint: + color = MOUNTED_COLOR + if isReadOnly(path): + spaceAvail = READONLY_INDICATOR + else: + spaceAvail = pangoEscape(getSpaceAvailable(path)) + mountPoint = "{}:".format(pangoEscape(mountPoint)) + else: + color = PLUGGED_COLOR + spaceAvail = "" + kernelName = pangoEscape(getKernelName(path)) + + block = "[{}]" + block = block.format(color, kernelName) + + label = pangoEscape(getFSLabel(path)) + if label: + label = '"{}"'.format(label) + + items = [block, label, mountPoint, spaceAvail] + return " ".join(filter(None, items)) + +def getDiskWithNoPartitionsOutput(path): + form = "[{}] {}" + kernelName = pangoEscape(getKernelName(path)) + return form.format(PARTITIONLESS_COLOR, kernelName, PARTITIONLESS_TEXT) + +def getOutput(path): + if isSwapPartition(path): + return getSwapOutput(path) + t = getDeviceType(path) + if t == "part": + if isExtendedPartitionMarker(path): + return "" + elif isLUKSPartition(path): + return getLockedCryptOutput(path) + else: + return getUnencryptedPartitionOutput(path) + elif t == "disk": + return getDiskWithNoPartitionsOutput(path) + elif t == "crypt": + return getUnlockedCryptOutput(path) + elif t == "rom" : + return "" + +def makeAttributeMap(path): + attributeMap = {} + lines = check_output( + ['udevadm','info','--query=property','--name={}'.format(path)], + universal_newlines=True) + lines = lines.split("\n") + for line in lines: + if line: + key, val = line.split("=", maxsplit=1) + attributeMap[key] = val + return attributeMap + +def getAttributeMaps(paths): + return {path : makeAttributeMap(path) for path in paths} + +def parseArguments(): + parser = argparse.ArgumentParser(prog="usb.py", + description="i3blocks blocklet script to output connected" + " usb storage device info") + parser.add_argument("--info-text-color", nargs=1, + help="Set the info text color. " + "Default: {}".format(INFO_TEXT_COLOR)) + parser.add_argument("--mounted-color", nargs=1, + help="Set the color of mounted devices. " + "Default: {}".format(MOUNTED_COLOR)) + parser.add_argument("--plugged-color", nargs=1, + help="Set the color of plugged devices. " + "Default: {}".format(PLUGGED_COLOR)) + parser.add_argument("--locked-color", nargs=1, + help="Set the color of locked crypt devices. " + "Default: {}".format(LOCKED_COLOR)) + parser.add_argument("--unlocked-not-mounted-color", nargs=1, + help="Set the color of unlocked not mounted crypt devices. " + "Default: {}".format(UNLOCKED_NOT_MOUNTED_COLOR)) + parser.add_argument("--partitionless-color", nargs=1, + help="Set the color of devicees with no partitions. " + "Defaut: {}".format(PARTITIONLESS_COLOR)) + parser.add_argument("--partitionless-text", nargs=1, + help="Set the text to display for a device with no partitions. " + "Default: {}".format(PARTITIONLESS_TEXT)) + parser.add_argument("--separator", nargs=1, + help="Set the separator between devices. " + "Default: {}".format(SEPARATOR)) + parser.add_argument("--locked-indicator", nargs=1, + help="Set the indicator to use for a locked crypt device. " + "Default: {}".format(LOCKED_INDICATOR)) + parser.add_argument("--unlocked-indicator", nargs=1, + help="Set the indicator to use for an unlocked crypt device. " + "Default: {}".format(UNLOCKED_INDICATOR)) + parser.add_argument("--readonly-indicator", nargs=1, + help="Set the indicator to use for a readonly device. " + "Default: {}".format(READONLY_INDICATOR)) + parser.add_argument("--truncate-fs-labels", type=int, nargs=1, + help="Trucate device labels to a certain number of characters, must be" + "an integer." + "Default: {}".format(TRUNCATE_FS_LABELS)) + parser.add_argument("-i", "--ignore", action="append", + help="Ignore a device by path. " + "If path doesn't begin with / then it is assumed to be in /dev/") + args = parser.parse_args() + setParsedArgs(args) + +def setParsedArgs(args): + if args.info_text_color != None: + global INFO_TEXT_COLOR + INFO_TEXT_COLOR = args.info_text_color[0] + if args.mounted_color != None: + global MOUNTED_COLOR + MOUNTED_COLOR = args.mounted_color[0] + if args.plugged_color != None: + global PLUGGED_COLOR + PLUGGED_COLOR = args.plugged_color[0] + if args.locked_color != None: + global LOCKED_COLOR + LOCKED_COLOR = args.locked_color[0] + if args.unlocked_not_mounted_color != None: + global UNLOCKED_NOT_MOUNTED_COLOR + UNLOCKED_NOT_MOUNTED_COLOR = args.unlocked_not_mounted_color[0] + if args.partitionless_color != None: + global PARTITIONLESS_COLOR + PARTITIONLESS_COLOR = args.partitionless_color[0] + if args.partitionless_text != None: + global PARTITIONLESS_TEXT + PARTITIONLESS_TEXT = args.partitionless_text[0] + if args.separator != None: + global SEPARATOR + SEPARATOR = args.separator[0] + if args.locked_indicator != None: + global LOCKED_INDICATOR + LOCKED_INDICATOR = args.locked_indicator[0] + if args.unlocked_indicator != None: + global UNLOCKED_INDICATOR + UNLOCKED_INDICATOR = args.unlocked_indicator[0] + if args.readonly_indicator != None: + global READONLY_INDICATOR + READONLY_INDICATOR = args.readonly_indicator[0] + if args.truncate_fs_labels != None: + global TRUNCATE_FS_LABELS + TRUNCATE_FS_LABELS = args.truncate_fs_labels[0] + if args.ignore != None: + args.ignore = list(map(lambda p: + p if p.startswith("/") else "/dev/{}".format(p), args.ignore)) + global fastIgnore + oldFastIgnore = fastIgnore + def newFastIgnore(path): + return oldFastIgnore(path) or path in args.ignore + fastIgnore = newFastIgnore + +parseArguments() +leaves = getLeafDevicePaths() +leaves = [path for path in leaves if not fastIgnore(path)] +attributeMaps = getAttributeMaps(leaves) +leaves = (path for path in leaves if not ignore(path, attributeMaps[path])) +outputs = filter(None, map(getOutput, leaves)) +output = SEPARATOR.join(outputs) +if output: + output = "{}".format(INFO_TEXT_COLOR, output) +print(output) +print(output) diff --git a/dot_config/sway/executable_vpn.sh b/dot_config/sway/executable_vpn.sh new file mode 100644 index 0000000..e846a3d --- /dev/null +++ b/dot_config/sway/executable_vpn.sh @@ -0,0 +1,9 @@ +#!/bin/bash +# +# Use nmcli to display the VPN status +# +if ip link | grep -q tun; then + echo "" +else + echo "" +fi diff --git a/dot_config/sway/executable_weather.rb b/dot_config/sway/executable_weather.rb new file mode 100644 index 0000000..0389c93 --- /dev/null +++ b/dot_config/sway/executable_weather.rb @@ -0,0 +1,59 @@ +#!/usr/bin/env ruby +# Fetch weather for your city from OpenWeatherMap +# You need an API key to fetch data, and store the API key inside ENV +# export I3_OWM_APIKEY="0986273cf8ac41578b90bcc90bc559b4" +# Depends on Weather Icons: https://erikflowers.github.io/weather-icons/ + +require 'open-uri' +require 'json' +# Get info from open weather map +class Weather + API = 'http://api.openweathermap.org/data/2.5/weather?id=CITY&units=metric&APPID=APIKEY' + API_KEY = 'API-KEY-HERE' + + attr_accessor :api_url, :weather + + def initialize(city) + @api_url = API.gsub('CITY', city).gsub('APIKEY', API_KEY) + @weather = contact_openweathermap + end + + # Public - Return formated response - temperature / weather + # + # Returns String + def show + info = @weather['weather'][0]['main'] + temp = @weather['main']['temp'] + " #{temp}  #{icon(info)} #{info}" + end + + private + + # Private - Use FontAwesome icons to show the weather conditions + # + # Returns Unicode char + def icon(weather) + case weather + when 'Fog' then '' + when /Clear/ then ' ' + when /Rain/ then '' + when /Cloud/ then '' + when /Snow/ then '' + else + '' + end + end + + # Private - Fetch information from OpenWeatherMap + # + # Returns Hash + def contact_openweathermap + JSON.parse(open(@api_url).read) + end +end + +# city = 'Zagreb' +city_id = '6618983' +out = Weather.new(city_id).show + +puts "#{out}" diff --git a/dot_config/wezterm/executable_wezterm.lua b/dot_config/wezterm/executable_wezterm.lua new file mode 100644 index 0000000..546087f --- /dev/null +++ b/dot_config/wezterm/executable_wezterm.lua @@ -0,0 +1,132 @@ +local wezterm = require "wezterm" + +local my_colors = { + a = { fg = "#24283b", bg = "#7aa2f7" }, + b = { fg = "#7aa2f7", bg = "#3b4261" }, + c = { fg = "#828bb8", bg = "#1e2030" } +} + +local separators = { + main = { left = '', right = '' }, + sub = { left = '', right = '' }, +} + +wezterm.on( + 'format-tab-title', + function(tab, tabs, panes, config, hover, max_width) + local tab_title = { + st = " " .. tab.active_pane.title .. " ", + bg = my_colors.b.bg, + fg = my_colors.b.fg, + } + local separator = { + st = separators.sub.left, + bg = my_colors.b.bg, + fg = my_colors.b.fg, + } + if tab.is_active then + tab_title.bg = my_colors.a.bg + tab_title.fg = my_colors.a.fg + separator.st = separators.main.left + separator.fg = my_colors.a.bg + if tab.tab_index + 1 == #tabs then + separator.bg = my_colors.c.bg + else + separator.bg = my_colors.b.bg + end + else + if tab.tab_index + 1 == #tabs then + separator.st = separators.main.left + separator.fg = my_colors.b.bg + separator.bg = my_colors.c.bg + elseif tabs[tab.tab_index + 2].is_active then + separator.st = separators.main.left + separator.fg = my_colors.b.bg + separator.bg = my_colors.a.bg + end + end + return { + { Background = { Color = tab_title.bg } }, + { Foreground = { Color = tab_title.fg } }, + { Text = tab_title.st }, + { Background = { Color = separator.bg } }, + { Foreground = { Color = separator.fg } }, + { Text = separator.st } + } + end +) + +wezterm.on( + 'update-right-status', + function(window, pane) + local date_format = " %I:%M %p " .. separators.sub.right .. " %A " .. separators.sub.right .. " %B %-d " + local date = wezterm.strftime(date_format) + local bat = " " + for _, b in ipairs(wezterm.battery_info()) do + if b.state == "Charging" then + bat = bat .. "" + elseif b.state == "Unknown" then + bat = bat .. "" + elseif b.state_of_charge <= 0.2 then + bat = bat .. "" + else + bat = bat .. "" + end + bat = bat .. string.format('%.0f%%', b.state_of_charge * 100) .. " " + end + window:set_right_status( + wezterm.format { + { Foreground = { Color = my_colors.b.bg } }, + { Background = { Color = my_colors.c.bg } }, + { Text = separators.main.right }, + { Foreground = { Color = my_colors.b.fg } }, + { Background = { Color = my_colors.b.bg } }, + { Text = bat }, + { Foreground = { Color = my_colors.a.bg } }, + { Background = { Color = my_colors.b.bg } }, + { Text = separators.main.right }, + { Foreground = { Color = my_colors.a.fg } }, + { Background = { Color = my_colors.a.bg } }, + { Text = date }, + } + ) + end +) + +return { + colors = { + tab_bar = { + background = my_colors.c.bg, + active_tab = { + bg_color = my_colors.a.bg, + fg_color = my_colors.a.fg + }, + inactive_tab = { + bg_color = my_colors.c.bg, + fg_color = my_colors.c.fg + }, + new_tab = { + bg_color = my_colors.c.bg, + fg_color = my_colors.c.fg + } + } + }, + use_fancy_tab_bar = false, + tab_bar_at_bottom = true, + tab_max_width = 100, + font_size = 11.0, + font = wezterm.font_with_fallback { + "JetBrains Mono", + "HackGenNerd Console" + }, + use_ime = true, + color_scheme = "tokyonight-storm", + initial_cols = 140, + initial_rows = 39, + window_padding = { + right = 0, + left = 0, + top = 0, + bottom = 0, + }, +} diff --git a/dot_config/xfce4/desktop/executable_icons.screen0-1904x1037.rc b/dot_config/xfce4/desktop/executable_icons.screen0-1904x1037.rc new file mode 100644 index 0000000..f190252 --- /dev/null +++ b/dot_config/xfce4/desktop/executable_icons.screen0-1904x1037.rc @@ -0,0 +1,99 @@ +[xfdesktop-version-4.10.3+-rcfile_format] +4.10.3+=true + +[/home/simono41/PycharmProjects] +row=5 +col=2 + +[/home/simono41/Repository] +row=1 +col=2 + +[/home/simono41/Musik] +row=8 +col=1 + +[/home/simono41/notes.txt] +row=1 +col=1 + +[/home/simono41/Pictures] +row=7 +col=1 + +[/home/simono41/Schreibtisch] +row=5 +col=1 + +[/home/simono41/Templates] +row=4 +col=1 + +[/home/simono41/Music] +row=3 +col=0 + +[/home/simono41/Public] +row=6 +col=1 + +[/home/simono41/Sync] +row=2 +col=2 + +[/home/simono41/CLionProjects] +row=4 +col=2 + +[/home/simono41/Desktop] +row=7 +col=0 + +[/home/simono41/aur-builds] +row=2 +col=1 + +[/home/simono41/Documents] +row=6 +col=0 + +[/home/simono41/repos] +row=0 +col=2 + +[/home/simono41/Downloads] +row=4 +col=0 + +[/home/simono41/scripte] +row=0 +col=1 + +[/home/simono41/Dokumente] +row=5 +col=0 + +[/home/simono41/IdeaProjects] +row=3 +col=2 + +[/home/simono41/Bilder] +row=8 +col=0 + +[/home/simono41/Videos] +row=3 +col=1 + +[Papierkorb] +row=0 +col=0 + +[/] +row=1 +col=0 + +[/home/simono41] +row=2 +col=0 + diff --git a/dot_config/xfce4/desktop/symlink_icons.screen.latest.rc b/dot_config/xfce4/desktop/symlink_icons.screen.latest.rc new file mode 100644 index 0000000..d8d1d5c --- /dev/null +++ b/dot_config/xfce4/desktop/symlink_icons.screen.latest.rc @@ -0,0 +1 @@ +/home/simono41/.config/xfce4/desktop/icons.screen0-1904x1037.rc diff --git a/dot_config/xfce4/executable_helpers.rc b/dot_config/xfce4/executable_helpers.rc new file mode 100644 index 0000000..2fd471f --- /dev/null +++ b/dot_config/xfce4/executable_helpers.rc @@ -0,0 +1,3 @@ +TerminalEmulator=custom-TerminalEmulator +FileManager=pcmanfm + diff --git a/dot_config/xfce4/executable_xfce4-screenshooter b/dot_config/xfce4/executable_xfce4-screenshooter new file mode 100644 index 0000000..e387129 --- /dev/null +++ b/dot_config/xfce4/executable_xfce4-screenshooter @@ -0,0 +1,12 @@ +app=eog +last_user= +last_extension=png +screenshot_dir=file:/home/simono41/Bilder +enable_imgur_upload=true +show_in_folder=true +action=1 +delay=2 +region=3 +show_mouse=0 +show_border=1 + diff --git a/dot_config/xfce4/panel/launcher-17/executable_16637035441.desktop b/dot_config/xfce4/panel/launcher-17/executable_16637035441.desktop new file mode 100644 index 0000000..7399266 --- /dev/null +++ b/dot_config/xfce4/panel/launcher-17/executable_16637035441.desktop @@ -0,0 +1,15 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Exec=exo-open --launch TerminalEmulator +Icon=org.xfce.terminalemulator +StartupNotify=true +Terminal=false +Categories=Utility;X-XFCE;X-Xfce-Toplevel; +OnlyShowIn=XFCE; +X-AppStream-Ignore=True +Name=Terminal Emulator +Name[de]=Terminal +Comment=Use the command line +Comment[de]=Befehlszeile verwenden +X-XFCE-Source=file:///usr/share/applications/xfce4-terminal-emulator.desktop diff --git a/dot_config/xfce4/panel/launcher-18/executable_16637035442.desktop b/dot_config/xfce4/panel/launcher-18/executable_16637035442.desktop new file mode 100644 index 0000000..d3e0d8f --- /dev/null +++ b/dot_config/xfce4/panel/launcher-18/executable_16637035442.desktop @@ -0,0 +1,16 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Exec=exo-open --launch FileManager %u +Icon=org.xfce.filemanager +StartupNotify=true +Terminal=false +Categories=Utility;X-XFCE;X-Xfce-Toplevel; +OnlyShowIn=XFCE; +X-XFCE-MimeType=inode/directory;x-scheme-handler/trash; +X-AppStream-Ignore=True +Name=File Manager +Name[de]=Dateiverwaltung +Comment=Browse the file system +Comment[de]=Dateisystem durchsuchen +X-XFCE-Source=file:///usr/share/applications/xfce4-file-manager.desktop diff --git a/dot_config/xfce4/panel/launcher-19/executable_16637035443.desktop b/dot_config/xfce4/panel/launcher-19/executable_16637035443.desktop new file mode 100644 index 0000000..99effc8 --- /dev/null +++ b/dot_config/xfce4/panel/launcher-19/executable_16637035443.desktop @@ -0,0 +1,16 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Exec=exo-open --launch WebBrowser %u +Icon=org.xfce.webbrowser +StartupNotify=true +Terminal=false +Categories=Network;X-XFCE;X-Xfce-Toplevel; +OnlyShowIn=XFCE; +X-XFCE-MimeType=x-scheme-handler/http;x-scheme-handler/https; +X-AppStream-Ignore=True +Name=Web Browser +Name[de]=Internetnavigator +Comment=Browse the web +Comment[de]=Das Internet durchsuchen +X-XFCE-Source=file:///usr/share/applications/xfce4-web-browser.desktop diff --git a/dot_config/xfce4/panel/launcher-20/executable_16637035444.desktop b/dot_config/xfce4/panel/launcher-20/executable_16637035444.desktop new file mode 100644 index 0000000..2b61317 --- /dev/null +++ b/dot_config/xfce4/panel/launcher-20/executable_16637035444.desktop @@ -0,0 +1,15 @@ +[Desktop Entry] +Version=1.0 +Exec=xfce4-appfinder +Icon=org.xfce.appfinder +StartupNotify=true +Terminal=false +Type=Application +Categories=Utility;X-XFCE; +Name=Application Finder +Name[de]=Anwendungsfinder +Comment=Find and launch applications installed on your system +Comment[de]=Im System installierte Anwendungen finden und starten +Keywords=program;applications;bookmarks; +Keywords[de]=Programm;Anwendungen;Lesezeichen; +X-XFCE-Source=file:///usr/share/applications/xfce4-appfinder.desktop diff --git a/dot_config/xfce4/terminal/executable_terminalrc b/dot_config/xfce4/terminal/executable_terminalrc new file mode 100644 index 0000000..ad70be7 --- /dev/null +++ b/dot_config/xfce4/terminal/executable_terminalrc @@ -0,0 +1,31 @@ +[Configuration] +MiscAlwaysShowTabs=FALSE +MiscBell=FALSE +MiscBellUrgent=FALSE +MiscBordersDefault=TRUE +MiscCursorBlinks=FALSE +MiscCursorShape=TERMINAL_CURSOR_SHAPE_BLOCK +MiscDefaultGeometry=80x24 +MiscInheritGeometry=FALSE +MiscMenubarDefault=TRUE +MiscMouseAutohide=FALSE +MiscMouseWheelZoom=TRUE +MiscToolbarDefault=FALSE +MiscConfirmClose=TRUE +MiscCycleTabs=TRUE +MiscTabCloseButtons=TRUE +MiscTabCloseMiddleClick=TRUE +MiscTabPosition=GTK_POS_TOP +MiscHighlightUrls=TRUE +MiscMiddleClickOpensUri=FALSE +MiscCopyOnSelect=FALSE +MiscShowRelaunchDialog=TRUE +MiscRewrapOnResize=TRUE +MiscUseShiftArrowsToScroll=FALSE +MiscSlimTabs=FALSE +MiscNewTabAdjacent=FALSE +MiscSearchDialogOpacity=100 +MiscShowUnsafePasteDialog=TRUE +MiscRightClickAction=TERMINAL_RIGHT_CLICK_ACTION_CONTEXT_MENU +ScrollingUnlimited=TRUE + diff --git a/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_displays.xml b/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_displays.xml new file mode 100644 index 0000000..0dc41fc --- /dev/null +++ b/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_displays.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_keyboards.xml b/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_keyboards.xml new file mode 100644 index 0000000..9ddc443 --- /dev/null +++ b/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_keyboards.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_ristretto.xml b/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_ristretto.xml new file mode 100644 index 0000000..781e4e7 --- /dev/null +++ b/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_ristretto.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_thunar.xml b/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_thunar.xml new file mode 100644 index 0000000..1537543 --- /dev/null +++ b/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_thunar.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xfce4-desktop.xml b/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xfce4-desktop.xml new file mode 100644 index 0000000..88d94a7 --- /dev/null +++ b/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xfce4-desktop.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xfce4-keyboard-shortcuts.xml b/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xfce4-keyboard-shortcuts.xml new file mode 100644 index 0000000..8641efc --- /dev/null +++ b/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xfce4-keyboard-shortcuts.xml @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xfce4-panel.xml b/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xfce4-panel.xml new file mode 100644 index 0000000..839867c --- /dev/null +++ b/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xfce4-panel.xml @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xfce4-power-manager.xml b/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xfce4-power-manager.xml new file mode 100644 index 0000000..e32cef6 --- /dev/null +++ b/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xfce4-power-manager.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xfce4-screensaver.xml b/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xfce4-screensaver.xml new file mode 100644 index 0000000..7303b86 --- /dev/null +++ b/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xfce4-screensaver.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xfce4-session.xml b/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xfce4-session.xml new file mode 100644 index 0000000..a15676f --- /dev/null +++ b/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xfce4-session.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xfce4-settings-editor.xml b/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xfce4-settings-editor.xml new file mode 100644 index 0000000..90a25ef --- /dev/null +++ b/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xfce4-settings-editor.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xfce4-settings-manager.xml b/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xfce4-settings-manager.xml new file mode 100644 index 0000000..98a1359 --- /dev/null +++ b/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xfce4-settings-manager.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xfce4-taskmanager.xml b/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xfce4-taskmanager.xml new file mode 100644 index 0000000..3a9adb4 --- /dev/null +++ b/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xfce4-taskmanager.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xfwm4.xml b/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xfwm4.xml new file mode 100644 index 0000000..7c8882a --- /dev/null +++ b/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xfwm4.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xsettings.xml b/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xsettings.xml new file mode 100644 index 0000000..9ea2e0f --- /dev/null +++ b/dot_config/xfce4/xfconf/xfce-perchannel-xml/executable_xsettings.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dot_config/xfce4/xfwm4/.keep b/dot_config/xfce4/xfwm4/.keep new file mode 100644 index 0000000..e69de29 diff --git a/dot_config/xournalpp/autosave/.keep b/dot_config/xournalpp/autosave/.keep new file mode 100644 index 0000000..e69de29 diff --git a/dot_config/xournalpp/executable_colornames.ini b/dot_config/xournalpp/executable_colornames.ini new file mode 100644 index 0000000..d2b8f82 --- /dev/null +++ b/dot_config/xournalpp/executable_colornames.ini @@ -0,0 +1,2 @@ +[info] +about=Xournalpp custom color names diff --git a/dot_config/xournalpp/executable_settings.xml b/dot_config/xournalpp/executable_settings.xml new file mode 100644 index 0000000..16fc08b --- /dev/null +++ b/dot_config/xournalpp/executable_settings.xml @@ -0,0 +1,234 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dot_gtkrc-2.0 b/dot_gtkrc-2.0 new file mode 100644 index 0000000..e65fbf9 --- /dev/null +++ b/dot_gtkrc-2.0 @@ -0,0 +1,18 @@ +# DO NOT EDIT! This file will be overwritten by LXAppearance. +# Any customization should be done in ~/.gtkrc-2.0.mine instead. + +include "/home/simono41/.gtkrc-2.0.mine" +gtk-theme-name="Arc-Dark" +gtk-icon-theme-name="Arc" +gtk-font-name="Cantarell 11" +gtk-cursor-theme-name="capitaine-cursors" +gtk-cursor-theme-size=24 +gtk-toolbar-style=GTK_TOOLBAR_BOTH_HORIZ +gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR +gtk-button-images=1 +gtk-menu-images=1 +gtk-enable-event-sounds=1 +gtk-enable-input-feedback-sounds=1 +gtk-xft-antialias=1 +gtk-xft-hinting=1 +gtk-xft-hintstyle="hintmedium" diff --git a/dot_oh-my-zsh/CODE_OF_CONDUCT.md b/dot_oh-my-zsh/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..20ad1cc --- /dev/null +++ b/dot_oh-my-zsh/CODE_OF_CONDUCT.md @@ -0,0 +1,76 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, sex characteristics, gender identity and expression, +level of experience, education, socio-economic status, nationality, personal +appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or + advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies within all project spaces, and it also applies when +an individual is representing the project or its community in public spaces. +Examples of representing a project or community include using an official +project e-mail address, posting via an official social media account, or acting +as an appointed representative at an online or offline event. Representation of +a project may be further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at ohmyzsh@planetargon.com. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see +https://www.contributor-covenant.org/faq diff --git a/dot_oh-my-zsh/CONTRIBUTING.md b/dot_oh-my-zsh/CONTRIBUTING.md new file mode 100644 index 0000000..6c8b844 --- /dev/null +++ b/dot_oh-my-zsh/CONTRIBUTING.md @@ -0,0 +1,245 @@ +# CONTRIBUTING GUIDELINES + +Oh-My-Zsh is a community-driven project. Contribution is welcome, encouraged, and appreciated. +It is also essential for the development of the project. + +First, please take a moment to review our [code of conduct](CODE_OF_CONDUCT.md). + +These guidelines are an attempt at better addressing the huge amount of pending +issues and pull requests. Please read them closely. + +Foremost, be so kind as to [search](#use-the-search-luke). This ensures any contribution +you would make is not already covered. + + + +- [Reporting Issues](#reporting-issues) + - [You have a problem](#you-have-a-problem) + - [You have a suggestion](#you-have-a-suggestion) +- [Submitting Pull Requests](#submitting-pull-requests) + - [Getting started](#getting-started) + - [You have a solution](#you-have-a-solution) + - [You have an addition](#you-have-an-addition) +- [Use the Search, Luke](#use-the-search-luke) +- [Commit Guidelines](#commit-guidelines) + - [Format](#format) + - [Style](#style) +- [Volunteer](#volunteer) + + + +## Reporting Issues + +### You have a problem + +Please be so kind as to [search](#use-the-search-luke) for any open issue already covering +your problem. + +If you find one, comment on it, so we know more people are experiencing it. + +If not, look at the [Troubleshooting](https://github.com/ohmyzsh/ohmyzsh/wiki/Troubleshooting) +page for instructions on how to gather data to better debug your problem. + +Then, you can go ahead and create an issue with as much detail as you can provide. +It should include the data gathered as indicated above, along with the following: + +1. How to reproduce the problem +2. What the correct behavior should be +3. What the actual behavior is + +Please copy to anyone relevant (e.g. plugin maintainers) by mentioning their GitHub handle +(starting with `@`) in your message. + +We will do our very best to help you. + +### You have a suggestion + +Please be so kind as to [search](#use-the-search-luke) for any open issue already covering +your suggestion. + +If you find one, comment on it, so we know more people are supporting it. + +If not, you can go ahead and create an issue. Please copy to anyone relevant (e.g. plugin +maintainers) by mentioning their GitHub handle (starting with `@`) in your message. + +## Submitting Pull Requests + +### Getting started + +You should be familiar with the basics of +[contributing on GitHub](https://help.github.com/articles/using-pull-requests) and have a fork +[properly set up](https://github.com/ohmyzsh/ohmyzsh/wiki/Contribution-Technical-Practices). + +You MUST always create PRs with _a dedicated branch_ based on the latest upstream tree. + +If you create your own PR, please make sure you do it right. Also be so kind as to reference +any issue that would be solved in the PR description body, +[for instance](https://help.github.com/articles/closing-issues-via-commit-messages/) +_"Fixes #XXXX"_ for issue number XXXX. + +### You have a solution + +Please be so kind as to [search](#use-the-search-luke) for any open issue already covering +your [problem](#you-have-a-problem), and any pending/merged/rejected PR covering your solution. + +If the solution is already reported, try it out and +1 the pull request if the +solution works ok. On the other hand, if you think your solution is better, post +it with reference to the other one so we can have both solutions to compare. + +If not, then go ahead and submit a PR. Please copy to anyone relevant (e.g. plugin +maintainers) by mentioning their GitHub handle (starting with `@`) in your message. + +### You have an addition + +Please [do not](https://github.com/ohmyzsh/ohmyzsh/wiki/Themes#dont-send-us-your-theme-for-now) +send themes for now. + +Please be so kind as to [search](#use-the-search-luke) for any pending, merged or rejected Pull Requests +covering or related to what you want to add. + +If you find one, try it out and work with the author on a common solution. + +If not, then go ahead and submit a PR. Please copy to anyone relevant (e.g. plugin +maintainers) by mentioning their GitHub handle (starting with `@`) in your message. + +For any extensive change, such as a new plugin, you will have to find testers to +1 your PR. + +### New plugin aliases + +We acknowledge that aliases are a core part of Oh My Zsh. There are plugins that have +100 aliases! + +This has become an issue for two opposing reasons: + +- Some users want to have their personal aliases in Oh My Zsh. +- Some users don't want any aliases at all and feel that there are too many. + +Because of this, from now on, we require that new aliases follow these conditions: + +1. They will be used by many people, not just a few. +2. The aliases will be used many times and for common tasks. +3. Prefer one generic alias over many specific ones. +4. When justifying the need for an alias, talk about workflows where you'll use it, + preferably in combination with other aliases. +5. If a command with the same name exists, look for a different alias name. + +This list is not exhaustive! Please remember that your alias will be in the machines of many people, +so it should be justified why they should have it. + +---- + +## Use the Search, Luke + +_May the Force (of past experiences) be with you_ + +GitHub offers [many search features](https://help.github.com/articles/searching-github/) +to help you check whether a similar contribution to yours already exists. Please search +before making any contribution, it avoids duplicates and eases maintenance. Trust me, +that works 90% of the time. + +You can also take a look at the [FAQ](https://github.com/ohmyzsh/ohmyzsh/wiki/FAQ) +to be sure your contribution has not already come up. + +If all fails, your thing has probably not been reported yet, so you can go ahead +and [create an issue](#reporting-issues) or [submit a PR](#submitting-pull-requests). + +---- + +## Commit Guidelines + +Oh My Zsh uses the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) +specification. The automatic changelog tool uses these to automatically generate +a changelog based on the commit messages. Here's a guide to writing a commit message +to allow this: + +### Format + +``` +type(scope)!: subject +``` + +- `type`: the type of the commit is one of the following: + + - `feat`: new features. + - `fix`: bug fixes. + - `docs`: documentation changes. + - `refactor`: refactor of a particular code section without introducing + new features or bug fixes. + - `style`: code style improvements. + - `perf`: performance improvements. + - `test`: changes to the test suite. + - `ci`: changes to the CI system. + - `build`: changes to the build system (we don't yet have one so this shouldn't apply). + - `chore`: for other changes that don't match previous types. This doesn't appear + in the changelog. + +- `scope`: section of the codebase that the commit makes changes to. If it makes changes to + many sections, or if no section in particular is modified, leave blank without the parentheses. + Examples: + + - Commit that changes the `git` plugin: + ``` + feat(git): add alias for `git commit` + ``` + + - Commit that changes many plugins: + ``` + style: fix inline declaration of arrays + ``` + + For changes to plugins or themes, the scope should be the plugin or theme name: + + - ✅ `fix(agnoster): commit subject` + - ❌ `fix(theme/agnoster): commit subject` + +- `!`: this goes after the `scope` (or the `type` if scope is empty), to indicate that the commit + introduces breaking changes. + + Optionally, you can specify a message that the changelog tool will display to the user to indicate + what's changed and what they can do to deal with it. You can use multiple lines to type this message; + the changelog parser will keep reading until the end of the commit message or until it finds an empty + line. + + Example (made up): + + ``` + style(agnoster)!: change dirty git repo glyph + + BREAKING CHANGE: the glyph to indicate when a git repository is dirty has + changed from a Powerline character to a standard UTF-8 emoji. You can + change it back by setting `ZSH_THEME_DIRTY_GLYPH`. + + Fixes #420 + + Co-authored-by: Username + ``` + +- `subject`: a brief description of the changes. This will be displayed in the changelog. If you need + to specify other details, you can use the commit body, but it won't be visible. + + Formatting tricks: the commit subject may contain: + + - Links to related issues or PRs by writing `#issue`. This will be highlighted by the changelog tool: + ``` + feat(archlinux): add support for aura AUR helper (#9467) + ``` + + - Formatted inline code by using backticks: the text between backticks will also be highlighted by + the changelog tool: + ``` + feat(shell-proxy): enable unexported `DEFAULT_PROXY` setting (#9774) + ``` + +### Style + +Try to keep the first commit line short. It's harder to do using this commit style but try to be +concise, and if you need more space, you can use the commit body. Try to make sure that the commit +subject is clear and precise enough that users will know what changed by just looking at the changelog. + +---- + +## Volunteer + +Very nice!! :) + +Please have a look at the [Volunteer](https://github.com/ohmyzsh/ohmyzsh/wiki/Volunteers) +page for instructions on where to start and more. diff --git a/dot_oh-my-zsh/LICENSE.txt b/dot_oh-my-zsh/LICENSE.txt new file mode 100644 index 0000000..2d7ca6f --- /dev/null +++ b/dot_oh-my-zsh/LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2009-2022 Robby Russell and contributors (https://github.com/ohmyzsh/ohmyzsh/contributors) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/dot_oh-my-zsh/README.md b/dot_oh-my-zsh/README.md new file mode 100644 index 0000000..1e4b7ff --- /dev/null +++ b/dot_oh-my-zsh/README.md @@ -0,0 +1,367 @@ +

    Oh My Zsh

    + +Oh My Zsh is an open source, community-driven framework for managing your [zsh](https://www.zsh.org/) configuration. + +Sounds boring. Let's try again. + +**Oh My Zsh will not make you a 10x developer...but you may feel like one.** + +Once installed, your terminal shell will become the talk of the town _or your money back!_ With each keystroke in your command prompt, you'll take advantage of the hundreds of powerful plugins and beautiful themes. Strangers will come up to you in cafés and ask you, _"that is amazing! are you some sort of genius?"_ + +Finally, you'll begin to get the sort of attention that you have always felt you deserved. ...or maybe you'll use the time that you're saving to start flossing more often. 😬 + +To learn more, visit [ohmyz.sh](https://ohmyz.sh), follow [@ohmyzsh](https://twitter.com/ohmyzsh) on Twitter, and join us on [Discord](https://discord.gg/ohmyzsh). + +[![CI](https://github.com/ohmyzsh/ohmyzsh/workflows/CI/badge.svg)](https://github.com/ohmyzsh/ohmyzsh/actions?query=workflow%3ACI) +[![Follow @ohmyzsh](https://img.shields.io/twitter/follow/ohmyzsh?label=Follow+@ohmyzsh&style=flat)](https://twitter.com/intent/follow?screen_name=ohmyzsh) +[![Discord server](https://img.shields.io/discord/642496866407284746)](https://discord.gg/ohmyzsh) +[![Gitpod ready](https://img.shields.io/badge/Gitpod-ready-blue?logo=gitpod)](https://gitpod.io/#https://github.com/ohmyzsh/ohmyzsh) +[![huntr.dev](https://cdn.huntr.dev/huntr_security_badge_mono.svg)](https://huntr.dev/bounties/disclose/?utm_campaign=ohmyzsh%2Fohmyzsh&utm_medium=social&utm_source=github&target=https%3A%2F%2Fgithub.com%2Fohmyzsh%2Fohmyzsh) + +
    +Table of Contents + +- [Getting Started](#getting-started) + - [Prerequisites](#prerequisites) + - [Basic Installation](#basic-installation) + - [Manual inspection](#manual-inspection) +- [Using Oh My Zsh](#using-oh-my-zsh) + - [Plugins](#plugins) + - [Enabling Plugins](#enabling-plugins) + - [Using Plugins](#using-plugins) + - [Themes](#themes) + - [Selecting a Theme](#selecting-a-theme) + - [FAQ](#faq) +- [Advanced Topics](#advanced-topics) + - [Advanced Installation](#advanced-installation) + - [Custom Directory](#custom-directory) + - [Unattended install](#unattended-install) + - [Installing from a forked repository](#installing-from-a-forked-repository) + - [Manual Installation](#manual-installation) + - [Installation Problems](#installation-problems) + - [Custom Plugins and Themes](#custom-plugins-and-themes) +- [Getting Updates](#getting-updates) + - [Manual Updates](#manual-updates) +- [Uninstalling Oh My Zsh](#uninstalling-oh-my-zsh) +- [How do I contribute to Oh My Zsh?](#how-do-i-contribute-to-oh-my-zsh) + - [Do NOT send us themes](#do-not-send-us-themes) +- [Contributors](#contributors) +- [Follow Us](#follow-us) +- [Merchandise](#merchandise) +- [License](#license) +- [About Planet Argon](#about-planet-argon) + +
    + +## Getting Started + +### Prerequisites + +- A Unix-like operating system: macOS, Linux, BSD. On Windows: WSL2 is preferred, but cygwin or msys also mostly work. +- [Zsh](https://www.zsh.org) should be installed (v4.3.9 or more recent is fine but we prefer 5.0.8 and newer). If not pre-installed (run `zsh --version` to confirm), check the following wiki instructions here: [Installing ZSH](https://github.com/ohmyzsh/ohmyzsh/wiki/Installing-ZSH) +- `curl` or `wget` should be installed +- `git` should be installed (recommended v2.4.11 or higher) + +### Basic Installation + +Oh My Zsh is installed by running one of the following commands in your terminal. You can install this via the command-line with either `curl`, `wget` or another similar tool. + +| Method | Command | +| :-------- | :------------------------------------------------------------------------------------------------ | +| **curl** | `sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"` | +| **wget** | `sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"` | +| **fetch** | `sh -c "$(fetch -o - https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"` | + +_Note that any previous `.zshrc` will be renamed to `.zshrc.pre-oh-my-zsh`. After installation, you can move the configuration you want to preserve into the new `.zshrc`._ + +#### Manual inspection + +It's a good idea to inspect the install script from projects you don't yet know. You can do +that by downloading the install script first, looking through it so everything looks normal, +then running it: + +```sh +wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh +sh install.sh +``` + +## Using Oh My Zsh + +### Plugins + +Oh My Zsh comes with a shitload of plugins for you to take advantage of. You can take a look in the [plugins](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins) directory and/or the [wiki](https://github.com/ohmyzsh/ohmyzsh/wiki/Plugins) to see what's currently available. + +#### Enabling Plugins + +Once you spot a plugin (or several) that you'd like to use with Oh My Zsh, you'll need to enable them in the `.zshrc` file. You'll find the zshrc file in your `$HOME` directory. Open it with your favorite text editor and you'll see a spot to list all the plugins you want to load. + +```sh +vi ~/.zshrc +``` + +For example, this might begin to look like this: + +```sh +plugins=( + git + bundler + dotenv + macos + rake + rbenv + ruby +) +``` + +_Note that the plugins are separated by whitespace (spaces, tabs, new lines...). **Do not** use commas between them or it will break._ + +#### Using Plugins + +Each built-in plugin includes a **README**, documenting it. This README should show the aliases (if the plugin adds any) and extra goodies that are included in that particular plugin. + +### Themes + +We'll admit it. Early in the Oh My Zsh world, we may have gotten a bit too theme happy. We have over one hundred and fifty themes now bundled. Most of them have [screenshots](https://github.com/ohmyzsh/ohmyzsh/wiki/Themes) on the wiki (We are working on updating this!). Check them out! + +#### Selecting a Theme + +_Robby's theme is the default one. It's not the fanciest one. It's not the simplest one. It's just the right one (for him)._ + +Once you find a theme that you'd like to use, you will need to edit the `~/.zshrc` file. You'll see an environment variable (all caps) in there that looks like: + +```sh +ZSH_THEME="robbyrussell" +``` + +To use a different theme, simply change the value to match the name of your desired theme. For example: + +```sh +ZSH_THEME="agnoster" # (this is one of the fancy ones) +# see https://github.com/ohmyzsh/ohmyzsh/wiki/Themes#agnoster +``` + +_Note: many themes require installing a [Powerline Font](https://github.com/powerline/fonts) or a [Nerd Font](https://github.com/ryanoasis/nerd-fonts) in order to render properly. Without them, these themes will render [weird prompt symbols](https://github.com/ohmyzsh/ohmyzsh/wiki/FAQ#i-have-a-weird-character-in-my-prompt)_ + +Open up a new terminal window and your prompt should look something like this: + +![Agnoster theme](https://cloud.githubusercontent.com/assets/2618447/6316862/70f58fb6-ba03-11e4-82c9-c083bf9a6574.png) + +In case you did not find a suitable theme for your needs, please have a look at the wiki for [more of them](https://github.com/ohmyzsh/ohmyzsh/wiki/External-themes). + +If you're feeling feisty, you can let the computer select one randomly for you each time you open a new terminal window. + +```sh +ZSH_THEME="random" # (...please let it be pie... please be some pie..) +``` + +And if you want to pick random theme from a list of your favorite themes: + +```sh +ZSH_THEME_RANDOM_CANDIDATES=( + "robbyrussell" + "agnoster" +) +``` + +If you only know which themes you don't like, you can add them similarly to an ignored list: + +```sh +ZSH_THEME_RANDOM_IGNORED=(pygmalion tjkirch_mod) +``` + +### FAQ + +If you have some more questions or issues, you might find a solution in our [FAQ](https://github.com/ohmyzsh/ohmyzsh/wiki/FAQ). + +## Advanced Topics + +If you're the type that likes to get their hands dirty, these sections might resonate. + +### Advanced Installation + +Some users may want to manually install Oh My Zsh, or change the default path or other settings that +the installer accepts (these settings are also documented at the top of the install script). + +#### Custom Directory + +The default location is `~/.oh-my-zsh` (hidden in your home directory, you can access it with `cd ~/.oh-my-zsh`) + +If you'd like to change the install directory with the `ZSH` environment variable, either by running +`export ZSH=/your/path` before installing, or by setting it before the end of the install pipeline +like this: + +```sh +ZSH="$HOME/.dotfiles/oh-my-zsh" sh install.sh +``` + +#### Unattended install + +If you're running the Oh My Zsh install script as part of an automated install, you can pass the `--unattended` +flag to the `install.sh` script. This will have the effect of not trying to change +the default shell, and it also won't run `zsh` when the installation has finished. + +```sh +sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended +``` + +#### Installing from a forked repository + +The install script also accepts these variables to allow installation of a different repository: + +- `REPO` (default: `ohmyzsh/ohmyzsh`): this takes the form of `owner/repository`. If you set + this variable, the installer will look for a repository at `https://github.com/{owner}/{repository}`. + +- `REMOTE` (default: `https://github.com/${REPO}.git`): this is the full URL of the git repository + clone. You can use this setting if you want to install from a fork that is not on GitHub (GitLab, + Bitbucket...) or if you want to clone with SSH instead of HTTPS (`git@github.com:user/project.git`). + + _NOTE: it's incompatible with setting the `REPO` variable. This setting will take precedence._ + +- `BRANCH` (default: `master`): you can use this setting if you want to change the default branch to be + checked out when cloning the repository. This might be useful for testing a Pull Request, or if you + want to use a branch other than `master`. + +For example: + +```sh +REPO=apjanke/oh-my-zsh BRANCH=edge sh install.sh +``` + +#### Manual Installation + +##### 1. Clone the repository + +```sh +git clone https://github.com/ohmyzsh/ohmyzsh.git ~/.oh-my-zsh +``` + +##### 2. _Optionally_, backup your existing `~/.zshrc` file + +```sh +cp ~/.zshrc ~/.zshrc.orig +``` + +##### 3. Create a new zsh configuration file + +You can create a new zsh config file by copying the template that we have included for you. + +```sh +cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc +``` + +##### 4. Change your default shell + +```sh +chsh -s $(which zsh) +``` + +You must log out from your user session and log back in to see this change. + +##### 5. Initialize your new zsh configuration + +Once you open up a new terminal window, it should load zsh with Oh My Zsh's configuration. + +### Installation Problems + +If you have any hiccups installing, here are a few common fixes. + +- You _might_ need to modify your `PATH` in `~/.zshrc` if you're not able to find some commands after switching to `oh-my-zsh`. +- If you installed manually or changed the install location, check the `ZSH` environment variable in `~/.zshrc`. + +### Custom Plugins and Themes + +If you want to override any of the default behaviors, just add a new file (ending in `.zsh`) in the `custom/` directory. + +If you have many functions that go well together, you can put them as a `XYZ.plugin.zsh` file in the `custom/plugins/` directory and then enable this plugin. + +If you would like to override the functionality of a plugin distributed with Oh My Zsh, create a plugin of the same name in the `custom/plugins/` directory and it will be loaded instead of the one in `plugins/`. + +## Getting Updates + +By default, you will be prompted to check for updates every 2 weeks. You can choose other update modes by adding a line to your `~/.zshrc` file, **before Oh My Zsh is loaded**: + +1. Automatic update without confirmation prompt: + + ```sh + zstyle ':omz:update' mode auto + ``` + +2. Just offer a reminder every few days, if there are updates available: + + ```sh + zstyle ':omz:update' mode reminder + ``` + +3. To disable automatic updates entirely: + + ```sh + zstyle ':omz:update' mode disabled + ``` + +NOTE: you can control how often Oh My Zsh checks for updates with the following setting: + +```sh +# This will check for updates every 7 days +zstyle ':omz:update' frequency 7 +# This will check for updates every time you open the terminal (not recommended) +zstyle ':omz:update' frequency 0 +``` + +### Manual Updates + +If you'd like to update at any point in time (maybe someone just released a new plugin and you don't want to wait a week?) you just need to run: + +```sh +omz update +``` + +Magic! 🎉 + +## Uninstalling Oh My Zsh + +Oh My Zsh isn't for everyone. We'll miss you, but we want to make this an easy breakup. + +If you want to uninstall `oh-my-zsh`, just run `uninstall_oh_my_zsh` from the command-line. It will remove itself and revert your previous `bash` or `zsh` configuration. + +## How do I contribute to Oh My Zsh? + +Before you participate in our delightful community, please read the [code of conduct](CODE_OF_CONDUCT.md). + +I'm far from being a [Zsh](https://www.zsh.org/) expert and suspect there are many ways to improve – if you have ideas on how to make the configuration easier to maintain (and faster), don't hesitate to fork and send pull requests! + +We also need people to test out pull requests. So take a look through [the open issues](https://github.com/ohmyzsh/ohmyzsh/issues) and help where you can. + +See [Contributing](CONTRIBUTING.md) for more details. + +### Do NOT send us themes + +We have (more than) enough themes for the time being. Please add your theme to the [external themes](https://github.com/ohmyzsh/ohmyzsh/wiki/External-themes) wiki page. + +## Contributors + +Oh My Zsh has a vibrant community of happy users and delightful contributors. Without all the time and help from our contributors, it wouldn't be so awesome. + +Thank you so much! + +## Follow Us + +We're on social media: + +- [@ohmyzsh](https://twitter.com/ohmyzsh) on Twitter. You should follow it. +- [Facebook](https://www.facebook.com/Oh-My-Zsh-296616263819290/) poke us. +- [Instagram](https://www.instagram.com/_ohmyzsh/) tag us in your post showing Oh My Zsh! +- [Discord](https://discord.gg/ohmyzsh) to chat with us! + +## Merchandise + +We have [stickers, shirts, and coffee mugs available](https://shop.planetargon.com/collections/oh-my-zsh?utm_source=github) for you to show off your love of Oh My Zsh. Again, you will become the talk of the town! + +## License + +Oh My Zsh is released under the [MIT license](LICENSE.txt). + +## About Planet Argon + +![Planet Argon](https://pa-github-assets.s3.amazonaws.com/PARGON_logo_digital_COL-small.jpg) + +Oh My Zsh was started by the team at [Planet Argon](https://www.planetargon.com/?utm_source=github), a [Ruby on Rails development agency](https://www.planetargon.com/skills/ruby-on-rails-development?utm_source=github). Check out our [other open source projects](https://www.planetargon.com/open-source?utm_source=github). diff --git a/dot_oh-my-zsh/SECURITY.md b/dot_oh-my-zsh/SECURITY.md new file mode 100644 index 0000000..7e5c8ee --- /dev/null +++ b/dot_oh-my-zsh/SECURITY.md @@ -0,0 +1,24 @@ +# Security Policy + +## Supported Versions + +At the moment Oh My Zsh only considers the very latest commit to be supported. +We combine that with our fast response to incidents and the automated updates +to minimize the time between vulnerability publication and patch release. + +| Version | Supported | +|:-------------- |:------------------ | +| master | :white_check_mark: | +| other commits | :x: | + +In the near future we will introduce versioning, so expect this section to change. + +## Reporting a Vulnerability + +**Do not submit an issue or pull request**: this might reveal the vulnerability. + +Instead, you should email the maintainers directly at: [**security@ohmyz.sh**](mailto:security@ohmyz.sh). + +We will deal with the vulnerability privately and submit a patch as soon as possible. + +You can also submit your vulnerability report to [huntr.dev](https://huntr.dev/bounties/disclose/?utm_campaign=ohmyzsh%2Fohmyzsh&utm_medium=social&utm_source=github&target=https%3A%2F%2Fgithub.com%2Fohmyzsh%2Fohmyzsh) and see if you can get a bounty reward. diff --git a/dot_oh-my-zsh/cache/completions/.keep b/dot_oh-my-zsh/cache/completions/.keep new file mode 100644 index 0000000..e69de29 diff --git a/dot_oh-my-zsh/cache/dot_zsh-update b/dot_oh-my-zsh/cache/dot_zsh-update new file mode 100644 index 0000000..6d3dea5 --- /dev/null +++ b/dot_oh-my-zsh/cache/dot_zsh-update @@ -0,0 +1 @@ +LAST_EPOCH=19381 diff --git a/dot_oh-my-zsh/cache/empty_dot_gitkeep b/dot_oh-my-zsh/cache/empty_dot_gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/dot_oh-my-zsh/cache/grep-alias b/dot_oh-my-zsh/cache/grep-alias new file mode 100644 index 0000000..d543d0b --- /dev/null +++ b/dot_oh-my-zsh/cache/grep-alias @@ -0,0 +1,3 @@ +alias grep='grep --color=auto --exclude-dir={.bzr,CVS,.git,.hg,.svn,.idea,.tox}' +alias egrep='grep -E --color=auto --exclude-dir={.bzr,CVS,.git,.hg,.svn,.idea,.tox}' +alias fgrep='grep -F --color=auto --exclude-dir={.bzr,CVS,.git,.hg,.svn,.idea,.tox}' diff --git a/dot_oh-my-zsh/custom/example.zsh b/dot_oh-my-zsh/custom/example.zsh new file mode 100644 index 0000000..c505a96 --- /dev/null +++ b/dot_oh-my-zsh/custom/example.zsh @@ -0,0 +1,10 @@ +# You can put files here to add functionality separated per file, which +# will be ignored by git. +# Files on the custom/ directory will be automatically loaded by the init +# script, in alphabetical order. + +# For example: add yourself some shortcuts to projects you often work on. +# +# brainstormr=~/Projects/development/planetargon/brainstormr +# cd $brainstormr +# diff --git a/dot_oh-my-zsh/custom/plugins/example/example.plugin.zsh b/dot_oh-my-zsh/custom/plugins/example/example.plugin.zsh new file mode 100644 index 0000000..406f274 --- /dev/null +++ b/dot_oh-my-zsh/custom/plugins/example/example.plugin.zsh @@ -0,0 +1,2 @@ +# Add your own custom plugins in the custom/plugins directory. Plugins placed +# here will override ones with the same name in the main plugins directory. diff --git a/dot_oh-my-zsh/custom/themes/example.zsh-theme b/dot_oh-my-zsh/custom/themes/example.zsh-theme new file mode 100644 index 0000000..ef8f1c6 --- /dev/null +++ b/dot_oh-my-zsh/custom/themes/example.zsh-theme @@ -0,0 +1,4 @@ +# Put your custom themes in this folder. +# Example: + +PROMPT="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%~ %{$reset_color%}%% " diff --git a/dot_oh-my-zsh/dot_editorconfig b/dot_oh-my-zsh/dot_editorconfig new file mode 100644 index 0000000..b5321de --- /dev/null +++ b/dot_oh-my-zsh/dot_editorconfig @@ -0,0 +1,8 @@ +root = true + +[*] +end_of_line = lf +insert_final_newline = true +charset = utf-8 +indent_size = 2 +indent_style = space diff --git a/dot_oh-my-zsh/dot_git/FETCH_HEAD b/dot_oh-my-zsh/dot_git/FETCH_HEAD new file mode 100644 index 0000000..8cffae3 --- /dev/null +++ b/dot_oh-my-zsh/dot_git/FETCH_HEAD @@ -0,0 +1 @@ +7de55844b26394688221b1cd12ef4053b3c7f6c7 not-for-merge branch 'master' of https://github.com/ohmyzsh/ohmyzsh diff --git a/dot_oh-my-zsh/dot_git/HEAD b/dot_oh-my-zsh/dot_git/HEAD new file mode 100644 index 0000000..cb089cd --- /dev/null +++ b/dot_oh-my-zsh/dot_git/HEAD @@ -0,0 +1 @@ +ref: refs/heads/master diff --git a/dot_oh-my-zsh/dot_git/branches/.keep b/dot_oh-my-zsh/dot_git/branches/.keep new file mode 100644 index 0000000..e69de29 diff --git a/dot_oh-my-zsh/dot_git/config b/dot_oh-my-zsh/dot_git/config new file mode 100644 index 0000000..0728dc4 --- /dev/null +++ b/dot_oh-my-zsh/dot_git/config @@ -0,0 +1,22 @@ +[core] + repositoryformatversion = 0 + filemode = true + bare = false + logallrefupdates = true + eol = lf + autocrlf = false +[fsck] + zeroPaddedFilemode = ignore +[fetch "fsck"] + zeroPaddedFilemode = ignore +[receive "fsck"] + zeroPaddedFilemode = ignore +[oh-my-zsh] + remote = origin + branch = master +[remote "origin"] + url = https://github.com/ohmyzsh/ohmyzsh.git + fetch = +refs/heads/*:refs/remotes/origin/* +[branch "master"] + remote = origin + merge = refs/heads/master diff --git a/dot_oh-my-zsh/dot_git/description b/dot_oh-my-zsh/dot_git/description new file mode 100644 index 0000000..498b267 --- /dev/null +++ b/dot_oh-my-zsh/dot_git/description @@ -0,0 +1 @@ +Unnamed repository; edit this file 'description' to name the repository. diff --git a/dot_oh-my-zsh/dot_git/hooks/executable_applypatch-msg.sample b/dot_oh-my-zsh/dot_git/hooks/executable_applypatch-msg.sample new file mode 100644 index 0000000..a5d7b84 --- /dev/null +++ b/dot_oh-my-zsh/dot_git/hooks/executable_applypatch-msg.sample @@ -0,0 +1,15 @@ +#!/bin/sh +# +# An example hook script to check the commit log message taken by +# applypatch from an e-mail message. +# +# The hook should exit with non-zero status after issuing an +# appropriate message if it wants to stop the commit. The hook is +# allowed to edit the commit message file. +# +# To enable this hook, rename this file to "applypatch-msg". + +. git-sh-setup +commitmsg="$(git rev-parse --git-path hooks/commit-msg)" +test -x "$commitmsg" && exec "$commitmsg" ${1+"$@"} +: diff --git a/dot_oh-my-zsh/dot_git/hooks/executable_commit-msg.sample b/dot_oh-my-zsh/dot_git/hooks/executable_commit-msg.sample new file mode 100644 index 0000000..b58d118 --- /dev/null +++ b/dot_oh-my-zsh/dot_git/hooks/executable_commit-msg.sample @@ -0,0 +1,24 @@ +#!/bin/sh +# +# An example hook script to check the commit log message. +# Called by "git commit" with one argument, the name of the file +# that has the commit message. The hook should exit with non-zero +# status after issuing an appropriate message if it wants to stop the +# commit. The hook is allowed to edit the commit message file. +# +# To enable this hook, rename this file to "commit-msg". + +# Uncomment the below to add a Signed-off-by line to the message. +# Doing this in a hook is a bad idea in general, but the prepare-commit-msg +# hook is more suited to it. +# +# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') +# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" + +# This example catches duplicate Signed-off-by lines. + +test "" = "$(grep '^Signed-off-by: ' "$1" | + sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || { + echo >&2 Duplicate Signed-off-by lines. + exit 1 +} diff --git a/dot_oh-my-zsh/dot_git/hooks/executable_fsmonitor-watchman.sample b/dot_oh-my-zsh/dot_git/hooks/executable_fsmonitor-watchman.sample new file mode 100644 index 0000000..23e856f --- /dev/null +++ b/dot_oh-my-zsh/dot_git/hooks/executable_fsmonitor-watchman.sample @@ -0,0 +1,174 @@ +#!/usr/bin/perl + +use strict; +use warnings; +use IPC::Open2; + +# An example hook script to integrate Watchman +# (https://facebook.github.io/watchman/) with git to speed up detecting +# new and modified files. +# +# The hook is passed a version (currently 2) and last update token +# formatted as a string and outputs to stdout a new update token and +# all files that have been modified since the update token. Paths must +# be relative to the root of the working tree and separated by a single NUL. +# +# To enable this hook, rename this file to "query-watchman" and set +# 'git config core.fsmonitor .git/hooks/query-watchman' +# +my ($version, $last_update_token) = @ARGV; + +# Uncomment for debugging +# print STDERR "$0 $version $last_update_token\n"; + +# Check the hook interface version +if ($version ne 2) { + die "Unsupported query-fsmonitor hook version '$version'.\n" . + "Falling back to scanning...\n"; +} + +my $git_work_tree = get_working_dir(); + +my $retry = 1; + +my $json_pkg; +eval { + require JSON::XS; + $json_pkg = "JSON::XS"; + 1; +} or do { + require JSON::PP; + $json_pkg = "JSON::PP"; +}; + +launch_watchman(); + +sub launch_watchman { + my $o = watchman_query(); + if (is_work_tree_watched($o)) { + output_result($o->{clock}, @{$o->{files}}); + } +} + +sub output_result { + my ($clockid, @files) = @_; + + # Uncomment for debugging watchman output + # open (my $fh, ">", ".git/watchman-output.out"); + # binmode $fh, ":utf8"; + # print $fh "$clockid\n@files\n"; + # close $fh; + + binmode STDOUT, ":utf8"; + print $clockid; + print "\0"; + local $, = "\0"; + print @files; +} + +sub watchman_clock { + my $response = qx/watchman clock "$git_work_tree"/; + die "Failed to get clock id on '$git_work_tree'.\n" . + "Falling back to scanning...\n" if $? != 0; + + return $json_pkg->new->utf8->decode($response); +} + +sub watchman_query { + my $pid = open2(\*CHLD_OUT, \*CHLD_IN, 'watchman -j --no-pretty') + or die "open2() failed: $!\n" . + "Falling back to scanning...\n"; + + # In the query expression below we're asking for names of files that + # changed since $last_update_token but not from the .git folder. + # + # To accomplish this, we're using the "since" generator to use the + # recency index to select candidate nodes and "fields" to limit the + # output to file names only. Then we're using the "expression" term to + # further constrain the results. + my $last_update_line = ""; + if (substr($last_update_token, 0, 1) eq "c") { + $last_update_token = "\"$last_update_token\""; + $last_update_line = qq[\n"since": $last_update_token,]; + } + my $query = <<" END"; + ["query", "$git_work_tree", {$last_update_line + "fields": ["name"], + "expression": ["not", ["dirname", ".git"]] + }] + END + + # Uncomment for debugging the watchman query + # open (my $fh, ">", ".git/watchman-query.json"); + # print $fh $query; + # close $fh; + + print CHLD_IN $query; + close CHLD_IN; + my $response = do {local $/; }; + + # Uncomment for debugging the watch response + # open ($fh, ">", ".git/watchman-response.json"); + # print $fh $response; + # close $fh; + + die "Watchman: command returned no output.\n" . + "Falling back to scanning...\n" if $response eq ""; + die "Watchman: command returned invalid output: $response\n" . + "Falling back to scanning...\n" unless $response =~ /^\{/; + + return $json_pkg->new->utf8->decode($response); +} + +sub is_work_tree_watched { + my ($output) = @_; + my $error = $output->{error}; + if ($retry > 0 and $error and $error =~ m/unable to resolve root .* directory (.*) is not watched/) { + $retry--; + my $response = qx/watchman watch "$git_work_tree"/; + die "Failed to make watchman watch '$git_work_tree'.\n" . + "Falling back to scanning...\n" if $? != 0; + $output = $json_pkg->new->utf8->decode($response); + $error = $output->{error}; + die "Watchman: $error.\n" . + "Falling back to scanning...\n" if $error; + + # Uncomment for debugging watchman output + # open (my $fh, ">", ".git/watchman-output.out"); + # close $fh; + + # Watchman will always return all files on the first query so + # return the fast "everything is dirty" flag to git and do the + # Watchman query just to get it over with now so we won't pay + # the cost in git to look up each individual file. + my $o = watchman_clock(); + $error = $output->{error}; + + die "Watchman: $error.\n" . + "Falling back to scanning...\n" if $error; + + output_result($o->{clock}, ("/")); + $last_update_token = $o->{clock}; + + eval { launch_watchman() }; + return 0; + } + + die "Watchman: $error.\n" . + "Falling back to scanning...\n" if $error; + + return 1; +} + +sub get_working_dir { + my $working_dir; + if ($^O =~ 'msys' || $^O =~ 'cygwin') { + $working_dir = Win32::GetCwd(); + $working_dir =~ tr/\\/\//; + } else { + require Cwd; + $working_dir = Cwd::cwd(); + } + + return $working_dir; +} diff --git a/dot_oh-my-zsh/dot_git/hooks/executable_post-update.sample b/dot_oh-my-zsh/dot_git/hooks/executable_post-update.sample new file mode 100644 index 0000000..ec17ec1 --- /dev/null +++ b/dot_oh-my-zsh/dot_git/hooks/executable_post-update.sample @@ -0,0 +1,8 @@ +#!/bin/sh +# +# An example hook script to prepare a packed repository for use over +# dumb transports. +# +# To enable this hook, rename this file to "post-update". + +exec git update-server-info diff --git a/dot_oh-my-zsh/dot_git/hooks/executable_pre-applypatch.sample b/dot_oh-my-zsh/dot_git/hooks/executable_pre-applypatch.sample new file mode 100644 index 0000000..4142082 --- /dev/null +++ b/dot_oh-my-zsh/dot_git/hooks/executable_pre-applypatch.sample @@ -0,0 +1,14 @@ +#!/bin/sh +# +# An example hook script to verify what is about to be committed +# by applypatch from an e-mail message. +# +# The hook should exit with non-zero status after issuing an +# appropriate message if it wants to stop the commit. +# +# To enable this hook, rename this file to "pre-applypatch". + +. git-sh-setup +precommit="$(git rev-parse --git-path hooks/pre-commit)" +test -x "$precommit" && exec "$precommit" ${1+"$@"} +: diff --git a/dot_oh-my-zsh/dot_git/hooks/executable_pre-commit.sample b/dot_oh-my-zsh/dot_git/hooks/executable_pre-commit.sample new file mode 100644 index 0000000..e144712 --- /dev/null +++ b/dot_oh-my-zsh/dot_git/hooks/executable_pre-commit.sample @@ -0,0 +1,49 @@ +#!/bin/sh +# +# An example hook script to verify what is about to be committed. +# Called by "git commit" with no arguments. The hook should +# exit with non-zero status after issuing an appropriate message if +# it wants to stop the commit. +# +# To enable this hook, rename this file to "pre-commit". + +if git rev-parse --verify HEAD >/dev/null 2>&1 +then + against=HEAD +else + # Initial commit: diff against an empty tree object + against=$(git hash-object -t tree /dev/null) +fi + +# If you want to allow non-ASCII filenames set this variable to true. +allownonascii=$(git config --type=bool hooks.allownonascii) + +# Redirect output to stderr. +exec 1>&2 + +# Cross platform projects tend to avoid non-ASCII filenames; prevent +# them from being added to the repository. We exploit the fact that the +# printable range starts at the space character and ends with tilde. +if [ "$allownonascii" != "true" ] && + # Note that the use of brackets around a tr range is ok here, (it's + # even required, for portability to Solaris 10's /usr/bin/tr), since + # the square bracket bytes happen to fall in the designated range. + test $(git diff --cached --name-only --diff-filter=A -z $against | + LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0 +then + cat <<\EOF +Error: Attempt to add a non-ASCII file name. + +This can cause problems if you want to work with people on other platforms. + +To be portable it is advisable to rename the file. + +If you know what you are doing you can disable this check using: + + git config hooks.allownonascii true +EOF + exit 1 +fi + +# If there are whitespace errors, print the offending file names and fail. +exec git diff-index --check --cached $against -- diff --git a/dot_oh-my-zsh/dot_git/hooks/executable_pre-merge-commit.sample b/dot_oh-my-zsh/dot_git/hooks/executable_pre-merge-commit.sample new file mode 100644 index 0000000..399eab1 --- /dev/null +++ b/dot_oh-my-zsh/dot_git/hooks/executable_pre-merge-commit.sample @@ -0,0 +1,13 @@ +#!/bin/sh +# +# An example hook script to verify what is about to be committed. +# Called by "git merge" with no arguments. The hook should +# exit with non-zero status after issuing an appropriate message to +# stderr if it wants to stop the merge commit. +# +# To enable this hook, rename this file to "pre-merge-commit". + +. git-sh-setup +test -x "$GIT_DIR/hooks/pre-commit" && + exec "$GIT_DIR/hooks/pre-commit" +: diff --git a/dot_oh-my-zsh/dot_git/hooks/executable_pre-push.sample b/dot_oh-my-zsh/dot_git/hooks/executable_pre-push.sample new file mode 100644 index 0000000..4ce688d --- /dev/null +++ b/dot_oh-my-zsh/dot_git/hooks/executable_pre-push.sample @@ -0,0 +1,53 @@ +#!/bin/sh + +# An example hook script to verify what is about to be pushed. Called by "git +# push" after it has checked the remote status, but before anything has been +# pushed. If this script exits with a non-zero status nothing will be pushed. +# +# This hook is called with the following parameters: +# +# $1 -- Name of the remote to which the push is being done +# $2 -- URL to which the push is being done +# +# If pushing without using a named remote those arguments will be equal. +# +# Information about the commits which are being pushed is supplied as lines to +# the standard input in the form: +# +# +# +# This sample shows how to prevent push of commits where the log message starts +# with "WIP" (work in progress). + +remote="$1" +url="$2" + +zero=$(git hash-object --stdin &2 "Found WIP commit in $local_ref, not pushing" + exit 1 + fi + fi +done + +exit 0 diff --git a/dot_oh-my-zsh/dot_git/hooks/executable_pre-rebase.sample b/dot_oh-my-zsh/dot_git/hooks/executable_pre-rebase.sample new file mode 100644 index 0000000..6cbef5c --- /dev/null +++ b/dot_oh-my-zsh/dot_git/hooks/executable_pre-rebase.sample @@ -0,0 +1,169 @@ +#!/bin/sh +# +# Copyright (c) 2006, 2008 Junio C Hamano +# +# The "pre-rebase" hook is run just before "git rebase" starts doing +# its job, and can prevent the command from running by exiting with +# non-zero status. +# +# The hook is called with the following parameters: +# +# $1 -- the upstream the series was forked from. +# $2 -- the branch being rebased (or empty when rebasing the current branch). +# +# This sample shows how to prevent topic branches that are already +# merged to 'next' branch from getting rebased, because allowing it +# would result in rebasing already published history. + +publish=next +basebranch="$1" +if test "$#" = 2 +then + topic="refs/heads/$2" +else + topic=`git symbolic-ref HEAD` || + exit 0 ;# we do not interrupt rebasing detached HEAD +fi + +case "$topic" in +refs/heads/??/*) + ;; +*) + exit 0 ;# we do not interrupt others. + ;; +esac + +# Now we are dealing with a topic branch being rebased +# on top of master. Is it OK to rebase it? + +# Does the topic really exist? +git show-ref -q "$topic" || { + echo >&2 "No such branch $topic" + exit 1 +} + +# Is topic fully merged to master? +not_in_master=`git rev-list --pretty=oneline ^master "$topic"` +if test -z "$not_in_master" +then + echo >&2 "$topic is fully merged to master; better remove it." + exit 1 ;# we could allow it, but there is no point. +fi + +# Is topic ever merged to next? If so you should not be rebasing it. +only_next_1=`git rev-list ^master "^$topic" ${publish} | sort` +only_next_2=`git rev-list ^master ${publish} | sort` +if test "$only_next_1" = "$only_next_2" +then + not_in_topic=`git rev-list "^$topic" master` + if test -z "$not_in_topic" + then + echo >&2 "$topic is already up to date with master" + exit 1 ;# we could allow it, but there is no point. + else + exit 0 + fi +else + not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"` + /usr/bin/perl -e ' + my $topic = $ARGV[0]; + my $msg = "* $topic has commits already merged to public branch:\n"; + my (%not_in_next) = map { + /^([0-9a-f]+) /; + ($1 => 1); + } split(/\n/, $ARGV[1]); + for my $elem (map { + /^([0-9a-f]+) (.*)$/; + [$1 => $2]; + } split(/\n/, $ARGV[2])) { + if (!exists $not_in_next{$elem->[0]}) { + if ($msg) { + print STDERR $msg; + undef $msg; + } + print STDERR " $elem->[1]\n"; + } + } + ' "$topic" "$not_in_next" "$not_in_master" + exit 1 +fi + +<<\DOC_END + +This sample hook safeguards topic branches that have been +published from being rewound. + +The workflow assumed here is: + + * Once a topic branch forks from "master", "master" is never + merged into it again (either directly or indirectly). + + * Once a topic branch is fully cooked and merged into "master", + it is deleted. If you need to build on top of it to correct + earlier mistakes, a new topic branch is created by forking at + the tip of the "master". This is not strictly necessary, but + it makes it easier to keep your history simple. + + * Whenever you need to test or publish your changes to topic + branches, merge them into "next" branch. + +The script, being an example, hardcodes the publish branch name +to be "next", but it is trivial to make it configurable via +$GIT_DIR/config mechanism. + +With this workflow, you would want to know: + +(1) ... if a topic branch has ever been merged to "next". Young + topic branches can have stupid mistakes you would rather + clean up before publishing, and things that have not been + merged into other branches can be easily rebased without + affecting other people. But once it is published, you would + not want to rewind it. + +(2) ... if a topic branch has been fully merged to "master". + Then you can delete it. More importantly, you should not + build on top of it -- other people may already want to + change things related to the topic as patches against your + "master", so if you need further changes, it is better to + fork the topic (perhaps with the same name) afresh from the + tip of "master". + +Let's look at this example: + + o---o---o---o---o---o---o---o---o---o "next" + / / / / + / a---a---b A / / + / / / / + / / c---c---c---c B / + / / / \ / + / / / b---b C \ / + / / / / \ / + ---o---o---o---o---o---o---o---o---o---o---o "master" + + +A, B and C are topic branches. + + * A has one fix since it was merged up to "next". + + * B has finished. It has been fully merged up to "master" and "next", + and is ready to be deleted. + + * C has not merged to "next" at all. + +We would want to allow C to be rebased, refuse A, and encourage +B to be deleted. + +To compute (1): + + git rev-list ^master ^topic next + git rev-list ^master next + + if these match, topic has not merged in next at all. + +To compute (2): + + git rev-list master..topic + + if this is empty, it is fully merged to "master". + +DOC_END diff --git a/dot_oh-my-zsh/dot_git/hooks/executable_pre-receive.sample b/dot_oh-my-zsh/dot_git/hooks/executable_pre-receive.sample new file mode 100644 index 0000000..a1fd29e --- /dev/null +++ b/dot_oh-my-zsh/dot_git/hooks/executable_pre-receive.sample @@ -0,0 +1,24 @@ +#!/bin/sh +# +# An example hook script to make use of push options. +# The example simply echoes all push options that start with 'echoback=' +# and rejects all pushes when the "reject" push option is used. +# +# To enable this hook, rename this file to "pre-receive". + +if test -n "$GIT_PUSH_OPTION_COUNT" +then + i=0 + while test "$i" -lt "$GIT_PUSH_OPTION_COUNT" + do + eval "value=\$GIT_PUSH_OPTION_$i" + case "$value" in + echoback=*) + echo "echo from the pre-receive-hook: ${value#*=}" >&2 + ;; + reject) + exit 1 + esac + i=$((i + 1)) + done +fi diff --git a/dot_oh-my-zsh/dot_git/hooks/executable_prepare-commit-msg.sample b/dot_oh-my-zsh/dot_git/hooks/executable_prepare-commit-msg.sample new file mode 100644 index 0000000..10fa14c --- /dev/null +++ b/dot_oh-my-zsh/dot_git/hooks/executable_prepare-commit-msg.sample @@ -0,0 +1,42 @@ +#!/bin/sh +# +# An example hook script to prepare the commit log message. +# Called by "git commit" with the name of the file that has the +# commit message, followed by the description of the commit +# message's source. The hook's purpose is to edit the commit +# message file. If the hook fails with a non-zero status, +# the commit is aborted. +# +# To enable this hook, rename this file to "prepare-commit-msg". + +# This hook includes three examples. The first one removes the +# "# Please enter the commit message..." help message. +# +# The second includes the output of "git diff --name-status -r" +# into the message, just before the "git status" output. It is +# commented because it doesn't cope with --amend or with squashed +# commits. +# +# The third example adds a Signed-off-by line to the message, that can +# still be edited. This is rarely a good idea. + +COMMIT_MSG_FILE=$1 +COMMIT_SOURCE=$2 +SHA1=$3 + +/usr/bin/perl -i.bak -ne 'print unless(m/^. Please enter the commit message/..m/^#$/)' "$COMMIT_MSG_FILE" + +# case "$COMMIT_SOURCE,$SHA1" in +# ,|template,) +# /usr/bin/perl -i.bak -pe ' +# print "\n" . `git diff --cached --name-status -r` +# if /^#/ && $first++ == 0' "$COMMIT_MSG_FILE" ;; +# *) ;; +# esac + +# SOB=$(git var GIT_COMMITTER_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') +# git interpret-trailers --in-place --trailer "$SOB" "$COMMIT_MSG_FILE" +# if test -z "$COMMIT_SOURCE" +# then +# /usr/bin/perl -i.bak -pe 'print "\n" if !$first_line++' "$COMMIT_MSG_FILE" +# fi diff --git a/dot_oh-my-zsh/dot_git/hooks/executable_push-to-checkout.sample b/dot_oh-my-zsh/dot_git/hooks/executable_push-to-checkout.sample new file mode 100644 index 0000000..af5a0c0 --- /dev/null +++ b/dot_oh-my-zsh/dot_git/hooks/executable_push-to-checkout.sample @@ -0,0 +1,78 @@ +#!/bin/sh + +# An example hook script to update a checked-out tree on a git push. +# +# This hook is invoked by git-receive-pack(1) when it reacts to git +# push and updates reference(s) in its repository, and when the push +# tries to update the branch that is currently checked out and the +# receive.denyCurrentBranch configuration variable is set to +# updateInstead. +# +# By default, such a push is refused if the working tree and the index +# of the remote repository has any difference from the currently +# checked out commit; when both the working tree and the index match +# the current commit, they are updated to match the newly pushed tip +# of the branch. This hook is to be used to override the default +# behaviour; however the code below reimplements the default behaviour +# as a starting point for convenient modification. +# +# The hook receives the commit with which the tip of the current +# branch is going to be updated: +commit=$1 + +# It can exit with a non-zero status to refuse the push (when it does +# so, it must not modify the index or the working tree). +die () { + echo >&2 "$*" + exit 1 +} + +# Or it can make any necessary changes to the working tree and to the +# index to bring them to the desired state when the tip of the current +# branch is updated to the new commit, and exit with a zero status. +# +# For example, the hook can simply run git read-tree -u -m HEAD "$1" +# in order to emulate git fetch that is run in the reverse direction +# with git push, as the two-tree form of git read-tree -u -m is +# essentially the same as git switch or git checkout that switches +# branches while keeping the local changes in the working tree that do +# not interfere with the difference between the branches. + +# The below is a more-or-less exact translation to shell of the C code +# for the default behaviour for git's push-to-checkout hook defined in +# the push_to_deploy() function in builtin/receive-pack.c. +# +# Note that the hook will be executed from the repository directory, +# not from the working tree, so if you want to perform operations on +# the working tree, you will have to adapt your code accordingly, e.g. +# by adding "cd .." or using relative paths. + +if ! git update-index -q --ignore-submodules --refresh +then + die "Up-to-date check failed" +fi + +if ! git diff-files --quiet --ignore-submodules -- +then + die "Working directory has unstaged changes" +fi + +# This is a rough translation of: +# +# head_has_history() ? "HEAD" : EMPTY_TREE_SHA1_HEX +if git cat-file -e HEAD 2>/dev/null +then + head=HEAD +else + head=$(git hash-object -t tree --stdin &2 + echo " (if you want, you could supply GIT_DIR then run" >&2 + echo " $0 )" >&2 + exit 1 +fi + +if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then + echo "usage: $0 " >&2 + exit 1 +fi + +# --- Config +allowunannotated=$(git config --type=bool hooks.allowunannotated) +allowdeletebranch=$(git config --type=bool hooks.allowdeletebranch) +denycreatebranch=$(git config --type=bool hooks.denycreatebranch) +allowdeletetag=$(git config --type=bool hooks.allowdeletetag) +allowmodifytag=$(git config --type=bool hooks.allowmodifytag) + +# check for no description +projectdesc=$(sed -e '1q' "$GIT_DIR/description") +case "$projectdesc" in +"Unnamed repository"* | "") + echo "*** Project description file hasn't been set" >&2 + exit 1 + ;; +esac + +# --- Check types +# if $newrev is 0000...0000, it's a commit to delete a ref. +zero=$(git hash-object --stdin &2 + echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2 + exit 1 + fi + ;; + refs/tags/*,delete) + # delete tag + if [ "$allowdeletetag" != "true" ]; then + echo "*** Deleting a tag is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/tags/*,tag) + # annotated tag + if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1 + then + echo "*** Tag '$refname' already exists." >&2 + echo "*** Modifying a tag is not allowed in this repository." >&2 + exit 1 + fi + ;; + refs/heads/*,commit) + # branch + if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then + echo "*** Creating a branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/heads/*,delete) + # delete branch + if [ "$allowdeletebranch" != "true" ]; then + echo "*** Deleting a branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/remotes/*,commit) + # tracking branch + ;; + refs/remotes/*,delete) + # delete tracking branch + if [ "$allowdeletebranch" != "true" ]; then + echo "*** Deleting a tracking branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + *) + # Anything else (is there anything else?) + echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2 + exit 1 + ;; +esac + +# --- Finished +exit 0 diff --git a/dot_oh-my-zsh/dot_git/index b/dot_oh-my-zsh/dot_git/index new file mode 100644 index 0000000000000000000000000000000000000000..920e267516aaaf054f52f59755fa59bfe79cc701 GIT binary patch literal 102712 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 literal 0 HcmV?d00001 diff --git a/dot_oh-my-zsh/dot_git/info/exclude b/dot_oh-my-zsh/dot_git/info/exclude new file mode 100644 index 0000000..a5196d1 --- /dev/null +++ b/dot_oh-my-zsh/dot_git/info/exclude @@ -0,0 +1,6 @@ +# git ls-files --others --exclude-from=.git/info/exclude +# Lines that start with '#' are comments. +# For a project mostly in C, the following would be a good set of +# exclude patterns (uncomment them if you want to use them): +# *.[oa] +# *~ diff --git a/dot_oh-my-zsh/dot_git/logs/HEAD b/dot_oh-my-zsh/dot_git/logs/HEAD new file mode 100644 index 0000000..b9b129f --- /dev/null +++ b/dot_oh-my-zsh/dot_git/logs/HEAD @@ -0,0 +1,2 @@ +0000000000000000000000000000000000000000 7de55844b26394688221b1cd12ef4053b3c7f6c7 Simon Rieger 1674601576 +0100 branch: Created from origin/master +7de55844b26394688221b1cd12ef4053b3c7f6c7 7de55844b26394688221b1cd12ef4053b3c7f6c7 Simon Rieger 1674601576 +0100 checkout: moving from master to master diff --git a/dot_oh-my-zsh/dot_git/logs/refs/heads/master b/dot_oh-my-zsh/dot_git/logs/refs/heads/master new file mode 100644 index 0000000..351b009 --- /dev/null +++ b/dot_oh-my-zsh/dot_git/logs/refs/heads/master @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 7de55844b26394688221b1cd12ef4053b3c7f6c7 Simon Rieger 1674601576 +0100 branch: Created from origin/master diff --git a/dot_oh-my-zsh/dot_git/logs/refs/remotes/origin/master b/dot_oh-my-zsh/dot_git/logs/refs/remotes/origin/master new file mode 100644 index 0000000..8735804 --- /dev/null +++ b/dot_oh-my-zsh/dot_git/logs/refs/remotes/origin/master @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 7de55844b26394688221b1cd12ef4053b3c7f6c7 Simon Rieger 1674601576 +0100 fetch --depth=1 origin: storing head diff --git a/dot_oh-my-zsh/dot_git/objects/info/.keep b/dot_oh-my-zsh/dot_git/objects/info/.keep new file mode 100644 index 0000000..e69de29 diff --git a/dot_oh-my-zsh/dot_git/objects/pack/readonly_pack-eab12e5db99c28653c26368754290c2fb39547a4.idx b/dot_oh-my-zsh/dot_git/objects/pack/readonly_pack-eab12e5db99c28653c26368754290c2fb39547a4.idx new file mode 100644 index 0000000000000000000000000000000000000000..e65122cd704dbe9bf009af4f7a22862e6206398a GIT binary patch literal 37696 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
    nEb%qlAxRH_c0qi-o~=a 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%0D5a; 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

    @Q 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

    ONe44O*Quz3T|+&qC&x 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

    pUpyJGr#agA4pgr29buq55(5KQCx&!V<~Zw8 zQ1AA5OS3!VxOcZld*G}%Q4f>XT8Kws`BD@auTCEF=)lt~1%HzjOW{*HHz<>v|QG4N7MCT6!wiQ#WC?`MBufoa2y>#=&T2%TH zS9>CBB$sp@c#YI%FxoPp?l^CIV7u4TP5OnWj)_Dc<}cHg02RMA z|JsaA5*X}$w}nF7ej?S7Q5fUPF{DyTfG<{Z2$6@)tPy4i947epT301DKtskCw!L<{ zx&DSanNc71iO$#5JQEIy0DMGBQptpOpKzR%kj=G}#i*Bsj{tui zN%O0Hs)&|0vp6*(uDtrVe%?JJX$_25@WiVgW zRFq3ZBkb5HiNm?>OgpAOvaLOS5^$Cghuq^I!bRX^9)`>O&+tij4$f{C*0ARhvz#Ah zqsy}$@Cnn;@4~U+5i0V(6Vu(PXU=^$s4ZrQm|r3ki%s}x5BDPg$eOU0T7C(+Hu3eA zztIz6FP~w4%uQ@pKX~yAWQ!UupcM@(sqAhJ~3cxz23>ZtL+l!AxE-n6 zoC8@wjk=AhrZQj2Q42(#bP4M}s9z&hNvCW}8u((1-s^eTe0K5tEZ{U;wyk7WCfhIV zefDLzZ-2h`87!CC)Lq;o>VDVV|34sihK@Y;f5CA9B*+0$P>zaIjZaP~lu^vg9ZO6c z0RhG}P?r8@(Bs!BGSsei^=6hzb*eJM+UA>K`fiueZhaxkc7(c{CFl! zApR=;lfzn8)yO#V>$(62z)ZyFsO$P&kyUGKI&O|&^o%N94dqH++|fI3M2E#NmdHk6 z=7=UQa5{>r13@7Y_?y&0NjPuozEpN!7ae�QrRY{`5k@7n^g82Q#Ji58wEGe-ApU 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ðsh)I~0nx-@dccHWV>w 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 + +- [ ] The PR title is descriptive. +- [ ] The PR doesn't replicate another PR which is already open. +- [ ] I have read the contribution guide and followed all the instructions. +- [ ] The code follows the code style guide detailed in the wiki. +- [ ] The code is mine or it's from somewhere with an MIT-compatible license. +- [ ] The code is efficient, to the best of my ability, and does not waste computer resources. +- [ ] The code is stable and I have tested it myself, to the best of my abilities. +- [ ] If the code introduces new aliases, I provide a valid use case for all plugin users down below. + +## Changes: + +- [...] + +## Other comments: + +... diff --git a/dot_oh-my-zsh/dot_github/workflows/main.yml b/dot_oh-my-zsh/dot_github/workflows/main.yml new file mode 100644 index 0000000..8ee2df3 --- /dev/null +++ b/dot_oh-my-zsh/dot_github/workflows/main.yml @@ -0,0 +1,44 @@ +name: CI +on: + pull_request: + types: + - opened + - synchronize + branches: + - master + push: + branches: + - master + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +permissions: + contents: read # to fetch code (actions/checkout) + +jobs: + tests: + name: Run tests + runs-on: ${{ matrix.os }} + if: github.repository == 'ohmyzsh/ohmyzsh' + strategy: + matrix: + os: [ubuntu-latest, macos-latest] + steps: + - name: Set up git repository + uses: actions/checkout@v3 + - name: Install zsh + if: runner.os == 'Linux' + run: sudo apt-get update; sudo apt-get install zsh + - name: Test installer + run: sh ./tools/install.sh + - name: Check syntax + run: | + for file in ./oh-my-zsh.sh \ + ./lib/*.zsh \ + ./plugins/*/*.plugin.zsh \ + ./plugins/*/_* \ + ./themes/*.zsh-theme; do + zsh -n "$file" || return 1 + done diff --git a/dot_oh-my-zsh/dot_github/workflows/project.yml b/dot_oh-my-zsh/dot_github/workflows/project.yml new file mode 100644 index 0000000..1d961d8 --- /dev/null +++ b/dot_oh-my-zsh/dot_github/workflows/project.yml @@ -0,0 +1,140 @@ +name: Project tracking +on: + issues: + types: [opened, reopened] + pull_request_target: + types: [opened, reopened, synchronize] + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +permissions: {} +jobs: + add-to-project: + name: Add to project + runs-on: ubuntu-latest + if: github.repository == 'ohmyzsh/ohmyzsh' + env: + GITHUB_TOKEN: ${{ secrets.PROJECT_TOKEN }} + steps: + - name: Read project data + env: + ORGANIZATION: ohmyzsh + PROJECT_NUMBER: "1" + run: | + # Get Project data + gh api graphql -f query=' + query($org: String!, $number: Int!) { + organization(login: $org){ + projectV2(number: $number) { + id + fields(first:20) { + nodes { + ... on ProjectV2Field { + id + name + } + } + } + } + } + }' -f org=$ORGANIZATION -F number=$PROJECT_NUMBER > project_data.json + + # Parse project data + cat >> $GITHUB_ENV <> $GITHUB_ENV + + - name: Classify Pull Request + if: github.event_name == 'pull_request_target' + run: | + touch plugins.list themes.list + + gh pr view ${{ github.event.pull_request.number }} \ + --repo ${{ github.repository }} \ + --json files --jq '.files.[].path' | awk -F/ ' + /^plugins\// { + plugins[$2] = 1 + } + /^themes\// { + gsub(/\.zsh-theme$/, "", $2) + themes[$2] = 1 + } + END { + for (plugin in plugins) { + print plugin >> "plugins.list" + } + for (theme in themes) { + print theme >> "themes.list" + } + } + ' + # If only one plugin is modified, add it to the plugin field + if [[ $(wc -l < plugins.list) = 1 ]]; then + echo "PLUGIN=$(cat plugins.list)" >> $GITHUB_ENV + fi + # If only one theme is modified, add it to the theme field + if [[ $(wc -l < themes.list) = 1 ]]; then + echo "THEME=$(cat themes.list)" >> $GITHUB_ENV + fi + + - name: Fill Pull Request fields in project + if: github.event_name == 'pull_request_target' + run: | + gh api graphql -f query=' + mutation ( + $project: ID! + $item: ID! + $plugin_field: ID! + $plugin_value: String! + $theme_field: ID! + $theme_value: String! + ) { + set_plugin: updateProjectV2ItemFieldValue(input: { + projectId: $project + itemId: $item + fieldId: $plugin_field + value: { + text: $plugin_value + } + }) { + projectV2Item { + id + } + } + set_theme: updateProjectV2ItemFieldValue(input: { + projectId: $project + itemId: $item + fieldId: $theme_field + value: { + text: $theme_value + } + }) { + projectV2Item { + id + } + } + } + ' -f project=$PROJECT_ID -f item=$ITEM_ID \ + -f plugin_field=$PLUGIN_FIELD_ID -f plugin_value=$PLUGIN \ + -f theme_field=$THEME_FIELD_ID -f theme_value=$THEME \ + --silent diff --git a/dot_oh-my-zsh/dot_gitignore b/dot_oh-my-zsh/dot_gitignore new file mode 100644 index 0000000..71ae444 --- /dev/null +++ b/dot_oh-my-zsh/dot_gitignore @@ -0,0 +1,11 @@ +# custom files +custom/ + +# temp files directories +cache/ +log/ +*.swp +.DS_Store + +# editor configs +.vscode \ No newline at end of file diff --git a/dot_oh-my-zsh/dot_gitpod.Dockerfile b/dot_oh-my-zsh/dot_gitpod.Dockerfile new file mode 100644 index 0000000..b35c80d --- /dev/null +++ b/dot_oh-my-zsh/dot_gitpod.Dockerfile @@ -0,0 +1,5 @@ +FROM gitpod/workspace-full + +RUN sudo apt-get update && \ + sudo apt-get install -y zsh && \ + sudo rm -rf /var/lib/apt/lists/* diff --git a/dot_oh-my-zsh/dot_gitpod.yml b/dot_oh-my-zsh/dot_gitpod.yml new file mode 100644 index 0000000..ccc5724 --- /dev/null +++ b/dot_oh-my-zsh/dot_gitpod.yml @@ -0,0 +1,9 @@ +image: + file: .gitpod.Dockerfile + +tasks: + - init: | + export EDITOR="command gp open -w" VISUAL="command gp open -w" + cp -f /workspace/ohmyzsh/templates/zshrc.zsh-template ~/.zshrc + ln -sf /workspace/ohmyzsh ~/.oh-my-zsh + command: exec zsh diff --git a/dot_oh-my-zsh/dot_prettierrc b/dot_oh-my-zsh/dot_prettierrc new file mode 100644 index 0000000..a8f5a14 --- /dev/null +++ b/dot_oh-my-zsh/dot_prettierrc @@ -0,0 +1,4 @@ +{ + "printWidth": 110, + "proseWrap": "always" +} diff --git a/dot_oh-my-zsh/lib/bzr.zsh b/dot_oh-my-zsh/lib/bzr.zsh new file mode 100644 index 0000000..005a165 --- /dev/null +++ b/dot_oh-my-zsh/lib/bzr.zsh @@ -0,0 +1,10 @@ +## Bazaar integration +## Just works with the GIT integration just add $(bzr_prompt_info) to the PROMPT +function bzr_prompt_info() { + BZR_CB=`bzr nick 2> /dev/null | grep -v "ERROR" | cut -d ":" -f2 | awk -F / '{print "bzr::"$1}'` + if [ -n "$BZR_CB" ]; then + BZR_DIRTY="" + [[ -n `bzr status` ]] && BZR_DIRTY=" %{$fg[red]%} * %{$fg[green]%}" + echo "$ZSH_THEME_SCM_PROMPT_PREFIX$BZR_CB$BZR_DIRTY$ZSH_THEME_GIT_PROMPT_SUFFIX" + fi +} \ No newline at end of file diff --git a/dot_oh-my-zsh/lib/cli.zsh b/dot_oh-my-zsh/lib/cli.zsh new file mode 100644 index 0000000..fed00d2 --- /dev/null +++ b/dot_oh-my-zsh/lib/cli.zsh @@ -0,0 +1,820 @@ +#!/usr/bin/env zsh + +function omz { + [[ $# -gt 0 ]] || { + _omz::help + return 1 + } + + local command="$1" + shift + + # Subcommand functions start with _ so that they don't + # appear as completion entries when looking for `omz` + (( $+functions[_omz::$command] )) || { + _omz::help + return 1 + } + + _omz::$command "$@" +} + +function _omz { + local -a cmds subcmds + cmds=( + 'changelog:Print the changelog' + 'help:Usage information' + 'plugin:Manage plugins' + 'pr:Manage Oh My Zsh Pull Requests' + 'reload:Reload the current zsh session' + 'theme:Manage themes' + 'update:Update Oh My Zsh' + 'version:Show the version' + ) + + if (( CURRENT == 2 )); then + _describe 'command' cmds + elif (( CURRENT == 3 )); then + case "$words[2]" in + changelog) local -a refs + refs=("${(@f)$(builtin cd -q "$ZSH"; command git for-each-ref --format="%(refname:short):%(subject)" refs/heads refs/tags)}") + _describe 'command' refs ;; + plugin) subcmds=( + 'disable:Disable plugin(s)' + 'enable:Enable plugin(s)' + 'info:Get plugin information' + 'list:List plugins' + 'load:Load plugin(s)' + ) + _describe 'command' subcmds ;; + pr) subcmds=('clean:Delete all Pull Request branches' 'test:Test a Pull Request') + _describe 'command' subcmds ;; + theme) subcmds=('list:List themes' 'set:Set a theme in your .zshrc file' 'use:Load a theme') + _describe 'command' subcmds ;; + esac + elif (( CURRENT == 4 )); then + case "${words[2]}::${words[3]}" in + plugin::(disable|enable|load)) + local -aU valid_plugins + + if [[ "${words[3]}" = disable ]]; then + # if command is "disable", only offer already enabled plugins + valid_plugins=($plugins) + else + valid_plugins=("$ZSH"/plugins/*/{_*,*.plugin.zsh}(-.N:h:t) "$ZSH_CUSTOM"/plugins/*/{_*,*.plugin.zsh}(-.N:h:t)) + # if command is "enable", remove already enabled plugins + [[ "${words[3]}" = enable ]] && valid_plugins=(${valid_plugins:|plugins}) + fi + + _describe 'plugin' valid_plugins ;; + plugin::info) + local -aU plugins + plugins=("$ZSH"/plugins/*/{_*,*.plugin.zsh}(-.N:h:t) "$ZSH_CUSTOM"/plugins/*/{_*,*.plugin.zsh}(-.N:h:t)) + _describe 'plugin' plugins ;; + theme::(set|use)) + local -aU themes + themes=("$ZSH"/themes/*.zsh-theme(-.N:t:r) "$ZSH_CUSTOM"/**/*.zsh-theme(-.N:r:gs:"$ZSH_CUSTOM"/themes/:::gs:"$ZSH_CUSTOM"/:::)) + _describe 'theme' themes ;; + esac + elif (( CURRENT > 4 )); then + case "${words[2]}::${words[3]}" in + plugin::(enable|disable|load)) + local -aU valid_plugins + + if [[ "${words[3]}" = disable ]]; then + # if command is "disable", only offer already enabled plugins + valid_plugins=($plugins) + else + valid_plugins=("$ZSH"/plugins/*/{_*,*.plugin.zsh}(-.N:h:t) "$ZSH_CUSTOM"/plugins/*/{_*,*.plugin.zsh}(-.N:h:t)) + # if command is "enable", remove already enabled plugins + [[ "${words[3]}" = enable ]] && valid_plugins=(${valid_plugins:|plugins}) + fi + + # Remove plugins already passed as arguments + # NOTE: $(( CURRENT - 1 )) is the last plugin argument completely passed, i.e. that which + # has a space after them. This is to avoid removing plugins partially passed, which makes + # the completion not add a space after the completed plugin. + local -a args + args=(${words[4,$(( CURRENT - 1))]}) + valid_plugins=(${valid_plugins:|args}) + + _describe 'plugin' valid_plugins ;; + esac + fi + + return 0 +} + +# If run from a script, do not set the completion function +if (( ${+functions[compdef]} )); then + compdef _omz omz +fi + +## Utility functions + +function _omz::confirm { + # If question supplied, ask it before reading the answer + # NOTE: uses the logname of the caller function + if [[ -n "$1" ]]; then + _omz::log prompt "$1" "${${functrace[1]#_}%:*}" + fi + + # Read one character + read -r -k 1 + + # If no newline entered, add a newline + if [[ "$REPLY" != $'\n' ]]; then + echo + fi +} + +function _omz::log { + # if promptsubst is set, a message with `` or $() + # will be run even if quoted due to `print -P` + setopt localoptions nopromptsubst + + # $1 = info|warn|error|debug + # $2 = text + # $3 = (optional) name of the logger + + local logtype=$1 + local logname=${3:-${${functrace[1]#_}%:*}} + + # Don't print anything if debug is not active + if [[ $logtype = debug && -z $_OMZ_DEBUG ]]; then + return + fi + + # Choose coloring based on log type + case "$logtype" in + prompt) print -Pn "%S%F{blue}$logname%f%s: $2" ;; + debug) print -P "%F{white}$logname%f: $2" ;; + info) print -P "%F{green}$logname%f: $2" ;; + warn) print -P "%S%F{yellow}$logname%f%s: $2" ;; + error) print -P "%S%F{red}$logname%f%s: $2" ;; + esac >&2 +} + +## User-facing commands + +function _omz::help { + cat >&2 < [options] + +Available commands: + + help Print this help message + changelog Print the changelog + plugin Manage plugins + pr Manage Oh My Zsh Pull Requests + reload Reload the current zsh session + theme Manage themes + update Update Oh My Zsh + version Show the version + +EOF +} + +function _omz::changelog { + local version=${1:-HEAD} format=${3:-"--text"} + + if ( + builtin cd -q "$ZSH" + ! command git show-ref --verify refs/heads/$version && \ + ! command git show-ref --verify refs/tags/$version && \ + ! command git rev-parse --verify "${version}^{commit}" + ) &>/dev/null; then + cat >&2 < must be a valid branch, tag or commit. +EOF + return 1 + fi + + "$ZSH/tools/changelog.sh" "$version" "${2:-}" "$format" +} + +function _omz::plugin { + (( $# > 0 && $+functions[$0::$1] )) || { + cat >&2 < [options] + +Available commands: + + disable Disable plugin(s) + enable Enable plugin(s) + info Get information of a plugin + list List all available Oh My Zsh plugins + load Load plugin(s) + +EOF + return 1 + } + + local command="$1" + shift + + $0::$command "$@" +} + +function _omz::plugin::disable { + if [[ -z "$1" ]]; then + echo >&2 "Usage: ${(j: :)${(s.::.)0#_}} [...]" + return 1 + fi + + # Check that plugin is in $plugins + local -a dis_plugins + for plugin in "$@"; do + if [[ ${plugins[(Ie)$plugin]} -eq 0 ]]; then + _omz::log warn "plugin '$plugin' is not enabled." + continue + fi + dis_plugins+=("$plugin") + done + + # Exit if there are no enabled plugins to disable + if [[ ${#dis_plugins} -eq 0 ]]; then + return 1 + fi + + # Remove plugins substitution awk script + local awk_subst_plugins="\ + gsub(/[ \t]+(${(j:|:)dis_plugins})/, \"\") # with spaces before + gsub(/(${(j:|:)dis_plugins})[ \t]+/, \"\") # with spaces after + gsub(/\((${(j:|:)dis_plugins})\)/, \"\") # without spaces (only plugin) +" + # Disable plugins awk script + local awk_script=" +# if plugins=() is in oneline form, substitute disabled plugins and go to next line +/^[ \t]*plugins=\([^#]+\).*\$/ { + $awk_subst_plugins + print \$0 + next +} + +# if plugins=() is in multiline form, enable multi flag and disable plugins if they're there +/^[ \t]*plugins=\(/ { + multi=1 + $awk_subst_plugins + print \$0 + next +} + +# if multi flag is enabled and we find a valid closing parenthesis, remove plugins and disable multi flag +multi == 1 && /^[^#]*\)/ { + multi=0 + $awk_subst_plugins + print \$0 + next +} + +multi == 1 && length(\$0) > 0 { + $awk_subst_plugins + if (length(\$0) > 0) print \$0 + next +} + +{ print \$0 } +" + + local zdot="${ZDOTDIR:-$HOME}" + local zshrc="${${:-"${zdot}/.zshrc"}:A}" + awk "$awk_script" "$zshrc" > "$zdot/.zshrc.new" \ + && command cp -f "$zshrc" "$zdot/.zshrc.bck" \ + && command mv -f "$zdot/.zshrc.new" "$zshrc" + + # Exit if the new .zshrc file wasn't created correctly + [[ $? -eq 0 ]] || { + local ret=$? + _omz::log error "error disabling plugins." + return $ret + } + + # Exit if the new .zshrc file has syntax errors + if ! command zsh -n "$zdot/.zshrc"; then + _omz::log error "broken syntax in '"${zdot/#$HOME/\~}/.zshrc"'. Rolling back changes..." + command mv -f "$zdot/.zshrc.bck" "$zshrc" + return 1 + fi + + # Restart the zsh session if there were no errors + _omz::log info "plugins disabled: ${(j:, :)dis_plugins}." + + # Only reload zsh if run in an interactive session + [[ ! -o interactive ]] || _omz::reload +} + +function _omz::plugin::enable { + if [[ -z "$1" ]]; then + echo >&2 "Usage: ${(j: :)${(s.::.)0#_}} [...]" + return 1 + fi + + # Check that plugin is not in $plugins + local -a add_plugins + for plugin in "$@"; do + if [[ ${plugins[(Ie)$plugin]} -ne 0 ]]; then + _omz::log warn "plugin '$plugin' is already enabled." + continue + fi + add_plugins+=("$plugin") + done + + # Exit if there are no plugins to enable + if [[ ${#add_plugins} -eq 0 ]]; then + return 1 + fi + + # Enable plugins awk script + local awk_script=" +# if plugins=() is in oneline form, substitute ) with new plugins and go to the next line +/^[ \t]*plugins=\([^#]+\).*\$/ { + sub(/\)/, \" $add_plugins&\") + print \$0 + next +} + +# if plugins=() is in multiline form, enable multi flag +/^[ \t]*plugins=\(/ { + multi=1 +} + +# if multi flag is enabled and we find a valid closing parenthesis, +# add new plugins and disable multi flag +multi == 1 && /^[^#]*\)/ { + multi=0 + sub(/\)/, \" $add_plugins&\") + print \$0 + next +} + +{ print \$0 } +" + + local zdot="${ZDOTDIR:-$HOME}" + local zshrc="${${:-"${zdot}/.zshrc"}:A}" + awk "$awk_script" "$zshrc" > "$zdot/.zshrc.new" \ + && command cp -f "$zshrc" "$zdot/.zshrc.bck" \ + && command mv -f "$zdot/.zshrc.new" "$zshrc" + + # Exit if the new .zshrc file wasn't created correctly + [[ $? -eq 0 ]] || { + local ret=$? + _omz::log error "error enabling plugins." + return $ret + } + + # Exit if the new .zshrc file has syntax errors + if ! command zsh -n "$zdot/.zshrc"; then + _omz::log error "broken syntax in '"${zdot/#$HOME/\~}/.zshrc"'. Rolling back changes..." + command mv -f "$zdot/.zshrc.bck" "$zshrc" + return 1 + fi + + # Restart the zsh session if there were no errors + _omz::log info "plugins enabled: ${(j:, :)add_plugins}." + + # Only reload zsh if run in an interactive session + [[ ! -o interactive ]] || _omz::reload +} + +function _omz::plugin::info { + if [[ -z "$1" ]]; then + echo >&2 "Usage: ${(j: :)${(s.::.)0#_}} " + return 1 + fi + + local readme + for readme in "$ZSH_CUSTOM/plugins/$1/README.md" "$ZSH/plugins/$1/README.md"; do + if [[ -f "$readme" ]]; then + (( ${+commands[less]} )) && less "$readme" || cat "$readme" + return 0 + fi + done + + if [[ -d "$ZSH_CUSTOM/plugins/$1" || -d "$ZSH/plugins/$1" ]]; then + _omz::log error "the '$1' plugin doesn't have a README file" + else + _omz::log error "'$1' plugin not found" + fi + + return 1 +} + +function _omz::plugin::list { + local -a custom_plugins builtin_plugins + custom_plugins=("$ZSH_CUSTOM"/plugins/*(-/N:t)) + builtin_plugins=("$ZSH"/plugins/*(-/N:t)) + + # If the command is being piped, print all found line by line + if [[ ! -t 1 ]]; then + print -l ${(q-)custom_plugins} ${(q-)builtin_plugins} + return + fi + + if (( ${#custom_plugins} )); then + print -P "%U%BCustom plugins%b%u:" + print -lac ${(q-)custom_plugins} + fi + + if (( ${#builtin_plugins} )); then + (( ${#custom_plugins} )) && echo # add a line of separation + + print -P "%U%BBuilt-in plugins%b%u:" + print -lac ${(q-)builtin_plugins} + fi +} + +function _omz::plugin::load { + if [[ -z "$1" ]]; then + echo >&2 "Usage: ${(j: :)${(s.::.)0#_}} [...]" + return 1 + fi + + local plugin base has_completion=0 + for plugin in "$@"; do + if [[ -d "$ZSH_CUSTOM/plugins/$plugin" ]]; then + base="$ZSH_CUSTOM/plugins/$plugin" + elif [[ -d "$ZSH/plugins/$plugin" ]]; then + base="$ZSH/plugins/$plugin" + else + _omz::log warn "plugin '$plugin' not found" + continue + fi + + # Check if its a valid plugin + if [[ ! -f "$base/_$plugin" && ! -f "$base/$plugin.plugin.zsh" ]]; then + _omz::log warn "'$plugin' is not a valid plugin" + continue + # It it is a valid plugin, add its directory to $fpath unless it is already there + elif (( ! ${fpath[(Ie)$base]} )); then + fpath=("$base" $fpath) + fi + + # Check if it has completion to reload compinit + local -a comp_files + comp_files=($base/_*(N)) + has_completion=$(( $#comp_files > 0 )) + + # Load the plugin + if [[ -f "$base/$plugin.plugin.zsh" ]]; then + source "$base/$plugin.plugin.zsh" + fi + done + + # If we have completion, we need to reload the completion + # We pass -D to avoid generating a new dump file, which would overwrite our + # current one for the next session (and we don't want that because we're not + # actually enabling the plugins for the next session). + # Note that we still have to pass -d "$_comp_dumpfile", so that compinit + # doesn't use the default zcompdump location (${ZDOTDIR:-$HOME}/.zcompdump). + if (( has_completion )); then + compinit -D -d "$_comp_dumpfile" + fi +} + +function _omz::pr { + (( $# > 0 && $+functions[$0::$1] )) || { + cat >&2 < [options] + +Available commands: + + clean Delete all PR branches (ohmyzsh/pull-*) + test Fetch PR #NUMBER and rebase against master + +EOF + return 1 + } + + local command="$1" + shift + + $0::$command "$@" +} + +function _omz::pr::clean { + ( + set -e + builtin cd -q "$ZSH" + + # Check if there are PR branches + local fmt branches + fmt="%(color:bold blue)%(align:18,right)%(refname:short)%(end)%(color:reset) %(color:dim bold red)%(objectname:short)%(color:reset) %(color:yellow)%(contents:subject)" + branches="$(command git for-each-ref --sort=-committerdate --color --format="$fmt" "refs/heads/ohmyzsh/pull-*")" + + # Exit if there are no PR branches + if [[ -z "$branches" ]]; then + _omz::log info "there are no Pull Request branches to remove." + return + fi + + # Print found PR branches + echo "$branches\n" + # Confirm before removing the branches + _omz::confirm "do you want remove these Pull Request branches? [Y/n] " + # Only proceed if the answer is a valid yes option + [[ "$REPLY" != [yY$'\n'] ]] && return + + _omz::log info "removing all Oh My Zsh Pull Request branches..." + command git branch --list 'ohmyzsh/pull-*' | while read branch; do + command git branch -D "$branch" + done + ) +} + +function _omz::pr::test { + # Allow $1 to be a URL to the pull request + if [[ "$1" = https://* ]]; then + 1="${1:t}" + fi + + # Check the input + if ! [[ -n "$1" && "$1" =~ ^[[:digit:]]+$ ]]; then + echo >&2 "Usage: ${(j: :)${(s.::.)0#_}} " + return 1 + fi + + # Save current git HEAD + local branch + branch=$(builtin cd -q "$ZSH"; git symbolic-ref --short HEAD) || { + _omz::log error "error when getting the current git branch. Aborting..." + return 1 + } + + + # Fetch PR onto ohmyzsh/pull- branch and rebase against master + # If any of these operations fail, undo the changes made + ( + set -e + builtin cd -q "$ZSH" + + # Get the ohmyzsh git remote + command git remote -v | while read remote url _; do + case "$url" in + https://github.com/ohmyzsh/ohmyzsh(|.git)) found=1; break ;; + git@github.com:ohmyzsh/ohmyzsh(|.git)) found=1; break ;; + esac + done + + (( $found )) || { + _omz::log error "could not found the ohmyzsh git remote. Aborting..." + return 1 + } + + # Fetch pull request head + _omz::log info "fetching PR #$1 to ohmyzsh/pull-$1..." + command git fetch -f "$remote" refs/pull/$1/head:ohmyzsh/pull-$1 || { + _omz::log error "error when trying to fetch PR #$1." + return 1 + } + + # Rebase pull request branch against the current master + _omz::log info "rebasing PR #$1..." + local ret gpgsign + { + # Back up commit.gpgsign setting: use --local to get the current repository + # setting, not the global one. If --local is not a known option, it will + # exit with a 129 status code. + gpgsign=$(command git config --local commit.gpgsign 2>/dev/null) || ret=$? + [[ $ret -ne 129 ]] || gpgsign=$(command git config commit.gpgsign 2>/dev/null) + command git config commit.gpgsign false + + command git rebase master ohmyzsh/pull-$1 || { + command git rebase --abort &>/dev/null + _omz::log warn "could not rebase PR #$1 on top of master." + _omz::log warn "you might not see the latest stable changes." + _omz::log info "run \`zsh\` to test the changes." + return 1 + } + } always { + case "$gpgsign" in + "") command git config --unset commit.gpgsign ;; + *) command git config commit.gpgsign "$gpgsign" ;; + esac + } + + _omz::log info "fetch of PR #${1} successful." + ) + + # If there was an error, abort running zsh to test the PR + [[ $? -eq 0 ]] || return 1 + + # Run zsh to test the changes + _omz::log info "running \`zsh\` to test the changes. Run \`exit\` to go back." + command zsh -l + + # After testing, go back to the previous HEAD if the user wants + _omz::confirm "do you want to go back to the previous branch? [Y/n] " + # Only proceed if the answer is a valid yes option + [[ "$REPLY" != [yY$'\n'] ]] && return + + ( + set -e + builtin cd -q "$ZSH" + + command git checkout "$branch" -- || { + _omz::log error "could not go back to the previous branch ('$branch')." + return 1 + } + ) +} + +function _omz::reload { + # Delete current completion cache + command rm -f $_comp_dumpfile $ZSH_COMPDUMP + + # Old zsh versions don't have ZSH_ARGZERO + local zsh="${ZSH_ARGZERO:-${functrace[-1]%:*}}" + # Check whether to run a login shell + [[ "$zsh" = -* || -o login ]] && exec -l "${zsh#-}" || exec "$zsh" +} + +function _omz::theme { + (( $# > 0 && $+functions[$0::$1] )) || { + cat >&2 < [options] + +Available commands: + + list List all available Oh My Zsh themes + set Set a theme in your .zshrc file + use Load a theme + +EOF + return 1 + } + + local command="$1" + shift + + $0::$command "$@" +} + +function _omz::theme::list { + local -a custom_themes builtin_themes + custom_themes=("$ZSH_CUSTOM"/**/*.zsh-theme(-.N:r:gs:"$ZSH_CUSTOM"/themes/:::gs:"$ZSH_CUSTOM"/:::)) + builtin_themes=("$ZSH"/themes/*.zsh-theme(-.N:t:r)) + + # If the command is being piped, print all found line by line + if [[ ! -t 1 ]]; then + print -l ${(q-)custom_themes} ${(q-)builtin_themes} + return + fi + + # Print theme in use + if [[ -n "$ZSH_THEME" ]]; then + print -Pn "%U%BCurrent theme%b%u: " + [[ $ZSH_THEME = random ]] && echo "$RANDOM_THEME (via random)" || echo "$ZSH_THEME" + echo + fi + + # Print custom themes if there are any + if (( ${#custom_themes} )); then + print -P "%U%BCustom themes%b%u:" + print -lac ${(q-)custom_themes} + echo + fi + + # Print built-in themes + print -P "%U%BBuilt-in themes%b%u:" + print -lac ${(q-)builtin_themes} +} + +function _omz::theme::set { + if [[ -z "$1" ]]; then + echo >&2 "Usage: ${(j: :)${(s.::.)0#_}} " + return 1 + fi + + # Check that theme exists + if [[ ! -f "$ZSH_CUSTOM/$1.zsh-theme" ]] \ + && [[ ! -f "$ZSH_CUSTOM/themes/$1.zsh-theme" ]] \ + && [[ ! -f "$ZSH/themes/$1.zsh-theme" ]]; then + _omz::log error "%B$1%b theme not found" + return 1 + fi + + # Enable theme in .zshrc + local awk_script=' +!set && /^[ \t]*ZSH_THEME=[^#]+.*$/ { + set=1 + sub(/^[ \t]*ZSH_THEME=[^#]+.*$/, "ZSH_THEME=\"'$1'\" # set by `omz`") + print $0 + next +} + +{ print $0 } + +END { + # If no ZSH_THEME= line was found, return an error + if (!set) exit 1 +} +' + + local zdot="${ZDOTDIR:-$HOME}" + local zshrc="${${:-"${zdot}/.zshrc"}:A}" + awk "$awk_script" "$zshrc" > "$zdot/.zshrc.new" \ + || { + # Prepend ZSH_THEME= line to .zshrc if it doesn't exist + cat < "$zdot/.zshrc.new" \ + && command cp -f "$zshrc" "$zdot/.zshrc.bck" \ + && command mv -f "$zdot/.zshrc.new" "$zshrc" + + # Exit if the new .zshrc file wasn't created correctly + [[ $? -eq 0 ]] || { + local ret=$? + _omz::log error "error setting theme." + return $ret + } + + # Exit if the new .zshrc file has syntax errors + if ! command zsh -n "$zdot/.zshrc"; then + _omz::log error "broken syntax in '"${zdot/#$HOME/\~}/.zshrc"'. Rolling back changes..." + command mv -f "$zdot/.zshrc.bck" "$zshrc" + return 1 + fi + + # Restart the zsh session if there were no errors + _omz::log info "'$1' theme set correctly." + + # Only reload zsh if run in an interactive session + [[ ! -o interactive ]] || _omz::reload +} + +function _omz::theme::use { + if [[ -z "$1" ]]; then + echo >&2 "Usage: ${(j: :)${(s.::.)0#_}} " + return 1 + fi + + # Respect compatibility with old lookup order + if [[ -f "$ZSH_CUSTOM/$1.zsh-theme" ]]; then + source "$ZSH_CUSTOM/$1.zsh-theme" + elif [[ -f "$ZSH_CUSTOM/themes/$1.zsh-theme" ]]; then + source "$ZSH_CUSTOM/themes/$1.zsh-theme" + elif [[ -f "$ZSH/themes/$1.zsh-theme" ]]; then + source "$ZSH/themes/$1.zsh-theme" + else + _omz::log error "%B$1%b theme not found" + return 1 + fi + + # Update theme settings + ZSH_THEME="$1" + [[ $1 = random ]] || unset RANDOM_THEME +} + +function _omz::update { + local last_commit=$(builtin cd -q "$ZSH"; git rev-parse HEAD) + + # Run update script + if [[ "$1" != --unattended ]]; then + ZSH="$ZSH" command zsh -f "$ZSH/tools/upgrade.sh" --interactive || return $? + else + ZSH="$ZSH" command zsh -f "$ZSH/tools/upgrade.sh" || return $? + fi + + # Update last updated file + zmodload zsh/datetime + echo "LAST_EPOCH=$(( EPOCHSECONDS / 60 / 60 / 24 ))" >! "${ZSH_CACHE_DIR}/.zsh-update" + # Remove update lock if it exists + command rm -rf "$ZSH/log/update.lock" + + # Restart the zsh session if there were changes + if [[ "$1" != --unattended && "$(builtin cd -q "$ZSH"; git rev-parse HEAD)" != "$last_commit" ]]; then + # Old zsh versions don't have ZSH_ARGZERO + local zsh="${ZSH_ARGZERO:-${functrace[-1]%:*}}" + # Check whether to run a login shell + [[ "$zsh" = -* || -o login ]] && exec -l "${zsh#-}" || exec "$zsh" + fi +} + +function _omz::version { + ( + builtin cd -q "$ZSH" + + # Get the version name: + # 1) try tag-like version + # 2) try branch name + # 3) try name-rev (tag~ or branch~) + local version + version=$(command git describe --tags HEAD 2>/dev/null) \ + || version=$(command git symbolic-ref --quiet --short HEAD 2>/dev/null) \ + || version=$(command git name-rev --no-undefined --name-only --exclude="remotes/*" HEAD 2>/dev/null) \ + || version="" + + # Get short hash for the current HEAD + local commit=$(command git rev-parse --short HEAD 2>/dev/null) + + # Show version and commit hash + printf "%s (%s)\n" "$version" "$commit" + ) +} diff --git a/dot_oh-my-zsh/lib/clipboard.zsh b/dot_oh-my-zsh/lib/clipboard.zsh new file mode 100644 index 0000000..2f3b6bc --- /dev/null +++ b/dot_oh-my-zsh/lib/clipboard.zsh @@ -0,0 +1,107 @@ +# System clipboard integration +# +# This file has support for doing system clipboard copy and paste operations +# from the command line in a generic cross-platform fashion. +# +# This is uses essentially the same heuristic as neovim, with the additional +# special support for Cygwin. +# See: https://github.com/neovim/neovim/blob/e682d799fa3cf2e80a02d00c6ea874599d58f0e7/runtime/autoload/provider/clipboard.vim#L55-L121 +# +# - pbcopy, pbpaste (macOS) +# - cygwin (Windows running Cygwin) +# - wl-copy, wl-paste (if $WAYLAND_DISPLAY is set) +# - xsel (if $DISPLAY is set) +# - xclip (if $DISPLAY is set) +# - lemonade (for SSH) https://github.com/pocke/lemonade +# - doitclient (for SSH) http://www.chiark.greenend.org.uk/~sgtatham/doit/ +# - win32yank (Windows) +# - tmux (if $TMUX is set) +# +# Defines two functions, clipcopy and clippaste, based on the detected platform. +## +# +# clipcopy - Copy data to clipboard +# +# Usage: +# +# | clipcopy - copies stdin to clipboard +# +# clipcopy - copies a file's contents to clipboard +# +## +# +# clippaste - "Paste" data from clipboard to stdout +# +# Usage: +# +# clippaste - writes clipboard's contents to stdout +# +# clippaste | - pastes contents and pipes it to another process +# +# clippaste > - paste contents to a file +# +# Examples: +# +# # Pipe to another process +# clippaste | grep foo +# +# # Paste to a file +# clippaste > file.txt +# +function detect-clipboard() { + emulate -L zsh + + if [[ "${OSTYPE}" == darwin* ]] && (( ${+commands[pbcopy]} )) && (( ${+commands[pbpaste]} )); then + function clipcopy() { cat "${1:-/dev/stdin}" | pbcopy; } + function clippaste() { pbpaste; } + elif [[ "${OSTYPE}" == (cygwin|msys)* ]]; then + function clipcopy() { cat "${1:-/dev/stdin}" > /dev/clipboard; } + function clippaste() { cat /dev/clipboard; } + elif (( $+commands[clip.exe] )) && (( $+commands[powershell.exe] )); then + function clipcopy() { cat "${1:-/dev/stdin}" | clip.exe; } + function clippaste() { powershell.exe -noprofile -command Get-Clipboard; } + elif [ -n "${WAYLAND_DISPLAY:-}" ] && (( ${+commands[wl-copy]} )) && (( ${+commands[wl-paste]} )); then + function clipcopy() { cat "${1:-/dev/stdin}" | wl-copy &>/dev/null &|; } + function clippaste() { wl-paste; } + elif [ -n "${DISPLAY:-}" ] && (( ${+commands[xsel]} )); then + function clipcopy() { cat "${1:-/dev/stdin}" | xsel --clipboard --input; } + function clippaste() { xsel --clipboard --output; } + elif [ -n "${DISPLAY:-}" ] && (( ${+commands[xclip]} )); then + function clipcopy() { cat "${1:-/dev/stdin}" | xclip -selection clipboard -in &>/dev/null &|; } + function clippaste() { xclip -out -selection clipboard; } + elif (( ${+commands[lemonade]} )); then + function clipcopy() { cat "${1:-/dev/stdin}" | lemonade copy; } + function clippaste() { lemonade paste; } + elif (( ${+commands[doitclient]} )); then + function clipcopy() { cat "${1:-/dev/stdin}" | doitclient wclip; } + function clippaste() { doitclient wclip -r; } + elif (( ${+commands[win32yank]} )); then + function clipcopy() { cat "${1:-/dev/stdin}" | win32yank -i; } + function clippaste() { win32yank -o; } + elif [[ $OSTYPE == linux-android* ]] && (( $+commands[termux-clipboard-set] )); then + function clipcopy() { cat "${1:-/dev/stdin}" | termux-clipboard-set; } + function clippaste() { termux-clipboard-get; } + elif [ -n "${TMUX:-}" ] && (( ${+commands[tmux]} )); then + function clipcopy() { tmux load-buffer "${1:--}"; } + function clippaste() { tmux save-buffer -; } + else + function _retry_clipboard_detection_or_fail() { + local clipcmd="${1}"; shift + if detect-clipboard; then + "${clipcmd}" "$@" + else + print "${clipcmd}: Platform $OSTYPE not supported or xclip/xsel not installed" >&2 + return 1 + fi + } + function clipcopy() { _retry_clipboard_detection_or_fail clipcopy "$@"; } + function clippaste() { _retry_clipboard_detection_or_fail clippaste "$@"; } + return 1 + fi +} + +# Detect at startup. A non-zero exit here indicates that the dummy clipboards were set, +# which is not really an error. If the user calls them, they will attempt to redetect +# (for example, perhaps the user has now installed xclip) and then either print an error +# or proceed successfully. +detect-clipboard || true diff --git a/dot_oh-my-zsh/lib/compfix.zsh b/dot_oh-my-zsh/lib/compfix.zsh new file mode 100644 index 0000000..b09b283 --- /dev/null +++ b/dot_oh-my-zsh/lib/compfix.zsh @@ -0,0 +1,44 @@ +# Handle completions insecurities (i.e., completion-dependent directories with +# insecure ownership or permissions) by: +# +# * Human-readably notifying the user of these insecurities. +function handle_completion_insecurities() { + # List of the absolute paths of all unique insecure directories, split on + # newline from compaudit()'s output resembling: + # + # There are insecure directories: + # /usr/share/zsh/site-functions + # /usr/share/zsh/5.0.6/functions + # /usr/share/zsh + # /usr/share/zsh/5.0.6 + # + # Since the ignorable first line is printed to stderr and thus not captured, + # stderr is squelched to prevent this output from leaking to the user. + local -aU insecure_dirs + insecure_dirs=( ${(f@):-"$(compaudit 2>/dev/null)"} ) + + # If no such directories exist, get us out of here. + [[ -z "${insecure_dirs}" ]] && return + + # List ownership and permissions of all insecure directories. + print "[oh-my-zsh] Insecure completion-dependent directories detected:" + ls -ld "${(@)insecure_dirs}" + + cat < +# +# Usage: +# +# omz_diagnostic_dump [-v] [-V] [file] +# +# NOTE: This is a work in progress. Its interface and behavior are going to change, +# and probably in non-back-compatible ways. +# +# Outputs a bunch of information about the state and configuration of +# oh-my-zsh, zsh, and the user's system. This is intended to provide a +# bunch of context for diagnosing your own or a third party's problems, and to +# be suitable for posting to public bug reports. +# +# The output is human-readable and its format may change over time. It is not +# suitable for parsing. All the output is in one single file so it can be posted +# as a gist or bug comment on GitHub. GitHub doesn't support attaching tarballs +# or other files to bugs; otherwise, this would probably have an option to produce +# tarballs that contain copies of the config and customization files instead of +# catting them all in to one file. +# +# This is intended to be widely portable, and run anywhere that oh-my-zsh does. +# Feel free to report any portability issues as bugs. +# +# This is written in a defensive style so it still works (and can detect) cases when +# basic functionality like echo and which have been redefined. In particular, almost +# everything is invoked with "builtin" or "command", to work in the face of user +# redefinitions. +# +# OPTIONS +# +# [file] Specifies the output file. If not given, a file in the current directory +# is selected automatically. +# +# -v Increase the verbosity of the dump output. May be specified multiple times. +# Verbosity levels: +# 0 - Basic info, shell state, omz configuration, git state +# 1 - (default) Adds key binding info and configuration file contents +# 2 - Adds zcompdump file contents +# +# -V Reduce the verbosity of the dump output. May be specified multiple times. +# +# TODO: +# * Multi-file capture +# * Add automatic gist uploading +# * Consider whether to move default output file location to TMPDIR. More robust +# but less user friendly. +# + +autoload -Uz is-at-least + +function omz_diagnostic_dump() { + emulate -L zsh + + builtin echo "Generating diagnostic dump; please be patient..." + + local thisfcn=omz_diagnostic_dump + local -A opts + local opt_verbose opt_noverbose opt_outfile + local timestamp=$(date +%Y%m%d-%H%M%S) + local outfile=omz_diagdump_$timestamp.txt + builtin zparseopts -A opts -D -- "v+=opt_verbose" "V+=opt_noverbose" + local verbose n_verbose=${#opt_verbose} n_noverbose=${#opt_noverbose} + (( verbose = 1 + n_verbose - n_noverbose )) + + if [[ ${#*} > 0 ]]; then + opt_outfile=$1 + fi + if [[ ${#*} > 1 ]]; then + builtin echo "$thisfcn: error: too many arguments" >&2 + return 1 + fi + if [[ -n "$opt_outfile" ]]; then + outfile="$opt_outfile" + fi + + # Always write directly to a file so terminal escape sequences are + # captured cleanly + _omz_diag_dump_one_big_text &> "$outfile" + if [[ $? != 0 ]]; then + builtin echo "$thisfcn: error while creating diagnostic dump; see $outfile for details" + fi + + builtin echo + builtin echo Diagnostic dump file created at: "$outfile" + builtin echo + builtin echo To share this with OMZ developers, post it as a gist on GitHub + builtin echo at "https://gist.github.com" and share the link to the gist. + builtin echo + builtin echo "WARNING: This dump file contains all your zsh and omz configuration files," + builtin echo "so don't share it publicly if there's sensitive information in them." + builtin echo + +} + +function _omz_diag_dump_one_big_text() { + local program programs progfile md5 + + builtin echo oh-my-zsh diagnostic dump + builtin echo + builtin echo $outfile + builtin echo + + # Basic system and zsh information + command date + command uname -a + builtin echo OSTYPE=$OSTYPE + builtin echo ZSH_VERSION=$ZSH_VERSION + builtin echo User: $USERNAME + builtin echo umask: $(umask) + builtin echo + _omz_diag_dump_os_specific_version + builtin echo + + # Installed programs + programs=(sh zsh ksh bash sed cat grep ls find git posh) + local progfile="" extra_str="" sha_str="" + for program in $programs; do + extra_str="" sha_str="" + progfile=$(builtin which $program) + if [[ $? == 0 ]]; then + if [[ -e $progfile ]]; then + if builtin whence shasum &>/dev/null; then + sha_str=($(command shasum $progfile)) + sha_str=$sha_str[1] + extra_str+=" SHA $sha_str" + fi + if [[ -h "$progfile" ]]; then + extra_str+=" ( -> ${progfile:A} )" + fi + fi + builtin printf '%-9s %-20s %s\n' "$program is" "$progfile" "$extra_str" + else + builtin echo "$program: not found" + fi + done + builtin echo + builtin echo Command Versions: + builtin echo "zsh: $(zsh --version)" + builtin echo "this zsh session: $ZSH_VERSION" + builtin echo "bash: $(bash --version | command grep bash)" + builtin echo "git: $(git --version)" + builtin echo "grep: $(grep --version)" + builtin echo + + # Core command definitions + _omz_diag_dump_check_core_commands || return 1 + builtin echo + + # ZSH Process state + builtin echo Process state: + builtin echo pwd: $PWD + if builtin whence pstree &>/dev/null; then + builtin echo Process tree for this shell: + pstree -p $$ + else + ps -fT + fi + builtin set | command grep -a '^\(ZSH\|plugins\|TERM\|LC_\|LANG\|precmd\|chpwd\|preexec\|FPATH\|TTY\|DISPLAY\|PATH\)\|OMZ' + builtin echo + #TODO: Should this include `env` instead of or in addition to `export`? + builtin echo Exported: + builtin echo $(builtin export | command sed 's/=.*//') + builtin echo + builtin echo Locale: + command locale + builtin echo + + # Zsh installation and configuration + builtin echo Zsh configuration: + builtin echo setopt: $(builtin setopt) + builtin echo + builtin echo zstyle: + builtin zstyle + builtin echo + builtin echo 'compaudit output:' + compaudit + builtin echo + builtin echo '$fpath directories:' + command ls -lad $fpath + builtin echo + + # Oh-my-zsh installation + builtin echo oh-my-zsh installation: + command ls -ld ~/.z* + command ls -ld ~/.oh* + builtin echo + builtin echo oh-my-zsh git state: + (builtin cd $ZSH && builtin echo "HEAD: $(git rev-parse HEAD)" && git remote -v && git status | command grep "[^[:space:]]") + if [[ $verbose -ge 1 ]]; then + (builtin cd $ZSH && git reflog --date=default | command grep pull) + fi + builtin echo + if [[ -e $ZSH_CUSTOM ]]; then + local custom_dir=$ZSH_CUSTOM + if [[ -h $custom_dir ]]; then + custom_dir=$(builtin cd $custom_dir && pwd -P) + fi + builtin echo "oh-my-zsh custom dir:" + builtin echo " $ZSH_CUSTOM ($custom_dir)" + (builtin cd ${custom_dir:h} && command find ${custom_dir:t} -name .git -prune -o -print) + builtin echo + fi + + # Key binding and terminal info + if [[ $verbose -ge 1 ]]; then + builtin echo "bindkey:" + builtin bindkey + builtin echo + builtin echo "infocmp:" + command infocmp -L + builtin echo + fi + + # Configuration file info + local zdotdir=${ZDOTDIR:-$HOME} + builtin echo "Zsh configuration files:" + local cfgfile cfgfiles + # Some files for bash that zsh does not use are intentionally included + # to help with diagnosing behavior differences between bash and zsh + cfgfiles=( /etc/zshenv /etc/zprofile /etc/zshrc /etc/zlogin /etc/zlogout + $zdotdir/.zshenv $zdotdir/.zprofile $zdotdir/.zshrc $zdotdir/.zlogin $zdotdir/.zlogout + ~/.zsh.pre-oh-my-zsh + /etc/bashrc /etc/profile ~/.bashrc ~/.profile ~/.bash_profile ~/.bash_logout ) + command ls -lad $cfgfiles 2>&1 + builtin echo + if [[ $verbose -ge 1 ]]; then + for cfgfile in $cfgfiles; do + _omz_diag_dump_echo_file_w_header $cfgfile + done + fi + builtin echo + builtin echo "Zsh compdump files:" + local dumpfile dumpfiles + command ls -lad $zdotdir/.zcompdump* + dumpfiles=( $zdotdir/.zcompdump*(N) ) + if [[ $verbose -ge 2 ]]; then + for dumpfile in $dumpfiles; do + _omz_diag_dump_echo_file_w_header $dumpfile + done + fi + +} + +function _omz_diag_dump_check_core_commands() { + builtin echo "Core command check:" + local redefined name builtins externals reserved_words + redefined=() + # All the zsh non-module builtin commands + # These are taken from the zsh reference manual for 5.0.2 + # Commands from modules should not be included. + # (For back-compatibility, if any of these are newish, they should be removed, + # or at least made conditional on the version of the current running zsh.) + # "history" is also excluded because OMZ is known to redefine that + reserved_words=( do done esac then elif else fi for case if while function + repeat time until select coproc nocorrect foreach end '!' '[[' '{' '}' + ) + builtins=( alias autoload bg bindkey break builtin bye cd chdir command + comparguments compcall compctl compdescribe compfiles compgroups compquote comptags + comptry compvalues continue dirs disable disown echo echotc echoti emulate + enable eval exec exit false fc fg functions getln getopts hash + jobs kill let limit log logout noglob popd print printf + pushd pushln pwd r read rehash return sched set setopt shift + source suspend test times trap true ttyctl type ulimit umask unalias + unfunction unhash unlimit unset unsetopt vared wait whence where which zcompile + zle zmodload zparseopts zregexparse zstyle ) + if is-at-least 5.1; then + reserved_word+=( declare export integer float local readonly typeset ) + else + builtins+=( declare export integer float local readonly typeset ) + fi + builtins_fatal=( builtin command local ) + externals=( zsh ) + for name in $reserved_words; do + if [[ $(builtin whence -w $name) != "$name: reserved" ]]; then + builtin echo "reserved word '$name' has been redefined" + builtin which $name + redefined+=$name + fi + done + for name in $builtins; do + if [[ $(builtin whence -w $name) != "$name: builtin" ]]; then + builtin echo "builtin '$name' has been redefined" + builtin which $name + redefined+=$name + fi + done + for name in $externals; do + if [[ $(builtin whence -w $name) != "$name: command" ]]; then + builtin echo "command '$name' has been redefined" + builtin which $name + redefined+=$name + fi + done + + if [[ -n "$redefined" ]]; then + builtin echo "SOME CORE COMMANDS HAVE BEEN REDEFINED: $redefined" + else + builtin echo "All core commands are defined normally" + fi + +} + +function _omz_diag_dump_echo_file_w_header() { + local file=$1 + if [[ ( -f $file || -h $file ) ]]; then + builtin echo "========== $file ==========" + if [[ -h $file ]]; then + builtin echo "========== ( => ${file:A} ) ==========" + fi + command cat $file + builtin echo "========== end $file ==========" + builtin echo + elif [[ -d $file ]]; then + builtin echo "File '$file' is a directory" + elif [[ ! -e $file ]]; then + builtin echo "File '$file' does not exist" + else + command ls -lad "$file" + fi +} + +function _omz_diag_dump_os_specific_version() { + local osname osver version_file version_files + case "$OSTYPE" in + darwin*) + osname=$(command sw_vers -productName) + osver=$(command sw_vers -productVersion) + builtin echo "OS Version: $osname $osver build $(sw_vers -buildVersion)" + ;; + cygwin) + command systeminfo | command head -n 4 | command tail -n 2 + ;; + esac + + if builtin which lsb_release >/dev/null; then + builtin echo "OS Release: $(command lsb_release -s -d)" + fi + + version_files=( /etc/*-release(N) /etc/*-version(N) /etc/*_version(N) ) + for version_file in $version_files; do + builtin echo "$version_file:" + command cat "$version_file" + builtin echo + done +} + diff --git a/dot_oh-my-zsh/lib/directories.zsh b/dot_oh-my-zsh/lib/directories.zsh new file mode 100644 index 0000000..c62f564 --- /dev/null +++ b/dot_oh-my-zsh/lib/directories.zsh @@ -0,0 +1,38 @@ +# Changing/making/removing directory +setopt auto_pushd +setopt pushd_ignore_dups +setopt pushdminus + +alias -g ...='../..' +alias -g ....='../../..' +alias -g .....='../../../..' +alias -g ......='../../../../..' + +alias -- -='cd -' +alias 1='cd -1' +alias 2='cd -2' +alias 3='cd -3' +alias 4='cd -4' +alias 5='cd -5' +alias 6='cd -6' +alias 7='cd -7' +alias 8='cd -8' +alias 9='cd -9' + +alias md='mkdir -p' +alias rd=rmdir + +function d () { + if [[ -n $1 ]]; then + dirs "$@" + else + dirs -v | head -n 10 + fi +} +compdef _dirs d + +# List directory contents +alias lsa='ls -lah' +alias l='ls -lah' +alias ll='ls -lh' +alias la='ls -lAh' diff --git a/dot_oh-my-zsh/lib/functions.zsh b/dot_oh-my-zsh/lib/functions.zsh new file mode 100644 index 0000000..6e1faa6 --- /dev/null +++ b/dot_oh-my-zsh/lib/functions.zsh @@ -0,0 +1,255 @@ +function zsh_stats() { + fc -l 1 \ + | awk '{ CMD[$2]++; count++; } END { for (a in CMD) print CMD[a] " " CMD[a]*100/count "% " a }' \ + | grep -v "./" | sort -nr | head -n 20 | column -c3 -s " " -t | nl +} + +function uninstall_oh_my_zsh() { + env ZSH="$ZSH" sh "$ZSH/tools/uninstall.sh" +} + +function upgrade_oh_my_zsh() { + echo >&2 "${fg[yellow]}Note: \`$0\` is deprecated. Use \`omz update\` instead.$reset_color" + omz update +} + +function open_command() { + local open_cmd + + # define the open command + case "$OSTYPE" in + darwin*) open_cmd='open' ;; + cygwin*) open_cmd='cygstart' ;; + linux*) [[ "$(uname -r)" != *icrosoft* ]] && open_cmd='nohup xdg-open' || { + open_cmd='cmd.exe /c start ""' + [[ -e "$1" ]] && { 1="$(wslpath -w "${1:a}")" || return 1 } + } ;; + msys*) open_cmd='start ""' ;; + *) echo "Platform $OSTYPE not supported" + return 1 + ;; + esac + + ${=open_cmd} "$@" &>/dev/null +} + +# take functions + +# mkcd is equivalent to takedir +function mkcd takedir() { + mkdir -p $@ && cd ${@:$#} +} + +function takeurl() { + local data thedir + data="$(mktemp)" + curl -L "$1" > "$data" + tar xf "$data" + thedir="$(tar tf "$data" | head -n 1)" + rm "$data" + cd "$thedir" +} + +function takegit() { + git clone "$1" + cd "$(basename ${1%%.git})" +} + +function take() { + if [[ $1 =~ ^(https?|ftp).*\.(tar\.(gz|bz2|xz)|tgz)$ ]]; then + takeurl "$1" + elif [[ $1 =~ ^([A-Za-z0-9]\+@|https?|git|ssh|ftps?|rsync).*\.git/?$ ]]; then + takegit "$1" + else + takedir "$@" + fi +} + +# +# Get the value of an alias. +# +# Arguments: +# 1. alias - The alias to get its value from +# STDOUT: +# The value of alias $1 (if it has one). +# Return value: +# 0 if the alias was found, +# 1 if it does not exist +# +function alias_value() { + (( $+aliases[$1] )) && echo $aliases[$1] +} + +# +# Try to get the value of an alias, +# otherwise return the input. +# +# Arguments: +# 1. alias - The alias to get its value from +# STDOUT: +# The value of alias $1, or $1 if there is no alias $1. +# Return value: +# Always 0 +# +function try_alias_value() { + alias_value "$1" || echo "$1" +} + +# +# Set variable "$1" to default value "$2" if "$1" is not yet defined. +# +# Arguments: +# 1. name - The variable to set +# 2. val - The default value +# Return value: +# 0 if the variable exists, 3 if it was set +# +function default() { + (( $+parameters[$1] )) && return 0 + typeset -g "$1"="$2" && return 3 +} + +# +# Set environment variable "$1" to default value "$2" if "$1" is not yet defined. +# +# Arguments: +# 1. name - The env variable to set +# 2. val - The default value +# Return value: +# 0 if the env variable exists, 3 if it was set +# +function env_default() { + [[ ${parameters[$1]} = *-export* ]] && return 0 + export "$1=$2" && return 3 +} + + +# Required for $langinfo +zmodload zsh/langinfo + +# URL-encode a string +# +# Encodes a string using RFC 2396 URL-encoding (%-escaped). +# See: https://www.ietf.org/rfc/rfc2396.txt +# +# By default, reserved characters and unreserved "mark" characters are +# not escaped by this function. This allows the common usage of passing +# an entire URL in, and encoding just special characters in it, with +# the expectation that reserved and mark characters are used appropriately. +# The -r and -m options turn on escaping of the reserved and mark characters, +# respectively, which allows arbitrary strings to be fully escaped for +# embedding inside URLs, where reserved characters might be misinterpreted. +# +# Prints the encoded string on stdout. +# Returns nonzero if encoding failed. +# +# Usage: +# omz_urlencode [-r] [-m] [-P] [ ...] +# +# -r causes reserved characters (;/?:@&=+$,) to be escaped +# +# -m causes "mark" characters (_.!~*''()-) to be escaped +# +# -P causes spaces to be encoded as '%20' instead of '+' +function omz_urlencode() { + emulate -L zsh + local -a opts + zparseopts -D -E -a opts r m P + + local in_str="$@" + local url_str="" + local spaces_as_plus + if [[ -z $opts[(r)-P] ]]; then spaces_as_plus=1; fi + local str="$in_str" + + # URLs must use UTF-8 encoding; convert str to UTF-8 if required + local encoding=$langinfo[CODESET] + local safe_encodings + safe_encodings=(UTF-8 utf8 US-ASCII) + if [[ -z ${safe_encodings[(r)$encoding]} ]]; then + str=$(echo -E "$str" | iconv -f $encoding -t UTF-8) + if [[ $? != 0 ]]; then + echo "Error converting string from $encoding to UTF-8" >&2 + return 1 + fi + fi + + # Use LC_CTYPE=C to process text byte-by-byte + local i byte ord LC_ALL=C + export LC_ALL + local reserved=';/?:@&=+$,' + local mark='_.!~*''()-' + local dont_escape="[A-Za-z0-9" + if [[ -z $opts[(r)-r] ]]; then + dont_escape+=$reserved + fi + # $mark must be last because of the "-" + if [[ -z $opts[(r)-m] ]]; then + dont_escape+=$mark + fi + dont_escape+="]" + + # Implemented to use a single printf call and avoid subshells in the loop, + # for performance (primarily on Windows). + local url_str="" + for (( i = 1; i <= ${#str}; ++i )); do + byte="$str[i]" + if [[ "$byte" =~ "$dont_escape" ]]; then + url_str+="$byte" + else + if [[ "$byte" == " " && -n $spaces_as_plus ]]; then + url_str+="+" + else + ord=$(( [##16] #byte )) + url_str+="%$ord" + fi + fi + done + echo -E "$url_str" +} + +# URL-decode a string +# +# Decodes a RFC 2396 URL-encoded (%-escaped) string. +# This decodes the '+' and '%' escapes in the input string, and leaves +# other characters unchanged. Does not enforce that the input is a +# valid URL-encoded string. This is a convenience to allow callers to +# pass in a full URL or similar strings and decode them for human +# presentation. +# +# Outputs the encoded string on stdout. +# Returns nonzero if encoding failed. +# +# Usage: +# omz_urldecode - prints decoded string followed by a newline +function omz_urldecode { + emulate -L zsh + local encoded_url=$1 + + # Work bytewise, since URLs escape UTF-8 octets + local caller_encoding=$langinfo[CODESET] + local LC_ALL=C + export LC_ALL + + # Change + back to ' ' + local tmp=${encoded_url:gs/+/ /} + # Protect other escapes to pass through the printf unchanged + tmp=${tmp:gs/\\/\\\\/} + # Handle %-escapes by turning them into `\xXX` printf escapes + tmp=${tmp:gs/%/\\x/} + local decoded="$(printf -- "$tmp")" + + # Now we have a UTF-8 encoded string in the variable. We need to re-encode + # it if caller is in a non-UTF-8 locale. + local -a safe_encodings + safe_encodings=(UTF-8 utf8 US-ASCII) + if [[ -z ${safe_encodings[(r)$caller_encoding]} ]]; then + decoded=$(echo -E "$decoded" | iconv -f UTF-8 -t $caller_encoding) + if [[ $? != 0 ]]; then + echo "Error converting string from UTF-8 to $caller_encoding" >&2 + return 1 + fi + fi + + echo -E "$decoded" +} diff --git a/dot_oh-my-zsh/lib/git.zsh b/dot_oh-my-zsh/lib/git.zsh new file mode 100644 index 0000000..f049f73 --- /dev/null +++ b/dot_oh-my-zsh/lib/git.zsh @@ -0,0 +1,282 @@ +# The git prompt's git commands are read-only and should not interfere with +# other processes. This environment variable is equivalent to running with `git +# --no-optional-locks`, but falls back gracefully for older versions of git. +# See git(1) for and git-status(1) for a description of that flag. +# +# We wrap in a local function instead of exporting the variable directly in +# order to avoid interfering with manually-run git commands by the user. +function __git_prompt_git() { + GIT_OPTIONAL_LOCKS=0 command git "$@" +} + +function git_prompt_info() { + # If we are on a folder not tracked by git, get out. + # Otherwise, check for hide-info at global and local repository level + if ! __git_prompt_git rev-parse --git-dir &> /dev/null \ + || [[ "$(__git_prompt_git config --get oh-my-zsh.hide-info 2>/dev/null)" == 1 ]]; then + return 0 + fi + + local ref + ref=$(__git_prompt_git symbolic-ref --short HEAD 2> /dev/null) \ + || ref=$(__git_prompt_git describe --tags --exact-match HEAD 2> /dev/null) \ + || ref=$(__git_prompt_git rev-parse --short HEAD 2> /dev/null) \ + || return 0 + + # Use global ZSH_THEME_GIT_SHOW_UPSTREAM=1 for including upstream remote info + local upstream + if (( ${+ZSH_THEME_GIT_SHOW_UPSTREAM} )); then + upstream=$(__git_prompt_git rev-parse --abbrev-ref --symbolic-full-name "@{upstream}" 2>/dev/null) \ + && upstream=" -> ${upstream}" + fi + + echo "${ZSH_THEME_GIT_PROMPT_PREFIX}${ref:gs/%/%%}${upstream:gs/%/%%}$(parse_git_dirty)${ZSH_THEME_GIT_PROMPT_SUFFIX}" +} + +# Checks if working tree is dirty +function parse_git_dirty() { + local STATUS + local -a FLAGS + FLAGS=('--porcelain') + if [[ "$(__git_prompt_git config --get oh-my-zsh.hide-dirty)" != "1" ]]; then + if [[ "${DISABLE_UNTRACKED_FILES_DIRTY:-}" == "true" ]]; then + FLAGS+='--untracked-files=no' + fi + case "${GIT_STATUS_IGNORE_SUBMODULES:-}" in + git) + # let git decide (this respects per-repo config in .gitmodules) + ;; + *) + # if unset: ignore dirty submodules + # other values are passed to --ignore-submodules + FLAGS+="--ignore-submodules=${GIT_STATUS_IGNORE_SUBMODULES:-dirty}" + ;; + esac + STATUS=$(__git_prompt_git status ${FLAGS} 2> /dev/null | tail -n 1) + fi + if [[ -n $STATUS ]]; then + echo "$ZSH_THEME_GIT_PROMPT_DIRTY" + else + echo "$ZSH_THEME_GIT_PROMPT_CLEAN" + fi +} + +# Gets the difference between the local and remote branches +function git_remote_status() { + local remote ahead behind git_remote_status git_remote_status_detailed + remote=${$(__git_prompt_git rev-parse --verify ${hook_com[branch]}@{upstream} --symbolic-full-name 2>/dev/null)/refs\/remotes\/} + if [[ -n ${remote} ]]; then + ahead=$(__git_prompt_git rev-list ${hook_com[branch]}@{upstream}..HEAD 2>/dev/null | wc -l) + behind=$(__git_prompt_git rev-list HEAD..${hook_com[branch]}@{upstream} 2>/dev/null | wc -l) + + if [[ $ahead -eq 0 ]] && [[ $behind -eq 0 ]]; then + git_remote_status="$ZSH_THEME_GIT_PROMPT_EQUAL_REMOTE" + elif [[ $ahead -gt 0 ]] && [[ $behind -eq 0 ]]; then + git_remote_status="$ZSH_THEME_GIT_PROMPT_AHEAD_REMOTE" + git_remote_status_detailed="$ZSH_THEME_GIT_PROMPT_AHEAD_REMOTE_COLOR$ZSH_THEME_GIT_PROMPT_AHEAD_REMOTE$((ahead))%{$reset_color%}" + elif [[ $behind -gt 0 ]] && [[ $ahead -eq 0 ]]; then + git_remote_status="$ZSH_THEME_GIT_PROMPT_BEHIND_REMOTE" + git_remote_status_detailed="$ZSH_THEME_GIT_PROMPT_BEHIND_REMOTE_COLOR$ZSH_THEME_GIT_PROMPT_BEHIND_REMOTE$((behind))%{$reset_color%}" + elif [[ $ahead -gt 0 ]] && [[ $behind -gt 0 ]]; then + git_remote_status="$ZSH_THEME_GIT_PROMPT_DIVERGED_REMOTE" + git_remote_status_detailed="$ZSH_THEME_GIT_PROMPT_AHEAD_REMOTE_COLOR$ZSH_THEME_GIT_PROMPT_AHEAD_REMOTE$((ahead))%{$reset_color%}$ZSH_THEME_GIT_PROMPT_BEHIND_REMOTE_COLOR$ZSH_THEME_GIT_PROMPT_BEHIND_REMOTE$((behind))%{$reset_color%}" + fi + + if [[ -n $ZSH_THEME_GIT_PROMPT_REMOTE_STATUS_DETAILED ]]; then + git_remote_status="$ZSH_THEME_GIT_PROMPT_REMOTE_STATUS_PREFIX${remote:gs/%/%%}$git_remote_status_detailed$ZSH_THEME_GIT_PROMPT_REMOTE_STATUS_SUFFIX" + fi + + echo $git_remote_status + fi +} + +# Outputs the name of the current branch +# Usage example: git pull origin $(git_current_branch) +# Using '--quiet' with 'symbolic-ref' will not cause a fatal error (128) if +# it's not a symbolic ref, but in a Git repo. +function git_current_branch() { + local ref + ref=$(__git_prompt_git symbolic-ref --quiet HEAD 2> /dev/null) + local ret=$? + if [[ $ret != 0 ]]; then + [[ $ret == 128 ]] && return # no git repo. + ref=$(__git_prompt_git rev-parse --short HEAD 2> /dev/null) || return + fi + echo ${ref#refs/heads/} +} + + +# Gets the number of commits ahead from remote +function git_commits_ahead() { + if __git_prompt_git rev-parse --git-dir &>/dev/null; then + local commits="$(__git_prompt_git rev-list --count @{upstream}..HEAD 2>/dev/null)" + if [[ -n "$commits" && "$commits" != 0 ]]; then + echo "$ZSH_THEME_GIT_COMMITS_AHEAD_PREFIX$commits$ZSH_THEME_GIT_COMMITS_AHEAD_SUFFIX" + fi + fi +} + +# Gets the number of commits behind remote +function git_commits_behind() { + if __git_prompt_git rev-parse --git-dir &>/dev/null; then + local commits="$(__git_prompt_git rev-list --count HEAD..@{upstream} 2>/dev/null)" + if [[ -n "$commits" && "$commits" != 0 ]]; then + echo "$ZSH_THEME_GIT_COMMITS_BEHIND_PREFIX$commits$ZSH_THEME_GIT_COMMITS_BEHIND_SUFFIX" + fi + fi +} + +# Outputs if current branch is ahead of remote +function git_prompt_ahead() { + if [[ -n "$(__git_prompt_git rev-list origin/$(git_current_branch)..HEAD 2> /dev/null)" ]]; then + echo "$ZSH_THEME_GIT_PROMPT_AHEAD" + fi +} + +# Outputs if current branch is behind remote +function git_prompt_behind() { + if [[ -n "$(__git_prompt_git rev-list HEAD..origin/$(git_current_branch) 2> /dev/null)" ]]; then + echo "$ZSH_THEME_GIT_PROMPT_BEHIND" + fi +} + +# Outputs if current branch exists on remote or not +function git_prompt_remote() { + if [[ -n "$(__git_prompt_git show-ref origin/$(git_current_branch) 2> /dev/null)" ]]; then + echo "$ZSH_THEME_GIT_PROMPT_REMOTE_EXISTS" + else + echo "$ZSH_THEME_GIT_PROMPT_REMOTE_MISSING" + fi +} + +# Formats prompt string for current git commit short SHA +function git_prompt_short_sha() { + local SHA + SHA=$(__git_prompt_git rev-parse --short HEAD 2> /dev/null) && echo "$ZSH_THEME_GIT_PROMPT_SHA_BEFORE$SHA$ZSH_THEME_GIT_PROMPT_SHA_AFTER" +} + +# Formats prompt string for current git commit long SHA +function git_prompt_long_sha() { + local SHA + SHA=$(__git_prompt_git rev-parse HEAD 2> /dev/null) && echo "$ZSH_THEME_GIT_PROMPT_SHA_BEFORE$SHA$ZSH_THEME_GIT_PROMPT_SHA_AFTER" +} + +function git_prompt_status() { + [[ "$(__git_prompt_git config --get oh-my-zsh.hide-status 2>/dev/null)" = 1 ]] && return + + # Maps a git status prefix to an internal constant + # This cannot use the prompt constants, as they may be empty + local -A prefix_constant_map + prefix_constant_map=( + '\?\? ' 'UNTRACKED' + 'A ' 'ADDED' + 'M ' 'ADDED' + 'MM ' 'MODIFIED' + ' M ' 'MODIFIED' + 'AM ' 'MODIFIED' + ' T ' 'MODIFIED' + 'R ' 'RENAMED' + ' D ' 'DELETED' + 'D ' 'DELETED' + 'UU ' 'UNMERGED' + 'ahead' 'AHEAD' + 'behind' 'BEHIND' + 'diverged' 'DIVERGED' + 'stashed' 'STASHED' + ) + + # Maps the internal constant to the prompt theme + local -A constant_prompt_map + constant_prompt_map=( + 'UNTRACKED' "$ZSH_THEME_GIT_PROMPT_UNTRACKED" + 'ADDED' "$ZSH_THEME_GIT_PROMPT_ADDED" + 'MODIFIED' "$ZSH_THEME_GIT_PROMPT_MODIFIED" + 'RENAMED' "$ZSH_THEME_GIT_PROMPT_RENAMED" + 'DELETED' "$ZSH_THEME_GIT_PROMPT_DELETED" + 'UNMERGED' "$ZSH_THEME_GIT_PROMPT_UNMERGED" + 'AHEAD' "$ZSH_THEME_GIT_PROMPT_AHEAD" + 'BEHIND' "$ZSH_THEME_GIT_PROMPT_BEHIND" + 'DIVERGED' "$ZSH_THEME_GIT_PROMPT_DIVERGED" + 'STASHED' "$ZSH_THEME_GIT_PROMPT_STASHED" + ) + + # The order that the prompt displays should be added to the prompt + local status_constants + status_constants=( + UNTRACKED ADDED MODIFIED RENAMED DELETED + STASHED UNMERGED AHEAD BEHIND DIVERGED + ) + + local status_text + status_text="$(__git_prompt_git status --porcelain -b 2> /dev/null)" + + # Don't continue on a catastrophic failure + if [[ $? -eq 128 ]]; then + return 1 + fi + + # A lookup table of each git status encountered + local -A statuses_seen + + if __git_prompt_git rev-parse --verify refs/stash &>/dev/null; then + statuses_seen[STASHED]=1 + fi + + local status_lines + status_lines=("${(@f)${status_text}}") + + # If the tracking line exists, get and parse it + if [[ "$status_lines[1]" =~ "^## [^ ]+ \[(.*)\]" ]]; then + local branch_statuses + branch_statuses=("${(@s/,/)match}") + for branch_status in $branch_statuses; do + if [[ ! $branch_status =~ "(behind|diverged|ahead) ([0-9]+)?" ]]; then + continue + fi + local last_parsed_status=$prefix_constant_map[$match[1]] + statuses_seen[$last_parsed_status]=$match[2] + done + fi + + # For each status prefix, do a regex comparison + for status_prefix in ${(k)prefix_constant_map}; do + local status_constant="${prefix_constant_map[$status_prefix]}" + local status_regex=$'(^|\n)'"$status_prefix" + + if [[ "$status_text" =~ $status_regex ]]; then + statuses_seen[$status_constant]=1 + fi + done + + # Display the seen statuses in the order specified + local status_prompt + for status_constant in $status_constants; do + if (( ${+statuses_seen[$status_constant]} )); then + local next_display=$constant_prompt_map[$status_constant] + status_prompt="$next_display$status_prompt" + fi + done + + echo $status_prompt +} + +# Outputs the name of the current user +# Usage example: $(git_current_user_name) +function git_current_user_name() { + __git_prompt_git config user.name 2>/dev/null +} + +# Outputs the email of the current user +# Usage example: $(git_current_user_email) +function git_current_user_email() { + __git_prompt_git config user.email 2>/dev/null +} + +# Output the name of the root directory of the git repository +# Usage example: $(git_repo_name) +function git_repo_name() { + local repo_path + if repo_path="$(__git_prompt_git rev-parse --show-toplevel 2>/dev/null)" && [[ -n "$repo_path" ]]; then + echo ${repo_path:t} + fi +} diff --git a/dot_oh-my-zsh/lib/grep.zsh b/dot_oh-my-zsh/lib/grep.zsh new file mode 100644 index 0000000..54e0f69 --- /dev/null +++ b/dot_oh-my-zsh/lib/grep.zsh @@ -0,0 +1,41 @@ +__GREP_CACHE_FILE="$ZSH_CACHE_DIR"/grep-alias + +# See if there's a cache file modified in the last day +__GREP_ALIAS_CACHES=("$__GREP_CACHE_FILE"(Nm-1)) +if [[ -n "$__GREP_ALIAS_CACHES" ]]; then + source "$__GREP_CACHE_FILE" +else + grep-flags-available() { + command grep "$@" "" &>/dev/null <<< "" + } + + # Ignore these folders (if the necessary grep flags are available) + EXC_FOLDERS="{.bzr,CVS,.git,.hg,.svn,.idea,.tox}" + + # Check for --exclude-dir, otherwise check for --exclude. If --exclude + # isn't available, --color won't be either (they were released at the same + # time (v2.5): https://git.savannah.gnu.org/cgit/grep.git/tree/NEWS?id=1236f007 + if grep-flags-available --color=auto --exclude-dir=.cvs; then + GREP_OPTIONS="--color=auto --exclude-dir=$EXC_FOLDERS" + elif grep-flags-available --color=auto --exclude=.cvs; then + GREP_OPTIONS="--color=auto --exclude=$EXC_FOLDERS" + fi + + if [[ -n "$GREP_OPTIONS" ]]; then + # export grep, egrep and fgrep settings + alias grep="grep $GREP_OPTIONS" + alias egrep="grep -E $GREP_OPTIONS" + alias fgrep="grep -F $GREP_OPTIONS" + + # write to cache file if cache directory is writable + if [[ -w "$ZSH_CACHE_DIR" ]]; then + alias -L grep egrep fgrep >| "$__GREP_CACHE_FILE" + fi + fi + + # Clean up + unset GREP_OPTIONS EXC_FOLDERS + unfunction grep-flags-available +fi + +unset __GREP_CACHE_FILE __GREP_ALIAS_CACHES diff --git a/dot_oh-my-zsh/lib/history.zsh b/dot_oh-my-zsh/lib/history.zsh new file mode 100644 index 0000000..7940769 --- /dev/null +++ b/dot_oh-my-zsh/lib/history.zsh @@ -0,0 +1,40 @@ +## History wrapper +function omz_history { + local clear list + zparseopts -E c=clear l=list + + if [[ -n "$clear" ]]; then + # if -c provided, clobber the history file + echo -n >| "$HISTFILE" + fc -p "$HISTFILE" + echo >&2 History file deleted. + elif [[ -n "$list" ]]; then + # if -l provided, run as if calling `fc' directly + builtin fc "$@" + else + # unless a number is provided, show all history events (starting from 1) + [[ ${@[-1]-} = *[0-9]* ]] && builtin fc -l "$@" || builtin fc -l "$@" 1 + fi +} + +# Timestamp format +case ${HIST_STAMPS-} in + "mm/dd/yyyy") alias history='omz_history -f' ;; + "dd.mm.yyyy") alias history='omz_history -E' ;; + "yyyy-mm-dd") alias history='omz_history -i' ;; + "") alias history='omz_history' ;; + *) alias history="omz_history -t '$HIST_STAMPS'" ;; +esac + +## History file configuration +[ -z "$HISTFILE" ] && HISTFILE="$HOME/.zsh_history" +[ "$HISTSIZE" -lt 50000 ] && HISTSIZE=50000 +[ "$SAVEHIST" -lt 10000 ] && SAVEHIST=10000 + +## History command configuration +setopt extended_history # record timestamp of command in HISTFILE +setopt hist_expire_dups_first # delete duplicates first when HISTFILE size exceeds HISTSIZE +setopt hist_ignore_dups # ignore duplicated commands history list +setopt hist_ignore_space # ignore commands that start with space +setopt hist_verify # show command with history expansion to user before running it +setopt share_history # share command history data diff --git a/dot_oh-my-zsh/lib/key-bindings.zsh b/dot_oh-my-zsh/lib/key-bindings.zsh new file mode 100644 index 0000000..aaa7304 --- /dev/null +++ b/dot_oh-my-zsh/lib/key-bindings.zsh @@ -0,0 +1,138 @@ +# http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html +# http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Zle-Builtins +# http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Standard-Widgets + +# Make sure that the terminal is in application mode when zle is active, since +# only then values from $terminfo are valid +if (( ${+terminfo[smkx]} )) && (( ${+terminfo[rmkx]} )); then + function zle-line-init() { + echoti smkx + } + function zle-line-finish() { + echoti rmkx + } + zle -N zle-line-init + zle -N zle-line-finish +fi + +# Use emacs key bindings +bindkey -e + +# [PageUp] - Up a line of history +if [[ -n "${terminfo[kpp]}" ]]; then + bindkey -M emacs "${terminfo[kpp]}" up-line-or-history + bindkey -M viins "${terminfo[kpp]}" up-line-or-history + bindkey -M vicmd "${terminfo[kpp]}" up-line-or-history +fi +# [PageDown] - Down a line of history +if [[ -n "${terminfo[knp]}" ]]; then + bindkey -M emacs "${terminfo[knp]}" down-line-or-history + bindkey -M viins "${terminfo[knp]}" down-line-or-history + bindkey -M vicmd "${terminfo[knp]}" down-line-or-history +fi + +# Start typing + [Up-Arrow] - fuzzy find history forward +if [[ -n "${terminfo[kcuu1]}" ]]; then + autoload -U up-line-or-beginning-search + zle -N up-line-or-beginning-search + + bindkey -M emacs "${terminfo[kcuu1]}" up-line-or-beginning-search + bindkey -M viins "${terminfo[kcuu1]}" up-line-or-beginning-search + bindkey -M vicmd "${terminfo[kcuu1]}" up-line-or-beginning-search +fi +# Start typing + [Down-Arrow] - fuzzy find history backward +if [[ -n "${terminfo[kcud1]}" ]]; then + autoload -U down-line-or-beginning-search + zle -N down-line-or-beginning-search + + bindkey -M emacs "${terminfo[kcud1]}" down-line-or-beginning-search + bindkey -M viins "${terminfo[kcud1]}" down-line-or-beginning-search + bindkey -M vicmd "${terminfo[kcud1]}" down-line-or-beginning-search +fi + +# [Home] - Go to beginning of line +if [[ -n "${terminfo[khome]}" ]]; then + bindkey -M emacs "${terminfo[khome]}" beginning-of-line + bindkey -M viins "${terminfo[khome]}" beginning-of-line + bindkey -M vicmd "${terminfo[khome]}" beginning-of-line +fi +# [End] - Go to end of line +if [[ -n "${terminfo[kend]}" ]]; then + bindkey -M emacs "${terminfo[kend]}" end-of-line + bindkey -M viins "${terminfo[kend]}" end-of-line + bindkey -M vicmd "${terminfo[kend]}" end-of-line +fi + +# [Shift-Tab] - move through the completion menu backwards +if [[ -n "${terminfo[kcbt]}" ]]; then + bindkey -M emacs "${terminfo[kcbt]}" reverse-menu-complete + bindkey -M viins "${terminfo[kcbt]}" reverse-menu-complete + bindkey -M vicmd "${terminfo[kcbt]}" reverse-menu-complete +fi + +# [Backspace] - delete backward +bindkey -M emacs '^?' backward-delete-char +bindkey -M viins '^?' backward-delete-char +bindkey -M vicmd '^?' backward-delete-char +# [Delete] - delete forward +if [[ -n "${terminfo[kdch1]}" ]]; then + bindkey -M emacs "${terminfo[kdch1]}" delete-char + bindkey -M viins "${terminfo[kdch1]}" delete-char + bindkey -M vicmd "${terminfo[kdch1]}" delete-char +else + bindkey -M emacs "^[[3~" delete-char + bindkey -M viins "^[[3~" delete-char + bindkey -M vicmd "^[[3~" delete-char + + bindkey -M emacs "^[3;5~" delete-char + bindkey -M viins "^[3;5~" delete-char + bindkey -M vicmd "^[3;5~" delete-char +fi + +# [Ctrl-Delete] - delete whole forward-word +bindkey -M emacs '^[[3;5~' kill-word +bindkey -M viins '^[[3;5~' kill-word +bindkey -M vicmd '^[[3;5~' kill-word + +# [Ctrl-RightArrow] - move forward one word +bindkey -M emacs '^[[1;5C' forward-word +bindkey -M viins '^[[1;5C' forward-word +bindkey -M vicmd '^[[1;5C' forward-word +# [Ctrl-LeftArrow] - move backward one word +bindkey -M emacs '^[[1;5D' backward-word +bindkey -M viins '^[[1;5D' backward-word +bindkey -M vicmd '^[[1;5D' backward-word + + +bindkey '\ew' kill-region # [Esc-w] - Kill from the cursor to the mark +bindkey -s '\el' 'ls\n' # [Esc-l] - run command: ls +bindkey '^r' history-incremental-search-backward # [Ctrl-r] - Search backward incrementally for a specified string. The string may begin with ^ to anchor the search to the beginning of the line. +bindkey ' ' magic-space # [Space] - don't do history expansion + + +# Edit the current command line in $EDITOR +autoload -U edit-command-line +zle -N edit-command-line +bindkey '\C-x\C-e' edit-command-line + +# file rename magick +bindkey "^[m" copy-prev-shell-word + +# consider emacs keybindings: + +#bindkey -e ## emacs key bindings +# +#bindkey '^[[A' up-line-or-search +#bindkey '^[[B' down-line-or-search +#bindkey '^[^[[C' emacs-forward-word +#bindkey '^[^[[D' emacs-backward-word +# +#bindkey -s '^X^Z' '%-^M' +#bindkey '^[e' expand-cmd-path +#bindkey '^[^I' reverse-menu-complete +#bindkey '^X^N' accept-and-infer-next-history +#bindkey '^W' kill-region +#bindkey '^I' complete-word +## Fix weird sequence that rxvt produces +#bindkey -s '^[[Z' '\t' +# diff --git a/dot_oh-my-zsh/lib/misc.zsh b/dot_oh-my-zsh/lib/misc.zsh new file mode 100644 index 0000000..1f63708 --- /dev/null +++ b/dot_oh-my-zsh/lib/misc.zsh @@ -0,0 +1,35 @@ +autoload -Uz is-at-least + +# *-magic is known buggy in some versions; disable if so +if [[ $DISABLE_MAGIC_FUNCTIONS != true ]]; then + for d in $fpath; do + if [[ -e "$d/url-quote-magic" ]]; then + if is-at-least 5.1; then + autoload -Uz bracketed-paste-magic + zle -N bracketed-paste bracketed-paste-magic + fi + autoload -Uz url-quote-magic + zle -N self-insert url-quote-magic + break + fi + done +fi + +## jobs +setopt long_list_jobs + +env_default 'PAGER' 'less' +env_default 'LESS' '-R' + +## super user alias +alias _='sudo ' + +## more intelligent acking for ubuntu users and no alias for users without ack +if (( $+commands[ack-grep] )); then + alias afind='ack-grep -il' +elif (( $+commands[ack] )); then + alias afind='ack -il' +fi + +# recognize comments +setopt interactivecomments diff --git a/dot_oh-my-zsh/lib/nvm.zsh b/dot_oh-my-zsh/lib/nvm.zsh new file mode 100644 index 0000000..a8989f9 --- /dev/null +++ b/dot_oh-my-zsh/lib/nvm.zsh @@ -0,0 +1,6 @@ +# get the nvm-controlled node.js version +function nvm_prompt_info() { + which nvm &>/dev/null || return + local nvm_prompt=${$(nvm current)#v} + echo "${ZSH_THEME_NVM_PROMPT_PREFIX}${nvm_prompt:gs/%/%%}${ZSH_THEME_NVM_PROMPT_SUFFIX}" +} diff --git a/dot_oh-my-zsh/lib/prompt_info_functions.zsh b/dot_oh-my-zsh/lib/prompt_info_functions.zsh new file mode 100644 index 0000000..e553584 --- /dev/null +++ b/dot_oh-my-zsh/lib/prompt_info_functions.zsh @@ -0,0 +1,43 @@ +# *_prompt_info functions for usage in your prompt +# +# Plugin creators, please add your *_prompt_info function to the list +# of dummy implementations to help theme creators not receiving errors +# without the need of implementing conditional clauses. +# +# See also lib/bzr.zsh, lib/git.zsh and lib/nvm.zsh for +# git_prompt_info, bzr_prompt_info and nvm_prompt_info + +# Dummy implementations that return false to prevent command_not_found +# errors with themes, that implement these functions +# Real implementations will be used when the respective plugins are loaded +function chruby_prompt_info \ + rbenv_prompt_info \ + hg_prompt_info \ + pyenv_prompt_info \ + svn_prompt_info \ + vi_mode_prompt_info \ + virtualenv_prompt_info \ + jenv_prompt_info \ + tf_prompt_info \ +{ + return 1 +} + +# oh-my-zsh supports an rvm prompt by default +# get the name of the rvm ruby version +function rvm_prompt_info() { + [ -f $HOME/.rvm/bin/rvm-prompt ] || return 1 + local rvm_prompt + rvm_prompt=$($HOME/.rvm/bin/rvm-prompt ${=ZSH_THEME_RVM_PROMPT_OPTIONS} 2>/dev/null) + [[ -z "${rvm_prompt}" ]] && return 1 + echo "${ZSH_THEME_RUBY_PROMPT_PREFIX}${rvm_prompt:gs/%/%%}${ZSH_THEME_RUBY_PROMPT_SUFFIX}" +} + +ZSH_THEME_RVM_PROMPT_OPTIONS="i v g" + + +# use this to enable users to see their ruby version, no matter which +# version management system they use +function ruby_prompt_info() { + echo $(rvm_prompt_info || rbenv_prompt_info || chruby_prompt_info) +} diff --git a/dot_oh-my-zsh/lib/spectrum.zsh b/dot_oh-my-zsh/lib/spectrum.zsh new file mode 100644 index 0000000..97f5c36 --- /dev/null +++ b/dot_oh-my-zsh/lib/spectrum.zsh @@ -0,0 +1,37 @@ +# A script to make using 256 colors in zsh less painful. +# P.C. Shyamshankar +# Copied from https://github.com/sykora/etc/blob/master/zsh/functions/spectrum/ + +typeset -AHg FX FG BG + +FX=( + reset "%{%}" + bold "%{%}" no-bold "%{%}" + italic "%{%}" no-italic "%{%}" + underline "%{%}" no-underline "%{%}" + blink "%{%}" no-blink "%{%}" + reverse "%{%}" no-reverse "%{%}" +) + +for color in {000..255}; do + FG[$color]="%{[38;5;${color}m%}" + BG[$color]="%{[48;5;${color}m%}" +done + +# Show all 256 colors with color number +function spectrum_ls() { + setopt localoptions nopromptsubst + local ZSH_SPECTRUM_TEXT=${ZSH_SPECTRUM_TEXT:-Arma virumque cano Troiae qui primus ab oris} + for code in {000..255}; do + print -P -- "$code: ${FG[$code]}${ZSH_SPECTRUM_TEXT}%{$reset_color%}" + done +} + +# Show all 256 colors where the background is set to specific color +function spectrum_bls() { + setopt localoptions nopromptsubst + local ZSH_SPECTRUM_TEXT=${ZSH_SPECTRUM_TEXT:-Arma virumque cano Troiae qui primus ab oris} + for code in {000..255}; do + print -P -- "$code: ${BG[$code]}${ZSH_SPECTRUM_TEXT}%{$reset_color%}" + done +} diff --git a/dot_oh-my-zsh/lib/termsupport.zsh b/dot_oh-my-zsh/lib/termsupport.zsh new file mode 100644 index 0000000..80ca7ef --- /dev/null +++ b/dot_oh-my-zsh/lib/termsupport.zsh @@ -0,0 +1,136 @@ +# Set terminal window and tab/icon title +# +# usage: title short_tab_title [long_window_title] +# +# See: http://www.faqs.org/docs/Linux-mini/Xterm-Title.html#ss3.1 +# Fully supports screen, iterm, and probably most modern xterm and rxvt +# (In screen, only short_tab_title is used) +# Limited support for Apple Terminal (Terminal can't set window and tab separately) +function title { + setopt localoptions nopromptsubst + + # Don't set the title if inside emacs, unless using vterm + [[ -n "${INSIDE_EMACS:-}" && "$INSIDE_EMACS" != vterm ]] && return + + # if $2 is unset use $1 as default + # if it is set and empty, leave it as is + : ${2=$1} + + case "$TERM" in + cygwin|xterm*|putty*|rxvt*|konsole*|ansi|mlterm*|alacritty|st*|foot) + print -Pn "\e]2;${2:q}\a" # set window name + print -Pn "\e]1;${1:q}\a" # set tab name + ;; + screen*|tmux*) + print -Pn "\ek${1:q}\e\\" # set screen hardstatus + ;; + *) + if [[ "$TERM_PROGRAM" == "iTerm.app" ]]; then + print -Pn "\e]2;${2:q}\a" # set window name + print -Pn "\e]1;${1:q}\a" # set tab name + else + # Try to use terminfo to set the title if the feature is available + if (( ${+terminfo[fsl]} && ${+terminfo[tsl]} )); then + print -Pn "${terminfo[tsl]}$1${terminfo[fsl]}" + fi + fi + ;; + esac +} + +ZSH_THEME_TERM_TAB_TITLE_IDLE="%15<..<%~%<<" #15 char left truncated PWD +ZSH_THEME_TERM_TITLE_IDLE="%n@%m:%~" +# Avoid duplication of directory in terminals with independent dir display +if [[ "$TERM_PROGRAM" == Apple_Terminal ]]; then + ZSH_THEME_TERM_TITLE_IDLE="%n@%m" +fi + +# Runs before showing the prompt +function omz_termsupport_precmd { + [[ "${DISABLE_AUTO_TITLE:-}" != true ]] || return + title "$ZSH_THEME_TERM_TAB_TITLE_IDLE" "$ZSH_THEME_TERM_TITLE_IDLE" +} + +# Runs before executing the command +function omz_termsupport_preexec { + [[ "${DISABLE_AUTO_TITLE:-}" != true ]] || return + + emulate -L zsh + setopt extended_glob + + # split command into array of arguments + local -a cmdargs + cmdargs=("${(z)2}") + # if running fg, extract the command from the job description + if [[ "${cmdargs[1]}" = fg ]]; then + # get the job id from the first argument passed to the fg command + local job_id jobspec="${cmdargs[2]#%}" + # logic based on jobs arguments: + # http://zsh.sourceforge.net/Doc/Release/Jobs-_0026-Signals.html#Jobs + # https://www.zsh.org/mla/users/2007/msg00704.html + case "$jobspec" in + <->) # %number argument: + # use the same passed as an argument + job_id=${jobspec} ;; + ""|%|+) # empty, %% or %+ argument: + # use the current job, which appears with a + in $jobstates: + # suspended:+:5071=suspended (tty output) + job_id=${(k)jobstates[(r)*:+:*]} ;; + -) # %- argument: + # use the previous job, which appears with a - in $jobstates: + # suspended:-:6493=suspended (signal) + job_id=${(k)jobstates[(r)*:-:*]} ;; + [?]*) # %?string argument: + # use $jobtexts to match for a job whose command *contains* + job_id=${(k)jobtexts[(r)*${(Q)jobspec}*]} ;; + *) # %string argument: + # use $jobtexts to match for a job whose command *starts with* + job_id=${(k)jobtexts[(r)${(Q)jobspec}*]} ;; + esac + + # override preexec function arguments with job command + if [[ -n "${jobtexts[$job_id]}" ]]; then + 1="${jobtexts[$job_id]}" + 2="${jobtexts[$job_id]}" + fi + fi + + # cmd name only, or if this is sudo or ssh, the next cmd + local CMD="${1[(wr)^(*=*|sudo|ssh|mosh|rake|-*)]:gs/%/%%}" + local LINE="${2:gs/%/%%}" + + title "$CMD" "%100>...>${LINE}%<<" +} + +autoload -Uz add-zsh-hook + +if [[ -z "$INSIDE_EMACS" || "$INSIDE_EMACS" = vterm ]]; then + add-zsh-hook precmd omz_termsupport_precmd + add-zsh-hook preexec omz_termsupport_preexec +fi + +# Keep Apple Terminal.app's current working directory updated +# Based on this answer: https://superuser.com/a/315029 +# With extra fixes to handle multibyte chars and non-UTF-8 locales + +if [[ "$TERM_PROGRAM" == "Apple_Terminal" ]] && [[ -z "$INSIDE_EMACS" ]]; then + # Emits the control sequence to notify Terminal.app of the cwd + # Identifies the directory using a file: URI scheme, including + # the host name to disambiguate local vs. remote paths. + function update_terminalapp_cwd() { + emulate -L zsh + + # Percent-encode the host and path names. + local URL_HOST URL_PATH + URL_HOST="$(omz_urlencode -P $HOST)" || return 1 + URL_PATH="$(omz_urlencode -P $PWD)" || return 1 + + # Undocumented Terminal.app-specific control sequence + printf '\e]7;%s\a' "file://$URL_HOST$URL_PATH" + } + + # Use a precmd hook instead of a chpwd hook to avoid contaminating output + add-zsh-hook precmd update_terminalapp_cwd + # Run once to get initial cwd set + update_terminalapp_cwd +fi diff --git a/dot_oh-my-zsh/lib/theme-and-appearance.zsh b/dot_oh-my-zsh/lib/theme-and-appearance.zsh new file mode 100644 index 0000000..00947f7 --- /dev/null +++ b/dot_oh-my-zsh/lib/theme-and-appearance.zsh @@ -0,0 +1,59 @@ +# ls colors +autoload -U colors && colors + +# Enable ls colors +export LSCOLORS="Gxfxcxdxbxegedabagacad" + +# TODO organise this chaotic logic + +if [[ "$DISABLE_LS_COLORS" != "true" ]]; then + # Find the option for using colors in ls, depending on the version + if [[ "$OSTYPE" == netbsd* ]]; then + # On NetBSD, test if "gls" (GNU ls) is installed (this one supports colors); + # otherwise, leave ls as is, because NetBSD's ls doesn't support -G + gls --color -d . &>/dev/null && alias ls='gls --color=tty' + elif [[ "$OSTYPE" == openbsd* ]]; then + # On OpenBSD, "gls" (ls from GNU coreutils) and "colorls" (ls from base, + # with color and multibyte support) are available from ports. "colorls" + # will be installed on purpose and can't be pulled in by installing + # coreutils, so prefer it to "gls". + gls --color -d . &>/dev/null && alias ls='gls --color=tty' + colorls -G -d . &>/dev/null && alias ls='colorls -G' + elif [[ "$OSTYPE" == (darwin|freebsd)* ]]; then + # this is a good alias, it works by default just using $LSCOLORS + ls -G . &>/dev/null && alias ls='ls -G' + + # only use coreutils ls if there is a dircolors customization present ($LS_COLORS or .dircolors file) + # otherwise, gls will use the default color scheme which is ugly af + [[ -n "$LS_COLORS" || -f "$HOME/.dircolors" ]] && gls --color -d . &>/dev/null && alias ls='gls --color=tty' + else + # For GNU ls, we use the default ls color theme. They can later be overwritten by themes. + if [[ -z "$LS_COLORS" ]]; then + (( $+commands[dircolors] )) && eval "$(dircolors -b)" + fi + + ls --color -d . &>/dev/null && alias ls='ls --color=tty' || { ls -G . &>/dev/null && alias ls='ls -G' } + + # Take advantage of $LS_COLORS for completion as well. + zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}" + fi +fi + +# enable diff color if possible. +if command diff --color /dev/null /dev/null &>/dev/null; then + alias diff='diff --color' +fi + +setopt auto_cd +setopt multios +setopt prompt_subst + +[[ -n "$WINDOW" ]] && SCREEN_NO="%B$WINDOW%b " || SCREEN_NO="" + +# git theming default: Variables for theming the git info prompt +ZSH_THEME_GIT_PROMPT_PREFIX="git:(" # Prefix at the very beginning of the prompt, before the branch name +ZSH_THEME_GIT_PROMPT_SUFFIX=")" # At the very end of the prompt +ZSH_THEME_GIT_PROMPT_DIRTY="*" # Text to display if the branch is dirty +ZSH_THEME_GIT_PROMPT_CLEAN="" # Text to display if the branch is clean +ZSH_THEME_RUBY_PROMPT_PREFIX="(" +ZSH_THEME_RUBY_PROMPT_SUFFIX=")" diff --git a/dot_oh-my-zsh/lib/vcs_info.zsh b/dot_oh-my-zsh/lib/vcs_info.zsh new file mode 100644 index 0000000..e60938c --- /dev/null +++ b/dot_oh-my-zsh/lib/vcs_info.zsh @@ -0,0 +1,53 @@ +# Don't skip this file until a Zsh release does the necessary quoting. +# This is because even though 5.8.1 undid recursive prompt_subst inside +# prompt sequences, % characters in relevant fields will still be rendered +# incorrectly in vcs_info, on all Zsh releases up to writing this. +# +# There is no release yet that does this right, since it requires changing +# how what vcs_info hooks expect to receive. Even so, I'd rather be correct +# and break custom vcs_info hooks than have a broken prompt. + +# Quote necessary $hook_com[] items just before they are used +# in the line "VCS_INFO_hook 'post-backend'" of the VCS_INFO_formats +# function, where is: +# +# base: the full path of the repository's root directory. +# base-name: the name of the repository's root directory. +# branch: the name of the currently checked out branch. +# misc: a string that may contain anything the vcs_info backend wants. +# revision: an identifier of the currently checked out revision. +# subdir: the path of the current directory relative to the +# repository's root directory. +# +# This patch %-quotes these fields previous to their use in vcs_info hooks and +# the zformat call and, eventually, when they get expanded in the prompt. +# It's important to quote these here, and not later after hooks have modified the +# fields, because then we could be quoting % characters from valid prompt sequences, +# like %F{color}, %B, etc. +# +# 32 │ hook_com[subdir]="$(VCS_INFO_reposub ${hook_com[base]})" +# 33 │ hook_com[subdir_orig]="${hook_com[subdir]}" +# 34 │ +# 35 + │ for tmp in base base-name branch misc revision subdir; do +# 36 + │ hook_com[$tmp]="${hook_com[$tmp]//\%/%%}" +# 37 + │ done +# 38 + │ +# 39 │ VCS_INFO_hook 'post-backend' +# +# This is especially important so that no command substitution is performed +# due to malicious input as a consequence of CVE-2021-45444, which affects +# zsh versions from 5.0.3 to 5.8. +# +autoload -Uz +X regexp-replace VCS_INFO_formats 2>/dev/null || return + +# We use $tmp here because it's already a local variable in VCS_INFO_formats +typeset PATCH='for tmp (base base-name branch misc revision subdir) hook_com[$tmp]="${hook_com[$tmp]//\%/%%}"' +# Unique string to avoid reapplying the patch if this code gets called twice +typeset PATCH_ID=vcs_info-patch-9b9840f2-91e5-4471-af84-9e9a0dc68c1b +# Only patch the VCS_INFO_formats function if not already patched +if [[ "$functions[VCS_INFO_formats]" != *$PATCH_ID* ]]; then + regexp-replace 'functions[VCS_INFO_formats]' \ + "VCS_INFO_hook 'post-backend'" \ + ': ${PATCH_ID}; ${PATCH}; ${MATCH}' +fi +unset PATCH PATCH_ID diff --git a/dot_oh-my-zsh/log/empty_dot_gitkeep b/dot_oh-my-zsh/log/empty_dot_gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/dot_oh-my-zsh/oh-my-zsh.sh b/dot_oh-my-zsh/oh-my-zsh.sh new file mode 100644 index 0000000..98bda8c --- /dev/null +++ b/dot_oh-my-zsh/oh-my-zsh.sh @@ -0,0 +1,191 @@ +# Protect against non-zsh execution of Oh My Zsh (use POSIX syntax here) +[ -n "$ZSH_VERSION" ] || { + # ANSI formatting function (\033[m) + # 0: reset, 1: bold, 4: underline, 22: no bold, 24: no underline, 31: red, 33: yellow + omz_f() { + [ $# -gt 0 ] || return + IFS=";" printf "\033[%sm" $* + } + # If stdout is not a terminal ignore all formatting + [ -t 1 ] || omz_f() { :; } + + omz_ptree() { + # Get process tree of the current process + pid=$$; pids="$pid" + while [ ${pid-0} -ne 1 ] && ppid=$(ps -e -o pid,ppid | awk "\$1 == $pid { print \$2 }"); do + pids="$pids $pid"; pid=$ppid + done + + # Show process tree + case "$(uname)" in + Linux) ps -o ppid,pid,command -f -p $pids 2>/dev/null ;; + Darwin|*) ps -o ppid,pid,command -p $pids 2>/dev/null ;; + esac + + # If ps command failed, try Busybox ps + [ $? -eq 0 ] || ps -o ppid,pid,comm | awk "NR == 1 || index(\"$pids\", \$2) != 0" + } + + { + shell=$(ps -o pid,comm | awk "\$1 == $$ { print \$2 }") + printf "$(omz_f 1 31)Error:$(omz_f 22) Oh My Zsh can't be loaded from: $(omz_f 1)${shell}$(omz_f 22). " + printf "You need to run $(omz_f 1)zsh$(omz_f 22) instead.$(omz_f 0)\n" + printf "$(omz_f 33)Here's the process tree:$(omz_f 22)\n\n" + omz_ptree + printf "$(omz_f 0)\n" + } >&2 + + return 1 +} + +# If ZSH is not defined, use the current script's directory. +[[ -z "$ZSH" ]] && export ZSH="${${(%):-%x}:a:h}" + +# Set ZSH_CACHE_DIR to the path where cache files should be created +# or else we will use the default cache/ +if [[ -z "$ZSH_CACHE_DIR" ]]; then + ZSH_CACHE_DIR="$ZSH/cache" +fi + +# Make sure $ZSH_CACHE_DIR is writable, otherwise use a directory in $HOME +if [[ ! -w "$ZSH_CACHE_DIR" ]]; then + ZSH_CACHE_DIR="${XDG_CACHE_HOME:-$HOME/.cache}/oh-my-zsh" +fi + +# Create cache and completions dir and add to $fpath +mkdir -p "$ZSH_CACHE_DIR/completions" +(( ${fpath[(Ie)"$ZSH_CACHE_DIR/completions"]} )) || fpath=("$ZSH_CACHE_DIR/completions" $fpath) + +# Check for updates on initial load... +source "$ZSH/tools/check_for_upgrade.sh" + +# Initializes Oh My Zsh + +# add a function path +fpath=("$ZSH/functions" "$ZSH/completions" $fpath) + +# Load all stock functions (from $fpath files) called below. +autoload -U compaudit compinit zrecompile + +# Set ZSH_CUSTOM to the path where your custom config files +# and plugins exists, or else we will use the default custom/ +if [[ -z "$ZSH_CUSTOM" ]]; then + ZSH_CUSTOM="$ZSH/custom" +fi + +is_plugin() { + local base_dir=$1 + local name=$2 + builtin test -f $base_dir/plugins/$name/$name.plugin.zsh \ + || builtin test -f $base_dir/plugins/$name/_$name +} + +# Add all defined plugins to fpath. This must be done +# before running compinit. +for plugin ($plugins); do + if is_plugin "$ZSH_CUSTOM" "$plugin"; then + fpath=("$ZSH_CUSTOM/plugins/$plugin" $fpath) + elif is_plugin "$ZSH" "$plugin"; then + fpath=("$ZSH/plugins/$plugin" $fpath) + else + echo "[oh-my-zsh] plugin '$plugin' not found" + fi +done + +# Figure out the SHORT hostname +if [[ "$OSTYPE" = darwin* ]]; then + # macOS's $HOST changes with dhcp, etc. Use ComputerName if possible. + SHORT_HOST=$(scutil --get ComputerName 2>/dev/null) || SHORT_HOST="${HOST/.*/}" +else + SHORT_HOST="${HOST/.*/}" +fi + +# Save the location of the current completion dump file. +if [[ -z "$ZSH_COMPDUMP" ]]; then + ZSH_COMPDUMP="${ZDOTDIR:-$HOME}/.zcompdump-${SHORT_HOST}-${ZSH_VERSION}" +fi + +# Construct zcompdump OMZ metadata +zcompdump_revision="#omz revision: $(builtin cd -q "$ZSH"; git rev-parse HEAD 2>/dev/null)" +zcompdump_fpath="#omz fpath: $fpath" + +# Delete the zcompdump file if OMZ zcompdump metadata changed +if ! command grep -q -Fx "$zcompdump_revision" "$ZSH_COMPDUMP" 2>/dev/null \ + || ! command grep -q -Fx "$zcompdump_fpath" "$ZSH_COMPDUMP" 2>/dev/null; then + command rm -f "$ZSH_COMPDUMP" + zcompdump_refresh=1 +fi + +if [[ "$ZSH_DISABLE_COMPFIX" != true ]]; then + source "$ZSH/lib/compfix.zsh" + # Load only from secure directories + compinit -i -d "$ZSH_COMPDUMP" + # If completion insecurities exist, warn the user + handle_completion_insecurities &| +else + # If the user wants it, load from all found directories + compinit -u -d "$ZSH_COMPDUMP" +fi + +# Append zcompdump metadata if missing +if (( $zcompdump_refresh )) \ + || ! command grep -q -Fx "$zcompdump_revision" "$ZSH_COMPDUMP" 2>/dev/null; then + # Use `tee` in case the $ZSH_COMPDUMP filename is invalid, to silence the error + # See https://github.com/ohmyzsh/ohmyzsh/commit/dd1a7269#commitcomment-39003489 + tee -a "$ZSH_COMPDUMP" &>/dev/null </dev/null; then + zrecompile -q -p "$ZSH_COMPDUMP" + command rm -rf "$ZSH_COMPDUMP.zwc.old" "${ZSH_COMPDUMP}.lock" +fi + +# Load all of the config files in ~/oh-my-zsh that end in .zsh +# TIP: Add files you don't want in git to .gitignore +for config_file ("$ZSH"/lib/*.zsh); do + custom_config_file="$ZSH_CUSTOM/lib/${config_file:t}" + [[ -f "$custom_config_file" ]] && config_file="$custom_config_file" + source "$config_file" +done +unset custom_config_file + +# Load all of the plugins that were defined in ~/.zshrc +for plugin ($plugins); do + if [[ -f "$ZSH_CUSTOM/plugins/$plugin/$plugin.plugin.zsh" ]]; then + source "$ZSH_CUSTOM/plugins/$plugin/$plugin.plugin.zsh" + elif [[ -f "$ZSH/plugins/$plugin/$plugin.plugin.zsh" ]]; then + source "$ZSH/plugins/$plugin/$plugin.plugin.zsh" + fi +done +unset plugin + +# Load all of your custom configurations from custom/ +for config_file ("$ZSH_CUSTOM"/*.zsh(N)); do + source "$config_file" +done +unset config_file + +# Load the theme +is_theme() { + local base_dir=$1 + local name=$2 + builtin test -f $base_dir/$name.zsh-theme +} + +if [[ -n "$ZSH_THEME" ]]; then + if is_theme "$ZSH_CUSTOM" "$ZSH_THEME"; then + source "$ZSH_CUSTOM/$ZSH_THEME.zsh-theme" + elif is_theme "$ZSH_CUSTOM/themes" "$ZSH_THEME"; then + source "$ZSH_CUSTOM/themes/$ZSH_THEME.zsh-theme" + elif is_theme "$ZSH/themes" "$ZSH_THEME"; then + source "$ZSH/themes/$ZSH_THEME.zsh-theme" + else + echo "[oh-my-zsh] theme '$ZSH_THEME' not found" + fi +fi diff --git a/dot_oh-my-zsh/plugins/1password/1password.plugin.zsh b/dot_oh-my-zsh/plugins/1password/1password.plugin.zsh new file mode 100644 index 0000000..941523c --- /dev/null +++ b/dot_oh-my-zsh/plugins/1password/1password.plugin.zsh @@ -0,0 +1,9 @@ +# Do nothing if op is not installed +(( ${+commands[op]} )) || return + +# Load op completion +eval "$(op completion zsh)" +compdef _op op + +# Load opswd function +autoload -Uz opswd diff --git a/dot_oh-my-zsh/plugins/1password/README.md b/dot_oh-my-zsh/plugins/1password/README.md new file mode 100644 index 0000000..ace6da8 --- /dev/null +++ b/dot_oh-my-zsh/plugins/1password/README.md @@ -0,0 +1,40 @@ +# 1Password + +This plugin adds 1Password functionality to oh-my-zsh. + +To use, add `1password` to the list of plugins in your `.zshrc` file: + +```zsh +plugins=(... 1password) +``` + +Then, you can use the command `opswd` to copy passwords for services into your +clipboard. + +## `opswd` + +The `opswd` command is a wrapper around the `op` command. It takes a service +name as an argument and copies the username, then the password for that service +to the clipboard, after confirmation on the user part. + +If the service also contains a TOTP, it is copied to the clipboard after confirmation +on the user part. Finally, after 20 seconds, the clipboard is cleared. + +For example, `opswd github.com` will put your GitHub username into your clipboard. Then, +it will ask for confirmation to continue, and copy the password to your clipboard. Finally, +if a TOTP is available, it will be copied to the clipboard after your confirmation. + +This function has completion support, so you can use tab completion to select which +service you want to get. + +> NOTE: you need to be signed in for `opswd` to work. If you are using biometric unlock, +> 1Password CLI will automatically prompt you to sign in. See: +> +> - [Get started with 1Password CLI 2: Sign in](https://developer.1password.com/docs/cli/get-started#sign-in) +> - [Sign in to your 1Password account manually](https://developer.1password.com/docs/cli/sign-in-manually) + +## Requirements + +- [1Password CLI 2](https://developer.1password.com/docs/cli/get-started#install) + + > NOTE: if you're using 1Password CLI 1, [see how to upgrade to CLI 2](https://developer.1password.com/docs/cli/upgrade). diff --git a/dot_oh-my-zsh/plugins/1password/_opswd b/dot_oh-my-zsh/plugins/1password/_opswd new file mode 100644 index 0000000..dbc094f --- /dev/null +++ b/dot_oh-my-zsh/plugins/1password/_opswd @@ -0,0 +1,19 @@ +#compdef opswd + +function _opswd() { + local -a services + services=("${(@f)$(op item list --categories Login --cache 2>/dev/null | awk 'NR != 1 { print $2 }')}") + [[ -z "$services" ]] || compadd -a -- services +} + +# TODO: 2022-03-26: Remove support for op CLI 1 +autoload -Uz is-at-least +is-at-least 2.0.0 $(op --version) || { + function _opswd() { + local -a services + services=("${(@f)$(op list items --categories Login 2>/dev/null | op get item - --fields title 2>/dev/null)}") + [[ -z "$services" ]] || compadd -a -- services + } +} + +_opswd "$@" diff --git a/dot_oh-my-zsh/plugins/1password/opswd b/dot_oh-my-zsh/plugins/1password/opswd new file mode 100644 index 0000000..0f667d2 --- /dev/null +++ b/dot_oh-my-zsh/plugins/1password/opswd @@ -0,0 +1,90 @@ +#autoload + +# opswd puts the password of the named service into the clipboard. If there's a +# one time password, it will be copied into the clipboard after 10 seconds. The +# clipboard is cleared after another 20 seconds. +function opswd() { + if [[ $# -lt 1 ]]; then + echo "Usage: opswd " + return 1 + fi + + local service=$1 + + # If not logged in, print error and return + op user list > /dev/null || return + + local username + # Copy the username to the clipboard + if ! username=$(op item get "$service" --fields username 2>/dev/null); then + echo "error: could not obtain username for $service" + return 1 + fi + + echo -n "$username" | clipcopy + echo "✔ username for service $service copied to the clipboard. Press Enter to continue" + read + + local password + # Copy the password to the clipboard + if ! password=$(op item get "$service" --fields password 2>/dev/null); then + echo "error: could not obtain password for $service" + return 1 + fi + + echo -n "$password" | clipcopy + echo "✔ password for $service copied to clipboard. Press Enter to continue" + read + + # If there's a one time password, copy it to the clipboard + local totp + if totp=$(op item get --otp "$service" 2>/dev/null) && [[ -n "$totp" ]]; then + echo -n "$totp" | clipcopy + echo "✔ TOTP for $service copied to clipboard" + fi + + (sleep 20 && clipcopy /dev/null) &! +} + +# TODO: 2022-03-26: Remove support for op CLI 1 +autoload -Uz is-at-least +is-at-least 2.0.0 $(op --version) || { + print -ru2 ${(%):-"%F{yellow}opswd: usage with op version $(op --version) is deprecated. Upgrade to CLI 2 and reload zsh. +For instructions, see https://developer.1password.com/docs/cli/upgrade.%f"} + + # opswd puts the password of the named service into the clipboard. If there's a + # one time password, it will be copied into the clipboard after 10 seconds. The + # clipboard is cleared after another 20 seconds. + function opswd() { + if [[ $# -lt 1 ]]; then + echo "Usage: opswd " + return 1 + fi + + local service=$1 + + # If not logged in, print error and return + op list users > /dev/null || return + + local password + # Copy the password to the clipboard + if ! password=$(op get item "$service" --fields password 2>/dev/null); then + echo "error: could not obtain password for $service" + return 1 + fi + + echo -n "$password" | clipcopy + echo "✔ password for $service copied to clipboard" + + # If there's a one time password, copy it to the clipboard after 5 seconds + local totp + if totp=$(op get totp "$service" 2>/dev/null) && [[ -n "$totp" ]]; then + sleep 10 && echo -n "$totp" | clipcopy + echo "✔ TOTP for $service copied to clipboard" + fi + + (sleep 20 && clipcopy /dev/null) &! + } +} + +opswd "$@" diff --git a/dot_oh-my-zsh/plugins/adb/README.md b/dot_oh-my-zsh/plugins/adb/README.md new file mode 100644 index 0000000..83dcc72 --- /dev/null +++ b/dot_oh-my-zsh/plugins/adb/README.md @@ -0,0 +1,8 @@ +# adb autocomplete plugin + +* Adds autocomplete options for all adb commands. +* Add autocomplete for `adb -s` + +## Requirements + +In order to make this work, you will need to have the Android adb tools set up in your path. diff --git a/dot_oh-my-zsh/plugins/adb/_adb b/dot_oh-my-zsh/plugins/adb/_adb new file mode 100644 index 0000000..78c4577 --- /dev/null +++ b/dot_oh-my-zsh/plugins/adb/_adb @@ -0,0 +1,67 @@ +#compdef adb +#autoload + +# in order to make this work, you will need to have the android adb tools + +# adb zsh completion, based on homebrew completion + +local -a _1st_arguments +_1st_arguments=( +'bugreport:return all information from the device that should be included in a bug report.' +'connect:connect to a device via TCP/IP Port 5555 is default.' +'devices:list all connected devices' +'disconnect:disconnect from a TCP/IP device. Port 5555 is default.' +'emu:run emulator console command' +'forward:forward socket connections' +'get-devpath:print the device path' +'get-serialno:print the serial number of the device' +'get-state:print the current state of the device: offline | bootloader | device' +'help:show the help message' +'install:push this package file to the device and install it' +'jdwp:list PIDs of processes hosting a JDWP transport' +'keygen:generate adb public/private key' +'kill-server:kill the server if it is running' +'logcat:view device log' +'pull:copy file/dir from device' +'push:copy file/dir to device' +'reboot:reboots the device, optionally into the bootloader or recovery program' +'reboot-bootloader:reboots the device into the bootloader' +'remount:remounts the partitions on the device read-write' +'root:restarts the adbd daemon with root permissions' +'sideload:push a ZIP to device and install it' +'shell:run remote shell interactively' +'sync:copy host->device only if changed (-l means list but dont copy)' +'start-server:ensure that there is a server running' +'tcpip:restart host adb in tcpip mode' +'uninstall:remove this app package from the device' +'usb:restart the adbd daemon listing on USB' +'version:show version num' +'wait-for-device:block until device is online' +) + +local expl +local -a pkgs installed_pkgs + +_arguments \ + '-s[devices]:specify device:->specify_device' \ + '*:: :->subcmds' && return 0 + +case "$state" in + specify_device) + _values -C 'devices' ${$(adb devices -l|awk 'NR>1&& $1 \ + {sub(/ +/," ",$0); \ + gsub(":","\\:",$1); \ + for(i=1;i<=NF;i++) { + if($i ~ /model:/) { split($i,m,":") } \ + else if($i ~ /product:/) { split($i,p,":") } } \ + printf "%s[%s(%s)] ",$1, p[2], m[2]}'):-""} + return + ;; +esac + +if (( CURRENT == 1 )); then + _describe -t commands "adb subcommand" _1st_arguments + return +fi + +_files diff --git a/dot_oh-my-zsh/plugins/ag/README.md b/dot_oh-my-zsh/plugins/ag/README.md new file mode 100644 index 0000000..1983aaa --- /dev/null +++ b/dot_oh-my-zsh/plugins/ag/README.md @@ -0,0 +1,13 @@ +# The Silver Searcher + +This plugin provides completion support for [`ag`](https://github.com/ggreer/the_silver_searcher). + +To use it, add ag to the plugins array in your zshrc file. + +```zsh +plugins=(... ag) +``` + +## INSTALLATION NOTES + +Besides oh-my-zsh, `ag` needs to be installed by following these steps: https://github.com/ggreer/the_silver_searcher#installing. diff --git a/dot_oh-my-zsh/plugins/ag/_ag b/dot_oh-my-zsh/plugins/ag/_ag new file mode 100644 index 0000000..25b0c27 --- /dev/null +++ b/dot_oh-my-zsh/plugins/ag/_ag @@ -0,0 +1,66 @@ +#compdef ag +#autoload + +typeset -A opt_args + +# Took the liberty of not listing every option… specially aliases and -D +_ag () { + local -a _1st_arguments + _1st_arguments=( + '--ackmate:Print results in AckMate-parseable format' + {'-A','--after'}':[LINES] Print lines after match (Default: 2)' + {'-B','--before'}':[LINES] Print lines before match (Default: 2)' + '--break:Print newlines between matches in different files' + '--nobreak:Do not print newlines between matches in different files' + {'-c','--count'}':Only print the number of matches in each file' + '--color:Print color codes in results (Default: On)' + '--nocolor:Do not print color codes in results' + '--color-line-number:Color codes for line numbers (Default: 1;33)' + '--color-match:Color codes for result match numbers (Default: 30;43)' + '--color-path:Color codes for path names (Default: 1;32)' + '--column:Print column numbers in results' + {'-H','--heading'}':Print file names (On unless searching a single file)' + '--noheading:Do not print file names (On unless searching a single file)' + '--line-numbers:Print line numbers even for streams' + {'-C','--context'}':[LINES] Print lines before and after matches (Default: 2)' + '-g:[PATTERN] Print filenames matching PATTERN' + {'-l','--files-with-matches'}':Only print filenames that contain matches' + {'-L','--files-without-matches'}':Only print filenames that do not contain matches' + '--no-numbers:Do not print line numbers' + {'-o','--only-matching'}':Prints only the matching part of the lines' + '--print-long-lines:Print matches on very long lines (Default: 2k characters)' + '--passthrough:When searching a stream, print all lines even if they do not match' + '--silent:Suppress all log messages, including errors' + '--stats:Print stats (files scanned, time taken, etc.)' + '--vimgrep:Print results like vim :vimgrep /pattern/g would' + {'-0','--null'}':Separate filenames with null (for "xargs -0")' + + {'-a','--all-types'}':Search all files (does not include hidden files / .gitignore)' + '--depth:[NUM] Search up to NUM directories deep (Default: 25)' + {'-f','--follow'}':Follow symlinks' + {'-G','--file-search-regex'}':[PATTERN] Limit search to filenames matching PATTERN' + '--hidden:Search hidden files (obeys .*ignore files)' + {'-i','--ignore-case'}':Match case insensitively' + '--ignore:[PATTERN] Ignore files/directories matching PATTERN' + {'-m','--max-count'}':[NUM] Skip the rest of a file after NUM matches (Default: 10k)' + {'-p','--path-to-agignore'}':[PATH] Use .agignore file at PATH' + {'-Q','--literal'}':Do not parse PATTERN as a regular expression' + {'-s','--case-sensitive'}':Match case' + {'-S','--smart-case'}':Insensitive match unless PATTERN has uppercase (Default: On)' + '--search-binary:Search binary files for matches' + {'-t','--all-text'}':Search all text files (Hidden files not included)' + {'-u','--unrestricted'}':Search all files (ignore .agignore and _all_)' + {'-U','--skip-vcs-ignores'}':Ignore VCS files (stil obey .agignore)' + {'-v','--invert-match'}':Invert match' + {'-w','--word-regexp'}':Only match whole words' + {'-z','--search-zip'}':Search contents of compressed (e.g., gzip) files' + + '--list-file-types:list of supported file types' + ) + + if [[ $words[-1] =~ "^-" ]]; then + _describe -t commands "ag options" _1st_arguments && ret=0 + else + _files && ret=0 + fi +} diff --git a/dot_oh-my-zsh/plugins/alias-finder/README.md b/dot_oh-my-zsh/plugins/alias-finder/README.md new file mode 100644 index 0000000..409f4b6 --- /dev/null +++ b/dot_oh-my-zsh/plugins/alias-finder/README.md @@ -0,0 +1,46 @@ +# alias-finder plugin + +This plugin searches the defined aliases and outputs any that match the command inputted. This makes learning new aliases easier. + +To use it, add `alias-finder` to the `plugins` array of your zshrc file: +``` +plugins=(... alias-finder) +``` + +## Usage +To see if there is an alias defined for the command, pass it as an argument to `alias-finder`. This can also run automatically before each command you input - add `ZSH_ALIAS_FINDER_AUTOMATIC=true` to your zshrc if you want this. + +## Options + +- Use `--longer` or `-l` to allow the aliases to be longer than the input (match aliases if they contain the input). +- Use `--exact` or `-e` to avoid matching aliases that are shorter than the input. + +## Examples +``` +$ alias-finder "git pull" +gl='git pull' +g=git +``` +``` +$ alias-finder "web_search google oh my zsh" +google='web_search google' +``` +``` +$ alias-finder "git commit -v" +gc="git commit -v" +g=git +``` +``` +$ alias-finder -e "git commit -v" +gc='git commit -v' +``` +``` +$ alias-finder -l "git commit -v" +gc='git commit -v' +'gc!'='git commit -v --amend' +gca='git commit -v -a' +'gca!'='git commit -v -a --amend' +'gcan!'='git commit -v -a --no-edit --amend' +'gcans!'='git commit -v -a -s --no-edit --amend' +'gcn!'='git commit -v --no-edit --amend' +``` diff --git a/dot_oh-my-zsh/plugins/alias-finder/alias-finder.plugin.zsh b/dot_oh-my-zsh/plugins/alias-finder/alias-finder.plugin.zsh new file mode 100644 index 0000000..caee9b5 --- /dev/null +++ b/dot_oh-my-zsh/plugins/alias-finder/alias-finder.plugin.zsh @@ -0,0 +1,47 @@ +alias-finder() { + local cmd="" exact="" longer="" wordStart="" wordEnd="" multiWordEnd="" + for i in $@; do + case $i in + -e|--exact) exact=true;; + -l|--longer) longer=true;; + *) + if [[ -z $cmd ]]; then + cmd=$i + else + cmd="$cmd $i" + fi + ;; + esac + done + cmd=$(sed 's/[].\|$(){}?+*^[]/\\&/g' <<< $cmd) # adds escaping for grep + if (( $(wc -l <<< $cmd) == 1 )); then + while [[ $cmd != "" ]]; do + if [[ $longer = true ]]; then + wordStart="'{0,1}" + else + wordEnd="$" + multiWordEnd="'$" + fi + if [[ $cmd == *" "* ]]; then + local finder="'$cmd$multiWordEnd" + else + local finder=$wordStart$cmd$wordEnd + fi + alias | grep -E "=$finder" + if [[ $exact = true || $longer = true ]]; then + break + else + cmd=$(sed -E 's/ {0,1}[^ ]*$//' <<< $cmd) # removes last word + fi + done + fi +} + +preexec_alias-finder() { + if [[ $ZSH_ALIAS_FINDER_AUTOMATIC = true ]]; then + alias-finder $1 + fi +} + +autoload -U add-zsh-hook +add-zsh-hook preexec preexec_alias-finder diff --git a/dot_oh-my-zsh/plugins/aliases/README.md b/dot_oh-my-zsh/plugins/aliases/README.md new file mode 100644 index 0000000..4e77f67 --- /dev/null +++ b/dot_oh-my-zsh/plugins/aliases/README.md @@ -0,0 +1,28 @@ +# Aliases cheatsheet + +**Maintainer:** [@hqingyi](https://github.com/hqingyi) + +With lots of 3rd-party amazing aliases installed, this plugin helps list the shortcuts +that are currently available based on the plugins you have enabled. + +To use it, add `aliases` to the plugins array in your zshrc file: + +```zsh +plugins=(aliases) +``` + +Requirements: Python needs to be installed. + +## Usage + +- `acs`: show all aliases by group + +- `acs -h/--help`: print help mesage + +- `acs `: filter aliases by `` and highlight + +- `acs -g /--group `: show only aliases for group ``. Multiple uses of the flag show all groups + +- `acs --groups`: show only group names + + ![screenshot](https://cloud.githubusercontent.com/assets/3602957/11581913/cb54fb8a-9a82-11e5-846b-5a67f67ad9ad.png) diff --git a/dot_oh-my-zsh/plugins/aliases/aliases.plugin.zsh b/dot_oh-my-zsh/plugins/aliases/aliases.plugin.zsh new file mode 100644 index 0000000..9864de9 --- /dev/null +++ b/dot_oh-my-zsh/plugins/aliases/aliases.plugin.zsh @@ -0,0 +1,14 @@ +# Handle $0 according to the standard: +# https://zdharma-continuum.github.io/Zsh-100-Commits-Club/Zsh-Plugin-Standard.html +0="${${ZERO:-${0:#$ZSH_ARGZERO}}:-${(%):-%N}}" +0="${${(M)0:#/*}:-$PWD/$0}" + +eval ' + function acs(){ + (( $+commands[python3] )) || { + echo "[error] No python executable detected" + return + } + alias | python3 "'"${0:h}"'/cheatsheet.py" "$@" + } +' diff --git a/dot_oh-my-zsh/plugins/aliases/cheatsheet.py b/dot_oh-my-zsh/plugins/aliases/cheatsheet.py new file mode 100644 index 0000000..3362a6a --- /dev/null +++ b/dot_oh-my-zsh/plugins/aliases/cheatsheet.py @@ -0,0 +1,68 @@ +#!/usr/bin/env python3 +import sys +import itertools +import termcolor +import argparse + +def parse(line): + left = line[0:line.find('=')].strip() + right = line[line.find('=')+1:].strip('\'"\n ') + try: + cmd = next(part for part in right.split() if len([char for char in '=<>' if char in part])==0) + except StopIteration: + cmd = right + return (left, right, cmd) + +def cheatsheet(lines): + exps = [ parse(line) for line in lines ] + cheatsheet = {'_default': []} + for key, group in itertools.groupby(exps, lambda exp:exp[2]): + group_list = [ item for item in group ] + if len(group_list)==1: + target_aliases = cheatsheet['_default'] + else: + if key not in cheatsheet: + cheatsheet[key] = [] + target_aliases = cheatsheet[key] + target_aliases.extend(group_list) + return cheatsheet + +def pretty_print_group(key, aliases, highlight=None, only_groupname=False): + if len(aliases) == 0: + return + group_hl_formatter = lambda g, hl: termcolor.colored(hl, 'yellow').join([termcolor.colored(part, 'red') for part in ('[%s]' % g).split(hl)]) + alias_hl_formatter = lambda alias, hl: termcolor.colored(hl, 'yellow').join([termcolor.colored(part, 'green') for part in ('\t%s = %s' % alias[0:2]).split(hl)]) + group_formatter = lambda g: termcolor.colored('[%s]' % g, 'red') + alias_formatter = lambda alias: termcolor.colored('\t%s = %s' % alias[0:2], 'green') + if highlight and len(highlight)>0: + print (group_hl_formatter(key, highlight)) + if not only_groupname: + print ('\n'.join([alias_hl_formatter(alias, highlight) for alias in aliases])) + else: + print (group_formatter(key)) + if not only_groupname: + print ('\n'.join([alias_formatter(alias) for alias in aliases])) + print ('') + +def pretty_print(cheatsheet, wfilter, group_list=None, groups_only=False): + sorted_key = sorted(cheatsheet.keys()) + for key in sorted_key: + if group_list and key not in group_list: + continue + aliases = cheatsheet.get(key) + if not wfilter: + pretty_print_group(key, aliases, wfilter, groups_only) + else: + pretty_print_group(key, [ alias for alias in aliases if alias[0].find(wfilter)>-1 or alias[1].find(wfilter)>-1], wfilter) + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description="Pretty print aliases.") + parser.add_argument('filter', nargs="*", help="search aliases matching string") + parser.add_argument('-g', '--group', dest="group_list", action='append', help="only print aliases in given groups") + parser.add_argument('--groups', dest='groups_only', action='store_true', help="only print alias groups") + args = parser.parse_args() + + lines = sys.stdin.readlines() + group_list = args.group_list or None + wfilter = " ".join(args.filter) or None + pretty_print(cheatsheet(lines), wfilter, group_list, args.groups_only) diff --git a/dot_oh-my-zsh/plugins/aliases/dot_gitignore b/dot_oh-my-zsh/plugins/aliases/dot_gitignore new file mode 100644 index 0000000..bee8a64 --- /dev/null +++ b/dot_oh-my-zsh/plugins/aliases/dot_gitignore @@ -0,0 +1 @@ +__pycache__ diff --git a/dot_oh-my-zsh/plugins/aliases/termcolor.py b/dot_oh-my-zsh/plugins/aliases/termcolor.py new file mode 100644 index 0000000..bb725e9 --- /dev/null +++ b/dot_oh-my-zsh/plugins/aliases/termcolor.py @@ -0,0 +1,168 @@ +# coding: utf-8 +# Copyright (c) 2008-2011 Volvox Development Team +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +# Author: Konstantin Lepa + +"""ANSI Color formatting for output in terminal.""" + +from __future__ import print_function +import os + + +__ALL__ = [ 'colored', 'cprint' ] + +VERSION = (1, 1, 0) + +ATTRIBUTES = dict( + list(zip([ + 'bold', + 'dark', + '', + 'underline', + 'blink', + '', + 'reverse', + 'concealed' + ], + list(range(1, 9)) + )) + ) +del ATTRIBUTES[''] + + +HIGHLIGHTS = dict( + list(zip([ + 'on_grey', + 'on_red', + 'on_green', + 'on_yellow', + 'on_blue', + 'on_magenta', + 'on_cyan', + 'on_white' + ], + list(range(40, 48)) + )) + ) + + +COLORS = dict( + list(zip([ + 'grey', + 'red', + 'green', + 'yellow', + 'blue', + 'magenta', + 'cyan', + 'white', + ], + list(range(30, 38)) + )) + ) + + +RESET = '\033[0m' + + +def colored(text, color=None, on_color=None, attrs=None): + """Colorize text. + + Available text colors: + red, green, yellow, blue, magenta, cyan, white. + + Available text highlights: + on_red, on_green, on_yellow, on_blue, on_magenta, on_cyan, on_white. + + Available attributes: + bold, dark, underline, blink, reverse, concealed. + + Example: + colored('Hello, World!', 'red', 'on_grey', ['blue', 'blink']) + colored('Hello, World!', 'green') + """ + if os.getenv('ANSI_COLORS_DISABLED') is None: + fmt_str = '\033[%dm%s' + if color is not None: + text = fmt_str % (COLORS[color], text) + + if on_color is not None: + text = fmt_str % (HIGHLIGHTS[on_color], text) + + if attrs is not None: + for attr in attrs: + text = fmt_str % (ATTRIBUTES[attr], text) + + text += RESET + return text + + +def cprint(text, color=None, on_color=None, attrs=None, **kwargs): + """Print colorize text. + + It accepts arguments of print function. + """ + + print((colored(text, color, on_color, attrs)), **kwargs) + + +if __name__ == '__main__': + print('Current terminal type: %s' % os.getenv('TERM')) + print('Test basic colors:') + cprint('Grey color', 'grey') + cprint('Red color', 'red') + cprint('Green color', 'green') + cprint('Yellow color', 'yellow') + cprint('Blue color', 'blue') + cprint('Magenta color', 'magenta') + cprint('Cyan color', 'cyan') + cprint('White color', 'white') + print(('-' * 78)) + + print('Test highlights:') + cprint('On grey color', on_color='on_grey') + cprint('On red color', on_color='on_red') + cprint('On green color', on_color='on_green') + cprint('On yellow color', on_color='on_yellow') + cprint('On blue color', on_color='on_blue') + cprint('On magenta color', on_color='on_magenta') + cprint('On cyan color', on_color='on_cyan') + cprint('On white color', color='grey', on_color='on_white') + print('-' * 78) + + print('Test attributes:') + cprint('Bold grey color', 'grey', attrs=['bold']) + cprint('Dark red color', 'red', attrs=['dark']) + cprint('Underline green color', 'green', attrs=['underline']) + cprint('Blink yellow color', 'yellow', attrs=['blink']) + cprint('Reversed blue color', 'blue', attrs=['reverse']) + cprint('Concealed Magenta color', 'magenta', attrs=['concealed']) + cprint('Bold underline reverse cyan color', 'cyan', + attrs=['bold', 'underline', 'reverse']) + cprint('Dark blink concealed white color', 'white', + attrs=['dark', 'blink', 'concealed']) + print(('-' * 78)) + + print('Test mixing:') + cprint('Underline red on grey color', 'red', 'on_grey', + ['underline']) + cprint('Reversed green on red color', 'green', 'on_red', ['reverse']) + diff --git a/dot_oh-my-zsh/plugins/ansible/README.md b/dot_oh-my-zsh/plugins/ansible/README.md new file mode 100644 index 0000000..e0e6a19 --- /dev/null +++ b/dot_oh-my-zsh/plugins/ansible/README.md @@ -0,0 +1,34 @@ +# ansible plugin + +## Introduction + +The `ansible plugin` adds several aliases for useful [ansible](https://docs.ansible.com/ansible/latest/index.html) commands and [aliases](#aliases). + +To use it, add `ansible` to the plugins array of your zshrc file: + +``` +plugins=(... ansible) +``` + +## Aliases + +| Command | Description | +|:-------------------------------------------|:--------------------------------------------------------------------| +| `ansible-version` / `aver` | Show the version on ansible installed in this host | +| `ansible-role-init ` / `arinit` | Creates the Ansible Role as per Ansible Galaxy standard | +| `a` | command `ansible` | +| `aconf` | command `ansible-config` | +| `acon` | command `ansible-console` | +| `ainv` | command `ansible-inventory` | +| `aplaybook` | command `ansible-playbook` | +| `ainv` | command `ansible-inventory` | +| `adoc` | command `ansible-doc` | +| `agal` | command `ansible-galaxy` | +| `apull` | command `ansible-pull` | +| `aval` | command `ansible-vault` | + +## Maintainer + +### [Deepankumar](https://github.com/deepan10) + +[https://github.com/deepan10/oh-my-zsh/tree/features/ansible-plugin](https://github.com/deepan10/oh-my-zsh/tree/features/ansible-plugin) diff --git a/dot_oh-my-zsh/plugins/ansible/ansible.plugin.zsh b/dot_oh-my-zsh/plugins/ansible/ansible.plugin.zsh new file mode 100644 index 0000000..75393b7 --- /dev/null +++ b/dot_oh-my-zsh/plugins/ansible/ansible.plugin.zsh @@ -0,0 +1,28 @@ +# Functions +function ansible-version(){ + ansible --version +} + +function ansible-role-init(){ + if ! [ -z $1 ] ; then + echo "Ansible Role : $1 Creating...." + ansible-galaxy init $1 + tree $1 + else + echo "Usage : ansible-role-init " + echo "Example : ansible-role-init role1" + fi +} + +# Alias +alias a='ansible ' +alias aconf='ansible-config ' +alias acon='ansible-console ' +alias aver='ansible-version' +alias arinit='ansible-role-init' +alias aplaybook='ansible-playbook ' +alias ainv='ansible-inventory ' +alias adoc='ansible-doc ' +alias agal='ansible-galaxy ' +alias apull='ansible-pull ' +alias aval='ansible-vault' diff --git a/dot_oh-my-zsh/plugins/ant/README.md b/dot_oh-my-zsh/plugins/ant/README.md new file mode 100644 index 0000000..5712372 --- /dev/null +++ b/dot_oh-my-zsh/plugins/ant/README.md @@ -0,0 +1,12 @@ +# Ant + +This plugin provides completion for [Ant](https://ant.apache.org/). + +To use it, add `ant` to the plugins array in your zshrc file: + +```zsh +plugins=(... ant) +``` + +It caches ant targets in a file named `.ant_targets`, you might want to add that to +your `.gitignore` file. diff --git a/dot_oh-my-zsh/plugins/ant/_ant b/dot_oh-my-zsh/plugins/ant/_ant new file mode 100644 index 0000000..24a8e36 --- /dev/null +++ b/dot_oh-my-zsh/plugins/ant/_ant @@ -0,0 +1,22 @@ +#compdef ant + +_ant_does_target_list_need_generating () { + [[ ! -f .ant_targets ]] && return 0 + [[ build.xml -nt .ant_targets ]] && return 0 + return 1 +} + +_ant () { + if [[ ! -f build.xml ]]; then + return + fi + + if ! _ant_does_target_list_need_generating; then + return + fi + + ant -p | awk -F " " 'NR > 5 { print lastTarget } { lastTarget = $1 }' >| .ant_targets + compadd -- "$(cat .ant_targets)" +} + +_ant "$@" diff --git a/dot_oh-my-zsh/plugins/ant/ant.plugin.zsh b/dot_oh-my-zsh/plugins/ant/ant.plugin.zsh new file mode 100644 index 0000000..5f63825 --- /dev/null +++ b/dot_oh-my-zsh/plugins/ant/ant.plugin.zsh @@ -0,0 +1,2 @@ +# Default to colored output +export ANT_ARGS='-logger org.apache.tools.ant.listener.AnsiColorLogger' diff --git a/dot_oh-my-zsh/plugins/apache2-macports/README.md b/dot_oh-my-zsh/plugins/apache2-macports/README.md new file mode 100644 index 0000000..dbf2e89 --- /dev/null +++ b/dot_oh-my-zsh/plugins/apache2-macports/README.md @@ -0,0 +1,21 @@ +# apache2-macports plugin + +Enables aliases to control a local Apache2 installed via [MacPorts](https://www.macports.org/). + +To use it, add `apache2-macports` to the plugins array in your zshrc file: + +```zsh +plugins=(... apache2-macports) +``` + +## Aliases + +| Alias | Function | Description | +|----------------|-----------------------------------------|-----------------------| +| apache2restart | `sudo /path/to/apache2.wrapper restart` | Restart apache daemon | +| apache2start | `sudo /path/to/apache2.wrapper start` | Start apache daemon | +| apache2stop | `sudo /path/to/apache2.wrapper stop` | Stop apache daemon | + +## Contributors + +- Alexander Rinass (alex@rinass.net) diff --git a/dot_oh-my-zsh/plugins/apache2-macports/apache2-macports.plugin.zsh b/dot_oh-my-zsh/plugins/apache2-macports/apache2-macports.plugin.zsh new file mode 100644 index 0000000..1caa4cf --- /dev/null +++ b/dot_oh-my-zsh/plugins/apache2-macports/apache2-macports.plugin.zsh @@ -0,0 +1,6 @@ +# commands to control local apache2 server installation +# paths are for osx installation via macports + +alias apache2start='sudo /opt/local/etc/LaunchDaemons/org.macports.apache2/apache2.wrapper start' +alias apache2stop='sudo /opt/local/etc/LaunchDaemons/org.macports.apache2/apache2.wrapper stop' +alias apache2restart='sudo /opt/local/etc/LaunchDaemons/org.macports.apache2/apache2.wrapper restart' diff --git a/dot_oh-my-zsh/plugins/arcanist/README.md b/dot_oh-my-zsh/plugins/arcanist/README.md new file mode 100644 index 0000000..07e7669 --- /dev/null +++ b/dot_oh-my-zsh/plugins/arcanist/README.md @@ -0,0 +1,43 @@ +## arcanist + +This plugin adds many useful aliases for [arcanist](https://github.com/phacility/arcanist). + +To use it, add `arcanist` to the plugins array of your zshrc file: + +```zsh +plugins=(... arcanist) +``` + +## Aliases + +| Alias | Command | +| ------- | ---------------------------------- | +| ara | `arc amend` | +| arb | `arc branch` | +| arbl | `arc bland` | +| arco | `arc cover` | +| arci | `arc commit` | +| ard | `arc diff` | +| ardc | `arc diff --create` | +| ardp | `arc diff --preview` | +| ardnu | `arc diff --nounit` | +| ardnupc | `arc diff --nounit --plan-changes` | +| ardpc | `arc diff --plan-changes` | +| are | `arc export` | +| arh | `arc help` | +| arho | `arc hotfix` | +| arl | `arc land` | +| arli | `arc lint` | +| arls | `arc list` | +| arpa | `arc patch` | + +## Functions + +The following functions make copy pasting revision ids from the URL bar of your browser +easier, as they allow for copy pasting the whole URL. For example: `ardu` accepts +both `https://arcanist-url.com/` as well as ``. + +| Function | Command | +| ------------------------- | --------------------------------- | +| ardu [URL or revision_id] | `arc diff --update` [revision_id] | +| arpa [URL or revision_id] | `arc patch` [revision_id] | diff --git a/dot_oh-my-zsh/plugins/arcanist/arcanist.plugin.zsh b/dot_oh-my-zsh/plugins/arcanist/arcanist.plugin.zsh new file mode 100644 index 0000000..380eede --- /dev/null +++ b/dot_oh-my-zsh/plugins/arcanist/arcanist.plugin.zsh @@ -0,0 +1,39 @@ +# +# Aliases +# (sorted alphabetically) +# + +alias ara='arc amend' +alias arb='arc branch' +alias arbl='arc bland' +alias arco='arc cover' +alias arci='arc commit' + +alias ard='arc diff' +alias ardc='arc diff --create' +alias ardnu='arc diff --nounit' +alias ardnupc='arc diff --nounit --plan-changes' +alias ardpc='arc diff --plan-changes' +alias ardp='arc diff --preview' # creates a new diff in the phab interface + +alias are='arc export' +alias arh='arc help' +alias arho='arc hotfix' +alias arl='arc land' +alias arli='arc lint' +alias arls='arc list' + +# +# Functions +# (sorted alphabetically) +# + +ardu() { + # Both `ardu https://arcanist-url.com/`, and `ardu ` work. + arc diff --update "${1:t}" +} + +arpa() { + # Both `arpa https://arcanist-url.com/`, and `arpa ` work. + arc patch "${1:t}" +} diff --git a/dot_oh-my-zsh/plugins/archlinux/README.md b/dot_oh-my-zsh/plugins/archlinux/README.md new file mode 100644 index 0000000..fd772c6 --- /dev/null +++ b/dot_oh-my-zsh/plugins/archlinux/README.md @@ -0,0 +1,183 @@ +# Arch Linux plugin + +This plugin adds some aliases and functions to work with Arch Linux. + +To use it, add `archlinux` to the plugins array in your zshrc file: + +```zsh +plugins=(... archlinux) +``` + +## Features + +### Pacman + +| Alias | Command | Description | +|--------------|----------------------------------------|------------------------------------------------------------------| +| pacin | `sudo pacman -S` | Install packages from the repositories | +| pacins | `sudo pacman -U` | Install a package from a local file | +| pacinsd | `sudo pacman -S --asdeps` | Install packages as dependencies of another package | +| paclean | `sudo pacman -Sc` | Clean out old and unused caches and packages | +| pacloc | `pacman -Qi` | Display information about a package in the local database | +| paclocs | `pacman -Qs` | Search for packages in the local database | +| paclr | `sudo pacman -Scc` | Remove all files from the cache | +| paclsorphans | `sudo pacman -Qdt` | List all orphaned packages | +| pacmir | `sudo pacman -Syy` | Force refresh of all package lists after updating mirrorlist | +| pacre | `sudo pacman -R` | Remove packages, keeping its settings and dependencies | +| pacrem | `sudo pacman -Rns` | Remove packages, including its settings and dependencies | +| pacrep | `pacman -Si` | Display information about a package in the repositories | +| pacreps | `pacman -Ss` | Search for packages in the repositories | +| pacrmorphans | `sudo pacman -Rs $(pacman -Qtdq)` | Delete all orphaned packages | +| pacupd | `sudo pacman -Sy` | Update and refresh local package, ABS and AUR databases | +| pacupg | `sudo pacman -Syu` | Sync with repositories before upgrading packages | +| pacfileupg | `sudo pacman -Fy` | Download fresh package databases from the server | +| pacfiles | `pacman -F` | Search package file names for matching strings | +| pacls | `pacman -Ql` | List files in a package | +| pacown | `pacman -Qo` | Show which package owns a file | +| upgrade[¹](#f1) | `sudo pacman -Syu` | Sync with repositories before upgrading packages | + +| Function | Description | +|----------------|-----------------------------------------------------------| +| pacdisowned | List all disowned files in your system | +| paclist | List all explicitly installed packages with a description | +| pacmanallkeys | Get all keys for developers and trusted users | +| pacmansignkeys | Locally trust all keys passed as parameters | +| pacweb | Open the website of an ArchLinux package | + +Note: paclist used to print packages with a description which are (1) explicitly installed +and (2) available for upgrade. Due to flawed scripting, it also printed all packages if no +upgrades were available. Use `pacman -Que` instead. + +### AUR helpers + +#### Aura + +| Alias | Command | Description | +|---------|-------------------------------------------------|-------------------------------------------------------------------------| +| auclean | `sudo aura -Sc` | Clean out old and unused caches and packages | +| auclr | `sudo aura -Scc` | Remove all files from the cache | +| auin | `sudo aura -S` | Install packages from the repositories | +| aurin | `sudo aura -A` | Install packages from the repositories | +| auins | `sudo aura -U` | Install a package from a local file | +| auinsd | `sudo aura -S --asdeps` | Install packages as dependencies of another package (repositories only) | +| aurinsd | `sudo aura -A --asdeps` | Install packages as dependencies of another package (AUR only) | +| auloc | `aura -Qi` | Display information about a package in the local database | +| aulocs | `aura -Qs` | Search for packages in the local database | +| auls | `aura -Qql` | List all files owned by a given package | +| aulst | `aura -Qe` | List installed packages including from AUR (tagged as "local") | +| aumir | `sudo aura -Syy` | Force refresh of all package lists after updating mirrorlist | +| aurph | `sudo aura -Oj` | Remove orphans using aura | +| auown | `aura -Qqo` | Search for packages that own the specified file(s) | +| aure | `sudo aura -R` | Remove packages, keeping its settings and dependencies | +| aurem | `sudo aura -Rns` | Remove packages, including its settings and unneeded dependencies | +| aurep | `aura -Si` | Display information about a package in the repositories | +| aurrep | `aura -Ai` | Display information about a package from AUR | +| aureps | `aura -As --both` | Search for packages in the repositories and AUR | +| auras | `aura -As --both` | Same as above | +| auupd | `sudo aura -Sy` | Update and refresh local package, ABS and AUR databases | +| auupg | `sudo sh -c "aura -Syu && aura -Au"` | Sync with repositories before upgrading all packages (from AUR too) | +| ausu | `sudo sh -c "aura -Syu --no-confirm && aura -Au --no-confirm"` | Same as `auupg`, but without confirmation | +| upgrade[¹](#f1) | `sudo aura -Syu` | Sync with repositories before upgrading packages | + +| Function | Description | +|-----------------|---------------------------------------------------------------------| +| auownloc _file_ | Display information about a package that owns the specified file(s) | +| auownls _file_ | List all files owned by a package that owns the specified file(s) | + +#### Pacaur + +| Alias | Command | Description | +|---------|-----------------------------------|---------------------------------------------------------------------| +| pacclean| `pacaur -Sc` | Clean out old and unused caches and packages | +| pacclr | `pacaur -Scc` | Remove all files from the cache | +| pain | `pacaur -S` | Install packages from the repositories | +| pains | `pacaur -U` | Install a package from a local file | +| painsd | `pacaur -S --asdeps` | Install packages as dependencies of another package | +| paloc | `pacaur -Qi` | Display information about a package in the local database | +| palocs | `pacaur -Qs` | Search for packages in the local database | +| palst | `pacaur -Qe` | List installed packages including from AUR (tagged as "local") | +| pamir | `pacaur -Syy` | Force refresh of all package lists after updating mirrorlist | +| paorph | `pacaur -Qtd` | Remove orphans using pacaur | +| pare | `pacaur -R` | Remove packages, keeping its settings and dependencies | +| parem | `pacaur -Rns` | Remove packages, including its settings and unneeded dependencies | +| parep | `pacaur -Si` | Display information about a package in the repositories | +| pareps | `pacaur -Ss` | Search for packages in the repositories | +| paupd | `pacaur -Sy` | Update and refresh local package, ABS and AUR databases | +| paupg | `pacaur -Syua` | Sync with repositories before upgrading all packages (from AUR too) | +| pasu | `pacaur -Syua --no-confirm` | Same as `paupg`, but without confirmation | +| upgrade[¹](#f1) | `pacaur -Syu` | Sync with repositories before upgrading packages | + +#### Trizen + +| Alias | Command | Description | +|---------|-----------------------------------|---------------------------------------------------------------------| +| trconf | `trizen -C` | Fix all configuration files with vimdiff | +| trclean | `trizen -Sc` | Clean out old and unused caches and packages | +| trclr | `trizen -Scc` | Remove all files from the cache | +| trin | `trizen -S` | Install packages from the repositories | +| trins | `trizen -U` | Install a package from a local file | +| trinsd | `trizen -S --asdeps` | Install packages as dependencies of another package | +| trloc | `trizen -Qi` | Display information about a package in the local database | +| trlocs | `trizen -Qs` | Search for packages in the local database | +| trlst | `trizen -Qe` | List installed packages including from AUR (tagged as "local") | +| trmir | `trizen -Syy` | Force refresh of all package lists after updating mirrorlist | +| trorph | `trizen -Qtd` | Remove orphans using yaourt | +| trre | `trizen -R` | Remove packages, keeping its settings and dependencies | +| trrem | `trizen -Rns` | Remove packages, including its settings and unneeded dependencies | +| trrep | `trizen -Si` | Display information about a package in the repositories | +| trreps | `trizen -Ss` | Search for packages in the repositories | +| trupd | `trizen -Sy` | Update and refresh local package, ABS and AUR databases | +| trupg | `trizen -Syua` | Sync with repositories before upgrading all packages (from AUR too) | +| trsu | `trizen -Syua --no-confirm` | Same as `trupg`, but without confirmation | +| upgrade[¹](#f1) | `trizen -Syu` | Sync with repositories before upgrading packages | + +#### Yay + +| Alias | Command | Description | +|---------|--------------------------------|-------------------------------------------------------------------| +| yaconf | `yay -Pg` | Print current configuration | +| yaclean | `yay -Sc` | Clean out old and unused caches and packages | +| yaclr | `yay -Scc` | Remove all files from the cache | +| yain | `yay -S` | Install packages from the repositories | +| yains | `yay -U` | Install a package from a local file | +| yainsd | `yay -S --asdeps` | Install packages as dependencies of another package | +| yaloc | `yay -Qi` | Display information about a package in the local database | +| yalocs | `yay -Qs` | Search for packages in the local database | +| yalst | `yay -Qe` | List installed packages including from AUR (tagged as "local") | +| yamir | `yay -Syy` | Force refresh of all package lists after updating mirrorlist | +| yaorph | `yay -Qtd` | Remove orphans using yay | +| yare | `yay -R` | Remove packages, keeping its settings and dependencies | +| yarem | `yay -Rns` | Remove packages, including its settings and unneeded dependencies | +| yarep | `yay -Si` | Display information about a package in the repositories | +| yareps | `yay -Ss` | Search for packages in the repositories | +| yaupd | `yay -Sy` | Update and refresh local package, ABS and AUR databases | +| yaupg | `yay -Syu` | Sync with repositories before upgrading packages | +| yasu | `yay -Syu --no-confirm` | Same as `yaupg`, but without confirmation | +| upgrade[¹](#f1) | `yay -Syu` | Sync with repositories before upgrading packages | + +--- + +¹ +The `upgrade` alias is set for all package managers. Its value will depend on +whether the package manager is installed, checked in the following order: + +1. `yay` +2. `trizen` +3. `pacaur` +4. `aura` +5. `pacman` + +## Contributors + +- Benjamin Boudreau - dreurmail@gmail.com +- Celso Miranda - contacto@celsomiranda.net +- ratijas (ivan tkachenko) - me@ratijas.tk +- Juraj Fiala - doctorjellyface@riseup.net +- KhasMek - Boushh@gmail.com +- Majora320 (Moses Miller) - Majora320@gmail.com +- Martin Putniorz - mputniorz@gmail.com +- MatthR3D - matthr3d@gmail.com +- ornicar - thibault.duplessis@gmail.com +- Ybalrid (Arthur Brainville) - ybalrid@ybalrid.info +- Jeff M. Hubbard - jeffmhubbard@gmail.com +- K. Harishankar(harishnkr) - hari2menon1234@gmail.com diff --git a/dot_oh-my-zsh/plugins/archlinux/archlinux.plugin.zsh b/dot_oh-my-zsh/plugins/archlinux/archlinux.plugin.zsh new file mode 100644 index 0000000..4f13647 --- /dev/null +++ b/dot_oh-my-zsh/plugins/archlinux/archlinux.plugin.zsh @@ -0,0 +1,184 @@ +####################################### +# Pacman # +####################################### + +# Pacman - https://wiki.archlinux.org/index.php/Pacman_Tips +alias pacupg='sudo pacman -Syu' +alias pacin='sudo pacman -S' +alias paclean='sudo pacman -Sc' +alias pacins='sudo pacman -U' +alias paclr='sudo pacman -Scc' +alias pacre='sudo pacman -R' +alias pacrem='sudo pacman -Rns' +alias pacrep='pacman -Si' +alias pacreps='pacman -Ss' +alias pacloc='pacman -Qi' +alias paclocs='pacman -Qs' +alias pacinsd='sudo pacman -S --asdeps' +alias pacmir='sudo pacman -Syy' +alias paclsorphans='sudo pacman -Qdt' +alias pacrmorphans='sudo pacman -Rs $(pacman -Qtdq)' +alias pacfileupg='sudo pacman -Fy' +alias pacfiles='pacman -F' +alias pacls='pacman -Ql' +alias pacown='pacman -Qo' +alias pacupd="sudo pacman -Sy" +alias upgrade='sudo pacman -Syu' + +function paclist() { + # Based on https://bbs.archlinux.org/viewtopic.php?id=93683 + pacman -Qqe | \ + xargs -I '{}' \ + expac "${bold_color}% 20n ${fg_no_bold[white]}%d${reset_color}" '{}' +} + +function pacdisowned() { + local tmp db fs + tmp=${TMPDIR-/tmp}/pacman-disowned-$UID-$$ + db=$tmp/db + fs=$tmp/fs + + mkdir "$tmp" + trap 'rm -rf "$tmp"' EXIT + + pacman -Qlq | sort -u > "$db" + + find /bin /etc /lib /sbin /usr ! -name lost+found \ + \( -type d -printf '%p/\n' -o -print \) | sort > "$fs" + + comm -23 "$fs" "$db" +} + +alias pacmanallkeys='sudo pacman-key --refresh-keys' + +function pacmansignkeys() { + local key + for key in $@; do + sudo pacman-key --recv-keys $key + sudo pacman-key --lsign-key $key + printf 'trust\n3\n' | sudo gpg --homedir /etc/pacman.d/gnupg \ + --no-permission-warning --command-fd 0 --edit-key $key + done +} + +if (( $+commands[xdg-open] )); then + function pacweb() { + if [[ $# = 0 || "$1" =~ '--help|-h' ]]; then + local underline_color="\e[${color[underline]}m" + echo "$0 - open the website of an ArchLinux package" + echo + echo "Usage:" + echo " $bold_color$0$reset_color ${underline_color}target${reset_color}" + return 1 + fi + + local pkg="$1" + local infos="$(LANG=C pacman -Si "$pkg")" + if [[ -z "$infos" ]]; then + return + fi + local repo="$(grep -m 1 '^Repo' <<< "$infos" | grep -oP '[^ ]+$')" + local arch="$(grep -m 1 '^Arch' <<< "$infos" | grep -oP '[^ ]+$')" + xdg-open "https://www.archlinux.org/packages/$repo/$arch/$pkg/" &>/dev/null + } +fi + +####################################### +# AUR helpers # +####################################### + +if (( $+commands[aura] )); then + alias auin='sudo aura -S' + alias aurin='sudo aura -A' + alias auclean='sudo aura -Sc' + alias auclr='sudo aura -Scc' + alias auins='sudo aura -U' + alias auinsd='sudo aura -S --asdeps' + alias aurinsd='sudo aura -A --asdeps' + alias auloc='aura -Qi' + alias aulocs='aura -Qs' + alias aulst='aura -Qe' + alias aumir='sudo aura -Syy' + alias aurph='sudo aura -Oj' + alias aure='sudo aura -R' + alias aurem='sudo aura -Rns' + alias aurep='aura -Si' + alias aurrep='aura -Ai' + alias aureps='aura -As --both' + alias auras='aura -As --both' + alias auupd="sudo aura -Sy" + alias auupg='sudo sh -c "aura -Syu && aura -Au"' + alias ausu='sudo sh -c "aura -Syu --no-confirm && aura -Au --no-confirm"' + alias upgrade='sudo aura -Syu' + + # extra bonus specially for aura + alias auown="aura -Qqo" + alias auls="aura -Qql" + function auownloc() { aura -Qi $(aura -Qqo $@); } + function auownls () { aura -Qql $(aura -Qqo $@); } +fi + +if (( $+commands[pacaur] )); then + alias pacclean='pacaur -Sc' + alias pacclr='pacaur -Scc' + alias paupg='pacaur -Syu' + alias pasu='pacaur -Syu --noconfirm' + alias pain='pacaur -S' + alias pains='pacaur -U' + alias pare='pacaur -R' + alias parem='pacaur -Rns' + alias parep='pacaur -Si' + alias pareps='pacaur -Ss' + alias paloc='pacaur -Qi' + alias palocs='pacaur -Qs' + alias palst='pacaur -Qe' + alias paorph='pacaur -Qtd' + alias painsd='pacaur -S --asdeps' + alias pamir='pacaur -Syy' + alias paupd="pacaur -Sy" + alias upgrade='pacaur -Syu' +fi + +if (( $+commands[trizen] )); then + alias trconf='trizen -C' + alias trupg='trizen -Syua' + alias trsu='trizen -Syua --noconfirm' + alias trin='trizen -S' + alias trclean='trizen -Sc' + alias trclr='trizen -Scc' + alias trins='trizen -U' + alias trre='trizen -R' + alias trrem='trizen -Rns' + alias trrep='trizen -Si' + alias trreps='trizen -Ss' + alias trloc='trizen -Qi' + alias trlocs='trizen -Qs' + alias trlst='trizen -Qe' + alias trorph='trizen -Qtd' + alias trinsd='trizen -S --asdeps' + alias trmir='trizen -Syy' + alias trupd="trizen -Sy" + alias upgrade='trizen -Syu' +fi + +if (( $+commands[yay] )); then + alias yaconf='yay -Pg' + alias yaclean='yay -Sc' + alias yaclr='yay -Scc' + alias yaupg='yay -Syu' + alias yasu='yay -Syu --noconfirm' + alias yain='yay -S' + alias yains='yay -U' + alias yare='yay -R' + alias yarem='yay -Rns' + alias yarep='yay -Si' + alias yareps='yay -Ss' + alias yaloc='yay -Qi' + alias yalocs='yay -Qs' + alias yalst='yay -Qe' + alias yaorph='yay -Qtd' + alias yainsd='yay -S --asdeps' + alias yamir='yay -Syy' + alias yaupd="yay -Sy" + alias upgrade='yay -Syu' +fi diff --git a/dot_oh-my-zsh/plugins/asdf/README.md b/dot_oh-my-zsh/plugins/asdf/README.md new file mode 100644 index 0000000..f047860 --- /dev/null +++ b/dot_oh-my-zsh/plugins/asdf/README.md @@ -0,0 +1,30 @@ +## asdf + +**Maintainer:** [@RobLoach](https://github.com/RobLoach) + +Adds integration with [asdf](https://github.com/asdf-vm/asdf), the extendable version manager, with support for Ruby, Node.js, Elixir, Erlang and more. + +### Installation + +1. [Download asdf](https://asdf-vm.com/guide/getting-started.html#_2-download-asdf) by running the following: + + ``` + git clone https://github.com/asdf-vm/asdf.git ~/.asdf + ``` + +2. [Enable asdf](https://asdf-vm.com/guide/getting-started.html#_3-install-asdf) by adding it to your `plugins` definition in `~/.zshrc`. + + ``` + plugins=(asdf) + ``` + +### Usage + +See the [asdf documentation](https://asdf-vm.com/guide/getting-started.html#_4-install-a-plugin) for information on how to use asdf: + +``` +asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git +asdf install nodejs latest +asdf global nodejs latest +asdf local nodejs latest +``` diff --git a/dot_oh-my-zsh/plugins/asdf/asdf.plugin.zsh b/dot_oh-my-zsh/plugins/asdf/asdf.plugin.zsh new file mode 100644 index 0000000..3016282 --- /dev/null +++ b/dot_oh-my-zsh/plugins/asdf/asdf.plugin.zsh @@ -0,0 +1,27 @@ +# Find where asdf should be installed +ASDF_DIR="${ASDF_DIR:-$HOME/.asdf}" +ASDF_COMPLETIONS="$ASDF_DIR/completions" + +# If not found, check for archlinux/AUR package (/opt/asdf-vm/) +if [[ ! -f "$ASDF_DIR/asdf.sh" || ! -f "$ASDF_COMPLETIONS/asdf.bash" ]] && [[ -f "/opt/asdf-vm/asdf.sh" ]]; then + ASDF_DIR="/opt/asdf-vm" + ASDF_COMPLETIONS="$ASDF_DIR" +fi + +# If not found, check for Homebrew package +if [[ ! -f "$ASDF_DIR/asdf.sh" || ! -f "$ASDF_COMPLETIONS/asdf.bash" ]] && (( $+commands[brew] )); then + brew_prefix="$(brew --prefix asdf)" + ASDF_DIR="${brew_prefix}/libexec" + ASDF_COMPLETIONS="${brew_prefix}/etc/bash_completion.d" + unset brew_prefix +fi + +# Load command +if [[ -f "$ASDF_DIR/asdf.sh" ]]; then + . "$ASDF_DIR/asdf.sh" + + # Load completions + if [[ -f "$ASDF_COMPLETIONS/asdf.bash" ]]; then + . "$ASDF_COMPLETIONS/asdf.bash" + fi +fi diff --git a/dot_oh-my-zsh/plugins/autoenv/README.md b/dot_oh-my-zsh/plugins/autoenv/README.md new file mode 100644 index 0000000..5dfb5fb --- /dev/null +++ b/dot_oh-my-zsh/plugins/autoenv/README.md @@ -0,0 +1,20 @@ +# Autoenv plugin + +This plugin loads the [Autoenv](https://github.com/inishchith/autoenv). + +To use it, add `autoenv` to the plugins array in your zshrc file: + +```zsh +plugins=(... autoenv) +``` + +## Functions + +* `use_env()`: creates and/or activates a virtualenv. For use in `.env` files. + See the source code for details. + +## Requirements + +In order to make this work, you will need to have the autoenv installed. + +More info on the usage and install at [the project's homepage](https://github.com/inishchith/autoenv). diff --git a/dot_oh-my-zsh/plugins/autoenv/autoenv.plugin.zsh b/dot_oh-my-zsh/plugins/autoenv/autoenv.plugin.zsh new file mode 100644 index 0000000..229a8a8 --- /dev/null +++ b/dot_oh-my-zsh/plugins/autoenv/autoenv.plugin.zsh @@ -0,0 +1,72 @@ +# Initialization: activate autoenv or report its absence +() { +local d autoenv_dir install_locations +if ! type autoenv_init >/dev/null; then + # Check if activate.sh is in $PATH + if (( $+commands[activate.sh] )); then + autoenv_dir="${commands[activate.sh]:h}" + fi + + # Locate autoenv installation + if [[ -z $autoenv_dir ]]; then + install_locations=( + ~/.autoenv + ~/.local/bin + /usr/local/opt/autoenv + /opt/homebrew/opt/autoenv + /usr/local/bin + /usr/share/autoenv-git + ~/Library/Python/bin + ) + for d ( $install_locations ); do + if [[ -e $d/activate.sh ]]; then + autoenv_dir=$d + break + fi + done + fi + + # Look for Homebrew path as a last resort + if [[ -z "$autoenv_dir" ]] && (( $+commands[brew] )); then + d=$(brew --prefix)/opt/autoenv + if [[ -e $d/activate.sh ]]; then + autoenv_dir=$d + fi + fi + + # Complain if autoenv is not installed + if [[ -z $autoenv_dir ]]; then + cat <&2 +-------- AUTOENV --------- +Could not locate autoenv installation. +Please check if autoenv is correctly installed. +In the meantime the autoenv plugin is DISABLED. +-------------------------- +END + return 1 + fi + # Load autoenv + source $autoenv_dir/activate.sh +fi +} +[[ $? != 0 ]] && return $? + +# The use_env call below is a reusable command to activate/create a new Python +# virtualenv, requiring only a single declarative line of code in your .env files. +# It only performs an action if the requested virtualenv is not the current one. + +use_env() { + local venv + venv="$1" + if [[ "${VIRTUAL_ENV:t}" != "$venv" ]]; then + if workon | grep -q "$venv"; then + workon "$venv" + else + echo -n "Create virtualenv $venv now? (Yn) " + read answer + if [[ "$answer" == "Y" ]]; then + mkvirtualenv "$venv" + fi + fi + fi +} diff --git a/dot_oh-my-zsh/plugins/autojump/README.md b/dot_oh-my-zsh/plugins/autojump/README.md new file mode 100644 index 0000000..750ff56 --- /dev/null +++ b/dot_oh-my-zsh/plugins/autojump/README.md @@ -0,0 +1,11 @@ +# Autojump plugin + +This plugin loads the [autojump navigation tool](https://github.com/wting/autojump). + +To use it, add `autojump` to the plugins array in your zshrc file: + +```zsh +plugins=(... autojump) +``` + +**Note:** you have to [install autojump](https://github.com/wting/autojump#installation) first. diff --git a/dot_oh-my-zsh/plugins/autojump/autojump.plugin.zsh b/dot_oh-my-zsh/plugins/autojump/autojump.plugin.zsh new file mode 100644 index 0000000..1b868ee --- /dev/null +++ b/dot_oh-my-zsh/plugins/autojump/autojump.plugin.zsh @@ -0,0 +1,37 @@ +declare -a autojump_paths +autojump_paths=( + $HOME/.autojump/etc/profile.d/autojump.zsh # manual installation + $HOME/.autojump/share/autojump/autojump.zsh # manual installation + $HOME/.nix-profile/etc/profile.d/autojump.sh # NixOS installation + /run/current-system/sw/share/autojump/autojump.zsh # NixOS installation + /usr/share/autojump/autojump.zsh # Debian and Ubuntu package + /etc/profile.d/autojump.zsh # manual installation + /etc/profile.d/autojump.sh # Gentoo installation + /usr/local/share/autojump/autojump.zsh # FreeBSD installation + /usr/pkg/share/autojump/autojump.zsh # NetBSD installation + /opt/local/etc/profile.d/autojump.sh # macOS with MacPorts + /usr/local/etc/profile.d/autojump.sh # macOS with Homebrew (default) + /opt/homebrew/etc/profile.d/autojump.sh # macOS with Homebrew (default on M1 macs) + /etc/profiles/per-user/$USER/etc/profile.d/autojump.sh # macOS Nix, Home Manager and flakes +) + +for file in $autojump_paths; do + if [[ -f "$file" ]]; then + source "$file" + found=1 + break + fi +done + +# if no path found, try Homebrew +if (( ! found && $+commands[brew] )); then + file=$(brew --prefix)/etc/profile.d/autojump.sh + if [[ -f "$file" ]]; then + source "$file" + found=1 + fi +fi + +(( ! found )) && echo '[oh-my-zsh] autojump not found. Please install it first.' + +unset autojump_paths file found diff --git a/dot_oh-my-zsh/plugins/autopep8/README.md b/dot_oh-my-zsh/plugins/autopep8/README.md new file mode 100644 index 0000000..02bbb9a --- /dev/null +++ b/dot_oh-my-zsh/plugins/autopep8/README.md @@ -0,0 +1,8 @@ +# autopep8 plugin + +This plugin adds completion for [autopep8](https://pypi.org/project/autopep8/), a tool that automatically formats Python code to conform to the [PEP 8](http://www.python.org/dev/peps/pep-0008/) style guide. + +To use it, add autopep8 to the plugins array of your zshrc file: +``` +plugins=(... autopep8) +``` diff --git a/dot_oh-my-zsh/plugins/autopep8/_autopep8 b/dot_oh-my-zsh/plugins/autopep8/_autopep8 new file mode 100644 index 0000000..c14d06d --- /dev/null +++ b/dot_oh-my-zsh/plugins/autopep8/_autopep8 @@ -0,0 +1,32 @@ +#compdef autopep8 +# +# this is zsh completion function file. +# generated by genzshcomp(ver: 0.5.1) +# + +typeset -A opt_args +local context state line + +_arguments -s -S \ + "--help[show this help message and exit]:" \ + "-h[show this help message and exit]:" \ + "--version[show program's version number and exit]:" \ + "--verbose[print verbose messages; multiple -v result in more verbose messages]" \ + "-v[print verbose messages; multiple -v result in more verbose messages]" \ + "--diff[print the diff for the fixed source]" \ + "-d[print the diff for the fixed source]" \ + "--in-place[make changes to files in place]" \ + "-i[make changes to files in place]" \ + "--recursive[run recursively; must be used with --in-place or --diff]" \ + "-r[run recursively; must be used with --in-place or --diff]" \ + "--jobs[number of parallel jobs; match CPU count if value is less than 1]::n number of parallel jobs; match CPU count if value is:_files" \ + "-j[number of parallel jobs; match CPU count if value is less than 1]::n number of parallel jobs; match CPU count if value is:_files" \ + "--pep8-passes[maximum number of additional pep8 passes (default: 100)]::n:_files" \ + "-p[maximum number of additional pep8 passes (default: 100)]::n:_files" \ + "-a[-a result in more aggressive changes]::result:_files" \ + "--exclude[exclude files/directories that match these comma- separated globs]::globs:_files" \ + "--list-fixes[list codes for fixes; used by --ignore and --select]" \ + "--ignore[do not fix these errors/warnings (default E226,E24)]::errors:_files" \ + "--select[fix only these errors/warnings (e.g. E4,W)]::errors:_files" \ + "--max-line-length[set maximum allowed line length (default: 79)]::n:_files" \ + "*::args:_files" diff --git a/dot_oh-my-zsh/plugins/aws/README.md b/dot_oh-my-zsh/plugins/aws/README.md new file mode 100644 index 0000000..d6f4f46 --- /dev/null +++ b/dot_oh-my-zsh/plugins/aws/README.md @@ -0,0 +1,76 @@ +# aws + +This plugin provides completion support for [awscli](https://docs.aws.amazon.com/cli/latest/reference/index.html) +and a few utilities to manage AWS profiles and display them in the prompt. + +To use it, add `aws` to the plugins array in your zshrc file. + +```zsh +plugins=(... aws) +``` + +## Plugin commands + +* `asp []`: sets `$AWS_PROFILE` and `$AWS_DEFAULT_PROFILE` (legacy) to ``. + It also sets `$AWS_EB_PROFILE` to `` for the Elastic Beanstalk CLI. + Run `asp` without arguments to clear the profile. +* `asp [] login`: If AWS SSO has been configured in your aws profile, it will run the `aws sso login` command following profile selection. + +* `acp [] []`: in addition to `asp` functionality, it actually changes + the profile by assuming the role specified in the `` configuration. It supports + MFA and sets `$AWS_ACCESS_KEY_ID`, `$AWS_SECRET_ACCESS_KEY` and `$AWS_SESSION_TOKEN`, if + obtained. It requires the roles to be configured as per the + [official guide](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html). + Run `acp` without arguments to clear the profile. + +* `agp`: gets the current value of `$AWS_PROFILE`. + +* `aws_change_access_key`: changes the AWS access key of a profile. + +* `aws_profiles`: lists the available profiles in the `$AWS_CONFIG_FILE` (default: `~/.aws/config`). + Used to provide completion for the `asp` function. + +## Plugin options + +* Set `SHOW_AWS_PROMPT=false` in your zshrc file if you want to prevent the plugin from modifying your RPROMPT. + Some themes might overwrite the value of RPROMPT instead of appending to it, so they'll need to be fixed to + see the AWS profile prompt. + +## Theme + +The plugin creates an `aws_prompt_info` function that you can use in your theme, which displays +the current `$AWS_PROFILE`. It uses two variables to control how that is shown: + +* ZSH_THEME_AWS_PREFIX: sets the prefix of the AWS_PROFILE. Defaults to ``. + +## Configuration + +[Configuration and credential file settings](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) by AWS + +### Scenario: IAM roles with a source profile and MFA authentication + +Source profile credentials in `~/.aws/credentials`: + +``` +[source-profile-name] +aws_access_key_id = ... +aws_secret_access_key = ... +``` + +Role configuration in `~/.aws/config`: + +``` +[profile source-profile-name] +mfa_serial = arn:aws:iam::111111111111:mfa/myuser +region = us-east-1 +output = json + +[profile profile-with-role] +role_arn = arn:aws:iam::9999999999999:role/myrole +mfa_serial = arn:aws:iam::111111111111:mfa/myuser +source_profile = source-profile-name +region = us-east-1 +output = json +``` diff --git a/dot_oh-my-zsh/plugins/aws/aws.plugin.zsh b/dot_oh-my-zsh/plugins/aws/aws.plugin.zsh new file mode 100644 index 0000000..865e82f --- /dev/null +++ b/dot_oh-my-zsh/plugins/aws/aws.plugin.zsh @@ -0,0 +1,213 @@ +function agp() { + echo $AWS_PROFILE +} + +# AWS profile selection +function asp() { + if [[ -z "$1" ]]; then + unset AWS_DEFAULT_PROFILE AWS_PROFILE AWS_EB_PROFILE + echo AWS profile cleared. + return + fi + + local -a available_profiles + available_profiles=($(aws_profiles)) + if [[ -z "${available_profiles[(r)$1]}" ]]; then + echo "${fg[red]}Profile '$1' not found in '${AWS_CONFIG_FILE:-$HOME/.aws/config}'" >&2 + echo "Available profiles: ${(j:, :)available_profiles:-no profiles found}${reset_color}" >&2 + return 1 + fi + + export AWS_DEFAULT_PROFILE=$1 + export AWS_PROFILE=$1 + export AWS_EB_PROFILE=$1 + + if [[ "$2" == "login" ]]; then + aws sso login + fi +} + +# AWS profile switch +function acp() { + if [[ -z "$1" ]]; then + unset AWS_DEFAULT_PROFILE AWS_PROFILE AWS_EB_PROFILE + unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN + echo AWS profile cleared. + return + fi + + local -a available_profiles + available_profiles=($(aws_profiles)) + if [[ -z "${available_profiles[(r)$1]}" ]]; then + echo "${fg[red]}Profile '$1' not found in '${AWS_CONFIG_FILE:-$HOME/.aws/config}'" >&2 + echo "Available profiles: ${(j:, :)available_profiles:-no profiles found}${reset_color}" >&2 + return 1 + fi + + local profile="$1" + local mfa_token="$2" + + # Get fallback credentials for if the aws command fails or no command is run + local aws_access_key_id="$(aws configure get aws_access_key_id --profile $profile)" + local aws_secret_access_key="$(aws configure get aws_secret_access_key --profile $profile)" + local aws_session_token="$(aws configure get aws_session_token --profile $profile)" + + + # First, if the profile has MFA configured, lets get the token and session duration + local mfa_serial="$(aws configure get mfa_serial --profile $profile)" + local sess_duration="$(aws configure get duration_seconds --profile $profile)" + + if [[ -n "$mfa_serial" ]]; then + local -a mfa_opt + if [[ -z "$mfa_token" ]]; then + echo -n "Please enter your MFA token for $mfa_serial: " + read -r mfa_token + fi + if [[ -z "$sess_duration" ]]; then + echo -n "Please enter the session duration in seconds (900-43200; default: 3600, which is the default maximum for a role): " + read -r sess_duration + fi + mfa_opt=(--serial-number "$mfa_serial" --token-code "$mfa_token" --duration-seconds "${sess_duration:-3600}") + fi + + # Now see whether we need to just MFA for the current role, or assume a different one + local role_arn="$(aws configure get role_arn --profile $profile)" + local sess_name="$(aws configure get role_session_name --profile $profile)" + + if [[ -n "$role_arn" ]]; then + # Means we need to assume a specified role + aws_command=(aws sts assume-role --role-arn "$role_arn" "${mfa_opt[@]}") + + # Check whether external_id is configured to use while assuming the role + local external_id="$(aws configure get external_id --profile $profile)" + if [[ -n "$external_id" ]]; then + aws_command+=(--external-id "$external_id") + fi + + # Get source profile to use to assume role + local source_profile="$(aws configure get source_profile --profile $profile)" + if [[ -z "$sess_name" ]]; then + sess_name="${source_profile:-profile}" + fi + aws_command+=(--profile="${source_profile:-profile}" --role-session-name "${sess_name}") + + echo "Assuming role $role_arn using profile ${source_profile:-profile}" + else + # Means we only need to do MFA + aws_command=(aws sts get-session-token --profile="$profile" "${mfa_opt[@]}") + echo "Obtaining session token for profile $profile" + fi + + # Format output of aws command for easier processing + aws_command+=(--query '[Credentials.AccessKeyId,Credentials.SecretAccessKey,Credentials.SessionToken]' --output text) + + # Run the aws command to obtain credentials + local -a credentials + credentials=(${(ps:\t:)"$(${aws_command[@]})"}) + + if [[ -n "$credentials" ]]; then + aws_access_key_id="${credentials[1]}" + aws_secret_access_key="${credentials[2]}" + aws_session_token="${credentials[3]}" + fi + + # Switch to AWS profile + if [[ -n "${aws_access_key_id}" && -n "$aws_secret_access_key" ]]; then + export AWS_DEFAULT_PROFILE="$profile" + export AWS_PROFILE="$profile" + export AWS_EB_PROFILE="$profile" + export AWS_ACCESS_KEY_ID="$aws_access_key_id" + export AWS_SECRET_ACCESS_KEY="$aws_secret_access_key" + + if [[ -n "$aws_session_token" ]]; then + export AWS_SESSION_TOKEN="$aws_session_token" + else + unset AWS_SESSION_TOKEN + fi + + echo "Switched to AWS Profile: $profile" + fi +} + +function aws_change_access_key() { + if [[ -z "$1" ]]; then + echo "usage: $0 " + return 1 + fi + + echo "Insert the credentials when asked." + asp "$1" || return 1 + AWS_PAGER="" aws iam create-access-key + AWS_PAGER="" aws configure --profile "$1" + + echo "You can now safely delete the old access key running \`aws iam delete-access-key --access-key-id ID\`" + echo "Your current keys are:" + AWS_PAGER="" aws iam list-access-keys +} + +function aws_profiles() { + aws --no-cli-pager configure list-profiles 2> /dev/null && return + [[ -r "${AWS_CONFIG_FILE:-$HOME/.aws/config}" ]] || return 1 + grep --color=never -Eo '\[.*\]' "${AWS_CONFIG_FILE:-$HOME/.aws/config}" | sed -E 's/^[[:space:]]*\[(profile)?[[:space:]]*([^[:space:]]+)\][[:space:]]*$/\2/g' +} + +function _aws_profiles() { + reply=($(aws_profiles)) +} +compctl -K _aws_profiles asp acp aws_change_access_key + +# AWS prompt +function aws_prompt_info() { + [[ -n "$AWS_PROFILE" ]] || return + echo "${ZSH_THEME_AWS_PREFIX=}" +} + +if [[ "$SHOW_AWS_PROMPT" != false && "$RPROMPT" != *'$(aws_prompt_info)'* ]]; then + RPROMPT='$(aws_prompt_info)'"$RPROMPT" +fi + + +# Load awscli completions + +# AWS CLI v2 comes with its own autocompletion. Check if that is there, otherwise fall back +if command -v aws_completer &> /dev/null; then + autoload -Uz bashcompinit && bashcompinit + complete -C aws_completer aws +else + function _awscli-homebrew-installed() { + # check if Homebrew is installed + (( $+commands[brew] )) || return 1 + + # speculatively check default brew prefix + if [ -h /usr/local/opt/awscli ]; then + _brew_prefix=/usr/local/opt/awscli + else + # ok, it is not in the default prefix + # this call to brew is expensive (about 400 ms), so at least let's make it only once + _brew_prefix=$(brew --prefix awscli) + fi + } + + # get aws_zsh_completer.sh location from $PATH + _aws_zsh_completer_path="$commands[aws_zsh_completer.sh]" + + # otherwise check common locations + if [[ -z $_aws_zsh_completer_path ]]; then + # Homebrew + if _awscli-homebrew-installed; then + _aws_zsh_completer_path=$_brew_prefix/libexec/bin/aws_zsh_completer.sh + # Ubuntu + elif [[ -e /usr/share/zsh/vendor-completions/_awscli ]]; then + _aws_zsh_completer_path=/usr/share/zsh/vendor-completions/_awscli + # NixOS + elif [[ -e "${commands[aws]:P:h:h}/share/zsh/site-functions/aws_zsh_completer.sh" ]]; then + _aws_zsh_completer_path="${commands[aws]:P:h:h}/share/zsh/site-functions/aws_zsh_completer.sh" + # RPM + else + _aws_zsh_completer_path=/usr/share/zsh/site-functions/aws_zsh_completer.sh + fi + fi + + [[ -r $_aws_zsh_completer_path ]] && source $_aws_zsh_completer_path + unset _aws_zsh_completer_path _brew_prefix +fi diff --git a/dot_oh-my-zsh/plugins/battery/README.md b/dot_oh-my-zsh/plugins/battery/README.md new file mode 100644 index 0000000..18e5bd8 --- /dev/null +++ b/dot_oh-my-zsh/plugins/battery/README.md @@ -0,0 +1,29 @@ +# Battery Plugin + +This plugin adds some functions you can use to display battery information in your custom theme. + +To use, add `battery` to the list of plugins in your `.zshrc` file: + +`plugins=(... battery)` + +Then, add the `battery_pct_prompt` function to your custom theme. For example: + +```zsh +RPROMPT='$(battery_pct_prompt) ...' +``` + +## Requirements + +- On Linux, you must have the `acpi` or `acpitool` commands installed on your operating system. + On Debian/Ubuntu, you can do that with `sudo apt install acpi` or `sudo apt install acpitool`. + +- On Android (via [Termux](https://play.google.com/store/apps/details?id=com.termux)), you must have: + + 1. The `Termux:API` addon app installed: + [Google Play](https://play.google.com/store/apps/details?id=com.termux.api) | [F-Droid](https://f-droid.org/packages/com.termux.api/) + + 2. The `termux-api` package installed within termux: + + ```sh + pkg install termux-api + ``` diff --git a/dot_oh-my-zsh/plugins/battery/battery.plugin.zsh b/dot_oh-my-zsh/plugins/battery/battery.plugin.zsh new file mode 100644 index 0000000..db5eeb9 --- /dev/null +++ b/dot_oh-my-zsh/plugins/battery/battery.plugin.zsh @@ -0,0 +1,262 @@ +########################################### +# Battery plugin for oh-my-zsh # +# Original Author: Peter hoeg (peterhoeg) # +# Email: peter@speartail.com # +########################################### +# Author: Sean Jones (neuralsandwich) # +# Email: neuralsandwich@gmail.com # +# Modified to add support for Apple Mac # +########################################### +# Author: J (927589452) # +# Modified to add support for FreeBSD # +########################################### +# Author: Avneet Singh (kalsi-avneet) # +# Modified to add support for Android # +########################################### + +if [[ "$OSTYPE" = darwin* ]]; then + function battery_is_charging() { + ioreg -rc AppleSmartBattery | command grep -q '^.*"ExternalConnected"\ =\ Yes' + } + function battery_pct() { + pmset -g batt | grep -Eo "\d+%" | cut -d% -f1 + } + function battery_pct_remaining() { + if battery_is_charging; then + echo "External Power" + else + battery_pct + fi + } + function battery_time_remaining() { + local smart_battery_status="$(ioreg -rc "AppleSmartBattery")" + if [[ $(echo $smart_battery_status | command grep -c '^.*"ExternalConnected"\ =\ No') -eq 1 ]]; then + timeremaining=$(echo $smart_battery_status | command grep '^.*"AvgTimeToEmpty"\ =\ ' | sed -e 's/^.*"AvgTimeToEmpty"\ =\ //') + if [ $timeremaining -gt 720 ]; then + echo "::" + else + echo "~$((timeremaining / 60)):$((timeremaining % 60))" + fi + else + echo "∞" + fi + } + function battery_pct_prompt () { + local battery_pct color + if ioreg -rc AppleSmartBattery | command grep -q '^.*"ExternalConnected"\ =\ No'; then + battery_pct=$(battery_pct_remaining) + if [[ $battery_pct -gt 50 ]]; then + color='green' + elif [[ $battery_pct -gt 20 ]]; then + color='yellow' + else + color='red' + fi + echo "%{$fg[$color]%}[${battery_pct}%%]%{$reset_color%}" + else + echo "∞" + fi + } + +elif [[ "$OSTYPE" = freebsd* ]]; then + function battery_is_charging() { + [[ $(sysctl -n hw.acpi.battery.state) -eq 2 ]] + } + function battery_pct() { + if (( $+commands[sysctl] )); then + sysctl -n hw.acpi.battery.life + fi + } + function battery_pct_remaining() { + if ! battery_is_charging; then + battery_pct + else + echo "External Power" + fi + } + function battery_time_remaining() { + local remaining_time + remaining_time=$(sysctl -n hw.acpi.battery.time) + if [[ $remaining_time -ge 0 ]]; then + ((hour = $remaining_time / 60 )) + ((minute = $remaining_time % 60 )) + printf %02d:%02d $hour $minute + fi + } + function battery_pct_prompt() { + local battery_pct color + battery_pct=$(battery_pct_remaining) + if battery_is_charging; then + echo "∞" + else + if [[ $battery_pct -gt 50 ]]; then + color='green' + elif [[ $battery_pct -gt 20 ]]; then + color='yellow' + else + color='red' + fi + echo "%{$fg[$color]%}${battery_pct}%%%{$reset_color%}" + fi + } +elif [[ "$OSTYPE" = linux-android ]] && (( ${+commands[termux-battery-status]} )); then + function battery_is_charging() { + termux-battery-status 2>/dev/null | command awk '/status/ { exit ($0 ~ /DISCHARGING/) }' + } + function battery_pct() { + # Sample output: + # { + # "health": "GOOD", + # "percentage": 93, + # "plugged": "UNPLUGGED", + # "status": "DISCHARGING", + # "temperature": 29.0, + # "current": 361816 + # } + termux-battery-status 2>/dev/null | command awk '/percentage/ { gsub(/[,]/,""); print $2}' + } + function battery_pct_remaining() { + if ! battery_is_charging; then + battery_pct + else + echo "External Power" + fi + } + function battery_time_remaining() { } # Not available on android + function battery_pct_prompt() { + local battery_pct color + battery_pct=$(battery_pct_remaining) + if battery_is_charging; then + echo "∞" + else + if [[ $battery_pct -gt 50 ]]; then + color='green' + elif [[ $battery_pct -gt 20 ]]; then + color='yellow' + else + color='red' + fi + echo "%{$fg[$color]%}${battery_pct}%%%{$reset_color%}" + fi + } +elif [[ "$OSTYPE" = linux* ]]; then + function battery_is_charging() { + if (( $+commands[acpitool] )); then + ! acpitool 2>/dev/null | command grep -qE '^\s+Battery.*Discharging' + elif (( $+commands[acpi] )); then + ! acpi 2>/dev/null | command grep -v "rate information unavailable" | command grep -q '^Battery.*Discharging' + fi + } + function battery_pct() { + if (( $+commands[acpitool] )); then + # Sample output: + # Battery #1 : Unknown, 99.55% + # Battery #2 : Discharging, 49.58%, 01:12:05 + # All batteries : 62.60%, 02:03:03 + local -i pct=$(acpitool 2>/dev/null | command awk -F, ' + /^\s+All batteries/ { + gsub(/[^0-9.]/, "", $1) + pct=$1 + exit + } + !pct && /^\s+Battery/ { + gsub(/[^0-9.]/, "", $2) + pct=$2 + } + END { print pct } + ') + echo $pct + elif (( $+commands[acpi] )); then + # Sample output: + # Battery 0: Discharging, 0%, rate information unavailable + # Battery 1: Full, 100% + acpi 2>/dev/null | command awk -F, ' + /rate information unavailable/ { next } + /^Battery.*: /{ gsub(/[^0-9]/, "", $2); print $2; exit } + ' + fi + } + function battery_pct_remaining() { + if ! battery_is_charging; then + battery_pct + else + echo "External Power" + fi + } + function battery_time_remaining() { + if ! battery_is_charging; then + acpi 2>/dev/null | command grep -v "rate information unavailable" | cut -f3 -d ',' + fi + } + function battery_pct_prompt() { + local battery_pct color + battery_pct=$(battery_pct_remaining) + if battery_is_charging; then + echo "∞" + else + if [[ $battery_pct -gt 50 ]]; then + color='green' + elif [[ $battery_pct -gt 20 ]]; then + color='yellow' + else + color='red' + fi + echo "%{$fg[$color]%}${battery_pct}%%%{$reset_color%}" + fi + } +else + # Empty functions so we don't cause errors in prompts + function battery_is_charging { false } + function battery_pct \ + battery_pct_remaining \ + battery_time_remaining \ + battery_pct_prompt { } +fi + +function battery_level_gauge() { + local gauge_slots=${BATTERY_GAUGE_SLOTS:-10} + local green_threshold=${BATTERY_GREEN_THRESHOLD:-$(( gauge_slots * 0.6 ))} + local yellow_threshold=${BATTERY_YELLOW_THRESHOLD:-$(( gauge_slots * 0.4 ))} + local color_green=${BATTERY_COLOR_GREEN:-%F{green}} + local color_yellow=${BATTERY_COLOR_YELLOW:-%F{yellow}} + local color_red=${BATTERY_COLOR_RED:-%F{red}} + local color_reset=${BATTERY_COLOR_RESET:-%{%f%k%b%}} + local battery_prefix=${BATTERY_GAUGE_PREFIX:-'['} + local battery_suffix=${BATTERY_GAUGE_SUFFIX:-']'} + local filled_symbol=${BATTERY_GAUGE_FILLED_SYMBOL:-'▶'} + local empty_symbol=${BATTERY_GAUGE_EMPTY_SYMBOL:-'▷'} + local charging_color=${BATTERY_CHARGING_COLOR:-$color_yellow} + local charging_symbol=${BATTERY_CHARGING_SYMBOL:-'⚡'} + + local -i battery_remaining_percentage=$(battery_pct) + local filled empty gauge_color + + if [[ $battery_remaining_percentage =~ [0-9]+ ]]; then + filled=$(( ($battery_remaining_percentage * $gauge_slots) / 100 )) + empty=$(( $gauge_slots - $filled )) + + if [[ $filled -gt $green_threshold ]]; then + gauge_color=$color_green + elif [[ $filled -gt $yellow_threshold ]]; then + gauge_color=$color_yellow + else + gauge_color=$color_red + fi + else + filled=$gauge_slots + empty=0 + filled_symbol=${BATTERY_UNKNOWN_SYMBOL:-'.'} + fi + + local charging=' ' + battery_is_charging && charging=$charging_symbol + + # Charging status and prefix + print -n ${charging_color}${charging}${color_reset}${battery_prefix}${gauge_color} + # Filled slots + [[ $filled -gt 0 ]] && printf ${filled_symbol//\%/\%\%}'%.0s' {1..$filled} + # Empty slots + [[ $filled -lt $gauge_slots ]] && printf ${empty_symbol//\%/\%\%}'%.0s' {1..$empty} + # Suffix + print -n ${color_reset}${battery_suffix}${color_reset} +} diff --git a/dot_oh-my-zsh/plugins/bazel/README.md b/dot_oh-my-zsh/plugins/bazel/README.md new file mode 100644 index 0000000..fc375d2 --- /dev/null +++ b/dot_oh-my-zsh/plugins/bazel/README.md @@ -0,0 +1,14 @@ +# Bazel plugin + +This plugin adds completion for [bazel](https://bazel.build), an open-source build and +test tool that scalably supports multi-language and multi-platform projects. + +To use it, add `bazel` to the plugins array in your zshrc file: + +```zsh +plugins=(... bazel) +``` + +The plugin has a copy of [the completion script from the git repository][1]. + +[1]: https://github.com/bazelbuild/bazel/blob/master/scripts/zsh_completion/_bazel diff --git a/dot_oh-my-zsh/plugins/bazel/_bazel b/dot_oh-my-zsh/plugins/bazel/_bazel new file mode 100644 index 0000000..c34c572 --- /dev/null +++ b/dot_oh-my-zsh/plugins/bazel/_bazel @@ -0,0 +1,341 @@ +#compdef bazel + +# Copyright 2015 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Installation +# ------------ +# +# 1. Add this script to a directory on your $fpath: +# fpath[1,0]=~/.zsh/completion/ +# mkdir -p ~/.zsh/completion/ +# cp scripts/zsh_completion/_bazel ~/.zsh/completion +# +# 2. Optionally, add the following to your .zshrc. +# zstyle ':completion:*' use-cache on +# zstyle ':completion:*' cache-path ~/.zsh/cache +# +# This way, the completion script does not have to parse Bazel's options +# repeatedly. The directory in cache-path must be created manually. +# +# 3. Restart the shell +# +# Options +# ------- +# completion:init:bazel:* cache-lifetime +# Lifetime for the completion cache (if turned on, default: 1 week) + +local curcontext="$curcontext" state line + +: ${BAZEL_COMPLETION_PACKAGE_PATH:=%workspace%} +: ${BAZEL:=bazel} +_bazel_b() { ${BAZEL} --noblock_for_lock "$@" 2>/dev/null; } + +# Default cache lifetime is 1 week +zstyle -s ":completion:${curcontext}:" cache-lifetime lifetime +if [[ -z "${lifetime}" ]]; then + lifetime=$((60*60*24*7)) +fi + +_bazel_cache_policy() { + local -a oldp + oldp=( "$1"(Nms+${lifetime}) ) + (( $#oldp )) +} + +_set_cache_policy() { + zstyle -s ":completion:*:$curcontext*" cache-policy update_policy + + if [[ -z "$update_policy" ]]; then + zstyle ":completion:$curcontext*" cache-policy _bazel_cache_policy + fi +} + +# Skips over all global arguments. After invocation, OFFSET contains the +# position of the bazel command in $words. +_adapt_subcommand_offset() { + OFFSET=2 + for w in ${words[2,-1]}; do + if [[ $w == (#b)-* ]]; then + (( OFFSET++ )) + else + return + fi + done +} + +# Retrieve the cache but also check that the value is not empty. +_bazel_safe_retrieve_cache() { + _retrieve_cache $1 && [[ ${(P)#2} -gt 0 ]] +} + +# Puts the name of the variable that contains the options for the bazel +# subcommand handed in as the first argument into the global variable +# _bazel_cmd_options. +_bazel_get_options() { + local lcmd=$1 + _bazel_cmd_options=_bazel_${lcmd}_options + _bazel_cmd_args=_bazel_${lcmd}_args + if [[ ${(P)#_bazel_cmd_options} != 0 ]]; then + return + fi + if _cache_invalid BAZEL_${lcmd}_options || _cache_invalid BAZEL_${lcmd}_args \ + || ! _bazel_safe_retrieve_cache BAZEL_${lcmd}_options ${_bazel_cmd_options} \ + || ! _retrieve_cache BAZEL_${lcmd}_args ${_bazel_cmd_args}; then + if ! eval "$(_bazel_b help completion)"; then + return + fi + local opts_var + if [[ $lcmd == "startup_options" ]]; then + opts_var="BAZEL_STARTUP_OPTIONS" + else + opts_var="BAZEL_COMMAND_${lcmd:u}_FLAGS" + fi + local -a raw_options + if ! eval "raw_options=(\${(@f)$opts_var})"; then + return + fi + + local -a option_list + for opt in $raw_options; do + case $opt in + --*"={"*) + local lst="${${opt##*"={"}%"}"}" + local opt="${opt%%=*}=" + option_list+=("${opt}:string:_values '' ${lst//,/ }") ;; + --*=path) + option_list+=("${opt%path}:path:_files") ;; + --*=label) + option_list+=("${opt%label}:target:_bazel_complete_target") ;; + --*=*) + option_list+=("${opt}:string:") ;; + *) + option_list+=("$opt") ;; + esac + done + + local -a cmd_args + local cmd_type + if eval "cmd_type=\${BAZEL_COMMAND_${lcmd:u}_ARGUMENT}" && [[ -n $cmd_type ]]; then + case $cmd_type in + label|label-*) + cmd_args+=("*::${cmd_type}:_bazel_complete_target_${cmd_type//-/_}") ;; + info-key) + cmd_args+=('1::key:_bazel_info_key') ;; + path) + cmd_args+=('1::profile:_path_files') ;; + "command|{"*"}") + local lst=${${cmd_type#"command|{"}%"}"} + cmd_args+=("1::topic:_bazel_help_topic -- ${lst//,/ }") ;; + esac + fi + + typeset -g "${_bazel_cmd_options}"="${(pj:|:)option_list[*]}" + _store_cache BAZEL_${lcmd}_options ${_bazel_cmd_options} + typeset -g "${_bazel_cmd_args}"="${(pj:|:)cmd_args[*]}" + _store_cache BAZEL_${lcmd}_args ${_bazel_cmd_args} + fi +} + +_get_build_targets() { + local pkg=$1 + local rule_re + typeset -a completions + case $target_type in + test) + rule_re=".*_test" + ;; + build) + rule_re=".*" + ;; + bin) + rule_re=".*_test|.*_binary" + ;; + esac + completions=(${$(_bazel_b query "kind(\"${rule_re}\", ${pkg}:all)" 2>/dev/null)##*:}) + if ( (( ${#completions} > 0 )) && [[ $target_type != bin ]] ); then + completions+=(all) + fi + echo ${completions[*]} +} + +# Returns all packages that match $PREFIX. PREFIX may start with //, in which +# case the workspace roots are searched. Otherwise, they are completed based on +# PWD. +_get_build_packages() { + local workspace pfx + typeset -a package_roots paths final_paths + workspace=$PWD + package_roots=(${(ps.:.)BAZEL_COMPLETION_PACKAGE_PATH}) + package_roots=(${^package_roots//\%workspace\%/$workspace}) + if [[ "${(e)PREFIX}" == //* ]]; then + pfx=${(e)PREFIX[2,-1]} + else + pfx=${(e)PREFIX} + fi + paths=(${^package_roots}/${pfx}*(/)) + for p in ${paths[*]}; do + if [[ -f ${p}/BUILD || -f ${p}/BUILD.bazel ]]; then + final_paths+=(${p##*/}:) + fi + final_paths+=(${p##*/}/) + done + echo ${final_paths[*]} +} + +_package_remove_slash() { + if [[ $KEYS == ':' && $LBUFFER == */ ]]; then + LBUFFER=${LBUFFER[1,-2]} + fi +} + +# Completion function for BUILD targets, called by the completion system. +_bazel_complete_target() { + local expl + typeset -a packages targets + if [[ "${(e)PREFIX}" != *:* ]]; then + # There is no : in the prefix, completion can be either + # a package or a target, if the cwd is a package itself. + if [[ -f $PWD/BUILD || -f $PWD/BUILD.bazel ]]; then + targets=($(_get_build_targets "")) + _description build_target expl "BUILD target" + compadd "${expl[@]}" -a targets + fi + packages=($(_get_build_packages)) + _description build_package expl "BUILD package" + # Chop of the leading path segments from the prefix for display. + compset -P '*/' + compadd -R _package_remove_slash -S '' "${expl[@]}" -a packages + else + targets=($(_get_build_targets "${${(e)PREFIX}%:*}")) + _description build_target expl "BUILD target" + # Ignore the current prefix for the upcoming completion, since we only list + # the names of the targets, not the full path. + compset -P '*:' + compadd "${expl[@]}" -a targets + fi +} + +_bazel_complete_target_label() { + typeset -g target_type=build + _bazel_complete_target +} + +_bazel_complete_target_label_test() { + typeset -g target_type=test + _bazel_complete_target +} + +_bazel_complete_target_label_bin() { + typeset -g target_type=bin + _bazel_complete_target +} + +### Actual completion commands + +_bazel() { + _adapt_subcommand_offset + if (( CURRENT - OFFSET > 0 )); then + # Remember the subcommand name, stored globally so we can access it + # from any subsequent function + cmd=${words[OFFSET]//-/_} + + # Set the context for the subcommand. + curcontext="${curcontext%:*:*}:bazel-$cmd:" + _set_cache_policy + + # Narrow the range of words we are looking at to exclude cmd + # name and any leading options + (( CURRENT = CURRENT - OFFSET + 1 )) + shift $((OFFSET - 1)) words + # Run the completion for the subcommand + _bazel_get_options $cmd + _arguments : \ + ${(Pps:|:)_bazel_cmd_options} \ + ${(Pps:|:)_bazel_cmd_args} + else + _set_cache_policy + # Start special handling for global options, + # which can be retrieved by calling + # $ bazel help startup_options + _bazel_get_options startup_options + _arguments : \ + ${(Pps:|:)_bazel_cmd_options} \ + "*:commands:_bazel_commands" + fi + return +} + +_get_commands() { + # bazel_cmd_list is a global (g) array (a) + typeset -ga _bazel_cmd_list + # Use `bazel help` instead of `bazel help completion` to get command + # descriptions. + if _bazel_cmd_list=("${(@f)$(_bazel_b help | awk ' +/Available commands/ { command=1; } +/ [-a-z]+[ \t]+.+/ { if (command) { printf "%s:", $1; for (i=2; i<=NF; i++) printf "%s ", $i; print "" } } +/^$/ { command=0; }')}"); then + _store_cache BAZEL_commands _bazel_cmd_list + fi +} + +# Completion function for bazel subcommands, called by the completion system. +_bazel_commands() { + if [[ ${#_bazel_cmd_list} == 0 ]]; then + if _cache_invalid BAZEL_commands \ + || ! _bazel_safe_retrieve_cache BAZEL_commands _bazel_cmd_list; then + _get_commands + fi + fi + + _describe -t bazel-commands 'Bazel command' _bazel_cmd_list +} + +# Completion function for bazel help options, called by the completion system. +_bazel_help_topic() { + if [[ ${#_bazel_cmd_list} == 0 ]]; then + if _cache_invalid BAZEL_commands \ + || ! _bazel_safe_retrieve_cache BAZEL_commands _bazel_cmd_list; then + _get_commands + fi + fi + + while [[ $# -gt 0 ]]; do + if [[ $1 == -- ]]; then + shift + break + fi + shift + done + _bazel_help_list=($@) + _bazel_help_list+=($_bazel_cmd_list) + _describe -t bazel-help 'Help topic' _bazel_help_list +} + +# Completion function for bazel info keys, called by the completion system. +_bazel_info_key() { + if [[ ${#_bazel_info_keys_list} == 0 ]]; then + if _cache_invalid BAZEL_info_keys \ + || ! _bazel_safe_retrieve_cache BAZEL_info_keys _bazel_info_keys_list; then + typeset -ga _bazel_info_keys_list + # Use `bazel help` instead of `bazel help completion` to get info-key + # descriptions. + if _bazel_info_keys_list=("${(@f)$(_bazel_b help info-keys | awk ' + { printf "%s:", $1; for (i=2; i<=NF; i++) printf "%s ", $i; print "" }')}"); then + _store_cache BAZEL_info_keys _bazel_info_keys_list + fi + fi + fi + _describe -t bazel-info 'Key' _bazel_info_keys_list +} diff --git a/dot_oh-my-zsh/plugins/bbedit/README.md b/dot_oh-my-zsh/plugins/bbedit/README.md new file mode 100644 index 0000000..263c54c --- /dev/null +++ b/dot_oh-my-zsh/plugins/bbedit/README.md @@ -0,0 +1,20 @@ +## bbedit + +Plugin for BBEdit, an HTML and text editor for Mac OS X + +### Requirements + + * [BBEdit](https://www.barebones.com/products/bbedit/) + * [BBEdit Command-Line Tools](https://www.barebones.com/support/bbedit/cmd-line-tools.html) + +### Usage + + * If the `bb` command is called without an argument, launch BBEdit + + * If `bb` is passed a directory, cd to it and open it in BBEdit + + * If `bb` is passed a file, open it in BBEdit + + * If `bbpb` create a new BBEdit document with the contents of the clipboard + + * If `bbd` alias for BBEdit diff tool diff --git a/dot_oh-my-zsh/plugins/bbedit/bbedit.plugin.zsh b/dot_oh-my-zsh/plugins/bbedit/bbedit.plugin.zsh new file mode 100644 index 0000000..fe9e72c --- /dev/null +++ b/dot_oh-my-zsh/plugins/bbedit/bbedit.plugin.zsh @@ -0,0 +1,21 @@ +alias bbpb='pbpaste | bbedit --clean --view-top' + +alias bbd=bbdiff + +# +# If the bb command is called without an argument, launch BBEdit +# If bb is passed a directory, cd to it and open it in BBEdit +# If bb is passed a file, open it in BBEdit +# +function bb() { + if [[ -z "$1" ]] + then + bbedit --launch + else + bbedit "$1" + if [[ -d "$1" ]] + then + cd "$1" + fi + fi +} diff --git a/dot_oh-my-zsh/plugins/bedtools/README.md b/dot_oh-my-zsh/plugins/bedtools/README.md new file mode 100644 index 0000000..c4de4e3 --- /dev/null +++ b/dot_oh-my-zsh/plugins/bedtools/README.md @@ -0,0 +1,5 @@ +# Bedtools plugin + +This plugin adds support for the [bedtools suite](http://bedtools.readthedocs.org/en/latest/): + +* Adds autocomplete options for all bedtools sub commands. diff --git a/dot_oh-my-zsh/plugins/bedtools/_bedtools b/dot_oh-my-zsh/plugins/bedtools/_bedtools new file mode 100644 index 0000000..ef6c417 --- /dev/null +++ b/dot_oh-my-zsh/plugins/bedtools/_bedtools @@ -0,0 +1,64 @@ +#compdef bedtools +#autoload + +local curcontext="$curcontext" state line ret=1 +local -a _files + +_arguments -C \ + '1: :->cmds' \ + '2:: :->args' && ret=0 + +case $state in + cmds) + _values "bedtools command" \ + "--contact[Feature requests, bugs, mailing lists, etc.]" \ + "--help[Print this help menu.]" \ + "--version[What version of bedtools are you using?.]" \ + "annotate[Annotate coverage of features from multiple files.]" \ + "bamtobed[Convert BAM alignments to BED (& other) formats.]" \ + "bamtofastq[Convert BAM records to FASTQ records.]" \ + "bed12tobed6[Breaks BED12 intervals into discrete BED6 intervals.]" \ + "bedpetobam[Convert BEDPE intervals to BAM records.]" \ + "bedtobam[Convert intervals to BAM records.]" \ + "closest[Find the closest, potentially non-overlapping interval.]" \ + "cluster[Cluster (but don't merge) overlapping/nearby intervals.]" \ + "complement[Extract intervals _not_ represented by an interval file.]" \ + "coverage[Compute the coverage over defined intervals.]" \ + "expand[Replicate lines based on lists of values in columns.]" \ + "fisher[Calculate Fisher statistic b/w two feature files.]" \ + "flank[Create new intervals from the flanks of existing intervals.]" \ + "genomecov[Compute the coverage over an entire genome.]" \ + "getfasta[Use intervals to extract sequences from a FASTA file.]" \ + "groupby[Group by common cols. & summarize oth. cols. (~ SQL "groupBy")]" \ + "igv[Create an IGV snapshot batch script.]" \ + "intersect[Find overlapping intervals in various ways.]" \ + "jaccard[Calculate the Jaccard statistic b/w two sets of intervals.]" \ + "links[Create a HTML page of links to UCSC locations.]" \ + "makewindows[Make interval "windows" across a genome.]" \ + "map[Apply a function to a column for each overlapping interval.]" \ + "maskfasta[Use intervals to mask sequences from a FASTA file.]" \ + "merge[Combine overlapping/nearby intervals into a single interval.]" \ + "multicov[Counts coverage from multiple BAMs at specific intervals.]" \ + "multiinter[Identifies common intervals among multiple interval files.]" \ + "nuc[Profile the nucleotide content of intervals in a FASTA file.]" \ + "overlap[Computes the amount of overlap from two intervals.]" \ + "pairtobed[Find pairs that overlap intervals in various ways.]" \ + "pairtopair[Find pairs that overlap other pairs in various ways.]" \ + "random[Generate random intervals in a genome.]" \ + "reldist[Calculate the distribution of relative distances b/w two files.]" \ + "sample[Sample random records from file using reservoir sampling.]" \ + "shuffle[Randomly redistrubute intervals in a genome.]" \ + "slop[Adjust the size of intervals.]" \ + "sort[Order the intervals in a file.]" \ + "subtract[Remove intervals based on overlaps b/w two files.]" \ + "tag[Tag BAM alignments based on overlaps with interval files.]" \ + "unionbedg[Combines coverage intervals from multiple BEDGRAPH files.]" \ + "window[Find overlapping intervals within a window around an interval.]" \ + ret=0 + ;; + *) + _files + ;; +esac + +return ret diff --git a/dot_oh-my-zsh/plugins/bgnotify/README.md b/dot_oh-my-zsh/plugins/bgnotify/README.md new file mode 100644 index 0000000..1d8fac5 --- /dev/null +++ b/dot_oh-my-zsh/plugins/bgnotify/README.md @@ -0,0 +1,54 @@ +# bgnotify zsh plugin + +cross-platform background notifications for long running commands! Supports OSX and Ubuntu linux. + +Standalone homepage: [t413/zsh-background-notify](https://github.com/t413/zsh-background-notify) + +---------------------------------- + +## How to use! + +Just add bgnotify to your plugins list in your `.zshrc` + +- On OS X you'll need [terminal-notifier](https://github.com/alloy/terminal-notifier) + * `brew install terminal-notifier` (or `gem install terminal-notifier`) +- On ubuntu you're already all set! +- On windows you can use [notifu](https://www.paralint.com/projects/notifu/) or the Cygwin Ports libnotify package + + +## Screenshots + +**Linux** + +![screenshot from 2014-11-07 15 58 36](https://cloud.githubusercontent.com/assets/326829/4962187/256b465c-66da-11e4-927d-cc2fc105e31f.png) + +**OS X** + +![screenshot 2014-11-08 14 15 12](https://cloud.githubusercontent.com/assets/326829/4965780/19fa3eac-6795-11e4-8ed6-0355711123a9.png) + +**Windows** + +![screenshot from 2014-11-07 15 55 00](https://cloud.githubusercontent.com/assets/326829/4962159/a2625ca0-66d9-11e4-9e91-c5834913190e.png) + + +## Configuration + +One can configure a few things: + +- `bgnotify_threshold` sets the notification threshold time (default 6 seconds) +- `function bgnotify_formatted` lets you change the notification + +Use these by adding a function definition before the your call to source. Example: + +~~~ sh +bgnotify_threshold=4 ## set your own notification threshold + +function bgnotify_formatted { + ## $1=exit_status, $2=command, $3=elapsed_time + [ $1 -eq 0 ] && title="Holy Smokes Batman!" || title="Holy Graf Zeppelin!" + bgnotify "$title -- after $3 s" "$2"; +} + +plugins=(git bgnotify) ## add to plugins list +source $ZSH/oh-my-zsh.sh ## existing source call +~~~ diff --git a/dot_oh-my-zsh/plugins/bgnotify/bgnotify.plugin.zsh b/dot_oh-my-zsh/plugins/bgnotify/bgnotify.plugin.zsh new file mode 100644 index 0000000..ed2653a --- /dev/null +++ b/dot_oh-my-zsh/plugins/bgnotify/bgnotify.plugin.zsh @@ -0,0 +1,106 @@ +#!/usr/bin/env zsh + +## Setup + +[[ -o interactive ]] || return # don't load on non-interactive shells +[[ -z "$SSH_CLIENT" && -z "$SSH_TTY" ]] || return # don't load on a SSH connection + +zmodload zsh/datetime # faster than `date` + + +## Zsh Hooks + +function bgnotify_begin { + bgnotify_timestamp=$EPOCHSECONDS + bgnotify_lastcmd="${1:-$2}" +} + +function bgnotify_end { + { + local exit_status=$? + local elapsed=$(( EPOCHSECONDS - bgnotify_timestamp )) + + # check time elapsed + [[ $bgnotify_timestamp -gt 0 ]] || return + [[ $elapsed -ge $bgnotify_threshold ]] || return + + # check if Terminal app is not active + [[ $(bgnotify_appid) != "$bgnotify_termid" ]] || return + + printf '\a' # beep sound + bgnotify_formatted "$exit_status" "$bgnotify_lastcmd" "$elapsed" + } always { + bgnotify_timestamp=0 + } +} + +autoload -Uz add-zsh-hook +add-zsh-hook preexec bgnotify_begin +add-zsh-hook precmd bgnotify_end + + +## Functions + +# allow custom function override +(( ${+functions[bgnotify_formatted]} )) || \ +function bgnotify_formatted { + local exit_status=$1 + local cmd="$2" + + # humanly readable elapsed time + local elapsed="$(( $3 % 60 ))s" + (( $3 < 60 )) || elapsed="$((( $3 % 3600) / 60 ))m $elapsed" + (( $3 < 3600 )) || elapsed="$(( $3 / 3600 ))h $elapsed" + + if [[ $1 -eq 0 ]]; then + bgnotify "#win (took $elapsed)" "$2" + else + bgnotify "#fail (took $elapsed)" "$2" + fi +} + +# for macOS, output is "app ID, window ID" (com.googlecode.iterm2, 116) +function bgnotify_appid { + if (( ${+commands[osascript]} )); then + osascript -e 'tell application (path to frontmost application as text) to get the {id, id of front window}' 2>/dev/null + elif (( ${+commands[xprop]} )); then + xprop -root _NET_ACTIVE_WINDOW 2>/dev/null | cut -d' ' -f5 + else + echo $EPOCHSECONDS + fi +} + +function bgnotify { + # $1: title, $2: message + if (( ${+commands[terminal-notifier]} )); then # macOS + local term_id="${bgnotify_termid%%,*}" # remove window id + if [[ -z "$term_id" ]]; then + case "$TERM_PROGRAM" in + iTerm.app) term_id='com.googlecode.iterm2' ;; + Apple_Terminal) term_id='com.apple.terminal' ;; + esac + fi + + if [[ -z "$term_id" ]]; then + terminal-notifier -message "$2" -title "$1" &>/dev/null + else + terminal-notifier -message "$2" -title "$1" -activate "$term_id" -sender "$term_id" &>/dev/null + fi + elif (( ${+commands[growlnotify]} )); then # macOS growl + growlnotify -m "$1" "$2" + elif (( ${+commands[notify-send]} )); then # GNOME + notify-send "$1" "$2" + elif (( ${+commands[kdialog]} )); then # KDE + kdialog --title "$1" --passivepopup "$2" 5 + elif (( ${+commands[notifu]} )); then # cygwin + notifu /m "$2" /p "$1" + fi +} + +## Defaults + +# notify if command took longer than 5s by default +bgnotify_threshold=${bgnotify_threshold:-5} + +# bgnotify_appid is slow in macOS and the terminal ID won't change, so cache it at startup +bgnotify_termid="$(bgnotify_appid)" diff --git a/dot_oh-my-zsh/plugins/bower/README.md b/dot_oh-my-zsh/plugins/bower/README.md new file mode 100644 index 0000000..8877fbd --- /dev/null +++ b/dot_oh-my-zsh/plugins/bower/README.md @@ -0,0 +1,17 @@ +# Bower plugin + +This plugin adds completion for [Bower](https://bower.io/) and a few useful aliases for common Bower commands. + +To use it, add `bower` to the plugins array in your zshrc file: + +```zsh +plugins=(... bower) +``` + +## Aliases + +| Alias | Command | Description | +|-------|-----------------|--------------------------------------------------------| +| bi | `bower install` | Installs the project dependencies listed in bower.json | +| bl | `bower list` | List local packages and possible updates | +| bs | `bower search` | Finds all packages or a specific package. | diff --git a/dot_oh-my-zsh/plugins/bower/_bower b/dot_oh-my-zsh/plugins/bower/_bower new file mode 100644 index 0000000..ae0ca4a --- /dev/null +++ b/dot_oh-my-zsh/plugins/bower/_bower @@ -0,0 +1,58 @@ + + +# Credits to npm's awesome completion utility. +# +# Bower completion script, based on npm completion script. + +###-begin-bower-completion-### +# +# Installation: bower completion >> ~/.bashrc (or ~/.zshrc) +# Or, maybe: bower completion > /usr/local/etc/bash_completion.d/bower +# + +COMP_WORDBREAKS=${COMP_WORDBREAKS/=/} +COMP_WORDBREAKS=${COMP_WORDBREAKS/@/} +export COMP_WORDBREAKS + +if type complete &>/dev/null; then + _bower_completion () { + local si="$IFS" + IFS=$'\n' COMPREPLY=($(COMP_CWORD="$COMP_CWORD" \ + COMP_LINE="$COMP_LINE" \ + COMP_POINT="$COMP_POINT" \ + bower completion -- "${COMP_WORDS[@]}" \ + 2>/dev/null)) || return $? + IFS="$si" + } + complete -F _bower_completion bower +elif type compdef &>/dev/null; then + _bower_completion() { + si=$IFS + compadd -- $(COMP_CWORD=$((CURRENT-1)) \ + COMP_LINE=$BUFFER \ + COMP_POINT=0 \ + bower completion -- "${words[@]}" \ + 2>/dev/null) + IFS=$si + } + compdef _bower_completion bower +elif type compctl &>/dev/null; then + _bower_completion () { + local cword line point words si + read -Ac words + read -cn cword + let cword-=1 + read -l line + read -ln point + si="$IFS" + IFS=$'\n' reply=($(COMP_CWORD="$cword" \ + COMP_LINE="$line" \ + COMP_POINT="$point" \ + bower completion -- "${words[@]}" \ + 2>/dev/null)) || return $? + IFS="$si" + } + compctl -K _bower_completion bower +fi +###-end-bower-completion-### + diff --git a/dot_oh-my-zsh/plugins/bower/bower.plugin.zsh b/dot_oh-my-zsh/plugins/bower/bower.plugin.zsh new file mode 100644 index 0000000..c4f71c2 --- /dev/null +++ b/dot_oh-my-zsh/plugins/bower/bower.plugin.zsh @@ -0,0 +1,84 @@ +alias bi="bower install" +alias bisd="bower install --save-dev" +alias bis="bower install --save" +alias bl="bower list" +alias bs="bower search" + +_bower_installed_packages () { + bower_package_list=$(bower ls --no-color 2>/dev/null| awk 'NR>3{print p}{p=$0}'| cut -d ' ' -f 2|sed 's/#.*//') +} +_bower () +{ + local -a _1st_arguments _no_color _dopts _save_dev _force_latest _production + local expl + typeset -A opt_args + + _no_color=('--no-color[Do not print colors (available in all commands)]') + + _dopts=( + '(--save)--save[Save installed packages into the project"s bower.json dependencies]' + '(--force)--force[Force fetching remote resources even if a local copy exists on disk]' + ) + + _save_dev=('(--save-dev)--save-dev[Save installed packages into the project"s bower.json devDependencies]') + + _force_latest=('(--force-latest)--force-latest[Force latest version on conflict]') + + _production=('(--production)--production[Do not install project devDependencies]') + + _1st_arguments=( + 'cache-clean:Clean the Bower cache, or the specified package caches' \ + 'help:Display help information about Bower' \ + 'info:Version info and description of a particular package' \ + 'init:Interactively create a bower.json file' \ + 'install:Install a package locally' \ + 'link:Symlink a package folder' \ + 'lookup:Look up a package URL by name' \ + 'register:Register a package' \ + 'search:Search for a package by name' \ + 'uninstall:Remove a package' \ + 'update:Update a package' \ + {ls,list}:'[List all installed packages]' + ) + _arguments \ + $_no_color \ + '*:: :->subcmds' && return 0 + + if (( CURRENT == 1 )); then + _describe -t commands "bower subcommand" _1st_arguments + return + fi + + case "$words[1]" in + install) + _arguments \ + $_dopts \ + $_save_dev \ + $_force_latest \ + $_no_color \ + $_production + ;; + update) + _arguments \ + $_dopts \ + $_no_color \ + $_force_latest + _bower_installed_packages + compadd "$@" $(echo $bower_package_list) + ;; + uninstall) + _arguments \ + $_no_color \ + $_dopts + _bower_installed_packages + compadd "$@" $(echo $bower_package_list) + ;; + *) + _arguments \ + $_no_color \ + ;; + esac + +} + +compdef _bower bower diff --git a/dot_oh-my-zsh/plugins/branch/README.md b/dot_oh-my-zsh/plugins/branch/README.md new file mode 100644 index 0000000..a15dd22 --- /dev/null +++ b/dot_oh-my-zsh/plugins/branch/README.md @@ -0,0 +1,49 @@ +# Branch plugin + +This plugin displays the current Git or Mercurial branch, fast. If in a Mercurial repository, +also display the current bookmark, if present. + +To use it, add `branch` to the plugins array in your zshrc file: + +```zsh +plugins=(... branch) +``` + +## Speed test + +- `hg branch`: + + ```console + $ time hg branch + 0.11s user 0.14s system 70% cpu 0.355 total + ``` + +- branch plugin: + + ```console + $ time zsh /tmp/branch_prompt_info_test.zsh + 0.00s user 0.01s system 78% cpu 0.014 total + ``` + +## Usage + +Copy your theme to `$ZSH_CUSTOM/themes/` and modify it to add `$(branch_prompt_info)` in your prompt. +This example is for the `robbyrussell` theme: + +```diff +diff --git a/themes/robbyrussell.zsh-theme b/themes/robbyrussell.zsh-theme +index 2fd5f2cd..9d89a464 100644 +--- a/themes/robbyrussell.zsh-theme ++++ b/themes/robbyrussell.zsh-theme +@@ -1,5 +1,5 @@ + PROMPT="%(?:%{$fg_bold[green]%}➜ :%{$fg_bold[red]%}➜ )" +-PROMPT+=' %{$fg[cyan]%}%c%{$reset_color%} $(git_prompt_info)' ++PROMPT+=' %{$fg[cyan]%}%c%{$reset_color%} $(branch_prompt_info)' + + ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_bold[blue]%}git:(%{$fg[red]%}" + ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%} " +``` + +## Maintainer + +Victor Torres () diff --git a/dot_oh-my-zsh/plugins/branch/branch.plugin.zsh b/dot_oh-my-zsh/plugins/branch/branch.plugin.zsh new file mode 100644 index 0000000..dd5871f --- /dev/null +++ b/dot_oh-my-zsh/plugins/branch/branch.plugin.zsh @@ -0,0 +1,35 @@ +# Branch: displays the current Git or Mercurial branch fast. +# Victor Torres +# Oct 2, 2015 + +function branch_prompt_info() { + # Start checking in current working directory + local branch="" dir="$PWD" + while [[ "$dir" != '/' ]]; do + # Found .git directory + if [[ -d "${dir}/.git" ]]; then + branch="${"$(<"${dir}/.git/HEAD")"##*/}" + echo '±' "${branch:gs/%/%%}" + return + fi + + # Found .hg directory + if [[ -d "${dir}/.hg" ]]; then + if [[ -f "${dir}/.hg/branch" ]]; then + branch="$(<"${dir}/.hg/branch")" + else + branch="default" + fi + + if [[ -f "${dir}/.hg/bookmarks.current" ]]; then + branch="${branch}/$(<"${dir}/.hg/bookmarks.current")" + fi + + echo '☿' "${branch:gs/%/%%}" + return + fi + + # Check parent directory + dir="${dir:h}" + done +} diff --git a/dot_oh-my-zsh/plugins/brew/README.md b/dot_oh-my-zsh/plugins/brew/README.md new file mode 100644 index 0000000..d0c1502 --- /dev/null +++ b/dot_oh-my-zsh/plugins/brew/README.md @@ -0,0 +1,40 @@ +# brew plugin + +The plugin adds several aliases for common [brew](https://brew.sh) commands. + +To use it, add `brew` to the plugins array of your zshrc file: + +```zsh +plugins=(... brew) +``` + +## Shellenv + +If `brew` is not found in the PATH, this plugin will attempt to find it in common +locations, and execute `brew shellenv` to set the environment appropriately. +This plugin will also export `HOMEBREW_PREFIX="$(brew --prefix)"` if not previously +defined for convenience. + +## Aliases + +| Alias | Command | Description | +| -------- | --------------------------------------- | ------------------------------------------------------------------- | +| `bcubc` | `brew upgrade --cask && brew cleanup` | Update outdated casks, then run cleanup. | +| `bcubo` | `brew update && brew outdated --cask` | Update Homebrew data, then list outdated casks. | +| `bcubc` | `brew upgrade --cask && brew cleanup` | Update outdated casks, then run cleanup. | +| `brewp` | `brew pin` | Pin a specified formula so that it's not upgraded. | +| `brews` | `brew list -1` | List installed formulae or the installed files for a given formula. | +| `brewsp` | `brew list --pinned` | List pinned formulae, or show the version of a given formula. | +| `bubc` | `brew upgrade && brew cleanup` | Upgrade outdated formulae and casks, then run cleanup. | +| `bugbc` | `brew upgrade --greedy && brew cleanup` | Upgrade outdated formulae and casks (greedy), then run cleanup. | +| `bubo` | `brew update && brew outdated` | Update Homebrew data, then list outdated formulae and casks. | +| `bubu` | `bubo && bubc` | Do the last two operations above. | +| `bfu` | `brew upgrade --formula` | Upgrade only formulas (not casks). | +| `buz` | `brew uninstall --zap` | Remove all files associated with a cask. | + +## Completion + +With the release of Homebrew 1.0, they decided to bundle the zsh completion as part of the +brew installation, so we no longer ship it with the brew plugin; now it only has brew +aliases. If you find that brew completion no longer works, make sure you have your Homebrew +installation fully up to date. diff --git a/dot_oh-my-zsh/plugins/brew/brew.plugin.zsh b/dot_oh-my-zsh/plugins/brew/brew.plugin.zsh new file mode 100644 index 0000000..f6abe08 --- /dev/null +++ b/dot_oh-my-zsh/plugins/brew/brew.plugin.zsh @@ -0,0 +1,52 @@ +if (( ! $+commands[brew] )); then + if [[ -x /opt/homebrew/bin/brew ]]; then + BREW_LOCATION="/opt/homebrew/bin/brew" + elif [[ -x /usr/local/bin/brew ]]; then + BREW_LOCATION="/usr/local/bin/brew" + elif [[ -x /home/linuxbrew/.linuxbrew/bin/brew ]]; then + BREW_LOCATION="/home/linuxbrew/.linuxbrew/bin/brew" + elif [[ -x "$HOME/.linuxbrew/bin/brew" ]]; then + BREW_LOCATION="$HOME/.linuxbrew/bin/brew" + else + return + fi + + # Only add Homebrew installation to PATH, MANPATH, and INFOPATH if brew is + # not already on the path, to prevent duplicate entries. This aligns with + # the behavior of the brew installer.sh post-install steps. + eval "$("$BREW_LOCATION" shellenv)" + unset BREW_LOCATION +fi + +if [[ -z "$HOMEBREW_PREFIX" ]]; then + # Maintain compatability with potential custom user profiles, where we had + # previously relied on always sourcing shellenv. OMZ plugins should not rely + # on this to be defined due to out of order processing. + export HOMEBREW_PREFIX="$(brew --prefix)" +fi + +alias bcubc='brew upgrade --cask && brew cleanup' +alias bcubo='brew update && brew outdated --cask' +alias bcubc='brew upgrade --cask && brew cleanup' +alias brewp='brew pin' +alias brewsp='brew list --pinned' +alias bubc='brew upgrade && brew cleanup' +alias bugbc='brew upgrade --greedy && brew cleanup' +alias bubo='brew update && brew outdated' +alias bubu='bubo && bubc' +alias bubug='bubo && bugbc' +alias bfu='brew upgrade --formula' +alias buz='brew uninstall --zap' + +function brews() { + local formulae="$(brew leaves | xargs brew deps --installed --for-each)" + local casks="$(brew list --cask 2>/dev/null)" + + local blue="$(tput setaf 4)" + local bold="$(tput bold)" + local off="$(tput sgr0)" + + echo "${blue}==>${off} ${bold}Formulae${off}" + echo "${formulae}" | sed "s/^\(.*\):\(.*\)$/\1${blue}\2${off}/" + echo "\n${blue}==>${off} ${bold}Casks${off}\n${casks}" +} diff --git a/dot_oh-my-zsh/plugins/bridgetown/README.md b/dot_oh-my-zsh/plugins/bridgetown/README.md new file mode 100644 index 0000000..0a41814 --- /dev/null +++ b/dot_oh-my-zsh/plugins/bridgetown/README.md @@ -0,0 +1,26 @@ +# Bridgetown plugin + +This plugin adds some aliases and autocompletion for common [Bridgetown](https://bridgetownrb.com/) commands. + +To use it, add `bridgetown` to the plugins array in your zshrc file: + +```zsh +plugins=(... bridgetown) +``` + +## Aliases + +| Alias | Command | +|-------|----------------------------| +| br | `bridgetown` | +| bra | `bin/bridgetown apply` | +| brb | `bin/bridgetown build` | +| brc | `bin/bridgetown console` | +| brclean | `bin/bridgetown clean` | +| brd | `bin/bridgetown deploy` | +| brdoc | `bin/bridgetown doctor` | +| brh | `bin/bridgetown help` | +| brn | `bridgetown new` | +| brp | `bridgetown plugins` | +| brpl | `bridgetown plugins list` | +| brs | `bin/bridgetown start` | diff --git a/dot_oh-my-zsh/plugins/bridgetown/bridgetown.plugin.zsh b/dot_oh-my-zsh/plugins/bridgetown/bridgetown.plugin.zsh new file mode 100644 index 0000000..502e9df --- /dev/null +++ b/dot_oh-my-zsh/plugins/bridgetown/bridgetown.plugin.zsh @@ -0,0 +1,12 @@ +alias br='bridgetown' +alias bra='bin/bridgetown apply' +alias brb='bin/bridgetown build' +alias brc='bin/bridgetown console' +alias brclean='bin/bridgetown clean' +alias brd='bin/bridgetown deploy' +alias brdoc='bin/bridgetown doctor' +alias brh='bin/bridgetown help' +alias brn='bridgetown new' +alias brp='bridgetown plugins' +alias brpl='bridgetown plugins list' +alias brs='bin/bridgetown start' diff --git a/dot_oh-my-zsh/plugins/bundler/README.md b/dot_oh-my-zsh/plugins/bundler/README.md new file mode 100644 index 0000000..7b79cbc --- /dev/null +++ b/dot_oh-my-zsh/plugins/bundler/README.md @@ -0,0 +1,74 @@ +# Bundler + +This plugin adds completion for basic bundler commands, as well as aliases and helper functions for +an easier experience with bundler. + +To use it, add `bundler` to the plugins array in your zshrc file: + +```zsh +plugins=(... bundler) +``` + +## Aliases + +| Alias | Command | Description | +|--------|--------------------------------------|------------------------------------------------------------------------------------------| +| `ba` | `bundle add` | Add gem to the Gemfile and run bundle install | +| `bck` | `bundle check` | Verifies if dependencies are satisfied by installed gems | +| `bcn` | `bundle clean` | Cleans up unused gems in your bundler directory | +| `be` | `bundle exec` | Execute a command in the context of the bundle | +| `bi` | `bundle install --jobs=` | Install the dependencies specified in your Gemfile (using all cores in bundler >= 1.4.0) | +| `bl` | `bundle list` | List all the gems in the bundle | +| `bo` | `bundle open` | Opens the source directory for a gem in your bundle | +| `bout` | `bundle outdated` | List installed gems with newer versions available | +| `bp` | `bundle package` | Package your needed .gem files into your application | +| `bu` | `bundle update` | Update your gems to the latest available versions | + +## Gem wrapper + +The plugin adds a wrapper for common gems, which: + +- Looks for a binstub under `./bin/` and executes it if present. +- Calls `bundle exec ` otherwise. + +Common gems wrapped by default (by name of the executable): + +`annotate`, `cap`, `capify`, `cucumber`, `foodcritic`, `guard`, `hanami`, `irb`, `jekyll`, `kitchen`, `knife`, `middleman`, `nanoc`, `pry`, `puma`, `rackup`, `rainbows`, `rake`, `rspec`, `rubocop`, `shotgun`, `sidekiq`, `spec`, `spork`, `spring`, `strainer`, `tailor`, `taps`, `thin`, `thor`, `unicorn` and `unicorn_rails`. + +### Settings + +You can add or remove gems from the list of wrapped commands. +Please **use the exact name of the executable** and not the gem name. + +#### Include gems to be wrapped (`BUNDLED_COMMANDS`) + +Add this before the plugin list in your `.zshrc`: + +```sh +BUNDLED_COMMANDS=(rubocop) +plugins=(... bundler ...) +``` + +This will add the wrapper for the `rubocop` gem (i.e. the executable). + +#### Exclude gems from being wrapped (`UNBUNDLED_COMMANDS`) + +Add this before the plugin list in your `.zshrc`: + +```sh +UNBUNDLED_COMMANDS=(foreman spin) +plugins=(... bundler ...) +``` + +This will exclude the `foreman` and `spin` gems (i.e. their executable) from being wrapped. + +### Excluded gems + +These gems should not be called with `bundle exec`. Please see [issue #2923](https://github.com/ohmyzsh/ohmyzsh/pull/2923) on GitHub for clarification: + +- `berks` +- `foreman` +- `mailcatcher` +- `rails` +- `ruby` +- `spin` diff --git a/dot_oh-my-zsh/plugins/bundler/_bundler b/dot_oh-my-zsh/plugins/bundler/_bundler new file mode 100644 index 0000000..51678dd --- /dev/null +++ b/dot_oh-my-zsh/plugins/bundler/_bundler @@ -0,0 +1,105 @@ +#compdef bundle + +local curcontext="$curcontext" state line _gems _opts ret=1 + +_arguments -C -A "-v" -A "--version" \ + '(- 1 *)'{-v,--version}'[display version information]' \ + '1: :->cmds' \ + '*:: :->args' && ret=0 + +case $state in + cmds) + _values "bundle command" \ + "install[Install the gems specified by the Gemfile or Gemfile.lock]" \ + "update[Update dependencies to their latest versions]" \ + "package[Package the .gem files required by your application]" \ + "exec[Execute a script in the context of the current bundle]" \ + "config[Specify and read configuration options for bundler]" \ + "check[Determine whether the requirements for your application are installed]" \ + "list[Show all of the gems in the current bundle]" \ + "show[Show the source location of a particular gem in the bundle]" \ + "info[Show details of a particular gem in the bundle]" \ + "outdated[Show all of the outdated gems in the current bundle]" \ + "console[Start an IRB session in the context of the current bundle]" \ + "open[Open an installed gem in the editor]" \ + "viz[Generate a visual representation of your dependencies]" \ + "init[Generate a simple Gemfile, placed in the current directory]" \ + "gem[Create a simple gem, suitable for development with bundler]" \ + "platform[Displays platform compatibility information]" \ + "clean[Cleans up unused gems in your bundler directory]" \ + "help[Describe available tasks or one specific task]" + ret=0 + ;; + args) + case $line[1] in + help) + _values 'commands' \ + 'install' \ + 'update' \ + 'package' \ + 'exec' \ + 'config' \ + 'check' \ + 'list' \ + 'show' \ + 'outdated' \ + 'console' \ + 'open' \ + 'viz' \ + 'init' \ + 'gem' \ + 'platform' \ + 'help' && ret=0 + ;; + install) + _arguments \ + '(--no-color)--no-color[disable colorization in output]' \ + '(--local)--local[do not attempt to connect to rubygems.org]' \ + '(--quiet)--quiet[only output warnings and errors]' \ + '(--gemfile)--gemfile=-[use the specified gemfile instead of Gemfile]:gemfile' \ + '(--system)--system[install to the system location]' \ + '(--deployment)--deployment[install using defaults tuned for deployment environments]' \ + '(--frozen)--frozen[do not allow the Gemfile.lock to be updated after this install]' \ + '(--path)--path=-[specify a different path than the system default]:path:_files' \ + '(--binstubs)--binstubs=-[generate bin stubs for bundled gems to ./bin]:directory:_files' \ + '(--without)--without=-[exclude gems that are part of the specified named group]:groups' + ret=0 + ;; + exec) + _normal && ret=0 + ;; + clean) + _arguments \ + '(--force)--force[forces clean even if --path is not set]' \ + '(--dry-run)--dry-run[only print out changes, do not actually clean gems]' \ + '(--no-color)--no-color[Disable colorization in output]' \ + '(--verbose)--verbose[Enable verbose output mode]' + ret=0 + ;; + outdated) + _arguments \ + '(--pre)--pre[Check for newer pre-release gems]' \ + '(--source)--source[Check against a specific source]' \ + '(--local)--local[Do not attempt to fetch gems remotely and use the gem cache instead]' \ + '(--no-color)--no-color[Disable colorization in output]' \ + '(--verbose)--verbose[Enable verbose output mode]' + ret=0 + ;; + (open|show|info) + _gems=( $(bundle show 2> /dev/null | sed -e '/^ \*/!d; s/^ \* \([^ ]*\) .*/\1/') ) + if [[ $_gems != "" ]]; then + _values 'gems' $_gems && ret=0 + fi + ;; + *) + _opts=( $(bundle help $line[1] | sed -e '/^ \[-/!d; s/^ \[\(-[^=]*\)=.*/\1/') ) + _opts+=( $(bundle help $line[1] | sed -e '/^ -/!d; s/^ \(-.\), \[\(-[^=]*\)=.*/\1 \2/') ) + if [[ $_opts != "" ]]; then + _values 'options' $_opts && ret=0 + fi + ;; + esac + ;; +esac + +return ret diff --git a/dot_oh-my-zsh/plugins/bundler/bundler.plugin.zsh b/dot_oh-my-zsh/plugins/bundler/bundler.plugin.zsh new file mode 100644 index 0000000..c1cbb13 --- /dev/null +++ b/dot_oh-my-zsh/plugins/bundler/bundler.plugin.zsh @@ -0,0 +1,127 @@ +## Aliases + +alias ba="bundle add" +alias bck="bundle check" +alias bcn="bundle clean" +alias be="bundle exec" +alias bi="bundle_install" +alias bl="bundle list" +alias bo="bundle open" +alias bout="bundle outdated" +alias bp="bundle package" +alias bu="bundle update" + +## Functions + +bundle_install() { + # Bail out if bundler is not installed + if (( ! $+commands[bundle] )); then + echo "Bundler is not installed" + return 1 + fi + + # Bail out if not in a bundled project + if ! _within-bundled-project; then + echo "Can't 'bundle install' outside a bundled project" + return 1 + fi + + # Check the bundler version is at least 1.4.0 + autoload -Uz is-at-least + local bundler_version=$(bundle version | cut -d' ' -f3) + if ! is-at-least 1.4.0 "$bundler_version"; then + bundle install "$@" + return $? + fi + + # If bundler is at least 1.4.0, use all the CPU cores to bundle install + if [[ "$OSTYPE" = (darwin|freebsd)* ]]; then + local cores_num="$(sysctl -n hw.ncpu)" + else + local cores_num="$(nproc)" + fi + BUNDLE_JOBS="$cores_num" bundle install "$@" +} + +## Gem wrapper + +bundled_commands=( + annotate + cap + capify + cucumber + foodcritic + guard + hanami + irb + jekyll + kitchen + knife + middleman + nanoc + pry + puma + rackup + rainbows + rake + rspec + rubocop + shotgun + sidekiq + spec + spork + spring + strainer + tailor + taps + thin + thor + unicorn + unicorn_rails +) + +# Remove $UNBUNDLED_COMMANDS from the bundled_commands list +bundled_commands=(${bundled_commands:|UNBUNDLED_COMMANDS}) +unset UNBUNDLED_COMMANDS + +# Add $BUNDLED_COMMANDS to the bundled_commands list +bundled_commands+=($BUNDLED_COMMANDS) +unset BUNDLED_COMMANDS + +# Check if in the root or a subdirectory of a bundled project +_within-bundled-project() { + local check_dir="$PWD" + while [[ "$check_dir" != "/" ]]; do + if [[ -f "$check_dir/Gemfile" || -f "$check_dir/gems.rb" ]]; then + return 0 + fi + check_dir="${check_dir:h}" + done + return 1 +} + +_run-with-bundler() { + if (( ! $+commands[bundle] )) || ! _within-bundled-project; then + "$@" + return $? + fi + + if [[ -f "./bin/${1}" ]]; then + ./bin/${^^@} + else + bundle exec "$@" + fi +} + +for cmd in $bundled_commands; do + # Create wrappers for bundled and unbundled execution + eval "function unbundled_$cmd () { \"$cmd\" \"\$@\"; }" + eval "function bundled_$cmd () { _run-with-bundler \"$cmd\" \"\$@\"; }" + alias "$cmd"="bundled_$cmd" + + # Bind completion function to wrapped gem if available + if (( $+functions[_$cmd] )); then + compdef "_$cmd" "bundled_$cmd"="$cmd" + fi +done +unset cmd bundled_commands diff --git a/dot_oh-my-zsh/plugins/cabal/README.md b/dot_oh-my-zsh/plugins/cabal/README.md new file mode 100644 index 0000000..b1106c4 --- /dev/null +++ b/dot_oh-my-zsh/plugins/cabal/README.md @@ -0,0 +1,9 @@ +# Cabal + +This plugin provides completion for [Cabal](https://www.haskell.org/cabal/), a build tool for Haskell. It +also provides a function `cabal_sandbox_info` that prints whether the current working directory is in a sandbox. + +To use it, add cabal to the plugins array of your zshrc file: +``` +plugins=(... cabal) +``` diff --git a/dot_oh-my-zsh/plugins/cabal/cabal.plugin.zsh b/dot_oh-my-zsh/plugins/cabal/cabal.plugin.zsh new file mode 100644 index 0000000..a9a05b0 --- /dev/null +++ b/dot_oh-my-zsh/plugins/cabal/cabal.plugin.zsh @@ -0,0 +1,93 @@ +function cabal_sandbox_info() { + cabal_files=(*.cabal(N)) + if [ $#cabal_files -gt 0 ]; then + if [ -f cabal.sandbox.config ]; then + echo "%{$fg[green]%}sandboxed%{$reset_color%}" + else + echo "%{$fg[red]%}not sandboxed%{$reset_color%}" + fi + fi +} + +function _cabal_commands() { + local ret=1 state + _arguments ':subcommand:->subcommand' && ret=0 + + case $state in + subcommand) + subcommands=( + "bench:Run the benchmark, if any (configure with UserHooks)" + "build:Compile all targets or specific target." + "check:Check the package for common mistakes" + "clean:Clean up after a build" + "copy:Copy the files into the install locations" + "configure:Prepare to build the package" + "exec:Run a command with the cabal environment" + "fetch:Downloads packages for later installation" + "freeze:Freeze dependencies." + "get:Gets a package's source code" + "haddock:Generate Haddock HTML documentation" + "help:Help about commands" + "hscolour:Generate HsColour colourised code, in HTML format" + "info:Display detailed information about a particular package" + "init:Interactively create a .cabal file" + "install:Installs a list of packages" + "list:List packages matching a search string" + "register:Register this package with the compiler" + "repl:Open an interpreter session for the given target" + "report:Upload build reports to a remote server" + "run:Runs the compiled executable" + "sandbox:Create/modify/delete a sandbox" + "sdist:Generate a source distribution file (.tar.gz)" + "test:Run the test suite, if any (configure with UserHooks)" + "unpack:Unpacks packages for user inspection" + "update:Updates list of known packages" + "upload:Uploads source packages to Hackage" + ) + _describe -t subcommands 'cabal subcommands' subcommands && ret=0 + esac + + return ret +} + +compdef _cabal_commands cabal + +function _cab_commands() { + local ret=1 state + _arguments ':subcommand:->subcommand' && ret=0 + + case $state in + subcommand) + subcommands=( + "sync:Fetch the latest package index" + "install:Install packages" + "uninstall:Uninstall packages" + "installed:List installed packages" + "configure:Configure a cabal package" + "build:Build a cabal package" + "clean:Clean up a build directory" + "outdated:Display outdated packages" + "info:Display information of a package" + "sdist:Make tar.gz for source distribution" + "upload:Uploading tar.gz to HackageDB" + "get:Untar a package in the current directory" + "deps:Show dependencies of this package" + "revdeps:Show reverse dependencies of this package" + "check:Check consistency of packages" + "genpaths:Generate Paths_.hs" + "search:Search available packages by package name" + "add:Add a source directory" + "test:Run tests" + "bench:Run benchmarks" + "doc:Generate manuals" + "ghci:Run GHCi (with a sandbox)" + "init:Initialize a sandbox" + "help:Display the help message of the command" + ) + _describe -t subcommands 'cab subcommands' subcommands && ret=0 + esac + + return ret +} + +command -v cab >/dev/null 2>&1 && { compdef _cab_commands cab } diff --git a/dot_oh-my-zsh/plugins/cake/README.md b/dot_oh-my-zsh/plugins/cake/README.md new file mode 100644 index 0000000..2c2a280 --- /dev/null +++ b/dot_oh-my-zsh/plugins/cake/README.md @@ -0,0 +1,15 @@ +# Cake + +This plugin provides completion for [CakePHP](https://cakephp.org/). + +To use it add cake to the plugins array in your zshrc file. + +```bash +plugins=(... cake) +``` + +## Note + +This plugin generates a cache file of the cake tasks found, named `.cake_task_cache`, in the current working directory. +It is regenerated when the Cakefile is newer than the cache file. It is advised that you add the cake file to your +`.gitignore` files. diff --git a/dot_oh-my-zsh/plugins/cake/cake.plugin.zsh b/dot_oh-my-zsh/plugins/cake/cake.plugin.zsh new file mode 100644 index 0000000..2370df9 --- /dev/null +++ b/dot_oh-my-zsh/plugins/cake/cake.plugin.zsh @@ -0,0 +1,33 @@ +# Set this to 1 if you want to cache the tasks +_cake_cache_task_list=1 + +# Cache filename +_cake_task_cache_file='.cake_task_cache' + +_cake_get_target_list () { + cake | grep '^cake ' | sed -e "s/cake \([^ ]*\) .*/\1/" | grep -v '^$' +} + +_cake_does_target_list_need_generating () { + + if [ ${_cake_cache_task_list} -eq 0 ]; then + return 1; + fi + + [ ! -f ${_cake_task_cache_file} ] && return 0; + [ Cakefile -nt ${_cake_task_cache_file} ] && return 0; + return 1; +} + +_cake () { + if [ -f Cakefile ]; then + if _cake_does_target_list_need_generating; then + _cake_get_target_list > ${_cake_task_cache_file} + compadd `cat ${_cake_task_cache_file}` + else + compadd `_cake_get_target_list` + fi + fi +} + +compdef _cake cake diff --git a/dot_oh-my-zsh/plugins/cakephp3/README.md b/dot_oh-my-zsh/plugins/cakephp3/README.md new file mode 100644 index 0000000..7e8f664 --- /dev/null +++ b/dot_oh-my-zsh/plugins/cakephp3/README.md @@ -0,0 +1,16 @@ +# cakephp3 plugin + +The plugin adds aliases and autocompletion for [cakephp3](https://book.cakephp.org/3.0/en/index.html). + +To use it, add `cakephp3` to the plugins array of your zshrc file: +``` +plugins=(... cakephp3) +``` + +## Aliases + +| Alias | Command | +|-----------|-------------------------------| +| c3 | `bin/cake` | +| c3cache | `bin/cake orm_cache clear` | +| c3migrate | `bin/cake migrations migrate` | diff --git a/dot_oh-my-zsh/plugins/cakephp3/cakephp3.plugin.zsh b/dot_oh-my-zsh/plugins/cakephp3/cakephp3.plugin.zsh new file mode 100644 index 0000000..a1a289f --- /dev/null +++ b/dot_oh-my-zsh/plugins/cakephp3/cakephp3.plugin.zsh @@ -0,0 +1,38 @@ +# CakePHP 3 basic command completion +_cakephp3_get_command_list () { + bin/cake completion commands +} + +_cakephp3_get_sub_command_list () { + bin/cake completion subcommands ${words[2]} +} + +_cakephp3_get_3rd_argument () { + bin/cake ${words[2]} ${words[3]} | \grep '\-\ '| \awk '{print $2}' +} + +_cakephp3 () { + local -a has3rdargument + has3rdargument=("all" "controller" "fixture" "model" "template") + if [ -f bin/cake ]; then + if (( CURRENT == 2 )); then + compadd $(_cakephp3_get_command_list) + fi + if (( CURRENT == 3 )); then + compadd $(_cakephp3_get_sub_command_list) + fi + if (( CURRENT == 4 )); then + if [[ ${has3rdargument[(i)${words[3]}]} -le ${#has3rdargument} ]]; then + compadd $(_cakephp3_get_3rd_argument) + fi + fi + fi +} + +compdef _cakephp3 bin/cake +compdef _cakephp3 cake + +#Alias +alias c3='bin/cake' +alias c3cache='bin/cake schema_cache clear' +alias c3migrate='bin/cake migrations migrate' diff --git a/dot_oh-my-zsh/plugins/capistrano/README.md b/dot_oh-my-zsh/plugins/capistrano/README.md new file mode 100644 index 0000000..335b794 --- /dev/null +++ b/dot_oh-my-zsh/plugins/capistrano/README.md @@ -0,0 +1,14 @@ +# Capistrano + +This plugin provides completion for [Capistrano](https://capistranorb.com/). + +To use it add capistrano to the plugins array in your zshrc file. + +```bash +plugins=(... capistrano) +``` + +For a working completion use the `capit` command instead of `cap`, because cap is a +[reserved word in zsh](http://zsh.sourceforge.net/Doc/Release/Zsh-Modules.html#The-zsh_002fcap-Module). + +`capit` automatically runs cap with bundler if a Gemfile is found. diff --git a/dot_oh-my-zsh/plugins/capistrano/_capistrano b/dot_oh-my-zsh/plugins/capistrano/_capistrano new file mode 100644 index 0000000..a79e47b --- /dev/null +++ b/dot_oh-my-zsh/plugins/capistrano/_capistrano @@ -0,0 +1,49 @@ +#compdef capit +#autoload + +# Added `capit` because `cap` is a reserved word. `cap` completion doesn't work. +# http://zsh.sourceforge.net/Doc/Release/Zsh-Modules.html#The-zsh_002fcap-Module + +local curcontext="$curcontext" state line ret=1 +local -a _configs + +_arguments -C \ + '1: :->cmds' \ + '2:: :->args' && ret=0 + +_cap_tasks() { + if [[ -f config/deploy.rb || -f Capfile ]]; then + if [[ ! -f .cap_tasks~ ]]; then + capit --tasks | sed 's/\(\[\)\(.*\)\(\]\)/\2:/' | awk '{command=$2; $1=$2=$3=""; gsub(/^[ \t\r\n]+/, "", $0); gsub(":", "\\:", command); print command"["$0"]"}' > .cap_tasks~ + fi + + OLD_IFS=$IFS + IFS=$'\n' + _values 'cap commands' $(< .cap_tasks~) + IFS=$OLD_IFS + # zmodload zsh/mapfile + # _values ${(f)mapfile[.cap_tasks~]} + fi +} + +_cap_stages() { + compadd $(find config/deploy -name \*.rb | cut -d/ -f3 | sed s:.rb::g) +} + +case $state in + cmds) + # check if it uses multistage + if [[ -d config/deploy ]]; then + _cap_stages + else + _cap_tasks + fi + ret=0 + ;; + args) + _cap_tasks + ret=0 + ;; +esac + +return ret diff --git a/dot_oh-my-zsh/plugins/capistrano/capistrano.plugin.zsh b/dot_oh-my-zsh/plugins/capistrano/capistrano.plugin.zsh new file mode 100644 index 0000000..8195728 --- /dev/null +++ b/dot_oh-my-zsh/plugins/capistrano/capistrano.plugin.zsh @@ -0,0 +1,11 @@ +# Added `capit` because `cap` is a reserved word. `cap` completion doesn't work. +# http://zsh.sourceforge.net/Doc/Release/Zsh-Modules.html#The-zsh_002fcap-Module + +function capit() { + if [ -f Gemfile ] + then + bundle exec cap $* + else + cap $* + fi +} diff --git a/dot_oh-my-zsh/plugins/cask/README.md b/dot_oh-my-zsh/plugins/cask/README.md new file mode 100644 index 0000000..e1335c1 --- /dev/null +++ b/dot_oh-my-zsh/plugins/cask/README.md @@ -0,0 +1,15 @@ +# Cask plugin + +[Cask](https://github.com/cask/cask) is a project management tool for Emacs that helps +automate the package development cycle; development, dependencies, testing, building, +packaging and more. + +This plugin loads `cask` completion from non-standard locations, such as if installed +via Homebrew or others. To enable it, add `cask` to your plugins array: + +```zsh +plugins=(... cask) +``` + +Make sure you have the `cask` directory in your `$PATH` before loading Oh My Zsh, +otherwise you'll get a "command not found" error. diff --git a/dot_oh-my-zsh/plugins/cask/cask.plugin.zsh b/dot_oh-my-zsh/plugins/cask/cask.plugin.zsh new file mode 100644 index 0000000..29120b3 --- /dev/null +++ b/dot_oh-my-zsh/plugins/cask/cask.plugin.zsh @@ -0,0 +1,26 @@ +() { + emulate -L zsh + + if ! (( $+commands[cask] )); then + print "zsh cask plugin: cask command not found" >&2 + return + fi + + cask_base=${commands[cask]:h:h} + + # Plain cask installation location (for Cask 0.7.2 and earlier) + comp_files=($cask_base/etc/cask_completion.zsh) + + # Mac Homebrew installs the completion in a different location + if (( $+commands[brew] )); then + comp_files+=($(brew --prefix)/share/zsh/site-functions/cask_completion.zsh) + fi + + # Load first found file + for f in $comp_files; do + if [[ -f "$f" ]]; then + source "$f" + break + fi + done +} diff --git a/dot_oh-my-zsh/plugins/catimg/README.md b/dot_oh-my-zsh/plugins/catimg/README.md new file mode 100644 index 0000000..8f26880 --- /dev/null +++ b/dot_oh-my-zsh/plugins/catimg/README.md @@ -0,0 +1,23 @@ +# catimg + +Plugin for displaying images on the terminal using the the `catimg.sh` script provided by [posva](https://github.com/posva/catimg) + +To use it, add `catimg` to the plugins array in your zshrc file: + +```zsh +plugins=(... catimg) +``` + +## Requirements + +- `convert` (ImageMagick) + +## Functions + +| Function | Description | +| -------- | ---------------------------------------- | +| `catimg` | Displays the given image on the terminal | + +## Usage examples + +[![asciicast](https://asciinema.org/a/204702.png)](https://asciinema.org/a/204702) diff --git a/dot_oh-my-zsh/plugins/catimg/catimg.plugin.zsh b/dot_oh-my-zsh/plugins/catimg/catimg.plugin.zsh new file mode 100644 index 0000000..f4ff6f8 --- /dev/null +++ b/dot_oh-my-zsh/plugins/catimg/catimg.plugin.zsh @@ -0,0 +1,17 @@ +################################################################################ +# catimg script by Eduardo San Martin Morote aka Posva # +# https://posva.net # +# # +# Output the content of an image to the stdout using the 256 colors of the # +# terminal. # +# GitHub: https://github.com/posva/catimg # +################################################################################ + + +function catimg() { + if [[ -x `which convert` ]]; then + zsh $ZSH/plugins/catimg/catimg.sh $@ + else + echo "catimg need convert (ImageMagick) to work)" + fi +} diff --git a/dot_oh-my-zsh/plugins/catimg/catimg.sh b/dot_oh-my-zsh/plugins/catimg/catimg.sh new file mode 100644 index 0000000..f583924 --- /dev/null +++ b/dot_oh-my-zsh/plugins/catimg/catimg.sh @@ -0,0 +1,88 @@ +################################################################################ +# catimg script by Eduardo San Martin Morote aka Posva # +# https://posva.net # +# # +# Output the content of an image to the stdout using the 256 colors of the # +# terminal. # +# GitHub: https://github.com/posva/catimg # +################################################################################ + +function help() { + echo "Usage catimg [-h] [-w width] [-c char] img" + echo "By default char is \" \" and w is the terminal width" +} + +# VARIABLES +COLOR_FILE=$(dirname $0)/colors.png +CHAR=" " + +WIDTH="" +IMG="" + +while getopts qw:c:h opt; do + case "$opt" in + w) WIDTH="$OPTARG" ;; + c) CHAR="$OPTARG" ;; + h) help; exit ;; + *) help ; exit 1;; + esac + done + +while [ "$1" ]; do + IMG="$1" + shift +done + +if [ "$IMG" = "" -o ! -f "$IMG" ]; then + help + exit 1 +fi + +if [ ! "$WIDTH" ]; then + COLS=$(expr $(tput cols) "/" $(echo -n "$CHAR" | wc -c)) +else + COLS=$(expr $WIDTH "/" $(echo -n "$CHAR" | wc -c)) +fi +WIDTH=$(convert "$IMG" -print "%w\n" /dev/null) +if [ "$WIDTH" -gt "$COLS" ]; then + WIDTH=$COLS +fi + +REMAP="" +if convert "$IMG" -resize $COLS\> +dither -remap $COLOR_FILE /dev/null ; then + REMAP="-remap $COLOR_FILE" +else + echo "The version of convert is too old, don't expect good results :(" >&2 + #convert "$IMG" -colors 256 PNG8:tmp.png + #IMG="tmp.png" +fi + +# Display the image +I=0 +convert "$IMG" -resize $COLS\> +dither `echo $REMAP` txt:- 2>/dev/null | +sed -e 's/.*none.*/NO NO NO/g' -e '1d;s/^.*(\(.*\)[,)].*$/\1/g;y/,/ /' | +while read R G B f; do + if [ ! "$R" = "NO" ]; then + if [ "$R" -eq "$G" -a "$G" -eq "$B" ]; then + (( + I++, + IDX = 232 + R * 23 / 255 + )) + else + (( + I++, + IDX = 16 + + R * 5 / 255 * 36 + + G * 5 / 255 * 6 + + B * 5 / 255 + )) + fi + #echo "$R,$G,$B: $IDX" + echo -ne "\e[48;5;${IDX}m${CHAR}" + else + (( I++ )) + echo -ne "\e[0m${CHAR}" + fi + # New lines + (( $I % $WIDTH )) || echo -e "\e[0m" +done diff --git a/dot_oh-my-zsh/plugins/catimg/colors.png b/dot_oh-my-zsh/plugins/catimg/colors.png new file mode 100644 index 0000000000000000000000000000000000000000..5f2c8126bc0d8911a9de5d3ffbd4e37372b41671 GIT binary patch literal 353 zcmV-n0iOPeP) zV|@Gn{~G8ykjRV#PQCxH|Hm1Kz--RQKmY&$#Kd628_Utk00000NkvXXu0mjflf#Hs literal 0 HcmV?d00001 diff --git a/dot_oh-my-zsh/plugins/celery/README.md b/dot_oh-my-zsh/plugins/celery/README.md new file mode 100644 index 0000000..d2597f7 --- /dev/null +++ b/dot_oh-my-zsh/plugins/celery/README.md @@ -0,0 +1,9 @@ +# Celery + +This plugin provides completion for [Celery](http://www.celeryproject.org/). + +To use it add celery to the plugins array in your zshrc file. + +```bash +plugins=(... celery) +``` diff --git a/dot_oh-my-zsh/plugins/celery/_celery b/dot_oh-my-zsh/plugins/celery/_celery new file mode 100644 index 0000000..63af9fa --- /dev/null +++ b/dot_oh-my-zsh/plugins/celery/_celery @@ -0,0 +1,129 @@ +#compdef celery +#autoload + +#celery zsh completion + +_celery () { +local -a _1st_arguments ifargs dopts controlargs + +typeset -A opt_args + +_1st_arguments=('worker' 'events' 'beat' 'shell' 'multi' 'amqp' 'status' 'inspect' \ + 'control' 'purge' 'list' 'migrate' 'call' 'result' 'report') +ifargs=('--app=' '--broker=' '--loader=' '--config=' '--version') +dopts=('--detach' '--umask=' '--gid=' '--uid=' '--pidfile=' '--logfile=' '--loglevel=') +controlargs=('--timeout' '--destination') +_arguments \ + '(-A --app=)'{-A,--app}'[app instance to use (e.g. module.attr_name):APP]' \ + '(-b --broker=)'{-b,--broker}'[url to broker. default is "amqp://guest@localhost//":BROKER]' \ + '(--loader)--loader[name of custom loader class to use.:LOADER]' \ + '(--config)--config[Name of the configuration module:CONFIG]' \ + '(--workdir)--workdir[Optional directory to change to after detaching.:WORKING_DIRECTORY]' \ + '(-q --quiet)'{-q,--quiet}'[Don"t show as much output.]' \ + '(-C --no-color)'{-C,--no-color}'[Don"t display colors.]' \ + '(--version)--version[show program"s version number and exit]' \ + '(- : *)'{-h,--help}'[show this help message and exit]' \ + '*:: :->subcmds' && return 0 + +if (( CURRENT == 1 )); then + _describe -t commands "celery subcommand" _1st_arguments + return +fi + +case "$words[1]" in + worker) + _arguments \ + '(-C --concurrency=)'{-C,--concurrency=}'[Number of child processes processing the queue. The default is the number of CPUs.]' \ + '(--pool)--pool=:::(processes eventlet gevent threads solo)' \ + '(--purge --discard)'{--discard,--purge}'[Purges all waiting tasks before the daemon is started.]' \ + '(-f --logfile=)'{-f,--logfile=}'[Path to log file. If no logfile is specified, stderr is used.]' \ + '(--loglevel=)--loglevel=:::(critical error warning info debug)' \ + '(-N --hostname=)'{-N,--hostname=}'[Set custom hostname, e.g. "foo.example.com".]' \ + '(-B --beat)'{-B,--beat}'[Also run the celerybeat periodic task scheduler.]' \ + '(-s --schedule=)'{-s,--schedule=}'[Path to the schedule database if running with the -B option. Defaults to celerybeat-schedule.]' \ + '(-S --statedb=)'{-S,--statedb=}'[Path to the state database.Default: None]' \ + '(-E --events)'{-E,--events}'[Send events that can be captured by monitors like celeryev, celerymon, and others.]' \ + '(--time-limit=)--time-limit=[nables a hard time limit (in seconds int/float) for tasks]' \ + '(--soft-time-limit=)--soft-time-limit=[Enables a soft time limit (in seconds int/float) for tasks]' \ + '(--maxtasksperchild=)--maxtasksperchild=[Maximum number of tasks a pool worker can execute before it"s terminated and replaced by a new worker.]' \ + '(-Q --queues=)'{-Q,--queues=}'[List of queues to enable for this worker, separated by comma. By default all configured queues are enabled.]' \ + '(-I --include=)'{-I,--include=}'[Comma separated list of additional modules to import.]' \ + '(--pidfile=)--pidfile=[Optional file used to store the process pid.]' \ + '(--autoscale=)--autoscale=[Enable autoscaling by providing max_concurrency, min_concurrency.]' \ + '(--autoreload)--autoreload[Enable autoreloading.]' \ + '(--no-execv)--no-execv[Don"t do execv after multiprocessing child fork.]' + compadd -a ifargs + ;; + inspect) + _values -s \ + 'active[dump active tasks (being processed)]' \ + 'active_queues[dump queues being consumed from]' \ + 'ping[ping worker(s)]' \ + 'registered[dump of registered tasks]' \ + 'report[get bugreport info]' \ + 'reserved[dump reserved tasks (waiting to be processed)]' \ + 'revoked[dump of revoked task ids]' \ + 'scheduled[dump scheduled tasks (eta/countdown/retry)]' \ + 'stats[dump worker statistics]' + compadd -a controlargs ifargs + ;; + control) + _values -s \ + 'add_consumer[tell worker(s) to start consuming a queue]' \ + 'autoscale[change autoscale settings]' \ + 'cancel_consumer[tell worker(s) to stop consuming a queue]' \ + 'disable_events[tell worker(s) to disable events]' \ + 'enable_events[tell worker(s) to enable events]' \ + 'pool_grow[start more pool processes]' \ + 'pool_shrink[use less pool processes]' \ + 'rate_limit[tell worker(s) to modify the rate limit for a task type]' \ + 'time_limit[tell worker(s) to modify the time limit for a task type.]' + compadd -a controlargs ifargs + ;; + multi) + _values -s \ + '--nosplash[Don"t display program info.]' \ + '--verbose[Show more output.]' \ + '--no-color[Don"t display colors.]' \ + '--quiet[Don"t show as much output.]' \ + 'start' 'restart' 'stopwait' 'stop' 'show' \ + 'names' 'expand' 'get' 'kill' + compadd -a ifargs + ;; + amqp) + _values -s \ + 'queue.declare' 'queue.purge' 'exchange.delete' 'basic.publish' \ + 'exchange.declare' 'queue.delete' 'queue.bind' 'basic.get' + ;; + list) + _values -s, 'bindings' + ;; + shell) + _values -s \ + '--ipython[force iPython.]' \ + '--bpython[force bpython.]' \ + '--python[force default Python shell.]' \ + '--without-tasks[don"t add tasks to locals.]' \ + '--eventlet[use eventlet.]' \ + '--gevent[use gevent.]' + compadd -a ifargs + ;; + beat) + _arguments \ + '(-s --schedule=)'{-s,--schedule=}'[Path to the schedule database. Defaults to celerybeat-schedule.]' \ + '(-S --scheduler=)'{-S,--scheduler=}'[Scheduler class to use. Default is celery.beat.PersistentScheduler.]' \ + '(--max-interval)--max-interval[]' + compadd -a dopts fargs + ;; + events) + _arguments \ + '(-d --dump)'{-d,--dump}'[Dump events to stdout.]' \ + '(-c --camera=)'{-c,--camera=}'[Take snapshots of events using this camera.]' \ + '(-F --frequency=)'{-F,--frequency=}'[Camera: Shutter frequency. Default is every 1.0 seconds.]' \ + '(-r --maxrate=)'{-r,--maxrate=}'[Camera: Optional shutter rate limit (e.g. 10/m).]' + compadd -a dopts fargs + ;; + *) + ;; + esac +} diff --git a/dot_oh-my-zsh/plugins/charm/README.md b/dot_oh-my-zsh/plugins/charm/README.md new file mode 100644 index 0000000..f237dce --- /dev/null +++ b/dot_oh-my-zsh/plugins/charm/README.md @@ -0,0 +1,9 @@ +# Charm plugin + +This plugin adds completion for the [charm](https://github.com/charmbracelet/charm) CLI. + +To use it, add `charm` to the plugins array in your zshrc file: + +```zsh +plugins=(... charm) +``` diff --git a/dot_oh-my-zsh/plugins/charm/charm.plugin.zsh b/dot_oh-my-zsh/plugins/charm/charm.plugin.zsh new file mode 100644 index 0000000..52361ce --- /dev/null +++ b/dot_oh-my-zsh/plugins/charm/charm.plugin.zsh @@ -0,0 +1,14 @@ +# Autocompletion for the Charm CLI (charm). +if (( ! $+commands[charm] )); then + return +fi + +# If the completion file doesn't exist yet, we need to autoload it and +# bind it to `charm`. Otherwise, compinit will have already done that. +if [[ ! -f "$ZSH_CACHE_DIR/completions/_charm" ]]; then + typeset -g -A _comps + autoload -Uz _charm + _comps[charm]=_charm +fi + +charm completion zsh >| "$ZSH_CACHE_DIR/completions/_charm" &| diff --git a/dot_oh-my-zsh/plugins/chruby/README.md b/dot_oh-my-zsh/plugins/chruby/README.md new file mode 100644 index 0000000..19eb15a --- /dev/null +++ b/dot_oh-my-zsh/plugins/chruby/README.md @@ -0,0 +1,21 @@ +# chruby plugin + +This plugin loads [chruby](https://github.com/postmodern/chruby), a tool that changes the +current Ruby version, and completion and a prompt function to display the Ruby version. +Supports brew and manual installation of chruby. + +To use it, add `chruby` to the plugins array in your zshrc file: + +```zsh +plugins=(... chruby) +``` + +## Usage + +If you'd prefer to specify an explicit path to load chruby from +you can set variables like so: + +```zsh +zstyle :omz:plugins:chruby path /local/path/to/chruby.sh +zstyle :omz:plugins:chruby auto /local/path/to/auto.sh +``` diff --git a/dot_oh-my-zsh/plugins/chruby/chruby.plugin.zsh b/dot_oh-my-zsh/plugins/chruby/chruby.plugin.zsh new file mode 100644 index 0000000..d7a28d4 --- /dev/null +++ b/dot_oh-my-zsh/plugins/chruby/chruby.plugin.zsh @@ -0,0 +1,94 @@ +## load chruby from different locations + +_source-from-omz-settings() { + local _chruby_path _chruby_auto + + zstyle -s :omz:plugins:chruby path _chruby_path || return 1 + zstyle -s :omz:plugins:chruby auto _chruby_auto || return 1 + + if [[ -r ${_chruby_path} ]]; then + source ${_chruby_path} + fi + + if [[ -r ${_chruby_auto} ]]; then + source ${_chruby_auto} + fi +} + +_source-from-homebrew() { + (( $+commands[brew] )) || return 1 + + local _brew_prefix + # check default brew prefix + if [[ -h /usr/local/opt/chruby ]];then + _brew_prefix="/usr/local/opt/chruby" + else + # ok , it is not default prefix + # this call to brew is expensive ( about 400 ms ), so at least let's make it only once + _brew_prefix=$(brew --prefix chruby) + fi + + [[ -r "$_brew_prefix" ]] || return 1 + + source $_brew_prefix/share/chruby/chruby.sh + source $_brew_prefix/share/chruby/auto.sh +} + +_load-chruby-dirs() { + local dir + for dir in "$HOME/.rubies" "$PREFIX/opt/rubies"; do + if [[ -d "$dir" ]]; then + RUBIES+=("$dir") + fi + done +} + +# Load chruby +if _source-from-omz-settings; then + _load-chruby-dirs +elif [[ -r "/usr/local/share/chruby/chruby.sh" ]] ; then + source /usr/local/share/chruby/chruby.sh + source /usr/local/share/chruby/auto.sh + _load-chruby-dirs +elif _source-from-homebrew; then + _load-chruby-dirs +fi + +unfunction _source-from-homebrew _source-from-omz-settings _load-chruby-dirs + + +## chruby utility functions and aliases + +# rvm and rbenv plugins also provide this alias +alias rubies='chruby' + +function current_ruby() { + local ruby + ruby="$(chruby | grep \* | tr -d '* ')" + if [[ $(chruby | grep -c \*) -eq 1 ]]; then + echo ${ruby} + else + echo "system" + fi +} + +function chruby_prompt_info() { + echo "${$(current_ruby):gs/%/%%}" +} + +# Complete chruby command with installed rubies +_chruby() { + compadd $(chruby | tr -d '* ') + if PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin" command ruby &>/dev/null; then + compadd system + fi +} + +compdef _chruby chruby + + +# Simple definition completer for ruby-build +if command ruby-build &> /dev/null; then + _ruby-build() { compadd $(ruby-build --definitions) } + compdef _ruby-build ruby-build +fi diff --git a/dot_oh-my-zsh/plugins/chucknorris/README.md b/dot_oh-my-zsh/plugins/chucknorris/README.md new file mode 100644 index 0000000..b51875d --- /dev/null +++ b/dot_oh-my-zsh/plugins/chucknorris/README.md @@ -0,0 +1,38 @@ +# chucknorris + +Chuck Norris fortunes plugin for Oh My Zsh. Perfectly suitable as MOTD. + +To use it add `chucknorris` to the plugins array in you zshrc file. + +```zsh +plugins=(... chucknorris) +``` + +## Usage + +| Command | Description | +| ----------- | ------------------------------- | +| `chuck` | Print random Chuck Norris quote | +| `chuck_cow` | Print quote in cowthink | + +Example: output of `chuck_cow`: + +``` +Last login: Fri Jan 30 23:12:26 on ttys001 + ______________________________________ +( When Chuck Norris plays Monopoly, it ) +( affects the actual world economy. ) + -------------------------------------- + o ^__^ + o (oo)\_______ + (__)\ )\/\ + ||----w | + || || +``` + +## Requirements + +- `fortune` +- `cowsay` if using `chuck_cow` + +Available via homebrew, apt, ... diff --git a/dot_oh-my-zsh/plugins/chucknorris/chucknorris.plugin.zsh b/dot_oh-my-zsh/plugins/chucknorris/chucknorris.plugin.zsh new file mode 100644 index 0000000..b90abe3 --- /dev/null +++ b/dot_oh-my-zsh/plugins/chucknorris/chucknorris.plugin.zsh @@ -0,0 +1,24 @@ +() { + # %x: name of file containing code being executed + local fortunes_dir="${${(%):-%x}:h}/fortunes" + + # Aliases + alias chuck="fortune -a $fortunes_dir" + alias chuck_cow="chuck | cowthink" + + # Automatically generate or update Chuck's compiled fortune data file + if [[ "$fortunes_dir/chucknorris" -ot "$fortunes_dir/chucknorris.dat" ]]; then + return + fi + + # For some reason, Cygwin puts strfile in /usr/sbin, which is not on the path by default + local strfile="${commands[strfile]:-/usr/sbin/strfile}" + if [[ ! -x "$strfile" ]]; then + echo "[oh-my-zsh] chucknorris depends on strfile, which is not installed" >&2 + echo "[oh-my-zsh] strfile is often provided as part of the 'fortune' package" >&2 + return + fi + + # Generate the compiled fortune data file + $strfile "$fortunes_dir/chucknorris" "$fortunes_dir/chucknorris.dat" >/dev/null +} diff --git a/dot_oh-my-zsh/plugins/chucknorris/dot_gitignore b/dot_oh-my-zsh/plugins/chucknorris/dot_gitignore new file mode 100644 index 0000000..267c504 --- /dev/null +++ b/dot_oh-my-zsh/plugins/chucknorris/dot_gitignore @@ -0,0 +1 @@ +fortunes/chucknorris.dat diff --git a/dot_oh-my-zsh/plugins/chucknorris/fortunes/chucknorris b/dot_oh-my-zsh/plugins/chucknorris/fortunes/chucknorris new file mode 100644 index 0000000..9e36ce8 --- /dev/null +++ b/dot_oh-my-zsh/plugins/chucknorris/fortunes/chucknorris @@ -0,0 +1,568 @@ +King Kong climbed the Empire State building in fear of Chuck Norris who was downstairs at the time. +% +"2012" is code for, Chuck Norris when he is pissed. +% +"The Big Chuck Norris Roundhouse-Kick Theory" +% +"The wind cries Chuck Norris" +% +"Walker Texas Ranger: The Movie 3-D" was considered by Warner Brothers; however the technology to create the visual effects will never be possible. +% +A Handicapped parking sign does not signify that this spot is for handicapped people. It is actually in fact a warning, that the spot belongs to Chuck Norris and that you will be handicapped if you park there. +% +Abraham Lincoln didn't die because he was shot, Chuck Norris roundhouse-kicked so fast his foot went back in time and killed Abraham Lincoln. +% +Achievement Unlocked: Chuck Norris of Death +% +After Chuck counted to infinity the first time, he vowed to count to infinity a second time....by counting the bodies of those previously roundhoused. +% +Aliens fear that Chuck Norris might abduct them. +% +An angry glare from Chuck Norris is known to kill on the spot. +% +Behind every successful man is Chuck Norris. +% +Beware of dogs... Dogs, beware of Chuck Norris. +% +Bruce Lee didn't defeat Chuck Norris. Chuck hit Bruce with a Delayed roundhouse kick that was so fast that Lee only felt the impact a year later! +% +CNN was originally created as the "Chuck Norris Network" to update Americans with on-the-spot ass kicking in real-time. +% +Casinos pay Chuck Norris not to play at anything or wish anyone good luck. +% +Chuck Norris - the new standard. +% +Chuck Norris CAN balance the light-switch between ON and OFF. +% +Chuck Norris CAN believe it's not butter. +% +Chuck Norris CAN spell with an I before E even after C. +% +Chuck Norris can play the theme from the Twilight Zone with his beard. +% +Chuck Norris can power solar panels. At night. +% +Chuck Norris watches "the Nat.Geo. Specials" on Discovery Channel. +% +Chuck Norris bowled a 301 after constructing another pin out of his beard hair. +% +Chuck Norris burnt a fire proof vest, UNDERWATER! +% +Chuck Norris can French kiss his elbow. +% +Chuck Norris can bake in a freezer. +% +Chuck Norris can defuse a bomb by cutting the wrong wire. +% +Chuck Norris can dig a hole in air. +% +Chuck Norris can divide by zero. +% +Chuck Norris can do a regime change with a roundhouse kick. +% +Chuck Norris can fit 10 gallons of water in a 5 gallon bucket. +% +Chuck Norris can grill a popsicle. +% +Chuck Norris can lead a horse to water AND make it drink. +% +Chuck Norris can make his own megazord "The Chuck Norris Roundhouse Kickers Ultimate Super Awesome Megazord". +% +Chuck Norris can milk an alligator. +% +Chuck Norris can play the death waltz with his chin. +% +Chuck Norris can roundhouse kick someone through a window without breaking the glass. +% +Chuck Norris can roundhouse-kick round houses into squares. +% +Chuck Norris can rub two fires together and make a stick! +% +Chuck Norris can see in 3D with just one eye. +% +Chuck Norris can slam a revolving door. +% +Chuck Norris can terminate a repeating decimal. +% +Chuck Norris can turn toast back into bread. +% +Chuck Norris can win a game of Connect Four in only three moves. +% +Chuck Norris can win in a top spinning tournament with a cube. +% +Chuck Norris can't perform Hadoukens, he IS a Hadouken. +% +Chuck Norris checks under his bed for Fedor Emelianenko because he takes Fedor to the vet regularly. +% +Chuck Norris counted to infinity - twice. +% +Chuck Norris created Heavy Metal when he was upset. +% +Chuck Norris does not get frostbite. Chuck Norris bites frost. +% +Chuck Norris does not have a cell phone because he hears everything. +% +Chuck Norris does not sleep. He waits. +% +Chuck Norris doesn't bowl strikes, he just knocks down one pin and the other nine faint. +% +Chuck Norris doesn't call the wrong number, you just answer the wrong phone. +% +Chuck Norris doesn't cheat death, he beats it fair and square. +% +Chuck Norris doesn't churn butter. He roundhouse kicks the cows and the butter comes straight out. +% +Chuck Norris doesn't eat, he just sucks the energy out of food by staring at it. +% +Chuck Norris doesn't exhale. The air runs desperately scared out of his lungs. +% +Chuck Norris doesn't go hunting.... CHUCK NORRIS GOES KILLING. +% +Chuck Norris doesn't let it go. +% +Chuck Norris doesn't like Mudkipz. +% +Chuck Norris doesn't look for fun. The fun looks for Chuck Norris. +% +Chuck Norris doesn't need a bulletproof vest. He catches them with his bare hands. +% +Chuck Norris doesn't need air, he is air. +% +Chuck Norris doesn't need sunglasses, the sun needs Chuck Norris glasses. +% +Chuck Norris doesn't need to brush his teeth, his spit acts as a bleach. +% +Chuck Norris doesn't read books. He stares them down until he gets the information he wants. +% +Chuck Norris doesn't throw up if he drinks too much. Chuck Norris throws down! +% +Chuck Norris doesn't eat salad, he eats vegetarians. +% +Chuck Norris doesn't wash his clothes, he disembowels them. +% +Chuck Norris doesn't wear a watch. HE decides what time it is. +% +Chuck Norris doesn't carry a list. He always knows what to do. +% +Chuck Norris drives an ice cream truck covered in human skulls. +% +Chuck Norris drowned a man ON LAND. +% +Chuck Norris fed the Hunger Games. +% +Chuck Norris found the hay in the needle stack. +% +Chuck Norris found the last digit of pi. +% +Chuck Norris had a knife thrown at him. The knife didn't impale him; he impaled the knife. +% +Chuck Norris has a battle cruiser AND a car. +% +Chuck Norris has killed the Dead Sea. +% +Chuck Norris has made a 148 break at snooker. +% +Chuck Norris invented Kentucky Fried Chicken's famous secret recipe, with eleven herbs and spices. But nobody ever mentions the twelfth ingredient: Fear. +% +Chuck Norris is allowed two carry-ons. +% +Chuck Norris is currently suing NBC, claiming Law and Order are trademarked names for his left and right legs. +% +Chuck Norris is currently suing any broadway theater that plays "The Nutcracker". He claims its an infringement on his "other" roundhouse kick. +% +Chuck Norris is entitled to his own facts. +% +Chuck Norris is my Homeboy. +% +Chuck Norris is so fast, he can run around the world and punch himself in the back of the head. +% +Chuck Norris is so hard, he uses diamonds as stress balls. +% +Chuck Norris is so scary, he makes sharks swim backwards away from him. +% +Chuck Norris is ten feet tall, weighs two-tons, breathes fire, and could eat a hammer and take a shotgun blast standing. +% +Chuck Norris is the ghost in paranormal activity. +% +Chuck Norris is the life of parties he doesn't attend. +% +Chuck Norris is the meaning of life. Too bad he's also the meaning of death. +% +Chuck Norris is the only man to ever defeat a brick wall in a game of tennis. +% +Chuck Norris is the only one who can tear a facebook page! +% +Chuck Norris is the reason that the world will end in 2012. He was getting bored with the Earth. +% +Chuck Norris is the reason tumbleweeds tumble. +% +Chuck Norris is the reason why Waldo is hiding. +% +Chuck Norris is waiting for Mt. St. Helens to erupt again. He's hoping the lava is hot enough to soften his beard so he can shave for the first time. +% +Chuck Norris isn't allowed at the zoo, because when he's there the animals are too terrified to come out of their cages. +% +Chuck Norris made a statue bleed. +% +Chuck Norris made the big bang just by clicking his fingers. +% +Chuck Norris never trains, because he's Chuck Norris. +% +Chuck Norris once cried just to see what it was like. The end result was the creation of life. +% +Chuck Norris once cut a knife with a stick of butter. +% +Chuck Norris once got a 200 yard punt return. +% +Chuck Norris once had a pet monkey named KING KONG. +% +Chuck Norris once had a street named after him. The name removed at once, because nobody crosses Chuck Norris, and lives. +% +Chuck Norris once had a weak moment, just to know what it felt like. +% +Chuck Norris once played Duck Duck Goose with a group of Kindergarteners. Only one kid made it to first grade. +% +Chuck Norris once proved p^~p by induction on his beard hairs. +% +Chuck Norris once punched the ground to stop an earthquake. The resulting aftershock caused the BP oil spill. +% +Chuck Norris once round-house kicked a salesman. Over the phone. +% +Chuck Norris once roundhouse kicked a football. The astronomical society now considers it a planet. +% +Chuck Norris once thought he was wrong. He was, however, mistaken. +% +Chuck Norris once walked down a street with his fists in his pockets. He was then arrested for concealing two deadly weapons. +% +Chuck Norris once won the Tour de France riding a "big wheel". +% +Chuck Norris originally appeared in the "Street Fighter II" video game, but was removed by Beta Testers because every button caused him to do a roundhouse kick. When asked bout this "glitch," Norris replied, "That's no glitch." +% +Chuck Norris owns all number 1 pencils. +% +Chuck Norris pees Adamantium. +% +Chuck Norris plays Texas Hold'Em with Zeus, every second Wednesday of the month. +% +Chuck Norris played "Got your Nose" with Voldemort and won. +% +Chuck Norris played the game of thrones and won. +% +Chuck Norris protects his bodyguards. +% +Chuck Norris rolled a 20 on a 6 sided die. +% +Chuck Norris roundhouse kicks people in the face first and asks questions later. +% +Chuck Norris sent a BBM to an iPhone. +% +Chuck Norris shops at Sam's Club, but leaves without having his receipt checked. +% +Chuck Norris splattered tiger blood and Adonis' DNA on Charlie Sheen with 1 roundhouse kick! +% +Chuck Norris started Chuck Norris. +% +Chuck Norris starts his day with 6 live chickens, two cows, three pigs, and a boiling hot cup of pure fury. +% +Chuck Norris told me to put this here. +% +Chuck Norris uses a real mouse to move the cursor, type on the keyboard, write e-mails, code entire websites, and make coffee. +% +Chuck Norris uses pepper spray to spice up his steaks. +% +Chuck Norris was heard in a soundproof room! +% +Chuck Norris was once turned down for American Idol. When Simon was questioned about it, he replied "I'm retiring after this season". I wonder why? +% +Chuck Norris was originally in Mortal Kombat, but that version was deleted because no one can beat Chuck Norris in a fight. +% +Chuck Norris was the image used for Papa Smurf. +% +Chuck Norris was the reason why the Great Wall of China was constructed. It failed miserably. +% +Chuck Norris was what Willis was talking about. +% +Chuck Norris wasn't born on his birthday. +% +Chuck Norris watched the first steps on the moon... from his summer home on Mars. +% +Chuck Norris went up the creek without a paddle... or a canoe. +% +Chuck Norris will attain statehood in 2009. His state flower will be the Magnolia. +% +Chuck Norris wins NASCAR races with all right turns. +% +Chuck Norris won a stepdance contest by standing on his hands. +% +Chuck Norris yells at drill Sergeants. +% +Chuck Norris' dog picks up after him. +% +Chuck Norris' films are factual documentaries. +% +Chuck Norris' first job was as a paperboy. There were no survivors. +% +Chuck Norris' glass is never half full or half empty. It stays full even after he takes a drink. +% +Chuck Norris' hand is the only hand that can beat a Royal Flush. +% +Chuck Norris' personal airplane is called Air Force Chuck. +% +Chuck Norris. Enough said. +% +Chuck Norris: even Naruto can't believe it. +% +Chuck Norris can make sour milk turn fresh. +% +Contrary to popular belief, Rome WAS built in a day, by Chuck Norris. +% +Contrary to popular belief, America is not a democracy, it is a Chucktatorship. +% +Contrary to popular belief, Chuck Norris, not the box jellyfish of northern Australia, is the most venomous creature on Earth. +% +Cops don't need badges in their wallets, but only a picture of Chuck Norris. +% +Crop circles are Chuck Norris' way of telling the world that sometimes corn needs to lie down. +% +Did you hear about the boy who cried Chuck Norris? +% +Dog the Bounty Hunter can't track Chuck Norris down. +% +Don't get Chuck Norris angry. Last time somebody did that, Chuck Norris made the Grand Canyon. +% +Earth's rotation is purely governed by the direction that Chuck Norris is walking. +% +Ever wonder what really happened to the dinosaurs? They all dug their own graves when they heard Chuck Norris was coming. +% +Every line in a Chuck Norris haiku is "A roundhouse kick to the face." And they all have the correct number of syllables. +% +Every phobia known to man has a phobia of Chuck Norris. +% +Every time there's an earthquake, you know Chuck Norris is hungry. The earthquake is caused by his stomach growling. +% +Evolution's driving mechanism is nature's desperate attempt to escape Chuck Norris. +% +Fear of spiders is arachnophobia. Fear of tight spaces is claustrophobia. Fear of Chuck Norris is called Logic. +% +Fool me once, shame on you. Fool Chuck Norris once and he will roundhouse you in the face. +% +Ghosts can see Chuck Norris. +% +Guns don't kill people. Chuck Norris kills people. +% +How much wood could a woodchuck chuck if a woodchuck could chuck wood? No woodchuck could chuck Chuck's wood! +% +If Chuck Norris were a calendar, every month would be named Chucktober, and every day he'd kick your ass. +% +If Chuck Norris were to get into a fight with another Chuck Norris, Chuck Norris would win. +% +If God doesn't know, Chuck does. +% +If Goliath listened to Chuck Norris, he would have won. +% +If at first you don't succeed, you're not Chuck Norris. +% +If you ask Chuck Norris what time it is, he always says, "Two seconds 'til." After you ask, "Two seconds 'til what?" he roundhouse kicks you in the face. +% +If you put in the correct cheat code in Halo 2, you can have Master Chief play without his helmet, revealing himself to be Chuck Norris. +% +If you see a man in the street who looks like Chuck Norris, but isn't, run: you don't want to be caught in the resulting roundhouse kick to his face. +% +If you spell Chuck Norris in Scrabble, you win. Forever. +% +In 1945 The US army asked if they could clone Chuck Norris. Instead he said he could sort out the Japanese. +% +In Texas, there are five sizes for fountain drinks: small, medium, large, Texas sized, and Chuck Norris sized. It is a cup made of a human skull. +% +In a rain storm Chuck Norris stays dry. Rain drops are scared to hit him. +% +In the back of the book of world records, it says "All records are held by Chuck Norris. The ones listed are in second place." +% +James Bond has a license to kill. He got it from Chuck Norris. +% +Jedis are now taught to use the "Chuck". +% +MacGyver immediately tried to make a bomb out of some Q-Tips and Gatorade, but Chuck Norris roundhouse-kicked him in the solar plexus. MacGyver promptly threw up his own heart. +% +Machiavelli said it is better to be feared than loved because he was inspired by Chuck Norris. +% +May the Force be with Chuck Norris... for its own good. +% +Merlin was Chuck Norris' assistant. +% +Most people have 23 pairs of chromosomes. Chuck Norris has 72... and they're all poisonous. +% +Note to self: Don't be the cashier to tell Chuck Norris his coupons have expired. +% +Chuck Norris' keyboard has no control key. Chuck Norris is always in control. +% +Once upon a time, Chuck Norris found himself in a town called Shit Creek. He opened a Paddle Store. +% +One glance from Chuck Norris and snow turns itself yellow. +% +One time a test cheated on Chuck Norris. +% +Only Chuck Norris can win the mind game, 'cause he never minds. +% +Only Chuck Norris is stronger than an Altoid. +% +Outer space exists because it's afraid to be on the same planet with Chuck Norris. +% +Ozzy Osbourne once accidentally bit the head off a live bat - Chuck Norris once deliberately bit the head off a live pterodactyl. +% +Pluto is actually an orbiting group of British soldiers from the American Revolution who entered space after the Chuck gave them a roundhouse kick to the face. +% +Police label anyone attacking Chuck Norris as a Code 45-11.... a suicide. +% +Remember the Soviet Union? They decided to quit after watching a DeltaForce marathon on Satellite TV. +% +Simon doesn't say... Chuck Norris says. +% +Some boots were made for walking. Some boots may walk all over you, but Chuck Norris' boots walk THROUGH you. +% +Some kids pee their name in snow. Chuck Norris pees his name in concrete. +% +Some people ask for a Kleenex when they sneeze, Chuck Norris asks for a body bag. +% +Someone once videotaped Chuck Norris getting pissed off. It was called Walker: Texas Chain Saw Massacre. +% +Staring at Chuck Norris for extended periods of time without proper eye protection will cause blindness, and possibly foot sized bruises on the face. +% +Taking Karate Lessons = $100, Buying MMA DVD's = $150, Subscribing to a UFC event = $50, Getting a Roundhouse Kick from Chuck Norris = PRICELESS. +% +That's not an eclipse. That's the sun hiding from Chuck Norris. +% +The Beatles are on iTunes because Chuck Norris bought a Mac. +% +The Earth is made up of two-thirds water and one-third Chuck Norris. +% +The Earth was almost destroyed by a 50 km wide asteroid in 1984, but Chuck Norris roundhouse kicked it into the Sun. +% +The Great Wall of China was originally created to keep Chuck Norris out. It failed miserably. +% +The Joneses are trying to keep up with Chuck Norris. +% +The Matrix Trilogy would have ended on the first movie had Keanu Reeves said, “I know Chuck Norris.” +% +The answer to life, the universe and everything isn't 42. It's Chuck Norris. +% +The apple falls far from the tree, when Chuck's roundhouse kick is taken to the trunk. +% +The best part of waking up is not Folgers in your cup. it's knowing that Chuck Norris let you live. +% +The chief export of Chuck Norris is pain. +% +The dictionary references Chuck Norris several times, he is mentioned under Fear, Law, Order and Chucktatorship. +% +The leading causes of death in the United States are: 1. Heart Disease 2. Chuck Norris 3. Cancer. +% +The letters in Chuck Norris cannot be unscrambled. +% +The only place where the Starship Enterprise refuses to boldly go is Chuck Norris' planet... which is all of them. +% +The only reason that USA lost the 2011 world cup to Japan is because Chuck Norris wasn't there. +% +The only sure things are Death and Taxes, and when Chuck Norris goes to work for the IRS, they'll be the same thing. +% +The only way sharks will come near CN underwater is when CN is inside of a cage. +% +The only word that rhymes with orange is Chuck Norris. +% +The producers of the movie "The Last Airbender" are now in talks with Chuck Norris in Order to star him in their next sequel "The Last Skull Bender". +% +The quickest way to a man's heart is with Chuck Norris' fist. +% +The reason why Batman only comes out at night is because he's afraid he might encounter Chuck Norris in the morning and afternoon. +% +The red phone in the oval office rings directly to Chuck Norris' cell phone. +% +The show Survivor had the original premise of putting people on an island with Chuck Norris. There were no survivors, and nobody is brave enough to go to the island to retrieve the footage. +% +The square root of Chuck Norris is pain. Do not try to square Chuck Norris. The result is death. +% +The sun only rises every morning because Chuck Norris allows it to. +% +The truth hurts, doesn't it? Chuck Norris' truth kills. +% +There is no chin behind Chuck Norris' beard. There is only another fist. +% +There is no limbo, only a world that doesn't know of Chuck Norris. +% +There is no such thing as global warming. Chuck Norris was cold, so he turned the sun up. +% +There is no theory of evolution, just a list of creatures Chuck Norris has allowed to live. +% +This one time at band camp... BAM! Chuck Norris. +% +Those who ignore history, are doomed by Chuck Norris. +% +Trick me once, shame on you, trick Chuck Norris.. rest in peace. +% +Unlike Jack Bauer, Chuck Norris doesn't need bullets. A quick roundhouse to the face kills twice as fast. +% +Walker: Texas Ranger went into syndication before the first episode was shot. +% +What was going through the minds of all of Chuck Norris' victims before they died? His shoe. +% +Whatever Chuck Norris wants, it will instantly appear. +% +When Betty White gets angry, she turns into the Hulk. When Valerie Bertinelli gets mad, she turns into Chuck Norris. +% +When Chuck Norris creates a login, it tells him "password not strong enough." He types in his name and it tells him "password too strong." +% +When Chuck Norris does a pushup, he isn't lifting himself up, he's pushing the Earth down. +% +When Chuck Norris drinks water, the water automatically pasteurized. +% +When Chuck Norris goes to Vegas, he doesn't have to gamble. The casinos just give him stacks of money. +% +When Chuck Norris goes to rodeos, bulls ride him. +% +When Chuck Norris goes to the library, he looks for the Guinness book of records in the comedy section. +% +When Chuck Norris inhales helium, his voice doesn't change. +% +When Chuck Norris performs a roundhouse kick, he's actually measuring the circumference of the universe. +% +When Chuck Norris played the card game War with a friend, France surrendered. +% +When Chuck Norris pokes the Pillsbury Doughboy, it's not a laughing matter. +% +When Chuck Norris roundhouse-kicks you, he decides when you will feel the impact. +% +When Chuck Norris sends in his taxes, he sends blank forms and includes only a picture of himself, crouched and ready to attack. Chuck Norris has not had to pay taxes, ever. +% +When Chuck Norris tosses a coin, it lands on both heads and tails. +% +When God said "Let there be light!", Chuck Norris said "Only for half the day." +% +When Presidents speak, their nation listens. When Chuck Norris blinks, the whole world listens. +% +When Steven Seagal kills a ninja, he only takes its hide. When Chuck Norris kills a ninja, he uses every part. +% +When chuck Norris was in school, he made his PE teacher run laps. +% +When does Chuck Norris run out of shotgun bullets? whenever he wants to. +% +When taking the SAT, write "Chuck Norris" for every answer. You will score over 8000. +% +When the Boogeyman goes to sleep every night, he checks his closet for Chuck Norris. +% +When things go bump in the night, it's Chuck Norris +% +While visiting the Hexagon, Chuck Norris was asked to demonstrate his famous roundhouse kick. Henceforth, it has been known as the Pentagon. +% +Why didn't the chicken cross the road? Because Chuck Norris got to it first. +% +You know Chuck Norris' pet lizard, right? Last I heard, he was in the movie "Godzilla". Oh, and his pet turtle starred in "Gamera" as well. +% +http://chucknorrisfacts.com/ is built in Drupal because Chuck Norris knows a good CMS when he sees one. +% +Chuck Norris made the first Giraffe by uppercutting a horse. +% +Chuck Norris can hear sign language. +% +Chuck Norris make onions cry. +% +Chuck Norris doesn't shake hands, he makes them tremble. +% diff --git a/dot_oh-my-zsh/plugins/cloudfoundry/README.md b/dot_oh-my-zsh/plugins/cloudfoundry/README.md new file mode 100644 index 0000000..89dd9d1 --- /dev/null +++ b/dot_oh-my-zsh/plugins/cloudfoundry/README.md @@ -0,0 +1,58 @@ +# Cloudfoundry Plugin + +This plugin is intended to offer a few simple aliases for regular users of the [Cloud Foundry Cli][1]. Most are just simple aliases that will save a bit of typing. Others include mini functions and or accept parameters. Take a look at the table below for details. + +| Alias | Command | Description | +|----------|-----------------------------|--------------------------------------------------------------------------| +| cfl | `cf login` | Login to Cloud Foundry | +| cft | `cf target` | Target the cli at a specific Org/Space in Cloud Foundry | +| cfa | `cf apps` | List all applications in the current Org/Space | +| cfs | `cf services` | List all services in the current Org/Space | +| cfm | `cf marketplace` | List the services available in the Marketplace | +| cfp | `cf push` | Push your application code to Cloud Foundry | +| cfcs | `cf create-service` | Create a service based on a Marketplace offering | +| cfbs | `cf bind-service` | Bind an application to a service you created | +| cfus | `cf unbind-service` | Unbind a service from an application | +| cfds | `cf delete-service` | Delete a service you no longer have bound | +| cfup | `cf cups` | Create a "user-provided-service" | +| cflg | `cf logs` | Tail the logs of an application (requires ) | +| cfr | `cf routes` | List all the routes in the current Space | +| cfe | `cf env` | Show the environment variables for an application (requires ) | +| cfsh | `cf ssh` | Attach to a running container (requires an etc.) | +| cfsc | `cf scale` | Scale an application (requires an etc.) | +| cfev | `cf events` | Show the application events (requires ) | +| cfdor | `cf delete-orphaned-routes` | Delete routes that are no longer bound to applications | +| cfbpk | `cf buildpacks` | List the available buildpacks | +| cfdm | `cf domains` | List the domains associates with this Cloud Foundry foundation | +| cfsp | `cf spaces` | List all the Spaces in the current Org | +| cfap | `cf app` | Show the details of a deployed application (requires ) | +| cfh. | `export CF_HOME=$PWD/.cf` | Set the current directory as CF_HOME | +| cfh~ | `export CF_HOME=~/.cf` | Set the user's root directory as CF_HOME | +| cfhu | `unset CF_HOME` | Unsets CF_HOME | +| cfpm | `cf push -f` | Push an application using a manifest (requires location) | +| cflr | `cf logs --recent` | Show the recent logs (requires ) | +| cfsrt | `cf start` | Start an application (requires ) | +| cfstp | `cf stop` | Stop an application (requires ) | +| cfstg | `cf restage` | Restage an application (requires ) | +| cfdel | `cf delete` | Delete an application (requires ) | +| cfsrtall | - | Start all apps that are currently in the "Stopped" state | +| cfstpall | - | Stop all apps that are currently in the "Started" state | + +For help and advice on what any of the commands does, consult the built in `cf` help functions as follows:- + +```bash +cf help # List the most popular and commonly used commands +cf help -a # Complete list of all possible commands +cf --help # Help on a specific command including arguments and examples +``` + +Alternatively, seek out the [online documentation][3]. And don't forget, there are loads of great [community plugins for the cf-cli][4] command line tool that can greatly extend its power and usefulness. + +## Contributors + +Contributed to `oh_my_zsh` by [benwilcock][2]. + +[1]: https://docs.cloudfoundry.org/cf-cli/install-go-cli.html +[2]: https://github.com/benwilcock +[3]: https://docs.cloudfoundry.org/cf-cli/getting-started.html +[4]: https://plugins.cloudfoundry.org/ diff --git a/dot_oh-my-zsh/plugins/cloudfoundry/cloudfoundry.plugin.zsh b/dot_oh-my-zsh/plugins/cloudfoundry/cloudfoundry.plugin.zsh new file mode 100644 index 0000000..b671578 --- /dev/null +++ b/dot_oh-my-zsh/plugins/cloudfoundry/cloudfoundry.plugin.zsh @@ -0,0 +1,34 @@ +# Some Useful CloudFoundry Aliases & Functions +alias cfl="cf login" +alias cft="cf target" +alias cfa="cf apps" +alias cfs="cf services" +alias cfm="cf marketplace" +alias cfp="cf push" +alias cfcs="cf create-service" +alias cfbs="cf bind-service" +alias cfus="cf unbind-service" +alias cfds="cf delete-service" +alias cfup="cf cups" +alias cflg="cf logs" +alias cfr="cf routes" +alias cfe="cf env" +alias cfsh="cf ssh" +alias cfsc="cf scale" +alias cfev="cf events" +alias cfdor="cf delete-orphaned-routes" +alias cfbpk="cf buildpacks" +alias cfdm="cf domains" +alias cfsp="cf spaces" +function cfap() { cf app $1 } +function cfh.() { export CF_HOME=$PWD/.cf } +function cfh~() { export CF_HOME=~/.cf } +function cfhu() { unset CF_HOME } +function cfpm() { cf push -f $1 } +function cflr() { cf logs $1 --recent } +function cfsrt() { cf start $1 } +function cfstp() { cf stop $1 } +function cfstg() { cf restage $1 } +function cfdel() { cf delete $1 } +function cfsrtall() {cf apps | awk '/stopped/ { system("cf start " $1)}'} +function cfstpall() {cf apps | awk '/started/ { system("cf stop " $1)}'} diff --git a/dot_oh-my-zsh/plugins/codeclimate/README.md b/dot_oh-my-zsh/plugins/codeclimate/README.md new file mode 100644 index 0000000..0d712ac --- /dev/null +++ b/dot_oh-my-zsh/plugins/codeclimate/README.md @@ -0,0 +1,8 @@ +# codeclimate plugin + +This plugin adds autocompletion for the [`codeclimate` CLI](https://github.com/codeclimate/codeclimate). + +To use it, add `codeclimate` to the plugins array in your zshrc file: +```zsh +plugins=(... codeclimate) +``` diff --git a/dot_oh-my-zsh/plugins/codeclimate/_codeclimate b/dot_oh-my-zsh/plugins/codeclimate/_codeclimate new file mode 100644 index 0000000..fd2536a --- /dev/null +++ b/dot_oh-my-zsh/plugins/codeclimate/_codeclimate @@ -0,0 +1,82 @@ +#compdef codeclimate + +_codeclimate_all_engines() { + engines_all=(`codeclimate engines:list | tail -n +2 | gawk '{ print $2 }' | gawk -F: '{ print $1 }'`) +} + +_codeclimate_installed_engines() { + _codeclimate_all_engines + + engines_installed=() + + if [ -e .codeclimate.yml ] + then + for engine in $engines_all + do + if grep -q $engine ".codeclimate.yml" + then + engines_installed+=$engine + fi + done + fi +} + +_codeclimate_not_installed_engines() { + _codeclimate_all_engines + + engines_not_installed=() + + if [ -e .codeclimate.yml ] + then + for engine in $engines_all + do + if ! grep -q $engine ".codeclimate.yml" + then + engines_not_installed+=$engine + fi + done + fi +} + +local curcontext="$curcontext" state line ret=1 +local expl +local -a engines_all engines_installed engines_not_installed + +_arguments \ + '1: :->cmds' \ + '*:: :->args' && ret=0 + +case $state in + cmds) + _values "bundle command" \ + "analyze[Analyze all relevant files in the current working directory]" \ + "console[Start an interactive session providing access to the classes within the CLI]" \ + "engines\:disable[Prevents the engine from being used in this project]" \ + "engines\:enable[This engine will be run the next time your project is analyzed]" \ + "engines\:install[Compares the list of engines in your .codeclimate.yml file to those that are currently installed, then installs any missing engines]" \ + "engines\:list[Lists all available engines in the Code Climate Docker Hub]" \ + "engines\:remove[Removes an engine from your .codeclimate.yml file]" \ + "help[Displays a list of commands that can be passed to the Code Climate CLI]" \ + "init[Generates a new .codeclimate.yml file in the current working directory]" \ + "validate-config[Validates the .codeclimate.yml file in the current working directory]" \ + "version[Displays the current version of the Code Climate CLI]" + ret=0 + ;; + args) + case $line[1] in + engines:enable) + _codeclimate_not_installed_engines + _wanted engines_not_installed expl 'not installed engines' compadd -a engines_not_installed ;; + engines:disable|engines:remove) + _codeclimate_installed_engines + _wanted engines_installed expl 'installed engines' compadd -a engines_installed ;; + analyze) + _arguments \ + '-f:Output Format:(text json)' + ret=0 + ;; + esac + ;; +esac + +return ret diff --git a/dot_oh-my-zsh/plugins/coffee/README.md b/dot_oh-my-zsh/plugins/coffee/README.md new file mode 100644 index 0000000..2baade8 --- /dev/null +++ b/dot_oh-my-zsh/plugins/coffee/README.md @@ -0,0 +1,31 @@ +# Coffeescript Plugin + +This plugin provides aliases for quickly compiling and previewing your +coffeescript code. + +When writing Coffeescript it's very common to want to preview the output of a +certain snippet of code, either because you want to test the output or because +you'd like to execute it in a browser console which doesn't accept Coffeescript. + +Preview the compiled result of your coffeescript with `cf "code"` as per the +following: + +```zsh +$ cf 'if a then b else c' +if (a) { + b; +} else { + c; +} +``` + +Also provides the following aliases: + +* **cfc:** Copies the compiled JS to your clipboard. Very useful when you want + to run the code in a JS console. + +* **cfp:** Compiles from your currently copied clipboard. Useful when you want + to compile large/multi-line snippets + +* **cfpc:** Paste coffeescript from clipboard, compile to JS, then copy the + the result back to clipboard. diff --git a/dot_oh-my-zsh/plugins/coffee/_coffee b/dot_oh-my-zsh/plugins/coffee/_coffee new file mode 100644 index 0000000..a771f52 --- /dev/null +++ b/dot_oh-my-zsh/plugins/coffee/_coffee @@ -0,0 +1,81 @@ +#compdef coffee +# ------------------------------------------------------------------------------ +# Copyright (c) 2011 GitHub zsh-users - https://github.com/zsh-users +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of the zsh-users nor the +# names of its contributors may be used to endorse or promote products +# derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL ZSH-USERS BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# ------------------------------------------------------------------------------ +# Description +# ----------- +# +# Completion script for Coffee.js v0.6.11 (https://coffeescript.org) +# +# ------------------------------------------------------------------------------ +# Authors +# ------- +# +# * Mario Fernandez (https://github.com/sirech) +# * Dong Weiming (https://github.com/dongweiming) +# +# ------------------------------------------------------------------------------ + +local curcontext="$curcontext" state line ret=1 version +local -a opts +typeset -A opt_args +version=(${(f)"$(_call_program version $words[1] --version)"}) || return ret +version=${${(z)${version[1]}}[3]} + +autoload -Uz is-at-least +if ! is-at-least 1.6.3 "$version"; then + opts+=('(-l --lint)'{-l,--lint}'[pipe the compiled JavaScript through JavaScript Lint]' + '(-r --require)'{-r,--require}'[require a library before executing your script]:library') +fi + + +_arguments -C \ + '(- *)'{-h,--help}'[display this help message]' \ + '(- *)'{-v,--version}'[display the version number]' \ + $opts \ + '(-b --bare)'{-b,--bare}'[compile without a top-level function wrapper]' \ + '(-e --eval)'{-e,--eval}'[pass a string from the command line as input]:Inline Script' \ + '(-i --interactive)'{-i,--interactive}'[run an interactive CoffeeScript REPL]' \ + '(-j --join)'{-j,--join}'[concatenate the source CoffeeScript before compiling]:Destination JS file:_files -g "*.js"' \ + '(--nodejs)--nodejs[pass options directly to the "node" binary]' \ + '(-c --compile)'{-c,--compile}'[compile to JavaScript and save as .js files]' \ + '(-o --output)'{-o,--output}'[set the output directory for compiled JavaScript]:Output Directory:_files -/' \ + '(-n -t -p)'{-n,--nodes}'[print out the parse tree that the parser produces]' \ + '(-n -t -p)'{-p,--print}'[print out the compiled JavaScript]' \ + '(-n -t -p)'{-t,--tokens}'[print out the tokens that the lexer/rewriter produce]' \ + '(-s --stdio)'{-s,--stdio}'[listen for and compile scripts over stdio]' \ + '(-w --watch)'{-w,--watch}'[watch scripts for changes and rerun commands]' \ + '*:script or directory:_files' && ret=0 + +return ret + +# Local Variables: +# mode: Shell-Script +# sh-indentation: 2 +# indent-tabs-mode: nil +# sh-basic-offset: 2 +# End: +# vim: ft=zsh sw=2 ts=2 et diff --git a/dot_oh-my-zsh/plugins/coffee/coffee.plugin.zsh b/dot_oh-my-zsh/plugins/coffee/coffee.plugin.zsh new file mode 100644 index 0000000..6d1ce5c --- /dev/null +++ b/dot_oh-my-zsh/plugins/coffee/coffee.plugin.zsh @@ -0,0 +1,16 @@ +#!/bin/zsh + +# compile a string of coffeescript and print to output +cf () { + coffee -peb "$1" +} +# compile & copy to clipboard +cfc () { + cf "$1" | clipcopy +} + +# compile from clipboard & print +alias cfp='cf "$(clippaste)"' + +# compile from clipboard and copy to clipboard +alias cfpc='cfp | clipcopy' diff --git a/dot_oh-my-zsh/plugins/colemak/README.md b/dot_oh-my-zsh/plugins/colemak/README.md new file mode 100644 index 0000000..4da4bc1 --- /dev/null +++ b/dot_oh-my-zsh/plugins/colemak/README.md @@ -0,0 +1,48 @@ +# Colemak plugin + +This plugin remaps keys in `zsh`'s [`vi`-style navigation mode](http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Keymaps) +for a [Colemak](https://colemak.com/) keyboard layout, to match the QWERTY position: + +![Colemak layout on a US keyboard](https://colemak.com/wiki/images/6/6c/Colemak2.png) + +To use it, add it to the plugins array in your `~/.zshrc` file: + +``` +plugins=(... colemak) +``` + +You will also need to enable `vi` mode, so add another line to `~/.zshrc`: +``` +bindkey -v +``` + +Restart your shell and hit the `` key to activate `vicmd` (navigation) mode, +and start navigating `zsh` with your new keybindings! + +## Key bindings for vicmd + +| Old | New | Binding | Description | +|------------|------------|---------------------------|----------------------------------------------------| +| `CTRL`+`j` | `CTRL`+`n` | accept-line | Insert new line | +| `j` | `n` | down-line-or-history | Move one line down or command history forwards | +| `k` | `e` | up-line-or-history | Move one line up or command history backwards | +| `l` | `i` | vi-forward-char | Move one character to the right | +| `n` | `k` | vi-repeat-search | Repeat command search forwards | +| `N` | `K` | vi-rev-repeat-search | Repeat command search backwards | +| `i` | `u` | vi-insert | Enter insert mode | +| `I` | `U` | vi-insert-bol | Move to first non-blank char and enter insert mode | +| `` | `l` | vi-undo-change | Undo change | +| `J` | `N` | vi-join | Join the current line with the next one | +| `e` | `j` | vi-forward-word-end | Move to the end of the next word | +| `E` | `J` | vi-forward-blank-word-end | Move to end of the current or next word | + +## Key bindings for less + +| Keyboard shortcut | `less` key binding | +|-------------------|--------------------| +| `n` | forw-line | +| `e` | back-line | +| `k` | repeat-search | +| `ESC`+`k` | repeat-search-all | +| `K` | reverse-search | +| `ESC`+`K` | reverse-search-all | diff --git a/dot_oh-my-zsh/plugins/colemak/colemak-less b/dot_oh-my-zsh/plugins/colemak/colemak-less new file mode 100644 index 0000000..e4ca4fa --- /dev/null +++ b/dot_oh-my-zsh/plugins/colemak/colemak-less @@ -0,0 +1,6 @@ +n forw-line +e back-line +k repeat-search +\ek repeat-search-all +K reverse-search +\eK reverse-search-all diff --git a/dot_oh-my-zsh/plugins/colemak/colemak.plugin.zsh b/dot_oh-my-zsh/plugins/colemak/colemak.plugin.zsh new file mode 100644 index 0000000..e6a46f2 --- /dev/null +++ b/dot_oh-my-zsh/plugins/colemak/colemak.plugin.zsh @@ -0,0 +1,38 @@ +# ctrl-j newline +bindkey '^n' accept-line +bindkey -a '^n' accept-line + +# another rotation to match qwerty +bindkey -a 'n' down-line-or-history +bindkey -a 'e' up-line-or-history +bindkey -a 'i' vi-forward-char + +# make qwerty +bindkey -a 'k' vi-repeat-search +bindkey -a 'K' vi-rev-repeat-search +bindkey -a 'u' vi-insert +bindkey -a 'U' vi-insert-bol +bindkey -a 'l' vi-undo-change +bindkey -a 'N' vi-join + +# spare +bindkey -a 'j' vi-forward-word-end +bindkey -a 'J' vi-forward-blank-word-end + +# Handle $0 according to the standard: +# https://zdharma-continuum.github.io/Zsh-100-Commits-Club/Zsh-Plugin-Standard.html +0="${${ZERO:-${0:#$ZSH_ARGZERO}}:-${(%):-%N}}" +0="${${(M)0:#/*}:-$PWD/$0}" + +# New less versions will read this file directly +export LESSKEYIN="${0:h:A}/colemak-less" + +# Only run lesskey if less version is older than v582 +less_ver=$(less --version | awk '{print $2;exit}') +autoload -Uz is-at-least +if ! is-at-least 582 $less_ver; then + # Old less versions will read this transformed file + export LESSKEY="${0:h:A}/.less" + lesskey -o "$LESSKEY" "$LESSKEYIN" 2>/dev/null +fi +unset less_ver diff --git a/dot_oh-my-zsh/plugins/colemak/dot_gitignore b/dot_oh-my-zsh/plugins/colemak/dot_gitignore new file mode 100644 index 0000000..8241f5e --- /dev/null +++ b/dot_oh-my-zsh/plugins/colemak/dot_gitignore @@ -0,0 +1 @@ +.less diff --git a/dot_oh-my-zsh/plugins/colored-man-pages/README.md b/dot_oh-my-zsh/plugins/colored-man-pages/README.md new file mode 100644 index 0000000..4cbf64d --- /dev/null +++ b/dot_oh-my-zsh/plugins/colored-man-pages/README.md @@ -0,0 +1,32 @@ +# Colored man pages plugin + +This plugin adds colors to man pages. + +To use it, add `colored-man-pages` to the plugins array in your zshrc file: + +```zsh +plugins=(... colored-man-pages) +``` + +It will also automatically colorize man pages displayed by `dman` or `debman`, +from [`debian-goodies`](https://packages.debian.org/stable/debian-goodies). + +You can also try to color other pages by prefixing the respective command with `colored`: + +```zsh +colored git help clone +``` + +## Customization + +The plugin declares global associative array `less_termcap`, which maps termcap capabilities to escape +sequences for the `less` pager. This mapping can be further customized by the user after the plugin is +loaded. Check out sources for more. + +For example: `less_termcap[md]` maps to `LESS_TERMCAP_md` which is the escape sequence that tells `less` +how to print something in bold. It's currently shown in bold red, but if you want to change it, you +can redefine `less_termcap[md]` in your zshrc file, after OMZ is sourced: + +```zsh +less_termcap[md]="${fg_bold[blue]}" # this tells less to print bold text in bold blue +``` diff --git a/dot_oh-my-zsh/plugins/colored-man-pages/colored-man-pages.plugin.zsh b/dot_oh-my-zsh/plugins/colored-man-pages/colored-man-pages.plugin.zsh new file mode 100644 index 0000000..981992d --- /dev/null +++ b/dot_oh-my-zsh/plugins/colored-man-pages/colored-man-pages.plugin.zsh @@ -0,0 +1,53 @@ +# Requires colors autoload. +# See termcap(5). + +# Set up once, and then reuse. This way it supports user overrides after the +# plugin is loaded. +typeset -AHg less_termcap + +# bold & blinking mode +less_termcap[mb]="${fg_bold[red]}" +less_termcap[md]="${fg_bold[red]}" +less_termcap[me]="${reset_color}" +# standout mode +less_termcap[so]="${fg_bold[yellow]}${bg[blue]}" +less_termcap[se]="${reset_color}" +# underlining +less_termcap[us]="${fg_bold[green]}" +less_termcap[ue]="${reset_color}" + +# Handle $0 according to the standard: +# https://zdharma-continuum.github.io/Zsh-100-Commits-Club/Zsh-Plugin-Standard.html +0="${${ZERO:-${0:#$ZSH_ARGZERO}}:-${(%):-%N}}" +0="${${(M)0:#/*}:-$PWD/$0}" + +# Absolute path to this file's directory. +typeset -g __colored_man_pages_dir="${0:A:h}" + +function colored() { + local -a environment + + # Convert associative array to plain array of NAME=VALUE items. + local k v + for k v in "${(@kv)less_termcap}"; do + environment+=( "LESS_TERMCAP_${k}=${v}" ) + done + + # Prefer `less` whenever available, since we specifically configured + # environment for it. + environment+=( PAGER="${commands[less]:-$PAGER}" ) + + # See ./nroff script. + if [[ "$OSTYPE" = solaris* ]]; then + environment+=( PATH="${__colored_man_pages_dir}:$PATH" ) + fi + + command env $environment "$@" +} + +# Colorize man and dman/debman (from debian-goodies) +function man \ + dman \ + debman { + colored $0 "$@" +} diff --git a/dot_oh-my-zsh/plugins/colored-man-pages/executable_nroff b/dot_oh-my-zsh/plugins/colored-man-pages/executable_nroff new file mode 100644 index 0000000..4ae155d --- /dev/null +++ b/dot_oh-my-zsh/plugins/colored-man-pages/executable_nroff @@ -0,0 +1,12 @@ +#!/bin/sh + +# The whole point of this wrapper is to replace emboldening factor -u0 with +# -u1 under certain circumstances on Solaris. + +if [ "$1,$2,$3" = "-u0,-Tlp,-man" ]; then + shift + exec /usr/bin/nroff -u1 "$@" +else + # Some other invocation of nroff + exec /usr/bin/nroff "$@" +fi diff --git a/dot_oh-my-zsh/plugins/colorize/README.md b/dot_oh-my-zsh/plugins/colorize/README.md new file mode 100644 index 0000000..405bb6d --- /dev/null +++ b/dot_oh-my-zsh/plugins/colorize/README.md @@ -0,0 +1,56 @@ +# colorize + +With this plugin you can syntax-highlight file contents of over 300 supported languages and other text formats. + +Colorize will highlight the content based on the filename extension. If it can't find a syntax-highlighting +method for a given extension, it will try to find one by looking at the file contents. If no highlight method +is found it will just cat the file normally, without syntax highlighting. + +## Setup + +To use it, add colorize to the plugins array of your `~/.zshrc` file: +``` +plugins=(... colorize) +``` + +## Configuration + +### Requirements + +This plugin requires that at least one of the following tools is installed: + +* [Chroma](https://github.com/alecthomas/chroma) +* [Pygments](https://pygments.org/download/) + +### Colorize tool + +Colorize supports `pygmentize` and `chroma` as syntax highlighter. By default colorize uses `pygmentize` unless it's not installed and `chroma` is. This can be overridden by the `ZSH_COLORIZE_TOOL` environment variable: + +``` +ZSH_COLORIZE_TOOL=chroma +``` + +### Styles + +Pygments offers multiple styles. By default, the `default` style is used, but you can choose another theme by setting the `ZSH_COLORIZE_STYLE` environment variable: + +``` +ZSH_COLORIZE_STYLE="colorful" +``` + +### Chroma Formatter Settings + +Chroma supports terminal output in 8 color, 256 color, and true-color. If you need to change the default terminal output style from the standard 8 color output, set the `ZSH_COLORIZE_CHROMA_FORMATTER` environment variable: + +``` +ZSH_COLORIZE_CHROMA_FORMATTER=terminal256 +``` + +## Usage + +* `ccat [files]`: colorize the contents of the file (or files, if more than one are provided). + If no files are passed it will colorize the standard input. + +* `cless [less-options] [files]`: colorize the contents of the file (or files, if more than one are provided) and open less. + If no files are passed it will colorize the standard input. + The LESSOPEN and LESSCLOSE will be overwritten for this to work, but only in a local scope. diff --git a/dot_oh-my-zsh/plugins/colorize/colorize.plugin.zsh b/dot_oh-my-zsh/plugins/colorize/colorize.plugin.zsh new file mode 100644 index 0000000..12841e0 --- /dev/null +++ b/dot_oh-my-zsh/plugins/colorize/colorize.plugin.zsh @@ -0,0 +1,114 @@ +# Easier alias to use the plugin +alias ccat="colorize_cat" +alias cless="colorize_less" + +# '$0:A' gets the absolute path of this file +ZSH_COLORIZE_PLUGIN_PATH=$0:A + +colorize_check_requirements() { + local -a available_tools + available_tools=("chroma" "pygmentize") + + if [ -z "$ZSH_COLORIZE_TOOL" ]; then + if (( $+commands[pygmentize] )); then + ZSH_COLORIZE_TOOL="pygmentize" + elif (( $+commands[chroma] )); then + ZSH_COLORIZE_TOOL="chroma" + else + echo "Neither 'pygments' nor 'chroma' is installed!" >&2 + return 1 + fi + fi + + if [[ ${available_tools[(Ie)$ZSH_COLORIZE_TOOL]} -eq 0 ]]; then + echo "ZSH_COLORIZE_TOOL '$ZSH_COLORIZE_TOOL' not recognized. Available options are 'pygmentize' and 'chroma'." >&2 + return 1 + elif ! (( $+commands[$ZSH_COLORIZE_TOOL] )); then + echo "Package '$ZSH_COLORIZE_TOOL' is not installed!" >&2 + return 1 + fi +} + +colorize_cat() { + if ! colorize_check_requirements; then + return 1 + fi + + # If the environment variable ZSH_COLORIZE_STYLE + # is set, use that theme instead. Otherwise, + # use the default. + if [ -z "$ZSH_COLORIZE_STYLE" ]; then + # Both pygmentize & chroma support 'emacs' + ZSH_COLORIZE_STYLE="emacs" + fi + + # Use stdin if no arguments have been passed. + if [ $# -eq 0 ]; then + if [[ "$ZSH_COLORIZE_TOOL" == "pygmentize" ]]; then + pygmentize -O style="$ZSH_COLORIZE_STYLE" -g + else + chroma --style="$ZSH_COLORIZE_STYLE" --formatter="${ZSH_COLORIZE_CHROMA_FORMATTER:-terminal}" + fi + return $? + fi + + # Guess lexer from file extension, or guess it from file contents if unsuccessful. + local FNAME lexer + for FNAME in "$@"; do + if [[ "$ZSH_COLORIZE_TOOL" == "pygmentize" ]]; then + lexer=$(pygmentize -N "$FNAME") + if [[ $lexer != text ]]; then + pygmentize -O style="$ZSH_COLORIZE_STYLE" -l "$lexer" "$FNAME" + else + pygmentize -O style="$ZSH_COLORIZE_STYLE" -g "$FNAME" + fi + else + chroma --style="$ZSH_COLORIZE_STYLE" --formatter="${ZSH_COLORIZE_CHROMA_FORMATTER:-terminal}" "$FNAME" + fi + done +} + +# The less option 'F - Forward forever; like "tail -f".' will not work in this implementation +# caused by the lack of the ability to follow the file within pygmentize. +colorize_less() { + if ! colorize_check_requirements; then + return 1 + fi + + _cless() { + # LESS="-R $LESS" enables raw ANSI colors, while maintain already set options. + local LESS="-R $LESS" + + # This variable tells less to pipe every file through the specified command + # (see the man page of less INPUT PREPROCESSOR). + # 'zsh -ic "colorize_cat %s 2> /dev/null"' would not work for huge files like + # the ~/.zsh_history. For such files the tty of the preprocessor will be suspended. + # Therefore we must source this file to make colorize_cat available in the + # preprocessor without the interactive mode. + # `2>/dev/null` will suppress the error for large files 'broken pipe' of the python + # script pygmentize, which will show up if less has not fully "loaded the file" + # (e.g. when not scrolled to the bottom) while already the next file will be displayed. + local LESSOPEN="| zsh -c 'source \"$ZSH_COLORIZE_PLUGIN_PATH\"; \ + ZSH_COLORIZE_TOOL=$ZSH_COLORIZE_TOOL ZSH_COLORIZE_STYLE=$ZSH_COLORIZE_STYLE \ + colorize_cat %s 2> /dev/null'" + + # LESSCLOSE will be set to prevent any errors by executing a user script + # which assumes that his LESSOPEN has been executed. + local LESSCLOSE="" + + LESS="$LESS" LESSOPEN="$LESSOPEN" LESSCLOSE="$LESSCLOSE" command less "$@" + } + + if [ -t 0 ]; then + _cless "$@" + else + # The input is not associated with a terminal, therefore colorize_cat will + # colorize this input and pass it to less. + # Less has now to decide what to use. If any files have been provided, less + # will ignore the input by default, otherwise the colorized input will be used. + # If files have been supplied and the input has been redirected, this will + # lead to unnecessary overhead, but retains the ability to use the less options + # without checking for them inside this script. + colorize_cat | _cless "$@" + fi +} diff --git a/dot_oh-my-zsh/plugins/command-not-found/README.md b/dot_oh-my-zsh/plugins/command-not-found/README.md new file mode 100644 index 0000000..5a373c5 --- /dev/null +++ b/dot_oh-my-zsh/plugins/command-not-found/README.md @@ -0,0 +1,34 @@ +# command-not-found plugin + +This plugin uses the command-not-found package for zsh to provide suggested packages to be installed if a command cannot be found. + +To use it, add `command-not-found` to the plugins array of your zshrc file: + +```zsh +plugins=(... command-not-found) +``` + +An example of how this plugin works in Ubuntu: +``` +$ mutt +The program 'mutt' can be found in the following packages: + * mutt + * mutt-kz + * mutt-patched +Try: sudo apt install +``` + +### Supported platforms + +It works out of the box with the command-not-found packages for: + +- [Ubuntu](https://www.porcheron.info/command-not-found-for-zsh/) +- [Debian](https://packages.debian.org/search?keywords=command-not-found) +- [Arch Linux](https://wiki.archlinux.org/index.php/Pkgfile#Command_not_found) +- [macOS (Homebrew)](https://github.com/Homebrew/homebrew-command-not-found) +- [Fedora](https://fedoraproject.org/wiki/Features/PackageKitCommandNotFound) +- [NixOS](https://github.com/NixOS/nixpkgs/tree/master/nixos/modules/programs/command-not-found) +- [Termux](https://github.com/termux/command-not-found) +- [SUSE](https://www.unix.com/man-page/suse/1/command-not-found/) + +You can add support for other platforms by submitting a Pull Request. diff --git a/dot_oh-my-zsh/plugins/command-not-found/command-not-found.plugin.zsh b/dot_oh-my-zsh/plugins/command-not-found/command-not-found.plugin.zsh new file mode 100644 index 0000000..cb8a898 --- /dev/null +++ b/dot_oh-my-zsh/plugins/command-not-found/command-not-found.plugin.zsh @@ -0,0 +1,69 @@ +## Platforms with a built-in command-not-found handler init file + +for file ( + # Arch Linux. Must have pkgfile installed: https://wiki.archlinux.org/index.php/Pkgfile#Command_not_found + /usr/share/doc/pkgfile/command-not-found.zsh + # macOS (M1 and classic Homebrew): https://github.com/Homebrew/homebrew-command-not-found + /opt/homebrew/Library/Taps/homebrew/homebrew-command-not-found/handler.sh + /usr/local/Homebrew/Library/Taps/homebrew/homebrew-command-not-found/handler.sh +); do + if [[ -r "$file" ]]; then + source "$file" + unset file + return 0 + fi +done +unset file + + +## Platforms with manual command_not_found_handler() setup + +# Debian and derivatives: https://launchpad.net/ubuntu/+source/command-not-found +if [[ -x /usr/lib/command-not-found || -x /usr/share/command-not-found/command-not-found ]]; then + command_not_found_handler() { + if [[ -x /usr/lib/command-not-found ]]; then + /usr/lib/command-not-found -- "$1" + return $? + elif [[ -x /usr/share/command-not-found/command-not-found ]]; then + /usr/share/command-not-found/command-not-found -- "$1" + return $? + else + printf "zsh: command not found: %s\n" "$1" >&2 + return 127 + fi + } +fi + +# Fedora: https://fedoraproject.org/wiki/Features/PackageKitCommandNotFound +if [[ -x /usr/libexec/pk-command-not-found ]]; then + command_not_found_handler() { + if [[ -S /var/run/dbus/system_bus_socket && -x /usr/libexec/packagekitd ]]; then + /usr/libexec/pk-command-not-found "$@" + return $? + fi + + printf "zsh: command not found: %s\n" "$1" >&2 + return 127 + } +fi + +# NixOS: https://github.com/NixOS/nixpkgs/tree/master/nixos/modules/programs/command-not-found +if [[ -x /run/current-system/sw/bin/command-not-found ]]; then + command_not_found_handler() { + /run/current-system/sw/bin/command-not-found "$@" + } +fi + +# Termux: https://github.com/termux/command-not-found +if [[ -x /data/data/com.termux/files/usr/libexec/termux/command-not-found ]]; then + command_not_found_handler() { + /data/data/com.termux/files/usr/libexec/termux/command-not-found "$1" + } +fi + +# SUSE and derivates: https://www.unix.com/man-page/suse/1/command-not-found/ +if [[ -x /usr/bin/command-not-found ]]; then + command_not_found_handler() { + /usr/bin/command-not-found "$1" + } +fi diff --git a/dot_oh-my-zsh/plugins/common-aliases/README.md b/dot_oh-my-zsh/plugins/common-aliases/README.md new file mode 100644 index 0000000..1417c30 --- /dev/null +++ b/dot_oh-my-zsh/plugins/common-aliases/README.md @@ -0,0 +1,130 @@ +# Common Aliases Plugin + +This plugin creates helpful shortcut aliases for many commonly used commands. + +To use it add `common-aliases` to the plugins array in your zshrc file: + +```zsh +plugins=(... common-aliases) +``` + +## Aliases + +### ls command + +| Alias | Command | Description | +| ----- | ------------ | --------------------------------------------------------------------------- | +| l | `ls -lFh` | List files as a long list, show size, type, human-readable | +| la | `ls -lAFh` | List almost all files as a long list show size, type, human-readable | +| lr | `ls -tRFh` | List files recursively sorted by date, show type, human-readable | +| lt | `ls -ltFh` | List files as a long list sorted by date, show type, human-readable | +| ll | `ls -l` | List files as a long list | +| ldot | `ls -ld .*` | List dot files as a long list | +| lS | `ls -1FSsh` | List files showing only size and name sorted by size | +| lart | `ls -1Fcart` | List all files sorted in reverse of create/modification time (oldest first) | +| lrt | `ls -1Fcrt` | List files sorted in reverse of create/modification time(oldest first) | +| lsr | `ls -lARFh` | List all files and directories recursively | +| lsn | `ls -1` | List files and directories in a single column | + +### File handling + +| Alias | Command | Description | +| ----- | --------------------- | ------------------------------------------------------------------------------- | +| rm | `rm -i` | Remove a file | +| cp | `cp -i` | Copy a file | +| mv | `mv -i` | Move a file | +| zshrc | `${=EDITOR} ~/.zshrc` | Quickly access the ~/.zshrc file | +| dud | `du -d 1 -h` | Display the size of files at depth 1 in current location in human-readable form | +| duf\* | `du -sh` | Display the size of files in current location in human-readable form | +| t | `tail -f` | Shorthand for tail which outputs the last part of a file | + +\* Only if the [`duf`](https://github.com/muesli/duf) command isn't installed. + +### find and grep + +| Alias | Command | Description | +| ----- | -------------------------------------------------- | ------------------------------------ | +| fd\* | `find . -type d -name` | Find a directory with the given name | +| ff | `find . -type f -name` | Find a file with the given name | +| grep | `grep --color` | Searches for a query string | +| sgrep | `grep -R -n -H -C 5 --exclude-dir={.git,.svn,CVS}` | Useful for searching within files | + +\* Only if the [`fd`](https://github.com/sharkdp/fd) command isn't installed. + +### Other Aliases + +| Alias | Command | Description | +| -------- | ------------------ | ----------------------------------------------------------- | +| h | `history` | Lists all recently used commands | +| hgrep | `fc -El 0 \| grep` | Searches for a word in the list of previously used commands | +| help | `man` | Opens up the man page for a command | +| p | `ps -f` | Displays currently executing processes | +| sortnr | `sort -n -r` | Used to sort the lines of a text file | +| unexport | `unset` | Used to unset an environment variable | + +## Global aliases + +These aliases are expanded in any position in the command line, meaning you can use them even at the +end of the command you've typed. Examples: + +Quickly pipe to less: + +```zsh +$ ls -l /var/log L +# will run +$ ls -l /var/log | less +``` + +Silences stderr output: + +```zsh +$ find . -type f NE +# will run +$ find . -type f 2>/dev/null +``` + +| Alias | Command | Description | +| ----- | --------------------------- | ----------------------------------------------------------- | +| H | `\| head` | Pipes output to head which outputs the first part of a file | +| T | `\| tail` | Pipes output to tail which outputs the last part of a file | +| G | `\| grep` | Pipes output to grep to search for some word | +| L | `\| less` | Pipes output to less, useful for paging | +| M | `\| most` | Pipes output to more, useful for paging | +| LL | `2>&1 \| less` | Writes stderr to stdout and passes it to less | +| CA | `2>&1 \| cat -A` | Writes stderr to stdout and passes it to cat | +| NE | `2 > /dev/null` | Silences stderr | +| NUL | `> /dev/null 2>&1` | Silences both stdout and stderr | +| P | `2>&1\| pygmentize -l pytb` | Writes stderr to stdout and passes it to pygmentize | + +## File extension aliases + +These are special aliases that are triggered when a file name is passed as the command. For example, +if the pdf file extension is aliased to `acroread` (a popular Linux pdf reader), when running `file.pdf` +that file will be open with `acroread`. + +### Reading Docs + +| Alias | Command | Description | +| ----- | ---------- | ---------------------------------- | +| pdf | `acroread` | Opens up a document using acroread | +| ps | `gv` | Opens up a .ps file using gv | +| dvi | `xdvi` | Opens up a .dvi file using xdvi | +| chm | `xchm` | Opens up a .chm file using xchm | +| djvu | `djview` | Opens up a .djvu file using djview | + +### Listing files inside a packed file + +| Alias | Command | Description | +| ------ | ---------- | --------------------------------- | +| zip | `unzip -l` | Lists files inside a .zip file | +| rar | `unrar l` | Lists files inside a .rar file | +| tar | `tar tf` | Lists files inside a .tar file | +| tar.gz | `echo` | Lists files inside a .tar.gz file | +| ace | `unace l` | Lists files inside a .ace file | + +### Some other features + +- Opens urls in terminal using browser specified by the variable `$BROWSER` +- Opens C, C++, Tex and text files using editor specified by the variable `$EDITOR` +- Opens images using image viewer specified by the variable `$XIVIEWER` +- Opens videos and other media using mplayer diff --git a/dot_oh-my-zsh/plugins/common-aliases/common-aliases.plugin.zsh b/dot_oh-my-zsh/plugins/common-aliases/common-aliases.plugin.zsh new file mode 100644 index 0000000..3139b82 --- /dev/null +++ b/dot_oh-my-zsh/plugins/common-aliases/common-aliases.plugin.zsh @@ -0,0 +1,90 @@ +# Advanced Aliases. +# Use with caution +# + +# ls, the common ones I use a lot shortened for rapid fire usage +alias l='ls -lFh' #size,show type,human readable +alias la='ls -lAFh' #long list,show almost all,show type,human readable +alias lr='ls -tRFh' #sorted by date,recursive,show type,human readable +alias lt='ls -ltFh' #long list,sorted by date,show type,human readable +alias ll='ls -l' #long list +alias ldot='ls -ld .*' +alias lS='ls -1FSsh' +alias lart='ls -1Fcart' +alias lrt='ls -1Fcrt' +alias lsr='ls -lARFh' #Recursive list of files and directories +alias lsn='ls -1' #A column contains name of files and directories + +alias zshrc='${=EDITOR} ${ZDOTDIR:-$HOME}/.zshrc' # Quick access to the .zshrc file + +alias grep='grep --color' +alias sgrep='grep -R -n -H -C 5 --exclude-dir={.git,.svn,CVS} ' + +alias t='tail -f' + +# Command line head / tail shortcuts +alias -g H='| head' +alias -g T='| tail' +alias -g G='| grep' +alias -g L="| less" +alias -g M="| most" +alias -g LL="2>&1 | less" +alias -g CA="2>&1 | cat -A" +alias -g NE="2> /dev/null" +alias -g NUL="> /dev/null 2>&1" +alias -g P="2>&1| pygmentize -l pytb" + +alias dud='du -d 1 -h' +(( $+commands[duf] )) || alias duf='du -sh *' +(( $+commands[fd] )) || alias fd='find . -type d -name' +alias ff='find . -type f -name' + +alias h='history' +alias hgrep="fc -El 0 | grep" +alias help='man' +alias p='ps -f' +alias sortnr='sort -n -r' +alias unexport='unset' + +alias rm='rm -i' +alias cp='cp -i' +alias mv='mv -i' + +# zsh is able to auto-do some kungfoo +# depends on the SUFFIX :) +autoload -Uz is-at-least +if is-at-least 4.2.0; then + # open browser on urls + if [[ -n "$BROWSER" ]]; then + _browser_fts=(htm html de org net com at cx nl se dk) + for ft in $_browser_fts; do alias -s $ft='$BROWSER'; done + fi + + _editor_fts=(cpp cxx cc c hh h inl asc txt TXT tex) + for ft in $_editor_fts; do alias -s $ft='$EDITOR'; done + + if [[ -n "$XIVIEWER" ]]; then + _image_fts=(jpg jpeg png gif mng tiff tif xpm) + for ft in $_image_fts; do alias -s $ft='$XIVIEWER'; done + fi + + _media_fts=(ape avi flv m4a mkv mov mp3 mpeg mpg ogg ogm rm wav webm) + for ft in $_media_fts; do alias -s $ft=mplayer; done + + #read documents + alias -s pdf=acroread + alias -s ps=gv + alias -s dvi=xdvi + alias -s chm=xchm + alias -s djvu=djview + + #list whats inside packed file + alias -s zip="unzip -l" + alias -s rar="unrar l" + alias -s tar="tar tf" + alias -s tar.gz="echo " + alias -s ace="unace l" +fi + +# Make zsh know about hosts already accessed by SSH +zstyle -e ':completion:*:(ssh|scp|sftp|rsh|rsync):hosts' hosts 'reply=(${=${${(f)"$(cat {/etc/ssh_,~/.ssh/known_}hosts(|2)(N) /dev/null)"}%%[# ]*}//,/ })' diff --git a/dot_oh-my-zsh/plugins/compleat/README.md b/dot_oh-my-zsh/plugins/compleat/README.md new file mode 100644 index 0000000..af0e383 --- /dev/null +++ b/dot_oh-my-zsh/plugins/compleat/README.md @@ -0,0 +1,9 @@ +# compleat plugin + +This plugin looks for [compleat](https://github.com/mbrubeck/compleat) and loads its completion. + +To use it, add compleat to the plugins array in your zshrc file: + +```zsh +plugins=(... compleat) +``` diff --git a/dot_oh-my-zsh/plugins/compleat/compleat.plugin.zsh b/dot_oh-my-zsh/plugins/compleat/compleat.plugin.zsh new file mode 100644 index 0000000..38f1b39 --- /dev/null +++ b/dot_oh-my-zsh/plugins/compleat/compleat.plugin.zsh @@ -0,0 +1,20 @@ +# ------------------------------------------------------------------------------ +# FILE: compleat.plugin.zsh +# DESCRIPTION: oh-my-zsh plugin file. +# AUTHOR: Sorin Ionescu (sorin.ionescu@gmail.com) +# VERSION: 1.0.0 +# ------------------------------------------------------------------------------ + +if (( ${+commands[compleat]} )); then + local prefix="${commands[compleat]:h:h}" + local setup="${prefix}/share/compleat-1.0/compleat_setup" + + if [[ -f "$setup" ]]; then + if ! bashcompinit >/dev/null 2>&1; then + autoload -U bashcompinit + bashcompinit -i + fi + + source "$setup" + fi +fi diff --git a/dot_oh-my-zsh/plugins/composer/README.md b/dot_oh-my-zsh/plugins/composer/README.md new file mode 100644 index 0000000..ad6ed24 --- /dev/null +++ b/dot_oh-my-zsh/plugins/composer/README.md @@ -0,0 +1,35 @@ +# composer + +This plugin provides completion for [composer](https://getcomposer.org/), as well as aliases +for frequent composer commands. It also adds Composer's global binaries to the PATH, using +Composer if available. + +To use it add `composer` to the plugins array in your zshrc file. + +```zsh +plugins=(... composer) +``` + +Original author: Daniel Gomes + +## Aliases + +| Alias | Command | Description | +| ------ | ---------------------------------- | --------------------------------------------------------------------------------------- | +| `c` | `composer` | Starts composer | +| `ccp` | `composer create-project` | Create new project from an existing package | +| `cdo` | `composer dump-autoload -o` | Converts PSR-0/4 autoloading to classmap for a faster autoloader (good for production) | +| `cdu` | `composer dump-autoload` | Updates the autoloader | +| `cget` | `curl -s \| php` | Installs composer in the current directory | +| `cgr` | `composer global require` | Allows require command to run on COMPOSER_HOME directory | +| `cgrm` | `composer global remove` | Allows remove command to run on COMPOSER_HOME directory | +| `cgu` | `composer global update` | Allows update command to run on COMPOSER_HOME directory | +| `ci` | `composer install` | Resolves and installs dependencies from `composer.json` | +| `co` | `composer outdated` | Shows a list of installed packages with available updates | +| `cod` | `composer outdated --direct` | Shows a list of installed packages with available updates which are direct dependencies | +| `cr` | `composer require` | Adds new packages to `composer.json` | +| `crm` | `composer remove` | Removes packages from `composer.json` | +| `cs` | `composer show` | Lists available packages, with optional filtering | +| `csu` | `composer self-update` | Updates composer to the latest version | +| `cu` | `composer update` | Updates composer dependencies and `composer.lock` file | +| `cuh` | `composer update -d ` | Updates globally installed packages | diff --git a/dot_oh-my-zsh/plugins/composer/composer.plugin.zsh b/dot_oh-my-zsh/plugins/composer/composer.plugin.zsh new file mode 100644 index 0000000..dd0b18e --- /dev/null +++ b/dot_oh-my-zsh/plugins/composer/composer.plugin.zsh @@ -0,0 +1,76 @@ +## Basic Composer command completion +# Since Zsh 5.7, an improved composer command completion is provided +if ! is-at-least 5.7; then + _composer () { + local curcontext="$curcontext" state line + typeset -A opt_args + _arguments '*:: :->subcmds' + + if (( CURRENT == 1 )) || ( (( CURRENT == 2 )) && [[ "$words[1]" = "global" ]] ); then + # Command list + local -a subcmds + subcmds=("${(@f)"$($_comp_command1 --no-ansi 2>/dev/null | awk ' + /Available commands/{ r=1 } + r == 1 && /^[ \t]*[a-z]+/{ + gsub(/^[ \t]+/, "") + gsub(/ +/, ":") + print $0 + } + ')"}") + _describe -t commands 'composer command' subcmds + else + # Required list + compadd $($_comp_command1 show -s --no-ansi 2>/dev/null \ + | sed '1,/requires/d' \ + | awk 'NF > 0 && !/^requires \(dev\)/{ print $1 }') + fi + } + + compdef _composer composer + compdef _composer composer.phar +fi + + +## Aliases +alias c='composer' +alias ccp='composer create-project' +alias cdo='composer dump-autoload -o' +alias cdu='composer dump-autoload' +alias cget='curl -s https://getcomposer.org/installer | php' +alias cgr='composer global require' +alias cgrm='composer global remove' +alias cgu='composer global update' +alias ci='composer install' +alias co='composer outdated' +alias cod='composer outdated --direct' +alias cr='composer require' +alias crm='composer remove' +alias cs='composer show' +alias csu='composer self-update' +alias cu='composer update' +alias cuh='composer update --working-dir=$(composer config -g home)' + + +## If Composer not found, try to add known directories to $PATH +if (( ! $+commands[composer] )); then + [[ -d "$HOME/.composer/vendor/bin" ]] && export PATH="$PATH:$HOME/.composer/vendor/bin" + [[ -d "$HOME/.config/composer/vendor/bin" ]] && export PATH="$PATH:$HOME/.config/composer/vendor/bin" + + # If still not found, don't do the rest of the script + (( $+commands[composer] )) || return 0 +fi + + +## Add Composer's global binaries to PATH +autoload -Uz _store_cache _retrieve_cache _cache_invalid +_retrieve_cache composer + +if [[ -z $__composer_bin_dir ]]; then + __composer_bin_dir=$(composer global config bin-dir --absolute 2>/dev/null) + _store_cache composer __composer_bin_dir +fi + +# Add Composer's global binaries to PATH +export PATH="$PATH:$__composer_bin_dir" + +unset __composer_bin_dir diff --git a/dot_oh-my-zsh/plugins/copybuffer/README.md b/dot_oh-my-zsh/plugins/copybuffer/README.md new file mode 100644 index 0000000..a53d1c8 --- /dev/null +++ b/dot_oh-my-zsh/plugins/copybuffer/README.md @@ -0,0 +1,11 @@ +# `copybuffer` plugin + +This plugin adds the ctrl-o keyboard shortcut to copy the current text +in the command line to the system clipboard. + +This is useful if you type a command - and before you hit enter to execute it - want +to copy it maybe so you can paste it into a script, gist or whatnot. + +```zsh +plugins=(... copybuffer) +``` diff --git a/dot_oh-my-zsh/plugins/copybuffer/copybuffer.plugin.zsh b/dot_oh-my-zsh/plugins/copybuffer/copybuffer.plugin.zsh new file mode 100644 index 0000000..e67f920 --- /dev/null +++ b/dot_oh-my-zsh/plugins/copybuffer/copybuffer.plugin.zsh @@ -0,0 +1,16 @@ +# copy the active line from the command line buffer +# onto the system clipboard + +copybuffer () { + if which clipcopy &>/dev/null; then + printf "%s" "$BUFFER" | clipcopy + else + zle -M "clipcopy not found. Please make sure you have Oh My Zsh installed correctly." + fi +} + +zle -N copybuffer + +bindkey -M emacs "^O" copybuffer +bindkey -M viins "^O" copybuffer +bindkey -M vicmd "^O" copybuffer diff --git a/dot_oh-my-zsh/plugins/copyfile/README.md b/dot_oh-my-zsh/plugins/copyfile/README.md new file mode 100644 index 0000000..a110b83 --- /dev/null +++ b/dot_oh-my-zsh/plugins/copyfile/README.md @@ -0,0 +1,11 @@ +# copyfile plugin + +Puts the contents of a file in your system clipboard so you can paste it anywhere. + +To use, add `copyfile` to your plugins array: + +```zsh +plugins=(... copyfile) +``` + +Then you can run the command `copyfile ` to copy the file named `filename`. diff --git a/dot_oh-my-zsh/plugins/copyfile/copyfile.plugin.zsh b/dot_oh-my-zsh/plugins/copyfile/copyfile.plugin.zsh new file mode 100644 index 0000000..f4eca5a --- /dev/null +++ b/dot_oh-my-zsh/plugins/copyfile/copyfile.plugin.zsh @@ -0,0 +1,7 @@ +# Copies the contents of a given file to the system or X Windows clipboard +# +# copyfile +function copyfile { + emulate -L zsh + clipcopy $1 +} diff --git a/dot_oh-my-zsh/plugins/copypath/README.md b/dot_oh-my-zsh/plugins/copypath/README.md new file mode 100644 index 0000000..1e5a463 --- /dev/null +++ b/dot_oh-my-zsh/plugins/copypath/README.md @@ -0,0 +1,15 @@ +# copypath plugin + +Copies the path of given directory or file to the system clipboard. + +To use it, add `copypath` to the plugins array in your zshrc file: + +```zsh +plugins=(... copypath) +``` + +## Usage + +- `copypath`: copies the absolute path of the current directory. + +- `copypath `: copies the absolute path of the given file. diff --git a/dot_oh-my-zsh/plugins/copypath/copypath.plugin.zsh b/dot_oh-my-zsh/plugins/copypath/copypath.plugin.zsh new file mode 100644 index 0000000..8fe0a85 --- /dev/null +++ b/dot_oh-my-zsh/plugins/copypath/copypath.plugin.zsh @@ -0,0 +1,15 @@ +# Copies the path of given directory or file to the system or X Windows clipboard. +# Copy current directory if no parameter. +function copypath { + # If no argument passed, use current directory + local file="${1:-.}" + + # If argument is not an absolute path, prepend $PWD + [[ $file = /* ]] || file="$PWD/$file" + + # Copy the absolute path without resolving symlinks + # If clipcopy fails, exit the function with an error + print -n "${file:a}" | clipcopy || return 1 + + echo ${(%):-"%B${file:a}%b copied to clipboard."} +} diff --git a/dot_oh-my-zsh/plugins/cp/README.md b/dot_oh-my-zsh/plugins/cp/README.md new file mode 100644 index 0000000..2373424 --- /dev/null +++ b/dot_oh-my-zsh/plugins/cp/README.md @@ -0,0 +1,32 @@ +# cp plugin + +This plugin defines a `cpv` function that uses `rsync` so that you +get the features and security of this command. + +To enable, add `cp` to your `plugins` array in your zshrc file: + +```zsh +plugins=(... cp) +``` + +## Description + +The enabled options for rsync are: + +- `-p`: preserves permissions. + +- `-o`: preserves owner. + +* `-g`: preserves group. + +* `-b`: make a backup of the original file instead of overwriting it, if it exists. + +* `-r`: recurse directories. + +* `-hhh`: outputs numbers in human-readable format, in units of 1024 (K, M, G, T). + +* `--backup-dir="/tmp/rsync-$USERNAME"`: move backup copies to "/tmp/rsync-$USERNAME". + +* `-e /dev/null`: only work on local files (disable remote shells). + +* `--progress`: display progress. diff --git a/dot_oh-my-zsh/plugins/cp/cp.plugin.zsh b/dot_oh-my-zsh/plugins/cp/cp.plugin.zsh new file mode 100644 index 0000000..a562591 --- /dev/null +++ b/dot_oh-my-zsh/plugins/cp/cp.plugin.zsh @@ -0,0 +1,4 @@ +cpv() { + rsync -pogbr -hhh --backup-dir="/tmp/rsync-${USERNAME}" -e /dev/null --progress "$@" +} +compdef _files cpv diff --git a/dot_oh-my-zsh/plugins/cpanm/README.md b/dot_oh-my-zsh/plugins/cpanm/README.md new file mode 100644 index 0000000..13e93d0 --- /dev/null +++ b/dot_oh-my-zsh/plugins/cpanm/README.md @@ -0,0 +1,9 @@ +# Cpanm + +This plugin provides completion for [Cpanm](https://github.com/miyagawa/cpanminus) ([docs](https://metacpan.org/pod/App::cpanminus)). + +To use it add cpanm to the plugins array in your zshrc file. + +```zsh +plugins=(... cpanm) +``` diff --git a/dot_oh-my-zsh/plugins/cpanm/_cpanm b/dot_oh-my-zsh/plugins/cpanm/_cpanm new file mode 100644 index 0000000..f328dd9 --- /dev/null +++ b/dot_oh-my-zsh/plugins/cpanm/_cpanm @@ -0,0 +1,64 @@ +#compdef cpanm + +## +# cpanminus Z Shell completion script +## +# +# Current supported cpanm version: 1.4000 (Tue Mar 8 01:00:49 PST 2011) +# + +local arguments curcontext="$curcontext" +typeset -A opt_args + + +arguments=( + +# Commands +# '(--install -i)'{--install,-i}'[Installs the modules]' + '(- :)--self-upgrade[Upgrades itself]' + '(- :)--info[Displays distribution info on CPAN]' + '(--installdeps)--installdeps[Only install dependencies]' + '(--look)--look[Download/unpack the distribution and then open the directory with your shell]' + '(- :)'{--help,-h}'[Displays help information]' + '(- :)'{--version,-V}'[Displays software version]' + +# Options + {--force,-f}'[Force install]' + {--notest,-n}'[Do not run unit tests]' + {--sudo,-S}'[sudo to run install commands]' + '(-v --verbose --quiet -q)'{--verbose,-v}'[Turns on chatty output]' + '(-q --quiet --verbose -v)'{--quiet,-q}'[Turns off all output]' + {--local-lib,-l}'[Specify the install base to install modules]' + {--local-lib-contained,-L}'[Specify the install base to install all non-core modules]' + '--mirror[Specify the base URL for the mirror (e.g. http://cpan.cpantesters.org/)]:URLs:_urls' + '--mirror-only[Use the mirror\''s index file instead of the CPAN Meta DB]' + '--prompt[Prompt when configure/build/test fails]' + '--reinstall[Reinstall the distribution even if you already have the latest version installed]' + '--interactive[Turn on interactive configure]' + + '--scandeps[Scan the dependencies of given modules and output the tree in a text format]' + '--format[Specify what format to display the scanned dependency tree]:scandeps format:(tree json yaml dists)' + + '--save-dists[Specify the optional directory path to copy downloaded tarballs]' +# '--uninst-shadows[Uninstalls the shadow files of the distribution that you\''re installing]' + + '--auto-cleanup[Number of days that cpanm\''s work directories expire in. Defaults to 7]' + '(--no-man-pages)--man-pages[Generates man pages for executables (man1) and libraries (man3)]' + '(--man-pages)--no-man-pages[Do not generate man pages]' + + + # Note: Normally with "--lwp", "--wget" and "--curl" options set to true (which is the default) cpanm tries LWP, + # Wget, cURL and HTTP::Tiny (in that order) and uses the first one available. + # (So that the exclusions are not enabled here for the completion) + '(--lwp)--lwp[Use LWP module to download stuff]' + '(--wget)--wget[Use GNU Wget (if available) to download stuff]' + '(--curl)--curl[Use cURL (if available) to download stuff]' + +# Other completions + '*:Local directory or archive:_files -/ -g "*.(tar.gz|tgz|tar.bz2|zip)(-.)"' + # '*::args: _normal' # this looks for default files (any files) +) +_arguments -s $arguments \ + && return 0 + +return 1 diff --git a/dot_oh-my-zsh/plugins/dash/README.md b/dot_oh-my-zsh/plugins/dash/README.md new file mode 100644 index 0000000..0ca3e4e --- /dev/null +++ b/dot_oh-my-zsh/plugins/dash/README.md @@ -0,0 +1,28 @@ +# Dash plugin + +This plugin adds command line functionality for [Dash](https://kapeli.com/dash), +an API Documentation Browser for macOS. This plugin requires Dash to be installed +to work. + +To use it, add `dash` to the plugins array in your zshrc file: + +```zsh +plugins=(... dash) +``` + +## Usage + +- Open and switch to the dash application. +``` +dash +``` + +- Query for something in dash app: `dash query` +``` +dash golang +``` + +- You can optionally provide a keyword: `dash [keyword:]query` +``` +dash python:tuple +``` diff --git a/dot_oh-my-zsh/plugins/dash/dash.plugin.zsh b/dot_oh-my-zsh/plugins/dash/dash.plugin.zsh new file mode 100644 index 0000000..f6801a8 --- /dev/null +++ b/dot_oh-my-zsh/plugins/dash/dash.plugin.zsh @@ -0,0 +1,84 @@ +# Usage: dash [keyword:]query +dash() { open -a Dash.app dash://"$*" } +compdef _dash dash + +_dash() { + # No sense doing this for anything except the 2nd position and if we haven't + # specified which docset to query against + if [[ $CURRENT -ne 2 || "$words[2]" =~ ":" ]]; then + return + fi + + local -aU docsets + docsets=() + + # Use defaults to get the array of docsets from preferences + # Have to smash it into one big line so that each docset is an element of our docsets array + # Only output docsets that are actually enabled + local -a enabled_docsets + enabled_docsets=("${(@f)$(defaults read com.kapeli.dashdoc docsets \ + | tr -d '\n' | grep -oE '\{.*?\}' | grep -E 'isEnabled = 1;')}") + + local docset name keyword + # Now get each docset and output each on their own line + for docset in "$enabled_docsets[@]"; do + keyword='' + # Order of preference as explained to me by @kapeli via email + for locator in keyword suggestedKeyword platform; do + # Echo the docset, try to find the appropriate keyword + # Strip doublequotes and colon from any keyword so that everything has the + # same format when output (we'll add the colon in the completion) + if [[ "$docset" =~ "$locator = ([^;]*);" ]]; then + keyword="${match[1]//[\":]}" + fi + + if [[ -z "$keyword" ]]; then + continue + fi + + # if we fall back to platform, we should do some checking per @kapeli + if [[ "$locator" == "platform" ]]; then + # Since these are the only special cases right now, let's not do the + # expensive processing unless we have to + if [[ "$keyword" = (python|java|qt|cocos2d) ]]; then + if [[ "$docset" =~ "docsetName = ([^;]*);" ]]; then + name="${match[1]//[\":]}" + case "$keyword" in + python) + case "$name" in + "Python 2") keyword="python2" ;; + "Python 3") keyword="python3" ;; + esac ;; + java) + case "$name" in + "Java SE7") keyword="java7" ;; + "Java SE6") keyword="java6" ;; + "Java SE8") keyword="java8" ;; + esac ;; + qt) + case "$name" in + "Qt 5") keyword="qt5" ;; + "Qt 4"|Qt) keyword="qt4" ;; + esac ;; + cocos2d) + case "$name" in + Cocos3D) keyword="cocos3d" ;; + esac ;; + esac + fi + fi + fi + + # Bail once we have a match + break + done + + # If we have a keyword, add it to the list! + if [[ -n "$keyword" ]]; then + docsets+=($keyword) + fi + done + + # special thanks to [arx] on #zsh for getting me sorted on this piece + compadd -qS: -- "$docsets[@]" +} diff --git a/dot_oh-my-zsh/plugins/debian/README.md b/dot_oh-my-zsh/plugins/debian/README.md new file mode 100644 index 0000000..c1ebe1c --- /dev/null +++ b/dot_oh-my-zsh/plugins/debian/README.md @@ -0,0 +1,87 @@ +# debian + +This plugin provides Debian-related aliases and functions for zsh. + +To use it add `debian` to the plugins array in your zshrc file. + +```zsh +plugins=(... debian) +``` + +## Settings + +- `$apt_pref`: use aptitude or apt if installed, fallback is apt-get. +- `$apt_upgr`: use upgrade or safe-upgrade (for aptitude). + +Set `$apt_pref` and `$apt_upgr` to whatever command you want (before sourcing Oh My Zsh) to override this behavior. + +## Common Aliases + +| Alias | Command | Description | +| ------ | ---------------------------------------------------------------------- | ---------------------------------------------------------- | +| `age` | `apt-get` | Command line tool for handling packages | +| `api` | `aptitude` | Same functionality as `apt-get`, provides extra options | +| `acse` | `apt-cache search` | Command line tool for searching apt software package cache | +| `aps` | `aptitude search` | Searches installed packages using aptitude | +| `as` | `aptitude -F '* %p -> %d \n(%v/%V)' --no-gui --disable-columns search` | Print searched packages using a custom format | +| `afs` | `apt-file search --regexp` | Search file in packages | +| `asrc` | `apt-get source` | Fetch source packages through `apt-get` | +| `app` | `apt-cache policy` | Displays priority of package sources | + +## Superuser Operations Aliases + +| Alias | Command | Description | +| -------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | +| `aac` | `sudo $apt_pref autoclean` | Clears out the local repository of retrieved package files | +| `aar` | `sudo $apt_pref autoremove` | Removes packages installed automatically that are no longer needed | +| `abd` | `sudo $apt_pref build-dep` | Installs all dependencies for building packages | +| `ac` | `sudo $apt_pref clean` | Clears out the local repository of retrieved package files except lock files | +| `ad` | `sudo $apt_pref update` | Updates the package lists for upgrades for packages | +| `adg` | `sudo $apt_pref update && sudo $apt_pref $apt_upgr` | Update and upgrade packages | +| `ads` | `sudo apt-get dselect-upgrade` | Installs packages from list and removes all not in the list | +| `adu` | `sudo $apt_pref update && sudo $apt_pref dist-upgrade` | Smart upgrade that handles dependencies | +| `afu` | `sudo apt-file update` | Update the files in packages | +| `ai` | `sudo $apt_pref install` | Command-line tool to install package | +| `ail` | `sed -e 's/ */ /g' -e 's/ *//' \| cut -s -d ' ' -f 1 \| xargs sudo $apt_pref install` | Install all packages given on the command line while using only the first word of each line | +| `alu` | `sudo apt update && apt list -u && sudo apt upgrade` | Update, list and upgrade packages | +| `ap` | `sudo $apt_pref purge` | Removes packages along with configuration files | +| `au` | `sudo $apt_pref $apt_upgr` | Install package upgrades | +| `di` | `sudo dpkg -i` | Install all .deb files in the current directory | +| `dia` | `sudo dpkg -i ./*.deb` | Install all .deb files in the current directory | +| `kclean` | `sudo aptitude remove -P ?and(~i~nlinux-(ima\|hea) ?not(~n$(uname -r)))` | Remove ALL kernel images and headers EXCEPT the one in use | + +## Aliases - Commands using `su` + +| Alias | Command | +| ----- | --------------------------------------------------------- | +| `aac` | `su -ls "$apt_pref autoclean" root` | +| `aar` | `su -ls "$apt_pref autoremove" root` | +| `ac` | `su -ls "$apt_pref clean" root` | +| `ad` | `su -lc "$apt_pref update" root` | +| `adg` | `su -lc "$apt_pref update && aptitude $apt_upgr" root` | +| `adu` | `su -lc "$apt_pref update && aptitude dist-upgrade" root` | +| `afu` | `su -lc "apt-file update"` | +| `au` | `su -lc "$apt_pref $apt_upgr" root` | +| `dia` | `su -lc "dpkg -i ./*.deb" root` | + +## Miscellaneous Aliases + +| Alias | Command | Description | +| --------- | ---------------------------------------------- | ------------------------------ | +| `allpkgs` | `aptitude search -F "%p" --disable-columns ~i` | Display all installed packages | +| `mydeb` | `time dpkg-buildpackage -rfakeroot -us -uc` | Create a basic .deb package | + +## Functions + +| Function | Description | +| ------------------- | --------------------------------------------------------------- | +| `apt-copy` | Create a simple script that can be used to 'duplicate' a system | +| `apt-history` | Displays apt history for a command | +| `apt-list-packages` | List packages by size | +| `kerndeb` | Builds kernel packages | + +## Authors + +- [@AlexBio](https://github.com/AlexBio) +- [@dbb](https://github.com/dbb) +- [@Mappleconfusers](https://github.com/Mappleconfusers) diff --git a/dot_oh-my-zsh/plugins/debian/debian.plugin.zsh b/dot_oh-my-zsh/plugins/debian/debian.plugin.zsh new file mode 100644 index 0000000..bab1ae1 --- /dev/null +++ b/dot_oh-my-zsh/plugins/debian/debian.plugin.zsh @@ -0,0 +1,227 @@ +# Use aptitude or apt if installed, fallback is apt-get +# You can just set apt_pref='apt-get' to override it. + +if [[ -z $apt_pref || -z $apt_upgr ]]; then + if [[ -e $commands[aptitude] ]]; then + apt_pref='aptitude' + apt_upgr='safe-upgrade' + elif [[ -e $commands[apt] ]]; then + apt_pref='apt' + apt_upgr='upgrade' + else + apt_pref='apt-get' + apt_upgr='upgrade' + fi +fi + +# Use sudo by default if it's installed +if [[ -e $commands[sudo] ]]; then + use_sudo=1 +fi + +# Aliases ################################################################### +# These are for more obscure uses of apt-get and aptitude that aren't covered +# below. +alias age='apt-get' +alias api='aptitude' + +# Some self-explanatory aliases +alias acse="apt-cache search" +alias aps='aptitude search' +alias as="aptitude -F '* %p -> %d \n(%v/%V)' --no-gui --disable-columns search" + +# apt-file +alias afs='apt-file search --regexp' + + +# These are apt-get only +alias asrc='apt-get source' +alias app='apt-cache policy' + +# superuser operations ###################################################### +if [[ $use_sudo -eq 1 ]]; then +# commands using sudo ####### + alias aac="sudo $apt_pref autoclean" + alias abd="sudo $apt_pref build-dep" + alias ac="sudo $apt_pref clean" + alias ad="sudo $apt_pref update" + alias adg="sudo $apt_pref update && sudo $apt_pref $apt_upgr" + alias adu="sudo $apt_pref update && sudo $apt_pref dist-upgrade" + alias afu="sudo apt-file update" + alias au="sudo $apt_pref $apt_upgr" + alias ai="sudo $apt_pref install" + # Install all packages given on the command line while using only the first word of each line: + # acse ... | ail + + alias ail="sed -e 's/ */ /g' -e 's/ *//' | cut -s -d ' ' -f 1 | xargs sudo $apt_pref install" + alias ap="sudo $apt_pref purge" + alias aar="sudo $apt_pref autoremove" + + # apt-get only + alias ads="sudo apt-get dselect-upgrade" + + # apt only + alias alu="sudo apt update && apt list -u && sudo apt upgrade" + + # Install all .deb files in the current directory. + # Warning: you will need to put the glob in single quotes if you use: + # glob_subst + alias dia="sudo dpkg -i ./*.deb" + alias di="sudo dpkg -i" + + # Remove ALL kernel images and headers EXCEPT the one in use + alias kclean='sudo aptitude remove -P "?and(~i~nlinux-(ima|hea) ?not(~n$(uname -r)))"' + + +# commands using su ######### +else + alias aac="su -ls '$apt_pref autoclean' root" + function abd() { + cmd="su -lc '$apt_pref build-dep $@' root" + print "$cmd" + eval "$cmd" + } + alias ac="su -ls '$apt_pref clean' root" + alias ad="su -lc '$apt_pref update' root" + alias adg="su -lc '$apt_pref update && aptitude $apt_upgr' root" + alias adu="su -lc '$apt_pref update && aptitude dist-upgrade' root" + alias afu="su -lc '$apt-file update'" + alias au="su -lc '$apt_pref $apt_upgr' root" + function ai() { + cmd="su -lc '$apt_pref install $@' root" + print "$cmd" + eval "$cmd" + } + function ap() { + cmd="su -lc '$apt_pref purge $@' root" + print "$cmd" + eval "$cmd" + } + function aar() { + cmd="su -lc '$apt_pref autoremove $@' root" + print "$cmd" + eval "$cmd" + } + # Install all .deb files in the current directory + # Assumes glob_subst is off + alias dia='su -lc "dpkg -i ./*.deb" root' + alias di='su -lc "dpkg -i" root' + + # Remove ALL kernel images and headers EXCEPT the one in use + alias kclean='su -lc "aptitude remove -P \"?and(~i~nlinux-(ima|hea) ?not(~n$(uname -r)))\"" root' +fi + +# Completion ################################################################ + +# +# Registers a compdef for $1 that calls $apt_pref with the commands $2 +# To do that it creates a new completion function called _apt_pref_$2 +# +function apt_pref_compdef() { + local f fb + f="_apt_pref_${2}" + + eval "function ${f}() { + shift words; + service=\"\$apt_pref\"; + words=(\"\$apt_pref\" '$2' \$words); + ((CURRENT++)) + test \"\${apt_pref}\" = 'aptitude' && _aptitude || _apt + }" + + compdef "$f" "$1" +} + +apt_pref_compdef aac "autoclean" +apt_pref_compdef abd "build-dep" +apt_pref_compdef ac "clean" +apt_pref_compdef ad "update" +apt_pref_compdef afu "update" +apt_pref_compdef au "$apt_upgr" +apt_pref_compdef ai "install" +apt_pref_compdef ail "install" +apt_pref_compdef ap "purge" +apt_pref_compdef aar "autoremove" +apt_pref_compdef ads "dselect-upgrade" + +# Misc. ##################################################################### +# print all installed packages +alias allpkgs='aptitude search -F "%p" --disable-columns ~i' + +# Create a basic .deb package +alias mydeb='time dpkg-buildpackage -rfakeroot -us -uc' + + +# Functions ################################################################# +# create a simple script that can be used to 'duplicate' a system +function apt-copy() { + print '#!/bin/sh'"\n" > apt-copy.sh + + cmd='$apt_pref install' + + for p in ${(f)"$(aptitude search -F "%p" --disable-columns \~i)"}; { + cmd="${cmd} ${p}" + } + + print $cmd "\n" >> apt-copy.sh + + chmod +x apt-copy.sh +} + +# Prints apt history +# Usage: +# apt-history install +# apt-history upgrade +# apt-history remove +# apt-history rollback +# apt-history list +# Based On: https://linuxcommando.blogspot.com/2008/08/how-to-show-apt-log-history.html +function apt-history() { + case "$1" in + install) + zgrep --no-filename 'install ' $(ls -rt /var/log/dpkg*) + ;; + upgrade|remove) + zgrep --no-filename $1 $(ls -rt /var/log/dpkg*) + ;; + rollback) + zgrep --no-filename upgrade $(ls -rt /var/log/dpkg*) | \ + grep "$2" -A10000000 | \ + grep "$3" -B10000000 | \ + awk '{print $4"="$5}' + ;; + list) + zgrep --no-filename '' $(ls -rt /var/log/dpkg*) + ;; + *) + echo "Parameters:" + echo " install - Lists all packages that have been installed." + echo " upgrade - Lists all packages that have been upgraded." + echo " remove - Lists all packages that have been removed." + echo " rollback - Lists rollback information." + echo " list - Lists all contains of dpkg logs." + ;; + esac +} + +# Kernel-package building shortcut +function kerndeb() { + # temporarily unset MAKEFLAGS ( '-j3' will fail ) + MAKEFLAGS=$( print - $MAKEFLAGS | perl -pe 's/-j\s*[\d]+//g' ) + print '$MAKEFLAGS set to '"'$MAKEFLAGS'" + appendage='-custom' # this shows up in $(uname -r ) + revision=$(date +"%Y%m%d") # this shows up in the .deb file name + + make-kpkg clean + + time fakeroot make-kpkg --append-to-version "$appendage" --revision \ + "$revision" kernel_image kernel_headers +} + +# List packages by size +function apt-list-packages() { + dpkg-query -W --showformat='${Installed-Size} ${Package} ${Status}\n' | \ + grep -v deinstall | \ + sort -n | \ + awk '{print $1" "$2}' +} diff --git a/dot_oh-my-zsh/plugins/deno/README.md b/dot_oh-my-zsh/plugins/deno/README.md new file mode 100644 index 0000000..6913183 --- /dev/null +++ b/dot_oh-my-zsh/plugins/deno/README.md @@ -0,0 +1,19 @@ +# Deno Plugin + +This plugin sets up completion and aliases for [Deno](https://deno.land). + +## Aliases + +| Alias | Full command | +| ----- | ---------------- | +| db | deno bundle | +| dc | deno compile | +| dca | deno cache | +| dfmt | deno fmt | +| dh | deno help | +| dli | deno lint | +| drn | deno run | +| drA | deno run -A | +| drw | deno run --watch | +| dts | deno test | +| dup | deno upgrade | diff --git a/dot_oh-my-zsh/plugins/deno/deno.plugin.zsh b/dot_oh-my-zsh/plugins/deno/deno.plugin.zsh new file mode 100644 index 0000000..7708f84 --- /dev/null +++ b/dot_oh-my-zsh/plugins/deno/deno.plugin.zsh @@ -0,0 +1,27 @@ +# ALIASES +alias db='deno bundle' +alias dc='deno compile' +alias dca='deno cache' +alias dfmt='deno fmt' +alias dh='deno help' +alias dli='deno lint' +alias drn='deno run' +alias drA='deno run -A' +alias drw='deno run --watch' +alias dts='deno test' +alias dup='deno upgrade' + +# COMPLETION FUNCTION +if (( ! $+commands[deno] )); then + return +fi + +# If the completion file doesn't exist yet, we need to autoload it and +# bind it to `deno`. Otherwise, compinit will have already done that. +if [[ ! -f "$ZSH_CACHE_DIR/completions/_deno" ]]; then + typeset -g -A _comps + autoload -Uz _deno + _comps[deno]=_deno +fi + +deno completions zsh >| "$ZSH_CACHE_DIR/completions/_deno" &| diff --git a/dot_oh-my-zsh/plugins/dircycle/README.md b/dot_oh-my-zsh/plugins/dircycle/README.md new file mode 100644 index 0000000..3c9b3a9 --- /dev/null +++ b/dot_oh-my-zsh/plugins/dircycle/README.md @@ -0,0 +1,78 @@ +# dircycle + +Plugin for cycling through the directory stack + +This plugin enables directory navigation similar to using back and forward on browsers or common file explorers like Finder or Nautilus. It uses a small zle trick that lets you cycle through your directory stack left or right using Ctrl + Shift + Left / Right . This is useful when moving back and forth between directories in development environments, and can be thought of as kind of a nondestructive pushd/popd. + +## Enabling the plugin + +1. Open your `.zshrc` file and add `dircycle` in the plugins section: + + ```zsh + plugins=( + # all your enabled plugins + dircycle + ) + ``` + +2. Restart the shell or restart your Terminal session: + + ```console + $ exec zsh + $ + ``` + +## Usage Examples + +Say you opened these directories on the terminal: + +```console +~$ cd Projects +~/Projects$ cd Hacktoberfest +~/Projects/Hacktoberfest$ cd oh-my-zsh +~/Projects/Hacktoberfest/oh-my-zsh$ dirs -v +0 ~/Projects/Hacktoberfest/oh-my-zsh +1 ~/Projects/Hacktoberfest +2 ~/Projects +3 ~ +``` + +By pressing Ctrl + Shift + Left, the current working directory or `$CWD` will be from `oh-my-zsh` to `Hacktoberfest`. Press it again and it will be at `Projects`. + +And by pressing Ctrl + Shift + Right, the `$CWD` will be from `Projects` to `Hacktoberfest`. Press it again and it will be at `oh-my-zsh`. + +Here's a example history table with the same accessed directories like above: + +| Current `$CWD` | Key press | New `$CWD` | +| --------------- | ----------------------------------------------------- | --------------- | +| `oh-my-zsh` | Ctrl + Shift + Left | `Hacktoberfest` | +| `Hacktoberfest` | Ctrl + Shift + Left | `Projects` | +| `Projects` | Ctrl + Shift + Left | `~` | +| `~` | Ctrl + Shift + Right | `Projects` | +| `Projects` | Ctrl + Shift + Right | `Hacktoberfest` | +| `Hacktoberfest` | Ctrl + Shift + Right | `oh-my-zsh` | +| `oh-my-zsh` | Ctrl + Shift + Right | `~` | + +Note the last traversal, when pressing Ctrl + Shift + Right on a last known `$CWD`, it will change back to the first known `$CWD`, which in the example is `~`. + +Here's an asciinema cast demonstrating the example above: + +[![asciicast](https://asciinema.org/a/204406.png)](https://asciinema.org/a/204406) + +## Functions + +| Function | Description | +| -------------------- | --------------------------------------------------------------------------------------------------------- | +| `insert-cycledleft` | Change `$CWD` to the previous known stack, binded on Ctrl + Shift + Left | +| `insert-cycledright` | Change `$CWD` to the next known stack, binded on Ctrl + Shift + Right | + +## Rebinding keys + +You can bind these functions to other key sequences, as long as you know the bindkey sequence. For example, these commands bind to Alt + Shift + Left / Right in `xterm-256color`: + +```zsh +bindkey '^[[1;4D' insert-cycledleft +bindkey '^[[1;4C' insert-cycledright +``` + +You can get the bindkey sequence by pressing Ctrl + V, then pressing the keyboard shortcut you want to use. diff --git a/dot_oh-my-zsh/plugins/dircycle/dircycle.plugin.zsh b/dot_oh-my-zsh/plugins/dircycle/dircycle.plugin.zsh new file mode 100644 index 0000000..bb69f6b --- /dev/null +++ b/dot_oh-my-zsh/plugins/dircycle/dircycle.plugin.zsh @@ -0,0 +1,54 @@ +# enables cycling through the directory stack using +# Ctrl+Shift+Left/Right +# +# left/right direction follows the order in which directories +# were visited, like left/right arrows do in a browser + +# NO_PUSHD_MINUS syntax: +# pushd +N: start counting from left of `dirs' output +# pushd -N: start counting from right of `dirs' output + +switch-to-dir () { + setopt localoptions nopushdminus + [[ ${#dirstack} -eq 0 ]] && return 1 + + while ! builtin pushd -q $1 &>/dev/null; do + # We found a missing directory: pop it out of the dir stack + builtin popd -q $1 + + # Stop trying if there are no more directories in the dir stack + [[ ${#dirstack} -eq 0 ]] && return 1 + done +} + +insert-cycledleft () { + switch-to-dir +1 || return + + local fn + for fn (chpwd $chpwd_functions precmd $precmd_functions); do + (( $+functions[$fn] )) && $fn + done + zle reset-prompt +} +zle -N insert-cycledleft + +insert-cycledright () { + switch-to-dir -0 || return + + local fn + for fn (chpwd $chpwd_functions precmd $precmd_functions); do + (( $+functions[$fn] )) && $fn + done + zle reset-prompt +} +zle -N insert-cycledright + + +# These sequences work for xterm, Apple Terminal.app, and probably others. +# Not for rxvt-unicode, but it doesn't seem differentiate Ctrl-Shift-Arrow +# from plain Shift-Arrow, at least by default. +# iTerm2 does not have these key combinations defined by default; you will need +# to add them under "Keys" in your profile if you want to use this. You can do +# this conveniently by loading the "xterm with Numeric Keypad" preset. +bindkey "\e[1;6D" insert-cycledleft +bindkey "\e[1;6C" insert-cycledright diff --git a/dot_oh-my-zsh/plugins/direnv/README.md b/dot_oh-my-zsh/plugins/direnv/README.md new file mode 100644 index 0000000..8deaf38 --- /dev/null +++ b/dot_oh-my-zsh/plugins/direnv/README.md @@ -0,0 +1,15 @@ +# direnv plugin + +This plugin creates the [Direnv](https://direnv.net/) hook. + +To use it, add `direnv` to the plugins array in your zshrc file: + +```zsh +plugins=(... direnv) +``` + +## Requirements + +In order to make this work, you will need to have the direnv installed. + +More info on the usage and install: https://github.com/direnv/direnv diff --git a/dot_oh-my-zsh/plugins/direnv/direnv.plugin.zsh b/dot_oh-my-zsh/plugins/direnv/direnv.plugin.zsh new file mode 100644 index 0000000..5e32c4c --- /dev/null +++ b/dot_oh-my-zsh/plugins/direnv/direnv.plugin.zsh @@ -0,0 +1,16 @@ +# Don't continue if direnv is not found +command -v direnv &>/dev/null || return + +_direnv_hook() { + trap -- '' SIGINT; + eval "$(direnv export zsh)"; + trap - SIGINT; +} +typeset -ag precmd_functions; +if [[ -z ${precmd_functions[(r)_direnv_hook]} ]]; then + precmd_functions=( _direnv_hook ${precmd_functions[@]} ) +fi +typeset -ag chpwd_functions; +if [[ -z ${chpwd_functions[(r)_direnv_hook]} ]]; then + chpwd_functions=( _direnv_hook ${chpwd_functions[@]} ) +fi diff --git a/dot_oh-my-zsh/plugins/dirhistory/README.md b/dot_oh-my-zsh/plugins/dirhistory/README.md new file mode 100644 index 0000000..ede9b54 --- /dev/null +++ b/dot_oh-my-zsh/plugins/dirhistory/README.md @@ -0,0 +1,62 @@ +# Dirhistory plugin + +This plugin adds keyboard shortcuts for navigating directory history and hierarchy. + +To use it, add `dirhistory` to the plugins array in your zshrc file: + +```zsh +plugins=(... dirhistory) +``` + +## Keyboard Shortcuts + +| Shortcut | Description | +|-----------------------------------|-----------------------------------------------------------| +| Alt + Left | Go to previous directory | +| Alt + Right | Go to next directory | +| Alt + Up | Move into the parent directory | +| Alt + Down | Move into the first child directory by alphabetical order | + +**For macOS: use the Option key () instead of Alt**. + +> NOTE: some terminals might override the Alt + Arrows key bindings (e.g. Windows Terminal). +> If these don't work check your terminal settings and change them to a different keyboard shortcut. + +## Usage + +This plugin allows you to navigate the history of previous working directories using Alt + Left +and Alt + Right. Alt + Left moves to past directories, and +Alt + Right goes back to recent directories. + +**NOTE: the maximum directory history size is 30.** + +You can also navigate **directory hierarchies** using Alt + Up and Alt + Down. +Alt + Up moves to the parent directory, while Alt + Down moves into the first +child directory found in alphabetical order (useful to navigate long empty directories, e.g. Java packages). + +For example, if the shell was started, and the following commands were entered: + +```shell +cd ~ +cd /usr +cd share +cd doc +``` + +the directory stack (`dirs -v`) would look like this: + +```console +$ dirs -v +0 /usr/share/doc +1 /usr/share +2 /usr +3 ~ +``` + +then entering Alt + Left at the prompt would change directory from `/usr/share/doc` to `/usr/share`, +then if pressed again to `/usr`, then `~`. If Alt + Right were pressed the directory would be changed +to `/usr` again. + +After that, Alt + Down will probably go to `/usr/bin` if `bin` is the first directory in alphabetical +order (depends on your `/usr` folder structure). Alt + Up will return to `/usr`, and once more will get +you to the root folder (`/`). diff --git a/dot_oh-my-zsh/plugins/dirhistory/dirhistory.plugin.zsh b/dot_oh-my-zsh/plugins/dirhistory/dirhistory.plugin.zsh new file mode 100644 index 0000000..7021fc0 --- /dev/null +++ b/dot_oh-my-zsh/plugins/dirhistory/dirhistory.plugin.zsh @@ -0,0 +1,221 @@ +## +# Navigate directory history using ALT-LEFT and ALT-RIGHT. ALT-LEFT moves back to directories +# that the user has changed to in the past, and ALT-RIGHT undoes ALT-LEFT. +# +# Navigate directory hierarchy using ALT-UP and ALT-DOWN. +# ALT-UP moves to higher hierarchy (cd ..) +# ALT-DOWN moves into the first directory found in alphabetical order +# + +dirhistory_past=($PWD) +dirhistory_future=() +export dirhistory_past +export dirhistory_future + +export DIRHISTORY_SIZE=30 + +# Pop the last element of dirhistory_past. +# Pass the name of the variable to return the result in. +# Returns the element if the array was not empty, +# otherwise returns empty string. +function pop_past() { + typeset -g $1="${dirhistory_past[$#dirhistory_past]}" + if [[ $#dirhistory_past -gt 0 ]]; then + dirhistory_past[$#dirhistory_past]=() + fi +} + +function pop_future() { + typeset -g $1="${dirhistory_future[$#dirhistory_future]}" + if [[ $#dirhistory_future -gt 0 ]]; then + dirhistory_future[$#dirhistory_future]=() + fi +} + +# Push a new element onto the end of dirhistory_past. If the size of the array +# is >= DIRHISTORY_SIZE, the array is shifted +function push_past() { + if [[ $#dirhistory_past -ge $DIRHISTORY_SIZE ]]; then + shift dirhistory_past + fi + if [[ $#dirhistory_past -eq 0 || $dirhistory_past[$#dirhistory_past] != "$1" ]]; then + dirhistory_past+=($1) + fi +} + +function push_future() { + if [[ $#dirhistory_future -ge $DIRHISTORY_SIZE ]]; then + shift dirhistory_future + fi + if [[ $#dirhistory_future -eq 0 || $dirhistory_futuret[$#dirhistory_future] != "$1" ]]; then + dirhistory_future+=($1) + fi +} + +# Called by zsh when directory changes +autoload -U add-zsh-hook +add-zsh-hook chpwd chpwd_dirhistory +function chpwd_dirhistory() { + push_past $PWD + # If DIRHISTORY_CD is not set... + if [[ -z "${DIRHISTORY_CD+x}" ]]; then + # ... clear future. + dirhistory_future=() + fi +} + +function dirhistory_cd(){ + DIRHISTORY_CD="1" + cd $1 + unset DIRHISTORY_CD +} + +# Move backward in directory history +function dirhistory_back() { + local cw="" + local d="" + # Last element in dirhistory_past is the cwd. + + pop_past cw + if [[ "" == "$cw" ]]; then + # Someone overwrote our variable. Recover it. + dirhistory_past=($PWD) + return + fi + + pop_past d + if [[ "" != "$d" ]]; then + dirhistory_cd $d + push_future $cw + else + push_past $cw + fi +} + + +# Move forward in directory history +function dirhistory_forward() { + local d="" + + pop_future d + if [[ "" != "$d" ]]; then + dirhistory_cd $d + push_past $d + fi +} + + +# Bind keys to history navigation +function dirhistory_zle_dirhistory_back() { + # Erase current line in buffer + zle .kill-buffer + dirhistory_back + zle .accept-line +} + +function dirhistory_zle_dirhistory_future() { + # Erase current line in buffer + zle .kill-buffer + dirhistory_forward + zle .accept-line +} + +zle -N dirhistory_zle_dirhistory_back +zle -N dirhistory_zle_dirhistory_future + +for keymap in emacs vicmd viins; do + # dirhistory_back + bindkey -M $keymap "\e[3D" dirhistory_zle_dirhistory_back # xterm in normal mode + bindkey -M $keymap "\e[1;3D" dirhistory_zle_dirhistory_back # xterm in normal mode + bindkey -M $keymap "\e\e[D" dirhistory_zle_dirhistory_back # Putty + bindkey -M $keymap "\eO3D" dirhistory_zle_dirhistory_back # GNU screen + + case "$TERM_PROGRAM" in + Apple_Terminal) bindkey -M $keymap "^[b" dirhistory_zle_dirhistory_back ;; # Terminal.app + iTerm.app) bindkey -M $keymap "^[^[[D" dirhistory_zle_dirhistory_back ;; # iTerm2 + esac + + if (( ${+terminfo[kcub1]} )); then + bindkey -M $keymap "^[${terminfo[kcub1]}" dirhistory_zle_dirhistory_back # urxvt + fi + + # dirhistory_future + bindkey -M $keymap "\e[3C" dirhistory_zle_dirhistory_future # xterm in normal mode + bindkey -M $keymap "\e[1;3C" dirhistory_zle_dirhistory_future # xterm in normal mode + bindkey -M $keymap "\e\e[C" dirhistory_zle_dirhistory_future # Putty + bindkey -M $keymap "\eO3C" dirhistory_zle_dirhistory_future # GNU screen + + case "$TERM_PROGRAM" in + Apple_Terminal) bindkey -M $keymap "^[f" dirhistory_zle_dirhistory_future ;; # Terminal.app + iTerm.app) bindkey -M $keymap "^[^[[C" dirhistory_zle_dirhistory_future ;; # iTerm2 + esac + + if (( ${+terminfo[kcuf1]} )); then + bindkey -M $keymap "^[${terminfo[kcuf1]}" dirhistory_zle_dirhistory_future # urxvt + fi +done + +# +# HIERARCHY Implemented in this section, in case someone wants to split it to another plugin if it clashes bindings +# + +# Move up in hierarchy +function dirhistory_up() { + cd .. || return 1 +} + +# Move down in hierarchy +function dirhistory_down() { + cd "$(find . -mindepth 1 -maxdepth 1 -type d | sort -n | head -n 1)" || return 1 +} + + +# Bind keys to hierarchy navigation +function dirhistory_zle_dirhistory_up() { + zle .kill-buffer # Erase current line in buffer + dirhistory_up + zle .accept-line +} + +function dirhistory_zle_dirhistory_down() { + zle .kill-buffer # Erase current line in buffer + dirhistory_down + zle .accept-line +} + +zle -N dirhistory_zle_dirhistory_up +zle -N dirhistory_zle_dirhistory_down + +for keymap in emacs vicmd viins; do + # dirhistory_up + bindkey -M $keymap "\e[3A" dirhistory_zle_dirhistory_up # xterm in normal mode + bindkey -M $keymap "\e[1;3A" dirhistory_zle_dirhistory_up # xterm in normal mode + bindkey -M $keymap "\e\e[A" dirhistory_zle_dirhistory_up # Putty + bindkey -M $keymap "\eO3A" dirhistory_zle_dirhistory_up # GNU screen + + case "$TERM_PROGRAM" in + Apple_Terminal) bindkey -M $keymap "^[[A" dirhistory_zle_dirhistory_up ;; # Terminal.app + iTerm.app) bindkey -M $keymap "^[^[[A" dirhistory_zle_dirhistory_up ;; # iTerm2 + esac + + if (( ${+terminfo[kcuu1]} )); then + bindkey -M $keymap "^[${terminfo[kcuu1]}" dirhistory_zle_dirhistory_up # urxvt + fi + + # dirhistory_down + bindkey -M $keymap "\e[3B" dirhistory_zle_dirhistory_down # xterm in normal mode + bindkey -M $keymap "\e[1;3B" dirhistory_zle_dirhistory_down # xterm in normal mode + bindkey -M $keymap "\e\e[B" dirhistory_zle_dirhistory_down # Putty + bindkey -M $keymap "\eO3B" dirhistory_zle_dirhistory_down # GNU screen + + case "$TERM_PROGRAM" in + Apple_Terminal) bindkey -M $keymap "^[[B" dirhistory_zle_dirhistory_down ;; # Terminal.app + iTerm.app) bindkey -M $keymap "^[^[[B" dirhistory_zle_dirhistory_down ;; # iTerm2 + esac + + if (( ${+terminfo[kcud1]} )); then + bindkey -M $keymap "^[${terminfo[kcud1]}" dirhistory_zle_dirhistory_down # urxvt + fi +done + +unset keymap diff --git a/dot_oh-my-zsh/plugins/dirpersist/README.md b/dot_oh-my-zsh/plugins/dirpersist/README.md new file mode 100644 index 0000000..792fb4b --- /dev/null +++ b/dot_oh-my-zsh/plugins/dirpersist/README.md @@ -0,0 +1,10 @@ +# Dirpersist plugin + +This plugin keeps a running tally of the previous 20 unique directories in the `$HOME/.zdirs` file. +When you cd to a new directory, it is prepended to the beginning of the file. + +To use it, add `dirpersist` to the plugins array in your zshrc file: + +```zsh +plugins=(... dirpersist) +``` diff --git a/dot_oh-my-zsh/plugins/dirpersist/dirpersist.plugin.zsh b/dot_oh-my-zsh/plugins/dirpersist/dirpersist.plugin.zsh new file mode 100644 index 0000000..daadc38 --- /dev/null +++ b/dot_oh-my-zsh/plugins/dirpersist/dirpersist.plugin.zsh @@ -0,0 +1,21 @@ +# Save dirstack history to .zdirs +# adapted from: +# github.com/grml/grml-etc-core/blob/master/etc/zsh/zshrc#L1547 + +DIRSTACKSIZE=${DIRSTACKSIZE:-20} +dirstack_file=${dirstack_file:-${HOME}/.zdirs} + +if [[ -f ${dirstack_file} ]] && [[ ${#dirstack[*]} -eq 0 ]] ; then + dirstack=( ${(f)"$(< $dirstack_file)"} ) + # "cd -" won't work after login by just setting $OLDPWD, so + [[ -d $dirstack[1] ]] && cd $dirstack[1] && cd $OLDPWD +fi + +autoload -U add-zsh-hook +add-zsh-hook chpwd chpwd_dirpersist +chpwd_dirpersist() { + if (( $DIRSTACKSIZE <= 0 )) || [[ -z $dirstack_file ]]; then return; fi + local -ax my_stack + my_stack=( ${PWD} ${dirstack} ) + builtin print -l ${(u)my_stack} >! ${dirstack_file} +} diff --git a/dot_oh-my-zsh/plugins/dnf/README.md b/dot_oh-my-zsh/plugins/dnf/README.md new file mode 100644 index 0000000..dc0d1e0 --- /dev/null +++ b/dot_oh-my-zsh/plugins/dnf/README.md @@ -0,0 +1,29 @@ +# dnf plugin + +This plugin makes `dnf` usage easier by adding aliases for the most common commands. + +`dnf` is the new package manager for RPM-based distributions, which replaces `yum`. + +To use it, add `dnf` to the plugins array in your zshrc file: + +```zsh +plugins=(... dnf) +``` + +## Aliases + +| Alias | Command | Description | +|-------|-------------------------|--------------------------| +| dnfl | `dnf list` | List packages | +| dnfli | `dnf list installed` | List installed packages | +| dnfgl | `dnf grouplist` | List package groups | +| dnfmc | `dnf makecache` | Generate metadata cache | +| dnfp | `dnf info` | Show package information | +| dnfs | `dnf search` | Search package | +| **Use `sudo`** | +| dnfu | `sudo dnf upgrade` | Upgrade package | +| dnfi | `sudo dnf install` | Install package | +| dnfgi | `sudo dnf groupinstall` | Install package group | +| dnfr | `sudo dnf remove` | Remove package | +| dnfgr | `sudo dnf groupremove` | Remove package group | +| dnfc | `sudo dnf clean all` | Clean cache | diff --git a/dot_oh-my-zsh/plugins/dnf/dnf.plugin.zsh b/dot_oh-my-zsh/plugins/dnf/dnf.plugin.zsh new file mode 100644 index 0000000..653ce7d --- /dev/null +++ b/dot_oh-my-zsh/plugins/dnf/dnf.plugin.zsh @@ -0,0 +1,15 @@ +## Aliases + +alias dnfl="dnf list" # List packages +alias dnfli="dnf list installed" # List installed packages +alias dnfgl="dnf grouplist" # List package groups +alias dnfmc="dnf makecache" # Generate metadata cache +alias dnfp="dnf info" # Show package information +alias dnfs="dnf search" # Search package + +alias dnfu="sudo dnf upgrade" # Upgrade package +alias dnfi="sudo dnf install" # Install package +alias dnfgi="sudo dnf groupinstall" # Install package group +alias dnfr="sudo dnf remove" # Remove package +alias dnfgr="sudo dnf groupremove" # Remove package group +alias dnfc="sudo dnf clean all" # Clean cache diff --git a/dot_oh-my-zsh/plugins/dnote/README.md b/dot_oh-my-zsh/plugins/dnote/README.md new file mode 100644 index 0000000..7b41b90 --- /dev/null +++ b/dot_oh-my-zsh/plugins/dnote/README.md @@ -0,0 +1,51 @@ +# Dnote Plugin + +This plugin adds auto-completion for [Dnote](https://www.getdnote.com/), a simple command line notebook. + +To use it, add `dnote` to the plugins array in your zshrc file: + +```zsh +plugins=(dnote) +``` + +## Usage + +At the basic level, this plugin completes all Dnote commands. + +```zsh +$ dnote a(press here) +``` + +would result in: + +```zsh +$ dnote add +``` + +For some commands, this plugin dynamically suggests matching book names. + +For instance, if you have three books that begin with 'j': 'javascript', 'job', 'js', + +```zsh +$ dnote view j(press here) +``` + +would result in: + +```zsh +$ dnote v j +javascript job js +``` + +As another example, + +```zsh +$ dnote edit ja(press here) +``` + +would result in: + + +```zsh +$ dnote v javascript +`````` diff --git a/dot_oh-my-zsh/plugins/dnote/_dnote b/dot_oh-my-zsh/plugins/dnote/_dnote new file mode 100644 index 0000000..c8b3348 --- /dev/null +++ b/dot_oh-my-zsh/plugins/dnote/_dnote @@ -0,0 +1,39 @@ +#compdef dnote + +local -a _1st_arguments + +_1st_arguments=( + 'add:add a new note' + 'view:list books, notes, or view a content' + 'edit:edit a note or a book' + 'remove:remove a note or a book' + 'find:find notes by keywords' + 'sync:sync data with the server' + 'login:login to the dnote server' + 'logout:logout from the dnote server' + 'version:print the current version' + 'help:get help about any command' +) + +get_booknames() { + local names=$(dnote view --name-only) + local -a ret + + while read -r line; do + ret+=("${line}") + done <<< "$names" + + echo "$ret" +} + +if (( CURRENT == 2 )); then + _describe -t commands "dnote subcommand" _1st_arguments + return +elif (( CURRENT == 3 )); then + case "$words[2]" in + v|view|a|add) + _alternative \ + "names:book names:($(get_booknames))" + esac +fi + diff --git a/dot_oh-my-zsh/plugins/docker-compose/README.md b/dot_oh-my-zsh/plugins/docker-compose/README.md new file mode 100644 index 0000000..bbcff2e --- /dev/null +++ b/dot_oh-my-zsh/plugins/docker-compose/README.md @@ -0,0 +1,33 @@ +# Docker-compose + +This plugin provides completion for [docker-compose](https://docs.docker.com/compose/) as well as some +aliases for frequent docker-compose commands. + +To use it, add docker-compose to the plugins array of your zshrc file: + +```zsh +plugins=(... docker-compose) +``` + +## Aliases + +| Alias | Command | Description | +|-----------|--------------------------------|----------------------------------------------------------------------------------| +| dco | `docker-compose` | Docker-compose main command | +| dcb | `docker-compose build` | Build containers | +| dce | `docker-compose exec` | Execute command inside a container | +| dcps | `docker-compose ps` | List containers | +| dcrestart | `docker-compose restart` | Restart container | +| dcrm | `docker-compose rm` | Remove container | +| dcr | `docker-compose run` | Run a command in container | +| dcstop | `docker-compose stop` | Stop a container | +| dcup | `docker-compose up` | Build, (re)create, start, and attach to containers for a service | +| dcupb | `docker-compose up --build` | Same as `dcup`, but build images before starting containers | +| dcupd | `docker-compose up -d` | Same as `dcup`, but starts as daemon | +| dcupdb | `docker-compose up -d --build` | Same as `dcup`, but build images before starting containers and starts as daemon | +| dcdn | `docker-compose down` | Stop and remove containers | +| dcl | `docker-compose logs` | Show logs of container | +| dclf | `docker-compose logs -f` | Show logs and follow output | +| dcpull | `docker-compose pull` | Pull image of a service | +| dcstart | `docker-compose start` | Start a container | +| dck | `docker-compose kill` | Kills containers | diff --git a/dot_oh-my-zsh/plugins/docker-compose/_docker-compose b/dot_oh-my-zsh/plugins/docker-compose/_docker-compose new file mode 100644 index 0000000..c6b7335 --- /dev/null +++ b/dot_oh-my-zsh/plugins/docker-compose/_docker-compose @@ -0,0 +1,421 @@ +#compdef docker-compose + +# Description +# ----------- +# zsh completion for docker-compose +# ------------------------------------------------------------------------- +# Authors +# ------- +# * Steve Durrheimer +# ------------------------------------------------------------------------- +# Inspiration +# ----------- +# * @albers docker-compose bash completion script +# * @felixr docker zsh completion script : https://github.com/felixr/docker-zsh-completion +# ------------------------------------------------------------------------- + +__docker-compose_q() { + docker-compose 2>/dev/null $compose_options "$@" +} + +# All services defined in docker-compose.yml +__docker-compose_all_services_in_compose_file() { + local already_selected + local -a services + already_selected=$(echo $words | tr " " "|") + __docker-compose_q ps --services "$@" \ + | grep -Ev "^(${already_selected})$" +} + +# All services, even those without an existing container +__docker-compose_services_all() { + [[ $PREFIX = -* ]] && return 1 + integer ret=1 + services=$(__docker-compose_all_services_in_compose_file "$@") + _alternative "args:services:($services)" && ret=0 + + return ret +} + +# All services that are defined by a Dockerfile reference +__docker-compose_services_from_build() { + [[ $PREFIX = -* ]] && return 1 + __docker-compose_services_all --filter source=build +} + +# All services that are defined by an image +__docker-compose_services_from_image() { + [[ $PREFIX = -* ]] && return 1 + __docker-compose_services_all --filter source=image +} + +__docker-compose_pausedservices() { + [[ $PREFIX = -* ]] && return 1 + __docker-compose_services_all --filter status=paused +} + +__docker-compose_stoppedservices() { + [[ $PREFIX = -* ]] && return 1 + __docker-compose_services_all --filter status=stopped +} + +__docker-compose_runningservices() { + [[ $PREFIX = -* ]] && return 1 + __docker-compose_services_all --filter status=running +} + +__docker-compose_services() { + [[ $PREFIX = -* ]] && return 1 + __docker-compose_services_all +} + +__docker-compose_caching_policy() { + oldp=( "$1"(Nmh+1) ) # 1 hour + (( $#oldp )) +} + +__docker-compose_commands() { + local cache_policy + + zstyle -s ":completion:${curcontext}:" cache-policy cache_policy + if [[ -z "$cache_policy" ]]; then + zstyle ":completion:${curcontext}:" cache-policy __docker-compose_caching_policy + fi + + if ( [[ ${+_docker_compose_subcommands} -eq 0 ]] || _cache_invalid docker_compose_subcommands) \ + && ! _retrieve_cache docker_compose_subcommands; + then + local -a lines + lines=(${(f)"$(_call_program commands docker-compose 2>&1)"}) + _docker_compose_subcommands=(${${${lines[$((${lines[(i)Commands:]} + 1)),${lines[(I) *]}]}## #}/ ##/:}) + (( $#_docker_compose_subcommands > 0 )) && _store_cache docker_compose_subcommands _docker_compose_subcommands + fi + _describe -t docker-compose-commands "docker-compose command" _docker_compose_subcommands +} + +__docker-compose_subcommand() { + local opts_help opts_force_recreate opts_no_recreate opts_no_build opts_remove_orphans opts_timeout opts_no_color opts_no_deps + + opts_help='(: -)--help[Print usage]' + opts_force_recreate="(--no-recreate)--force-recreate[Recreate containers even if their configuration and image haven't changed. Incompatible with --no-recreate.]" + opts_no_recreate="(--force-recreate)--no-recreate[If containers already exist, don't recreate them. Incompatible with --force-recreate.]" + opts_no_build="(--build)--no-build[Don't build an image, even if it's missing.]" + opts_remove_orphans="--remove-orphans[Remove containers for services not defined in the Compose file]" + opts_timeout=('(-t --timeout)'{-t,--timeout}"[Specify a shutdown timeout in seconds. (default: 10)]:seconds: ") + opts_no_color='--no-color[Produce monochrome output.]' + opts_no_deps="--no-deps[Don't start linked services.]" + + integer ret=1 + + case "$words[1]" in + (build) + _arguments \ + $opts_help \ + "*--build-arg=[Set build-time variables for one service.]:=: " \ + '--force-rm[Always remove intermediate containers.]' \ + '(--quiet -q)'{--quiet,-q}'[Curb build output]' \ + '(--memory -m)'{--memory,-m}'[Memory limit for the build container.]' \ + '--no-cache[Do not use cache when building the image.]' \ + '--pull[Always attempt to pull a newer version of the image.]' \ + '--compress[Compress the build context using gzip.]' \ + '--parallel[Build images in parallel.]' \ + '*:services:__docker-compose_services_from_build' && ret=0 + ;; + (config) + _arguments \ + $opts_help \ + '(--quiet -q)'{--quiet,-q}"[Only validate the configuration, don't print anything.]" \ + '--resolve-image-digests[Pin image tags to digests.]' \ + '--services[Print the service names, one per line.]' \ + '--volumes[Print the volume names, one per line.]' \ + '--hash[Print the service config hash, one per line. Set "service1,service2" for a list of specified services.]' \ && ret=0 + ;; + (create) + _arguments \ + $opts_help \ + $opts_force_recreate \ + $opts_no_recreate \ + $opts_no_build \ + "(--no-build)--build[Build images before creating containers.]" \ + '*:services:__docker-compose_services' && ret=0 + ;; + (down) + _arguments \ + $opts_help \ + $opts_timeout \ + "--rmi[Remove images. Type must be one of: 'all': Remove all images used by any service. 'local': Remove only images that don't have a custom tag set by the \`image\` field.]:type:(all local)" \ + '(-v --volumes)'{-v,--volumes}"[Remove named volumes declared in the \`volumes\` section of the Compose file and anonymous volumes attached to containers.]" \ + $opts_remove_orphans && ret=0 + ;; + (events) + _arguments \ + $opts_help \ + '--json[Output events as a stream of json objects]' \ + '*:services:__docker-compose_services' && ret=0 + ;; + (exec) + _arguments \ + $opts_help \ + '-d[Detached mode: Run command in the background.]' \ + '--privileged[Give extended privileges to the process.]' \ + '(-u --user)'{-u,--user=}'[Run the command as this user.]:username:_users' \ + '-T[Disable pseudo-tty allocation. By default `docker-compose exec` allocates a TTY.]' \ + '--index=[Index of the container if there are multiple instances of a service \[default: 1\]]:index: ' \ + '*'{-e,--env}'[KEY=VAL Set an environment variable (can be used multiple times)]:environment variable KEY=VAL: ' \ + '(-w --workdir)'{-w,--workdir=}'[Working directory inside the container]:workdir: ' \ + '(-):running services:__docker-compose_runningservices' \ + '(-):command: _command_names -e' \ + '*::arguments: _normal' && ret=0 + ;; + (help) + _arguments ':subcommand:__docker-compose_commands' && ret=0 + ;; + (images) + _arguments \ + $opts_help \ + '-q[Only display IDs]' \ + '*:services:__docker-compose_services' && ret=0 + ;; + (kill) + _arguments \ + $opts_help \ + '-s[SIGNAL to send to the container. Default signal is SIGKILL.]:signal:_signals' \ + '*:running services:__docker-compose_runningservices' && ret=0 + ;; + (logs) + _arguments \ + $opts_help \ + '(-f --follow)'{-f,--follow}'[Follow log output]' \ + $opts_no_color \ + '--tail=[Number of lines to show from the end of the logs for each container.]:number of lines: ' \ + '(-t --timestamps)'{-t,--timestamps}'[Show timestamps]' \ + '*:services:__docker-compose_services' && ret=0 + ;; + (pause) + _arguments \ + $opts_help \ + '*:running services:__docker-compose_runningservices' && ret=0 + ;; + (port) + _arguments \ + $opts_help \ + '--protocol=[tcp or udp \[default: tcp\]]:protocol:(tcp udp)' \ + '--index=[index of the container if there are multiple instances of a service \[default: 1\]]:index: ' \ + '1:running services:__docker-compose_runningservices' \ + '2:port:_ports' && ret=0 + ;; + (ps) + _arguments \ + $opts_help \ + '-q[Only display IDs]' \ + '--filter KEY=VAL[Filter services by a property]:=:' \ + '*:services:__docker-compose_services' && ret=0 + ;; + (pull) + _arguments \ + $opts_help \ + '--ignore-pull-failures[Pull what it can and ignores images with pull failures.]' \ + '--no-parallel[Disable parallel pulling]' \ + '(-q --quiet)'{-q,--quiet}'[Pull without printing progress information]' \ + '--include-deps[Also pull services declared as dependencies]' \ + '*:services:__docker-compose_services_from_image' && ret=0 + ;; + (push) + _arguments \ + $opts_help \ + '--ignore-push-failures[Push what it can and ignores images with push failures.]' \ + '*:services:__docker-compose_services' && ret=0 + ;; + (rm) + _arguments \ + $opts_help \ + '(-f --force)'{-f,--force}"[Don't ask to confirm removal]" \ + '-v[Remove any anonymous volumes attached to containers]' \ + '*:stopped services:__docker-compose_stoppedservices' && ret=0 + ;; + (run) + _arguments \ + $opts_help \ + $opts_no_deps \ + '-d[Detached mode: Run container in the background, print new container name.]' \ + '*-e[KEY=VAL Set an environment variable (can be used multiple times)]:environment variable KEY=VAL: ' \ + '*'{-l,--label}'[KEY=VAL Add or override a label (can be used multiple times)]:label KEY=VAL: ' \ + '--entrypoint[Overwrite the entrypoint of the image.]:entry point: ' \ + '--name=[Assign a name to the container]:name: ' \ + '(-p --publish)'{-p,--publish=}"[Publish a container's port(s) to the host]" \ + '--rm[Remove container after run. Ignored in detached mode.]' \ + "--service-ports[Run command with the service's ports enabled and mapped to the host.]" \ + '-T[Disable pseudo-tty allocation. By default `docker-compose run` allocates a TTY.]' \ + '(-u --user)'{-u,--user=}'[Run as specified username or uid]:username or uid:_users' \ + '(-v --volume)*'{-v,--volume=}'[Bind mount a volume]:volume: ' \ + '(-w --workdir)'{-w,--workdir=}'[Working directory inside the container]:workdir: ' \ + "--use-aliases[Use the services network aliases in the network(s) the container connects to]" \ + '(-):services:__docker-compose_services' \ + '(-):command: _command_names -e' \ + '*::arguments: _normal' && ret=0 + ;; + (scale) + _arguments \ + $opts_help \ + $opts_timeout \ + '*:running services:__docker-compose_runningservices' && ret=0 + ;; + (start) + _arguments \ + $opts_help \ + '*:stopped services:__docker-compose_stoppedservices' && ret=0 + ;; + (stop|restart) + _arguments \ + $opts_help \ + $opts_timeout \ + '*:running services:__docker-compose_runningservices' && ret=0 + ;; + (top) + _arguments \ + $opts_help \ + '*:running services:__docker-compose_runningservices' && ret=0 + ;; + (unpause) + _arguments \ + $opts_help \ + '*:paused services:__docker-compose_pausedservices' && ret=0 + ;; + (up) + _arguments \ + $opts_help \ + '(--abort-on-container-exit)-d[Detached mode: Run containers in the background, print new container names. Incompatible with --abort-on-container-exit and --attach-dependencies.]' \ + $opts_no_color \ + $opts_no_deps \ + $opts_force_recreate \ + $opts_no_recreate \ + $opts_no_build \ + "(--no-build)--build[Build images before starting containers.]" \ + "(-d)--abort-on-container-exit[Stops all containers if any container was stopped. Incompatible with -d.]" \ + "(-d)--attach-dependencies[Attach to dependent containers. Incompatible with -d.]" \ + '(-t --timeout)'{-t,--timeout}"[Use this timeout in seconds for container shutdown when attached or when containers are already running. (default: 10)]:seconds: " \ + '--scale[SERVICE=NUM Scale SERVICE to NUM instances. Overrides the `scale` setting in the Compose file if present.]:service scale SERVICE=NUM: ' \ + '--exit-code-from=[Return the exit code of the selected service container. Implies --abort-on-container-exit]:service:__docker-compose_services' \ + $opts_remove_orphans \ + '*:services:__docker-compose_services' && ret=0 + ;; + (version) + _arguments \ + $opts_help \ + "--short[Shows only Compose's version number.]" && ret=0 + ;; + (*) + _message 'Unknown sub command' && ret=1 + ;; + esac + + return ret +} + +_docker-compose() { + # Support for subservices, which allows for `compdef _docker docker-shell=_docker_containers`. + # Based on /usr/share/zsh/functions/Completion/Unix/_git without support for `ret`. + if [[ $service != docker-compose ]]; then + _call_function - _$service + return + fi + + local curcontext="$curcontext" state line + integer ret=1 + typeset -A opt_args + + local file_description + + if [[ -n ${words[(r)-f]} || -n ${words[(r)--file]} ]] ; then + file_description="Specify an override docker-compose file (default: docker-compose.override.yml)" + else + file_description="Specify an alternate docker-compose file (default: docker-compose.yml)" + fi + + _arguments -C \ + '(- :)'{-h,--help}'[Get help]' \ + '*'{-f,--file}"[${file_description}]:file:_files -g '*.yml'" \ + '(-p --project-name)'{-p,--project-name}'[Specify an alternate project name (default: directory name)]:project name:' \ + '--env-file[Specify an alternate environment file (default: .env)]:env-file:_files' \ + "--compatibility[If set, Compose will attempt to convert keys in v3 files to their non-Swarm equivalent]" \ + '(- :)'{-v,--version}'[Print version and exit]' \ + '--verbose[Show more output]' \ + '--log-level=[Set log level]:level:(DEBUG INFO WARNING ERROR CRITICAL)' \ + '--no-ansi[Do not print ANSI control characters]' \ + '--ansi=[Control when to print ANSI control characters]:when:(never always auto)' \ + '(-H --host)'{-H,--host}'[Daemon socket to connect to]:host:' \ + '--tls[Use TLS; implied by --tlsverify]' \ + '--tlscacert=[Trust certs signed only by this CA]:ca path:' \ + '--tlscert=[Path to TLS certificate file]:client cert path:' \ + '--tlskey=[Path to TLS key file]:tls key path:' \ + '--tlsverify[Use TLS and verify the remote]' \ + "--skip-hostname-check[Don't check the daemon's hostname against the name specified in the client certificate (for example if your docker host is an IP address)]" \ + '(-): :->command' \ + '(-)*:: :->option-or-argument' && ret=0 + + local -a relevant_compose_flags relevant_compose_repeatable_flags relevant_docker_flags compose_options docker_options + + relevant_compose_flags=( + "--env-file" + "--file" "-f" + "--host" "-H" + "--project-name" "-p" + "--tls" + "--tlscacert" + "--tlscert" + "--tlskey" + "--tlsverify" + "--skip-hostname-check" + ) + + relevant_compose_repeatable_flags=( + "--file" "-f" + ) + + relevant_docker_flags=( + "--host" "-H" + "--tls" + "--tlscacert" + "--tlscert" + "--tlskey" + "--tlsverify" + ) + + for k in "${(@k)opt_args}"; do + if [[ -n "${relevant_docker_flags[(r)$k]}" ]]; then + docker_options+=$k + if [[ -n "$opt_args[$k]" ]]; then + docker_options+=$opt_args[$k] + fi + fi + if [[ -n "${relevant_compose_flags[(r)$k]}" ]]; then + if [[ -n "${relevant_compose_repeatable_flags[(r)$k]}" ]]; then + values=("${(@s/:/)opt_args[$k]}") + for value in $values + do + compose_options+=$k + compose_options+=$value + done + else + compose_options+=$k + if [[ -n "$opt_args[$k]" ]]; then + compose_options+=$opt_args[$k] + fi + fi + fi + done + + case $state in + (command) + __docker-compose_commands && ret=0 + ;; + (option-or-argument) + curcontext=${curcontext%:*:*}:docker-compose-$words[1]: + __docker-compose_subcommand && ret=0 + ;; + esac + + return ret +} + +_docker-compose "$@" diff --git a/dot_oh-my-zsh/plugins/docker-compose/docker-compose.plugin.zsh b/dot_oh-my-zsh/plugins/docker-compose/docker-compose.plugin.zsh new file mode 100644 index 0000000..7a8bf4a --- /dev/null +++ b/dot_oh-my-zsh/plugins/docker-compose/docker-compose.plugin.zsh @@ -0,0 +1,23 @@ +# support Compose v2 as docker CLI plugin +(( ${+commands[docker-compose]} )) && dccmd='docker-compose' || dccmd='docker compose' + +alias dco="$dccmd" +alias dcb="$dccmd build" +alias dce="$dccmd exec" +alias dcps="$dccmd ps" +alias dcrestart="$dccmd restart" +alias dcrm="$dccmd rm" +alias dcr="$dccmd run" +alias dcstop="$dccmd stop" +alias dcup="$dccmd up" +alias dcupb="$dccmd up --build" +alias dcupd="$dccmd up -d" +alias dcupdb="$dccmd up -d --build" +alias dcdn="$dccmd down" +alias dcl="$dccmd logs" +alias dclf="$dccmd logs -f" +alias dcpull="$dccmd pull" +alias dcstart="$dccmd start" +alias dck="$dccmd kill" + +unset dccmd diff --git a/dot_oh-my-zsh/plugins/docker-machine/README.md b/dot_oh-my-zsh/plugins/docker-machine/README.md new file mode 100644 index 0000000..308a6cf --- /dev/null +++ b/dot_oh-my-zsh/plugins/docker-machine/README.md @@ -0,0 +1,19 @@ +# docker-machine plugin for oh my zsh + +### Usage + +#### docker-vm +Will create a docker-machine with the name "dev" (required only once) +To create a second machine call "docker-vm foobar" or pass any other name + +#### docker-up +This will start your "dev" docker-machine (if necessary) and set it as the active one +To start a named machine use "docker-up foobar" + +#### docker-switch dev +Use this to activate a running docker-machine (or to switch between multiple machines) +You need to call either this or docker-up when opening a new terminal + +#### docker-stop +This will stop your "dev" docker-machine +To stop a named machine use "docker-stop foobar" \ No newline at end of file diff --git a/dot_oh-my-zsh/plugins/docker-machine/_docker-machine b/dot_oh-my-zsh/plugins/docker-machine/_docker-machine new file mode 100644 index 0000000..17bcd35 --- /dev/null +++ b/dot_oh-my-zsh/plugins/docker-machine/_docker-machine @@ -0,0 +1,359 @@ +#compdef docker-machine +# Description +# ----------- +# zsh completion for docker-machine +# https://github.com/leonhartX/docker-machine-zsh-completion +# ------------------------------------------------------------------------- +# Version +# ------- +# 0.1.1 +# ------------------------------------------------------------------------- +# Authors +# ------- +# * Ke Xu +# ------------------------------------------------------------------------- +# Inspiration +# ----------- +# * @sdurrheimer docker-compose-zsh-completion https://github.com/sdurrheimer/docker-compose-zsh-completion +# * @ilkka _docker-machine + + +__docker-machine_get_hosts() { + [[ $PREFIX = -* ]] && return 1 + local state + declare -a hosts + state=$1; shift + if [[ $state != all ]]; then + hosts=(${(f)"$(_call_program commands docker-machine ls -q --filter state=$state)"}) + else + hosts=(${(f)"$(_call_program commands docker-machine ls -q)"}) + fi + _describe 'host' hosts "$@" && ret=0 + return ret +} + +__docker-machine_hosts_with_state() { + declare -a hosts + hosts=(${(f)"$(_call_program commands docker-machine ls -f '{{.Name}}\:{{.DriverName}}\({{.State}}\)\ {{.URL}}')"}) + _describe 'host' hosts +} + +__docker-machine_hosts_all() { + __docker-machine_get_hosts all "$@" +} + +__docker-machine_hosts_running() { + __docker-machine_get_hosts Running "$@" +} + +__docker-machine_get_swarm() { + declare -a swarms + swarms=(${(f)"$(_call_program commands docker-machine ls -f {{.Swarm}} | awk '{print $1}')"}) + _describe 'swarm' swarms +} + +__docker-machine_hosts_and_files() { + _alternative "hosts:host:__docker-machine_hosts_all -qS ':'" 'files:files:_path_files' +} + +__docker-machine_filters() { + [[ $PREFIX = -* ]] && return 1 + integer ret=1 + + if compset -P '*='; then + case "${${words[-1]%=*}#*=}" in + (driver) + _describe -t driver-filter-opts "driver filter" opts_driver && ret=0 + ;; + (swarm) + __docker-machine_get_swarm && ret=0 + ;; + (state) + opts_state=('Running' 'Paused' 'Saved' 'Stopped' 'Stopping' 'Starting' 'Error') + _describe -t state-filter-opts "state filter" opts_state && ret=0 + ;; + (name) + __docker-machine_hosts_all && ret=0 + ;; + (label) + _message 'label' && ret=0 + ;; + *) + _message 'value' && ret=0 + ;; + esac + else + opts=('driver' 'swarm' 'state' 'name' 'label') + _describe -t filter-opts "filter" opts -qS "=" && ret=0 + fi + return ret +} + +__get_swarm_discovery() { + declare -a masters services + local service + services=() + masters=($(docker-machine ls -f {{.Swarm}} |grep '(master)' |awk '{print $1}')) + for master in $masters; do + service=${${${(f)"$(_call_program commands docker-machine inspect -f '{{.HostOptions.SwarmOptions.Discovery}}:{{.Name}}' $master)"}/:/\\:}} + services=($services $service) + done + _describe -t services "swarm service" services && ret=0 + return ret +} + +__get_create_argument() { + typeset -g docker_machine_driver + if [[ CURRENT -le 2 ]]; then + docker_machine_driver="none" + elif [[ CURRENT > 2 && $words[CURRENT-2] = '-d' || $words[CURRENT-2] = '--driver' ]]; then + docker_machine_driver=$words[CURRENT-1] + elif [[ $words[CURRENT-1] =~ '^(-d|--driver)=' ]]; then + docker_machine_driver=${${words[CURRENT-1]}/*=/} + fi + local driver_opt_cmd + local -a opts_provider opts_common opts_read_argument + opts_read_argument=( + ": :->argument" + ) + opts_common=( + $opts_help \ + '(--driver -d)'{--driver=,-d=}'[Driver to create machine with]:dirver:->driver-option' \ + '--engine-install-url=[Custom URL to use for engine installation]:url' \ + '*--engine-opt=[Specify arbitrary flags to include with the created engine in the form flag=value]:flag' \ + '*--engine-insecure-registry=[Specify insecure registries to allow with the created engine]:registry' \ + '*--engine-registry-mirror=[Specify registry mirrors to use]:mirror' \ + '*--engine-label=[Specify labels for the created engine]:label' \ + '--engine-storage-driver=[Specify a storage driver to use with the engine]:storage-driver:->storage-driver-option' \ + '*--engine-env=[Specify environment variables to set in the engine]:environment' \ + '--swarm[Configure Machine with Swarm]' \ + '--swarm-image=[Specify Docker image to use for Swarm]:image' \ + '--swarm-master[Configure Machine to be a Swarm master]' \ + '--swarm-discovery=[Discovery service to use with Swarm]:service:->swarm-service' \ + '--swarm-strategy=[Define a default scheduling strategy for Swarm]:strategy:(spread binpack random)' \ + '*--swarm-opt=[Define arbitrary flags for swarm]:flag' \ + '*--swarm-join-opt=[Define arbitrary flags for Swarm join]:flag' \ + '--swarm-host=[ip/socket to listen on for Swarm master]:host' \ + '--swarm-addr=[addr to advertise for Swarm (default: detect and use the machine IP)]:address' \ + '--swarm-experimental[Enable Swarm experimental features]' \ + '*--tls-san=[Support extra SANs for TLS certs]:option' + ) + driver_opt_cmd="docker-machine create -d $docker_machine_driver | grep $docker_machine_driver | sed -e 's/\(--.*\)\ *\[\1[^]]*\]/*\1/g' -e 's/\(\[[^]]*\)/\\\\\\1\\\\/g' -e 's/\".*\"\(.*\)/\1/g' | awk '{printf \"%s[\", \$1; for(i=2;i<=NF;i++) {printf \"%s \", \$i}; print \"]\"}'" + if [[ $docker_machine_driver != "none" ]]; then + opts_provider=(${(f)"$(_call_program commands $driver_opt_cmd)"}) + _arguments \ + $opts_provider \ + $opts_read_argument \ + $opts_common && ret=0 + else + _arguments $opts_common && ret=0 + fi + case $state in + (driver-option) + _describe -t driver-option "driver" opts_driver && ret=0 + ;; + (storage-driver-option) + _describe -t storage-driver-option "storage driver" opts_storage_driver && ret=0 + ;; + (swarm-service) + __get_swarm_discovery && ret=0 + ;; + (argument) + ret=0 + ;; + esac + return ret +} + + +__docker-machine_subcommand() { + local -a opts_help + opts_help=("(- :)--help[Print usage]") + local -a opts_only_host opts_driver opts_storage_driver opts_state + opts_only_host=( + "$opts_help" + "*:host:__docker-machine_hosts_all" + ) + opts_driver=('amazonec2' 'azure' 'digitalocean' 'exoscale' 'generic' 'google' 'hyperv' 'none' 'openstack' 'rackspace' 'softlayer' 'virtualbox' 'vmwarefusion' 'vmwarevcloudair' 'vmwarevsphere') + opts_storage_driver=('overlay' 'aufs' 'btrfs' 'devicemapper' 'vfs' 'zfs') + integer ret=1 + + case "$words[1]" in + (active) + _arguments \ + $opts_help \ + '(--timeout -t)'{--timeout=,-t=}'[Timeout in seconds, default to 10s]:seconds' && ret=0 + ;; + (config) + _arguments \ + $opts_help \ + '--swarm[Display the Swarm config instead of the Docker daemon]' \ + "*:host:__docker-machine_hosts_all" && ret=0 + ;; + (create) + __get_create_argument + ;; + (env) + _arguments \ + $opts_help \ + '--swarm[Display the Swarm config instead of the Docker daemon]' \ + '--shell=[Force environment to be configured for a specified shell: \[fish, cmd, powershell\], default is auto-detect]:shell' \ + '(--unset -u)'{--unset,-u}'[Unset variables instead of setting them]' \ + '--no-proxy[Add machine IP to NO_PROXY environment variable]' \ + '*:host:__docker-machine_hosts_running' && ret=0 + ;; + (help) + _arguments ':subcommand:__docker-machine_commands' && ret=0 + ;; + (inspect) + _arguments \ + $opts_help \ + '(--format -f)'{--format=,-f=}'[Format the output using the given go template]:template' \ + '*:host:__docker-machine_hosts_all' && ret=0 + ;; + (ip) + _arguments \ + $opts_help \ + '*:host:__docker-machine_hosts_running' && ret=0 + ;; + (kill) + _arguments \ + $opts_help \ + '*:host:__docker-machine_hosts_with_state' && ret=0 + ;; + (ls) + _arguments \ + $opts_help \ + '(--quiet -q)'{--quiet,-q}'[Enable quiet mode]' \ + '*--filter=[Filter output based on conditions provided]:filter:->filter-options' \ + '(--timeout -t)'{--timeout=,-t=}'[Timeout in seconds, default to 10s]:seconds' \ + '(--format -f)'{--format=,-f=}'[Pretty-print machines using a Go template]:template' && ret=0 + case $state in + (filter-options) + __docker-machine_filters && ret=0 + ;; + esac + ;; + (provision) + _arguments $opts_only_host && ret=0 + ;; + (regenerate-certs) + _arguments \ + $opts_help \ + '(--force -f)'{--force,-f}'[Force rebuild and do not prompt]' \ + '*:host:__docker-machine_hosts_all' && ret=0 + ;; + (restart) + _arguments \ + $opts_help \ + '*:host:__docker-machine_hosts_with_state' && ret=0 + ;; + (rm) + _arguments \ + $opts_help \ + '(--force -f)'{--force,-f}'[Remove local configuration even if machine cannot be removed, also implies an automatic yes (`-y`)]' \ + '-y[Assumes automatic yes to proceed with remove, without prompting further user confirmation]' \ + '*:host:__docker-machine_hosts_with_state' && ret=0 + ;; + (scp) + _arguments \ + $opts_help \ + '(--recursive -r)'{--recursive,-r}'[Copy files recursively (required to copy directories))]' \ + '*:files:__docker-machine_hosts_and_files' && ret=0 + ;; + (ssh) + _arguments \ + $opts_help \ + '*:host:__docker-machine_hosts_running' && ret=0 + ;; + (start) + _arguments \ + $opts_help \ + '*:host:__docker-machine_hosts_with_state' && ret=0 + ;; + (status) + _arguments $opts_only_host && ret=0 + ;; + (stop) + _arguments \ + $opts_help \ + '*:host:__docker-machine_hosts_with_state' && ret=0 + ;; + (upgrade) + _arguments $opts_only_host && ret=0 + ;; + (url) + _arguments \ + $opts_help \ + '*:host:__docker-machine_hosts_running' && ret=0 + ;; + esac + + return ret +} + + +__docker-machine_commands() { + local cache_policy + + zstyle -s ":completion:${curcontext}:" cache-policy cache_policy + if [[ -z "$cache_policy" ]]; then + zstyle ":completion:${curcontext}:" cache-policy __docker-machine_caching_policy + fi + + if ( [[ ${+_docker_machine_subcommands} -eq 0 ]] || _cache_invalid docker_machine_subcommands) \ + && ! _retrieve_cache docker_machine_subcommands; + then + local -a lines + lines=(${(f)"$(_call_program commands docker-machine 2>&1)"}) + _docker_machine_subcommands=(${${${lines[$((${lines[(i)Commands:]} + 1)),${lines[(I) *]}]}## #}/$'\t'##/:}) + (( $#_docker_machine_subcommands > 0 )) && _store_cache docker_machine_subcommands _docker_machine_subcommands + fi + _describe -t docker-machine-commands "docker-machine command" _docker_machine_subcommands +} + +__docker-machine_caching_policy() { + oldp=( "$1"(Nmh+1) ) + (( $#oldp )) +} + +_docker-machine() { + if [[ $service != docker-machine ]]; then + _call_function - _$service + return + fi + + local curcontext="$curcontext" state line + integer ret=1 + typeset -A opt_args + + _arguments -C \ + "(- :)"{-h,--help}"[Show help]" \ + "(-D --debug)"{-D,--debug}"[Enable debug mode]" \ + '(-s --storage-path)'{-s,--storage-path}'[Configures storage path]:file:_files' \ + '--tls-ca-cert[CA to verify remotes against]:file:_files' \ + '--tls-ca-key[Private key to generate certificates]:file:_files' \ + '--tls-client-cert[Client cert to use for TLS]:file:_files' \ + '--tls-client-key[Private key used in client TLS auth]:file:_files' \ + '--github-api-token[Token to use for requests to the GitHub API]' \ + '--native-ssh[Use the native (Go-based) SSH implementation.]' \ + '--bugsnag-api-token[Bugsnag API token for crash reporting]' \ + '(- :)'{-v,--version}'[Print the version]' \ + "(-): :->command" \ + "(-)*:: :->option-or-argument" && ret=0 + + case $state in + (command) + __docker-machine_commands && ret=0 + ;; + (option-or-argument) + curcontext=${curcontext%:*:*}:docker-machine-$words[1]: + __docker-machine_subcommand && ret=0 + ret=0 + ;; + esac + + return ret +} + +_docker-machine "$@" diff --git a/dot_oh-my-zsh/plugins/docker-machine/docker-machine.plugin.zsh b/dot_oh-my-zsh/plugins/docker-machine/docker-machine.plugin.zsh new file mode 100644 index 0000000..235d90e --- /dev/null +++ b/dot_oh-my-zsh/plugins/docker-machine/docker-machine.plugin.zsh @@ -0,0 +1,33 @@ +DEFAULT_MACHINE="default" + +docker-up() { + if [ -z "$1" ] + then + docker-machine start "${DEFAULT_MACHINE}" + eval $(docker-machine env "${DEFAULT_MACHINE}") + else + docker-machine start $1 + eval $(docker-machine env $1) + fi + echo $DOCKER_HOST +} +docker-stop() { + if [ -z "$1" ] + then + docker-machine stop "${DEFAULT_MACHINE}" + else + docker-machine stop $1 + fi +} +docker-switch() { + eval $(docker-machine env $1) + echo $DOCKER_HOST +} +docker-vm() { + if [ -z "$1" ] + then + docker-machine create -d virtualbox --virtualbox-disk-size 20000 --virtualbox-memory 4096 --virtualbox-cpu-count 2 "${DEFAULT_MACHINE}" + else + docker-machine create -d virtualbox --virtualbox-disk-size 20000 --virtualbox-memory 4096 --virtualbox-cpu-count 2 $1 + fi +} \ No newline at end of file diff --git a/dot_oh-my-zsh/plugins/docker/README.md b/dot_oh-my-zsh/plugins/docker/README.md new file mode 100644 index 0000000..512b5d1 --- /dev/null +++ b/dot_oh-my-zsh/plugins/docker/README.md @@ -0,0 +1,69 @@ +# Docker plugin + +This plugin adds auto-completion and aliases for [docker](https://www.docker.com/). + +To use it add `docker` to the plugins array in your zshrc file. + +```zsh +plugins=(... docker) +``` + +A copy of the completion script from the docker/cli git repo: +https://github.com/docker/cli/blob/master/contrib/completion/zsh/_docker + +## Settings + +By default, the completion doesn't allow option-stacking, meaning if you try to complete +`docker run -it ` it won't work, because you're _stacking_ the `-i` and `-t` options. + +[You can enable it](https://github.com/docker/cli/commit/b10fb43048) by **adding the lines below to your zshrc +file**, but be aware of the side effects: + +> This enables Zsh to understand commands like `docker run -it ubuntu`. However, by enabling this, this also +> makes Zsh complete `docker run -u` with `docker run -uapprox` which is not valid. The users have to put +> the space or the equal sign themselves before trying to complete. +> +> Therefore, this behavior is disabled by default. To enable it: +> +> ```sh +> zstyle ':completion:*:*:docker:*' option-stacking yes +> zstyle ':completion:*:*:docker-*:*' option-stacking yes +> ``` + +## Aliases + +| Alias | Command | Description | +| :------ | :---------------------------- | :--------------------------------------------------------------------------------------- | +| dbl | `docker build` | Build an image from a Dockerfile | +| dcin | `docker container inspect` | Display detailed information on one or more containers | +| dcls | `docker container ls` | List all the running docker containers | +| dclsa | `docker container ls -a` | List all running and stopped containers | +| dib | `docker image build` | Build an image from a Dockerfile (same as docker build) | +| dii | `docker image inspect` | Display detailed information on one or more images | +| dils | `docker image ls` | List docker images | +| dipu | `docker image push` | Push an image or repository to a remote registry | +| dirm | `docker image rm` | Remove one or more images | +| dit | `docker image tag` | Add a name and tag to a particular image | +| dlo | `docker container logs` | Fetch the logs of a docker container | +| dnc | `docker network create` | Create a new network | +| dncn | `docker network connect` | Connect a container to a network | +| dndcn | `docker network disconnect` | Disconnect a container from a network | +| dni | `docker network inspect` | Return information about one or more networks | +| dnls | `docker network ls` | List all networks the engine daemon knows about, including those spanning multiple hosts | +| dnrm | `docker network rm` | Remove one or more networks | +| dpo | `docker container port` | List port mappings or a specific mapping for the container | +| dpu | `docker pull` | Pull an image or a repository from a registry | +| dr | `docker container run` | Create a new container and start it using the specified command | +| drit | `docker container run -it` | Create a new container and start it in an interactive shell | +| drm | `docker container rm` | Remove the specified container(s) | +| drm! | `docker container rm -f` | Force the removal of a running container (uses SIGKILL) | +| dst | `docker container start` | Start one or more stopped containers | +| drs | `docker container restart` | Restart one or more containers +| dsta | `docker stop $(docker ps -q)` | Stop all running containers | +| dstp | `docker container stop` | Stop one or more running containers | +| dtop | `docker top` | Display the running processes of a container | +| dvi | `docker volume inspect` | Display detailed information about one or more volumes | +| dvls | `docker volume ls` | List all the volumes known to docker | +| dvprune | `docker volume prune` | Cleanup dangling volumes | +| dxc | `docker container exec` | Run a new command in a running container | +| dxcit | `docker container exec -it` | Run a new command in a running container in an interactive shell | diff --git a/dot_oh-my-zsh/plugins/docker/_docker b/dot_oh-my-zsh/plugins/docker/_docker new file mode 100644 index 0000000..e6a12d7 --- /dev/null +++ b/dot_oh-my-zsh/plugins/docker/_docker @@ -0,0 +1,3123 @@ +#compdef docker dockerd +# +# zsh completion for docker (http://docker.com) +# +# version: 0.3.0 +# github: https://github.com/felixr/docker-zsh-completion +# +# contributors: +# - Felix Riedel +# - Steve Durrheimer +# - Vincent Bernat +# - Rohan Verma +# +# license: +# +# Copyright (c) 2013, Felix Riedel +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of the nor the +# names of its contributors may be used to endorse or promote products +# derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +# Short-option stacking can be enabled with: +# zstyle ':completion:*:*:docker:*' option-stacking yes +# zstyle ':completion:*:*:docker-*:*' option-stacking yes +__docker_arguments() { + if zstyle -t ":completion:${curcontext}:" option-stacking; then + print -- -s + fi +} + +__docker_get_containers() { + [[ $PREFIX = -* ]] && return 1 + integer ret=1 + local kind type line s + declare -a running stopped lines args names + + kind=$1; shift + type=$1; shift + [[ $kind = (stopped|all) ]] && args=($args -a) + + lines=(${(f)${:-"$(_call_program commands docker $docker_options ps --format 'table' --no-trunc $args)"$'\n'}}) + + # Parse header line to find columns + local i=1 j=1 k header=${lines[1]} + declare -A begin end + while (( j < ${#header} - 1 )); do + i=$(( j + ${${header[$j,-1]}[(i)[^ ]]} - 1 )) + j=$(( i + ${${header[$i,-1]}[(i) ]} - 1 )) + k=$(( j + ${${header[$j,-1]}[(i)[^ ]]} - 2 )) + begin[${header[$i,$((j-1))]}]=$i + end[${header[$i,$((j-1))]}]=$k + done + end[${header[$i,$((j-1))]}]=-1 # Last column, should go to the end of the line + lines=(${lines[2,-1]}) + + # Container ID + if [[ $type = (ids|all) ]]; then + for line in $lines; do + s="${${line[${begin[CONTAINER ID]},${end[CONTAINER ID]}]%% ##}[0,12]}" + s="$s:${(l:15:: :::)${${line[${begin[CREATED]},${end[CREATED]}]/ ago/}%% ##}}" + s="$s, ${${${line[${begin[IMAGE]},${end[IMAGE]}]}/:/\\:}%% ##}" + if [[ ${line[${begin[STATUS]},${end[STATUS]}]} = (Exit*|Created*) ]]; then + stopped=($stopped $s) + else + running=($running $s) + fi + done + fi + + # Names: we only display the one without slash. All other names + # are generated and may clutter the completion. However, with + # Swarm, all names may be prefixed by the swarm node name. + if [[ $type = (names|all) ]]; then + for line in $lines; do + names=(${(ps:,:)${${line[${begin[NAMES]},${end[NAMES]}]}%% *}}) + # First step: find a common prefix and strip it (swarm node case) + (( ${#${(u)names%%/*}} == 1 )) && names=${names#${names[1]%%/*}/} + # Second step: only keep the first name without a / + s=${${names:#*/*}[1]} + # If no name, well give up. + (( $#s != 0 )) || continue + s="$s:${(l:15:: :::)${${line[${begin[CREATED]},${end[CREATED]}]/ ago/}%% ##}}" + s="$s, ${${${line[${begin[IMAGE]},${end[IMAGE]}]}/:/\\:}%% ##}" + if [[ ${line[${begin[STATUS]},${end[STATUS]}]} = (Exit*|Created*) ]]; then + stopped=($stopped $s) + else + running=($running $s) + fi + done + fi + + [[ $kind = (running|all) ]] && _describe -t containers-running "running containers" running "$@" && ret=0 + [[ $kind = (stopped|all) ]] && _describe -t containers-stopped "stopped containers" stopped "$@" && ret=0 + return ret +} + +__docker_complete_stopped_containers() { + [[ $PREFIX = -* ]] && return 1 + __docker_get_containers stopped all "$@" +} + +__docker_complete_running_containers() { + [[ $PREFIX = -* ]] && return 1 + __docker_get_containers running all "$@" +} + +__docker_complete_containers() { + [[ $PREFIX = -* ]] && return 1 + __docker_get_containers all all "$@" +} + +__docker_complete_containers_ids() { + [[ $PREFIX = -* ]] && return 1 + __docker_get_containers all ids "$@" +} + +__docker_complete_containers_names() { + [[ $PREFIX = -* ]] && return 1 + __docker_get_containers all names "$@" +} + +__docker_complete_info_plugins() { + [[ $PREFIX = -* ]] && return 1 + integer ret=1 + emulate -L zsh + setopt extendedglob + local -a plugins + plugins=(${(ps: :)${(M)${(f)${${"$(_call_program commands docker $docker_options info)"##*$'\n'Plugins:}%%$'\n'^ *}}:# $1: *}## $1: }) + _describe -t plugins "$1 plugins" plugins && ret=0 + return ret +} + +__docker_complete_images() { + [[ $PREFIX = -* ]] && return 1 + integer ret=1 + declare -a images + images=(${${${(f)${:-"$(_call_program commands docker $docker_options images)"$'\n'}}[2,-1]}/(#b)([^ ]##) ##([^ ]##) ##([^ ]##)*/${match[3]}:${(r:15:: :::)match[2]} in ${match[1]}}) + _describe -t docker-images "images" images && ret=0 + __docker_complete_repositories_with_tags && ret=0 + return ret +} + +__docker_complete_repositories() { + [[ $PREFIX = -* ]] && return 1 + integer ret=1 + declare -a repos + repos=(${${${(f)${:-"$(_call_program commands docker $docker_options images)"$'\n'}}%% *}[2,-1]}) + repos=(${repos#}) + _describe -t docker-repos "repositories" repos && ret=0 + return ret +} + +__docker_complete_repositories_with_tags() { + [[ $PREFIX = -* ]] && return 1 + integer ret=1 + declare -a repos onlyrepos matched + declare m + repos=(${${${${(f)${:-"$(_call_program commands docker $docker_options images)"$'\n'}}[2,-1]}/ ##/:::}%% *}) + repos=(${${repos%:::}#}) + # Check if we have a prefix-match for the current prefix. + onlyrepos=(${repos%::*}) + for m in $onlyrepos; do + [[ ${PREFIX##${~~m}} != ${PREFIX} ]] && { + # Yes, complete with tags + repos=(${${repos/:::/:}/:/\\:}) + _describe -t docker-repos-with-tags "repositories with tags" repos && ret=0 + return ret + } + done + # No, only complete repositories + onlyrepos=(${${repos%:::*}/:/\\:}) + _describe -t docker-repos "repositories" onlyrepos -qS : && ret=0 + + return ret +} + +__docker_search() { + [[ $PREFIX = -* ]] && return 1 + local cache_policy + zstyle -s ":completion:${curcontext}:" cache-policy cache_policy + if [[ -z "$cache_policy" ]]; then + zstyle ":completion:${curcontext}:" cache-policy __docker_caching_policy + fi + + local searchterm cachename + searchterm="${words[$CURRENT]%/}" + cachename=_docker-search-$searchterm + + local expl + local -a result + if ( [[ ${(P)+cachename} -eq 0 ]] || _cache_invalid ${cachename#_} ) \ + && ! _retrieve_cache ${cachename#_}; then + _message "Searching for ${searchterm}..." + result=(${${${(f)${:-"$(_call_program commands docker $docker_options search $searchterm)"$'\n'}}%% *}[2,-1]}) + _store_cache ${cachename#_} result + fi + _wanted dockersearch expl 'available images' compadd -a result +} + +__docker_get_log_options() { + [[ $PREFIX = -* ]] && return 1 + + integer ret=1 + local log_driver=${opt_args[--log-driver]:-"all"} + local -a common_options common_options2 awslogs_options fluentd_options gelf_options journald_options json_file_options logentries_options syslog_options splunk_options + + common_options=("max-buffer-size" "mode") + common_options2=("env" "env-regex" "labels") + awslogs_options=($common_options "awslogs-create-group" "awslogs-datetime-format" "awslogs-group" "awslogs-multiline-pattern" "awslogs-region" "awslogs-stream" "tag") + fluentd_options=($common_options $common_options2 "fluentd-address" "fluentd-async-connect" "fluentd-buffer-limit" "fluentd-retry-wait" "fluentd-max-retries" "fluentd-sub-second-precision" "tag") + gcplogs_options=($common_options $common_options2 "gcp-log-cmd" "gcp-meta-id" "gcp-meta-name" "gcp-meta-zone" "gcp-project") + gelf_options=($common_options $common_options2 "gelf-address" "gelf-compression-level" "gelf-compression-type" "tag") + journald_options=($common_options $common_options2 "tag") + json_file_options=($common_options $common_options2 "max-file" "max-size") + logentries_options=($common_options $common_options2 "logentries-token" "tag") + syslog_options=($common_options $common_options2 "syslog-address" "syslog-facility" "syslog-format" "syslog-tls-ca-cert" "syslog-tls-cert" "syslog-tls-key" "syslog-tls-skip-verify" "tag") + splunk_options=($common_options $common_options2 "splunk-caname" "splunk-capath" "splunk-format" "splunk-gzip" "splunk-gzip-level" "splunk-index" "splunk-insecureskipverify" "splunk-source" "splunk-sourcetype" "splunk-token" "splunk-url" "splunk-verify-connection" "tag") + + [[ $log_driver = (awslogs|all) ]] && _describe -t awslogs-options "awslogs options" awslogs_options "$@" && ret=0 + [[ $log_driver = (fluentd|all) ]] && _describe -t fluentd-options "fluentd options" fluentd_options "$@" && ret=0 + [[ $log_driver = (gcplogs|all) ]] && _describe -t gcplogs-options "gcplogs options" gcplogs_options "$@" && ret=0 + [[ $log_driver = (gelf|all) ]] && _describe -t gelf-options "gelf options" gelf_options "$@" && ret=0 + [[ $log_driver = (journald|all) ]] && _describe -t journald-options "journald options" journald_options "$@" && ret=0 + [[ $log_driver = (json-file|all) ]] && _describe -t json-file-options "json-file options" json_file_options "$@" && ret=0 + [[ $log_driver = (logentries|all) ]] && _describe -t logentries-options "logentries options" logentries_options "$@" && ret=0 + [[ $log_driver = (syslog|all) ]] && _describe -t syslog-options "syslog options" syslog_options "$@" && ret=0 + [[ $log_driver = (splunk|all) ]] && _describe -t splunk-options "splunk options" splunk_options "$@" && ret=0 + + return ret +} + +__docker_complete_log_drivers() { + [[ $PREFIX = -* ]] && return 1 + integer ret=1 + drivers=(awslogs etwlogs fluentd gcplogs gelf journald json-file none splunk syslog) + _describe -t log-drivers "log drivers" drivers && ret=0 + return ret +} + +__docker_complete_log_options() { + [[ $PREFIX = -* ]] && return 1 + integer ret=1 + + if compset -P '*='; then + case "${${words[-1]%=*}#*=}" in + (syslog-format) + local opts=('rfc3164' 'rfc5424' 'rfc5424micro') + _describe -t syslog-format-opts "syslog format options" opts && ret=0 + ;; + (mode) + local opts=('blocking' 'non-blocking') + _describe -t mode-opts "mode options" opts && ret=0 + ;; + *) + _message 'value' && ret=0 + ;; + esac + else + __docker_get_log_options -qS "=" && ret=0 + fi + + return ret +} + +__docker_complete_detach_keys() { + [[ $PREFIX = -* ]] && return 1 + integer ret=1 + + compset -P "*," + keys=(${:-{a-z}}) + ctrl_keys=(${:-ctrl-{{a-z},{@,'[','\\','^',']',_}}}) + _describe -t detach_keys "[a-z]" keys -qS "," && ret=0 + _describe -t detach_keys-ctrl "'ctrl-' + 'a-z @ [ \\\\ ] ^ _'" ctrl_keys -qS "," && ret=0 +} + +__docker_complete_pid() { + [[ $PREFIX = -* ]] && return 1 + integer ret=1 + local -a opts vopts + + opts=('host') + vopts=('container') + + if compset -P '*:'; then + case "${${words[-1]%:*}#*=}" in + (container) + __docker_complete_running_containers && ret=0 + ;; + *) + _message 'value' && ret=0 + ;; + esac + else + _describe -t pid-value-opts "PID Options with value" vopts -qS ":" && ret=0 + _describe -t pid-opts "PID Options" opts && ret=0 + fi + + return ret +} + +__docker_complete_runtimes() { + [[ $PREFIX = -* ]] && return 1 + integer ret=1 + + emulate -L zsh + setopt extendedglob + local -a runtimes_opts + runtimes_opts=(${(ps: :)${(f)${${"$(_call_program commands docker $docker_options info)"##*$'\n'Runtimes: }%%$'\n'^ *}}}) + _describe -t runtimes-opts "runtimes options" runtimes_opts && ret=0 +} + +__docker_complete_ps_filters() { + [[ $PREFIX = -* ]] && return 1 + integer ret=1 + + if compset -P '*='; then + case "${${words[-1]%=*}#*=}" in + (ancestor) + __docker_complete_images && ret=0 + ;; + (before|since) + __docker_complete_containers && ret=0 + ;; + (health) + health_opts=('healthy' 'none' 'starting' 'unhealthy') + _describe -t health-filter-opts "health filter options" health_opts && ret=0 + ;; + (id) + __docker_complete_containers_ids && ret=0 + ;; + (is-task) + _describe -t boolean-filter-opts "filter options" boolean_opts && ret=0 + ;; + (name) + __docker_complete_containers_names && ret=0 + ;; + (network) + __docker_complete_networks && ret=0 + ;; + (status) + status_opts=('created' 'dead' 'exited' 'paused' 'restarting' 'running' 'removing') + _describe -t status-filter-opts "status filter options" status_opts && ret=0 + ;; + (volume) + __docker_complete_volumes && ret=0 + ;; + *) + _message 'value' && ret=0 + ;; + esac + else + opts=('ancestor' 'before' 'exited' 'expose' 'health' 'id' 'label' 'name' 'network' 'publish' 'since' 'status' 'volume') + _describe -t filter-opts "Filter Options" opts -qS "=" && ret=0 + fi + + return ret +} + +__docker_complete_search_filters() { + [[ $PREFIX = -* ]] && return 1 + integer ret=1 + declare -a boolean_opts opts + + boolean_opts=('true' 'false') + opts=('is-automated' 'is-official' 'stars') + + if compset -P '*='; then + case "${${words[-1]%=*}#*=}" in + (is-automated|is-official) + _describe -t boolean-filter-opts "filter options" boolean_opts && ret=0 + ;; + *) + _message 'value' && ret=0 + ;; + esac + else + _describe -t filter-opts "filter options" opts -qS "=" && ret=0 + fi + + return ret +} + +__docker_complete_images_filters() { + [[ $PREFIX = -* ]] && return 1 + integer ret=1 + declare -a boolean_opts opts + + boolean_opts=('true' 'false') + opts=('before' 'dangling' 'label' 'reference' 'since') + + if compset -P '*='; then + case "${${words[-1]%=*}#*=}" in + (before|reference|since) + __docker_complete_images && ret=0 + ;; + (dangling) + _describe -t boolean-filter-opts "filter options" boolean_opts && ret=0 + ;; + *) + _message 'value' && ret=0 + ;; + esac + else + _describe -t filter-opts "Filter Options" opts -qS "=" && ret=0 + fi + + return ret +} + +__docker_complete_events_filter() { + [[ $PREFIX = -* ]] && return 1 + integer ret=1 + declare -a opts + + opts=('container' 'daemon' 'event' 'image' 'label' 'network' 'scope' 'type' 'volume') + + if compset -P '*='; then + case "${${words[-1]%=*}#*=}" in + (container) + __docker_complete_containers && ret=0 + ;; + (daemon) + emulate -L zsh + setopt extendedglob + local -a daemon_opts + daemon_opts=( + ${(f)${${"$(_call_program commands docker $docker_options info)"##*$'\n'Name: }%%$'\n'^ *}} + ${${(f)${${"$(_call_program commands docker $docker_options info)"##*$'\n'ID: }%%$'\n'^ *}}//:/\\:} + ) + _describe -t daemon-filter-opts "daemon filter options" daemon_opts && ret=0 + ;; + (event) + local -a event_opts + event_opts=('attach' 'commit' 'connect' 'copy' 'create' 'delete' 'destroy' 'detach' 'die' 'disable' 'disconnect' 'enable' 'exec_create' 'exec_detach' + 'exec_start' 'export' 'health_status' 'import' 'install' 'kill' 'load' 'mount' 'oom' 'pause' 'pull' 'push' 'reload' 'remove' 'rename' 'resize' + 'restart' 'save' 'start' 'stop' 'tag' 'top' 'unmount' 'unpause' 'untag' 'update') + _describe -t event-filter-opts "event filter options" event_opts && ret=0 + ;; + (image) + __docker_complete_images && ret=0 + ;; + (network) + __docker_complete_networks && ret=0 + ;; + (scope) + local -a scope_opts + scope_opts=('local' 'swarm') + _describe -t scope-filter-opts "scope filter options" scope_opts && ret=0 + ;; + (type) + local -a type_opts + type_opts=('container' 'daemon' 'image' 'network' 'volume') + _describe -t type-filter-opts "type filter options" type_opts && ret=0 + ;; + (volume) + __docker_complete_volumes && ret=0 + ;; + *) + _message 'value' && ret=0 + ;; + esac + else + _describe -t filter-opts "filter options" opts -qS "=" && ret=0 + fi + + return ret +} + +__docker_complete_prune_filters() { + [[ $PREFIX = -* ]] && return 1 + integer ret=1 + declare -a opts + + opts=('until') + + if compset -P '*='; then + case "${${words[-1]%=*}#*=}" in + *) + _message 'value' && ret=0 + ;; + esac + else + _describe -t filter-opts "filter options" opts -qS "=" && ret=0 + fi + + return ret +} + +# BO checkpoint + +__docker_checkpoint_commands() { + local -a _docker_checkpoint_subcommands + _docker_checkpoint_subcommands=( + "create:Create a checkpoint from a running container" + "ls:List checkpoints for a container" + "rm:Remove a checkpoint" + ) + _describe -t docker-checkpoint-commands "docker checkpoint command" _docker_checkpoint_subcommands +} + +__docker_checkpoint_subcommand() { + local -a _command_args opts_help + local expl help="--help" + integer ret=1 + + opts_help=("(: -)--help[Print usage]") + + case "$words[1]" in + (create) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help)--checkpoint-dir=[Use a custom checkpoint storage directory]:dir:_directories" \ + "($help)--leave-running[Leave the container running after checkpoint]" \ + "($help -)1:container:__docker_complete_running_containers" \ + "($help -)2:checkpoint: " && ret=0 + ;; + (ls|list) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help)--checkpoint-dir=[Use a custom checkpoint storage directory]:dir:_directories" \ + "($help -)1:container:__docker_complete_containers" && ret=0 + ;; + (rm|remove) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help)--checkpoint-dir=[Use a custom checkpoint storage directory]:dir:_directories" \ + "($help -)1:container:__docker_complete_containers" \ + "($help -)2:checkpoint: " && ret=0 + ;; + (help) + _arguments $(__docker_arguments) ":subcommand:__docker_checkpoint_commands" && ret=0 + ;; + esac + + return ret +} + +# EO checkpoint + +# BO container + +__docker_container_commands() { + local -a _docker_container_subcommands + _docker_container_subcommands=( + "attach:Attach to a running container" + "commit:Create a new image from a container's changes" + "cp:Copy files/folders between a container and the local filesystem" + "create:Create a new container" + "diff:Inspect changes on a container's filesystem" + "exec:Execute a command in a running container" + "export:Export a container's filesystem as a tar archive" + "inspect:Display detailed information on one or more containers" + "kill:Kill one or more running containers" + "logs:Fetch the logs of a container" + "ls:List containers" + "pause:Pause all processes within one or more containers" + "port:List port mappings or a specific mapping for the container" + "prune:Remove all stopped containers" + "rename:Rename a container" + "restart:Restart one or more containers" + "rm:Remove one or more containers" + "run:Create and run a new container from an image" + "start:Start one or more stopped containers" + "stats:Display a live stream of container(s) resource usage statistics" + "stop:Stop one or more running containers" + "top:Display the running processes of a container" + "unpause:Unpause all processes within one or more containers" + "update:Update configuration of one or more containers" + "wait:Block until one or more containers stop, then print their exit codes" + ) + _describe -t docker-container-commands "docker container command" _docker_container_subcommands +} + +__docker_container_subcommand() { + local -a _command_args opts_help opts_attach_exec_run_start opts_create_run opts_create_run_update + local expl help="--help" + integer ret=1 + + opts_attach_exec_run_start=( + "($help)--detach-keys=[Escape key sequence used to detach a container]:sequence:__docker_complete_detach_keys" + ) + opts_create_run=( + "($help -a --attach)"{-a=,--attach=}"[Attach to stdin, stdout or stderr]:device:(STDIN STDOUT STDERR)" + "($help)*--add-host=[Add a custom host-to-IP mapping]:host\:ip mapping: " + "($help)*--blkio-weight-device=[Block IO (relative device weight)]:device:Block IO weight: " + "($help)*--cap-add=[Add Linux capabilities]:capability: " + "($help)*--cap-drop=[Drop Linux capabilities]:capability: " + "($help)--cgroupns=[Cgroup namespace mode to use]:cgroup namespace mode: " + "($help)--cgroup-parent=[Parent cgroup for the container]:cgroup: " + "($help)--cidfile=[Write the container ID to the file]:CID file:_files" + "($help)--cpus=[Number of CPUs (default 0.000)]:cpus: " + "($help)*--device=[Add a host device to the container]:device:_files" + "($help)*--device-cgroup-rule=[Add a rule to the cgroup allowed devices list]:device:cgroup: " + "($help)*--device-read-bps=[Limit the read rate (bytes per second) from a device]:device:IO rate: " + "($help)*--device-read-iops=[Limit the read rate (IO per second) from a device]:device:IO rate: " + "($help)*--device-write-bps=[Limit the write rate (bytes per second) to a device]:device:IO rate: " + "($help)*--device-write-iops=[Limit the write rate (IO per second) to a device]:device:IO rate: " + "($help)--disable-content-trust[Skip image verification]" + "($help)*--dns=[Custom DNS servers]:DNS server: " + "($help)*--dns-option=[Custom DNS options]:DNS option: " + "($help)*--dns-search=[Custom DNS search domains]:DNS domains: " + "($help)*--domainname=[Container NIS domain name]:domainname:_hosts" + "($help)*"{-e=,--env=}"[Environment variables]:environment variable: " + "($help)--entrypoint=[Overwrite the default entrypoint of the image]:entry point: " + "($help)*--env-file=[Read environment variables from a file]:environment file:_files" + "($help)*--expose=[Expose a port from the container without publishing it]: " + "($help)*--gpus=[GPU devices to add to the container ('all' to pass all GPUs)]:device: " + "($help)*--group-add=[Set one or more supplementary user groups for the container]:group:_groups" + "($help -h --hostname)"{-h=,--hostname=}"[Container host name]:hostname:_hosts" + "($help -i --interactive)"{-i,--interactive}"[Keep stdin open even if not attached]" + "($help)--init[Run an init inside the container that forwards signals and reaps processes]" + "($help)--ip=[IPv4 address]:IPv4: " + "($help)--ip6=[IPv6 address]:IPv6: " + "($help)--ipc=[IPC namespace to use]:IPC namespace: " + "($help)--isolation=[Container isolation technology]:isolation:(default hyperv process)" + "($help)*--link=[Add link to another container]:link:->link" + "($help)*--link-local-ip=[Container IPv4/IPv6 link-local addresses]:IPv4/IPv6: " + "($help)*"{-l=,--label=}"[Container metadata]:label: " + "($help)--log-driver=[Default driver for container logs]:logging driver:__docker_complete_log_drivers" + "($help)*--log-opt=[Log driver specific options]:log driver options:__docker_complete_log_options" + "($help)--mac-address=[Container MAC address]:MAC address: " + "($help)*--mount=[Attach a filesystem mount to the container]:mount: " + "($help)--name=[Container name]:name: " + "($help)--network=[Connect a container to a network]:network mode:(bridge none container host)" + "($help)*--network-alias=[Add network-scoped alias for the container]:alias: " + "($help)--oom-kill-disable[Disable OOM Killer]" + "($help)--oom-score-adj[Tune the host's OOM preferences for containers (accepts -1000 to 1000)]" + "($help)--pids-limit[Tune container pids limit (set -1 for unlimited)]" + "($help -P --publish-all)"{-P,--publish-all}"[Publish all exposed ports]" + "($help)*"{-p=,--publish=}"[Expose a container's port to the host]:port:_ports" + "($help)--pid=[PID namespace to use]:PID namespace:__docker_complete_pid" + "($help)--privileged[Give extended privileges to this container]" + "($help -q --quiet)"{-q,--quiet}"[Suppress the pull output]" + "($help)--read-only[Mount the container's root filesystem as read only]" + "($help)*--security-opt=[Security options]:security option: " + "($help)*--shm-size=[Size of '/dev/shm' (format is '')]:shm size: " + "($help)--stop-signal=[Signal to kill a container]:signal:_signals" + "($help)--stop-timeout=[Timeout (in seconds) to stop a container]:time: " + "($help)*--sysctl=-[sysctl options]:sysctl: " + "($help -t --tty)"{-t,--tty}"[Allocate a pseudo-tty]" + "($help -u --user)"{-u=,--user=}"[Username or UID]:user:_users" + "($help)*--ulimit=[ulimit options]:ulimit: " + "($help)--userns=[Container user namespace]:user namespace:(host)" + "($help)--tmpfs[mount tmpfs]" + "($help)*-v[Bind mount a volume]:volume: " + "($help)--volume-driver=[Optional volume driver for the container]:volume driver:(local)" + "($help)*--volumes-from=[Mount volumes from the specified container]:volume: " + "($help -w --workdir)"{-w=,--workdir=}"[Working directory inside the container]:directory:_directories" + ) + opts_create_run_update=( + "($help)--blkio-weight=[Block IO (relative weight), between 10 and 1000]:Block IO weight:(10 100 500 1000)" + "($help -c --cpu-shares)"{-c=,--cpu-shares=}"[CPU shares (relative weight)]:CPU shares:(0 10 100 200 500 800 1000)" + "($help)--cpu-period=[Limit the CPU CFS (Completely Fair Scheduler) period]:CPU period: " + "($help)--cpu-quota=[Limit the CPU CFS (Completely Fair Scheduler) quota]:CPU quota: " + "($help)--cpu-rt-period=[Limit the CPU real-time period]:CPU real-time period in microseconds: " + "($help)--cpu-rt-runtime=[Limit the CPU real-time runtime]:CPU real-time runtime in microseconds: " + "($help)--cpuset-cpus=[CPUs in which to allow execution]:CPUs: " + "($help)--cpuset-mems=[MEMs in which to allow execution]:MEMs: " + "($help)--kernel-memory=[Kernel memory limit in bytes]:Memory limit: " + "($help -m --memory)"{-m=,--memory=}"[Memory limit]:Memory limit: " + "($help)--memory-reservation=[Memory soft limit]:Memory limit: " + "($help)--memory-swap=[Total memory limit with swap]:Memory limit: " + "($help)--pids-limit[Tune container pids limit (set -1 for unlimited)]" + "($help)--restart=[Restart policy]:restart policy:(no on-failure always unless-stopped)" + ) + opts_help=("(: -)--help[Print usage]") + + case "$words[1]" in + (attach) + _arguments $(__docker_arguments) \ + $opts_help \ + $opts_attach_exec_run_start \ + "($help)--no-stdin[Do not attach stdin]" \ + "($help)--sig-proxy[Proxy all received signals to the process (non-TTY mode only)]" \ + "($help -):containers:__docker_complete_running_containers" && ret=0 + ;; + (commit) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -a --author)"{-a=,--author=}"[Author]:author: " \ + "($help)*"{-c=,--change=}"[Apply Dockerfile instruction to the created image]:Dockerfile:_files" \ + "($help -m --message)"{-m=,--message=}"[Commit message]:message: " \ + "($help -p --pause)"{-p,--pause}"[Pause container during commit]" \ + "($help -):container:__docker_complete_containers" \ + "($help -): :__docker_complete_repositories_with_tags" && ret=0 + ;; + (cp) + local state + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -L --follow-link)"{-L,--follow-link}"[Always follow symbol link]" \ + "($help -)1:container:->container" \ + "($help -)2:hostpath:_files" && ret=0 + case $state in + (container) + if compset -P "*:"; then + _files && ret=0 + else + __docker_complete_containers -qS ":" && ret=0 + fi + ;; + esac + ;; + (create) + local state + _arguments $(__docker_arguments) \ + $opts_help \ + $opts_create_run \ + $opts_create_run_update \ + "($help -): :__docker_complete_images" \ + "($help -):command: _command_names -e" \ + "($help -)*::arguments: _normal" && ret=0 + case $state in + (link) + if compset -P "*:"; then + _wanted alias expl "Alias" compadd -E "" && ret=0 + else + __docker_complete_running_containers -qS ":" && ret=0 + fi + ;; + esac + ;; + (diff) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -)*:containers:__docker_complete_containers" && ret=0 + ;; + (exec) + local state + _arguments $(__docker_arguments) \ + $opts_help \ + $opts_attach_exec_run_start \ + "($help -d --detach)"{-d,--detach}"[Detached mode: leave the container running in the background]" \ + "($help)*"{-e=,--env=}"[Set environment variables]:environment variable: " \ + "($help)*--env-file=[Read environment variables from a file]:environment file:_files" \ + "($help -i --interactive)"{-i,--interactive}"[Keep stdin open even if not attached]" \ + "($help)--privileged[Give extended Linux capabilities to the command]" \ + "($help -t --tty)"{-t,--tty}"[Allocate a pseudo-tty]" \ + "($help -u --user)"{-u=,--user=}"[Username or UID]:user:_users" \ + "($help -w --workdir)"{-w=,--workdir=}"[Working directory inside the container]:directory:_directories" \ + "($help -):containers:__docker_complete_running_containers" \ + "($help -)*::command:->anycommand" && ret=0 + case $state in + (anycommand) + shift 1 words + (( CURRENT-- )) + _normal && ret=0 + ;; + esac + ;; + (export) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -o --output)"{-o=,--output=}"[Write to a file, instead of stdout]:output file:_files" \ + "($help -)*:containers:__docker_complete_containers" && ret=0 + ;; + (inspect) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -f --format)"{-f=,--format=}"[Format the output using the given go template]:template: " \ + "($help -s --size)"{-s,--size}"[Display total file sizes]" \ + "($help -)*:containers:__docker_complete_containers" && ret=0 + ;; + (kill) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -s --signal)"{-s=,--signal=}"[Signal to send]:signal:_signals" \ + "($help -)*:containers:__docker_complete_running_containers" && ret=0 + ;; + (logs) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help)--details[Show extra details provided to logs]" \ + "($help -f --follow)"{-f,--follow}"[Follow log output]" \ + "($help -s --since)"{-s=,--since=}"[Show logs since this timestamp]:timestamp: " \ + "($help -t --timestamps)"{-t,--timestamps}"[Show timestamps]" \ + "($help -n --tail)"{-n=,--tail=}"[Number of lines to show from the end of the logs]:lines:(1 10 20 50 all)" \ + "($help -)*:containers:__docker_complete_containers" && ret=0 + ;; + (ls|list) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -a --all)"{-a,--all}"[Show all containers]" \ + "($help)--before=[Show only container created before...]:containers:__docker_complete_containers" \ + "($help)*"{-f=,--filter=}"[Filter values]:filter:__docker_complete_ps_filters" \ + "($help)--format=[Format the output using the given Go template]:template: " \ + "($help -l --latest)"{-l,--latest}"[Show only the latest created container]" \ + "($help -n --last)"{-n=,--last=}"[Show n last created containers (includes all states)]:n:(1 5 10 25 50)" \ + "($help)--no-trunc[Do not truncate output]" \ + "($help -q --quiet)"{-q,--quiet}"[Only show container IDs]" \ + "($help -s --size)"{-s,--size}"[Display total file sizes]" \ + "($help)--since=[Show only containers created since...]:containers:__docker_complete_containers" && ret=0 + ;; + (pause|unpause) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -)*:containers:__docker_complete_running_containers" && ret=0 + ;; + (port) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -)1:containers:__docker_complete_running_containers" \ + "($help -)2:port:_ports" && ret=0 + ;; + (prune) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help)*--filter=[Filter values]:filter:__docker_complete_prune_filters" \ + "($help -f --force)"{-f,--force}"[Do not prompt for confirmation]" && ret=0 + ;; + (rename) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -):old name:__docker_complete_containers" \ + "($help -):new name: " && ret=0 + ;; + (restart) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -t --time)"{-t=,--time=}"[Number of seconds to try to stop for before killing the container]:seconds to before killing:(1 5 10 30 60)" \ + "($help -)*:containers:__docker_complete_containers" && ret=0 + ;; + (rm) + local state + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -f --force)"{-f,--force}"[Force removal]" \ + "($help -l --link)"{-l,--link}"[Remove the specified link and not the underlying container]" \ + "($help -v --volumes)"{-v,--volumes}"[Remove the volumes associated to the container]" \ + "($help -)*:containers:->values" && ret=0 + case $state in + (values) + if [[ ${words[(r)-f]} == -f || ${words[(r)--force]} == --force ]]; then + __docker_complete_containers && ret=0 + else + __docker_complete_stopped_containers && ret=0 + fi + ;; + esac + ;; + (run) + local state + _arguments $(__docker_arguments) \ + $opts_help \ + $opts_create_run \ + $opts_create_run_update \ + $opts_attach_exec_run_start \ + "($help -d --detach)"{-d,--detach}"[Detached mode: leave the container running in the background]" \ + "($help)--health-cmd=[Command to run to check health]:command: " \ + "($help)--health-interval=[Time between running the check]:time: " \ + "($help)--health-retries=[Consecutive failures needed to report unhealthy]:retries:(1 2 3 4 5)" \ + "($help)--health-timeout=[Maximum time to allow one check to run]:time: " \ + "($help)--no-healthcheck[Disable any container-specified HEALTHCHECK]" \ + "($help)--rm[Remove intermediate containers when it exits]" \ + "($help)--runtime=[Name of the runtime to be used for that container]:runtime:__docker_complete_runtimes" \ + "($help)--sig-proxy[Proxy all received signals to the process (non-TTY mode only)]" \ + "($help)--storage-opt=[Storage driver options for the container]:storage options:->storage-opt" \ + "($help -): :__docker_complete_images" \ + "($help -):command: _command_names -e" \ + "($help -)*::arguments: _normal" && ret=0 + case $state in + (link) + if compset -P "*:"; then + _wanted alias expl "Alias" compadd -E "" && ret=0 + else + __docker_complete_running_containers -qS ":" && ret=0 + fi + ;; + (storage-opt) + if compset -P "*="; then + _message "value" && ret=0 + else + opts=('size') + _describe -t filter-opts "storage options" opts -qS "=" && ret=0 + fi + ;; + esac + ;; + (start) + _arguments $(__docker_arguments) \ + $opts_help \ + $opts_attach_exec_run_start \ + "($help -a --attach)"{-a,--attach}"[Attach container's stdout/stderr and forward all signals]" \ + "($help -i --interactive)"{-i,--interactive}"[Attach container's stdin]" \ + "($help -)*:containers:__docker_complete_stopped_containers" && ret=0 + ;; + (stats) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -a --all)"{-a,--all}"[Show all containers (default shows just running)]" \ + "($help)--format=[Format the output using the given Go template]:template: " \ + "($help)--no-stream[Disable streaming stats and only pull the first result]" \ + "($help)--no-trunc[Do not truncate output]" \ + "($help -)*:containers:__docker_complete_running_containers" && ret=0 + ;; + (stop) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -t --time)"{-t=,--time=}"[Number of seconds to try to stop for before killing the container]:seconds to before killing:(1 5 10 30 60)" \ + "($help -)*:containers:__docker_complete_running_containers" && ret=0 + ;; + (top) + local state + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -)1:containers:__docker_complete_running_containers" \ + "($help -)*:: :->ps-arguments" && ret=0 + case $state in + (ps-arguments) + _ps && ret=0 + ;; + esac + ;; + (update) + local state + _arguments $(__docker_arguments) \ + $opts_help \ + $opts_create_run_update \ + "($help -)*: :->values" && ret=0 + case $state in + (values) + if [[ ${words[(r)--kernel-memory*]} = (--kernel-memory*) ]]; then + __docker_complete_stopped_containers && ret=0 + else + __docker_complete_containers && ret=0 + fi + ;; + esac + ;; + (wait) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -)*:containers:__docker_complete_running_containers" && ret=0 + ;; + (help) + _arguments $(__docker_arguments) ":subcommand:__docker_container_commands" && ret=0 + ;; + esac + + return ret +} + +# EO container + +# BO image + +__docker_image_commands() { + local -a _docker_image_subcommands + _docker_image_subcommands=( + "build:Build an image from a Dockerfile" + "history:Show the history of an image" + "import:Import the contents from a tarball to create a filesystem image" + "inspect:Display detailed information on one or more images" + "load:Load an image from a tar archive or STDIN" + "ls:List images" + "prune:Remove unused images" + "pull:Download an image from a registry" + "push:Upload an image to a registry" + "rm:Remove one or more images" + "save:Save one or more images to a tar archive (streamed to STDOUT by default)" + "tag:Tag an image into a repository" + ) + _describe -t docker-image-commands "docker image command" _docker_image_subcommands +} + +__docker_image_subcommand() { + local -a _command_args opts_help + local expl help="--help" + integer ret=1 + + opts_help=("(: -)--help[Print usage]") + + case "$words[1]" in + (build) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help)*--add-host=[Add a custom host-to-IP mapping]:host\:ip mapping: " \ + "($help)*--build-arg=[Build-time variables]:=: " \ + "($help)*--cache-from=[Images to consider as cache sources]: :__docker_complete_repositories_with_tags" \ + "($help -c --cpu-shares)"{-c=,--cpu-shares=}"[CPU shares (relative weight)]:CPU shares:(0 10 100 200 500 800 1000)" \ + "($help)--cgroup-parent=[Parent cgroup for the container]:cgroup: " \ + "($help)--compress[Compress the build context using gzip]" \ + "($help)--cpu-period=[Limit the CPU CFS (Completely Fair Scheduler) period]:CPU period: " \ + "($help)--cpu-quota=[Limit the CPU CFS (Completely Fair Scheduler) quota]:CPU quota: " \ + "($help)--cpu-rt-period=[Limit the CPU real-time period]:CPU real-time period in microseconds: " \ + "($help)--cpu-rt-runtime=[Limit the CPU real-time runtime]:CPU real-time runtime in microseconds: " \ + "($help)--cpuset-cpus=[CPUs in which to allow execution]:CPUs: " \ + "($help)--cpuset-mems=[MEMs in which to allow execution]:MEMs: " \ + "($help)--disable-content-trust[Skip image verification]" \ + "($help -f --file)"{-f=,--file=}"[Name of the Dockerfile]:Dockerfile:_files" \ + "($help)--force-rm[Always remove intermediate containers]" \ + "($help)--isolation=[Container isolation technology]:isolation:(default hyperv process)" \ + "($help)*--label=[Set metadata for an image]:label=value: " \ + "($help -m --memory)"{-m=,--memory=}"[Memory limit]:Memory limit: " \ + "($help)--memory-swap=[Total memory limit with swap]:Memory limit: " \ + "($help)--network=[Connect a container to a network]:network mode:(bridge none container host)" \ + "($help)--no-cache[Do not use cache when building the image]" \ + "($help)--pull[Attempt to pull a newer version of the image]" \ + "($help -q --quiet)"{-q,--quiet}"[Suppress verbose build output]" \ + "($help)--rm[Remove intermediate containers after a successful build]" \ + "($help)*--shm-size=[Size of '/dev/shm' (format is '')]:shm size: " \ + "($help)--squash[Squash newly built layers into a single new layer]" \ + "($help -t --tag)*"{-t=,--tag=}"[Repository, name and tag for the image]: :__docker_complete_repositories_with_tags" \ + "($help)--target=[Set the target build stage to build.]" \ + "($help)*--ulimit=[ulimit options]:ulimit: " \ + "($help)--userns=[Container user namespace]:user namespace:(host)" \ + "($help -):path or URL:_directories" && ret=0 + ;; + (history) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -H --human)"{-H,--human}"[Print sizes and dates in human readable format]" \ + "($help)--no-trunc[Do not truncate output]" \ + "($help -q --quiet)"{-q,--quiet}"[Only show image IDs]" \ + "($help -)*: :__docker_complete_images" && ret=0 + ;; + (import) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help)*"{-c=,--change=}"[Apply Dockerfile instruction to the created image]:Dockerfile:_files" \ + "($help -m --message)"{-m=,--message=}"[Commit message for imported image]:message: " \ + "($help -):URL:(- http:// file://)" \ + "($help -): :__docker_complete_repositories_with_tags" && ret=0 + ;; + (inspect) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -f --format)"{-f=,--format=}"[Format the output using the given go template]:template: " \ + "($help -)*:images:__docker_complete_images" && ret=0 + ;; + (load) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -i --input)"{-i=,--input=}"[Read from tar archive file]:archive file:_files -g \"*.((tar|TAR)(.gz|.GZ|.Z|.bz2|.lzma|.xz|)|(tbz|tgz|txz))(-.)\"" \ + "($help -q --quiet)"{-q,--quiet}"[Suppress the load output]" && ret=0 + ;; + (ls|list) + local state + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -a --all)"{-a,--all}"[Show all images]" \ + "($help)--digests[Show digests]" \ + "($help)*"{-f=,--filter=}"[Filter values]:filter:__docker_complete_images_filters" \ + "($help)--format=[Format the output using the given Go template]:template: " \ + "($help)--no-trunc[Do not truncate output]" \ + "($help -q --quiet)"{-q,--quiet}"[Only show image IDs]" \ + "($help -): :__docker_complete_repositories" && ret=0 + ;; + (prune) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -a --all)"{-a,--all}"[Remove all unused images, not just dangling ones]" \ + "($help)*--filter=[Filter values]:filter:__docker_complete_prune_filters" \ + "($help -f --force)"{-f,--force}"[Do not prompt for confirmation]" && ret=0 + ;; + (pull) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -a --all-tags)"{-a,--all-tags}"[Download all tagged images]" \ + "($help)--disable-content-trust[Skip image verification]" \ + "($help -):name:__docker_search" && ret=0 + ;; + (push) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -a --all-tags)"{-a,--all-tags}"[Push all tags of an image to the repository]" \ + "($help)--disable-content-trust[Skip image signing]" \ + "($help -): :__docker_complete_images" && ret=0 + ;; + (rm) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -f --force)"{-f,--force}"[Force removal]" \ + "($help)--no-prune[Do not delete untagged parents]" \ + "($help -)*: :__docker_complete_images" && ret=0 + ;; + (save) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -o --output)"{-o=,--output=}"[Write to file]:file:_files" \ + "($help -)*: :__docker_complete_images" && ret=0 + ;; + (tag) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -):source:__docker_complete_images"\ + "($help -):destination:__docker_complete_repositories_with_tags" && ret=0 + ;; + (help) + _arguments $(__docker_arguments) ":subcommand:__docker_container_commands" && ret=0 + ;; + esac + + return ret +} + +# EO image + +# BO network + +__docker_network_complete_ls_filters() { + [[ $PREFIX = -* ]] && return 1 + integer ret=1 + + if compset -P '*='; then + case "${${words[-1]%=*}#*=}" in + (driver) + __docker_complete_info_plugins Network && ret=0 + ;; + (id) + __docker_complete_networks_ids && ret=0 + ;; + (name) + __docker_complete_networks_names && ret=0 + ;; + (scope) + opts=('global' 'local' 'swarm') + _describe -t scope-filter-opts "Scope filter options" opts && ret=0 + ;; + (type) + opts=('builtin' 'custom') + _describe -t type-filter-opts "Type filter options" opts && ret=0 + ;; + *) + _message 'value' && ret=0 + ;; + esac + else + opts=('driver' 'id' 'label' 'name' 'scope' 'type') + _describe -t filter-opts "Filter Options" opts -qS "=" && ret=0 + fi + + return ret +} + +__docker_get_networks() { + [[ $PREFIX = -* ]] && return 1 + integer ret=1 + local line s + declare -a lines networks + + type=$1; shift + + lines=(${(f)${:-"$(_call_program commands docker $docker_options network ls)"$'\n'}}) + + # Parse header line to find columns + local i=1 j=1 k header=${lines[1]} + declare -A begin end + while (( j < ${#header} - 1 )); do + i=$(( j + ${${header[$j,-1]}[(i)[^ ]]} - 1 )) + j=$(( i + ${${header[$i,-1]}[(i) ]} - 1 )) + k=$(( j + ${${header[$j,-1]}[(i)[^ ]]} - 2 )) + begin[${header[$i,$((j-1))]}]=$i + end[${header[$i,$((j-1))]}]=$k + done + end[${header[$i,$((j-1))]}]=-1 + lines=(${lines[2,-1]}) + + # Network ID + if [[ $type = (ids|all) ]]; then + for line in $lines; do + s="${line[${begin[NETWORK ID]},${end[NETWORK ID]}]%% ##}" + s="$s:${(l:7:: :::)${${line[${begin[DRIVER]},${end[DRIVER]}]}%% ##}}" + s="$s, ${${line[${begin[SCOPE]},${end[SCOPE]}]}%% ##}" + networks=($networks $s) + done + fi + + # Names + if [[ $type = (names|all) ]]; then + for line in $lines; do + s="${line[${begin[NAME]},${end[NAME]}]%% ##}" + s="$s:${(l:7:: :::)${${line[${begin[DRIVER]},${end[DRIVER]}]}%% ##}}" + s="$s, ${${line[${begin[SCOPE]},${end[SCOPE]}]}%% ##}" + networks=($networks $s) + done + fi + + _describe -t networks-list "networks" networks "$@" && ret=0 + return ret +} + +__docker_complete_networks() { + [[ $PREFIX = -* ]] && return 1 + __docker_get_networks all "$@" +} + +__docker_complete_networks_ids() { + [[ $PREFIX = -* ]] && return 1 + __docker_get_networks ids "$@" +} + +__docker_complete_networks_names() { + [[ $PREFIX = -* ]] && return 1 + __docker_get_networks names "$@" +} + +__docker_network_commands() { + local -a _docker_network_subcommands + _docker_network_subcommands=( + "connect:Connect a container to a network" + "create:Creates a new network with a name specified by the user" + "disconnect:Disconnects a container from a network" + "inspect:Displays detailed information on a network" + "ls:Lists all the networks created by the user" + "prune:Remove all unused networks" + "rm:Deletes one or more networks" + ) + _describe -t docker-network-commands "docker network command" _docker_network_subcommands +} + +__docker_network_subcommand() { + local -a _command_args opts_help + local expl help="--help" + integer ret=1 + + opts_help=("(: -)--help[Print usage]") + + case "$words[1]" in + (connect) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help)*--alias=[Add network-scoped alias for the container]:alias: " \ + "($help)--ip=[IPv4 address]:IPv4: " \ + "($help)--ip6=[IPv6 address]:IPv6: " \ + "($help)*--link=[Add a link to another container]:link:->link" \ + "($help)*--link-local-ip=[Add a link-local address for the container]:IPv4/IPv6: " \ + "($help -)1:network:__docker_complete_networks" \ + "($help -)2:containers:__docker_complete_containers" && ret=0 + + case $state in + (link) + if compset -P "*:"; then + _wanted alias expl "Alias" compadd -E "" && ret=0 + else + __docker_complete_running_containers -qS ":" && ret=0 + fi + ;; + esac + ;; + (create) + _arguments $(__docker_arguments) -A '-*' \ + $opts_help \ + "($help)--attachable[Enable manual container attachment]" \ + "($help)*--aux-address[Auxiliary IPv4 or IPv6 addresses used by network driver]:key=IP: " \ + "($help -d --driver)"{-d=,--driver=}"[Driver to manage the Network]:driver:(null host bridge overlay)" \ + "($help)*--gateway=[IPv4 or IPv6 Gateway for the master subnet]:IP: " \ + "($help)--internal[Restricts external access to the network]" \ + "($help)*--ip-range=[Allocate container ip from a sub-range]:IP/mask: " \ + "($help)--ipam-driver=[IP Address Management Driver]:driver:(default)" \ + "($help)*--ipam-opt=[Custom IPAM plugin options]:opt=value: " \ + "($help)--ipv6[Enable IPv6 networking]" \ + "($help)*--label=[Set metadata on a network]:label=value: " \ + "($help)*"{-o=,--opt=}"[Driver specific options]:opt=value: " \ + "($help)*--subnet=[Subnet in CIDR format that represents a network segment]:IP/mask: " \ + "($help -)1:Network Name: " && ret=0 + ;; + (disconnect) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -)1:network:__docker_complete_networks" \ + "($help -)2:containers:__docker_complete_containers" && ret=0 + ;; + (inspect) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -f --format)"{-f=,--format=}"[Format the output using the given go template]:template: " \ + "($help)--verbose[Show detailed information]" \ + "($help -)*:network:__docker_complete_networks" && ret=0 + ;; + (ls) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help)--no-trunc[Do not truncate the output]" \ + "($help)*"{-f=,--filter=}"[Provide filter values]:filter:__docker_network_complete_ls_filters" \ + "($help)--format=[Format the output using the given Go template]:template: " \ + "($help -q --quiet)"{-q,--quiet}"[Only display network IDs]" && ret=0 + ;; + (prune) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help)*--filter=[Filter values]:filter:__docker_complete_prune_filters" \ + "($help -f --force)"{-f,--force}"[Do not prompt for confirmation]" && ret=0 + ;; + (rm) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -)*:network:__docker_complete_networks" && ret=0 + ;; + (help) + _arguments $(__docker_arguments) ":subcommand:__docker_network_commands" && ret=0 + ;; + esac + + return ret +} + +# EO network + +# BO node + +__docker_node_complete_ls_filters() { + [[ $PREFIX = -* ]] && return 1 + integer ret=1 + + if compset -P '*='; then + case "${${words[-1]%=*}#*=}" in + (id) + __docker_complete_nodes_ids && ret=0 + ;; + (membership) + membership_opts=('accepted' 'pending' 'rejected') + _describe -t membership-opts "membership options" membership_opts && ret=0 + ;; + (name) + __docker_complete_nodes_names && ret=0 + ;; + (role) + role_opts=('manager' 'worker') + _describe -t role-opts "role options" role_opts && ret=0 + ;; + *) + _message 'value' && ret=0 + ;; + esac + else + opts=('id' 'label' 'membership' 'name' 'node.label' 'role') + _describe -t filter-opts "filter options" opts -qS "=" && ret=0 + fi + + return ret +} + +__docker_node_complete_ps_filters() { + [[ $PREFIX = -* ]] && return 1 + integer ret=1 + + if compset -P '*='; then + case "${${words[-1]%=*}#*=}" in + (desired-state) + state_opts=('accepted' 'running' 'shutdown') + _describe -t state-opts "desired state options" state_opts && ret=0 + ;; + *) + _message 'value' && ret=0 + ;; + esac + else + opts=('desired-state' 'id' 'label' 'name') + _describe -t filter-opts "filter options" opts -qS "=" && ret=0 + fi + + return ret +} + +__docker_nodes() { + [[ $PREFIX = -* ]] && return 1 + integer ret=1 + local line s + declare -a lines nodes args + + type=$1; shift + filter=$1; shift + [[ $filter != "none" ]] && args=("-f $filter") + + lines=(${(f)${:-"$(_call_program commands docker $docker_options node ls $args)"$'\n'}}) + # Parse header line to find columns + local i=1 j=1 k header=${lines[1]} + declare -A begin end + while (( j < ${#header} - 1 )); do + i=$(( j + ${${header[$j,-1]}[(i)[^ ]]} - 1 )) + j=$(( i + ${${header[$i,-1]}[(i) ]} - 1 )) + k=$(( j + ${${header[$j,-1]}[(i)[^ ]]} - 2 )) + begin[${header[$i,$((j-1))]}]=$i + end[${header[$i,$((j-1))]}]=$k + done + end[${header[$i,$((j-1))]}]=-1 + lines=(${lines[2,-1]}) + + # Node ID + if [[ $type = (ids|all) ]]; then + for line in $lines; do + s="${line[${begin[ID]},${end[ID]}]%% ##}" + nodes=($nodes $s) + done + fi + + # Names + if [[ $type = (names|all) ]]; then + for line in $lines; do + s="${line[${begin[HOSTNAME]},${end[HOSTNAME]}]%% ##}" + nodes=($nodes $s) + done + fi + + _describe -t nodes-list "nodes" nodes "$@" && ret=0 + return ret +} + +__docker_complete_nodes() { + [[ $PREFIX = -* ]] && return 1 + __docker_nodes all none "$@" +} + +__docker_complete_nodes_ids() { + [[ $PREFIX = -* ]] && return 1 + __docker_nodes ids none "$@" +} + +__docker_complete_nodes_names() { + [[ $PREFIX = -* ]] && return 1 + __docker_nodes names none "$@" +} + +__docker_complete_pending_nodes() { + [[ $PREFIX = -* ]] && return 1 + __docker_nodes all "membership=pending" "$@" +} + +__docker_complete_manager_nodes() { + [[ $PREFIX = -* ]] && return 1 + __docker_nodes all "role=manager" "$@" +} + +__docker_complete_worker_nodes() { + [[ $PREFIX = -* ]] && return 1 + __docker_nodes all "role=worker" "$@" +} + +__docker_node_commands() { + local -a _docker_node_subcommands + _docker_node_subcommands=( + "demote:Demote a node as manager in the swarm" + "inspect:Display detailed information on one or more nodes" + "ls:List nodes in the swarm" + "promote:Promote a node as manager in the swarm" + "rm:Remove one or more nodes from the swarm" + "ps:List tasks running on one or more nodes, defaults to current node" + "update:Update a node" + ) + _describe -t docker-node-commands "docker node command" _docker_node_subcommands +} + +__docker_node_subcommand() { + local -a _command_args opts_help + local expl help="--help" + integer ret=1 + + opts_help=("(: -)--help[Print usage]") + + case "$words[1]" in + (rm|remove) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -f --force)"{-f,--force}"[Force remove a node from the swarm]" \ + "($help -)*:node:__docker_complete_pending_nodes" && ret=0 + ;; + (demote) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -)*:node:__docker_complete_manager_nodes" && ret=0 + ;; + (inspect) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -f --format)"{-f=,--format=}"[Format the output using the given go template]:template: " \ + "($help)--pretty[Print the information in a human friendly format]" \ + "($help -)*:node:__docker_complete_nodes" && ret=0 + ;; + (ls|list) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help)*"{-f=,--filter=}"[Provide filter values]:filter:__docker_node_complete_ls_filters" \ + "($help -q --quiet)"{-q,--quiet}"[Only display IDs]" && ret=0 + ;; + (promote) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -)*:node:__docker_complete_worker_nodes" && ret=0 + ;; + (ps) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -a --all)"{-a,--all}"[Display all instances]" \ + "($help)*"{-f=,--filter=}"[Provide filter values]:filter:__docker_node_complete_ps_filters" \ + "($help)--format=[Format the output using the given go template]:template: " \ + "($help)--no-resolve[Do not map IDs to Names]" \ + "($help)--no-trunc[Do not truncate output]" \ + "($help -q --quiet)"{-q,--quiet}"[Only display IDs]" \ + "($help -)*:node:__docker_complete_nodes" && ret=0 + ;; + (update) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help)--availability=[Availability of the node]:availability:(active pause drain)" \ + "($help)*--label-add=[Add or update a node label]:key=value: " \ + "($help)*--label-rm=[Remove a node label if exists]:label: " \ + "($help)--role=[Role of the node]:role:(manager worker)" \ + "($help -)1:node:__docker_complete_nodes" && ret=0 + ;; + (help) + _arguments $(__docker_arguments) ":subcommand:__docker_node_commands" && ret=0 + ;; + esac + + return ret +} + +# EO node + +# BO plugin + +__docker_plugin_complete_ls_filters() { + [[ $PREFIX = -* ]] && return 1 + integer ret=1 + + if compset -P '*='; then + case "${${words[-1]%=*}#*=}" in + (capability) + opts=('authz' 'ipamdriver' 'logdriver' 'metricscollector' 'networkdriver' 'volumedriver') + _describe -t capability-opts "capability options" opts && ret=0 + ;; + (enabled) + opts=('false' 'true') + _describe -t enabled-opts "enabled options" opts && ret=0 + ;; + *) + _message 'value' && ret=0 + ;; + esac + else + opts=('capability' 'enabled') + _describe -t filter-opts "filter options" opts -qS "=" && ret=0 + fi + + return ret +} + +__docker_plugins() { + [[ $PREFIX = -* ]] && return 1 + integer ret=1 + local line s + declare -a lines plugins args + + filter=$1; shift + [[ $filter != "none" ]] && args=("-f $filter") + + lines=(${(f)${:-"$(_call_program commands docker $docker_options plugin ls $args)"$'\n'}}) + + # Parse header line to find columns + local i=1 j=1 k header=${lines[1]} + declare -A begin end + while (( j < ${#header} - 1 )); do + i=$(( j + ${${header[$j,-1]}[(i)[^ ]]} - 1 )) + j=$(( i + ${${header[$i,-1]}[(i) ]} - 1 )) + k=$(( j + ${${header[$j,-1]}[(i)[^ ]]} - 2 )) + begin[${header[$i,$((j-1))]}]=$i + end[${header[$i,$((j-1))]}]=$k + done + end[${header[$i,$((j-1))]}]=-1 + lines=(${lines[2,-1]}) + + # Name + for line in $lines; do + s="${line[${begin[NAME]},${end[NAME]}]%% ##}" + s="$s:${(l:7:: :::)${${line[${begin[TAG]},${end[TAG]}]}%% ##}}" + plugins=($plugins $s) + done + + _describe -t plugins-list "plugins" plugins "$@" && ret=0 + return ret +} + +__docker_complete_plugins() { + [[ $PREFIX = -* ]] && return 1 + __docker_plugins none "$@" +} + +__docker_complete_enabled_plugins() { + [[ $PREFIX = -* ]] && return 1 + __docker_plugins enabled=true "$@" +} + +__docker_complete_disabled_plugins() { + [[ $PREFIX = -* ]] && return 1 + __docker_plugins enabled=false "$@" +} + +__docker_plugin_commands() { + local -a _docker_plugin_subcommands + _docker_plugin_subcommands=( + "disable:Disable a plugin" + "enable:Enable a plugin" + "inspect:Return low-level information about a plugin" + "install:Install a plugin" + "ls:List plugins" + "push:Push a plugin" + "rm:Remove a plugin" + "set:Change settings for a plugin" + "upgrade:Upgrade an existing plugin" + ) + _describe -t docker-plugin-commands "docker plugin command" _docker_plugin_subcommands +} + +__docker_plugin_subcommand() { + local -a _command_args opts_help + local expl help="--help" + integer ret=1 + + opts_help=("(: -)--help[Print usage]") + + case "$words[1]" in + (disable) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -f --force)"{-f,--force}"[Force the disable of an active plugin]" \ + "($help -)1:plugin:__docker_complete_enabled_plugins" && ret=0 + ;; + (enable) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help)--timeout=[HTTP client timeout (in seconds)]:timeout: " \ + "($help -)1:plugin:__docker_complete_disabled_plugins" && ret=0 + ;; + (inspect) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -f --format)"{-f=,--format=}"[Format the output using the given Go template]:template: " \ + "($help -)*:plugin:__docker_complete_plugins" && ret=0 + ;; + (install) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help)--alias=[Local name for plugin]:alias: " \ + "($help)--disable[Do not enable the plugin on install]" \ + "($help)--disable-content-trust[Skip image verification (default true)]" \ + "($help)--grant-all-permissions[Grant all permissions necessary to run the plugin]" \ + "($help -)1:plugin:__docker_complete_plugins" \ + "($help -)*:key=value: " && ret=0 + ;; + (ls|list) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help)*"{-f=,--filter=}"[Filter output based on conditions provided]:filter:__docker_plugin_complete_ls_filters" \ + "($help --format)--format=[Format the output using the given Go template]:template: " \ + "($help)--no-trunc[Don't truncate output]" \ + "($help -q --quiet)"{-q,--quiet}"[Only display IDs]" && ret=0 + ;; + (push) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help)--disable-content-trust[Skip image verification (default true)]" \ + "($help -)1:plugin:__docker_complete_plugins" && ret=0 + ;; + (rm|remove) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -f --force)"{-f,--force}"[Force the removal of an active plugin]" \ + "($help -)*:plugin:__docker_complete_plugins" && ret=0 + ;; + (set) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -)1:plugin:__docker_complete_plugins" \ + "($help -)*:key=value: " && ret=0 + ;; + (upgrade) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help)--disable-content-trust[Skip image verification (default true)]" \ + "($help)--grant-all-permissions[Grant all permissions necessary to run the plugin]" \ + "($help)--skip-remote-check[Do not check if specified remote plugin matches existing plugin image]" \ + "($help -)1:plugin:__docker_complete_plugins" \ + "($help -):remote: " && ret=0 + ;; + (help) + _arguments $(__docker_arguments) ":subcommand:__docker_plugin_commands" && ret=0 + ;; + esac + + return ret +} + +# EO plugin + +# BO secret + +__docker_secrets() { + [[ $PREFIX = -* ]] && return 1 + integer ret=1 + local line s + declare -a lines secrets + + type=$1; shift + + lines=(${(f)${:-"$(_call_program commands docker $docker_options secret ls)"$'\n'}}) + + # Parse header line to find columns + local i=1 j=1 k header=${lines[1]} + declare -A begin end + while (( j < ${#header} - 1 )); do + i=$(( j + ${${header[$j,-1]}[(i)[^ ]]} - 1 )) + j=$(( i + ${${header[$i,-1]}[(i) ]} - 1 )) + k=$(( j + ${${header[$j,-1]}[(i)[^ ]]} - 2 )) + begin[${header[$i,$((j-1))]}]=$i + end[${header[$i,$((j-1))]}]=$k + done + end[${header[$i,$((j-1))]}]=-1 + lines=(${lines[2,-1]}) + + # ID + if [[ $type = (ids|all) ]]; then + for line in $lines; do + s="${line[${begin[ID]},${end[ID]}]%% ##}" + secrets=($secrets $s) + done + fi + + # Names + if [[ $type = (names|all) ]]; then + for line in $lines; do + s="${line[${begin[NAME]},${end[NAME]}]%% ##}" + secrets=($secrets $s) + done + fi + + _describe -t secrets-list "secrets" secrets "$@" && ret=0 + return ret +} + +__docker_complete_secrets() { + [[ $PREFIX = -* ]] && return 1 + __docker_secrets all "$@" +} + +__docker_secret_commands() { + local -a _docker_secret_subcommands + _docker_secret_subcommands=( + "create:Create a secret using stdin as content" + "inspect:Display detailed information on one or more secrets" + "ls:List secrets" + "rm:Remove one or more secrets" + ) + _describe -t docker-secret-commands "docker secret command" _docker_secret_subcommands +} + +__docker_secret_subcommand() { + local -a _command_args opts_help + local expl help="--help" + integer ret=1 + + opts_help=("(: -)--help[Print usage]") + + case "$words[1]" in + (create) + _arguments $(__docker_arguments) -A '-*' \ + $opts_help \ + "($help)*"{-l=,--label=}"[Secret labels]:label: " \ + "($help -):secret: " && ret=0 + ;; + (inspect) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -f --format)"{-f=,--format=}"[Format the output using the given Go template]:template: " \ + "($help -)*:secret:__docker_complete_secrets" && ret=0 + ;; + (ls|list) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help)--format=[Format the output using the given go template]:template: " \ + "($help -q --quiet)"{-q,--quiet}"[Only display IDs]" && ret=0 + ;; + (rm|remove) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -)*:secret:__docker_complete_secrets" && ret=0 + ;; + (help) + _arguments $(__docker_arguments) ":subcommand:__docker_secret_commands" && ret=0 + ;; + esac + + return ret +} + +# EO secret + +# BO service + +__docker_service_complete_ls_filters() { + [[ $PREFIX = -* ]] && return 1 + integer ret=1 + + if compset -P '*='; then + case "${${words[-1]%=*}#*=}" in + (id) + __docker_complete_services_ids && ret=0 + ;; + (mode) + opts=('global' 'replicated') + _describe -t mode-opts "mode options" opts && ret=0 + ;; + (name) + __docker_complete_services_names && ret=0 + ;; + *) + _message 'value' && ret=0 + ;; + esac + else + opts=('id' 'label' 'mode' 'name') + _describe -t filter-opts "filter options" opts -qS "=" && ret=0 + fi + + return ret +} + +__docker_service_complete_ps_filters() { + [[ $PREFIX = -* ]] && return 1 + integer ret=1 + + if compset -P '*='; then + case "${${words[-1]%=*}#*=}" in + (desired-state) + state_opts=('accepted' 'running' 'shutdown') + _describe -t state-opts "desired state options" state_opts && ret=0 + ;; + *) + _message 'value' && ret=0 + ;; + esac + else + opts=('desired-state' 'id' 'label' 'name') + _describe -t filter-opts "filter options" opts -qS "=" && ret=0 + fi + + return ret +} + +__docker_service_complete_placement_pref() { + [[ $PREFIX = -* ]] && return 1 + integer ret=1 + + if compset -P '*='; then + case "${${words[-1]%=*}#*=}" in + (spread) + opts=('engine.labels' 'node.labels') + _describe -t spread-opts "spread options" opts -qS "." && ret=0 + ;; + *) + _message 'value' && ret=0 + ;; + esac + else + opts=('spread') + _describe -t pref-opts "placement pref options" opts -qS "=" && ret=0 + fi + + return ret +} + +__docker_services() { + [[ $PREFIX = -* ]] && return 1 + integer ret=1 + local line s + declare -a lines services + + type=$1; shift + + lines=(${(f)${:-"$(_call_program commands docker $docker_options service ls)"$'\n'}}) + + # Parse header line to find columns + local i=1 j=1 k header=${lines[1]} + declare -A begin end + while (( j < ${#header} - 1 )); do + i=$(( j + ${${header[$j,-1]}[(i)[^ ]]} - 1 )) + j=$(( i + ${${header[$i,-1]}[(i) ]} - 1 )) + k=$(( j + ${${header[$j,-1]}[(i)[^ ]]} - 2 )) + begin[${header[$i,$((j-1))]}]=$i + end[${header[$i,$((j-1))]}]=$k + done + end[${header[$i,$((j-1))]}]=-1 + lines=(${lines[2,-1]}) + + # Service ID + if [[ $type = (ids|all) ]]; then + for line in $lines; do + s="${line[${begin[ID]},${end[ID]}]%% ##}" + s="$s:${(l:7:: :::)${${line[${begin[IMAGE]},${end[IMAGE]}]}%% ##}}" + services=($services $s) + done + fi + + # Names + if [[ $type = (names|all) ]]; then + for line in $lines; do + s="${line[${begin[NAME]},${end[NAME]}]%% ##}" + s="$s:${(l:7:: :::)${${line[${begin[IMAGE]},${end[IMAGE]}]}%% ##}}" + services=($services $s) + done + fi + + _describe -t services-list "services" services "$@" && ret=0 + return ret +} + +__docker_complete_services() { + [[ $PREFIX = -* ]] && return 1 + __docker_services all "$@" +} + +__docker_complete_services_ids() { + [[ $PREFIX = -* ]] && return 1 + __docker_services ids "$@" +} + +__docker_complete_services_names() { + [[ $PREFIX = -* ]] && return 1 + __docker_services names "$@" +} + +__docker_service_commands() { + local -a _docker_service_subcommands + _docker_service_subcommands=( + "create:Create a new service" + "inspect:Display detailed information on one or more services" + "logs:Fetch the logs of a service or task" + "ls:List services" + "rm:Remove one or more services" + "rollback:Revert changes to a service's configuration" + "scale:Scale one or multiple replicated services" + "ps:List the tasks of a service" + "update:Update a service" + ) + _describe -t docker-service-commands "docker service command" _docker_service_subcommands +} + +__docker_service_subcommand() { + local -a _command_args opts_help opts_create_update + local expl help="--help" + integer ret=1 + + opts_help=("(: -)--help[Print usage]") + opts_create_update=( + "($help)*--cap-add=[Add Linux capabilities]:capability: " + "($help)*--cap-drop=[Drop Linux capabilities]:capability: " + "($help)*--constraint=[Placement constraints]:constraint: " + "($help)--endpoint-mode=[Placement constraints]:mode:(dnsrr vip)" + "($help)*"{-e=,--env=}"[Set environment variables]:env: " + "($help)--health-cmd=[Command to run to check health]:command: " + "($help)--health-interval=[Time between running the check]:time: " + "($help)--health-retries=[Consecutive failures needed to report unhealthy]:retries:(1 2 3 4 5)" + "($help)--health-timeout=[Maximum time to allow one check to run]:time: " + "($help)--hostname=[Service container hostname]:hostname: " \ + "($help)--isolation=[Service container isolation mode]:isolation:(default process hyperv)" \ + "($help)*--label=[Service labels]:label: " + "($help)--limit-cpu=[Limit CPUs]:value: " + "($help)--limit-memory=[Limit Memory]:value: " + "($help)--limit-pids[Limit maximum number of processes (default 0 = unlimited)]" + "($help)--log-driver=[Logging driver for service]:logging driver:__docker_complete_log_drivers" + "($help)*--log-opt=[Logging driver options]:log driver options:__docker_complete_log_options" + "($help)*--mount=[Attach a filesystem mount to the service]:mount: " + "($help)*--network=[Network attachments]:network: " + "($help)--no-healthcheck[Disable any container-specified HEALTHCHECK]" + "($help)--read-only[Mount the container's root filesystem as read only]" + "($help)--replicas=[Number of tasks]:replicas: " + "($help)--reserve-cpu=[Reserve CPUs]:value: " + "($help)--reserve-memory=[Reserve Memory]:value: " + "($help)--restart-condition=[Restart when condition is met]:mode:(any none on-failure)" + "($help)--restart-delay=[Delay between restart attempts]:delay: " + "($help)--restart-max-attempts=[Maximum number of restarts before giving up]:max-attempts: " + "($help)--restart-window=[Window used to evaluate the restart policy]:duration: " + "($help)--rollback-delay=[Delay between task rollbacks]:duration: " + "($help)--rollback-failure-action=[Action on rollback failure]:action:(continue pause)" + "($help)--rollback-max-failure-ratio=[Failure rate to tolerate during a rollback]:failure rate: " + "($help)--rollback-monitor=[Duration after each task rollback to monitor for failure]:duration: " + "($help)--rollback-parallelism=[Maximum number of tasks rolled back simultaneously]:number: " + "($help)*--secret=[Specify secrets to expose to the service]:secret:__docker_complete_secrets" + "($help)--stop-grace-period=[Time to wait before force killing a container]:grace period: " + "($help)--stop-signal=[Signal to stop the container]:signal:_signals" + "($help -t --tty)"{-t,--tty}"[Allocate a pseudo-TTY]" + "($help)--update-delay=[Delay between updates]:delay: " + "($help)--update-failure-action=[Action on update failure]:mode:(continue pause rollback)" + "($help)--update-max-failure-ratio=[Failure rate to tolerate during an update]:fraction: " + "($help)--update-monitor=[Duration after each task update to monitor for failure]:window: " + "($help)--update-parallelism=[Maximum number of tasks updated simultaneously]:number: " + "($help -u --user)"{-u=,--user=}"[Username or UID]:user:_users" + "($help)--with-registry-auth[Send registry authentication details to swarm agents]" + "($help -w --workdir)"{-w=,--workdir=}"[Working directory inside the container]:directory:_directories" + ) + + case "$words[1]" in + (create) + _arguments $(__docker_arguments) \ + $opts_help \ + $opts_create_update \ + "($help)*--container-label=[Container labels]:label: " \ + "($help)*--dns=[Set custom DNS servers]:DNS: " \ + "($help)*--dns-option=[Set DNS options]:DNS option: " \ + "($help)*--dns-search=[Set custom DNS search domains]:DNS search: " \ + "($help)*--env-file=[Read environment variables from a file]:environment file:_files" \ + "($help)*--group=[Set one or more supplementary user groups for the container]:group: _groups " \ + "($help)--mode=[Service Mode]:mode:(global replicated)" \ + "($help)--name=[Service name]:name: " \ + "($help)*--placement-pref=[Add a placement preference]:pref:__docker_service_complete_placement_pref" \ + "($help)*"{-p=,--publish=}"[Publish a port as a node port]:port: " \ + "($help -): :__docker_complete_images" \ + "($help -):command: _command_names -e" \ + "($help -)*::arguments: _normal" && ret=0 + ;; + (inspect) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -f --format)"{-f=,--format=}"[Format the output using the given go template]:template: " \ + "($help)--pretty[Print the information in a human friendly format]" \ + "($help -)*:service:__docker_complete_services" && ret=0 + ;; + (logs) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -f --follow)"{-f,--follow}"[Follow log output]" \ + "($help)--no-resolve[Do not map IDs to Names]" \ + "($help)--no-task-ids[Do not include task IDs]" \ + "($help)--no-trunc[Do not truncate output]" \ + "($help)--since=[Show logs since timestamp]:timestamp: " \ + "($help -n --tail)"{-n=,--tail=}"[Number of lines to show from the end of the logs]:lines:(1 10 20 50 all)" \ + "($help -t --timestamps)"{-t,--timestamps}"[Show timestamps]" \ + "($help -)1:service:__docker_complete_services" && ret=0 + ;; + (ls|list) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help)*"{-f=,--filter=}"[Filter output based on conditions provided]:filter:__docker_service_complete_ls_filters" \ + "($help)--format=[Format the output using the given Go template]:template: " \ + "($help -q --quiet)"{-q,--quiet}"[Only display IDs]" && ret=0 + ;; + (rm|remove) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -)*:service:__docker_complete_services" && ret=0 + ;; + (rollback) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -d --detach)"{-d=false,--detach=false}"[Disable detached mode]" \ + "($help -q --quiet)"{-q,--quiet}"[Suppress progress output]" \ + "($help -)*:service:__docker_complete_services" && ret=0 + ;; + (scale) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -d --detach)"{-d=false,--detach=false}"[Disable detached mode]" \ + "($help -)*:service:->values" && ret=0 + case $state in + (values) + if compset -P '*='; then + _message 'replicas' && ret=0 + else + __docker_complete_services -qS "=" + fi + ;; + esac + ;; + (ps) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help)*"{-f=,--filter=}"[Provide filter values]:filter:__docker_service_complete_ps_filters" \ + "($help)--format=[Format the output using the given go template]:template: " \ + "($help)--no-resolve[Do not map IDs to Names]" \ + "($help)--no-trunc[Do not truncate output]" \ + "($help -q --quiet)"{-q,--quiet}"[Only display task IDs]" \ + "($help -)*:service:__docker_complete_services" && ret=0 + ;; + (update) + _arguments $(__docker_arguments) \ + $opts_help \ + $opts_create_update \ + "($help)--arg=[Service command args]:arguments: _normal" \ + "($help)*--container-label-add=[Add or update container labels]:label: " \ + "($help)*--container-label-rm=[Remove a container label by its key]:label: " \ + "($help)*--dns-add=[Add or update custom DNS servers]:DNS: " \ + "($help)*--dns-rm=[Remove custom DNS servers]:DNS: " \ + "($help)*--dns-option-add=[Add or update DNS options]:DNS option: " \ + "($help)*--dns-option-rm=[Remove DNS options]:DNS option: " \ + "($help)*--dns-search-add=[Add or update custom DNS search domains]:DNS search: " \ + "($help)*--dns-search-rm=[Remove DNS search domains]:DNS search: " \ + "($help)--force[Force update]" \ + "($help)*--group-add=[Add additional supplementary user groups to the container]:group:_groups" \ + "($help)*--group-rm=[Remove previously added supplementary user groups from the container]:group:_groups" \ + "($help)--image=[Service image tag]:image:__docker_complete_repositories" \ + "($help)*--placement-pref-add=[Add a placement preference]:pref:__docker_service_complete_placement_pref" \ + "($help)*--placement-pref-rm=[Remove a placement preference]:pref:__docker_service_complete_placement_pref" \ + "($help)*--publish-add=[Add or update a port]:port: " \ + "($help)*--publish-rm=[Remove a port(target-port mandatory)]:port: " \ + "($help)--rollback[Rollback to previous specification]" \ + "($help -)1:service:__docker_complete_services" && ret=0 + ;; + (help) + _arguments $(__docker_arguments) ":subcommand:__docker_service_commands" && ret=0 + ;; + esac + + return ret +} + +# EO service + +# BO stack + +__docker_stack_complete_ps_filters() { + [[ $PREFIX = -* ]] && return 1 + integer ret=1 + + if compset -P '*='; then + case "${${words[-1]%=*}#*=}" in + (desired-state) + state_opts=('accepted' 'running' 'shutdown') + _describe -t state-opts "desired state options" state_opts && ret=0 + ;; + *) + _message 'value' && ret=0 + ;; + esac + else + opts=('desired-state' 'id' 'name') + _describe -t filter-opts "filter options" opts -qS "=" && ret=0 + fi + + return ret +} + +__docker_stack_complete_services_filters() { + [[ $PREFIX = -* ]] && return 1 + integer ret=1 + + if compset -P '*='; then + case "${${words[-1]%=*}#*=}" in + *) + _message 'value' && ret=0 + ;; + esac + else + opts=('id' 'label' 'name') + _describe -t filter-opts "filter options" opts -qS "=" && ret=0 + fi + + return ret +} + +__docker_stacks() { + [[ $PREFIX = -* ]] && return 1 + integer ret=1 + local line s + declare -a lines stacks + + lines=(${(f)${:-"$(_call_program commands docker $docker_options stack ls)"$'\n'}}) + + # Parse header line to find columns + local i=1 j=1 k header=${lines[1]} + declare -A begin end + while (( j < ${#header} - 1 )); do + i=$(( j + ${${header[$j,-1]}[(i)[^ ]]} - 1 )) + j=$(( i + ${${header[$i,-1]}[(i) ]} - 1 )) + k=$(( j + ${${header[$j,-1]}[(i)[^ ]]} - 2 )) + begin[${header[$i,$((j-1))]}]=$i + end[${header[$i,$((j-1))]}]=$k + done + end[${header[$i,$((j-1))]}]=-1 + lines=(${lines[2,-1]}) + + # Service NAME + for line in $lines; do + s="${line[${begin[NAME]},${end[NAME]}]%% ##}" + stacks=($stacks $s) + done + + _describe -t stacks-list "stacks" stacks "$@" && ret=0 + return ret +} + +__docker_complete_stacks() { + [[ $PREFIX = -* ]] && return 1 + __docker_stacks "$@" +} + +__docker_stack_commands() { + local -a _docker_stack_subcommands + _docker_stack_subcommands=( + "deploy:Deploy a new stack or update an existing stack" + "ls:List stacks" + "ps:List the tasks in the stack" + "rm:Remove the stack" + "services:List the services in the stack" + ) + _describe -t docker-stack-commands "docker stack command" _docker_stack_subcommands +} + +__docker_stack_subcommand() { + local -a _command_args opts_help + local expl help="--help" + integer ret=1 + + opts_help=("(: -)--help[Print usage]") + + case "$words[1]" in + (deploy|up) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -c --compose-file)"{-c=,--compose-file=}"[Path to a Compose file, or '-' to read from stdin]:compose file:_files -g \"*.(yml|yaml)\"" \ + "($help)--with-registry-auth[Send registry authentication details to Swarm agents]" \ + "($help -):stack:__docker_complete_stacks" && ret=0 + ;; + (ls|list) + _arguments $(__docker_arguments) \ + $opts_help && ret=0 + ;; + (ps) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -a --all)"{-a,--all}"[Display all tasks]" \ + "($help)*"{-f=,--filter=}"[Filter output based on conditions provided]:filter:__docker_stack_complete_ps_filters" \ + "($help)--format=[Format the output using the given go template]:template: " \ + "($help)--no-resolve[Do not map IDs to Names]" \ + "($help)--no-trunc[Do not truncate output]" \ + "($help -q --quiet)"{-q,--quiet}"[Only display task IDs]" \ + "($help -):stack:__docker_complete_stacks" && ret=0 + ;; + (rm|remove|down) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -):stack:__docker_complete_stacks" && ret=0 + ;; + (services) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help)*"{-f=,--filter=}"[Filter output based on conditions provided]:filter:__docker_stack_complete_services_filters" \ + "($help)--format=[Format the output using the given Go template]:template: " \ + "($help -q --quiet)"{-q,--quiet}"[Only display IDs]" \ + "($help -):stack:__docker_complete_stacks" && ret=0 + ;; + (help) + _arguments $(__docker_arguments) ":subcommand:__docker_stack_commands" && ret=0 + ;; + esac + + return ret +} + +# EO stack + +# BO swarm + +__docker_swarm_commands() { + local -a _docker_swarm_subcommands + _docker_swarm_subcommands=( + "init:Initialize a swarm" + "join:Join a swarm as a node and/or manager" + "join-token:Manage join tokens" + "leave:Leave a swarm" + "unlock:Unlock swarm" + "unlock-key:Manage the unlock key" + "update:Update the swarm" + ) + _describe -t docker-swarm-commands "docker swarm command" _docker_swarm_subcommands +} + +__docker_swarm_subcommand() { + local -a _command_args opts_help + local expl help="--help" + integer ret=1 + + opts_help=("(: -)--help[Print usage]") + + case "$words[1]" in + (init) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help)--advertise-addr=[Advertised address]:ip\:port: " \ + "($help)--data-path-addr=[Data path IP or interface]:ip " \ + "($help)--data-path-port=[Data Path Port]:port " \ + "($help)--default-addr-pool=[Default address pool]" \ + "($help)--default-addr-pool-mask-length=[Default address pool subnet mask length]" \ + "($help)--autolock[Enable manager autolocking]" \ + "($help)--availability=[Availability of the node]:availability:(active drain pause)" \ + "($help)--cert-expiry=[Validity period for node certificates]:duration: " \ + "($help)--dispatcher-heartbeat=[Dispatcher heartbeat period]:duration: " \ + "($help)*--external-ca=[Specifications of one or more certificate signing endpoints]:endpoint: " \ + "($help)--force-new-cluster[Force create a new cluster from current state]" \ + "($help)--listen-addr=[Listen address]:ip\:port: " \ + "($help)--max-snapshots[Number of additional Raft snapshots to retain]" \ + "($help)--snapshot-interval[Number of log entries between Raft snapshots]" \ + "($help)--task-history-limit=[Task history retention limit]:limit: " && ret=0 + ;; + (join) + _arguments $(__docker_arguments) -A '-*' \ + $opts_help \ + "($help)--advertise-addr=[Advertised address]:ip\:port: " \ + "($help)--data-path-addr=[Data path IP or interface]:ip " \ + "($help)--availability=[Availability of the node]:availability:(active drain pause)" \ + "($help)--listen-addr=[Listen address]:ip\:port: " \ + "($help)--token=[Token for entry into the swarm]:secret: " \ + "($help -):host\:port: " && ret=0 + ;; + (join-token) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -q --quiet)"{-q,--quiet}"[Only display token]" \ + "($help)--rotate[Rotate join token]" \ + "($help -):role:(manager worker)" && ret=0 + ;; + (leave) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -f --force)"{-f,--force}"[Force this node to leave the swarm, ignoring warnings]" && ret=0 + ;; + (unlock) + _arguments $(__docker_arguments) \ + $opts_help && ret=0 + ;; + (unlock-key) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -q --quiet)"{-q,--quiet}"[Only display token]" \ + "($help)--rotate[Rotate unlock token]" && ret=0 + ;; + (update) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help)--autolock[Enable manager autolocking]" \ + "($help)--cert-expiry=[Validity period for node certificates]:duration: " \ + "($help)--dispatcher-heartbeat=[Dispatcher heartbeat period]:duration: " \ + "($help)*--external-ca=[Specifications of one or more certificate signing endpoints]:endpoint: " \ + "($help)--max-snapshots[Number of additional Raft snapshots to retain]" \ + "($help)--snapshot-interval[Number of log entries between Raft snapshots]" \ + "($help)--task-history-limit=[Task history retention limit]:limit: " && ret=0 + ;; + (help) + _arguments $(__docker_arguments) ":subcommand:__docker_network_commands" && ret=0 + ;; + esac + + return ret +} + +# EO swarm + +# BO system + +__docker_system_commands() { + local -a _docker_system_subcommands + _docker_system_subcommands=( + "df:Show docker filesystem usage" + "events:Get real time events from the server" + "info:Display system-wide information" + "prune:Remove unused data" + ) + _describe -t docker-system-commands "docker system command" _docker_system_subcommands +} + +__docker_system_subcommand() { + local -a _command_args opts_help + local expl help="--help" + integer ret=1 + + opts_help=("(: -)--help[Print usage]") + + case "$words[1]" in + (df) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -v --verbose)"{-v,--verbose}"[Show detailed information on space usage]" && ret=0 + ;; + (events) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help)*"{-f=,--filter=}"[Filter values]:filter:__docker_complete_events_filter" \ + "($help)--since=[Events created since this timestamp]:timestamp: " \ + "($help)--until=[Events created until this timestamp]:timestamp: " \ + "($help)--format=[Format the output using the given go template]:template: " && ret=0 + ;; + (info) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -f --format)"{-f=,--format=}"[Format the output using the given go template]:template: " && ret=0 + ;; + (prune) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -a --all)"{-a,--all}"[Remove all unused data, not just dangling ones]" \ + "($help)*--filter=[Filter values]:filter:__docker_complete_prune_filters" \ + "($help -f --force)"{-f,--force}"[Do not prompt for confirmation]" \ + "($help)--volumes=[Remove all unused volumes]" && ret=0 + ;; + (help) + _arguments $(__docker_arguments) ":subcommand:__docker_volume_commands" && ret=0 + ;; + esac + + return ret +} + +# EO system + +# BO volume + +__docker_volume_complete_ls_filters() { + [[ $PREFIX = -* ]] && return 1 + integer ret=1 + + if compset -P '*='; then + case "${${words[-1]%=*}#*=}" in + (dangling) + dangling_opts=('true' 'false') + _describe -t dangling-filter-opts "Dangling Filter Options" dangling_opts && ret=0 + ;; + (driver) + __docker_complete_info_plugins Volume && ret=0 + ;; + (name) + __docker_complete_volumes && ret=0 + ;; + *) + _message 'value' && ret=0 + ;; + esac + else + opts=('dangling' 'driver' 'label' 'name') + _describe -t filter-opts "Filter Options" opts -qS "=" && ret=0 + fi + + return ret +} + +__docker_complete_volumes() { + [[ $PREFIX = -* ]] && return 1 + integer ret=1 + declare -a lines volumes + + lines=(${(f)${:-"$(_call_program commands docker $docker_options volume ls)"$'\n'}}) + + # Parse header line to find columns + local i=1 j=1 k header=${lines[1]} + declare -A begin end + while (( j < ${#header} - 1 )); do + i=$(( j + ${${header[$j,-1]}[(i)[^ ]]} - 1 )) + j=$(( i + ${${header[$i,-1]}[(i) ]} - 1 )) + k=$(( j + ${${header[$j,-1]}[(i)[^ ]]} - 2 )) + begin[${header[$i,$((j-1))]}]=$i + end[${header[$i,$((j-1))]}]=$k + done + end[${header[$i,$((j-1))]}]=-1 + lines=(${lines[2,-1]}) + + # Names + local line s + for line in $lines; do + s="${line[${begin[VOLUME NAME]},${end[VOLUME NAME]}]%% ##}" + s="$s:${(l:7:: :::)${${line[${begin[DRIVER]},${end[DRIVER]}]}%% ##}}" + volumes=($volumes $s) + done + + _describe -t volumes-list "volumes" volumes && ret=0 + return ret +} + +__docker_volume_commands() { + local -a _docker_volume_subcommands + _docker_volume_subcommands=( + "create:Create a volume" + "inspect:Display detailed information on one or more volumes" + "ls:List volumes" + "prune:Remove all unused volumes" + "rm:Remove one or more volumes" + ) + _describe -t docker-volume-commands "docker volume command" _docker_volume_subcommands +} + +__docker_volume_subcommand() { + local -a _command_args opts_help + local expl help="--help" + integer ret=1 + + opts_help=("(: -)--help[Print usage]") + + case "$words[1]" in + (create) + _arguments $(__docker_arguments) -A '-*' \ + $opts_help \ + "($help -d --driver)"{-d=,--driver=}"[Volume driver name]:Driver name:(local)" \ + "($help)*--label=[Set metadata for a volume]:label=value: " \ + "($help)*"{-o=,--opt=}"[Driver specific options]:Driver option: " \ + "($help -)1:Volume name: " && ret=0 + ;; + (inspect) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -f --format)"{-f=,--format=}"[Format the output using the given go template]:template: " \ + "($help -)1:volume:__docker_complete_volumes" && ret=0 + ;; + (ls) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help)*"{-f=,--filter=}"[Provide filter values]:filter:__docker_volume_complete_ls_filters" \ + "($help)--format=[Format the output using the given Go template]:template: " \ + "($help -q --quiet)"{-q,--quiet}"[Only display volume names]" && ret=0 + ;; + (prune) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -f --force)"{-f,--force}"[Do not prompt for confirmation]" && ret=0 + ;; + (rm) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -f --force)"{-f,--force}"[Force the removal of one or more volumes]" \ + "($help -):volume:__docker_complete_volumes" && ret=0 + ;; + (help) + _arguments $(__docker_arguments) ":subcommand:__docker_volume_commands" && ret=0 + ;; + esac + + return ret +} + +# EO volume + +# BO context + +__docker_complete_contexts() { + [[ $PREFIX = -* ]] && return 1 + integer ret=1 + declare -a contexts + + contexts=(${(f)${:-"$(_call_program commands docker $docker_options context ls -q)"$'\n'}}) + + _describe -t context-list "context" contexts && ret=0 + return ret +} + +__docker_context_commands() { + local -a _docker_context_subcommands + _docker_context_subcommands=( + "create:Create new context" + "inspect:Display detailed information on one or more contexts" + "list:List available contexts" + "rm:Remove one or more contexts" + "show:Print the current context" + "update:Update a context" + "use:Set the default context" + ) + _describe -t docker-context-commands "docker context command" _docker_context_subcommands +} + +__docker_context_subcommand() { + local -a _command_args opts_help + local expl help="--help" + integer ret=1 + + opts_help=("(: -)--help[Print usage]") + + case "$words[1]" in + (create) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help)--description=[Description of the context]:description:" \ + "($help)--docker=[Set the docker endpoint]:docker:" \ + "($help)--from=[Create context from a named context]:from:__docker_complete_contexts" \ + "($help -):name: " && ret=0 + ;; + (use) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -)1:context:__docker_complete_contexts" && ret=0 + ;; + (inspect) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -)1:context:__docker_complete_contexts" && ret=0 + ;; + (rm) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -)1:context:__docker_complete_contexts" && ret=0 + ;; + (update) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help)--description=[Description of the context]:description:" \ + "($help)--docker=[Set the docker endpoint]:docker:" \ + "($help -):name:" && ret=0 + ;; + esac + + return ret +} + +# EO context + +__docker_caching_policy() { + oldp=( "$1"(Nmh+1) ) # 1 hour + (( $#oldp )) +} + +__docker_commands() { + local cache_policy + integer force_invalidation=0 + + zstyle -s ":completion:${curcontext}:" cache-policy cache_policy + if [[ -z "$cache_policy" ]]; then + zstyle ":completion:${curcontext}:" cache-policy __docker_caching_policy + fi + + if ( (( ! ${+_docker_hide_legacy_commands} )) || _cache_invalid docker_hide_legacy_commands ) \ + && ! _retrieve_cache docker_hide_legacy_commands; + then + _docker_hide_legacy_commands="${DOCKER_HIDE_LEGACY_COMMANDS}" + _store_cache docker_hide_legacy_commands _docker_hide_legacy_commands + fi + + if [[ "${_docker_hide_legacy_commands}" != "${DOCKER_HIDE_LEGACY_COMMANDS}" ]]; then + force_invalidation=1 + _docker_hide_legacy_commands="${DOCKER_HIDE_LEGACY_COMMANDS}" + _store_cache docker_hide_legacy_commands _docker_hide_legacy_commands + fi + + if ( [[ ${+_docker_subcommands} -eq 0 ]] || _cache_invalid docker_subcommands ) \ + && ! _retrieve_cache docker_subcommands || [[ ${force_invalidation} -eq 1 ]]; + then + local -a lines + lines=(${(f)"$(_call_program commands docker 2>&1)"}) + _docker_subcommands=(${${${(M)${lines[$((${lines[(i)*Commands:]} + 1)),-1]}:# *}## #}/\*# ##/:}) + _docker_subcommands=($_docker_subcommands 'daemon:Enable daemon mode' 'help:Show help for a command') + (( $#_docker_subcommands > 2 )) && _store_cache docker_subcommands _docker_subcommands + fi + _describe -t docker-commands "docker command" _docker_subcommands +} + +__docker_subcommand() { + local -a _command_args opts_help + local expl help="--help" + integer ret=1 + + opts_help=("(: -)--help[Print usage]") + + case "$words[1]" in + (attach|commit|cp|create|diff|exec|export|kill|logs|pause|unpause|port|rename|restart|rm|run|start|stats|stop|top|update|wait) + __docker_container_subcommand && ret=0 + ;; + (build|history|import|load|pull|push|save|tag) + __docker_image_subcommand && ret=0 + ;; + (checkpoint) + local curcontext="$curcontext" state + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -): :->command" \ + "($help -)*:: :->option-or-argument" && ret=0 + + case $state in + (command) + __docker_checkpoint_commands && ret=0 + ;; + (option-or-argument) + curcontext=${curcontext%:*:*}:docker-${words[-1]}: + __docker_checkpoint_subcommand && ret=0 + ;; + esac + ;; + (container) + local curcontext="$curcontext" state + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -): :->command" \ + "($help -)*:: :->option-or-argument" && ret=0 + + case $state in + (command) + __docker_container_commands && ret=0 + ;; + (option-or-argument) + curcontext=${curcontext%:*:*}:docker-${words[-1]}: + __docker_container_subcommand && ret=0 + ;; + esac + ;; + (context) + local curcontext="$curcontext" state + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -): :->command" \ + "($help -)*:: :->option-or-argument" && ret=0 + + case $state in + (command) + __docker_context_commands && ret=0 + ;; + (option-or-argument) + curcontext=${curcontext%:*:*}:docker-${words[-1]}: + __docker_context_subcommand && ret=0 + ;; + esac + ;; + (daemon) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help)*--add-runtime=[Register an additional OCI compatible runtime]:runtime:__docker_complete_runtimes" \ + "($help)*--allow-nondistributable-artifacts=[Push nondistributable artifacts to specified registries]:registry: " \ + "($help)--api-cors-header=[CORS headers in the Engine API]:CORS headers: " \ + "($help)*--authorization-plugin=[Authorization plugins to load]" \ + "($help -b --bridge)"{-b=,--bridge=}"[Attach containers to a network bridge]:bridge:_net_interfaces" \ + "($help)--bip=[Network bridge IP]:IP address: " \ + "($help)--cgroup-parent=[Parent cgroup for all containers]:cgroup: " \ + "($help)--config-file=[Path to daemon configuration file]:Config File:_files" \ + "($help)--containerd=[Path to containerd socket]:socket:_files -g \"*.sock\"" \ + "($help)--containerd-namespace=[Containerd namespace to use]:containerd namespace:" \ + "($help)--containerd-plugins-namespace=[Containerd namespace to use for plugins]:containerd namespace:" \ + "($help)--data-root=[Root directory of persisted Docker data]:path:_directories" \ + "($help -D --debug)"{-D,--debug}"[Enable debug mode]" \ + "($help)--default-gateway[Container default gateway IPv4 address]:IPv4 address: " \ + "($help)--default-gateway-v6[Container default gateway IPv6 address]:IPv6 address: " \ + "($help)--default-shm-size=[Default shm size for containers]:size:" \ + "($help)*--default-ulimit=[Default ulimits for containers]:ulimit: " \ + "($help)*--dns=[DNS server to use]:DNS: " \ + "($help)*--dns-opt=[DNS options to use]:DNS option: " \ + "($help)*--dns-search=[DNS search domains to use]:DNS search: " \ + "($help)*--exec-opt=[Runtime execution options]:runtime execution options: " \ + "($help)--exec-root=[Root directory for execution state files]:path:_directories" \ + "($help)--experimental[Enable experimental features]" \ + "($help)--fixed-cidr=[IPv4 subnet for fixed IPs]:IPv4 subnet: " \ + "($help)--fixed-cidr-v6=[IPv6 subnet for fixed IPs]:IPv6 subnet: " \ + "($help -G --group)"{-G=,--group=}"[Group for the unix socket]:group:_groups" \ + "($help -H --host)"{-H=,--host=}"[tcp://host:port to bind/connect to]:host: " \ + "($help)--icc[Enable inter-container communication]" \ + "($help)--init[Run an init inside containers to forward signals and reap processes]" \ + "($help)--init-path=[Path to the docker-init binary]:docker-init binary:_files" \ + "($help)*--insecure-registry=[Enable insecure registry communication]:registry: " \ + "($help)--ip=[Default IP when binding container ports]" \ + "($help)--ip-forward[Enable net.ipv4.ip_forward]" \ + "($help)--ip-masq[Enable IP masquerading]" \ + "($help)--iptables[Enable addition of iptables rules]" \ + "($help)--ipv6[Enable IPv6 networking]" \ + "($help -l --log-level)"{-l=,--log-level=}"[Logging level]:level:(debug info warn error fatal)" \ + "($help)*--label=[Key=value labels]:label: " \ + "($help)--live-restore[Enable live restore of docker when containers are still running]" \ + "($help)--log-driver=[Default driver for container logs]:logging driver:__docker_complete_log_drivers" \ + "($help)*--log-opt=[Default log driver options for containers]:log driver options:__docker_complete_log_options" \ + "($help)--max-concurrent-downloads[Set the max concurrent downloads for each pull]" \ + "($help)--max-concurrent-uploads[Set the max concurrent uploads for each push]" \ + "($help)--max-download-attempts[Set the max download attempts for each pull]" \ + "($help)--mtu=[Network MTU]:mtu:(0 576 1420 1500 9000)" \ + "($help)--oom-score-adjust=[Set the oom_score_adj for the daemon]:oom-score:(-500)" \ + "($help -p --pidfile)"{-p=,--pidfile=}"[Path to use for daemon PID file]:PID file:_files" \ + "($help)--raw-logs[Full timestamps without ANSI coloring]" \ + "($help)*--registry-mirror=[Preferred registry mirror]:registry mirror: " \ + "($help)--seccomp-profile=[Path to seccomp profile]:path:_files -g \"*.json\"" \ + "($help -s --storage-driver)"{-s=,--storage-driver=}"[Storage driver to use]:driver:(aufs btrfs devicemapper overlay overlay2 vfs zfs)" \ + "($help)--selinux-enabled[Enable selinux support]" \ + "($help)--shutdown-timeout=[Set the shutdown timeout value in seconds]:time: " \ + "($help)*--storage-opt=[Storage driver options]:storage driver options: " \ + "($help)--tls[Use TLS]" \ + "($help)--tlscacert=[Trust certs signed only by this CA]:PEM file:_files -g \"*.(pem|crt)\"" \ + "($help)--tlscert=[Path to TLS certificate file]:PEM file:_files -g \"*.(pem|crt)\"" \ + "($help)--tlskey=[Path to TLS key file]:Key file:_files -g \"*.(pem|key)\"" \ + "($help)--tlsverify[Use TLS and verify the remote]" \ + "($help)--userns-remap=[User/Group setting for user namespaces]:user\:group:->users-groups" \ + "($help)--userland-proxy[Use userland proxy for loopback traffic]" \ + "($help)--userland-proxy-path=[Path to the userland proxy binary]:binary:_files" \ + "($help)--validate[Validate daemon configuration and exit]" && ret=0 + + case $state in + (users-groups) + if compset -P '*:'; then + _groups && ret=0 + else + _describe -t userns-default "default Docker user management" '(default)' && ret=0 + _users && ret=0 + fi + ;; + esac + ;; + (events|info) + __docker_system_subcommand && ret=0 + ;; + (image) + local curcontext="$curcontext" state + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -): :->command" \ + "($help -)*:: :->option-or-argument" && ret=0 + + case $state in + (command) + __docker_image_commands && ret=0 + ;; + (option-or-argument) + curcontext=${curcontext%:*:*}:docker-${words[-1]}: + __docker_image_subcommand && ret=0 + ;; + esac + ;; + (images) + words[1]='ls' + __docker_image_subcommand && ret=0 + ;; + (inspect) + local state + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -f --format)"{-f=,--format=}"[Format the output using the given go template]:template: " \ + "($help -s --size)"{-s,--size}"[Display total file sizes if the type is container]" \ + "($help)--type=[Return JSON for specified type]:type:(container image network node plugin service volume)" \ + "($help -)*: :->values" && ret=0 + + case $state in + (values) + if [[ ${words[(r)--type=container]} == --type=container ]]; then + __docker_complete_containers && ret=0 + elif [[ ${words[(r)--type=image]} == --type=image ]]; then + __docker_complete_images && ret=0 + elif [[ ${words[(r)--type=network]} == --type=network ]]; then + __docker_complete_networks && ret=0 + elif [[ ${words[(r)--type=node]} == --type=node ]]; then + __docker_complete_nodes && ret=0 + elif [[ ${words[(r)--type=plugin]} == --type=plugin ]]; then + __docker_complete_plugins && ret=0 + elif [[ ${words[(r)--type=service]} == --type=secrets ]]; then + __docker_complete_secrets && ret=0 + elif [[ ${words[(r)--type=service]} == --type=service ]]; then + __docker_complete_services && ret=0 + elif [[ ${words[(r)--type=volume]} == --type=volume ]]; then + __docker_complete_volumes && ret=0 + else + __docker_complete_containers + __docker_complete_images + __docker_complete_networks + __docker_complete_nodes + __docker_complete_plugins + __docker_complete_secrets + __docker_complete_services + __docker_complete_volumes && ret=0 + fi + ;; + esac + ;; + (login) + _arguments $(__docker_arguments) -A '-*' \ + $opts_help \ + "($help -p --password)"{-p=,--password=}"[Password]:password: " \ + "($help)--password-stdin[Read password from stdin]" \ + "($help -u --username)"{-u=,--username=}"[Username]:username: " \ + "($help -)1:server: " && ret=0 + ;; + (logout) + _arguments $(__docker_arguments) -A '-*' \ + $opts_help \ + "($help -)1:server: " && ret=0 + ;; + (network) + local curcontext="$curcontext" state + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -): :->command" \ + "($help -)*:: :->option-or-argument" && ret=0 + + case $state in + (command) + __docker_network_commands && ret=0 + ;; + (option-or-argument) + curcontext=${curcontext%:*:*}:docker-${words[-1]}: + __docker_network_subcommand && ret=0 + ;; + esac + ;; + (node) + local curcontext="$curcontext" state + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -): :->command" \ + "($help -)*:: :->option-or-argument" && ret=0 + + case $state in + (command) + __docker_node_commands && ret=0 + ;; + (option-or-argument) + curcontext=${curcontext%:*:*}:docker-${words[-1]}: + __docker_node_subcommand && ret=0 + ;; + esac + ;; + (plugin) + local curcontext="$curcontext" state + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -): :->command" \ + "($help -)*:: :->option-or-argument" && ret=0 + + case $state in + (command) + __docker_plugin_commands && ret=0 + ;; + (option-or-argument) + curcontext=${curcontext%:*:*}:docker-${words[-1]}: + __docker_plugin_subcommand && ret=0 + ;; + esac + ;; + (ps) + words[1]='ls' + __docker_container_subcommand && ret=0 + ;; + (rmi) + words[1]='rm' + __docker_image_subcommand && ret=0 + ;; + (search) + _arguments $(__docker_arguments) -A '-*' \ + $opts_help \ + "($help)*"{-f=,--filter=}"[Filter values]:filter:__docker_complete_search_filters" \ + "($help)--limit=[Maximum returned search results]:limit:(1 5 10 25 50)" \ + "($help)--no-trunc[Do not truncate output]" \ + "($help -):term: " && ret=0 + ;; + (secret) + local curcontext="$curcontext" state + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -): :->command" \ + "($help -)*:: :->option-or-argument" && ret=0 + + case $state in + (command) + __docker_secret_commands && ret=0 + ;; + (option-or-argument) + curcontext=${curcontext%:*:*}:docker-${words[-1]}: + __docker_secret_subcommand && ret=0 + ;; + esac + ;; + (service) + local curcontext="$curcontext" state + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -): :->command" \ + "($help -)*:: :->option-or-argument" && ret=0 + + case $state in + (command) + __docker_service_commands && ret=0 + ;; + (option-or-argument) + curcontext=${curcontext%:*:*}:docker-${words[-1]}: + __docker_service_subcommand && ret=0 + ;; + esac + ;; + (stack) + local curcontext="$curcontext" state + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -): :->command" \ + "($help -)*:: :->option-or-argument" && ret=0 + + case $state in + (command) + __docker_stack_commands && ret=0 + ;; + (option-or-argument) + curcontext=${curcontext%:*:*}:docker-${words[-1]}: + __docker_stack_subcommand && ret=0 + ;; + esac + ;; + (swarm) + local curcontext="$curcontext" state + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -): :->command" \ + "($help -)*:: :->option-or-argument" && ret=0 + + case $state in + (command) + __docker_swarm_commands && ret=0 + ;; + (option-or-argument) + curcontext=${curcontext%:*:*}:docker-${words[-1]}: + __docker_swarm_subcommand && ret=0 + ;; + esac + ;; + (system) + local curcontext="$curcontext" state + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -): :->command" \ + "($help -)*:: :->option-or-argument" && ret=0 + + case $state in + (command) + __docker_system_commands && ret=0 + ;; + (option-or-argument) + curcontext=${curcontext%:*:*}:docker-${words[-1]}: + __docker_system_subcommand && ret=0 + ;; + esac + ;; + (version) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -f --format)"{-f=,--format=}"[Format the output using the given go template]:template: " && ret=0 + ;; + (volume) + local curcontext="$curcontext" state + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -): :->command" \ + "($help -)*:: :->option-or-argument" && ret=0 + + case $state in + (command) + __docker_volume_commands && ret=0 + ;; + (option-or-argument) + curcontext=${curcontext%:*:*}:docker-${words[-1]}: + __docker_volume_subcommand && ret=0 + ;; + esac + ;; + (help) + _arguments $(__docker_arguments) ":subcommand:__docker_commands" && ret=0 + ;; + esac + + return ret +} + +_docker() { + # Support for subservices, which allows for `compdef _docker docker-shell=_docker_containers`. + # Based on /usr/share/zsh/functions/Completion/Unix/_git without support for `ret`. + if [[ $service != docker ]]; then + _call_function - _$service + return + fi + + local curcontext="$curcontext" state line help="-h --help" + integer ret=1 + typeset -A opt_args + + _arguments $(__docker_arguments) -C \ + "(: -)"{-h,--help}"[Print usage]" \ + "($help)--config[Location of client config files]:path:_directories" \ + "($help -c --context)"{-c=,--context=}"[Execute the command in a docker context]:context:__docker_complete_contexts" \ + "($help -D --debug)"{-D,--debug}"[Enable debug mode]" \ + "($help -H --host)"{-H=,--host=}"[tcp://host:port to bind/connect to]:host: " \ + "($help -l --log-level)"{-l=,--log-level=}"[Logging level]:level:(debug info warn error fatal)" \ + "($help)--tls[Use TLS]" \ + "($help)--tlscacert=[Trust certs signed only by this CA]:PEM file:_files -g "*.(pem|crt)"" \ + "($help)--tlscert=[Path to TLS certificate file]:PEM file:_files -g "*.(pem|crt)"" \ + "($help)--tlskey=[Path to TLS key file]:Key file:_files -g "*.(pem|key)"" \ + "($help)--tlsverify[Use TLS and verify the remote]" \ + "($help)--userland-proxy[Use userland proxy for loopback traffic]" \ + "($help -v --version)"{-v,--version}"[Print version information and quit]" \ + "($help -): :->command" \ + "($help -)*:: :->option-or-argument" && ret=0 + + local host=${opt_args[-H]}${opt_args[--host]} + local config=${opt_args[--config]} + local context=${opt_args[-c]}${opt_args[--context]} + local docker_options="${host:+--host $host} ${config:+--config $config} ${context:+--context $context} " + + case $state in + (command) + __docker_commands && ret=0 + ;; + (option-or-argument) + curcontext=${curcontext%:*:*}:docker-$words[1]: + __docker_subcommand && ret=0 + ;; + esac + + return ret +} + +_dockerd() { + integer ret=1 + words[1]='daemon' + __docker_subcommand && ret=0 + return ret +} + +_docker "$@" + +# Local Variables: +# mode: Shell-Script +# sh-indentation: 4 +# indent-tabs-mode: nil +# sh-basic-offset: 4 +# End: +# vim: ft=zsh sw=4 ts=4 et diff --git a/dot_oh-my-zsh/plugins/docker/docker.plugin.zsh b/dot_oh-my-zsh/plugins/docker/docker.plugin.zsh new file mode 100644 index 0000000..8684a97 --- /dev/null +++ b/dot_oh-my-zsh/plugins/docker/docker.plugin.zsh @@ -0,0 +1,33 @@ +alias dbl='docker build' +alias dcin='docker container inspect' +alias dcls='docker container ls' +alias dclsa='docker container ls -a' +alias dib='docker image build' +alias dii='docker image inspect' +alias dils='docker image ls' +alias dipu='docker image push' +alias dirm='docker image rm' +alias dit='docker image tag' +alias dlo='docker container logs' +alias dnc='docker network create' +alias dncn='docker network connect' +alias dndcn='docker network disconnect' +alias dni='docker network inspect' +alias dnls='docker network ls' +alias dnrm='docker network rm' +alias dpo='docker container port' +alias dpu='docker pull' +alias dr='docker container run' +alias drit='docker container run -it' +alias drm='docker container rm' +alias 'drm!'='docker container rm -f' +alias dst='docker container start' +alias drs='docker container restart' +alias dsta='docker stop $(docker ps -q)' +alias dstp='docker container stop' +alias dtop='docker top' +alias dvi='docker volume inspect' +alias dvls='docker volume ls' +alias dvprune='docker volume prune' +alias dxc='docker container exec' +alias dxcit='docker container exec -it' diff --git a/dot_oh-my-zsh/plugins/doctl/README.md b/dot_oh-my-zsh/plugins/doctl/README.md new file mode 100644 index 0000000..a81e90b --- /dev/null +++ b/dot_oh-my-zsh/plugins/doctl/README.md @@ -0,0 +1,9 @@ +# Doctl + +This plugin provides completion for [Doctl](https://github.com/digitalocean/doctl). + +To use it add doctl to the plugins array in your zshrc file. + +```bash +plugins=(... doctl) +``` diff --git a/dot_oh-my-zsh/plugins/doctl/doctl.plugin.zsh b/dot_oh-my-zsh/plugins/doctl/doctl.plugin.zsh new file mode 100644 index 0000000..7b3a384 --- /dev/null +++ b/dot_oh-my-zsh/plugins/doctl/doctl.plugin.zsh @@ -0,0 +1,17 @@ +# Autocompletion for doctl, the command line tool for DigitalOcean service +# +# doctl project: https://github.com/digitalocean/doctl +# +# Author: https://github.com/HalisCz + +if (( ! $+commands[doctl] )); then + return +fi + +if [[ ! -f "$ZSH_CACHE_DIR/completions/_doctl" ]]; then + typeset -g -A _comps + autoload -Uz _doctl + _comps[doctl]=_doctl +fi + +doctl completion zsh >| "$ZSH_CACHE_DIR/completions/_doctl" &| diff --git a/dot_oh-my-zsh/plugins/dotenv/README.md b/dot_oh-my-zsh/plugins/dotenv/README.md new file mode 100644 index 0000000..ab9d329 --- /dev/null +++ b/dot_oh-my-zsh/plugins/dotenv/README.md @@ -0,0 +1,92 @@ +# dotenv + +Automatically load your project ENV variables from `.env` file when you `cd` into project root directory. + +Storing configuration in the environment is one of the tenets of a [twelve-factor app](https://www.12factor.net). Anything that is likely to change between deployment environments, such as resource handles for databases or credentials for external services, should be extracted from the code into environment variables. + +To use it, add `dotenv` to the plugins array in your zshrc file: + +```sh +plugins=(... dotenv) +``` + +## Usage + +Create `.env` file inside your project root directory and put your ENV variables there. + +For example: + +```sh +export AWS_S3_TOKEN=d84a83539134f28f412c652b09f9f98eff96c9a +export SECRET_KEY=7c6c72d959416d5aa368a409362ec6e2ac90d7f +export MONGO_URI=mongodb://127.0.0.1:27017 +export PORT=3001 +``` + +`export` is optional. This format works as well: + +```sh +AWS_S3_TOKEN=d84a83539134f28f412c652b09f9f98eff96c9a +SECRET_KEY=7c6c72d959416d5aa368a409362ec6e2ac90d7f +MONGO_URI=mongodb://127.0.0.1:27017 +PORT=3001 +``` + +You can even mix both formats, although it's probably a bad idea. + +## Settings + +### ZSH_DOTENV_FILE + +You can also modify the name of the file to be loaded with the variable `ZSH_DOTENV_FILE`. +If the variable isn't set, the plugin will default to use `.env`. +For example, this will make the plugin look for files named `.dotenv` and load them: + +```zsh +# in ~/.zshrc, before Oh My Zsh is sourced: +ZSH_DOTENV_FILE=.dotenv +``` + +### ZSH_DOTENV_PROMPT + +Set `ZSH_DOTENV_PROMPT=false` in your zshrc file if you don't want the confirmation message. +You can also choose the `Always` option when prompted to always allow sourcing the .env file +in that directory. See the next section for more details. + +### ZSH_DOTENV_ALLOWED_LIST, ZSH_DOTENV_DISALLOWED_LIST + +The default behavior of the plugin is to always ask whether to source a dotenv file. There's +a **Y**es, **N**o, **A**lways and N**e**ver option. If you choose Always, the directory of the .env file +will be added to an allowed list; if you choose Never, it will be added to a disallowed list. +If a directory is found in either of those lists, the plugin won't ask for confirmation and will +instead either source the .env file or proceed without action respectively. + +The allowed and disallowed lists are saved by default in `$ZSH_CACHE_DIR/dotenv-allowed.list` and +`$ZSH_CACHE_DIR/dotenv-disallowed.list` respectively. If you want to change that location, +change the `$ZSH_DOTENV_ALLOWED_LIST` and `$ZSH_DOTENV_DISALLOWED_LIST` variables, like so: + +```zsh +# in ~/.zshrc, before Oh My Zsh is sourced: +ZSH_DOTENV_ALLOWED_LIST=/path/to/dotenv/allowed/list +ZSH_DOTENV_DISALLOWED_LIST=/path/to/dotenv/disallowed/list +``` + +The file is just a list of directories, separated by a newline character. If you want +to change your decision, just edit the file and remove the line for the directory you want to +change. + +NOTE: if a directory is found in both the allowed and disallowed lists, the disallowed list +takes preference, _i.e._ the .env file will never be sourced. + +## Version Control + +**It's strongly recommended to add `.env` file to `.gitignore`**, because usually it contains sensitive information such as your credentials, secret keys, passwords etc. You don't want to commit this file, it's supposed to be local only. + +## Disclaimer + +This plugin only sources the `.env` file. Nothing less, nothing more. It doesn't do any checks. It's designed to be the fastest and simplest option. You're responsible for the `.env` file content. You can put some code (or weird symbols) there, but do it on your own risk. `dotenv` is the basic tool, yet it does the job. + +If you need more advanced and feature-rich ENV management, check out these awesome projects: + +* [direnv](https://github.com/direnv/direnv) +* [zsh-autoenv](https://github.com/Tarrasch/zsh-autoenv) diff --git a/dot_oh-my-zsh/plugins/dotenv/dotenv.plugin.zsh b/dot_oh-my-zsh/plugins/dotenv/dotenv.plugin.zsh new file mode 100644 index 0000000..46cd4b1 --- /dev/null +++ b/dot_oh-my-zsh/plugins/dotenv/dotenv.plugin.zsh @@ -0,0 +1,67 @@ +## Settings + +# Filename of the dotenv file to look for +: ${ZSH_DOTENV_FILE:=.env} + +# Path to the file containing allowed paths +: ${ZSH_DOTENV_ALLOWED_LIST:="${ZSH_CACHE_DIR:-$ZSH/cache}/dotenv-allowed.list"} +: ${ZSH_DOTENV_DISALLOWED_LIST:="${ZSH_CACHE_DIR:-$ZSH/cache}/dotenv-disallowed.list"} + + +## Functions + +source_env() { + if [[ ! -f "$ZSH_DOTENV_FILE" ]]; then + return + fi + + if [[ "$ZSH_DOTENV_PROMPT" != false ]]; then + local confirmation dirpath="${PWD:A}" + + # make sure there is an (dis-)allowed file + touch "$ZSH_DOTENV_ALLOWED_LIST" + touch "$ZSH_DOTENV_DISALLOWED_LIST" + + # early return if disallowed + if command grep -Fx -q "$dirpath" "$ZSH_DOTENV_DISALLOWED_LIST" &>/dev/null; then + return + fi + + # check if current directory's .env file is allowed or ask for confirmation + if ! command grep -Fx -q "$dirpath" "$ZSH_DOTENV_ALLOWED_LIST" &>/dev/null; then + # get cursor column and print new line before prompt if not at line beginning + local column + echo -ne "\e[6n" > /dev/tty + read -t 1 -s -d R column < /dev/tty + column="${column##*\[*;}" + [[ $column -eq 1 ]] || echo + + # print same-line prompt and output newline character if necessary + echo -n "dotenv: found '$ZSH_DOTENV_FILE' file. Source it? ([Y]es/[n]o/[a]lways/n[e]ver) " + read -k 1 confirmation + [[ "$confirmation" = $'\n' ]] || echo + + # check input + case "$confirmation" in + [nN]) return ;; + [aA]) echo "$dirpath" >> "$ZSH_DOTENV_ALLOWED_LIST" ;; + [eE]) echo "$dirpath" >> "$ZSH_DOTENV_DISALLOWED_LIST"; return ;; + *) ;; # interpret anything else as a yes + esac + fi + fi + + # test .env syntax + zsh -fn $ZSH_DOTENV_FILE || { + echo "dotenv: error when sourcing '$ZSH_DOTENV_FILE' file" >&2 + return 1 + } + + setopt localoptions allexport + source $ZSH_DOTENV_FILE +} + +autoload -U add-zsh-hook +add-zsh-hook chpwd source_env + +source_env diff --git a/dot_oh-my-zsh/plugins/dotnet/README.md b/dot_oh-my-zsh/plugins/dotnet/README.md new file mode 100644 index 0000000..87dfd8f --- /dev/null +++ b/dot_oh-my-zsh/plugins/dotnet/README.md @@ -0,0 +1,24 @@ +# .NET Core CLI plugin + +This plugin provides completion and useful aliases for [.NET Core CLI](https://dotnet.microsoft.com/). + +To use it, add `dotnet` to the plugins array in your zshrc file. + +``` +plugins=(... dotnet) +``` + +## Aliases + +| Alias | Command | Description | +|-------|------------------|-------------------------------------------------------------------| +| dn | dotnet new | Create a new .NET project or file. | +| dr | dotnet run | Build and run a .NET project output. | +| dt | dotnet test | Run unit tests using the test runner specified in a .NET project. | +| dw | dotnet watch | Watch for source file changes and restart the dotnet command. | +| dwr | dotnet watch run | Watch for source file changes and restart the `run` command. | +| ds | dotnet sln | Modify Visual Studio solution files. | +| da | dotnet add | Add a package or reference to a .NET project. | +| dp | dotnet pack | Create a NuGet package. | +| dng | dotnet nuget | Provides additional NuGet commands. | +| db | dotnet build | Build a .NET project | diff --git a/dot_oh-my-zsh/plugins/dotnet/dotnet.plugin.zsh b/dot_oh-my-zsh/plugins/dotnet/dotnet.plugin.zsh new file mode 100644 index 0000000..8ea31cd --- /dev/null +++ b/dot_oh-my-zsh/plugins/dotnet/dotnet.plugin.zsh @@ -0,0 +1,33 @@ +# This scripts is copied from (MIT License): +# https://github.com/dotnet/toolset/blob/master/scripts/register-completions.zsh + +_dotnet_zsh_complete() +{ + local completions=("$(dotnet complete "$words")") + + # If the completion list is empty, just continue with filename selection + if [ -z "$completions" ] + then + _arguments '*::arguments: _normal' + return + fi + + # This is not a variable assignment, don't remove spaces! + _values = "${(ps:\n:)completions}" +} + +compdef _dotnet_zsh_complete dotnet + +# Aliases bellow are here for backwards compatibility +# added by Shaun Tabone (https://github.com/xontab) + +alias dn='dotnet new' +alias dr='dotnet run' +alias dt='dotnet test' +alias dw='dotnet watch' +alias dwr='dotnet watch run' +alias ds='dotnet sln' +alias da='dotnet add' +alias dp='dotnet pack' +alias dng='dotnet nuget' +alias db='dotnet build' diff --git a/dot_oh-my-zsh/plugins/droplr/README.md b/dot_oh-my-zsh/plugins/droplr/README.md new file mode 100644 index 0000000..6daa254 --- /dev/null +++ b/dot_oh-my-zsh/plugins/droplr/README.md @@ -0,0 +1,19 @@ +# droplr + +Use [Droplr](https://droplr.com/) from the command line to upload files and shorten +links. It needs to have [Droplr.app](https://droplr.com/apps) installed and logged +in. MacOS only. + +To use it, add `droplr` to the `$plugins` variable in your zshrc file: + +```zsh +plugins=(... droplr) +``` + +Author: [Fabio Fernandes](https://github.com/fabiofl) + +## Examples + +- Upload a file: `droplr ./path/to/file/` + +- Shorten a link: `droplr https://example.com` diff --git a/dot_oh-my-zsh/plugins/droplr/droplr.plugin.zsh b/dot_oh-my-zsh/plugins/droplr/droplr.plugin.zsh new file mode 100644 index 0000000..af0a212 --- /dev/null +++ b/dot_oh-my-zsh/plugins/droplr/droplr.plugin.zsh @@ -0,0 +1,15 @@ +# Only compatible with MacOS +[[ "$OSTYPE" == darwin* ]] || return + +droplr() { + if [[ $# -eq 0 ]]; then + echo You need to specify a parameter. >&2 + return 1 + fi + + if [[ "$1" =~ ^https?:// ]]; then + osascript -e 'tell app "Droplr" to shorten "'"$1"'"' + else + open -ga /Applications/Droplr.app "$1" + fi +} diff --git a/dot_oh-my-zsh/plugins/drush/README.md b/dot_oh-my-zsh/plugins/drush/README.md new file mode 100644 index 0000000..29b429e --- /dev/null +++ b/dot_oh-my-zsh/plugins/drush/README.md @@ -0,0 +1,66 @@ +# Drush + +This plugin adds aliases and functions for [Drush](https://www.drush.org), a command-line shell +and Unix scripting interface for Drupal. It also adds completion for the `drush` command. + +To enable it, add `drush` to the plugins array in zshrc file: + +```zsh +plugins=(... drush) +``` + +## Aliases + +| Alias | Command | Description | +| ------- | ----------------------------------------------------------- | -------------------------------------------------------------------- | +| `dr` | `drush` | Display drush help | +| `drca` | `drush cc all` | _(Deprecated in Drush 8)_ Clear all drupal caches | +| `drcb` | `drush cc block` | _(Deprecated in Drush 8)_ Clear block cache | +| `drcex` | `drush config:export -y` | Export Drupal configuration to a directory | +| `drcg` | `drush cc registry` | _(Deprecated in Drush 8)_ Clear registry cache | +| `drcim` | `drush config:import -y` | Import config from a config directory | +| `drcj` | `drush cc css-js` | Clear css-js cache | +| `drcm` | `drush cc menu` | Clear menu cache | +| `drcml` | `drush cc module-list` | Clear module-list cache | +| `drcr` | `drush core-cron` | Run all cron hooks in all active modules for specified site | +| `drct` | `drush cc theme-registry` | Clear theme-registry cache | +| `drcv` | `drush cc views` | Clear views cache _(make sure that the views module is enabled)_ | +| `drdmp` | `drush drush sql-dump --ordered-dump --result-file=dumpsql` | Backup database in a new dump.sql file | +| `drf` | `drush features` | Display features status | +| `drfr` | `drush features-revert -y` | Revert a feature module on your site | +| `drfra` | `drush features-revert-all` | Revert all enabled feature module on your site | +| `drfu` | `drush features-update -y` | Update a feature module on your site | +| `drif` | `drush image-flush --all` | Flush all derived images | +| `drpm` | `drush pm-list --type=module` | Show a list of available modules | +| `drst` | `drush core-status` | Provides a birds-eye view of the current Drupal installation, if any | +| `druli` | `drush user:login` | Display a one time login link for user ID 1, or another user | +| `drup` | `drush updatedb` | Apply any database updates required (as with running update.php) | +| `drups` | `drush updatedb-status` | List any pending database updates | +| `drv` | `drush version` | Show drush version | +| `drvd` | `drush variable-del` | Delete a variable | +| `drvg` | `drush variable-get` | Get a list of some or all site variables and values | +| `drvs` | `drush variable-set` | Set a variable | +| `drws` | `drush watchdog:show` | Show watchdog messages | +| `drwse` | `drush watchdog:show --extended` | Show watchdog messages with extended information | +| `drwst` | `drush watchdog:tail` | Tail watchdog messages | + +## Functions + +- `dren`: download and enable one or more extensions (modules or themes). Must be + invoked with one or more parameters, e.g.: `dren devel` or `dren devel module_filter views`. + +- `drf`: edit drushrc, site alias, and Drupal settings.php files. + Can be invoked with one or without parameters, e.g.: `drf 1`. + +- `dris`: disable one or more extensions (modules or themes). Must be invoked with + one or more parameters, e.g.: `dris devel` or `dris devel module_filter views`. + +- `drpu`: uninstall one or more modules. Must be invoked with one or more + parameters, e.g.: `drpu devel` or `drpu devel module_filter views`. + +- `drnew`: creates a brand new drupal website. Note: as soon as the installation + is complete, `drush` will print a username and a random password into the terminal: + + ```text + Installation complete. User name: admin User password: cf7t8yqNEm + ``` diff --git a/dot_oh-my-zsh/plugins/drush/drush.complete.sh b/dot_oh-my-zsh/plugins/drush/drush.complete.sh new file mode 100644 index 0000000..38b882e --- /dev/null +++ b/dot_oh-my-zsh/plugins/drush/drush.complete.sh @@ -0,0 +1,50 @@ +# BASH completion script for Drush. +# +# Place this in your /etc/bash_completion.d/ directory or source it from your +# ~/.bash_completion or ~/.bash_profile files. Alternatively, source +# examples/example.bashrc instead, as it will automatically find and source +# this file. +# +# If you're using ZSH instead of BASH, add the following to your ~/.zshrc file +# and source it. +# +# autoload bashcompinit +# bashcompinit +# source /path/to/your/drush.complete.sh + +# Ensure drush is available. +which drush > /dev/null || alias drush &> /dev/null || return + +__drush_ps1() { + f="${TMPDIR:-/tmp/}/drush-env-${USER}/drush-drupal-site-$$" + if [ -f $f ] + then + __DRUPAL_SITE=$(cat "$f") + else + __DRUPAL_SITE="$DRUPAL_SITE" + fi + + # Set DRUSH_PS1_SHOWCOLORHINTS to a non-empty value and define a + # __drush_ps1_colorize_alias() function for color hints in your Drush PS1 + # prompt. See example.prompt.sh for an example implementation. + if [ -n "${__DRUPAL_SITE-}" ] && [ -n "${DRUSH_PS1_SHOWCOLORHINTS-}" ]; then + __drush_ps1_colorize_alias + fi + + [[ -n "$__DRUPAL_SITE" ]] && printf "${1:- (%s)}" "$__DRUPAL_SITE" +} + +# Completion function, uses the "drush complete" command to retrieve +# completions for a specific command line COMP_WORDS. +_drush_completion() { + # Set IFS to newline (locally), since we only use newline separators, and + # need to retain spaces (or not) after completions. + local IFS=$'\n' + # The '< /dev/null' is a work around for a bug in php libedit stdin handling. + # Note that libedit in place of libreadline in some distributions. See: + # https://bugs.launchpad.net/ubuntu/+source/php5/+bug/322214 + COMPREPLY=( $(drush --early=includes/complete.inc "${COMP_WORDS[@]}" < /dev/null 2> /dev/null) ) +} + +# Register our completion function. We include common short aliases for Drush. +complete -o bashdefault -o default -o nospace -F _drush_completion d dr drush drush5 drush6 drush7 drush8 drush.php diff --git a/dot_oh-my-zsh/plugins/drush/drush.plugin.zsh b/dot_oh-my-zsh/plugins/drush/drush.plugin.zsh new file mode 100644 index 0000000..48e8ddb --- /dev/null +++ b/dot_oh-my-zsh/plugins/drush/drush.plugin.zsh @@ -0,0 +1,107 @@ +# Functions +function dren() { + drush en "$@" -y +} + +function dris() { + drush pm-disable "$@" -y +} + +function drpu() { + drush pm-uninstall "$@" -y +} + +function drf() { + if [[ -z "$1" ]] then + drush core-config + else + drush core-config --choice=$1 + fi +} + +function drfi() { + case "$1" in + fields) drush field-info fields ;; + types) drush field-info types ;; + *) drush field-info ;; + esac +} + +function drnew() { + ( + cd + echo "Website's name: " + read WEBSITE_NAME + + HOST=http://$(hostname -i)/ + + if [[ $WEBSITE_NAME == "" ]] then + MINUTES=$(date +%M:%S) + WEBSITE_NAME="Drupal-$MINUTES" + echo "Your website will be named: $WEBSITE_NAME" + fi + + drush dl drupal --drupal-project-rename=$WEBSITE_NAME + + echo "Type your localhost directory: (Leave empty for /var/www/html/)" + read DIRECTORY + + if [[ $DIRECTORY == "" ]] then + DIRECTORY="/var/www/html/" + fi + + echo "Moving to $DIRECTORY$WEBSITE_NAME" + sudo mv $WEBSITE_NAME $DIRECTORY + cd $DIRECTORY$WEBSITE_NAME + + echo "Database's user: " + read DATABASE_USR + echo "Database's password: " + read -s DATABASE_PWD + echo "Database's name for your project: " + read DATABASE + + DB_URL="mysql://$DATABASE_USR:$DATABASE_PWD@localhost/$DATABASE" + drush site-install standard --db-url=$DB_URL --site-name=$WEBSITE_NAME + + open_command $HOST$WEBSITE_NAME + echo "Done" + ) +} + +# Aliases +alias dr="drush" +alias drca="drush cc all" # Deprecated for Drush 8 +alias drcb="drush cc block" # Deprecated for Drush 8 +alias drcex="drush config:export -y" +alias drcg="drush cc registry" # Deprecated for Drush 8 +alias drcim="drush config:import -y" +alias drcj="drush cc css-js" +alias drcm="drush cc menu" +alias drcml="drush cc module-list" +alias drcr="drush core-cron" +alias drct="drush cc theme-registry" +alias drcv="drush cc views" +alias drdmp="drush sql-dump --ordered-dump --result-file=dump.sql" +alias drf="drush features" +alias drfr="drush features-revert -y" +alias drfra="drush features-revert-all" +alias drfu="drush features-update -y" +alias drif="drush image-flush --all" +alias drpm="drush pm-list --type=module" +alias drst="drush core-status" +alias druli="drush user:login" +alias drup="drush updatedb" +alias drups="drush updatedb-status" +alias drv="drush version" +alias drvd="drush variable-del" +alias drvg="drush variable-get" +alias drvs="drush variable-set" +alias drws="drush watchdog:show" +alias drwse="drush watchdog:show --extended" +alias drwst="drush watchdog:tail" + +# Enable drush autocomplete support +autoload bashcompinit +bashcompinit +source $(dirname $0)/drush.complete.sh diff --git a/dot_oh-my-zsh/plugins/eecms/README.md b/dot_oh-my-zsh/plugins/eecms/README.md new file mode 100644 index 0000000..c538355 --- /dev/null +++ b/dot_oh-my-zsh/plugins/eecms/README.md @@ -0,0 +1,11 @@ +# eecms plugin + +This plugin adds auto-completion of console commands for [`eecms`](https://github.com/ExpressionEngine/ExpressionEngine). + +To use it, add `eecms` to the plugins array of your `.zshrc` file: +``` +plugins=(... eecms) +``` + +It also adds the alias `eecms` which finds the eecms file in the current project +and runs it with php. diff --git a/dot_oh-my-zsh/plugins/eecms/eecms.plugin.zsh b/dot_oh-my-zsh/plugins/eecms/eecms.plugin.zsh new file mode 100644 index 0000000..ee10fbb --- /dev/null +++ b/dot_oh-my-zsh/plugins/eecms/eecms.plugin.zsh @@ -0,0 +1,20 @@ +# ExpressionEngine CMS basic command completion + +_eecms_console () { + echo "php $(find . -maxdepth 3 -mindepth 1 -name 'eecms' -type f | head -n 1)" +} + +_eecms_get_command_list () { + `_eecms_console` | sed "/Available commands/,/^/d" | sed "s/[[:space:]].*//g" +} + +_eecms () { + compadd `_eecms_get_command_list` +} + +compdef _eecms '`_eecms_console`' +compdef _eecms 'system/ee/eecms' +compdef _eecms eecms + +#Alias +alias eecms='`_eecms_console`' diff --git a/dot_oh-my-zsh/plugins/emacs/README.md b/dot_oh-my-zsh/plugins/emacs/README.md new file mode 100644 index 0000000..8ed4a14 --- /dev/null +++ b/dot_oh-my-zsh/plugins/emacs/README.md @@ -0,0 +1,30 @@ +# Emacs plugin + +This plugin utilizes the Emacs daemon capability, allowing the user to quickly open frames, whether they are opened in a terminal via a ssh connection, or X frames opened on the same host. The plugin also provides some aliases for such operations. + +- You don't have the cost of starting Emacs all the time anymore +- Opening a file is as fast as Emacs does not have anything else to do. +- You can share opened buffered across opened frames. +- Configuration changes made at runtime are applied to all frames. + +**NOTE:** requires Emacs 24 and newer. + +To use it, add emacs to the plugins array in your zshrc file: + +```zsh +plugins=(... emacs) +``` + +## Aliases + +The plugin uses a custom launcher (which we'll call here `$EMACS_LAUNCHER`) that is just a wrapper around [`emacsclient`](https://www.emacswiki.org/emacs/EmacsClient). + +| Alias | Command | Description | +|--------|----------------------------------------------------|----------------------------------------------------------------| +| emacs | `$EMACS_LAUNCHER --no-wait` | Opens a temporary emacsclient frame | +| e | `emacs` | Same as emacs alias | +| te | `$EMACS_LAUNCHER -nw` | Open terminal emacsclient | +| eeval | `$EMACS_LAUNCHER --eval` | Same as `M-x eval` but from outside Emacs | +| eframe | `emacsclient --alternate-editor="" --create-frame` | Create new X frame | +| efile | - | Print the path to the file open in the current buffer | +| ecd | - | Print the directory of the file open in the the current buffer | diff --git a/dot_oh-my-zsh/plugins/emacs/emacs.plugin.zsh b/dot_oh-my-zsh/plugins/emacs/emacs.plugin.zsh new file mode 100644 index 0000000..4747f03 --- /dev/null +++ b/dot_oh-my-zsh/plugins/emacs/emacs.plugin.zsh @@ -0,0 +1,68 @@ +# Emacs 23 daemon capability is a killing feature. +# One emacs process handles all your frames whether +# you use a frame opened in a terminal via a ssh connection or X frames +# opened on the same host. + +# Benefits are multiple +# - You don't have the cost of starting Emacs all the time anymore +# - Opening a file is as fast as Emacs does not have anything else to do. +# - You can share opened buffered across opened frames. +# - Configuration changes made at runtime are applied to all frames. + +# Require emacs version to be minimum 24 +autoload -Uz is-at-least +is-at-least 24 "${${(Az)"$(emacsclient --version 2>/dev/null)"}[2]}" || return 0 + +# Handle $0 according to the standard: +# https://zdharma-continuum.github.io/Zsh-100-Commits-Club/Zsh-Plugin-Standard.html +0="${${ZERO:-${0:#$ZSH_ARGZERO}}:-${(%):-%N}}" +0="${${(M)0:#/*}:-$PWD/$0}" + +# Path to custom emacsclient launcher +export EMACS_PLUGIN_LAUNCHER="${0:A:h}/emacsclient.sh" + +# set EDITOR if not already defined. +export EDITOR="${EDITOR:-${EMACS_PLUGIN_LAUNCHER}}" + +alias emacs="$EMACS_PLUGIN_LAUNCHER --no-wait" +alias e=emacs +# open terminal emacsclient +alias te="$EMACS_PLUGIN_LAUNCHER -nw" + +# same than M-x eval but from outside Emacs. +alias eeval="$EMACS_PLUGIN_LAUNCHER --eval" +# create a new X frame +alias eframe='emacsclient --alternate-editor="" --create-frame' + +# Emacs ANSI Term tracking +if [[ -n "$INSIDE_EMACS" ]]; then + chpwd_emacs() { print -P "\033AnSiTc %d"; } + print -P "\033AnSiTc %d" # Track current working directory + print -P "\033AnSiTu %n" # Track username + + # add chpwd hook + autoload -Uz add-zsh-hook + add-zsh-hook chpwd chpwd_emacs +fi + +# Write to standard output the path to the file +# opened in the current buffer. +function efile { + local cmd="(buffer-file-name (window-buffer))" + local file="$("$EMACS_PLUGIN_LAUNCHER" --eval "$cmd" | tr -d \")" + + if [[ -z "$file" ]]; then + echo "Can't deduce current buffer filename." >&2 + return 1 + fi + + echo "$file" +} + +# Write to standard output the directory of the file +# opened in the the current buffer +function ecd { + local file + file="$(efile)" || return $? + echo "${file:h}" +} diff --git a/dot_oh-my-zsh/plugins/emacs/executable_emacsclient.sh b/dot_oh-my-zsh/plugins/emacs/executable_emacsclient.sh new file mode 100644 index 0000000..172c0ae --- /dev/null +++ b/dot_oh-my-zsh/plugins/emacs/executable_emacsclient.sh @@ -0,0 +1,38 @@ +#!/bin/sh + +emacsfun() { + local cmd frames + + # Build the Emacs Lisp command to check for suitable frames + # See https://www.gnu.org/software/emacs/manual/html_node/elisp/Frames.html#index-framep + case "$*" in + *-t*|*--tty*|*-nw*) cmd="(memq 't (mapcar 'framep (frame-list)))" ;; # if != nil, there are tty frames + *) cmd="(delete 't (mapcar 'framep (frame-list)))" ;; # if != nil, there are graphical terminals (x, w32, ns) + esac + + # Check if there are suitable frames + frames="$(emacsclient -a '' -n -e "$cmd" 2>/dev/null |sed 's/.*\x07//g' )" + + # Only create another X frame if there isn't one present + if [ -z "$frames" -o "$frames" = nil ]; then + emacsclient --alternate-editor="" --create-frame "$@" + return $? + fi + + emacsclient --alternate-editor="" "$@" +} + +# Adapted from https://github.com/davidshepherd7/emacs-read-stdin/blob/master/emacs-read-stdin.sh +# If the second argument is - then write stdin to a tempfile and open the +# tempfile. (first argument will be `--no-wait` passed in by the plugin.zsh) +if [ $# -ge 2 -a "$2" = "-" ]; then + # Create a tempfile to hold stdin + tempfile="$(mktemp --tmpdir emacs-stdin-$USERNAME.XXXXXXX 2>/dev/null \ + || mktemp -t emacs-stdin-$USERNAME)" # support BSD mktemp + # Redirect stdin to the tempfile + cat - > "$tempfile" + # Reset $2 to the tempfile so that "$@" works as expected + set -- "$1" "$tempfile" "${@:3}" +fi + +emacsfun "$@" diff --git a/dot_oh-my-zsh/plugins/ember-cli/README.md b/dot_oh-my-zsh/plugins/ember-cli/README.md new file mode 100644 index 0000000..419704a --- /dev/null +++ b/dot_oh-my-zsh/plugins/ember-cli/README.md @@ -0,0 +1,33 @@ +# Ember CLI + +This plugin adds completion and aliases for using [`ember-cli`](https://cli.emberjs.com/). + +To use it, add `ember-cli` to the plugins array in your zshrc file: + +```zsh +plugins=(... ember-cli) +``` + +## Aliases + +| Alias | Command | +| ----- | -------------------- | +| `ea` | `ember addon` | +| `eb` | `ember build` | +| `ed` | `ember destroy` | +| `eg` | `ember generate` | +| `eh` | `ember help` | +| `ei` | `ember install` | +| `ein` | `ember init` | +| `es` | `ember serve` | +| `et` | `ember test` | +| `ets` | `ember test --serve` | +| `eu` | `ember update` | +| `ev` | `ember version` | + +## Maintainers + +- [BilalBudhani](https://github.com/BilalBudhani) +- [eubenesa](https://github.com/eubenesa) +- [scottkidder](https://github.com/scottkidder] +- [t-sauer](https://www.github.com/t-sauer) diff --git a/dot_oh-my-zsh/plugins/ember-cli/_ember-cli b/dot_oh-my-zsh/plugins/ember-cli/_ember-cli new file mode 100644 index 0000000..41c3c1f --- /dev/null +++ b/dot_oh-my-zsh/plugins/ember-cli/_ember-cli @@ -0,0 +1,189 @@ +#compdef ember + +local curcontext="$curcontext" state line ret=1 + +_arguments -C -A "--version" -A "--help" \ + '(- 1 *)--help' \ + '(- 1 *)--version' \ + '1: :->cmds' \ + '*:: :->args' && ret=0 + +case $state in + cmds) + _values "ember command" \ + "addon[Generates a new folder structure for building an addon, complete with test harness]" \ + "asset-sizes[Shows the sizes of your asset files]" \ + "build[Builds your app and places it into the output path (dist/ by default)]" \ + "destroy[Destroys code generated by generate command]" \ + "generate[Generates new code from blueprints]" \ + "help[Outputs the usage instructions for all commands or the provided command]" \ + "init[Creates a new ember-cli project in the current folder]" \ + "install[Installs an ember-cli addon from npm]" \ + "new[Creates a new directory and runs ember init in it]" \ + "serve[Builds and serves your app, rebuilding on file changes]" \ + "test[Runs your app's test suite]" \ + "version[outputs ember-cli version]" + ret=0 + ;; + args) + case $line[1] in + help) + _values 'commands' \ + 'addon' \ + 'asset-sizes' \ + 'build' \ + 'destroy' \ + 'generate' \ + 'help' \ + 'init' \ + 'install' \ + 'new' \ + 'serve' \ + 'test' \ + 'vesion' && ret=0 + ;; + addon) + _arguments \ + '(--blueprint)--blueprint=-' \ + '(--directory)--directory=-' \ + '(--dry-run)--dry-run' \ + '(--skip-bower)--skip-bower' \ + '(--skip-git)--skip-git' \ + '(--skip-npm)--skip-npm' \ + '(--verbose)--verbose' + ;; + asset-sizes) + _arguments \ + '(--output-path)--output-path=-' + ;; + build) + _arguments \ + '(--environment)--environment=-' \ + '(--output-path)--output-path=-' \ + '(--output-path)--suppress-sizes' \ + '(--watch)--watch' \ + '(--watcher)--watcher=-' \ + '(-dev)-dev' \ + '(-prod)-prod' + ;; + destroy|generate) + _values 'arguments' \ + '(--classic)--classic' \ + '(--dry-run)--dry-run' \ + '(--dummy)--dummy' \ + '(--in-repo-addon)--in-repo-addon-=' \ + '(--pod)--pod' \ + '(--verbose)--verbose' && ret=0 + _values 'blueprints' \ + 'acceptance-test' \ + 'adapter' \ + 'adapter-test' \ + 'component' \ + 'component-addon' \ + 'component-test' \ + 'controller' \ + 'controller-test' \ + 'helper' \ + 'helper-addon' \ + 'helper-test' \ + 'initializer' \ + 'initializer-addon' \ + 'initializer-test' \ + 'instance-initializer' \ + 'instance-initializer-addon' \ + 'instance-initializer-test' \ + 'mixin' \ + 'mixin-test' \ + 'model' \ + 'model-test' \ + 'resource' \ + 'route' \ + 'route-addon' \ + 'route-test' \ + 'serializer' \ + 'serializer-test' \ + 'service' \ + 'service-test' \ + 'template' \ + 'test-helper' \ + 'transform' \ + 'transform-test' \ + 'util' \ + 'util-test' \ + 'view' \ + 'view-test' \ + 'addon' \ + 'addon-import' \ + 'app' \ + 'blueprint' \ + 'http-mock' \ + 'http-proxy' \ + 'in-repo-addon' \ + 'lib' \ + 'server' \ + 'vendor-shim' && ret=0 + ;; + init) + _arguments \ + '(--blueprint)--blueprint=-' \ + '(--name)--name=-' \ + '(--dry-run)--dry-run' \ + '(--skip-bower)--skip-bower' \ + '(--skip-npm)--skip-npm' \ + '(--verbose)--verbose' + ;; + install) + _arguments \ + '(--save-dev)--save-dev' \ + '(--save)--save' + ;; + new) + _arguments \ + '(--blueprint)--blueprint=-' \ + '(--directory)--directory=-' \ + '(--dry-run)--dry-run' \ + '(--skip-bower)--skip-bower' \ + '(--skip-git)--skip-git' \ + '(--skip-npm)--skip-npm' \ + '(--verbose)--verbose' + ;; + serve) + _arguments \ + '(--port)--port=-[To use a port different than 4200. Pass 0 to automatically pick an available port.]' \ + '(--host)--host=-[Listens on all interfaces by default]' \ + '(--proxy)--proxy=-' \ + '(--secure-proxy)--secure-proxy[Set to false to proxy self-signed SSL certificates]' \ + '(--transparent-proxy)--transparent-proxy[Set to false to omit x-forwarded-* headers when proxying]' \ + '(--watcher)--watcher=-' \ + '(--live-reload)--live-reload' \ + '(--live-reload-host)--live-reload-host=-[Defaults to host]' \ + '(--live-reload-base-url)--live-reload-base-url=-[Defaults to baseURL]' \ + '(--live-reload-port)--live-reload-port=-[Defaults to port number within \[49152...65535\]]' \ + '(--environment)--environment=-' \ + '(--output-path)--output-path=-' \ + '(--ssl)--ssl' \ + '(--ssl-key)--ssl-key=-' \ + '(--ssl-cert)--ssl-cert=-' + ;; + test) + _arguments \ + '(--environment)--environment=-' \ + '(--config-file)--config-file=-' \ + '(--server)--server' \ + '(--host)--host=-' \ + '(--test-port)--test-port=-[The test port to use when running with --server.]' \ + '(--filter)--filter=-[A string to filter tests to run]' \ + '(--module)--module=-[The name of a test module to run]' \ + '(--watcher)--watcher=-' \ + '(--launch)--launch=-[A comma separated list of browsers to launch for tests.]' \ + '(--reporter)--reporter=-[Test reporter to use \[tap|dot|xunit\] (default: tap)]' \ + '(--silent)--silent[Suppress any output except for the test report]' \ + '(--test-page)--test-page=-[Test page to invoke]' \ + '(--path)--path=-[Reuse an existing build at given path.]' \ + '(--query)--query=-[A query string to append to the test page URL.]' + ;; + esac + ;; +esac + +return ret diff --git a/dot_oh-my-zsh/plugins/ember-cli/ember-cli.plugin.zsh b/dot_oh-my-zsh/plugins/ember-cli/ember-cli.plugin.zsh new file mode 100644 index 0000000..de46b98 --- /dev/null +++ b/dot_oh-my-zsh/plugins/ember-cli/ember-cli.plugin.zsh @@ -0,0 +1,12 @@ +alias ea='ember addon' +alias eb='ember build' +alias ed='ember destroy' +alias eg='ember generate' +alias eh='ember help' +alias ei='ember install' +alias ein='ember init' +alias es='ember serve' +alias et='ember test' +alias ets='ember test --serve' +alias eu='ember update' +alias ev='ember version' diff --git a/dot_oh-my-zsh/plugins/emoji-clock/README.md b/dot_oh-my-zsh/plugins/emoji-clock/README.md new file mode 100644 index 0000000..4934f38 --- /dev/null +++ b/dot_oh-my-zsh/plugins/emoji-clock/README.md @@ -0,0 +1,14 @@ +# emoji-clock + +The plugin displays current time as an emoji symbol with half hour accuracy. + +To use it, add `emoji-clock` to the plugins array of your zshrc file: +``` +plugins=(... emoji-clock) +``` + +## Features + +| Function | Description | +|-------------------|----------------------------------------------------------------------| +| `emoji-clock` | Displays current time in clock emoji symbol with half hour accuracy | diff --git a/dot_oh-my-zsh/plugins/emoji-clock/emoji-clock.plugin.zsh b/dot_oh-my-zsh/plugins/emoji-clock/emoji-clock.plugin.zsh new file mode 100644 index 0000000..bdd606f --- /dev/null +++ b/dot_oh-my-zsh/plugins/emoji-clock/emoji-clock.plugin.zsh @@ -0,0 +1,33 @@ +# ------------------------------------------------------------------------------ +# FILE: emoji-clock.plugin.zsh +# DESCRIPTION: The current time with half hour accuracy as an emoji symbol. +# Inspired by Andre Torrez' "Put A Burger In Your Shell" +# https://notes.torrez.org/2013/04/put-a-burger-in-your-shell.html +# AUTHOR: Alexis Hildebrandt (afh[at]surryhill.net) +# VERSION: 1.0.0 +# ----------------------------------------------------------------------------- + +function emoji-clock() { + # Add 15 minutes to the current time and save the value as $minutes. + (( minutes = $(date '+%M') + 15 )) + (( hour = $(date '+%I') + minutes / 60 )) + # make sure minutes and hours don't exceed 60 nor 12 respectively + (( minutes %= 60 )); (( hour %= 12 )) + + case $hour in + 0) clock="🕛"; [ $minutes -ge 30 ] && clock="🕧";; + 1) clock="🕐"; [ $minutes -ge 30 ] && clock="🕜";; + 2) clock="🕑"; [ $minutes -ge 30 ] && clock="🕝";; + 3) clock="🕒"; [ $minutes -ge 30 ] && clock="🕞";; + 4) clock="🕓"; [ $minutes -ge 30 ] && clock="🕟";; + 5) clock="🕔"; [ $minutes -ge 30 ] && clock="🕠";; + 6) clock="🕕"; [ $minutes -ge 30 ] && clock="🕡";; + 7) clock="🕖"; [ $minutes -ge 30 ] && clock="🕢";; + 8) clock="🕗"; [ $minutes -ge 30 ] && clock="🕣";; + 9) clock="🕘"; [ $minutes -ge 30 ] && clock="🕤";; + 10) clock="🕙"; [ $minutes -ge 30 ] && clock="🕥";; + 11) clock="🕚"; [ $minutes -ge 30 ] && clock="🕦";; + *) clock="⌛";; + esac + echo $clock +} diff --git a/dot_oh-my-zsh/plugins/emoji/README.md b/dot_oh-my-zsh/plugins/emoji/README.md new file mode 100644 index 0000000..4154ea0 --- /dev/null +++ b/dot_oh-my-zsh/plugins/emoji/README.md @@ -0,0 +1,127 @@ +# emoji plugin + +Support for conveniently working with Unicode emoji in Zsh. + +## Features + +This plugin provides support for working with Unicode emoji characters in `zsh` using human-readable identifiers. It provides global variables which map emoji names to the actual characters, country names to their flags, and some named groupings of emoji. It also provides associated functions for displaying them. + +#### Variables + +Variable | Description +----------------- | -------------------------------- + $emoji | Maps emoji names to characters (except flags) + $emoji_flags | Maps country names to flag characters (using region indicators) + $emoji_groups | Named groups of emoji. Keys are group names; values are whitespace-separated lists of character names + +You may define new emoji groups at run time by modifying `$emoji_groups`. The special group name `all` is reserved for use by the plugin. You should not modify `$emoji` or `$emoji_flags`. + +#### Functions + +Function | Description +---------------- | ------------------------------- + random_emoji | Prints a random emoji character + display_emoji | Displays emoji, along with their names + +## Usage and Examples + +To output a specific emoji, use: +``` +$> echo $emoji[] +``` +E.g.: +``` +$> echo $emoji[mouse_face] +``` + +To output a random emoji, use: +``` +$> random_emoji +``` +To output a random emoji from a particular group, use: +``` +$> random_emoji +``` +E.g.: +``` +$> random_emoji fruits +$> random_emoji animals +$> random_emoji vehicles +$> random_emoji faces +``` + +The defined group names can be found with `echo ${(k)emoji_groups}`. + +To list all available emoji with their names, use: +``` +$> display_emoji +$> display_emoji faces +$> display_emoji people +``` + +To use emoji in a prompt: +``` +PROMPT="$emoji[penguin] > "" +PROMPT='$(random_emoji fruits) > ' +surfer=$emoji[surfer] +PROMPT="$surfer > " +``` + +## Technical Details + +The emoji names and codes are sourced from Unicode Technical Report \#51, which provides information on emoji support in Unicode. It can be found at https://www.unicode.org/reports/tr51/index.html. + +The group definitions are added by this OMZ plugin. They are not based on external definitions. + +The values in the `$emoji*` maps are the emoji characters themselves, not escape sequences or other forms that require interpretation. They can be used in any context and do not require escape sequence support from commands like `echo` or `print`. + +The emoji in the main `$emoji` map are standalone character sequences which can all be output on their own, without worrying about combining characters. The values may actually be multi-code-point sequences, instead of a single code point, and may include combining characters in those sequences. But they're arranged so their effects do not extend beyond that sequence. + +The exception to this is the skin tone / hair style variation selectors. These are included in the main `$emoji` map because they can be displayed on their own, as well as used as combining characters. (If they follow a character that is not one of the emoji characters they combine with, they are displayed as color swatches.) + + +## Experimental Features + +This defines some additional variables and functions, but these are experimental and subject to change at any time. You shouldn't rely on them being available. They're mostly for the use of emoji plugin developers to help decide what to include in future revisions. + +Variables: + +Variable | Description +----------------- | -------------------------------- + $emoji_skintone | Skin tone modifiers (from Unicode 8.0) + + +#### Skin Tone Variation Selection + +This includes experimental support for the skin tone Variation Selectors introduced with Unicode 8.0, which let you select different skin tones for emoji involving humans. + +NOTE: This really is experimental. The skin tone selectors are a relatively new feature and may not be supported by all systems. And the support in this plugin is a work in progress. It may not work in all places. In fact, I haven't gotten it to work anywhere yet. -apjanke + +The "variation selectors" are combining characters which change the appearance of the preceding character. A variation selector character can be output immediately following a human emoji to change its skin tone color. You can also output a variation selector on its own to display a color swatch of that skin tone. + +The `$emoji_skintone` associative array maps skin tone IDs to the variation selector characters. To use one, output it immediately following a smiley or other human emoji. + +``` +echo $emoji[waving_hand]$emoji_skintone[5] +``` + +Note that `$emoji_skintone` is an associative array, and its keys are the *names* of "Fitzpatrick Skin Type" groups, not linear indexes into a normal array. The names are `1_2`, `3`, `4`, `5`, and `6`. (Types 1 and 2 are combined into a single color.) See the [Diversity section in Unicode TR 51](https://www.unicode.org/reports/tr51/index.html#Diversity) for details. + +#### Gemoji support + +The [gemoji project](https://github.com/github/gemoji) seems to be the de facto main source for short names and other emoji-related metadata that isn't included in the official Unicode reports. So, our list of emojis incorporates some of their aliases to make your life more convenient: + +``` +echo $emoji[grinning_face_with_smiling_eyes] +echo $emoji[smile] +``` + +These two commands yield the same emoji (😄). The first name is the official one, in the Unicode reference, and the second one is the alias that was in Gemoji's database. + +## TODO + +These are things that could be enhanced in future revisions of the plugin. + +* Incorporate CLDR data for ordering and groupings +* Short :bracket: style names (from gemoji) +* ZWJ combining function? \ No newline at end of file diff --git a/dot_oh-my-zsh/plugins/emoji/emoji-char-definitions.zsh b/dot_oh-my-zsh/plugins/emoji/emoji-char-definitions.zsh new file mode 100644 index 0000000..b37c142 --- /dev/null +++ b/dot_oh-my-zsh/plugins/emoji/emoji-char-definitions.zsh @@ -0,0 +1,7274 @@ + +# emoji-char-definitions.zsh - Emoji definitions for oh-my-zsh emoji plugin +# +# This file is auto-generated by update_emoji.py. Do not edit it manually. +# +# This contains the definition for: +# $emoji - which maps character names to Unicode characters +# $emoji_flags - maps country names to Unicode flag characters using region +# indicators +# $emoji_mod - maps modifier components to Unicode characters +# $emoji_groups - a single associative array to avoid cluttering up the +# global namespace, and to allow adding additional group +# definitions at run time. The keys are the group names, and +# the values are whitespace-separated lists of emoji +# character names. + +# Main emoji +typeset -gAH emoji +# National flags +typeset -gAH emoji_flags +# Combining modifiers +typeset -gAH emoji_mod +# Emoji groups +typeset -gAH emoji_groups +emoji[grinning_face]=$'\U1F600' +emoji[grinning]=$'\U1F600' +emoji[grinning_face_with_big_eyes]=$'\U1F603' +emoji[smiley]=$'\U1F603' +emoji[grinning_face_with_smiling_eyes]=$'\U1F604' +emoji[smile]=$'\U1F604' +emoji[beaming_face_with_smiling_eyes]=$'\U1F601' +emoji[grin]=$'\U1F601' +emoji[grinning_squinting_face]=$'\U1F606' +emoji[laughing]=$'\U1F606' +emoji[satisfied]=$'\U1F606' +emoji[grinning_face_with_sweat]=$'\U1F605' +emoji[sweat_smile]=$'\U1F605' +emoji[rolling_on_the_floor_laughing]=$'\U1F923' +emoji[rofl]=$'\U1F923' +emoji[face_with_tears_of_joy]=$'\U1F602' +emoji[joy]=$'\U1F602' +emoji[slightly_smiling_face]=$'\U1F642' +emoji[upside_down_face]=$'\U1F643' +emoji[winking_face]=$'\U1F609' +emoji[wink]=$'\U1F609' +emoji[smiling_face_with_smiling_eyes]=$'\U1F60A' +emoji[blush]=$'\U1F60A' +emoji[smiling_face_with_halo]=$'\U1F607' +emoji[innocent]=$'\U1F607' +emoji[smiling_face_with_hearts]=$'\U1F970' +emoji[smiling_face_with_three_hearts]=$'\U1F970' +emoji[smiling_face_with_heart_eyes]=$'\U1F60D' +emoji[heart_eyes]=$'\U1F60D' +emoji[star_struck]=$'\U1F929' +emoji[face_blowing_a_kiss]=$'\U1F618' +emoji[kissing_heart]=$'\U1F618' +emoji[kissing_face]=$'\U1F617' +emoji[kissing]=$'\U1F617' +emoji[smiling_face]=$'\U263A\UFE0F' +emoji[relaxed]=$'\U263A\UFE0F' +emoji[smiling_face_unqualified]=$'\U263A' +emoji[kissing_face_with_closed_eyes]=$'\U1F61A' +emoji[kissing_closed_eyes]=$'\U1F61A' +emoji[kissing_face_with_smiling_eyes]=$'\U1F619' +emoji[kissing_smiling_eyes]=$'\U1F619' +emoji[face_savoring_food]=$'\U1F60B' +emoji[yum]=$'\U1F60B' +emoji[face_with_tongue]=$'\U1F61B' +emoji[stuck_out_tongue]=$'\U1F61B' +emoji[winking_face_with_tongue]=$'\U1F61C' +emoji[stuck_out_tongue_winking_eye]=$'\U1F61C' +emoji[zany_face]=$'\U1F92A' +emoji[squinting_face_with_tongue]=$'\U1F61D' +emoji[stuck_out_tongue_closed_eyes]=$'\U1F61D' +emoji[money_mouth_face]=$'\U1F911' +emoji[hugging_face]=$'\U1F917' +emoji[hugs]=$'\U1F917' +emoji[face_with_hand_over_mouth]=$'\U1F92D' +emoji[hand_over_mouth]=$'\U1F92D' +emoji[shushing_face]=$'\U1F92B' +emoji[thinking_face]=$'\U1F914' +emoji[thinking]=$'\U1F914' +emoji[zipper_mouth_face]=$'\U1F910' +emoji[face_with_raised_eyebrow]=$'\U1F928' +emoji[raised_eyebrow]=$'\U1F928' +emoji[neutral_face]=$'\U1F610' +emoji[expressionless_face]=$'\U1F611' +emoji[expressionless]=$'\U1F611' +emoji[face_without_mouth]=$'\U1F636' +emoji[no_mouth]=$'\U1F636' +emoji[smirking_face]=$'\U1F60F' +emoji[smirk]=$'\U1F60F' +emoji[unamused_face]=$'\U1F612' +emoji[unamused]=$'\U1F612' +emoji[face_with_rolling_eyes]=$'\U1F644' +emoji[roll_eyes]=$'\U1F644' +emoji[grimacing_face]=$'\U1F62C' +emoji[grimacing]=$'\U1F62C' +emoji[lying_face]=$'\U1F925' +emoji[relieved_face]=$'\U1F60C' +emoji[relieved]=$'\U1F60C' +emoji[pensive_face]=$'\U1F614' +emoji[pensive]=$'\U1F614' +emoji[sleepy_face]=$'\U1F62A' +emoji[sleepy]=$'\U1F62A' +emoji[drooling_face]=$'\U1F924' +emoji[sleeping_face]=$'\U1F634' +emoji[sleeping]=$'\U1F634' +emoji[face_with_medical_mask]=$'\U1F637' +emoji[mask]=$'\U1F637' +emoji[face_with_thermometer]=$'\U1F912' +emoji[face_with_head_bandage]=$'\U1F915' +emoji[nauseated_face]=$'\U1F922' +emoji[face_vomiting]=$'\U1F92E' +emoji[vomiting_face]=$'\U1F92E' +emoji[sneezing_face]=$'\U1F927' +emoji[hot_face]=$'\U1F975' +emoji[cold_face]=$'\U1F976' +emoji[woozy_face]=$'\U1F974' +emoji[dizzy_face]=$'\U1F635' +emoji[exploding_head]=$'\U1F92F' +emoji[cowboy_hat_face]=$'\U1F920' +emoji[partying_face]=$'\U1F973' +emoji[smiling_face_with_sunglasses]=$'\U1F60E' +emoji[nerd_face]=$'\U1F913' +emoji[face_with_monocle]=$'\U1F9D0' +emoji[monocle_face]=$'\U1F9D0' +emoji[confused_face]=$'\U1F615' +emoji[confused]=$'\U1F615' +emoji[worried_face]=$'\U1F61F' +emoji[worried]=$'\U1F61F' +emoji[slightly_frowning_face]=$'\U1F641' +emoji[slightly_frowning_face_1]=$'\U2639\UFE0F' +emoji[frowning_face_unqualified]=$'\U2639' +emoji[frowning_face]=$'\U2639' +emoji[face_with_open_mouth]=$'\U1F62E' +emoji[open_mouth]=$'\U1F62E' +emoji[hushed_face]=$'\U1F62F' +emoji[hushed]=$'\U1F62F' +emoji[astonished_face]=$'\U1F632' +emoji[astonished]=$'\U1F632' +emoji[flushed_face]=$'\U1F633' +emoji[flushed]=$'\U1F633' +emoji[pleading_face]=$'\U1F97A' +emoji[frowning_face_with_open_mouth]=$'\U1F626' +emoji[frowning]=$'\U1F626' +emoji[anguished_face]=$'\U1F627' +emoji[anguished]=$'\U1F627' +emoji[fearful_face]=$'\U1F628' +emoji[fearful]=$'\U1F628' +emoji[anxious_face_with_sweat]=$'\U1F630' +emoji[cold_sweat]=$'\U1F630' +emoji[sad_but_relieved_face]=$'\U1F625' +emoji[disappointed_relieved]=$'\U1F625' +emoji[crying_face]=$'\U1F622' +emoji[cry]=$'\U1F622' +emoji[loudly_crying_face]=$'\U1F62D' +emoji[sob]=$'\U1F62D' +emoji[face_screaming_in_fear]=$'\U1F631' +emoji[scream]=$'\U1F631' +emoji[confounded_face]=$'\U1F616' +emoji[confounded]=$'\U1F616' +emoji[persevering_face]=$'\U1F623' +emoji[persevere]=$'\U1F623' +emoji[disappointed_face]=$'\U1F61E' +emoji[disappointed]=$'\U1F61E' +emoji[downcast_face_with_sweat]=$'\U1F613' +emoji[sweat]=$'\U1F613' +emoji[weary_face]=$'\U1F629' +emoji[weary]=$'\U1F629' +emoji[tired_face]=$'\U1F62B' +emoji[yawning_face]=$'\U1F971' +emoji[face_with_steam_from_nose]=$'\U1F624' +emoji[triumph]=$'\U1F624' +emoji[pouting_face]=$'\U1F621' +emoji[rage]=$'\U1F621' +emoji[pout]=$'\U1F621' +emoji[angry_face]=$'\U1F620' +emoji[angry]=$'\U1F620' +emoji[face_with_symbols_on_mouth]=$'\U1F92C' +emoji[cursing_face]=$'\U1F92C' +emoji[smiling_face_with_horns]=$'\U1F608' +emoji[smiling_imp]=$'\U1F608' +emoji[angry_face_with_horns]=$'\U1F47F' +emoji[imp]=$'\U1F47F' +emoji[skull]=$'\U1F480' +emoji[skull_and_crossbones]=$'\U2620\UFE0F' +emoji[skull_and_crossbones_unqualified]=$'\U2620' +emoji[pile_of_poo]=$'\U1F4A9' +emoji[hankey]=$'\U1F4A9' +emoji[poop]=$'\U1F4A9' +emoji[shit]=$'\U1F4A9' +emoji[clown_face]=$'\U1F921' +emoji[ogre]=$'\U1F479' +emoji[japanese_ogre]=$'\U1F479' +emoji[goblin]=$'\U1F47A' +emoji[japanese_goblin]=$'\U1F47A' +emoji[ghost]=$'\U1F47B' +emoji[alien]=$'\U1F47D' +emoji[alien_monster]=$'\U1F47E' +emoji[space_invader]=$'\U1F47E' +emoji[robot]=$'\U1F916' +emoji[grinning_cat]=$'\U1F63A' +emoji[smiley_cat]=$'\U1F63A' +emoji[grinning_cat_with_smiling_eyes]=$'\U1F638' +emoji[smile_cat]=$'\U1F638' +emoji[cat_with_tears_of_joy]=$'\U1F639' +emoji[joy_cat]=$'\U1F639' +emoji[smiling_cat_with_heart_eyes]=$'\U1F63B' +emoji[heart_eyes_cat]=$'\U1F63B' +emoji[cat_with_wry_smile]=$'\U1F63C' +emoji[smirk_cat]=$'\U1F63C' +emoji[kissing_cat]=$'\U1F63D' +emoji[weary_cat]=$'\U1F640' +emoji[scream_cat]=$'\U1F640' +emoji[crying_cat]=$'\U1F63F' +emoji[crying_cat_face]=$'\U1F63F' +emoji[pouting_cat]=$'\U1F63E' +emoji[see_no_evil_monkey]=$'\U1F648' +emoji[see_no_evil]=$'\U1F648' +emoji[hear_no_evil_monkey]=$'\U1F649' +emoji[hear_no_evil]=$'\U1F649' +emoji[speak_no_evil_monkey]=$'\U1F64A' +emoji[speak_no_evil]=$'\U1F64A' +emoji[kiss_mark]=$'\U1F48B' +emoji[love_letter]=$'\U1F48C' +emoji[heart_with_arrow]=$'\U1F498' +emoji[cupid]=$'\U1F498' +emoji[heart_with_ribbon]=$'\U1F49D' +emoji[gift_heart]=$'\U1F49D' +emoji[sparkling_heart]=$'\U1F496' +emoji[growing_heart]=$'\U1F497' +emoji[heartpulse]=$'\U1F497' +emoji[beating_heart]=$'\U1F493' +emoji[heartbeat]=$'\U1F493' +emoji[revolving_hearts]=$'\U1F49E' +emoji[two_hearts]=$'\U1F495' +emoji[heart_decoration]=$'\U1F49F' +emoji[heart_exclamation]=$'\U2763\UFE0F' +emoji[heavy_heart_exclamation]=$'\U2763\UFE0F' +emoji[heart_exclamation_unqualified]=$'\U2763' +emoji[broken_heart]=$'\U1F494' +emoji[red_heart]=$'\U2764\UFE0F' +emoji[heart]=$'\U2764\UFE0F' +emoji[red_heart_unqualified]=$'\U2764' +emoji[orange_heart]=$'\U1F9E1' +emoji[yellow_heart]=$'\U1F49B' +emoji[green_heart]=$'\U1F49A' +emoji[blue_heart]=$'\U1F499' +emoji[purple_heart]=$'\U1F49C' +emoji[brown_heart]=$'\U1F90E' +emoji[black_heart]=$'\U1F5A4' +emoji[white_heart]=$'\U1F90D' +emoji[hundred_points]=$'\U1F4AF' +emoji[100]=$'\U1F4AF' +emoji[anger_symbol]=$'\U1F4A2' +emoji[anger]=$'\U1F4A2' +emoji[collision]=$'\U1F4A5' +emoji[boom]=$'\U1F4A5' +emoji[dizzy]=$'\U1F4AB' +emoji[sweat_droplets]=$'\U1F4A6' +emoji[sweat_drops]=$'\U1F4A6' +emoji[dashing_away]=$'\U1F4A8' +emoji[dash]=$'\U1F4A8' +emoji[hole]=$'\U1F573\UFE0F' +emoji[hole_unqualified]=$'\U1F573' +emoji[bomb]=$'\U1F4A3' +emoji[speech_balloon]=$'\U1F4AC' +emoji[eye_in_speech_bubble]=$'\U1F441\UFE0F\U200D\U1F5E8\UFE0F' +emoji[eye_speech_bubble]=$'\U1F441\UFE0F\U200D\U1F5E8\UFE0F' +emoji[eye_in_speech_bubble_unqualified]=$'\U1F441\U200D\U1F5E8\UFE0F' +emoji[eye_in_speech_bubble_unqualified_1]=$'\U1F441\UFE0F\U200D\U1F5E8' +emoji[eye_in_speech_bubble_unqualified_2]=$'\U1F441\U200D\U1F5E8' +emoji[left_speech_bubble]=$'\U1F5E8\UFE0F' +emoji[left_speech_bubble_unqualified]=$'\U1F5E8' +emoji[right_anger_bubble]=$'\U1F5EF\UFE0F' +emoji[right_anger_bubble_unqualified]=$'\U1F5EF' +emoji[thought_balloon]=$'\U1F4AD' +emoji[zzz]=$'\U1F4A4' +emoji[waving_hand]=$'\U1F44B' +emoji[wave]=$'\U1F44B' +emoji[waving_hand_light_skin_tone]=$'\U1F44B\U1F3FB' +emoji[waving_hand_medium_light_skin_tone]=$'\U1F44B\U1F3FC' +emoji[waving_hand_medium_skin_tone]=$'\U1F44B\U1F3FD' +emoji[waving_hand_medium_dark_skin_tone]=$'\U1F44B\U1F3FE' +emoji[waving_hand_dark_skin_tone]=$'\U1F44B\U1F3FF' +emoji[raised_back_of_hand]=$'\U1F91A' +emoji[raised_back_of_hand_light_skin_tone]=$'\U1F91A\U1F3FB' +emoji[raised_back_of_hand_medium_light_skin_tone]=$'\U1F91A\U1F3FC' +emoji[raised_back_of_hand_medium_skin_tone]=$'\U1F91A\U1F3FD' +emoji[raised_back_of_hand_medium_dark_skin_tone]=$'\U1F91A\U1F3FE' +emoji[raised_back_of_hand_dark_skin_tone]=$'\U1F91A\U1F3FF' +emoji[hand_with_fingers_splayed]=$'\U1F590\UFE0F' +emoji[hand_with_fingers_splayed_unqualified]=$'\U1F590' +emoji[raised_hand_with_fingers_splayed]=$'\U1F590' +emoji[hand_with_fingers_splayed_light_skin_tone]=$'\U1F590\U1F3FB' +emoji[hand_with_fingers_splayed_medium_light_skin_tone]=$'\U1F590\U1F3FC' +emoji[hand_with_fingers_splayed_medium_skin_tone]=$'\U1F590\U1F3FD' +emoji[hand_with_fingers_splayed_medium_dark_skin_tone]=$'\U1F590\U1F3FE' +emoji[hand_with_fingers_splayed_dark_skin_tone]=$'\U1F590\U1F3FF' +emoji[raised_hand]=$'\U270B' +emoji[hand]=$'\U270B' +emoji[raised_hand_light_skin_tone]=$'\U270B\U1F3FB' +emoji[raised_hand_medium_light_skin_tone]=$'\U270B\U1F3FC' +emoji[raised_hand_medium_skin_tone]=$'\U270B\U1F3FD' +emoji[raised_hand_medium_dark_skin_tone]=$'\U270B\U1F3FE' +emoji[raised_hand_dark_skin_tone]=$'\U270B\U1F3FF' +emoji[vulcan_salute]=$'\U1F596' +emoji[vulcan_salute_light_skin_tone]=$'\U1F596\U1F3FB' +emoji[vulcan_salute_medium_light_skin_tone]=$'\U1F596\U1F3FC' +emoji[vulcan_salute_medium_skin_tone]=$'\U1F596\U1F3FD' +emoji[vulcan_salute_medium_dark_skin_tone]=$'\U1F596\U1F3FE' +emoji[vulcan_salute_dark_skin_tone]=$'\U1F596\U1F3FF' +emoji[OK_hand]=$'\U1F44C' +emoji[ok_hand]=$'\U1F44C' +emoji[OK_hand_light_skin_tone]=$'\U1F44C\U1F3FB' +emoji[OK_hand_medium_light_skin_tone]=$'\U1F44C\U1F3FC' +emoji[OK_hand_medium_skin_tone]=$'\U1F44C\U1F3FD' +emoji[OK_hand_medium_dark_skin_tone]=$'\U1F44C\U1F3FE' +emoji[OK_hand_dark_skin_tone]=$'\U1F44C\U1F3FF' +emoji[pinching_hand]=$'\U1F90F' +emoji[pinching_hand_light_skin_tone]=$'\U1F90F\U1F3FB' +emoji[pinching_hand_medium_light_skin_tone]=$'\U1F90F\U1F3FC' +emoji[pinching_hand_medium_skin_tone]=$'\U1F90F\U1F3FD' +emoji[pinching_hand_medium_dark_skin_tone]=$'\U1F90F\U1F3FE' +emoji[pinching_hand_dark_skin_tone]=$'\U1F90F\U1F3FF' +emoji[victory_hand]=$'\U270C\UFE0F' +emoji[v]=$'\U270C\UFE0F' +emoji[victory_hand_unqualified]=$'\U270C' +emoji[victory_hand_light_skin_tone]=$'\U270C\U1F3FB' +emoji[victory_hand_medium_light_skin_tone]=$'\U270C\U1F3FC' +emoji[victory_hand_medium_skin_tone]=$'\U270C\U1F3FD' +emoji[victory_hand_medium_dark_skin_tone]=$'\U270C\U1F3FE' +emoji[victory_hand_dark_skin_tone]=$'\U270C\U1F3FF' +emoji[crossed_fingers]=$'\U1F91E' +emoji[crossed_fingers_light_skin_tone]=$'\U1F91E\U1F3FB' +emoji[crossed_fingers_medium_light_skin_tone]=$'\U1F91E\U1F3FC' +emoji[crossed_fingers_medium_skin_tone]=$'\U1F91E\U1F3FD' +emoji[crossed_fingers_medium_dark_skin_tone]=$'\U1F91E\U1F3FE' +emoji[crossed_fingers_dark_skin_tone]=$'\U1F91E\U1F3FF' +emoji[love_you_gesture]=$'\U1F91F' +emoji[love_you_gesture_light_skin_tone]=$'\U1F91F\U1F3FB' +emoji[love_you_gesture_medium_light_skin_tone]=$'\U1F91F\U1F3FC' +emoji[love_you_gesture_medium_skin_tone]=$'\U1F91F\U1F3FD' +emoji[love_you_gesture_medium_dark_skin_tone]=$'\U1F91F\U1F3FE' +emoji[love_you_gesture_dark_skin_tone]=$'\U1F91F\U1F3FF' +emoji[sign_of_the_horns]=$'\U1F918' +emoji[metal]=$'\U1F918' +emoji[sign_of_the_horns_light_skin_tone]=$'\U1F918\U1F3FB' +emoji[sign_of_the_horns_medium_light_skin_tone]=$'\U1F918\U1F3FC' +emoji[sign_of_the_horns_medium_skin_tone]=$'\U1F918\U1F3FD' +emoji[sign_of_the_horns_medium_dark_skin_tone]=$'\U1F918\U1F3FE' +emoji[sign_of_the_horns_dark_skin_tone]=$'\U1F918\U1F3FF' +emoji[call_me_hand]=$'\U1F919' +emoji[call_me_hand_light_skin_tone]=$'\U1F919\U1F3FB' +emoji[call_me_hand_medium_light_skin_tone]=$'\U1F919\U1F3FC' +emoji[call_me_hand_medium_skin_tone]=$'\U1F919\U1F3FD' +emoji[call_me_hand_medium_dark_skin_tone]=$'\U1F919\U1F3FE' +emoji[call_me_hand_dark_skin_tone]=$'\U1F919\U1F3FF' +emoji[backhand_index_pointing_left]=$'\U1F448' +emoji[point_left]=$'\U1F448' +emoji[backhand_index_pointing_left_light_skin_tone]=$'\U1F448\U1F3FB' +emoji[backhand_index_pointing_left_medium_light_skin_tone]=$'\U1F448\U1F3FC' +emoji[backhand_index_pointing_left_medium_skin_tone]=$'\U1F448\U1F3FD' +emoji[backhand_index_pointing_left_medium_dark_skin_tone]=$'\U1F448\U1F3FE' +emoji[backhand_index_pointing_left_dark_skin_tone]=$'\U1F448\U1F3FF' +emoji[backhand_index_pointing_right]=$'\U1F449' +emoji[point_right]=$'\U1F449' +emoji[backhand_index_pointing_right_light_skin_tone]=$'\U1F449\U1F3FB' +emoji[backhand_index_pointing_right_medium_light_skin_tone]=$'\U1F449\U1F3FC' +emoji[backhand_index_pointing_right_medium_skin_tone]=$'\U1F449\U1F3FD' +emoji[backhand_index_pointing_right_medium_dark_skin_tone]=$'\U1F449\U1F3FE' +emoji[backhand_index_pointing_right_dark_skin_tone]=$'\U1F449\U1F3FF' +emoji[backhand_index_pointing_up]=$'\U1F446' +emoji[point_up_2]=$'\U1F446' +emoji[backhand_index_pointing_up_light_skin_tone]=$'\U1F446\U1F3FB' +emoji[backhand_index_pointing_up_medium_light_skin_tone]=$'\U1F446\U1F3FC' +emoji[backhand_index_pointing_up_medium_skin_tone]=$'\U1F446\U1F3FD' +emoji[backhand_index_pointing_up_medium_dark_skin_tone]=$'\U1F446\U1F3FE' +emoji[backhand_index_pointing_up_dark_skin_tone]=$'\U1F446\U1F3FF' +emoji[middle_finger]=$'\U1F595' +emoji[fu]=$'\U1F595' +emoji[middle_finger_light_skin_tone]=$'\U1F595\U1F3FB' +emoji[middle_finger_medium_light_skin_tone]=$'\U1F595\U1F3FC' +emoji[middle_finger_medium_skin_tone]=$'\U1F595\U1F3FD' +emoji[middle_finger_medium_dark_skin_tone]=$'\U1F595\U1F3FE' +emoji[middle_finger_dark_skin_tone]=$'\U1F595\U1F3FF' +emoji[backhand_index_pointing_down]=$'\U1F447' +emoji[point_down]=$'\U1F447' +emoji[backhand_index_pointing_down_light_skin_tone]=$'\U1F447\U1F3FB' +emoji[backhand_index_pointing_down_medium_light_skin_tone]=$'\U1F447\U1F3FC' +emoji[backhand_index_pointing_down_medium_skin_tone]=$'\U1F447\U1F3FD' +emoji[backhand_index_pointing_down_medium_dark_skin_tone]=$'\U1F447\U1F3FE' +emoji[backhand_index_pointing_down_dark_skin_tone]=$'\U1F447\U1F3FF' +emoji[index_pointing_up]=$'\U261D\UFE0F' +emoji[point_up]=$'\U261D\UFE0F' +emoji[index_pointing_up_unqualified]=$'\U261D' +emoji[index_pointing_up_light_skin_tone]=$'\U261D\U1F3FB' +emoji[index_pointing_up_medium_light_skin_tone]=$'\U261D\U1F3FC' +emoji[index_pointing_up_medium_skin_tone]=$'\U261D\U1F3FD' +emoji[index_pointing_up_medium_dark_skin_tone]=$'\U261D\U1F3FE' +emoji[index_pointing_up_dark_skin_tone]=$'\U261D\U1F3FF' +emoji[thumbs_up]=$'\U1F44D' +emoji[+1]=$'\U1F44D' +emoji[thumbsup]=$'\U1F44D' +emoji[thumbs_up_light_skin_tone]=$'\U1F44D\U1F3FB' +emoji[thumbs_up_medium_light_skin_tone]=$'\U1F44D\U1F3FC' +emoji[thumbs_up_medium_skin_tone]=$'\U1F44D\U1F3FD' +emoji[thumbs_up_medium_dark_skin_tone]=$'\U1F44D\U1F3FE' +emoji[thumbs_up_dark_skin_tone]=$'\U1F44D\U1F3FF' +emoji[thumbs_down]=$'\U1F44E' +emoji[-1]=$'\U1F44E' +emoji[thumbsdown]=$'\U1F44E' +emoji[thumbs_down_light_skin_tone]=$'\U1F44E\U1F3FB' +emoji[thumbs_down_medium_light_skin_tone]=$'\U1F44E\U1F3FC' +emoji[thumbs_down_medium_skin_tone]=$'\U1F44E\U1F3FD' +emoji[thumbs_down_medium_dark_skin_tone]=$'\U1F44E\U1F3FE' +emoji[thumbs_down_dark_skin_tone]=$'\U1F44E\U1F3FF' +emoji[raised_fist]=$'\U270A' +emoji[fist_raised]=$'\U270A' +emoji[fist]=$'\U270A' +emoji[raised_fist_light_skin_tone]=$'\U270A\U1F3FB' +emoji[raised_fist_medium_light_skin_tone]=$'\U270A\U1F3FC' +emoji[raised_fist_medium_skin_tone]=$'\U270A\U1F3FD' +emoji[raised_fist_medium_dark_skin_tone]=$'\U270A\U1F3FE' +emoji[raised_fist_dark_skin_tone]=$'\U270A\U1F3FF' +emoji[oncoming_fist]=$'\U1F44A' +emoji[fist_oncoming]=$'\U1F44A' +emoji[facepunch]=$'\U1F44A' +emoji[punch]=$'\U1F44A' +emoji[oncoming_fist_light_skin_tone]=$'\U1F44A\U1F3FB' +emoji[oncoming_fist_medium_light_skin_tone]=$'\U1F44A\U1F3FC' +emoji[oncoming_fist_medium_skin_tone]=$'\U1F44A\U1F3FD' +emoji[oncoming_fist_medium_dark_skin_tone]=$'\U1F44A\U1F3FE' +emoji[oncoming_fist_dark_skin_tone]=$'\U1F44A\U1F3FF' +emoji[left_facing_fist]=$'\U1F91B' +emoji[fist_left]=$'\U1F91B' +emoji[left_facing_fist_light_skin_tone]=$'\U1F91B\U1F3FB' +emoji[left_facing_fist_medium_light_skin_tone]=$'\U1F91B\U1F3FC' +emoji[left_facing_fist_medium_skin_tone]=$'\U1F91B\U1F3FD' +emoji[left_facing_fist_medium_dark_skin_tone]=$'\U1F91B\U1F3FE' +emoji[left_facing_fist_dark_skin_tone]=$'\U1F91B\U1F3FF' +emoji[right_facing_fist]=$'\U1F91C' +emoji[fist_right]=$'\U1F91C' +emoji[right_facing_fist_light_skin_tone]=$'\U1F91C\U1F3FB' +emoji[right_facing_fist_medium_light_skin_tone]=$'\U1F91C\U1F3FC' +emoji[right_facing_fist_medium_skin_tone]=$'\U1F91C\U1F3FD' +emoji[right_facing_fist_medium_dark_skin_tone]=$'\U1F91C\U1F3FE' +emoji[right_facing_fist_dark_skin_tone]=$'\U1F91C\U1F3FF' +emoji[clapping_hands]=$'\U1F44F' +emoji[clap]=$'\U1F44F' +emoji[clapping_hands_light_skin_tone]=$'\U1F44F\U1F3FB' +emoji[clapping_hands_medium_light_skin_tone]=$'\U1F44F\U1F3FC' +emoji[clapping_hands_medium_skin_tone]=$'\U1F44F\U1F3FD' +emoji[clapping_hands_medium_dark_skin_tone]=$'\U1F44F\U1F3FE' +emoji[clapping_hands_dark_skin_tone]=$'\U1F44F\U1F3FF' +emoji[raising_hands]=$'\U1F64C' +emoji[raised_hands]=$'\U1F64C' +emoji[raising_hands_light_skin_tone]=$'\U1F64C\U1F3FB' +emoji[raising_hands_medium_light_skin_tone]=$'\U1F64C\U1F3FC' +emoji[raising_hands_medium_skin_tone]=$'\U1F64C\U1F3FD' +emoji[raising_hands_medium_dark_skin_tone]=$'\U1F64C\U1F3FE' +emoji[raising_hands_dark_skin_tone]=$'\U1F64C\U1F3FF' +emoji[open_hands]=$'\U1F450' +emoji[open_hands_light_skin_tone]=$'\U1F450\U1F3FB' +emoji[open_hands_medium_light_skin_tone]=$'\U1F450\U1F3FC' +emoji[open_hands_medium_skin_tone]=$'\U1F450\U1F3FD' +emoji[open_hands_medium_dark_skin_tone]=$'\U1F450\U1F3FE' +emoji[open_hands_dark_skin_tone]=$'\U1F450\U1F3FF' +emoji[palms_up_together]=$'\U1F932' +emoji[palms_up_together_light_skin_tone]=$'\U1F932\U1F3FB' +emoji[palms_up_together_medium_light_skin_tone]=$'\U1F932\U1F3FC' +emoji[palms_up_together_medium_skin_tone]=$'\U1F932\U1F3FD' +emoji[palms_up_together_medium_dark_skin_tone]=$'\U1F932\U1F3FE' +emoji[palms_up_together_dark_skin_tone]=$'\U1F932\U1F3FF' +emoji[handshake]=$'\U1F91D' +emoji[folded_hands]=$'\U1F64F' +emoji[pray]=$'\U1F64F' +emoji[folded_hands_light_skin_tone]=$'\U1F64F\U1F3FB' +emoji[folded_hands_medium_light_skin_tone]=$'\U1F64F\U1F3FC' +emoji[folded_hands_medium_skin_tone]=$'\U1F64F\U1F3FD' +emoji[folded_hands_medium_dark_skin_tone]=$'\U1F64F\U1F3FE' +emoji[folded_hands_dark_skin_tone]=$'\U1F64F\U1F3FF' +emoji[writing_hand]=$'\U270D\UFE0F' +emoji[writing_hand_unqualified]=$'\U270D' +emoji[writing_hand_light_skin_tone]=$'\U270D\U1F3FB' +emoji[writing_hand_medium_light_skin_tone]=$'\U270D\U1F3FC' +emoji[writing_hand_medium_skin_tone]=$'\U270D\U1F3FD' +emoji[writing_hand_medium_dark_skin_tone]=$'\U270D\U1F3FE' +emoji[writing_hand_dark_skin_tone]=$'\U270D\U1F3FF' +emoji[nail_polish]=$'\U1F485' +emoji[nail_care]=$'\U1F485' +emoji[nail_polish_light_skin_tone]=$'\U1F485\U1F3FB' +emoji[nail_polish_medium_light_skin_tone]=$'\U1F485\U1F3FC' +emoji[nail_polish_medium_skin_tone]=$'\U1F485\U1F3FD' +emoji[nail_polish_medium_dark_skin_tone]=$'\U1F485\U1F3FE' +emoji[nail_polish_dark_skin_tone]=$'\U1F485\U1F3FF' +emoji[selfie]=$'\U1F933' +emoji[selfie_light_skin_tone]=$'\U1F933\U1F3FB' +emoji[selfie_medium_light_skin_tone]=$'\U1F933\U1F3FC' +emoji[selfie_medium_skin_tone]=$'\U1F933\U1F3FD' +emoji[selfie_medium_dark_skin_tone]=$'\U1F933\U1F3FE' +emoji[selfie_dark_skin_tone]=$'\U1F933\U1F3FF' +emoji[flexed_biceps]=$'\U1F4AA' +emoji[muscle]=$'\U1F4AA' +emoji[flexed_biceps_light_skin_tone]=$'\U1F4AA\U1F3FB' +emoji[flexed_biceps_medium_light_skin_tone]=$'\U1F4AA\U1F3FC' +emoji[flexed_biceps_medium_skin_tone]=$'\U1F4AA\U1F3FD' +emoji[flexed_biceps_medium_dark_skin_tone]=$'\U1F4AA\U1F3FE' +emoji[flexed_biceps_dark_skin_tone]=$'\U1F4AA\U1F3FF' +emoji[mechanical_arm]=$'\U1F9BE' +emoji[mechanical_leg]=$'\U1F9BF' +emoji[mechanical_leg_1]=$'\U1F9B5' +emoji[leg]=$'\U1F9B5' +emoji[leg_light_skin_tone]=$'\U1F9B5\U1F3FB' +emoji[leg_medium_light_skin_tone]=$'\U1F9B5\U1F3FC' +emoji[leg_medium_skin_tone]=$'\U1F9B5\U1F3FD' +emoji[leg_medium_dark_skin_tone]=$'\U1F9B5\U1F3FE' +emoji[leg_dark_skin_tone]=$'\U1F9B5\U1F3FF' +emoji[foot]=$'\U1F9B6' +emoji[foot_light_skin_tone]=$'\U1F9B6\U1F3FB' +emoji[foot_medium_light_skin_tone]=$'\U1F9B6\U1F3FC' +emoji[foot_medium_skin_tone]=$'\U1F9B6\U1F3FD' +emoji[foot_medium_dark_skin_tone]=$'\U1F9B6\U1F3FE' +emoji[foot_dark_skin_tone]=$'\U1F9B6\U1F3FF' +emoji[ear]=$'\U1F442' +emoji[ear_light_skin_tone]=$'\U1F442\U1F3FB' +emoji[ear_medium_light_skin_tone]=$'\U1F442\U1F3FC' +emoji[ear_medium_skin_tone]=$'\U1F442\U1F3FD' +emoji[ear_medium_dark_skin_tone]=$'\U1F442\U1F3FE' +emoji[ear_dark_skin_tone]=$'\U1F442\U1F3FF' +emoji[ear_with_hearing_aid]=$'\U1F9BB' +emoji[ear_with_hearing_aid_light_skin_tone]=$'\U1F9BB\U1F3FB' +emoji[ear_with_hearing_aid_medium_light_skin_tone]=$'\U1F9BB\U1F3FC' +emoji[ear_with_hearing_aid_medium_skin_tone]=$'\U1F9BB\U1F3FD' +emoji[ear_with_hearing_aid_medium_dark_skin_tone]=$'\U1F9BB\U1F3FE' +emoji[ear_with_hearing_aid_dark_skin_tone]=$'\U1F9BB\U1F3FF' +emoji[nose]=$'\U1F443' +emoji[nose_light_skin_tone]=$'\U1F443\U1F3FB' +emoji[nose_medium_light_skin_tone]=$'\U1F443\U1F3FC' +emoji[nose_medium_skin_tone]=$'\U1F443\U1F3FD' +emoji[nose_medium_dark_skin_tone]=$'\U1F443\U1F3FE' +emoji[nose_dark_skin_tone]=$'\U1F443\U1F3FF' +emoji[brain]=$'\U1F9E0' +emoji[tooth]=$'\U1F9B7' +emoji[bone]=$'\U1F9B4' +emoji[eyes]=$'\U1F440' +emoji[eyes_1]=$'\U1F441\UFE0F' +emoji[eye_unqualified]=$'\U1F441' +emoji[eye]=$'\U1F441' +emoji[tongue]=$'\U1F445' +emoji[mouth]=$'\U1F444' +emoji[lips]=$'\U1F444' +emoji[baby]=$'\U1F476' +emoji[baby_light_skin_tone]=$'\U1F476\U1F3FB' +emoji[baby_medium_light_skin_tone]=$'\U1F476\U1F3FC' +emoji[baby_medium_skin_tone]=$'\U1F476\U1F3FD' +emoji[baby_medium_dark_skin_tone]=$'\U1F476\U1F3FE' +emoji[baby_dark_skin_tone]=$'\U1F476\U1F3FF' +emoji[child]=$'\U1F9D2' +emoji[child_light_skin_tone]=$'\U1F9D2\U1F3FB' +emoji[child_medium_light_skin_tone]=$'\U1F9D2\U1F3FC' +emoji[child_medium_skin_tone]=$'\U1F9D2\U1F3FD' +emoji[child_medium_dark_skin_tone]=$'\U1F9D2\U1F3FE' +emoji[child_dark_skin_tone]=$'\U1F9D2\U1F3FF' +emoji[boy]=$'\U1F466' +emoji[boy_light_skin_tone]=$'\U1F466\U1F3FB' +emoji[boy_medium_light_skin_tone]=$'\U1F466\U1F3FC' +emoji[boy_medium_skin_tone]=$'\U1F466\U1F3FD' +emoji[boy_medium_dark_skin_tone]=$'\U1F466\U1F3FE' +emoji[boy_dark_skin_tone]=$'\U1F466\U1F3FF' +emoji[girl]=$'\U1F467' +emoji[girl_light_skin_tone]=$'\U1F467\U1F3FB' +emoji[girl_medium_light_skin_tone]=$'\U1F467\U1F3FC' +emoji[girl_medium_skin_tone]=$'\U1F467\U1F3FD' +emoji[girl_medium_dark_skin_tone]=$'\U1F467\U1F3FE' +emoji[girl_dark_skin_tone]=$'\U1F467\U1F3FF' +emoji[person]=$'\U1F9D1' +emoji[adult]=$'\U1F9D1' +emoji[person_light_skin_tone]=$'\U1F9D1\U1F3FB' +emoji[person_medium_light_skin_tone]=$'\U1F9D1\U1F3FC' +emoji[person_medium_skin_tone]=$'\U1F9D1\U1F3FD' +emoji[person_medium_dark_skin_tone]=$'\U1F9D1\U1F3FE' +emoji[person_dark_skin_tone]=$'\U1F9D1\U1F3FF' +emoji[person_blond_hair]=$'\U1F471' +emoji[blond_haired_person]=$'\U1F471' +emoji[person_light_skin_tone_blond_hair]=$'\U1F471\U1F3FB' +emoji[person_medium_light_skin_tone_blond_hair]=$'\U1F471\U1F3FC' +emoji[person_medium_skin_tone_blond_hair]=$'\U1F471\U1F3FD' +emoji[person_medium_dark_skin_tone_blond_hair]=$'\U1F471\U1F3FE' +emoji[person_dark_skin_tone_blond_hair]=$'\U1F471\U1F3FF' +emoji[man]=$'\U1F468' +emoji[man_light_skin_tone]=$'\U1F468\U1F3FB' +emoji[man_medium_light_skin_tone]=$'\U1F468\U1F3FC' +emoji[man_medium_skin_tone]=$'\U1F468\U1F3FD' +emoji[man_medium_dark_skin_tone]=$'\U1F468\U1F3FE' +emoji[man_dark_skin_tone]=$'\U1F468\U1F3FF' +emoji[man_beard]=$'\U1F9D4' +emoji[bearded_person]=$'\U1F9D4' +emoji[man_light_skin_tone_beard]=$'\U1F9D4\U1F3FB' +emoji[man_medium_light_skin_tone_beard]=$'\U1F9D4\U1F3FC' +emoji[man_medium_skin_tone_beard]=$'\U1F9D4\U1F3FD' +emoji[man_medium_dark_skin_tone_beard]=$'\U1F9D4\U1F3FE' +emoji[man_dark_skin_tone_beard]=$'\U1F9D4\U1F3FF' +emoji[man_blond_hair]=$'\U1F471\U200D\U2642\UFE0F' +emoji[man_blond_hair_minimally]=$'\U1F471\U200D\U2642' +emoji[blond_haired_man]=$'\U1F471\U200D\U2642' +emoji[man_light_skin_tone_blond_hair]=$'\U1F471\U1F3FB\U200D\U2642\UFE0F' +emoji[man_light_skin_tone_blond_hair_minimally]=$'\U1F471\U1F3FB\U200D\U2642' +emoji[man_medium_light_skin_tone_blond_hair]=$'\U1F471\U1F3FC\U200D\U2642\UFE0F' +emoji[man_medium_light_skin_tone_blond_hair_minimally]=$'\U1F471\U1F3FC\U200D\U2642' +emoji[man_medium_skin_tone_blond_hair]=$'\U1F471\U1F3FD\U200D\U2642\UFE0F' +emoji[man_medium_skin_tone_blond_hair_minimally]=$'\U1F471\U1F3FD\U200D\U2642' +emoji[man_medium_dark_skin_tone_blond_hair]=$'\U1F471\U1F3FE\U200D\U2642\UFE0F' +emoji[man_medium_dark_skin_tone_blond_hair_minimally]=$'\U1F471\U1F3FE\U200D\U2642' +emoji[man_dark_skin_tone_blond_hair]=$'\U1F471\U1F3FF\U200D\U2642\UFE0F' +emoji[man_dark_skin_tone_blond_hair_minimally]=$'\U1F471\U1F3FF\U200D\U2642' +emoji[man_red_hair]=$'\U1F468\U200D\U1F9B0' +emoji[red_haired_man]=$'\U1F468\U200D\U1F9B0' +emoji[man_light_skin_tone_red_hair]=$'\U1F468\U1F3FB\U200D\U1F9B0' +emoji[man_medium_light_skin_tone_red_hair]=$'\U1F468\U1F3FC\U200D\U1F9B0' +emoji[man_medium_skin_tone_red_hair]=$'\U1F468\U1F3FD\U200D\U1F9B0' +emoji[man_medium_dark_skin_tone_red_hair]=$'\U1F468\U1F3FE\U200D\U1F9B0' +emoji[man_dark_skin_tone_red_hair]=$'\U1F468\U1F3FF\U200D\U1F9B0' +emoji[man_curly_hair]=$'\U1F468\U200D\U1F9B1' +emoji[curly_haired_man]=$'\U1F468\U200D\U1F9B1' +emoji[man_light_skin_tone_curly_hair]=$'\U1F468\U1F3FB\U200D\U1F9B1' +emoji[man_medium_light_skin_tone_curly_hair]=$'\U1F468\U1F3FC\U200D\U1F9B1' +emoji[man_medium_skin_tone_curly_hair]=$'\U1F468\U1F3FD\U200D\U1F9B1' +emoji[man_medium_dark_skin_tone_curly_hair]=$'\U1F468\U1F3FE\U200D\U1F9B1' +emoji[man_dark_skin_tone_curly_hair]=$'\U1F468\U1F3FF\U200D\U1F9B1' +emoji[man_white_hair]=$'\U1F468\U200D\U1F9B3' +emoji[white_haired_man]=$'\U1F468\U200D\U1F9B3' +emoji[man_light_skin_tone_white_hair]=$'\U1F468\U1F3FB\U200D\U1F9B3' +emoji[man_medium_light_skin_tone_white_hair]=$'\U1F468\U1F3FC\U200D\U1F9B3' +emoji[man_medium_skin_tone_white_hair]=$'\U1F468\U1F3FD\U200D\U1F9B3' +emoji[man_medium_dark_skin_tone_white_hair]=$'\U1F468\U1F3FE\U200D\U1F9B3' +emoji[man_dark_skin_tone_white_hair]=$'\U1F468\U1F3FF\U200D\U1F9B3' +emoji[man_bald]=$'\U1F468\U200D\U1F9B2' +emoji[bald_man]=$'\U1F468\U200D\U1F9B2' +emoji[man_light_skin_tone_bald]=$'\U1F468\U1F3FB\U200D\U1F9B2' +emoji[man_medium_light_skin_tone_bald]=$'\U1F468\U1F3FC\U200D\U1F9B2' +emoji[man_medium_skin_tone_bald]=$'\U1F468\U1F3FD\U200D\U1F9B2' +emoji[man_medium_dark_skin_tone_bald]=$'\U1F468\U1F3FE\U200D\U1F9B2' +emoji[man_dark_skin_tone_bald]=$'\U1F468\U1F3FF\U200D\U1F9B2' +emoji[woman]=$'\U1F469' +emoji[woman_light_skin_tone]=$'\U1F469\U1F3FB' +emoji[woman_medium_light_skin_tone]=$'\U1F469\U1F3FC' +emoji[woman_medium_skin_tone]=$'\U1F469\U1F3FD' +emoji[woman_medium_dark_skin_tone]=$'\U1F469\U1F3FE' +emoji[woman_dark_skin_tone]=$'\U1F469\U1F3FF' +emoji[woman_blond_hair]=$'\U1F471\U200D\U2640\UFE0F' +emoji[woman_blond_hair_minimally]=$'\U1F471\U200D\U2640' +emoji[blond_haired_woman]=$'\U1F471\U200D\U2640' +emoji[blonde_woman]=$'\U1F471\U200D\U2640' +emoji[woman_light_skin_tone_blond_hair]=$'\U1F471\U1F3FB\U200D\U2640\UFE0F' +emoji[woman_light_skin_tone_blond_hair_minimally]=$'\U1F471\U1F3FB\U200D\U2640' +emoji[woman_medium_light_skin_tone_blond_hair]=$'\U1F471\U1F3FC\U200D\U2640\UFE0F' +emoji[woman_medium_light_skin_tone_blond_hair_minimally]=$'\U1F471\U1F3FC\U200D\U2640' +emoji[woman_medium_skin_tone_blond_hair]=$'\U1F471\U1F3FD\U200D\U2640\UFE0F' +emoji[woman_medium_skin_tone_blond_hair_minimally]=$'\U1F471\U1F3FD\U200D\U2640' +emoji[woman_medium_dark_skin_tone_blond_hair]=$'\U1F471\U1F3FE\U200D\U2640\UFE0F' +emoji[woman_medium_dark_skin_tone_blond_hair_minimally]=$'\U1F471\U1F3FE\U200D\U2640' +emoji[woman_dark_skin_tone_blond_hair]=$'\U1F471\U1F3FF\U200D\U2640\UFE0F' +emoji[woman_dark_skin_tone_blond_hair_minimally]=$'\U1F471\U1F3FF\U200D\U2640' +emoji[woman_red_hair]=$'\U1F469\U200D\U1F9B0' +emoji[red_haired_woman]=$'\U1F469\U200D\U1F9B0' +emoji[woman_light_skin_tone_red_hair]=$'\U1F469\U1F3FB\U200D\U1F9B0' +emoji[woman_medium_light_skin_tone_red_hair]=$'\U1F469\U1F3FC\U200D\U1F9B0' +emoji[woman_medium_skin_tone_red_hair]=$'\U1F469\U1F3FD\U200D\U1F9B0' +emoji[woman_medium_dark_skin_tone_red_hair]=$'\U1F469\U1F3FE\U200D\U1F9B0' +emoji[woman_dark_skin_tone_red_hair]=$'\U1F469\U1F3FF\U200D\U1F9B0' +emoji[woman_curly_hair]=$'\U1F469\U200D\U1F9B1' +emoji[curly_haired_woman]=$'\U1F469\U200D\U1F9B1' +emoji[woman_light_skin_tone_curly_hair]=$'\U1F469\U1F3FB\U200D\U1F9B1' +emoji[woman_medium_light_skin_tone_curly_hair]=$'\U1F469\U1F3FC\U200D\U1F9B1' +emoji[woman_medium_skin_tone_curly_hair]=$'\U1F469\U1F3FD\U200D\U1F9B1' +emoji[woman_medium_dark_skin_tone_curly_hair]=$'\U1F469\U1F3FE\U200D\U1F9B1' +emoji[woman_dark_skin_tone_curly_hair]=$'\U1F469\U1F3FF\U200D\U1F9B1' +emoji[woman_white_hair]=$'\U1F469\U200D\U1F9B3' +emoji[white_haired_woman]=$'\U1F469\U200D\U1F9B3' +emoji[woman_light_skin_tone_white_hair]=$'\U1F469\U1F3FB\U200D\U1F9B3' +emoji[woman_medium_light_skin_tone_white_hair]=$'\U1F469\U1F3FC\U200D\U1F9B3' +emoji[woman_medium_skin_tone_white_hair]=$'\U1F469\U1F3FD\U200D\U1F9B3' +emoji[woman_medium_dark_skin_tone_white_hair]=$'\U1F469\U1F3FE\U200D\U1F9B3' +emoji[woman_dark_skin_tone_white_hair]=$'\U1F469\U1F3FF\U200D\U1F9B3' +emoji[woman_bald]=$'\U1F469\U200D\U1F9B2' +emoji[bald_woman]=$'\U1F469\U200D\U1F9B2' +emoji[woman_light_skin_tone_bald]=$'\U1F469\U1F3FB\U200D\U1F9B2' +emoji[woman_medium_light_skin_tone_bald]=$'\U1F469\U1F3FC\U200D\U1F9B2' +emoji[woman_medium_skin_tone_bald]=$'\U1F469\U1F3FD\U200D\U1F9B2' +emoji[woman_medium_dark_skin_tone_bald]=$'\U1F469\U1F3FE\U200D\U1F9B2' +emoji[woman_dark_skin_tone_bald]=$'\U1F469\U1F3FF\U200D\U1F9B2' +emoji[older_person]=$'\U1F9D3' +emoji[older_adult]=$'\U1F9D3' +emoji[older_person_light_skin_tone]=$'\U1F9D3\U1F3FB' +emoji[older_person_medium_light_skin_tone]=$'\U1F9D3\U1F3FC' +emoji[older_person_medium_skin_tone]=$'\U1F9D3\U1F3FD' +emoji[older_person_medium_dark_skin_tone]=$'\U1F9D3\U1F3FE' +emoji[older_person_dark_skin_tone]=$'\U1F9D3\U1F3FF' +emoji[old_man]=$'\U1F474' +emoji[older_man]=$'\U1F474' +emoji[old_man_light_skin_tone]=$'\U1F474\U1F3FB' +emoji[old_man_medium_light_skin_tone]=$'\U1F474\U1F3FC' +emoji[old_man_medium_skin_tone]=$'\U1F474\U1F3FD' +emoji[old_man_medium_dark_skin_tone]=$'\U1F474\U1F3FE' +emoji[old_man_dark_skin_tone]=$'\U1F474\U1F3FF' +emoji[old_woman]=$'\U1F475' +emoji[older_woman]=$'\U1F475' +emoji[old_woman_light_skin_tone]=$'\U1F475\U1F3FB' +emoji[old_woman_medium_light_skin_tone]=$'\U1F475\U1F3FC' +emoji[old_woman_medium_skin_tone]=$'\U1F475\U1F3FD' +emoji[old_woman_medium_dark_skin_tone]=$'\U1F475\U1F3FE' +emoji[old_woman_dark_skin_tone]=$'\U1F475\U1F3FF' +emoji[person_frowning]=$'\U1F64D' +emoji[frowning_person]=$'\U1F64D' +emoji[person_frowning_light_skin_tone]=$'\U1F64D\U1F3FB' +emoji[person_frowning_medium_light_skin_tone]=$'\U1F64D\U1F3FC' +emoji[person_frowning_medium_skin_tone]=$'\U1F64D\U1F3FD' +emoji[person_frowning_medium_dark_skin_tone]=$'\U1F64D\U1F3FE' +emoji[person_frowning_dark_skin_tone]=$'\U1F64D\U1F3FF' +emoji[man_frowning]=$'\U1F64D\U200D\U2642\UFE0F' +emoji[man_frowning_minimally]=$'\U1F64D\U200D\U2642' +emoji[frowning_man]=$'\U1F64D\U200D\U2642' +emoji[man_frowning_light_skin_tone]=$'\U1F64D\U1F3FB\U200D\U2642\UFE0F' +emoji[man_frowning_light_skin_tone_minimally]=$'\U1F64D\U1F3FB\U200D\U2642' +emoji[man_frowning_medium_light_skin_tone]=$'\U1F64D\U1F3FC\U200D\U2642\UFE0F' +emoji[man_frowning_medium_light_skin_tone_minimally]=$'\U1F64D\U1F3FC\U200D\U2642' +emoji[man_frowning_medium_skin_tone]=$'\U1F64D\U1F3FD\U200D\U2642\UFE0F' +emoji[man_frowning_medium_skin_tone_minimally]=$'\U1F64D\U1F3FD\U200D\U2642' +emoji[man_frowning_medium_dark_skin_tone]=$'\U1F64D\U1F3FE\U200D\U2642\UFE0F' +emoji[man_frowning_medium_dark_skin_tone_minimally]=$'\U1F64D\U1F3FE\U200D\U2642' +emoji[man_frowning_dark_skin_tone]=$'\U1F64D\U1F3FF\U200D\U2642\UFE0F' +emoji[man_frowning_dark_skin_tone_minimally]=$'\U1F64D\U1F3FF\U200D\U2642' +emoji[woman_frowning]=$'\U1F64D\U200D\U2640\UFE0F' +emoji[woman_frowning_minimally]=$'\U1F64D\U200D\U2640' +emoji[frowning_woman]=$'\U1F64D\U200D\U2640' +emoji[woman_frowning_light_skin_tone]=$'\U1F64D\U1F3FB\U200D\U2640\UFE0F' +emoji[woman_frowning_light_skin_tone_minimally]=$'\U1F64D\U1F3FB\U200D\U2640' +emoji[woman_frowning_medium_light_skin_tone]=$'\U1F64D\U1F3FC\U200D\U2640\UFE0F' +emoji[woman_frowning_medium_light_skin_tone_minimally]=$'\U1F64D\U1F3FC\U200D\U2640' +emoji[woman_frowning_medium_skin_tone]=$'\U1F64D\U1F3FD\U200D\U2640\UFE0F' +emoji[woman_frowning_medium_skin_tone_minimally]=$'\U1F64D\U1F3FD\U200D\U2640' +emoji[woman_frowning_medium_dark_skin_tone]=$'\U1F64D\U1F3FE\U200D\U2640\UFE0F' +emoji[woman_frowning_medium_dark_skin_tone_minimally]=$'\U1F64D\U1F3FE\U200D\U2640' +emoji[woman_frowning_dark_skin_tone]=$'\U1F64D\U1F3FF\U200D\U2640\UFE0F' +emoji[woman_frowning_dark_skin_tone_minimally]=$'\U1F64D\U1F3FF\U200D\U2640' +emoji[person_pouting]=$'\U1F64E' +emoji[person_pouting_light_skin_tone]=$'\U1F64E\U1F3FB' +emoji[person_pouting_medium_light_skin_tone]=$'\U1F64E\U1F3FC' +emoji[person_pouting_medium_skin_tone]=$'\U1F64E\U1F3FD' +emoji[person_pouting_medium_dark_skin_tone]=$'\U1F64E\U1F3FE' +emoji[person_pouting_dark_skin_tone]=$'\U1F64E\U1F3FF' +emoji[man_pouting]=$'\U1F64E\U200D\U2642\UFE0F' +emoji[man_pouting_minimally]=$'\U1F64E\U200D\U2642' +emoji[pouting_man]=$'\U1F64E\U200D\U2642' +emoji[man_pouting_light_skin_tone]=$'\U1F64E\U1F3FB\U200D\U2642\UFE0F' +emoji[man_pouting_light_skin_tone_minimally]=$'\U1F64E\U1F3FB\U200D\U2642' +emoji[man_pouting_medium_light_skin_tone]=$'\U1F64E\U1F3FC\U200D\U2642\UFE0F' +emoji[man_pouting_medium_light_skin_tone_minimally]=$'\U1F64E\U1F3FC\U200D\U2642' +emoji[man_pouting_medium_skin_tone]=$'\U1F64E\U1F3FD\U200D\U2642\UFE0F' +emoji[man_pouting_medium_skin_tone_minimally]=$'\U1F64E\U1F3FD\U200D\U2642' +emoji[man_pouting_medium_dark_skin_tone]=$'\U1F64E\U1F3FE\U200D\U2642\UFE0F' +emoji[man_pouting_medium_dark_skin_tone_minimally]=$'\U1F64E\U1F3FE\U200D\U2642' +emoji[man_pouting_dark_skin_tone]=$'\U1F64E\U1F3FF\U200D\U2642\UFE0F' +emoji[man_pouting_dark_skin_tone_minimally]=$'\U1F64E\U1F3FF\U200D\U2642' +emoji[woman_pouting]=$'\U1F64E\U200D\U2640\UFE0F' +emoji[woman_pouting_minimally]=$'\U1F64E\U200D\U2640' +emoji[pouting_woman]=$'\U1F64E\U200D\U2640' +emoji[woman_pouting_light_skin_tone]=$'\U1F64E\U1F3FB\U200D\U2640\UFE0F' +emoji[woman_pouting_light_skin_tone_minimally]=$'\U1F64E\U1F3FB\U200D\U2640' +emoji[woman_pouting_medium_light_skin_tone]=$'\U1F64E\U1F3FC\U200D\U2640\UFE0F' +emoji[woman_pouting_medium_light_skin_tone_minimally]=$'\U1F64E\U1F3FC\U200D\U2640' +emoji[woman_pouting_medium_skin_tone]=$'\U1F64E\U1F3FD\U200D\U2640\UFE0F' +emoji[woman_pouting_medium_skin_tone_minimally]=$'\U1F64E\U1F3FD\U200D\U2640' +emoji[woman_pouting_medium_dark_skin_tone]=$'\U1F64E\U1F3FE\U200D\U2640\UFE0F' +emoji[woman_pouting_medium_dark_skin_tone_minimally]=$'\U1F64E\U1F3FE\U200D\U2640' +emoji[woman_pouting_dark_skin_tone]=$'\U1F64E\U1F3FF\U200D\U2640\UFE0F' +emoji[woman_pouting_dark_skin_tone_minimally]=$'\U1F64E\U1F3FF\U200D\U2640' +emoji[person_gesturing_NO]=$'\U1F645' +emoji[no_good]=$'\U1F645' +emoji[person_gesturing_NO_light_skin_tone]=$'\U1F645\U1F3FB' +emoji[person_gesturing_NO_medium_light_skin_tone]=$'\U1F645\U1F3FC' +emoji[person_gesturing_NO_medium_skin_tone]=$'\U1F645\U1F3FD' +emoji[person_gesturing_NO_medium_dark_skin_tone]=$'\U1F645\U1F3FE' +emoji[person_gesturing_NO_dark_skin_tone]=$'\U1F645\U1F3FF' +emoji[man_gesturing_NO]=$'\U1F645\U200D\U2642\UFE0F' +emoji[man_gesturing_NO_minimally]=$'\U1F645\U200D\U2642' +emoji[no_good_man]=$'\U1F645\U200D\U2642' +emoji[ng_man]=$'\U1F645\U200D\U2642' +emoji[man_gesturing_NO_light_skin_tone]=$'\U1F645\U1F3FB\U200D\U2642\UFE0F' +emoji[man_gesturing_NO_light_skin_tone_minimally]=$'\U1F645\U1F3FB\U200D\U2642' +emoji[man_gesturing_NO_medium_light_skin_tone]=$'\U1F645\U1F3FC\U200D\U2642\UFE0F' +emoji[man_gesturing_NO_medium_light_skin_tone_minimally]=$'\U1F645\U1F3FC\U200D\U2642' +emoji[man_gesturing_NO_medium_skin_tone]=$'\U1F645\U1F3FD\U200D\U2642\UFE0F' +emoji[man_gesturing_NO_medium_skin_tone_minimally]=$'\U1F645\U1F3FD\U200D\U2642' +emoji[man_gesturing_NO_medium_dark_skin_tone]=$'\U1F645\U1F3FE\U200D\U2642\UFE0F' +emoji[man_gesturing_NO_medium_dark_skin_tone_minimally]=$'\U1F645\U1F3FE\U200D\U2642' +emoji[man_gesturing_NO_dark_skin_tone]=$'\U1F645\U1F3FF\U200D\U2642\UFE0F' +emoji[man_gesturing_NO_dark_skin_tone_minimally]=$'\U1F645\U1F3FF\U200D\U2642' +emoji[woman_gesturing_NO]=$'\U1F645\U200D\U2640\UFE0F' +emoji[woman_gesturing_NO_minimally]=$'\U1F645\U200D\U2640' +emoji[no_good_woman]=$'\U1F645\U200D\U2640' +emoji[ng_woman]=$'\U1F645\U200D\U2640' +emoji[woman_gesturing_NO_light_skin_tone]=$'\U1F645\U1F3FB\U200D\U2640\UFE0F' +emoji[woman_gesturing_NO_light_skin_tone_minimally]=$'\U1F645\U1F3FB\U200D\U2640' +emoji[woman_gesturing_NO_medium_light_skin_tone]=$'\U1F645\U1F3FC\U200D\U2640\UFE0F' +emoji[woman_gesturing_NO_medium_light_skin_tone_minimally]=$'\U1F645\U1F3FC\U200D\U2640' +emoji[woman_gesturing_NO_medium_skin_tone]=$'\U1F645\U1F3FD\U200D\U2640\UFE0F' +emoji[woman_gesturing_NO_medium_skin_tone_minimally]=$'\U1F645\U1F3FD\U200D\U2640' +emoji[woman_gesturing_NO_medium_dark_skin_tone]=$'\U1F645\U1F3FE\U200D\U2640\UFE0F' +emoji[woman_gesturing_NO_medium_dark_skin_tone_minimally]=$'\U1F645\U1F3FE\U200D\U2640' +emoji[woman_gesturing_NO_dark_skin_tone]=$'\U1F645\U1F3FF\U200D\U2640\UFE0F' +emoji[woman_gesturing_NO_dark_skin_tone_minimally]=$'\U1F645\U1F3FF\U200D\U2640' +emoji[person_gesturing_OK]=$'\U1F646' +emoji[ok_person]=$'\U1F646' +emoji[person_gesturing_OK_light_skin_tone]=$'\U1F646\U1F3FB' +emoji[person_gesturing_OK_medium_light_skin_tone]=$'\U1F646\U1F3FC' +emoji[person_gesturing_OK_medium_skin_tone]=$'\U1F646\U1F3FD' +emoji[person_gesturing_OK_medium_dark_skin_tone]=$'\U1F646\U1F3FE' +emoji[person_gesturing_OK_dark_skin_tone]=$'\U1F646\U1F3FF' +emoji[man_gesturing_OK]=$'\U1F646\U200D\U2642\UFE0F' +emoji[man_gesturing_OK_minimally]=$'\U1F646\U200D\U2642' +emoji[ok_man]=$'\U1F646\U200D\U2642' +emoji[man_gesturing_OK_light_skin_tone]=$'\U1F646\U1F3FB\U200D\U2642\UFE0F' +emoji[man_gesturing_OK_light_skin_tone_minimally]=$'\U1F646\U1F3FB\U200D\U2642' +emoji[man_gesturing_OK_medium_light_skin_tone]=$'\U1F646\U1F3FC\U200D\U2642\UFE0F' +emoji[man_gesturing_OK_medium_light_skin_tone_minimally]=$'\U1F646\U1F3FC\U200D\U2642' +emoji[man_gesturing_OK_medium_skin_tone]=$'\U1F646\U1F3FD\U200D\U2642\UFE0F' +emoji[man_gesturing_OK_medium_skin_tone_minimally]=$'\U1F646\U1F3FD\U200D\U2642' +emoji[man_gesturing_OK_medium_dark_skin_tone]=$'\U1F646\U1F3FE\U200D\U2642\UFE0F' +emoji[man_gesturing_OK_medium_dark_skin_tone_minimally]=$'\U1F646\U1F3FE\U200D\U2642' +emoji[man_gesturing_OK_dark_skin_tone]=$'\U1F646\U1F3FF\U200D\U2642\UFE0F' +emoji[man_gesturing_OK_dark_skin_tone_minimally]=$'\U1F646\U1F3FF\U200D\U2642' +emoji[woman_gesturing_OK]=$'\U1F646\U200D\U2640\UFE0F' +emoji[woman_gesturing_OK_minimally]=$'\U1F646\U200D\U2640' +emoji[ok_woman]=$'\U1F646\U200D\U2640' +emoji[woman_gesturing_OK_light_skin_tone]=$'\U1F646\U1F3FB\U200D\U2640\UFE0F' +emoji[woman_gesturing_OK_light_skin_tone_minimally]=$'\U1F646\U1F3FB\U200D\U2640' +emoji[woman_gesturing_OK_medium_light_skin_tone]=$'\U1F646\U1F3FC\U200D\U2640\UFE0F' +emoji[woman_gesturing_OK_medium_light_skin_tone_minimally]=$'\U1F646\U1F3FC\U200D\U2640' +emoji[woman_gesturing_OK_medium_skin_tone]=$'\U1F646\U1F3FD\U200D\U2640\UFE0F' +emoji[woman_gesturing_OK_medium_skin_tone_minimally]=$'\U1F646\U1F3FD\U200D\U2640' +emoji[woman_gesturing_OK_medium_dark_skin_tone]=$'\U1F646\U1F3FE\U200D\U2640\UFE0F' +emoji[woman_gesturing_OK_medium_dark_skin_tone_minimally]=$'\U1F646\U1F3FE\U200D\U2640' +emoji[woman_gesturing_OK_dark_skin_tone]=$'\U1F646\U1F3FF\U200D\U2640\UFE0F' +emoji[woman_gesturing_OK_dark_skin_tone_minimally]=$'\U1F646\U1F3FF\U200D\U2640' +emoji[person_tipping_hand]=$'\U1F481' +emoji[tipping_hand_person]=$'\U1F481' +emoji[information_desk_person]=$'\U1F481' +emoji[person_tipping_hand_light_skin_tone]=$'\U1F481\U1F3FB' +emoji[person_tipping_hand_medium_light_skin_tone]=$'\U1F481\U1F3FC' +emoji[person_tipping_hand_medium_skin_tone]=$'\U1F481\U1F3FD' +emoji[person_tipping_hand_medium_dark_skin_tone]=$'\U1F481\U1F3FE' +emoji[person_tipping_hand_dark_skin_tone]=$'\U1F481\U1F3FF' +emoji[man_tipping_hand]=$'\U1F481\U200D\U2642\UFE0F' +emoji[man_tipping_hand_minimally]=$'\U1F481\U200D\U2642' +emoji[tipping_hand_man]=$'\U1F481\U200D\U2642' +emoji[sassy_man]=$'\U1F481\U200D\U2642' +emoji[man_tipping_hand_light_skin_tone]=$'\U1F481\U1F3FB\U200D\U2642\UFE0F' +emoji[man_tipping_hand_light_skin_tone_minimally]=$'\U1F481\U1F3FB\U200D\U2642' +emoji[man_tipping_hand_medium_light_skin_tone]=$'\U1F481\U1F3FC\U200D\U2642\UFE0F' +emoji[man_tipping_hand_medium_light_skin_tone_minimally]=$'\U1F481\U1F3FC\U200D\U2642' +emoji[man_tipping_hand_medium_skin_tone]=$'\U1F481\U1F3FD\U200D\U2642\UFE0F' +emoji[man_tipping_hand_medium_skin_tone_minimally]=$'\U1F481\U1F3FD\U200D\U2642' +emoji[man_tipping_hand_medium_dark_skin_tone]=$'\U1F481\U1F3FE\U200D\U2642\UFE0F' +emoji[man_tipping_hand_medium_dark_skin_tone_minimally]=$'\U1F481\U1F3FE\U200D\U2642' +emoji[man_tipping_hand_dark_skin_tone]=$'\U1F481\U1F3FF\U200D\U2642\UFE0F' +emoji[man_tipping_hand_dark_skin_tone_minimally]=$'\U1F481\U1F3FF\U200D\U2642' +emoji[woman_tipping_hand]=$'\U1F481\U200D\U2640\UFE0F' +emoji[woman_tipping_hand_minimally]=$'\U1F481\U200D\U2640' +emoji[tipping_hand_woman]=$'\U1F481\U200D\U2640' +emoji[sassy_woman]=$'\U1F481\U200D\U2640' +emoji[woman_tipping_hand_light_skin_tone]=$'\U1F481\U1F3FB\U200D\U2640\UFE0F' +emoji[woman_tipping_hand_light_skin_tone_minimally]=$'\U1F481\U1F3FB\U200D\U2640' +emoji[woman_tipping_hand_medium_light_skin_tone]=$'\U1F481\U1F3FC\U200D\U2640\UFE0F' +emoji[woman_tipping_hand_medium_light_skin_tone_minimally]=$'\U1F481\U1F3FC\U200D\U2640' +emoji[woman_tipping_hand_medium_skin_tone]=$'\U1F481\U1F3FD\U200D\U2640\UFE0F' +emoji[woman_tipping_hand_medium_skin_tone_minimally]=$'\U1F481\U1F3FD\U200D\U2640' +emoji[woman_tipping_hand_medium_dark_skin_tone]=$'\U1F481\U1F3FE\U200D\U2640\UFE0F' +emoji[woman_tipping_hand_medium_dark_skin_tone_minimally]=$'\U1F481\U1F3FE\U200D\U2640' +emoji[woman_tipping_hand_dark_skin_tone]=$'\U1F481\U1F3FF\U200D\U2640\UFE0F' +emoji[woman_tipping_hand_dark_skin_tone_minimally]=$'\U1F481\U1F3FF\U200D\U2640' +emoji[person_raising_hand]=$'\U1F64B' +emoji[raising_hand]=$'\U1F64B' +emoji[person_raising_hand_light_skin_tone]=$'\U1F64B\U1F3FB' +emoji[person_raising_hand_medium_light_skin_tone]=$'\U1F64B\U1F3FC' +emoji[person_raising_hand_medium_skin_tone]=$'\U1F64B\U1F3FD' +emoji[person_raising_hand_medium_dark_skin_tone]=$'\U1F64B\U1F3FE' +emoji[person_raising_hand_dark_skin_tone]=$'\U1F64B\U1F3FF' +emoji[man_raising_hand]=$'\U1F64B\U200D\U2642\UFE0F' +emoji[man_raising_hand_minimally]=$'\U1F64B\U200D\U2642' +emoji[raising_hand_man]=$'\U1F64B\U200D\U2642' +emoji[man_raising_hand_light_skin_tone]=$'\U1F64B\U1F3FB\U200D\U2642\UFE0F' +emoji[man_raising_hand_light_skin_tone_minimally]=$'\U1F64B\U1F3FB\U200D\U2642' +emoji[man_raising_hand_medium_light_skin_tone]=$'\U1F64B\U1F3FC\U200D\U2642\UFE0F' +emoji[man_raising_hand_medium_light_skin_tone_minimally]=$'\U1F64B\U1F3FC\U200D\U2642' +emoji[man_raising_hand_medium_skin_tone]=$'\U1F64B\U1F3FD\U200D\U2642\UFE0F' +emoji[man_raising_hand_medium_skin_tone_minimally]=$'\U1F64B\U1F3FD\U200D\U2642' +emoji[man_raising_hand_medium_dark_skin_tone]=$'\U1F64B\U1F3FE\U200D\U2642\UFE0F' +emoji[man_raising_hand_medium_dark_skin_tone_minimally]=$'\U1F64B\U1F3FE\U200D\U2642' +emoji[man_raising_hand_dark_skin_tone]=$'\U1F64B\U1F3FF\U200D\U2642\UFE0F' +emoji[man_raising_hand_dark_skin_tone_minimally]=$'\U1F64B\U1F3FF\U200D\U2642' +emoji[woman_raising_hand]=$'\U1F64B\U200D\U2640\UFE0F' +emoji[woman_raising_hand_minimally]=$'\U1F64B\U200D\U2640' +emoji[raising_hand_woman]=$'\U1F64B\U200D\U2640' +emoji[woman_raising_hand_light_skin_tone]=$'\U1F64B\U1F3FB\U200D\U2640\UFE0F' +emoji[woman_raising_hand_light_skin_tone_minimally]=$'\U1F64B\U1F3FB\U200D\U2640' +emoji[woman_raising_hand_medium_light_skin_tone]=$'\U1F64B\U1F3FC\U200D\U2640\UFE0F' +emoji[woman_raising_hand_medium_light_skin_tone_minimally]=$'\U1F64B\U1F3FC\U200D\U2640' +emoji[woman_raising_hand_medium_skin_tone]=$'\U1F64B\U1F3FD\U200D\U2640\UFE0F' +emoji[woman_raising_hand_medium_skin_tone_minimally]=$'\U1F64B\U1F3FD\U200D\U2640' +emoji[woman_raising_hand_medium_dark_skin_tone]=$'\U1F64B\U1F3FE\U200D\U2640\UFE0F' +emoji[woman_raising_hand_medium_dark_skin_tone_minimally]=$'\U1F64B\U1F3FE\U200D\U2640' +emoji[woman_raising_hand_dark_skin_tone]=$'\U1F64B\U1F3FF\U200D\U2640\UFE0F' +emoji[woman_raising_hand_dark_skin_tone_minimally]=$'\U1F64B\U1F3FF\U200D\U2640' +emoji[deaf_person]=$'\U1F9CF' +emoji[deaf_person_light_skin_tone]=$'\U1F9CF\U1F3FB' +emoji[deaf_person_medium_light_skin_tone]=$'\U1F9CF\U1F3FC' +emoji[deaf_person_medium_skin_tone]=$'\U1F9CF\U1F3FD' +emoji[deaf_person_medium_dark_skin_tone]=$'\U1F9CF\U1F3FE' +emoji[deaf_person_dark_skin_tone]=$'\U1F9CF\U1F3FF' +emoji[deaf_man]=$'\U1F9CF\U200D\U2642\UFE0F' +emoji[deaf_man_minimally]=$'\U1F9CF\U200D\U2642' +emoji[deaf_man_light_skin_tone]=$'\U1F9CF\U1F3FB\U200D\U2642\UFE0F' +emoji[deaf_man_light_skin_tone_minimally]=$'\U1F9CF\U1F3FB\U200D\U2642' +emoji[deaf_man_medium_light_skin_tone]=$'\U1F9CF\U1F3FC\U200D\U2642\UFE0F' +emoji[deaf_man_medium_light_skin_tone_minimally]=$'\U1F9CF\U1F3FC\U200D\U2642' +emoji[deaf_man_medium_skin_tone]=$'\U1F9CF\U1F3FD\U200D\U2642\UFE0F' +emoji[deaf_man_medium_skin_tone_minimally]=$'\U1F9CF\U1F3FD\U200D\U2642' +emoji[deaf_man_medium_dark_skin_tone]=$'\U1F9CF\U1F3FE\U200D\U2642\UFE0F' +emoji[deaf_man_medium_dark_skin_tone_minimally]=$'\U1F9CF\U1F3FE\U200D\U2642' +emoji[deaf_man_dark_skin_tone]=$'\U1F9CF\U1F3FF\U200D\U2642\UFE0F' +emoji[deaf_man_dark_skin_tone_minimally]=$'\U1F9CF\U1F3FF\U200D\U2642' +emoji[deaf_woman]=$'\U1F9CF\U200D\U2640\UFE0F' +emoji[deaf_woman_minimally]=$'\U1F9CF\U200D\U2640' +emoji[deaf_woman_light_skin_tone]=$'\U1F9CF\U1F3FB\U200D\U2640\UFE0F' +emoji[deaf_woman_light_skin_tone_minimally]=$'\U1F9CF\U1F3FB\U200D\U2640' +emoji[deaf_woman_medium_light_skin_tone]=$'\U1F9CF\U1F3FC\U200D\U2640\UFE0F' +emoji[deaf_woman_medium_light_skin_tone_minimally]=$'\U1F9CF\U1F3FC\U200D\U2640' +emoji[deaf_woman_medium_skin_tone]=$'\U1F9CF\U1F3FD\U200D\U2640\UFE0F' +emoji[deaf_woman_medium_skin_tone_minimally]=$'\U1F9CF\U1F3FD\U200D\U2640' +emoji[deaf_woman_medium_dark_skin_tone]=$'\U1F9CF\U1F3FE\U200D\U2640\UFE0F' +emoji[deaf_woman_medium_dark_skin_tone_minimally]=$'\U1F9CF\U1F3FE\U200D\U2640' +emoji[deaf_woman_dark_skin_tone]=$'\U1F9CF\U1F3FF\U200D\U2640\UFE0F' +emoji[deaf_woman_dark_skin_tone_minimally]=$'\U1F9CF\U1F3FF\U200D\U2640' +emoji[person_bowing]=$'\U1F647' +emoji[bow]=$'\U1F647' +emoji[person_bowing_light_skin_tone]=$'\U1F647\U1F3FB' +emoji[person_bowing_medium_light_skin_tone]=$'\U1F647\U1F3FC' +emoji[person_bowing_medium_skin_tone]=$'\U1F647\U1F3FD' +emoji[person_bowing_medium_dark_skin_tone]=$'\U1F647\U1F3FE' +emoji[person_bowing_dark_skin_tone]=$'\U1F647\U1F3FF' +emoji[man_bowing]=$'\U1F647\U200D\U2642\UFE0F' +emoji[man_bowing_minimally]=$'\U1F647\U200D\U2642' +emoji[bowing_man]=$'\U1F647\U200D\U2642' +emoji[man_bowing_light_skin_tone]=$'\U1F647\U1F3FB\U200D\U2642\UFE0F' +emoji[man_bowing_light_skin_tone_minimally]=$'\U1F647\U1F3FB\U200D\U2642' +emoji[man_bowing_medium_light_skin_tone]=$'\U1F647\U1F3FC\U200D\U2642\UFE0F' +emoji[man_bowing_medium_light_skin_tone_minimally]=$'\U1F647\U1F3FC\U200D\U2642' +emoji[man_bowing_medium_skin_tone]=$'\U1F647\U1F3FD\U200D\U2642\UFE0F' +emoji[man_bowing_medium_skin_tone_minimally]=$'\U1F647\U1F3FD\U200D\U2642' +emoji[man_bowing_medium_dark_skin_tone]=$'\U1F647\U1F3FE\U200D\U2642\UFE0F' +emoji[man_bowing_medium_dark_skin_tone_minimally]=$'\U1F647\U1F3FE\U200D\U2642' +emoji[man_bowing_dark_skin_tone]=$'\U1F647\U1F3FF\U200D\U2642\UFE0F' +emoji[man_bowing_dark_skin_tone_minimally]=$'\U1F647\U1F3FF\U200D\U2642' +emoji[woman_bowing]=$'\U1F647\U200D\U2640\UFE0F' +emoji[woman_bowing_minimally]=$'\U1F647\U200D\U2640' +emoji[bowing_woman]=$'\U1F647\U200D\U2640' +emoji[woman_bowing_light_skin_tone]=$'\U1F647\U1F3FB\U200D\U2640\UFE0F' +emoji[woman_bowing_light_skin_tone_minimally]=$'\U1F647\U1F3FB\U200D\U2640' +emoji[woman_bowing_medium_light_skin_tone]=$'\U1F647\U1F3FC\U200D\U2640\UFE0F' +emoji[woman_bowing_medium_light_skin_tone_minimally]=$'\U1F647\U1F3FC\U200D\U2640' +emoji[woman_bowing_medium_skin_tone]=$'\U1F647\U1F3FD\U200D\U2640\UFE0F' +emoji[woman_bowing_medium_skin_tone_minimally]=$'\U1F647\U1F3FD\U200D\U2640' +emoji[woman_bowing_medium_dark_skin_tone]=$'\U1F647\U1F3FE\U200D\U2640\UFE0F' +emoji[woman_bowing_medium_dark_skin_tone_minimally]=$'\U1F647\U1F3FE\U200D\U2640' +emoji[woman_bowing_dark_skin_tone]=$'\U1F647\U1F3FF\U200D\U2640\UFE0F' +emoji[woman_bowing_dark_skin_tone_minimally]=$'\U1F647\U1F3FF\U200D\U2640' +emoji[person_facepalming]=$'\U1F926' +emoji[facepalm]=$'\U1F926' +emoji[person_facepalming_light_skin_tone]=$'\U1F926\U1F3FB' +emoji[person_facepalming_medium_light_skin_tone]=$'\U1F926\U1F3FC' +emoji[person_facepalming_medium_skin_tone]=$'\U1F926\U1F3FD' +emoji[person_facepalming_medium_dark_skin_tone]=$'\U1F926\U1F3FE' +emoji[person_facepalming_dark_skin_tone]=$'\U1F926\U1F3FF' +emoji[man_facepalming]=$'\U1F926\U200D\U2642\UFE0F' +emoji[man_facepalming_minimally]=$'\U1F926\U200D\U2642' +emoji[man_facepalming_light_skin_tone]=$'\U1F926\U1F3FB\U200D\U2642\UFE0F' +emoji[man_facepalming_light_skin_tone_minimally]=$'\U1F926\U1F3FB\U200D\U2642' +emoji[man_facepalming_medium_light_skin_tone]=$'\U1F926\U1F3FC\U200D\U2642\UFE0F' +emoji[man_facepalming_medium_light_skin_tone_minimally]=$'\U1F926\U1F3FC\U200D\U2642' +emoji[man_facepalming_medium_skin_tone]=$'\U1F926\U1F3FD\U200D\U2642\UFE0F' +emoji[man_facepalming_medium_skin_tone_minimally]=$'\U1F926\U1F3FD\U200D\U2642' +emoji[man_facepalming_medium_dark_skin_tone]=$'\U1F926\U1F3FE\U200D\U2642\UFE0F' +emoji[man_facepalming_medium_dark_skin_tone_minimally]=$'\U1F926\U1F3FE\U200D\U2642' +emoji[man_facepalming_dark_skin_tone]=$'\U1F926\U1F3FF\U200D\U2642\UFE0F' +emoji[man_facepalming_dark_skin_tone_minimally]=$'\U1F926\U1F3FF\U200D\U2642' +emoji[woman_facepalming]=$'\U1F926\U200D\U2640\UFE0F' +emoji[woman_facepalming_minimally]=$'\U1F926\U200D\U2640' +emoji[woman_facepalming_light_skin_tone]=$'\U1F926\U1F3FB\U200D\U2640\UFE0F' +emoji[woman_facepalming_light_skin_tone_minimally]=$'\U1F926\U1F3FB\U200D\U2640' +emoji[woman_facepalming_medium_light_skin_tone]=$'\U1F926\U1F3FC\U200D\U2640\UFE0F' +emoji[woman_facepalming_medium_light_skin_tone_minimally]=$'\U1F926\U1F3FC\U200D\U2640' +emoji[woman_facepalming_medium_skin_tone]=$'\U1F926\U1F3FD\U200D\U2640\UFE0F' +emoji[woman_facepalming_medium_skin_tone_minimally]=$'\U1F926\U1F3FD\U200D\U2640' +emoji[woman_facepalming_medium_dark_skin_tone]=$'\U1F926\U1F3FE\U200D\U2640\UFE0F' +emoji[woman_facepalming_medium_dark_skin_tone_minimally]=$'\U1F926\U1F3FE\U200D\U2640' +emoji[woman_facepalming_dark_skin_tone]=$'\U1F926\U1F3FF\U200D\U2640\UFE0F' +emoji[woman_facepalming_dark_skin_tone_minimally]=$'\U1F926\U1F3FF\U200D\U2640' +emoji[person_shrugging]=$'\U1F937' +emoji[shrug]=$'\U1F937' +emoji[person_shrugging_light_skin_tone]=$'\U1F937\U1F3FB' +emoji[person_shrugging_medium_light_skin_tone]=$'\U1F937\U1F3FC' +emoji[person_shrugging_medium_skin_tone]=$'\U1F937\U1F3FD' +emoji[person_shrugging_medium_dark_skin_tone]=$'\U1F937\U1F3FE' +emoji[person_shrugging_dark_skin_tone]=$'\U1F937\U1F3FF' +emoji[man_shrugging]=$'\U1F937\U200D\U2642\UFE0F' +emoji[man_shrugging_minimally]=$'\U1F937\U200D\U2642' +emoji[man_shrugging_light_skin_tone]=$'\U1F937\U1F3FB\U200D\U2642\UFE0F' +emoji[man_shrugging_light_skin_tone_minimally]=$'\U1F937\U1F3FB\U200D\U2642' +emoji[man_shrugging_medium_light_skin_tone]=$'\U1F937\U1F3FC\U200D\U2642\UFE0F' +emoji[man_shrugging_medium_light_skin_tone_minimally]=$'\U1F937\U1F3FC\U200D\U2642' +emoji[man_shrugging_medium_skin_tone]=$'\U1F937\U1F3FD\U200D\U2642\UFE0F' +emoji[man_shrugging_medium_skin_tone_minimally]=$'\U1F937\U1F3FD\U200D\U2642' +emoji[man_shrugging_medium_dark_skin_tone]=$'\U1F937\U1F3FE\U200D\U2642\UFE0F' +emoji[man_shrugging_medium_dark_skin_tone_minimally]=$'\U1F937\U1F3FE\U200D\U2642' +emoji[man_shrugging_dark_skin_tone]=$'\U1F937\U1F3FF\U200D\U2642\UFE0F' +emoji[man_shrugging_dark_skin_tone_minimally]=$'\U1F937\U1F3FF\U200D\U2642' +emoji[woman_shrugging]=$'\U1F937\U200D\U2640\UFE0F' +emoji[woman_shrugging_minimally]=$'\U1F937\U200D\U2640' +emoji[woman_shrugging_light_skin_tone]=$'\U1F937\U1F3FB\U200D\U2640\UFE0F' +emoji[woman_shrugging_light_skin_tone_minimally]=$'\U1F937\U1F3FB\U200D\U2640' +emoji[woman_shrugging_medium_light_skin_tone]=$'\U1F937\U1F3FC\U200D\U2640\UFE0F' +emoji[woman_shrugging_medium_light_skin_tone_minimally]=$'\U1F937\U1F3FC\U200D\U2640' +emoji[woman_shrugging_medium_skin_tone]=$'\U1F937\U1F3FD\U200D\U2640\UFE0F' +emoji[woman_shrugging_medium_skin_tone_minimally]=$'\U1F937\U1F3FD\U200D\U2640' +emoji[woman_shrugging_medium_dark_skin_tone]=$'\U1F937\U1F3FE\U200D\U2640\UFE0F' +emoji[woman_shrugging_medium_dark_skin_tone_minimally]=$'\U1F937\U1F3FE\U200D\U2640' +emoji[woman_shrugging_dark_skin_tone]=$'\U1F937\U1F3FF\U200D\U2640\UFE0F' +emoji[woman_shrugging_dark_skin_tone_minimally]=$'\U1F937\U1F3FF\U200D\U2640' +emoji[man_health_worker]=$'\U1F468\U200D\U2695\UFE0F' +emoji[man_health_worker_minimally]=$'\U1F468\U200D\U2695' +emoji[man_health_worker_light_skin_tone]=$'\U1F468\U1F3FB\U200D\U2695\UFE0F' +emoji[man_health_worker_light_skin_tone_minimally]=$'\U1F468\U1F3FB\U200D\U2695' +emoji[man_health_worker_medium_light_skin_tone]=$'\U1F468\U1F3FC\U200D\U2695\UFE0F' +emoji[man_health_worker_medium_light_skin_tone_minimally]=$'\U1F468\U1F3FC\U200D\U2695' +emoji[man_health_worker_medium_skin_tone]=$'\U1F468\U1F3FD\U200D\U2695\UFE0F' +emoji[man_health_worker_medium_skin_tone_minimally]=$'\U1F468\U1F3FD\U200D\U2695' +emoji[man_health_worker_medium_dark_skin_tone]=$'\U1F468\U1F3FE\U200D\U2695\UFE0F' +emoji[man_health_worker_medium_dark_skin_tone_minimally]=$'\U1F468\U1F3FE\U200D\U2695' +emoji[man_health_worker_dark_skin_tone]=$'\U1F468\U1F3FF\U200D\U2695\UFE0F' +emoji[man_health_worker_dark_skin_tone_minimally]=$'\U1F468\U1F3FF\U200D\U2695' +emoji[woman_health_worker]=$'\U1F469\U200D\U2695\UFE0F' +emoji[woman_health_worker_minimally]=$'\U1F469\U200D\U2695' +emoji[woman_health_worker_light_skin_tone]=$'\U1F469\U1F3FB\U200D\U2695\UFE0F' +emoji[woman_health_worker_light_skin_tone_minimally]=$'\U1F469\U1F3FB\U200D\U2695' +emoji[woman_health_worker_medium_light_skin_tone]=$'\U1F469\U1F3FC\U200D\U2695\UFE0F' +emoji[woman_health_worker_medium_light_skin_tone_minimally]=$'\U1F469\U1F3FC\U200D\U2695' +emoji[woman_health_worker_medium_skin_tone]=$'\U1F469\U1F3FD\U200D\U2695\UFE0F' +emoji[woman_health_worker_medium_skin_tone_minimally]=$'\U1F469\U1F3FD\U200D\U2695' +emoji[woman_health_worker_medium_dark_skin_tone]=$'\U1F469\U1F3FE\U200D\U2695\UFE0F' +emoji[woman_health_worker_medium_dark_skin_tone_minimally]=$'\U1F469\U1F3FE\U200D\U2695' +emoji[woman_health_worker_dark_skin_tone]=$'\U1F469\U1F3FF\U200D\U2695\UFE0F' +emoji[woman_health_worker_dark_skin_tone_minimally]=$'\U1F469\U1F3FF\U200D\U2695' +emoji[man_student]=$'\U1F468\U200D\U1F393' +emoji[man_student_light_skin_tone]=$'\U1F468\U1F3FB\U200D\U1F393' +emoji[man_student_medium_light_skin_tone]=$'\U1F468\U1F3FC\U200D\U1F393' +emoji[man_student_medium_skin_tone]=$'\U1F468\U1F3FD\U200D\U1F393' +emoji[man_student_medium_dark_skin_tone]=$'\U1F468\U1F3FE\U200D\U1F393' +emoji[man_student_dark_skin_tone]=$'\U1F468\U1F3FF\U200D\U1F393' +emoji[woman_student]=$'\U1F469\U200D\U1F393' +emoji[woman_student_light_skin_tone]=$'\U1F469\U1F3FB\U200D\U1F393' +emoji[woman_student_medium_light_skin_tone]=$'\U1F469\U1F3FC\U200D\U1F393' +emoji[woman_student_medium_skin_tone]=$'\U1F469\U1F3FD\U200D\U1F393' +emoji[woman_student_medium_dark_skin_tone]=$'\U1F469\U1F3FE\U200D\U1F393' +emoji[woman_student_dark_skin_tone]=$'\U1F469\U1F3FF\U200D\U1F393' +emoji[man_teacher]=$'\U1F468\U200D\U1F3EB' +emoji[man_teacher_light_skin_tone]=$'\U1F468\U1F3FB\U200D\U1F3EB' +emoji[man_teacher_medium_light_skin_tone]=$'\U1F468\U1F3FC\U200D\U1F3EB' +emoji[man_teacher_medium_skin_tone]=$'\U1F468\U1F3FD\U200D\U1F3EB' +emoji[man_teacher_medium_dark_skin_tone]=$'\U1F468\U1F3FE\U200D\U1F3EB' +emoji[man_teacher_dark_skin_tone]=$'\U1F468\U1F3FF\U200D\U1F3EB' +emoji[woman_teacher]=$'\U1F469\U200D\U1F3EB' +emoji[woman_teacher_light_skin_tone]=$'\U1F469\U1F3FB\U200D\U1F3EB' +emoji[woman_teacher_medium_light_skin_tone]=$'\U1F469\U1F3FC\U200D\U1F3EB' +emoji[woman_teacher_medium_skin_tone]=$'\U1F469\U1F3FD\U200D\U1F3EB' +emoji[woman_teacher_medium_dark_skin_tone]=$'\U1F469\U1F3FE\U200D\U1F3EB' +emoji[woman_teacher_dark_skin_tone]=$'\U1F469\U1F3FF\U200D\U1F3EB' +emoji[man_judge]=$'\U1F468\U200D\U2696\UFE0F' +emoji[man_judge_minimally]=$'\U1F468\U200D\U2696' +emoji[man_judge_light_skin_tone]=$'\U1F468\U1F3FB\U200D\U2696\UFE0F' +emoji[man_judge_light_skin_tone_minimally]=$'\U1F468\U1F3FB\U200D\U2696' +emoji[man_judge_medium_light_skin_tone]=$'\U1F468\U1F3FC\U200D\U2696\UFE0F' +emoji[man_judge_medium_light_skin_tone_minimally]=$'\U1F468\U1F3FC\U200D\U2696' +emoji[man_judge_medium_skin_tone]=$'\U1F468\U1F3FD\U200D\U2696\UFE0F' +emoji[man_judge_medium_skin_tone_minimally]=$'\U1F468\U1F3FD\U200D\U2696' +emoji[man_judge_medium_dark_skin_tone]=$'\U1F468\U1F3FE\U200D\U2696\UFE0F' +emoji[man_judge_medium_dark_skin_tone_minimally]=$'\U1F468\U1F3FE\U200D\U2696' +emoji[man_judge_dark_skin_tone]=$'\U1F468\U1F3FF\U200D\U2696\UFE0F' +emoji[man_judge_dark_skin_tone_minimally]=$'\U1F468\U1F3FF\U200D\U2696' +emoji[woman_judge]=$'\U1F469\U200D\U2696\UFE0F' +emoji[woman_judge_minimally]=$'\U1F469\U200D\U2696' +emoji[woman_judge_light_skin_tone]=$'\U1F469\U1F3FB\U200D\U2696\UFE0F' +emoji[woman_judge_light_skin_tone_minimally]=$'\U1F469\U1F3FB\U200D\U2696' +emoji[woman_judge_medium_light_skin_tone]=$'\U1F469\U1F3FC\U200D\U2696\UFE0F' +emoji[woman_judge_medium_light_skin_tone_minimally]=$'\U1F469\U1F3FC\U200D\U2696' +emoji[woman_judge_medium_skin_tone]=$'\U1F469\U1F3FD\U200D\U2696\UFE0F' +emoji[woman_judge_medium_skin_tone_minimally]=$'\U1F469\U1F3FD\U200D\U2696' +emoji[woman_judge_medium_dark_skin_tone]=$'\U1F469\U1F3FE\U200D\U2696\UFE0F' +emoji[woman_judge_medium_dark_skin_tone_minimally]=$'\U1F469\U1F3FE\U200D\U2696' +emoji[woman_judge_dark_skin_tone]=$'\U1F469\U1F3FF\U200D\U2696\UFE0F' +emoji[woman_judge_dark_skin_tone_minimally]=$'\U1F469\U1F3FF\U200D\U2696' +emoji[man_farmer]=$'\U1F468\U200D\U1F33E' +emoji[man_farmer_light_skin_tone]=$'\U1F468\U1F3FB\U200D\U1F33E' +emoji[man_farmer_medium_light_skin_tone]=$'\U1F468\U1F3FC\U200D\U1F33E' +emoji[man_farmer_medium_skin_tone]=$'\U1F468\U1F3FD\U200D\U1F33E' +emoji[man_farmer_medium_dark_skin_tone]=$'\U1F468\U1F3FE\U200D\U1F33E' +emoji[man_farmer_dark_skin_tone]=$'\U1F468\U1F3FF\U200D\U1F33E' +emoji[woman_farmer]=$'\U1F469\U200D\U1F33E' +emoji[woman_farmer_light_skin_tone]=$'\U1F469\U1F3FB\U200D\U1F33E' +emoji[woman_farmer_medium_light_skin_tone]=$'\U1F469\U1F3FC\U200D\U1F33E' +emoji[woman_farmer_medium_skin_tone]=$'\U1F469\U1F3FD\U200D\U1F33E' +emoji[woman_farmer_medium_dark_skin_tone]=$'\U1F469\U1F3FE\U200D\U1F33E' +emoji[woman_farmer_dark_skin_tone]=$'\U1F469\U1F3FF\U200D\U1F33E' +emoji[man_cook]=$'\U1F468\U200D\U1F373' +emoji[man_cook_light_skin_tone]=$'\U1F468\U1F3FB\U200D\U1F373' +emoji[man_cook_medium_light_skin_tone]=$'\U1F468\U1F3FC\U200D\U1F373' +emoji[man_cook_medium_skin_tone]=$'\U1F468\U1F3FD\U200D\U1F373' +emoji[man_cook_medium_dark_skin_tone]=$'\U1F468\U1F3FE\U200D\U1F373' +emoji[man_cook_dark_skin_tone]=$'\U1F468\U1F3FF\U200D\U1F373' +emoji[woman_cook]=$'\U1F469\U200D\U1F373' +emoji[woman_cook_light_skin_tone]=$'\U1F469\U1F3FB\U200D\U1F373' +emoji[woman_cook_medium_light_skin_tone]=$'\U1F469\U1F3FC\U200D\U1F373' +emoji[woman_cook_medium_skin_tone]=$'\U1F469\U1F3FD\U200D\U1F373' +emoji[woman_cook_medium_dark_skin_tone]=$'\U1F469\U1F3FE\U200D\U1F373' +emoji[woman_cook_dark_skin_tone]=$'\U1F469\U1F3FF\U200D\U1F373' +emoji[man_mechanic]=$'\U1F468\U200D\U1F527' +emoji[man_mechanic_light_skin_tone]=$'\U1F468\U1F3FB\U200D\U1F527' +emoji[man_mechanic_medium_light_skin_tone]=$'\U1F468\U1F3FC\U200D\U1F527' +emoji[man_mechanic_medium_skin_tone]=$'\U1F468\U1F3FD\U200D\U1F527' +emoji[man_mechanic_medium_dark_skin_tone]=$'\U1F468\U1F3FE\U200D\U1F527' +emoji[man_mechanic_dark_skin_tone]=$'\U1F468\U1F3FF\U200D\U1F527' +emoji[woman_mechanic]=$'\U1F469\U200D\U1F527' +emoji[woman_mechanic_light_skin_tone]=$'\U1F469\U1F3FB\U200D\U1F527' +emoji[woman_mechanic_medium_light_skin_tone]=$'\U1F469\U1F3FC\U200D\U1F527' +emoji[woman_mechanic_medium_skin_tone]=$'\U1F469\U1F3FD\U200D\U1F527' +emoji[woman_mechanic_medium_dark_skin_tone]=$'\U1F469\U1F3FE\U200D\U1F527' +emoji[woman_mechanic_dark_skin_tone]=$'\U1F469\U1F3FF\U200D\U1F527' +emoji[man_factory_worker]=$'\U1F468\U200D\U1F3ED' +emoji[man_factory_worker_light_skin_tone]=$'\U1F468\U1F3FB\U200D\U1F3ED' +emoji[man_factory_worker_medium_light_skin_tone]=$'\U1F468\U1F3FC\U200D\U1F3ED' +emoji[man_factory_worker_medium_skin_tone]=$'\U1F468\U1F3FD\U200D\U1F3ED' +emoji[man_factory_worker_medium_dark_skin_tone]=$'\U1F468\U1F3FE\U200D\U1F3ED' +emoji[man_factory_worker_dark_skin_tone]=$'\U1F468\U1F3FF\U200D\U1F3ED' +emoji[woman_factory_worker]=$'\U1F469\U200D\U1F3ED' +emoji[woman_factory_worker_light_skin_tone]=$'\U1F469\U1F3FB\U200D\U1F3ED' +emoji[woman_factory_worker_medium_light_skin_tone]=$'\U1F469\U1F3FC\U200D\U1F3ED' +emoji[woman_factory_worker_medium_skin_tone]=$'\U1F469\U1F3FD\U200D\U1F3ED' +emoji[woman_factory_worker_medium_dark_skin_tone]=$'\U1F469\U1F3FE\U200D\U1F3ED' +emoji[woman_factory_worker_dark_skin_tone]=$'\U1F469\U1F3FF\U200D\U1F3ED' +emoji[man_office_worker]=$'\U1F468\U200D\U1F4BC' +emoji[man_office_worker_light_skin_tone]=$'\U1F468\U1F3FB\U200D\U1F4BC' +emoji[man_office_worker_medium_light_skin_tone]=$'\U1F468\U1F3FC\U200D\U1F4BC' +emoji[man_office_worker_medium_skin_tone]=$'\U1F468\U1F3FD\U200D\U1F4BC' +emoji[man_office_worker_medium_dark_skin_tone]=$'\U1F468\U1F3FE\U200D\U1F4BC' +emoji[man_office_worker_dark_skin_tone]=$'\U1F468\U1F3FF\U200D\U1F4BC' +emoji[woman_office_worker]=$'\U1F469\U200D\U1F4BC' +emoji[woman_office_worker_light_skin_tone]=$'\U1F469\U1F3FB\U200D\U1F4BC' +emoji[woman_office_worker_medium_light_skin_tone]=$'\U1F469\U1F3FC\U200D\U1F4BC' +emoji[woman_office_worker_medium_skin_tone]=$'\U1F469\U1F3FD\U200D\U1F4BC' +emoji[woman_office_worker_medium_dark_skin_tone]=$'\U1F469\U1F3FE\U200D\U1F4BC' +emoji[woman_office_worker_dark_skin_tone]=$'\U1F469\U1F3FF\U200D\U1F4BC' +emoji[man_scientist]=$'\U1F468\U200D\U1F52C' +emoji[man_scientist_light_skin_tone]=$'\U1F468\U1F3FB\U200D\U1F52C' +emoji[man_scientist_medium_light_skin_tone]=$'\U1F468\U1F3FC\U200D\U1F52C' +emoji[man_scientist_medium_skin_tone]=$'\U1F468\U1F3FD\U200D\U1F52C' +emoji[man_scientist_medium_dark_skin_tone]=$'\U1F468\U1F3FE\U200D\U1F52C' +emoji[man_scientist_dark_skin_tone]=$'\U1F468\U1F3FF\U200D\U1F52C' +emoji[woman_scientist]=$'\U1F469\U200D\U1F52C' +emoji[woman_scientist_light_skin_tone]=$'\U1F469\U1F3FB\U200D\U1F52C' +emoji[woman_scientist_medium_light_skin_tone]=$'\U1F469\U1F3FC\U200D\U1F52C' +emoji[woman_scientist_medium_skin_tone]=$'\U1F469\U1F3FD\U200D\U1F52C' +emoji[woman_scientist_medium_dark_skin_tone]=$'\U1F469\U1F3FE\U200D\U1F52C' +emoji[woman_scientist_dark_skin_tone]=$'\U1F469\U1F3FF\U200D\U1F52C' +emoji[man_technologist]=$'\U1F468\U200D\U1F4BB' +emoji[man_technologist_light_skin_tone]=$'\U1F468\U1F3FB\U200D\U1F4BB' +emoji[man_technologist_medium_light_skin_tone]=$'\U1F468\U1F3FC\U200D\U1F4BB' +emoji[man_technologist_medium_skin_tone]=$'\U1F468\U1F3FD\U200D\U1F4BB' +emoji[man_technologist_medium_dark_skin_tone]=$'\U1F468\U1F3FE\U200D\U1F4BB' +emoji[man_technologist_dark_skin_tone]=$'\U1F468\U1F3FF\U200D\U1F4BB' +emoji[woman_technologist]=$'\U1F469\U200D\U1F4BB' +emoji[woman_technologist_light_skin_tone]=$'\U1F469\U1F3FB\U200D\U1F4BB' +emoji[woman_technologist_medium_light_skin_tone]=$'\U1F469\U1F3FC\U200D\U1F4BB' +emoji[woman_technologist_medium_skin_tone]=$'\U1F469\U1F3FD\U200D\U1F4BB' +emoji[woman_technologist_medium_dark_skin_tone]=$'\U1F469\U1F3FE\U200D\U1F4BB' +emoji[woman_technologist_dark_skin_tone]=$'\U1F469\U1F3FF\U200D\U1F4BB' +emoji[man_singer]=$'\U1F468\U200D\U1F3A4' +emoji[man_singer_light_skin_tone]=$'\U1F468\U1F3FB\U200D\U1F3A4' +emoji[man_singer_medium_light_skin_tone]=$'\U1F468\U1F3FC\U200D\U1F3A4' +emoji[man_singer_medium_skin_tone]=$'\U1F468\U1F3FD\U200D\U1F3A4' +emoji[man_singer_medium_dark_skin_tone]=$'\U1F468\U1F3FE\U200D\U1F3A4' +emoji[man_singer_dark_skin_tone]=$'\U1F468\U1F3FF\U200D\U1F3A4' +emoji[woman_singer]=$'\U1F469\U200D\U1F3A4' +emoji[woman_singer_light_skin_tone]=$'\U1F469\U1F3FB\U200D\U1F3A4' +emoji[woman_singer_medium_light_skin_tone]=$'\U1F469\U1F3FC\U200D\U1F3A4' +emoji[woman_singer_medium_skin_tone]=$'\U1F469\U1F3FD\U200D\U1F3A4' +emoji[woman_singer_medium_dark_skin_tone]=$'\U1F469\U1F3FE\U200D\U1F3A4' +emoji[woman_singer_dark_skin_tone]=$'\U1F469\U1F3FF\U200D\U1F3A4' +emoji[man_artist]=$'\U1F468\U200D\U1F3A8' +emoji[man_artist_light_skin_tone]=$'\U1F468\U1F3FB\U200D\U1F3A8' +emoji[man_artist_medium_light_skin_tone]=$'\U1F468\U1F3FC\U200D\U1F3A8' +emoji[man_artist_medium_skin_tone]=$'\U1F468\U1F3FD\U200D\U1F3A8' +emoji[man_artist_medium_dark_skin_tone]=$'\U1F468\U1F3FE\U200D\U1F3A8' +emoji[man_artist_dark_skin_tone]=$'\U1F468\U1F3FF\U200D\U1F3A8' +emoji[woman_artist]=$'\U1F469\U200D\U1F3A8' +emoji[woman_artist_light_skin_tone]=$'\U1F469\U1F3FB\U200D\U1F3A8' +emoji[woman_artist_medium_light_skin_tone]=$'\U1F469\U1F3FC\U200D\U1F3A8' +emoji[woman_artist_medium_skin_tone]=$'\U1F469\U1F3FD\U200D\U1F3A8' +emoji[woman_artist_medium_dark_skin_tone]=$'\U1F469\U1F3FE\U200D\U1F3A8' +emoji[woman_artist_dark_skin_tone]=$'\U1F469\U1F3FF\U200D\U1F3A8' +emoji[man_pilot]=$'\U1F468\U200D\U2708\UFE0F' +emoji[man_pilot_minimally]=$'\U1F468\U200D\U2708' +emoji[man_pilot_light_skin_tone]=$'\U1F468\U1F3FB\U200D\U2708\UFE0F' +emoji[man_pilot_light_skin_tone_minimally]=$'\U1F468\U1F3FB\U200D\U2708' +emoji[man_pilot_medium_light_skin_tone]=$'\U1F468\U1F3FC\U200D\U2708\UFE0F' +emoji[man_pilot_medium_light_skin_tone_minimally]=$'\U1F468\U1F3FC\U200D\U2708' +emoji[man_pilot_medium_skin_tone]=$'\U1F468\U1F3FD\U200D\U2708\UFE0F' +emoji[man_pilot_medium_skin_tone_minimally]=$'\U1F468\U1F3FD\U200D\U2708' +emoji[man_pilot_medium_dark_skin_tone]=$'\U1F468\U1F3FE\U200D\U2708\UFE0F' +emoji[man_pilot_medium_dark_skin_tone_minimally]=$'\U1F468\U1F3FE\U200D\U2708' +emoji[man_pilot_dark_skin_tone]=$'\U1F468\U1F3FF\U200D\U2708\UFE0F' +emoji[man_pilot_dark_skin_tone_minimally]=$'\U1F468\U1F3FF\U200D\U2708' +emoji[woman_pilot]=$'\U1F469\U200D\U2708\UFE0F' +emoji[woman_pilot_minimally]=$'\U1F469\U200D\U2708' +emoji[woman_pilot_light_skin_tone]=$'\U1F469\U1F3FB\U200D\U2708\UFE0F' +emoji[woman_pilot_light_skin_tone_minimally]=$'\U1F469\U1F3FB\U200D\U2708' +emoji[woman_pilot_medium_light_skin_tone]=$'\U1F469\U1F3FC\U200D\U2708\UFE0F' +emoji[woman_pilot_medium_light_skin_tone_minimally]=$'\U1F469\U1F3FC\U200D\U2708' +emoji[woman_pilot_medium_skin_tone]=$'\U1F469\U1F3FD\U200D\U2708\UFE0F' +emoji[woman_pilot_medium_skin_tone_minimally]=$'\U1F469\U1F3FD\U200D\U2708' +emoji[woman_pilot_medium_dark_skin_tone]=$'\U1F469\U1F3FE\U200D\U2708\UFE0F' +emoji[woman_pilot_medium_dark_skin_tone_minimally]=$'\U1F469\U1F3FE\U200D\U2708' +emoji[woman_pilot_dark_skin_tone]=$'\U1F469\U1F3FF\U200D\U2708\UFE0F' +emoji[woman_pilot_dark_skin_tone_minimally]=$'\U1F469\U1F3FF\U200D\U2708' +emoji[man_astronaut]=$'\U1F468\U200D\U1F680' +emoji[man_astronaut_light_skin_tone]=$'\U1F468\U1F3FB\U200D\U1F680' +emoji[man_astronaut_medium_light_skin_tone]=$'\U1F468\U1F3FC\U200D\U1F680' +emoji[man_astronaut_medium_skin_tone]=$'\U1F468\U1F3FD\U200D\U1F680' +emoji[man_astronaut_medium_dark_skin_tone]=$'\U1F468\U1F3FE\U200D\U1F680' +emoji[man_astronaut_dark_skin_tone]=$'\U1F468\U1F3FF\U200D\U1F680' +emoji[woman_astronaut]=$'\U1F469\U200D\U1F680' +emoji[woman_astronaut_light_skin_tone]=$'\U1F469\U1F3FB\U200D\U1F680' +emoji[woman_astronaut_medium_light_skin_tone]=$'\U1F469\U1F3FC\U200D\U1F680' +emoji[woman_astronaut_medium_skin_tone]=$'\U1F469\U1F3FD\U200D\U1F680' +emoji[woman_astronaut_medium_dark_skin_tone]=$'\U1F469\U1F3FE\U200D\U1F680' +emoji[woman_astronaut_dark_skin_tone]=$'\U1F469\U1F3FF\U200D\U1F680' +emoji[man_firefighter]=$'\U1F468\U200D\U1F692' +emoji[man_firefighter_light_skin_tone]=$'\U1F468\U1F3FB\U200D\U1F692' +emoji[man_firefighter_medium_light_skin_tone]=$'\U1F468\U1F3FC\U200D\U1F692' +emoji[man_firefighter_medium_skin_tone]=$'\U1F468\U1F3FD\U200D\U1F692' +emoji[man_firefighter_medium_dark_skin_tone]=$'\U1F468\U1F3FE\U200D\U1F692' +emoji[man_firefighter_dark_skin_tone]=$'\U1F468\U1F3FF\U200D\U1F692' +emoji[woman_firefighter]=$'\U1F469\U200D\U1F692' +emoji[woman_firefighter_light_skin_tone]=$'\U1F469\U1F3FB\U200D\U1F692' +emoji[woman_firefighter_medium_light_skin_tone]=$'\U1F469\U1F3FC\U200D\U1F692' +emoji[woman_firefighter_medium_skin_tone]=$'\U1F469\U1F3FD\U200D\U1F692' +emoji[woman_firefighter_medium_dark_skin_tone]=$'\U1F469\U1F3FE\U200D\U1F692' +emoji[woman_firefighter_dark_skin_tone]=$'\U1F469\U1F3FF\U200D\U1F692' +emoji[police_officer]=$'\U1F46E' +emoji[cop]=$'\U1F46E' +emoji[police_officer_light_skin_tone]=$'\U1F46E\U1F3FB' +emoji[police_officer_medium_light_skin_tone]=$'\U1F46E\U1F3FC' +emoji[police_officer_medium_skin_tone]=$'\U1F46E\U1F3FD' +emoji[police_officer_medium_dark_skin_tone]=$'\U1F46E\U1F3FE' +emoji[police_officer_dark_skin_tone]=$'\U1F46E\U1F3FF' +emoji[man_police_officer]=$'\U1F46E\U200D\U2642\UFE0F' +emoji[man_police_officer_minimally]=$'\U1F46E\U200D\U2642' +emoji[policeman]=$'\U1F46E\U200D\U2642' +emoji[man_police_officer_light_skin_tone]=$'\U1F46E\U1F3FB\U200D\U2642\UFE0F' +emoji[man_police_officer_light_skin_tone_minimally]=$'\U1F46E\U1F3FB\U200D\U2642' +emoji[man_police_officer_medium_light_skin_tone]=$'\U1F46E\U1F3FC\U200D\U2642\UFE0F' +emoji[man_police_officer_medium_light_skin_tone_minimally]=$'\U1F46E\U1F3FC\U200D\U2642' +emoji[man_police_officer_medium_skin_tone]=$'\U1F46E\U1F3FD\U200D\U2642\UFE0F' +emoji[man_police_officer_medium_skin_tone_minimally]=$'\U1F46E\U1F3FD\U200D\U2642' +emoji[man_police_officer_medium_dark_skin_tone]=$'\U1F46E\U1F3FE\U200D\U2642\UFE0F' +emoji[man_police_officer_medium_dark_skin_tone_minimally]=$'\U1F46E\U1F3FE\U200D\U2642' +emoji[man_police_officer_dark_skin_tone]=$'\U1F46E\U1F3FF\U200D\U2642\UFE0F' +emoji[man_police_officer_dark_skin_tone_minimally]=$'\U1F46E\U1F3FF\U200D\U2642' +emoji[woman_police_officer]=$'\U1F46E\U200D\U2640\UFE0F' +emoji[woman_police_officer_minimally]=$'\U1F46E\U200D\U2640' +emoji[policewoman]=$'\U1F46E\U200D\U2640' +emoji[woman_police_officer_light_skin_tone]=$'\U1F46E\U1F3FB\U200D\U2640\UFE0F' +emoji[woman_police_officer_light_skin_tone_minimally]=$'\U1F46E\U1F3FB\U200D\U2640' +emoji[woman_police_officer_medium_light_skin_tone]=$'\U1F46E\U1F3FC\U200D\U2640\UFE0F' +emoji[woman_police_officer_medium_light_skin_tone_minimally]=$'\U1F46E\U1F3FC\U200D\U2640' +emoji[woman_police_officer_medium_skin_tone]=$'\U1F46E\U1F3FD\U200D\U2640\UFE0F' +emoji[woman_police_officer_medium_skin_tone_minimally]=$'\U1F46E\U1F3FD\U200D\U2640' +emoji[woman_police_officer_medium_dark_skin_tone]=$'\U1F46E\U1F3FE\U200D\U2640\UFE0F' +emoji[woman_police_officer_medium_dark_skin_tone_minimally]=$'\U1F46E\U1F3FE\U200D\U2640' +emoji[woman_police_officer_dark_skin_tone]=$'\U1F46E\U1F3FF\U200D\U2640\UFE0F' +emoji[woman_police_officer_dark_skin_tone_minimally]=$'\U1F46E\U1F3FF\U200D\U2640' +emoji[detective]=$'\U1F575\UFE0F' +emoji[detective_unqualified]=$'\U1F575' +emoji[detective_light_skin_tone]=$'\U1F575\U1F3FB' +emoji[detective_medium_light_skin_tone]=$'\U1F575\U1F3FC' +emoji[detective_medium_skin_tone]=$'\U1F575\U1F3FD' +emoji[detective_medium_dark_skin_tone]=$'\U1F575\U1F3FE' +emoji[detective_dark_skin_tone]=$'\U1F575\U1F3FF' +emoji[man_detective]=$'\U1F575\UFE0F\U200D\U2642\UFE0F' +emoji[male_detective]=$'\U1F575\UFE0F\U200D\U2642\UFE0F' +emoji[man_detective_unqualified]=$'\U1F575\U200D\U2642\UFE0F' +emoji[man_detective_unqualified_1]=$'\U1F575\UFE0F\U200D\U2642' +emoji[man_detective_unqualified_2]=$'\U1F575\U200D\U2642' +emoji[man_detective_light_skin_tone]=$'\U1F575\U1F3FB\U200D\U2642\UFE0F' +emoji[man_detective_light_skin_tone_minimally]=$'\U1F575\U1F3FB\U200D\U2642' +emoji[man_detective_medium_light_skin_tone]=$'\U1F575\U1F3FC\U200D\U2642\UFE0F' +emoji[man_detective_medium_light_skin_tone_minimally]=$'\U1F575\U1F3FC\U200D\U2642' +emoji[man_detective_medium_skin_tone]=$'\U1F575\U1F3FD\U200D\U2642\UFE0F' +emoji[man_detective_medium_skin_tone_minimally]=$'\U1F575\U1F3FD\U200D\U2642' +emoji[man_detective_medium_dark_skin_tone]=$'\U1F575\U1F3FE\U200D\U2642\UFE0F' +emoji[man_detective_medium_dark_skin_tone_minimally]=$'\U1F575\U1F3FE\U200D\U2642' +emoji[man_detective_dark_skin_tone]=$'\U1F575\U1F3FF\U200D\U2642\UFE0F' +emoji[man_detective_dark_skin_tone_minimally]=$'\U1F575\U1F3FF\U200D\U2642' +emoji[woman_detective]=$'\U1F575\UFE0F\U200D\U2640\UFE0F' +emoji[female_detective]=$'\U1F575\UFE0F\U200D\U2640\UFE0F' +emoji[woman_detective_unqualified]=$'\U1F575\U200D\U2640\UFE0F' +emoji[woman_detective_unqualified_1]=$'\U1F575\UFE0F\U200D\U2640' +emoji[woman_detective_unqualified_2]=$'\U1F575\U200D\U2640' +emoji[woman_detective_light_skin_tone]=$'\U1F575\U1F3FB\U200D\U2640\UFE0F' +emoji[woman_detective_light_skin_tone_minimally]=$'\U1F575\U1F3FB\U200D\U2640' +emoji[woman_detective_medium_light_skin_tone]=$'\U1F575\U1F3FC\U200D\U2640\UFE0F' +emoji[woman_detective_medium_light_skin_tone_minimally]=$'\U1F575\U1F3FC\U200D\U2640' +emoji[woman_detective_medium_skin_tone]=$'\U1F575\U1F3FD\U200D\U2640\UFE0F' +emoji[woman_detective_medium_skin_tone_minimally]=$'\U1F575\U1F3FD\U200D\U2640' +emoji[woman_detective_medium_dark_skin_tone]=$'\U1F575\U1F3FE\U200D\U2640\UFE0F' +emoji[woman_detective_medium_dark_skin_tone_minimally]=$'\U1F575\U1F3FE\U200D\U2640' +emoji[woman_detective_dark_skin_tone]=$'\U1F575\U1F3FF\U200D\U2640\UFE0F' +emoji[woman_detective_dark_skin_tone_minimally]=$'\U1F575\U1F3FF\U200D\U2640' +emoji[guard]=$'\U1F482' +emoji[guard_light_skin_tone]=$'\U1F482\U1F3FB' +emoji[guard_medium_light_skin_tone]=$'\U1F482\U1F3FC' +emoji[guard_medium_skin_tone]=$'\U1F482\U1F3FD' +emoji[guard_medium_dark_skin_tone]=$'\U1F482\U1F3FE' +emoji[guard_dark_skin_tone]=$'\U1F482\U1F3FF' +emoji[man_guard]=$'\U1F482\U200D\U2642\UFE0F' +emoji[man_guard_minimally]=$'\U1F482\U200D\U2642' +emoji[guardsman]=$'\U1F482\U200D\U2642' +emoji[man_guard_light_skin_tone]=$'\U1F482\U1F3FB\U200D\U2642\UFE0F' +emoji[man_guard_light_skin_tone_minimally]=$'\U1F482\U1F3FB\U200D\U2642' +emoji[man_guard_medium_light_skin_tone]=$'\U1F482\U1F3FC\U200D\U2642\UFE0F' +emoji[man_guard_medium_light_skin_tone_minimally]=$'\U1F482\U1F3FC\U200D\U2642' +emoji[man_guard_medium_skin_tone]=$'\U1F482\U1F3FD\U200D\U2642\UFE0F' +emoji[man_guard_medium_skin_tone_minimally]=$'\U1F482\U1F3FD\U200D\U2642' +emoji[man_guard_medium_dark_skin_tone]=$'\U1F482\U1F3FE\U200D\U2642\UFE0F' +emoji[man_guard_medium_dark_skin_tone_minimally]=$'\U1F482\U1F3FE\U200D\U2642' +emoji[man_guard_dark_skin_tone]=$'\U1F482\U1F3FF\U200D\U2642\UFE0F' +emoji[man_guard_dark_skin_tone_minimally]=$'\U1F482\U1F3FF\U200D\U2642' +emoji[woman_guard]=$'\U1F482\U200D\U2640\UFE0F' +emoji[woman_guard_minimally]=$'\U1F482\U200D\U2640' +emoji[guardswoman]=$'\U1F482\U200D\U2640' +emoji[woman_guard_light_skin_tone]=$'\U1F482\U1F3FB\U200D\U2640\UFE0F' +emoji[woman_guard_light_skin_tone_minimally]=$'\U1F482\U1F3FB\U200D\U2640' +emoji[woman_guard_medium_light_skin_tone]=$'\U1F482\U1F3FC\U200D\U2640\UFE0F' +emoji[woman_guard_medium_light_skin_tone_minimally]=$'\U1F482\U1F3FC\U200D\U2640' +emoji[woman_guard_medium_skin_tone]=$'\U1F482\U1F3FD\U200D\U2640\UFE0F' +emoji[woman_guard_medium_skin_tone_minimally]=$'\U1F482\U1F3FD\U200D\U2640' +emoji[woman_guard_medium_dark_skin_tone]=$'\U1F482\U1F3FE\U200D\U2640\UFE0F' +emoji[woman_guard_medium_dark_skin_tone_minimally]=$'\U1F482\U1F3FE\U200D\U2640' +emoji[woman_guard_dark_skin_tone]=$'\U1F482\U1F3FF\U200D\U2640\UFE0F' +emoji[woman_guard_dark_skin_tone_minimally]=$'\U1F482\U1F3FF\U200D\U2640' +emoji[construction_worker]=$'\U1F477' +emoji[construction_worker_light_skin_tone]=$'\U1F477\U1F3FB' +emoji[construction_worker_medium_light_skin_tone]=$'\U1F477\U1F3FC' +emoji[construction_worker_medium_skin_tone]=$'\U1F477\U1F3FD' +emoji[construction_worker_medium_dark_skin_tone]=$'\U1F477\U1F3FE' +emoji[construction_worker_dark_skin_tone]=$'\U1F477\U1F3FF' +emoji[man_construction_worker]=$'\U1F477\U200D\U2642\UFE0F' +emoji[man_construction_worker_minimally]=$'\U1F477\U200D\U2642' +emoji[construction_worker_man]=$'\U1F477\U200D\U2642' +emoji[man_construction_worker_light_skin_tone]=$'\U1F477\U1F3FB\U200D\U2642\UFE0F' +emoji[man_construction_worker_light_skin_tone_minimally]=$'\U1F477\U1F3FB\U200D\U2642' +emoji[man_construction_worker_medium_light_skin_tone]=$'\U1F477\U1F3FC\U200D\U2642\UFE0F' +emoji[man_construction_worker_medium_light_skin_tone_minimally]=$'\U1F477\U1F3FC\U200D\U2642' +emoji[man_construction_worker_medium_skin_tone]=$'\U1F477\U1F3FD\U200D\U2642\UFE0F' +emoji[man_construction_worker_medium_skin_tone_minimally]=$'\U1F477\U1F3FD\U200D\U2642' +emoji[man_construction_worker_medium_dark_skin_tone]=$'\U1F477\U1F3FE\U200D\U2642\UFE0F' +emoji[man_construction_worker_medium_dark_skin_tone_minimally]=$'\U1F477\U1F3FE\U200D\U2642' +emoji[man_construction_worker_dark_skin_tone]=$'\U1F477\U1F3FF\U200D\U2642\UFE0F' +emoji[man_construction_worker_dark_skin_tone_minimally]=$'\U1F477\U1F3FF\U200D\U2642' +emoji[woman_construction_worker]=$'\U1F477\U200D\U2640\UFE0F' +emoji[woman_construction_worker_minimally]=$'\U1F477\U200D\U2640' +emoji[construction_worker_woman]=$'\U1F477\U200D\U2640' +emoji[woman_construction_worker_light_skin_tone]=$'\U1F477\U1F3FB\U200D\U2640\UFE0F' +emoji[woman_construction_worker_light_skin_tone_minimally]=$'\U1F477\U1F3FB\U200D\U2640' +emoji[woman_construction_worker_medium_light_skin_tone]=$'\U1F477\U1F3FC\U200D\U2640\UFE0F' +emoji[woman_construction_worker_medium_light_skin_tone_minimally]=$'\U1F477\U1F3FC\U200D\U2640' +emoji[woman_construction_worker_medium_skin_tone]=$'\U1F477\U1F3FD\U200D\U2640\UFE0F' +emoji[woman_construction_worker_medium_skin_tone_minimally]=$'\U1F477\U1F3FD\U200D\U2640' +emoji[woman_construction_worker_medium_dark_skin_tone]=$'\U1F477\U1F3FE\U200D\U2640\UFE0F' +emoji[woman_construction_worker_medium_dark_skin_tone_minimally]=$'\U1F477\U1F3FE\U200D\U2640' +emoji[woman_construction_worker_dark_skin_tone]=$'\U1F477\U1F3FF\U200D\U2640\UFE0F' +emoji[woman_construction_worker_dark_skin_tone_minimally]=$'\U1F477\U1F3FF\U200D\U2640' +emoji[prince]=$'\U1F934' +emoji[prince_light_skin_tone]=$'\U1F934\U1F3FB' +emoji[prince_medium_light_skin_tone]=$'\U1F934\U1F3FC' +emoji[prince_medium_skin_tone]=$'\U1F934\U1F3FD' +emoji[prince_medium_dark_skin_tone]=$'\U1F934\U1F3FE' +emoji[prince_dark_skin_tone]=$'\U1F934\U1F3FF' +emoji[princess]=$'\U1F478' +emoji[princess_light_skin_tone]=$'\U1F478\U1F3FB' +emoji[princess_medium_light_skin_tone]=$'\U1F478\U1F3FC' +emoji[princess_medium_skin_tone]=$'\U1F478\U1F3FD' +emoji[princess_medium_dark_skin_tone]=$'\U1F478\U1F3FE' +emoji[princess_dark_skin_tone]=$'\U1F478\U1F3FF' +emoji[person_wearing_turban]=$'\U1F473' +emoji[person_with_turban]=$'\U1F473' +emoji[person_wearing_turban_light_skin_tone]=$'\U1F473\U1F3FB' +emoji[person_wearing_turban_medium_light_skin_tone]=$'\U1F473\U1F3FC' +emoji[person_wearing_turban_medium_skin_tone]=$'\U1F473\U1F3FD' +emoji[person_wearing_turban_medium_dark_skin_tone]=$'\U1F473\U1F3FE' +emoji[person_wearing_turban_dark_skin_tone]=$'\U1F473\U1F3FF' +emoji[man_wearing_turban]=$'\U1F473\U200D\U2642\UFE0F' +emoji[man_wearing_turban_minimally]=$'\U1F473\U200D\U2642' +emoji[man_with_turban]=$'\U1F473\U200D\U2642' +emoji[man_wearing_turban_light_skin_tone]=$'\U1F473\U1F3FB\U200D\U2642\UFE0F' +emoji[man_wearing_turban_light_skin_tone_minimally]=$'\U1F473\U1F3FB\U200D\U2642' +emoji[man_wearing_turban_medium_light_skin_tone]=$'\U1F473\U1F3FC\U200D\U2642\UFE0F' +emoji[man_wearing_turban_medium_light_skin_tone_minimally]=$'\U1F473\U1F3FC\U200D\U2642' +emoji[man_wearing_turban_medium_skin_tone]=$'\U1F473\U1F3FD\U200D\U2642\UFE0F' +emoji[man_wearing_turban_medium_skin_tone_minimally]=$'\U1F473\U1F3FD\U200D\U2642' +emoji[man_wearing_turban_medium_dark_skin_tone]=$'\U1F473\U1F3FE\U200D\U2642\UFE0F' +emoji[man_wearing_turban_medium_dark_skin_tone_minimally]=$'\U1F473\U1F3FE\U200D\U2642' +emoji[man_wearing_turban_dark_skin_tone]=$'\U1F473\U1F3FF\U200D\U2642\UFE0F' +emoji[man_wearing_turban_dark_skin_tone_minimally]=$'\U1F473\U1F3FF\U200D\U2642' +emoji[woman_wearing_turban]=$'\U1F473\U200D\U2640\UFE0F' +emoji[woman_wearing_turban_minimally]=$'\U1F473\U200D\U2640' +emoji[woman_with_turban]=$'\U1F473\U200D\U2640' +emoji[woman_wearing_turban_light_skin_tone]=$'\U1F473\U1F3FB\U200D\U2640\UFE0F' +emoji[woman_wearing_turban_light_skin_tone_minimally]=$'\U1F473\U1F3FB\U200D\U2640' +emoji[woman_wearing_turban_medium_light_skin_tone]=$'\U1F473\U1F3FC\U200D\U2640\UFE0F' +emoji[woman_wearing_turban_medium_light_skin_tone_minimally]=$'\U1F473\U1F3FC\U200D\U2640' +emoji[woman_wearing_turban_medium_skin_tone]=$'\U1F473\U1F3FD\U200D\U2640\UFE0F' +emoji[woman_wearing_turban_medium_skin_tone_minimally]=$'\U1F473\U1F3FD\U200D\U2640' +emoji[woman_wearing_turban_medium_dark_skin_tone]=$'\U1F473\U1F3FE\U200D\U2640\UFE0F' +emoji[woman_wearing_turban_medium_dark_skin_tone_minimally]=$'\U1F473\U1F3FE\U200D\U2640' +emoji[woman_wearing_turban_dark_skin_tone]=$'\U1F473\U1F3FF\U200D\U2640\UFE0F' +emoji[woman_wearing_turban_dark_skin_tone_minimally]=$'\U1F473\U1F3FF\U200D\U2640' +emoji[man_with_Chinese_cap]=$'\U1F472' +emoji[man_with_gua_pi_mao]=$'\U1F472' +emoji[man_with_Chinese_cap_light_skin_tone]=$'\U1F472\U1F3FB' +emoji[man_with_Chinese_cap_medium_light_skin_tone]=$'\U1F472\U1F3FC' +emoji[man_with_Chinese_cap_medium_skin_tone]=$'\U1F472\U1F3FD' +emoji[man_with_Chinese_cap_medium_dark_skin_tone]=$'\U1F472\U1F3FE' +emoji[man_with_Chinese_cap_dark_skin_tone]=$'\U1F472\U1F3FF' +emoji[woman_with_headscarf]=$'\U1F9D5' +emoji[woman_with_headscarf_light_skin_tone]=$'\U1F9D5\U1F3FB' +emoji[woman_with_headscarf_medium_light_skin_tone]=$'\U1F9D5\U1F3FC' +emoji[woman_with_headscarf_medium_skin_tone]=$'\U1F9D5\U1F3FD' +emoji[woman_with_headscarf_medium_dark_skin_tone]=$'\U1F9D5\U1F3FE' +emoji[woman_with_headscarf_dark_skin_tone]=$'\U1F9D5\U1F3FF' +emoji[man_in_tuxedo]=$'\U1F935' +emoji[man_in_tuxedo_light_skin_tone]=$'\U1F935\U1F3FB' +emoji[man_in_tuxedo_medium_light_skin_tone]=$'\U1F935\U1F3FC' +emoji[man_in_tuxedo_medium_skin_tone]=$'\U1F935\U1F3FD' +emoji[man_in_tuxedo_medium_dark_skin_tone]=$'\U1F935\U1F3FE' +emoji[man_in_tuxedo_dark_skin_tone]=$'\U1F935\U1F3FF' +emoji[bride_with_veil]=$'\U1F470' +emoji[bride_with_veil_light_skin_tone]=$'\U1F470\U1F3FB' +emoji[bride_with_veil_medium_light_skin_tone]=$'\U1F470\U1F3FC' +emoji[bride_with_veil_medium_skin_tone]=$'\U1F470\U1F3FD' +emoji[bride_with_veil_medium_dark_skin_tone]=$'\U1F470\U1F3FE' +emoji[bride_with_veil_dark_skin_tone]=$'\U1F470\U1F3FF' +emoji[pregnant_woman]=$'\U1F930' +emoji[pregnant_woman_light_skin_tone]=$'\U1F930\U1F3FB' +emoji[pregnant_woman_medium_light_skin_tone]=$'\U1F930\U1F3FC' +emoji[pregnant_woman_medium_skin_tone]=$'\U1F930\U1F3FD' +emoji[pregnant_woman_medium_dark_skin_tone]=$'\U1F930\U1F3FE' +emoji[pregnant_woman_dark_skin_tone]=$'\U1F930\U1F3FF' +emoji[breast_feeding]=$'\U1F931' +emoji[breast_feeding_light_skin_tone]=$'\U1F931\U1F3FB' +emoji[breast_feeding_medium_light_skin_tone]=$'\U1F931\U1F3FC' +emoji[breast_feeding_medium_skin_tone]=$'\U1F931\U1F3FD' +emoji[breast_feeding_medium_dark_skin_tone]=$'\U1F931\U1F3FE' +emoji[breast_feeding_dark_skin_tone]=$'\U1F931\U1F3FF' +emoji[baby_angel]=$'\U1F47C' +emoji[angel]=$'\U1F47C' +emoji[baby_angel_light_skin_tone]=$'\U1F47C\U1F3FB' +emoji[baby_angel_medium_light_skin_tone]=$'\U1F47C\U1F3FC' +emoji[baby_angel_medium_skin_tone]=$'\U1F47C\U1F3FD' +emoji[baby_angel_medium_dark_skin_tone]=$'\U1F47C\U1F3FE' +emoji[baby_angel_dark_skin_tone]=$'\U1F47C\U1F3FF' +emoji[Santa_Claus]=$'\U1F385' +emoji[santa]=$'\U1F385' +emoji[Santa_Claus_light_skin_tone]=$'\U1F385\U1F3FB' +emoji[Santa_Claus_medium_light_skin_tone]=$'\U1F385\U1F3FC' +emoji[Santa_Claus_medium_skin_tone]=$'\U1F385\U1F3FD' +emoji[Santa_Claus_medium_dark_skin_tone]=$'\U1F385\U1F3FE' +emoji[Santa_Claus_dark_skin_tone]=$'\U1F385\U1F3FF' +emoji[Mrs_Claus]=$'\U1F936' +emoji[mrs_claus]=$'\U1F936' +emoji[Mrs_Claus_light_skin_tone]=$'\U1F936\U1F3FB' +emoji[Mrs_Claus_medium_light_skin_tone]=$'\U1F936\U1F3FC' +emoji[Mrs_Claus_medium_skin_tone]=$'\U1F936\U1F3FD' +emoji[Mrs_Claus_medium_dark_skin_tone]=$'\U1F936\U1F3FE' +emoji[Mrs_Claus_dark_skin_tone]=$'\U1F936\U1F3FF' +emoji[superhero]=$'\U1F9B8' +emoji[superhero_light_skin_tone]=$'\U1F9B8\U1F3FB' +emoji[superhero_medium_light_skin_tone]=$'\U1F9B8\U1F3FC' +emoji[superhero_medium_skin_tone]=$'\U1F9B8\U1F3FD' +emoji[superhero_medium_dark_skin_tone]=$'\U1F9B8\U1F3FE' +emoji[superhero_dark_skin_tone]=$'\U1F9B8\U1F3FF' +emoji[man_superhero]=$'\U1F9B8\U200D\U2642\UFE0F' +emoji[man_superhero_minimally]=$'\U1F9B8\U200D\U2642' +emoji[superhero_man]=$'\U1F9B8\U200D\U2642' +emoji[man_superhero_light_skin_tone]=$'\U1F9B8\U1F3FB\U200D\U2642\UFE0F' +emoji[man_superhero_light_skin_tone_minimally]=$'\U1F9B8\U1F3FB\U200D\U2642' +emoji[man_superhero_medium_light_skin_tone]=$'\U1F9B8\U1F3FC\U200D\U2642\UFE0F' +emoji[man_superhero_medium_light_skin_tone_minimally]=$'\U1F9B8\U1F3FC\U200D\U2642' +emoji[man_superhero_medium_skin_tone]=$'\U1F9B8\U1F3FD\U200D\U2642\UFE0F' +emoji[man_superhero_medium_skin_tone_minimally]=$'\U1F9B8\U1F3FD\U200D\U2642' +emoji[man_superhero_medium_dark_skin_tone]=$'\U1F9B8\U1F3FE\U200D\U2642\UFE0F' +emoji[man_superhero_medium_dark_skin_tone_minimally]=$'\U1F9B8\U1F3FE\U200D\U2642' +emoji[man_superhero_dark_skin_tone]=$'\U1F9B8\U1F3FF\U200D\U2642\UFE0F' +emoji[man_superhero_dark_skin_tone_minimally]=$'\U1F9B8\U1F3FF\U200D\U2642' +emoji[woman_superhero]=$'\U1F9B8\U200D\U2640\UFE0F' +emoji[woman_superhero_minimally]=$'\U1F9B8\U200D\U2640' +emoji[superhero_woman]=$'\U1F9B8\U200D\U2640' +emoji[woman_superhero_light_skin_tone]=$'\U1F9B8\U1F3FB\U200D\U2640\UFE0F' +emoji[woman_superhero_light_skin_tone_minimally]=$'\U1F9B8\U1F3FB\U200D\U2640' +emoji[woman_superhero_medium_light_skin_tone]=$'\U1F9B8\U1F3FC\U200D\U2640\UFE0F' +emoji[woman_superhero_medium_light_skin_tone_minimally]=$'\U1F9B8\U1F3FC\U200D\U2640' +emoji[woman_superhero_medium_skin_tone]=$'\U1F9B8\U1F3FD\U200D\U2640\UFE0F' +emoji[woman_superhero_medium_skin_tone_minimally]=$'\U1F9B8\U1F3FD\U200D\U2640' +emoji[woman_superhero_medium_dark_skin_tone]=$'\U1F9B8\U1F3FE\U200D\U2640\UFE0F' +emoji[woman_superhero_medium_dark_skin_tone_minimally]=$'\U1F9B8\U1F3FE\U200D\U2640' +emoji[woman_superhero_dark_skin_tone]=$'\U1F9B8\U1F3FF\U200D\U2640\UFE0F' +emoji[woman_superhero_dark_skin_tone_minimally]=$'\U1F9B8\U1F3FF\U200D\U2640' +emoji[supervillain]=$'\U1F9B9' +emoji[supervillain_light_skin_tone]=$'\U1F9B9\U1F3FB' +emoji[supervillain_medium_light_skin_tone]=$'\U1F9B9\U1F3FC' +emoji[supervillain_medium_skin_tone]=$'\U1F9B9\U1F3FD' +emoji[supervillain_medium_dark_skin_tone]=$'\U1F9B9\U1F3FE' +emoji[supervillain_dark_skin_tone]=$'\U1F9B9\U1F3FF' +emoji[man_supervillain]=$'\U1F9B9\U200D\U2642\UFE0F' +emoji[man_supervillain_minimally]=$'\U1F9B9\U200D\U2642' +emoji[supervillain_man]=$'\U1F9B9\U200D\U2642' +emoji[man_supervillain_light_skin_tone]=$'\U1F9B9\U1F3FB\U200D\U2642\UFE0F' +emoji[man_supervillain_light_skin_tone_minimally]=$'\U1F9B9\U1F3FB\U200D\U2642' +emoji[man_supervillain_medium_light_skin_tone]=$'\U1F9B9\U1F3FC\U200D\U2642\UFE0F' +emoji[man_supervillain_medium_light_skin_tone_minimally]=$'\U1F9B9\U1F3FC\U200D\U2642' +emoji[man_supervillain_medium_skin_tone]=$'\U1F9B9\U1F3FD\U200D\U2642\UFE0F' +emoji[man_supervillain_medium_skin_tone_minimally]=$'\U1F9B9\U1F3FD\U200D\U2642' +emoji[man_supervillain_medium_dark_skin_tone]=$'\U1F9B9\U1F3FE\U200D\U2642\UFE0F' +emoji[man_supervillain_medium_dark_skin_tone_minimally]=$'\U1F9B9\U1F3FE\U200D\U2642' +emoji[man_supervillain_dark_skin_tone]=$'\U1F9B9\U1F3FF\U200D\U2642\UFE0F' +emoji[man_supervillain_dark_skin_tone_minimally]=$'\U1F9B9\U1F3FF\U200D\U2642' +emoji[woman_supervillain]=$'\U1F9B9\U200D\U2640\UFE0F' +emoji[woman_supervillain_minimally]=$'\U1F9B9\U200D\U2640' +emoji[supervillain_woman]=$'\U1F9B9\U200D\U2640' +emoji[woman_supervillain_light_skin_tone]=$'\U1F9B9\U1F3FB\U200D\U2640\UFE0F' +emoji[woman_supervillain_light_skin_tone_minimally]=$'\U1F9B9\U1F3FB\U200D\U2640' +emoji[woman_supervillain_medium_light_skin_tone]=$'\U1F9B9\U1F3FC\U200D\U2640\UFE0F' +emoji[woman_supervillain_medium_light_skin_tone_minimally]=$'\U1F9B9\U1F3FC\U200D\U2640' +emoji[woman_supervillain_medium_skin_tone]=$'\U1F9B9\U1F3FD\U200D\U2640\UFE0F' +emoji[woman_supervillain_medium_skin_tone_minimally]=$'\U1F9B9\U1F3FD\U200D\U2640' +emoji[woman_supervillain_medium_dark_skin_tone]=$'\U1F9B9\U1F3FE\U200D\U2640\UFE0F' +emoji[woman_supervillain_medium_dark_skin_tone_minimally]=$'\U1F9B9\U1F3FE\U200D\U2640' +emoji[woman_supervillain_dark_skin_tone]=$'\U1F9B9\U1F3FF\U200D\U2640\UFE0F' +emoji[woman_supervillain_dark_skin_tone_minimally]=$'\U1F9B9\U1F3FF\U200D\U2640' +emoji[mage]=$'\U1F9D9' +emoji[mage_light_skin_tone]=$'\U1F9D9\U1F3FB' +emoji[mage_medium_light_skin_tone]=$'\U1F9D9\U1F3FC' +emoji[mage_medium_skin_tone]=$'\U1F9D9\U1F3FD' +emoji[mage_medium_dark_skin_tone]=$'\U1F9D9\U1F3FE' +emoji[mage_dark_skin_tone]=$'\U1F9D9\U1F3FF' +emoji[man_mage]=$'\U1F9D9\U200D\U2642\UFE0F' +emoji[man_mage_minimally]=$'\U1F9D9\U200D\U2642' +emoji[mage_man]=$'\U1F9D9\U200D\U2642' +emoji[man_mage_light_skin_tone]=$'\U1F9D9\U1F3FB\U200D\U2642\UFE0F' +emoji[man_mage_light_skin_tone_minimally]=$'\U1F9D9\U1F3FB\U200D\U2642' +emoji[man_mage_medium_light_skin_tone]=$'\U1F9D9\U1F3FC\U200D\U2642\UFE0F' +emoji[man_mage_medium_light_skin_tone_minimally]=$'\U1F9D9\U1F3FC\U200D\U2642' +emoji[man_mage_medium_skin_tone]=$'\U1F9D9\U1F3FD\U200D\U2642\UFE0F' +emoji[man_mage_medium_skin_tone_minimally]=$'\U1F9D9\U1F3FD\U200D\U2642' +emoji[man_mage_medium_dark_skin_tone]=$'\U1F9D9\U1F3FE\U200D\U2642\UFE0F' +emoji[man_mage_medium_dark_skin_tone_minimally]=$'\U1F9D9\U1F3FE\U200D\U2642' +emoji[man_mage_dark_skin_tone]=$'\U1F9D9\U1F3FF\U200D\U2642\UFE0F' +emoji[man_mage_dark_skin_tone_minimally]=$'\U1F9D9\U1F3FF\U200D\U2642' +emoji[woman_mage]=$'\U1F9D9\U200D\U2640\UFE0F' +emoji[woman_mage_minimally]=$'\U1F9D9\U200D\U2640' +emoji[mage_woman]=$'\U1F9D9\U200D\U2640' +emoji[woman_mage_light_skin_tone]=$'\U1F9D9\U1F3FB\U200D\U2640\UFE0F' +emoji[woman_mage_light_skin_tone_minimally]=$'\U1F9D9\U1F3FB\U200D\U2640' +emoji[woman_mage_medium_light_skin_tone]=$'\U1F9D9\U1F3FC\U200D\U2640\UFE0F' +emoji[woman_mage_medium_light_skin_tone_minimally]=$'\U1F9D9\U1F3FC\U200D\U2640' +emoji[woman_mage_medium_skin_tone]=$'\U1F9D9\U1F3FD\U200D\U2640\UFE0F' +emoji[woman_mage_medium_skin_tone_minimally]=$'\U1F9D9\U1F3FD\U200D\U2640' +emoji[woman_mage_medium_dark_skin_tone]=$'\U1F9D9\U1F3FE\U200D\U2640\UFE0F' +emoji[woman_mage_medium_dark_skin_tone_minimally]=$'\U1F9D9\U1F3FE\U200D\U2640' +emoji[woman_mage_dark_skin_tone]=$'\U1F9D9\U1F3FF\U200D\U2640\UFE0F' +emoji[woman_mage_dark_skin_tone_minimally]=$'\U1F9D9\U1F3FF\U200D\U2640' +emoji[fairy]=$'\U1F9DA' +emoji[fairy_light_skin_tone]=$'\U1F9DA\U1F3FB' +emoji[fairy_medium_light_skin_tone]=$'\U1F9DA\U1F3FC' +emoji[fairy_medium_skin_tone]=$'\U1F9DA\U1F3FD' +emoji[fairy_medium_dark_skin_tone]=$'\U1F9DA\U1F3FE' +emoji[fairy_dark_skin_tone]=$'\U1F9DA\U1F3FF' +emoji[man_fairy]=$'\U1F9DA\U200D\U2642\UFE0F' +emoji[man_fairy_minimally]=$'\U1F9DA\U200D\U2642' +emoji[fairy_man]=$'\U1F9DA\U200D\U2642' +emoji[man_fairy_light_skin_tone]=$'\U1F9DA\U1F3FB\U200D\U2642\UFE0F' +emoji[man_fairy_light_skin_tone_minimally]=$'\U1F9DA\U1F3FB\U200D\U2642' +emoji[man_fairy_medium_light_skin_tone]=$'\U1F9DA\U1F3FC\U200D\U2642\UFE0F' +emoji[man_fairy_medium_light_skin_tone_minimally]=$'\U1F9DA\U1F3FC\U200D\U2642' +emoji[man_fairy_medium_skin_tone]=$'\U1F9DA\U1F3FD\U200D\U2642\UFE0F' +emoji[man_fairy_medium_skin_tone_minimally]=$'\U1F9DA\U1F3FD\U200D\U2642' +emoji[man_fairy_medium_dark_skin_tone]=$'\U1F9DA\U1F3FE\U200D\U2642\UFE0F' +emoji[man_fairy_medium_dark_skin_tone_minimally]=$'\U1F9DA\U1F3FE\U200D\U2642' +emoji[man_fairy_dark_skin_tone]=$'\U1F9DA\U1F3FF\U200D\U2642\UFE0F' +emoji[man_fairy_dark_skin_tone_minimally]=$'\U1F9DA\U1F3FF\U200D\U2642' +emoji[woman_fairy]=$'\U1F9DA\U200D\U2640\UFE0F' +emoji[woman_fairy_minimally]=$'\U1F9DA\U200D\U2640' +emoji[fairy_woman]=$'\U1F9DA\U200D\U2640' +emoji[woman_fairy_light_skin_tone]=$'\U1F9DA\U1F3FB\U200D\U2640\UFE0F' +emoji[woman_fairy_light_skin_tone_minimally]=$'\U1F9DA\U1F3FB\U200D\U2640' +emoji[woman_fairy_medium_light_skin_tone]=$'\U1F9DA\U1F3FC\U200D\U2640\UFE0F' +emoji[woman_fairy_medium_light_skin_tone_minimally]=$'\U1F9DA\U1F3FC\U200D\U2640' +emoji[woman_fairy_medium_skin_tone]=$'\U1F9DA\U1F3FD\U200D\U2640\UFE0F' +emoji[woman_fairy_medium_skin_tone_minimally]=$'\U1F9DA\U1F3FD\U200D\U2640' +emoji[woman_fairy_medium_dark_skin_tone]=$'\U1F9DA\U1F3FE\U200D\U2640\UFE0F' +emoji[woman_fairy_medium_dark_skin_tone_minimally]=$'\U1F9DA\U1F3FE\U200D\U2640' +emoji[woman_fairy_dark_skin_tone]=$'\U1F9DA\U1F3FF\U200D\U2640\UFE0F' +emoji[woman_fairy_dark_skin_tone_minimally]=$'\U1F9DA\U1F3FF\U200D\U2640' +emoji[vampire]=$'\U1F9DB' +emoji[vampire_light_skin_tone]=$'\U1F9DB\U1F3FB' +emoji[vampire_medium_light_skin_tone]=$'\U1F9DB\U1F3FC' +emoji[vampire_medium_skin_tone]=$'\U1F9DB\U1F3FD' +emoji[vampire_medium_dark_skin_tone]=$'\U1F9DB\U1F3FE' +emoji[vampire_dark_skin_tone]=$'\U1F9DB\U1F3FF' +emoji[man_vampire]=$'\U1F9DB\U200D\U2642\UFE0F' +emoji[man_vampire_minimally]=$'\U1F9DB\U200D\U2642' +emoji[vampire_man]=$'\U1F9DB\U200D\U2642' +emoji[man_vampire_light_skin_tone]=$'\U1F9DB\U1F3FB\U200D\U2642\UFE0F' +emoji[man_vampire_light_skin_tone_minimally]=$'\U1F9DB\U1F3FB\U200D\U2642' +emoji[man_vampire_medium_light_skin_tone]=$'\U1F9DB\U1F3FC\U200D\U2642\UFE0F' +emoji[man_vampire_medium_light_skin_tone_minimally]=$'\U1F9DB\U1F3FC\U200D\U2642' +emoji[man_vampire_medium_skin_tone]=$'\U1F9DB\U1F3FD\U200D\U2642\UFE0F' +emoji[man_vampire_medium_skin_tone_minimally]=$'\U1F9DB\U1F3FD\U200D\U2642' +emoji[man_vampire_medium_dark_skin_tone]=$'\U1F9DB\U1F3FE\U200D\U2642\UFE0F' +emoji[man_vampire_medium_dark_skin_tone_minimally]=$'\U1F9DB\U1F3FE\U200D\U2642' +emoji[man_vampire_dark_skin_tone]=$'\U1F9DB\U1F3FF\U200D\U2642\UFE0F' +emoji[man_vampire_dark_skin_tone_minimally]=$'\U1F9DB\U1F3FF\U200D\U2642' +emoji[woman_vampire]=$'\U1F9DB\U200D\U2640\UFE0F' +emoji[woman_vampire_minimally]=$'\U1F9DB\U200D\U2640' +emoji[vampire_woman]=$'\U1F9DB\U200D\U2640' +emoji[woman_vampire_light_skin_tone]=$'\U1F9DB\U1F3FB\U200D\U2640\UFE0F' +emoji[woman_vampire_light_skin_tone_minimally]=$'\U1F9DB\U1F3FB\U200D\U2640' +emoji[woman_vampire_medium_light_skin_tone]=$'\U1F9DB\U1F3FC\U200D\U2640\UFE0F' +emoji[woman_vampire_medium_light_skin_tone_minimally]=$'\U1F9DB\U1F3FC\U200D\U2640' +emoji[woman_vampire_medium_skin_tone]=$'\U1F9DB\U1F3FD\U200D\U2640\UFE0F' +emoji[woman_vampire_medium_skin_tone_minimally]=$'\U1F9DB\U1F3FD\U200D\U2640' +emoji[woman_vampire_medium_dark_skin_tone]=$'\U1F9DB\U1F3FE\U200D\U2640\UFE0F' +emoji[woman_vampire_medium_dark_skin_tone_minimally]=$'\U1F9DB\U1F3FE\U200D\U2640' +emoji[woman_vampire_dark_skin_tone]=$'\U1F9DB\U1F3FF\U200D\U2640\UFE0F' +emoji[woman_vampire_dark_skin_tone_minimally]=$'\U1F9DB\U1F3FF\U200D\U2640' +emoji[merperson]=$'\U1F9DC' +emoji[merperson_light_skin_tone]=$'\U1F9DC\U1F3FB' +emoji[merperson_medium_light_skin_tone]=$'\U1F9DC\U1F3FC' +emoji[merperson_medium_skin_tone]=$'\U1F9DC\U1F3FD' +emoji[merperson_medium_dark_skin_tone]=$'\U1F9DC\U1F3FE' +emoji[merperson_dark_skin_tone]=$'\U1F9DC\U1F3FF' +emoji[merman]=$'\U1F9DC\U200D\U2642\UFE0F' +emoji[merman_minimally]=$'\U1F9DC\U200D\U2642' +emoji[merman_light_skin_tone]=$'\U1F9DC\U1F3FB\U200D\U2642\UFE0F' +emoji[merman_light_skin_tone_minimally]=$'\U1F9DC\U1F3FB\U200D\U2642' +emoji[merman_medium_light_skin_tone]=$'\U1F9DC\U1F3FC\U200D\U2642\UFE0F' +emoji[merman_medium_light_skin_tone_minimally]=$'\U1F9DC\U1F3FC\U200D\U2642' +emoji[merman_medium_skin_tone]=$'\U1F9DC\U1F3FD\U200D\U2642\UFE0F' +emoji[merman_medium_skin_tone_minimally]=$'\U1F9DC\U1F3FD\U200D\U2642' +emoji[merman_medium_dark_skin_tone]=$'\U1F9DC\U1F3FE\U200D\U2642\UFE0F' +emoji[merman_medium_dark_skin_tone_minimally]=$'\U1F9DC\U1F3FE\U200D\U2642' +emoji[merman_dark_skin_tone]=$'\U1F9DC\U1F3FF\U200D\U2642\UFE0F' +emoji[merman_dark_skin_tone_minimally]=$'\U1F9DC\U1F3FF\U200D\U2642' +emoji[mermaid]=$'\U1F9DC\U200D\U2640\UFE0F' +emoji[mermaid_minimally]=$'\U1F9DC\U200D\U2640' +emoji[mermaid_light_skin_tone]=$'\U1F9DC\U1F3FB\U200D\U2640\UFE0F' +emoji[mermaid_light_skin_tone_minimally]=$'\U1F9DC\U1F3FB\U200D\U2640' +emoji[mermaid_medium_light_skin_tone]=$'\U1F9DC\U1F3FC\U200D\U2640\UFE0F' +emoji[mermaid_medium_light_skin_tone_minimally]=$'\U1F9DC\U1F3FC\U200D\U2640' +emoji[mermaid_medium_skin_tone]=$'\U1F9DC\U1F3FD\U200D\U2640\UFE0F' +emoji[mermaid_medium_skin_tone_minimally]=$'\U1F9DC\U1F3FD\U200D\U2640' +emoji[mermaid_medium_dark_skin_tone]=$'\U1F9DC\U1F3FE\U200D\U2640\UFE0F' +emoji[mermaid_medium_dark_skin_tone_minimally]=$'\U1F9DC\U1F3FE\U200D\U2640' +emoji[mermaid_dark_skin_tone]=$'\U1F9DC\U1F3FF\U200D\U2640\UFE0F' +emoji[mermaid_dark_skin_tone_minimally]=$'\U1F9DC\U1F3FF\U200D\U2640' +emoji[elf]=$'\U1F9DD' +emoji[elf_light_skin_tone]=$'\U1F9DD\U1F3FB' +emoji[elf_medium_light_skin_tone]=$'\U1F9DD\U1F3FC' +emoji[elf_medium_skin_tone]=$'\U1F9DD\U1F3FD' +emoji[elf_medium_dark_skin_tone]=$'\U1F9DD\U1F3FE' +emoji[elf_dark_skin_tone]=$'\U1F9DD\U1F3FF' +emoji[man_elf]=$'\U1F9DD\U200D\U2642\UFE0F' +emoji[man_elf_minimally]=$'\U1F9DD\U200D\U2642' +emoji[elf_man]=$'\U1F9DD\U200D\U2642' +emoji[man_elf_light_skin_tone]=$'\U1F9DD\U1F3FB\U200D\U2642\UFE0F' +emoji[man_elf_light_skin_tone_minimally]=$'\U1F9DD\U1F3FB\U200D\U2642' +emoji[man_elf_medium_light_skin_tone]=$'\U1F9DD\U1F3FC\U200D\U2642\UFE0F' +emoji[man_elf_medium_light_skin_tone_minimally]=$'\U1F9DD\U1F3FC\U200D\U2642' +emoji[man_elf_medium_skin_tone]=$'\U1F9DD\U1F3FD\U200D\U2642\UFE0F' +emoji[man_elf_medium_skin_tone_minimally]=$'\U1F9DD\U1F3FD\U200D\U2642' +emoji[man_elf_medium_dark_skin_tone]=$'\U1F9DD\U1F3FE\U200D\U2642\UFE0F' +emoji[man_elf_medium_dark_skin_tone_minimally]=$'\U1F9DD\U1F3FE\U200D\U2642' +emoji[man_elf_dark_skin_tone]=$'\U1F9DD\U1F3FF\U200D\U2642\UFE0F' +emoji[man_elf_dark_skin_tone_minimally]=$'\U1F9DD\U1F3FF\U200D\U2642' +emoji[woman_elf]=$'\U1F9DD\U200D\U2640\UFE0F' +emoji[woman_elf_minimally]=$'\U1F9DD\U200D\U2640' +emoji[elf_woman]=$'\U1F9DD\U200D\U2640' +emoji[woman_elf_light_skin_tone]=$'\U1F9DD\U1F3FB\U200D\U2640\UFE0F' +emoji[woman_elf_light_skin_tone_minimally]=$'\U1F9DD\U1F3FB\U200D\U2640' +emoji[woman_elf_medium_light_skin_tone]=$'\U1F9DD\U1F3FC\U200D\U2640\UFE0F' +emoji[woman_elf_medium_light_skin_tone_minimally]=$'\U1F9DD\U1F3FC\U200D\U2640' +emoji[woman_elf_medium_skin_tone]=$'\U1F9DD\U1F3FD\U200D\U2640\UFE0F' +emoji[woman_elf_medium_skin_tone_minimally]=$'\U1F9DD\U1F3FD\U200D\U2640' +emoji[woman_elf_medium_dark_skin_tone]=$'\U1F9DD\U1F3FE\U200D\U2640\UFE0F' +emoji[woman_elf_medium_dark_skin_tone_minimally]=$'\U1F9DD\U1F3FE\U200D\U2640' +emoji[woman_elf_dark_skin_tone]=$'\U1F9DD\U1F3FF\U200D\U2640\UFE0F' +emoji[woman_elf_dark_skin_tone_minimally]=$'\U1F9DD\U1F3FF\U200D\U2640' +emoji[genie]=$'\U1F9DE' +emoji[man_genie]=$'\U1F9DE\U200D\U2642\UFE0F' +emoji[man_genie_minimally]=$'\U1F9DE\U200D\U2642' +emoji[genie_man]=$'\U1F9DE\U200D\U2642' +emoji[woman_genie]=$'\U1F9DE\U200D\U2640\UFE0F' +emoji[woman_genie_minimally]=$'\U1F9DE\U200D\U2640' +emoji[genie_woman]=$'\U1F9DE\U200D\U2640' +emoji[zombie]=$'\U1F9DF' +emoji[man_zombie]=$'\U1F9DF\U200D\U2642\UFE0F' +emoji[man_zombie_minimally]=$'\U1F9DF\U200D\U2642' +emoji[zombie_man]=$'\U1F9DF\U200D\U2642' +emoji[woman_zombie]=$'\U1F9DF\U200D\U2640\UFE0F' +emoji[woman_zombie_minimally]=$'\U1F9DF\U200D\U2640' +emoji[zombie_woman]=$'\U1F9DF\U200D\U2640' +emoji[person_getting_massage]=$'\U1F486' +emoji[massage]=$'\U1F486' +emoji[person_getting_massage_light_skin_tone]=$'\U1F486\U1F3FB' +emoji[person_getting_massage_medium_light_skin_tone]=$'\U1F486\U1F3FC' +emoji[person_getting_massage_medium_skin_tone]=$'\U1F486\U1F3FD' +emoji[person_getting_massage_medium_dark_skin_tone]=$'\U1F486\U1F3FE' +emoji[person_getting_massage_dark_skin_tone]=$'\U1F486\U1F3FF' +emoji[man_getting_massage]=$'\U1F486\U200D\U2642\UFE0F' +emoji[man_getting_massage_minimally]=$'\U1F486\U200D\U2642' +emoji[massage_man]=$'\U1F486\U200D\U2642' +emoji[man_getting_massage_light_skin_tone]=$'\U1F486\U1F3FB\U200D\U2642\UFE0F' +emoji[man_getting_massage_light_skin_tone_minimally]=$'\U1F486\U1F3FB\U200D\U2642' +emoji[man_getting_massage_medium_light_skin_tone]=$'\U1F486\U1F3FC\U200D\U2642\UFE0F' +emoji[man_getting_massage_medium_light_skin_tone_minimally]=$'\U1F486\U1F3FC\U200D\U2642' +emoji[man_getting_massage_medium_skin_tone]=$'\U1F486\U1F3FD\U200D\U2642\UFE0F' +emoji[man_getting_massage_medium_skin_tone_minimally]=$'\U1F486\U1F3FD\U200D\U2642' +emoji[man_getting_massage_medium_dark_skin_tone]=$'\U1F486\U1F3FE\U200D\U2642\UFE0F' +emoji[man_getting_massage_medium_dark_skin_tone_minimally]=$'\U1F486\U1F3FE\U200D\U2642' +emoji[man_getting_massage_dark_skin_tone]=$'\U1F486\U1F3FF\U200D\U2642\UFE0F' +emoji[man_getting_massage_dark_skin_tone_minimally]=$'\U1F486\U1F3FF\U200D\U2642' +emoji[woman_getting_massage]=$'\U1F486\U200D\U2640\UFE0F' +emoji[woman_getting_massage_minimally]=$'\U1F486\U200D\U2640' +emoji[massage_woman]=$'\U1F486\U200D\U2640' +emoji[woman_getting_massage_light_skin_tone]=$'\U1F486\U1F3FB\U200D\U2640\UFE0F' +emoji[woman_getting_massage_light_skin_tone_minimally]=$'\U1F486\U1F3FB\U200D\U2640' +emoji[woman_getting_massage_medium_light_skin_tone]=$'\U1F486\U1F3FC\U200D\U2640\UFE0F' +emoji[woman_getting_massage_medium_light_skin_tone_minimally]=$'\U1F486\U1F3FC\U200D\U2640' +emoji[woman_getting_massage_medium_skin_tone]=$'\U1F486\U1F3FD\U200D\U2640\UFE0F' +emoji[woman_getting_massage_medium_skin_tone_minimally]=$'\U1F486\U1F3FD\U200D\U2640' +emoji[woman_getting_massage_medium_dark_skin_tone]=$'\U1F486\U1F3FE\U200D\U2640\UFE0F' +emoji[woman_getting_massage_medium_dark_skin_tone_minimally]=$'\U1F486\U1F3FE\U200D\U2640' +emoji[woman_getting_massage_dark_skin_tone]=$'\U1F486\U1F3FF\U200D\U2640\UFE0F' +emoji[woman_getting_massage_dark_skin_tone_minimally]=$'\U1F486\U1F3FF\U200D\U2640' +emoji[person_getting_haircut]=$'\U1F487' +emoji[haircut]=$'\U1F487' +emoji[person_getting_haircut_light_skin_tone]=$'\U1F487\U1F3FB' +emoji[person_getting_haircut_medium_light_skin_tone]=$'\U1F487\U1F3FC' +emoji[person_getting_haircut_medium_skin_tone]=$'\U1F487\U1F3FD' +emoji[person_getting_haircut_medium_dark_skin_tone]=$'\U1F487\U1F3FE' +emoji[person_getting_haircut_dark_skin_tone]=$'\U1F487\U1F3FF' +emoji[man_getting_haircut]=$'\U1F487\U200D\U2642\UFE0F' +emoji[man_getting_haircut_minimally]=$'\U1F487\U200D\U2642' +emoji[haircut_man]=$'\U1F487\U200D\U2642' +emoji[man_getting_haircut_light_skin_tone]=$'\U1F487\U1F3FB\U200D\U2642\UFE0F' +emoji[man_getting_haircut_light_skin_tone_minimally]=$'\U1F487\U1F3FB\U200D\U2642' +emoji[man_getting_haircut_medium_light_skin_tone]=$'\U1F487\U1F3FC\U200D\U2642\UFE0F' +emoji[man_getting_haircut_medium_light_skin_tone_minimally]=$'\U1F487\U1F3FC\U200D\U2642' +emoji[man_getting_haircut_medium_skin_tone]=$'\U1F487\U1F3FD\U200D\U2642\UFE0F' +emoji[man_getting_haircut_medium_skin_tone_minimally]=$'\U1F487\U1F3FD\U200D\U2642' +emoji[man_getting_haircut_medium_dark_skin_tone]=$'\U1F487\U1F3FE\U200D\U2642\UFE0F' +emoji[man_getting_haircut_medium_dark_skin_tone_minimally]=$'\U1F487\U1F3FE\U200D\U2642' +emoji[man_getting_haircut_dark_skin_tone]=$'\U1F487\U1F3FF\U200D\U2642\UFE0F' +emoji[man_getting_haircut_dark_skin_tone_minimally]=$'\U1F487\U1F3FF\U200D\U2642' +emoji[woman_getting_haircut]=$'\U1F487\U200D\U2640\UFE0F' +emoji[woman_getting_haircut_minimally]=$'\U1F487\U200D\U2640' +emoji[haircut_woman]=$'\U1F487\U200D\U2640' +emoji[woman_getting_haircut_light_skin_tone]=$'\U1F487\U1F3FB\U200D\U2640\UFE0F' +emoji[woman_getting_haircut_light_skin_tone_minimally]=$'\U1F487\U1F3FB\U200D\U2640' +emoji[woman_getting_haircut_medium_light_skin_tone]=$'\U1F487\U1F3FC\U200D\U2640\UFE0F' +emoji[woman_getting_haircut_medium_light_skin_tone_minimally]=$'\U1F487\U1F3FC\U200D\U2640' +emoji[woman_getting_haircut_medium_skin_tone]=$'\U1F487\U1F3FD\U200D\U2640\UFE0F' +emoji[woman_getting_haircut_medium_skin_tone_minimally]=$'\U1F487\U1F3FD\U200D\U2640' +emoji[woman_getting_haircut_medium_dark_skin_tone]=$'\U1F487\U1F3FE\U200D\U2640\UFE0F' +emoji[woman_getting_haircut_medium_dark_skin_tone_minimally]=$'\U1F487\U1F3FE\U200D\U2640' +emoji[woman_getting_haircut_dark_skin_tone]=$'\U1F487\U1F3FF\U200D\U2640\UFE0F' +emoji[woman_getting_haircut_dark_skin_tone_minimally]=$'\U1F487\U1F3FF\U200D\U2640' +emoji[person_walking]=$'\U1F6B6' +emoji[walking]=$'\U1F6B6' +emoji[person_walking_light_skin_tone]=$'\U1F6B6\U1F3FB' +emoji[person_walking_medium_light_skin_tone]=$'\U1F6B6\U1F3FC' +emoji[person_walking_medium_skin_tone]=$'\U1F6B6\U1F3FD' +emoji[person_walking_medium_dark_skin_tone]=$'\U1F6B6\U1F3FE' +emoji[person_walking_dark_skin_tone]=$'\U1F6B6\U1F3FF' +emoji[man_walking]=$'\U1F6B6\U200D\U2642\UFE0F' +emoji[man_walking_minimally]=$'\U1F6B6\U200D\U2642' +emoji[walking_man]=$'\U1F6B6\U200D\U2642' +emoji[man_walking_light_skin_tone]=$'\U1F6B6\U1F3FB\U200D\U2642\UFE0F' +emoji[man_walking_light_skin_tone_minimally]=$'\U1F6B6\U1F3FB\U200D\U2642' +emoji[man_walking_medium_light_skin_tone]=$'\U1F6B6\U1F3FC\U200D\U2642\UFE0F' +emoji[man_walking_medium_light_skin_tone_minimally]=$'\U1F6B6\U1F3FC\U200D\U2642' +emoji[man_walking_medium_skin_tone]=$'\U1F6B6\U1F3FD\U200D\U2642\UFE0F' +emoji[man_walking_medium_skin_tone_minimally]=$'\U1F6B6\U1F3FD\U200D\U2642' +emoji[man_walking_medium_dark_skin_tone]=$'\U1F6B6\U1F3FE\U200D\U2642\UFE0F' +emoji[man_walking_medium_dark_skin_tone_minimally]=$'\U1F6B6\U1F3FE\U200D\U2642' +emoji[man_walking_dark_skin_tone]=$'\U1F6B6\U1F3FF\U200D\U2642\UFE0F' +emoji[man_walking_dark_skin_tone_minimally]=$'\U1F6B6\U1F3FF\U200D\U2642' +emoji[woman_walking]=$'\U1F6B6\U200D\U2640\UFE0F' +emoji[woman_walking_minimally]=$'\U1F6B6\U200D\U2640' +emoji[walking_woman]=$'\U1F6B6\U200D\U2640' +emoji[woman_walking_light_skin_tone]=$'\U1F6B6\U1F3FB\U200D\U2640\UFE0F' +emoji[woman_walking_light_skin_tone_minimally]=$'\U1F6B6\U1F3FB\U200D\U2640' +emoji[woman_walking_medium_light_skin_tone]=$'\U1F6B6\U1F3FC\U200D\U2640\UFE0F' +emoji[woman_walking_medium_light_skin_tone_minimally]=$'\U1F6B6\U1F3FC\U200D\U2640' +emoji[woman_walking_medium_skin_tone]=$'\U1F6B6\U1F3FD\U200D\U2640\UFE0F' +emoji[woman_walking_medium_skin_tone_minimally]=$'\U1F6B6\U1F3FD\U200D\U2640' +emoji[woman_walking_medium_dark_skin_tone]=$'\U1F6B6\U1F3FE\U200D\U2640\UFE0F' +emoji[woman_walking_medium_dark_skin_tone_minimally]=$'\U1F6B6\U1F3FE\U200D\U2640' +emoji[woman_walking_dark_skin_tone]=$'\U1F6B6\U1F3FF\U200D\U2640\UFE0F' +emoji[woman_walking_dark_skin_tone_minimally]=$'\U1F6B6\U1F3FF\U200D\U2640' +emoji[person_standing]=$'\U1F9CD' +emoji[standing_person]=$'\U1F9CD' +emoji[person_standing_light_skin_tone]=$'\U1F9CD\U1F3FB' +emoji[person_standing_medium_light_skin_tone]=$'\U1F9CD\U1F3FC' +emoji[person_standing_medium_skin_tone]=$'\U1F9CD\U1F3FD' +emoji[person_standing_medium_dark_skin_tone]=$'\U1F9CD\U1F3FE' +emoji[person_standing_dark_skin_tone]=$'\U1F9CD\U1F3FF' +emoji[man_standing]=$'\U1F9CD\U200D\U2642\UFE0F' +emoji[man_standing_minimally]=$'\U1F9CD\U200D\U2642' +emoji[standing_man]=$'\U1F9CD\U200D\U2642' +emoji[man_standing_light_skin_tone]=$'\U1F9CD\U1F3FB\U200D\U2642\UFE0F' +emoji[man_standing_light_skin_tone_minimally]=$'\U1F9CD\U1F3FB\U200D\U2642' +emoji[man_standing_medium_light_skin_tone]=$'\U1F9CD\U1F3FC\U200D\U2642\UFE0F' +emoji[man_standing_medium_light_skin_tone_minimally]=$'\U1F9CD\U1F3FC\U200D\U2642' +emoji[man_standing_medium_skin_tone]=$'\U1F9CD\U1F3FD\U200D\U2642\UFE0F' +emoji[man_standing_medium_skin_tone_minimally]=$'\U1F9CD\U1F3FD\U200D\U2642' +emoji[man_standing_medium_dark_skin_tone]=$'\U1F9CD\U1F3FE\U200D\U2642\UFE0F' +emoji[man_standing_medium_dark_skin_tone_minimally]=$'\U1F9CD\U1F3FE\U200D\U2642' +emoji[man_standing_dark_skin_tone]=$'\U1F9CD\U1F3FF\U200D\U2642\UFE0F' +emoji[man_standing_dark_skin_tone_minimally]=$'\U1F9CD\U1F3FF\U200D\U2642' +emoji[woman_standing]=$'\U1F9CD\U200D\U2640\UFE0F' +emoji[woman_standing_minimally]=$'\U1F9CD\U200D\U2640' +emoji[standing_woman]=$'\U1F9CD\U200D\U2640' +emoji[woman_standing_light_skin_tone]=$'\U1F9CD\U1F3FB\U200D\U2640\UFE0F' +emoji[woman_standing_light_skin_tone_minimally]=$'\U1F9CD\U1F3FB\U200D\U2640' +emoji[woman_standing_medium_light_skin_tone]=$'\U1F9CD\U1F3FC\U200D\U2640\UFE0F' +emoji[woman_standing_medium_light_skin_tone_minimally]=$'\U1F9CD\U1F3FC\U200D\U2640' +emoji[woman_standing_medium_skin_tone]=$'\U1F9CD\U1F3FD\U200D\U2640\UFE0F' +emoji[woman_standing_medium_skin_tone_minimally]=$'\U1F9CD\U1F3FD\U200D\U2640' +emoji[woman_standing_medium_dark_skin_tone]=$'\U1F9CD\U1F3FE\U200D\U2640\UFE0F' +emoji[woman_standing_medium_dark_skin_tone_minimally]=$'\U1F9CD\U1F3FE\U200D\U2640' +emoji[woman_standing_dark_skin_tone]=$'\U1F9CD\U1F3FF\U200D\U2640\UFE0F' +emoji[woman_standing_dark_skin_tone_minimally]=$'\U1F9CD\U1F3FF\U200D\U2640' +emoji[person_kneeling]=$'\U1F9CE' +emoji[kneeling_person]=$'\U1F9CE' +emoji[person_kneeling_light_skin_tone]=$'\U1F9CE\U1F3FB' +emoji[person_kneeling_medium_light_skin_tone]=$'\U1F9CE\U1F3FC' +emoji[person_kneeling_medium_skin_tone]=$'\U1F9CE\U1F3FD' +emoji[person_kneeling_medium_dark_skin_tone]=$'\U1F9CE\U1F3FE' +emoji[person_kneeling_dark_skin_tone]=$'\U1F9CE\U1F3FF' +emoji[man_kneeling]=$'\U1F9CE\U200D\U2642\UFE0F' +emoji[man_kneeling_minimally]=$'\U1F9CE\U200D\U2642' +emoji[kneeling_man]=$'\U1F9CE\U200D\U2642' +emoji[man_kneeling_light_skin_tone]=$'\U1F9CE\U1F3FB\U200D\U2642\UFE0F' +emoji[man_kneeling_light_skin_tone_minimally]=$'\U1F9CE\U1F3FB\U200D\U2642' +emoji[man_kneeling_medium_light_skin_tone]=$'\U1F9CE\U1F3FC\U200D\U2642\UFE0F' +emoji[man_kneeling_medium_light_skin_tone_minimally]=$'\U1F9CE\U1F3FC\U200D\U2642' +emoji[man_kneeling_medium_skin_tone]=$'\U1F9CE\U1F3FD\U200D\U2642\UFE0F' +emoji[man_kneeling_medium_skin_tone_minimally]=$'\U1F9CE\U1F3FD\U200D\U2642' +emoji[man_kneeling_medium_dark_skin_tone]=$'\U1F9CE\U1F3FE\U200D\U2642\UFE0F' +emoji[man_kneeling_medium_dark_skin_tone_minimally]=$'\U1F9CE\U1F3FE\U200D\U2642' +emoji[man_kneeling_dark_skin_tone]=$'\U1F9CE\U1F3FF\U200D\U2642\UFE0F' +emoji[man_kneeling_dark_skin_tone_minimally]=$'\U1F9CE\U1F3FF\U200D\U2642' +emoji[woman_kneeling]=$'\U1F9CE\U200D\U2640\UFE0F' +emoji[woman_kneeling_minimally]=$'\U1F9CE\U200D\U2640' +emoji[kneeling_woman]=$'\U1F9CE\U200D\U2640' +emoji[woman_kneeling_light_skin_tone]=$'\U1F9CE\U1F3FB\U200D\U2640\UFE0F' +emoji[woman_kneeling_light_skin_tone_minimally]=$'\U1F9CE\U1F3FB\U200D\U2640' +emoji[woman_kneeling_medium_light_skin_tone]=$'\U1F9CE\U1F3FC\U200D\U2640\UFE0F' +emoji[woman_kneeling_medium_light_skin_tone_minimally]=$'\U1F9CE\U1F3FC\U200D\U2640' +emoji[woman_kneeling_medium_skin_tone]=$'\U1F9CE\U1F3FD\U200D\U2640\UFE0F' +emoji[woman_kneeling_medium_skin_tone_minimally]=$'\U1F9CE\U1F3FD\U200D\U2640' +emoji[woman_kneeling_medium_dark_skin_tone]=$'\U1F9CE\U1F3FE\U200D\U2640\UFE0F' +emoji[woman_kneeling_medium_dark_skin_tone_minimally]=$'\U1F9CE\U1F3FE\U200D\U2640' +emoji[woman_kneeling_dark_skin_tone]=$'\U1F9CE\U1F3FF\U200D\U2640\UFE0F' +emoji[woman_kneeling_dark_skin_tone_minimally]=$'\U1F9CE\U1F3FF\U200D\U2640' +emoji[man_with_probing_cane]=$'\U1F468\U200D\U1F9AF' +emoji[man_with_probing_cane_light_skin_tone]=$'\U1F468\U1F3FB\U200D\U1F9AF' +emoji[man_with_probing_cane_medium_light_skin_tone]=$'\U1F468\U1F3FC\U200D\U1F9AF' +emoji[man_with_probing_cane_medium_skin_tone]=$'\U1F468\U1F3FD\U200D\U1F9AF' +emoji[man_with_probing_cane_medium_dark_skin_tone]=$'\U1F468\U1F3FE\U200D\U1F9AF' +emoji[man_with_probing_cane_dark_skin_tone]=$'\U1F468\U1F3FF\U200D\U1F9AF' +emoji[woman_with_probing_cane]=$'\U1F469\U200D\U1F9AF' +emoji[woman_with_probing_cane_light_skin_tone]=$'\U1F469\U1F3FB\U200D\U1F9AF' +emoji[woman_with_probing_cane_medium_light_skin_tone]=$'\U1F469\U1F3FC\U200D\U1F9AF' +emoji[woman_with_probing_cane_medium_skin_tone]=$'\U1F469\U1F3FD\U200D\U1F9AF' +emoji[woman_with_probing_cane_medium_dark_skin_tone]=$'\U1F469\U1F3FE\U200D\U1F9AF' +emoji[woman_with_probing_cane_dark_skin_tone]=$'\U1F469\U1F3FF\U200D\U1F9AF' +emoji[man_in_motorized_wheelchair]=$'\U1F468\U200D\U1F9BC' +emoji[man_in_motorized_wheelchair_light_skin_tone]=$'\U1F468\U1F3FB\U200D\U1F9BC' +emoji[man_in_motorized_wheelchair_medium_light_skin_tone]=$'\U1F468\U1F3FC\U200D\U1F9BC' +emoji[man_in_motorized_wheelchair_medium_skin_tone]=$'\U1F468\U1F3FD\U200D\U1F9BC' +emoji[man_in_motorized_wheelchair_medium_dark_skin_tone]=$'\U1F468\U1F3FE\U200D\U1F9BC' +emoji[man_in_motorized_wheelchair_dark_skin_tone]=$'\U1F468\U1F3FF\U200D\U1F9BC' +emoji[woman_in_motorized_wheelchair]=$'\U1F469\U200D\U1F9BC' +emoji[woman_in_motorized_wheelchair_light_skin_tone]=$'\U1F469\U1F3FB\U200D\U1F9BC' +emoji[woman_in_motorized_wheelchair_medium_light_skin_tone]=$'\U1F469\U1F3FC\U200D\U1F9BC' +emoji[woman_in_motorized_wheelchair_medium_skin_tone]=$'\U1F469\U1F3FD\U200D\U1F9BC' +emoji[woman_in_motorized_wheelchair_medium_dark_skin_tone]=$'\U1F469\U1F3FE\U200D\U1F9BC' +emoji[woman_in_motorized_wheelchair_dark_skin_tone]=$'\U1F469\U1F3FF\U200D\U1F9BC' +emoji[man_in_manual_wheelchair]=$'\U1F468\U200D\U1F9BD' +emoji[man_in_manual_wheelchair_light_skin_tone]=$'\U1F468\U1F3FB\U200D\U1F9BD' +emoji[man_in_manual_wheelchair_medium_light_skin_tone]=$'\U1F468\U1F3FC\U200D\U1F9BD' +emoji[man_in_manual_wheelchair_medium_skin_tone]=$'\U1F468\U1F3FD\U200D\U1F9BD' +emoji[man_in_manual_wheelchair_medium_dark_skin_tone]=$'\U1F468\U1F3FE\U200D\U1F9BD' +emoji[man_in_manual_wheelchair_dark_skin_tone]=$'\U1F468\U1F3FF\U200D\U1F9BD' +emoji[woman_in_manual_wheelchair]=$'\U1F469\U200D\U1F9BD' +emoji[woman_in_manual_wheelchair_light_skin_tone]=$'\U1F469\U1F3FB\U200D\U1F9BD' +emoji[woman_in_manual_wheelchair_medium_light_skin_tone]=$'\U1F469\U1F3FC\U200D\U1F9BD' +emoji[woman_in_manual_wheelchair_medium_skin_tone]=$'\U1F469\U1F3FD\U200D\U1F9BD' +emoji[woman_in_manual_wheelchair_medium_dark_skin_tone]=$'\U1F469\U1F3FE\U200D\U1F9BD' +emoji[woman_in_manual_wheelchair_dark_skin_tone]=$'\U1F469\U1F3FF\U200D\U1F9BD' +emoji[person_running]=$'\U1F3C3' +emoji[runner]=$'\U1F3C3' +emoji[running]=$'\U1F3C3' +emoji[person_running_light_skin_tone]=$'\U1F3C3\U1F3FB' +emoji[person_running_medium_light_skin_tone]=$'\U1F3C3\U1F3FC' +emoji[person_running_medium_skin_tone]=$'\U1F3C3\U1F3FD' +emoji[person_running_medium_dark_skin_tone]=$'\U1F3C3\U1F3FE' +emoji[person_running_dark_skin_tone]=$'\U1F3C3\U1F3FF' +emoji[man_running]=$'\U1F3C3\U200D\U2642\UFE0F' +emoji[man_running_minimally]=$'\U1F3C3\U200D\U2642' +emoji[running_man]=$'\U1F3C3\U200D\U2642' +emoji[man_running_light_skin_tone]=$'\U1F3C3\U1F3FB\U200D\U2642\UFE0F' +emoji[man_running_light_skin_tone_minimally]=$'\U1F3C3\U1F3FB\U200D\U2642' +emoji[man_running_medium_light_skin_tone]=$'\U1F3C3\U1F3FC\U200D\U2642\UFE0F' +emoji[man_running_medium_light_skin_tone_minimally]=$'\U1F3C3\U1F3FC\U200D\U2642' +emoji[man_running_medium_skin_tone]=$'\U1F3C3\U1F3FD\U200D\U2642\UFE0F' +emoji[man_running_medium_skin_tone_minimally]=$'\U1F3C3\U1F3FD\U200D\U2642' +emoji[man_running_medium_dark_skin_tone]=$'\U1F3C3\U1F3FE\U200D\U2642\UFE0F' +emoji[man_running_medium_dark_skin_tone_minimally]=$'\U1F3C3\U1F3FE\U200D\U2642' +emoji[man_running_dark_skin_tone]=$'\U1F3C3\U1F3FF\U200D\U2642\UFE0F' +emoji[man_running_dark_skin_tone_minimally]=$'\U1F3C3\U1F3FF\U200D\U2642' +emoji[woman_running]=$'\U1F3C3\U200D\U2640\UFE0F' +emoji[woman_running_minimally]=$'\U1F3C3\U200D\U2640' +emoji[running_woman]=$'\U1F3C3\U200D\U2640' +emoji[woman_running_light_skin_tone]=$'\U1F3C3\U1F3FB\U200D\U2640\UFE0F' +emoji[woman_running_light_skin_tone_minimally]=$'\U1F3C3\U1F3FB\U200D\U2640' +emoji[woman_running_medium_light_skin_tone]=$'\U1F3C3\U1F3FC\U200D\U2640\UFE0F' +emoji[woman_running_medium_light_skin_tone_minimally]=$'\U1F3C3\U1F3FC\U200D\U2640' +emoji[woman_running_medium_skin_tone]=$'\U1F3C3\U1F3FD\U200D\U2640\UFE0F' +emoji[woman_running_medium_skin_tone_minimally]=$'\U1F3C3\U1F3FD\U200D\U2640' +emoji[woman_running_medium_dark_skin_tone]=$'\U1F3C3\U1F3FE\U200D\U2640\UFE0F' +emoji[woman_running_medium_dark_skin_tone_minimally]=$'\U1F3C3\U1F3FE\U200D\U2640' +emoji[woman_running_dark_skin_tone]=$'\U1F3C3\U1F3FF\U200D\U2640\UFE0F' +emoji[woman_running_dark_skin_tone_minimally]=$'\U1F3C3\U1F3FF\U200D\U2640' +emoji[woman_dancing]=$'\U1F483' +emoji[dancer]=$'\U1F483' +emoji[woman_dancing_light_skin_tone]=$'\U1F483\U1F3FB' +emoji[woman_dancing_medium_light_skin_tone]=$'\U1F483\U1F3FC' +emoji[woman_dancing_medium_skin_tone]=$'\U1F483\U1F3FD' +emoji[woman_dancing_medium_dark_skin_tone]=$'\U1F483\U1F3FE' +emoji[woman_dancing_dark_skin_tone]=$'\U1F483\U1F3FF' +emoji[woman_dancing_dark_skin_tone_1]=$'\U1F57A' +emoji[man_dancing]=$'\U1F57A' +emoji[man_dancing_light_skin_tone]=$'\U1F57A\U1F3FB' +emoji[man_dancing_medium_light_skin_tone]=$'\U1F57A\U1F3FC' +emoji[man_dancing_medium_skin_tone]=$'\U1F57A\U1F3FD' +emoji[man_dancing_medium_dark_skin_tone]=$'\U1F57A\U1F3FE' +emoji[man_dancing_dark_skin_tone]=$'\U1F57A\U1F3FF' +emoji[man_in_suit_levitating]=$'\U1F574\UFE0F' +emoji[man_in_suit_levitating_unqualified]=$'\U1F574' +emoji[business_suit_levitating]=$'\U1F574' +emoji[man_in_suit_levitating_light_skin_tone]=$'\U1F574\U1F3FB' +emoji[man_in_suit_levitating_medium_light_skin_tone]=$'\U1F574\U1F3FC' +emoji[man_in_suit_levitating_medium_skin_tone]=$'\U1F574\U1F3FD' +emoji[man_in_suit_levitating_medium_dark_skin_tone]=$'\U1F574\U1F3FE' +emoji[man_in_suit_levitating_dark_skin_tone]=$'\U1F574\U1F3FF' +emoji[people_with_bunny_ears]=$'\U1F46F' +emoji[dancers]=$'\U1F46F' +emoji[men_with_bunny_ears]=$'\U1F46F\U200D\U2642\UFE0F' +emoji[men_with_bunny_ears_minimally]=$'\U1F46F\U200D\U2642' +emoji[dancing_men]=$'\U1F46F\U200D\U2642' +emoji[women_with_bunny_ears]=$'\U1F46F\U200D\U2640\UFE0F' +emoji[women_with_bunny_ears_minimally]=$'\U1F46F\U200D\U2640' +emoji[dancing_women]=$'\U1F46F\U200D\U2640' +emoji[person_in_steamy_room]=$'\U1F9D6' +emoji[sauna_person]=$'\U1F9D6' +emoji[person_in_steamy_room_light_skin_tone]=$'\U1F9D6\U1F3FB' +emoji[person_in_steamy_room_medium_light_skin_tone]=$'\U1F9D6\U1F3FC' +emoji[person_in_steamy_room_medium_skin_tone]=$'\U1F9D6\U1F3FD' +emoji[person_in_steamy_room_medium_dark_skin_tone]=$'\U1F9D6\U1F3FE' +emoji[person_in_steamy_room_dark_skin_tone]=$'\U1F9D6\U1F3FF' +emoji[man_in_steamy_room]=$'\U1F9D6\U200D\U2642\UFE0F' +emoji[man_in_steamy_room_minimally]=$'\U1F9D6\U200D\U2642' +emoji[sauna_man]=$'\U1F9D6\U200D\U2642' +emoji[man_in_steamy_room_light_skin_tone]=$'\U1F9D6\U1F3FB\U200D\U2642\UFE0F' +emoji[man_in_steamy_room_light_skin_tone_minimally]=$'\U1F9D6\U1F3FB\U200D\U2642' +emoji[man_in_steamy_room_medium_light_skin_tone]=$'\U1F9D6\U1F3FC\U200D\U2642\UFE0F' +emoji[man_in_steamy_room_medium_light_skin_tone_minimally]=$'\U1F9D6\U1F3FC\U200D\U2642' +emoji[man_in_steamy_room_medium_skin_tone]=$'\U1F9D6\U1F3FD\U200D\U2642\UFE0F' +emoji[man_in_steamy_room_medium_skin_tone_minimally]=$'\U1F9D6\U1F3FD\U200D\U2642' +emoji[man_in_steamy_room_medium_dark_skin_tone]=$'\U1F9D6\U1F3FE\U200D\U2642\UFE0F' +emoji[man_in_steamy_room_medium_dark_skin_tone_minimally]=$'\U1F9D6\U1F3FE\U200D\U2642' +emoji[man_in_steamy_room_dark_skin_tone]=$'\U1F9D6\U1F3FF\U200D\U2642\UFE0F' +emoji[man_in_steamy_room_dark_skin_tone_minimally]=$'\U1F9D6\U1F3FF\U200D\U2642' +emoji[woman_in_steamy_room]=$'\U1F9D6\U200D\U2640\UFE0F' +emoji[woman_in_steamy_room_minimally]=$'\U1F9D6\U200D\U2640' +emoji[sauna_woman]=$'\U1F9D6\U200D\U2640' +emoji[woman_in_steamy_room_light_skin_tone]=$'\U1F9D6\U1F3FB\U200D\U2640\UFE0F' +emoji[woman_in_steamy_room_light_skin_tone_minimally]=$'\U1F9D6\U1F3FB\U200D\U2640' +emoji[woman_in_steamy_room_medium_light_skin_tone]=$'\U1F9D6\U1F3FC\U200D\U2640\UFE0F' +emoji[woman_in_steamy_room_medium_light_skin_tone_minimally]=$'\U1F9D6\U1F3FC\U200D\U2640' +emoji[woman_in_steamy_room_medium_skin_tone]=$'\U1F9D6\U1F3FD\U200D\U2640\UFE0F' +emoji[woman_in_steamy_room_medium_skin_tone_minimally]=$'\U1F9D6\U1F3FD\U200D\U2640' +emoji[woman_in_steamy_room_medium_dark_skin_tone]=$'\U1F9D6\U1F3FE\U200D\U2640\UFE0F' +emoji[woman_in_steamy_room_medium_dark_skin_tone_minimally]=$'\U1F9D6\U1F3FE\U200D\U2640' +emoji[woman_in_steamy_room_dark_skin_tone]=$'\U1F9D6\U1F3FF\U200D\U2640\UFE0F' +emoji[woman_in_steamy_room_dark_skin_tone_minimally]=$'\U1F9D6\U1F3FF\U200D\U2640' +emoji[person_climbing]=$'\U1F9D7' +emoji[climbing]=$'\U1F9D7' +emoji[person_climbing_light_skin_tone]=$'\U1F9D7\U1F3FB' +emoji[person_climbing_medium_light_skin_tone]=$'\U1F9D7\U1F3FC' +emoji[person_climbing_medium_skin_tone]=$'\U1F9D7\U1F3FD' +emoji[person_climbing_medium_dark_skin_tone]=$'\U1F9D7\U1F3FE' +emoji[person_climbing_dark_skin_tone]=$'\U1F9D7\U1F3FF' +emoji[man_climbing]=$'\U1F9D7\U200D\U2642\UFE0F' +emoji[man_climbing_minimally]=$'\U1F9D7\U200D\U2642' +emoji[climbing_man]=$'\U1F9D7\U200D\U2642' +emoji[man_climbing_light_skin_tone]=$'\U1F9D7\U1F3FB\U200D\U2642\UFE0F' +emoji[man_climbing_light_skin_tone_minimally]=$'\U1F9D7\U1F3FB\U200D\U2642' +emoji[man_climbing_medium_light_skin_tone]=$'\U1F9D7\U1F3FC\U200D\U2642\UFE0F' +emoji[man_climbing_medium_light_skin_tone_minimally]=$'\U1F9D7\U1F3FC\U200D\U2642' +emoji[man_climbing_medium_skin_tone]=$'\U1F9D7\U1F3FD\U200D\U2642\UFE0F' +emoji[man_climbing_medium_skin_tone_minimally]=$'\U1F9D7\U1F3FD\U200D\U2642' +emoji[man_climbing_medium_dark_skin_tone]=$'\U1F9D7\U1F3FE\U200D\U2642\UFE0F' +emoji[man_climbing_medium_dark_skin_tone_minimally]=$'\U1F9D7\U1F3FE\U200D\U2642' +emoji[man_climbing_dark_skin_tone]=$'\U1F9D7\U1F3FF\U200D\U2642\UFE0F' +emoji[man_climbing_dark_skin_tone_minimally]=$'\U1F9D7\U1F3FF\U200D\U2642' +emoji[woman_climbing]=$'\U1F9D7\U200D\U2640\UFE0F' +emoji[woman_climbing_minimally]=$'\U1F9D7\U200D\U2640' +emoji[climbing_woman]=$'\U1F9D7\U200D\U2640' +emoji[woman_climbing_light_skin_tone]=$'\U1F9D7\U1F3FB\U200D\U2640\UFE0F' +emoji[woman_climbing_light_skin_tone_minimally]=$'\U1F9D7\U1F3FB\U200D\U2640' +emoji[woman_climbing_medium_light_skin_tone]=$'\U1F9D7\U1F3FC\U200D\U2640\UFE0F' +emoji[woman_climbing_medium_light_skin_tone_minimally]=$'\U1F9D7\U1F3FC\U200D\U2640' +emoji[woman_climbing_medium_skin_tone]=$'\U1F9D7\U1F3FD\U200D\U2640\UFE0F' +emoji[woman_climbing_medium_skin_tone_minimally]=$'\U1F9D7\U1F3FD\U200D\U2640' +emoji[woman_climbing_medium_dark_skin_tone]=$'\U1F9D7\U1F3FE\U200D\U2640\UFE0F' +emoji[woman_climbing_medium_dark_skin_tone_minimally]=$'\U1F9D7\U1F3FE\U200D\U2640' +emoji[woman_climbing_dark_skin_tone]=$'\U1F9D7\U1F3FF\U200D\U2640\UFE0F' +emoji[woman_climbing_dark_skin_tone_minimally]=$'\U1F9D7\U1F3FF\U200D\U2640' +emoji[person_fencing]=$'\U1F93A' +emoji[horse_racing]=$'\U1F3C7' +emoji[horse_racing_light_skin_tone]=$'\U1F3C7\U1F3FB' +emoji[horse_racing_medium_light_skin_tone]=$'\U1F3C7\U1F3FC' +emoji[horse_racing_medium_skin_tone]=$'\U1F3C7\U1F3FD' +emoji[horse_racing_medium_dark_skin_tone]=$'\U1F3C7\U1F3FE' +emoji[horse_racing_dark_skin_tone]=$'\U1F3C7\U1F3FF' +emoji[skier]=$'\U26F7\UFE0F' +emoji[skier_unqualified]=$'\U26F7' +emoji[snowboarder]=$'\U1F3C2' +emoji[snowboarder_light_skin_tone]=$'\U1F3C2\U1F3FB' +emoji[snowboarder_medium_light_skin_tone]=$'\U1F3C2\U1F3FC' +emoji[snowboarder_medium_skin_tone]=$'\U1F3C2\U1F3FD' +emoji[snowboarder_medium_dark_skin_tone]=$'\U1F3C2\U1F3FE' +emoji[snowboarder_dark_skin_tone]=$'\U1F3C2\U1F3FF' +emoji[person_golfing]=$'\U1F3CC\UFE0F' +emoji[person_golfing_unqualified]=$'\U1F3CC' +emoji[golfing]=$'\U1F3CC' +emoji[person_golfing_light_skin_tone]=$'\U1F3CC\U1F3FB' +emoji[person_golfing_medium_light_skin_tone]=$'\U1F3CC\U1F3FC' +emoji[person_golfing_medium_skin_tone]=$'\U1F3CC\U1F3FD' +emoji[person_golfing_medium_dark_skin_tone]=$'\U1F3CC\U1F3FE' +emoji[person_golfing_dark_skin_tone]=$'\U1F3CC\U1F3FF' +emoji[man_golfing]=$'\U1F3CC\UFE0F\U200D\U2642\UFE0F' +emoji[golfing_man]=$'\U1F3CC\UFE0F\U200D\U2642\UFE0F' +emoji[man_golfing_unqualified]=$'\U1F3CC\U200D\U2642\UFE0F' +emoji[man_golfing_unqualified_1]=$'\U1F3CC\UFE0F\U200D\U2642' +emoji[man_golfing_unqualified_2]=$'\U1F3CC\U200D\U2642' +emoji[man_golfing_light_skin_tone]=$'\U1F3CC\U1F3FB\U200D\U2642\UFE0F' +emoji[man_golfing_light_skin_tone_minimally]=$'\U1F3CC\U1F3FB\U200D\U2642' +emoji[man_golfing_medium_light_skin_tone]=$'\U1F3CC\U1F3FC\U200D\U2642\UFE0F' +emoji[man_golfing_medium_light_skin_tone_minimally]=$'\U1F3CC\U1F3FC\U200D\U2642' +emoji[man_golfing_medium_skin_tone]=$'\U1F3CC\U1F3FD\U200D\U2642\UFE0F' +emoji[man_golfing_medium_skin_tone_minimally]=$'\U1F3CC\U1F3FD\U200D\U2642' +emoji[man_golfing_medium_dark_skin_tone]=$'\U1F3CC\U1F3FE\U200D\U2642\UFE0F' +emoji[man_golfing_medium_dark_skin_tone_minimally]=$'\U1F3CC\U1F3FE\U200D\U2642' +emoji[man_golfing_dark_skin_tone]=$'\U1F3CC\U1F3FF\U200D\U2642\UFE0F' +emoji[man_golfing_dark_skin_tone_minimally]=$'\U1F3CC\U1F3FF\U200D\U2642' +emoji[woman_golfing]=$'\U1F3CC\UFE0F\U200D\U2640\UFE0F' +emoji[golfing_woman]=$'\U1F3CC\UFE0F\U200D\U2640\UFE0F' +emoji[woman_golfing_unqualified]=$'\U1F3CC\U200D\U2640\UFE0F' +emoji[woman_golfing_unqualified_1]=$'\U1F3CC\UFE0F\U200D\U2640' +emoji[woman_golfing_unqualified_2]=$'\U1F3CC\U200D\U2640' +emoji[woman_golfing_light_skin_tone]=$'\U1F3CC\U1F3FB\U200D\U2640\UFE0F' +emoji[woman_golfing_light_skin_tone_minimally]=$'\U1F3CC\U1F3FB\U200D\U2640' +emoji[woman_golfing_medium_light_skin_tone]=$'\U1F3CC\U1F3FC\U200D\U2640\UFE0F' +emoji[woman_golfing_medium_light_skin_tone_minimally]=$'\U1F3CC\U1F3FC\U200D\U2640' +emoji[woman_golfing_medium_skin_tone]=$'\U1F3CC\U1F3FD\U200D\U2640\UFE0F' +emoji[woman_golfing_medium_skin_tone_minimally]=$'\U1F3CC\U1F3FD\U200D\U2640' +emoji[woman_golfing_medium_dark_skin_tone]=$'\U1F3CC\U1F3FE\U200D\U2640\UFE0F' +emoji[woman_golfing_medium_dark_skin_tone_minimally]=$'\U1F3CC\U1F3FE\U200D\U2640' +emoji[woman_golfing_dark_skin_tone]=$'\U1F3CC\U1F3FF\U200D\U2640\UFE0F' +emoji[woman_golfing_dark_skin_tone_minimally]=$'\U1F3CC\U1F3FF\U200D\U2640' +emoji[person_surfing]=$'\U1F3C4' +emoji[surfer]=$'\U1F3C4' +emoji[person_surfing_light_skin_tone]=$'\U1F3C4\U1F3FB' +emoji[person_surfing_medium_light_skin_tone]=$'\U1F3C4\U1F3FC' +emoji[person_surfing_medium_skin_tone]=$'\U1F3C4\U1F3FD' +emoji[person_surfing_medium_dark_skin_tone]=$'\U1F3C4\U1F3FE' +emoji[person_surfing_dark_skin_tone]=$'\U1F3C4\U1F3FF' +emoji[man_surfing]=$'\U1F3C4\U200D\U2642\UFE0F' +emoji[man_surfing_minimally]=$'\U1F3C4\U200D\U2642' +emoji[surfing_man]=$'\U1F3C4\U200D\U2642' +emoji[man_surfing_light_skin_tone]=$'\U1F3C4\U1F3FB\U200D\U2642\UFE0F' +emoji[man_surfing_light_skin_tone_minimally]=$'\U1F3C4\U1F3FB\U200D\U2642' +emoji[man_surfing_medium_light_skin_tone]=$'\U1F3C4\U1F3FC\U200D\U2642\UFE0F' +emoji[man_surfing_medium_light_skin_tone_minimally]=$'\U1F3C4\U1F3FC\U200D\U2642' +emoji[man_surfing_medium_skin_tone]=$'\U1F3C4\U1F3FD\U200D\U2642\UFE0F' +emoji[man_surfing_medium_skin_tone_minimally]=$'\U1F3C4\U1F3FD\U200D\U2642' +emoji[man_surfing_medium_dark_skin_tone]=$'\U1F3C4\U1F3FE\U200D\U2642\UFE0F' +emoji[man_surfing_medium_dark_skin_tone_minimally]=$'\U1F3C4\U1F3FE\U200D\U2642' +emoji[man_surfing_dark_skin_tone]=$'\U1F3C4\U1F3FF\U200D\U2642\UFE0F' +emoji[man_surfing_dark_skin_tone_minimally]=$'\U1F3C4\U1F3FF\U200D\U2642' +emoji[woman_surfing]=$'\U1F3C4\U200D\U2640\UFE0F' +emoji[woman_surfing_minimally]=$'\U1F3C4\U200D\U2640' +emoji[surfing_woman]=$'\U1F3C4\U200D\U2640' +emoji[woman_surfing_light_skin_tone]=$'\U1F3C4\U1F3FB\U200D\U2640\UFE0F' +emoji[woman_surfing_light_skin_tone_minimally]=$'\U1F3C4\U1F3FB\U200D\U2640' +emoji[woman_surfing_medium_light_skin_tone]=$'\U1F3C4\U1F3FC\U200D\U2640\UFE0F' +emoji[woman_surfing_medium_light_skin_tone_minimally]=$'\U1F3C4\U1F3FC\U200D\U2640' +emoji[woman_surfing_medium_skin_tone]=$'\U1F3C4\U1F3FD\U200D\U2640\UFE0F' +emoji[woman_surfing_medium_skin_tone_minimally]=$'\U1F3C4\U1F3FD\U200D\U2640' +emoji[woman_surfing_medium_dark_skin_tone]=$'\U1F3C4\U1F3FE\U200D\U2640\UFE0F' +emoji[woman_surfing_medium_dark_skin_tone_minimally]=$'\U1F3C4\U1F3FE\U200D\U2640' +emoji[woman_surfing_dark_skin_tone]=$'\U1F3C4\U1F3FF\U200D\U2640\UFE0F' +emoji[woman_surfing_dark_skin_tone_minimally]=$'\U1F3C4\U1F3FF\U200D\U2640' +emoji[person_rowing_boat]=$'\U1F6A3' +emoji[rowboat]=$'\U1F6A3' +emoji[person_rowing_boat_light_skin_tone]=$'\U1F6A3\U1F3FB' +emoji[person_rowing_boat_medium_light_skin_tone]=$'\U1F6A3\U1F3FC' +emoji[person_rowing_boat_medium_skin_tone]=$'\U1F6A3\U1F3FD' +emoji[person_rowing_boat_medium_dark_skin_tone]=$'\U1F6A3\U1F3FE' +emoji[person_rowing_boat_dark_skin_tone]=$'\U1F6A3\U1F3FF' +emoji[man_rowing_boat]=$'\U1F6A3\U200D\U2642\UFE0F' +emoji[man_rowing_boat_minimally]=$'\U1F6A3\U200D\U2642' +emoji[rowing_man]=$'\U1F6A3\U200D\U2642' +emoji[man_rowing_boat_light_skin_tone]=$'\U1F6A3\U1F3FB\U200D\U2642\UFE0F' +emoji[man_rowing_boat_light_skin_tone_minimally]=$'\U1F6A3\U1F3FB\U200D\U2642' +emoji[man_rowing_boat_medium_light_skin_tone]=$'\U1F6A3\U1F3FC\U200D\U2642\UFE0F' +emoji[man_rowing_boat_medium_light_skin_tone_minimally]=$'\U1F6A3\U1F3FC\U200D\U2642' +emoji[man_rowing_boat_medium_skin_tone]=$'\U1F6A3\U1F3FD\U200D\U2642\UFE0F' +emoji[man_rowing_boat_medium_skin_tone_minimally]=$'\U1F6A3\U1F3FD\U200D\U2642' +emoji[man_rowing_boat_medium_dark_skin_tone]=$'\U1F6A3\U1F3FE\U200D\U2642\UFE0F' +emoji[man_rowing_boat_medium_dark_skin_tone_minimally]=$'\U1F6A3\U1F3FE\U200D\U2642' +emoji[man_rowing_boat_dark_skin_tone]=$'\U1F6A3\U1F3FF\U200D\U2642\UFE0F' +emoji[man_rowing_boat_dark_skin_tone_minimally]=$'\U1F6A3\U1F3FF\U200D\U2642' +emoji[woman_rowing_boat]=$'\U1F6A3\U200D\U2640\UFE0F' +emoji[woman_rowing_boat_minimally]=$'\U1F6A3\U200D\U2640' +emoji[rowing_woman]=$'\U1F6A3\U200D\U2640' +emoji[woman_rowing_boat_light_skin_tone]=$'\U1F6A3\U1F3FB\U200D\U2640\UFE0F' +emoji[woman_rowing_boat_light_skin_tone_minimally]=$'\U1F6A3\U1F3FB\U200D\U2640' +emoji[woman_rowing_boat_medium_light_skin_tone]=$'\U1F6A3\U1F3FC\U200D\U2640\UFE0F' +emoji[woman_rowing_boat_medium_light_skin_tone_minimally]=$'\U1F6A3\U1F3FC\U200D\U2640' +emoji[woman_rowing_boat_medium_skin_tone]=$'\U1F6A3\U1F3FD\U200D\U2640\UFE0F' +emoji[woman_rowing_boat_medium_skin_tone_minimally]=$'\U1F6A3\U1F3FD\U200D\U2640' +emoji[woman_rowing_boat_medium_dark_skin_tone]=$'\U1F6A3\U1F3FE\U200D\U2640\UFE0F' +emoji[woman_rowing_boat_medium_dark_skin_tone_minimally]=$'\U1F6A3\U1F3FE\U200D\U2640' +emoji[woman_rowing_boat_dark_skin_tone]=$'\U1F6A3\U1F3FF\U200D\U2640\UFE0F' +emoji[woman_rowing_boat_dark_skin_tone_minimally]=$'\U1F6A3\U1F3FF\U200D\U2640' +emoji[person_swimming]=$'\U1F3CA' +emoji[swimmer]=$'\U1F3CA' +emoji[person_swimming_light_skin_tone]=$'\U1F3CA\U1F3FB' +emoji[person_swimming_medium_light_skin_tone]=$'\U1F3CA\U1F3FC' +emoji[person_swimming_medium_skin_tone]=$'\U1F3CA\U1F3FD' +emoji[person_swimming_medium_dark_skin_tone]=$'\U1F3CA\U1F3FE' +emoji[person_swimming_dark_skin_tone]=$'\U1F3CA\U1F3FF' +emoji[man_swimming]=$'\U1F3CA\U200D\U2642\UFE0F' +emoji[man_swimming_minimally]=$'\U1F3CA\U200D\U2642' +emoji[swimming_man]=$'\U1F3CA\U200D\U2642' +emoji[man_swimming_light_skin_tone]=$'\U1F3CA\U1F3FB\U200D\U2642\UFE0F' +emoji[man_swimming_light_skin_tone_minimally]=$'\U1F3CA\U1F3FB\U200D\U2642' +emoji[man_swimming_medium_light_skin_tone]=$'\U1F3CA\U1F3FC\U200D\U2642\UFE0F' +emoji[man_swimming_medium_light_skin_tone_minimally]=$'\U1F3CA\U1F3FC\U200D\U2642' +emoji[man_swimming_medium_skin_tone]=$'\U1F3CA\U1F3FD\U200D\U2642\UFE0F' +emoji[man_swimming_medium_skin_tone_minimally]=$'\U1F3CA\U1F3FD\U200D\U2642' +emoji[man_swimming_medium_dark_skin_tone]=$'\U1F3CA\U1F3FE\U200D\U2642\UFE0F' +emoji[man_swimming_medium_dark_skin_tone_minimally]=$'\U1F3CA\U1F3FE\U200D\U2642' +emoji[man_swimming_dark_skin_tone]=$'\U1F3CA\U1F3FF\U200D\U2642\UFE0F' +emoji[man_swimming_dark_skin_tone_minimally]=$'\U1F3CA\U1F3FF\U200D\U2642' +emoji[woman_swimming]=$'\U1F3CA\U200D\U2640\UFE0F' +emoji[woman_swimming_minimally]=$'\U1F3CA\U200D\U2640' +emoji[swimming_woman]=$'\U1F3CA\U200D\U2640' +emoji[woman_swimming_light_skin_tone]=$'\U1F3CA\U1F3FB\U200D\U2640\UFE0F' +emoji[woman_swimming_light_skin_tone_minimally]=$'\U1F3CA\U1F3FB\U200D\U2640' +emoji[woman_swimming_medium_light_skin_tone]=$'\U1F3CA\U1F3FC\U200D\U2640\UFE0F' +emoji[woman_swimming_medium_light_skin_tone_minimally]=$'\U1F3CA\U1F3FC\U200D\U2640' +emoji[woman_swimming_medium_skin_tone]=$'\U1F3CA\U1F3FD\U200D\U2640\UFE0F' +emoji[woman_swimming_medium_skin_tone_minimally]=$'\U1F3CA\U1F3FD\U200D\U2640' +emoji[woman_swimming_medium_dark_skin_tone]=$'\U1F3CA\U1F3FE\U200D\U2640\UFE0F' +emoji[woman_swimming_medium_dark_skin_tone_minimally]=$'\U1F3CA\U1F3FE\U200D\U2640' +emoji[woman_swimming_dark_skin_tone]=$'\U1F3CA\U1F3FF\U200D\U2640\UFE0F' +emoji[woman_swimming_dark_skin_tone_minimally]=$'\U1F3CA\U1F3FF\U200D\U2640' +emoji[person_bouncing_ball]=$'\U26F9\UFE0F' +emoji[person_bouncing_ball_unqualified]=$'\U26F9' +emoji[bouncing_ball_person]=$'\U26F9' +emoji[person_bouncing_ball_light_skin_tone]=$'\U26F9\U1F3FB' +emoji[person_bouncing_ball_medium_light_skin_tone]=$'\U26F9\U1F3FC' +emoji[person_bouncing_ball_medium_skin_tone]=$'\U26F9\U1F3FD' +emoji[person_bouncing_ball_medium_dark_skin_tone]=$'\U26F9\U1F3FE' +emoji[person_bouncing_ball_dark_skin_tone]=$'\U26F9\U1F3FF' +emoji[man_bouncing_ball]=$'\U26F9\UFE0F\U200D\U2642\UFE0F' +emoji[bouncing_ball_man]=$'\U26F9\UFE0F\U200D\U2642\UFE0F' +emoji[basketball_man]=$'\U26F9\UFE0F\U200D\U2642\UFE0F' +emoji[man_bouncing_ball_unqualified]=$'\U26F9\U200D\U2642\UFE0F' +emoji[man_bouncing_ball_unqualified_1]=$'\U26F9\UFE0F\U200D\U2642' +emoji[man_bouncing_ball_unqualified_2]=$'\U26F9\U200D\U2642' +emoji[man_bouncing_ball_light_skin_tone]=$'\U26F9\U1F3FB\U200D\U2642\UFE0F' +emoji[man_bouncing_ball_light_skin_tone_minimally]=$'\U26F9\U1F3FB\U200D\U2642' +emoji[man_bouncing_ball_medium_light_skin_tone]=$'\U26F9\U1F3FC\U200D\U2642\UFE0F' +emoji[man_bouncing_ball_medium_light_skin_tone_minimally]=$'\U26F9\U1F3FC\U200D\U2642' +emoji[man_bouncing_ball_medium_skin_tone]=$'\U26F9\U1F3FD\U200D\U2642\UFE0F' +emoji[man_bouncing_ball_medium_skin_tone_minimally]=$'\U26F9\U1F3FD\U200D\U2642' +emoji[man_bouncing_ball_medium_dark_skin_tone]=$'\U26F9\U1F3FE\U200D\U2642\UFE0F' +emoji[man_bouncing_ball_medium_dark_skin_tone_minimally]=$'\U26F9\U1F3FE\U200D\U2642' +emoji[man_bouncing_ball_dark_skin_tone]=$'\U26F9\U1F3FF\U200D\U2642\UFE0F' +emoji[man_bouncing_ball_dark_skin_tone_minimally]=$'\U26F9\U1F3FF\U200D\U2642' +emoji[woman_bouncing_ball]=$'\U26F9\UFE0F\U200D\U2640\UFE0F' +emoji[bouncing_ball_woman]=$'\U26F9\UFE0F\U200D\U2640\UFE0F' +emoji[basketball_woman]=$'\U26F9\UFE0F\U200D\U2640\UFE0F' +emoji[woman_bouncing_ball_unqualified]=$'\U26F9\U200D\U2640\UFE0F' +emoji[woman_bouncing_ball_unqualified_1]=$'\U26F9\UFE0F\U200D\U2640' +emoji[woman_bouncing_ball_unqualified_2]=$'\U26F9\U200D\U2640' +emoji[woman_bouncing_ball_light_skin_tone]=$'\U26F9\U1F3FB\U200D\U2640\UFE0F' +emoji[woman_bouncing_ball_light_skin_tone_minimally]=$'\U26F9\U1F3FB\U200D\U2640' +emoji[woman_bouncing_ball_medium_light_skin_tone]=$'\U26F9\U1F3FC\U200D\U2640\UFE0F' +emoji[woman_bouncing_ball_medium_light_skin_tone_minimally]=$'\U26F9\U1F3FC\U200D\U2640' +emoji[woman_bouncing_ball_medium_skin_tone]=$'\U26F9\U1F3FD\U200D\U2640\UFE0F' +emoji[woman_bouncing_ball_medium_skin_tone_minimally]=$'\U26F9\U1F3FD\U200D\U2640' +emoji[woman_bouncing_ball_medium_dark_skin_tone]=$'\U26F9\U1F3FE\U200D\U2640\UFE0F' +emoji[woman_bouncing_ball_medium_dark_skin_tone_minimally]=$'\U26F9\U1F3FE\U200D\U2640' +emoji[woman_bouncing_ball_dark_skin_tone]=$'\U26F9\U1F3FF\U200D\U2640\UFE0F' +emoji[woman_bouncing_ball_dark_skin_tone_minimally]=$'\U26F9\U1F3FF\U200D\U2640' +emoji[person_lifting_weights]=$'\U1F3CB\UFE0F' +emoji[person_lifting_weights_unqualified]=$'\U1F3CB' +emoji[weight_lifting]=$'\U1F3CB' +emoji[person_lifting_weights_light_skin_tone]=$'\U1F3CB\U1F3FB' +emoji[person_lifting_weights_medium_light_skin_tone]=$'\U1F3CB\U1F3FC' +emoji[person_lifting_weights_medium_skin_tone]=$'\U1F3CB\U1F3FD' +emoji[person_lifting_weights_medium_dark_skin_tone]=$'\U1F3CB\U1F3FE' +emoji[person_lifting_weights_dark_skin_tone]=$'\U1F3CB\U1F3FF' +emoji[man_lifting_weights]=$'\U1F3CB\UFE0F\U200D\U2642\UFE0F' +emoji[weight_lifting_man]=$'\U1F3CB\UFE0F\U200D\U2642\UFE0F' +emoji[man_lifting_weights_unqualified]=$'\U1F3CB\U200D\U2642\UFE0F' +emoji[man_lifting_weights_unqualified_1]=$'\U1F3CB\UFE0F\U200D\U2642' +emoji[man_lifting_weights_unqualified_2]=$'\U1F3CB\U200D\U2642' +emoji[man_lifting_weights_light_skin_tone]=$'\U1F3CB\U1F3FB\U200D\U2642\UFE0F' +emoji[man_lifting_weights_light_skin_tone_minimally]=$'\U1F3CB\U1F3FB\U200D\U2642' +emoji[man_lifting_weights_medium_light_skin_tone]=$'\U1F3CB\U1F3FC\U200D\U2642\UFE0F' +emoji[man_lifting_weights_medium_light_skin_tone_minimally]=$'\U1F3CB\U1F3FC\U200D\U2642' +emoji[man_lifting_weights_medium_skin_tone]=$'\U1F3CB\U1F3FD\U200D\U2642\UFE0F' +emoji[man_lifting_weights_medium_skin_tone_minimally]=$'\U1F3CB\U1F3FD\U200D\U2642' +emoji[man_lifting_weights_medium_dark_skin_tone]=$'\U1F3CB\U1F3FE\U200D\U2642\UFE0F' +emoji[man_lifting_weights_medium_dark_skin_tone_minimally]=$'\U1F3CB\U1F3FE\U200D\U2642' +emoji[man_lifting_weights_dark_skin_tone]=$'\U1F3CB\U1F3FF\U200D\U2642\UFE0F' +emoji[man_lifting_weights_dark_skin_tone_minimally]=$'\U1F3CB\U1F3FF\U200D\U2642' +emoji[woman_lifting_weights]=$'\U1F3CB\UFE0F\U200D\U2640\UFE0F' +emoji[weight_lifting_woman]=$'\U1F3CB\UFE0F\U200D\U2640\UFE0F' +emoji[woman_lifting_weights_unqualified]=$'\U1F3CB\U200D\U2640\UFE0F' +emoji[woman_lifting_weights_unqualified_1]=$'\U1F3CB\UFE0F\U200D\U2640' +emoji[woman_lifting_weights_unqualified_2]=$'\U1F3CB\U200D\U2640' +emoji[woman_lifting_weights_light_skin_tone]=$'\U1F3CB\U1F3FB\U200D\U2640\UFE0F' +emoji[woman_lifting_weights_light_skin_tone_minimally]=$'\U1F3CB\U1F3FB\U200D\U2640' +emoji[woman_lifting_weights_medium_light_skin_tone]=$'\U1F3CB\U1F3FC\U200D\U2640\UFE0F' +emoji[woman_lifting_weights_medium_light_skin_tone_minimally]=$'\U1F3CB\U1F3FC\U200D\U2640' +emoji[woman_lifting_weights_medium_skin_tone]=$'\U1F3CB\U1F3FD\U200D\U2640\UFE0F' +emoji[woman_lifting_weights_medium_skin_tone_minimally]=$'\U1F3CB\U1F3FD\U200D\U2640' +emoji[woman_lifting_weights_medium_dark_skin_tone]=$'\U1F3CB\U1F3FE\U200D\U2640\UFE0F' +emoji[woman_lifting_weights_medium_dark_skin_tone_minimally]=$'\U1F3CB\U1F3FE\U200D\U2640' +emoji[woman_lifting_weights_dark_skin_tone]=$'\U1F3CB\U1F3FF\U200D\U2640\UFE0F' +emoji[woman_lifting_weights_dark_skin_tone_minimally]=$'\U1F3CB\U1F3FF\U200D\U2640' +emoji[person_biking]=$'\U1F6B4' +emoji[bicyclist]=$'\U1F6B4' +emoji[person_biking_light_skin_tone]=$'\U1F6B4\U1F3FB' +emoji[person_biking_medium_light_skin_tone]=$'\U1F6B4\U1F3FC' +emoji[person_biking_medium_skin_tone]=$'\U1F6B4\U1F3FD' +emoji[person_biking_medium_dark_skin_tone]=$'\U1F6B4\U1F3FE' +emoji[person_biking_dark_skin_tone]=$'\U1F6B4\U1F3FF' +emoji[man_biking]=$'\U1F6B4\U200D\U2642\UFE0F' +emoji[man_biking_minimally]=$'\U1F6B4\U200D\U2642' +emoji[biking_man]=$'\U1F6B4\U200D\U2642' +emoji[man_biking_light_skin_tone]=$'\U1F6B4\U1F3FB\U200D\U2642\UFE0F' +emoji[man_biking_light_skin_tone_minimally]=$'\U1F6B4\U1F3FB\U200D\U2642' +emoji[man_biking_medium_light_skin_tone]=$'\U1F6B4\U1F3FC\U200D\U2642\UFE0F' +emoji[man_biking_medium_light_skin_tone_minimally]=$'\U1F6B4\U1F3FC\U200D\U2642' +emoji[man_biking_medium_skin_tone]=$'\U1F6B4\U1F3FD\U200D\U2642\UFE0F' +emoji[man_biking_medium_skin_tone_minimally]=$'\U1F6B4\U1F3FD\U200D\U2642' +emoji[man_biking_medium_dark_skin_tone]=$'\U1F6B4\U1F3FE\U200D\U2642\UFE0F' +emoji[man_biking_medium_dark_skin_tone_minimally]=$'\U1F6B4\U1F3FE\U200D\U2642' +emoji[man_biking_dark_skin_tone]=$'\U1F6B4\U1F3FF\U200D\U2642\UFE0F' +emoji[man_biking_dark_skin_tone_minimally]=$'\U1F6B4\U1F3FF\U200D\U2642' +emoji[woman_biking]=$'\U1F6B4\U200D\U2640\UFE0F' +emoji[woman_biking_minimally]=$'\U1F6B4\U200D\U2640' +emoji[biking_woman]=$'\U1F6B4\U200D\U2640' +emoji[woman_biking_light_skin_tone]=$'\U1F6B4\U1F3FB\U200D\U2640\UFE0F' +emoji[woman_biking_light_skin_tone_minimally]=$'\U1F6B4\U1F3FB\U200D\U2640' +emoji[woman_biking_medium_light_skin_tone]=$'\U1F6B4\U1F3FC\U200D\U2640\UFE0F' +emoji[woman_biking_medium_light_skin_tone_minimally]=$'\U1F6B4\U1F3FC\U200D\U2640' +emoji[woman_biking_medium_skin_tone]=$'\U1F6B4\U1F3FD\U200D\U2640\UFE0F' +emoji[woman_biking_medium_skin_tone_minimally]=$'\U1F6B4\U1F3FD\U200D\U2640' +emoji[woman_biking_medium_dark_skin_tone]=$'\U1F6B4\U1F3FE\U200D\U2640\UFE0F' +emoji[woman_biking_medium_dark_skin_tone_minimally]=$'\U1F6B4\U1F3FE\U200D\U2640' +emoji[woman_biking_dark_skin_tone]=$'\U1F6B4\U1F3FF\U200D\U2640\UFE0F' +emoji[woman_biking_dark_skin_tone_minimally]=$'\U1F6B4\U1F3FF\U200D\U2640' +emoji[person_mountain_biking]=$'\U1F6B5' +emoji[mountain_bicyclist]=$'\U1F6B5' +emoji[person_mountain_biking_light_skin_tone]=$'\U1F6B5\U1F3FB' +emoji[person_mountain_biking_medium_light_skin_tone]=$'\U1F6B5\U1F3FC' +emoji[person_mountain_biking_medium_skin_tone]=$'\U1F6B5\U1F3FD' +emoji[person_mountain_biking_medium_dark_skin_tone]=$'\U1F6B5\U1F3FE' +emoji[person_mountain_biking_dark_skin_tone]=$'\U1F6B5\U1F3FF' +emoji[man_mountain_biking]=$'\U1F6B5\U200D\U2642\UFE0F' +emoji[man_mountain_biking_minimally]=$'\U1F6B5\U200D\U2642' +emoji[mountain_biking_man]=$'\U1F6B5\U200D\U2642' +emoji[man_mountain_biking_light_skin_tone]=$'\U1F6B5\U1F3FB\U200D\U2642\UFE0F' +emoji[man_mountain_biking_light_skin_tone_minimally]=$'\U1F6B5\U1F3FB\U200D\U2642' +emoji[man_mountain_biking_medium_light_skin_tone]=$'\U1F6B5\U1F3FC\U200D\U2642\UFE0F' +emoji[man_mountain_biking_medium_light_skin_tone_minimally]=$'\U1F6B5\U1F3FC\U200D\U2642' +emoji[man_mountain_biking_medium_skin_tone]=$'\U1F6B5\U1F3FD\U200D\U2642\UFE0F' +emoji[man_mountain_biking_medium_skin_tone_minimally]=$'\U1F6B5\U1F3FD\U200D\U2642' +emoji[man_mountain_biking_medium_dark_skin_tone]=$'\U1F6B5\U1F3FE\U200D\U2642\UFE0F' +emoji[man_mountain_biking_medium_dark_skin_tone_minimally]=$'\U1F6B5\U1F3FE\U200D\U2642' +emoji[man_mountain_biking_dark_skin_tone]=$'\U1F6B5\U1F3FF\U200D\U2642\UFE0F' +emoji[man_mountain_biking_dark_skin_tone_minimally]=$'\U1F6B5\U1F3FF\U200D\U2642' +emoji[woman_mountain_biking]=$'\U1F6B5\U200D\U2640\UFE0F' +emoji[woman_mountain_biking_minimally]=$'\U1F6B5\U200D\U2640' +emoji[mountain_biking_woman]=$'\U1F6B5\U200D\U2640' +emoji[woman_mountain_biking_light_skin_tone]=$'\U1F6B5\U1F3FB\U200D\U2640\UFE0F' +emoji[woman_mountain_biking_light_skin_tone_minimally]=$'\U1F6B5\U1F3FB\U200D\U2640' +emoji[woman_mountain_biking_medium_light_skin_tone]=$'\U1F6B5\U1F3FC\U200D\U2640\UFE0F' +emoji[woman_mountain_biking_medium_light_skin_tone_minimally]=$'\U1F6B5\U1F3FC\U200D\U2640' +emoji[woman_mountain_biking_medium_skin_tone]=$'\U1F6B5\U1F3FD\U200D\U2640\UFE0F' +emoji[woman_mountain_biking_medium_skin_tone_minimally]=$'\U1F6B5\U1F3FD\U200D\U2640' +emoji[woman_mountain_biking_medium_dark_skin_tone]=$'\U1F6B5\U1F3FE\U200D\U2640\UFE0F' +emoji[woman_mountain_biking_medium_dark_skin_tone_minimally]=$'\U1F6B5\U1F3FE\U200D\U2640' +emoji[woman_mountain_biking_dark_skin_tone]=$'\U1F6B5\U1F3FF\U200D\U2640\UFE0F' +emoji[woman_mountain_biking_dark_skin_tone_minimally]=$'\U1F6B5\U1F3FF\U200D\U2640' +emoji[person_cartwheeling]=$'\U1F938' +emoji[cartwheeling]=$'\U1F938' +emoji[person_cartwheeling_light_skin_tone]=$'\U1F938\U1F3FB' +emoji[person_cartwheeling_medium_light_skin_tone]=$'\U1F938\U1F3FC' +emoji[person_cartwheeling_medium_skin_tone]=$'\U1F938\U1F3FD' +emoji[person_cartwheeling_medium_dark_skin_tone]=$'\U1F938\U1F3FE' +emoji[person_cartwheeling_dark_skin_tone]=$'\U1F938\U1F3FF' +emoji[man_cartwheeling]=$'\U1F938\U200D\U2642\UFE0F' +emoji[man_cartwheeling_minimally]=$'\U1F938\U200D\U2642' +emoji[man_cartwheeling_light_skin_tone]=$'\U1F938\U1F3FB\U200D\U2642\UFE0F' +emoji[man_cartwheeling_light_skin_tone_minimally]=$'\U1F938\U1F3FB\U200D\U2642' +emoji[man_cartwheeling_medium_light_skin_tone]=$'\U1F938\U1F3FC\U200D\U2642\UFE0F' +emoji[man_cartwheeling_medium_light_skin_tone_minimally]=$'\U1F938\U1F3FC\U200D\U2642' +emoji[man_cartwheeling_medium_skin_tone]=$'\U1F938\U1F3FD\U200D\U2642\UFE0F' +emoji[man_cartwheeling_medium_skin_tone_minimally]=$'\U1F938\U1F3FD\U200D\U2642' +emoji[man_cartwheeling_medium_dark_skin_tone]=$'\U1F938\U1F3FE\U200D\U2642\UFE0F' +emoji[man_cartwheeling_medium_dark_skin_tone_minimally]=$'\U1F938\U1F3FE\U200D\U2642' +emoji[man_cartwheeling_dark_skin_tone]=$'\U1F938\U1F3FF\U200D\U2642\UFE0F' +emoji[man_cartwheeling_dark_skin_tone_minimally]=$'\U1F938\U1F3FF\U200D\U2642' +emoji[woman_cartwheeling]=$'\U1F938\U200D\U2640\UFE0F' +emoji[woman_cartwheeling_minimally]=$'\U1F938\U200D\U2640' +emoji[woman_cartwheeling_light_skin_tone]=$'\U1F938\U1F3FB\U200D\U2640\UFE0F' +emoji[woman_cartwheeling_light_skin_tone_minimally]=$'\U1F938\U1F3FB\U200D\U2640' +emoji[woman_cartwheeling_medium_light_skin_tone]=$'\U1F938\U1F3FC\U200D\U2640\UFE0F' +emoji[woman_cartwheeling_medium_light_skin_tone_minimally]=$'\U1F938\U1F3FC\U200D\U2640' +emoji[woman_cartwheeling_medium_skin_tone]=$'\U1F938\U1F3FD\U200D\U2640\UFE0F' +emoji[woman_cartwheeling_medium_skin_tone_minimally]=$'\U1F938\U1F3FD\U200D\U2640' +emoji[woman_cartwheeling_medium_dark_skin_tone]=$'\U1F938\U1F3FE\U200D\U2640\UFE0F' +emoji[woman_cartwheeling_medium_dark_skin_tone_minimally]=$'\U1F938\U1F3FE\U200D\U2640' +emoji[woman_cartwheeling_dark_skin_tone]=$'\U1F938\U1F3FF\U200D\U2640\UFE0F' +emoji[woman_cartwheeling_dark_skin_tone_minimally]=$'\U1F938\U1F3FF\U200D\U2640' +emoji[people_wrestling]=$'\U1F93C' +emoji[wrestling]=$'\U1F93C' +emoji[men_wrestling]=$'\U1F93C\U200D\U2642\UFE0F' +emoji[men_wrestling_minimally]=$'\U1F93C\U200D\U2642' +emoji[women_wrestling]=$'\U1F93C\U200D\U2640\UFE0F' +emoji[women_wrestling_minimally]=$'\U1F93C\U200D\U2640' +emoji[person_playing_water_polo]=$'\U1F93D' +emoji[water_polo]=$'\U1F93D' +emoji[person_playing_water_polo_light_skin_tone]=$'\U1F93D\U1F3FB' +emoji[person_playing_water_polo_medium_light_skin_tone]=$'\U1F93D\U1F3FC' +emoji[person_playing_water_polo_medium_skin_tone]=$'\U1F93D\U1F3FD' +emoji[person_playing_water_polo_medium_dark_skin_tone]=$'\U1F93D\U1F3FE' +emoji[person_playing_water_polo_dark_skin_tone]=$'\U1F93D\U1F3FF' +emoji[man_playing_water_polo]=$'\U1F93D\U200D\U2642\UFE0F' +emoji[man_playing_water_polo_minimally]=$'\U1F93D\U200D\U2642' +emoji[man_playing_water_polo_light_skin_tone]=$'\U1F93D\U1F3FB\U200D\U2642\UFE0F' +emoji[man_playing_water_polo_light_skin_tone_minimally]=$'\U1F93D\U1F3FB\U200D\U2642' +emoji[man_playing_water_polo_medium_light_skin_tone]=$'\U1F93D\U1F3FC\U200D\U2642\UFE0F' +emoji[man_playing_water_polo_medium_light_skin_tone_minimally]=$'\U1F93D\U1F3FC\U200D\U2642' +emoji[man_playing_water_polo_medium_skin_tone]=$'\U1F93D\U1F3FD\U200D\U2642\UFE0F' +emoji[man_playing_water_polo_medium_skin_tone_minimally]=$'\U1F93D\U1F3FD\U200D\U2642' +emoji[man_playing_water_polo_medium_dark_skin_tone]=$'\U1F93D\U1F3FE\U200D\U2642\UFE0F' +emoji[man_playing_water_polo_medium_dark_skin_tone_minimally]=$'\U1F93D\U1F3FE\U200D\U2642' +emoji[man_playing_water_polo_dark_skin_tone]=$'\U1F93D\U1F3FF\U200D\U2642\UFE0F' +emoji[man_playing_water_polo_dark_skin_tone_minimally]=$'\U1F93D\U1F3FF\U200D\U2642' +emoji[woman_playing_water_polo]=$'\U1F93D\U200D\U2640\UFE0F' +emoji[woman_playing_water_polo_minimally]=$'\U1F93D\U200D\U2640' +emoji[woman_playing_water_polo_light_skin_tone]=$'\U1F93D\U1F3FB\U200D\U2640\UFE0F' +emoji[woman_playing_water_polo_light_skin_tone_minimally]=$'\U1F93D\U1F3FB\U200D\U2640' +emoji[woman_playing_water_polo_medium_light_skin_tone]=$'\U1F93D\U1F3FC\U200D\U2640\UFE0F' +emoji[woman_playing_water_polo_medium_light_skin_tone_minimally]=$'\U1F93D\U1F3FC\U200D\U2640' +emoji[woman_playing_water_polo_medium_skin_tone]=$'\U1F93D\U1F3FD\U200D\U2640\UFE0F' +emoji[woman_playing_water_polo_medium_skin_tone_minimally]=$'\U1F93D\U1F3FD\U200D\U2640' +emoji[woman_playing_water_polo_medium_dark_skin_tone]=$'\U1F93D\U1F3FE\U200D\U2640\UFE0F' +emoji[woman_playing_water_polo_medium_dark_skin_tone_minimally]=$'\U1F93D\U1F3FE\U200D\U2640' +emoji[woman_playing_water_polo_dark_skin_tone]=$'\U1F93D\U1F3FF\U200D\U2640\UFE0F' +emoji[woman_playing_water_polo_dark_skin_tone_minimally]=$'\U1F93D\U1F3FF\U200D\U2640' +emoji[person_playing_handball]=$'\U1F93E' +emoji[handball_person]=$'\U1F93E' +emoji[person_playing_handball_light_skin_tone]=$'\U1F93E\U1F3FB' +emoji[person_playing_handball_medium_light_skin_tone]=$'\U1F93E\U1F3FC' +emoji[person_playing_handball_medium_skin_tone]=$'\U1F93E\U1F3FD' +emoji[person_playing_handball_medium_dark_skin_tone]=$'\U1F93E\U1F3FE' +emoji[person_playing_handball_dark_skin_tone]=$'\U1F93E\U1F3FF' +emoji[man_playing_handball]=$'\U1F93E\U200D\U2642\UFE0F' +emoji[man_playing_handball_minimally]=$'\U1F93E\U200D\U2642' +emoji[man_playing_handball_light_skin_tone]=$'\U1F93E\U1F3FB\U200D\U2642\UFE0F' +emoji[man_playing_handball_light_skin_tone_minimally]=$'\U1F93E\U1F3FB\U200D\U2642' +emoji[man_playing_handball_medium_light_skin_tone]=$'\U1F93E\U1F3FC\U200D\U2642\UFE0F' +emoji[man_playing_handball_medium_light_skin_tone_minimally]=$'\U1F93E\U1F3FC\U200D\U2642' +emoji[man_playing_handball_medium_skin_tone]=$'\U1F93E\U1F3FD\U200D\U2642\UFE0F' +emoji[man_playing_handball_medium_skin_tone_minimally]=$'\U1F93E\U1F3FD\U200D\U2642' +emoji[man_playing_handball_medium_dark_skin_tone]=$'\U1F93E\U1F3FE\U200D\U2642\UFE0F' +emoji[man_playing_handball_medium_dark_skin_tone_minimally]=$'\U1F93E\U1F3FE\U200D\U2642' +emoji[man_playing_handball_dark_skin_tone]=$'\U1F93E\U1F3FF\U200D\U2642\UFE0F' +emoji[man_playing_handball_dark_skin_tone_minimally]=$'\U1F93E\U1F3FF\U200D\U2642' +emoji[woman_playing_handball]=$'\U1F93E\U200D\U2640\UFE0F' +emoji[woman_playing_handball_minimally]=$'\U1F93E\U200D\U2640' +emoji[woman_playing_handball_light_skin_tone]=$'\U1F93E\U1F3FB\U200D\U2640\UFE0F' +emoji[woman_playing_handball_light_skin_tone_minimally]=$'\U1F93E\U1F3FB\U200D\U2640' +emoji[woman_playing_handball_medium_light_skin_tone]=$'\U1F93E\U1F3FC\U200D\U2640\UFE0F' +emoji[woman_playing_handball_medium_light_skin_tone_minimally]=$'\U1F93E\U1F3FC\U200D\U2640' +emoji[woman_playing_handball_medium_skin_tone]=$'\U1F93E\U1F3FD\U200D\U2640\UFE0F' +emoji[woman_playing_handball_medium_skin_tone_minimally]=$'\U1F93E\U1F3FD\U200D\U2640' +emoji[woman_playing_handball_medium_dark_skin_tone]=$'\U1F93E\U1F3FE\U200D\U2640\UFE0F' +emoji[woman_playing_handball_medium_dark_skin_tone_minimally]=$'\U1F93E\U1F3FE\U200D\U2640' +emoji[woman_playing_handball_dark_skin_tone]=$'\U1F93E\U1F3FF\U200D\U2640\UFE0F' +emoji[woman_playing_handball_dark_skin_tone_minimally]=$'\U1F93E\U1F3FF\U200D\U2640' +emoji[person_juggling]=$'\U1F939' +emoji[juggling_person]=$'\U1F939' +emoji[person_juggling_light_skin_tone]=$'\U1F939\U1F3FB' +emoji[person_juggling_medium_light_skin_tone]=$'\U1F939\U1F3FC' +emoji[person_juggling_medium_skin_tone]=$'\U1F939\U1F3FD' +emoji[person_juggling_medium_dark_skin_tone]=$'\U1F939\U1F3FE' +emoji[person_juggling_dark_skin_tone]=$'\U1F939\U1F3FF' +emoji[man_juggling]=$'\U1F939\U200D\U2642\UFE0F' +emoji[man_juggling_minimally]=$'\U1F939\U200D\U2642' +emoji[man_juggling_light_skin_tone]=$'\U1F939\U1F3FB\U200D\U2642\UFE0F' +emoji[man_juggling_light_skin_tone_minimally]=$'\U1F939\U1F3FB\U200D\U2642' +emoji[man_juggling_medium_light_skin_tone]=$'\U1F939\U1F3FC\U200D\U2642\UFE0F' +emoji[man_juggling_medium_light_skin_tone_minimally]=$'\U1F939\U1F3FC\U200D\U2642' +emoji[man_juggling_medium_skin_tone]=$'\U1F939\U1F3FD\U200D\U2642\UFE0F' +emoji[man_juggling_medium_skin_tone_minimally]=$'\U1F939\U1F3FD\U200D\U2642' +emoji[man_juggling_medium_dark_skin_tone]=$'\U1F939\U1F3FE\U200D\U2642\UFE0F' +emoji[man_juggling_medium_dark_skin_tone_minimally]=$'\U1F939\U1F3FE\U200D\U2642' +emoji[man_juggling_dark_skin_tone]=$'\U1F939\U1F3FF\U200D\U2642\UFE0F' +emoji[man_juggling_dark_skin_tone_minimally]=$'\U1F939\U1F3FF\U200D\U2642' +emoji[woman_juggling]=$'\U1F939\U200D\U2640\UFE0F' +emoji[woman_juggling_minimally]=$'\U1F939\U200D\U2640' +emoji[woman_juggling_light_skin_tone]=$'\U1F939\U1F3FB\U200D\U2640\UFE0F' +emoji[woman_juggling_light_skin_tone_minimally]=$'\U1F939\U1F3FB\U200D\U2640' +emoji[woman_juggling_medium_light_skin_tone]=$'\U1F939\U1F3FC\U200D\U2640\UFE0F' +emoji[woman_juggling_medium_light_skin_tone_minimally]=$'\U1F939\U1F3FC\U200D\U2640' +emoji[woman_juggling_medium_skin_tone]=$'\U1F939\U1F3FD\U200D\U2640\UFE0F' +emoji[woman_juggling_medium_skin_tone_minimally]=$'\U1F939\U1F3FD\U200D\U2640' +emoji[woman_juggling_medium_dark_skin_tone]=$'\U1F939\U1F3FE\U200D\U2640\UFE0F' +emoji[woman_juggling_medium_dark_skin_tone_minimally]=$'\U1F939\U1F3FE\U200D\U2640' +emoji[woman_juggling_dark_skin_tone]=$'\U1F939\U1F3FF\U200D\U2640\UFE0F' +emoji[woman_juggling_dark_skin_tone_minimally]=$'\U1F939\U1F3FF\U200D\U2640' +emoji[person_in_lotus_position]=$'\U1F9D8' +emoji[lotus_position]=$'\U1F9D8' +emoji[person_in_lotus_position_light_skin_tone]=$'\U1F9D8\U1F3FB' +emoji[person_in_lotus_position_medium_light_skin_tone]=$'\U1F9D8\U1F3FC' +emoji[person_in_lotus_position_medium_skin_tone]=$'\U1F9D8\U1F3FD' +emoji[person_in_lotus_position_medium_dark_skin_tone]=$'\U1F9D8\U1F3FE' +emoji[person_in_lotus_position_dark_skin_tone]=$'\U1F9D8\U1F3FF' +emoji[man_in_lotus_position]=$'\U1F9D8\U200D\U2642\UFE0F' +emoji[man_in_lotus_position_minimally]=$'\U1F9D8\U200D\U2642' +emoji[lotus_position_man]=$'\U1F9D8\U200D\U2642' +emoji[man_in_lotus_position_light_skin_tone]=$'\U1F9D8\U1F3FB\U200D\U2642\UFE0F' +emoji[man_in_lotus_position_light_skin_tone_minimally]=$'\U1F9D8\U1F3FB\U200D\U2642' +emoji[man_in_lotus_position_medium_light_skin_tone]=$'\U1F9D8\U1F3FC\U200D\U2642\UFE0F' +emoji[man_in_lotus_position_medium_light_skin_tone_minimally]=$'\U1F9D8\U1F3FC\U200D\U2642' +emoji[man_in_lotus_position_medium_skin_tone]=$'\U1F9D8\U1F3FD\U200D\U2642\UFE0F' +emoji[man_in_lotus_position_medium_skin_tone_minimally]=$'\U1F9D8\U1F3FD\U200D\U2642' +emoji[man_in_lotus_position_medium_dark_skin_tone]=$'\U1F9D8\U1F3FE\U200D\U2642\UFE0F' +emoji[man_in_lotus_position_medium_dark_skin_tone_minimally]=$'\U1F9D8\U1F3FE\U200D\U2642' +emoji[man_in_lotus_position_dark_skin_tone]=$'\U1F9D8\U1F3FF\U200D\U2642\UFE0F' +emoji[man_in_lotus_position_dark_skin_tone_minimally]=$'\U1F9D8\U1F3FF\U200D\U2642' +emoji[woman_in_lotus_position]=$'\U1F9D8\U200D\U2640\UFE0F' +emoji[woman_in_lotus_position_minimally]=$'\U1F9D8\U200D\U2640' +emoji[lotus_position_woman]=$'\U1F9D8\U200D\U2640' +emoji[woman_in_lotus_position_light_skin_tone]=$'\U1F9D8\U1F3FB\U200D\U2640\UFE0F' +emoji[woman_in_lotus_position_light_skin_tone_minimally]=$'\U1F9D8\U1F3FB\U200D\U2640' +emoji[woman_in_lotus_position_medium_light_skin_tone]=$'\U1F9D8\U1F3FC\U200D\U2640\UFE0F' +emoji[woman_in_lotus_position_medium_light_skin_tone_minimally]=$'\U1F9D8\U1F3FC\U200D\U2640' +emoji[woman_in_lotus_position_medium_skin_tone]=$'\U1F9D8\U1F3FD\U200D\U2640\UFE0F' +emoji[woman_in_lotus_position_medium_skin_tone_minimally]=$'\U1F9D8\U1F3FD\U200D\U2640' +emoji[woman_in_lotus_position_medium_dark_skin_tone]=$'\U1F9D8\U1F3FE\U200D\U2640\UFE0F' +emoji[woman_in_lotus_position_medium_dark_skin_tone_minimally]=$'\U1F9D8\U1F3FE\U200D\U2640' +emoji[woman_in_lotus_position_dark_skin_tone]=$'\U1F9D8\U1F3FF\U200D\U2640\UFE0F' +emoji[woman_in_lotus_position_dark_skin_tone_minimally]=$'\U1F9D8\U1F3FF\U200D\U2640' +emoji[person_taking_bath]=$'\U1F6C0' +emoji[bath]=$'\U1F6C0' +emoji[person_taking_bath_light_skin_tone]=$'\U1F6C0\U1F3FB' +emoji[person_taking_bath_medium_light_skin_tone]=$'\U1F6C0\U1F3FC' +emoji[person_taking_bath_medium_skin_tone]=$'\U1F6C0\U1F3FD' +emoji[person_taking_bath_medium_dark_skin_tone]=$'\U1F6C0\U1F3FE' +emoji[person_taking_bath_dark_skin_tone]=$'\U1F6C0\U1F3FF' +emoji[person_in_bed]=$'\U1F6CC' +emoji[sleeping_bed]=$'\U1F6CC' +emoji[person_in_bed_light_skin_tone]=$'\U1F6CC\U1F3FB' +emoji[person_in_bed_medium_light_skin_tone]=$'\U1F6CC\U1F3FC' +emoji[person_in_bed_medium_skin_tone]=$'\U1F6CC\U1F3FD' +emoji[person_in_bed_medium_dark_skin_tone]=$'\U1F6CC\U1F3FE' +emoji[person_in_bed_dark_skin_tone]=$'\U1F6CC\U1F3FF' +emoji[people_holding_hands]=$'\U1F9D1\U200D\U1F91D\U200D\U1F9D1' +emoji[people_holding_hands_light_skin_tone]=$'\U1F9D1\U1F3FB\U200D\U1F91D\U200D\U1F9D1\U1F3FB' +emoji[people_holding_hands_medium_light_skin_tone_light_skin_tone]=$'\U1F9D1\U1F3FC\U200D\U1F91D\U200D\U1F9D1\U1F3FB' +emoji[people_holding_hands_medium_light_skin_tone_light_skin_tone_1]=$'\U1F9D1\U1F3FC\U200D\U1F91D\U200D\U1F9D1\U1F3FC' +emoji[people_holding_hands_medium_skin_tone_light_skin_tone]=$'\U1F9D1\U1F3FD\U200D\U1F91D\U200D\U1F9D1\U1F3FB' +emoji[people_holding_hands_medium_skin_tone_medium_light_skin_tone]=$'\U1F9D1\U1F3FD\U200D\U1F91D\U200D\U1F9D1\U1F3FC' +emoji[people_holding_hands_medium_skin_tone_medium_light_skin_tone_1]=$'\U1F9D1\U1F3FD\U200D\U1F91D\U200D\U1F9D1\U1F3FD' +emoji[people_holding_hands_medium_dark_skin_tone_light_skin_tone]=$'\U1F9D1\U1F3FE\U200D\U1F91D\U200D\U1F9D1\U1F3FB' +emoji[people_holding_hands_medium_dark_skin_tone_medium_light_skin_tone]=$'\U1F9D1\U1F3FE\U200D\U1F91D\U200D\U1F9D1\U1F3FC' +emoji[people_holding_hands_medium_dark_skin_tone_medium_skin_tone]=$'\U1F9D1\U1F3FE\U200D\U1F91D\U200D\U1F9D1\U1F3FD' +emoji[people_holding_hands_medium_dark_skin_tone_medium_skin_tone_1]=$'\U1F9D1\U1F3FE\U200D\U1F91D\U200D\U1F9D1\U1F3FE' +emoji[people_holding_hands_dark_skin_tone_light_skin_tone]=$'\U1F9D1\U1F3FF\U200D\U1F91D\U200D\U1F9D1\U1F3FB' +emoji[people_holding_hands_dark_skin_tone_medium_light_skin_tone]=$'\U1F9D1\U1F3FF\U200D\U1F91D\U200D\U1F9D1\U1F3FC' +emoji[people_holding_hands_dark_skin_tone_medium_skin_tone]=$'\U1F9D1\U1F3FF\U200D\U1F91D\U200D\U1F9D1\U1F3FD' +emoji[people_holding_hands_dark_skin_tone_medium_dark_skin_tone]=$'\U1F9D1\U1F3FF\U200D\U1F91D\U200D\U1F9D1\U1F3FE' +emoji[people_holding_hands_dark_skin_tone_medium_dark_skin_tone_1]=$'\U1F9D1\U1F3FF\U200D\U1F91D\U200D\U1F9D1\U1F3FF' +emoji[women_holding_hands]=$'\U1F46D' +emoji[two_women_holding_hands]=$'\U1F46D' +emoji[women_holding_hands_light_skin_tone]=$'\U1F46D\U1F3FB' +emoji[women_holding_hands_medium_light_skin_tone_light_skin_tone]=$'\U1F469\U1F3FC\U200D\U1F91D\U200D\U1F469\U1F3FB' +emoji[women_holding_hands_medium_light_skin_tone_light_skin_tone_1]=$'\U1F46D\U1F3FC' +emoji[women_holding_hands_medium_skin_tone_light_skin_tone]=$'\U1F469\U1F3FD\U200D\U1F91D\U200D\U1F469\U1F3FB' +emoji[women_holding_hands_medium_skin_tone_medium_light_skin_tone]=$'\U1F469\U1F3FD\U200D\U1F91D\U200D\U1F469\U1F3FC' +emoji[women_holding_hands_medium_skin_tone_medium_light_skin_tone_1]=$'\U1F46D\U1F3FD' +emoji[women_holding_hands_medium_dark_skin_tone_light_skin_tone]=$'\U1F469\U1F3FE\U200D\U1F91D\U200D\U1F469\U1F3FB' +emoji[women_holding_hands_medium_dark_skin_tone_medium_light_skin_tone]=$'\U1F469\U1F3FE\U200D\U1F91D\U200D\U1F469\U1F3FC' +emoji[women_holding_hands_medium_dark_skin_tone_medium_skin_tone]=$'\U1F469\U1F3FE\U200D\U1F91D\U200D\U1F469\U1F3FD' +emoji[women_holding_hands_medium_dark_skin_tone_medium_skin_tone_1]=$'\U1F46D\U1F3FE' +emoji[women_holding_hands_dark_skin_tone_light_skin_tone]=$'\U1F469\U1F3FF\U200D\U1F91D\U200D\U1F469\U1F3FB' +emoji[women_holding_hands_dark_skin_tone_medium_light_skin_tone]=$'\U1F469\U1F3FF\U200D\U1F91D\U200D\U1F469\U1F3FC' +emoji[women_holding_hands_dark_skin_tone_medium_skin_tone]=$'\U1F469\U1F3FF\U200D\U1F91D\U200D\U1F469\U1F3FD' +emoji[women_holding_hands_dark_skin_tone_medium_dark_skin_tone]=$'\U1F469\U1F3FF\U200D\U1F91D\U200D\U1F469\U1F3FE' +emoji[women_holding_hands_dark_skin_tone_medium_dark_skin_tone_1]=$'\U1F46D\U1F3FF' +emoji[woman_and_man_holding_hands]=$'\U1F46B' +emoji[couple]=$'\U1F46B' +emoji[woman_and_man_holding_hands_light_skin_tone]=$'\U1F46B\U1F3FB' +emoji[woman_and_man_holding_hands_light_skin_tone_medium_light_skin_tone]=$'\U1F469\U1F3FB\U200D\U1F91D\U200D\U1F468\U1F3FC' +emoji[woman_and_man_holding_hands_light_skin_tone_medium_skin_tone]=$'\U1F469\U1F3FB\U200D\U1F91D\U200D\U1F468\U1F3FD' +emoji[woman_and_man_holding_hands_light_skin_tone_medium_dark_skin_tone]=$'\U1F469\U1F3FB\U200D\U1F91D\U200D\U1F468\U1F3FE' +emoji[woman_and_man_holding_hands_light_skin_tone_dark_skin_tone]=$'\U1F469\U1F3FB\U200D\U1F91D\U200D\U1F468\U1F3FF' +emoji[woman_and_man_holding_hands_medium_light_skin_tone_light_skin_tone]=$'\U1F469\U1F3FC\U200D\U1F91D\U200D\U1F468\U1F3FB' +emoji[woman_and_man_holding_hands_medium_light_skin_tone_light_skin_tone_1]=$'\U1F46B\U1F3FC' +emoji[woman_and_man_holding_hands_medium_light_skin_tone_medium_skin_tone]=$'\U1F469\U1F3FC\U200D\U1F91D\U200D\U1F468\U1F3FD' +emoji[woman_and_man_holding_hands_medium_light_skin_tone_medium_dark_skin_tone]=$'\U1F469\U1F3FC\U200D\U1F91D\U200D\U1F468\U1F3FE' +emoji[woman_and_man_holding_hands_medium_light_skin_tone_dark_skin_tone]=$'\U1F469\U1F3FC\U200D\U1F91D\U200D\U1F468\U1F3FF' +emoji[woman_and_man_holding_hands_medium_skin_tone_light_skin_tone]=$'\U1F469\U1F3FD\U200D\U1F91D\U200D\U1F468\U1F3FB' +emoji[woman_and_man_holding_hands_medium_skin_tone_medium_light_skin_tone]=$'\U1F469\U1F3FD\U200D\U1F91D\U200D\U1F468\U1F3FC' +emoji[woman_and_man_holding_hands_medium_skin_tone_medium_light_skin_tone_1]=$'\U1F46B\U1F3FD' +emoji[woman_and_man_holding_hands_medium_skin_tone_medium_dark_skin_tone]=$'\U1F469\U1F3FD\U200D\U1F91D\U200D\U1F468\U1F3FE' +emoji[woman_and_man_holding_hands_medium_skin_tone_dark_skin_tone]=$'\U1F469\U1F3FD\U200D\U1F91D\U200D\U1F468\U1F3FF' +emoji[woman_and_man_holding_hands_medium_dark_skin_tone_light_skin_tone]=$'\U1F469\U1F3FE\U200D\U1F91D\U200D\U1F468\U1F3FB' +emoji[woman_and_man_holding_hands_medium_dark_skin_tone_medium_light_skin_tone]=$'\U1F469\U1F3FE\U200D\U1F91D\U200D\U1F468\U1F3FC' +emoji[woman_and_man_holding_hands_medium_dark_skin_tone_medium_skin_tone]=$'\U1F469\U1F3FE\U200D\U1F91D\U200D\U1F468\U1F3FD' +emoji[woman_and_man_holding_hands_medium_dark_skin_tone_medium_skin_tone_1]=$'\U1F46B\U1F3FE' +emoji[woman_and_man_holding_hands_medium_dark_skin_tone_dark_skin_tone]=$'\U1F469\U1F3FE\U200D\U1F91D\U200D\U1F468\U1F3FF' +emoji[woman_and_man_holding_hands_dark_skin_tone_light_skin_tone]=$'\U1F469\U1F3FF\U200D\U1F91D\U200D\U1F468\U1F3FB' +emoji[woman_and_man_holding_hands_dark_skin_tone_medium_light_skin_tone]=$'\U1F469\U1F3FF\U200D\U1F91D\U200D\U1F468\U1F3FC' +emoji[woman_and_man_holding_hands_dark_skin_tone_medium_skin_tone]=$'\U1F469\U1F3FF\U200D\U1F91D\U200D\U1F468\U1F3FD' +emoji[woman_and_man_holding_hands_dark_skin_tone_medium_dark_skin_tone]=$'\U1F469\U1F3FF\U200D\U1F91D\U200D\U1F468\U1F3FE' +emoji[woman_and_man_holding_hands_dark_skin_tone_medium_dark_skin_tone_1]=$'\U1F46B\U1F3FF' +emoji[men_holding_hands]=$'\U1F46C' +emoji[two_men_holding_hands]=$'\U1F46C' +emoji[men_holding_hands_light_skin_tone]=$'\U1F46C\U1F3FB' +emoji[men_holding_hands_medium_light_skin_tone_light_skin_tone]=$'\U1F468\U1F3FC\U200D\U1F91D\U200D\U1F468\U1F3FB' +emoji[men_holding_hands_medium_light_skin_tone_light_skin_tone_1]=$'\U1F46C\U1F3FC' +emoji[men_holding_hands_medium_skin_tone_light_skin_tone]=$'\U1F468\U1F3FD\U200D\U1F91D\U200D\U1F468\U1F3FB' +emoji[men_holding_hands_medium_skin_tone_medium_light_skin_tone]=$'\U1F468\U1F3FD\U200D\U1F91D\U200D\U1F468\U1F3FC' +emoji[men_holding_hands_medium_skin_tone_medium_light_skin_tone_1]=$'\U1F46C\U1F3FD' +emoji[men_holding_hands_medium_dark_skin_tone_light_skin_tone]=$'\U1F468\U1F3FE\U200D\U1F91D\U200D\U1F468\U1F3FB' +emoji[men_holding_hands_medium_dark_skin_tone_medium_light_skin_tone]=$'\U1F468\U1F3FE\U200D\U1F91D\U200D\U1F468\U1F3FC' +emoji[men_holding_hands_medium_dark_skin_tone_medium_skin_tone]=$'\U1F468\U1F3FE\U200D\U1F91D\U200D\U1F468\U1F3FD' +emoji[men_holding_hands_medium_dark_skin_tone_medium_skin_tone_1]=$'\U1F46C\U1F3FE' +emoji[men_holding_hands_dark_skin_tone_light_skin_tone]=$'\U1F468\U1F3FF\U200D\U1F91D\U200D\U1F468\U1F3FB' +emoji[men_holding_hands_dark_skin_tone_medium_light_skin_tone]=$'\U1F468\U1F3FF\U200D\U1F91D\U200D\U1F468\U1F3FC' +emoji[men_holding_hands_dark_skin_tone_medium_skin_tone]=$'\U1F468\U1F3FF\U200D\U1F91D\U200D\U1F468\U1F3FD' +emoji[men_holding_hands_dark_skin_tone_medium_dark_skin_tone]=$'\U1F468\U1F3FF\U200D\U1F91D\U200D\U1F468\U1F3FE' +emoji[men_holding_hands_dark_skin_tone_medium_dark_skin_tone_1]=$'\U1F46C\U1F3FF' +emoji[kiss]=$'\U1F48F' +emoji[couplekiss]=$'\U1F48F' +emoji[kiss_woman_man]=$'\U1F469\U200D\U2764\UFE0F\U200D\U1F48B\U200D\U1F468' +emoji[couplekiss_man_woman]=$'\U1F469\U200D\U2764\UFE0F\U200D\U1F48B\U200D\U1F468' +emoji[kiss_woman_man_minimally]=$'\U1F469\U200D\U2764\U200D\U1F48B\U200D\U1F468' +emoji[kiss_man_man]=$'\U1F468\U200D\U2764\UFE0F\U200D\U1F48B\U200D\U1F468' +emoji[couplekiss_man_man]=$'\U1F468\U200D\U2764\UFE0F\U200D\U1F48B\U200D\U1F468' +emoji[kiss_man_man_minimally]=$'\U1F468\U200D\U2764\U200D\U1F48B\U200D\U1F468' +emoji[kiss_woman_woman]=$'\U1F469\U200D\U2764\UFE0F\U200D\U1F48B\U200D\U1F469' +emoji[couplekiss_woman_woman]=$'\U1F469\U200D\U2764\UFE0F\U200D\U1F48B\U200D\U1F469' +emoji[kiss_woman_woman_minimally]=$'\U1F469\U200D\U2764\U200D\U1F48B\U200D\U1F469' +emoji[couple_with_heart]=$'\U1F491' +emoji[couple_with_heart_woman_man]=$'\U1F469\U200D\U2764\UFE0F\U200D\U1F468' +emoji[couple_with_heart_woman_man_minimally]=$'\U1F469\U200D\U2764\U200D\U1F468' +emoji[couple_with_heart_man_man]=$'\U1F468\U200D\U2764\UFE0F\U200D\U1F468' +emoji[couple_with_heart_man_man_minimally]=$'\U1F468\U200D\U2764\U200D\U1F468' +emoji[couple_with_heart_woman_woman]=$'\U1F469\U200D\U2764\UFE0F\U200D\U1F469' +emoji[couple_with_heart_woman_woman_minimally]=$'\U1F469\U200D\U2764\U200D\U1F469' +emoji[family]=$'\U1F46A' +emoji[family_man_woman_boy]=$'\U1F468\U200D\U1F469\U200D\U1F466' +emoji[family_man_woman_girl]=$'\U1F468\U200D\U1F469\U200D\U1F467' +emoji[family_man_woman_girl_boy]=$'\U1F468\U200D\U1F469\U200D\U1F467\U200D\U1F466' +emoji[family_man_woman_boy_boy]=$'\U1F468\U200D\U1F469\U200D\U1F466\U200D\U1F466' +emoji[family_man_woman_girl_girl]=$'\U1F468\U200D\U1F469\U200D\U1F467\U200D\U1F467' +emoji[family_man_man_boy]=$'\U1F468\U200D\U1F468\U200D\U1F466' +emoji[family_man_man_girl]=$'\U1F468\U200D\U1F468\U200D\U1F467' +emoji[family_man_man_girl_boy]=$'\U1F468\U200D\U1F468\U200D\U1F467\U200D\U1F466' +emoji[family_man_man_boy_boy]=$'\U1F468\U200D\U1F468\U200D\U1F466\U200D\U1F466' +emoji[family_man_man_girl_girl]=$'\U1F468\U200D\U1F468\U200D\U1F467\U200D\U1F467' +emoji[family_woman_woman_boy]=$'\U1F469\U200D\U1F469\U200D\U1F466' +emoji[family_woman_woman_girl]=$'\U1F469\U200D\U1F469\U200D\U1F467' +emoji[family_woman_woman_girl_boy]=$'\U1F469\U200D\U1F469\U200D\U1F467\U200D\U1F466' +emoji[family_woman_woman_boy_boy]=$'\U1F469\U200D\U1F469\U200D\U1F466\U200D\U1F466' +emoji[family_woman_woman_girl_girl]=$'\U1F469\U200D\U1F469\U200D\U1F467\U200D\U1F467' +emoji[family_man_boy]=$'\U1F468\U200D\U1F466' +emoji[family_man_boy_boy]=$'\U1F468\U200D\U1F466\U200D\U1F466' +emoji[family_man_girl]=$'\U1F468\U200D\U1F467' +emoji[family_man_girl_boy]=$'\U1F468\U200D\U1F467\U200D\U1F466' +emoji[family_man_girl_girl]=$'\U1F468\U200D\U1F467\U200D\U1F467' +emoji[family_woman_boy]=$'\U1F469\U200D\U1F466' +emoji[family_woman_boy_boy]=$'\U1F469\U200D\U1F466\U200D\U1F466' +emoji[family_woman_girl]=$'\U1F469\U200D\U1F467' +emoji[family_woman_girl_boy]=$'\U1F469\U200D\U1F467\U200D\U1F466' +emoji[family_woman_girl_girl]=$'\U1F469\U200D\U1F467\U200D\U1F467' +emoji[speaking_head]=$'\U1F5E3\UFE0F' +emoji[speaking_head_unqualified]=$'\U1F5E3' +emoji[bust_in_silhouette]=$'\U1F464' +emoji[busts_in_silhouette]=$'\U1F465' +emoji[footprints]=$'\U1F463' +emoji_mod[light_skin_tone]=$'\U1F3FB' +emoji_mod[medium_light_skin_tone]=$'\U1F3FC' +emoji_mod[medium_skin_tone]=$'\U1F3FD' +emoji_mod[medium_dark_skin_tone]=$'\U1F3FE' +emoji_mod[medium_dark_skin_tone_1]=$'\U1F3FF' +emoji_mod[red_hair]=$'\U1F9B0' +emoji_mod[curly_hair]=$'\U1F9B1' +emoji_mod[white_hair]=$'\U1F9B3' +emoji_mod[bald]=$'\U1F9B2' +emoji[monkey_face]=$'\U1F435' +emoji[monkey_face_1]=$'\U1F412' +emoji[monkey]=$'\U1F412' +emoji[gorilla]=$'\U1F98D' +emoji[orangutan]=$'\U1F9A7' +emoji[dog_face]=$'\U1F436' +emoji[dog]=$'\U1F436' +emoji[dog_face_1]=$'\U1F415' +emoji[dog2]=$'\U1F415' +emoji[guide_dog]=$'\U1F9AE' +emoji[service_dog]=$'\U1F415\U200D\U1F9BA' +emoji[poodle]=$'\U1F429' +emoji[wolf]=$'\U1F43A' +emoji[fox]=$'\U1F98A' +emoji[fox_face]=$'\U1F98A' +emoji[raccoon]=$'\U1F99D' +emoji[cat_face]=$'\U1F431' +emoji[cat]=$'\U1F431' +emoji[cat_face_1]=$'\U1F408' +emoji[cat2]=$'\U1F408' +emoji[lion]=$'\U1F981' +emoji[tiger_face]=$'\U1F42F' +emoji[tiger]=$'\U1F42F' +emoji[tiger_face_1]=$'\U1F405' +emoji[tiger2]=$'\U1F405' +emoji[leopard]=$'\U1F406' +emoji[horse_face]=$'\U1F434' +emoji[horse]=$'\U1F434' +emoji[horse_face_1]=$'\U1F40E' +emoji[racehorse]=$'\U1F40E' +emoji[unicorn]=$'\U1F984' +emoji[zebra]=$'\U1F993' +emoji[deer]=$'\U1F98C' +emoji[cow_face]=$'\U1F42E' +emoji[ox]=$'\U1F402' +emoji[water_buffalo]=$'\U1F403' +emoji[cow]=$'\U1F404' +emoji[cow2]=$'\U1F404' +emoji[pig_face]=$'\U1F437' +emoji[pig]=$'\U1F437' +emoji[pig_face_1]=$'\U1F416' +emoji[pig2]=$'\U1F416' +emoji[boar]=$'\U1F417' +emoji[pig_nose]=$'\U1F43D' +emoji[ram]=$'\U1F40F' +emoji[ewe]=$'\U1F411' +emoji[sheep]=$'\U1F411' +emoji[goat]=$'\U1F410' +emoji[camel]=$'\U1F42A' +emoji[dromedary_camel]=$'\U1F42A' +emoji[two_hump_camel]=$'\U1F42B' +emoji[llama]=$'\U1F999' +emoji[giraffe]=$'\U1F992' +emoji[elephant]=$'\U1F418' +emoji[rhinoceros]=$'\U1F98F' +emoji[hippopotamus]=$'\U1F99B' +emoji[mouse_face]=$'\U1F42D' +emoji[mouse]=$'\U1F42D' +emoji[mouse_face_1]=$'\U1F401' +emoji[mouse2]=$'\U1F401' +emoji[rat]=$'\U1F400' +emoji[hamster]=$'\U1F439' +emoji[rabbit_face]=$'\U1F430' +emoji[rabbit]=$'\U1F430' +emoji[rabbit_face_1]=$'\U1F407' +emoji[rabbit2]=$'\U1F407' +emoji[chipmunk]=$'\U1F43F\UFE0F' +emoji[chipmunk_unqualified]=$'\U1F43F' +emoji[hedgehog]=$'\U1F994' +emoji[bat]=$'\U1F987' +emoji[bear]=$'\U1F43B' +emoji[koala]=$'\U1F428' +emoji[panda]=$'\U1F43C' +emoji[panda_face]=$'\U1F43C' +emoji[sloth]=$'\U1F9A5' +emoji[otter]=$'\U1F9A6' +emoji[skunk]=$'\U1F9A8' +emoji[kangaroo]=$'\U1F998' +emoji[badger]=$'\U1F9A1' +emoji[paw_prints]=$'\U1F43E' +emoji[feet]=$'\U1F43E' +emoji[turkey]=$'\U1F983' +emoji[chicken]=$'\U1F414' +emoji[rooster]=$'\U1F413' +emoji[hatching_chick]=$'\U1F423' +emoji[baby_chick]=$'\U1F424' +emoji[front_facing_baby_chick]=$'\U1F425' +emoji[hatched_chick]=$'\U1F425' +emoji[bird]=$'\U1F426' +emoji[penguin]=$'\U1F427' +emoji[dove]=$'\U1F54A\UFE0F' +emoji[dove_unqualified]=$'\U1F54A' +emoji[eagle]=$'\U1F985' +emoji[duck]=$'\U1F986' +emoji[swan]=$'\U1F9A2' +emoji[owl]=$'\U1F989' +emoji[flamingo]=$'\U1F9A9' +emoji[peacock]=$'\U1F99A' +emoji[parrot]=$'\U1F99C' +emoji[frog]=$'\U1F438' +emoji[crocodile]=$'\U1F40A' +emoji[turtle]=$'\U1F422' +emoji[lizard]=$'\U1F98E' +emoji[snake]=$'\U1F40D' +emoji[dragon_face]=$'\U1F432' +emoji[dragon_face_1]=$'\U1F409' +emoji[dragon]=$'\U1F409' +emoji[sauropod]=$'\U1F995' +emoji[T_Rex]=$'\U1F996' +emoji[t-rex]=$'\U1F996' +emoji[spouting_whale]=$'\U1F433' +emoji[whale]=$'\U1F433' +emoji[spouting_whale_1]=$'\U1F40B' +emoji[whale2]=$'\U1F40B' +emoji[dolphin]=$'\U1F42C' +emoji[flipper]=$'\U1F42C' +emoji[fish]=$'\U1F41F' +emoji[tropical_fish]=$'\U1F420' +emoji[blowfish]=$'\U1F421' +emoji[shark]=$'\U1F988' +emoji[octopus]=$'\U1F419' +emoji[spiral_shell]=$'\U1F41A' +emoji[shell]=$'\U1F41A' +emoji[snail]=$'\U1F40C' +emoji[butterfly]=$'\U1F98B' +emoji[bug]=$'\U1F41B' +emoji[ant]=$'\U1F41C' +emoji[honeybee]=$'\U1F41D' +emoji[bee]=$'\U1F41D' +emoji[lady_beetle]=$'\U1F41E' +emoji[beetle]=$'\U1F41E' +emoji[cricket]=$'\U1F997' +emoji[spider]=$'\U1F577\UFE0F' +emoji[spider_unqualified]=$'\U1F577' +emoji[spider_web]=$'\U1F578\UFE0F' +emoji[spider_web_unqualified]=$'\U1F578' +emoji[scorpion]=$'\U1F982' +emoji[mosquito]=$'\U1F99F' +emoji[microbe]=$'\U1F9A0' +emoji[bouquet]=$'\U1F490' +emoji[cherry_blossom]=$'\U1F338' +emoji[white_flower]=$'\U1F4AE' +emoji[rosette]=$'\U1F3F5\UFE0F' +emoji[rosette_unqualified]=$'\U1F3F5' +emoji[rosette_unqualified_1]=$'\U1F339' +emoji[rose]=$'\U1F339' +emoji[wilted_flower]=$'\U1F940' +emoji[hibiscus]=$'\U1F33A' +emoji[sunflower]=$'\U1F33B' +emoji[blossom]=$'\U1F33C' +emoji[tulip]=$'\U1F337' +emoji[seedling]=$'\U1F331' +emoji[evergreen_tree]=$'\U1F332' +emoji[deciduous_tree]=$'\U1F333' +emoji[palm_tree]=$'\U1F334' +emoji[cactus]=$'\U1F335' +emoji[sheaf_of_rice]=$'\U1F33E' +emoji[ear_of_rice]=$'\U1F33E' +emoji[herb]=$'\U1F33F' +emoji[shamrock]=$'\U2618\UFE0F' +emoji[shamrock_unqualified]=$'\U2618' +emoji[four_leaf_clover]=$'\U1F340' +emoji[maple_leaf]=$'\U1F341' +emoji[fallen_leaf]=$'\U1F342' +emoji[leaf_fluttering_in_wind]=$'\U1F343' +emoji[leaves]=$'\U1F343' +emoji[grapes]=$'\U1F347' +emoji[melon]=$'\U1F348' +emoji[watermelon]=$'\U1F349' +emoji[tangerine]=$'\U1F34A' +emoji[orange]=$'\U1F34A' +emoji[mandarin]=$'\U1F34A' +emoji[lemon]=$'\U1F34B' +emoji[banana]=$'\U1F34C' +emoji[pineapple]=$'\U1F34D' +emoji[mango]=$'\U1F96D' +emoji[red_apple]=$'\U1F34E' +emoji[apple]=$'\U1F34E' +emoji[green_apple]=$'\U1F34F' +emoji[pear]=$'\U1F350' +emoji[peach]=$'\U1F351' +emoji[cherries]=$'\U1F352' +emoji[strawberry]=$'\U1F353' +emoji[kiwi_fruit]=$'\U1F95D' +emoji[tomato]=$'\U1F345' +emoji[coconut]=$'\U1F965' +emoji[avocado]=$'\U1F951' +emoji[eggplant]=$'\U1F346' +emoji[potato]=$'\U1F954' +emoji[carrot]=$'\U1F955' +emoji[ear_of_corn]=$'\U1F33D' +emoji[corn]=$'\U1F33D' +emoji[hot_pepper]=$'\U1F336\UFE0F' +emoji[hot_pepper_unqualified]=$'\U1F336' +emoji[cucumber]=$'\U1F952' +emoji[leafy_green]=$'\U1F96C' +emoji[broccoli]=$'\U1F966' +emoji[garlic]=$'\U1F9C4' +emoji[onion]=$'\U1F9C5' +emoji[mushroom]=$'\U1F344' +emoji[peanuts]=$'\U1F95C' +emoji[chestnut]=$'\U1F330' +emoji[bread]=$'\U1F35E' +emoji[croissant]=$'\U1F950' +emoji[baguette_bread]=$'\U1F956' +emoji[pretzel]=$'\U1F968' +emoji[bagel]=$'\U1F96F' +emoji[pancakes]=$'\U1F95E' +emoji[waffle]=$'\U1F9C7' +emoji[cheese_wedge]=$'\U1F9C0' +emoji[cheese]=$'\U1F9C0' +emoji[meat_on_bone]=$'\U1F356' +emoji[poultry_leg]=$'\U1F357' +emoji[cut_of_meat]=$'\U1F969' +emoji[bacon]=$'\U1F953' +emoji[hamburger]=$'\U1F354' +emoji[french_fries]=$'\U1F35F' +emoji[fries]=$'\U1F35F' +emoji[pizza]=$'\U1F355' +emoji[hot_dog]=$'\U1F32D' +emoji[hotdog]=$'\U1F32D' +emoji[sandwich]=$'\U1F96A' +emoji[taco]=$'\U1F32E' +emoji[burrito]=$'\U1F32F' +emoji[stuffed_flatbread]=$'\U1F959' +emoji[falafel]=$'\U1F9C6' +emoji[egg]=$'\U1F95A' +emoji[cooking]=$'\U1F373' +emoji[fried_egg]=$'\U1F373' +emoji[shallow_pan_of_food]=$'\U1F958' +emoji[pot_of_food]=$'\U1F372' +emoji[stew]=$'\U1F372' +emoji[bowl_with_spoon]=$'\U1F963' +emoji[green_salad]=$'\U1F957' +emoji[popcorn]=$'\U1F37F' +emoji[butter]=$'\U1F9C8' +emoji[salt]=$'\U1F9C2' +emoji[canned_food]=$'\U1F96B' +emoji[bento_box]=$'\U1F371' +emoji[bento]=$'\U1F371' +emoji[rice_cracker]=$'\U1F358' +emoji[rice_ball]=$'\U1F359' +emoji[cooked_rice]=$'\U1F35A' +emoji[rice]=$'\U1F35A' +emoji[curry_rice]=$'\U1F35B' +emoji[curry]=$'\U1F35B' +emoji[steaming_bowl]=$'\U1F35C' +emoji[ramen]=$'\U1F35C' +emoji[spaghetti]=$'\U1F35D' +emoji[roasted_sweet_potato]=$'\U1F360' +emoji[sweet_potato]=$'\U1F360' +emoji[oden]=$'\U1F362' +emoji[sushi]=$'\U1F363' +emoji[fried_shrimp]=$'\U1F364' +emoji[fish_cake_with_swirl]=$'\U1F365' +emoji[fish_cake]=$'\U1F365' +emoji[moon_cake]=$'\U1F96E' +emoji[dango]=$'\U1F361' +emoji[dumpling]=$'\U1F95F' +emoji[fortune_cookie]=$'\U1F960' +emoji[takeout_box]=$'\U1F961' +emoji[crab]=$'\U1F980' +emoji[lobster]=$'\U1F99E' +emoji[shrimp]=$'\U1F990' +emoji[squid]=$'\U1F991' +emoji[oyster]=$'\U1F9AA' +emoji[soft_ice_cream]=$'\U1F366' +emoji[icecream]=$'\U1F366' +emoji[shaved_ice]=$'\U1F367' +emoji[ice_cream]=$'\U1F368' +emoji[doughnut]=$'\U1F369' +emoji[cookie]=$'\U1F36A' +emoji[birthday_cake]=$'\U1F382' +emoji[birthday]=$'\U1F382' +emoji[shortcake]=$'\U1F370' +emoji[cake]=$'\U1F370' +emoji[cupcake]=$'\U1F9C1' +emoji[pie]=$'\U1F967' +emoji[chocolate_bar]=$'\U1F36B' +emoji[candy]=$'\U1F36C' +emoji[lollipop]=$'\U1F36D' +emoji[custard]=$'\U1F36E' +emoji[honey_pot]=$'\U1F36F' +emoji[baby_bottle]=$'\U1F37C' +emoji[glass_of_milk]=$'\U1F95B' +emoji[milk_glass]=$'\U1F95B' +emoji[hot_beverage]=$'\U2615' +emoji[coffee]=$'\U2615' +emoji[teacup_without_handle]=$'\U1F375' +emoji[tea]=$'\U1F375' +emoji[sake]=$'\U1F376' +emoji[bottle_with_popping_cork]=$'\U1F37E' +emoji[champagne]=$'\U1F37E' +emoji[wine_glass]=$'\U1F377' +emoji[cocktail_glass]=$'\U1F378' +emoji[cocktail]=$'\U1F378' +emoji[tropical_drink]=$'\U1F379' +emoji[beer_mug]=$'\U1F37A' +emoji[beer]=$'\U1F37A' +emoji[clinking_beer_mugs]=$'\U1F37B' +emoji[beers]=$'\U1F37B' +emoji[clinking_glasses]=$'\U1F942' +emoji[tumbler_glass]=$'\U1F943' +emoji[cup_with_straw]=$'\U1F964' +emoji[beverage_box]=$'\U1F9C3' +emoji[mate]=$'\U1F9C9' +emoji[ice_cube]=$'\U1F9CA' +emoji[chopsticks]=$'\U1F962' +emoji[fork_and_knife_with_plate]=$'\U1F37D\UFE0F' +emoji[fork_and_knife_with_plate_unqualified]=$'\U1F37D' +emoji[plate_with_cutlery]=$'\U1F37D' +emoji[fork_and_knife_with_plate_unqualified_1]=$'\U1F374' +emoji[fork_and_knife]=$'\U1F374' +emoji[spoon]=$'\U1F944' +emoji[kitchen_knife]=$'\U1F52A' +emoji[hocho]=$'\U1F52A' +emoji[knife]=$'\U1F52A' +emoji[amphora]=$'\U1F3FA' +emoji[globe_showing_Europe_Africa]=$'\U1F30D' +emoji[earth_africa]=$'\U1F30D' +emoji[globe_showing_Americas]=$'\U1F30E' +emoji[earth_americas]=$'\U1F30E' +emoji[globe_showing_Asia_Australia]=$'\U1F30F' +emoji[earth_asia]=$'\U1F30F' +emoji[globe_with_meridians]=$'\U1F310' +emoji[world_map]=$'\U1F5FA\UFE0F' +emoji[world_map_unqualified]=$'\U1F5FA' +emoji[map_of_Japan]=$'\U1F5FE' +emoji[japan]=$'\U1F5FE' +emoji[compass]=$'\U1F9ED' +emoji[snow_capped_mountain]=$'\U1F3D4\UFE0F' +emoji[snow_capped_mountain_unqualified]=$'\U1F3D4' +emoji[mountain_snow]=$'\U1F3D4' +emoji[snow_capped_mountain_unqualified_1]=$'\U26F0\UFE0F' +emoji[snow_capped_mountain_unqualified_2]=$'\U26F0' +emoji[mountain]=$'\U26F0' +emoji[volcano]=$'\U1F30B' +emoji[mount_fuji]=$'\U1F5FB' +emoji[camping]=$'\U1F3D5\UFE0F' +emoji[camping_unqualified]=$'\U1F3D5' +emoji[beach_with_umbrella]=$'\U1F3D6\UFE0F' +emoji[beach_with_umbrella_unqualified]=$'\U1F3D6' +emoji[beach_umbrella]=$'\U1F3D6' +emoji[desert]=$'\U1F3DC\UFE0F' +emoji[desert_unqualified]=$'\U1F3DC' +emoji[desert_island]=$'\U1F3DD\UFE0F' +emoji[desert_island_unqualified]=$'\U1F3DD' +emoji[national_park]=$'\U1F3DE\UFE0F' +emoji[national_park_unqualified]=$'\U1F3DE' +emoji[stadium]=$'\U1F3DF\UFE0F' +emoji[stadium_unqualified]=$'\U1F3DF' +emoji[classical_building]=$'\U1F3DB\UFE0F' +emoji[classical_building_unqualified]=$'\U1F3DB' +emoji[building_construction]=$'\U1F3D7\UFE0F' +emoji[building_construction_unqualified]=$'\U1F3D7' +emoji[brick]=$'\U1F9F1' +emoji[bricks]=$'\U1F9F1' +emoji[houses]=$'\U1F3D8\UFE0F' +emoji[houses_unqualified]=$'\U1F3D8' +emoji[derelict_house]=$'\U1F3DA\UFE0F' +emoji[derelict_house_unqualified]=$'\U1F3DA' +emoji[derelict_house_unqualified_1]=$'\U1F3E0' +emoji[house]=$'\U1F3E0' +emoji[house_with_garden]=$'\U1F3E1' +emoji[office_building]=$'\U1F3E2' +emoji[office]=$'\U1F3E2' +emoji[Japanese_post_office]=$'\U1F3E3' +emoji[post_office]=$'\U1F3E3' +emoji[Japanese_post_office_1]=$'\U1F3E4' +emoji[european_post_office]=$'\U1F3E4' +emoji[hospital]=$'\U1F3E5' +emoji[bank]=$'\U1F3E6' +emoji[hotel]=$'\U1F3E8' +emoji[love_hotel]=$'\U1F3E9' +emoji[convenience_store]=$'\U1F3EA' +emoji[school]=$'\U1F3EB' +emoji[department_store]=$'\U1F3EC' +emoji[factory]=$'\U1F3ED' +emoji[Japanese_castle]=$'\U1F3EF' +emoji[japanese_castle]=$'\U1F3EF' +emoji[Japanese_castle_1]=$'\U1F3F0' +emoji[european_castle]=$'\U1F3F0' +emoji[wedding]=$'\U1F492' +emoji[Tokyo_tower]=$'\U1F5FC' +emoji[tokyo_tower]=$'\U1F5FC' +emoji[Statue_of_Liberty]=$'\U1F5FD' +emoji[statue_of_liberty]=$'\U1F5FD' +emoji[church]=$'\U26EA' +emoji[mosque]=$'\U1F54C' +emoji[hindu_temple]=$'\U1F6D5' +emoji[synagogue]=$'\U1F54D' +emoji[shinto_shrine]=$'\U26E9\UFE0F' +emoji[shinto_shrine_unqualified]=$'\U26E9' +emoji[kaaba]=$'\U1F54B' +emoji[fountain]=$'\U26F2' +emoji[tent]=$'\U26FA' +emoji[foggy]=$'\U1F301' +emoji[night_with_stars]=$'\U1F303' +emoji[cityscape]=$'\U1F3D9\UFE0F' +emoji[cityscape_unqualified]=$'\U1F3D9' +emoji[sunrise_over_mountains]=$'\U1F304' +emoji[sunrise_over_mountains_1]=$'\U1F305' +emoji[sunrise]=$'\U1F305' +emoji[cityscape_at_dusk]=$'\U1F306' +emoji[city_sunset]=$'\U1F306' +emoji[sunset]=$'\U1F307' +emoji[city_sunrise]=$'\U1F307' +emoji[bridge_at_night]=$'\U1F309' +emoji[hot_springs]=$'\U2668\UFE0F' +emoji[hotsprings]=$'\U2668\UFE0F' +emoji[hot_springs_unqualified]=$'\U2668' +emoji[carousel_horse]=$'\U1F3A0' +emoji[ferris_wheel]=$'\U1F3A1' +emoji[roller_coaster]=$'\U1F3A2' +emoji[barber_pole]=$'\U1F488' +emoji[barber]=$'\U1F488' +emoji[circus_tent]=$'\U1F3AA' +emoji[locomotive]=$'\U1F682' +emoji[steam_locomotive]=$'\U1F682' +emoji[railway_car]=$'\U1F683' +emoji[high_speed_train]=$'\U1F684' +emoji[bullettrain_side]=$'\U1F684' +emoji[bullet_train]=$'\U1F685' +emoji[bullettrain_front]=$'\U1F685' +emoji[bullet_train_1]=$'\U1F686' +emoji[train2]=$'\U1F686' +emoji[metro]=$'\U1F687' +emoji[light_rail]=$'\U1F688' +emoji[station]=$'\U1F689' +emoji[tram]=$'\U1F68A' +emoji[monorail]=$'\U1F69D' +emoji[mountain_railway]=$'\U1F69E' +emoji[tram_car]=$'\U1F68B' +emoji[train]=$'\U1F68B' +emoji[bus]=$'\U1F68C' +emoji[oncoming_bus]=$'\U1F68D' +emoji[trolleybus]=$'\U1F68E' +emoji[minibus]=$'\U1F690' +emoji[ambulance]=$'\U1F691' +emoji[fire_engine]=$'\U1F692' +emoji[police_car]=$'\U1F693' +emoji[oncoming_police_car]=$'\U1F694' +emoji[taxi]=$'\U1F695' +emoji[oncoming_taxi]=$'\U1F696' +emoji[automobile]=$'\U1F697' +emoji[car]=$'\U1F697' +emoji[red_car]=$'\U1F697' +emoji[oncoming_automobile]=$'\U1F698' +emoji[sport_utility_vehicle]=$'\U1F699' +emoji[blue_car]=$'\U1F699' +emoji[delivery_truck]=$'\U1F69A' +emoji[truck]=$'\U1F69A' +emoji[articulated_lorry]=$'\U1F69B' +emoji[tractor]=$'\U1F69C' +emoji[racing_car]=$'\U1F3CE\UFE0F' +emoji[racing_car_unqualified]=$'\U1F3CE' +emoji[motorcycle]=$'\U1F3CD\UFE0F' +emoji[motorcycle_unqualified]=$'\U1F3CD' +emoji[motor_scooter]=$'\U1F6F5' +emoji[manual_wheelchair]=$'\U1F9BD' +emoji[motorized_wheelchair]=$'\U1F9BC' +emoji[auto_rickshaw]=$'\U1F6FA' +emoji[bicycle]=$'\U1F6B2' +emoji[bike]=$'\U1F6B2' +emoji[kick_scooter]=$'\U1F6F4' +emoji[skateboard]=$'\U1F6F9' +emoji[bus_stop]=$'\U1F68F' +emoji[busstop]=$'\U1F68F' +emoji[motorway]=$'\U1F6E3\UFE0F' +emoji[motorway_unqualified]=$'\U1F6E3' +emoji[railway_track]=$'\U1F6E4\UFE0F' +emoji[railway_track_unqualified]=$'\U1F6E4' +emoji[oil_drum]=$'\U1F6E2\UFE0F' +emoji[oil_drum_unqualified]=$'\U1F6E2' +emoji[fuel_pump]=$'\U26FD' +emoji[fuelpump]=$'\U26FD' +emoji[police_car_light]=$'\U1F6A8' +emoji[rotating_light]=$'\U1F6A8' +emoji[horizontal_traffic_light]=$'\U1F6A5' +emoji[traffic_light]=$'\U1F6A5' +emoji[vertical_traffic_light]=$'\U1F6A6' +emoji[stop_sign]=$'\U1F6D1' +emoji[construction]=$'\U1F6A7' +emoji[anchor]=$'\U2693' +emoji[sailboat]=$'\U26F5' +emoji[boat]=$'\U26F5' +emoji[canoe]=$'\U1F6F6' +emoji[speedboat]=$'\U1F6A4' +emoji[passenger_ship]=$'\U1F6F3\UFE0F' +emoji[passenger_ship_unqualified]=$'\U1F6F3' +emoji[ferry]=$'\U26F4\UFE0F' +emoji[ferry_unqualified]=$'\U26F4' +emoji[motor_boat]=$'\U1F6E5\UFE0F' +emoji[motor_boat_unqualified]=$'\U1F6E5' +emoji[ship]=$'\U1F6A2' +emoji[airplane]=$'\U2708\UFE0F' +emoji[airplane_unqualified]=$'\U2708' +emoji[small_airplane]=$'\U1F6E9\UFE0F' +emoji[small_airplane_unqualified]=$'\U1F6E9' +emoji[airplane_departure]=$'\U1F6EB' +emoji[flight_departure]=$'\U1F6EB' +emoji[airplane_arrival]=$'\U1F6EC' +emoji[flight_arrival]=$'\U1F6EC' +emoji[parachute]=$'\U1FA82' +emoji[seat]=$'\U1F4BA' +emoji[helicopter]=$'\U1F681' +emoji[suspension_railway]=$'\U1F69F' +emoji[mountain_cableway]=$'\U1F6A0' +emoji[aerial_tramway]=$'\U1F6A1' +emoji[satellite]=$'\U1F6F0\UFE0F' +emoji[satellite_unqualified]=$'\U1F6F0' +emoji[artificial_satellite]=$'\U1F6F0' +emoji[rocket]=$'\U1F680' +emoji[flying_saucer]=$'\U1F6F8' +emoji[bellhop_bell]=$'\U1F6CE\UFE0F' +emoji[bellhop_bell_unqualified]=$'\U1F6CE' +emoji[luggage]=$'\U1F9F3' +emoji[hourglass_done]=$'\U231B' +emoji[hourglass]=$'\U231B' +emoji[hourglass_not_done]=$'\U23F3' +emoji[hourglass_flowing_sand]=$'\U23F3' +emoji[watch]=$'\U231A' +emoji[alarm_clock]=$'\U23F0' +emoji[stopwatch]=$'\U23F1\UFE0F' +emoji[stopwatch_unqualified]=$'\U23F1' +emoji[timer_clock]=$'\U23F2\UFE0F' +emoji[timer_clock_unqualified]=$'\U23F2' +emoji[mantelpiece_clock]=$'\U1F570\UFE0F' +emoji[mantelpiece_clock_unqualified]=$'\U1F570' +emoji[twelve_o_clock]=$'\U1F55B' +emoji[clock12]=$'\U1F55B' +emoji[twelve_thirty]=$'\U1F567' +emoji[clock1230]=$'\U1F567' +emoji[one_o_clock]=$'\U1F550' +emoji[clock1]=$'\U1F550' +emoji[one_thirty]=$'\U1F55C' +emoji[clock130]=$'\U1F55C' +emoji[two_o_clock]=$'\U1F551' +emoji[clock2]=$'\U1F551' +emoji[two_thirty]=$'\U1F55D' +emoji[clock230]=$'\U1F55D' +emoji[three_o_clock]=$'\U1F552' +emoji[clock3]=$'\U1F552' +emoji[three_thirty]=$'\U1F55E' +emoji[clock330]=$'\U1F55E' +emoji[four_o_clock]=$'\U1F553' +emoji[clock4]=$'\U1F553' +emoji[four_thirty]=$'\U1F55F' +emoji[clock430]=$'\U1F55F' +emoji[five_o_clock]=$'\U1F554' +emoji[clock5]=$'\U1F554' +emoji[five_thirty]=$'\U1F560' +emoji[clock530]=$'\U1F560' +emoji[six_o_clock]=$'\U1F555' +emoji[clock6]=$'\U1F555' +emoji[six_thirty]=$'\U1F561' +emoji[clock630]=$'\U1F561' +emoji[seven_o_clock]=$'\U1F556' +emoji[clock7]=$'\U1F556' +emoji[seven_thirty]=$'\U1F562' +emoji[clock730]=$'\U1F562' +emoji[eight_o_clock]=$'\U1F557' +emoji[clock8]=$'\U1F557' +emoji[eight_thirty]=$'\U1F563' +emoji[clock830]=$'\U1F563' +emoji[nine_o_clock]=$'\U1F558' +emoji[clock9]=$'\U1F558' +emoji[nine_thirty]=$'\U1F564' +emoji[clock930]=$'\U1F564' +emoji[ten_o_clock]=$'\U1F559' +emoji[clock10]=$'\U1F559' +emoji[ten_thirty]=$'\U1F565' +emoji[clock1030]=$'\U1F565' +emoji[eleven_o_clock]=$'\U1F55A' +emoji[clock11]=$'\U1F55A' +emoji[eleven_thirty]=$'\U1F566' +emoji[clock1130]=$'\U1F566' +emoji[new_moon]=$'\U1F311' +emoji[waxing_crescent_moon]=$'\U1F312' +emoji[first_quarter_moon]=$'\U1F313' +emoji[waxing_gibbous_moon]=$'\U1F314' +emoji[moon]=$'\U1F314' +emoji[full_moon]=$'\U1F315' +emoji[waning_gibbous_moon]=$'\U1F316' +emoji[last_quarter_moon]=$'\U1F317' +emoji[waning_crescent_moon]=$'\U1F318' +emoji[waning_crescent_moon_1]=$'\U1F319' +emoji[crescent_moon]=$'\U1F319' +emoji[new_moon_face]=$'\U1F31A' +emoji[new_moon_with_face]=$'\U1F31A' +emoji[first_quarter_moon_face]=$'\U1F31B' +emoji[first_quarter_moon_with_face]=$'\U1F31B' +emoji[last_quarter_moon_face]=$'\U1F31C' +emoji[last_quarter_moon_with_face]=$'\U1F31C' +emoji[thermometer]=$'\U1F321\UFE0F' +emoji[thermometer_unqualified]=$'\U1F321' +emoji[sun]=$'\U2600\UFE0F' +emoji[sunny]=$'\U2600\UFE0F' +emoji[sun_unqualified]=$'\U2600' +emoji[full_moon_face]=$'\U1F31D' +emoji[full_moon_with_face]=$'\U1F31D' +emoji[sun_with_face]=$'\U1F31E' +emoji[ringed_planet]=$'\U1FA90' +emoji[star]=$'\U2B50' +emoji[glowing_star]=$'\U1F31F' +emoji[star2]=$'\U1F31F' +emoji[shooting_star]=$'\U1F320' +emoji[stars]=$'\U1F320' +emoji[milky_way]=$'\U1F30C' +emoji[cloud]=$'\U2601\UFE0F' +emoji[cloud_unqualified]=$'\U2601' +emoji[sun_behind_cloud]=$'\U26C5' +emoji[partly_sunny]=$'\U26C5' +emoji[cloud_with_lightning_and_rain]=$'\U26C8\UFE0F' +emoji[cloud_with_lightning_and_rain_unqualified]=$'\U26C8' +emoji[sun_behind_small_cloud]=$'\U1F324\UFE0F' +emoji[sun_behind_small_cloud_unqualified]=$'\U1F324' +emoji[sun_behind_large_cloud]=$'\U1F325\UFE0F' +emoji[sun_behind_large_cloud_unqualified]=$'\U1F325' +emoji[sun_behind_rain_cloud]=$'\U1F326\UFE0F' +emoji[sun_behind_rain_cloud_unqualified]=$'\U1F326' +emoji[cloud_with_rain]=$'\U1F327\UFE0F' +emoji[cloud_with_rain_unqualified]=$'\U1F327' +emoji[cloud_with_snow]=$'\U1F328\UFE0F' +emoji[cloud_with_snow_unqualified]=$'\U1F328' +emoji[cloud_with_lightning]=$'\U1F329\UFE0F' +emoji[cloud_with_lightning_unqualified]=$'\U1F329' +emoji[tornado]=$'\U1F32A\UFE0F' +emoji[tornado_unqualified]=$'\U1F32A' +emoji[fog]=$'\U1F32B\UFE0F' +emoji[fog_unqualified]=$'\U1F32B' +emoji[wind_face]=$'\U1F32C\UFE0F' +emoji[wind_face_unqualified]=$'\U1F32C' +emoji[cyclone]=$'\U1F300' +emoji[rainbow]=$'\U1F308' +emoji[closed_umbrella]=$'\U1F302' +emoji[closed_umbrella_1]=$'\U2602\UFE0F' +emoji[open_umbrella]=$'\U2602\UFE0F' +emoji[umbrella_unqualified]=$'\U2602' +emoji[umbrella_with_rain_drops]=$'\U2614' +emoji[umbrella]=$'\U2614' +emoji[umbrella_on_ground]=$'\U26F1\UFE0F' +emoji[umbrella_on_ground_unqualified]=$'\U26F1' +emoji[parasol_on_ground]=$'\U26F1' +emoji[high_voltage]=$'\U26A1' +emoji[zap]=$'\U26A1' +emoji[snowflake]=$'\U2744\UFE0F' +emoji[snowflake_unqualified]=$'\U2744' +emoji[snowman]=$'\U2603\UFE0F' +emoji[snowman_with_snow]=$'\U2603\UFE0F' +emoji[snowman_unqualified]=$'\U2603' +emoji[snowman_without_snow]=$'\U26C4' +emoji[comet]=$'\U2604\UFE0F' +emoji[comet_unqualified]=$'\U2604' +emoji[fire]=$'\U1F525' +emoji[droplet]=$'\U1F4A7' +emoji[water_wave]=$'\U1F30A' +emoji[ocean]=$'\U1F30A' +emoji[jack_o_lantern]=$'\U1F383' +emoji[Christmas_tree]=$'\U1F384' +emoji[christmas_tree]=$'\U1F384' +emoji[fireworks]=$'\U1F386' +emoji[sparkler]=$'\U1F387' +emoji[firecracker]=$'\U1F9E8' +emoji[sparkles]=$'\U2728' +emoji[balloon]=$'\U1F388' +emoji[party_popper]=$'\U1F389' +emoji[tada]=$'\U1F389' +emoji[confetti_ball]=$'\U1F38A' +emoji[tanabata_tree]=$'\U1F38B' +emoji[pine_decoration]=$'\U1F38D' +emoji[bamboo]=$'\U1F38D' +emoji[Japanese_dolls]=$'\U1F38E' +emoji[dolls]=$'\U1F38E' +emoji[carp_streamer]=$'\U1F38F' +emoji[flags]=$'\U1F38F' +emoji[wind_chime]=$'\U1F390' +emoji[moon_viewing_ceremony]=$'\U1F391' +emoji[rice_scene]=$'\U1F391' +emoji[red_envelope]=$'\U1F9E7' +emoji[ribbon]=$'\U1F380' +emoji[wrapped_gift]=$'\U1F381' +emoji[gift]=$'\U1F381' +emoji[reminder_ribbon]=$'\U1F397\UFE0F' +emoji[reminder_ribbon_unqualified]=$'\U1F397' +emoji[admission_tickets]=$'\U1F39F\UFE0F' +emoji[admission_tickets_unqualified]=$'\U1F39F' +emoji[tickets]=$'\U1F39F' +emoji[admission_tickets_unqualified_1]=$'\U1F3AB' +emoji[ticket]=$'\U1F3AB' +emoji[military_medal]=$'\U1F396\UFE0F' +emoji[military_medal_unqualified]=$'\U1F396' +emoji[medal_military]=$'\U1F396' +emoji[trophy]=$'\U1F3C6' +emoji[sports_medal]=$'\U1F3C5' +emoji[medal_sports]=$'\U1F3C5' +emoji[1st_place_medal]=$'\U1F947' +emoji[2nd_place_medal]=$'\U1F948' +emoji[3rd_place_medal]=$'\U1F949' +emoji[soccer_ball]=$'\U26BD' +emoji[soccer]=$'\U26BD' +emoji[baseball]=$'\U26BE' +emoji[softball]=$'\U1F94E' +emoji[basketball]=$'\U1F3C0' +emoji[volleyball]=$'\U1F3D0' +emoji[american_football]=$'\U1F3C8' +emoji[football]=$'\U1F3C8' +emoji[rugby_football]=$'\U1F3C9' +emoji[tennis]=$'\U1F3BE' +emoji[flying_disc]=$'\U1F94F' +emoji[bowling]=$'\U1F3B3' +emoji[cricket_game]=$'\U1F3CF' +emoji[field_hockey]=$'\U1F3D1' +emoji[ice_hockey]=$'\U1F3D2' +emoji[lacrosse]=$'\U1F94D' +emoji[ping_pong]=$'\U1F3D3' +emoji[badminton]=$'\U1F3F8' +emoji[boxing_glove]=$'\U1F94A' +emoji[martial_arts_uniform]=$'\U1F94B' +emoji[goal_net]=$'\U1F945' +emoji[flag_in_hole]=$'\U26F3' +emoji[golf]=$'\U26F3' +emoji[ice_skate]=$'\U26F8\UFE0F' +emoji[ice_skate_unqualified]=$'\U26F8' +emoji[fishing_pole]=$'\U1F3A3' +emoji[fishing_pole_and_fish]=$'\U1F3A3' +emoji[diving_mask]=$'\U1F93F' +emoji[running_shirt]=$'\U1F3BD' +emoji[running_shirt_with_sash]=$'\U1F3BD' +emoji[skis]=$'\U1F3BF' +emoji[ski]=$'\U1F3BF' +emoji[sled]=$'\U1F6F7' +emoji[curling_stone]=$'\U1F94C' +emoji[direct_hit]=$'\U1F3AF' +emoji[dart]=$'\U1F3AF' +emoji[yo_yo]=$'\U1FA80' +emoji[kite]=$'\U1FA81' +emoji[pool_8_ball]=$'\U1F3B1' +emoji[8ball]=$'\U1F3B1' +emoji[crystal_ball]=$'\U1F52E' +emoji[nazar_amulet]=$'\U1F9FF' +emoji[video_game]=$'\U1F3AE' +emoji[joystick]=$'\U1F579\UFE0F' +emoji[joystick_unqualified]=$'\U1F579' +emoji[slot_machine]=$'\U1F3B0' +emoji[game_die]=$'\U1F3B2' +emoji[puzzle_piece]=$'\U1F9E9' +emoji[jigsaw]=$'\U1F9E9' +emoji[teddy_bear]=$'\U1F9F8' +emoji[spade_suit]=$'\U2660\UFE0F' +emoji[spades]=$'\U2660\UFE0F' +emoji[spade_suit_unqualified]=$'\U2660' +emoji[heart_suit]=$'\U2665\UFE0F' +emoji[hearts]=$'\U2665\UFE0F' +emoji[heart_suit_unqualified]=$'\U2665' +emoji[diamond_suit]=$'\U2666\UFE0F' +emoji[diamonds]=$'\U2666\UFE0F' +emoji[diamond_suit_unqualified]=$'\U2666' +emoji[club_suit]=$'\U2663\UFE0F' +emoji[clubs]=$'\U2663\UFE0F' +emoji[club_suit_unqualified]=$'\U2663' +emoji[chess_pawn]=$'\U265F\UFE0F' +emoji[chess_pawn_unqualified]=$'\U265F' +emoji[joker]=$'\U1F0CF' +emoji[black_joker]=$'\U1F0CF' +emoji[mahjong_red_dragon]=$'\U1F004' +emoji[mahjong]=$'\U1F004' +emoji[flower_playing_cards]=$'\U1F3B4' +emoji[performing_arts]=$'\U1F3AD' +emoji[framed_picture]=$'\U1F5BC\UFE0F' +emoji[framed_picture_unqualified]=$'\U1F5BC' +emoji[artist_palette]=$'\U1F3A8' +emoji[art]=$'\U1F3A8' +emoji[thread]=$'\U1F9F5' +emoji[yarn]=$'\U1F9F6' +emoji[glasses]=$'\U1F453' +emoji[eyeglasses]=$'\U1F453' +emoji[sunglasses]=$'\U1F576\UFE0F' +emoji[sunglasses_unqualified]=$'\U1F576' +emoji[dark_sunglasses]=$'\U1F576' +emoji[goggles]=$'\U1F97D' +emoji[lab_coat]=$'\U1F97C' +emoji[safety_vest]=$'\U1F9BA' +emoji[necktie]=$'\U1F454' +emoji[t_shirt]=$'\U1F455' +emoji[shirt]=$'\U1F455' +emoji[tshirt]=$'\U1F455' +emoji[jeans]=$'\U1F456' +emoji[scarf]=$'\U1F9E3' +emoji[gloves]=$'\U1F9E4' +emoji[coat]=$'\U1F9E5' +emoji[socks]=$'\U1F9E6' +emoji[dress]=$'\U1F457' +emoji[kimono]=$'\U1F458' +emoji[sari]=$'\U1F97B' +emoji[one_piece_swimsuit]=$'\U1FA71' +emoji[swim_brief]=$'\U1FA72' +emoji[shorts]=$'\U1FA73' +emoji[bikini]=$'\U1F459' +emoji[woman_s_clothes]=$'\U1F45A' +emoji[womans_clothes]=$'\U1F45A' +emoji[purse]=$'\U1F45B' +emoji[handbag]=$'\U1F45C' +emoji[clutch_bag]=$'\U1F45D' +emoji[pouch]=$'\U1F45D' +emoji[shopping_bags]=$'\U1F6CD\UFE0F' +emoji[shopping_bags_unqualified]=$'\U1F6CD' +emoji[shopping]=$'\U1F6CD' +emoji[backpack]=$'\U1F392' +emoji[school_satchel]=$'\U1F392' +emoji[man_s_shoe]=$'\U1F45E' +emoji[mans_shoe]=$'\U1F45E' +emoji[shoe]=$'\U1F45E' +emoji[running_shoe]=$'\U1F45F' +emoji[athletic_shoe]=$'\U1F45F' +emoji[hiking_boot]=$'\U1F97E' +emoji[flat_shoe]=$'\U1F97F' +emoji[high_heeled_shoe]=$'\U1F460' +emoji[high_heel]=$'\U1F460' +emoji[woman_s_sandal]=$'\U1F461' +emoji[sandal]=$'\U1F461' +emoji[ballet_shoes]=$'\U1FA70' +emoji[woman_s_boot]=$'\U1F462' +emoji[boot]=$'\U1F462' +emoji[crown]=$'\U1F451' +emoji[woman_s_hat]=$'\U1F452' +emoji[womans_hat]=$'\U1F452' +emoji[top_hat]=$'\U1F3A9' +emoji[tophat]=$'\U1F3A9' +emoji[graduation_cap]=$'\U1F393' +emoji[mortar_board]=$'\U1F393' +emoji[billed_cap]=$'\U1F9E2' +emoji[rescue_worker_s_helmet]=$'\U26D1\UFE0F' +emoji[rescue_worker_s_helmet_unqualified]=$'\U26D1' +emoji[rescue_worker_helmet]=$'\U26D1' +emoji[prayer_beads]=$'\U1F4FF' +emoji[lipstick]=$'\U1F484' +emoji[ring]=$'\U1F48D' +emoji[gem_stone]=$'\U1F48E' +emoji[gem]=$'\U1F48E' +emoji[muted_speaker]=$'\U1F507' +emoji[mute]=$'\U1F507' +emoji[speaker_low_volume]=$'\U1F508' +emoji[speaker]=$'\U1F508' +emoji[speaker_medium_volume]=$'\U1F509' +emoji[sound]=$'\U1F509' +emoji[speaker_high_volume]=$'\U1F50A' +emoji[loud_sound]=$'\U1F50A' +emoji[loudspeaker]=$'\U1F4E2' +emoji[megaphone]=$'\U1F4E3' +emoji[mega]=$'\U1F4E3' +emoji[postal_horn]=$'\U1F4EF' +emoji[bell]=$'\U1F514' +emoji[bell_with_slash]=$'\U1F515' +emoji[no_bell]=$'\U1F515' +emoji[musical_score]=$'\U1F3BC' +emoji[musical_note]=$'\U1F3B5' +emoji[musical_notes]=$'\U1F3B6' +emoji[notes]=$'\U1F3B6' +emoji[studio_microphone]=$'\U1F399\UFE0F' +emoji[studio_microphone_unqualified]=$'\U1F399' +emoji[level_slider]=$'\U1F39A\UFE0F' +emoji[level_slider_unqualified]=$'\U1F39A' +emoji[control_knobs]=$'\U1F39B\UFE0F' +emoji[control_knobs_unqualified]=$'\U1F39B' +emoji[microphone]=$'\U1F3A4' +emoji[headphone]=$'\U1F3A7' +emoji[headphones]=$'\U1F3A7' +emoji[radio]=$'\U1F4FB' +emoji[saxophone]=$'\U1F3B7' +emoji[guitar]=$'\U1F3B8' +emoji[musical_keyboard]=$'\U1F3B9' +emoji[trumpet]=$'\U1F3BA' +emoji[violin]=$'\U1F3BB' +emoji[banjo]=$'\U1FA95' +emoji[drum]=$'\U1F941' +emoji[mobile_phone]=$'\U1F4F1' +emoji[iphone]=$'\U1F4F1' +emoji[mobile_phone_with_arrow]=$'\U1F4F2' +emoji[calling]=$'\U1F4F2' +emoji[telephone]=$'\U260E\UFE0F' +emoji[phone]=$'\U260E\UFE0F' +emoji[telephone_unqualified]=$'\U260E' +emoji[telephone_receiver]=$'\U1F4DE' +emoji[pager]=$'\U1F4DF' +emoji[fax_machine]=$'\U1F4E0' +emoji[fax]=$'\U1F4E0' +emoji[battery]=$'\U1F50B' +emoji[electric_plug]=$'\U1F50C' +emoji[laptop_computer]=$'\U1F4BB' +emoji[computer]=$'\U1F4BB' +emoji[desktop_computer]=$'\U1F5A5\UFE0F' +emoji[desktop_computer_unqualified]=$'\U1F5A5' +emoji[printer]=$'\U1F5A8\UFE0F' +emoji[printer_unqualified]=$'\U1F5A8' +emoji[keyboard]=$'\U2328\UFE0F' +emoji[keyboard_unqualified]=$'\U2328' +emoji[computer_mouse]=$'\U1F5B1\UFE0F' +emoji[computer_mouse_unqualified]=$'\U1F5B1' +emoji[trackball]=$'\U1F5B2\UFE0F' +emoji[trackball_unqualified]=$'\U1F5B2' +emoji[computer_disk]=$'\U1F4BD' +emoji[minidisc]=$'\U1F4BD' +emoji[floppy_disk]=$'\U1F4BE' +emoji[optical_disk]=$'\U1F4BF' +emoji[cd]=$'\U1F4BF' +emoji[dvd]=$'\U1F4C0' +emoji[abacus]=$'\U1F9EE' +emoji[movie_camera]=$'\U1F3A5' +emoji[film_frames]=$'\U1F39E\UFE0F' +emoji[film_frames_unqualified]=$'\U1F39E' +emoji[film_strip]=$'\U1F39E' +emoji[film_projector]=$'\U1F4FD\UFE0F' +emoji[film_projector_unqualified]=$'\U1F4FD' +emoji[clapper_board]=$'\U1F3AC' +emoji[clapper]=$'\U1F3AC' +emoji[television]=$'\U1F4FA' +emoji[tv]=$'\U1F4FA' +emoji[camera]=$'\U1F4F7' +emoji[camera_with_flash]=$'\U1F4F8' +emoji[camera_flash]=$'\U1F4F8' +emoji[video_camera]=$'\U1F4F9' +emoji[videocassette]=$'\U1F4FC' +emoji[vhs]=$'\U1F4FC' +emoji[magnifying_glass_tilted_left]=$'\U1F50D' +emoji[mag]=$'\U1F50D' +emoji[magnifying_glass_tilted_right]=$'\U1F50E' +emoji[mag_right]=$'\U1F50E' +emoji[candle]=$'\U1F56F\UFE0F' +emoji[candle_unqualified]=$'\U1F56F' +emoji[light_bulb]=$'\U1F4A1' +emoji[bulb]=$'\U1F4A1' +emoji[flashlight]=$'\U1F526' +emoji[red_paper_lantern]=$'\U1F3EE' +emoji[izakaya_lantern]=$'\U1F3EE' +emoji[lantern]=$'\U1F3EE' +emoji[diya_lamp]=$'\U1FA94' +emoji[notebook_with_decorative_cover]=$'\U1F4D4' +emoji[closed_book]=$'\U1F4D5' +emoji[open_book]=$'\U1F4D6' +emoji[book]=$'\U1F4D6' +emoji[green_book]=$'\U1F4D7' +emoji[blue_book]=$'\U1F4D8' +emoji[orange_book]=$'\U1F4D9' +emoji[books]=$'\U1F4DA' +emoji[notebook]=$'\U1F4D3' +emoji[ledger]=$'\U1F4D2' +emoji[page_with_curl]=$'\U1F4C3' +emoji[scroll]=$'\U1F4DC' +emoji[page_facing_up]=$'\U1F4C4' +emoji[newspaper]=$'\U1F4F0' +emoji[rolled_up_newspaper]=$'\U1F5DE\UFE0F' +emoji[rolled_up_newspaper_unqualified]=$'\U1F5DE' +emoji[newspaper_roll]=$'\U1F5DE' +emoji[bookmark_tabs]=$'\U1F4D1' +emoji[bookmark_tabs_1]=$'\U1F516' +emoji[bookmark]=$'\U1F516' +emoji[label]=$'\U1F3F7\UFE0F' +emoji[label_unqualified]=$'\U1F3F7' +emoji[money_bag]=$'\U1F4B0' +emoji[moneybag]=$'\U1F4B0' +emoji[yen_banknote]=$'\U1F4B4' +emoji[yen]=$'\U1F4B4' +emoji[dollar_banknote]=$'\U1F4B5' +emoji[dollar]=$'\U1F4B5' +emoji[euro_banknote]=$'\U1F4B6' +emoji[euro]=$'\U1F4B6' +emoji[pound_banknote]=$'\U1F4B7' +emoji[pound]=$'\U1F4B7' +emoji[money_with_wings]=$'\U1F4B8' +emoji[credit_card]=$'\U1F4B3' +emoji[receipt]=$'\U1F9FE' +emoji[chart_increasing_with_yen]=$'\U1F4B9' +emoji[chart]=$'\U1F4B9' +emoji[currency_exchange]=$'\U1F4B1' +emoji[heavy_dollar_sign]=$'\U1F4B2' +emoji[envelope]=$'\U2709\UFE0F' +emoji[email]=$'\U2709\UFE0F' +emoji[envelope_unqualified]=$'\U2709' +emoji[e_mail]=$'\U1F4E7' +emoji[e-mail]=$'\U1F4E7' +emoji[incoming_envelope]=$'\U1F4E8' +emoji[envelope_with_arrow]=$'\U1F4E9' +emoji[outbox_tray]=$'\U1F4E4' +emoji[inbox_tray]=$'\U1F4E5' +emoji[package]=$'\U1F4E6' +emoji[closed_mailbox_with_raised_flag]=$'\U1F4EB' +emoji[mailbox]=$'\U1F4EB' +emoji[closed_mailbox_with_lowered_flag]=$'\U1F4EA' +emoji[mailbox_closed]=$'\U1F4EA' +emoji[open_mailbox_with_raised_flag]=$'\U1F4EC' +emoji[mailbox_with_mail]=$'\U1F4EC' +emoji[open_mailbox_with_lowered_flag]=$'\U1F4ED' +emoji[mailbox_with_no_mail]=$'\U1F4ED' +emoji[postbox]=$'\U1F4EE' +emoji[ballot_box_with_ballot]=$'\U1F5F3\UFE0F' +emoji[ballot_box_with_ballot_unqualified]=$'\U1F5F3' +emoji[ballot_box]=$'\U1F5F3' +emoji[pencil]=$'\U270F\UFE0F' +emoji[pencil2]=$'\U270F\UFE0F' +emoji[pencil_unqualified]=$'\U270F' +emoji[black_nib]=$'\U2712\UFE0F' +emoji[black_nib_unqualified]=$'\U2712' +emoji[fountain_pen]=$'\U1F58B\UFE0F' +emoji[fountain_pen_unqualified]=$'\U1F58B' +emoji[fountain_pen_unqualified_1]=$'\U1F58A\UFE0F' +emoji[fountain_pen_unqualified_2]=$'\U1F58A' +emoji[pen]=$'\U1F58A' +emoji[paintbrush]=$'\U1F58C\UFE0F' +emoji[paintbrush_unqualified]=$'\U1F58C' +emoji[crayon]=$'\U1F58D\UFE0F' +emoji[crayon_unqualified]=$'\U1F58D' +emoji[memo]=$'\U1F4DD' +emoji[briefcase]=$'\U1F4BC' +emoji[file_folder]=$'\U1F4C1' +emoji[open_file_folder]=$'\U1F4C2' +emoji[card_index_dividers]=$'\U1F5C2\UFE0F' +emoji[card_index_dividers_unqualified]=$'\U1F5C2' +emoji[calendar]=$'\U1F4C5' +emoji[date]=$'\U1F4C5' +emoji[tear_off_calendar]=$'\U1F4C6' +emoji[spiral_notepad]=$'\U1F5D2\UFE0F' +emoji[spiral_notepad_unqualified]=$'\U1F5D2' +emoji[spiral_calendar]=$'\U1F5D3\UFE0F' +emoji[spiral_calendar_unqualified]=$'\U1F5D3' +emoji[card_index]=$'\U1F4C7' +emoji[chart_increasing]=$'\U1F4C8' +emoji[chart_with_upwards_trend]=$'\U1F4C8' +emoji[chart_decreasing]=$'\U1F4C9' +emoji[chart_with_downwards_trend]=$'\U1F4C9' +emoji[bar_chart]=$'\U1F4CA' +emoji[clipboard]=$'\U1F4CB' +emoji[pushpin]=$'\U1F4CC' +emoji[round_pushpin]=$'\U1F4CD' +emoji[paperclip]=$'\U1F4CE' +emoji[linked_paperclips]=$'\U1F587\UFE0F' +emoji[linked_paperclips_unqualified]=$'\U1F587' +emoji[paperclips]=$'\U1F587' +emoji[straight_ruler]=$'\U1F4CF' +emoji[triangular_ruler]=$'\U1F4D0' +emoji[scissors]=$'\U2702\UFE0F' +emoji[scissors_unqualified]=$'\U2702' +emoji[card_file_box]=$'\U1F5C3\UFE0F' +emoji[card_file_box_unqualified]=$'\U1F5C3' +emoji[file_cabinet]=$'\U1F5C4\UFE0F' +emoji[file_cabinet_unqualified]=$'\U1F5C4' +emoji[wastebasket]=$'\U1F5D1\UFE0F' +emoji[wastebasket_unqualified]=$'\U1F5D1' +emoji[locked]=$'\U1F512' +emoji[lock]=$'\U1F512' +emoji[unlocked]=$'\U1F513' +emoji[unlock]=$'\U1F513' +emoji[locked_with_pen]=$'\U1F50F' +emoji[lock_with_ink_pen]=$'\U1F50F' +emoji[locked_with_key]=$'\U1F510' +emoji[closed_lock_with_key]=$'\U1F510' +emoji[locked_with_key_1]=$'\U1F511' +emoji[key]=$'\U1F511' +emoji[old_key]=$'\U1F5DD\UFE0F' +emoji[old_key_unqualified]=$'\U1F5DD' +emoji[hammer]=$'\U1F528' +emoji[axe]=$'\U1FA93' +emoji[pick]=$'\U26CF\UFE0F' +emoji[pick_unqualified]=$'\U26CF' +emoji[hammer_and_pick]=$'\U2692\UFE0F' +emoji[hammer_and_pick_unqualified]=$'\U2692' +emoji[hammer_and_wrench]=$'\U1F6E0\UFE0F' +emoji[hammer_and_wrench_unqualified]=$'\U1F6E0' +emoji[dagger]=$'\U1F5E1\UFE0F' +emoji[dagger_unqualified]=$'\U1F5E1' +emoji[crossed_swords]=$'\U2694\UFE0F' +emoji[crossed_swords_unqualified]=$'\U2694' +emoji[pistol]=$'\U1F52B' +emoji[gun]=$'\U1F52B' +emoji[bow_and_arrow]=$'\U1F3F9' +emoji[shield]=$'\U1F6E1\UFE0F' +emoji[shield_unqualified]=$'\U1F6E1' +emoji[wrench]=$'\U1F527' +emoji[nut_and_bolt]=$'\U1F529' +emoji[gear]=$'\U2699\UFE0F' +emoji[gear_unqualified]=$'\U2699' +emoji[clamp]=$'\U1F5DC\UFE0F' +emoji[clamp_unqualified]=$'\U1F5DC' +emoji[balance_scale]=$'\U2696\UFE0F' +emoji[balance_scale_unqualified]=$'\U2696' +emoji[probing_cane]=$'\U1F9AF' +emoji[link]=$'\U1F517' +emoji[chains]=$'\U26D3\UFE0F' +emoji[chains_unqualified]=$'\U26D3' +emoji[toolbox]=$'\U1F9F0' +emoji[magnet]=$'\U1F9F2' +emoji[alembic]=$'\U2697\UFE0F' +emoji[alembic_unqualified]=$'\U2697' +emoji[test_tube]=$'\U1F9EA' +emoji[petri_dish]=$'\U1F9EB' +emoji[dna]=$'\U1F9EC' +emoji[microscope]=$'\U1F52C' +emoji[telescope]=$'\U1F52D' +emoji[satellite_antenna]=$'\U1F4E1' +emoji[syringe]=$'\U1F489' +emoji[drop_of_blood]=$'\U1FA78' +emoji[pill]=$'\U1F48A' +emoji[adhesive_bandage]=$'\U1FA79' +emoji[stethoscope]=$'\U1FA7A' +emoji[door]=$'\U1F6AA' +emoji[bed]=$'\U1F6CF\UFE0F' +emoji[bed_unqualified]=$'\U1F6CF' +emoji[couch_and_lamp]=$'\U1F6CB\UFE0F' +emoji[couch_and_lamp_unqualified]=$'\U1F6CB' +emoji[chair]=$'\U1FA91' +emoji[toilet]=$'\U1F6BD' +emoji[shower]=$'\U1F6BF' +emoji[bathtub]=$'\U1F6C1' +emoji[razor]=$'\U1FA92' +emoji[lotion_bottle]=$'\U1F9F4' +emoji[safety_pin]=$'\U1F9F7' +emoji[broom]=$'\U1F9F9' +emoji[basket]=$'\U1F9FA' +emoji[roll_of_paper]=$'\U1F9FB' +emoji[soap]=$'\U1F9FC' +emoji[sponge]=$'\U1F9FD' +emoji[fire_extinguisher]=$'\U1F9EF' +emoji[shopping_cart]=$'\U1F6D2' +emoji[cigarette]=$'\U1F6AC' +emoji[smoking]=$'\U1F6AC' +emoji[coffin]=$'\U26B0\UFE0F' +emoji[coffin_unqualified]=$'\U26B0' +emoji[funeral_urn]=$'\U26B1\UFE0F' +emoji[funeral_urn_unqualified]=$'\U26B1' +emoji[moai]=$'\U1F5FF' +emoji[moyai]=$'\U1F5FF' +emoji[ATM_sign]=$'\U1F3E7' +emoji[atm]=$'\U1F3E7' +emoji[litter_in_bin_sign]=$'\U1F6AE' +emoji[put_litter_in_its_place]=$'\U1F6AE' +emoji[potable_water]=$'\U1F6B0' +emoji[wheelchair_symbol]=$'\U267F' +emoji[wheelchair]=$'\U267F' +emoji[men_s_room]=$'\U1F6B9' +emoji[mens]=$'\U1F6B9' +emoji[women_s_room]=$'\U1F6BA' +emoji[womens]=$'\U1F6BA' +emoji[restroom]=$'\U1F6BB' +emoji[baby_symbol]=$'\U1F6BC' +emoji[water_closet]=$'\U1F6BE' +emoji[wc]=$'\U1F6BE' +emoji[passport_control]=$'\U1F6C2' +emoji[customs]=$'\U1F6C3' +emoji[baggage_claim]=$'\U1F6C4' +emoji[left_luggage]=$'\U1F6C5' +emoji[warning]=$'\U26A0\UFE0F' +emoji[warning_unqualified]=$'\U26A0' +emoji[children_crossing]=$'\U1F6B8' +emoji[no_entry]=$'\U26D4' +emoji[prohibited]=$'\U1F6AB' +emoji[no_entry_sign]=$'\U1F6AB' +emoji[no_bicycles]=$'\U1F6B3' +emoji[no_smoking]=$'\U1F6AD' +emoji[no_littering]=$'\U1F6AF' +emoji[do_not_litter]=$'\U1F6AF' +emoji[non_potable_water]=$'\U1F6B1' +emoji[non-potable_water]=$'\U1F6B1' +emoji[no_pedestrians]=$'\U1F6B7' +emoji[no_mobile_phones]=$'\U1F4F5' +emoji[no_one_under_eighteen]=$'\U1F51E' +emoji[underage]=$'\U1F51E' +emoji[radioactive]=$'\U2622\UFE0F' +emoji[radioactive_unqualified]=$'\U2622' +emoji[biohazard]=$'\U2623\UFE0F' +emoji[biohazard_unqualified]=$'\U2623' +emoji[up_arrow]=$'\U2B06\UFE0F' +emoji[arrow_up]=$'\U2B06\UFE0F' +emoji[up_arrow_unqualified]=$'\U2B06' +emoji[up_right_arrow]=$'\U2197\UFE0F' +emoji[arrow_upper_right]=$'\U2197\UFE0F' +emoji[up_right_arrow_unqualified]=$'\U2197' +emoji[up_right_arrow_unqualified_1]=$'\U27A1\UFE0F' +emoji[arrow_right]=$'\U27A1\UFE0F' +emoji[up_right_arrow_unqualified_2]=$'\U27A1' +emoji[down_right_arrow]=$'\U2198\UFE0F' +emoji[arrow_lower_right]=$'\U2198\UFE0F' +emoji[down_right_arrow_unqualified]=$'\U2198' +emoji[down_arrow]=$'\U2B07\UFE0F' +emoji[arrow_down]=$'\U2B07\UFE0F' +emoji[down_arrow_unqualified]=$'\U2B07' +emoji[down_left_arrow]=$'\U2199\UFE0F' +emoji[arrow_lower_left]=$'\U2199\UFE0F' +emoji[down_left_arrow_unqualified]=$'\U2199' +emoji[down_left_arrow_unqualified_1]=$'\U2B05\UFE0F' +emoji[arrow_left]=$'\U2B05\UFE0F' +emoji[down_left_arrow_unqualified_2]=$'\U2B05' +emoji[up_left_arrow]=$'\U2196\UFE0F' +emoji[arrow_upper_left]=$'\U2196\UFE0F' +emoji[up_left_arrow_unqualified]=$'\U2196' +emoji[up_down_arrow]=$'\U2195\UFE0F' +emoji[arrow_up_down]=$'\U2195\UFE0F' +emoji[up_down_arrow_unqualified]=$'\U2195' +emoji[left_right_arrow]=$'\U2194\UFE0F' +emoji[left_right_arrow_unqualified]=$'\U2194' +emoji[right_arrow_curving_left]=$'\U21A9\UFE0F' +emoji[leftwards_arrow_with_hook]=$'\U21A9\UFE0F' +emoji[right_arrow_curving_left_unqualified]=$'\U21A9' +emoji[left_arrow_curving_right]=$'\U21AA\UFE0F' +emoji[arrow_right_hook]=$'\U21AA\UFE0F' +emoji[left_arrow_curving_right_unqualified]=$'\U21AA' +emoji[right_arrow_curving_up]=$'\U2934\UFE0F' +emoji[arrow_heading_up]=$'\U2934\UFE0F' +emoji[right_arrow_curving_up_unqualified]=$'\U2934' +emoji[right_arrow_curving_down]=$'\U2935\UFE0F' +emoji[arrow_heading_down]=$'\U2935\UFE0F' +emoji[right_arrow_curving_down_unqualified]=$'\U2935' +emoji[clockwise_vertical_arrows]=$'\U1F503' +emoji[arrows_clockwise]=$'\U1F503' +emoji[counterclockwise_arrows_button]=$'\U1F504' +emoji[arrows_counterclockwise]=$'\U1F504' +emoji[BACK_arrow]=$'\U1F519' +emoji[back]=$'\U1F519' +emoji[END_arrow]=$'\U1F51A' +emoji[end]=$'\U1F51A' +emoji[ON_arrow]=$'\U1F51B' +emoji[on]=$'\U1F51B' +emoji[SOON_arrow]=$'\U1F51C' +emoji[soon]=$'\U1F51C' +emoji[TOP_arrow]=$'\U1F51D' +emoji[top]=$'\U1F51D' +emoji[place_of_worship]=$'\U1F6D0' +emoji[atom_symbol]=$'\U269B\UFE0F' +emoji[atom_symbol_unqualified]=$'\U269B' +emoji[atom_symbol_unqualified_1]=$'\U1F549\UFE0F' +emoji[om_unqualified]=$'\U1F549' +emoji[om]=$'\U1F549' +emoji[star_of_David]=$'\U2721\UFE0F' +emoji[star_of_david]=$'\U2721\UFE0F' +emoji[star_of_David_unqualified]=$'\U2721' +emoji[wheel_of_dharma]=$'\U2638\UFE0F' +emoji[wheel_of_dharma_unqualified]=$'\U2638' +emoji[yin_yang]=$'\U262F\UFE0F' +emoji[yin_yang_unqualified]=$'\U262F' +emoji[latin_cross]=$'\U271D\UFE0F' +emoji[latin_cross_unqualified]=$'\U271D' +emoji[orthodox_cross]=$'\U2626\UFE0F' +emoji[orthodox_cross_unqualified]=$'\U2626' +emoji[star_and_crescent]=$'\U262A\UFE0F' +emoji[star_and_crescent_unqualified]=$'\U262A' +emoji[peace_symbol]=$'\U262E\UFE0F' +emoji[peace_symbol_unqualified]=$'\U262E' +emoji[menorah]=$'\U1F54E' +emoji[dotted_six_pointed_star]=$'\U1F52F' +emoji[six_pointed_star]=$'\U1F52F' +emoji[Aries]=$'\U2648' +emoji[aries]=$'\U2648' +emoji[Taurus]=$'\U2649' +emoji[taurus]=$'\U2649' +emoji[Gemini]=$'\U264A' +emoji[gemini]=$'\U264A' +emoji[Cancer]=$'\U264B' +emoji[cancer]=$'\U264B' +emoji[Leo]=$'\U264C' +emoji[leo]=$'\U264C' +emoji[Virgo]=$'\U264D' +emoji[virgo]=$'\U264D' +emoji[Libra]=$'\U264E' +emoji[libra]=$'\U264E' +emoji[Scorpio]=$'\U264F' +emoji[scorpius]=$'\U264F' +emoji[Sagittarius]=$'\U2650' +emoji[sagittarius]=$'\U2650' +emoji[Capricorn]=$'\U2651' +emoji[capricorn]=$'\U2651' +emoji[Aquarius]=$'\U2652' +emoji[aquarius]=$'\U2652' +emoji[Pisces]=$'\U2653' +emoji[pisces]=$'\U2653' +emoji[Ophiuchus]=$'\U26CE' +emoji[ophiuchus]=$'\U26CE' +emoji[shuffle_tracks_button]=$'\U1F500' +emoji[twisted_rightwards_arrows]=$'\U1F500' +emoji[repeat_button]=$'\U1F501' +emoji[repeat]=$'\U1F501' +emoji[repeat_single_button]=$'\U1F502' +emoji[repeat_one]=$'\U1F502' +emoji[play_button]=$'\U25B6\UFE0F' +emoji[arrow_forward]=$'\U25B6\UFE0F' +emoji[play_button_unqualified]=$'\U25B6' +emoji[fast_forward_button]=$'\U23E9' +emoji[fast_forward]=$'\U23E9' +emoji[next_track_button]=$'\U23ED\UFE0F' +emoji[next_track_button_unqualified]=$'\U23ED' +emoji[play_or_pause_button]=$'\U23EF\UFE0F' +emoji[play_or_pause_button_unqualified]=$'\U23EF' +emoji[reverse_button]=$'\U25C0\UFE0F' +emoji[arrow_backward]=$'\U25C0\UFE0F' +emoji[reverse_button_unqualified]=$'\U25C0' +emoji[fast_reverse_button]=$'\U23EA' +emoji[rewind]=$'\U23EA' +emoji[last_track_button]=$'\U23EE\UFE0F' +emoji[last_track_button_unqualified]=$'\U23EE' +emoji[previous_track_button]=$'\U23EE' +emoji[upwards_button]=$'\U1F53C' +emoji[arrow_up_small]=$'\U1F53C' +emoji[fast_up_button]=$'\U23EB' +emoji[arrow_double_up]=$'\U23EB' +emoji[downwards_button]=$'\U1F53D' +emoji[arrow_down_small]=$'\U1F53D' +emoji[fast_down_button]=$'\U23EC' +emoji[arrow_double_down]=$'\U23EC' +emoji[pause_button]=$'\U23F8\UFE0F' +emoji[pause_button_unqualified]=$'\U23F8' +emoji[stop_button]=$'\U23F9\UFE0F' +emoji[stop_button_unqualified]=$'\U23F9' +emoji[record_button]=$'\U23FA\UFE0F' +emoji[record_button_unqualified]=$'\U23FA' +emoji[eject_button]=$'\U23CF\UFE0F' +emoji[eject_button_unqualified]=$'\U23CF' +emoji[cinema]=$'\U1F3A6' +emoji[dim_button]=$'\U1F505' +emoji[low_brightness]=$'\U1F505' +emoji[bright_button]=$'\U1F506' +emoji[high_brightness]=$'\U1F506' +emoji[antenna_bars]=$'\U1F4F6' +emoji[signal_strength]=$'\U1F4F6' +emoji[vibration_mode]=$'\U1F4F3' +emoji[mobile_phone_off]=$'\U1F4F4' +emoji[female_sign]=$'\U2640\UFE0F' +emoji[female_sign_unqualified]=$'\U2640' +emoji[female_sign_unqualified_1]=$'\U2642\UFE0F' +emoji[male_sign]=$'\U2642\UFE0F' +emoji[female_sign_unqualified_2]=$'\U2642' +emoji[medical_symbol]=$'\U2695\UFE0F' +emoji[medical_symbol_unqualified]=$'\U2695' +emoji[infinity]=$'\U267E\UFE0F' +emoji[infinity_unqualified]=$'\U267E' +emoji[recycling_symbol]=$'\U267B\UFE0F' +emoji[recycle]=$'\U267B\UFE0F' +emoji[recycling_symbol_unqualified]=$'\U267B' +emoji[fleur_de_lis]=$'\U269C\UFE0F' +emoji[fleur_de_lis_unqualified]=$'\U269C' +emoji[trident_emblem]=$'\U1F531' +emoji[trident]=$'\U1F531' +emoji[name_badge]=$'\U1F4DB' +emoji[Japanese_symbol_for_beginner]=$'\U1F530' +emoji[beginner]=$'\U1F530' +emoji[hollow_red_circle]=$'\U2B55' +emoji[o]=$'\U2B55' +emoji[check_mark_button]=$'\U2705' +emoji[white_check_mark]=$'\U2705' +emoji[check_box_with_check]=$'\U2611\UFE0F' +emoji[ballot_box_with_check]=$'\U2611\UFE0F' +emoji[check_box_with_check_unqualified]=$'\U2611' +emoji[check_mark]=$'\U2714\UFE0F' +emoji[heavy_check_mark]=$'\U2714\UFE0F' +emoji[check_mark_unqualified]=$'\U2714' +emoji[multiplication_sign]=$'\U2716\UFE0F' +emoji[heavy_multiplication_x]=$'\U2716\UFE0F' +emoji[multiplication_sign_unqualified]=$'\U2716' +emoji[cross_mark]=$'\U274C' +emoji[x]=$'\U274C' +emoji[cross_mark_button]=$'\U274E' +emoji[negative_squared_cross_mark]=$'\U274E' +emoji[plus_sign]=$'\U2795' +emoji[heavy_plus_sign]=$'\U2795' +emoji[minus_sign]=$'\U2796' +emoji[heavy_minus_sign]=$'\U2796' +emoji[division_sign]=$'\U2797' +emoji[heavy_division_sign]=$'\U2797' +emoji[curly_loop]=$'\U27B0' +emoji[double_curly_loop]=$'\U27BF' +emoji[loop]=$'\U27BF' +emoji[part_alternation_mark]=$'\U303D\UFE0F' +emoji[part_alternation_mark_unqualified]=$'\U303D' +emoji[eight_spoked_asterisk]=$'\U2733\UFE0F' +emoji[eight_spoked_asterisk_unqualified]=$'\U2733' +emoji[eight_pointed_star]=$'\U2734\UFE0F' +emoji[eight_pointed_black_star]=$'\U2734\UFE0F' +emoji[eight_pointed_star_unqualified]=$'\U2734' +emoji[sparkle]=$'\U2747\UFE0F' +emoji[sparkle_unqualified]=$'\U2747' +emoji[double_exclamation_mark]=$'\U203C\UFE0F' +emoji[bangbang]=$'\U203C\UFE0F' +emoji[double_exclamation_mark_unqualified]=$'\U203C' +emoji[exclamation_question_mark]=$'\U2049\UFE0F' +emoji[interrobang]=$'\U2049\UFE0F' +emoji[exclamation_question_mark_unqualified]=$'\U2049' +emoji[exclamation_question_mark_unqualified_1]=$'\U2753' +emoji[question]=$'\U2753' +emoji[white_question_mark]=$'\U2754' +emoji[grey_question]=$'\U2754' +emoji[white_exclamation_mark]=$'\U2755' +emoji[grey_exclamation]=$'\U2755' +emoji[white_exclamation_mark_1]=$'\U2757' +emoji[exclamation]=$'\U2757' +emoji[heavy_exclamation_mark]=$'\U2757' +emoji[wavy_dash]=$'\U3030\UFE0F' +emoji[wavy_dash_unqualified]=$'\U3030' +emoji[copyright]=$'\U00A9\UFE0F' +emoji[copyright_unqualified]=$'\U00A9' +emoji[registered]=$'\U00AE\UFE0F' +emoji[registered_unqualified]=$'\U00AE' +emoji[trade_mark]=$'\U2122\UFE0F' +emoji[tm]=$'\U2122\UFE0F' +emoji[trade_mark_unqualified]=$'\U2122' +emoji[keycap_#]=$'\U0023\UFE0F\U20E3' +emoji[hash]=$'\U0023\UFE0F\U20E3' +emoji[keycap_#_unqualified]=$'\U0023\U20E3' +emoji[keycap_*]=$'\U002A\UFE0F\U20E3' +emoji[asterisk]=$'\U002A\UFE0F\U20E3' +emoji[keycap_*_unqualified]=$'\U002A\U20E3' +emoji[keycap_0]=$'\U0030\UFE0F\U20E3' +emoji[zero]=$'\U0030\UFE0F\U20E3' +emoji[keycap_0_unqualified]=$'\U0030\U20E3' +emoji[keycap_1]=$'\U0031\UFE0F\U20E3' +emoji[one]=$'\U0031\UFE0F\U20E3' +emoji[keycap_1_unqualified]=$'\U0031\U20E3' +emoji[keycap_2]=$'\U0032\UFE0F\U20E3' +emoji[two]=$'\U0032\UFE0F\U20E3' +emoji[keycap_2_unqualified]=$'\U0032\U20E3' +emoji[keycap_3]=$'\U0033\UFE0F\U20E3' +emoji[three]=$'\U0033\UFE0F\U20E3' +emoji[keycap_3_unqualified]=$'\U0033\U20E3' +emoji[keycap_4]=$'\U0034\UFE0F\U20E3' +emoji[four]=$'\U0034\UFE0F\U20E3' +emoji[keycap_4_unqualified]=$'\U0034\U20E3' +emoji[keycap_5]=$'\U0035\UFE0F\U20E3' +emoji[five]=$'\U0035\UFE0F\U20E3' +emoji[keycap_5_unqualified]=$'\U0035\U20E3' +emoji[keycap_6]=$'\U0036\UFE0F\U20E3' +emoji[six]=$'\U0036\UFE0F\U20E3' +emoji[keycap_6_unqualified]=$'\U0036\U20E3' +emoji[keycap_7]=$'\U0037\UFE0F\U20E3' +emoji[seven]=$'\U0037\UFE0F\U20E3' +emoji[keycap_7_unqualified]=$'\U0037\U20E3' +emoji[keycap_8]=$'\U0038\UFE0F\U20E3' +emoji[eight]=$'\U0038\UFE0F\U20E3' +emoji[keycap_8_unqualified]=$'\U0038\U20E3' +emoji[keycap_9]=$'\U0039\UFE0F\U20E3' +emoji[nine]=$'\U0039\UFE0F\U20E3' +emoji[keycap_9_unqualified]=$'\U0039\U20E3' +emoji[keycap_10]=$'\U1F51F' +emoji[keycap_ten]=$'\U1F51F' +emoji[input_latin_uppercase]=$'\U1F520' +emoji[capital_abcd]=$'\U1F520' +emoji[input_latin_lowercase]=$'\U1F521' +emoji[abcd]=$'\U1F521' +emoji[input_numbers]=$'\U1F522' +emoji[1234]=$'\U1F522' +emoji[input_symbols]=$'\U1F523' +emoji[symbols]=$'\U1F523' +emoji[input_latin_letters]=$'\U1F524' +emoji[abc]=$'\U1F524' +emoji[A_button_blood_type_]=$'\U1F170\UFE0F' +emoji[a]=$'\U1F170\UFE0F' +emoji[A_button_blood_type__unqualified]=$'\U1F170' +emoji[AB_button_blood_type_]=$'\U1F18E' +emoji[ab]=$'\U1F18E' +emoji[AB_button_blood_type__1]=$'\U1F171\UFE0F' +emoji[b]=$'\U1F171\UFE0F' +emoji[B_button_blood_type__unqualified]=$'\U1F171' +emoji[CL_button]=$'\U1F191' +emoji[cl]=$'\U1F191' +emoji[COOL_button]=$'\U1F192' +emoji[cool]=$'\U1F192' +emoji[FREE_button]=$'\U1F193' +emoji[free]=$'\U1F193' +emoji[information]=$'\U2139\UFE0F' +emoji[information_source]=$'\U2139\UFE0F' +emoji[information_unqualified]=$'\U2139' +emoji[ID_button]=$'\U1F194' +emoji[id]=$'\U1F194' +emoji[circled_M]=$'\U24C2\UFE0F' +emoji[m]=$'\U24C2\UFE0F' +emoji[circled_M_unqualified]=$'\U24C2' +emoji[NEW_button]=$'\U1F195' +emoji[new]=$'\U1F195' +emoji[NG_button]=$'\U1F196' +emoji[ng]=$'\U1F196' +emoji[O_button_blood_type_]=$'\U1F17E\UFE0F' +emoji[o2]=$'\U1F17E\UFE0F' +emoji[O_button_blood_type__unqualified]=$'\U1F17E' +emoji[OK_button]=$'\U1F197' +emoji[ok]=$'\U1F197' +emoji[P_button]=$'\U1F17F\UFE0F' +emoji[parking]=$'\U1F17F\UFE0F' +emoji[P_button_unqualified]=$'\U1F17F' +emoji[SOS_button]=$'\U1F198' +emoji[sos]=$'\U1F198' +emoji[UP_button]=$'\U1F199' +emoji[up]=$'\U1F199' +emoji[VS_button]=$'\U1F19A' +emoji[vs]=$'\U1F19A' +emoji[Japanese_here_button]=$'\U1F201' +emoji[koko]=$'\U1F201' +emoji[Japanese_service_charge_button]=$'\U1F202\UFE0F' +emoji[sa]=$'\U1F202\UFE0F' +emoji[Japanese_service_charge_button_unqualified]=$'\U1F202' +emoji[Japanese_monthly_amount_button]=$'\U1F237\UFE0F' +emoji[u6708]=$'\U1F237\UFE0F' +emoji[Japanese_monthly_amount_button_unqualified]=$'\U1F237' +emoji[Japanese_not_free_of_charge_button]=$'\U1F236' +emoji[u6709]=$'\U1F236' +emoji[Japanese_reserved_button]=$'\U1F22F' +emoji[u6307]=$'\U1F22F' +emoji[Japanese_bargain_button]=$'\U1F250' +emoji[ideograph_advantage]=$'\U1F250' +emoji[Japanese_discount_button]=$'\U1F239' +emoji[u5272]=$'\U1F239' +emoji[Japanese_free_of_charge_button]=$'\U1F21A' +emoji[u7121]=$'\U1F21A' +emoji[Japanese_prohibited_button]=$'\U1F232' +emoji[u7981]=$'\U1F232' +emoji[Japanese_acceptable_button]=$'\U1F251' +emoji[accept]=$'\U1F251' +emoji[Japanese_application_button]=$'\U1F238' +emoji[u7533]=$'\U1F238' +emoji[Japanese_passing_grade_button]=$'\U1F234' +emoji[u5408]=$'\U1F234' +emoji[Japanese_vacancy_button]=$'\U1F233' +emoji[u7a7a]=$'\U1F233' +emoji[Japanese_congratulations_button]=$'\U3297\UFE0F' +emoji[congratulations]=$'\U3297\UFE0F' +emoji[Japanese_congratulations_button_unqualified]=$'\U3297' +emoji[Japanese_secret_button]=$'\U3299\UFE0F' +emoji[secret]=$'\U3299\UFE0F' +emoji[Japanese_secret_button_unqualified]=$'\U3299' +emoji[Japanese_open_for_business_button]=$'\U1F23A' +emoji[u55b6]=$'\U1F23A' +emoji[Japanese_no_vacancy_button]=$'\U1F235' +emoji[u6e80]=$'\U1F235' +emoji[red_circle]=$'\U1F534' +emoji[orange_circle]=$'\U1F7E0' +emoji[yellow_circle]=$'\U1F7E1' +emoji[green_circle]=$'\U1F7E2' +emoji[blue_circle]=$'\U1F535' +emoji[large_blue_circle]=$'\U1F535' +emoji[purple_circle]=$'\U1F7E3' +emoji[brown_circle]=$'\U1F7E4' +emoji[black_circle]=$'\U26AB' +emoji[white_circle]=$'\U26AA' +emoji[red_square]=$'\U1F7E5' +emoji[orange_square]=$'\U1F7E7' +emoji[yellow_square]=$'\U1F7E8' +emoji[green_square]=$'\U1F7E9' +emoji[blue_square]=$'\U1F7E6' +emoji[purple_square]=$'\U1F7EA' +emoji[brown_square]=$'\U1F7EB' +emoji[black_large_square]=$'\U2B1B' +emoji[white_large_square]=$'\U2B1C' +emoji[black_medium_square]=$'\U25FC\UFE0F' +emoji[black_medium_square_unqualified]=$'\U25FC' +emoji[white_medium_square]=$'\U25FB\UFE0F' +emoji[white_medium_square_unqualified]=$'\U25FB' +emoji[black_medium_small_square]=$'\U25FE' +emoji[white_medium_small_square]=$'\U25FD' +emoji[black_small_square]=$'\U25AA\UFE0F' +emoji[black_small_square_unqualified]=$'\U25AA' +emoji[white_small_square]=$'\U25AB\UFE0F' +emoji[white_small_square_unqualified]=$'\U25AB' +emoji[large_orange_diamond]=$'\U1F536' +emoji[large_blue_diamond]=$'\U1F537' +emoji[small_orange_diamond]=$'\U1F538' +emoji[small_blue_diamond]=$'\U1F539' +emoji[red_triangle_pointed_up]=$'\U1F53A' +emoji[small_red_triangle]=$'\U1F53A' +emoji[red_triangle_pointed_down]=$'\U1F53B' +emoji[small_red_triangle_down]=$'\U1F53B' +emoji[diamond_with_a_dot]=$'\U1F4A0' +emoji[diamond_shape_with_a_dot_inside]=$'\U1F4A0' +emoji[radio_button]=$'\U1F518' +emoji[white_square_button]=$'\U1F533' +emoji[black_square_button]=$'\U1F532' +emoji_flags[chequered_flag]=$'\U1F3C1' +emoji_flags[checkered_flag]=$'\U1F3C1' +emoji_flags[triangular_flag]=$'\U1F6A9' +emoji_flags[triangular_flag_on_post]=$'\U1F6A9' +emoji_flags[crossed_flags]=$'\U1F38C' +emoji_flags[black_flag]=$'\U1F3F4' +emoji_flags[white_flag]=$'\U1F3F3\UFE0F' +emoji_flags[white_flag_unqualified]=$'\U1F3F3' +emoji_flags[rainbow_flag]=$'\U1F3F3\UFE0F\U200D\U1F308' +emoji_flags[rainbow_flag_unqualified]=$'\U1F3F3\U200D\U1F308' +emoji_flags[pirate_flag]=$'\U1F3F4\U200D\U2620\UFE0F' +emoji_flags[pirate_flag_minimally]=$'\U1F3F4\U200D\U2620' +emoji_flags[Ascension_Island]=$'\U1F1E6\U1F1E8' +emoji_flags[ascension_island]=$'\U1F1E6\U1F1E8' +emoji_flags[Andorra]=$'\U1F1E6\U1F1E9' +emoji_flags[AD]=$'\U1F1E6\U1F1E9' +emoji_flags[AND]=$'\U1F1E6\U1F1E9' +emoji_flags[andorra]=$'\U1F1E6\U1F1E9' +emoji_flags[United_Arab_Emirates]=$'\U1F1E6\U1F1EA' +emoji_flags[AE]=$'\U1F1E6\U1F1EA' +emoji_flags[ARE]=$'\U1F1E6\U1F1EA' +emoji_flags[united_arab_emirates]=$'\U1F1E6\U1F1EA' +emoji_flags[Afghanistan]=$'\U1F1E6\U1F1EB' +emoji_flags[AF]=$'\U1F1E6\U1F1EB' +emoji_flags[AFG]=$'\U1F1E6\U1F1EB' +emoji_flags[afghanistan]=$'\U1F1E6\U1F1EB' +emoji_flags[Antigua_and_Barbuda]=$'\U1F1E6\U1F1EC' +emoji_flags[AG]=$'\U1F1E6\U1F1EC' +emoji_flags[ATG]=$'\U1F1E6\U1F1EC' +emoji_flags[antigua_barbuda]=$'\U1F1E6\U1F1EC' +emoji_flags[Anguilla]=$'\U1F1E6\U1F1EE' +emoji_flags[AI]=$'\U1F1E6\U1F1EE' +emoji_flags[AIA]=$'\U1F1E6\U1F1EE' +emoji_flags[anguilla]=$'\U1F1E6\U1F1EE' +emoji_flags[Albania]=$'\U1F1E6\U1F1F1' +emoji_flags[AL]=$'\U1F1E6\U1F1F1' +emoji_flags[ALB]=$'\U1F1E6\U1F1F1' +emoji_flags[albania]=$'\U1F1E6\U1F1F1' +emoji_flags[Armenia]=$'\U1F1E6\U1F1F2' +emoji_flags[AM]=$'\U1F1E6\U1F1F2' +emoji_flags[ARM]=$'\U1F1E6\U1F1F2' +emoji_flags[armenia]=$'\U1F1E6\U1F1F2' +emoji_flags[Angola]=$'\U1F1E6\U1F1F4' +emoji_flags[AO]=$'\U1F1E6\U1F1F4' +emoji_flags[AGO]=$'\U1F1E6\U1F1F4' +emoji_flags[angola]=$'\U1F1E6\U1F1F4' +emoji_flags[Antarctica]=$'\U1F1E6\U1F1F6' +emoji_flags[AQ]=$'\U1F1E6\U1F1F6' +emoji_flags[ATA]=$'\U1F1E6\U1F1F6' +emoji_flags[antarctica]=$'\U1F1E6\U1F1F6' +emoji_flags[Argentina]=$'\U1F1E6\U1F1F7' +emoji_flags[AR]=$'\U1F1E6\U1F1F7' +emoji_flags[ARG]=$'\U1F1E6\U1F1F7' +emoji_flags[argentina]=$'\U1F1E6\U1F1F7' +emoji_flags[American_Samoa]=$'\U1F1E6\U1F1F8' +emoji_flags[AS]=$'\U1F1E6\U1F1F8' +emoji_flags[ASM]=$'\U1F1E6\U1F1F8' +emoji_flags[american_samoa]=$'\U1F1E6\U1F1F8' +emoji_flags[Austria]=$'\U1F1E6\U1F1F9' +emoji_flags[AT]=$'\U1F1E6\U1F1F9' +emoji_flags[AUT]=$'\U1F1E6\U1F1F9' +emoji_flags[austria]=$'\U1F1E6\U1F1F9' +emoji_flags[Australia]=$'\U1F1E6\U1F1FA' +emoji_flags[AU]=$'\U1F1E6\U1F1FA' +emoji_flags[AUS]=$'\U1F1E6\U1F1FA' +emoji_flags[australia]=$'\U1F1E6\U1F1FA' +emoji_flags[Aruba]=$'\U1F1E6\U1F1FC' +emoji_flags[AW]=$'\U1F1E6\U1F1FC' +emoji_flags[ABW]=$'\U1F1E6\U1F1FC' +emoji_flags[aruba]=$'\U1F1E6\U1F1FC' +emoji_flags[Åland_Islands]=$'\U1F1E6\U1F1FD' +emoji_flags[AX]=$'\U1F1E6\U1F1FD' +emoji_flags[ALA]=$'\U1F1E6\U1F1FD' +emoji_flags[aland_islands]=$'\U1F1E6\U1F1FD' +emoji_flags[Azerbaijan]=$'\U1F1E6\U1F1FF' +emoji_flags[AZ]=$'\U1F1E6\U1F1FF' +emoji_flags[AZE]=$'\U1F1E6\U1F1FF' +emoji_flags[azerbaijan]=$'\U1F1E6\U1F1FF' +emoji_flags[Bosnia_and_Herzegovina]=$'\U1F1E7\U1F1E6' +emoji_flags[BA]=$'\U1F1E7\U1F1E6' +emoji_flags[BIH]=$'\U1F1E7\U1F1E6' +emoji_flags[bosnia_herzegovina]=$'\U1F1E7\U1F1E6' +emoji_flags[Barbados]=$'\U1F1E7\U1F1E7' +emoji_flags[BB]=$'\U1F1E7\U1F1E7' +emoji_flags[BRB]=$'\U1F1E7\U1F1E7' +emoji_flags[barbados]=$'\U1F1E7\U1F1E7' +emoji_flags[Bangladesh]=$'\U1F1E7\U1F1E9' +emoji_flags[BD]=$'\U1F1E7\U1F1E9' +emoji_flags[BGD]=$'\U1F1E7\U1F1E9' +emoji_flags[bangladesh]=$'\U1F1E7\U1F1E9' +emoji_flags[Belgium]=$'\U1F1E7\U1F1EA' +emoji_flags[BE]=$'\U1F1E7\U1F1EA' +emoji_flags[BEL]=$'\U1F1E7\U1F1EA' +emoji_flags[belgium]=$'\U1F1E7\U1F1EA' +emoji_flags[Burkina_Faso]=$'\U1F1E7\U1F1EB' +emoji_flags[BF]=$'\U1F1E7\U1F1EB' +emoji_flags[BFA]=$'\U1F1E7\U1F1EB' +emoji_flags[burkina_faso]=$'\U1F1E7\U1F1EB' +emoji_flags[Bulgaria]=$'\U1F1E7\U1F1EC' +emoji_flags[BG]=$'\U1F1E7\U1F1EC' +emoji_flags[BGR]=$'\U1F1E7\U1F1EC' +emoji_flags[bulgaria]=$'\U1F1E7\U1F1EC' +emoji_flags[Bahrain]=$'\U1F1E7\U1F1ED' +emoji_flags[BH]=$'\U1F1E7\U1F1ED' +emoji_flags[BHR]=$'\U1F1E7\U1F1ED' +emoji_flags[bahrain]=$'\U1F1E7\U1F1ED' +emoji_flags[Burundi]=$'\U1F1E7\U1F1EE' +emoji_flags[BI]=$'\U1F1E7\U1F1EE' +emoji_flags[BDI]=$'\U1F1E7\U1F1EE' +emoji_flags[burundi]=$'\U1F1E7\U1F1EE' +emoji_flags[Benin]=$'\U1F1E7\U1F1EF' +emoji_flags[BJ]=$'\U1F1E7\U1F1EF' +emoji_flags[BEN]=$'\U1F1E7\U1F1EF' +emoji_flags[benin]=$'\U1F1E7\U1F1EF' +emoji_flags[St_Barthélemy]=$'\U1F1E7\U1F1F1' +emoji_flags[BL]=$'\U1F1E7\U1F1F1' +emoji_flags[BLM]=$'\U1F1E7\U1F1F1' +emoji_flags[st_barthelemy]=$'\U1F1E7\U1F1F1' +emoji_flags[Bermuda]=$'\U1F1E7\U1F1F2' +emoji_flags[BM]=$'\U1F1E7\U1F1F2' +emoji_flags[BMU]=$'\U1F1E7\U1F1F2' +emoji_flags[bermuda]=$'\U1F1E7\U1F1F2' +emoji_flags[Brunei]=$'\U1F1E7\U1F1F3' +emoji_flags[BN]=$'\U1F1E7\U1F1F3' +emoji_flags[BRN]=$'\U1F1E7\U1F1F3' +emoji_flags[brunei]=$'\U1F1E7\U1F1F3' +emoji_flags[Bolivia]=$'\U1F1E7\U1F1F4' +emoji_flags[BO]=$'\U1F1E7\U1F1F4' +emoji_flags[BOL]=$'\U1F1E7\U1F1F4' +emoji_flags[bolivia]=$'\U1F1E7\U1F1F4' +emoji_flags[Caribbean_Netherlands]=$'\U1F1E7\U1F1F6' +emoji_flags[BQ]=$'\U1F1E7\U1F1F6' +emoji_flags[BES]=$'\U1F1E7\U1F1F6' +emoji_flags[caribbean_netherlands]=$'\U1F1E7\U1F1F6' +emoji_flags[Brazil]=$'\U1F1E7\U1F1F7' +emoji_flags[BR]=$'\U1F1E7\U1F1F7' +emoji_flags[BRA]=$'\U1F1E7\U1F1F7' +emoji_flags[brazil]=$'\U1F1E7\U1F1F7' +emoji_flags[Bahamas]=$'\U1F1E7\U1F1F8' +emoji_flags[BS]=$'\U1F1E7\U1F1F8' +emoji_flags[BHS]=$'\U1F1E7\U1F1F8' +emoji_flags[bahamas]=$'\U1F1E7\U1F1F8' +emoji_flags[Bhutan]=$'\U1F1E7\U1F1F9' +emoji_flags[BT]=$'\U1F1E7\U1F1F9' +emoji_flags[BTN]=$'\U1F1E7\U1F1F9' +emoji_flags[bhutan]=$'\U1F1E7\U1F1F9' +emoji_flags[Bouvet_Island]=$'\U1F1E7\U1F1FB' +emoji_flags[BV]=$'\U1F1E7\U1F1FB' +emoji_flags[BVT]=$'\U1F1E7\U1F1FB' +emoji_flags[bouvet_island]=$'\U1F1E7\U1F1FB' +emoji_flags[Botswana]=$'\U1F1E7\U1F1FC' +emoji_flags[BW]=$'\U1F1E7\U1F1FC' +emoji_flags[BWA]=$'\U1F1E7\U1F1FC' +emoji_flags[botswana]=$'\U1F1E7\U1F1FC' +emoji_flags[Belarus]=$'\U1F1E7\U1F1FE' +emoji_flags[BY]=$'\U1F1E7\U1F1FE' +emoji_flags[BLR]=$'\U1F1E7\U1F1FE' +emoji_flags[belarus]=$'\U1F1E7\U1F1FE' +emoji_flags[Belize]=$'\U1F1E7\U1F1FF' +emoji_flags[BZ]=$'\U1F1E7\U1F1FF' +emoji_flags[BLZ]=$'\U1F1E7\U1F1FF' +emoji_flags[belize]=$'\U1F1E7\U1F1FF' +emoji_flags[Canada]=$'\U1F1E8\U1F1E6' +emoji_flags[CA]=$'\U1F1E8\U1F1E6' +emoji_flags[CAN]=$'\U1F1E8\U1F1E6' +emoji_flags[canada]=$'\U1F1E8\U1F1E6' +emoji_flags[Cocos_Keeling_Islands]=$'\U1F1E8\U1F1E8' +emoji_flags[CC]=$'\U1F1E8\U1F1E8' +emoji_flags[CCK]=$'\U1F1E8\U1F1E8' +emoji_flags[cocos_islands]=$'\U1F1E8\U1F1E8' +emoji_flags[Congo__Kinshasa]=$'\U1F1E8\U1F1E9' +emoji_flags[CD]=$'\U1F1E8\U1F1E9' +emoji_flags[COD]=$'\U1F1E8\U1F1E9' +emoji_flags[congo_kinshasa]=$'\U1F1E8\U1F1E9' +emoji_flags[Central_African_Republic]=$'\U1F1E8\U1F1EB' +emoji_flags[CF]=$'\U1F1E8\U1F1EB' +emoji_flags[CAF]=$'\U1F1E8\U1F1EB' +emoji_flags[central_african_republic]=$'\U1F1E8\U1F1EB' +emoji_flags[Congo__Brazzaville]=$'\U1F1E8\U1F1EC' +emoji_flags[CG]=$'\U1F1E8\U1F1EC' +emoji_flags[COG]=$'\U1F1E8\U1F1EC' +emoji_flags[congo_brazzaville]=$'\U1F1E8\U1F1EC' +emoji_flags[Switzerland]=$'\U1F1E8\U1F1ED' +emoji_flags[CH]=$'\U1F1E8\U1F1ED' +emoji_flags[CHE]=$'\U1F1E8\U1F1ED' +emoji_flags[switzerland]=$'\U1F1E8\U1F1ED' +emoji_flags[Côte_d_Ivoire]=$'\U1F1E8\U1F1EE' +emoji_flags[CI]=$'\U1F1E8\U1F1EE' +emoji_flags[CIV]=$'\U1F1E8\U1F1EE' +emoji_flags[cote_divoire]=$'\U1F1E8\U1F1EE' +emoji_flags[Cook_Islands]=$'\U1F1E8\U1F1F0' +emoji_flags[CK]=$'\U1F1E8\U1F1F0' +emoji_flags[COK]=$'\U1F1E8\U1F1F0' +emoji_flags[cook_islands]=$'\U1F1E8\U1F1F0' +emoji_flags[Chile]=$'\U1F1E8\U1F1F1' +emoji_flags[CL]=$'\U1F1E8\U1F1F1' +emoji_flags[CHL]=$'\U1F1E8\U1F1F1' +emoji_flags[chile]=$'\U1F1E8\U1F1F1' +emoji_flags[Cameroon]=$'\U1F1E8\U1F1F2' +emoji_flags[CM]=$'\U1F1E8\U1F1F2' +emoji_flags[CMR]=$'\U1F1E8\U1F1F2' +emoji_flags[cameroon]=$'\U1F1E8\U1F1F2' +emoji_flags[China]=$'\U1F1E8\U1F1F3' +emoji_flags[CN]=$'\U1F1E8\U1F1F3' +emoji_flags[CHN]=$'\U1F1E8\U1F1F3' +emoji_flags[cn]=$'\U1F1E8\U1F1F3' +emoji_flags[Colombia]=$'\U1F1E8\U1F1F4' +emoji_flags[CO]=$'\U1F1E8\U1F1F4' +emoji_flags[COL]=$'\U1F1E8\U1F1F4' +emoji_flags[colombia]=$'\U1F1E8\U1F1F4' +emoji_flags[Clipperton_Island]=$'\U1F1E8\U1F1F5' +emoji_flags[clipperton_island]=$'\U1F1E8\U1F1F5' +emoji_flags[Costa_Rica]=$'\U1F1E8\U1F1F7' +emoji_flags[CR]=$'\U1F1E8\U1F1F7' +emoji_flags[CRI]=$'\U1F1E8\U1F1F7' +emoji_flags[costa_rica]=$'\U1F1E8\U1F1F7' +emoji_flags[Cuba]=$'\U1F1E8\U1F1FA' +emoji_flags[CU]=$'\U1F1E8\U1F1FA' +emoji_flags[CUB]=$'\U1F1E8\U1F1FA' +emoji_flags[cuba]=$'\U1F1E8\U1F1FA' +emoji_flags[Cape_Verde]=$'\U1F1E8\U1F1FB' +emoji_flags[CV]=$'\U1F1E8\U1F1FB' +emoji_flags[CPV]=$'\U1F1E8\U1F1FB' +emoji_flags[cape_verde]=$'\U1F1E8\U1F1FB' +emoji_flags[Curaçao]=$'\U1F1E8\U1F1FC' +emoji_flags[CW]=$'\U1F1E8\U1F1FC' +emoji_flags[CUW]=$'\U1F1E8\U1F1FC' +emoji_flags[curacao]=$'\U1F1E8\U1F1FC' +emoji_flags[Christmas_Island]=$'\U1F1E8\U1F1FD' +emoji_flags[CX]=$'\U1F1E8\U1F1FD' +emoji_flags[CXR]=$'\U1F1E8\U1F1FD' +emoji_flags[christmas_island]=$'\U1F1E8\U1F1FD' +emoji_flags[Cyprus]=$'\U1F1E8\U1F1FE' +emoji_flags[CY]=$'\U1F1E8\U1F1FE' +emoji_flags[CYP]=$'\U1F1E8\U1F1FE' +emoji_flags[cyprus]=$'\U1F1E8\U1F1FE' +emoji_flags[Czechia]=$'\U1F1E8\U1F1FF' +emoji_flags[CZ]=$'\U1F1E8\U1F1FF' +emoji_flags[CZE]=$'\U1F1E8\U1F1FF' +emoji_flags[czech_republic]=$'\U1F1E8\U1F1FF' +emoji_flags[Germany]=$'\U1F1E9\U1F1EA' +emoji_flags[DE]=$'\U1F1E9\U1F1EA' +emoji_flags[DEU]=$'\U1F1E9\U1F1EA' +emoji_flags[de]=$'\U1F1E9\U1F1EA' +emoji_flags[Diego_Garcia]=$'\U1F1E9\U1F1EC' +emoji_flags[diego_garcia]=$'\U1F1E9\U1F1EC' +emoji_flags[Djibouti]=$'\U1F1E9\U1F1EF' +emoji_flags[DJ]=$'\U1F1E9\U1F1EF' +emoji_flags[DJI]=$'\U1F1E9\U1F1EF' +emoji_flags[djibouti]=$'\U1F1E9\U1F1EF' +emoji_flags[Denmark]=$'\U1F1E9\U1F1F0' +emoji_flags[DK]=$'\U1F1E9\U1F1F0' +emoji_flags[DNK]=$'\U1F1E9\U1F1F0' +emoji_flags[denmark]=$'\U1F1E9\U1F1F0' +emoji_flags[Dominica]=$'\U1F1E9\U1F1F2' +emoji_flags[DM]=$'\U1F1E9\U1F1F2' +emoji_flags[DMA]=$'\U1F1E9\U1F1F2' +emoji_flags[dominica]=$'\U1F1E9\U1F1F2' +emoji_flags[Dominican_Republic]=$'\U1F1E9\U1F1F4' +emoji_flags[DO]=$'\U1F1E9\U1F1F4' +emoji_flags[DOM]=$'\U1F1E9\U1F1F4' +emoji_flags[dominican_republic]=$'\U1F1E9\U1F1F4' +emoji_flags[Algeria]=$'\U1F1E9\U1F1FF' +emoji_flags[DZ]=$'\U1F1E9\U1F1FF' +emoji_flags[DZA]=$'\U1F1E9\U1F1FF' +emoji_flags[algeria]=$'\U1F1E9\U1F1FF' +emoji_flags[Ceuta_and_Melilla]=$'\U1F1EA\U1F1E6' +emoji_flags[ceuta_melilla]=$'\U1F1EA\U1F1E6' +emoji_flags[Ecuador]=$'\U1F1EA\U1F1E8' +emoji_flags[EC]=$'\U1F1EA\U1F1E8' +emoji_flags[ECU]=$'\U1F1EA\U1F1E8' +emoji_flags[ecuador]=$'\U1F1EA\U1F1E8' +emoji_flags[Estonia]=$'\U1F1EA\U1F1EA' +emoji_flags[EE]=$'\U1F1EA\U1F1EA' +emoji_flags[EST]=$'\U1F1EA\U1F1EA' +emoji_flags[estonia]=$'\U1F1EA\U1F1EA' +emoji_flags[Egypt]=$'\U1F1EA\U1F1EC' +emoji_flags[EG]=$'\U1F1EA\U1F1EC' +emoji_flags[EGY]=$'\U1F1EA\U1F1EC' +emoji_flags[egypt]=$'\U1F1EA\U1F1EC' +emoji_flags[Western_Sahara]=$'\U1F1EA\U1F1ED' +emoji_flags[EH]=$'\U1F1EA\U1F1ED' +emoji_flags[ESH]=$'\U1F1EA\U1F1ED' +emoji_flags[western_sahara]=$'\U1F1EA\U1F1ED' +emoji_flags[Eritrea]=$'\U1F1EA\U1F1F7' +emoji_flags[ER]=$'\U1F1EA\U1F1F7' +emoji_flags[ERI]=$'\U1F1EA\U1F1F7' +emoji_flags[eritrea]=$'\U1F1EA\U1F1F7' +emoji_flags[Spain]=$'\U1F1EA\U1F1F8' +emoji_flags[ES]=$'\U1F1EA\U1F1F8' +emoji_flags[ESP]=$'\U1F1EA\U1F1F8' +emoji_flags[es]=$'\U1F1EA\U1F1F8' +emoji_flags[Ethiopia]=$'\U1F1EA\U1F1F9' +emoji_flags[ET]=$'\U1F1EA\U1F1F9' +emoji_flags[ETH]=$'\U1F1EA\U1F1F9' +emoji_flags[ethiopia]=$'\U1F1EA\U1F1F9' +emoji_flags[European_Union]=$'\U1F1EA\U1F1FA' +emoji_flags[eu]=$'\U1F1EA\U1F1FA' +emoji_flags[european_union]=$'\U1F1EA\U1F1FA' +emoji_flags[Finland]=$'\U1F1EB\U1F1EE' +emoji_flags[FI]=$'\U1F1EB\U1F1EE' +emoji_flags[FIN]=$'\U1F1EB\U1F1EE' +emoji_flags[finland]=$'\U1F1EB\U1F1EE' +emoji_flags[Fiji]=$'\U1F1EB\U1F1EF' +emoji_flags[FJ]=$'\U1F1EB\U1F1EF' +emoji_flags[FJI]=$'\U1F1EB\U1F1EF' +emoji_flags[fiji]=$'\U1F1EB\U1F1EF' +emoji_flags[Falkland_Islands]=$'\U1F1EB\U1F1F0' +emoji_flags[FK]=$'\U1F1EB\U1F1F0' +emoji_flags[FLK]=$'\U1F1EB\U1F1F0' +emoji_flags[falkland_islands]=$'\U1F1EB\U1F1F0' +emoji_flags[Micronesia]=$'\U1F1EB\U1F1F2' +emoji_flags[FM]=$'\U1F1EB\U1F1F2' +emoji_flags[FSM]=$'\U1F1EB\U1F1F2' +emoji_flags[micronesia]=$'\U1F1EB\U1F1F2' +emoji_flags[Faroe_Islands]=$'\U1F1EB\U1F1F4' +emoji_flags[FO]=$'\U1F1EB\U1F1F4' +emoji_flags[FRO]=$'\U1F1EB\U1F1F4' +emoji_flags[faroe_islands]=$'\U1F1EB\U1F1F4' +emoji_flags[France]=$'\U1F1EB\U1F1F7' +emoji_flags[FR]=$'\U1F1EB\U1F1F7' +emoji_flags[FRA]=$'\U1F1EB\U1F1F7' +emoji_flags[fr]=$'\U1F1EB\U1F1F7' +emoji_flags[Gabon]=$'\U1F1EC\U1F1E6' +emoji_flags[GA]=$'\U1F1EC\U1F1E6' +emoji_flags[GAB]=$'\U1F1EC\U1F1E6' +emoji_flags[gabon]=$'\U1F1EC\U1F1E6' +emoji_flags[United_Kingdom]=$'\U1F1EC\U1F1E7' +emoji_flags[GB]=$'\U1F1EC\U1F1E7' +emoji_flags[GBR]=$'\U1F1EC\U1F1E7' +emoji_flags[gb]=$'\U1F1EC\U1F1E7' +emoji_flags[uk]=$'\U1F1EC\U1F1E7' +emoji_flags[Grenada]=$'\U1F1EC\U1F1E9' +emoji_flags[GD]=$'\U1F1EC\U1F1E9' +emoji_flags[GRD]=$'\U1F1EC\U1F1E9' +emoji_flags[grenada]=$'\U1F1EC\U1F1E9' +emoji_flags[Georgia]=$'\U1F1EC\U1F1EA' +emoji_flags[GE]=$'\U1F1EC\U1F1EA' +emoji_flags[GEO]=$'\U1F1EC\U1F1EA' +emoji_flags[georgia]=$'\U1F1EC\U1F1EA' +emoji_flags[French_Guiana]=$'\U1F1EC\U1F1EB' +emoji_flags[GF]=$'\U1F1EC\U1F1EB' +emoji_flags[GUF]=$'\U1F1EC\U1F1EB' +emoji_flags[french_guiana]=$'\U1F1EC\U1F1EB' +emoji_flags[Guernsey]=$'\U1F1EC\U1F1EC' +emoji_flags[GG]=$'\U1F1EC\U1F1EC' +emoji_flags[GGY]=$'\U1F1EC\U1F1EC' +emoji_flags[guernsey]=$'\U1F1EC\U1F1EC' +emoji_flags[Ghana]=$'\U1F1EC\U1F1ED' +emoji_flags[GH]=$'\U1F1EC\U1F1ED' +emoji_flags[GHA]=$'\U1F1EC\U1F1ED' +emoji_flags[ghana]=$'\U1F1EC\U1F1ED' +emoji_flags[Gibraltar]=$'\U1F1EC\U1F1EE' +emoji_flags[GI]=$'\U1F1EC\U1F1EE' +emoji_flags[GIB]=$'\U1F1EC\U1F1EE' +emoji_flags[gibraltar]=$'\U1F1EC\U1F1EE' +emoji_flags[Greenland]=$'\U1F1EC\U1F1F1' +emoji_flags[GL]=$'\U1F1EC\U1F1F1' +emoji_flags[GRL]=$'\U1F1EC\U1F1F1' +emoji_flags[greenland]=$'\U1F1EC\U1F1F1' +emoji_flags[Gambia]=$'\U1F1EC\U1F1F2' +emoji_flags[GM]=$'\U1F1EC\U1F1F2' +emoji_flags[GMB]=$'\U1F1EC\U1F1F2' +emoji_flags[gambia]=$'\U1F1EC\U1F1F2' +emoji_flags[Guinea]=$'\U1F1EC\U1F1F3' +emoji_flags[GN]=$'\U1F1EC\U1F1F3' +emoji_flags[GIN]=$'\U1F1EC\U1F1F3' +emoji_flags[guinea]=$'\U1F1EC\U1F1F3' +emoji_flags[Guadeloupe]=$'\U1F1EC\U1F1F5' +emoji_flags[GP]=$'\U1F1EC\U1F1F5' +emoji_flags[GLP]=$'\U1F1EC\U1F1F5' +emoji_flags[guadeloupe]=$'\U1F1EC\U1F1F5' +emoji_flags[Equatorial_Guinea]=$'\U1F1EC\U1F1F6' +emoji_flags[GQ]=$'\U1F1EC\U1F1F6' +emoji_flags[GNQ]=$'\U1F1EC\U1F1F6' +emoji_flags[equatorial_guinea]=$'\U1F1EC\U1F1F6' +emoji_flags[Greece]=$'\U1F1EC\U1F1F7' +emoji_flags[GR]=$'\U1F1EC\U1F1F7' +emoji_flags[GRC]=$'\U1F1EC\U1F1F7' +emoji_flags[greece]=$'\U1F1EC\U1F1F7' +emoji_flags[South_Georgia_and_South_Sandwich_Islands]=$'\U1F1EC\U1F1F8' +emoji_flags[GS]=$'\U1F1EC\U1F1F8' +emoji_flags[SGS]=$'\U1F1EC\U1F1F8' +emoji_flags[south_georgia_south_sandwich_islands]=$'\U1F1EC\U1F1F8' +emoji_flags[Guatemala]=$'\U1F1EC\U1F1F9' +emoji_flags[GT]=$'\U1F1EC\U1F1F9' +emoji_flags[GTM]=$'\U1F1EC\U1F1F9' +emoji_flags[guatemala]=$'\U1F1EC\U1F1F9' +emoji_flags[Guam]=$'\U1F1EC\U1F1FA' +emoji_flags[GU]=$'\U1F1EC\U1F1FA' +emoji_flags[GUM]=$'\U1F1EC\U1F1FA' +emoji_flags[guam]=$'\U1F1EC\U1F1FA' +emoji_flags[Guinea_Bissau]=$'\U1F1EC\U1F1FC' +emoji_flags[GW]=$'\U1F1EC\U1F1FC' +emoji_flags[GNB]=$'\U1F1EC\U1F1FC' +emoji_flags[guinea_bissau]=$'\U1F1EC\U1F1FC' +emoji_flags[Guyana]=$'\U1F1EC\U1F1FE' +emoji_flags[GY]=$'\U1F1EC\U1F1FE' +emoji_flags[GUY]=$'\U1F1EC\U1F1FE' +emoji_flags[guyana]=$'\U1F1EC\U1F1FE' +emoji_flags[Hong_Kong_SAR_China]=$'\U1F1ED\U1F1F0' +emoji_flags[HK]=$'\U1F1ED\U1F1F0' +emoji_flags[HKG]=$'\U1F1ED\U1F1F0' +emoji_flags[hong_kong]=$'\U1F1ED\U1F1F0' +emoji_flags[Heard_and_McDonald_Islands]=$'\U1F1ED\U1F1F2' +emoji_flags[HM]=$'\U1F1ED\U1F1F2' +emoji_flags[HMD]=$'\U1F1ED\U1F1F2' +emoji_flags[heard_mcdonald_islands]=$'\U1F1ED\U1F1F2' +emoji_flags[Honduras]=$'\U1F1ED\U1F1F3' +emoji_flags[HN]=$'\U1F1ED\U1F1F3' +emoji_flags[HND]=$'\U1F1ED\U1F1F3' +emoji_flags[honduras]=$'\U1F1ED\U1F1F3' +emoji_flags[Croatia]=$'\U1F1ED\U1F1F7' +emoji_flags[HR]=$'\U1F1ED\U1F1F7' +emoji_flags[HRV]=$'\U1F1ED\U1F1F7' +emoji_flags[croatia]=$'\U1F1ED\U1F1F7' +emoji_flags[Haiti]=$'\U1F1ED\U1F1F9' +emoji_flags[HT]=$'\U1F1ED\U1F1F9' +emoji_flags[HTI]=$'\U1F1ED\U1F1F9' +emoji_flags[haiti]=$'\U1F1ED\U1F1F9' +emoji_flags[Hungary]=$'\U1F1ED\U1F1FA' +emoji_flags[HU]=$'\U1F1ED\U1F1FA' +emoji_flags[HUN]=$'\U1F1ED\U1F1FA' +emoji_flags[hungary]=$'\U1F1ED\U1F1FA' +emoji_flags[Canary_Islands]=$'\U1F1EE\U1F1E8' +emoji_flags[canary_islands]=$'\U1F1EE\U1F1E8' +emoji_flags[Indonesia]=$'\U1F1EE\U1F1E9' +emoji_flags[ID]=$'\U1F1EE\U1F1E9' +emoji_flags[IDN]=$'\U1F1EE\U1F1E9' +emoji_flags[indonesia]=$'\U1F1EE\U1F1E9' +emoji_flags[Ireland]=$'\U1F1EE\U1F1EA' +emoji_flags[IE]=$'\U1F1EE\U1F1EA' +emoji_flags[IRL]=$'\U1F1EE\U1F1EA' +emoji_flags[ireland]=$'\U1F1EE\U1F1EA' +emoji_flags[Israel]=$'\U1F1EE\U1F1F1' +emoji_flags[IL]=$'\U1F1EE\U1F1F1' +emoji_flags[ISR]=$'\U1F1EE\U1F1F1' +emoji_flags[israel]=$'\U1F1EE\U1F1F1' +emoji_flags[Isle_of_Man]=$'\U1F1EE\U1F1F2' +emoji_flags[IM]=$'\U1F1EE\U1F1F2' +emoji_flags[IMN]=$'\U1F1EE\U1F1F2' +emoji_flags[isle_of_man]=$'\U1F1EE\U1F1F2' +emoji_flags[India]=$'\U1F1EE\U1F1F3' +emoji_flags[IN]=$'\U1F1EE\U1F1F3' +emoji_flags[IND]=$'\U1F1EE\U1F1F3' +emoji_flags[india]=$'\U1F1EE\U1F1F3' +emoji_flags[British_Indian_Ocean_Territory]=$'\U1F1EE\U1F1F4' +emoji_flags[IO]=$'\U1F1EE\U1F1F4' +emoji_flags[IOT]=$'\U1F1EE\U1F1F4' +emoji_flags[british_indian_ocean_territory]=$'\U1F1EE\U1F1F4' +emoji_flags[Iraq]=$'\U1F1EE\U1F1F6' +emoji_flags[IQ]=$'\U1F1EE\U1F1F6' +emoji_flags[IRQ]=$'\U1F1EE\U1F1F6' +emoji_flags[iraq]=$'\U1F1EE\U1F1F6' +emoji_flags[Iran]=$'\U1F1EE\U1F1F7' +emoji_flags[IR]=$'\U1F1EE\U1F1F7' +emoji_flags[IRN]=$'\U1F1EE\U1F1F7' +emoji_flags[iran]=$'\U1F1EE\U1F1F7' +emoji_flags[Iceland]=$'\U1F1EE\U1F1F8' +emoji_flags[IS]=$'\U1F1EE\U1F1F8' +emoji_flags[ISL]=$'\U1F1EE\U1F1F8' +emoji_flags[iceland]=$'\U1F1EE\U1F1F8' +emoji_flags[Italy]=$'\U1F1EE\U1F1F9' +emoji_flags[IT]=$'\U1F1EE\U1F1F9' +emoji_flags[ITA]=$'\U1F1EE\U1F1F9' +emoji_flags[it]=$'\U1F1EE\U1F1F9' +emoji_flags[Jersey]=$'\U1F1EF\U1F1EA' +emoji_flags[JE]=$'\U1F1EF\U1F1EA' +emoji_flags[JEY]=$'\U1F1EF\U1F1EA' +emoji_flags[jersey]=$'\U1F1EF\U1F1EA' +emoji_flags[Jamaica]=$'\U1F1EF\U1F1F2' +emoji_flags[JM]=$'\U1F1EF\U1F1F2' +emoji_flags[JAM]=$'\U1F1EF\U1F1F2' +emoji_flags[jamaica]=$'\U1F1EF\U1F1F2' +emoji_flags[Jordan]=$'\U1F1EF\U1F1F4' +emoji_flags[JO]=$'\U1F1EF\U1F1F4' +emoji_flags[JOR]=$'\U1F1EF\U1F1F4' +emoji_flags[jordan]=$'\U1F1EF\U1F1F4' +emoji_flags[Japan]=$'\U1F1EF\U1F1F5' +emoji_flags[JP]=$'\U1F1EF\U1F1F5' +emoji_flags[JPN]=$'\U1F1EF\U1F1F5' +emoji_flags[jp]=$'\U1F1EF\U1F1F5' +emoji_flags[Kenya]=$'\U1F1F0\U1F1EA' +emoji_flags[KE]=$'\U1F1F0\U1F1EA' +emoji_flags[KEN]=$'\U1F1F0\U1F1EA' +emoji_flags[kenya]=$'\U1F1F0\U1F1EA' +emoji_flags[Kyrgyzstan]=$'\U1F1F0\U1F1EC' +emoji_flags[KG]=$'\U1F1F0\U1F1EC' +emoji_flags[KGZ]=$'\U1F1F0\U1F1EC' +emoji_flags[kyrgyzstan]=$'\U1F1F0\U1F1EC' +emoji_flags[Cambodia]=$'\U1F1F0\U1F1ED' +emoji_flags[KH]=$'\U1F1F0\U1F1ED' +emoji_flags[KHM]=$'\U1F1F0\U1F1ED' +emoji_flags[cambodia]=$'\U1F1F0\U1F1ED' +emoji_flags[Kiribati]=$'\U1F1F0\U1F1EE' +emoji_flags[KI]=$'\U1F1F0\U1F1EE' +emoji_flags[KIR]=$'\U1F1F0\U1F1EE' +emoji_flags[kiribati]=$'\U1F1F0\U1F1EE' +emoji_flags[Comoros]=$'\U1F1F0\U1F1F2' +emoji_flags[KM]=$'\U1F1F0\U1F1F2' +emoji_flags[COM]=$'\U1F1F0\U1F1F2' +emoji_flags[comoros]=$'\U1F1F0\U1F1F2' +emoji_flags[St_Kitts_and_Nevis]=$'\U1F1F0\U1F1F3' +emoji_flags[KN]=$'\U1F1F0\U1F1F3' +emoji_flags[KNA]=$'\U1F1F0\U1F1F3' +emoji_flags[st_kitts_nevis]=$'\U1F1F0\U1F1F3' +emoji_flags[North_Korea]=$'\U1F1F0\U1F1F5' +emoji_flags[KP]=$'\U1F1F0\U1F1F5' +emoji_flags[PRK]=$'\U1F1F0\U1F1F5' +emoji_flags[north_korea]=$'\U1F1F0\U1F1F5' +emoji_flags[South_Korea]=$'\U1F1F0\U1F1F7' +emoji_flags[KR]=$'\U1F1F0\U1F1F7' +emoji_flags[KOR]=$'\U1F1F0\U1F1F7' +emoji_flags[kr]=$'\U1F1F0\U1F1F7' +emoji_flags[Kuwait]=$'\U1F1F0\U1F1FC' +emoji_flags[KW]=$'\U1F1F0\U1F1FC' +emoji_flags[KWT]=$'\U1F1F0\U1F1FC' +emoji_flags[kuwait]=$'\U1F1F0\U1F1FC' +emoji_flags[Cayman_Islands]=$'\U1F1F0\U1F1FE' +emoji_flags[KY]=$'\U1F1F0\U1F1FE' +emoji_flags[CYM]=$'\U1F1F0\U1F1FE' +emoji_flags[cayman_islands]=$'\U1F1F0\U1F1FE' +emoji_flags[Kazakhstan]=$'\U1F1F0\U1F1FF' +emoji_flags[KZ]=$'\U1F1F0\U1F1FF' +emoji_flags[KAZ]=$'\U1F1F0\U1F1FF' +emoji_flags[kazakhstan]=$'\U1F1F0\U1F1FF' +emoji_flags[Laos]=$'\U1F1F1\U1F1E6' +emoji_flags[LA]=$'\U1F1F1\U1F1E6' +emoji_flags[LAO]=$'\U1F1F1\U1F1E6' +emoji_flags[laos]=$'\U1F1F1\U1F1E6' +emoji_flags[Lebanon]=$'\U1F1F1\U1F1E7' +emoji_flags[LB]=$'\U1F1F1\U1F1E7' +emoji_flags[LBN]=$'\U1F1F1\U1F1E7' +emoji_flags[lebanon]=$'\U1F1F1\U1F1E7' +emoji_flags[St_Lucia]=$'\U1F1F1\U1F1E8' +emoji_flags[LC]=$'\U1F1F1\U1F1E8' +emoji_flags[LCA]=$'\U1F1F1\U1F1E8' +emoji_flags[st_lucia]=$'\U1F1F1\U1F1E8' +emoji_flags[Liechtenstein]=$'\U1F1F1\U1F1EE' +emoji_flags[LI]=$'\U1F1F1\U1F1EE' +emoji_flags[LIE]=$'\U1F1F1\U1F1EE' +emoji_flags[liechtenstein]=$'\U1F1F1\U1F1EE' +emoji_flags[Sri_Lanka]=$'\U1F1F1\U1F1F0' +emoji_flags[LK]=$'\U1F1F1\U1F1F0' +emoji_flags[LKA]=$'\U1F1F1\U1F1F0' +emoji_flags[sri_lanka]=$'\U1F1F1\U1F1F0' +emoji_flags[Liberia]=$'\U1F1F1\U1F1F7' +emoji_flags[LR]=$'\U1F1F1\U1F1F7' +emoji_flags[LBR]=$'\U1F1F1\U1F1F7' +emoji_flags[liberia]=$'\U1F1F1\U1F1F7' +emoji_flags[Lesotho]=$'\U1F1F1\U1F1F8' +emoji_flags[LS]=$'\U1F1F1\U1F1F8' +emoji_flags[LSO]=$'\U1F1F1\U1F1F8' +emoji_flags[lesotho]=$'\U1F1F1\U1F1F8' +emoji_flags[Lithuania]=$'\U1F1F1\U1F1F9' +emoji_flags[LT]=$'\U1F1F1\U1F1F9' +emoji_flags[LTU]=$'\U1F1F1\U1F1F9' +emoji_flags[lithuania]=$'\U1F1F1\U1F1F9' +emoji_flags[Luxembourg]=$'\U1F1F1\U1F1FA' +emoji_flags[LU]=$'\U1F1F1\U1F1FA' +emoji_flags[LUX]=$'\U1F1F1\U1F1FA' +emoji_flags[luxembourg]=$'\U1F1F1\U1F1FA' +emoji_flags[Latvia]=$'\U1F1F1\U1F1FB' +emoji_flags[LV]=$'\U1F1F1\U1F1FB' +emoji_flags[LVA]=$'\U1F1F1\U1F1FB' +emoji_flags[latvia]=$'\U1F1F1\U1F1FB' +emoji_flags[Libya]=$'\U1F1F1\U1F1FE' +emoji_flags[LY]=$'\U1F1F1\U1F1FE' +emoji_flags[LBY]=$'\U1F1F1\U1F1FE' +emoji_flags[libya]=$'\U1F1F1\U1F1FE' +emoji_flags[Morocco]=$'\U1F1F2\U1F1E6' +emoji_flags[MA]=$'\U1F1F2\U1F1E6' +emoji_flags[MAR]=$'\U1F1F2\U1F1E6' +emoji_flags[morocco]=$'\U1F1F2\U1F1E6' +emoji_flags[Monaco]=$'\U1F1F2\U1F1E8' +emoji_flags[MC]=$'\U1F1F2\U1F1E8' +emoji_flags[MCO]=$'\U1F1F2\U1F1E8' +emoji_flags[monaco]=$'\U1F1F2\U1F1E8' +emoji_flags[Moldova]=$'\U1F1F2\U1F1E9' +emoji_flags[MD]=$'\U1F1F2\U1F1E9' +emoji_flags[MDA]=$'\U1F1F2\U1F1E9' +emoji_flags[moldova]=$'\U1F1F2\U1F1E9' +emoji_flags[Montenegro]=$'\U1F1F2\U1F1EA' +emoji_flags[ME]=$'\U1F1F2\U1F1EA' +emoji_flags[MNE]=$'\U1F1F2\U1F1EA' +emoji_flags[montenegro]=$'\U1F1F2\U1F1EA' +emoji_flags[St_Martin]=$'\U1F1F2\U1F1EB' +emoji_flags[MF]=$'\U1F1F2\U1F1EB' +emoji_flags[MAF]=$'\U1F1F2\U1F1EB' +emoji_flags[st_martin]=$'\U1F1F2\U1F1EB' +emoji_flags[Madagascar]=$'\U1F1F2\U1F1EC' +emoji_flags[MG]=$'\U1F1F2\U1F1EC' +emoji_flags[MDG]=$'\U1F1F2\U1F1EC' +emoji_flags[madagascar]=$'\U1F1F2\U1F1EC' +emoji_flags[Marshall_Islands]=$'\U1F1F2\U1F1ED' +emoji_flags[MH]=$'\U1F1F2\U1F1ED' +emoji_flags[MHL]=$'\U1F1F2\U1F1ED' +emoji_flags[marshall_islands]=$'\U1F1F2\U1F1ED' +emoji_flags[Macedonia]=$'\U1F1F2\U1F1F0' +emoji_flags[MK]=$'\U1F1F2\U1F1F0' +emoji_flags[MKD]=$'\U1F1F2\U1F1F0' +emoji_flags[macedonia]=$'\U1F1F2\U1F1F0' +emoji_flags[Mali]=$'\U1F1F2\U1F1F1' +emoji_flags[ML]=$'\U1F1F2\U1F1F1' +emoji_flags[MLI]=$'\U1F1F2\U1F1F1' +emoji_flags[mali]=$'\U1F1F2\U1F1F1' +emoji_flags[Myanmar_Burma_]=$'\U1F1F2\U1F1F2' +emoji_flags[MM]=$'\U1F1F2\U1F1F2' +emoji_flags[MMR]=$'\U1F1F2\U1F1F2' +emoji_flags[myanmar]=$'\U1F1F2\U1F1F2' +emoji_flags[Mongolia]=$'\U1F1F2\U1F1F3' +emoji_flags[MN]=$'\U1F1F2\U1F1F3' +emoji_flags[MNG]=$'\U1F1F2\U1F1F3' +emoji_flags[mongolia]=$'\U1F1F2\U1F1F3' +emoji_flags[Macao_SAR_China]=$'\U1F1F2\U1F1F4' +emoji_flags[MO]=$'\U1F1F2\U1F1F4' +emoji_flags[MAC]=$'\U1F1F2\U1F1F4' +emoji_flags[macau]=$'\U1F1F2\U1F1F4' +emoji_flags[Northern_Mariana_Islands]=$'\U1F1F2\U1F1F5' +emoji_flags[MP]=$'\U1F1F2\U1F1F5' +emoji_flags[MNP]=$'\U1F1F2\U1F1F5' +emoji_flags[northern_mariana_islands]=$'\U1F1F2\U1F1F5' +emoji_flags[Martinique]=$'\U1F1F2\U1F1F6' +emoji_flags[MQ]=$'\U1F1F2\U1F1F6' +emoji_flags[MTQ]=$'\U1F1F2\U1F1F6' +emoji_flags[martinique]=$'\U1F1F2\U1F1F6' +emoji_flags[Mauritania]=$'\U1F1F2\U1F1F7' +emoji_flags[MR]=$'\U1F1F2\U1F1F7' +emoji_flags[MRT]=$'\U1F1F2\U1F1F7' +emoji_flags[mauritania]=$'\U1F1F2\U1F1F7' +emoji_flags[Montserrat]=$'\U1F1F2\U1F1F8' +emoji_flags[MS]=$'\U1F1F2\U1F1F8' +emoji_flags[MSR]=$'\U1F1F2\U1F1F8' +emoji_flags[montserrat]=$'\U1F1F2\U1F1F8' +emoji_flags[Malta]=$'\U1F1F2\U1F1F9' +emoji_flags[MT]=$'\U1F1F2\U1F1F9' +emoji_flags[MLT]=$'\U1F1F2\U1F1F9' +emoji_flags[malta]=$'\U1F1F2\U1F1F9' +emoji_flags[Mauritius]=$'\U1F1F2\U1F1FA' +emoji_flags[MU]=$'\U1F1F2\U1F1FA' +emoji_flags[MUS]=$'\U1F1F2\U1F1FA' +emoji_flags[mauritius]=$'\U1F1F2\U1F1FA' +emoji_flags[Maldives]=$'\U1F1F2\U1F1FB' +emoji_flags[MV]=$'\U1F1F2\U1F1FB' +emoji_flags[MDV]=$'\U1F1F2\U1F1FB' +emoji_flags[maldives]=$'\U1F1F2\U1F1FB' +emoji_flags[Malawi]=$'\U1F1F2\U1F1FC' +emoji_flags[MW]=$'\U1F1F2\U1F1FC' +emoji_flags[MWI]=$'\U1F1F2\U1F1FC' +emoji_flags[malawi]=$'\U1F1F2\U1F1FC' +emoji_flags[Mexico]=$'\U1F1F2\U1F1FD' +emoji_flags[MX]=$'\U1F1F2\U1F1FD' +emoji_flags[MEX]=$'\U1F1F2\U1F1FD' +emoji_flags[mexico]=$'\U1F1F2\U1F1FD' +emoji_flags[Malaysia]=$'\U1F1F2\U1F1FE' +emoji_flags[MY]=$'\U1F1F2\U1F1FE' +emoji_flags[MYS]=$'\U1F1F2\U1F1FE' +emoji_flags[malaysia]=$'\U1F1F2\U1F1FE' +emoji_flags[Mozambique]=$'\U1F1F2\U1F1FF' +emoji_flags[MZ]=$'\U1F1F2\U1F1FF' +emoji_flags[MOZ]=$'\U1F1F2\U1F1FF' +emoji_flags[mozambique]=$'\U1F1F2\U1F1FF' +emoji_flags[Namibia]=$'\U1F1F3\U1F1E6' +emoji_flags[NA]=$'\U1F1F3\U1F1E6' +emoji_flags[NAM]=$'\U1F1F3\U1F1E6' +emoji_flags[namibia]=$'\U1F1F3\U1F1E6' +emoji_flags[New_Caledonia]=$'\U1F1F3\U1F1E8' +emoji_flags[NC]=$'\U1F1F3\U1F1E8' +emoji_flags[NCL]=$'\U1F1F3\U1F1E8' +emoji_flags[new_caledonia]=$'\U1F1F3\U1F1E8' +emoji_flags[Niger]=$'\U1F1F3\U1F1EA' +emoji_flags[NE]=$'\U1F1F3\U1F1EA' +emoji_flags[NER]=$'\U1F1F3\U1F1EA' +emoji_flags[niger]=$'\U1F1F3\U1F1EA' +emoji_flags[Norfolk_Island]=$'\U1F1F3\U1F1EB' +emoji_flags[NF]=$'\U1F1F3\U1F1EB' +emoji_flags[NFK]=$'\U1F1F3\U1F1EB' +emoji_flags[norfolk_island]=$'\U1F1F3\U1F1EB' +emoji_flags[Nigeria]=$'\U1F1F3\U1F1EC' +emoji_flags[NG]=$'\U1F1F3\U1F1EC' +emoji_flags[NGA]=$'\U1F1F3\U1F1EC' +emoji_flags[nigeria]=$'\U1F1F3\U1F1EC' +emoji_flags[Nicaragua]=$'\U1F1F3\U1F1EE' +emoji_flags[NI]=$'\U1F1F3\U1F1EE' +emoji_flags[NIC]=$'\U1F1F3\U1F1EE' +emoji_flags[nicaragua]=$'\U1F1F3\U1F1EE' +emoji_flags[Netherlands]=$'\U1F1F3\U1F1F1' +emoji_flags[NL]=$'\U1F1F3\U1F1F1' +emoji_flags[NLD]=$'\U1F1F3\U1F1F1' +emoji_flags[netherlands]=$'\U1F1F3\U1F1F1' +emoji_flags[Norway]=$'\U1F1F3\U1F1F4' +emoji_flags[NO]=$'\U1F1F3\U1F1F4' +emoji_flags[NOR]=$'\U1F1F3\U1F1F4' +emoji_flags[norway]=$'\U1F1F3\U1F1F4' +emoji_flags[Nepal]=$'\U1F1F3\U1F1F5' +emoji_flags[NP]=$'\U1F1F3\U1F1F5' +emoji_flags[NPL]=$'\U1F1F3\U1F1F5' +emoji_flags[nepal]=$'\U1F1F3\U1F1F5' +emoji_flags[Nauru]=$'\U1F1F3\U1F1F7' +emoji_flags[NR]=$'\U1F1F3\U1F1F7' +emoji_flags[NRU]=$'\U1F1F3\U1F1F7' +emoji_flags[nauru]=$'\U1F1F3\U1F1F7' +emoji_flags[Niue]=$'\U1F1F3\U1F1FA' +emoji_flags[NU]=$'\U1F1F3\U1F1FA' +emoji_flags[NIU]=$'\U1F1F3\U1F1FA' +emoji_flags[niue]=$'\U1F1F3\U1F1FA' +emoji_flags[New_Zealand]=$'\U1F1F3\U1F1FF' +emoji_flags[NZ]=$'\U1F1F3\U1F1FF' +emoji_flags[NZL]=$'\U1F1F3\U1F1FF' +emoji_flags[new_zealand]=$'\U1F1F3\U1F1FF' +emoji_flags[Oman]=$'\U1F1F4\U1F1F2' +emoji_flags[OM]=$'\U1F1F4\U1F1F2' +emoji_flags[OMN]=$'\U1F1F4\U1F1F2' +emoji_flags[oman]=$'\U1F1F4\U1F1F2' +emoji_flags[Panama]=$'\U1F1F5\U1F1E6' +emoji_flags[PA]=$'\U1F1F5\U1F1E6' +emoji_flags[PAN]=$'\U1F1F5\U1F1E6' +emoji_flags[panama]=$'\U1F1F5\U1F1E6' +emoji_flags[Peru]=$'\U1F1F5\U1F1EA' +emoji_flags[PE]=$'\U1F1F5\U1F1EA' +emoji_flags[PER]=$'\U1F1F5\U1F1EA' +emoji_flags[peru]=$'\U1F1F5\U1F1EA' +emoji_flags[French_Polynesia]=$'\U1F1F5\U1F1EB' +emoji_flags[PF]=$'\U1F1F5\U1F1EB' +emoji_flags[PYF]=$'\U1F1F5\U1F1EB' +emoji_flags[french_polynesia]=$'\U1F1F5\U1F1EB' +emoji_flags[Papua_New_Guinea]=$'\U1F1F5\U1F1EC' +emoji_flags[PG]=$'\U1F1F5\U1F1EC' +emoji_flags[PNG]=$'\U1F1F5\U1F1EC' +emoji_flags[papua_new_guinea]=$'\U1F1F5\U1F1EC' +emoji_flags[Philippines]=$'\U1F1F5\U1F1ED' +emoji_flags[PH]=$'\U1F1F5\U1F1ED' +emoji_flags[PHL]=$'\U1F1F5\U1F1ED' +emoji_flags[philippines]=$'\U1F1F5\U1F1ED' +emoji_flags[Pakistan]=$'\U1F1F5\U1F1F0' +emoji_flags[PK]=$'\U1F1F5\U1F1F0' +emoji_flags[PAK]=$'\U1F1F5\U1F1F0' +emoji_flags[pakistan]=$'\U1F1F5\U1F1F0' +emoji_flags[Poland]=$'\U1F1F5\U1F1F1' +emoji_flags[PL]=$'\U1F1F5\U1F1F1' +emoji_flags[POL]=$'\U1F1F5\U1F1F1' +emoji_flags[poland]=$'\U1F1F5\U1F1F1' +emoji_flags[St_Pierre_and_Miquelon]=$'\U1F1F5\U1F1F2' +emoji_flags[PM]=$'\U1F1F5\U1F1F2' +emoji_flags[SPM]=$'\U1F1F5\U1F1F2' +emoji_flags[st_pierre_miquelon]=$'\U1F1F5\U1F1F2' +emoji_flags[Pitcairn_Islands]=$'\U1F1F5\U1F1F3' +emoji_flags[PN]=$'\U1F1F5\U1F1F3' +emoji_flags[PCN]=$'\U1F1F5\U1F1F3' +emoji_flags[pitcairn_islands]=$'\U1F1F5\U1F1F3' +emoji_flags[Puerto_Rico]=$'\U1F1F5\U1F1F7' +emoji_flags[PR]=$'\U1F1F5\U1F1F7' +emoji_flags[PRI]=$'\U1F1F5\U1F1F7' +emoji_flags[puerto_rico]=$'\U1F1F5\U1F1F7' +emoji_flags[Palestinian_Territories]=$'\U1F1F5\U1F1F8' +emoji_flags[PS]=$'\U1F1F5\U1F1F8' +emoji_flags[PSE]=$'\U1F1F5\U1F1F8' +emoji_flags[palestinian_territories]=$'\U1F1F5\U1F1F8' +emoji_flags[Portugal]=$'\U1F1F5\U1F1F9' +emoji_flags[PT]=$'\U1F1F5\U1F1F9' +emoji_flags[PRT]=$'\U1F1F5\U1F1F9' +emoji_flags[portugal]=$'\U1F1F5\U1F1F9' +emoji_flags[Palau]=$'\U1F1F5\U1F1FC' +emoji_flags[PW]=$'\U1F1F5\U1F1FC' +emoji_flags[PLW]=$'\U1F1F5\U1F1FC' +emoji_flags[palau]=$'\U1F1F5\U1F1FC' +emoji_flags[Paraguay]=$'\U1F1F5\U1F1FE' +emoji_flags[PY]=$'\U1F1F5\U1F1FE' +emoji_flags[PRY]=$'\U1F1F5\U1F1FE' +emoji_flags[paraguay]=$'\U1F1F5\U1F1FE' +emoji_flags[Qatar]=$'\U1F1F6\U1F1E6' +emoji_flags[QA]=$'\U1F1F6\U1F1E6' +emoji_flags[QAT]=$'\U1F1F6\U1F1E6' +emoji_flags[qatar]=$'\U1F1F6\U1F1E6' +emoji_flags[Réunion]=$'\U1F1F7\U1F1EA' +emoji_flags[RE]=$'\U1F1F7\U1F1EA' +emoji_flags[REU]=$'\U1F1F7\U1F1EA' +emoji_flags[reunion]=$'\U1F1F7\U1F1EA' +emoji_flags[Romania]=$'\U1F1F7\U1F1F4' +emoji_flags[RO]=$'\U1F1F7\U1F1F4' +emoji_flags[ROU]=$'\U1F1F7\U1F1F4' +emoji_flags[romania]=$'\U1F1F7\U1F1F4' +emoji_flags[Serbia]=$'\U1F1F7\U1F1F8' +emoji_flags[RS]=$'\U1F1F7\U1F1F8' +emoji_flags[SRB]=$'\U1F1F7\U1F1F8' +emoji_flags[serbia]=$'\U1F1F7\U1F1F8' +emoji_flags[Russia]=$'\U1F1F7\U1F1FA' +emoji_flags[RU]=$'\U1F1F7\U1F1FA' +emoji_flags[RUS]=$'\U1F1F7\U1F1FA' +emoji_flags[ru]=$'\U1F1F7\U1F1FA' +emoji_flags[Rwanda]=$'\U1F1F7\U1F1FC' +emoji_flags[RW]=$'\U1F1F7\U1F1FC' +emoji_flags[RWA]=$'\U1F1F7\U1F1FC' +emoji_flags[rwanda]=$'\U1F1F7\U1F1FC' +emoji_flags[Saudi_Arabia]=$'\U1F1F8\U1F1E6' +emoji_flags[SA]=$'\U1F1F8\U1F1E6' +emoji_flags[SAU]=$'\U1F1F8\U1F1E6' +emoji_flags[saudi_arabia]=$'\U1F1F8\U1F1E6' +emoji_flags[Solomon_Islands]=$'\U1F1F8\U1F1E7' +emoji_flags[SB]=$'\U1F1F8\U1F1E7' +emoji_flags[SLB]=$'\U1F1F8\U1F1E7' +emoji_flags[solomon_islands]=$'\U1F1F8\U1F1E7' +emoji_flags[Seychelles]=$'\U1F1F8\U1F1E8' +emoji_flags[SC]=$'\U1F1F8\U1F1E8' +emoji_flags[SYC]=$'\U1F1F8\U1F1E8' +emoji_flags[seychelles]=$'\U1F1F8\U1F1E8' +emoji_flags[Sudan]=$'\U1F1F8\U1F1E9' +emoji_flags[SD]=$'\U1F1F8\U1F1E9' +emoji_flags[SDN]=$'\U1F1F8\U1F1E9' +emoji_flags[sudan]=$'\U1F1F8\U1F1E9' +emoji_flags[Sweden]=$'\U1F1F8\U1F1EA' +emoji_flags[SE]=$'\U1F1F8\U1F1EA' +emoji_flags[SWE]=$'\U1F1F8\U1F1EA' +emoji_flags[sweden]=$'\U1F1F8\U1F1EA' +emoji_flags[Singapore]=$'\U1F1F8\U1F1EC' +emoji_flags[SG]=$'\U1F1F8\U1F1EC' +emoji_flags[SGP]=$'\U1F1F8\U1F1EC' +emoji_flags[singapore]=$'\U1F1F8\U1F1EC' +emoji_flags[St_Helena]=$'\U1F1F8\U1F1ED' +emoji_flags[SH]=$'\U1F1F8\U1F1ED' +emoji_flags[SHN]=$'\U1F1F8\U1F1ED' +emoji_flags[st_helena]=$'\U1F1F8\U1F1ED' +emoji_flags[Slovenia]=$'\U1F1F8\U1F1EE' +emoji_flags[SI]=$'\U1F1F8\U1F1EE' +emoji_flags[SVN]=$'\U1F1F8\U1F1EE' +emoji_flags[slovenia]=$'\U1F1F8\U1F1EE' +emoji_flags[Svalbard_and_Jan_Mayen]=$'\U1F1F8\U1F1EF' +emoji_flags[SJ]=$'\U1F1F8\U1F1EF' +emoji_flags[SJM]=$'\U1F1F8\U1F1EF' +emoji_flags[svalbard_jan_mayen]=$'\U1F1F8\U1F1EF' +emoji_flags[Slovakia]=$'\U1F1F8\U1F1F0' +emoji_flags[SK]=$'\U1F1F8\U1F1F0' +emoji_flags[SVK]=$'\U1F1F8\U1F1F0' +emoji_flags[slovakia]=$'\U1F1F8\U1F1F0' +emoji_flags[Sierra_Leone]=$'\U1F1F8\U1F1F1' +emoji_flags[SL]=$'\U1F1F8\U1F1F1' +emoji_flags[SLE]=$'\U1F1F8\U1F1F1' +emoji_flags[sierra_leone]=$'\U1F1F8\U1F1F1' +emoji_flags[San_Marino]=$'\U1F1F8\U1F1F2' +emoji_flags[SM]=$'\U1F1F8\U1F1F2' +emoji_flags[SMR]=$'\U1F1F8\U1F1F2' +emoji_flags[san_marino]=$'\U1F1F8\U1F1F2' +emoji_flags[Senegal]=$'\U1F1F8\U1F1F3' +emoji_flags[SN]=$'\U1F1F8\U1F1F3' +emoji_flags[SEN]=$'\U1F1F8\U1F1F3' +emoji_flags[senegal]=$'\U1F1F8\U1F1F3' +emoji_flags[Somalia]=$'\U1F1F8\U1F1F4' +emoji_flags[SO]=$'\U1F1F8\U1F1F4' +emoji_flags[SOM]=$'\U1F1F8\U1F1F4' +emoji_flags[somalia]=$'\U1F1F8\U1F1F4' +emoji_flags[Suriname]=$'\U1F1F8\U1F1F7' +emoji_flags[SR]=$'\U1F1F8\U1F1F7' +emoji_flags[SUR]=$'\U1F1F8\U1F1F7' +emoji_flags[suriname]=$'\U1F1F8\U1F1F7' +emoji_flags[South_Sudan]=$'\U1F1F8\U1F1F8' +emoji_flags[SS]=$'\U1F1F8\U1F1F8' +emoji_flags[SSD]=$'\U1F1F8\U1F1F8' +emoji_flags[south_sudan]=$'\U1F1F8\U1F1F8' +emoji_flags[São_Tomé_and_Príncipe]=$'\U1F1F8\U1F1F9' +emoji_flags[sao_tome_principe]=$'\U1F1F8\U1F1F9' +emoji_flags[El_Salvador]=$'\U1F1F8\U1F1FB' +emoji_flags[SV]=$'\U1F1F8\U1F1FB' +emoji_flags[SLV]=$'\U1F1F8\U1F1FB' +emoji_flags[el_salvador]=$'\U1F1F8\U1F1FB' +emoji_flags[Sint_Maarten]=$'\U1F1F8\U1F1FD' +emoji_flags[SX]=$'\U1F1F8\U1F1FD' +emoji_flags[SXM]=$'\U1F1F8\U1F1FD' +emoji_flags[sint_maarten]=$'\U1F1F8\U1F1FD' +emoji_flags[Syria]=$'\U1F1F8\U1F1FE' +emoji_flags[SY]=$'\U1F1F8\U1F1FE' +emoji_flags[SYR]=$'\U1F1F8\U1F1FE' +emoji_flags[syria]=$'\U1F1F8\U1F1FE' +emoji_flags[Eswatini]=$'\U1F1F8\U1F1FF' +emoji_flags[SZ]=$'\U1F1F8\U1F1FF' +emoji_flags[SWZ]=$'\U1F1F8\U1F1FF' +emoji_flags[swaziland]=$'\U1F1F8\U1F1FF' +emoji_flags[Tristan_da_Cunha]=$'\U1F1F9\U1F1E6' +emoji_flags[tristan_da_cunha]=$'\U1F1F9\U1F1E6' +emoji_flags[Turks_and_Caicos_Islands]=$'\U1F1F9\U1F1E8' +emoji_flags[TC]=$'\U1F1F9\U1F1E8' +emoji_flags[TCA]=$'\U1F1F9\U1F1E8' +emoji_flags[turks_caicos_islands]=$'\U1F1F9\U1F1E8' +emoji_flags[Chad]=$'\U1F1F9\U1F1E9' +emoji_flags[TD]=$'\U1F1F9\U1F1E9' +emoji_flags[TCD]=$'\U1F1F9\U1F1E9' +emoji_flags[chad]=$'\U1F1F9\U1F1E9' +emoji_flags[French_Southern_Territories]=$'\U1F1F9\U1F1EB' +emoji_flags[TF]=$'\U1F1F9\U1F1EB' +emoji_flags[ATF]=$'\U1F1F9\U1F1EB' +emoji_flags[french_southern_territories]=$'\U1F1F9\U1F1EB' +emoji_flags[Togo]=$'\U1F1F9\U1F1EC' +emoji_flags[TG]=$'\U1F1F9\U1F1EC' +emoji_flags[TGO]=$'\U1F1F9\U1F1EC' +emoji_flags[togo]=$'\U1F1F9\U1F1EC' +emoji_flags[Thailand]=$'\U1F1F9\U1F1ED' +emoji_flags[TH]=$'\U1F1F9\U1F1ED' +emoji_flags[THA]=$'\U1F1F9\U1F1ED' +emoji_flags[thailand]=$'\U1F1F9\U1F1ED' +emoji_flags[Tajikistan]=$'\U1F1F9\U1F1EF' +emoji_flags[TJ]=$'\U1F1F9\U1F1EF' +emoji_flags[TJK]=$'\U1F1F9\U1F1EF' +emoji_flags[tajikistan]=$'\U1F1F9\U1F1EF' +emoji_flags[Tokelau]=$'\U1F1F9\U1F1F0' +emoji_flags[TK]=$'\U1F1F9\U1F1F0' +emoji_flags[TKL]=$'\U1F1F9\U1F1F0' +emoji_flags[tokelau]=$'\U1F1F9\U1F1F0' +emoji_flags[Timor_Leste]=$'\U1F1F9\U1F1F1' +emoji_flags[TL]=$'\U1F1F9\U1F1F1' +emoji_flags[TLS]=$'\U1F1F9\U1F1F1' +emoji_flags[timor_leste]=$'\U1F1F9\U1F1F1' +emoji_flags[Turkmenistan]=$'\U1F1F9\U1F1F2' +emoji_flags[TM]=$'\U1F1F9\U1F1F2' +emoji_flags[TKM]=$'\U1F1F9\U1F1F2' +emoji_flags[turkmenistan]=$'\U1F1F9\U1F1F2' +emoji_flags[Tunisia]=$'\U1F1F9\U1F1F3' +emoji_flags[TN]=$'\U1F1F9\U1F1F3' +emoji_flags[TUN]=$'\U1F1F9\U1F1F3' +emoji_flags[tunisia]=$'\U1F1F9\U1F1F3' +emoji_flags[Tonga]=$'\U1F1F9\U1F1F4' +emoji_flags[TO]=$'\U1F1F9\U1F1F4' +emoji_flags[TON]=$'\U1F1F9\U1F1F4' +emoji_flags[tonga]=$'\U1F1F9\U1F1F4' +emoji_flags[Turkey]=$'\U1F1F9\U1F1F7' +emoji_flags[TR]=$'\U1F1F9\U1F1F7' +emoji_flags[TUR]=$'\U1F1F9\U1F1F7' +emoji_flags[tr]=$'\U1F1F9\U1F1F7' +emoji_flags[Trinidad_and_Tobago]=$'\U1F1F9\U1F1F9' +emoji_flags[TT]=$'\U1F1F9\U1F1F9' +emoji_flags[TTO]=$'\U1F1F9\U1F1F9' +emoji_flags[trinidad_tobago]=$'\U1F1F9\U1F1F9' +emoji_flags[Tuvalu]=$'\U1F1F9\U1F1FB' +emoji_flags[TV]=$'\U1F1F9\U1F1FB' +emoji_flags[TUV]=$'\U1F1F9\U1F1FB' +emoji_flags[tuvalu]=$'\U1F1F9\U1F1FB' +emoji_flags[Taiwan]=$'\U1F1F9\U1F1FC' +emoji_flags[TW]=$'\U1F1F9\U1F1FC' +emoji_flags[TWN]=$'\U1F1F9\U1F1FC' +emoji_flags[taiwan]=$'\U1F1F9\U1F1FC' +emoji_flags[Tanzania]=$'\U1F1F9\U1F1FF' +emoji_flags[TZ]=$'\U1F1F9\U1F1FF' +emoji_flags[TZA]=$'\U1F1F9\U1F1FF' +emoji_flags[tanzania]=$'\U1F1F9\U1F1FF' +emoji_flags[Ukraine]=$'\U1F1FA\U1F1E6' +emoji_flags[UA]=$'\U1F1FA\U1F1E6' +emoji_flags[UKR]=$'\U1F1FA\U1F1E6' +emoji_flags[ukraine]=$'\U1F1FA\U1F1E6' +emoji_flags[Uganda]=$'\U1F1FA\U1F1EC' +emoji_flags[UG]=$'\U1F1FA\U1F1EC' +emoji_flags[UGA]=$'\U1F1FA\U1F1EC' +emoji_flags[uganda]=$'\U1F1FA\U1F1EC' +emoji_flags[U_S_Outlying_Islands]=$'\U1F1FA\U1F1F2' +emoji_flags[us_outlying_islands]=$'\U1F1FA\U1F1F2' +emoji_flags[United_Nations]=$'\U1F1FA\U1F1F3' +emoji_flags[united_nations]=$'\U1F1FA\U1F1F3' +emoji_flags[United_States]=$'\U1F1FA\U1F1F8' +emoji_flags[US]=$'\U1F1FA\U1F1F8' +emoji_flags[USA]=$'\U1F1FA\U1F1F8' +emoji_flags[us]=$'\U1F1FA\U1F1F8' +emoji_flags[Uruguay]=$'\U1F1FA\U1F1FE' +emoji_flags[UY]=$'\U1F1FA\U1F1FE' +emoji_flags[URY]=$'\U1F1FA\U1F1FE' +emoji_flags[uruguay]=$'\U1F1FA\U1F1FE' +emoji_flags[Uzbekistan]=$'\U1F1FA\U1F1FF' +emoji_flags[UZ]=$'\U1F1FA\U1F1FF' +emoji_flags[UZB]=$'\U1F1FA\U1F1FF' +emoji_flags[uzbekistan]=$'\U1F1FA\U1F1FF' +emoji_flags[Vatican_City]=$'\U1F1FB\U1F1E6' +emoji_flags[VA]=$'\U1F1FB\U1F1E6' +emoji_flags[VAT]=$'\U1F1FB\U1F1E6' +emoji_flags[vatican_city]=$'\U1F1FB\U1F1E6' +emoji_flags[St_Vincent_and_Grenadines]=$'\U1F1FB\U1F1E8' +emoji_flags[VC]=$'\U1F1FB\U1F1E8' +emoji_flags[VCT]=$'\U1F1FB\U1F1E8' +emoji_flags[st_vincent_grenadines]=$'\U1F1FB\U1F1E8' +emoji_flags[Venezuela]=$'\U1F1FB\U1F1EA' +emoji_flags[VE]=$'\U1F1FB\U1F1EA' +emoji_flags[VEN]=$'\U1F1FB\U1F1EA' +emoji_flags[venezuela]=$'\U1F1FB\U1F1EA' +emoji_flags[British_Virgin_Islands]=$'\U1F1FB\U1F1EC' +emoji_flags[VG]=$'\U1F1FB\U1F1EC' +emoji_flags[VGB]=$'\U1F1FB\U1F1EC' +emoji_flags[british_virgin_islands]=$'\U1F1FB\U1F1EC' +emoji_flags[U_S_Virgin_Islands]=$'\U1F1FB\U1F1EE' +emoji_flags[VI]=$'\U1F1FB\U1F1EE' +emoji_flags[VIR]=$'\U1F1FB\U1F1EE' +emoji_flags[us_virgin_islands]=$'\U1F1FB\U1F1EE' +emoji_flags[Vietnam]=$'\U1F1FB\U1F1F3' +emoji_flags[VN]=$'\U1F1FB\U1F1F3' +emoji_flags[VNM]=$'\U1F1FB\U1F1F3' +emoji_flags[vietnam]=$'\U1F1FB\U1F1F3' +emoji_flags[Vanuatu]=$'\U1F1FB\U1F1FA' +emoji_flags[VU]=$'\U1F1FB\U1F1FA' +emoji_flags[VUT]=$'\U1F1FB\U1F1FA' +emoji_flags[vanuatu]=$'\U1F1FB\U1F1FA' +emoji_flags[Wallis_and_Futuna]=$'\U1F1FC\U1F1EB' +emoji_flags[WF]=$'\U1F1FC\U1F1EB' +emoji_flags[WLF]=$'\U1F1FC\U1F1EB' +emoji_flags[wallis_futuna]=$'\U1F1FC\U1F1EB' +emoji_flags[Samoa]=$'\U1F1FC\U1F1F8' +emoji_flags[WS]=$'\U1F1FC\U1F1F8' +emoji_flags[WSM]=$'\U1F1FC\U1F1F8' +emoji_flags[samoa]=$'\U1F1FC\U1F1F8' +emoji_flags[Kosovo]=$'\U1F1FD\U1F1F0' +emoji_flags[XK]=$'\U1F1FD\U1F1F0' +emoji_flags[XKX]=$'\U1F1FD\U1F1F0' +emoji_flags[kosovo]=$'\U1F1FD\U1F1F0' +emoji_flags[Yemen]=$'\U1F1FE\U1F1EA' +emoji_flags[YE]=$'\U1F1FE\U1F1EA' +emoji_flags[YEM]=$'\U1F1FE\U1F1EA' +emoji_flags[yemen]=$'\U1F1FE\U1F1EA' +emoji_flags[Mayotte]=$'\U1F1FE\U1F1F9' +emoji_flags[YT]=$'\U1F1FE\U1F1F9' +emoji_flags[MYT]=$'\U1F1FE\U1F1F9' +emoji_flags[mayotte]=$'\U1F1FE\U1F1F9' +emoji_flags[South_Africa]=$'\U1F1FF\U1F1E6' +emoji_flags[ZA]=$'\U1F1FF\U1F1E6' +emoji_flags[ZAF]=$'\U1F1FF\U1F1E6' +emoji_flags[south_africa]=$'\U1F1FF\U1F1E6' +emoji_flags[Zambia]=$'\U1F1FF\U1F1F2' +emoji_flags[ZM]=$'\U1F1FF\U1F1F2' +emoji_flags[ZMB]=$'\U1F1FF\U1F1F2' +emoji_flags[zambia]=$'\U1F1FF\U1F1F2' +emoji_flags[Zimbabwe]=$'\U1F1FF\U1F1FC' +emoji_flags[ZW]=$'\U1F1FF\U1F1FC' +emoji_flags[ZWE]=$'\U1F1FF\U1F1FC' +emoji_flags[zimbabwe]=$'\U1F1FF\U1F1FC' +emoji_flags[England]=$'\U1F3F4\UE0067\UE0062\UE0065\UE006E\UE0067\UE007F' +emoji_flags[england]=$'\U1F3F4\UE0067\UE0062\UE0065\UE006E\UE0067\UE007F' +emoji_flags[Scotland]=$'\U1F3F4\UE0067\UE0062\UE0073\UE0063\UE0074\UE007F' +emoji_flags[scotland]=$'\U1F3F4\UE0067\UE0062\UE0073\UE0063\UE0074\UE007F' +emoji_flags[Wales]=$'\U1F3F4\UE0067\UE0062\UE0077\UE006C\UE0073\UE007F' +emoji_flags[wales]=$'\U1F3F4\UE0067\UE0062\UE0077\UE006C\UE0073\UE007F' + +emoji_groups[fruits]=" + grapes + melon + watermelon + tangerine + lemon + banana + pineapple + mango + red_apple + green_apple + pear + peach + cherries + strawberry + kiwi_fruit + tomato + coconut +" + +emoji_groups[vehicles]=" + locomotive + railway_car + high_speed_train + bullet_train + bullet_train_1 + metro + light_rail + station + tram + monorail + mountain_railway + tram_car + bus + oncoming_bus + trolleybus + minibus + ambulance + fire_engine + police_car + oncoming_police_car + taxi + oncoming_taxi + automobile + oncoming_automobile + sport_utility_vehicle + delivery_truck + articulated_lorry + tractor + racing_car + motorcycle + motor_scooter + manual_wheelchair + motorized_wheelchair + auto_rickshaw + bicycle + kick_scooter + skateboard + bus_stop + motorway + railway_track + oil_drum + fuel_pump + police_car_light + horizontal_traffic_light + vertical_traffic_light + stop_sign + construction + anchor + sailboat + canoe + speedboat + passenger_ship + ferry + motor_boat + ship + airplane + small_airplane + airplane_departure + airplane_arrival + parachute + seat + helicopter + suspension_railway + mountain_cableway + aerial_tramway + satellite + rocket + flying_saucer + ATM_sign + litter_in_bin_sign + potable_water + wheelchair_symbol + men_s_room + women_s_room + restroom + baby_symbol + water_closet + passport_control + customs + baggage_claim + left_luggage +" + +emoji_groups[hands]=" + waving_hand + waving_hand_light_skin_tone + waving_hand_medium_light_skin_tone + waving_hand_medium_skin_tone + waving_hand_medium_dark_skin_tone + waving_hand_dark_skin_tone + raised_back_of_hand + raised_back_of_hand_light_skin_tone + raised_back_of_hand_medium_light_skin_tone + raised_back_of_hand_medium_skin_tone + raised_back_of_hand_medium_dark_skin_tone + raised_back_of_hand_dark_skin_tone + hand_with_fingers_splayed + hand_with_fingers_splayed_light_skin_tone + hand_with_fingers_splayed_medium_light_skin_tone + hand_with_fingers_splayed_medium_skin_tone + hand_with_fingers_splayed_medium_dark_skin_tone + hand_with_fingers_splayed_dark_skin_tone + raised_hand + raised_hand_light_skin_tone + raised_hand_medium_light_skin_tone + raised_hand_medium_skin_tone + raised_hand_medium_dark_skin_tone + raised_hand_dark_skin_tone + vulcan_salute + vulcan_salute_light_skin_tone + vulcan_salute_medium_light_skin_tone + vulcan_salute_medium_skin_tone + vulcan_salute_medium_dark_skin_tone + vulcan_salute_dark_skin_tone + OK_hand + OK_hand_light_skin_tone + OK_hand_medium_light_skin_tone + OK_hand_medium_skin_tone + OK_hand_medium_dark_skin_tone + OK_hand_dark_skin_tone + pinching_hand + pinching_hand_light_skin_tone + pinching_hand_medium_light_skin_tone + pinching_hand_medium_skin_tone + pinching_hand_medium_dark_skin_tone + pinching_hand_dark_skin_tone + victory_hand + victory_hand_light_skin_tone + victory_hand_medium_light_skin_tone + victory_hand_medium_skin_tone + victory_hand_medium_dark_skin_tone + victory_hand_dark_skin_tone + crossed_fingers + crossed_fingers_light_skin_tone + crossed_fingers_medium_light_skin_tone + crossed_fingers_medium_skin_tone + crossed_fingers_medium_dark_skin_tone + crossed_fingers_dark_skin_tone + love_you_gesture + love_you_gesture_light_skin_tone + love_you_gesture_medium_light_skin_tone + love_you_gesture_medium_skin_tone + love_you_gesture_medium_dark_skin_tone + love_you_gesture_dark_skin_tone + sign_of_the_horns + sign_of_the_horns_light_skin_tone + sign_of_the_horns_medium_light_skin_tone + sign_of_the_horns_medium_skin_tone + sign_of_the_horns_medium_dark_skin_tone + sign_of_the_horns_dark_skin_tone + call_me_hand + call_me_hand_light_skin_tone + call_me_hand_medium_light_skin_tone + call_me_hand_medium_skin_tone + call_me_hand_medium_dark_skin_tone + call_me_hand_dark_skin_tone + backhand_index_pointing_left + backhand_index_pointing_left_light_skin_tone + backhand_index_pointing_left_medium_light_skin_tone + backhand_index_pointing_left_medium_skin_tone + backhand_index_pointing_left_medium_dark_skin_tone + backhand_index_pointing_left_dark_skin_tone + backhand_index_pointing_right + backhand_index_pointing_right_light_skin_tone + backhand_index_pointing_right_medium_light_skin_tone + backhand_index_pointing_right_medium_skin_tone + backhand_index_pointing_right_medium_dark_skin_tone + backhand_index_pointing_right_dark_skin_tone + backhand_index_pointing_up + backhand_index_pointing_up_light_skin_tone + backhand_index_pointing_up_medium_light_skin_tone + backhand_index_pointing_up_medium_skin_tone + backhand_index_pointing_up_medium_dark_skin_tone + backhand_index_pointing_up_dark_skin_tone + middle_finger + middle_finger_light_skin_tone + middle_finger_medium_light_skin_tone + middle_finger_medium_skin_tone + middle_finger_medium_dark_skin_tone + middle_finger_dark_skin_tone + backhand_index_pointing_down + backhand_index_pointing_down_light_skin_tone + backhand_index_pointing_down_medium_light_skin_tone + backhand_index_pointing_down_medium_skin_tone + backhand_index_pointing_down_medium_dark_skin_tone + backhand_index_pointing_down_dark_skin_tone + index_pointing_up + index_pointing_up_light_skin_tone + index_pointing_up_medium_light_skin_tone + index_pointing_up_medium_skin_tone + index_pointing_up_medium_dark_skin_tone + index_pointing_up_dark_skin_tone + thumbs_up + thumbs_up_light_skin_tone + thumbs_up_medium_light_skin_tone + thumbs_up_medium_skin_tone + thumbs_up_medium_dark_skin_tone + thumbs_up_dark_skin_tone + thumbs_down + thumbs_down_light_skin_tone + thumbs_down_medium_light_skin_tone + thumbs_down_medium_skin_tone + thumbs_down_medium_dark_skin_tone + thumbs_down_dark_skin_tone + raised_fist + raised_fist_light_skin_tone + raised_fist_medium_light_skin_tone + raised_fist_medium_skin_tone + raised_fist_medium_dark_skin_tone + raised_fist_dark_skin_tone + oncoming_fist + oncoming_fist_light_skin_tone + oncoming_fist_medium_light_skin_tone + oncoming_fist_medium_skin_tone + oncoming_fist_medium_dark_skin_tone + oncoming_fist_dark_skin_tone + left_facing_fist + left_facing_fist_light_skin_tone + left_facing_fist_medium_light_skin_tone + left_facing_fist_medium_skin_tone + left_facing_fist_medium_dark_skin_tone + left_facing_fist_dark_skin_tone + right_facing_fist + right_facing_fist_light_skin_tone + right_facing_fist_medium_light_skin_tone + right_facing_fist_medium_skin_tone + right_facing_fist_medium_dark_skin_tone + right_facing_fist_dark_skin_tone + writing_hand + writing_hand_light_skin_tone + writing_hand_medium_light_skin_tone + writing_hand_medium_skin_tone + writing_hand_medium_dark_skin_tone + writing_hand_dark_skin_tone + nail_polish + nail_polish_light_skin_tone + nail_polish_medium_light_skin_tone + nail_polish_medium_skin_tone + nail_polish_medium_dark_skin_tone + nail_polish_dark_skin_tone + selfie + selfie_light_skin_tone + selfie_medium_light_skin_tone + selfie_medium_skin_tone + selfie_medium_dark_skin_tone + selfie_dark_skin_tone +" + +emoji_groups[people]=" + person_frowning + person_frowning_light_skin_tone + person_frowning_medium_light_skin_tone + person_frowning_medium_skin_tone + person_frowning_medium_dark_skin_tone + person_frowning_dark_skin_tone + man_frowning + man_frowning_light_skin_tone + man_frowning_medium_light_skin_tone + man_frowning_medium_skin_tone + man_frowning_medium_dark_skin_tone + man_frowning_dark_skin_tone + woman_frowning + woman_frowning_light_skin_tone + woman_frowning_medium_light_skin_tone + woman_frowning_medium_skin_tone + woman_frowning_medium_dark_skin_tone + woman_frowning_dark_skin_tone + person_pouting + person_pouting_light_skin_tone + person_pouting_medium_light_skin_tone + person_pouting_medium_skin_tone + person_pouting_medium_dark_skin_tone + person_pouting_dark_skin_tone + man_pouting + man_pouting_light_skin_tone + man_pouting_medium_light_skin_tone + man_pouting_medium_skin_tone + man_pouting_medium_dark_skin_tone + man_pouting_dark_skin_tone + woman_pouting + woman_pouting_light_skin_tone + woman_pouting_medium_light_skin_tone + woman_pouting_medium_skin_tone + woman_pouting_medium_dark_skin_tone + woman_pouting_dark_skin_tone + person_gesturing_NO + person_gesturing_NO_light_skin_tone + person_gesturing_NO_medium_light_skin_tone + person_gesturing_NO_medium_skin_tone + person_gesturing_NO_medium_dark_skin_tone + person_gesturing_NO_dark_skin_tone + man_gesturing_NO + man_gesturing_NO_light_skin_tone + man_gesturing_NO_medium_light_skin_tone + man_gesturing_NO_medium_skin_tone + man_gesturing_NO_medium_dark_skin_tone + man_gesturing_NO_dark_skin_tone + woman_gesturing_NO + woman_gesturing_NO_light_skin_tone + woman_gesturing_NO_medium_light_skin_tone + woman_gesturing_NO_medium_skin_tone + woman_gesturing_NO_medium_dark_skin_tone + woman_gesturing_NO_dark_skin_tone + person_gesturing_OK + person_gesturing_OK_light_skin_tone + person_gesturing_OK_medium_light_skin_tone + person_gesturing_OK_medium_skin_tone + person_gesturing_OK_medium_dark_skin_tone + person_gesturing_OK_dark_skin_tone + man_gesturing_OK + man_gesturing_OK_light_skin_tone + man_gesturing_OK_medium_light_skin_tone + man_gesturing_OK_medium_skin_tone + man_gesturing_OK_medium_dark_skin_tone + man_gesturing_OK_dark_skin_tone + woman_gesturing_OK + woman_gesturing_OK_light_skin_tone + woman_gesturing_OK_medium_light_skin_tone + woman_gesturing_OK_medium_skin_tone + woman_gesturing_OK_medium_dark_skin_tone + woman_gesturing_OK_dark_skin_tone + person_tipping_hand + person_tipping_hand_light_skin_tone + person_tipping_hand_medium_light_skin_tone + person_tipping_hand_medium_skin_tone + person_tipping_hand_medium_dark_skin_tone + person_tipping_hand_dark_skin_tone + man_tipping_hand + man_tipping_hand_light_skin_tone + man_tipping_hand_medium_light_skin_tone + man_tipping_hand_medium_skin_tone + man_tipping_hand_medium_dark_skin_tone + man_tipping_hand_dark_skin_tone + woman_tipping_hand + woman_tipping_hand_light_skin_tone + woman_tipping_hand_medium_light_skin_tone + woman_tipping_hand_medium_skin_tone + woman_tipping_hand_medium_dark_skin_tone + woman_tipping_hand_dark_skin_tone + person_raising_hand + person_raising_hand_light_skin_tone + person_raising_hand_medium_light_skin_tone + person_raising_hand_medium_skin_tone + person_raising_hand_medium_dark_skin_tone + person_raising_hand_dark_skin_tone + man_raising_hand + man_raising_hand_light_skin_tone + man_raising_hand_medium_light_skin_tone + man_raising_hand_medium_skin_tone + man_raising_hand_medium_dark_skin_tone + man_raising_hand_dark_skin_tone + woman_raising_hand + woman_raising_hand_light_skin_tone + woman_raising_hand_medium_light_skin_tone + woman_raising_hand_medium_skin_tone + woman_raising_hand_medium_dark_skin_tone + woman_raising_hand_dark_skin_tone + deaf_person + deaf_person_light_skin_tone + deaf_person_medium_light_skin_tone + deaf_person_medium_skin_tone + deaf_person_medium_dark_skin_tone + deaf_person_dark_skin_tone + deaf_man + deaf_man_light_skin_tone + deaf_man_medium_light_skin_tone + deaf_man_medium_skin_tone + deaf_man_medium_dark_skin_tone + deaf_man_dark_skin_tone + deaf_woman + deaf_woman_light_skin_tone + deaf_woman_medium_light_skin_tone + deaf_woman_medium_skin_tone + deaf_woman_medium_dark_skin_tone + deaf_woman_dark_skin_tone + person_bowing + person_bowing_light_skin_tone + person_bowing_medium_light_skin_tone + person_bowing_medium_skin_tone + person_bowing_medium_dark_skin_tone + person_bowing_dark_skin_tone + man_bowing + man_bowing_light_skin_tone + man_bowing_medium_light_skin_tone + man_bowing_medium_skin_tone + man_bowing_medium_dark_skin_tone + man_bowing_dark_skin_tone + woman_bowing + woman_bowing_light_skin_tone + woman_bowing_medium_light_skin_tone + woman_bowing_medium_skin_tone + woman_bowing_medium_dark_skin_tone + woman_bowing_dark_skin_tone + person_facepalming + person_facepalming_light_skin_tone + person_facepalming_medium_light_skin_tone + person_facepalming_medium_skin_tone + person_facepalming_medium_dark_skin_tone + person_facepalming_dark_skin_tone + man_facepalming + man_facepalming_light_skin_tone + man_facepalming_medium_light_skin_tone + man_facepalming_medium_skin_tone + man_facepalming_medium_dark_skin_tone + man_facepalming_dark_skin_tone + woman_facepalming + woman_facepalming_light_skin_tone + woman_facepalming_medium_light_skin_tone + woman_facepalming_medium_skin_tone + woman_facepalming_medium_dark_skin_tone + woman_facepalming_dark_skin_tone + person_shrugging + person_shrugging_light_skin_tone + person_shrugging_medium_light_skin_tone + person_shrugging_medium_skin_tone + person_shrugging_medium_dark_skin_tone + person_shrugging_dark_skin_tone + man_shrugging + man_shrugging_light_skin_tone + man_shrugging_medium_light_skin_tone + man_shrugging_medium_skin_tone + man_shrugging_medium_dark_skin_tone + man_shrugging_dark_skin_tone + woman_shrugging + woman_shrugging_light_skin_tone + woman_shrugging_medium_light_skin_tone + woman_shrugging_medium_skin_tone + woman_shrugging_medium_dark_skin_tone + woman_shrugging_dark_skin_tone + man_health_worker + man_health_worker_light_skin_tone + man_health_worker_medium_light_skin_tone + man_health_worker_medium_skin_tone + man_health_worker_medium_dark_skin_tone + man_health_worker_dark_skin_tone + woman_health_worker + woman_health_worker_light_skin_tone + woman_health_worker_medium_light_skin_tone + woman_health_worker_medium_skin_tone + woman_health_worker_medium_dark_skin_tone + woman_health_worker_dark_skin_tone + man_student + man_student_light_skin_tone + man_student_medium_light_skin_tone + man_student_medium_skin_tone + man_student_medium_dark_skin_tone + man_student_dark_skin_tone + woman_student + woman_student_light_skin_tone + woman_student_medium_light_skin_tone + woman_student_medium_skin_tone + woman_student_medium_dark_skin_tone + woman_student_dark_skin_tone + man_teacher + man_teacher_light_skin_tone + man_teacher_medium_light_skin_tone + man_teacher_medium_skin_tone + man_teacher_medium_dark_skin_tone + man_teacher_dark_skin_tone + woman_teacher + woman_teacher_light_skin_tone + woman_teacher_medium_light_skin_tone + woman_teacher_medium_skin_tone + woman_teacher_medium_dark_skin_tone + woman_teacher_dark_skin_tone + man_judge + man_judge_light_skin_tone + man_judge_medium_light_skin_tone + man_judge_medium_skin_tone + man_judge_medium_dark_skin_tone + man_judge_dark_skin_tone + woman_judge + woman_judge_light_skin_tone + woman_judge_medium_light_skin_tone + woman_judge_medium_skin_tone + woman_judge_medium_dark_skin_tone + woman_judge_dark_skin_tone + man_farmer + man_farmer_light_skin_tone + man_farmer_medium_light_skin_tone + man_farmer_medium_skin_tone + man_farmer_medium_dark_skin_tone + man_farmer_dark_skin_tone + woman_farmer + woman_farmer_light_skin_tone + woman_farmer_medium_light_skin_tone + woman_farmer_medium_skin_tone + woman_farmer_medium_dark_skin_tone + woman_farmer_dark_skin_tone + man_cook + man_cook_light_skin_tone + man_cook_medium_light_skin_tone + man_cook_medium_skin_tone + man_cook_medium_dark_skin_tone + man_cook_dark_skin_tone + woman_cook + woman_cook_light_skin_tone + woman_cook_medium_light_skin_tone + woman_cook_medium_skin_tone + woman_cook_medium_dark_skin_tone + woman_cook_dark_skin_tone + man_mechanic + man_mechanic_light_skin_tone + man_mechanic_medium_light_skin_tone + man_mechanic_medium_skin_tone + man_mechanic_medium_dark_skin_tone + man_mechanic_dark_skin_tone + woman_mechanic + woman_mechanic_light_skin_tone + woman_mechanic_medium_light_skin_tone + woman_mechanic_medium_skin_tone + woman_mechanic_medium_dark_skin_tone + woman_mechanic_dark_skin_tone + man_factory_worker + man_factory_worker_light_skin_tone + man_factory_worker_medium_light_skin_tone + man_factory_worker_medium_skin_tone + man_factory_worker_medium_dark_skin_tone + man_factory_worker_dark_skin_tone + woman_factory_worker + woman_factory_worker_light_skin_tone + woman_factory_worker_medium_light_skin_tone + woman_factory_worker_medium_skin_tone + woman_factory_worker_medium_dark_skin_tone + woman_factory_worker_dark_skin_tone + man_office_worker + man_office_worker_light_skin_tone + man_office_worker_medium_light_skin_tone + man_office_worker_medium_skin_tone + man_office_worker_medium_dark_skin_tone + man_office_worker_dark_skin_tone + woman_office_worker + woman_office_worker_light_skin_tone + woman_office_worker_medium_light_skin_tone + woman_office_worker_medium_skin_tone + woman_office_worker_medium_dark_skin_tone + woman_office_worker_dark_skin_tone + man_scientist + man_scientist_light_skin_tone + man_scientist_medium_light_skin_tone + man_scientist_medium_skin_tone + man_scientist_medium_dark_skin_tone + man_scientist_dark_skin_tone + woman_scientist + woman_scientist_light_skin_tone + woman_scientist_medium_light_skin_tone + woman_scientist_medium_skin_tone + woman_scientist_medium_dark_skin_tone + woman_scientist_dark_skin_tone + man_technologist + man_technologist_light_skin_tone + man_technologist_medium_light_skin_tone + man_technologist_medium_skin_tone + man_technologist_medium_dark_skin_tone + man_technologist_dark_skin_tone + woman_technologist + woman_technologist_light_skin_tone + woman_technologist_medium_light_skin_tone + woman_technologist_medium_skin_tone + woman_technologist_medium_dark_skin_tone + woman_technologist_dark_skin_tone + man_singer + man_singer_light_skin_tone + man_singer_medium_light_skin_tone + man_singer_medium_skin_tone + man_singer_medium_dark_skin_tone + man_singer_dark_skin_tone + woman_singer + woman_singer_light_skin_tone + woman_singer_medium_light_skin_tone + woman_singer_medium_skin_tone + woman_singer_medium_dark_skin_tone + woman_singer_dark_skin_tone + man_artist + man_artist_light_skin_tone + man_artist_medium_light_skin_tone + man_artist_medium_skin_tone + man_artist_medium_dark_skin_tone + man_artist_dark_skin_tone + woman_artist + woman_artist_light_skin_tone + woman_artist_medium_light_skin_tone + woman_artist_medium_skin_tone + woman_artist_medium_dark_skin_tone + woman_artist_dark_skin_tone + man_pilot + man_pilot_light_skin_tone + man_pilot_medium_light_skin_tone + man_pilot_medium_skin_tone + man_pilot_medium_dark_skin_tone + man_pilot_dark_skin_tone + woman_pilot + woman_pilot_light_skin_tone + woman_pilot_medium_light_skin_tone + woman_pilot_medium_skin_tone + woman_pilot_medium_dark_skin_tone + woman_pilot_dark_skin_tone + man_astronaut + man_astronaut_light_skin_tone + man_astronaut_medium_light_skin_tone + man_astronaut_medium_skin_tone + man_astronaut_medium_dark_skin_tone + man_astronaut_dark_skin_tone + woman_astronaut + woman_astronaut_light_skin_tone + woman_astronaut_medium_light_skin_tone + woman_astronaut_medium_skin_tone + woman_astronaut_medium_dark_skin_tone + woman_astronaut_dark_skin_tone + man_firefighter + man_firefighter_light_skin_tone + man_firefighter_medium_light_skin_tone + man_firefighter_medium_skin_tone + man_firefighter_medium_dark_skin_tone + man_firefighter_dark_skin_tone + woman_firefighter + woman_firefighter_light_skin_tone + woman_firefighter_medium_light_skin_tone + woman_firefighter_medium_skin_tone + woman_firefighter_medium_dark_skin_tone + woman_firefighter_dark_skin_tone + police_officer + police_officer_light_skin_tone + police_officer_medium_light_skin_tone + police_officer_medium_skin_tone + police_officer_medium_dark_skin_tone + police_officer_dark_skin_tone + man_police_officer + man_police_officer_light_skin_tone + man_police_officer_medium_light_skin_tone + man_police_officer_medium_skin_tone + man_police_officer_medium_dark_skin_tone + man_police_officer_dark_skin_tone + woman_police_officer + woman_police_officer_light_skin_tone + woman_police_officer_medium_light_skin_tone + woman_police_officer_medium_skin_tone + woman_police_officer_medium_dark_skin_tone + woman_police_officer_dark_skin_tone + detective + detective_light_skin_tone + detective_medium_light_skin_tone + detective_medium_skin_tone + detective_medium_dark_skin_tone + detective_dark_skin_tone + man_detective + man_detective_light_skin_tone + man_detective_medium_light_skin_tone + man_detective_medium_skin_tone + man_detective_medium_dark_skin_tone + man_detective_dark_skin_tone + woman_detective + woman_detective_light_skin_tone + woman_detective_medium_light_skin_tone + woman_detective_medium_skin_tone + woman_detective_medium_dark_skin_tone + woman_detective_dark_skin_tone + guard + guard_light_skin_tone + guard_medium_light_skin_tone + guard_medium_skin_tone + guard_medium_dark_skin_tone + guard_dark_skin_tone + man_guard + man_guard_light_skin_tone + man_guard_medium_light_skin_tone + man_guard_medium_skin_tone + man_guard_medium_dark_skin_tone + man_guard_dark_skin_tone + woman_guard + woman_guard_light_skin_tone + woman_guard_medium_light_skin_tone + woman_guard_medium_skin_tone + woman_guard_medium_dark_skin_tone + woman_guard_dark_skin_tone + construction_worker + construction_worker_light_skin_tone + construction_worker_medium_light_skin_tone + construction_worker_medium_skin_tone + construction_worker_medium_dark_skin_tone + construction_worker_dark_skin_tone + man_construction_worker + man_construction_worker_light_skin_tone + man_construction_worker_medium_light_skin_tone + man_construction_worker_medium_skin_tone + man_construction_worker_medium_dark_skin_tone + man_construction_worker_dark_skin_tone + woman_construction_worker + woman_construction_worker_light_skin_tone + woman_construction_worker_medium_light_skin_tone + woman_construction_worker_medium_skin_tone + woman_construction_worker_medium_dark_skin_tone + woman_construction_worker_dark_skin_tone + prince + prince_light_skin_tone + prince_medium_light_skin_tone + prince_medium_skin_tone + prince_medium_dark_skin_tone + prince_dark_skin_tone + princess + princess_light_skin_tone + princess_medium_light_skin_tone + princess_medium_skin_tone + princess_medium_dark_skin_tone + princess_dark_skin_tone + person_wearing_turban + person_wearing_turban_light_skin_tone + person_wearing_turban_medium_light_skin_tone + person_wearing_turban_medium_skin_tone + person_wearing_turban_medium_dark_skin_tone + person_wearing_turban_dark_skin_tone + man_wearing_turban + man_wearing_turban_light_skin_tone + man_wearing_turban_medium_light_skin_tone + man_wearing_turban_medium_skin_tone + man_wearing_turban_medium_dark_skin_tone + man_wearing_turban_dark_skin_tone + woman_wearing_turban + woman_wearing_turban_light_skin_tone + woman_wearing_turban_medium_light_skin_tone + woman_wearing_turban_medium_skin_tone + woman_wearing_turban_medium_dark_skin_tone + woman_wearing_turban_dark_skin_tone + man_with_Chinese_cap + man_with_Chinese_cap_light_skin_tone + man_with_Chinese_cap_medium_light_skin_tone + man_with_Chinese_cap_medium_skin_tone + man_with_Chinese_cap_medium_dark_skin_tone + man_with_Chinese_cap_dark_skin_tone + woman_with_headscarf + woman_with_headscarf_light_skin_tone + woman_with_headscarf_medium_light_skin_tone + woman_with_headscarf_medium_skin_tone + woman_with_headscarf_medium_dark_skin_tone + woman_with_headscarf_dark_skin_tone + man_in_tuxedo + man_in_tuxedo_light_skin_tone + man_in_tuxedo_medium_light_skin_tone + man_in_tuxedo_medium_skin_tone + man_in_tuxedo_medium_dark_skin_tone + man_in_tuxedo_dark_skin_tone + bride_with_veil + bride_with_veil_light_skin_tone + bride_with_veil_medium_light_skin_tone + bride_with_veil_medium_skin_tone + bride_with_veil_medium_dark_skin_tone + bride_with_veil_dark_skin_tone + pregnant_woman + pregnant_woman_light_skin_tone + pregnant_woman_medium_light_skin_tone + pregnant_woman_medium_skin_tone + pregnant_woman_medium_dark_skin_tone + pregnant_woman_dark_skin_tone + breast_feeding + breast_feeding_light_skin_tone + breast_feeding_medium_light_skin_tone + breast_feeding_medium_skin_tone + breast_feeding_medium_dark_skin_tone + breast_feeding_dark_skin_tone + baby_angel + baby_angel_light_skin_tone + baby_angel_medium_light_skin_tone + baby_angel_medium_skin_tone + baby_angel_medium_dark_skin_tone + baby_angel_dark_skin_tone + Santa_Claus + Santa_Claus_light_skin_tone + Santa_Claus_medium_light_skin_tone + Santa_Claus_medium_skin_tone + Santa_Claus_medium_dark_skin_tone + Santa_Claus_dark_skin_tone + Mrs_Claus + Mrs_Claus_light_skin_tone + Mrs_Claus_medium_light_skin_tone + Mrs_Claus_medium_skin_tone + Mrs_Claus_medium_dark_skin_tone + Mrs_Claus_dark_skin_tone + superhero + superhero_light_skin_tone + superhero_medium_light_skin_tone + superhero_medium_skin_tone + superhero_medium_dark_skin_tone + superhero_dark_skin_tone + man_superhero + man_superhero_light_skin_tone + man_superhero_medium_light_skin_tone + man_superhero_medium_skin_tone + man_superhero_medium_dark_skin_tone + man_superhero_dark_skin_tone + woman_superhero + woman_superhero_light_skin_tone + woman_superhero_medium_light_skin_tone + woman_superhero_medium_skin_tone + woman_superhero_medium_dark_skin_tone + woman_superhero_dark_skin_tone + supervillain + supervillain_light_skin_tone + supervillain_medium_light_skin_tone + supervillain_medium_skin_tone + supervillain_medium_dark_skin_tone + supervillain_dark_skin_tone + man_supervillain + man_supervillain_light_skin_tone + man_supervillain_medium_light_skin_tone + man_supervillain_medium_skin_tone + man_supervillain_medium_dark_skin_tone + man_supervillain_dark_skin_tone + woman_supervillain + woman_supervillain_light_skin_tone + woman_supervillain_medium_light_skin_tone + woman_supervillain_medium_skin_tone + woman_supervillain_medium_dark_skin_tone + woman_supervillain_dark_skin_tone + mage + mage_light_skin_tone + mage_medium_light_skin_tone + mage_medium_skin_tone + mage_medium_dark_skin_tone + mage_dark_skin_tone + man_mage + man_mage_light_skin_tone + man_mage_medium_light_skin_tone + man_mage_medium_skin_tone + man_mage_medium_dark_skin_tone + man_mage_dark_skin_tone + woman_mage + woman_mage_light_skin_tone + woman_mage_medium_light_skin_tone + woman_mage_medium_skin_tone + woman_mage_medium_dark_skin_tone + woman_mage_dark_skin_tone + fairy + fairy_light_skin_tone + fairy_medium_light_skin_tone + fairy_medium_skin_tone + fairy_medium_dark_skin_tone + fairy_dark_skin_tone + man_fairy + man_fairy_light_skin_tone + man_fairy_medium_light_skin_tone + man_fairy_medium_skin_tone + man_fairy_medium_dark_skin_tone + man_fairy_dark_skin_tone + woman_fairy + woman_fairy_light_skin_tone + woman_fairy_medium_light_skin_tone + woman_fairy_medium_skin_tone + woman_fairy_medium_dark_skin_tone + woman_fairy_dark_skin_tone + vampire + vampire_light_skin_tone + vampire_medium_light_skin_tone + vampire_medium_skin_tone + vampire_medium_dark_skin_tone + vampire_dark_skin_tone + man_vampire + man_vampire_light_skin_tone + man_vampire_medium_light_skin_tone + man_vampire_medium_skin_tone + man_vampire_medium_dark_skin_tone + man_vampire_dark_skin_tone + woman_vampire + woman_vampire_light_skin_tone + woman_vampire_medium_light_skin_tone + woman_vampire_medium_skin_tone + woman_vampire_medium_dark_skin_tone + woman_vampire_dark_skin_tone + merperson + merperson_light_skin_tone + merperson_medium_light_skin_tone + merperson_medium_skin_tone + merperson_medium_dark_skin_tone + merperson_dark_skin_tone + merman + merman_light_skin_tone + merman_medium_light_skin_tone + merman_medium_skin_tone + merman_medium_dark_skin_tone + merman_dark_skin_tone + mermaid + mermaid_light_skin_tone + mermaid_medium_light_skin_tone + mermaid_medium_skin_tone + mermaid_medium_dark_skin_tone + mermaid_dark_skin_tone + elf + elf_light_skin_tone + elf_medium_light_skin_tone + elf_medium_skin_tone + elf_medium_dark_skin_tone + elf_dark_skin_tone + man_elf + man_elf_light_skin_tone + man_elf_medium_light_skin_tone + man_elf_medium_skin_tone + man_elf_medium_dark_skin_tone + man_elf_dark_skin_tone + woman_elf + woman_elf_light_skin_tone + woman_elf_medium_light_skin_tone + woman_elf_medium_skin_tone + woman_elf_medium_dark_skin_tone + woman_elf_dark_skin_tone + genie + man_genie + woman_genie + zombie + man_zombie + woman_zombie + person_getting_massage + person_getting_massage_light_skin_tone + person_getting_massage_medium_light_skin_tone + person_getting_massage_medium_skin_tone + person_getting_massage_medium_dark_skin_tone + person_getting_massage_dark_skin_tone + man_getting_massage + man_getting_massage_light_skin_tone + man_getting_massage_medium_light_skin_tone + man_getting_massage_medium_skin_tone + man_getting_massage_medium_dark_skin_tone + man_getting_massage_dark_skin_tone + woman_getting_massage + woman_getting_massage_light_skin_tone + woman_getting_massage_medium_light_skin_tone + woman_getting_massage_medium_skin_tone + woman_getting_massage_medium_dark_skin_tone + woman_getting_massage_dark_skin_tone + person_getting_haircut + person_getting_haircut_light_skin_tone + person_getting_haircut_medium_light_skin_tone + person_getting_haircut_medium_skin_tone + person_getting_haircut_medium_dark_skin_tone + person_getting_haircut_dark_skin_tone + man_getting_haircut + man_getting_haircut_light_skin_tone + man_getting_haircut_medium_light_skin_tone + man_getting_haircut_medium_skin_tone + man_getting_haircut_medium_dark_skin_tone + man_getting_haircut_dark_skin_tone + woman_getting_haircut + woman_getting_haircut_light_skin_tone + woman_getting_haircut_medium_light_skin_tone + woman_getting_haircut_medium_skin_tone + woman_getting_haircut_medium_dark_skin_tone + woman_getting_haircut_dark_skin_tone + person_walking + person_walking_light_skin_tone + person_walking_medium_light_skin_tone + person_walking_medium_skin_tone + person_walking_medium_dark_skin_tone + person_walking_dark_skin_tone + man_walking + man_walking_light_skin_tone + man_walking_medium_light_skin_tone + man_walking_medium_skin_tone + man_walking_medium_dark_skin_tone + man_walking_dark_skin_tone + woman_walking + woman_walking_light_skin_tone + woman_walking_medium_light_skin_tone + woman_walking_medium_skin_tone + woman_walking_medium_dark_skin_tone + woman_walking_dark_skin_tone + person_standing + person_standing_light_skin_tone + person_standing_medium_light_skin_tone + person_standing_medium_skin_tone + person_standing_medium_dark_skin_tone + person_standing_dark_skin_tone + man_standing + man_standing_light_skin_tone + man_standing_medium_light_skin_tone + man_standing_medium_skin_tone + man_standing_medium_dark_skin_tone + man_standing_dark_skin_tone + woman_standing + woman_standing_light_skin_tone + woman_standing_medium_light_skin_tone + woman_standing_medium_skin_tone + woman_standing_medium_dark_skin_tone + woman_standing_dark_skin_tone + person_kneeling + person_kneeling_light_skin_tone + person_kneeling_medium_light_skin_tone + person_kneeling_medium_skin_tone + person_kneeling_medium_dark_skin_tone + person_kneeling_dark_skin_tone + man_kneeling + man_kneeling_light_skin_tone + man_kneeling_medium_light_skin_tone + man_kneeling_medium_skin_tone + man_kneeling_medium_dark_skin_tone + man_kneeling_dark_skin_tone + woman_kneeling + woman_kneeling_light_skin_tone + woman_kneeling_medium_light_skin_tone + woman_kneeling_medium_skin_tone + woman_kneeling_medium_dark_skin_tone + woman_kneeling_dark_skin_tone + man_with_probing_cane + man_with_probing_cane_light_skin_tone + man_with_probing_cane_medium_light_skin_tone + man_with_probing_cane_medium_skin_tone + man_with_probing_cane_medium_dark_skin_tone + man_with_probing_cane_dark_skin_tone + woman_with_probing_cane + woman_with_probing_cane_light_skin_tone + woman_with_probing_cane_medium_light_skin_tone + woman_with_probing_cane_medium_skin_tone + woman_with_probing_cane_medium_dark_skin_tone + woman_with_probing_cane_dark_skin_tone + man_in_motorized_wheelchair + man_in_motorized_wheelchair_light_skin_tone + man_in_motorized_wheelchair_medium_light_skin_tone + man_in_motorized_wheelchair_medium_skin_tone + man_in_motorized_wheelchair_medium_dark_skin_tone + man_in_motorized_wheelchair_dark_skin_tone + woman_in_motorized_wheelchair + woman_in_motorized_wheelchair_light_skin_tone + woman_in_motorized_wheelchair_medium_light_skin_tone + woman_in_motorized_wheelchair_medium_skin_tone + woman_in_motorized_wheelchair_medium_dark_skin_tone + woman_in_motorized_wheelchair_dark_skin_tone + man_in_manual_wheelchair + man_in_manual_wheelchair_light_skin_tone + man_in_manual_wheelchair_medium_light_skin_tone + man_in_manual_wheelchair_medium_skin_tone + man_in_manual_wheelchair_medium_dark_skin_tone + man_in_manual_wheelchair_dark_skin_tone + woman_in_manual_wheelchair + woman_in_manual_wheelchair_light_skin_tone + woman_in_manual_wheelchair_medium_light_skin_tone + woman_in_manual_wheelchair_medium_skin_tone + woman_in_manual_wheelchair_medium_dark_skin_tone + woman_in_manual_wheelchair_dark_skin_tone + person_running + person_running_light_skin_tone + person_running_medium_light_skin_tone + person_running_medium_skin_tone + person_running_medium_dark_skin_tone + person_running_dark_skin_tone + man_running + man_running_light_skin_tone + man_running_medium_light_skin_tone + man_running_medium_skin_tone + man_running_medium_dark_skin_tone + man_running_dark_skin_tone + woman_running + woman_running_light_skin_tone + woman_running_medium_light_skin_tone + woman_running_medium_skin_tone + woman_running_medium_dark_skin_tone + woman_running_dark_skin_tone + woman_dancing + woman_dancing_light_skin_tone + woman_dancing_medium_light_skin_tone + woman_dancing_medium_skin_tone + woman_dancing_medium_dark_skin_tone + woman_dancing_dark_skin_tone + woman_dancing_dark_skin_tone_1 + man_dancing_light_skin_tone + man_dancing_medium_light_skin_tone + man_dancing_medium_skin_tone + man_dancing_medium_dark_skin_tone + man_dancing_dark_skin_tone + man_in_suit_levitating + man_in_suit_levitating_light_skin_tone + man_in_suit_levitating_medium_light_skin_tone + man_in_suit_levitating_medium_skin_tone + man_in_suit_levitating_medium_dark_skin_tone + man_in_suit_levitating_dark_skin_tone + people_with_bunny_ears + men_with_bunny_ears + women_with_bunny_ears + person_in_steamy_room + person_in_steamy_room_light_skin_tone + person_in_steamy_room_medium_light_skin_tone + person_in_steamy_room_medium_skin_tone + person_in_steamy_room_medium_dark_skin_tone + person_in_steamy_room_dark_skin_tone + man_in_steamy_room + man_in_steamy_room_light_skin_tone + man_in_steamy_room_medium_light_skin_tone + man_in_steamy_room_medium_skin_tone + man_in_steamy_room_medium_dark_skin_tone + man_in_steamy_room_dark_skin_tone + woman_in_steamy_room + woman_in_steamy_room_light_skin_tone + woman_in_steamy_room_medium_light_skin_tone + woman_in_steamy_room_medium_skin_tone + woman_in_steamy_room_medium_dark_skin_tone + woman_in_steamy_room_dark_skin_tone + person_climbing + person_climbing_light_skin_tone + person_climbing_medium_light_skin_tone + person_climbing_medium_skin_tone + person_climbing_medium_dark_skin_tone + person_climbing_dark_skin_tone + man_climbing + man_climbing_light_skin_tone + man_climbing_medium_light_skin_tone + man_climbing_medium_skin_tone + man_climbing_medium_dark_skin_tone + man_climbing_dark_skin_tone + woman_climbing + woman_climbing_light_skin_tone + woman_climbing_medium_light_skin_tone + woman_climbing_medium_skin_tone + woman_climbing_medium_dark_skin_tone + woman_climbing_dark_skin_tone + person_fencing + horse_racing + horse_racing_light_skin_tone + horse_racing_medium_light_skin_tone + horse_racing_medium_skin_tone + horse_racing_medium_dark_skin_tone + horse_racing_dark_skin_tone + skier + snowboarder + snowboarder_light_skin_tone + snowboarder_medium_light_skin_tone + snowboarder_medium_skin_tone + snowboarder_medium_dark_skin_tone + snowboarder_dark_skin_tone + person_golfing + person_golfing_light_skin_tone + person_golfing_medium_light_skin_tone + person_golfing_medium_skin_tone + person_golfing_medium_dark_skin_tone + person_golfing_dark_skin_tone + man_golfing + man_golfing_light_skin_tone + man_golfing_medium_light_skin_tone + man_golfing_medium_skin_tone + man_golfing_medium_dark_skin_tone + man_golfing_dark_skin_tone + woman_golfing + woman_golfing_light_skin_tone + woman_golfing_medium_light_skin_tone + woman_golfing_medium_skin_tone + woman_golfing_medium_dark_skin_tone + woman_golfing_dark_skin_tone + person_surfing + person_surfing_light_skin_tone + person_surfing_medium_light_skin_tone + person_surfing_medium_skin_tone + person_surfing_medium_dark_skin_tone + person_surfing_dark_skin_tone + man_surfing + man_surfing_light_skin_tone + man_surfing_medium_light_skin_tone + man_surfing_medium_skin_tone + man_surfing_medium_dark_skin_tone + man_surfing_dark_skin_tone + woman_surfing + woman_surfing_light_skin_tone + woman_surfing_medium_light_skin_tone + woman_surfing_medium_skin_tone + woman_surfing_medium_dark_skin_tone + woman_surfing_dark_skin_tone + person_rowing_boat + person_rowing_boat_light_skin_tone + person_rowing_boat_medium_light_skin_tone + person_rowing_boat_medium_skin_tone + person_rowing_boat_medium_dark_skin_tone + person_rowing_boat_dark_skin_tone + man_rowing_boat + man_rowing_boat_light_skin_tone + man_rowing_boat_medium_light_skin_tone + man_rowing_boat_medium_skin_tone + man_rowing_boat_medium_dark_skin_tone + man_rowing_boat_dark_skin_tone + woman_rowing_boat + woman_rowing_boat_light_skin_tone + woman_rowing_boat_medium_light_skin_tone + woman_rowing_boat_medium_skin_tone + woman_rowing_boat_medium_dark_skin_tone + woman_rowing_boat_dark_skin_tone + person_swimming + person_swimming_light_skin_tone + person_swimming_medium_light_skin_tone + person_swimming_medium_skin_tone + person_swimming_medium_dark_skin_tone + person_swimming_dark_skin_tone + man_swimming + man_swimming_light_skin_tone + man_swimming_medium_light_skin_tone + man_swimming_medium_skin_tone + man_swimming_medium_dark_skin_tone + man_swimming_dark_skin_tone + woman_swimming + woman_swimming_light_skin_tone + woman_swimming_medium_light_skin_tone + woman_swimming_medium_skin_tone + woman_swimming_medium_dark_skin_tone + woman_swimming_dark_skin_tone + person_bouncing_ball + person_bouncing_ball_light_skin_tone + person_bouncing_ball_medium_light_skin_tone + person_bouncing_ball_medium_skin_tone + person_bouncing_ball_medium_dark_skin_tone + person_bouncing_ball_dark_skin_tone + man_bouncing_ball + man_bouncing_ball_light_skin_tone + man_bouncing_ball_medium_light_skin_tone + man_bouncing_ball_medium_skin_tone + man_bouncing_ball_medium_dark_skin_tone + man_bouncing_ball_dark_skin_tone + woman_bouncing_ball + woman_bouncing_ball_light_skin_tone + woman_bouncing_ball_medium_light_skin_tone + woman_bouncing_ball_medium_skin_tone + woman_bouncing_ball_medium_dark_skin_tone + woman_bouncing_ball_dark_skin_tone + person_lifting_weights + person_lifting_weights_light_skin_tone + person_lifting_weights_medium_light_skin_tone + person_lifting_weights_medium_skin_tone + person_lifting_weights_medium_dark_skin_tone + person_lifting_weights_dark_skin_tone + man_lifting_weights + man_lifting_weights_light_skin_tone + man_lifting_weights_medium_light_skin_tone + man_lifting_weights_medium_skin_tone + man_lifting_weights_medium_dark_skin_tone + man_lifting_weights_dark_skin_tone + woman_lifting_weights + woman_lifting_weights_light_skin_tone + woman_lifting_weights_medium_light_skin_tone + woman_lifting_weights_medium_skin_tone + woman_lifting_weights_medium_dark_skin_tone + woman_lifting_weights_dark_skin_tone + person_biking + person_biking_light_skin_tone + person_biking_medium_light_skin_tone + person_biking_medium_skin_tone + person_biking_medium_dark_skin_tone + person_biking_dark_skin_tone + man_biking + man_biking_light_skin_tone + man_biking_medium_light_skin_tone + man_biking_medium_skin_tone + man_biking_medium_dark_skin_tone + man_biking_dark_skin_tone + woman_biking + woman_biking_light_skin_tone + woman_biking_medium_light_skin_tone + woman_biking_medium_skin_tone + woman_biking_medium_dark_skin_tone + woman_biking_dark_skin_tone + person_mountain_biking + person_mountain_biking_light_skin_tone + person_mountain_biking_medium_light_skin_tone + person_mountain_biking_medium_skin_tone + person_mountain_biking_medium_dark_skin_tone + person_mountain_biking_dark_skin_tone + man_mountain_biking + man_mountain_biking_light_skin_tone + man_mountain_biking_medium_light_skin_tone + man_mountain_biking_medium_skin_tone + man_mountain_biking_medium_dark_skin_tone + man_mountain_biking_dark_skin_tone + woman_mountain_biking + woman_mountain_biking_light_skin_tone + woman_mountain_biking_medium_light_skin_tone + woman_mountain_biking_medium_skin_tone + woman_mountain_biking_medium_dark_skin_tone + woman_mountain_biking_dark_skin_tone + person_cartwheeling + person_cartwheeling_light_skin_tone + person_cartwheeling_medium_light_skin_tone + person_cartwheeling_medium_skin_tone + person_cartwheeling_medium_dark_skin_tone + person_cartwheeling_dark_skin_tone + man_cartwheeling + man_cartwheeling_light_skin_tone + man_cartwheeling_medium_light_skin_tone + man_cartwheeling_medium_skin_tone + man_cartwheeling_medium_dark_skin_tone + man_cartwheeling_dark_skin_tone + woman_cartwheeling + woman_cartwheeling_light_skin_tone + woman_cartwheeling_medium_light_skin_tone + woman_cartwheeling_medium_skin_tone + woman_cartwheeling_medium_dark_skin_tone + woman_cartwheeling_dark_skin_tone + people_wrestling + men_wrestling + women_wrestling + person_playing_water_polo + person_playing_water_polo_light_skin_tone + person_playing_water_polo_medium_light_skin_tone + person_playing_water_polo_medium_skin_tone + person_playing_water_polo_medium_dark_skin_tone + person_playing_water_polo_dark_skin_tone + man_playing_water_polo + man_playing_water_polo_light_skin_tone + man_playing_water_polo_medium_light_skin_tone + man_playing_water_polo_medium_skin_tone + man_playing_water_polo_medium_dark_skin_tone + man_playing_water_polo_dark_skin_tone + woman_playing_water_polo + woman_playing_water_polo_light_skin_tone + woman_playing_water_polo_medium_light_skin_tone + woman_playing_water_polo_medium_skin_tone + woman_playing_water_polo_medium_dark_skin_tone + woman_playing_water_polo_dark_skin_tone + person_playing_handball + person_playing_handball_light_skin_tone + person_playing_handball_medium_light_skin_tone + person_playing_handball_medium_skin_tone + person_playing_handball_medium_dark_skin_tone + person_playing_handball_dark_skin_tone + man_playing_handball + man_playing_handball_light_skin_tone + man_playing_handball_medium_light_skin_tone + man_playing_handball_medium_skin_tone + man_playing_handball_medium_dark_skin_tone + man_playing_handball_dark_skin_tone + woman_playing_handball + woman_playing_handball_light_skin_tone + woman_playing_handball_medium_light_skin_tone + woman_playing_handball_medium_skin_tone + woman_playing_handball_medium_dark_skin_tone + woman_playing_handball_dark_skin_tone + person_juggling + person_juggling_light_skin_tone + person_juggling_medium_light_skin_tone + person_juggling_medium_skin_tone + person_juggling_medium_dark_skin_tone + person_juggling_dark_skin_tone + man_juggling + man_juggling_light_skin_tone + man_juggling_medium_light_skin_tone + man_juggling_medium_skin_tone + man_juggling_medium_dark_skin_tone + man_juggling_dark_skin_tone + woman_juggling + woman_juggling_light_skin_tone + woman_juggling_medium_light_skin_tone + woman_juggling_medium_skin_tone + woman_juggling_medium_dark_skin_tone + woman_juggling_dark_skin_tone + person_in_lotus_position + person_in_lotus_position_light_skin_tone + person_in_lotus_position_medium_light_skin_tone + person_in_lotus_position_medium_skin_tone + person_in_lotus_position_medium_dark_skin_tone + person_in_lotus_position_dark_skin_tone + man_in_lotus_position + man_in_lotus_position_light_skin_tone + man_in_lotus_position_medium_light_skin_tone + man_in_lotus_position_medium_skin_tone + man_in_lotus_position_medium_dark_skin_tone + man_in_lotus_position_dark_skin_tone + woman_in_lotus_position + woman_in_lotus_position_light_skin_tone + woman_in_lotus_position_medium_light_skin_tone + woman_in_lotus_position_medium_skin_tone + woman_in_lotus_position_medium_dark_skin_tone + woman_in_lotus_position_dark_skin_tone + person_taking_bath + person_taking_bath_light_skin_tone + person_taking_bath_medium_light_skin_tone + person_taking_bath_medium_skin_tone + person_taking_bath_medium_dark_skin_tone + person_taking_bath_dark_skin_tone + person_in_bed + person_in_bed_light_skin_tone + person_in_bed_medium_light_skin_tone + person_in_bed_medium_skin_tone + person_in_bed_medium_dark_skin_tone + person_in_bed_dark_skin_tone + people_holding_hands + people_holding_hands_light_skin_tone + people_holding_hands_medium_light_skin_tone_light_skin_tone + people_holding_hands_medium_light_skin_tone_light_skin_tone_1 + people_holding_hands_medium_skin_tone_light_skin_tone + people_holding_hands_medium_skin_tone_medium_light_skin_tone + people_holding_hands_medium_skin_tone_medium_light_skin_tone_1 + people_holding_hands_medium_dark_skin_tone_light_skin_tone + people_holding_hands_medium_dark_skin_tone_medium_light_skin_tone + people_holding_hands_medium_dark_skin_tone_medium_skin_tone + people_holding_hands_medium_dark_skin_tone_medium_skin_tone_1 + people_holding_hands_dark_skin_tone_light_skin_tone + people_holding_hands_dark_skin_tone_medium_light_skin_tone + people_holding_hands_dark_skin_tone_medium_skin_tone + people_holding_hands_dark_skin_tone_medium_dark_skin_tone + people_holding_hands_dark_skin_tone_medium_dark_skin_tone_1 + women_holding_hands + women_holding_hands_light_skin_tone + women_holding_hands_medium_light_skin_tone_light_skin_tone + women_holding_hands_medium_light_skin_tone_light_skin_tone_1 + women_holding_hands_medium_skin_tone_light_skin_tone + women_holding_hands_medium_skin_tone_medium_light_skin_tone + women_holding_hands_medium_skin_tone_medium_light_skin_tone_1 + women_holding_hands_medium_dark_skin_tone_light_skin_tone + women_holding_hands_medium_dark_skin_tone_medium_light_skin_tone + women_holding_hands_medium_dark_skin_tone_medium_skin_tone + women_holding_hands_medium_dark_skin_tone_medium_skin_tone_1 + women_holding_hands_dark_skin_tone_light_skin_tone + women_holding_hands_dark_skin_tone_medium_light_skin_tone + women_holding_hands_dark_skin_tone_medium_skin_tone + women_holding_hands_dark_skin_tone_medium_dark_skin_tone + women_holding_hands_dark_skin_tone_medium_dark_skin_tone_1 + woman_and_man_holding_hands + woman_and_man_holding_hands_light_skin_tone + woman_and_man_holding_hands_light_skin_tone_medium_light_skin_tone + woman_and_man_holding_hands_light_skin_tone_medium_skin_tone + woman_and_man_holding_hands_light_skin_tone_medium_dark_skin_tone + woman_and_man_holding_hands_light_skin_tone_dark_skin_tone + woman_and_man_holding_hands_medium_light_skin_tone_light_skin_tone + woman_and_man_holding_hands_medium_light_skin_tone_light_skin_tone_1 + woman_and_man_holding_hands_medium_light_skin_tone_medium_skin_tone + woman_and_man_holding_hands_medium_light_skin_tone_medium_dark_skin_tone + woman_and_man_holding_hands_medium_light_skin_tone_dark_skin_tone + woman_and_man_holding_hands_medium_skin_tone_light_skin_tone + woman_and_man_holding_hands_medium_skin_tone_medium_light_skin_tone + woman_and_man_holding_hands_medium_skin_tone_medium_light_skin_tone_1 + woman_and_man_holding_hands_medium_skin_tone_medium_dark_skin_tone + woman_and_man_holding_hands_medium_skin_tone_dark_skin_tone + woman_and_man_holding_hands_medium_dark_skin_tone_light_skin_tone + woman_and_man_holding_hands_medium_dark_skin_tone_medium_light_skin_tone + woman_and_man_holding_hands_medium_dark_skin_tone_medium_skin_tone + woman_and_man_holding_hands_medium_dark_skin_tone_medium_skin_tone_1 + woman_and_man_holding_hands_medium_dark_skin_tone_dark_skin_tone + woman_and_man_holding_hands_dark_skin_tone_light_skin_tone + woman_and_man_holding_hands_dark_skin_tone_medium_light_skin_tone + woman_and_man_holding_hands_dark_skin_tone_medium_skin_tone + woman_and_man_holding_hands_dark_skin_tone_medium_dark_skin_tone + woman_and_man_holding_hands_dark_skin_tone_medium_dark_skin_tone_1 + men_holding_hands + men_holding_hands_light_skin_tone + men_holding_hands_medium_light_skin_tone_light_skin_tone + men_holding_hands_medium_light_skin_tone_light_skin_tone_1 + men_holding_hands_medium_skin_tone_light_skin_tone + men_holding_hands_medium_skin_tone_medium_light_skin_tone + men_holding_hands_medium_skin_tone_medium_light_skin_tone_1 + men_holding_hands_medium_dark_skin_tone_light_skin_tone + men_holding_hands_medium_dark_skin_tone_medium_light_skin_tone + men_holding_hands_medium_dark_skin_tone_medium_skin_tone + men_holding_hands_medium_dark_skin_tone_medium_skin_tone_1 + men_holding_hands_dark_skin_tone_light_skin_tone + men_holding_hands_dark_skin_tone_medium_light_skin_tone + men_holding_hands_dark_skin_tone_medium_skin_tone + men_holding_hands_dark_skin_tone_medium_dark_skin_tone + men_holding_hands_dark_skin_tone_medium_dark_skin_tone_1 + kiss + kiss_woman_man + kiss_man_man + kiss_woman_woman + couple_with_heart + couple_with_heart_woman_man + couple_with_heart_man_man + couple_with_heart_woman_woman + family + family_man_woman_boy + family_man_woman_girl + family_man_woman_girl_boy + family_man_woman_boy_boy + family_man_woman_girl_girl + family_man_man_boy + family_man_man_girl + family_man_man_girl_boy + family_man_man_boy_boy + family_man_man_girl_girl + family_woman_woman_boy + family_woman_woman_girl + family_woman_woman_girl_boy + family_woman_woman_boy_boy + family_woman_woman_girl_girl + family_man_boy + family_man_boy_boy + family_man_girl + family_man_girl_boy + family_man_girl_girl + family_woman_boy + family_woman_boy_boy + family_woman_girl + family_woman_girl_boy + family_woman_girl_girl + speaking_head + bust_in_silhouette + busts_in_silhouette + footprints +" + +emoji_groups[animals]=" + monkey_face + monkey_face_1 + gorilla + orangutan + dog_face + dog_face_1 + guide_dog + service_dog + poodle + wolf + fox + raccoon + cat_face + cat_face_1 + lion + tiger_face + tiger_face_1 + leopard + horse_face + horse_face_1 + unicorn + zebra + deer + cow_face + ox + water_buffalo + cow + pig_face + pig_face_1 + boar + pig_nose + ram + ewe + goat + camel + two_hump_camel + llama + giraffe + elephant + rhinoceros + hippopotamus + mouse_face + mouse_face_1 + rat + hamster + rabbit_face + rabbit_face_1 + chipmunk + hedgehog + bat + bear + koala + panda + sloth + otter + skunk + kangaroo + badger + paw_prints + turkey + chicken + rooster + hatching_chick + baby_chick + front_facing_baby_chick + bird + penguin + dove + eagle + duck + swan + owl + flamingo + peacock + parrot + frog + crocodile + turtle + lizard + snake + dragon_face + dragon_face_1 + sauropod + T_Rex + spouting_whale + spouting_whale_1 + dolphin + fish + tropical_fish + blowfish + shark + octopus + spiral_shell + snail + butterfly + bug + ant + honeybee + lady_beetle + cricket + spider + spider_web + scorpion + mosquito + microbe +" + +emoji_groups[faces]=" + grinning_face + grinning_face_with_big_eyes + grinning_face_with_smiling_eyes + beaming_face_with_smiling_eyes + grinning_squinting_face + grinning_face_with_sweat + rolling_on_the_floor_laughing + face_with_tears_of_joy + slightly_smiling_face + upside_down_face + winking_face + smiling_face_with_smiling_eyes + smiling_face_with_halo + smiling_face_with_hearts + smiling_face_with_heart_eyes + star_struck + face_blowing_a_kiss + kissing_face + smiling_face + kissing_face_with_closed_eyes + kissing_face_with_smiling_eyes + face_savoring_food + face_with_tongue + winking_face_with_tongue + zany_face + squinting_face_with_tongue + money_mouth_face + hugging_face + face_with_hand_over_mouth + shushing_face + thinking_face + zipper_mouth_face + face_with_raised_eyebrow + neutral_face + expressionless_face + face_without_mouth + smirking_face + unamused_face + face_with_rolling_eyes + grimacing_face + lying_face + relieved_face + pensive_face + sleepy_face + drooling_face + sleeping_face + face_with_medical_mask + face_with_thermometer + face_with_head_bandage + nauseated_face + face_vomiting + sneezing_face + hot_face + cold_face + woozy_face + dizzy_face + exploding_head + cowboy_hat_face + partying_face + smiling_face_with_sunglasses + nerd_face + face_with_monocle + confused_face + worried_face + slightly_frowning_face + slightly_frowning_face_1 + face_with_open_mouth + hushed_face + astonished_face + flushed_face + pleading_face + frowning_face_with_open_mouth + anguished_face + fearful_face + anxious_face_with_sweat + sad_but_relieved_face + crying_face + loudly_crying_face + face_screaming_in_fear + confounded_face + persevering_face + disappointed_face + downcast_face_with_sweat + weary_face + tired_face + yawning_face + face_with_steam_from_nose + pouting_face + angry_face + face_with_symbols_on_mouth + smiling_face_with_horns + angry_face_with_horns + skull + skull_and_crossbones + pile_of_poo + clown_face + ogre + goblin + ghost + alien + alien_monster + robot +" + +emoji_groups[flags]=" + chequered_flag + triangular_flag + crossed_flags + black_flag + white_flag + rainbow_flag + pirate_flag + Ascension_Island + Andorra + United_Arab_Emirates + Afghanistan + Antigua_and_Barbuda + Anguilla + Albania + Armenia + Angola + Antarctica + Argentina + American_Samoa + Austria + Australia + Aruba + Åland_Islands + Azerbaijan + Bosnia_and_Herzegovina + Barbados + Bangladesh + Belgium + Burkina_Faso + Bulgaria + Bahrain + Burundi + Benin + St_Barthélemy + Bermuda + Brunei + Bolivia + Caribbean_Netherlands + Brazil + Bahamas + Bhutan + Bouvet_Island + Botswana + Belarus + Belize + Canada + Cocos_Keeling_Islands + Congo__Kinshasa + Central_African_Republic + Congo__Brazzaville + Switzerland + Côte_d_Ivoire + Cook_Islands + Chile + Cameroon + China + Colombia + Clipperton_Island + Costa_Rica + Cuba + Cape_Verde + Curaçao + Christmas_Island + Cyprus + Czechia + Germany + Diego_Garcia + Djibouti + Denmark + Dominica + Dominican_Republic + Algeria + Ceuta_and_Melilla + Ecuador + Estonia + Egypt + Western_Sahara + Eritrea + Spain + Ethiopia + European_Union + Finland + Fiji + Falkland_Islands + Micronesia + Faroe_Islands + France + Gabon + United_Kingdom + Grenada + Georgia + French_Guiana + Guernsey + Ghana + Gibraltar + Greenland + Gambia + Guinea + Guadeloupe + Equatorial_Guinea + Greece + South_Georgia_and_South_Sandwich_Islands + Guatemala + Guam + Guinea_Bissau + Guyana + Hong_Kong_SAR_China + Heard_and_McDonald_Islands + Honduras + Croatia + Haiti + Hungary + Canary_Islands + Indonesia + Ireland + Israel + Isle_of_Man + India + British_Indian_Ocean_Territory + Iraq + Iran + Iceland + Italy + Jersey + Jamaica + Jordan + Japan + Kenya + Kyrgyzstan + Cambodia + Kiribati + Comoros + St_Kitts_and_Nevis + North_Korea + South_Korea + Kuwait + Cayman_Islands + Kazakhstan + Laos + Lebanon + St_Lucia + Liechtenstein + Sri_Lanka + Liberia + Lesotho + Lithuania + Luxembourg + Latvia + Libya + Morocco + Monaco + Moldova + Montenegro + St_Martin + Madagascar + Marshall_Islands + Macedonia + Mali + Myanmar_Burma_ + Mongolia + Macao_SAR_China + Northern_Mariana_Islands + Martinique + Mauritania + Montserrat + Malta + Mauritius + Maldives + Malawi + Mexico + Malaysia + Mozambique + Namibia + New_Caledonia + Niger + Norfolk_Island + Nigeria + Nicaragua + Netherlands + Norway + Nepal + Nauru + Niue + New_Zealand + Oman + Panama + Peru + French_Polynesia + Papua_New_Guinea + Philippines + Pakistan + Poland + St_Pierre_and_Miquelon + Pitcairn_Islands + Puerto_Rico + Palestinian_Territories + Portugal + Palau + Paraguay + Qatar + Réunion + Romania + Serbia + Russia + Rwanda + Saudi_Arabia + Solomon_Islands + Seychelles + Sudan + Sweden + Singapore + St_Helena + Slovenia + Svalbard_and_Jan_Mayen + Slovakia + Sierra_Leone + San_Marino + Senegal + Somalia + Suriname + South_Sudan + São_Tomé_and_Príncipe + El_Salvador + Sint_Maarten + Syria + Eswatini + Tristan_da_Cunha + Turks_and_Caicos_Islands + Chad + French_Southern_Territories + Togo + Thailand + Tajikistan + Tokelau + Timor_Leste + Turkmenistan + Tunisia + Tonga + Turkey + Trinidad_and_Tobago + Tuvalu + Taiwan + Tanzania + Ukraine + Uganda + U_S_Outlying_Islands + United_Nations + United_States + Uruguay + Uzbekistan + Vatican_City + St_Vincent_and_Grenadines + Venezuela + British_Virgin_Islands + U_S_Virgin_Islands + Vietnam + Vanuatu + Wallis_and_Futuna + Samoa + Kosovo + Yemen + Mayotte + South_Africa + Zambia + Zimbabwe + England + Scotland + Wales +" diff --git a/dot_oh-my-zsh/plugins/emoji/emoji-data.txt b/dot_oh-my-zsh/plugins/emoji/emoji-data.txt new file mode 100644 index 0000000..59b7e92 --- /dev/null +++ b/dot_oh-my-zsh/plugins/emoji/emoji-data.txt @@ -0,0 +1,4122 @@ +# emoji-data.txt +# (Originally emoji-test.txt) +# (Retrieved from https://unicode.org/Public/emoji/12.0/emoji-test.txt) + +# Date: 2019-01-27, 15:43:01 GMT +# © 2019 Unicode®, Inc. +# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. +# For terms of use, see http://www.unicode.org/terms_of_use.html +# +# Emoji Keyboard/Display Test Data for UTS #51 +# Version: 12.0 +# +# For documentation and usage, see http://www.unicode.org/reports/tr51 +# +# This file provides data for testing which emoji forms should be in keyboards and which should also be displayed/processed. +# Format: code points; status # emoji name +# Code points — list of one or more hex code points, separated by spaces +# Status +# component — an Emoji_Component, +# excluding Regional_Indicators, ASCII, and non-Emoji. +# fully-qualified — a fully-qualified emoji (see ED-18 in UTS #51), +# excluding Emoji_Component +# minimally-qualified — a minimally-qualified emoji (see ED-18a in UTS #51) +# unqualified — a unqualified emoji (See ED-19 in UTS #51) +# Notes: +# • This includes the emoji components that need emoji presentation (skin tone and hair) +# when isolated, but omits the components that need not have an emoji +# presentation when isolated. +# • The RGI set is covered by the listed fully-qualified emoji. +# • The listed minimally-qualified and unqualified cover all cases where an +# element of the RGI set is missing one or more emoji presentation selectors. +# • The file is in CLDR order, not codepoint order. This is recommended (but not required!) for keyboard palettes. +# • The groups and subgroups are illustrative. See the Emoji Order chart for more information. + + +# group: Smileys & Emotion + +# subgroup: face-smiling +1F600 ; fully-qualified # 😀 grinning face +1F603 ; fully-qualified # 😃 grinning face with big eyes +1F604 ; fully-qualified # 😄 grinning face with smiling eyes +1F601 ; fully-qualified # 😁 beaming face with smiling eyes +1F606 ; fully-qualified # 😆 grinning squinting face +1F605 ; fully-qualified # 😅 grinning face with sweat +1F923 ; fully-qualified # 🤣 rolling on the floor laughing +1F602 ; fully-qualified # 😂 face with tears of joy +1F642 ; fully-qualified # 🙂 slightly smiling face +1F643 ; fully-qualified # 🙃 upside-down face +1F609 ; fully-qualified # 😉 winking face +1F60A ; fully-qualified # 😊 smiling face with smiling eyes +1F607 ; fully-qualified # 😇 smiling face with halo + +# subgroup: face-affection +1F970 ; fully-qualified # 🥰 smiling face with hearts +1F60D ; fully-qualified # 😍 smiling face with heart-eyes +1F929 ; fully-qualified # 🤩 star-struck +1F618 ; fully-qualified # 😘 face blowing a kiss +1F617 ; fully-qualified # 😗 kissing face +263A FE0F ; fully-qualified # ☺️ smiling face +263A ; unqualified # ☺ smiling face +1F61A ; fully-qualified # 😚 kissing face with closed eyes +1F619 ; fully-qualified # 😙 kissing face with smiling eyes + +# subgroup: face-tongue +1F60B ; fully-qualified # 😋 face savoring food +1F61B ; fully-qualified # 😛 face with tongue +1F61C ; fully-qualified # 😜 winking face with tongue +1F92A ; fully-qualified # 🤪 zany face +1F61D ; fully-qualified # 😝 squinting face with tongue +1F911 ; fully-qualified # 🤑 money-mouth face + +# subgroup: face-hand +1F917 ; fully-qualified # 🤗 hugging face +1F92D ; fully-qualified # 🤭 face with hand over mouth +1F92B ; fully-qualified # 🤫 shushing face +1F914 ; fully-qualified # 🤔 thinking face + +# subgroup: face-neutral-skeptical +1F910 ; fully-qualified # 🤐 zipper-mouth face +1F928 ; fully-qualified # 🤨 face with raised eyebrow +1F610 ; fully-qualified # 😐 neutral face +1F611 ; fully-qualified # 😑 expressionless face +1F636 ; fully-qualified # 😶 face without mouth +1F60F ; fully-qualified # 😏 smirking face +1F612 ; fully-qualified # 😒 unamused face +1F644 ; fully-qualified # 🙄 face with rolling eyes +1F62C ; fully-qualified # 😬 grimacing face +1F925 ; fully-qualified # 🤥 lying face + +# subgroup: face-sleepy +1F60C ; fully-qualified # 😌 relieved face +1F614 ; fully-qualified # 😔 pensive face +1F62A ; fully-qualified # 😪 sleepy face +1F924 ; fully-qualified # 🤤 drooling face +1F634 ; fully-qualified # 😴 sleeping face + +# subgroup: face-unwell +1F637 ; fully-qualified # 😷 face with medical mask +1F912 ; fully-qualified # 🤒 face with thermometer +1F915 ; fully-qualified # 🤕 face with head-bandage +1F922 ; fully-qualified # 🤢 nauseated face +1F92E ; fully-qualified # 🤮 face vomiting +1F927 ; fully-qualified # 🤧 sneezing face +1F975 ; fully-qualified # 🥵 hot face +1F976 ; fully-qualified # 🥶 cold face +1F974 ; fully-qualified # 🥴 woozy face +1F635 ; fully-qualified # 😵 dizzy face +1F92F ; fully-qualified # 🤯 exploding head + +# subgroup: face-hat +1F920 ; fully-qualified # 🤠 cowboy hat face +1F973 ; fully-qualified # 🥳 partying face + +# subgroup: face-glasses +1F60E ; fully-qualified # 😎 smiling face with sunglasses +1F913 ; fully-qualified # 🤓 nerd face +1F9D0 ; fully-qualified # 🧐 face with monocle + +# subgroup: face-concerned +1F615 ; fully-qualified # 😕 confused face +1F61F ; fully-qualified # 😟 worried face +1F641 ; fully-qualified # 🙁 slightly frowning face +2639 FE0F ; fully-qualified # ☹️ frowning face +2639 ; unqualified # ☹ frowning face +1F62E ; fully-qualified # 😮 face with open mouth +1F62F ; fully-qualified # 😯 hushed face +1F632 ; fully-qualified # 😲 astonished face +1F633 ; fully-qualified # 😳 flushed face +1F97A ; fully-qualified # 🥺 pleading face +1F626 ; fully-qualified # 😦 frowning face with open mouth +1F627 ; fully-qualified # 😧 anguished face +1F628 ; fully-qualified # 😨 fearful face +1F630 ; fully-qualified # 😰 anxious face with sweat +1F625 ; fully-qualified # 😥 sad but relieved face +1F622 ; fully-qualified # 😢 crying face +1F62D ; fully-qualified # 😭 loudly crying face +1F631 ; fully-qualified # 😱 face screaming in fear +1F616 ; fully-qualified # 😖 confounded face +1F623 ; fully-qualified # 😣 persevering face +1F61E ; fully-qualified # 😞 disappointed face +1F613 ; fully-qualified # 😓 downcast face with sweat +1F629 ; fully-qualified # 😩 weary face +1F62B ; fully-qualified # 😫 tired face +1F971 ; fully-qualified # 🥱 yawning face + +# subgroup: face-negative +1F624 ; fully-qualified # 😤 face with steam from nose +1F621 ; fully-qualified # 😡 pouting face +1F620 ; fully-qualified # 😠 angry face +1F92C ; fully-qualified # 🤬 face with symbols on mouth +1F608 ; fully-qualified # 😈 smiling face with horns +1F47F ; fully-qualified # 👿 angry face with horns +1F480 ; fully-qualified # 💀 skull +2620 FE0F ; fully-qualified # ☠️ skull and crossbones +2620 ; unqualified # ☠ skull and crossbones + +# subgroup: face-costume +1F4A9 ; fully-qualified # 💩 pile of poo +1F921 ; fully-qualified # 🤡 clown face +1F479 ; fully-qualified # 👹 ogre +1F47A ; fully-qualified # 👺 goblin +1F47B ; fully-qualified # 👻 ghost +1F47D ; fully-qualified # 👽 alien +1F47E ; fully-qualified # 👾 alien monster +1F916 ; fully-qualified # 🤖 robot + +# subgroup: cat-face +1F63A ; fully-qualified # 😺 grinning cat +1F638 ; fully-qualified # 😸 grinning cat with smiling eyes +1F639 ; fully-qualified # 😹 cat with tears of joy +1F63B ; fully-qualified # 😻 smiling cat with heart-eyes +1F63C ; fully-qualified # 😼 cat with wry smile +1F63D ; fully-qualified # 😽 kissing cat +1F640 ; fully-qualified # 🙀 weary cat +1F63F ; fully-qualified # 😿 crying cat +1F63E ; fully-qualified # 😾 pouting cat + +# subgroup: monkey-face +1F648 ; fully-qualified # 🙈 see-no-evil monkey +1F649 ; fully-qualified # 🙉 hear-no-evil monkey +1F64A ; fully-qualified # 🙊 speak-no-evil monkey + +# subgroup: emotion +1F48B ; fully-qualified # 💋 kiss mark +1F48C ; fully-qualified # 💌 love letter +1F498 ; fully-qualified # 💘 heart with arrow +1F49D ; fully-qualified # 💝 heart with ribbon +1F496 ; fully-qualified # 💖 sparkling heart +1F497 ; fully-qualified # 💗 growing heart +1F493 ; fully-qualified # 💓 beating heart +1F49E ; fully-qualified # 💞 revolving hearts +1F495 ; fully-qualified # 💕 two hearts +1F49F ; fully-qualified # 💟 heart decoration +2763 FE0F ; fully-qualified # ❣️ heart exclamation +2763 ; unqualified # ❣ heart exclamation +1F494 ; fully-qualified # 💔 broken heart +2764 FE0F ; fully-qualified # ❤️ red heart +2764 ; unqualified # ❤ red heart +1F9E1 ; fully-qualified # 🧡 orange heart +1F49B ; fully-qualified # 💛 yellow heart +1F49A ; fully-qualified # 💚 green heart +1F499 ; fully-qualified # 💙 blue heart +1F49C ; fully-qualified # 💜 purple heart +1F90E ; fully-qualified # 🤎 brown heart +1F5A4 ; fully-qualified # 🖤 black heart +1F90D ; fully-qualified # 🤍 white heart +1F4AF ; fully-qualified # 💯 hundred points +1F4A2 ; fully-qualified # 💢 anger symbol +1F4A5 ; fully-qualified # 💥 collision +1F4AB ; fully-qualified # 💫 dizzy +1F4A6 ; fully-qualified # 💦 sweat droplets +1F4A8 ; fully-qualified # 💨 dashing away +1F573 FE0F ; fully-qualified # 🕳️ hole +1F573 ; unqualified # 🕳 hole +1F4A3 ; fully-qualified # 💣 bomb +1F4AC ; fully-qualified # 💬 speech balloon +1F441 FE0F 200D 1F5E8 FE0F ; fully-qualified # 👁️‍🗨️ eye in speech bubble +1F441 200D 1F5E8 FE0F ; unqualified # 👁‍🗨️ eye in speech bubble +1F441 FE0F 200D 1F5E8 ; unqualified # 👁️‍🗨 eye in speech bubble +1F441 200D 1F5E8 ; unqualified # 👁‍🗨 eye in speech bubble +1F5E8 FE0F ; fully-qualified # 🗨️ left speech bubble +1F5E8 ; unqualified # 🗨 left speech bubble +1F5EF FE0F ; fully-qualified # 🗯️ right anger bubble +1F5EF ; unqualified # 🗯 right anger bubble +1F4AD ; fully-qualified # 💭 thought balloon +1F4A4 ; fully-qualified # 💤 zzz + +# Smileys & Emotion subtotal: 160 +# Smileys & Emotion subtotal: 160 w/o modifiers + +# group: People & Body + +# subgroup: hand-fingers-open +1F44B ; fully-qualified # 👋 waving hand +1F44B 1F3FB ; fully-qualified # 👋🏻 waving hand: light skin tone +1F44B 1F3FC ; fully-qualified # 👋🏼 waving hand: medium-light skin tone +1F44B 1F3FD ; fully-qualified # 👋🏽 waving hand: medium skin tone +1F44B 1F3FE ; fully-qualified # 👋🏾 waving hand: medium-dark skin tone +1F44B 1F3FF ; fully-qualified # 👋🏿 waving hand: dark skin tone +1F91A ; fully-qualified # 🤚 raised back of hand +1F91A 1F3FB ; fully-qualified # 🤚🏻 raised back of hand: light skin tone +1F91A 1F3FC ; fully-qualified # 🤚🏼 raised back of hand: medium-light skin tone +1F91A 1F3FD ; fully-qualified # 🤚🏽 raised back of hand: medium skin tone +1F91A 1F3FE ; fully-qualified # 🤚🏾 raised back of hand: medium-dark skin tone +1F91A 1F3FF ; fully-qualified # 🤚🏿 raised back of hand: dark skin tone +1F590 FE0F ; fully-qualified # 🖐️ hand with fingers splayed +1F590 ; unqualified # 🖐 hand with fingers splayed +1F590 1F3FB ; fully-qualified # 🖐🏻 hand with fingers splayed: light skin tone +1F590 1F3FC ; fully-qualified # 🖐🏼 hand with fingers splayed: medium-light skin tone +1F590 1F3FD ; fully-qualified # 🖐🏽 hand with fingers splayed: medium skin tone +1F590 1F3FE ; fully-qualified # 🖐🏾 hand with fingers splayed: medium-dark skin tone +1F590 1F3FF ; fully-qualified # 🖐🏿 hand with fingers splayed: dark skin tone +270B ; fully-qualified # ✋ raised hand +270B 1F3FB ; fully-qualified # ✋🏻 raised hand: light skin tone +270B 1F3FC ; fully-qualified # ✋🏼 raised hand: medium-light skin tone +270B 1F3FD ; fully-qualified # ✋🏽 raised hand: medium skin tone +270B 1F3FE ; fully-qualified # ✋🏾 raised hand: medium-dark skin tone +270B 1F3FF ; fully-qualified # ✋🏿 raised hand: dark skin tone +1F596 ; fully-qualified # 🖖 vulcan salute +1F596 1F3FB ; fully-qualified # 🖖🏻 vulcan salute: light skin tone +1F596 1F3FC ; fully-qualified # 🖖🏼 vulcan salute: medium-light skin tone +1F596 1F3FD ; fully-qualified # 🖖🏽 vulcan salute: medium skin tone +1F596 1F3FE ; fully-qualified # 🖖🏾 vulcan salute: medium-dark skin tone +1F596 1F3FF ; fully-qualified # 🖖🏿 vulcan salute: dark skin tone + +# subgroup: hand-fingers-partial +1F44C ; fully-qualified # 👌 OK hand +1F44C 1F3FB ; fully-qualified # 👌🏻 OK hand: light skin tone +1F44C 1F3FC ; fully-qualified # 👌🏼 OK hand: medium-light skin tone +1F44C 1F3FD ; fully-qualified # 👌🏽 OK hand: medium skin tone +1F44C 1F3FE ; fully-qualified # 👌🏾 OK hand: medium-dark skin tone +1F44C 1F3FF ; fully-qualified # 👌🏿 OK hand: dark skin tone +1F90F ; fully-qualified # 🤏 pinching hand +1F90F 1F3FB ; fully-qualified # 🤏🏻 pinching hand: light skin tone +1F90F 1F3FC ; fully-qualified # 🤏🏼 pinching hand: medium-light skin tone +1F90F 1F3FD ; fully-qualified # 🤏🏽 pinching hand: medium skin tone +1F90F 1F3FE ; fully-qualified # 🤏🏾 pinching hand: medium-dark skin tone +1F90F 1F3FF ; fully-qualified # 🤏🏿 pinching hand: dark skin tone +270C FE0F ; fully-qualified # ✌️ victory hand +270C ; unqualified # ✌ victory hand +270C 1F3FB ; fully-qualified # ✌🏻 victory hand: light skin tone +270C 1F3FC ; fully-qualified # ✌🏼 victory hand: medium-light skin tone +270C 1F3FD ; fully-qualified # ✌🏽 victory hand: medium skin tone +270C 1F3FE ; fully-qualified # ✌🏾 victory hand: medium-dark skin tone +270C 1F3FF ; fully-qualified # ✌🏿 victory hand: dark skin tone +1F91E ; fully-qualified # 🤞 crossed fingers +1F91E 1F3FB ; fully-qualified # 🤞🏻 crossed fingers: light skin tone +1F91E 1F3FC ; fully-qualified # 🤞🏼 crossed fingers: medium-light skin tone +1F91E 1F3FD ; fully-qualified # 🤞🏽 crossed fingers: medium skin tone +1F91E 1F3FE ; fully-qualified # 🤞🏾 crossed fingers: medium-dark skin tone +1F91E 1F3FF ; fully-qualified # 🤞🏿 crossed fingers: dark skin tone +1F91F ; fully-qualified # 🤟 love-you gesture +1F91F 1F3FB ; fully-qualified # 🤟🏻 love-you gesture: light skin tone +1F91F 1F3FC ; fully-qualified # 🤟🏼 love-you gesture: medium-light skin tone +1F91F 1F3FD ; fully-qualified # 🤟🏽 love-you gesture: medium skin tone +1F91F 1F3FE ; fully-qualified # 🤟🏾 love-you gesture: medium-dark skin tone +1F91F 1F3FF ; fully-qualified # 🤟🏿 love-you gesture: dark skin tone +1F918 ; fully-qualified # 🤘 sign of the horns +1F918 1F3FB ; fully-qualified # 🤘🏻 sign of the horns: light skin tone +1F918 1F3FC ; fully-qualified # 🤘🏼 sign of the horns: medium-light skin tone +1F918 1F3FD ; fully-qualified # 🤘🏽 sign of the horns: medium skin tone +1F918 1F3FE ; fully-qualified # 🤘🏾 sign of the horns: medium-dark skin tone +1F918 1F3FF ; fully-qualified # 🤘🏿 sign of the horns: dark skin tone +1F919 ; fully-qualified # 🤙 call me hand +1F919 1F3FB ; fully-qualified # 🤙🏻 call me hand: light skin tone +1F919 1F3FC ; fully-qualified # 🤙🏼 call me hand: medium-light skin tone +1F919 1F3FD ; fully-qualified # 🤙🏽 call me hand: medium skin tone +1F919 1F3FE ; fully-qualified # 🤙🏾 call me hand: medium-dark skin tone +1F919 1F3FF ; fully-qualified # 🤙🏿 call me hand: dark skin tone + +# subgroup: hand-single-finger +1F448 ; fully-qualified # 👈 backhand index pointing left +1F448 1F3FB ; fully-qualified # 👈🏻 backhand index pointing left: light skin tone +1F448 1F3FC ; fully-qualified # 👈🏼 backhand index pointing left: medium-light skin tone +1F448 1F3FD ; fully-qualified # 👈🏽 backhand index pointing left: medium skin tone +1F448 1F3FE ; fully-qualified # 👈🏾 backhand index pointing left: medium-dark skin tone +1F448 1F3FF ; fully-qualified # 👈🏿 backhand index pointing left: dark skin tone +1F449 ; fully-qualified # 👉 backhand index pointing right +1F449 1F3FB ; fully-qualified # 👉🏻 backhand index pointing right: light skin tone +1F449 1F3FC ; fully-qualified # 👉🏼 backhand index pointing right: medium-light skin tone +1F449 1F3FD ; fully-qualified # 👉🏽 backhand index pointing right: medium skin tone +1F449 1F3FE ; fully-qualified # 👉🏾 backhand index pointing right: medium-dark skin tone +1F449 1F3FF ; fully-qualified # 👉🏿 backhand index pointing right: dark skin tone +1F446 ; fully-qualified # 👆 backhand index pointing up +1F446 1F3FB ; fully-qualified # 👆🏻 backhand index pointing up: light skin tone +1F446 1F3FC ; fully-qualified # 👆🏼 backhand index pointing up: medium-light skin tone +1F446 1F3FD ; fully-qualified # 👆🏽 backhand index pointing up: medium skin tone +1F446 1F3FE ; fully-qualified # 👆🏾 backhand index pointing up: medium-dark skin tone +1F446 1F3FF ; fully-qualified # 👆🏿 backhand index pointing up: dark skin tone +1F595 ; fully-qualified # 🖕 middle finger +1F595 1F3FB ; fully-qualified # 🖕🏻 middle finger: light skin tone +1F595 1F3FC ; fully-qualified # 🖕🏼 middle finger: medium-light skin tone +1F595 1F3FD ; fully-qualified # 🖕🏽 middle finger: medium skin tone +1F595 1F3FE ; fully-qualified # 🖕🏾 middle finger: medium-dark skin tone +1F595 1F3FF ; fully-qualified # 🖕🏿 middle finger: dark skin tone +1F447 ; fully-qualified # 👇 backhand index pointing down +1F447 1F3FB ; fully-qualified # 👇🏻 backhand index pointing down: light skin tone +1F447 1F3FC ; fully-qualified # 👇🏼 backhand index pointing down: medium-light skin tone +1F447 1F3FD ; fully-qualified # 👇🏽 backhand index pointing down: medium skin tone +1F447 1F3FE ; fully-qualified # 👇🏾 backhand index pointing down: medium-dark skin tone +1F447 1F3FF ; fully-qualified # 👇🏿 backhand index pointing down: dark skin tone +261D FE0F ; fully-qualified # ☝️ index pointing up +261D ; unqualified # ☝ index pointing up +261D 1F3FB ; fully-qualified # ☝🏻 index pointing up: light skin tone +261D 1F3FC ; fully-qualified # ☝🏼 index pointing up: medium-light skin tone +261D 1F3FD ; fully-qualified # ☝🏽 index pointing up: medium skin tone +261D 1F3FE ; fully-qualified # ☝🏾 index pointing up: medium-dark skin tone +261D 1F3FF ; fully-qualified # ☝🏿 index pointing up: dark skin tone + +# subgroup: hand-fingers-closed +1F44D ; fully-qualified # 👍 thumbs up +1F44D 1F3FB ; fully-qualified # 👍🏻 thumbs up: light skin tone +1F44D 1F3FC ; fully-qualified # 👍🏼 thumbs up: medium-light skin tone +1F44D 1F3FD ; fully-qualified # 👍🏽 thumbs up: medium skin tone +1F44D 1F3FE ; fully-qualified # 👍🏾 thumbs up: medium-dark skin tone +1F44D 1F3FF ; fully-qualified # 👍🏿 thumbs up: dark skin tone +1F44E ; fully-qualified # 👎 thumbs down +1F44E 1F3FB ; fully-qualified # 👎🏻 thumbs down: light skin tone +1F44E 1F3FC ; fully-qualified # 👎🏼 thumbs down: medium-light skin tone +1F44E 1F3FD ; fully-qualified # 👎🏽 thumbs down: medium skin tone +1F44E 1F3FE ; fully-qualified # 👎🏾 thumbs down: medium-dark skin tone +1F44E 1F3FF ; fully-qualified # 👎🏿 thumbs down: dark skin tone +270A ; fully-qualified # ✊ raised fist +270A 1F3FB ; fully-qualified # ✊🏻 raised fist: light skin tone +270A 1F3FC ; fully-qualified # ✊🏼 raised fist: medium-light skin tone +270A 1F3FD ; fully-qualified # ✊🏽 raised fist: medium skin tone +270A 1F3FE ; fully-qualified # ✊🏾 raised fist: medium-dark skin tone +270A 1F3FF ; fully-qualified # ✊🏿 raised fist: dark skin tone +1F44A ; fully-qualified # 👊 oncoming fist +1F44A 1F3FB ; fully-qualified # 👊🏻 oncoming fist: light skin tone +1F44A 1F3FC ; fully-qualified # 👊🏼 oncoming fist: medium-light skin tone +1F44A 1F3FD ; fully-qualified # 👊🏽 oncoming fist: medium skin tone +1F44A 1F3FE ; fully-qualified # 👊🏾 oncoming fist: medium-dark skin tone +1F44A 1F3FF ; fully-qualified # 👊🏿 oncoming fist: dark skin tone +1F91B ; fully-qualified # 🤛 left-facing fist +1F91B 1F3FB ; fully-qualified # 🤛🏻 left-facing fist: light skin tone +1F91B 1F3FC ; fully-qualified # 🤛🏼 left-facing fist: medium-light skin tone +1F91B 1F3FD ; fully-qualified # 🤛🏽 left-facing fist: medium skin tone +1F91B 1F3FE ; fully-qualified # 🤛🏾 left-facing fist: medium-dark skin tone +1F91B 1F3FF ; fully-qualified # 🤛🏿 left-facing fist: dark skin tone +1F91C ; fully-qualified # 🤜 right-facing fist +1F91C 1F3FB ; fully-qualified # 🤜🏻 right-facing fist: light skin tone +1F91C 1F3FC ; fully-qualified # 🤜🏼 right-facing fist: medium-light skin tone +1F91C 1F3FD ; fully-qualified # 🤜🏽 right-facing fist: medium skin tone +1F91C 1F3FE ; fully-qualified # 🤜🏾 right-facing fist: medium-dark skin tone +1F91C 1F3FF ; fully-qualified # 🤜🏿 right-facing fist: dark skin tone + +# subgroup: hands +1F44F ; fully-qualified # 👏 clapping hands +1F44F 1F3FB ; fully-qualified # 👏🏻 clapping hands: light skin tone +1F44F 1F3FC ; fully-qualified # 👏🏼 clapping hands: medium-light skin tone +1F44F 1F3FD ; fully-qualified # 👏🏽 clapping hands: medium skin tone +1F44F 1F3FE ; fully-qualified # 👏🏾 clapping hands: medium-dark skin tone +1F44F 1F3FF ; fully-qualified # 👏🏿 clapping hands: dark skin tone +1F64C ; fully-qualified # 🙌 raising hands +1F64C 1F3FB ; fully-qualified # 🙌🏻 raising hands: light skin tone +1F64C 1F3FC ; fully-qualified # 🙌🏼 raising hands: medium-light skin tone +1F64C 1F3FD ; fully-qualified # 🙌🏽 raising hands: medium skin tone +1F64C 1F3FE ; fully-qualified # 🙌🏾 raising hands: medium-dark skin tone +1F64C 1F3FF ; fully-qualified # 🙌🏿 raising hands: dark skin tone +1F450 ; fully-qualified # 👐 open hands +1F450 1F3FB ; fully-qualified # 👐🏻 open hands: light skin tone +1F450 1F3FC ; fully-qualified # 👐🏼 open hands: medium-light skin tone +1F450 1F3FD ; fully-qualified # 👐🏽 open hands: medium skin tone +1F450 1F3FE ; fully-qualified # 👐🏾 open hands: medium-dark skin tone +1F450 1F3FF ; fully-qualified # 👐🏿 open hands: dark skin tone +1F932 ; fully-qualified # 🤲 palms up together +1F932 1F3FB ; fully-qualified # 🤲🏻 palms up together: light skin tone +1F932 1F3FC ; fully-qualified # 🤲🏼 palms up together: medium-light skin tone +1F932 1F3FD ; fully-qualified # 🤲🏽 palms up together: medium skin tone +1F932 1F3FE ; fully-qualified # 🤲🏾 palms up together: medium-dark skin tone +1F932 1F3FF ; fully-qualified # 🤲🏿 palms up together: dark skin tone +1F91D ; fully-qualified # 🤝 handshake +1F64F ; fully-qualified # 🙏 folded hands +1F64F 1F3FB ; fully-qualified # 🙏🏻 folded hands: light skin tone +1F64F 1F3FC ; fully-qualified # 🙏🏼 folded hands: medium-light skin tone +1F64F 1F3FD ; fully-qualified # 🙏🏽 folded hands: medium skin tone +1F64F 1F3FE ; fully-qualified # 🙏🏾 folded hands: medium-dark skin tone +1F64F 1F3FF ; fully-qualified # 🙏🏿 folded hands: dark skin tone + +# subgroup: hand-prop +270D FE0F ; fully-qualified # ✍️ writing hand +270D ; unqualified # ✍ writing hand +270D 1F3FB ; fully-qualified # ✍🏻 writing hand: light skin tone +270D 1F3FC ; fully-qualified # ✍🏼 writing hand: medium-light skin tone +270D 1F3FD ; fully-qualified # ✍🏽 writing hand: medium skin tone +270D 1F3FE ; fully-qualified # ✍🏾 writing hand: medium-dark skin tone +270D 1F3FF ; fully-qualified # ✍🏿 writing hand: dark skin tone +1F485 ; fully-qualified # 💅 nail polish +1F485 1F3FB ; fully-qualified # 💅🏻 nail polish: light skin tone +1F485 1F3FC ; fully-qualified # 💅🏼 nail polish: medium-light skin tone +1F485 1F3FD ; fully-qualified # 💅🏽 nail polish: medium skin tone +1F485 1F3FE ; fully-qualified # 💅🏾 nail polish: medium-dark skin tone +1F485 1F3FF ; fully-qualified # 💅🏿 nail polish: dark skin tone +1F933 ; fully-qualified # 🤳 selfie +1F933 1F3FB ; fully-qualified # 🤳🏻 selfie: light skin tone +1F933 1F3FC ; fully-qualified # 🤳🏼 selfie: medium-light skin tone +1F933 1F3FD ; fully-qualified # 🤳🏽 selfie: medium skin tone +1F933 1F3FE ; fully-qualified # 🤳🏾 selfie: medium-dark skin tone +1F933 1F3FF ; fully-qualified # 🤳🏿 selfie: dark skin tone + +# subgroup: body-parts +1F4AA ; fully-qualified # 💪 flexed biceps +1F4AA 1F3FB ; fully-qualified # 💪🏻 flexed biceps: light skin tone +1F4AA 1F3FC ; fully-qualified # 💪🏼 flexed biceps: medium-light skin tone +1F4AA 1F3FD ; fully-qualified # 💪🏽 flexed biceps: medium skin tone +1F4AA 1F3FE ; fully-qualified # 💪🏾 flexed biceps: medium-dark skin tone +1F4AA 1F3FF ; fully-qualified # 💪🏿 flexed biceps: dark skin tone +1F9BE ; fully-qualified # 🦾 mechanical arm +1F9BF ; fully-qualified # 🦿 mechanical leg +1F9B5 ; fully-qualified # 🦵 leg +1F9B5 1F3FB ; fully-qualified # 🦵🏻 leg: light skin tone +1F9B5 1F3FC ; fully-qualified # 🦵🏼 leg: medium-light skin tone +1F9B5 1F3FD ; fully-qualified # 🦵🏽 leg: medium skin tone +1F9B5 1F3FE ; fully-qualified # 🦵🏾 leg: medium-dark skin tone +1F9B5 1F3FF ; fully-qualified # 🦵🏿 leg: dark skin tone +1F9B6 ; fully-qualified # 🦶 foot +1F9B6 1F3FB ; fully-qualified # 🦶🏻 foot: light skin tone +1F9B6 1F3FC ; fully-qualified # 🦶🏼 foot: medium-light skin tone +1F9B6 1F3FD ; fully-qualified # 🦶🏽 foot: medium skin tone +1F9B6 1F3FE ; fully-qualified # 🦶🏾 foot: medium-dark skin tone +1F9B6 1F3FF ; fully-qualified # 🦶🏿 foot: dark skin tone +1F442 ; fully-qualified # 👂 ear +1F442 1F3FB ; fully-qualified # 👂🏻 ear: light skin tone +1F442 1F3FC ; fully-qualified # 👂🏼 ear: medium-light skin tone +1F442 1F3FD ; fully-qualified # 👂🏽 ear: medium skin tone +1F442 1F3FE ; fully-qualified # 👂🏾 ear: medium-dark skin tone +1F442 1F3FF ; fully-qualified # 👂🏿 ear: dark skin tone +1F9BB ; fully-qualified # 🦻 ear with hearing aid +1F9BB 1F3FB ; fully-qualified # 🦻🏻 ear with hearing aid: light skin tone +1F9BB 1F3FC ; fully-qualified # 🦻🏼 ear with hearing aid: medium-light skin tone +1F9BB 1F3FD ; fully-qualified # 🦻🏽 ear with hearing aid: medium skin tone +1F9BB 1F3FE ; fully-qualified # 🦻🏾 ear with hearing aid: medium-dark skin tone +1F9BB 1F3FF ; fully-qualified # 🦻🏿 ear with hearing aid: dark skin tone +1F443 ; fully-qualified # 👃 nose +1F443 1F3FB ; fully-qualified # 👃🏻 nose: light skin tone +1F443 1F3FC ; fully-qualified # 👃🏼 nose: medium-light skin tone +1F443 1F3FD ; fully-qualified # 👃🏽 nose: medium skin tone +1F443 1F3FE ; fully-qualified # 👃🏾 nose: medium-dark skin tone +1F443 1F3FF ; fully-qualified # 👃🏿 nose: dark skin tone +1F9E0 ; fully-qualified # 🧠 brain +1F9B7 ; fully-qualified # 🦷 tooth +1F9B4 ; fully-qualified # 🦴 bone +1F440 ; fully-qualified # 👀 eyes +1F441 FE0F ; fully-qualified # 👁️ eye +1F441 ; unqualified # 👁 eye +1F445 ; fully-qualified # 👅 tongue +1F444 ; fully-qualified # 👄 mouth + +# subgroup: person +1F476 ; fully-qualified # 👶 baby +1F476 1F3FB ; fully-qualified # 👶🏻 baby: light skin tone +1F476 1F3FC ; fully-qualified # 👶🏼 baby: medium-light skin tone +1F476 1F3FD ; fully-qualified # 👶🏽 baby: medium skin tone +1F476 1F3FE ; fully-qualified # 👶🏾 baby: medium-dark skin tone +1F476 1F3FF ; fully-qualified # 👶🏿 baby: dark skin tone +1F9D2 ; fully-qualified # 🧒 child +1F9D2 1F3FB ; fully-qualified # 🧒🏻 child: light skin tone +1F9D2 1F3FC ; fully-qualified # 🧒🏼 child: medium-light skin tone +1F9D2 1F3FD ; fully-qualified # 🧒🏽 child: medium skin tone +1F9D2 1F3FE ; fully-qualified # 🧒🏾 child: medium-dark skin tone +1F9D2 1F3FF ; fully-qualified # 🧒🏿 child: dark skin tone +1F466 ; fully-qualified # 👦 boy +1F466 1F3FB ; fully-qualified # 👦🏻 boy: light skin tone +1F466 1F3FC ; fully-qualified # 👦🏼 boy: medium-light skin tone +1F466 1F3FD ; fully-qualified # 👦🏽 boy: medium skin tone +1F466 1F3FE ; fully-qualified # 👦🏾 boy: medium-dark skin tone +1F466 1F3FF ; fully-qualified # 👦🏿 boy: dark skin tone +1F467 ; fully-qualified # 👧 girl +1F467 1F3FB ; fully-qualified # 👧🏻 girl: light skin tone +1F467 1F3FC ; fully-qualified # 👧🏼 girl: medium-light skin tone +1F467 1F3FD ; fully-qualified # 👧🏽 girl: medium skin tone +1F467 1F3FE ; fully-qualified # 👧🏾 girl: medium-dark skin tone +1F467 1F3FF ; fully-qualified # 👧🏿 girl: dark skin tone +1F9D1 ; fully-qualified # 🧑 person +1F9D1 1F3FB ; fully-qualified # 🧑🏻 person: light skin tone +1F9D1 1F3FC ; fully-qualified # 🧑🏼 person: medium-light skin tone +1F9D1 1F3FD ; fully-qualified # 🧑🏽 person: medium skin tone +1F9D1 1F3FE ; fully-qualified # 🧑🏾 person: medium-dark skin tone +1F9D1 1F3FF ; fully-qualified # 🧑🏿 person: dark skin tone +1F471 ; fully-qualified # 👱 person: blond hair +1F471 1F3FB ; fully-qualified # 👱🏻 person: light skin tone, blond hair +1F471 1F3FC ; fully-qualified # 👱🏼 person: medium-light skin tone, blond hair +1F471 1F3FD ; fully-qualified # 👱🏽 person: medium skin tone, blond hair +1F471 1F3FE ; fully-qualified # 👱🏾 person: medium-dark skin tone, blond hair +1F471 1F3FF ; fully-qualified # 👱🏿 person: dark skin tone, blond hair +1F468 ; fully-qualified # 👨 man +1F468 1F3FB ; fully-qualified # 👨🏻 man: light skin tone +1F468 1F3FC ; fully-qualified # 👨🏼 man: medium-light skin tone +1F468 1F3FD ; fully-qualified # 👨🏽 man: medium skin tone +1F468 1F3FE ; fully-qualified # 👨🏾 man: medium-dark skin tone +1F468 1F3FF ; fully-qualified # 👨🏿 man: dark skin tone +1F9D4 ; fully-qualified # 🧔 man: beard +1F9D4 1F3FB ; fully-qualified # 🧔🏻 man: light skin tone, beard +1F9D4 1F3FC ; fully-qualified # 🧔🏼 man: medium-light skin tone, beard +1F9D4 1F3FD ; fully-qualified # 🧔🏽 man: medium skin tone, beard +1F9D4 1F3FE ; fully-qualified # 🧔🏾 man: medium-dark skin tone, beard +1F9D4 1F3FF ; fully-qualified # 🧔🏿 man: dark skin tone, beard +1F471 200D 2642 FE0F ; fully-qualified # 👱‍♂️ man: blond hair +1F471 200D 2642 ; minimally-qualified # 👱‍♂ man: blond hair +1F471 1F3FB 200D 2642 FE0F ; fully-qualified # 👱🏻‍♂️ man: light skin tone, blond hair +1F471 1F3FB 200D 2642 ; minimally-qualified # 👱🏻‍♂ man: light skin tone, blond hair +1F471 1F3FC 200D 2642 FE0F ; fully-qualified # 👱🏼‍♂️ man: medium-light skin tone, blond hair +1F471 1F3FC 200D 2642 ; minimally-qualified # 👱🏼‍♂ man: medium-light skin tone, blond hair +1F471 1F3FD 200D 2642 FE0F ; fully-qualified # 👱🏽‍♂️ man: medium skin tone, blond hair +1F471 1F3FD 200D 2642 ; minimally-qualified # 👱🏽‍♂ man: medium skin tone, blond hair +1F471 1F3FE 200D 2642 FE0F ; fully-qualified # 👱🏾‍♂️ man: medium-dark skin tone, blond hair +1F471 1F3FE 200D 2642 ; minimally-qualified # 👱🏾‍♂ man: medium-dark skin tone, blond hair +1F471 1F3FF 200D 2642 FE0F ; fully-qualified # 👱🏿‍♂️ man: dark skin tone, blond hair +1F471 1F3FF 200D 2642 ; minimally-qualified # 👱🏿‍♂ man: dark skin tone, blond hair +1F468 200D 1F9B0 ; fully-qualified # 👨‍🦰 man: red hair +1F468 1F3FB 200D 1F9B0 ; fully-qualified # 👨🏻‍🦰 man: light skin tone, red hair +1F468 1F3FC 200D 1F9B0 ; fully-qualified # 👨🏼‍🦰 man: medium-light skin tone, red hair +1F468 1F3FD 200D 1F9B0 ; fully-qualified # 👨🏽‍🦰 man: medium skin tone, red hair +1F468 1F3FE 200D 1F9B0 ; fully-qualified # 👨🏾‍🦰 man: medium-dark skin tone, red hair +1F468 1F3FF 200D 1F9B0 ; fully-qualified # 👨🏿‍🦰 man: dark skin tone, red hair +1F468 200D 1F9B1 ; fully-qualified # 👨‍🦱 man: curly hair +1F468 1F3FB 200D 1F9B1 ; fully-qualified # 👨🏻‍🦱 man: light skin tone, curly hair +1F468 1F3FC 200D 1F9B1 ; fully-qualified # 👨🏼‍🦱 man: medium-light skin tone, curly hair +1F468 1F3FD 200D 1F9B1 ; fully-qualified # 👨🏽‍🦱 man: medium skin tone, curly hair +1F468 1F3FE 200D 1F9B1 ; fully-qualified # 👨🏾‍🦱 man: medium-dark skin tone, curly hair +1F468 1F3FF 200D 1F9B1 ; fully-qualified # 👨🏿‍🦱 man: dark skin tone, curly hair +1F468 200D 1F9B3 ; fully-qualified # 👨‍🦳 man: white hair +1F468 1F3FB 200D 1F9B3 ; fully-qualified # 👨🏻‍🦳 man: light skin tone, white hair +1F468 1F3FC 200D 1F9B3 ; fully-qualified # 👨🏼‍🦳 man: medium-light skin tone, white hair +1F468 1F3FD 200D 1F9B3 ; fully-qualified # 👨🏽‍🦳 man: medium skin tone, white hair +1F468 1F3FE 200D 1F9B3 ; fully-qualified # 👨🏾‍🦳 man: medium-dark skin tone, white hair +1F468 1F3FF 200D 1F9B3 ; fully-qualified # 👨🏿‍🦳 man: dark skin tone, white hair +1F468 200D 1F9B2 ; fully-qualified # 👨‍🦲 man: bald +1F468 1F3FB 200D 1F9B2 ; fully-qualified # 👨🏻‍🦲 man: light skin tone, bald +1F468 1F3FC 200D 1F9B2 ; fully-qualified # 👨🏼‍🦲 man: medium-light skin tone, bald +1F468 1F3FD 200D 1F9B2 ; fully-qualified # 👨🏽‍🦲 man: medium skin tone, bald +1F468 1F3FE 200D 1F9B2 ; fully-qualified # 👨🏾‍🦲 man: medium-dark skin tone, bald +1F468 1F3FF 200D 1F9B2 ; fully-qualified # 👨🏿‍🦲 man: dark skin tone, bald +1F469 ; fully-qualified # 👩 woman +1F469 1F3FB ; fully-qualified # 👩🏻 woman: light skin tone +1F469 1F3FC ; fully-qualified # 👩🏼 woman: medium-light skin tone +1F469 1F3FD ; fully-qualified # 👩🏽 woman: medium skin tone +1F469 1F3FE ; fully-qualified # 👩🏾 woman: medium-dark skin tone +1F469 1F3FF ; fully-qualified # 👩🏿 woman: dark skin tone +1F471 200D 2640 FE0F ; fully-qualified # 👱‍♀️ woman: blond hair +1F471 200D 2640 ; minimally-qualified # 👱‍♀ woman: blond hair +1F471 1F3FB 200D 2640 FE0F ; fully-qualified # 👱🏻‍♀️ woman: light skin tone, blond hair +1F471 1F3FB 200D 2640 ; minimally-qualified # 👱🏻‍♀ woman: light skin tone, blond hair +1F471 1F3FC 200D 2640 FE0F ; fully-qualified # 👱🏼‍♀️ woman: medium-light skin tone, blond hair +1F471 1F3FC 200D 2640 ; minimally-qualified # 👱🏼‍♀ woman: medium-light skin tone, blond hair +1F471 1F3FD 200D 2640 FE0F ; fully-qualified # 👱🏽‍♀️ woman: medium skin tone, blond hair +1F471 1F3FD 200D 2640 ; minimally-qualified # 👱🏽‍♀ woman: medium skin tone, blond hair +1F471 1F3FE 200D 2640 FE0F ; fully-qualified # 👱🏾‍♀️ woman: medium-dark skin tone, blond hair +1F471 1F3FE 200D 2640 ; minimally-qualified # 👱🏾‍♀ woman: medium-dark skin tone, blond hair +1F471 1F3FF 200D 2640 FE0F ; fully-qualified # 👱🏿‍♀️ woman: dark skin tone, blond hair +1F471 1F3FF 200D 2640 ; minimally-qualified # 👱🏿‍♀ woman: dark skin tone, blond hair +1F469 200D 1F9B0 ; fully-qualified # 👩‍🦰 woman: red hair +1F469 1F3FB 200D 1F9B0 ; fully-qualified # 👩🏻‍🦰 woman: light skin tone, red hair +1F469 1F3FC 200D 1F9B0 ; fully-qualified # 👩🏼‍🦰 woman: medium-light skin tone, red hair +1F469 1F3FD 200D 1F9B0 ; fully-qualified # 👩🏽‍🦰 woman: medium skin tone, red hair +1F469 1F3FE 200D 1F9B0 ; fully-qualified # 👩🏾‍🦰 woman: medium-dark skin tone, red hair +1F469 1F3FF 200D 1F9B0 ; fully-qualified # 👩🏿‍🦰 woman: dark skin tone, red hair +1F469 200D 1F9B1 ; fully-qualified # 👩‍🦱 woman: curly hair +1F469 1F3FB 200D 1F9B1 ; fully-qualified # 👩🏻‍🦱 woman: light skin tone, curly hair +1F469 1F3FC 200D 1F9B1 ; fully-qualified # 👩🏼‍🦱 woman: medium-light skin tone, curly hair +1F469 1F3FD 200D 1F9B1 ; fully-qualified # 👩🏽‍🦱 woman: medium skin tone, curly hair +1F469 1F3FE 200D 1F9B1 ; fully-qualified # 👩🏾‍🦱 woman: medium-dark skin tone, curly hair +1F469 1F3FF 200D 1F9B1 ; fully-qualified # 👩🏿‍🦱 woman: dark skin tone, curly hair +1F469 200D 1F9B3 ; fully-qualified # 👩‍🦳 woman: white hair +1F469 1F3FB 200D 1F9B3 ; fully-qualified # 👩🏻‍🦳 woman: light skin tone, white hair +1F469 1F3FC 200D 1F9B3 ; fully-qualified # 👩🏼‍🦳 woman: medium-light skin tone, white hair +1F469 1F3FD 200D 1F9B3 ; fully-qualified # 👩🏽‍🦳 woman: medium skin tone, white hair +1F469 1F3FE 200D 1F9B3 ; fully-qualified # 👩🏾‍🦳 woman: medium-dark skin tone, white hair +1F469 1F3FF 200D 1F9B3 ; fully-qualified # 👩🏿‍🦳 woman: dark skin tone, white hair +1F469 200D 1F9B2 ; fully-qualified # 👩‍🦲 woman: bald +1F469 1F3FB 200D 1F9B2 ; fully-qualified # 👩🏻‍🦲 woman: light skin tone, bald +1F469 1F3FC 200D 1F9B2 ; fully-qualified # 👩🏼‍🦲 woman: medium-light skin tone, bald +1F469 1F3FD 200D 1F9B2 ; fully-qualified # 👩🏽‍🦲 woman: medium skin tone, bald +1F469 1F3FE 200D 1F9B2 ; fully-qualified # 👩🏾‍🦲 woman: medium-dark skin tone, bald +1F469 1F3FF 200D 1F9B2 ; fully-qualified # 👩🏿‍🦲 woman: dark skin tone, bald +1F9D3 ; fully-qualified # 🧓 older person +1F9D3 1F3FB ; fully-qualified # 🧓🏻 older person: light skin tone +1F9D3 1F3FC ; fully-qualified # 🧓🏼 older person: medium-light skin tone +1F9D3 1F3FD ; fully-qualified # 🧓🏽 older person: medium skin tone +1F9D3 1F3FE ; fully-qualified # 🧓🏾 older person: medium-dark skin tone +1F9D3 1F3FF ; fully-qualified # 🧓🏿 older person: dark skin tone +1F474 ; fully-qualified # 👴 old man +1F474 1F3FB ; fully-qualified # 👴🏻 old man: light skin tone +1F474 1F3FC ; fully-qualified # 👴🏼 old man: medium-light skin tone +1F474 1F3FD ; fully-qualified # 👴🏽 old man: medium skin tone +1F474 1F3FE ; fully-qualified # 👴🏾 old man: medium-dark skin tone +1F474 1F3FF ; fully-qualified # 👴🏿 old man: dark skin tone +1F475 ; fully-qualified # 👵 old woman +1F475 1F3FB ; fully-qualified # 👵🏻 old woman: light skin tone +1F475 1F3FC ; fully-qualified # 👵🏼 old woman: medium-light skin tone +1F475 1F3FD ; fully-qualified # 👵🏽 old woman: medium skin tone +1F475 1F3FE ; fully-qualified # 👵🏾 old woman: medium-dark skin tone +1F475 1F3FF ; fully-qualified # 👵🏿 old woman: dark skin tone + +# subgroup: person-gesture +1F64D ; fully-qualified # 🙍 person frowning +1F64D 1F3FB ; fully-qualified # 🙍🏻 person frowning: light skin tone +1F64D 1F3FC ; fully-qualified # 🙍🏼 person frowning: medium-light skin tone +1F64D 1F3FD ; fully-qualified # 🙍🏽 person frowning: medium skin tone +1F64D 1F3FE ; fully-qualified # 🙍🏾 person frowning: medium-dark skin tone +1F64D 1F3FF ; fully-qualified # 🙍🏿 person frowning: dark skin tone +1F64D 200D 2642 FE0F ; fully-qualified # 🙍‍♂️ man frowning +1F64D 200D 2642 ; minimally-qualified # 🙍‍♂ man frowning +1F64D 1F3FB 200D 2642 FE0F ; fully-qualified # 🙍🏻‍♂️ man frowning: light skin tone +1F64D 1F3FB 200D 2642 ; minimally-qualified # 🙍🏻‍♂ man frowning: light skin tone +1F64D 1F3FC 200D 2642 FE0F ; fully-qualified # 🙍🏼‍♂️ man frowning: medium-light skin tone +1F64D 1F3FC 200D 2642 ; minimally-qualified # 🙍🏼‍♂ man frowning: medium-light skin tone +1F64D 1F3FD 200D 2642 FE0F ; fully-qualified # 🙍🏽‍♂️ man frowning: medium skin tone +1F64D 1F3FD 200D 2642 ; minimally-qualified # 🙍🏽‍♂ man frowning: medium skin tone +1F64D 1F3FE 200D 2642 FE0F ; fully-qualified # 🙍🏾‍♂️ man frowning: medium-dark skin tone +1F64D 1F3FE 200D 2642 ; minimally-qualified # 🙍🏾‍♂ man frowning: medium-dark skin tone +1F64D 1F3FF 200D 2642 FE0F ; fully-qualified # 🙍🏿‍♂️ man frowning: dark skin tone +1F64D 1F3FF 200D 2642 ; minimally-qualified # 🙍🏿‍♂ man frowning: dark skin tone +1F64D 200D 2640 FE0F ; fully-qualified # 🙍‍♀️ woman frowning +1F64D 200D 2640 ; minimally-qualified # 🙍‍♀ woman frowning +1F64D 1F3FB 200D 2640 FE0F ; fully-qualified # 🙍🏻‍♀️ woman frowning: light skin tone +1F64D 1F3FB 200D 2640 ; minimally-qualified # 🙍🏻‍♀ woman frowning: light skin tone +1F64D 1F3FC 200D 2640 FE0F ; fully-qualified # 🙍🏼‍♀️ woman frowning: medium-light skin tone +1F64D 1F3FC 200D 2640 ; minimally-qualified # 🙍🏼‍♀ woman frowning: medium-light skin tone +1F64D 1F3FD 200D 2640 FE0F ; fully-qualified # 🙍🏽‍♀️ woman frowning: medium skin tone +1F64D 1F3FD 200D 2640 ; minimally-qualified # 🙍🏽‍♀ woman frowning: medium skin tone +1F64D 1F3FE 200D 2640 FE0F ; fully-qualified # 🙍🏾‍♀️ woman frowning: medium-dark skin tone +1F64D 1F3FE 200D 2640 ; minimally-qualified # 🙍🏾‍♀ woman frowning: medium-dark skin tone +1F64D 1F3FF 200D 2640 FE0F ; fully-qualified # 🙍🏿‍♀️ woman frowning: dark skin tone +1F64D 1F3FF 200D 2640 ; minimally-qualified # 🙍🏿‍♀ woman frowning: dark skin tone +1F64E ; fully-qualified # 🙎 person pouting +1F64E 1F3FB ; fully-qualified # 🙎🏻 person pouting: light skin tone +1F64E 1F3FC ; fully-qualified # 🙎🏼 person pouting: medium-light skin tone +1F64E 1F3FD ; fully-qualified # 🙎🏽 person pouting: medium skin tone +1F64E 1F3FE ; fully-qualified # 🙎🏾 person pouting: medium-dark skin tone +1F64E 1F3FF ; fully-qualified # 🙎🏿 person pouting: dark skin tone +1F64E 200D 2642 FE0F ; fully-qualified # 🙎‍♂️ man pouting +1F64E 200D 2642 ; minimally-qualified # 🙎‍♂ man pouting +1F64E 1F3FB 200D 2642 FE0F ; fully-qualified # 🙎🏻‍♂️ man pouting: light skin tone +1F64E 1F3FB 200D 2642 ; minimally-qualified # 🙎🏻‍♂ man pouting: light skin tone +1F64E 1F3FC 200D 2642 FE0F ; fully-qualified # 🙎🏼‍♂️ man pouting: medium-light skin tone +1F64E 1F3FC 200D 2642 ; minimally-qualified # 🙎🏼‍♂ man pouting: medium-light skin tone +1F64E 1F3FD 200D 2642 FE0F ; fully-qualified # 🙎🏽‍♂️ man pouting: medium skin tone +1F64E 1F3FD 200D 2642 ; minimally-qualified # 🙎🏽‍♂ man pouting: medium skin tone +1F64E 1F3FE 200D 2642 FE0F ; fully-qualified # 🙎🏾‍♂️ man pouting: medium-dark skin tone +1F64E 1F3FE 200D 2642 ; minimally-qualified # 🙎🏾‍♂ man pouting: medium-dark skin tone +1F64E 1F3FF 200D 2642 FE0F ; fully-qualified # 🙎🏿‍♂️ man pouting: dark skin tone +1F64E 1F3FF 200D 2642 ; minimally-qualified # 🙎🏿‍♂ man pouting: dark skin tone +1F64E 200D 2640 FE0F ; fully-qualified # 🙎‍♀️ woman pouting +1F64E 200D 2640 ; minimally-qualified # 🙎‍♀ woman pouting +1F64E 1F3FB 200D 2640 FE0F ; fully-qualified # 🙎🏻‍♀️ woman pouting: light skin tone +1F64E 1F3FB 200D 2640 ; minimally-qualified # 🙎🏻‍♀ woman pouting: light skin tone +1F64E 1F3FC 200D 2640 FE0F ; fully-qualified # 🙎🏼‍♀️ woman pouting: medium-light skin tone +1F64E 1F3FC 200D 2640 ; minimally-qualified # 🙎🏼‍♀ woman pouting: medium-light skin tone +1F64E 1F3FD 200D 2640 FE0F ; fully-qualified # 🙎🏽‍♀️ woman pouting: medium skin tone +1F64E 1F3FD 200D 2640 ; minimally-qualified # 🙎🏽‍♀ woman pouting: medium skin tone +1F64E 1F3FE 200D 2640 FE0F ; fully-qualified # 🙎🏾‍♀️ woman pouting: medium-dark skin tone +1F64E 1F3FE 200D 2640 ; minimally-qualified # 🙎🏾‍♀ woman pouting: medium-dark skin tone +1F64E 1F3FF 200D 2640 FE0F ; fully-qualified # 🙎🏿‍♀️ woman pouting: dark skin tone +1F64E 1F3FF 200D 2640 ; minimally-qualified # 🙎🏿‍♀ woman pouting: dark skin tone +1F645 ; fully-qualified # 🙅 person gesturing NO +1F645 1F3FB ; fully-qualified # 🙅🏻 person gesturing NO: light skin tone +1F645 1F3FC ; fully-qualified # 🙅🏼 person gesturing NO: medium-light skin tone +1F645 1F3FD ; fully-qualified # 🙅🏽 person gesturing NO: medium skin tone +1F645 1F3FE ; fully-qualified # 🙅🏾 person gesturing NO: medium-dark skin tone +1F645 1F3FF ; fully-qualified # 🙅🏿 person gesturing NO: dark skin tone +1F645 200D 2642 FE0F ; fully-qualified # 🙅‍♂️ man gesturing NO +1F645 200D 2642 ; minimally-qualified # 🙅‍♂ man gesturing NO +1F645 1F3FB 200D 2642 FE0F ; fully-qualified # 🙅🏻‍♂️ man gesturing NO: light skin tone +1F645 1F3FB 200D 2642 ; minimally-qualified # 🙅🏻‍♂ man gesturing NO: light skin tone +1F645 1F3FC 200D 2642 FE0F ; fully-qualified # 🙅🏼‍♂️ man gesturing NO: medium-light skin tone +1F645 1F3FC 200D 2642 ; minimally-qualified # 🙅🏼‍♂ man gesturing NO: medium-light skin tone +1F645 1F3FD 200D 2642 FE0F ; fully-qualified # 🙅🏽‍♂️ man gesturing NO: medium skin tone +1F645 1F3FD 200D 2642 ; minimally-qualified # 🙅🏽‍♂ man gesturing NO: medium skin tone +1F645 1F3FE 200D 2642 FE0F ; fully-qualified # 🙅🏾‍♂️ man gesturing NO: medium-dark skin tone +1F645 1F3FE 200D 2642 ; minimally-qualified # 🙅🏾‍♂ man gesturing NO: medium-dark skin tone +1F645 1F3FF 200D 2642 FE0F ; fully-qualified # 🙅🏿‍♂️ man gesturing NO: dark skin tone +1F645 1F3FF 200D 2642 ; minimally-qualified # 🙅🏿‍♂ man gesturing NO: dark skin tone +1F645 200D 2640 FE0F ; fully-qualified # 🙅‍♀️ woman gesturing NO +1F645 200D 2640 ; minimally-qualified # 🙅‍♀ woman gesturing NO +1F645 1F3FB 200D 2640 FE0F ; fully-qualified # 🙅🏻‍♀️ woman gesturing NO: light skin tone +1F645 1F3FB 200D 2640 ; minimally-qualified # 🙅🏻‍♀ woman gesturing NO: light skin tone +1F645 1F3FC 200D 2640 FE0F ; fully-qualified # 🙅🏼‍♀️ woman gesturing NO: medium-light skin tone +1F645 1F3FC 200D 2640 ; minimally-qualified # 🙅🏼‍♀ woman gesturing NO: medium-light skin tone +1F645 1F3FD 200D 2640 FE0F ; fully-qualified # 🙅🏽‍♀️ woman gesturing NO: medium skin tone +1F645 1F3FD 200D 2640 ; minimally-qualified # 🙅🏽‍♀ woman gesturing NO: medium skin tone +1F645 1F3FE 200D 2640 FE0F ; fully-qualified # 🙅🏾‍♀️ woman gesturing NO: medium-dark skin tone +1F645 1F3FE 200D 2640 ; minimally-qualified # 🙅🏾‍♀ woman gesturing NO: medium-dark skin tone +1F645 1F3FF 200D 2640 FE0F ; fully-qualified # 🙅🏿‍♀️ woman gesturing NO: dark skin tone +1F645 1F3FF 200D 2640 ; minimally-qualified # 🙅🏿‍♀ woman gesturing NO: dark skin tone +1F646 ; fully-qualified # 🙆 person gesturing OK +1F646 1F3FB ; fully-qualified # 🙆🏻 person gesturing OK: light skin tone +1F646 1F3FC ; fully-qualified # 🙆🏼 person gesturing OK: medium-light skin tone +1F646 1F3FD ; fully-qualified # 🙆🏽 person gesturing OK: medium skin tone +1F646 1F3FE ; fully-qualified # 🙆🏾 person gesturing OK: medium-dark skin tone +1F646 1F3FF ; fully-qualified # 🙆🏿 person gesturing OK: dark skin tone +1F646 200D 2642 FE0F ; fully-qualified # 🙆‍♂️ man gesturing OK +1F646 200D 2642 ; minimally-qualified # 🙆‍♂ man gesturing OK +1F646 1F3FB 200D 2642 FE0F ; fully-qualified # 🙆🏻‍♂️ man gesturing OK: light skin tone +1F646 1F3FB 200D 2642 ; minimally-qualified # 🙆🏻‍♂ man gesturing OK: light skin tone +1F646 1F3FC 200D 2642 FE0F ; fully-qualified # 🙆🏼‍♂️ man gesturing OK: medium-light skin tone +1F646 1F3FC 200D 2642 ; minimally-qualified # 🙆🏼‍♂ man gesturing OK: medium-light skin tone +1F646 1F3FD 200D 2642 FE0F ; fully-qualified # 🙆🏽‍♂️ man gesturing OK: medium skin tone +1F646 1F3FD 200D 2642 ; minimally-qualified # 🙆🏽‍♂ man gesturing OK: medium skin tone +1F646 1F3FE 200D 2642 FE0F ; fully-qualified # 🙆🏾‍♂️ man gesturing OK: medium-dark skin tone +1F646 1F3FE 200D 2642 ; minimally-qualified # 🙆🏾‍♂ man gesturing OK: medium-dark skin tone +1F646 1F3FF 200D 2642 FE0F ; fully-qualified # 🙆🏿‍♂️ man gesturing OK: dark skin tone +1F646 1F3FF 200D 2642 ; minimally-qualified # 🙆🏿‍♂ man gesturing OK: dark skin tone +1F646 200D 2640 FE0F ; fully-qualified # 🙆‍♀️ woman gesturing OK +1F646 200D 2640 ; minimally-qualified # 🙆‍♀ woman gesturing OK +1F646 1F3FB 200D 2640 FE0F ; fully-qualified # 🙆🏻‍♀️ woman gesturing OK: light skin tone +1F646 1F3FB 200D 2640 ; minimally-qualified # 🙆🏻‍♀ woman gesturing OK: light skin tone +1F646 1F3FC 200D 2640 FE0F ; fully-qualified # 🙆🏼‍♀️ woman gesturing OK: medium-light skin tone +1F646 1F3FC 200D 2640 ; minimally-qualified # 🙆🏼‍♀ woman gesturing OK: medium-light skin tone +1F646 1F3FD 200D 2640 FE0F ; fully-qualified # 🙆🏽‍♀️ woman gesturing OK: medium skin tone +1F646 1F3FD 200D 2640 ; minimally-qualified # 🙆🏽‍♀ woman gesturing OK: medium skin tone +1F646 1F3FE 200D 2640 FE0F ; fully-qualified # 🙆🏾‍♀️ woman gesturing OK: medium-dark skin tone +1F646 1F3FE 200D 2640 ; minimally-qualified # 🙆🏾‍♀ woman gesturing OK: medium-dark skin tone +1F646 1F3FF 200D 2640 FE0F ; fully-qualified # 🙆🏿‍♀️ woman gesturing OK: dark skin tone +1F646 1F3FF 200D 2640 ; minimally-qualified # 🙆🏿‍♀ woman gesturing OK: dark skin tone +1F481 ; fully-qualified # 💁 person tipping hand +1F481 1F3FB ; fully-qualified # 💁🏻 person tipping hand: light skin tone +1F481 1F3FC ; fully-qualified # 💁🏼 person tipping hand: medium-light skin tone +1F481 1F3FD ; fully-qualified # 💁🏽 person tipping hand: medium skin tone +1F481 1F3FE ; fully-qualified # 💁🏾 person tipping hand: medium-dark skin tone +1F481 1F3FF ; fully-qualified # 💁🏿 person tipping hand: dark skin tone +1F481 200D 2642 FE0F ; fully-qualified # 💁‍♂️ man tipping hand +1F481 200D 2642 ; minimally-qualified # 💁‍♂ man tipping hand +1F481 1F3FB 200D 2642 FE0F ; fully-qualified # 💁🏻‍♂️ man tipping hand: light skin tone +1F481 1F3FB 200D 2642 ; minimally-qualified # 💁🏻‍♂ man tipping hand: light skin tone +1F481 1F3FC 200D 2642 FE0F ; fully-qualified # 💁🏼‍♂️ man tipping hand: medium-light skin tone +1F481 1F3FC 200D 2642 ; minimally-qualified # 💁🏼‍♂ man tipping hand: medium-light skin tone +1F481 1F3FD 200D 2642 FE0F ; fully-qualified # 💁🏽‍♂️ man tipping hand: medium skin tone +1F481 1F3FD 200D 2642 ; minimally-qualified # 💁🏽‍♂ man tipping hand: medium skin tone +1F481 1F3FE 200D 2642 FE0F ; fully-qualified # 💁🏾‍♂️ man tipping hand: medium-dark skin tone +1F481 1F3FE 200D 2642 ; minimally-qualified # 💁🏾‍♂ man tipping hand: medium-dark skin tone +1F481 1F3FF 200D 2642 FE0F ; fully-qualified # 💁🏿‍♂️ man tipping hand: dark skin tone +1F481 1F3FF 200D 2642 ; minimally-qualified # 💁🏿‍♂ man tipping hand: dark skin tone +1F481 200D 2640 FE0F ; fully-qualified # 💁‍♀️ woman tipping hand +1F481 200D 2640 ; minimally-qualified # 💁‍♀ woman tipping hand +1F481 1F3FB 200D 2640 FE0F ; fully-qualified # 💁🏻‍♀️ woman tipping hand: light skin tone +1F481 1F3FB 200D 2640 ; minimally-qualified # 💁🏻‍♀ woman tipping hand: light skin tone +1F481 1F3FC 200D 2640 FE0F ; fully-qualified # 💁🏼‍♀️ woman tipping hand: medium-light skin tone +1F481 1F3FC 200D 2640 ; minimally-qualified # 💁🏼‍♀ woman tipping hand: medium-light skin tone +1F481 1F3FD 200D 2640 FE0F ; fully-qualified # 💁🏽‍♀️ woman tipping hand: medium skin tone +1F481 1F3FD 200D 2640 ; minimally-qualified # 💁🏽‍♀ woman tipping hand: medium skin tone +1F481 1F3FE 200D 2640 FE0F ; fully-qualified # 💁🏾‍♀️ woman tipping hand: medium-dark skin tone +1F481 1F3FE 200D 2640 ; minimally-qualified # 💁🏾‍♀ woman tipping hand: medium-dark skin tone +1F481 1F3FF 200D 2640 FE0F ; fully-qualified # 💁🏿‍♀️ woman tipping hand: dark skin tone +1F481 1F3FF 200D 2640 ; minimally-qualified # 💁🏿‍♀ woman tipping hand: dark skin tone +1F64B ; fully-qualified # 🙋 person raising hand +1F64B 1F3FB ; fully-qualified # 🙋🏻 person raising hand: light skin tone +1F64B 1F3FC ; fully-qualified # 🙋🏼 person raising hand: medium-light skin tone +1F64B 1F3FD ; fully-qualified # 🙋🏽 person raising hand: medium skin tone +1F64B 1F3FE ; fully-qualified # 🙋🏾 person raising hand: medium-dark skin tone +1F64B 1F3FF ; fully-qualified # 🙋🏿 person raising hand: dark skin tone +1F64B 200D 2642 FE0F ; fully-qualified # 🙋‍♂️ man raising hand +1F64B 200D 2642 ; minimally-qualified # 🙋‍♂ man raising hand +1F64B 1F3FB 200D 2642 FE0F ; fully-qualified # 🙋🏻‍♂️ man raising hand: light skin tone +1F64B 1F3FB 200D 2642 ; minimally-qualified # 🙋🏻‍♂ man raising hand: light skin tone +1F64B 1F3FC 200D 2642 FE0F ; fully-qualified # 🙋🏼‍♂️ man raising hand: medium-light skin tone +1F64B 1F3FC 200D 2642 ; minimally-qualified # 🙋🏼‍♂ man raising hand: medium-light skin tone +1F64B 1F3FD 200D 2642 FE0F ; fully-qualified # 🙋🏽‍♂️ man raising hand: medium skin tone +1F64B 1F3FD 200D 2642 ; minimally-qualified # 🙋🏽‍♂ man raising hand: medium skin tone +1F64B 1F3FE 200D 2642 FE0F ; fully-qualified # 🙋🏾‍♂️ man raising hand: medium-dark skin tone +1F64B 1F3FE 200D 2642 ; minimally-qualified # 🙋🏾‍♂ man raising hand: medium-dark skin tone +1F64B 1F3FF 200D 2642 FE0F ; fully-qualified # 🙋🏿‍♂️ man raising hand: dark skin tone +1F64B 1F3FF 200D 2642 ; minimally-qualified # 🙋🏿‍♂ man raising hand: dark skin tone +1F64B 200D 2640 FE0F ; fully-qualified # 🙋‍♀️ woman raising hand +1F64B 200D 2640 ; minimally-qualified # 🙋‍♀ woman raising hand +1F64B 1F3FB 200D 2640 FE0F ; fully-qualified # 🙋🏻‍♀️ woman raising hand: light skin tone +1F64B 1F3FB 200D 2640 ; minimally-qualified # 🙋🏻‍♀ woman raising hand: light skin tone +1F64B 1F3FC 200D 2640 FE0F ; fully-qualified # 🙋🏼‍♀️ woman raising hand: medium-light skin tone +1F64B 1F3FC 200D 2640 ; minimally-qualified # 🙋🏼‍♀ woman raising hand: medium-light skin tone +1F64B 1F3FD 200D 2640 FE0F ; fully-qualified # 🙋🏽‍♀️ woman raising hand: medium skin tone +1F64B 1F3FD 200D 2640 ; minimally-qualified # 🙋🏽‍♀ woman raising hand: medium skin tone +1F64B 1F3FE 200D 2640 FE0F ; fully-qualified # 🙋🏾‍♀️ woman raising hand: medium-dark skin tone +1F64B 1F3FE 200D 2640 ; minimally-qualified # 🙋🏾‍♀ woman raising hand: medium-dark skin tone +1F64B 1F3FF 200D 2640 FE0F ; fully-qualified # 🙋🏿‍♀️ woman raising hand: dark skin tone +1F64B 1F3FF 200D 2640 ; minimally-qualified # 🙋🏿‍♀ woman raising hand: dark skin tone +1F9CF ; fully-qualified # 🧏 deaf person +1F9CF 1F3FB ; fully-qualified # 🧏🏻 deaf person: light skin tone +1F9CF 1F3FC ; fully-qualified # 🧏🏼 deaf person: medium-light skin tone +1F9CF 1F3FD ; fully-qualified # 🧏🏽 deaf person: medium skin tone +1F9CF 1F3FE ; fully-qualified # 🧏🏾 deaf person: medium-dark skin tone +1F9CF 1F3FF ; fully-qualified # 🧏🏿 deaf person: dark skin tone +1F9CF 200D 2642 FE0F ; fully-qualified # 🧏‍♂️ deaf man +1F9CF 200D 2642 ; minimally-qualified # 🧏‍♂ deaf man +1F9CF 1F3FB 200D 2642 FE0F ; fully-qualified # 🧏🏻‍♂️ deaf man: light skin tone +1F9CF 1F3FB 200D 2642 ; minimally-qualified # 🧏🏻‍♂ deaf man: light skin tone +1F9CF 1F3FC 200D 2642 FE0F ; fully-qualified # 🧏🏼‍♂️ deaf man: medium-light skin tone +1F9CF 1F3FC 200D 2642 ; minimally-qualified # 🧏🏼‍♂ deaf man: medium-light skin tone +1F9CF 1F3FD 200D 2642 FE0F ; fully-qualified # 🧏🏽‍♂️ deaf man: medium skin tone +1F9CF 1F3FD 200D 2642 ; minimally-qualified # 🧏🏽‍♂ deaf man: medium skin tone +1F9CF 1F3FE 200D 2642 FE0F ; fully-qualified # 🧏🏾‍♂️ deaf man: medium-dark skin tone +1F9CF 1F3FE 200D 2642 ; minimally-qualified # 🧏🏾‍♂ deaf man: medium-dark skin tone +1F9CF 1F3FF 200D 2642 FE0F ; fully-qualified # 🧏🏿‍♂️ deaf man: dark skin tone +1F9CF 1F3FF 200D 2642 ; minimally-qualified # 🧏🏿‍♂ deaf man: dark skin tone +1F9CF 200D 2640 FE0F ; fully-qualified # 🧏‍♀️ deaf woman +1F9CF 200D 2640 ; minimally-qualified # 🧏‍♀ deaf woman +1F9CF 1F3FB 200D 2640 FE0F ; fully-qualified # 🧏🏻‍♀️ deaf woman: light skin tone +1F9CF 1F3FB 200D 2640 ; minimally-qualified # 🧏🏻‍♀ deaf woman: light skin tone +1F9CF 1F3FC 200D 2640 FE0F ; fully-qualified # 🧏🏼‍♀️ deaf woman: medium-light skin tone +1F9CF 1F3FC 200D 2640 ; minimally-qualified # 🧏🏼‍♀ deaf woman: medium-light skin tone +1F9CF 1F3FD 200D 2640 FE0F ; fully-qualified # 🧏🏽‍♀️ deaf woman: medium skin tone +1F9CF 1F3FD 200D 2640 ; minimally-qualified # 🧏🏽‍♀ deaf woman: medium skin tone +1F9CF 1F3FE 200D 2640 FE0F ; fully-qualified # 🧏🏾‍♀️ deaf woman: medium-dark skin tone +1F9CF 1F3FE 200D 2640 ; minimally-qualified # 🧏🏾‍♀ deaf woman: medium-dark skin tone +1F9CF 1F3FF 200D 2640 FE0F ; fully-qualified # 🧏🏿‍♀️ deaf woman: dark skin tone +1F9CF 1F3FF 200D 2640 ; minimally-qualified # 🧏🏿‍♀ deaf woman: dark skin tone +1F647 ; fully-qualified # 🙇 person bowing +1F647 1F3FB ; fully-qualified # 🙇🏻 person bowing: light skin tone +1F647 1F3FC ; fully-qualified # 🙇🏼 person bowing: medium-light skin tone +1F647 1F3FD ; fully-qualified # 🙇🏽 person bowing: medium skin tone +1F647 1F3FE ; fully-qualified # 🙇🏾 person bowing: medium-dark skin tone +1F647 1F3FF ; fully-qualified # 🙇🏿 person bowing: dark skin tone +1F647 200D 2642 FE0F ; fully-qualified # 🙇‍♂️ man bowing +1F647 200D 2642 ; minimally-qualified # 🙇‍♂ man bowing +1F647 1F3FB 200D 2642 FE0F ; fully-qualified # 🙇🏻‍♂️ man bowing: light skin tone +1F647 1F3FB 200D 2642 ; minimally-qualified # 🙇🏻‍♂ man bowing: light skin tone +1F647 1F3FC 200D 2642 FE0F ; fully-qualified # 🙇🏼‍♂️ man bowing: medium-light skin tone +1F647 1F3FC 200D 2642 ; minimally-qualified # 🙇🏼‍♂ man bowing: medium-light skin tone +1F647 1F3FD 200D 2642 FE0F ; fully-qualified # 🙇🏽‍♂️ man bowing: medium skin tone +1F647 1F3FD 200D 2642 ; minimally-qualified # 🙇🏽‍♂ man bowing: medium skin tone +1F647 1F3FE 200D 2642 FE0F ; fully-qualified # 🙇🏾‍♂️ man bowing: medium-dark skin tone +1F647 1F3FE 200D 2642 ; minimally-qualified # 🙇🏾‍♂ man bowing: medium-dark skin tone +1F647 1F3FF 200D 2642 FE0F ; fully-qualified # 🙇🏿‍♂️ man bowing: dark skin tone +1F647 1F3FF 200D 2642 ; minimally-qualified # 🙇🏿‍♂ man bowing: dark skin tone +1F647 200D 2640 FE0F ; fully-qualified # 🙇‍♀️ woman bowing +1F647 200D 2640 ; minimally-qualified # 🙇‍♀ woman bowing +1F647 1F3FB 200D 2640 FE0F ; fully-qualified # 🙇🏻‍♀️ woman bowing: light skin tone +1F647 1F3FB 200D 2640 ; minimally-qualified # 🙇🏻‍♀ woman bowing: light skin tone +1F647 1F3FC 200D 2640 FE0F ; fully-qualified # 🙇🏼‍♀️ woman bowing: medium-light skin tone +1F647 1F3FC 200D 2640 ; minimally-qualified # 🙇🏼‍♀ woman bowing: medium-light skin tone +1F647 1F3FD 200D 2640 FE0F ; fully-qualified # 🙇🏽‍♀️ woman bowing: medium skin tone +1F647 1F3FD 200D 2640 ; minimally-qualified # 🙇🏽‍♀ woman bowing: medium skin tone +1F647 1F3FE 200D 2640 FE0F ; fully-qualified # 🙇🏾‍♀️ woman bowing: medium-dark skin tone +1F647 1F3FE 200D 2640 ; minimally-qualified # 🙇🏾‍♀ woman bowing: medium-dark skin tone +1F647 1F3FF 200D 2640 FE0F ; fully-qualified # 🙇🏿‍♀️ woman bowing: dark skin tone +1F647 1F3FF 200D 2640 ; minimally-qualified # 🙇🏿‍♀ woman bowing: dark skin tone +1F926 ; fully-qualified # 🤦 person facepalming +1F926 1F3FB ; fully-qualified # 🤦🏻 person facepalming: light skin tone +1F926 1F3FC ; fully-qualified # 🤦🏼 person facepalming: medium-light skin tone +1F926 1F3FD ; fully-qualified # 🤦🏽 person facepalming: medium skin tone +1F926 1F3FE ; fully-qualified # 🤦🏾 person facepalming: medium-dark skin tone +1F926 1F3FF ; fully-qualified # 🤦🏿 person facepalming: dark skin tone +1F926 200D 2642 FE0F ; fully-qualified # 🤦‍♂️ man facepalming +1F926 200D 2642 ; minimally-qualified # 🤦‍♂ man facepalming +1F926 1F3FB 200D 2642 FE0F ; fully-qualified # 🤦🏻‍♂️ man facepalming: light skin tone +1F926 1F3FB 200D 2642 ; minimally-qualified # 🤦🏻‍♂ man facepalming: light skin tone +1F926 1F3FC 200D 2642 FE0F ; fully-qualified # 🤦🏼‍♂️ man facepalming: medium-light skin tone +1F926 1F3FC 200D 2642 ; minimally-qualified # 🤦🏼‍♂ man facepalming: medium-light skin tone +1F926 1F3FD 200D 2642 FE0F ; fully-qualified # 🤦🏽‍♂️ man facepalming: medium skin tone +1F926 1F3FD 200D 2642 ; minimally-qualified # 🤦🏽‍♂ man facepalming: medium skin tone +1F926 1F3FE 200D 2642 FE0F ; fully-qualified # 🤦🏾‍♂️ man facepalming: medium-dark skin tone +1F926 1F3FE 200D 2642 ; minimally-qualified # 🤦🏾‍♂ man facepalming: medium-dark skin tone +1F926 1F3FF 200D 2642 FE0F ; fully-qualified # 🤦🏿‍♂️ man facepalming: dark skin tone +1F926 1F3FF 200D 2642 ; minimally-qualified # 🤦🏿‍♂ man facepalming: dark skin tone +1F926 200D 2640 FE0F ; fully-qualified # 🤦‍♀️ woman facepalming +1F926 200D 2640 ; minimally-qualified # 🤦‍♀ woman facepalming +1F926 1F3FB 200D 2640 FE0F ; fully-qualified # 🤦🏻‍♀️ woman facepalming: light skin tone +1F926 1F3FB 200D 2640 ; minimally-qualified # 🤦🏻‍♀ woman facepalming: light skin tone +1F926 1F3FC 200D 2640 FE0F ; fully-qualified # 🤦🏼‍♀️ woman facepalming: medium-light skin tone +1F926 1F3FC 200D 2640 ; minimally-qualified # 🤦🏼‍♀ woman facepalming: medium-light skin tone +1F926 1F3FD 200D 2640 FE0F ; fully-qualified # 🤦🏽‍♀️ woman facepalming: medium skin tone +1F926 1F3FD 200D 2640 ; minimally-qualified # 🤦🏽‍♀ woman facepalming: medium skin tone +1F926 1F3FE 200D 2640 FE0F ; fully-qualified # 🤦🏾‍♀️ woman facepalming: medium-dark skin tone +1F926 1F3FE 200D 2640 ; minimally-qualified # 🤦🏾‍♀ woman facepalming: medium-dark skin tone +1F926 1F3FF 200D 2640 FE0F ; fully-qualified # 🤦🏿‍♀️ woman facepalming: dark skin tone +1F926 1F3FF 200D 2640 ; minimally-qualified # 🤦🏿‍♀ woman facepalming: dark skin tone +1F937 ; fully-qualified # 🤷 person shrugging +1F937 1F3FB ; fully-qualified # 🤷🏻 person shrugging: light skin tone +1F937 1F3FC ; fully-qualified # 🤷🏼 person shrugging: medium-light skin tone +1F937 1F3FD ; fully-qualified # 🤷🏽 person shrugging: medium skin tone +1F937 1F3FE ; fully-qualified # 🤷🏾 person shrugging: medium-dark skin tone +1F937 1F3FF ; fully-qualified # 🤷🏿 person shrugging: dark skin tone +1F937 200D 2642 FE0F ; fully-qualified # 🤷‍♂️ man shrugging +1F937 200D 2642 ; minimally-qualified # 🤷‍♂ man shrugging +1F937 1F3FB 200D 2642 FE0F ; fully-qualified # 🤷🏻‍♂️ man shrugging: light skin tone +1F937 1F3FB 200D 2642 ; minimally-qualified # 🤷🏻‍♂ man shrugging: light skin tone +1F937 1F3FC 200D 2642 FE0F ; fully-qualified # 🤷🏼‍♂️ man shrugging: medium-light skin tone +1F937 1F3FC 200D 2642 ; minimally-qualified # 🤷🏼‍♂ man shrugging: medium-light skin tone +1F937 1F3FD 200D 2642 FE0F ; fully-qualified # 🤷🏽‍♂️ man shrugging: medium skin tone +1F937 1F3FD 200D 2642 ; minimally-qualified # 🤷🏽‍♂ man shrugging: medium skin tone +1F937 1F3FE 200D 2642 FE0F ; fully-qualified # 🤷🏾‍♂️ man shrugging: medium-dark skin tone +1F937 1F3FE 200D 2642 ; minimally-qualified # 🤷🏾‍♂ man shrugging: medium-dark skin tone +1F937 1F3FF 200D 2642 FE0F ; fully-qualified # 🤷🏿‍♂️ man shrugging: dark skin tone +1F937 1F3FF 200D 2642 ; minimally-qualified # 🤷🏿‍♂ man shrugging: dark skin tone +1F937 200D 2640 FE0F ; fully-qualified # 🤷‍♀️ woman shrugging +1F937 200D 2640 ; minimally-qualified # 🤷‍♀ woman shrugging +1F937 1F3FB 200D 2640 FE0F ; fully-qualified # 🤷🏻‍♀️ woman shrugging: light skin tone +1F937 1F3FB 200D 2640 ; minimally-qualified # 🤷🏻‍♀ woman shrugging: light skin tone +1F937 1F3FC 200D 2640 FE0F ; fully-qualified # 🤷🏼‍♀️ woman shrugging: medium-light skin tone +1F937 1F3FC 200D 2640 ; minimally-qualified # 🤷🏼‍♀ woman shrugging: medium-light skin tone +1F937 1F3FD 200D 2640 FE0F ; fully-qualified # 🤷🏽‍♀️ woman shrugging: medium skin tone +1F937 1F3FD 200D 2640 ; minimally-qualified # 🤷🏽‍♀ woman shrugging: medium skin tone +1F937 1F3FE 200D 2640 FE0F ; fully-qualified # 🤷🏾‍♀️ woman shrugging: medium-dark skin tone +1F937 1F3FE 200D 2640 ; minimally-qualified # 🤷🏾‍♀ woman shrugging: medium-dark skin tone +1F937 1F3FF 200D 2640 FE0F ; fully-qualified # 🤷🏿‍♀️ woman shrugging: dark skin tone +1F937 1F3FF 200D 2640 ; minimally-qualified # 🤷🏿‍♀ woman shrugging: dark skin tone + +# subgroup: person-role +1F468 200D 2695 FE0F ; fully-qualified # 👨‍⚕️ man health worker +1F468 200D 2695 ; minimally-qualified # 👨‍⚕ man health worker +1F468 1F3FB 200D 2695 FE0F ; fully-qualified # 👨🏻‍⚕️ man health worker: light skin tone +1F468 1F3FB 200D 2695 ; minimally-qualified # 👨🏻‍⚕ man health worker: light skin tone +1F468 1F3FC 200D 2695 FE0F ; fully-qualified # 👨🏼‍⚕️ man health worker: medium-light skin tone +1F468 1F3FC 200D 2695 ; minimally-qualified # 👨🏼‍⚕ man health worker: medium-light skin tone +1F468 1F3FD 200D 2695 FE0F ; fully-qualified # 👨🏽‍⚕️ man health worker: medium skin tone +1F468 1F3FD 200D 2695 ; minimally-qualified # 👨🏽‍⚕ man health worker: medium skin tone +1F468 1F3FE 200D 2695 FE0F ; fully-qualified # 👨🏾‍⚕️ man health worker: medium-dark skin tone +1F468 1F3FE 200D 2695 ; minimally-qualified # 👨🏾‍⚕ man health worker: medium-dark skin tone +1F468 1F3FF 200D 2695 FE0F ; fully-qualified # 👨🏿‍⚕️ man health worker: dark skin tone +1F468 1F3FF 200D 2695 ; minimally-qualified # 👨🏿‍⚕ man health worker: dark skin tone +1F469 200D 2695 FE0F ; fully-qualified # 👩‍⚕️ woman health worker +1F469 200D 2695 ; minimally-qualified # 👩‍⚕ woman health worker +1F469 1F3FB 200D 2695 FE0F ; fully-qualified # 👩🏻‍⚕️ woman health worker: light skin tone +1F469 1F3FB 200D 2695 ; minimally-qualified # 👩🏻‍⚕ woman health worker: light skin tone +1F469 1F3FC 200D 2695 FE0F ; fully-qualified # 👩🏼‍⚕️ woman health worker: medium-light skin tone +1F469 1F3FC 200D 2695 ; minimally-qualified # 👩🏼‍⚕ woman health worker: medium-light skin tone +1F469 1F3FD 200D 2695 FE0F ; fully-qualified # 👩🏽‍⚕️ woman health worker: medium skin tone +1F469 1F3FD 200D 2695 ; minimally-qualified # 👩🏽‍⚕ woman health worker: medium skin tone +1F469 1F3FE 200D 2695 FE0F ; fully-qualified # 👩🏾‍⚕️ woman health worker: medium-dark skin tone +1F469 1F3FE 200D 2695 ; minimally-qualified # 👩🏾‍⚕ woman health worker: medium-dark skin tone +1F469 1F3FF 200D 2695 FE0F ; fully-qualified # 👩🏿‍⚕️ woman health worker: dark skin tone +1F469 1F3FF 200D 2695 ; minimally-qualified # 👩🏿‍⚕ woman health worker: dark skin tone +1F468 200D 1F393 ; fully-qualified # 👨‍🎓 man student +1F468 1F3FB 200D 1F393 ; fully-qualified # 👨🏻‍🎓 man student: light skin tone +1F468 1F3FC 200D 1F393 ; fully-qualified # 👨🏼‍🎓 man student: medium-light skin tone +1F468 1F3FD 200D 1F393 ; fully-qualified # 👨🏽‍🎓 man student: medium skin tone +1F468 1F3FE 200D 1F393 ; fully-qualified # 👨🏾‍🎓 man student: medium-dark skin tone +1F468 1F3FF 200D 1F393 ; fully-qualified # 👨🏿‍🎓 man student: dark skin tone +1F469 200D 1F393 ; fully-qualified # 👩‍🎓 woman student +1F469 1F3FB 200D 1F393 ; fully-qualified # 👩🏻‍🎓 woman student: light skin tone +1F469 1F3FC 200D 1F393 ; fully-qualified # 👩🏼‍🎓 woman student: medium-light skin tone +1F469 1F3FD 200D 1F393 ; fully-qualified # 👩🏽‍🎓 woman student: medium skin tone +1F469 1F3FE 200D 1F393 ; fully-qualified # 👩🏾‍🎓 woman student: medium-dark skin tone +1F469 1F3FF 200D 1F393 ; fully-qualified # 👩🏿‍🎓 woman student: dark skin tone +1F468 200D 1F3EB ; fully-qualified # 👨‍🏫 man teacher +1F468 1F3FB 200D 1F3EB ; fully-qualified # 👨🏻‍🏫 man teacher: light skin tone +1F468 1F3FC 200D 1F3EB ; fully-qualified # 👨🏼‍🏫 man teacher: medium-light skin tone +1F468 1F3FD 200D 1F3EB ; fully-qualified # 👨🏽‍🏫 man teacher: medium skin tone +1F468 1F3FE 200D 1F3EB ; fully-qualified # 👨🏾‍🏫 man teacher: medium-dark skin tone +1F468 1F3FF 200D 1F3EB ; fully-qualified # 👨🏿‍🏫 man teacher: dark skin tone +1F469 200D 1F3EB ; fully-qualified # 👩‍🏫 woman teacher +1F469 1F3FB 200D 1F3EB ; fully-qualified # 👩🏻‍🏫 woman teacher: light skin tone +1F469 1F3FC 200D 1F3EB ; fully-qualified # 👩🏼‍🏫 woman teacher: medium-light skin tone +1F469 1F3FD 200D 1F3EB ; fully-qualified # 👩🏽‍🏫 woman teacher: medium skin tone +1F469 1F3FE 200D 1F3EB ; fully-qualified # 👩🏾‍🏫 woman teacher: medium-dark skin tone +1F469 1F3FF 200D 1F3EB ; fully-qualified # 👩🏿‍🏫 woman teacher: dark skin tone +1F468 200D 2696 FE0F ; fully-qualified # 👨‍⚖️ man judge +1F468 200D 2696 ; minimally-qualified # 👨‍⚖ man judge +1F468 1F3FB 200D 2696 FE0F ; fully-qualified # 👨🏻‍⚖️ man judge: light skin tone +1F468 1F3FB 200D 2696 ; minimally-qualified # 👨🏻‍⚖ man judge: light skin tone +1F468 1F3FC 200D 2696 FE0F ; fully-qualified # 👨🏼‍⚖️ man judge: medium-light skin tone +1F468 1F3FC 200D 2696 ; minimally-qualified # 👨🏼‍⚖ man judge: medium-light skin tone +1F468 1F3FD 200D 2696 FE0F ; fully-qualified # 👨🏽‍⚖️ man judge: medium skin tone +1F468 1F3FD 200D 2696 ; minimally-qualified # 👨🏽‍⚖ man judge: medium skin tone +1F468 1F3FE 200D 2696 FE0F ; fully-qualified # 👨🏾‍⚖️ man judge: medium-dark skin tone +1F468 1F3FE 200D 2696 ; minimally-qualified # 👨🏾‍⚖ man judge: medium-dark skin tone +1F468 1F3FF 200D 2696 FE0F ; fully-qualified # 👨🏿‍⚖️ man judge: dark skin tone +1F468 1F3FF 200D 2696 ; minimally-qualified # 👨🏿‍⚖ man judge: dark skin tone +1F469 200D 2696 FE0F ; fully-qualified # 👩‍⚖️ woman judge +1F469 200D 2696 ; minimally-qualified # 👩‍⚖ woman judge +1F469 1F3FB 200D 2696 FE0F ; fully-qualified # 👩🏻‍⚖️ woman judge: light skin tone +1F469 1F3FB 200D 2696 ; minimally-qualified # 👩🏻‍⚖ woman judge: light skin tone +1F469 1F3FC 200D 2696 FE0F ; fully-qualified # 👩🏼‍⚖️ woman judge: medium-light skin tone +1F469 1F3FC 200D 2696 ; minimally-qualified # 👩🏼‍⚖ woman judge: medium-light skin tone +1F469 1F3FD 200D 2696 FE0F ; fully-qualified # 👩🏽‍⚖️ woman judge: medium skin tone +1F469 1F3FD 200D 2696 ; minimally-qualified # 👩🏽‍⚖ woman judge: medium skin tone +1F469 1F3FE 200D 2696 FE0F ; fully-qualified # 👩🏾‍⚖️ woman judge: medium-dark skin tone +1F469 1F3FE 200D 2696 ; minimally-qualified # 👩🏾‍⚖ woman judge: medium-dark skin tone +1F469 1F3FF 200D 2696 FE0F ; fully-qualified # 👩🏿‍⚖️ woman judge: dark skin tone +1F469 1F3FF 200D 2696 ; minimally-qualified # 👩🏿‍⚖ woman judge: dark skin tone +1F468 200D 1F33E ; fully-qualified # 👨‍🌾 man farmer +1F468 1F3FB 200D 1F33E ; fully-qualified # 👨🏻‍🌾 man farmer: light skin tone +1F468 1F3FC 200D 1F33E ; fully-qualified # 👨🏼‍🌾 man farmer: medium-light skin tone +1F468 1F3FD 200D 1F33E ; fully-qualified # 👨🏽‍🌾 man farmer: medium skin tone +1F468 1F3FE 200D 1F33E ; fully-qualified # 👨🏾‍🌾 man farmer: medium-dark skin tone +1F468 1F3FF 200D 1F33E ; fully-qualified # 👨🏿‍🌾 man farmer: dark skin tone +1F469 200D 1F33E ; fully-qualified # 👩‍🌾 woman farmer +1F469 1F3FB 200D 1F33E ; fully-qualified # 👩🏻‍🌾 woman farmer: light skin tone +1F469 1F3FC 200D 1F33E ; fully-qualified # 👩🏼‍🌾 woman farmer: medium-light skin tone +1F469 1F3FD 200D 1F33E ; fully-qualified # 👩🏽‍🌾 woman farmer: medium skin tone +1F469 1F3FE 200D 1F33E ; fully-qualified # 👩🏾‍🌾 woman farmer: medium-dark skin tone +1F469 1F3FF 200D 1F33E ; fully-qualified # 👩🏿‍🌾 woman farmer: dark skin tone +1F468 200D 1F373 ; fully-qualified # 👨‍🍳 man cook +1F468 1F3FB 200D 1F373 ; fully-qualified # 👨🏻‍🍳 man cook: light skin tone +1F468 1F3FC 200D 1F373 ; fully-qualified # 👨🏼‍🍳 man cook: medium-light skin tone +1F468 1F3FD 200D 1F373 ; fully-qualified # 👨🏽‍🍳 man cook: medium skin tone +1F468 1F3FE 200D 1F373 ; fully-qualified # 👨🏾‍🍳 man cook: medium-dark skin tone +1F468 1F3FF 200D 1F373 ; fully-qualified # 👨🏿‍🍳 man cook: dark skin tone +1F469 200D 1F373 ; fully-qualified # 👩‍🍳 woman cook +1F469 1F3FB 200D 1F373 ; fully-qualified # 👩🏻‍🍳 woman cook: light skin tone +1F469 1F3FC 200D 1F373 ; fully-qualified # 👩🏼‍🍳 woman cook: medium-light skin tone +1F469 1F3FD 200D 1F373 ; fully-qualified # 👩🏽‍🍳 woman cook: medium skin tone +1F469 1F3FE 200D 1F373 ; fully-qualified # 👩🏾‍🍳 woman cook: medium-dark skin tone +1F469 1F3FF 200D 1F373 ; fully-qualified # 👩🏿‍🍳 woman cook: dark skin tone +1F468 200D 1F527 ; fully-qualified # 👨‍🔧 man mechanic +1F468 1F3FB 200D 1F527 ; fully-qualified # 👨🏻‍🔧 man mechanic: light skin tone +1F468 1F3FC 200D 1F527 ; fully-qualified # 👨🏼‍🔧 man mechanic: medium-light skin tone +1F468 1F3FD 200D 1F527 ; fully-qualified # 👨🏽‍🔧 man mechanic: medium skin tone +1F468 1F3FE 200D 1F527 ; fully-qualified # 👨🏾‍🔧 man mechanic: medium-dark skin tone +1F468 1F3FF 200D 1F527 ; fully-qualified # 👨🏿‍🔧 man mechanic: dark skin tone +1F469 200D 1F527 ; fully-qualified # 👩‍🔧 woman mechanic +1F469 1F3FB 200D 1F527 ; fully-qualified # 👩🏻‍🔧 woman mechanic: light skin tone +1F469 1F3FC 200D 1F527 ; fully-qualified # 👩🏼‍🔧 woman mechanic: medium-light skin tone +1F469 1F3FD 200D 1F527 ; fully-qualified # 👩🏽‍🔧 woman mechanic: medium skin tone +1F469 1F3FE 200D 1F527 ; fully-qualified # 👩🏾‍🔧 woman mechanic: medium-dark skin tone +1F469 1F3FF 200D 1F527 ; fully-qualified # 👩🏿‍🔧 woman mechanic: dark skin tone +1F468 200D 1F3ED ; fully-qualified # 👨‍🏭 man factory worker +1F468 1F3FB 200D 1F3ED ; fully-qualified # 👨🏻‍🏭 man factory worker: light skin tone +1F468 1F3FC 200D 1F3ED ; fully-qualified # 👨🏼‍🏭 man factory worker: medium-light skin tone +1F468 1F3FD 200D 1F3ED ; fully-qualified # 👨🏽‍🏭 man factory worker: medium skin tone +1F468 1F3FE 200D 1F3ED ; fully-qualified # 👨🏾‍🏭 man factory worker: medium-dark skin tone +1F468 1F3FF 200D 1F3ED ; fully-qualified # 👨🏿‍🏭 man factory worker: dark skin tone +1F469 200D 1F3ED ; fully-qualified # 👩‍🏭 woman factory worker +1F469 1F3FB 200D 1F3ED ; fully-qualified # 👩🏻‍🏭 woman factory worker: light skin tone +1F469 1F3FC 200D 1F3ED ; fully-qualified # 👩🏼‍🏭 woman factory worker: medium-light skin tone +1F469 1F3FD 200D 1F3ED ; fully-qualified # 👩🏽‍🏭 woman factory worker: medium skin tone +1F469 1F3FE 200D 1F3ED ; fully-qualified # 👩🏾‍🏭 woman factory worker: medium-dark skin tone +1F469 1F3FF 200D 1F3ED ; fully-qualified # 👩🏿‍🏭 woman factory worker: dark skin tone +1F468 200D 1F4BC ; fully-qualified # 👨‍💼 man office worker +1F468 1F3FB 200D 1F4BC ; fully-qualified # 👨🏻‍💼 man office worker: light skin tone +1F468 1F3FC 200D 1F4BC ; fully-qualified # 👨🏼‍💼 man office worker: medium-light skin tone +1F468 1F3FD 200D 1F4BC ; fully-qualified # 👨🏽‍💼 man office worker: medium skin tone +1F468 1F3FE 200D 1F4BC ; fully-qualified # 👨🏾‍💼 man office worker: medium-dark skin tone +1F468 1F3FF 200D 1F4BC ; fully-qualified # 👨🏿‍💼 man office worker: dark skin tone +1F469 200D 1F4BC ; fully-qualified # 👩‍💼 woman office worker +1F469 1F3FB 200D 1F4BC ; fully-qualified # 👩🏻‍💼 woman office worker: light skin tone +1F469 1F3FC 200D 1F4BC ; fully-qualified # 👩🏼‍💼 woman office worker: medium-light skin tone +1F469 1F3FD 200D 1F4BC ; fully-qualified # 👩🏽‍💼 woman office worker: medium skin tone +1F469 1F3FE 200D 1F4BC ; fully-qualified # 👩🏾‍💼 woman office worker: medium-dark skin tone +1F469 1F3FF 200D 1F4BC ; fully-qualified # 👩🏿‍💼 woman office worker: dark skin tone +1F468 200D 1F52C ; fully-qualified # 👨‍🔬 man scientist +1F468 1F3FB 200D 1F52C ; fully-qualified # 👨🏻‍🔬 man scientist: light skin tone +1F468 1F3FC 200D 1F52C ; fully-qualified # 👨🏼‍🔬 man scientist: medium-light skin tone +1F468 1F3FD 200D 1F52C ; fully-qualified # 👨🏽‍🔬 man scientist: medium skin tone +1F468 1F3FE 200D 1F52C ; fully-qualified # 👨🏾‍🔬 man scientist: medium-dark skin tone +1F468 1F3FF 200D 1F52C ; fully-qualified # 👨🏿‍🔬 man scientist: dark skin tone +1F469 200D 1F52C ; fully-qualified # 👩‍🔬 woman scientist +1F469 1F3FB 200D 1F52C ; fully-qualified # 👩🏻‍🔬 woman scientist: light skin tone +1F469 1F3FC 200D 1F52C ; fully-qualified # 👩🏼‍🔬 woman scientist: medium-light skin tone +1F469 1F3FD 200D 1F52C ; fully-qualified # 👩🏽‍🔬 woman scientist: medium skin tone +1F469 1F3FE 200D 1F52C ; fully-qualified # 👩🏾‍🔬 woman scientist: medium-dark skin tone +1F469 1F3FF 200D 1F52C ; fully-qualified # 👩🏿‍🔬 woman scientist: dark skin tone +1F468 200D 1F4BB ; fully-qualified # 👨‍💻 man technologist +1F468 1F3FB 200D 1F4BB ; fully-qualified # 👨🏻‍💻 man technologist: light skin tone +1F468 1F3FC 200D 1F4BB ; fully-qualified # 👨🏼‍💻 man technologist: medium-light skin tone +1F468 1F3FD 200D 1F4BB ; fully-qualified # 👨🏽‍💻 man technologist: medium skin tone +1F468 1F3FE 200D 1F4BB ; fully-qualified # 👨🏾‍💻 man technologist: medium-dark skin tone +1F468 1F3FF 200D 1F4BB ; fully-qualified # 👨🏿‍💻 man technologist: dark skin tone +1F469 200D 1F4BB ; fully-qualified # 👩‍💻 woman technologist +1F469 1F3FB 200D 1F4BB ; fully-qualified # 👩🏻‍💻 woman technologist: light skin tone +1F469 1F3FC 200D 1F4BB ; fully-qualified # 👩🏼‍💻 woman technologist: medium-light skin tone +1F469 1F3FD 200D 1F4BB ; fully-qualified # 👩🏽‍💻 woman technologist: medium skin tone +1F469 1F3FE 200D 1F4BB ; fully-qualified # 👩🏾‍💻 woman technologist: medium-dark skin tone +1F469 1F3FF 200D 1F4BB ; fully-qualified # 👩🏿‍💻 woman technologist: dark skin tone +1F468 200D 1F3A4 ; fully-qualified # 👨‍🎤 man singer +1F468 1F3FB 200D 1F3A4 ; fully-qualified # 👨🏻‍🎤 man singer: light skin tone +1F468 1F3FC 200D 1F3A4 ; fully-qualified # 👨🏼‍🎤 man singer: medium-light skin tone +1F468 1F3FD 200D 1F3A4 ; fully-qualified # 👨🏽‍🎤 man singer: medium skin tone +1F468 1F3FE 200D 1F3A4 ; fully-qualified # 👨🏾‍🎤 man singer: medium-dark skin tone +1F468 1F3FF 200D 1F3A4 ; fully-qualified # 👨🏿‍🎤 man singer: dark skin tone +1F469 200D 1F3A4 ; fully-qualified # 👩‍🎤 woman singer +1F469 1F3FB 200D 1F3A4 ; fully-qualified # 👩🏻‍🎤 woman singer: light skin tone +1F469 1F3FC 200D 1F3A4 ; fully-qualified # 👩🏼‍🎤 woman singer: medium-light skin tone +1F469 1F3FD 200D 1F3A4 ; fully-qualified # 👩🏽‍🎤 woman singer: medium skin tone +1F469 1F3FE 200D 1F3A4 ; fully-qualified # 👩🏾‍🎤 woman singer: medium-dark skin tone +1F469 1F3FF 200D 1F3A4 ; fully-qualified # 👩🏿‍🎤 woman singer: dark skin tone +1F468 200D 1F3A8 ; fully-qualified # 👨‍🎨 man artist +1F468 1F3FB 200D 1F3A8 ; fully-qualified # 👨🏻‍🎨 man artist: light skin tone +1F468 1F3FC 200D 1F3A8 ; fully-qualified # 👨🏼‍🎨 man artist: medium-light skin tone +1F468 1F3FD 200D 1F3A8 ; fully-qualified # 👨🏽‍🎨 man artist: medium skin tone +1F468 1F3FE 200D 1F3A8 ; fully-qualified # 👨🏾‍🎨 man artist: medium-dark skin tone +1F468 1F3FF 200D 1F3A8 ; fully-qualified # 👨🏿‍🎨 man artist: dark skin tone +1F469 200D 1F3A8 ; fully-qualified # 👩‍🎨 woman artist +1F469 1F3FB 200D 1F3A8 ; fully-qualified # 👩🏻‍🎨 woman artist: light skin tone +1F469 1F3FC 200D 1F3A8 ; fully-qualified # 👩🏼‍🎨 woman artist: medium-light skin tone +1F469 1F3FD 200D 1F3A8 ; fully-qualified # 👩🏽‍🎨 woman artist: medium skin tone +1F469 1F3FE 200D 1F3A8 ; fully-qualified # 👩🏾‍🎨 woman artist: medium-dark skin tone +1F469 1F3FF 200D 1F3A8 ; fully-qualified # 👩🏿‍🎨 woman artist: dark skin tone +1F468 200D 2708 FE0F ; fully-qualified # 👨‍✈️ man pilot +1F468 200D 2708 ; minimally-qualified # 👨‍✈ man pilot +1F468 1F3FB 200D 2708 FE0F ; fully-qualified # 👨🏻‍✈️ man pilot: light skin tone +1F468 1F3FB 200D 2708 ; minimally-qualified # 👨🏻‍✈ man pilot: light skin tone +1F468 1F3FC 200D 2708 FE0F ; fully-qualified # 👨🏼‍✈️ man pilot: medium-light skin tone +1F468 1F3FC 200D 2708 ; minimally-qualified # 👨🏼‍✈ man pilot: medium-light skin tone +1F468 1F3FD 200D 2708 FE0F ; fully-qualified # 👨🏽‍✈️ man pilot: medium skin tone +1F468 1F3FD 200D 2708 ; minimally-qualified # 👨🏽‍✈ man pilot: medium skin tone +1F468 1F3FE 200D 2708 FE0F ; fully-qualified # 👨🏾‍✈️ man pilot: medium-dark skin tone +1F468 1F3FE 200D 2708 ; minimally-qualified # 👨🏾‍✈ man pilot: medium-dark skin tone +1F468 1F3FF 200D 2708 FE0F ; fully-qualified # 👨🏿‍✈️ man pilot: dark skin tone +1F468 1F3FF 200D 2708 ; minimally-qualified # 👨🏿‍✈ man pilot: dark skin tone +1F469 200D 2708 FE0F ; fully-qualified # 👩‍✈️ woman pilot +1F469 200D 2708 ; minimally-qualified # 👩‍✈ woman pilot +1F469 1F3FB 200D 2708 FE0F ; fully-qualified # 👩🏻‍✈️ woman pilot: light skin tone +1F469 1F3FB 200D 2708 ; minimally-qualified # 👩🏻‍✈ woman pilot: light skin tone +1F469 1F3FC 200D 2708 FE0F ; fully-qualified # 👩🏼‍✈️ woman pilot: medium-light skin tone +1F469 1F3FC 200D 2708 ; minimally-qualified # 👩🏼‍✈ woman pilot: medium-light skin tone +1F469 1F3FD 200D 2708 FE0F ; fully-qualified # 👩🏽‍✈️ woman pilot: medium skin tone +1F469 1F3FD 200D 2708 ; minimally-qualified # 👩🏽‍✈ woman pilot: medium skin tone +1F469 1F3FE 200D 2708 FE0F ; fully-qualified # 👩🏾‍✈️ woman pilot: medium-dark skin tone +1F469 1F3FE 200D 2708 ; minimally-qualified # 👩🏾‍✈ woman pilot: medium-dark skin tone +1F469 1F3FF 200D 2708 FE0F ; fully-qualified # 👩🏿‍✈️ woman pilot: dark skin tone +1F469 1F3FF 200D 2708 ; minimally-qualified # 👩🏿‍✈ woman pilot: dark skin tone +1F468 200D 1F680 ; fully-qualified # 👨‍🚀 man astronaut +1F468 1F3FB 200D 1F680 ; fully-qualified # 👨🏻‍🚀 man astronaut: light skin tone +1F468 1F3FC 200D 1F680 ; fully-qualified # 👨🏼‍🚀 man astronaut: medium-light skin tone +1F468 1F3FD 200D 1F680 ; fully-qualified # 👨🏽‍🚀 man astronaut: medium skin tone +1F468 1F3FE 200D 1F680 ; fully-qualified # 👨🏾‍🚀 man astronaut: medium-dark skin tone +1F468 1F3FF 200D 1F680 ; fully-qualified # 👨🏿‍🚀 man astronaut: dark skin tone +1F469 200D 1F680 ; fully-qualified # 👩‍🚀 woman astronaut +1F469 1F3FB 200D 1F680 ; fully-qualified # 👩🏻‍🚀 woman astronaut: light skin tone +1F469 1F3FC 200D 1F680 ; fully-qualified # 👩🏼‍🚀 woman astronaut: medium-light skin tone +1F469 1F3FD 200D 1F680 ; fully-qualified # 👩🏽‍🚀 woman astronaut: medium skin tone +1F469 1F3FE 200D 1F680 ; fully-qualified # 👩🏾‍🚀 woman astronaut: medium-dark skin tone +1F469 1F3FF 200D 1F680 ; fully-qualified # 👩🏿‍🚀 woman astronaut: dark skin tone +1F468 200D 1F692 ; fully-qualified # 👨‍🚒 man firefighter +1F468 1F3FB 200D 1F692 ; fully-qualified # 👨🏻‍🚒 man firefighter: light skin tone +1F468 1F3FC 200D 1F692 ; fully-qualified # 👨🏼‍🚒 man firefighter: medium-light skin tone +1F468 1F3FD 200D 1F692 ; fully-qualified # 👨🏽‍🚒 man firefighter: medium skin tone +1F468 1F3FE 200D 1F692 ; fully-qualified # 👨🏾‍🚒 man firefighter: medium-dark skin tone +1F468 1F3FF 200D 1F692 ; fully-qualified # 👨🏿‍🚒 man firefighter: dark skin tone +1F469 200D 1F692 ; fully-qualified # 👩‍🚒 woman firefighter +1F469 1F3FB 200D 1F692 ; fully-qualified # 👩🏻‍🚒 woman firefighter: light skin tone +1F469 1F3FC 200D 1F692 ; fully-qualified # 👩🏼‍🚒 woman firefighter: medium-light skin tone +1F469 1F3FD 200D 1F692 ; fully-qualified # 👩🏽‍🚒 woman firefighter: medium skin tone +1F469 1F3FE 200D 1F692 ; fully-qualified # 👩🏾‍🚒 woman firefighter: medium-dark skin tone +1F469 1F3FF 200D 1F692 ; fully-qualified # 👩🏿‍🚒 woman firefighter: dark skin tone +1F46E ; fully-qualified # 👮 police officer +1F46E 1F3FB ; fully-qualified # 👮🏻 police officer: light skin tone +1F46E 1F3FC ; fully-qualified # 👮🏼 police officer: medium-light skin tone +1F46E 1F3FD ; fully-qualified # 👮🏽 police officer: medium skin tone +1F46E 1F3FE ; fully-qualified # 👮🏾 police officer: medium-dark skin tone +1F46E 1F3FF ; fully-qualified # 👮🏿 police officer: dark skin tone +1F46E 200D 2642 FE0F ; fully-qualified # 👮‍♂️ man police officer +1F46E 200D 2642 ; minimally-qualified # 👮‍♂ man police officer +1F46E 1F3FB 200D 2642 FE0F ; fully-qualified # 👮🏻‍♂️ man police officer: light skin tone +1F46E 1F3FB 200D 2642 ; minimally-qualified # 👮🏻‍♂ man police officer: light skin tone +1F46E 1F3FC 200D 2642 FE0F ; fully-qualified # 👮🏼‍♂️ man police officer: medium-light skin tone +1F46E 1F3FC 200D 2642 ; minimally-qualified # 👮🏼‍♂ man police officer: medium-light skin tone +1F46E 1F3FD 200D 2642 FE0F ; fully-qualified # 👮🏽‍♂️ man police officer: medium skin tone +1F46E 1F3FD 200D 2642 ; minimally-qualified # 👮🏽‍♂ man police officer: medium skin tone +1F46E 1F3FE 200D 2642 FE0F ; fully-qualified # 👮🏾‍♂️ man police officer: medium-dark skin tone +1F46E 1F3FE 200D 2642 ; minimally-qualified # 👮🏾‍♂ man police officer: medium-dark skin tone +1F46E 1F3FF 200D 2642 FE0F ; fully-qualified # 👮🏿‍♂️ man police officer: dark skin tone +1F46E 1F3FF 200D 2642 ; minimally-qualified # 👮🏿‍♂ man police officer: dark skin tone +1F46E 200D 2640 FE0F ; fully-qualified # 👮‍♀️ woman police officer +1F46E 200D 2640 ; minimally-qualified # 👮‍♀ woman police officer +1F46E 1F3FB 200D 2640 FE0F ; fully-qualified # 👮🏻‍♀️ woman police officer: light skin tone +1F46E 1F3FB 200D 2640 ; minimally-qualified # 👮🏻‍♀ woman police officer: light skin tone +1F46E 1F3FC 200D 2640 FE0F ; fully-qualified # 👮🏼‍♀️ woman police officer: medium-light skin tone +1F46E 1F3FC 200D 2640 ; minimally-qualified # 👮🏼‍♀ woman police officer: medium-light skin tone +1F46E 1F3FD 200D 2640 FE0F ; fully-qualified # 👮🏽‍♀️ woman police officer: medium skin tone +1F46E 1F3FD 200D 2640 ; minimally-qualified # 👮🏽‍♀ woman police officer: medium skin tone +1F46E 1F3FE 200D 2640 FE0F ; fully-qualified # 👮🏾‍♀️ woman police officer: medium-dark skin tone +1F46E 1F3FE 200D 2640 ; minimally-qualified # 👮🏾‍♀ woman police officer: medium-dark skin tone +1F46E 1F3FF 200D 2640 FE0F ; fully-qualified # 👮🏿‍♀️ woman police officer: dark skin tone +1F46E 1F3FF 200D 2640 ; minimally-qualified # 👮🏿‍♀ woman police officer: dark skin tone +1F575 FE0F ; fully-qualified # 🕵️ detective +1F575 ; unqualified # 🕵 detective +1F575 1F3FB ; fully-qualified # 🕵🏻 detective: light skin tone +1F575 1F3FC ; fully-qualified # 🕵🏼 detective: medium-light skin tone +1F575 1F3FD ; fully-qualified # 🕵🏽 detective: medium skin tone +1F575 1F3FE ; fully-qualified # 🕵🏾 detective: medium-dark skin tone +1F575 1F3FF ; fully-qualified # 🕵🏿 detective: dark skin tone +1F575 FE0F 200D 2642 FE0F ; fully-qualified # 🕵️‍♂️ man detective +1F575 200D 2642 FE0F ; unqualified # 🕵‍♂️ man detective +1F575 FE0F 200D 2642 ; unqualified # 🕵️‍♂ man detective +1F575 200D 2642 ; unqualified # 🕵‍♂ man detective +1F575 1F3FB 200D 2642 FE0F ; fully-qualified # 🕵🏻‍♂️ man detective: light skin tone +1F575 1F3FB 200D 2642 ; minimally-qualified # 🕵🏻‍♂ man detective: light skin tone +1F575 1F3FC 200D 2642 FE0F ; fully-qualified # 🕵🏼‍♂️ man detective: medium-light skin tone +1F575 1F3FC 200D 2642 ; minimally-qualified # 🕵🏼‍♂ man detective: medium-light skin tone +1F575 1F3FD 200D 2642 FE0F ; fully-qualified # 🕵🏽‍♂️ man detective: medium skin tone +1F575 1F3FD 200D 2642 ; minimally-qualified # 🕵🏽‍♂ man detective: medium skin tone +1F575 1F3FE 200D 2642 FE0F ; fully-qualified # 🕵🏾‍♂️ man detective: medium-dark skin tone +1F575 1F3FE 200D 2642 ; minimally-qualified # 🕵🏾‍♂ man detective: medium-dark skin tone +1F575 1F3FF 200D 2642 FE0F ; fully-qualified # 🕵🏿‍♂️ man detective: dark skin tone +1F575 1F3FF 200D 2642 ; minimally-qualified # 🕵🏿‍♂ man detective: dark skin tone +1F575 FE0F 200D 2640 FE0F ; fully-qualified # 🕵️‍♀️ woman detective +1F575 200D 2640 FE0F ; unqualified # 🕵‍♀️ woman detective +1F575 FE0F 200D 2640 ; unqualified # 🕵️‍♀ woman detective +1F575 200D 2640 ; unqualified # 🕵‍♀ woman detective +1F575 1F3FB 200D 2640 FE0F ; fully-qualified # 🕵🏻‍♀️ woman detective: light skin tone +1F575 1F3FB 200D 2640 ; minimally-qualified # 🕵🏻‍♀ woman detective: light skin tone +1F575 1F3FC 200D 2640 FE0F ; fully-qualified # 🕵🏼‍♀️ woman detective: medium-light skin tone +1F575 1F3FC 200D 2640 ; minimally-qualified # 🕵🏼‍♀ woman detective: medium-light skin tone +1F575 1F3FD 200D 2640 FE0F ; fully-qualified # 🕵🏽‍♀️ woman detective: medium skin tone +1F575 1F3FD 200D 2640 ; minimally-qualified # 🕵🏽‍♀ woman detective: medium skin tone +1F575 1F3FE 200D 2640 FE0F ; fully-qualified # 🕵🏾‍♀️ woman detective: medium-dark skin tone +1F575 1F3FE 200D 2640 ; minimally-qualified # 🕵🏾‍♀ woman detective: medium-dark skin tone +1F575 1F3FF 200D 2640 FE0F ; fully-qualified # 🕵🏿‍♀️ woman detective: dark skin tone +1F575 1F3FF 200D 2640 ; minimally-qualified # 🕵🏿‍♀ woman detective: dark skin tone +1F482 ; fully-qualified # 💂 guard +1F482 1F3FB ; fully-qualified # 💂🏻 guard: light skin tone +1F482 1F3FC ; fully-qualified # 💂🏼 guard: medium-light skin tone +1F482 1F3FD ; fully-qualified # 💂🏽 guard: medium skin tone +1F482 1F3FE ; fully-qualified # 💂🏾 guard: medium-dark skin tone +1F482 1F3FF ; fully-qualified # 💂🏿 guard: dark skin tone +1F482 200D 2642 FE0F ; fully-qualified # 💂‍♂️ man guard +1F482 200D 2642 ; minimally-qualified # 💂‍♂ man guard +1F482 1F3FB 200D 2642 FE0F ; fully-qualified # 💂🏻‍♂️ man guard: light skin tone +1F482 1F3FB 200D 2642 ; minimally-qualified # 💂🏻‍♂ man guard: light skin tone +1F482 1F3FC 200D 2642 FE0F ; fully-qualified # 💂🏼‍♂️ man guard: medium-light skin tone +1F482 1F3FC 200D 2642 ; minimally-qualified # 💂🏼‍♂ man guard: medium-light skin tone +1F482 1F3FD 200D 2642 FE0F ; fully-qualified # 💂🏽‍♂️ man guard: medium skin tone +1F482 1F3FD 200D 2642 ; minimally-qualified # 💂🏽‍♂ man guard: medium skin tone +1F482 1F3FE 200D 2642 FE0F ; fully-qualified # 💂🏾‍♂️ man guard: medium-dark skin tone +1F482 1F3FE 200D 2642 ; minimally-qualified # 💂🏾‍♂ man guard: medium-dark skin tone +1F482 1F3FF 200D 2642 FE0F ; fully-qualified # 💂🏿‍♂️ man guard: dark skin tone +1F482 1F3FF 200D 2642 ; minimally-qualified # 💂🏿‍♂ man guard: dark skin tone +1F482 200D 2640 FE0F ; fully-qualified # 💂‍♀️ woman guard +1F482 200D 2640 ; minimally-qualified # 💂‍♀ woman guard +1F482 1F3FB 200D 2640 FE0F ; fully-qualified # 💂🏻‍♀️ woman guard: light skin tone +1F482 1F3FB 200D 2640 ; minimally-qualified # 💂🏻‍♀ woman guard: light skin tone +1F482 1F3FC 200D 2640 FE0F ; fully-qualified # 💂🏼‍♀️ woman guard: medium-light skin tone +1F482 1F3FC 200D 2640 ; minimally-qualified # 💂🏼‍♀ woman guard: medium-light skin tone +1F482 1F3FD 200D 2640 FE0F ; fully-qualified # 💂🏽‍♀️ woman guard: medium skin tone +1F482 1F3FD 200D 2640 ; minimally-qualified # 💂🏽‍♀ woman guard: medium skin tone +1F482 1F3FE 200D 2640 FE0F ; fully-qualified # 💂🏾‍♀️ woman guard: medium-dark skin tone +1F482 1F3FE 200D 2640 ; minimally-qualified # 💂🏾‍♀ woman guard: medium-dark skin tone +1F482 1F3FF 200D 2640 FE0F ; fully-qualified # 💂🏿‍♀️ woman guard: dark skin tone +1F482 1F3FF 200D 2640 ; minimally-qualified # 💂🏿‍♀ woman guard: dark skin tone +1F477 ; fully-qualified # 👷 construction worker +1F477 1F3FB ; fully-qualified # 👷🏻 construction worker: light skin tone +1F477 1F3FC ; fully-qualified # 👷🏼 construction worker: medium-light skin tone +1F477 1F3FD ; fully-qualified # 👷🏽 construction worker: medium skin tone +1F477 1F3FE ; fully-qualified # 👷🏾 construction worker: medium-dark skin tone +1F477 1F3FF ; fully-qualified # 👷🏿 construction worker: dark skin tone +1F477 200D 2642 FE0F ; fully-qualified # 👷‍♂️ man construction worker +1F477 200D 2642 ; minimally-qualified # 👷‍♂ man construction worker +1F477 1F3FB 200D 2642 FE0F ; fully-qualified # 👷🏻‍♂️ man construction worker: light skin tone +1F477 1F3FB 200D 2642 ; minimally-qualified # 👷🏻‍♂ man construction worker: light skin tone +1F477 1F3FC 200D 2642 FE0F ; fully-qualified # 👷🏼‍♂️ man construction worker: medium-light skin tone +1F477 1F3FC 200D 2642 ; minimally-qualified # 👷🏼‍♂ man construction worker: medium-light skin tone +1F477 1F3FD 200D 2642 FE0F ; fully-qualified # 👷🏽‍♂️ man construction worker: medium skin tone +1F477 1F3FD 200D 2642 ; minimally-qualified # 👷🏽‍♂ man construction worker: medium skin tone +1F477 1F3FE 200D 2642 FE0F ; fully-qualified # 👷🏾‍♂️ man construction worker: medium-dark skin tone +1F477 1F3FE 200D 2642 ; minimally-qualified # 👷🏾‍♂ man construction worker: medium-dark skin tone +1F477 1F3FF 200D 2642 FE0F ; fully-qualified # 👷🏿‍♂️ man construction worker: dark skin tone +1F477 1F3FF 200D 2642 ; minimally-qualified # 👷🏿‍♂ man construction worker: dark skin tone +1F477 200D 2640 FE0F ; fully-qualified # 👷‍♀️ woman construction worker +1F477 200D 2640 ; minimally-qualified # 👷‍♀ woman construction worker +1F477 1F3FB 200D 2640 FE0F ; fully-qualified # 👷🏻‍♀️ woman construction worker: light skin tone +1F477 1F3FB 200D 2640 ; minimally-qualified # 👷🏻‍♀ woman construction worker: light skin tone +1F477 1F3FC 200D 2640 FE0F ; fully-qualified # 👷🏼‍♀️ woman construction worker: medium-light skin tone +1F477 1F3FC 200D 2640 ; minimally-qualified # 👷🏼‍♀ woman construction worker: medium-light skin tone +1F477 1F3FD 200D 2640 FE0F ; fully-qualified # 👷🏽‍♀️ woman construction worker: medium skin tone +1F477 1F3FD 200D 2640 ; minimally-qualified # 👷🏽‍♀ woman construction worker: medium skin tone +1F477 1F3FE 200D 2640 FE0F ; fully-qualified # 👷🏾‍♀️ woman construction worker: medium-dark skin tone +1F477 1F3FE 200D 2640 ; minimally-qualified # 👷🏾‍♀ woman construction worker: medium-dark skin tone +1F477 1F3FF 200D 2640 FE0F ; fully-qualified # 👷🏿‍♀️ woman construction worker: dark skin tone +1F477 1F3FF 200D 2640 ; minimally-qualified # 👷🏿‍♀ woman construction worker: dark skin tone +1F934 ; fully-qualified # 🤴 prince +1F934 1F3FB ; fully-qualified # 🤴🏻 prince: light skin tone +1F934 1F3FC ; fully-qualified # 🤴🏼 prince: medium-light skin tone +1F934 1F3FD ; fully-qualified # 🤴🏽 prince: medium skin tone +1F934 1F3FE ; fully-qualified # 🤴🏾 prince: medium-dark skin tone +1F934 1F3FF ; fully-qualified # 🤴🏿 prince: dark skin tone +1F478 ; fully-qualified # 👸 princess +1F478 1F3FB ; fully-qualified # 👸🏻 princess: light skin tone +1F478 1F3FC ; fully-qualified # 👸🏼 princess: medium-light skin tone +1F478 1F3FD ; fully-qualified # 👸🏽 princess: medium skin tone +1F478 1F3FE ; fully-qualified # 👸🏾 princess: medium-dark skin tone +1F478 1F3FF ; fully-qualified # 👸🏿 princess: dark skin tone +1F473 ; fully-qualified # 👳 person wearing turban +1F473 1F3FB ; fully-qualified # 👳🏻 person wearing turban: light skin tone +1F473 1F3FC ; fully-qualified # 👳🏼 person wearing turban: medium-light skin tone +1F473 1F3FD ; fully-qualified # 👳🏽 person wearing turban: medium skin tone +1F473 1F3FE ; fully-qualified # 👳🏾 person wearing turban: medium-dark skin tone +1F473 1F3FF ; fully-qualified # 👳🏿 person wearing turban: dark skin tone +1F473 200D 2642 FE0F ; fully-qualified # 👳‍♂️ man wearing turban +1F473 200D 2642 ; minimally-qualified # 👳‍♂ man wearing turban +1F473 1F3FB 200D 2642 FE0F ; fully-qualified # 👳🏻‍♂️ man wearing turban: light skin tone +1F473 1F3FB 200D 2642 ; minimally-qualified # 👳🏻‍♂ man wearing turban: light skin tone +1F473 1F3FC 200D 2642 FE0F ; fully-qualified # 👳🏼‍♂️ man wearing turban: medium-light skin tone +1F473 1F3FC 200D 2642 ; minimally-qualified # 👳🏼‍♂ man wearing turban: medium-light skin tone +1F473 1F3FD 200D 2642 FE0F ; fully-qualified # 👳🏽‍♂️ man wearing turban: medium skin tone +1F473 1F3FD 200D 2642 ; minimally-qualified # 👳🏽‍♂ man wearing turban: medium skin tone +1F473 1F3FE 200D 2642 FE0F ; fully-qualified # 👳🏾‍♂️ man wearing turban: medium-dark skin tone +1F473 1F3FE 200D 2642 ; minimally-qualified # 👳🏾‍♂ man wearing turban: medium-dark skin tone +1F473 1F3FF 200D 2642 FE0F ; fully-qualified # 👳🏿‍♂️ man wearing turban: dark skin tone +1F473 1F3FF 200D 2642 ; minimally-qualified # 👳🏿‍♂ man wearing turban: dark skin tone +1F473 200D 2640 FE0F ; fully-qualified # 👳‍♀️ woman wearing turban +1F473 200D 2640 ; minimally-qualified # 👳‍♀ woman wearing turban +1F473 1F3FB 200D 2640 FE0F ; fully-qualified # 👳🏻‍♀️ woman wearing turban: light skin tone +1F473 1F3FB 200D 2640 ; minimally-qualified # 👳🏻‍♀ woman wearing turban: light skin tone +1F473 1F3FC 200D 2640 FE0F ; fully-qualified # 👳🏼‍♀️ woman wearing turban: medium-light skin tone +1F473 1F3FC 200D 2640 ; minimally-qualified # 👳🏼‍♀ woman wearing turban: medium-light skin tone +1F473 1F3FD 200D 2640 FE0F ; fully-qualified # 👳🏽‍♀️ woman wearing turban: medium skin tone +1F473 1F3FD 200D 2640 ; minimally-qualified # 👳🏽‍♀ woman wearing turban: medium skin tone +1F473 1F3FE 200D 2640 FE0F ; fully-qualified # 👳🏾‍♀️ woman wearing turban: medium-dark skin tone +1F473 1F3FE 200D 2640 ; minimally-qualified # 👳🏾‍♀ woman wearing turban: medium-dark skin tone +1F473 1F3FF 200D 2640 FE0F ; fully-qualified # 👳🏿‍♀️ woman wearing turban: dark skin tone +1F473 1F3FF 200D 2640 ; minimally-qualified # 👳🏿‍♀ woman wearing turban: dark skin tone +1F472 ; fully-qualified # 👲 man with Chinese cap +1F472 1F3FB ; fully-qualified # 👲🏻 man with Chinese cap: light skin tone +1F472 1F3FC ; fully-qualified # 👲🏼 man with Chinese cap: medium-light skin tone +1F472 1F3FD ; fully-qualified # 👲🏽 man with Chinese cap: medium skin tone +1F472 1F3FE ; fully-qualified # 👲🏾 man with Chinese cap: medium-dark skin tone +1F472 1F3FF ; fully-qualified # 👲🏿 man with Chinese cap: dark skin tone +1F9D5 ; fully-qualified # 🧕 woman with headscarf +1F9D5 1F3FB ; fully-qualified # 🧕🏻 woman with headscarf: light skin tone +1F9D5 1F3FC ; fully-qualified # 🧕🏼 woman with headscarf: medium-light skin tone +1F9D5 1F3FD ; fully-qualified # 🧕🏽 woman with headscarf: medium skin tone +1F9D5 1F3FE ; fully-qualified # 🧕🏾 woman with headscarf: medium-dark skin tone +1F9D5 1F3FF ; fully-qualified # 🧕🏿 woman with headscarf: dark skin tone +1F935 ; fully-qualified # 🤵 man in tuxedo +1F935 1F3FB ; fully-qualified # 🤵🏻 man in tuxedo: light skin tone +1F935 1F3FC ; fully-qualified # 🤵🏼 man in tuxedo: medium-light skin tone +1F935 1F3FD ; fully-qualified # 🤵🏽 man in tuxedo: medium skin tone +1F935 1F3FE ; fully-qualified # 🤵🏾 man in tuxedo: medium-dark skin tone +1F935 1F3FF ; fully-qualified # 🤵🏿 man in tuxedo: dark skin tone +1F470 ; fully-qualified # 👰 bride with veil +1F470 1F3FB ; fully-qualified # 👰🏻 bride with veil: light skin tone +1F470 1F3FC ; fully-qualified # 👰🏼 bride with veil: medium-light skin tone +1F470 1F3FD ; fully-qualified # 👰🏽 bride with veil: medium skin tone +1F470 1F3FE ; fully-qualified # 👰🏾 bride with veil: medium-dark skin tone +1F470 1F3FF ; fully-qualified # 👰🏿 bride with veil: dark skin tone +1F930 ; fully-qualified # 🤰 pregnant woman +1F930 1F3FB ; fully-qualified # 🤰🏻 pregnant woman: light skin tone +1F930 1F3FC ; fully-qualified # 🤰🏼 pregnant woman: medium-light skin tone +1F930 1F3FD ; fully-qualified # 🤰🏽 pregnant woman: medium skin tone +1F930 1F3FE ; fully-qualified # 🤰🏾 pregnant woman: medium-dark skin tone +1F930 1F3FF ; fully-qualified # 🤰🏿 pregnant woman: dark skin tone +1F931 ; fully-qualified # 🤱 breast-feeding +1F931 1F3FB ; fully-qualified # 🤱🏻 breast-feeding: light skin tone +1F931 1F3FC ; fully-qualified # 🤱🏼 breast-feeding: medium-light skin tone +1F931 1F3FD ; fully-qualified # 🤱🏽 breast-feeding: medium skin tone +1F931 1F3FE ; fully-qualified # 🤱🏾 breast-feeding: medium-dark skin tone +1F931 1F3FF ; fully-qualified # 🤱🏿 breast-feeding: dark skin tone + +# subgroup: person-fantasy +1F47C ; fully-qualified # 👼 baby angel +1F47C 1F3FB ; fully-qualified # 👼🏻 baby angel: light skin tone +1F47C 1F3FC ; fully-qualified # 👼🏼 baby angel: medium-light skin tone +1F47C 1F3FD ; fully-qualified # 👼🏽 baby angel: medium skin tone +1F47C 1F3FE ; fully-qualified # 👼🏾 baby angel: medium-dark skin tone +1F47C 1F3FF ; fully-qualified # 👼🏿 baby angel: dark skin tone +1F385 ; fully-qualified # 🎅 Santa Claus +1F385 1F3FB ; fully-qualified # 🎅🏻 Santa Claus: light skin tone +1F385 1F3FC ; fully-qualified # 🎅🏼 Santa Claus: medium-light skin tone +1F385 1F3FD ; fully-qualified # 🎅🏽 Santa Claus: medium skin tone +1F385 1F3FE ; fully-qualified # 🎅🏾 Santa Claus: medium-dark skin tone +1F385 1F3FF ; fully-qualified # 🎅🏿 Santa Claus: dark skin tone +1F936 ; fully-qualified # 🤶 Mrs. Claus +1F936 1F3FB ; fully-qualified # 🤶🏻 Mrs. Claus: light skin tone +1F936 1F3FC ; fully-qualified # 🤶🏼 Mrs. Claus: medium-light skin tone +1F936 1F3FD ; fully-qualified # 🤶🏽 Mrs. Claus: medium skin tone +1F936 1F3FE ; fully-qualified # 🤶🏾 Mrs. Claus: medium-dark skin tone +1F936 1F3FF ; fully-qualified # 🤶🏿 Mrs. Claus: dark skin tone +1F9B8 ; fully-qualified # 🦸 superhero +1F9B8 1F3FB ; fully-qualified # 🦸🏻 superhero: light skin tone +1F9B8 1F3FC ; fully-qualified # 🦸🏼 superhero: medium-light skin tone +1F9B8 1F3FD ; fully-qualified # 🦸🏽 superhero: medium skin tone +1F9B8 1F3FE ; fully-qualified # 🦸🏾 superhero: medium-dark skin tone +1F9B8 1F3FF ; fully-qualified # 🦸🏿 superhero: dark skin tone +1F9B8 200D 2642 FE0F ; fully-qualified # 🦸‍♂️ man superhero +1F9B8 200D 2642 ; minimally-qualified # 🦸‍♂ man superhero +1F9B8 1F3FB 200D 2642 FE0F ; fully-qualified # 🦸🏻‍♂️ man superhero: light skin tone +1F9B8 1F3FB 200D 2642 ; minimally-qualified # 🦸🏻‍♂ man superhero: light skin tone +1F9B8 1F3FC 200D 2642 FE0F ; fully-qualified # 🦸🏼‍♂️ man superhero: medium-light skin tone +1F9B8 1F3FC 200D 2642 ; minimally-qualified # 🦸🏼‍♂ man superhero: medium-light skin tone +1F9B8 1F3FD 200D 2642 FE0F ; fully-qualified # 🦸🏽‍♂️ man superhero: medium skin tone +1F9B8 1F3FD 200D 2642 ; minimally-qualified # 🦸🏽‍♂ man superhero: medium skin tone +1F9B8 1F3FE 200D 2642 FE0F ; fully-qualified # 🦸🏾‍♂️ man superhero: medium-dark skin tone +1F9B8 1F3FE 200D 2642 ; minimally-qualified # 🦸🏾‍♂ man superhero: medium-dark skin tone +1F9B8 1F3FF 200D 2642 FE0F ; fully-qualified # 🦸🏿‍♂️ man superhero: dark skin tone +1F9B8 1F3FF 200D 2642 ; minimally-qualified # 🦸🏿‍♂ man superhero: dark skin tone +1F9B8 200D 2640 FE0F ; fully-qualified # 🦸‍♀️ woman superhero +1F9B8 200D 2640 ; minimally-qualified # 🦸‍♀ woman superhero +1F9B8 1F3FB 200D 2640 FE0F ; fully-qualified # 🦸🏻‍♀️ woman superhero: light skin tone +1F9B8 1F3FB 200D 2640 ; minimally-qualified # 🦸🏻‍♀ woman superhero: light skin tone +1F9B8 1F3FC 200D 2640 FE0F ; fully-qualified # 🦸🏼‍♀️ woman superhero: medium-light skin tone +1F9B8 1F3FC 200D 2640 ; minimally-qualified # 🦸🏼‍♀ woman superhero: medium-light skin tone +1F9B8 1F3FD 200D 2640 FE0F ; fully-qualified # 🦸🏽‍♀️ woman superhero: medium skin tone +1F9B8 1F3FD 200D 2640 ; minimally-qualified # 🦸🏽‍♀ woman superhero: medium skin tone +1F9B8 1F3FE 200D 2640 FE0F ; fully-qualified # 🦸🏾‍♀️ woman superhero: medium-dark skin tone +1F9B8 1F3FE 200D 2640 ; minimally-qualified # 🦸🏾‍♀ woman superhero: medium-dark skin tone +1F9B8 1F3FF 200D 2640 FE0F ; fully-qualified # 🦸🏿‍♀️ woman superhero: dark skin tone +1F9B8 1F3FF 200D 2640 ; minimally-qualified # 🦸🏿‍♀ woman superhero: dark skin tone +1F9B9 ; fully-qualified # 🦹 supervillain +1F9B9 1F3FB ; fully-qualified # 🦹🏻 supervillain: light skin tone +1F9B9 1F3FC ; fully-qualified # 🦹🏼 supervillain: medium-light skin tone +1F9B9 1F3FD ; fully-qualified # 🦹🏽 supervillain: medium skin tone +1F9B9 1F3FE ; fully-qualified # 🦹🏾 supervillain: medium-dark skin tone +1F9B9 1F3FF ; fully-qualified # 🦹🏿 supervillain: dark skin tone +1F9B9 200D 2642 FE0F ; fully-qualified # 🦹‍♂️ man supervillain +1F9B9 200D 2642 ; minimally-qualified # 🦹‍♂ man supervillain +1F9B9 1F3FB 200D 2642 FE0F ; fully-qualified # 🦹🏻‍♂️ man supervillain: light skin tone +1F9B9 1F3FB 200D 2642 ; minimally-qualified # 🦹🏻‍♂ man supervillain: light skin tone +1F9B9 1F3FC 200D 2642 FE0F ; fully-qualified # 🦹🏼‍♂️ man supervillain: medium-light skin tone +1F9B9 1F3FC 200D 2642 ; minimally-qualified # 🦹🏼‍♂ man supervillain: medium-light skin tone +1F9B9 1F3FD 200D 2642 FE0F ; fully-qualified # 🦹🏽‍♂️ man supervillain: medium skin tone +1F9B9 1F3FD 200D 2642 ; minimally-qualified # 🦹🏽‍♂ man supervillain: medium skin tone +1F9B9 1F3FE 200D 2642 FE0F ; fully-qualified # 🦹🏾‍♂️ man supervillain: medium-dark skin tone +1F9B9 1F3FE 200D 2642 ; minimally-qualified # 🦹🏾‍♂ man supervillain: medium-dark skin tone +1F9B9 1F3FF 200D 2642 FE0F ; fully-qualified # 🦹🏿‍♂️ man supervillain: dark skin tone +1F9B9 1F3FF 200D 2642 ; minimally-qualified # 🦹🏿‍♂ man supervillain: dark skin tone +1F9B9 200D 2640 FE0F ; fully-qualified # 🦹‍♀️ woman supervillain +1F9B9 200D 2640 ; minimally-qualified # 🦹‍♀ woman supervillain +1F9B9 1F3FB 200D 2640 FE0F ; fully-qualified # 🦹🏻‍♀️ woman supervillain: light skin tone +1F9B9 1F3FB 200D 2640 ; minimally-qualified # 🦹🏻‍♀ woman supervillain: light skin tone +1F9B9 1F3FC 200D 2640 FE0F ; fully-qualified # 🦹🏼‍♀️ woman supervillain: medium-light skin tone +1F9B9 1F3FC 200D 2640 ; minimally-qualified # 🦹🏼‍♀ woman supervillain: medium-light skin tone +1F9B9 1F3FD 200D 2640 FE0F ; fully-qualified # 🦹🏽‍♀️ woman supervillain: medium skin tone +1F9B9 1F3FD 200D 2640 ; minimally-qualified # 🦹🏽‍♀ woman supervillain: medium skin tone +1F9B9 1F3FE 200D 2640 FE0F ; fully-qualified # 🦹🏾‍♀️ woman supervillain: medium-dark skin tone +1F9B9 1F3FE 200D 2640 ; minimally-qualified # 🦹🏾‍♀ woman supervillain: medium-dark skin tone +1F9B9 1F3FF 200D 2640 FE0F ; fully-qualified # 🦹🏿‍♀️ woman supervillain: dark skin tone +1F9B9 1F3FF 200D 2640 ; minimally-qualified # 🦹🏿‍♀ woman supervillain: dark skin tone +1F9D9 ; fully-qualified # 🧙 mage +1F9D9 1F3FB ; fully-qualified # 🧙🏻 mage: light skin tone +1F9D9 1F3FC ; fully-qualified # 🧙🏼 mage: medium-light skin tone +1F9D9 1F3FD ; fully-qualified # 🧙🏽 mage: medium skin tone +1F9D9 1F3FE ; fully-qualified # 🧙🏾 mage: medium-dark skin tone +1F9D9 1F3FF ; fully-qualified # 🧙🏿 mage: dark skin tone +1F9D9 200D 2642 FE0F ; fully-qualified # 🧙‍♂️ man mage +1F9D9 200D 2642 ; minimally-qualified # 🧙‍♂ man mage +1F9D9 1F3FB 200D 2642 FE0F ; fully-qualified # 🧙🏻‍♂️ man mage: light skin tone +1F9D9 1F3FB 200D 2642 ; minimally-qualified # 🧙🏻‍♂ man mage: light skin tone +1F9D9 1F3FC 200D 2642 FE0F ; fully-qualified # 🧙🏼‍♂️ man mage: medium-light skin tone +1F9D9 1F3FC 200D 2642 ; minimally-qualified # 🧙🏼‍♂ man mage: medium-light skin tone +1F9D9 1F3FD 200D 2642 FE0F ; fully-qualified # 🧙🏽‍♂️ man mage: medium skin tone +1F9D9 1F3FD 200D 2642 ; minimally-qualified # 🧙🏽‍♂ man mage: medium skin tone +1F9D9 1F3FE 200D 2642 FE0F ; fully-qualified # 🧙🏾‍♂️ man mage: medium-dark skin tone +1F9D9 1F3FE 200D 2642 ; minimally-qualified # 🧙🏾‍♂ man mage: medium-dark skin tone +1F9D9 1F3FF 200D 2642 FE0F ; fully-qualified # 🧙🏿‍♂️ man mage: dark skin tone +1F9D9 1F3FF 200D 2642 ; minimally-qualified # 🧙🏿‍♂ man mage: dark skin tone +1F9D9 200D 2640 FE0F ; fully-qualified # 🧙‍♀️ woman mage +1F9D9 200D 2640 ; minimally-qualified # 🧙‍♀ woman mage +1F9D9 1F3FB 200D 2640 FE0F ; fully-qualified # 🧙🏻‍♀️ woman mage: light skin tone +1F9D9 1F3FB 200D 2640 ; minimally-qualified # 🧙🏻‍♀ woman mage: light skin tone +1F9D9 1F3FC 200D 2640 FE0F ; fully-qualified # 🧙🏼‍♀️ woman mage: medium-light skin tone +1F9D9 1F3FC 200D 2640 ; minimally-qualified # 🧙🏼‍♀ woman mage: medium-light skin tone +1F9D9 1F3FD 200D 2640 FE0F ; fully-qualified # 🧙🏽‍♀️ woman mage: medium skin tone +1F9D9 1F3FD 200D 2640 ; minimally-qualified # 🧙🏽‍♀ woman mage: medium skin tone +1F9D9 1F3FE 200D 2640 FE0F ; fully-qualified # 🧙🏾‍♀️ woman mage: medium-dark skin tone +1F9D9 1F3FE 200D 2640 ; minimally-qualified # 🧙🏾‍♀ woman mage: medium-dark skin tone +1F9D9 1F3FF 200D 2640 FE0F ; fully-qualified # 🧙🏿‍♀️ woman mage: dark skin tone +1F9D9 1F3FF 200D 2640 ; minimally-qualified # 🧙🏿‍♀ woman mage: dark skin tone +1F9DA ; fully-qualified # 🧚 fairy +1F9DA 1F3FB ; fully-qualified # 🧚🏻 fairy: light skin tone +1F9DA 1F3FC ; fully-qualified # 🧚🏼 fairy: medium-light skin tone +1F9DA 1F3FD ; fully-qualified # 🧚🏽 fairy: medium skin tone +1F9DA 1F3FE ; fully-qualified # 🧚🏾 fairy: medium-dark skin tone +1F9DA 1F3FF ; fully-qualified # 🧚🏿 fairy: dark skin tone +1F9DA 200D 2642 FE0F ; fully-qualified # 🧚‍♂️ man fairy +1F9DA 200D 2642 ; minimally-qualified # 🧚‍♂ man fairy +1F9DA 1F3FB 200D 2642 FE0F ; fully-qualified # 🧚🏻‍♂️ man fairy: light skin tone +1F9DA 1F3FB 200D 2642 ; minimally-qualified # 🧚🏻‍♂ man fairy: light skin tone +1F9DA 1F3FC 200D 2642 FE0F ; fully-qualified # 🧚🏼‍♂️ man fairy: medium-light skin tone +1F9DA 1F3FC 200D 2642 ; minimally-qualified # 🧚🏼‍♂ man fairy: medium-light skin tone +1F9DA 1F3FD 200D 2642 FE0F ; fully-qualified # 🧚🏽‍♂️ man fairy: medium skin tone +1F9DA 1F3FD 200D 2642 ; minimally-qualified # 🧚🏽‍♂ man fairy: medium skin tone +1F9DA 1F3FE 200D 2642 FE0F ; fully-qualified # 🧚🏾‍♂️ man fairy: medium-dark skin tone +1F9DA 1F3FE 200D 2642 ; minimally-qualified # 🧚🏾‍♂ man fairy: medium-dark skin tone +1F9DA 1F3FF 200D 2642 FE0F ; fully-qualified # 🧚🏿‍♂️ man fairy: dark skin tone +1F9DA 1F3FF 200D 2642 ; minimally-qualified # 🧚🏿‍♂ man fairy: dark skin tone +1F9DA 200D 2640 FE0F ; fully-qualified # 🧚‍♀️ woman fairy +1F9DA 200D 2640 ; minimally-qualified # 🧚‍♀ woman fairy +1F9DA 1F3FB 200D 2640 FE0F ; fully-qualified # 🧚🏻‍♀️ woman fairy: light skin tone +1F9DA 1F3FB 200D 2640 ; minimally-qualified # 🧚🏻‍♀ woman fairy: light skin tone +1F9DA 1F3FC 200D 2640 FE0F ; fully-qualified # 🧚🏼‍♀️ woman fairy: medium-light skin tone +1F9DA 1F3FC 200D 2640 ; minimally-qualified # 🧚🏼‍♀ woman fairy: medium-light skin tone +1F9DA 1F3FD 200D 2640 FE0F ; fully-qualified # 🧚🏽‍♀️ woman fairy: medium skin tone +1F9DA 1F3FD 200D 2640 ; minimally-qualified # 🧚🏽‍♀ woman fairy: medium skin tone +1F9DA 1F3FE 200D 2640 FE0F ; fully-qualified # 🧚🏾‍♀️ woman fairy: medium-dark skin tone +1F9DA 1F3FE 200D 2640 ; minimally-qualified # 🧚🏾‍♀ woman fairy: medium-dark skin tone +1F9DA 1F3FF 200D 2640 FE0F ; fully-qualified # 🧚🏿‍♀️ woman fairy: dark skin tone +1F9DA 1F3FF 200D 2640 ; minimally-qualified # 🧚🏿‍♀ woman fairy: dark skin tone +1F9DB ; fully-qualified # 🧛 vampire +1F9DB 1F3FB ; fully-qualified # 🧛🏻 vampire: light skin tone +1F9DB 1F3FC ; fully-qualified # 🧛🏼 vampire: medium-light skin tone +1F9DB 1F3FD ; fully-qualified # 🧛🏽 vampire: medium skin tone +1F9DB 1F3FE ; fully-qualified # 🧛🏾 vampire: medium-dark skin tone +1F9DB 1F3FF ; fully-qualified # 🧛🏿 vampire: dark skin tone +1F9DB 200D 2642 FE0F ; fully-qualified # 🧛‍♂️ man vampire +1F9DB 200D 2642 ; minimally-qualified # 🧛‍♂ man vampire +1F9DB 1F3FB 200D 2642 FE0F ; fully-qualified # 🧛🏻‍♂️ man vampire: light skin tone +1F9DB 1F3FB 200D 2642 ; minimally-qualified # 🧛🏻‍♂ man vampire: light skin tone +1F9DB 1F3FC 200D 2642 FE0F ; fully-qualified # 🧛🏼‍♂️ man vampire: medium-light skin tone +1F9DB 1F3FC 200D 2642 ; minimally-qualified # 🧛🏼‍♂ man vampire: medium-light skin tone +1F9DB 1F3FD 200D 2642 FE0F ; fully-qualified # 🧛🏽‍♂️ man vampire: medium skin tone +1F9DB 1F3FD 200D 2642 ; minimally-qualified # 🧛🏽‍♂ man vampire: medium skin tone +1F9DB 1F3FE 200D 2642 FE0F ; fully-qualified # 🧛🏾‍♂️ man vampire: medium-dark skin tone +1F9DB 1F3FE 200D 2642 ; minimally-qualified # 🧛🏾‍♂ man vampire: medium-dark skin tone +1F9DB 1F3FF 200D 2642 FE0F ; fully-qualified # 🧛🏿‍♂️ man vampire: dark skin tone +1F9DB 1F3FF 200D 2642 ; minimally-qualified # 🧛🏿‍♂ man vampire: dark skin tone +1F9DB 200D 2640 FE0F ; fully-qualified # 🧛‍♀️ woman vampire +1F9DB 200D 2640 ; minimally-qualified # 🧛‍♀ woman vampire +1F9DB 1F3FB 200D 2640 FE0F ; fully-qualified # 🧛🏻‍♀️ woman vampire: light skin tone +1F9DB 1F3FB 200D 2640 ; minimally-qualified # 🧛🏻‍♀ woman vampire: light skin tone +1F9DB 1F3FC 200D 2640 FE0F ; fully-qualified # 🧛🏼‍♀️ woman vampire: medium-light skin tone +1F9DB 1F3FC 200D 2640 ; minimally-qualified # 🧛🏼‍♀ woman vampire: medium-light skin tone +1F9DB 1F3FD 200D 2640 FE0F ; fully-qualified # 🧛🏽‍♀️ woman vampire: medium skin tone +1F9DB 1F3FD 200D 2640 ; minimally-qualified # 🧛🏽‍♀ woman vampire: medium skin tone +1F9DB 1F3FE 200D 2640 FE0F ; fully-qualified # 🧛🏾‍♀️ woman vampire: medium-dark skin tone +1F9DB 1F3FE 200D 2640 ; minimally-qualified # 🧛🏾‍♀ woman vampire: medium-dark skin tone +1F9DB 1F3FF 200D 2640 FE0F ; fully-qualified # 🧛🏿‍♀️ woman vampire: dark skin tone +1F9DB 1F3FF 200D 2640 ; minimally-qualified # 🧛🏿‍♀ woman vampire: dark skin tone +1F9DC ; fully-qualified # 🧜 merperson +1F9DC 1F3FB ; fully-qualified # 🧜🏻 merperson: light skin tone +1F9DC 1F3FC ; fully-qualified # 🧜🏼 merperson: medium-light skin tone +1F9DC 1F3FD ; fully-qualified # 🧜🏽 merperson: medium skin tone +1F9DC 1F3FE ; fully-qualified # 🧜🏾 merperson: medium-dark skin tone +1F9DC 1F3FF ; fully-qualified # 🧜🏿 merperson: dark skin tone +1F9DC 200D 2642 FE0F ; fully-qualified # 🧜‍♂️ merman +1F9DC 200D 2642 ; minimally-qualified # 🧜‍♂ merman +1F9DC 1F3FB 200D 2642 FE0F ; fully-qualified # 🧜🏻‍♂️ merman: light skin tone +1F9DC 1F3FB 200D 2642 ; minimally-qualified # 🧜🏻‍♂ merman: light skin tone +1F9DC 1F3FC 200D 2642 FE0F ; fully-qualified # 🧜🏼‍♂️ merman: medium-light skin tone +1F9DC 1F3FC 200D 2642 ; minimally-qualified # 🧜🏼‍♂ merman: medium-light skin tone +1F9DC 1F3FD 200D 2642 FE0F ; fully-qualified # 🧜🏽‍♂️ merman: medium skin tone +1F9DC 1F3FD 200D 2642 ; minimally-qualified # 🧜🏽‍♂ merman: medium skin tone +1F9DC 1F3FE 200D 2642 FE0F ; fully-qualified # 🧜🏾‍♂️ merman: medium-dark skin tone +1F9DC 1F3FE 200D 2642 ; minimally-qualified # 🧜🏾‍♂ merman: medium-dark skin tone +1F9DC 1F3FF 200D 2642 FE0F ; fully-qualified # 🧜🏿‍♂️ merman: dark skin tone +1F9DC 1F3FF 200D 2642 ; minimally-qualified # 🧜🏿‍♂ merman: dark skin tone +1F9DC 200D 2640 FE0F ; fully-qualified # 🧜‍♀️ mermaid +1F9DC 200D 2640 ; minimally-qualified # 🧜‍♀ mermaid +1F9DC 1F3FB 200D 2640 FE0F ; fully-qualified # 🧜🏻‍♀️ mermaid: light skin tone +1F9DC 1F3FB 200D 2640 ; minimally-qualified # 🧜🏻‍♀ mermaid: light skin tone +1F9DC 1F3FC 200D 2640 FE0F ; fully-qualified # 🧜🏼‍♀️ mermaid: medium-light skin tone +1F9DC 1F3FC 200D 2640 ; minimally-qualified # 🧜🏼‍♀ mermaid: medium-light skin tone +1F9DC 1F3FD 200D 2640 FE0F ; fully-qualified # 🧜🏽‍♀️ mermaid: medium skin tone +1F9DC 1F3FD 200D 2640 ; minimally-qualified # 🧜🏽‍♀ mermaid: medium skin tone +1F9DC 1F3FE 200D 2640 FE0F ; fully-qualified # 🧜🏾‍♀️ mermaid: medium-dark skin tone +1F9DC 1F3FE 200D 2640 ; minimally-qualified # 🧜🏾‍♀ mermaid: medium-dark skin tone +1F9DC 1F3FF 200D 2640 FE0F ; fully-qualified # 🧜🏿‍♀️ mermaid: dark skin tone +1F9DC 1F3FF 200D 2640 ; minimally-qualified # 🧜🏿‍♀ mermaid: dark skin tone +1F9DD ; fully-qualified # 🧝 elf +1F9DD 1F3FB ; fully-qualified # 🧝🏻 elf: light skin tone +1F9DD 1F3FC ; fully-qualified # 🧝🏼 elf: medium-light skin tone +1F9DD 1F3FD ; fully-qualified # 🧝🏽 elf: medium skin tone +1F9DD 1F3FE ; fully-qualified # 🧝🏾 elf: medium-dark skin tone +1F9DD 1F3FF ; fully-qualified # 🧝🏿 elf: dark skin tone +1F9DD 200D 2642 FE0F ; fully-qualified # 🧝‍♂️ man elf +1F9DD 200D 2642 ; minimally-qualified # 🧝‍♂ man elf +1F9DD 1F3FB 200D 2642 FE0F ; fully-qualified # 🧝🏻‍♂️ man elf: light skin tone +1F9DD 1F3FB 200D 2642 ; minimally-qualified # 🧝🏻‍♂ man elf: light skin tone +1F9DD 1F3FC 200D 2642 FE0F ; fully-qualified # 🧝🏼‍♂️ man elf: medium-light skin tone +1F9DD 1F3FC 200D 2642 ; minimally-qualified # 🧝🏼‍♂ man elf: medium-light skin tone +1F9DD 1F3FD 200D 2642 FE0F ; fully-qualified # 🧝🏽‍♂️ man elf: medium skin tone +1F9DD 1F3FD 200D 2642 ; minimally-qualified # 🧝🏽‍♂ man elf: medium skin tone +1F9DD 1F3FE 200D 2642 FE0F ; fully-qualified # 🧝🏾‍♂️ man elf: medium-dark skin tone +1F9DD 1F3FE 200D 2642 ; minimally-qualified # 🧝🏾‍♂ man elf: medium-dark skin tone +1F9DD 1F3FF 200D 2642 FE0F ; fully-qualified # 🧝🏿‍♂️ man elf: dark skin tone +1F9DD 1F3FF 200D 2642 ; minimally-qualified # 🧝🏿‍♂ man elf: dark skin tone +1F9DD 200D 2640 FE0F ; fully-qualified # 🧝‍♀️ woman elf +1F9DD 200D 2640 ; minimally-qualified # 🧝‍♀ woman elf +1F9DD 1F3FB 200D 2640 FE0F ; fully-qualified # 🧝🏻‍♀️ woman elf: light skin tone +1F9DD 1F3FB 200D 2640 ; minimally-qualified # 🧝🏻‍♀ woman elf: light skin tone +1F9DD 1F3FC 200D 2640 FE0F ; fully-qualified # 🧝🏼‍♀️ woman elf: medium-light skin tone +1F9DD 1F3FC 200D 2640 ; minimally-qualified # 🧝🏼‍♀ woman elf: medium-light skin tone +1F9DD 1F3FD 200D 2640 FE0F ; fully-qualified # 🧝🏽‍♀️ woman elf: medium skin tone +1F9DD 1F3FD 200D 2640 ; minimally-qualified # 🧝🏽‍♀ woman elf: medium skin tone +1F9DD 1F3FE 200D 2640 FE0F ; fully-qualified # 🧝🏾‍♀️ woman elf: medium-dark skin tone +1F9DD 1F3FE 200D 2640 ; minimally-qualified # 🧝🏾‍♀ woman elf: medium-dark skin tone +1F9DD 1F3FF 200D 2640 FE0F ; fully-qualified # 🧝🏿‍♀️ woman elf: dark skin tone +1F9DD 1F3FF 200D 2640 ; minimally-qualified # 🧝🏿‍♀ woman elf: dark skin tone +1F9DE ; fully-qualified # 🧞 genie +1F9DE 200D 2642 FE0F ; fully-qualified # 🧞‍♂️ man genie +1F9DE 200D 2642 ; minimally-qualified # 🧞‍♂ man genie +1F9DE 200D 2640 FE0F ; fully-qualified # 🧞‍♀️ woman genie +1F9DE 200D 2640 ; minimally-qualified # 🧞‍♀ woman genie +1F9DF ; fully-qualified # 🧟 zombie +1F9DF 200D 2642 FE0F ; fully-qualified # 🧟‍♂️ man zombie +1F9DF 200D 2642 ; minimally-qualified # 🧟‍♂ man zombie +1F9DF 200D 2640 FE0F ; fully-qualified # 🧟‍♀️ woman zombie +1F9DF 200D 2640 ; minimally-qualified # 🧟‍♀ woman zombie + +# subgroup: person-activity +1F486 ; fully-qualified # 💆 person getting massage +1F486 1F3FB ; fully-qualified # 💆🏻 person getting massage: light skin tone +1F486 1F3FC ; fully-qualified # 💆🏼 person getting massage: medium-light skin tone +1F486 1F3FD ; fully-qualified # 💆🏽 person getting massage: medium skin tone +1F486 1F3FE ; fully-qualified # 💆🏾 person getting massage: medium-dark skin tone +1F486 1F3FF ; fully-qualified # 💆🏿 person getting massage: dark skin tone +1F486 200D 2642 FE0F ; fully-qualified # 💆‍♂️ man getting massage +1F486 200D 2642 ; minimally-qualified # 💆‍♂ man getting massage +1F486 1F3FB 200D 2642 FE0F ; fully-qualified # 💆🏻‍♂️ man getting massage: light skin tone +1F486 1F3FB 200D 2642 ; minimally-qualified # 💆🏻‍♂ man getting massage: light skin tone +1F486 1F3FC 200D 2642 FE0F ; fully-qualified # 💆🏼‍♂️ man getting massage: medium-light skin tone +1F486 1F3FC 200D 2642 ; minimally-qualified # 💆🏼‍♂ man getting massage: medium-light skin tone +1F486 1F3FD 200D 2642 FE0F ; fully-qualified # 💆🏽‍♂️ man getting massage: medium skin tone +1F486 1F3FD 200D 2642 ; minimally-qualified # 💆🏽‍♂ man getting massage: medium skin tone +1F486 1F3FE 200D 2642 FE0F ; fully-qualified # 💆🏾‍♂️ man getting massage: medium-dark skin tone +1F486 1F3FE 200D 2642 ; minimally-qualified # 💆🏾‍♂ man getting massage: medium-dark skin tone +1F486 1F3FF 200D 2642 FE0F ; fully-qualified # 💆🏿‍♂️ man getting massage: dark skin tone +1F486 1F3FF 200D 2642 ; minimally-qualified # 💆🏿‍♂ man getting massage: dark skin tone +1F486 200D 2640 FE0F ; fully-qualified # 💆‍♀️ woman getting massage +1F486 200D 2640 ; minimally-qualified # 💆‍♀ woman getting massage +1F486 1F3FB 200D 2640 FE0F ; fully-qualified # 💆🏻‍♀️ woman getting massage: light skin tone +1F486 1F3FB 200D 2640 ; minimally-qualified # 💆🏻‍♀ woman getting massage: light skin tone +1F486 1F3FC 200D 2640 FE0F ; fully-qualified # 💆🏼‍♀️ woman getting massage: medium-light skin tone +1F486 1F3FC 200D 2640 ; minimally-qualified # 💆🏼‍♀ woman getting massage: medium-light skin tone +1F486 1F3FD 200D 2640 FE0F ; fully-qualified # 💆🏽‍♀️ woman getting massage: medium skin tone +1F486 1F3FD 200D 2640 ; minimally-qualified # 💆🏽‍♀ woman getting massage: medium skin tone +1F486 1F3FE 200D 2640 FE0F ; fully-qualified # 💆🏾‍♀️ woman getting massage: medium-dark skin tone +1F486 1F3FE 200D 2640 ; minimally-qualified # 💆🏾‍♀ woman getting massage: medium-dark skin tone +1F486 1F3FF 200D 2640 FE0F ; fully-qualified # 💆🏿‍♀️ woman getting massage: dark skin tone +1F486 1F3FF 200D 2640 ; minimally-qualified # 💆🏿‍♀ woman getting massage: dark skin tone +1F487 ; fully-qualified # 💇 person getting haircut +1F487 1F3FB ; fully-qualified # 💇🏻 person getting haircut: light skin tone +1F487 1F3FC ; fully-qualified # 💇🏼 person getting haircut: medium-light skin tone +1F487 1F3FD ; fully-qualified # 💇🏽 person getting haircut: medium skin tone +1F487 1F3FE ; fully-qualified # 💇🏾 person getting haircut: medium-dark skin tone +1F487 1F3FF ; fully-qualified # 💇🏿 person getting haircut: dark skin tone +1F487 200D 2642 FE0F ; fully-qualified # 💇‍♂️ man getting haircut +1F487 200D 2642 ; minimally-qualified # 💇‍♂ man getting haircut +1F487 1F3FB 200D 2642 FE0F ; fully-qualified # 💇🏻‍♂️ man getting haircut: light skin tone +1F487 1F3FB 200D 2642 ; minimally-qualified # 💇🏻‍♂ man getting haircut: light skin tone +1F487 1F3FC 200D 2642 FE0F ; fully-qualified # 💇🏼‍♂️ man getting haircut: medium-light skin tone +1F487 1F3FC 200D 2642 ; minimally-qualified # 💇🏼‍♂ man getting haircut: medium-light skin tone +1F487 1F3FD 200D 2642 FE0F ; fully-qualified # 💇🏽‍♂️ man getting haircut: medium skin tone +1F487 1F3FD 200D 2642 ; minimally-qualified # 💇🏽‍♂ man getting haircut: medium skin tone +1F487 1F3FE 200D 2642 FE0F ; fully-qualified # 💇🏾‍♂️ man getting haircut: medium-dark skin tone +1F487 1F3FE 200D 2642 ; minimally-qualified # 💇🏾‍♂ man getting haircut: medium-dark skin tone +1F487 1F3FF 200D 2642 FE0F ; fully-qualified # 💇🏿‍♂️ man getting haircut: dark skin tone +1F487 1F3FF 200D 2642 ; minimally-qualified # 💇🏿‍♂ man getting haircut: dark skin tone +1F487 200D 2640 FE0F ; fully-qualified # 💇‍♀️ woman getting haircut +1F487 200D 2640 ; minimally-qualified # 💇‍♀ woman getting haircut +1F487 1F3FB 200D 2640 FE0F ; fully-qualified # 💇🏻‍♀️ woman getting haircut: light skin tone +1F487 1F3FB 200D 2640 ; minimally-qualified # 💇🏻‍♀ woman getting haircut: light skin tone +1F487 1F3FC 200D 2640 FE0F ; fully-qualified # 💇🏼‍♀️ woman getting haircut: medium-light skin tone +1F487 1F3FC 200D 2640 ; minimally-qualified # 💇🏼‍♀ woman getting haircut: medium-light skin tone +1F487 1F3FD 200D 2640 FE0F ; fully-qualified # 💇🏽‍♀️ woman getting haircut: medium skin tone +1F487 1F3FD 200D 2640 ; minimally-qualified # 💇🏽‍♀ woman getting haircut: medium skin tone +1F487 1F3FE 200D 2640 FE0F ; fully-qualified # 💇🏾‍♀️ woman getting haircut: medium-dark skin tone +1F487 1F3FE 200D 2640 ; minimally-qualified # 💇🏾‍♀ woman getting haircut: medium-dark skin tone +1F487 1F3FF 200D 2640 FE0F ; fully-qualified # 💇🏿‍♀️ woman getting haircut: dark skin tone +1F487 1F3FF 200D 2640 ; minimally-qualified # 💇🏿‍♀ woman getting haircut: dark skin tone +1F6B6 ; fully-qualified # 🚶 person walking +1F6B6 1F3FB ; fully-qualified # 🚶🏻 person walking: light skin tone +1F6B6 1F3FC ; fully-qualified # 🚶🏼 person walking: medium-light skin tone +1F6B6 1F3FD ; fully-qualified # 🚶🏽 person walking: medium skin tone +1F6B6 1F3FE ; fully-qualified # 🚶🏾 person walking: medium-dark skin tone +1F6B6 1F3FF ; fully-qualified # 🚶🏿 person walking: dark skin tone +1F6B6 200D 2642 FE0F ; fully-qualified # 🚶‍♂️ man walking +1F6B6 200D 2642 ; minimally-qualified # 🚶‍♂ man walking +1F6B6 1F3FB 200D 2642 FE0F ; fully-qualified # 🚶🏻‍♂️ man walking: light skin tone +1F6B6 1F3FB 200D 2642 ; minimally-qualified # 🚶🏻‍♂ man walking: light skin tone +1F6B6 1F3FC 200D 2642 FE0F ; fully-qualified # 🚶🏼‍♂️ man walking: medium-light skin tone +1F6B6 1F3FC 200D 2642 ; minimally-qualified # 🚶🏼‍♂ man walking: medium-light skin tone +1F6B6 1F3FD 200D 2642 FE0F ; fully-qualified # 🚶🏽‍♂️ man walking: medium skin tone +1F6B6 1F3FD 200D 2642 ; minimally-qualified # 🚶🏽‍♂ man walking: medium skin tone +1F6B6 1F3FE 200D 2642 FE0F ; fully-qualified # 🚶🏾‍♂️ man walking: medium-dark skin tone +1F6B6 1F3FE 200D 2642 ; minimally-qualified # 🚶🏾‍♂ man walking: medium-dark skin tone +1F6B6 1F3FF 200D 2642 FE0F ; fully-qualified # 🚶🏿‍♂️ man walking: dark skin tone +1F6B6 1F3FF 200D 2642 ; minimally-qualified # 🚶🏿‍♂ man walking: dark skin tone +1F6B6 200D 2640 FE0F ; fully-qualified # 🚶‍♀️ woman walking +1F6B6 200D 2640 ; minimally-qualified # 🚶‍♀ woman walking +1F6B6 1F3FB 200D 2640 FE0F ; fully-qualified # 🚶🏻‍♀️ woman walking: light skin tone +1F6B6 1F3FB 200D 2640 ; minimally-qualified # 🚶🏻‍♀ woman walking: light skin tone +1F6B6 1F3FC 200D 2640 FE0F ; fully-qualified # 🚶🏼‍♀️ woman walking: medium-light skin tone +1F6B6 1F3FC 200D 2640 ; minimally-qualified # 🚶🏼‍♀ woman walking: medium-light skin tone +1F6B6 1F3FD 200D 2640 FE0F ; fully-qualified # 🚶🏽‍♀️ woman walking: medium skin tone +1F6B6 1F3FD 200D 2640 ; minimally-qualified # 🚶🏽‍♀ woman walking: medium skin tone +1F6B6 1F3FE 200D 2640 FE0F ; fully-qualified # 🚶🏾‍♀️ woman walking: medium-dark skin tone +1F6B6 1F3FE 200D 2640 ; minimally-qualified # 🚶🏾‍♀ woman walking: medium-dark skin tone +1F6B6 1F3FF 200D 2640 FE0F ; fully-qualified # 🚶🏿‍♀️ woman walking: dark skin tone +1F6B6 1F3FF 200D 2640 ; minimally-qualified # 🚶🏿‍♀ woman walking: dark skin tone +1F9CD ; fully-qualified # 🧍 person standing +1F9CD 1F3FB ; fully-qualified # 🧍🏻 person standing: light skin tone +1F9CD 1F3FC ; fully-qualified # 🧍🏼 person standing: medium-light skin tone +1F9CD 1F3FD ; fully-qualified # 🧍🏽 person standing: medium skin tone +1F9CD 1F3FE ; fully-qualified # 🧍🏾 person standing: medium-dark skin tone +1F9CD 1F3FF ; fully-qualified # 🧍🏿 person standing: dark skin tone +1F9CD 200D 2642 FE0F ; fully-qualified # 🧍‍♂️ man standing +1F9CD 200D 2642 ; minimally-qualified # 🧍‍♂ man standing +1F9CD 1F3FB 200D 2642 FE0F ; fully-qualified # 🧍🏻‍♂️ man standing: light skin tone +1F9CD 1F3FB 200D 2642 ; minimally-qualified # 🧍🏻‍♂ man standing: light skin tone +1F9CD 1F3FC 200D 2642 FE0F ; fully-qualified # 🧍🏼‍♂️ man standing: medium-light skin tone +1F9CD 1F3FC 200D 2642 ; minimally-qualified # 🧍🏼‍♂ man standing: medium-light skin tone +1F9CD 1F3FD 200D 2642 FE0F ; fully-qualified # 🧍🏽‍♂️ man standing: medium skin tone +1F9CD 1F3FD 200D 2642 ; minimally-qualified # 🧍🏽‍♂ man standing: medium skin tone +1F9CD 1F3FE 200D 2642 FE0F ; fully-qualified # 🧍🏾‍♂️ man standing: medium-dark skin tone +1F9CD 1F3FE 200D 2642 ; minimally-qualified # 🧍🏾‍♂ man standing: medium-dark skin tone +1F9CD 1F3FF 200D 2642 FE0F ; fully-qualified # 🧍🏿‍♂️ man standing: dark skin tone +1F9CD 1F3FF 200D 2642 ; minimally-qualified # 🧍🏿‍♂ man standing: dark skin tone +1F9CD 200D 2640 FE0F ; fully-qualified # 🧍‍♀️ woman standing +1F9CD 200D 2640 ; minimally-qualified # 🧍‍♀ woman standing +1F9CD 1F3FB 200D 2640 FE0F ; fully-qualified # 🧍🏻‍♀️ woman standing: light skin tone +1F9CD 1F3FB 200D 2640 ; minimally-qualified # 🧍🏻‍♀ woman standing: light skin tone +1F9CD 1F3FC 200D 2640 FE0F ; fully-qualified # 🧍🏼‍♀️ woman standing: medium-light skin tone +1F9CD 1F3FC 200D 2640 ; minimally-qualified # 🧍🏼‍♀ woman standing: medium-light skin tone +1F9CD 1F3FD 200D 2640 FE0F ; fully-qualified # 🧍🏽‍♀️ woman standing: medium skin tone +1F9CD 1F3FD 200D 2640 ; minimally-qualified # 🧍🏽‍♀ woman standing: medium skin tone +1F9CD 1F3FE 200D 2640 FE0F ; fully-qualified # 🧍🏾‍♀️ woman standing: medium-dark skin tone +1F9CD 1F3FE 200D 2640 ; minimally-qualified # 🧍🏾‍♀ woman standing: medium-dark skin tone +1F9CD 1F3FF 200D 2640 FE0F ; fully-qualified # 🧍🏿‍♀️ woman standing: dark skin tone +1F9CD 1F3FF 200D 2640 ; minimally-qualified # 🧍🏿‍♀ woman standing: dark skin tone +1F9CE ; fully-qualified # 🧎 person kneeling +1F9CE 1F3FB ; fully-qualified # 🧎🏻 person kneeling: light skin tone +1F9CE 1F3FC ; fully-qualified # 🧎🏼 person kneeling: medium-light skin tone +1F9CE 1F3FD ; fully-qualified # 🧎🏽 person kneeling: medium skin tone +1F9CE 1F3FE ; fully-qualified # 🧎🏾 person kneeling: medium-dark skin tone +1F9CE 1F3FF ; fully-qualified # 🧎🏿 person kneeling: dark skin tone +1F9CE 200D 2642 FE0F ; fully-qualified # 🧎‍♂️ man kneeling +1F9CE 200D 2642 ; minimally-qualified # 🧎‍♂ man kneeling +1F9CE 1F3FB 200D 2642 FE0F ; fully-qualified # 🧎🏻‍♂️ man kneeling: light skin tone +1F9CE 1F3FB 200D 2642 ; minimally-qualified # 🧎🏻‍♂ man kneeling: light skin tone +1F9CE 1F3FC 200D 2642 FE0F ; fully-qualified # 🧎🏼‍♂️ man kneeling: medium-light skin tone +1F9CE 1F3FC 200D 2642 ; minimally-qualified # 🧎🏼‍♂ man kneeling: medium-light skin tone +1F9CE 1F3FD 200D 2642 FE0F ; fully-qualified # 🧎🏽‍♂️ man kneeling: medium skin tone +1F9CE 1F3FD 200D 2642 ; minimally-qualified # 🧎🏽‍♂ man kneeling: medium skin tone +1F9CE 1F3FE 200D 2642 FE0F ; fully-qualified # 🧎🏾‍♂️ man kneeling: medium-dark skin tone +1F9CE 1F3FE 200D 2642 ; minimally-qualified # 🧎🏾‍♂ man kneeling: medium-dark skin tone +1F9CE 1F3FF 200D 2642 FE0F ; fully-qualified # 🧎🏿‍♂️ man kneeling: dark skin tone +1F9CE 1F3FF 200D 2642 ; minimally-qualified # 🧎🏿‍♂ man kneeling: dark skin tone +1F9CE 200D 2640 FE0F ; fully-qualified # 🧎‍♀️ woman kneeling +1F9CE 200D 2640 ; minimally-qualified # 🧎‍♀ woman kneeling +1F9CE 1F3FB 200D 2640 FE0F ; fully-qualified # 🧎🏻‍♀️ woman kneeling: light skin tone +1F9CE 1F3FB 200D 2640 ; minimally-qualified # 🧎🏻‍♀ woman kneeling: light skin tone +1F9CE 1F3FC 200D 2640 FE0F ; fully-qualified # 🧎🏼‍♀️ woman kneeling: medium-light skin tone +1F9CE 1F3FC 200D 2640 ; minimally-qualified # 🧎🏼‍♀ woman kneeling: medium-light skin tone +1F9CE 1F3FD 200D 2640 FE0F ; fully-qualified # 🧎🏽‍♀️ woman kneeling: medium skin tone +1F9CE 1F3FD 200D 2640 ; minimally-qualified # 🧎🏽‍♀ woman kneeling: medium skin tone +1F9CE 1F3FE 200D 2640 FE0F ; fully-qualified # 🧎🏾‍♀️ woman kneeling: medium-dark skin tone +1F9CE 1F3FE 200D 2640 ; minimally-qualified # 🧎🏾‍♀ woman kneeling: medium-dark skin tone +1F9CE 1F3FF 200D 2640 FE0F ; fully-qualified # 🧎🏿‍♀️ woman kneeling: dark skin tone +1F9CE 1F3FF 200D 2640 ; minimally-qualified # 🧎🏿‍♀ woman kneeling: dark skin tone +1F468 200D 1F9AF ; fully-qualified # 👨‍🦯 man with probing cane +1F468 1F3FB 200D 1F9AF ; fully-qualified # 👨🏻‍🦯 man with probing cane: light skin tone +1F468 1F3FC 200D 1F9AF ; fully-qualified # 👨🏼‍🦯 man with probing cane: medium-light skin tone +1F468 1F3FD 200D 1F9AF ; fully-qualified # 👨🏽‍🦯 man with probing cane: medium skin tone +1F468 1F3FE 200D 1F9AF ; fully-qualified # 👨🏾‍🦯 man with probing cane: medium-dark skin tone +1F468 1F3FF 200D 1F9AF ; fully-qualified # 👨🏿‍🦯 man with probing cane: dark skin tone +1F469 200D 1F9AF ; fully-qualified # 👩‍🦯 woman with probing cane +1F469 1F3FB 200D 1F9AF ; fully-qualified # 👩🏻‍🦯 woman with probing cane: light skin tone +1F469 1F3FC 200D 1F9AF ; fully-qualified # 👩🏼‍🦯 woman with probing cane: medium-light skin tone +1F469 1F3FD 200D 1F9AF ; fully-qualified # 👩🏽‍🦯 woman with probing cane: medium skin tone +1F469 1F3FE 200D 1F9AF ; fully-qualified # 👩🏾‍🦯 woman with probing cane: medium-dark skin tone +1F469 1F3FF 200D 1F9AF ; fully-qualified # 👩🏿‍🦯 woman with probing cane: dark skin tone +1F468 200D 1F9BC ; fully-qualified # 👨‍🦼 man in motorized wheelchair +1F468 1F3FB 200D 1F9BC ; fully-qualified # 👨🏻‍🦼 man in motorized wheelchair: light skin tone +1F468 1F3FC 200D 1F9BC ; fully-qualified # 👨🏼‍🦼 man in motorized wheelchair: medium-light skin tone +1F468 1F3FD 200D 1F9BC ; fully-qualified # 👨🏽‍🦼 man in motorized wheelchair: medium skin tone +1F468 1F3FE 200D 1F9BC ; fully-qualified # 👨🏾‍🦼 man in motorized wheelchair: medium-dark skin tone +1F468 1F3FF 200D 1F9BC ; fully-qualified # 👨🏿‍🦼 man in motorized wheelchair: dark skin tone +1F469 200D 1F9BC ; fully-qualified # 👩‍🦼 woman in motorized wheelchair +1F469 1F3FB 200D 1F9BC ; fully-qualified # 👩🏻‍🦼 woman in motorized wheelchair: light skin tone +1F469 1F3FC 200D 1F9BC ; fully-qualified # 👩🏼‍🦼 woman in motorized wheelchair: medium-light skin tone +1F469 1F3FD 200D 1F9BC ; fully-qualified # 👩🏽‍🦼 woman in motorized wheelchair: medium skin tone +1F469 1F3FE 200D 1F9BC ; fully-qualified # 👩🏾‍🦼 woman in motorized wheelchair: medium-dark skin tone +1F469 1F3FF 200D 1F9BC ; fully-qualified # 👩🏿‍🦼 woman in motorized wheelchair: dark skin tone +1F468 200D 1F9BD ; fully-qualified # 👨‍🦽 man in manual wheelchair +1F468 1F3FB 200D 1F9BD ; fully-qualified # 👨🏻‍🦽 man in manual wheelchair: light skin tone +1F468 1F3FC 200D 1F9BD ; fully-qualified # 👨🏼‍🦽 man in manual wheelchair: medium-light skin tone +1F468 1F3FD 200D 1F9BD ; fully-qualified # 👨🏽‍🦽 man in manual wheelchair: medium skin tone +1F468 1F3FE 200D 1F9BD ; fully-qualified # 👨🏾‍🦽 man in manual wheelchair: medium-dark skin tone +1F468 1F3FF 200D 1F9BD ; fully-qualified # 👨🏿‍🦽 man in manual wheelchair: dark skin tone +1F469 200D 1F9BD ; fully-qualified # 👩‍🦽 woman in manual wheelchair +1F469 1F3FB 200D 1F9BD ; fully-qualified # 👩🏻‍🦽 woman in manual wheelchair: light skin tone +1F469 1F3FC 200D 1F9BD ; fully-qualified # 👩🏼‍🦽 woman in manual wheelchair: medium-light skin tone +1F469 1F3FD 200D 1F9BD ; fully-qualified # 👩🏽‍🦽 woman in manual wheelchair: medium skin tone +1F469 1F3FE 200D 1F9BD ; fully-qualified # 👩🏾‍🦽 woman in manual wheelchair: medium-dark skin tone +1F469 1F3FF 200D 1F9BD ; fully-qualified # 👩🏿‍🦽 woman in manual wheelchair: dark skin tone +1F3C3 ; fully-qualified # 🏃 person running +1F3C3 1F3FB ; fully-qualified # 🏃🏻 person running: light skin tone +1F3C3 1F3FC ; fully-qualified # 🏃🏼 person running: medium-light skin tone +1F3C3 1F3FD ; fully-qualified # 🏃🏽 person running: medium skin tone +1F3C3 1F3FE ; fully-qualified # 🏃🏾 person running: medium-dark skin tone +1F3C3 1F3FF ; fully-qualified # 🏃🏿 person running: dark skin tone +1F3C3 200D 2642 FE0F ; fully-qualified # 🏃‍♂️ man running +1F3C3 200D 2642 ; minimally-qualified # 🏃‍♂ man running +1F3C3 1F3FB 200D 2642 FE0F ; fully-qualified # 🏃🏻‍♂️ man running: light skin tone +1F3C3 1F3FB 200D 2642 ; minimally-qualified # 🏃🏻‍♂ man running: light skin tone +1F3C3 1F3FC 200D 2642 FE0F ; fully-qualified # 🏃🏼‍♂️ man running: medium-light skin tone +1F3C3 1F3FC 200D 2642 ; minimally-qualified # 🏃🏼‍♂ man running: medium-light skin tone +1F3C3 1F3FD 200D 2642 FE0F ; fully-qualified # 🏃🏽‍♂️ man running: medium skin tone +1F3C3 1F3FD 200D 2642 ; minimally-qualified # 🏃🏽‍♂ man running: medium skin tone +1F3C3 1F3FE 200D 2642 FE0F ; fully-qualified # 🏃🏾‍♂️ man running: medium-dark skin tone +1F3C3 1F3FE 200D 2642 ; minimally-qualified # 🏃🏾‍♂ man running: medium-dark skin tone +1F3C3 1F3FF 200D 2642 FE0F ; fully-qualified # 🏃🏿‍♂️ man running: dark skin tone +1F3C3 1F3FF 200D 2642 ; minimally-qualified # 🏃🏿‍♂ man running: dark skin tone +1F3C3 200D 2640 FE0F ; fully-qualified # 🏃‍♀️ woman running +1F3C3 200D 2640 ; minimally-qualified # 🏃‍♀ woman running +1F3C3 1F3FB 200D 2640 FE0F ; fully-qualified # 🏃🏻‍♀️ woman running: light skin tone +1F3C3 1F3FB 200D 2640 ; minimally-qualified # 🏃🏻‍♀ woman running: light skin tone +1F3C3 1F3FC 200D 2640 FE0F ; fully-qualified # 🏃🏼‍♀️ woman running: medium-light skin tone +1F3C3 1F3FC 200D 2640 ; minimally-qualified # 🏃🏼‍♀ woman running: medium-light skin tone +1F3C3 1F3FD 200D 2640 FE0F ; fully-qualified # 🏃🏽‍♀️ woman running: medium skin tone +1F3C3 1F3FD 200D 2640 ; minimally-qualified # 🏃🏽‍♀ woman running: medium skin tone +1F3C3 1F3FE 200D 2640 FE0F ; fully-qualified # 🏃🏾‍♀️ woman running: medium-dark skin tone +1F3C3 1F3FE 200D 2640 ; minimally-qualified # 🏃🏾‍♀ woman running: medium-dark skin tone +1F3C3 1F3FF 200D 2640 FE0F ; fully-qualified # 🏃🏿‍♀️ woman running: dark skin tone +1F3C3 1F3FF 200D 2640 ; minimally-qualified # 🏃🏿‍♀ woman running: dark skin tone +1F483 ; fully-qualified # 💃 woman dancing +1F483 1F3FB ; fully-qualified # 💃🏻 woman dancing: light skin tone +1F483 1F3FC ; fully-qualified # 💃🏼 woman dancing: medium-light skin tone +1F483 1F3FD ; fully-qualified # 💃🏽 woman dancing: medium skin tone +1F483 1F3FE ; fully-qualified # 💃🏾 woman dancing: medium-dark skin tone +1F483 1F3FF ; fully-qualified # 💃🏿 woman dancing: dark skin tone +1F57A ; fully-qualified # 🕺 man dancing +1F57A 1F3FB ; fully-qualified # 🕺🏻 man dancing: light skin tone +1F57A 1F3FC ; fully-qualified # 🕺🏼 man dancing: medium-light skin tone +1F57A 1F3FD ; fully-qualified # 🕺🏽 man dancing: medium skin tone +1F57A 1F3FE ; fully-qualified # 🕺🏾 man dancing: medium-dark skin tone +1F57A 1F3FF ; fully-qualified # 🕺🏿 man dancing: dark skin tone +1F574 FE0F ; fully-qualified # 🕴️ man in suit levitating +1F574 ; unqualified # 🕴 man in suit levitating +1F574 1F3FB ; fully-qualified # 🕴🏻 man in suit levitating: light skin tone +1F574 1F3FC ; fully-qualified # 🕴🏼 man in suit levitating: medium-light skin tone +1F574 1F3FD ; fully-qualified # 🕴🏽 man in suit levitating: medium skin tone +1F574 1F3FE ; fully-qualified # 🕴🏾 man in suit levitating: medium-dark skin tone +1F574 1F3FF ; fully-qualified # 🕴🏿 man in suit levitating: dark skin tone +1F46F ; fully-qualified # 👯 people with bunny ears +1F46F 200D 2642 FE0F ; fully-qualified # 👯‍♂️ men with bunny ears +1F46F 200D 2642 ; minimally-qualified # 👯‍♂ men with bunny ears +1F46F 200D 2640 FE0F ; fully-qualified # 👯‍♀️ women with bunny ears +1F46F 200D 2640 ; minimally-qualified # 👯‍♀ women with bunny ears +1F9D6 ; fully-qualified # 🧖 person in steamy room +1F9D6 1F3FB ; fully-qualified # 🧖🏻 person in steamy room: light skin tone +1F9D6 1F3FC ; fully-qualified # 🧖🏼 person in steamy room: medium-light skin tone +1F9D6 1F3FD ; fully-qualified # 🧖🏽 person in steamy room: medium skin tone +1F9D6 1F3FE ; fully-qualified # 🧖🏾 person in steamy room: medium-dark skin tone +1F9D6 1F3FF ; fully-qualified # 🧖🏿 person in steamy room: dark skin tone +1F9D6 200D 2642 FE0F ; fully-qualified # 🧖‍♂️ man in steamy room +1F9D6 200D 2642 ; minimally-qualified # 🧖‍♂ man in steamy room +1F9D6 1F3FB 200D 2642 FE0F ; fully-qualified # 🧖🏻‍♂️ man in steamy room: light skin tone +1F9D6 1F3FB 200D 2642 ; minimally-qualified # 🧖🏻‍♂ man in steamy room: light skin tone +1F9D6 1F3FC 200D 2642 FE0F ; fully-qualified # 🧖🏼‍♂️ man in steamy room: medium-light skin tone +1F9D6 1F3FC 200D 2642 ; minimally-qualified # 🧖🏼‍♂ man in steamy room: medium-light skin tone +1F9D6 1F3FD 200D 2642 FE0F ; fully-qualified # 🧖🏽‍♂️ man in steamy room: medium skin tone +1F9D6 1F3FD 200D 2642 ; minimally-qualified # 🧖🏽‍♂ man in steamy room: medium skin tone +1F9D6 1F3FE 200D 2642 FE0F ; fully-qualified # 🧖🏾‍♂️ man in steamy room: medium-dark skin tone +1F9D6 1F3FE 200D 2642 ; minimally-qualified # 🧖🏾‍♂ man in steamy room: medium-dark skin tone +1F9D6 1F3FF 200D 2642 FE0F ; fully-qualified # 🧖🏿‍♂️ man in steamy room: dark skin tone +1F9D6 1F3FF 200D 2642 ; minimally-qualified # 🧖🏿‍♂ man in steamy room: dark skin tone +1F9D6 200D 2640 FE0F ; fully-qualified # 🧖‍♀️ woman in steamy room +1F9D6 200D 2640 ; minimally-qualified # 🧖‍♀ woman in steamy room +1F9D6 1F3FB 200D 2640 FE0F ; fully-qualified # 🧖🏻‍♀️ woman in steamy room: light skin tone +1F9D6 1F3FB 200D 2640 ; minimally-qualified # 🧖🏻‍♀ woman in steamy room: light skin tone +1F9D6 1F3FC 200D 2640 FE0F ; fully-qualified # 🧖🏼‍♀️ woman in steamy room: medium-light skin tone +1F9D6 1F3FC 200D 2640 ; minimally-qualified # 🧖🏼‍♀ woman in steamy room: medium-light skin tone +1F9D6 1F3FD 200D 2640 FE0F ; fully-qualified # 🧖🏽‍♀️ woman in steamy room: medium skin tone +1F9D6 1F3FD 200D 2640 ; minimally-qualified # 🧖🏽‍♀ woman in steamy room: medium skin tone +1F9D6 1F3FE 200D 2640 FE0F ; fully-qualified # 🧖🏾‍♀️ woman in steamy room: medium-dark skin tone +1F9D6 1F3FE 200D 2640 ; minimally-qualified # 🧖🏾‍♀ woman in steamy room: medium-dark skin tone +1F9D6 1F3FF 200D 2640 FE0F ; fully-qualified # 🧖🏿‍♀️ woman in steamy room: dark skin tone +1F9D6 1F3FF 200D 2640 ; minimally-qualified # 🧖🏿‍♀ woman in steamy room: dark skin tone +1F9D7 ; fully-qualified # 🧗 person climbing +1F9D7 1F3FB ; fully-qualified # 🧗🏻 person climbing: light skin tone +1F9D7 1F3FC ; fully-qualified # 🧗🏼 person climbing: medium-light skin tone +1F9D7 1F3FD ; fully-qualified # 🧗🏽 person climbing: medium skin tone +1F9D7 1F3FE ; fully-qualified # 🧗🏾 person climbing: medium-dark skin tone +1F9D7 1F3FF ; fully-qualified # 🧗🏿 person climbing: dark skin tone +1F9D7 200D 2642 FE0F ; fully-qualified # 🧗‍♂️ man climbing +1F9D7 200D 2642 ; minimally-qualified # 🧗‍♂ man climbing +1F9D7 1F3FB 200D 2642 FE0F ; fully-qualified # 🧗🏻‍♂️ man climbing: light skin tone +1F9D7 1F3FB 200D 2642 ; minimally-qualified # 🧗🏻‍♂ man climbing: light skin tone +1F9D7 1F3FC 200D 2642 FE0F ; fully-qualified # 🧗🏼‍♂️ man climbing: medium-light skin tone +1F9D7 1F3FC 200D 2642 ; minimally-qualified # 🧗🏼‍♂ man climbing: medium-light skin tone +1F9D7 1F3FD 200D 2642 FE0F ; fully-qualified # 🧗🏽‍♂️ man climbing: medium skin tone +1F9D7 1F3FD 200D 2642 ; minimally-qualified # 🧗🏽‍♂ man climbing: medium skin tone +1F9D7 1F3FE 200D 2642 FE0F ; fully-qualified # 🧗🏾‍♂️ man climbing: medium-dark skin tone +1F9D7 1F3FE 200D 2642 ; minimally-qualified # 🧗🏾‍♂ man climbing: medium-dark skin tone +1F9D7 1F3FF 200D 2642 FE0F ; fully-qualified # 🧗🏿‍♂️ man climbing: dark skin tone +1F9D7 1F3FF 200D 2642 ; minimally-qualified # 🧗🏿‍♂ man climbing: dark skin tone +1F9D7 200D 2640 FE0F ; fully-qualified # 🧗‍♀️ woman climbing +1F9D7 200D 2640 ; minimally-qualified # 🧗‍♀ woman climbing +1F9D7 1F3FB 200D 2640 FE0F ; fully-qualified # 🧗🏻‍♀️ woman climbing: light skin tone +1F9D7 1F3FB 200D 2640 ; minimally-qualified # 🧗🏻‍♀ woman climbing: light skin tone +1F9D7 1F3FC 200D 2640 FE0F ; fully-qualified # 🧗🏼‍♀️ woman climbing: medium-light skin tone +1F9D7 1F3FC 200D 2640 ; minimally-qualified # 🧗🏼‍♀ woman climbing: medium-light skin tone +1F9D7 1F3FD 200D 2640 FE0F ; fully-qualified # 🧗🏽‍♀️ woman climbing: medium skin tone +1F9D7 1F3FD 200D 2640 ; minimally-qualified # 🧗🏽‍♀ woman climbing: medium skin tone +1F9D7 1F3FE 200D 2640 FE0F ; fully-qualified # 🧗🏾‍♀️ woman climbing: medium-dark skin tone +1F9D7 1F3FE 200D 2640 ; minimally-qualified # 🧗🏾‍♀ woman climbing: medium-dark skin tone +1F9D7 1F3FF 200D 2640 FE0F ; fully-qualified # 🧗🏿‍♀️ woman climbing: dark skin tone +1F9D7 1F3FF 200D 2640 ; minimally-qualified # 🧗🏿‍♀ woman climbing: dark skin tone + +# subgroup: person-sport +1F93A ; fully-qualified # 🤺 person fencing +1F3C7 ; fully-qualified # 🏇 horse racing +1F3C7 1F3FB ; fully-qualified # 🏇🏻 horse racing: light skin tone +1F3C7 1F3FC ; fully-qualified # 🏇🏼 horse racing: medium-light skin tone +1F3C7 1F3FD ; fully-qualified # 🏇🏽 horse racing: medium skin tone +1F3C7 1F3FE ; fully-qualified # 🏇🏾 horse racing: medium-dark skin tone +1F3C7 1F3FF ; fully-qualified # 🏇🏿 horse racing: dark skin tone +26F7 FE0F ; fully-qualified # ⛷️ skier +26F7 ; unqualified # ⛷ skier +1F3C2 ; fully-qualified # 🏂 snowboarder +1F3C2 1F3FB ; fully-qualified # 🏂🏻 snowboarder: light skin tone +1F3C2 1F3FC ; fully-qualified # 🏂🏼 snowboarder: medium-light skin tone +1F3C2 1F3FD ; fully-qualified # 🏂🏽 snowboarder: medium skin tone +1F3C2 1F3FE ; fully-qualified # 🏂🏾 snowboarder: medium-dark skin tone +1F3C2 1F3FF ; fully-qualified # 🏂🏿 snowboarder: dark skin tone +1F3CC FE0F ; fully-qualified # 🏌️ person golfing +1F3CC ; unqualified # 🏌 person golfing +1F3CC 1F3FB ; fully-qualified # 🏌🏻 person golfing: light skin tone +1F3CC 1F3FC ; fully-qualified # 🏌🏼 person golfing: medium-light skin tone +1F3CC 1F3FD ; fully-qualified # 🏌🏽 person golfing: medium skin tone +1F3CC 1F3FE ; fully-qualified # 🏌🏾 person golfing: medium-dark skin tone +1F3CC 1F3FF ; fully-qualified # 🏌🏿 person golfing: dark skin tone +1F3CC FE0F 200D 2642 FE0F ; fully-qualified # 🏌️‍♂️ man golfing +1F3CC 200D 2642 FE0F ; unqualified # 🏌‍♂️ man golfing +1F3CC FE0F 200D 2642 ; unqualified # 🏌️‍♂ man golfing +1F3CC 200D 2642 ; unqualified # 🏌‍♂ man golfing +1F3CC 1F3FB 200D 2642 FE0F ; fully-qualified # 🏌🏻‍♂️ man golfing: light skin tone +1F3CC 1F3FB 200D 2642 ; minimally-qualified # 🏌🏻‍♂ man golfing: light skin tone +1F3CC 1F3FC 200D 2642 FE0F ; fully-qualified # 🏌🏼‍♂️ man golfing: medium-light skin tone +1F3CC 1F3FC 200D 2642 ; minimally-qualified # 🏌🏼‍♂ man golfing: medium-light skin tone +1F3CC 1F3FD 200D 2642 FE0F ; fully-qualified # 🏌🏽‍♂️ man golfing: medium skin tone +1F3CC 1F3FD 200D 2642 ; minimally-qualified # 🏌🏽‍♂ man golfing: medium skin tone +1F3CC 1F3FE 200D 2642 FE0F ; fully-qualified # 🏌🏾‍♂️ man golfing: medium-dark skin tone +1F3CC 1F3FE 200D 2642 ; minimally-qualified # 🏌🏾‍♂ man golfing: medium-dark skin tone +1F3CC 1F3FF 200D 2642 FE0F ; fully-qualified # 🏌🏿‍♂️ man golfing: dark skin tone +1F3CC 1F3FF 200D 2642 ; minimally-qualified # 🏌🏿‍♂ man golfing: dark skin tone +1F3CC FE0F 200D 2640 FE0F ; fully-qualified # 🏌️‍♀️ woman golfing +1F3CC 200D 2640 FE0F ; unqualified # 🏌‍♀️ woman golfing +1F3CC FE0F 200D 2640 ; unqualified # 🏌️‍♀ woman golfing +1F3CC 200D 2640 ; unqualified # 🏌‍♀ woman golfing +1F3CC 1F3FB 200D 2640 FE0F ; fully-qualified # 🏌🏻‍♀️ woman golfing: light skin tone +1F3CC 1F3FB 200D 2640 ; minimally-qualified # 🏌🏻‍♀ woman golfing: light skin tone +1F3CC 1F3FC 200D 2640 FE0F ; fully-qualified # 🏌🏼‍♀️ woman golfing: medium-light skin tone +1F3CC 1F3FC 200D 2640 ; minimally-qualified # 🏌🏼‍♀ woman golfing: medium-light skin tone +1F3CC 1F3FD 200D 2640 FE0F ; fully-qualified # 🏌🏽‍♀️ woman golfing: medium skin tone +1F3CC 1F3FD 200D 2640 ; minimally-qualified # 🏌🏽‍♀ woman golfing: medium skin tone +1F3CC 1F3FE 200D 2640 FE0F ; fully-qualified # 🏌🏾‍♀️ woman golfing: medium-dark skin tone +1F3CC 1F3FE 200D 2640 ; minimally-qualified # 🏌🏾‍♀ woman golfing: medium-dark skin tone +1F3CC 1F3FF 200D 2640 FE0F ; fully-qualified # 🏌🏿‍♀️ woman golfing: dark skin tone +1F3CC 1F3FF 200D 2640 ; minimally-qualified # 🏌🏿‍♀ woman golfing: dark skin tone +1F3C4 ; fully-qualified # 🏄 person surfing +1F3C4 1F3FB ; fully-qualified # 🏄🏻 person surfing: light skin tone +1F3C4 1F3FC ; fully-qualified # 🏄🏼 person surfing: medium-light skin tone +1F3C4 1F3FD ; fully-qualified # 🏄🏽 person surfing: medium skin tone +1F3C4 1F3FE ; fully-qualified # 🏄🏾 person surfing: medium-dark skin tone +1F3C4 1F3FF ; fully-qualified # 🏄🏿 person surfing: dark skin tone +1F3C4 200D 2642 FE0F ; fully-qualified # 🏄‍♂️ man surfing +1F3C4 200D 2642 ; minimally-qualified # 🏄‍♂ man surfing +1F3C4 1F3FB 200D 2642 FE0F ; fully-qualified # 🏄🏻‍♂️ man surfing: light skin tone +1F3C4 1F3FB 200D 2642 ; minimally-qualified # 🏄🏻‍♂ man surfing: light skin tone +1F3C4 1F3FC 200D 2642 FE0F ; fully-qualified # 🏄🏼‍♂️ man surfing: medium-light skin tone +1F3C4 1F3FC 200D 2642 ; minimally-qualified # 🏄🏼‍♂ man surfing: medium-light skin tone +1F3C4 1F3FD 200D 2642 FE0F ; fully-qualified # 🏄🏽‍♂️ man surfing: medium skin tone +1F3C4 1F3FD 200D 2642 ; minimally-qualified # 🏄🏽‍♂ man surfing: medium skin tone +1F3C4 1F3FE 200D 2642 FE0F ; fully-qualified # 🏄🏾‍♂️ man surfing: medium-dark skin tone +1F3C4 1F3FE 200D 2642 ; minimally-qualified # 🏄🏾‍♂ man surfing: medium-dark skin tone +1F3C4 1F3FF 200D 2642 FE0F ; fully-qualified # 🏄🏿‍♂️ man surfing: dark skin tone +1F3C4 1F3FF 200D 2642 ; minimally-qualified # 🏄🏿‍♂ man surfing: dark skin tone +1F3C4 200D 2640 FE0F ; fully-qualified # 🏄‍♀️ woman surfing +1F3C4 200D 2640 ; minimally-qualified # 🏄‍♀ woman surfing +1F3C4 1F3FB 200D 2640 FE0F ; fully-qualified # 🏄🏻‍♀️ woman surfing: light skin tone +1F3C4 1F3FB 200D 2640 ; minimally-qualified # 🏄🏻‍♀ woman surfing: light skin tone +1F3C4 1F3FC 200D 2640 FE0F ; fully-qualified # 🏄🏼‍♀️ woman surfing: medium-light skin tone +1F3C4 1F3FC 200D 2640 ; minimally-qualified # 🏄🏼‍♀ woman surfing: medium-light skin tone +1F3C4 1F3FD 200D 2640 FE0F ; fully-qualified # 🏄🏽‍♀️ woman surfing: medium skin tone +1F3C4 1F3FD 200D 2640 ; minimally-qualified # 🏄🏽‍♀ woman surfing: medium skin tone +1F3C4 1F3FE 200D 2640 FE0F ; fully-qualified # 🏄🏾‍♀️ woman surfing: medium-dark skin tone +1F3C4 1F3FE 200D 2640 ; minimally-qualified # 🏄🏾‍♀ woman surfing: medium-dark skin tone +1F3C4 1F3FF 200D 2640 FE0F ; fully-qualified # 🏄🏿‍♀️ woman surfing: dark skin tone +1F3C4 1F3FF 200D 2640 ; minimally-qualified # 🏄🏿‍♀ woman surfing: dark skin tone +1F6A3 ; fully-qualified # 🚣 person rowing boat +1F6A3 1F3FB ; fully-qualified # 🚣🏻 person rowing boat: light skin tone +1F6A3 1F3FC ; fully-qualified # 🚣🏼 person rowing boat: medium-light skin tone +1F6A3 1F3FD ; fully-qualified # 🚣🏽 person rowing boat: medium skin tone +1F6A3 1F3FE ; fully-qualified # 🚣🏾 person rowing boat: medium-dark skin tone +1F6A3 1F3FF ; fully-qualified # 🚣🏿 person rowing boat: dark skin tone +1F6A3 200D 2642 FE0F ; fully-qualified # 🚣‍♂️ man rowing boat +1F6A3 200D 2642 ; minimally-qualified # 🚣‍♂ man rowing boat +1F6A3 1F3FB 200D 2642 FE0F ; fully-qualified # 🚣🏻‍♂️ man rowing boat: light skin tone +1F6A3 1F3FB 200D 2642 ; minimally-qualified # 🚣🏻‍♂ man rowing boat: light skin tone +1F6A3 1F3FC 200D 2642 FE0F ; fully-qualified # 🚣🏼‍♂️ man rowing boat: medium-light skin tone +1F6A3 1F3FC 200D 2642 ; minimally-qualified # 🚣🏼‍♂ man rowing boat: medium-light skin tone +1F6A3 1F3FD 200D 2642 FE0F ; fully-qualified # 🚣🏽‍♂️ man rowing boat: medium skin tone +1F6A3 1F3FD 200D 2642 ; minimally-qualified # 🚣🏽‍♂ man rowing boat: medium skin tone +1F6A3 1F3FE 200D 2642 FE0F ; fully-qualified # 🚣🏾‍♂️ man rowing boat: medium-dark skin tone +1F6A3 1F3FE 200D 2642 ; minimally-qualified # 🚣🏾‍♂ man rowing boat: medium-dark skin tone +1F6A3 1F3FF 200D 2642 FE0F ; fully-qualified # 🚣🏿‍♂️ man rowing boat: dark skin tone +1F6A3 1F3FF 200D 2642 ; minimally-qualified # 🚣🏿‍♂ man rowing boat: dark skin tone +1F6A3 200D 2640 FE0F ; fully-qualified # 🚣‍♀️ woman rowing boat +1F6A3 200D 2640 ; minimally-qualified # 🚣‍♀ woman rowing boat +1F6A3 1F3FB 200D 2640 FE0F ; fully-qualified # 🚣🏻‍♀️ woman rowing boat: light skin tone +1F6A3 1F3FB 200D 2640 ; minimally-qualified # 🚣🏻‍♀ woman rowing boat: light skin tone +1F6A3 1F3FC 200D 2640 FE0F ; fully-qualified # 🚣🏼‍♀️ woman rowing boat: medium-light skin tone +1F6A3 1F3FC 200D 2640 ; minimally-qualified # 🚣🏼‍♀ woman rowing boat: medium-light skin tone +1F6A3 1F3FD 200D 2640 FE0F ; fully-qualified # 🚣🏽‍♀️ woman rowing boat: medium skin tone +1F6A3 1F3FD 200D 2640 ; minimally-qualified # 🚣🏽‍♀ woman rowing boat: medium skin tone +1F6A3 1F3FE 200D 2640 FE0F ; fully-qualified # 🚣🏾‍♀️ woman rowing boat: medium-dark skin tone +1F6A3 1F3FE 200D 2640 ; minimally-qualified # 🚣🏾‍♀ woman rowing boat: medium-dark skin tone +1F6A3 1F3FF 200D 2640 FE0F ; fully-qualified # 🚣🏿‍♀️ woman rowing boat: dark skin tone +1F6A3 1F3FF 200D 2640 ; minimally-qualified # 🚣🏿‍♀ woman rowing boat: dark skin tone +1F3CA ; fully-qualified # 🏊 person swimming +1F3CA 1F3FB ; fully-qualified # 🏊🏻 person swimming: light skin tone +1F3CA 1F3FC ; fully-qualified # 🏊🏼 person swimming: medium-light skin tone +1F3CA 1F3FD ; fully-qualified # 🏊🏽 person swimming: medium skin tone +1F3CA 1F3FE ; fully-qualified # 🏊🏾 person swimming: medium-dark skin tone +1F3CA 1F3FF ; fully-qualified # 🏊🏿 person swimming: dark skin tone +1F3CA 200D 2642 FE0F ; fully-qualified # 🏊‍♂️ man swimming +1F3CA 200D 2642 ; minimally-qualified # 🏊‍♂ man swimming +1F3CA 1F3FB 200D 2642 FE0F ; fully-qualified # 🏊🏻‍♂️ man swimming: light skin tone +1F3CA 1F3FB 200D 2642 ; minimally-qualified # 🏊🏻‍♂ man swimming: light skin tone +1F3CA 1F3FC 200D 2642 FE0F ; fully-qualified # 🏊🏼‍♂️ man swimming: medium-light skin tone +1F3CA 1F3FC 200D 2642 ; minimally-qualified # 🏊🏼‍♂ man swimming: medium-light skin tone +1F3CA 1F3FD 200D 2642 FE0F ; fully-qualified # 🏊🏽‍♂️ man swimming: medium skin tone +1F3CA 1F3FD 200D 2642 ; minimally-qualified # 🏊🏽‍♂ man swimming: medium skin tone +1F3CA 1F3FE 200D 2642 FE0F ; fully-qualified # 🏊🏾‍♂️ man swimming: medium-dark skin tone +1F3CA 1F3FE 200D 2642 ; minimally-qualified # 🏊🏾‍♂ man swimming: medium-dark skin tone +1F3CA 1F3FF 200D 2642 FE0F ; fully-qualified # 🏊🏿‍♂️ man swimming: dark skin tone +1F3CA 1F3FF 200D 2642 ; minimally-qualified # 🏊🏿‍♂ man swimming: dark skin tone +1F3CA 200D 2640 FE0F ; fully-qualified # 🏊‍♀️ woman swimming +1F3CA 200D 2640 ; minimally-qualified # 🏊‍♀ woman swimming +1F3CA 1F3FB 200D 2640 FE0F ; fully-qualified # 🏊🏻‍♀️ woman swimming: light skin tone +1F3CA 1F3FB 200D 2640 ; minimally-qualified # 🏊🏻‍♀ woman swimming: light skin tone +1F3CA 1F3FC 200D 2640 FE0F ; fully-qualified # 🏊🏼‍♀️ woman swimming: medium-light skin tone +1F3CA 1F3FC 200D 2640 ; minimally-qualified # 🏊🏼‍♀ woman swimming: medium-light skin tone +1F3CA 1F3FD 200D 2640 FE0F ; fully-qualified # 🏊🏽‍♀️ woman swimming: medium skin tone +1F3CA 1F3FD 200D 2640 ; minimally-qualified # 🏊🏽‍♀ woman swimming: medium skin tone +1F3CA 1F3FE 200D 2640 FE0F ; fully-qualified # 🏊🏾‍♀️ woman swimming: medium-dark skin tone +1F3CA 1F3FE 200D 2640 ; minimally-qualified # 🏊🏾‍♀ woman swimming: medium-dark skin tone +1F3CA 1F3FF 200D 2640 FE0F ; fully-qualified # 🏊🏿‍♀️ woman swimming: dark skin tone +1F3CA 1F3FF 200D 2640 ; minimally-qualified # 🏊🏿‍♀ woman swimming: dark skin tone +26F9 FE0F ; fully-qualified # ⛹️ person bouncing ball +26F9 ; unqualified # ⛹ person bouncing ball +26F9 1F3FB ; fully-qualified # ⛹🏻 person bouncing ball: light skin tone +26F9 1F3FC ; fully-qualified # ⛹🏼 person bouncing ball: medium-light skin tone +26F9 1F3FD ; fully-qualified # ⛹🏽 person bouncing ball: medium skin tone +26F9 1F3FE ; fully-qualified # ⛹🏾 person bouncing ball: medium-dark skin tone +26F9 1F3FF ; fully-qualified # ⛹🏿 person bouncing ball: dark skin tone +26F9 FE0F 200D 2642 FE0F ; fully-qualified # ⛹️‍♂️ man bouncing ball +26F9 200D 2642 FE0F ; unqualified # ⛹‍♂️ man bouncing ball +26F9 FE0F 200D 2642 ; unqualified # ⛹️‍♂ man bouncing ball +26F9 200D 2642 ; unqualified # ⛹‍♂ man bouncing ball +26F9 1F3FB 200D 2642 FE0F ; fully-qualified # ⛹🏻‍♂️ man bouncing ball: light skin tone +26F9 1F3FB 200D 2642 ; minimally-qualified # ⛹🏻‍♂ man bouncing ball: light skin tone +26F9 1F3FC 200D 2642 FE0F ; fully-qualified # ⛹🏼‍♂️ man bouncing ball: medium-light skin tone +26F9 1F3FC 200D 2642 ; minimally-qualified # ⛹🏼‍♂ man bouncing ball: medium-light skin tone +26F9 1F3FD 200D 2642 FE0F ; fully-qualified # ⛹🏽‍♂️ man bouncing ball: medium skin tone +26F9 1F3FD 200D 2642 ; minimally-qualified # ⛹🏽‍♂ man bouncing ball: medium skin tone +26F9 1F3FE 200D 2642 FE0F ; fully-qualified # ⛹🏾‍♂️ man bouncing ball: medium-dark skin tone +26F9 1F3FE 200D 2642 ; minimally-qualified # ⛹🏾‍♂ man bouncing ball: medium-dark skin tone +26F9 1F3FF 200D 2642 FE0F ; fully-qualified # ⛹🏿‍♂️ man bouncing ball: dark skin tone +26F9 1F3FF 200D 2642 ; minimally-qualified # ⛹🏿‍♂ man bouncing ball: dark skin tone +26F9 FE0F 200D 2640 FE0F ; fully-qualified # ⛹️‍♀️ woman bouncing ball +26F9 200D 2640 FE0F ; unqualified # ⛹‍♀️ woman bouncing ball +26F9 FE0F 200D 2640 ; unqualified # ⛹️‍♀ woman bouncing ball +26F9 200D 2640 ; unqualified # ⛹‍♀ woman bouncing ball +26F9 1F3FB 200D 2640 FE0F ; fully-qualified # ⛹🏻‍♀️ woman bouncing ball: light skin tone +26F9 1F3FB 200D 2640 ; minimally-qualified # ⛹🏻‍♀ woman bouncing ball: light skin tone +26F9 1F3FC 200D 2640 FE0F ; fully-qualified # ⛹🏼‍♀️ woman bouncing ball: medium-light skin tone +26F9 1F3FC 200D 2640 ; minimally-qualified # ⛹🏼‍♀ woman bouncing ball: medium-light skin tone +26F9 1F3FD 200D 2640 FE0F ; fully-qualified # ⛹🏽‍♀️ woman bouncing ball: medium skin tone +26F9 1F3FD 200D 2640 ; minimally-qualified # ⛹🏽‍♀ woman bouncing ball: medium skin tone +26F9 1F3FE 200D 2640 FE0F ; fully-qualified # ⛹🏾‍♀️ woman bouncing ball: medium-dark skin tone +26F9 1F3FE 200D 2640 ; minimally-qualified # ⛹🏾‍♀ woman bouncing ball: medium-dark skin tone +26F9 1F3FF 200D 2640 FE0F ; fully-qualified # ⛹🏿‍♀️ woman bouncing ball: dark skin tone +26F9 1F3FF 200D 2640 ; minimally-qualified # ⛹🏿‍♀ woman bouncing ball: dark skin tone +1F3CB FE0F ; fully-qualified # 🏋️ person lifting weights +1F3CB ; unqualified # 🏋 person lifting weights +1F3CB 1F3FB ; fully-qualified # 🏋🏻 person lifting weights: light skin tone +1F3CB 1F3FC ; fully-qualified # 🏋🏼 person lifting weights: medium-light skin tone +1F3CB 1F3FD ; fully-qualified # 🏋🏽 person lifting weights: medium skin tone +1F3CB 1F3FE ; fully-qualified # 🏋🏾 person lifting weights: medium-dark skin tone +1F3CB 1F3FF ; fully-qualified # 🏋🏿 person lifting weights: dark skin tone +1F3CB FE0F 200D 2642 FE0F ; fully-qualified # 🏋️‍♂️ man lifting weights +1F3CB 200D 2642 FE0F ; unqualified # 🏋‍♂️ man lifting weights +1F3CB FE0F 200D 2642 ; unqualified # 🏋️‍♂ man lifting weights +1F3CB 200D 2642 ; unqualified # 🏋‍♂ man lifting weights +1F3CB 1F3FB 200D 2642 FE0F ; fully-qualified # 🏋🏻‍♂️ man lifting weights: light skin tone +1F3CB 1F3FB 200D 2642 ; minimally-qualified # 🏋🏻‍♂ man lifting weights: light skin tone +1F3CB 1F3FC 200D 2642 FE0F ; fully-qualified # 🏋🏼‍♂️ man lifting weights: medium-light skin tone +1F3CB 1F3FC 200D 2642 ; minimally-qualified # 🏋🏼‍♂ man lifting weights: medium-light skin tone +1F3CB 1F3FD 200D 2642 FE0F ; fully-qualified # 🏋🏽‍♂️ man lifting weights: medium skin tone +1F3CB 1F3FD 200D 2642 ; minimally-qualified # 🏋🏽‍♂ man lifting weights: medium skin tone +1F3CB 1F3FE 200D 2642 FE0F ; fully-qualified # 🏋🏾‍♂️ man lifting weights: medium-dark skin tone +1F3CB 1F3FE 200D 2642 ; minimally-qualified # 🏋🏾‍♂ man lifting weights: medium-dark skin tone +1F3CB 1F3FF 200D 2642 FE0F ; fully-qualified # 🏋🏿‍♂️ man lifting weights: dark skin tone +1F3CB 1F3FF 200D 2642 ; minimally-qualified # 🏋🏿‍♂ man lifting weights: dark skin tone +1F3CB FE0F 200D 2640 FE0F ; fully-qualified # 🏋️‍♀️ woman lifting weights +1F3CB 200D 2640 FE0F ; unqualified # 🏋‍♀️ woman lifting weights +1F3CB FE0F 200D 2640 ; unqualified # 🏋️‍♀ woman lifting weights +1F3CB 200D 2640 ; unqualified # 🏋‍♀ woman lifting weights +1F3CB 1F3FB 200D 2640 FE0F ; fully-qualified # 🏋🏻‍♀️ woman lifting weights: light skin tone +1F3CB 1F3FB 200D 2640 ; minimally-qualified # 🏋🏻‍♀ woman lifting weights: light skin tone +1F3CB 1F3FC 200D 2640 FE0F ; fully-qualified # 🏋🏼‍♀️ woman lifting weights: medium-light skin tone +1F3CB 1F3FC 200D 2640 ; minimally-qualified # 🏋🏼‍♀ woman lifting weights: medium-light skin tone +1F3CB 1F3FD 200D 2640 FE0F ; fully-qualified # 🏋🏽‍♀️ woman lifting weights: medium skin tone +1F3CB 1F3FD 200D 2640 ; minimally-qualified # 🏋🏽‍♀ woman lifting weights: medium skin tone +1F3CB 1F3FE 200D 2640 FE0F ; fully-qualified # 🏋🏾‍♀️ woman lifting weights: medium-dark skin tone +1F3CB 1F3FE 200D 2640 ; minimally-qualified # 🏋🏾‍♀ woman lifting weights: medium-dark skin tone +1F3CB 1F3FF 200D 2640 FE0F ; fully-qualified # 🏋🏿‍♀️ woman lifting weights: dark skin tone +1F3CB 1F3FF 200D 2640 ; minimally-qualified # 🏋🏿‍♀ woman lifting weights: dark skin tone +1F6B4 ; fully-qualified # 🚴 person biking +1F6B4 1F3FB ; fully-qualified # 🚴🏻 person biking: light skin tone +1F6B4 1F3FC ; fully-qualified # 🚴🏼 person biking: medium-light skin tone +1F6B4 1F3FD ; fully-qualified # 🚴🏽 person biking: medium skin tone +1F6B4 1F3FE ; fully-qualified # 🚴🏾 person biking: medium-dark skin tone +1F6B4 1F3FF ; fully-qualified # 🚴🏿 person biking: dark skin tone +1F6B4 200D 2642 FE0F ; fully-qualified # 🚴‍♂️ man biking +1F6B4 200D 2642 ; minimally-qualified # 🚴‍♂ man biking +1F6B4 1F3FB 200D 2642 FE0F ; fully-qualified # 🚴🏻‍♂️ man biking: light skin tone +1F6B4 1F3FB 200D 2642 ; minimally-qualified # 🚴🏻‍♂ man biking: light skin tone +1F6B4 1F3FC 200D 2642 FE0F ; fully-qualified # 🚴🏼‍♂️ man biking: medium-light skin tone +1F6B4 1F3FC 200D 2642 ; minimally-qualified # 🚴🏼‍♂ man biking: medium-light skin tone +1F6B4 1F3FD 200D 2642 FE0F ; fully-qualified # 🚴🏽‍♂️ man biking: medium skin tone +1F6B4 1F3FD 200D 2642 ; minimally-qualified # 🚴🏽‍♂ man biking: medium skin tone +1F6B4 1F3FE 200D 2642 FE0F ; fully-qualified # 🚴🏾‍♂️ man biking: medium-dark skin tone +1F6B4 1F3FE 200D 2642 ; minimally-qualified # 🚴🏾‍♂ man biking: medium-dark skin tone +1F6B4 1F3FF 200D 2642 FE0F ; fully-qualified # 🚴🏿‍♂️ man biking: dark skin tone +1F6B4 1F3FF 200D 2642 ; minimally-qualified # 🚴🏿‍♂ man biking: dark skin tone +1F6B4 200D 2640 FE0F ; fully-qualified # 🚴‍♀️ woman biking +1F6B4 200D 2640 ; minimally-qualified # 🚴‍♀ woman biking +1F6B4 1F3FB 200D 2640 FE0F ; fully-qualified # 🚴🏻‍♀️ woman biking: light skin tone +1F6B4 1F3FB 200D 2640 ; minimally-qualified # 🚴🏻‍♀ woman biking: light skin tone +1F6B4 1F3FC 200D 2640 FE0F ; fully-qualified # 🚴🏼‍♀️ woman biking: medium-light skin tone +1F6B4 1F3FC 200D 2640 ; minimally-qualified # 🚴🏼‍♀ woman biking: medium-light skin tone +1F6B4 1F3FD 200D 2640 FE0F ; fully-qualified # 🚴🏽‍♀️ woman biking: medium skin tone +1F6B4 1F3FD 200D 2640 ; minimally-qualified # 🚴🏽‍♀ woman biking: medium skin tone +1F6B4 1F3FE 200D 2640 FE0F ; fully-qualified # 🚴🏾‍♀️ woman biking: medium-dark skin tone +1F6B4 1F3FE 200D 2640 ; minimally-qualified # 🚴🏾‍♀ woman biking: medium-dark skin tone +1F6B4 1F3FF 200D 2640 FE0F ; fully-qualified # 🚴🏿‍♀️ woman biking: dark skin tone +1F6B4 1F3FF 200D 2640 ; minimally-qualified # 🚴🏿‍♀ woman biking: dark skin tone +1F6B5 ; fully-qualified # 🚵 person mountain biking +1F6B5 1F3FB ; fully-qualified # 🚵🏻 person mountain biking: light skin tone +1F6B5 1F3FC ; fully-qualified # 🚵🏼 person mountain biking: medium-light skin tone +1F6B5 1F3FD ; fully-qualified # 🚵🏽 person mountain biking: medium skin tone +1F6B5 1F3FE ; fully-qualified # 🚵🏾 person mountain biking: medium-dark skin tone +1F6B5 1F3FF ; fully-qualified # 🚵🏿 person mountain biking: dark skin tone +1F6B5 200D 2642 FE0F ; fully-qualified # 🚵‍♂️ man mountain biking +1F6B5 200D 2642 ; minimally-qualified # 🚵‍♂ man mountain biking +1F6B5 1F3FB 200D 2642 FE0F ; fully-qualified # 🚵🏻‍♂️ man mountain biking: light skin tone +1F6B5 1F3FB 200D 2642 ; minimally-qualified # 🚵🏻‍♂ man mountain biking: light skin tone +1F6B5 1F3FC 200D 2642 FE0F ; fully-qualified # 🚵🏼‍♂️ man mountain biking: medium-light skin tone +1F6B5 1F3FC 200D 2642 ; minimally-qualified # 🚵🏼‍♂ man mountain biking: medium-light skin tone +1F6B5 1F3FD 200D 2642 FE0F ; fully-qualified # 🚵🏽‍♂️ man mountain biking: medium skin tone +1F6B5 1F3FD 200D 2642 ; minimally-qualified # 🚵🏽‍♂ man mountain biking: medium skin tone +1F6B5 1F3FE 200D 2642 FE0F ; fully-qualified # 🚵🏾‍♂️ man mountain biking: medium-dark skin tone +1F6B5 1F3FE 200D 2642 ; minimally-qualified # 🚵🏾‍♂ man mountain biking: medium-dark skin tone +1F6B5 1F3FF 200D 2642 FE0F ; fully-qualified # 🚵🏿‍♂️ man mountain biking: dark skin tone +1F6B5 1F3FF 200D 2642 ; minimally-qualified # 🚵🏿‍♂ man mountain biking: dark skin tone +1F6B5 200D 2640 FE0F ; fully-qualified # 🚵‍♀️ woman mountain biking +1F6B5 200D 2640 ; minimally-qualified # 🚵‍♀ woman mountain biking +1F6B5 1F3FB 200D 2640 FE0F ; fully-qualified # 🚵🏻‍♀️ woman mountain biking: light skin tone +1F6B5 1F3FB 200D 2640 ; minimally-qualified # 🚵🏻‍♀ woman mountain biking: light skin tone +1F6B5 1F3FC 200D 2640 FE0F ; fully-qualified # 🚵🏼‍♀️ woman mountain biking: medium-light skin tone +1F6B5 1F3FC 200D 2640 ; minimally-qualified # 🚵🏼‍♀ woman mountain biking: medium-light skin tone +1F6B5 1F3FD 200D 2640 FE0F ; fully-qualified # 🚵🏽‍♀️ woman mountain biking: medium skin tone +1F6B5 1F3FD 200D 2640 ; minimally-qualified # 🚵🏽‍♀ woman mountain biking: medium skin tone +1F6B5 1F3FE 200D 2640 FE0F ; fully-qualified # 🚵🏾‍♀️ woman mountain biking: medium-dark skin tone +1F6B5 1F3FE 200D 2640 ; minimally-qualified # 🚵🏾‍♀ woman mountain biking: medium-dark skin tone +1F6B5 1F3FF 200D 2640 FE0F ; fully-qualified # 🚵🏿‍♀️ woman mountain biking: dark skin tone +1F6B5 1F3FF 200D 2640 ; minimally-qualified # 🚵🏿‍♀ woman mountain biking: dark skin tone +1F938 ; fully-qualified # 🤸 person cartwheeling +1F938 1F3FB ; fully-qualified # 🤸🏻 person cartwheeling: light skin tone +1F938 1F3FC ; fully-qualified # 🤸🏼 person cartwheeling: medium-light skin tone +1F938 1F3FD ; fully-qualified # 🤸🏽 person cartwheeling: medium skin tone +1F938 1F3FE ; fully-qualified # 🤸🏾 person cartwheeling: medium-dark skin tone +1F938 1F3FF ; fully-qualified # 🤸🏿 person cartwheeling: dark skin tone +1F938 200D 2642 FE0F ; fully-qualified # 🤸‍♂️ man cartwheeling +1F938 200D 2642 ; minimally-qualified # 🤸‍♂ man cartwheeling +1F938 1F3FB 200D 2642 FE0F ; fully-qualified # 🤸🏻‍♂️ man cartwheeling: light skin tone +1F938 1F3FB 200D 2642 ; minimally-qualified # 🤸🏻‍♂ man cartwheeling: light skin tone +1F938 1F3FC 200D 2642 FE0F ; fully-qualified # 🤸🏼‍♂️ man cartwheeling: medium-light skin tone +1F938 1F3FC 200D 2642 ; minimally-qualified # 🤸🏼‍♂ man cartwheeling: medium-light skin tone +1F938 1F3FD 200D 2642 FE0F ; fully-qualified # 🤸🏽‍♂️ man cartwheeling: medium skin tone +1F938 1F3FD 200D 2642 ; minimally-qualified # 🤸🏽‍♂ man cartwheeling: medium skin tone +1F938 1F3FE 200D 2642 FE0F ; fully-qualified # 🤸🏾‍♂️ man cartwheeling: medium-dark skin tone +1F938 1F3FE 200D 2642 ; minimally-qualified # 🤸🏾‍♂ man cartwheeling: medium-dark skin tone +1F938 1F3FF 200D 2642 FE0F ; fully-qualified # 🤸🏿‍♂️ man cartwheeling: dark skin tone +1F938 1F3FF 200D 2642 ; minimally-qualified # 🤸🏿‍♂ man cartwheeling: dark skin tone +1F938 200D 2640 FE0F ; fully-qualified # 🤸‍♀️ woman cartwheeling +1F938 200D 2640 ; minimally-qualified # 🤸‍♀ woman cartwheeling +1F938 1F3FB 200D 2640 FE0F ; fully-qualified # 🤸🏻‍♀️ woman cartwheeling: light skin tone +1F938 1F3FB 200D 2640 ; minimally-qualified # 🤸🏻‍♀ woman cartwheeling: light skin tone +1F938 1F3FC 200D 2640 FE0F ; fully-qualified # 🤸🏼‍♀️ woman cartwheeling: medium-light skin tone +1F938 1F3FC 200D 2640 ; minimally-qualified # 🤸🏼‍♀ woman cartwheeling: medium-light skin tone +1F938 1F3FD 200D 2640 FE0F ; fully-qualified # 🤸🏽‍♀️ woman cartwheeling: medium skin tone +1F938 1F3FD 200D 2640 ; minimally-qualified # 🤸🏽‍♀ woman cartwheeling: medium skin tone +1F938 1F3FE 200D 2640 FE0F ; fully-qualified # 🤸🏾‍♀️ woman cartwheeling: medium-dark skin tone +1F938 1F3FE 200D 2640 ; minimally-qualified # 🤸🏾‍♀ woman cartwheeling: medium-dark skin tone +1F938 1F3FF 200D 2640 FE0F ; fully-qualified # 🤸🏿‍♀️ woman cartwheeling: dark skin tone +1F938 1F3FF 200D 2640 ; minimally-qualified # 🤸🏿‍♀ woman cartwheeling: dark skin tone +1F93C ; fully-qualified # 🤼 people wrestling +1F93C 200D 2642 FE0F ; fully-qualified # 🤼‍♂️ men wrestling +1F93C 200D 2642 ; minimally-qualified # 🤼‍♂ men wrestling +1F93C 200D 2640 FE0F ; fully-qualified # 🤼‍♀️ women wrestling +1F93C 200D 2640 ; minimally-qualified # 🤼‍♀ women wrestling +1F93D ; fully-qualified # 🤽 person playing water polo +1F93D 1F3FB ; fully-qualified # 🤽🏻 person playing water polo: light skin tone +1F93D 1F3FC ; fully-qualified # 🤽🏼 person playing water polo: medium-light skin tone +1F93D 1F3FD ; fully-qualified # 🤽🏽 person playing water polo: medium skin tone +1F93D 1F3FE ; fully-qualified # 🤽🏾 person playing water polo: medium-dark skin tone +1F93D 1F3FF ; fully-qualified # 🤽🏿 person playing water polo: dark skin tone +1F93D 200D 2642 FE0F ; fully-qualified # 🤽‍♂️ man playing water polo +1F93D 200D 2642 ; minimally-qualified # 🤽‍♂ man playing water polo +1F93D 1F3FB 200D 2642 FE0F ; fully-qualified # 🤽🏻‍♂️ man playing water polo: light skin tone +1F93D 1F3FB 200D 2642 ; minimally-qualified # 🤽🏻‍♂ man playing water polo: light skin tone +1F93D 1F3FC 200D 2642 FE0F ; fully-qualified # 🤽🏼‍♂️ man playing water polo: medium-light skin tone +1F93D 1F3FC 200D 2642 ; minimally-qualified # 🤽🏼‍♂ man playing water polo: medium-light skin tone +1F93D 1F3FD 200D 2642 FE0F ; fully-qualified # 🤽🏽‍♂️ man playing water polo: medium skin tone +1F93D 1F3FD 200D 2642 ; minimally-qualified # 🤽🏽‍♂ man playing water polo: medium skin tone +1F93D 1F3FE 200D 2642 FE0F ; fully-qualified # 🤽🏾‍♂️ man playing water polo: medium-dark skin tone +1F93D 1F3FE 200D 2642 ; minimally-qualified # 🤽🏾‍♂ man playing water polo: medium-dark skin tone +1F93D 1F3FF 200D 2642 FE0F ; fully-qualified # 🤽🏿‍♂️ man playing water polo: dark skin tone +1F93D 1F3FF 200D 2642 ; minimally-qualified # 🤽🏿‍♂ man playing water polo: dark skin tone +1F93D 200D 2640 FE0F ; fully-qualified # 🤽‍♀️ woman playing water polo +1F93D 200D 2640 ; minimally-qualified # 🤽‍♀ woman playing water polo +1F93D 1F3FB 200D 2640 FE0F ; fully-qualified # 🤽🏻‍♀️ woman playing water polo: light skin tone +1F93D 1F3FB 200D 2640 ; minimally-qualified # 🤽🏻‍♀ woman playing water polo: light skin tone +1F93D 1F3FC 200D 2640 FE0F ; fully-qualified # 🤽🏼‍♀️ woman playing water polo: medium-light skin tone +1F93D 1F3FC 200D 2640 ; minimally-qualified # 🤽🏼‍♀ woman playing water polo: medium-light skin tone +1F93D 1F3FD 200D 2640 FE0F ; fully-qualified # 🤽🏽‍♀️ woman playing water polo: medium skin tone +1F93D 1F3FD 200D 2640 ; minimally-qualified # 🤽🏽‍♀ woman playing water polo: medium skin tone +1F93D 1F3FE 200D 2640 FE0F ; fully-qualified # 🤽🏾‍♀️ woman playing water polo: medium-dark skin tone +1F93D 1F3FE 200D 2640 ; minimally-qualified # 🤽🏾‍♀ woman playing water polo: medium-dark skin tone +1F93D 1F3FF 200D 2640 FE0F ; fully-qualified # 🤽🏿‍♀️ woman playing water polo: dark skin tone +1F93D 1F3FF 200D 2640 ; minimally-qualified # 🤽🏿‍♀ woman playing water polo: dark skin tone +1F93E ; fully-qualified # 🤾 person playing handball +1F93E 1F3FB ; fully-qualified # 🤾🏻 person playing handball: light skin tone +1F93E 1F3FC ; fully-qualified # 🤾🏼 person playing handball: medium-light skin tone +1F93E 1F3FD ; fully-qualified # 🤾🏽 person playing handball: medium skin tone +1F93E 1F3FE ; fully-qualified # 🤾🏾 person playing handball: medium-dark skin tone +1F93E 1F3FF ; fully-qualified # 🤾🏿 person playing handball: dark skin tone +1F93E 200D 2642 FE0F ; fully-qualified # 🤾‍♂️ man playing handball +1F93E 200D 2642 ; minimally-qualified # 🤾‍♂ man playing handball +1F93E 1F3FB 200D 2642 FE0F ; fully-qualified # 🤾🏻‍♂️ man playing handball: light skin tone +1F93E 1F3FB 200D 2642 ; minimally-qualified # 🤾🏻‍♂ man playing handball: light skin tone +1F93E 1F3FC 200D 2642 FE0F ; fully-qualified # 🤾🏼‍♂️ man playing handball: medium-light skin tone +1F93E 1F3FC 200D 2642 ; minimally-qualified # 🤾🏼‍♂ man playing handball: medium-light skin tone +1F93E 1F3FD 200D 2642 FE0F ; fully-qualified # 🤾🏽‍♂️ man playing handball: medium skin tone +1F93E 1F3FD 200D 2642 ; minimally-qualified # 🤾🏽‍♂ man playing handball: medium skin tone +1F93E 1F3FE 200D 2642 FE0F ; fully-qualified # 🤾🏾‍♂️ man playing handball: medium-dark skin tone +1F93E 1F3FE 200D 2642 ; minimally-qualified # 🤾🏾‍♂ man playing handball: medium-dark skin tone +1F93E 1F3FF 200D 2642 FE0F ; fully-qualified # 🤾🏿‍♂️ man playing handball: dark skin tone +1F93E 1F3FF 200D 2642 ; minimally-qualified # 🤾🏿‍♂ man playing handball: dark skin tone +1F93E 200D 2640 FE0F ; fully-qualified # 🤾‍♀️ woman playing handball +1F93E 200D 2640 ; minimally-qualified # 🤾‍♀ woman playing handball +1F93E 1F3FB 200D 2640 FE0F ; fully-qualified # 🤾🏻‍♀️ woman playing handball: light skin tone +1F93E 1F3FB 200D 2640 ; minimally-qualified # 🤾🏻‍♀ woman playing handball: light skin tone +1F93E 1F3FC 200D 2640 FE0F ; fully-qualified # 🤾🏼‍♀️ woman playing handball: medium-light skin tone +1F93E 1F3FC 200D 2640 ; minimally-qualified # 🤾🏼‍♀ woman playing handball: medium-light skin tone +1F93E 1F3FD 200D 2640 FE0F ; fully-qualified # 🤾🏽‍♀️ woman playing handball: medium skin tone +1F93E 1F3FD 200D 2640 ; minimally-qualified # 🤾🏽‍♀ woman playing handball: medium skin tone +1F93E 1F3FE 200D 2640 FE0F ; fully-qualified # 🤾🏾‍♀️ woman playing handball: medium-dark skin tone +1F93E 1F3FE 200D 2640 ; minimally-qualified # 🤾🏾‍♀ woman playing handball: medium-dark skin tone +1F93E 1F3FF 200D 2640 FE0F ; fully-qualified # 🤾🏿‍♀️ woman playing handball: dark skin tone +1F93E 1F3FF 200D 2640 ; minimally-qualified # 🤾🏿‍♀ woman playing handball: dark skin tone +1F939 ; fully-qualified # 🤹 person juggling +1F939 1F3FB ; fully-qualified # 🤹🏻 person juggling: light skin tone +1F939 1F3FC ; fully-qualified # 🤹🏼 person juggling: medium-light skin tone +1F939 1F3FD ; fully-qualified # 🤹🏽 person juggling: medium skin tone +1F939 1F3FE ; fully-qualified # 🤹🏾 person juggling: medium-dark skin tone +1F939 1F3FF ; fully-qualified # 🤹🏿 person juggling: dark skin tone +1F939 200D 2642 FE0F ; fully-qualified # 🤹‍♂️ man juggling +1F939 200D 2642 ; minimally-qualified # 🤹‍♂ man juggling +1F939 1F3FB 200D 2642 FE0F ; fully-qualified # 🤹🏻‍♂️ man juggling: light skin tone +1F939 1F3FB 200D 2642 ; minimally-qualified # 🤹🏻‍♂ man juggling: light skin tone +1F939 1F3FC 200D 2642 FE0F ; fully-qualified # 🤹🏼‍♂️ man juggling: medium-light skin tone +1F939 1F3FC 200D 2642 ; minimally-qualified # 🤹🏼‍♂ man juggling: medium-light skin tone +1F939 1F3FD 200D 2642 FE0F ; fully-qualified # 🤹🏽‍♂️ man juggling: medium skin tone +1F939 1F3FD 200D 2642 ; minimally-qualified # 🤹🏽‍♂ man juggling: medium skin tone +1F939 1F3FE 200D 2642 FE0F ; fully-qualified # 🤹🏾‍♂️ man juggling: medium-dark skin tone +1F939 1F3FE 200D 2642 ; minimally-qualified # 🤹🏾‍♂ man juggling: medium-dark skin tone +1F939 1F3FF 200D 2642 FE0F ; fully-qualified # 🤹🏿‍♂️ man juggling: dark skin tone +1F939 1F3FF 200D 2642 ; minimally-qualified # 🤹🏿‍♂ man juggling: dark skin tone +1F939 200D 2640 FE0F ; fully-qualified # 🤹‍♀️ woman juggling +1F939 200D 2640 ; minimally-qualified # 🤹‍♀ woman juggling +1F939 1F3FB 200D 2640 FE0F ; fully-qualified # 🤹🏻‍♀️ woman juggling: light skin tone +1F939 1F3FB 200D 2640 ; minimally-qualified # 🤹🏻‍♀ woman juggling: light skin tone +1F939 1F3FC 200D 2640 FE0F ; fully-qualified # 🤹🏼‍♀️ woman juggling: medium-light skin tone +1F939 1F3FC 200D 2640 ; minimally-qualified # 🤹🏼‍♀ woman juggling: medium-light skin tone +1F939 1F3FD 200D 2640 FE0F ; fully-qualified # 🤹🏽‍♀️ woman juggling: medium skin tone +1F939 1F3FD 200D 2640 ; minimally-qualified # 🤹🏽‍♀ woman juggling: medium skin tone +1F939 1F3FE 200D 2640 FE0F ; fully-qualified # 🤹🏾‍♀️ woman juggling: medium-dark skin tone +1F939 1F3FE 200D 2640 ; minimally-qualified # 🤹🏾‍♀ woman juggling: medium-dark skin tone +1F939 1F3FF 200D 2640 FE0F ; fully-qualified # 🤹🏿‍♀️ woman juggling: dark skin tone +1F939 1F3FF 200D 2640 ; minimally-qualified # 🤹🏿‍♀ woman juggling: dark skin tone + +# subgroup: person-resting +1F9D8 ; fully-qualified # 🧘 person in lotus position +1F9D8 1F3FB ; fully-qualified # 🧘🏻 person in lotus position: light skin tone +1F9D8 1F3FC ; fully-qualified # 🧘🏼 person in lotus position: medium-light skin tone +1F9D8 1F3FD ; fully-qualified # 🧘🏽 person in lotus position: medium skin tone +1F9D8 1F3FE ; fully-qualified # 🧘🏾 person in lotus position: medium-dark skin tone +1F9D8 1F3FF ; fully-qualified # 🧘🏿 person in lotus position: dark skin tone +1F9D8 200D 2642 FE0F ; fully-qualified # 🧘‍♂️ man in lotus position +1F9D8 200D 2642 ; minimally-qualified # 🧘‍♂ man in lotus position +1F9D8 1F3FB 200D 2642 FE0F ; fully-qualified # 🧘🏻‍♂️ man in lotus position: light skin tone +1F9D8 1F3FB 200D 2642 ; minimally-qualified # 🧘🏻‍♂ man in lotus position: light skin tone +1F9D8 1F3FC 200D 2642 FE0F ; fully-qualified # 🧘🏼‍♂️ man in lotus position: medium-light skin tone +1F9D8 1F3FC 200D 2642 ; minimally-qualified # 🧘🏼‍♂ man in lotus position: medium-light skin tone +1F9D8 1F3FD 200D 2642 FE0F ; fully-qualified # 🧘🏽‍♂️ man in lotus position: medium skin tone +1F9D8 1F3FD 200D 2642 ; minimally-qualified # 🧘🏽‍♂ man in lotus position: medium skin tone +1F9D8 1F3FE 200D 2642 FE0F ; fully-qualified # 🧘🏾‍♂️ man in lotus position: medium-dark skin tone +1F9D8 1F3FE 200D 2642 ; minimally-qualified # 🧘🏾‍♂ man in lotus position: medium-dark skin tone +1F9D8 1F3FF 200D 2642 FE0F ; fully-qualified # 🧘🏿‍♂️ man in lotus position: dark skin tone +1F9D8 1F3FF 200D 2642 ; minimally-qualified # 🧘🏿‍♂ man in lotus position: dark skin tone +1F9D8 200D 2640 FE0F ; fully-qualified # 🧘‍♀️ woman in lotus position +1F9D8 200D 2640 ; minimally-qualified # 🧘‍♀ woman in lotus position +1F9D8 1F3FB 200D 2640 FE0F ; fully-qualified # 🧘🏻‍♀️ woman in lotus position: light skin tone +1F9D8 1F3FB 200D 2640 ; minimally-qualified # 🧘🏻‍♀ woman in lotus position: light skin tone +1F9D8 1F3FC 200D 2640 FE0F ; fully-qualified # 🧘🏼‍♀️ woman in lotus position: medium-light skin tone +1F9D8 1F3FC 200D 2640 ; minimally-qualified # 🧘🏼‍♀ woman in lotus position: medium-light skin tone +1F9D8 1F3FD 200D 2640 FE0F ; fully-qualified # 🧘🏽‍♀️ woman in lotus position: medium skin tone +1F9D8 1F3FD 200D 2640 ; minimally-qualified # 🧘🏽‍♀ woman in lotus position: medium skin tone +1F9D8 1F3FE 200D 2640 FE0F ; fully-qualified # 🧘🏾‍♀️ woman in lotus position: medium-dark skin tone +1F9D8 1F3FE 200D 2640 ; minimally-qualified # 🧘🏾‍♀ woman in lotus position: medium-dark skin tone +1F9D8 1F3FF 200D 2640 FE0F ; fully-qualified # 🧘🏿‍♀️ woman in lotus position: dark skin tone +1F9D8 1F3FF 200D 2640 ; minimally-qualified # 🧘🏿‍♀ woman in lotus position: dark skin tone +1F6C0 ; fully-qualified # 🛀 person taking bath +1F6C0 1F3FB ; fully-qualified # 🛀🏻 person taking bath: light skin tone +1F6C0 1F3FC ; fully-qualified # 🛀🏼 person taking bath: medium-light skin tone +1F6C0 1F3FD ; fully-qualified # 🛀🏽 person taking bath: medium skin tone +1F6C0 1F3FE ; fully-qualified # 🛀🏾 person taking bath: medium-dark skin tone +1F6C0 1F3FF ; fully-qualified # 🛀🏿 person taking bath: dark skin tone +1F6CC ; fully-qualified # 🛌 person in bed +1F6CC 1F3FB ; fully-qualified # 🛌🏻 person in bed: light skin tone +1F6CC 1F3FC ; fully-qualified # 🛌🏼 person in bed: medium-light skin tone +1F6CC 1F3FD ; fully-qualified # 🛌🏽 person in bed: medium skin tone +1F6CC 1F3FE ; fully-qualified # 🛌🏾 person in bed: medium-dark skin tone +1F6CC 1F3FF ; fully-qualified # 🛌🏿 person in bed: dark skin tone + +# subgroup: family +1F9D1 200D 1F91D 200D 1F9D1 ; fully-qualified # 🧑‍🤝‍🧑 people holding hands +1F9D1 1F3FB 200D 1F91D 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏻‍🤝‍🧑🏻 people holding hands: light skin tone +1F9D1 1F3FC 200D 1F91D 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏼‍🤝‍🧑🏻 people holding hands: medium-light skin tone, light skin tone +1F9D1 1F3FC 200D 1F91D 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏼‍🤝‍🧑🏼 people holding hands: medium-light skin tone +1F9D1 1F3FD 200D 1F91D 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏽‍🤝‍🧑🏻 people holding hands: medium skin tone, light skin tone +1F9D1 1F3FD 200D 1F91D 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏽‍🤝‍🧑🏼 people holding hands: medium skin tone, medium-light skin tone +1F9D1 1F3FD 200D 1F91D 200D 1F9D1 1F3FD ; fully-qualified # 🧑🏽‍🤝‍🧑🏽 people holding hands: medium skin tone +1F9D1 1F3FE 200D 1F91D 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏾‍🤝‍🧑🏻 people holding hands: medium-dark skin tone, light skin tone +1F9D1 1F3FE 200D 1F91D 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏾‍🤝‍🧑🏼 people holding hands: medium-dark skin tone, medium-light skin tone +1F9D1 1F3FE 200D 1F91D 200D 1F9D1 1F3FD ; fully-qualified # 🧑🏾‍🤝‍🧑🏽 people holding hands: medium-dark skin tone, medium skin tone +1F9D1 1F3FE 200D 1F91D 200D 1F9D1 1F3FE ; fully-qualified # 🧑🏾‍🤝‍🧑🏾 people holding hands: medium-dark skin tone +1F9D1 1F3FF 200D 1F91D 200D 1F9D1 1F3FB ; fully-qualified # 🧑🏿‍🤝‍🧑🏻 people holding hands: dark skin tone, light skin tone +1F9D1 1F3FF 200D 1F91D 200D 1F9D1 1F3FC ; fully-qualified # 🧑🏿‍🤝‍🧑🏼 people holding hands: dark skin tone, medium-light skin tone +1F9D1 1F3FF 200D 1F91D 200D 1F9D1 1F3FD ; fully-qualified # 🧑🏿‍🤝‍🧑🏽 people holding hands: dark skin tone, medium skin tone +1F9D1 1F3FF 200D 1F91D 200D 1F9D1 1F3FE ; fully-qualified # 🧑🏿‍🤝‍🧑🏾 people holding hands: dark skin tone, medium-dark skin tone +1F9D1 1F3FF 200D 1F91D 200D 1F9D1 1F3FF ; fully-qualified # 🧑🏿‍🤝‍🧑🏿 people holding hands: dark skin tone +1F46D ; fully-qualified # 👭 women holding hands +1F46D 1F3FB ; fully-qualified # 👭🏻 women holding hands: light skin tone +1F469 1F3FC 200D 1F91D 200D 1F469 1F3FB ; fully-qualified # 👩🏼‍🤝‍👩🏻 women holding hands: medium-light skin tone, light skin tone +1F46D 1F3FC ; fully-qualified # 👭🏼 women holding hands: medium-light skin tone +1F469 1F3FD 200D 1F91D 200D 1F469 1F3FB ; fully-qualified # 👩🏽‍🤝‍👩🏻 women holding hands: medium skin tone, light skin tone +1F469 1F3FD 200D 1F91D 200D 1F469 1F3FC ; fully-qualified # 👩🏽‍🤝‍👩🏼 women holding hands: medium skin tone, medium-light skin tone +1F46D 1F3FD ; fully-qualified # 👭🏽 women holding hands: medium skin tone +1F469 1F3FE 200D 1F91D 200D 1F469 1F3FB ; fully-qualified # 👩🏾‍🤝‍👩🏻 women holding hands: medium-dark skin tone, light skin tone +1F469 1F3FE 200D 1F91D 200D 1F469 1F3FC ; fully-qualified # 👩🏾‍🤝‍👩🏼 women holding hands: medium-dark skin tone, medium-light skin tone +1F469 1F3FE 200D 1F91D 200D 1F469 1F3FD ; fully-qualified # 👩🏾‍🤝‍👩🏽 women holding hands: medium-dark skin tone, medium skin tone +1F46D 1F3FE ; fully-qualified # 👭🏾 women holding hands: medium-dark skin tone +1F469 1F3FF 200D 1F91D 200D 1F469 1F3FB ; fully-qualified # 👩🏿‍🤝‍👩🏻 women holding hands: dark skin tone, light skin tone +1F469 1F3FF 200D 1F91D 200D 1F469 1F3FC ; fully-qualified # 👩🏿‍🤝‍👩🏼 women holding hands: dark skin tone, medium-light skin tone +1F469 1F3FF 200D 1F91D 200D 1F469 1F3FD ; fully-qualified # 👩🏿‍🤝‍👩🏽 women holding hands: dark skin tone, medium skin tone +1F469 1F3FF 200D 1F91D 200D 1F469 1F3FE ; fully-qualified # 👩🏿‍🤝‍👩🏾 women holding hands: dark skin tone, medium-dark skin tone +1F46D 1F3FF ; fully-qualified # 👭🏿 women holding hands: dark skin tone +1F46B ; fully-qualified # 👫 woman and man holding hands +1F46B 1F3FB ; fully-qualified # 👫🏻 woman and man holding hands: light skin tone +1F469 1F3FB 200D 1F91D 200D 1F468 1F3FC ; fully-qualified # 👩🏻‍🤝‍👨🏼 woman and man holding hands: light skin tone, medium-light skin tone +1F469 1F3FB 200D 1F91D 200D 1F468 1F3FD ; fully-qualified # 👩🏻‍🤝‍👨🏽 woman and man holding hands: light skin tone, medium skin tone +1F469 1F3FB 200D 1F91D 200D 1F468 1F3FE ; fully-qualified # 👩🏻‍🤝‍👨🏾 woman and man holding hands: light skin tone, medium-dark skin tone +1F469 1F3FB 200D 1F91D 200D 1F468 1F3FF ; fully-qualified # 👩🏻‍🤝‍👨🏿 woman and man holding hands: light skin tone, dark skin tone +1F469 1F3FC 200D 1F91D 200D 1F468 1F3FB ; fully-qualified # 👩🏼‍🤝‍👨🏻 woman and man holding hands: medium-light skin tone, light skin tone +1F46B 1F3FC ; fully-qualified # 👫🏼 woman and man holding hands: medium-light skin tone +1F469 1F3FC 200D 1F91D 200D 1F468 1F3FD ; fully-qualified # 👩🏼‍🤝‍👨🏽 woman and man holding hands: medium-light skin tone, medium skin tone +1F469 1F3FC 200D 1F91D 200D 1F468 1F3FE ; fully-qualified # 👩🏼‍🤝‍👨🏾 woman and man holding hands: medium-light skin tone, medium-dark skin tone +1F469 1F3FC 200D 1F91D 200D 1F468 1F3FF ; fully-qualified # 👩🏼‍🤝‍👨🏿 woman and man holding hands: medium-light skin tone, dark skin tone +1F469 1F3FD 200D 1F91D 200D 1F468 1F3FB ; fully-qualified # 👩🏽‍🤝‍👨🏻 woman and man holding hands: medium skin tone, light skin tone +1F469 1F3FD 200D 1F91D 200D 1F468 1F3FC ; fully-qualified # 👩🏽‍🤝‍👨🏼 woman and man holding hands: medium skin tone, medium-light skin tone +1F46B 1F3FD ; fully-qualified # 👫🏽 woman and man holding hands: medium skin tone +1F469 1F3FD 200D 1F91D 200D 1F468 1F3FE ; fully-qualified # 👩🏽‍🤝‍👨🏾 woman and man holding hands: medium skin tone, medium-dark skin tone +1F469 1F3FD 200D 1F91D 200D 1F468 1F3FF ; fully-qualified # 👩🏽‍🤝‍👨🏿 woman and man holding hands: medium skin tone, dark skin tone +1F469 1F3FE 200D 1F91D 200D 1F468 1F3FB ; fully-qualified # 👩🏾‍🤝‍👨🏻 woman and man holding hands: medium-dark skin tone, light skin tone +1F469 1F3FE 200D 1F91D 200D 1F468 1F3FC ; fully-qualified # 👩🏾‍🤝‍👨🏼 woman and man holding hands: medium-dark skin tone, medium-light skin tone +1F469 1F3FE 200D 1F91D 200D 1F468 1F3FD ; fully-qualified # 👩🏾‍🤝‍👨🏽 woman and man holding hands: medium-dark skin tone, medium skin tone +1F46B 1F3FE ; fully-qualified # 👫🏾 woman and man holding hands: medium-dark skin tone +1F469 1F3FE 200D 1F91D 200D 1F468 1F3FF ; fully-qualified # 👩🏾‍🤝‍👨🏿 woman and man holding hands: medium-dark skin tone, dark skin tone +1F469 1F3FF 200D 1F91D 200D 1F468 1F3FB ; fully-qualified # 👩🏿‍🤝‍👨🏻 woman and man holding hands: dark skin tone, light skin tone +1F469 1F3FF 200D 1F91D 200D 1F468 1F3FC ; fully-qualified # 👩🏿‍🤝‍👨🏼 woman and man holding hands: dark skin tone, medium-light skin tone +1F469 1F3FF 200D 1F91D 200D 1F468 1F3FD ; fully-qualified # 👩🏿‍🤝‍👨🏽 woman and man holding hands: dark skin tone, medium skin tone +1F469 1F3FF 200D 1F91D 200D 1F468 1F3FE ; fully-qualified # 👩🏿‍🤝‍👨🏾 woman and man holding hands: dark skin tone, medium-dark skin tone +1F46B 1F3FF ; fully-qualified # 👫🏿 woman and man holding hands: dark skin tone +1F46C ; fully-qualified # 👬 men holding hands +1F46C 1F3FB ; fully-qualified # 👬🏻 men holding hands: light skin tone +1F468 1F3FC 200D 1F91D 200D 1F468 1F3FB ; fully-qualified # 👨🏼‍🤝‍👨🏻 men holding hands: medium-light skin tone, light skin tone +1F46C 1F3FC ; fully-qualified # 👬🏼 men holding hands: medium-light skin tone +1F468 1F3FD 200D 1F91D 200D 1F468 1F3FB ; fully-qualified # 👨🏽‍🤝‍👨🏻 men holding hands: medium skin tone, light skin tone +1F468 1F3FD 200D 1F91D 200D 1F468 1F3FC ; fully-qualified # 👨🏽‍🤝‍👨🏼 men holding hands: medium skin tone, medium-light skin tone +1F46C 1F3FD ; fully-qualified # 👬🏽 men holding hands: medium skin tone +1F468 1F3FE 200D 1F91D 200D 1F468 1F3FB ; fully-qualified # 👨🏾‍🤝‍👨🏻 men holding hands: medium-dark skin tone, light skin tone +1F468 1F3FE 200D 1F91D 200D 1F468 1F3FC ; fully-qualified # 👨🏾‍🤝‍👨🏼 men holding hands: medium-dark skin tone, medium-light skin tone +1F468 1F3FE 200D 1F91D 200D 1F468 1F3FD ; fully-qualified # 👨🏾‍🤝‍👨🏽 men holding hands: medium-dark skin tone, medium skin tone +1F46C 1F3FE ; fully-qualified # 👬🏾 men holding hands: medium-dark skin tone +1F468 1F3FF 200D 1F91D 200D 1F468 1F3FB ; fully-qualified # 👨🏿‍🤝‍👨🏻 men holding hands: dark skin tone, light skin tone +1F468 1F3FF 200D 1F91D 200D 1F468 1F3FC ; fully-qualified # 👨🏿‍🤝‍👨🏼 men holding hands: dark skin tone, medium-light skin tone +1F468 1F3FF 200D 1F91D 200D 1F468 1F3FD ; fully-qualified # 👨🏿‍🤝‍👨🏽 men holding hands: dark skin tone, medium skin tone +1F468 1F3FF 200D 1F91D 200D 1F468 1F3FE ; fully-qualified # 👨🏿‍🤝‍👨🏾 men holding hands: dark skin tone, medium-dark skin tone +1F46C 1F3FF ; fully-qualified # 👬🏿 men holding hands: dark skin tone +1F48F ; fully-qualified # 💏 kiss +1F469 200D 2764 FE0F 200D 1F48B 200D 1F468 ; fully-qualified # 👩‍❤️‍💋‍👨 kiss: woman, man +1F469 200D 2764 200D 1F48B 200D 1F468 ; minimally-qualified # 👩‍❤‍💋‍👨 kiss: woman, man +1F468 200D 2764 FE0F 200D 1F48B 200D 1F468 ; fully-qualified # 👨‍❤️‍💋‍👨 kiss: man, man +1F468 200D 2764 200D 1F48B 200D 1F468 ; minimally-qualified # 👨‍❤‍💋‍👨 kiss: man, man +1F469 200D 2764 FE0F 200D 1F48B 200D 1F469 ; fully-qualified # 👩‍❤️‍💋‍👩 kiss: woman, woman +1F469 200D 2764 200D 1F48B 200D 1F469 ; minimally-qualified # 👩‍❤‍💋‍👩 kiss: woman, woman +1F491 ; fully-qualified # 💑 couple with heart +1F469 200D 2764 FE0F 200D 1F468 ; fully-qualified # 👩‍❤️‍👨 couple with heart: woman, man +1F469 200D 2764 200D 1F468 ; minimally-qualified # 👩‍❤‍👨 couple with heart: woman, man +1F468 200D 2764 FE0F 200D 1F468 ; fully-qualified # 👨‍❤️‍👨 couple with heart: man, man +1F468 200D 2764 200D 1F468 ; minimally-qualified # 👨‍❤‍👨 couple with heart: man, man +1F469 200D 2764 FE0F 200D 1F469 ; fully-qualified # 👩‍❤️‍👩 couple with heart: woman, woman +1F469 200D 2764 200D 1F469 ; minimally-qualified # 👩‍❤‍👩 couple with heart: woman, woman +1F46A ; fully-qualified # 👪 family +1F468 200D 1F469 200D 1F466 ; fully-qualified # 👨‍👩‍👦 family: man, woman, boy +1F468 200D 1F469 200D 1F467 ; fully-qualified # 👨‍👩‍👧 family: man, woman, girl +1F468 200D 1F469 200D 1F467 200D 1F466 ; fully-qualified # 👨‍👩‍👧‍👦 family: man, woman, girl, boy +1F468 200D 1F469 200D 1F466 200D 1F466 ; fully-qualified # 👨‍👩‍👦‍👦 family: man, woman, boy, boy +1F468 200D 1F469 200D 1F467 200D 1F467 ; fully-qualified # 👨‍👩‍👧‍👧 family: man, woman, girl, girl +1F468 200D 1F468 200D 1F466 ; fully-qualified # 👨‍👨‍👦 family: man, man, boy +1F468 200D 1F468 200D 1F467 ; fully-qualified # 👨‍👨‍👧 family: man, man, girl +1F468 200D 1F468 200D 1F467 200D 1F466 ; fully-qualified # 👨‍👨‍👧‍👦 family: man, man, girl, boy +1F468 200D 1F468 200D 1F466 200D 1F466 ; fully-qualified # 👨‍👨‍👦‍👦 family: man, man, boy, boy +1F468 200D 1F468 200D 1F467 200D 1F467 ; fully-qualified # 👨‍👨‍👧‍👧 family: man, man, girl, girl +1F469 200D 1F469 200D 1F466 ; fully-qualified # 👩‍👩‍👦 family: woman, woman, boy +1F469 200D 1F469 200D 1F467 ; fully-qualified # 👩‍👩‍👧 family: woman, woman, girl +1F469 200D 1F469 200D 1F467 200D 1F466 ; fully-qualified # 👩‍👩‍👧‍👦 family: woman, woman, girl, boy +1F469 200D 1F469 200D 1F466 200D 1F466 ; fully-qualified # 👩‍👩‍👦‍👦 family: woman, woman, boy, boy +1F469 200D 1F469 200D 1F467 200D 1F467 ; fully-qualified # 👩‍👩‍👧‍👧 family: woman, woman, girl, girl +1F468 200D 1F466 ; fully-qualified # 👨‍👦 family: man, boy +1F468 200D 1F466 200D 1F466 ; fully-qualified # 👨‍👦‍👦 family: man, boy, boy +1F468 200D 1F467 ; fully-qualified # 👨‍👧 family: man, girl +1F468 200D 1F467 200D 1F466 ; fully-qualified # 👨‍👧‍👦 family: man, girl, boy +1F468 200D 1F467 200D 1F467 ; fully-qualified # 👨‍👧‍👧 family: man, girl, girl +1F469 200D 1F466 ; fully-qualified # 👩‍👦 family: woman, boy +1F469 200D 1F466 200D 1F466 ; fully-qualified # 👩‍👦‍👦 family: woman, boy, boy +1F469 200D 1F467 ; fully-qualified # 👩‍👧 family: woman, girl +1F469 200D 1F467 200D 1F466 ; fully-qualified # 👩‍👧‍👦 family: woman, girl, boy +1F469 200D 1F467 200D 1F467 ; fully-qualified # 👩‍👧‍👧 family: woman, girl, girl + +# subgroup: person-symbol +1F5E3 FE0F ; fully-qualified # 🗣️ speaking head +1F5E3 ; unqualified # 🗣 speaking head +1F464 ; fully-qualified # 👤 bust in silhouette +1F465 ; fully-qualified # 👥 busts in silhouette +1F463 ; fully-qualified # 👣 footprints + +# People & Body subtotal: 2212 +# People & Body subtotal: 447 w/o modifiers + +# group: Component + +# subgroup: skin-tone +1F3FB ; component # 🏻 light skin tone +1F3FC ; component # 🏼 medium-light skin tone +1F3FD ; component # 🏽 medium skin tone +1F3FE ; component # 🏾 medium-dark skin tone +1F3FF ; component # 🏿 dark skin tone + +# subgroup: hair-style +1F9B0 ; component # 🦰 red hair +1F9B1 ; component # 🦱 curly hair +1F9B3 ; component # 🦳 white hair +1F9B2 ; component # 🦲 bald + +# Component subtotal: 9 +# Component subtotal: 4 w/o modifiers + +# group: Animals & Nature + +# subgroup: animal-mammal +1F435 ; fully-qualified # 🐵 monkey face +1F412 ; fully-qualified # 🐒 monkey +1F98D ; fully-qualified # 🦍 gorilla +1F9A7 ; fully-qualified # 🦧 orangutan +1F436 ; fully-qualified # 🐶 dog face +1F415 ; fully-qualified # 🐕 dog +1F9AE ; fully-qualified # 🦮 guide dog +1F415 200D 1F9BA ; fully-qualified # 🐕‍🦺 service dog +1F429 ; fully-qualified # 🐩 poodle +1F43A ; fully-qualified # 🐺 wolf +1F98A ; fully-qualified # 🦊 fox +1F99D ; fully-qualified # 🦝 raccoon +1F431 ; fully-qualified # 🐱 cat face +1F408 ; fully-qualified # 🐈 cat +1F981 ; fully-qualified # 🦁 lion +1F42F ; fully-qualified # 🐯 tiger face +1F405 ; fully-qualified # 🐅 tiger +1F406 ; fully-qualified # 🐆 leopard +1F434 ; fully-qualified # 🐴 horse face +1F40E ; fully-qualified # 🐎 horse +1F984 ; fully-qualified # 🦄 unicorn +1F993 ; fully-qualified # 🦓 zebra +1F98C ; fully-qualified # 🦌 deer +1F42E ; fully-qualified # 🐮 cow face +1F402 ; fully-qualified # 🐂 ox +1F403 ; fully-qualified # 🐃 water buffalo +1F404 ; fully-qualified # 🐄 cow +1F437 ; fully-qualified # 🐷 pig face +1F416 ; fully-qualified # 🐖 pig +1F417 ; fully-qualified # 🐗 boar +1F43D ; fully-qualified # 🐽 pig nose +1F40F ; fully-qualified # 🐏 ram +1F411 ; fully-qualified # 🐑 ewe +1F410 ; fully-qualified # 🐐 goat +1F42A ; fully-qualified # 🐪 camel +1F42B ; fully-qualified # 🐫 two-hump camel +1F999 ; fully-qualified # 🦙 llama +1F992 ; fully-qualified # 🦒 giraffe +1F418 ; fully-qualified # 🐘 elephant +1F98F ; fully-qualified # 🦏 rhinoceros +1F99B ; fully-qualified # 🦛 hippopotamus +1F42D ; fully-qualified # 🐭 mouse face +1F401 ; fully-qualified # 🐁 mouse +1F400 ; fully-qualified # 🐀 rat +1F439 ; fully-qualified # 🐹 hamster +1F430 ; fully-qualified # 🐰 rabbit face +1F407 ; fully-qualified # 🐇 rabbit +1F43F FE0F ; fully-qualified # 🐿️ chipmunk +1F43F ; unqualified # 🐿 chipmunk +1F994 ; fully-qualified # 🦔 hedgehog +1F987 ; fully-qualified # 🦇 bat +1F43B ; fully-qualified # 🐻 bear +1F428 ; fully-qualified # 🐨 koala +1F43C ; fully-qualified # 🐼 panda +1F9A5 ; fully-qualified # 🦥 sloth +1F9A6 ; fully-qualified # 🦦 otter +1F9A8 ; fully-qualified # 🦨 skunk +1F998 ; fully-qualified # 🦘 kangaroo +1F9A1 ; fully-qualified # 🦡 badger +1F43E ; fully-qualified # 🐾 paw prints + +# subgroup: animal-bird +1F983 ; fully-qualified # 🦃 turkey +1F414 ; fully-qualified # 🐔 chicken +1F413 ; fully-qualified # 🐓 rooster +1F423 ; fully-qualified # 🐣 hatching chick +1F424 ; fully-qualified # 🐤 baby chick +1F425 ; fully-qualified # 🐥 front-facing baby chick +1F426 ; fully-qualified # 🐦 bird +1F427 ; fully-qualified # 🐧 penguin +1F54A FE0F ; fully-qualified # 🕊️ dove +1F54A ; unqualified # 🕊 dove +1F985 ; fully-qualified # 🦅 eagle +1F986 ; fully-qualified # 🦆 duck +1F9A2 ; fully-qualified # 🦢 swan +1F989 ; fully-qualified # 🦉 owl +1F9A9 ; fully-qualified # 🦩 flamingo +1F99A ; fully-qualified # 🦚 peacock +1F99C ; fully-qualified # 🦜 parrot + +# subgroup: animal-amphibian +1F438 ; fully-qualified # 🐸 frog + +# subgroup: animal-reptile +1F40A ; fully-qualified # 🐊 crocodile +1F422 ; fully-qualified # 🐢 turtle +1F98E ; fully-qualified # 🦎 lizard +1F40D ; fully-qualified # 🐍 snake +1F432 ; fully-qualified # 🐲 dragon face +1F409 ; fully-qualified # 🐉 dragon +1F995 ; fully-qualified # 🦕 sauropod +1F996 ; fully-qualified # 🦖 T-Rex + +# subgroup: animal-marine +1F433 ; fully-qualified # 🐳 spouting whale +1F40B ; fully-qualified # 🐋 whale +1F42C ; fully-qualified # 🐬 dolphin +1F41F ; fully-qualified # 🐟 fish +1F420 ; fully-qualified # 🐠 tropical fish +1F421 ; fully-qualified # 🐡 blowfish +1F988 ; fully-qualified # 🦈 shark +1F419 ; fully-qualified # 🐙 octopus +1F41A ; fully-qualified # 🐚 spiral shell + +# subgroup: animal-bug +1F40C ; fully-qualified # 🐌 snail +1F98B ; fully-qualified # 🦋 butterfly +1F41B ; fully-qualified # 🐛 bug +1F41C ; fully-qualified # 🐜 ant +1F41D ; fully-qualified # 🐝 honeybee +1F41E ; fully-qualified # 🐞 lady beetle +1F997 ; fully-qualified # 🦗 cricket +1F577 FE0F ; fully-qualified # 🕷️ spider +1F577 ; unqualified # 🕷 spider +1F578 FE0F ; fully-qualified # 🕸️ spider web +1F578 ; unqualified # 🕸 spider web +1F982 ; fully-qualified # 🦂 scorpion +1F99F ; fully-qualified # 🦟 mosquito +1F9A0 ; fully-qualified # 🦠 microbe + +# subgroup: plant-flower +1F490 ; fully-qualified # 💐 bouquet +1F338 ; fully-qualified # 🌸 cherry blossom +1F4AE ; fully-qualified # 💮 white flower +1F3F5 FE0F ; fully-qualified # 🏵️ rosette +1F3F5 ; unqualified # 🏵 rosette +1F339 ; fully-qualified # 🌹 rose +1F940 ; fully-qualified # 🥀 wilted flower +1F33A ; fully-qualified # 🌺 hibiscus +1F33B ; fully-qualified # 🌻 sunflower +1F33C ; fully-qualified # 🌼 blossom +1F337 ; fully-qualified # 🌷 tulip + +# subgroup: plant-other +1F331 ; fully-qualified # 🌱 seedling +1F332 ; fully-qualified # 🌲 evergreen tree +1F333 ; fully-qualified # 🌳 deciduous tree +1F334 ; fully-qualified # 🌴 palm tree +1F335 ; fully-qualified # 🌵 cactus +1F33E ; fully-qualified # 🌾 sheaf of rice +1F33F ; fully-qualified # 🌿 herb +2618 FE0F ; fully-qualified # ☘️ shamrock +2618 ; unqualified # ☘ shamrock +1F340 ; fully-qualified # 🍀 four leaf clover +1F341 ; fully-qualified # 🍁 maple leaf +1F342 ; fully-qualified # 🍂 fallen leaf +1F343 ; fully-qualified # 🍃 leaf fluttering in wind + +# Animals & Nature subtotal: 133 +# Animals & Nature subtotal: 133 w/o modifiers + +# group: Food & Drink + +# subgroup: food-fruit +1F347 ; fully-qualified # 🍇 grapes +1F348 ; fully-qualified # 🍈 melon +1F349 ; fully-qualified # 🍉 watermelon +1F34A ; fully-qualified # 🍊 tangerine +1F34B ; fully-qualified # 🍋 lemon +1F34C ; fully-qualified # 🍌 banana +1F34D ; fully-qualified # 🍍 pineapple +1F96D ; fully-qualified # 🥭 mango +1F34E ; fully-qualified # 🍎 red apple +1F34F ; fully-qualified # 🍏 green apple +1F350 ; fully-qualified # 🍐 pear +1F351 ; fully-qualified # 🍑 peach +1F352 ; fully-qualified # 🍒 cherries +1F353 ; fully-qualified # 🍓 strawberry +1F95D ; fully-qualified # 🥝 kiwi fruit +1F345 ; fully-qualified # 🍅 tomato +1F965 ; fully-qualified # 🥥 coconut + +# subgroup: food-vegetable +1F951 ; fully-qualified # 🥑 avocado +1F346 ; fully-qualified # 🍆 eggplant +1F954 ; fully-qualified # 🥔 potato +1F955 ; fully-qualified # 🥕 carrot +1F33D ; fully-qualified # 🌽 ear of corn +1F336 FE0F ; fully-qualified # 🌶️ hot pepper +1F336 ; unqualified # 🌶 hot pepper +1F952 ; fully-qualified # 🥒 cucumber +1F96C ; fully-qualified # 🥬 leafy green +1F966 ; fully-qualified # 🥦 broccoli +1F9C4 ; fully-qualified # 🧄 garlic +1F9C5 ; fully-qualified # 🧅 onion +1F344 ; fully-qualified # 🍄 mushroom +1F95C ; fully-qualified # 🥜 peanuts +1F330 ; fully-qualified # 🌰 chestnut + +# subgroup: food-prepared +1F35E ; fully-qualified # 🍞 bread +1F950 ; fully-qualified # 🥐 croissant +1F956 ; fully-qualified # 🥖 baguette bread +1F968 ; fully-qualified # 🥨 pretzel +1F96F ; fully-qualified # 🥯 bagel +1F95E ; fully-qualified # 🥞 pancakes +1F9C7 ; fully-qualified # 🧇 waffle +1F9C0 ; fully-qualified # 🧀 cheese wedge +1F356 ; fully-qualified # 🍖 meat on bone +1F357 ; fully-qualified # 🍗 poultry leg +1F969 ; fully-qualified # 🥩 cut of meat +1F953 ; fully-qualified # 🥓 bacon +1F354 ; fully-qualified # 🍔 hamburger +1F35F ; fully-qualified # 🍟 french fries +1F355 ; fully-qualified # 🍕 pizza +1F32D ; fully-qualified # 🌭 hot dog +1F96A ; fully-qualified # 🥪 sandwich +1F32E ; fully-qualified # 🌮 taco +1F32F ; fully-qualified # 🌯 burrito +1F959 ; fully-qualified # 🥙 stuffed flatbread +1F9C6 ; fully-qualified # 🧆 falafel +1F95A ; fully-qualified # 🥚 egg +1F373 ; fully-qualified # 🍳 cooking +1F958 ; fully-qualified # 🥘 shallow pan of food +1F372 ; fully-qualified # 🍲 pot of food +1F963 ; fully-qualified # 🥣 bowl with spoon +1F957 ; fully-qualified # 🥗 green salad +1F37F ; fully-qualified # 🍿 popcorn +1F9C8 ; fully-qualified # 🧈 butter +1F9C2 ; fully-qualified # 🧂 salt +1F96B ; fully-qualified # 🥫 canned food + +# subgroup: food-asian +1F371 ; fully-qualified # 🍱 bento box +1F358 ; fully-qualified # 🍘 rice cracker +1F359 ; fully-qualified # 🍙 rice ball +1F35A ; fully-qualified # 🍚 cooked rice +1F35B ; fully-qualified # 🍛 curry rice +1F35C ; fully-qualified # 🍜 steaming bowl +1F35D ; fully-qualified # 🍝 spaghetti +1F360 ; fully-qualified # 🍠 roasted sweet potato +1F362 ; fully-qualified # 🍢 oden +1F363 ; fully-qualified # 🍣 sushi +1F364 ; fully-qualified # 🍤 fried shrimp +1F365 ; fully-qualified # 🍥 fish cake with swirl +1F96E ; fully-qualified # 🥮 moon cake +1F361 ; fully-qualified # 🍡 dango +1F95F ; fully-qualified # 🥟 dumpling +1F960 ; fully-qualified # 🥠 fortune cookie +1F961 ; fully-qualified # 🥡 takeout box + +# subgroup: food-marine +1F980 ; fully-qualified # 🦀 crab +1F99E ; fully-qualified # 🦞 lobster +1F990 ; fully-qualified # 🦐 shrimp +1F991 ; fully-qualified # 🦑 squid +1F9AA ; fully-qualified # 🦪 oyster + +# subgroup: food-sweet +1F366 ; fully-qualified # 🍦 soft ice cream +1F367 ; fully-qualified # 🍧 shaved ice +1F368 ; fully-qualified # 🍨 ice cream +1F369 ; fully-qualified # 🍩 doughnut +1F36A ; fully-qualified # 🍪 cookie +1F382 ; fully-qualified # 🎂 birthday cake +1F370 ; fully-qualified # 🍰 shortcake +1F9C1 ; fully-qualified # 🧁 cupcake +1F967 ; fully-qualified # 🥧 pie +1F36B ; fully-qualified # 🍫 chocolate bar +1F36C ; fully-qualified # 🍬 candy +1F36D ; fully-qualified # 🍭 lollipop +1F36E ; fully-qualified # 🍮 custard +1F36F ; fully-qualified # 🍯 honey pot + +# subgroup: drink +1F37C ; fully-qualified # 🍼 baby bottle +1F95B ; fully-qualified # 🥛 glass of milk +2615 ; fully-qualified # ☕ hot beverage +1F375 ; fully-qualified # 🍵 teacup without handle +1F376 ; fully-qualified # 🍶 sake +1F37E ; fully-qualified # 🍾 bottle with popping cork +1F377 ; fully-qualified # 🍷 wine glass +1F378 ; fully-qualified # 🍸 cocktail glass +1F379 ; fully-qualified # 🍹 tropical drink +1F37A ; fully-qualified # 🍺 beer mug +1F37B ; fully-qualified # 🍻 clinking beer mugs +1F942 ; fully-qualified # 🥂 clinking glasses +1F943 ; fully-qualified # 🥃 tumbler glass +1F964 ; fully-qualified # 🥤 cup with straw +1F9C3 ; fully-qualified # 🧃 beverage box +1F9C9 ; fully-qualified # 🧉 mate +1F9CA ; fully-qualified # 🧊 ice cube + +# subgroup: dishware +1F962 ; fully-qualified # 🥢 chopsticks +1F37D FE0F ; fully-qualified # 🍽️ fork and knife with plate +1F37D ; unqualified # 🍽 fork and knife with plate +1F374 ; fully-qualified # 🍴 fork and knife +1F944 ; fully-qualified # 🥄 spoon +1F52A ; fully-qualified # 🔪 kitchen knife +1F3FA ; fully-qualified # 🏺 amphora + +# Food & Drink subtotal: 123 +# Food & Drink subtotal: 123 w/o modifiers + +# group: Travel & Places + +# subgroup: place-map +1F30D ; fully-qualified # 🌍 globe showing Europe-Africa +1F30E ; fully-qualified # 🌎 globe showing Americas +1F30F ; fully-qualified # 🌏 globe showing Asia-Australia +1F310 ; fully-qualified # 🌐 globe with meridians +1F5FA FE0F ; fully-qualified # 🗺️ world map +1F5FA ; unqualified # 🗺 world map +1F5FE ; fully-qualified # 🗾 map of Japan +1F9ED ; fully-qualified # 🧭 compass + +# subgroup: place-geographic +1F3D4 FE0F ; fully-qualified # 🏔️ snow-capped mountain +1F3D4 ; unqualified # 🏔 snow-capped mountain +26F0 FE0F ; fully-qualified # ⛰️ mountain +26F0 ; unqualified # ⛰ mountain +1F30B ; fully-qualified # 🌋 volcano +1F5FB ; fully-qualified # 🗻 mount fuji +1F3D5 FE0F ; fully-qualified # 🏕️ camping +1F3D5 ; unqualified # 🏕 camping +1F3D6 FE0F ; fully-qualified # 🏖️ beach with umbrella +1F3D6 ; unqualified # 🏖 beach with umbrella +1F3DC FE0F ; fully-qualified # 🏜️ desert +1F3DC ; unqualified # 🏜 desert +1F3DD FE0F ; fully-qualified # 🏝️ desert island +1F3DD ; unqualified # 🏝 desert island +1F3DE FE0F ; fully-qualified # 🏞️ national park +1F3DE ; unqualified # 🏞 national park + +# subgroup: place-building +1F3DF FE0F ; fully-qualified # 🏟️ stadium +1F3DF ; unqualified # 🏟 stadium +1F3DB FE0F ; fully-qualified # 🏛️ classical building +1F3DB ; unqualified # 🏛 classical building +1F3D7 FE0F ; fully-qualified # 🏗️ building construction +1F3D7 ; unqualified # 🏗 building construction +1F9F1 ; fully-qualified # 🧱 brick +1F3D8 FE0F ; fully-qualified # 🏘️ houses +1F3D8 ; unqualified # 🏘 houses +1F3DA FE0F ; fully-qualified # 🏚️ derelict house +1F3DA ; unqualified # 🏚 derelict house +1F3E0 ; fully-qualified # 🏠 house +1F3E1 ; fully-qualified # 🏡 house with garden +1F3E2 ; fully-qualified # 🏢 office building +1F3E3 ; fully-qualified # 🏣 Japanese post office +1F3E4 ; fully-qualified # 🏤 post office +1F3E5 ; fully-qualified # 🏥 hospital +1F3E6 ; fully-qualified # 🏦 bank +1F3E8 ; fully-qualified # 🏨 hotel +1F3E9 ; fully-qualified # 🏩 love hotel +1F3EA ; fully-qualified # 🏪 convenience store +1F3EB ; fully-qualified # 🏫 school +1F3EC ; fully-qualified # 🏬 department store +1F3ED ; fully-qualified # 🏭 factory +1F3EF ; fully-qualified # 🏯 Japanese castle +1F3F0 ; fully-qualified # 🏰 castle +1F492 ; fully-qualified # 💒 wedding +1F5FC ; fully-qualified # 🗼 Tokyo tower +1F5FD ; fully-qualified # 🗽 Statue of Liberty + +# subgroup: place-religious +26EA ; fully-qualified # ⛪ church +1F54C ; fully-qualified # 🕌 mosque +1F6D5 ; fully-qualified # 🛕 hindu temple +1F54D ; fully-qualified # 🕍 synagogue +26E9 FE0F ; fully-qualified # ⛩️ shinto shrine +26E9 ; unqualified # ⛩ shinto shrine +1F54B ; fully-qualified # 🕋 kaaba + +# subgroup: place-other +26F2 ; fully-qualified # ⛲ fountain +26FA ; fully-qualified # ⛺ tent +1F301 ; fully-qualified # 🌁 foggy +1F303 ; fully-qualified # 🌃 night with stars +1F3D9 FE0F ; fully-qualified # 🏙️ cityscape +1F3D9 ; unqualified # 🏙 cityscape +1F304 ; fully-qualified # 🌄 sunrise over mountains +1F305 ; fully-qualified # 🌅 sunrise +1F306 ; fully-qualified # 🌆 cityscape at dusk +1F307 ; fully-qualified # 🌇 sunset +1F309 ; fully-qualified # 🌉 bridge at night +2668 FE0F ; fully-qualified # ♨️ hot springs +2668 ; unqualified # ♨ hot springs +1F3A0 ; fully-qualified # 🎠 carousel horse +1F3A1 ; fully-qualified # 🎡 ferris wheel +1F3A2 ; fully-qualified # 🎢 roller coaster +1F488 ; fully-qualified # 💈 barber pole +1F3AA ; fully-qualified # 🎪 circus tent + +# subgroup: transport-ground +1F682 ; fully-qualified # 🚂 locomotive +1F683 ; fully-qualified # 🚃 railway car +1F684 ; fully-qualified # 🚄 high-speed train +1F685 ; fully-qualified # 🚅 bullet train +1F686 ; fully-qualified # 🚆 train +1F687 ; fully-qualified # 🚇 metro +1F688 ; fully-qualified # 🚈 light rail +1F689 ; fully-qualified # 🚉 station +1F68A ; fully-qualified # 🚊 tram +1F69D ; fully-qualified # 🚝 monorail +1F69E ; fully-qualified # 🚞 mountain railway +1F68B ; fully-qualified # 🚋 tram car +1F68C ; fully-qualified # 🚌 bus +1F68D ; fully-qualified # 🚍 oncoming bus +1F68E ; fully-qualified # 🚎 trolleybus +1F690 ; fully-qualified # 🚐 minibus +1F691 ; fully-qualified # 🚑 ambulance +1F692 ; fully-qualified # 🚒 fire engine +1F693 ; fully-qualified # 🚓 police car +1F694 ; fully-qualified # 🚔 oncoming police car +1F695 ; fully-qualified # 🚕 taxi +1F696 ; fully-qualified # 🚖 oncoming taxi +1F697 ; fully-qualified # 🚗 automobile +1F698 ; fully-qualified # 🚘 oncoming automobile +1F699 ; fully-qualified # 🚙 sport utility vehicle +1F69A ; fully-qualified # 🚚 delivery truck +1F69B ; fully-qualified # 🚛 articulated lorry +1F69C ; fully-qualified # 🚜 tractor +1F3CE FE0F ; fully-qualified # 🏎️ racing car +1F3CE ; unqualified # 🏎 racing car +1F3CD FE0F ; fully-qualified # 🏍️ motorcycle +1F3CD ; unqualified # 🏍 motorcycle +1F6F5 ; fully-qualified # 🛵 motor scooter +1F9BD ; fully-qualified # 🦽 manual wheelchair +1F9BC ; fully-qualified # 🦼 motorized wheelchair +1F6FA ; fully-qualified # 🛺 auto rickshaw +1F6B2 ; fully-qualified # 🚲 bicycle +1F6F4 ; fully-qualified # 🛴 kick scooter +1F6F9 ; fully-qualified # 🛹 skateboard +1F68F ; fully-qualified # 🚏 bus stop +1F6E3 FE0F ; fully-qualified # 🛣️ motorway +1F6E3 ; unqualified # 🛣 motorway +1F6E4 FE0F ; fully-qualified # 🛤️ railway track +1F6E4 ; unqualified # 🛤 railway track +1F6E2 FE0F ; fully-qualified # 🛢️ oil drum +1F6E2 ; unqualified # 🛢 oil drum +26FD ; fully-qualified # ⛽ fuel pump +1F6A8 ; fully-qualified # 🚨 police car light +1F6A5 ; fully-qualified # 🚥 horizontal traffic light +1F6A6 ; fully-qualified # 🚦 vertical traffic light +1F6D1 ; fully-qualified # 🛑 stop sign +1F6A7 ; fully-qualified # 🚧 construction + +# subgroup: transport-water +2693 ; fully-qualified # ⚓ anchor +26F5 ; fully-qualified # ⛵ sailboat +1F6F6 ; fully-qualified # 🛶 canoe +1F6A4 ; fully-qualified # 🚤 speedboat +1F6F3 FE0F ; fully-qualified # 🛳️ passenger ship +1F6F3 ; unqualified # 🛳 passenger ship +26F4 FE0F ; fully-qualified # ⛴️ ferry +26F4 ; unqualified # ⛴ ferry +1F6E5 FE0F ; fully-qualified # 🛥️ motor boat +1F6E5 ; unqualified # 🛥 motor boat +1F6A2 ; fully-qualified # 🚢 ship + +# subgroup: transport-air +2708 FE0F ; fully-qualified # ✈️ airplane +2708 ; unqualified # ✈ airplane +1F6E9 FE0F ; fully-qualified # 🛩️ small airplane +1F6E9 ; unqualified # 🛩 small airplane +1F6EB ; fully-qualified # 🛫 airplane departure +1F6EC ; fully-qualified # 🛬 airplane arrival +1FA82 ; fully-qualified # 🪂 parachute +1F4BA ; fully-qualified # 💺 seat +1F681 ; fully-qualified # 🚁 helicopter +1F69F ; fully-qualified # 🚟 suspension railway +1F6A0 ; fully-qualified # 🚠 mountain cableway +1F6A1 ; fully-qualified # 🚡 aerial tramway +1F6F0 FE0F ; fully-qualified # 🛰️ satellite +1F6F0 ; unqualified # 🛰 satellite +1F680 ; fully-qualified # 🚀 rocket +1F6F8 ; fully-qualified # 🛸 flying saucer + +# subgroup: hotel +1F6CE FE0F ; fully-qualified # 🛎️ bellhop bell +1F6CE ; unqualified # 🛎 bellhop bell +1F9F3 ; fully-qualified # 🧳 luggage + +# subgroup: time +231B ; fully-qualified # ⌛ hourglass done +23F3 ; fully-qualified # ⏳ hourglass not done +231A ; fully-qualified # ⌚ watch +23F0 ; fully-qualified # ⏰ alarm clock +23F1 FE0F ; fully-qualified # ⏱️ stopwatch +23F1 ; unqualified # ⏱ stopwatch +23F2 FE0F ; fully-qualified # ⏲️ timer clock +23F2 ; unqualified # ⏲ timer clock +1F570 FE0F ; fully-qualified # 🕰️ mantelpiece clock +1F570 ; unqualified # 🕰 mantelpiece clock +1F55B ; fully-qualified # 🕛 twelve o’clock +1F567 ; fully-qualified # 🕧 twelve-thirty +1F550 ; fully-qualified # 🕐 one o’clock +1F55C ; fully-qualified # 🕜 one-thirty +1F551 ; fully-qualified # 🕑 two o’clock +1F55D ; fully-qualified # 🕝 two-thirty +1F552 ; fully-qualified # 🕒 three o’clock +1F55E ; fully-qualified # 🕞 three-thirty +1F553 ; fully-qualified # 🕓 four o’clock +1F55F ; fully-qualified # 🕟 four-thirty +1F554 ; fully-qualified # 🕔 five o’clock +1F560 ; fully-qualified # 🕠 five-thirty +1F555 ; fully-qualified # 🕕 six o’clock +1F561 ; fully-qualified # 🕡 six-thirty +1F556 ; fully-qualified # 🕖 seven o’clock +1F562 ; fully-qualified # 🕢 seven-thirty +1F557 ; fully-qualified # 🕗 eight o’clock +1F563 ; fully-qualified # 🕣 eight-thirty +1F558 ; fully-qualified # 🕘 nine o’clock +1F564 ; fully-qualified # 🕤 nine-thirty +1F559 ; fully-qualified # 🕙 ten o’clock +1F565 ; fully-qualified # 🕥 ten-thirty +1F55A ; fully-qualified # 🕚 eleven o’clock +1F566 ; fully-qualified # 🕦 eleven-thirty + +# subgroup: sky & weather +1F311 ; fully-qualified # 🌑 new moon +1F312 ; fully-qualified # 🌒 waxing crescent moon +1F313 ; fully-qualified # 🌓 first quarter moon +1F314 ; fully-qualified # 🌔 waxing gibbous moon +1F315 ; fully-qualified # 🌕 full moon +1F316 ; fully-qualified # 🌖 waning gibbous moon +1F317 ; fully-qualified # 🌗 last quarter moon +1F318 ; fully-qualified # 🌘 waning crescent moon +1F319 ; fully-qualified # 🌙 crescent moon +1F31A ; fully-qualified # 🌚 new moon face +1F31B ; fully-qualified # 🌛 first quarter moon face +1F31C ; fully-qualified # 🌜 last quarter moon face +1F321 FE0F ; fully-qualified # 🌡️ thermometer +1F321 ; unqualified # 🌡 thermometer +2600 FE0F ; fully-qualified # ☀️ sun +2600 ; unqualified # ☀ sun +1F31D ; fully-qualified # 🌝 full moon face +1F31E ; fully-qualified # 🌞 sun with face +1FA90 ; fully-qualified # 🪐 ringed planet +2B50 ; fully-qualified # ⭐ star +1F31F ; fully-qualified # 🌟 glowing star +1F320 ; fully-qualified # 🌠 shooting star +1F30C ; fully-qualified # 🌌 milky way +2601 FE0F ; fully-qualified # ☁️ cloud +2601 ; unqualified # ☁ cloud +26C5 ; fully-qualified # ⛅ sun behind cloud +26C8 FE0F ; fully-qualified # ⛈️ cloud with lightning and rain +26C8 ; unqualified # ⛈ cloud with lightning and rain +1F324 FE0F ; fully-qualified # 🌤️ sun behind small cloud +1F324 ; unqualified # 🌤 sun behind small cloud +1F325 FE0F ; fully-qualified # 🌥️ sun behind large cloud +1F325 ; unqualified # 🌥 sun behind large cloud +1F326 FE0F ; fully-qualified # 🌦️ sun behind rain cloud +1F326 ; unqualified # 🌦 sun behind rain cloud +1F327 FE0F ; fully-qualified # 🌧️ cloud with rain +1F327 ; unqualified # 🌧 cloud with rain +1F328 FE0F ; fully-qualified # 🌨️ cloud with snow +1F328 ; unqualified # 🌨 cloud with snow +1F329 FE0F ; fully-qualified # 🌩️ cloud with lightning +1F329 ; unqualified # 🌩 cloud with lightning +1F32A FE0F ; fully-qualified # 🌪️ tornado +1F32A ; unqualified # 🌪 tornado +1F32B FE0F ; fully-qualified # 🌫️ fog +1F32B ; unqualified # 🌫 fog +1F32C FE0F ; fully-qualified # 🌬️ wind face +1F32C ; unqualified # 🌬 wind face +1F300 ; fully-qualified # 🌀 cyclone +1F308 ; fully-qualified # 🌈 rainbow +1F302 ; fully-qualified # 🌂 closed umbrella +2602 FE0F ; fully-qualified # ☂️ umbrella +2602 ; unqualified # ☂ umbrella +2614 ; fully-qualified # ☔ umbrella with rain drops +26F1 FE0F ; fully-qualified # ⛱️ umbrella on ground +26F1 ; unqualified # ⛱ umbrella on ground +26A1 ; fully-qualified # ⚡ high voltage +2744 FE0F ; fully-qualified # ❄️ snowflake +2744 ; unqualified # ❄ snowflake +2603 FE0F ; fully-qualified # ☃️ snowman +2603 ; unqualified # ☃ snowman +26C4 ; fully-qualified # ⛄ snowman without snow +2604 FE0F ; fully-qualified # ☄️ comet +2604 ; unqualified # ☄ comet +1F525 ; fully-qualified # 🔥 fire +1F4A7 ; fully-qualified # 💧 droplet +1F30A ; fully-qualified # 🌊 water wave + +# Travel & Places subtotal: 259 +# Travel & Places subtotal: 259 w/o modifiers + +# group: Activities + +# subgroup: event +1F383 ; fully-qualified # 🎃 jack-o-lantern +1F384 ; fully-qualified # 🎄 Christmas tree +1F386 ; fully-qualified # 🎆 fireworks +1F387 ; fully-qualified # 🎇 sparkler +1F9E8 ; fully-qualified # 🧨 firecracker +2728 ; fully-qualified # ✨ sparkles +1F388 ; fully-qualified # 🎈 balloon +1F389 ; fully-qualified # 🎉 party popper +1F38A ; fully-qualified # 🎊 confetti ball +1F38B ; fully-qualified # 🎋 tanabata tree +1F38D ; fully-qualified # 🎍 pine decoration +1F38E ; fully-qualified # 🎎 Japanese dolls +1F38F ; fully-qualified # 🎏 carp streamer +1F390 ; fully-qualified # 🎐 wind chime +1F391 ; fully-qualified # 🎑 moon viewing ceremony +1F9E7 ; fully-qualified # 🧧 red envelope +1F380 ; fully-qualified # 🎀 ribbon +1F381 ; fully-qualified # 🎁 wrapped gift +1F397 FE0F ; fully-qualified # 🎗️ reminder ribbon +1F397 ; unqualified # 🎗 reminder ribbon +1F39F FE0F ; fully-qualified # 🎟️ admission tickets +1F39F ; unqualified # 🎟 admission tickets +1F3AB ; fully-qualified # 🎫 ticket + +# subgroup: award-medal +1F396 FE0F ; fully-qualified # 🎖️ military medal +1F396 ; unqualified # 🎖 military medal +1F3C6 ; fully-qualified # 🏆 trophy +1F3C5 ; fully-qualified # 🏅 sports medal +1F947 ; fully-qualified # 🥇 1st place medal +1F948 ; fully-qualified # 🥈 2nd place medal +1F949 ; fully-qualified # 🥉 3rd place medal + +# subgroup: sport +26BD ; fully-qualified # ⚽ soccer ball +26BE ; fully-qualified # ⚾ baseball +1F94E ; fully-qualified # 🥎 softball +1F3C0 ; fully-qualified # 🏀 basketball +1F3D0 ; fully-qualified # 🏐 volleyball +1F3C8 ; fully-qualified # 🏈 american football +1F3C9 ; fully-qualified # 🏉 rugby football +1F3BE ; fully-qualified # 🎾 tennis +1F94F ; fully-qualified # 🥏 flying disc +1F3B3 ; fully-qualified # 🎳 bowling +1F3CF ; fully-qualified # 🏏 cricket game +1F3D1 ; fully-qualified # 🏑 field hockey +1F3D2 ; fully-qualified # 🏒 ice hockey +1F94D ; fully-qualified # 🥍 lacrosse +1F3D3 ; fully-qualified # 🏓 ping pong +1F3F8 ; fully-qualified # 🏸 badminton +1F94A ; fully-qualified # 🥊 boxing glove +1F94B ; fully-qualified # 🥋 martial arts uniform +1F945 ; fully-qualified # 🥅 goal net +26F3 ; fully-qualified # ⛳ flag in hole +26F8 FE0F ; fully-qualified # ⛸️ ice skate +26F8 ; unqualified # ⛸ ice skate +1F3A3 ; fully-qualified # 🎣 fishing pole +1F93F ; fully-qualified # 🤿 diving mask +1F3BD ; fully-qualified # 🎽 running shirt +1F3BF ; fully-qualified # 🎿 skis +1F6F7 ; fully-qualified # 🛷 sled +1F94C ; fully-qualified # 🥌 curling stone + +# subgroup: game +1F3AF ; fully-qualified # 🎯 direct hit +1FA80 ; fully-qualified # 🪀 yo-yo +1FA81 ; fully-qualified # 🪁 kite +1F3B1 ; fully-qualified # 🎱 pool 8 ball +1F52E ; fully-qualified # 🔮 crystal ball +1F9FF ; fully-qualified # 🧿 nazar amulet +1F3AE ; fully-qualified # 🎮 video game +1F579 FE0F ; fully-qualified # 🕹️ joystick +1F579 ; unqualified # 🕹 joystick +1F3B0 ; fully-qualified # 🎰 slot machine +1F3B2 ; fully-qualified # 🎲 game die +1F9E9 ; fully-qualified # 🧩 puzzle piece +1F9F8 ; fully-qualified # 🧸 teddy bear +2660 FE0F ; fully-qualified # ♠️ spade suit +2660 ; unqualified # ♠ spade suit +2665 FE0F ; fully-qualified # ♥️ heart suit +2665 ; unqualified # ♥ heart suit +2666 FE0F ; fully-qualified # ♦️ diamond suit +2666 ; unqualified # ♦ diamond suit +2663 FE0F ; fully-qualified # ♣️ club suit +2663 ; unqualified # ♣ club suit +265F FE0F ; fully-qualified # ♟️ chess pawn +265F ; unqualified # ♟ chess pawn +1F0CF ; fully-qualified # 🃏 joker +1F004 ; fully-qualified # 🀄 mahjong red dragon +1F3B4 ; fully-qualified # 🎴 flower playing cards + +# subgroup: arts & crafts +1F3AD ; fully-qualified # 🎭 performing arts +1F5BC FE0F ; fully-qualified # 🖼️ framed picture +1F5BC ; unqualified # 🖼 framed picture +1F3A8 ; fully-qualified # 🎨 artist palette +1F9F5 ; fully-qualified # 🧵 thread +1F9F6 ; fully-qualified # 🧶 yarn + +# Activities subtotal: 90 +# Activities subtotal: 90 w/o modifiers + +# group: Objects + +# subgroup: clothing +1F453 ; fully-qualified # 👓 glasses +1F576 FE0F ; fully-qualified # 🕶️ sunglasses +1F576 ; unqualified # 🕶 sunglasses +1F97D ; fully-qualified # 🥽 goggles +1F97C ; fully-qualified # 🥼 lab coat +1F9BA ; fully-qualified # 🦺 safety vest +1F454 ; fully-qualified # 👔 necktie +1F455 ; fully-qualified # 👕 t-shirt +1F456 ; fully-qualified # 👖 jeans +1F9E3 ; fully-qualified # 🧣 scarf +1F9E4 ; fully-qualified # 🧤 gloves +1F9E5 ; fully-qualified # 🧥 coat +1F9E6 ; fully-qualified # 🧦 socks +1F457 ; fully-qualified # 👗 dress +1F458 ; fully-qualified # 👘 kimono +1F97B ; fully-qualified # 🥻 sari +1FA71 ; fully-qualified # 🩱 one-piece swimsuit +1FA72 ; fully-qualified # 🩲 swim brief +1FA73 ; fully-qualified # 🩳 shorts +1F459 ; fully-qualified # 👙 bikini +1F45A ; fully-qualified # 👚 woman’s clothes +1F45B ; fully-qualified # 👛 purse +1F45C ; fully-qualified # 👜 handbag +1F45D ; fully-qualified # 👝 clutch bag +1F6CD FE0F ; fully-qualified # 🛍️ shopping bags +1F6CD ; unqualified # 🛍 shopping bags +1F392 ; fully-qualified # 🎒 backpack +1F45E ; fully-qualified # 👞 man’s shoe +1F45F ; fully-qualified # 👟 running shoe +1F97E ; fully-qualified # 🥾 hiking boot +1F97F ; fully-qualified # 🥿 flat shoe +1F460 ; fully-qualified # 👠 high-heeled shoe +1F461 ; fully-qualified # 👡 woman’s sandal +1FA70 ; fully-qualified # 🩰 ballet shoes +1F462 ; fully-qualified # 👢 woman’s boot +1F451 ; fully-qualified # 👑 crown +1F452 ; fully-qualified # 👒 woman’s hat +1F3A9 ; fully-qualified # 🎩 top hat +1F393 ; fully-qualified # 🎓 graduation cap +1F9E2 ; fully-qualified # 🧢 billed cap +26D1 FE0F ; fully-qualified # ⛑️ rescue worker’s helmet +26D1 ; unqualified # ⛑ rescue worker’s helmet +1F4FF ; fully-qualified # 📿 prayer beads +1F484 ; fully-qualified # 💄 lipstick +1F48D ; fully-qualified # 💍 ring +1F48E ; fully-qualified # 💎 gem stone + +# subgroup: sound +1F507 ; fully-qualified # 🔇 muted speaker +1F508 ; fully-qualified # 🔈 speaker low volume +1F509 ; fully-qualified # 🔉 speaker medium volume +1F50A ; fully-qualified # 🔊 speaker high volume +1F4E2 ; fully-qualified # 📢 loudspeaker +1F4E3 ; fully-qualified # 📣 megaphone +1F4EF ; fully-qualified # 📯 postal horn +1F514 ; fully-qualified # 🔔 bell +1F515 ; fully-qualified # 🔕 bell with slash + +# subgroup: music +1F3BC ; fully-qualified # 🎼 musical score +1F3B5 ; fully-qualified # 🎵 musical note +1F3B6 ; fully-qualified # 🎶 musical notes +1F399 FE0F ; fully-qualified # 🎙️ studio microphone +1F399 ; unqualified # 🎙 studio microphone +1F39A FE0F ; fully-qualified # 🎚️ level slider +1F39A ; unqualified # 🎚 level slider +1F39B FE0F ; fully-qualified # 🎛️ control knobs +1F39B ; unqualified # 🎛 control knobs +1F3A4 ; fully-qualified # 🎤 microphone +1F3A7 ; fully-qualified # 🎧 headphone +1F4FB ; fully-qualified # 📻 radio + +# subgroup: musical-instrument +1F3B7 ; fully-qualified # 🎷 saxophone +1F3B8 ; fully-qualified # 🎸 guitar +1F3B9 ; fully-qualified # 🎹 musical keyboard +1F3BA ; fully-qualified # 🎺 trumpet +1F3BB ; fully-qualified # 🎻 violin +1FA95 ; fully-qualified # 🪕 banjo +1F941 ; fully-qualified # 🥁 drum + +# subgroup: phone +1F4F1 ; fully-qualified # 📱 mobile phone +1F4F2 ; fully-qualified # 📲 mobile phone with arrow +260E FE0F ; fully-qualified # ☎️ telephone +260E ; unqualified # ☎ telephone +1F4DE ; fully-qualified # 📞 telephone receiver +1F4DF ; fully-qualified # 📟 pager +1F4E0 ; fully-qualified # 📠 fax machine + +# subgroup: computer +1F50B ; fully-qualified # 🔋 battery +1F50C ; fully-qualified # 🔌 electric plug +1F4BB ; fully-qualified # 💻 laptop computer +1F5A5 FE0F ; fully-qualified # 🖥️ desktop computer +1F5A5 ; unqualified # 🖥 desktop computer +1F5A8 FE0F ; fully-qualified # 🖨️ printer +1F5A8 ; unqualified # 🖨 printer +2328 FE0F ; fully-qualified # ⌨️ keyboard +2328 ; unqualified # ⌨ keyboard +1F5B1 FE0F ; fully-qualified # 🖱️ computer mouse +1F5B1 ; unqualified # 🖱 computer mouse +1F5B2 FE0F ; fully-qualified # 🖲️ trackball +1F5B2 ; unqualified # 🖲 trackball +1F4BD ; fully-qualified # 💽 computer disk +1F4BE ; fully-qualified # 💾 floppy disk +1F4BF ; fully-qualified # 💿 optical disk +1F4C0 ; fully-qualified # 📀 dvd +1F9EE ; fully-qualified # 🧮 abacus + +# subgroup: light & video +1F3A5 ; fully-qualified # 🎥 movie camera +1F39E FE0F ; fully-qualified # 🎞️ film frames +1F39E ; unqualified # 🎞 film frames +1F4FD FE0F ; fully-qualified # 📽️ film projector +1F4FD ; unqualified # 📽 film projector +1F3AC ; fully-qualified # 🎬 clapper board +1F4FA ; fully-qualified # 📺 television +1F4F7 ; fully-qualified # 📷 camera +1F4F8 ; fully-qualified # 📸 camera with flash +1F4F9 ; fully-qualified # 📹 video camera +1F4FC ; fully-qualified # 📼 videocassette +1F50D ; fully-qualified # 🔍 magnifying glass tilted left +1F50E ; fully-qualified # 🔎 magnifying glass tilted right +1F56F FE0F ; fully-qualified # 🕯️ candle +1F56F ; unqualified # 🕯 candle +1F4A1 ; fully-qualified # 💡 light bulb +1F526 ; fully-qualified # 🔦 flashlight +1F3EE ; fully-qualified # 🏮 red paper lantern +1FA94 ; fully-qualified # 🪔 diya lamp + +# subgroup: book-paper +1F4D4 ; fully-qualified # 📔 notebook with decorative cover +1F4D5 ; fully-qualified # 📕 closed book +1F4D6 ; fully-qualified # 📖 open book +1F4D7 ; fully-qualified # 📗 green book +1F4D8 ; fully-qualified # 📘 blue book +1F4D9 ; fully-qualified # 📙 orange book +1F4DA ; fully-qualified # 📚 books +1F4D3 ; fully-qualified # 📓 notebook +1F4D2 ; fully-qualified # 📒 ledger +1F4C3 ; fully-qualified # 📃 page with curl +1F4DC ; fully-qualified # 📜 scroll +1F4C4 ; fully-qualified # 📄 page facing up +1F4F0 ; fully-qualified # 📰 newspaper +1F5DE FE0F ; fully-qualified # 🗞️ rolled-up newspaper +1F5DE ; unqualified # 🗞 rolled-up newspaper +1F4D1 ; fully-qualified # 📑 bookmark tabs +1F516 ; fully-qualified # 🔖 bookmark +1F3F7 FE0F ; fully-qualified # 🏷️ label +1F3F7 ; unqualified # 🏷 label + +# subgroup: money +1F4B0 ; fully-qualified # 💰 money bag +1F4B4 ; fully-qualified # 💴 yen banknote +1F4B5 ; fully-qualified # 💵 dollar banknote +1F4B6 ; fully-qualified # 💶 euro banknote +1F4B7 ; fully-qualified # 💷 pound banknote +1F4B8 ; fully-qualified # 💸 money with wings +1F4B3 ; fully-qualified # 💳 credit card +1F9FE ; fully-qualified # 🧾 receipt +1F4B9 ; fully-qualified # 💹 chart increasing with yen +1F4B1 ; fully-qualified # 💱 currency exchange +1F4B2 ; fully-qualified # 💲 heavy dollar sign + +# subgroup: mail +2709 FE0F ; fully-qualified # ✉️ envelope +2709 ; unqualified # ✉ envelope +1F4E7 ; fully-qualified # 📧 e-mail +1F4E8 ; fully-qualified # 📨 incoming envelope +1F4E9 ; fully-qualified # 📩 envelope with arrow +1F4E4 ; fully-qualified # 📤 outbox tray +1F4E5 ; fully-qualified # 📥 inbox tray +1F4E6 ; fully-qualified # 📦 package +1F4EB ; fully-qualified # 📫 closed mailbox with raised flag +1F4EA ; fully-qualified # 📪 closed mailbox with lowered flag +1F4EC ; fully-qualified # 📬 open mailbox with raised flag +1F4ED ; fully-qualified # 📭 open mailbox with lowered flag +1F4EE ; fully-qualified # 📮 postbox +1F5F3 FE0F ; fully-qualified # 🗳️ ballot box with ballot +1F5F3 ; unqualified # 🗳 ballot box with ballot + +# subgroup: writing +270F FE0F ; fully-qualified # ✏️ pencil +270F ; unqualified # ✏ pencil +2712 FE0F ; fully-qualified # ✒️ black nib +2712 ; unqualified # ✒ black nib +1F58B FE0F ; fully-qualified # 🖋️ fountain pen +1F58B ; unqualified # 🖋 fountain pen +1F58A FE0F ; fully-qualified # 🖊️ pen +1F58A ; unqualified # 🖊 pen +1F58C FE0F ; fully-qualified # 🖌️ paintbrush +1F58C ; unqualified # 🖌 paintbrush +1F58D FE0F ; fully-qualified # 🖍️ crayon +1F58D ; unqualified # 🖍 crayon +1F4DD ; fully-qualified # 📝 memo + +# subgroup: office +1F4BC ; fully-qualified # 💼 briefcase +1F4C1 ; fully-qualified # 📁 file folder +1F4C2 ; fully-qualified # 📂 open file folder +1F5C2 FE0F ; fully-qualified # 🗂️ card index dividers +1F5C2 ; unqualified # 🗂 card index dividers +1F4C5 ; fully-qualified # 📅 calendar +1F4C6 ; fully-qualified # 📆 tear-off calendar +1F5D2 FE0F ; fully-qualified # 🗒️ spiral notepad +1F5D2 ; unqualified # 🗒 spiral notepad +1F5D3 FE0F ; fully-qualified # 🗓️ spiral calendar +1F5D3 ; unqualified # 🗓 spiral calendar +1F4C7 ; fully-qualified # 📇 card index +1F4C8 ; fully-qualified # 📈 chart increasing +1F4C9 ; fully-qualified # 📉 chart decreasing +1F4CA ; fully-qualified # 📊 bar chart +1F4CB ; fully-qualified # 📋 clipboard +1F4CC ; fully-qualified # 📌 pushpin +1F4CD ; fully-qualified # 📍 round pushpin +1F4CE ; fully-qualified # 📎 paperclip +1F587 FE0F ; fully-qualified # 🖇️ linked paperclips +1F587 ; unqualified # 🖇 linked paperclips +1F4CF ; fully-qualified # 📏 straight ruler +1F4D0 ; fully-qualified # 📐 triangular ruler +2702 FE0F ; fully-qualified # ✂️ scissors +2702 ; unqualified # ✂ scissors +1F5C3 FE0F ; fully-qualified # 🗃️ card file box +1F5C3 ; unqualified # 🗃 card file box +1F5C4 FE0F ; fully-qualified # 🗄️ file cabinet +1F5C4 ; unqualified # 🗄 file cabinet +1F5D1 FE0F ; fully-qualified # 🗑️ wastebasket +1F5D1 ; unqualified # 🗑 wastebasket + +# subgroup: lock +1F512 ; fully-qualified # 🔒 locked +1F513 ; fully-qualified # 🔓 unlocked +1F50F ; fully-qualified # 🔏 locked with pen +1F510 ; fully-qualified # 🔐 locked with key +1F511 ; fully-qualified # 🔑 key +1F5DD FE0F ; fully-qualified # 🗝️ old key +1F5DD ; unqualified # 🗝 old key + +# subgroup: tool +1F528 ; fully-qualified # 🔨 hammer +1FA93 ; fully-qualified # 🪓 axe +26CF FE0F ; fully-qualified # ⛏️ pick +26CF ; unqualified # ⛏ pick +2692 FE0F ; fully-qualified # ⚒️ hammer and pick +2692 ; unqualified # ⚒ hammer and pick +1F6E0 FE0F ; fully-qualified # 🛠️ hammer and wrench +1F6E0 ; unqualified # 🛠 hammer and wrench +1F5E1 FE0F ; fully-qualified # 🗡️ dagger +1F5E1 ; unqualified # 🗡 dagger +2694 FE0F ; fully-qualified # ⚔️ crossed swords +2694 ; unqualified # ⚔ crossed swords +1F52B ; fully-qualified # 🔫 pistol +1F3F9 ; fully-qualified # 🏹 bow and arrow +1F6E1 FE0F ; fully-qualified # 🛡️ shield +1F6E1 ; unqualified # 🛡 shield +1F527 ; fully-qualified # 🔧 wrench +1F529 ; fully-qualified # 🔩 nut and bolt +2699 FE0F ; fully-qualified # ⚙️ gear +2699 ; unqualified # ⚙ gear +1F5DC FE0F ; fully-qualified # 🗜️ clamp +1F5DC ; unqualified # 🗜 clamp +2696 FE0F ; fully-qualified # ⚖️ balance scale +2696 ; unqualified # ⚖ balance scale +1F9AF ; fully-qualified # 🦯 probing cane +1F517 ; fully-qualified # 🔗 link +26D3 FE0F ; fully-qualified # ⛓️ chains +26D3 ; unqualified # ⛓ chains +1F9F0 ; fully-qualified # 🧰 toolbox +1F9F2 ; fully-qualified # 🧲 magnet + +# subgroup: science +2697 FE0F ; fully-qualified # ⚗️ alembic +2697 ; unqualified # ⚗ alembic +1F9EA ; fully-qualified # 🧪 test tube +1F9EB ; fully-qualified # 🧫 petri dish +1F9EC ; fully-qualified # 🧬 dna +1F52C ; fully-qualified # 🔬 microscope +1F52D ; fully-qualified # 🔭 telescope +1F4E1 ; fully-qualified # 📡 satellite antenna + +# subgroup: medical +1F489 ; fully-qualified # 💉 syringe +1FA78 ; fully-qualified # 🩸 drop of blood +1F48A ; fully-qualified # 💊 pill +1FA79 ; fully-qualified # 🩹 adhesive bandage +1FA7A ; fully-qualified # 🩺 stethoscope + +# subgroup: household +1F6AA ; fully-qualified # 🚪 door +1F6CF FE0F ; fully-qualified # 🛏️ bed +1F6CF ; unqualified # 🛏 bed +1F6CB FE0F ; fully-qualified # 🛋️ couch and lamp +1F6CB ; unqualified # 🛋 couch and lamp +1FA91 ; fully-qualified # 🪑 chair +1F6BD ; fully-qualified # 🚽 toilet +1F6BF ; fully-qualified # 🚿 shower +1F6C1 ; fully-qualified # 🛁 bathtub +1FA92 ; fully-qualified # 🪒 razor +1F9F4 ; fully-qualified # 🧴 lotion bottle +1F9F7 ; fully-qualified # 🧷 safety pin +1F9F9 ; fully-qualified # 🧹 broom +1F9FA ; fully-qualified # 🧺 basket +1F9FB ; fully-qualified # 🧻 roll of paper +1F9FC ; fully-qualified # 🧼 soap +1F9FD ; fully-qualified # 🧽 sponge +1F9EF ; fully-qualified # 🧯 fire extinguisher +1F6D2 ; fully-qualified # 🛒 shopping cart + +# subgroup: other-object +1F6AC ; fully-qualified # 🚬 cigarette +26B0 FE0F ; fully-qualified # ⚰️ coffin +26B0 ; unqualified # ⚰ coffin +26B1 FE0F ; fully-qualified # ⚱️ funeral urn +26B1 ; unqualified # ⚱ funeral urn +1F5FF ; fully-qualified # 🗿 moai + +# Objects subtotal: 282 +# Objects subtotal: 282 w/o modifiers + +# group: Symbols + +# subgroup: transport-sign +1F3E7 ; fully-qualified # 🏧 ATM sign +1F6AE ; fully-qualified # 🚮 litter in bin sign +1F6B0 ; fully-qualified # 🚰 potable water +267F ; fully-qualified # ♿ wheelchair symbol +1F6B9 ; fully-qualified # 🚹 men’s room +1F6BA ; fully-qualified # 🚺 women’s room +1F6BB ; fully-qualified # 🚻 restroom +1F6BC ; fully-qualified # 🚼 baby symbol +1F6BE ; fully-qualified # 🚾 water closet +1F6C2 ; fully-qualified # 🛂 passport control +1F6C3 ; fully-qualified # 🛃 customs +1F6C4 ; fully-qualified # 🛄 baggage claim +1F6C5 ; fully-qualified # 🛅 left luggage + +# subgroup: warning +26A0 FE0F ; fully-qualified # ⚠️ warning +26A0 ; unqualified # ⚠ warning +1F6B8 ; fully-qualified # 🚸 children crossing +26D4 ; fully-qualified # ⛔ no entry +1F6AB ; fully-qualified # 🚫 prohibited +1F6B3 ; fully-qualified # 🚳 no bicycles +1F6AD ; fully-qualified # 🚭 no smoking +1F6AF ; fully-qualified # 🚯 no littering +1F6B1 ; fully-qualified # 🚱 non-potable water +1F6B7 ; fully-qualified # 🚷 no pedestrians +1F4F5 ; fully-qualified # 📵 no mobile phones +1F51E ; fully-qualified # 🔞 no one under eighteen +2622 FE0F ; fully-qualified # ☢️ radioactive +2622 ; unqualified # ☢ radioactive +2623 FE0F ; fully-qualified # ☣️ biohazard +2623 ; unqualified # ☣ biohazard + +# subgroup: arrow +2B06 FE0F ; fully-qualified # ⬆️ up arrow +2B06 ; unqualified # ⬆ up arrow +2197 FE0F ; fully-qualified # ↗️ up-right arrow +2197 ; unqualified # ↗ up-right arrow +27A1 FE0F ; fully-qualified # ➡️ right arrow +27A1 ; unqualified # ➡ right arrow +2198 FE0F ; fully-qualified # ↘️ down-right arrow +2198 ; unqualified # ↘ down-right arrow +2B07 FE0F ; fully-qualified # ⬇️ down arrow +2B07 ; unqualified # ⬇ down arrow +2199 FE0F ; fully-qualified # ↙️ down-left arrow +2199 ; unqualified # ↙ down-left arrow +2B05 FE0F ; fully-qualified # ⬅️ left arrow +2B05 ; unqualified # ⬅ left arrow +2196 FE0F ; fully-qualified # ↖️ up-left arrow +2196 ; unqualified # ↖ up-left arrow +2195 FE0F ; fully-qualified # ↕️ up-down arrow +2195 ; unqualified # ↕ up-down arrow +2194 FE0F ; fully-qualified # ↔️ left-right arrow +2194 ; unqualified # ↔ left-right arrow +21A9 FE0F ; fully-qualified # ↩️ right arrow curving left +21A9 ; unqualified # ↩ right arrow curving left +21AA FE0F ; fully-qualified # ↪️ left arrow curving right +21AA ; unqualified # ↪ left arrow curving right +2934 FE0F ; fully-qualified # ⤴️ right arrow curving up +2934 ; unqualified # ⤴ right arrow curving up +2935 FE0F ; fully-qualified # ⤵️ right arrow curving down +2935 ; unqualified # ⤵ right arrow curving down +1F503 ; fully-qualified # 🔃 clockwise vertical arrows +1F504 ; fully-qualified # 🔄 counterclockwise arrows button +1F519 ; fully-qualified # 🔙 BACK arrow +1F51A ; fully-qualified # 🔚 END arrow +1F51B ; fully-qualified # 🔛 ON! arrow +1F51C ; fully-qualified # 🔜 SOON arrow +1F51D ; fully-qualified # 🔝 TOP arrow + +# subgroup: religion +1F6D0 ; fully-qualified # 🛐 place of worship +269B FE0F ; fully-qualified # ⚛️ atom symbol +269B ; unqualified # ⚛ atom symbol +1F549 FE0F ; fully-qualified # 🕉️ om +1F549 ; unqualified # 🕉 om +2721 FE0F ; fully-qualified # ✡️ star of David +2721 ; unqualified # ✡ star of David +2638 FE0F ; fully-qualified # ☸️ wheel of dharma +2638 ; unqualified # ☸ wheel of dharma +262F FE0F ; fully-qualified # ☯️ yin yang +262F ; unqualified # ☯ yin yang +271D FE0F ; fully-qualified # ✝️ latin cross +271D ; unqualified # ✝ latin cross +2626 FE0F ; fully-qualified # ☦️ orthodox cross +2626 ; unqualified # ☦ orthodox cross +262A FE0F ; fully-qualified # ☪️ star and crescent +262A ; unqualified # ☪ star and crescent +262E FE0F ; fully-qualified # ☮️ peace symbol +262E ; unqualified # ☮ peace symbol +1F54E ; fully-qualified # 🕎 menorah +1F52F ; fully-qualified # 🔯 dotted six-pointed star + +# subgroup: zodiac +2648 ; fully-qualified # ♈ Aries +2649 ; fully-qualified # ♉ Taurus +264A ; fully-qualified # ♊ Gemini +264B ; fully-qualified # ♋ Cancer +264C ; fully-qualified # ♌ Leo +264D ; fully-qualified # ♍ Virgo +264E ; fully-qualified # ♎ Libra +264F ; fully-qualified # ♏ Scorpio +2650 ; fully-qualified # ♐ Sagittarius +2651 ; fully-qualified # ♑ Capricorn +2652 ; fully-qualified # ♒ Aquarius +2653 ; fully-qualified # ♓ Pisces +26CE ; fully-qualified # ⛎ Ophiuchus + +# subgroup: av-symbol +1F500 ; fully-qualified # 🔀 shuffle tracks button +1F501 ; fully-qualified # 🔁 repeat button +1F502 ; fully-qualified # 🔂 repeat single button +25B6 FE0F ; fully-qualified # ▶️ play button +25B6 ; unqualified # ▶ play button +23E9 ; fully-qualified # ⏩ fast-forward button +23ED FE0F ; fully-qualified # ⏭️ next track button +23ED ; unqualified # ⏭ next track button +23EF FE0F ; fully-qualified # ⏯️ play or pause button +23EF ; unqualified # ⏯ play or pause button +25C0 FE0F ; fully-qualified # ◀️ reverse button +25C0 ; unqualified # ◀ reverse button +23EA ; fully-qualified # ⏪ fast reverse button +23EE FE0F ; fully-qualified # ⏮️ last track button +23EE ; unqualified # ⏮ last track button +1F53C ; fully-qualified # 🔼 upwards button +23EB ; fully-qualified # ⏫ fast up button +1F53D ; fully-qualified # 🔽 downwards button +23EC ; fully-qualified # ⏬ fast down button +23F8 FE0F ; fully-qualified # ⏸️ pause button +23F8 ; unqualified # ⏸ pause button +23F9 FE0F ; fully-qualified # ⏹️ stop button +23F9 ; unqualified # ⏹ stop button +23FA FE0F ; fully-qualified # ⏺️ record button +23FA ; unqualified # ⏺ record button +23CF FE0F ; fully-qualified # ⏏️ eject button +23CF ; unqualified # ⏏ eject button +1F3A6 ; fully-qualified # 🎦 cinema +1F505 ; fully-qualified # 🔅 dim button +1F506 ; fully-qualified # 🔆 bright button +1F4F6 ; fully-qualified # 📶 antenna bars +1F4F3 ; fully-qualified # 📳 vibration mode +1F4F4 ; fully-qualified # 📴 mobile phone off + +# subgroup: gender +2640 FE0F ; fully-qualified # ♀️ female sign +2640 ; unqualified # ♀ female sign +2642 FE0F ; fully-qualified # ♂️ male sign +2642 ; unqualified # ♂ male sign + +# subgroup: other-symbol +2695 FE0F ; fully-qualified # ⚕️ medical symbol +2695 ; unqualified # ⚕ medical symbol +267E FE0F ; fully-qualified # ♾️ infinity +267E ; unqualified # ♾ infinity +267B FE0F ; fully-qualified # ♻️ recycling symbol +267B ; unqualified # ♻ recycling symbol +269C FE0F ; fully-qualified # ⚜️ fleur-de-lis +269C ; unqualified # ⚜ fleur-de-lis +1F531 ; fully-qualified # 🔱 trident emblem +1F4DB ; fully-qualified # 📛 name badge +1F530 ; fully-qualified # 🔰 Japanese symbol for beginner +2B55 ; fully-qualified # ⭕ hollow red circle +2705 ; fully-qualified # ✅ check mark button +2611 FE0F ; fully-qualified # ☑️ check box with check +2611 ; unqualified # ☑ check box with check +2714 FE0F ; fully-qualified # ✔️ check mark +2714 ; unqualified # ✔ check mark +2716 FE0F ; fully-qualified # ✖️ multiplication sign +2716 ; unqualified # ✖ multiplication sign +274C ; fully-qualified # ❌ cross mark +274E ; fully-qualified # ❎ cross mark button +2795 ; fully-qualified # ➕ plus sign +2796 ; fully-qualified # ➖ minus sign +2797 ; fully-qualified # ➗ division sign +27B0 ; fully-qualified # ➰ curly loop +27BF ; fully-qualified # ➿ double curly loop +303D FE0F ; fully-qualified # 〽️ part alternation mark +303D ; unqualified # 〽 part alternation mark +2733 FE0F ; fully-qualified # ✳️ eight-spoked asterisk +2733 ; unqualified # ✳ eight-spoked asterisk +2734 FE0F ; fully-qualified # ✴️ eight-pointed star +2734 ; unqualified # ✴ eight-pointed star +2747 FE0F ; fully-qualified # ❇️ sparkle +2747 ; unqualified # ❇ sparkle +203C FE0F ; fully-qualified # ‼️ double exclamation mark +203C ; unqualified # ‼ double exclamation mark +2049 FE0F ; fully-qualified # ⁉️ exclamation question mark +2049 ; unqualified # ⁉ exclamation question mark +2753 ; fully-qualified # ❓ question mark +2754 ; fully-qualified # ❔ white question mark +2755 ; fully-qualified # ❕ white exclamation mark +2757 ; fully-qualified # ❗ exclamation mark +3030 FE0F ; fully-qualified # 〰️ wavy dash +3030 ; unqualified # 〰 wavy dash +00A9 FE0F ; fully-qualified # ©️ copyright +00A9 ; unqualified # © copyright +00AE FE0F ; fully-qualified # ®️ registered +00AE ; unqualified # ® registered +2122 FE0F ; fully-qualified # ™️ trade mark +2122 ; unqualified # ™ trade mark + +# subgroup: keycap +0023 FE0F 20E3 ; fully-qualified # #️⃣ keycap: # +0023 20E3 ; unqualified # #⃣ keycap: # +002A FE0F 20E3 ; fully-qualified # *️⃣ keycap: * +002A 20E3 ; unqualified # *⃣ keycap: * +0030 FE0F 20E3 ; fully-qualified # 0️⃣ keycap: 0 +0030 20E3 ; unqualified # 0⃣ keycap: 0 +0031 FE0F 20E3 ; fully-qualified # 1️⃣ keycap: 1 +0031 20E3 ; unqualified # 1⃣ keycap: 1 +0032 FE0F 20E3 ; fully-qualified # 2️⃣ keycap: 2 +0032 20E3 ; unqualified # 2⃣ keycap: 2 +0033 FE0F 20E3 ; fully-qualified # 3️⃣ keycap: 3 +0033 20E3 ; unqualified # 3⃣ keycap: 3 +0034 FE0F 20E3 ; fully-qualified # 4️⃣ keycap: 4 +0034 20E3 ; unqualified # 4⃣ keycap: 4 +0035 FE0F 20E3 ; fully-qualified # 5️⃣ keycap: 5 +0035 20E3 ; unqualified # 5⃣ keycap: 5 +0036 FE0F 20E3 ; fully-qualified # 6️⃣ keycap: 6 +0036 20E3 ; unqualified # 6⃣ keycap: 6 +0037 FE0F 20E3 ; fully-qualified # 7️⃣ keycap: 7 +0037 20E3 ; unqualified # 7⃣ keycap: 7 +0038 FE0F 20E3 ; fully-qualified # 8️⃣ keycap: 8 +0038 20E3 ; unqualified # 8⃣ keycap: 8 +0039 FE0F 20E3 ; fully-qualified # 9️⃣ keycap: 9 +0039 20E3 ; unqualified # 9⃣ keycap: 9 +1F51F ; fully-qualified # 🔟 keycap: 10 + +# subgroup: alphanum +1F520 ; fully-qualified # 🔠 input latin uppercase +1F521 ; fully-qualified # 🔡 input latin lowercase +1F522 ; fully-qualified # 🔢 input numbers +1F523 ; fully-qualified # 🔣 input symbols +1F524 ; fully-qualified # 🔤 input latin letters +1F170 FE0F ; fully-qualified # 🅰️ A button (blood type) +1F170 ; unqualified # 🅰 A button (blood type) +1F18E ; fully-qualified # 🆎 AB button (blood type) +1F171 FE0F ; fully-qualified # 🅱️ B button (blood type) +1F171 ; unqualified # 🅱 B button (blood type) +1F191 ; fully-qualified # 🆑 CL button +1F192 ; fully-qualified # 🆒 COOL button +1F193 ; fully-qualified # 🆓 FREE button +2139 FE0F ; fully-qualified # ℹ️ information +2139 ; unqualified # ℹ information +1F194 ; fully-qualified # 🆔 ID button +24C2 FE0F ; fully-qualified # Ⓜ️ circled M +24C2 ; unqualified # Ⓜ circled M +1F195 ; fully-qualified # 🆕 NEW button +1F196 ; fully-qualified # 🆖 NG button +1F17E FE0F ; fully-qualified # 🅾️ O button (blood type) +1F17E ; unqualified # 🅾 O button (blood type) +1F197 ; fully-qualified # 🆗 OK button +1F17F FE0F ; fully-qualified # 🅿️ P button +1F17F ; unqualified # 🅿 P button +1F198 ; fully-qualified # 🆘 SOS button +1F199 ; fully-qualified # 🆙 UP! button +1F19A ; fully-qualified # 🆚 VS button +1F201 ; fully-qualified # 🈁 Japanese “here” button +1F202 FE0F ; fully-qualified # 🈂️ Japanese “service charge” button +1F202 ; unqualified # 🈂 Japanese “service charge” button +1F237 FE0F ; fully-qualified # 🈷️ Japanese “monthly amount” button +1F237 ; unqualified # 🈷 Japanese “monthly amount” button +1F236 ; fully-qualified # 🈶 Japanese “not free of charge” button +1F22F ; fully-qualified # 🈯 Japanese “reserved” button +1F250 ; fully-qualified # 🉐 Japanese “bargain” button +1F239 ; fully-qualified # 🈹 Japanese “discount” button +1F21A ; fully-qualified # 🈚 Japanese “free of charge” button +1F232 ; fully-qualified # 🈲 Japanese “prohibited” button +1F251 ; fully-qualified # 🉑 Japanese “acceptable” button +1F238 ; fully-qualified # 🈸 Japanese “application” button +1F234 ; fully-qualified # 🈴 Japanese “passing grade” button +1F233 ; fully-qualified # 🈳 Japanese “vacancy” button +3297 FE0F ; fully-qualified # ㊗️ Japanese “congratulations” button +3297 ; unqualified # ㊗ Japanese “congratulations” button +3299 FE0F ; fully-qualified # ㊙️ Japanese “secret” button +3299 ; unqualified # ㊙ Japanese “secret” button +1F23A ; fully-qualified # 🈺 Japanese “open for business” button +1F235 ; fully-qualified # 🈵 Japanese “no vacancy” button + +# subgroup: geometric +1F534 ; fully-qualified # 🔴 red circle +1F7E0 ; fully-qualified # 🟠 orange circle +1F7E1 ; fully-qualified # 🟡 yellow circle +1F7E2 ; fully-qualified # 🟢 green circle +1F535 ; fully-qualified # 🔵 blue circle +1F7E3 ; fully-qualified # 🟣 purple circle +1F7E4 ; fully-qualified # 🟤 brown circle +26AB ; fully-qualified # ⚫ black circle +26AA ; fully-qualified # ⚪ white circle +1F7E5 ; fully-qualified # 🟥 red square +1F7E7 ; fully-qualified # 🟧 orange square +1F7E8 ; fully-qualified # 🟨 yellow square +1F7E9 ; fully-qualified # 🟩 green square +1F7E6 ; fully-qualified # 🟦 blue square +1F7EA ; fully-qualified # 🟪 purple square +1F7EB ; fully-qualified # 🟫 brown square +2B1B ; fully-qualified # ⬛ black large square +2B1C ; fully-qualified # ⬜ white large square +25FC FE0F ; fully-qualified # ◼️ black medium square +25FC ; unqualified # ◼ black medium square +25FB FE0F ; fully-qualified # ◻️ white medium square +25FB ; unqualified # ◻ white medium square +25FE ; fully-qualified # ◾ black medium-small square +25FD ; fully-qualified # ◽ white medium-small square +25AA FE0F ; fully-qualified # ▪️ black small square +25AA ; unqualified # ▪ black small square +25AB FE0F ; fully-qualified # ▫️ white small square +25AB ; unqualified # ▫ white small square +1F536 ; fully-qualified # 🔶 large orange diamond +1F537 ; fully-qualified # 🔷 large blue diamond +1F538 ; fully-qualified # 🔸 small orange diamond +1F539 ; fully-qualified # 🔹 small blue diamond +1F53A ; fully-qualified # 🔺 red triangle pointed up +1F53B ; fully-qualified # 🔻 red triangle pointed down +1F4A0 ; fully-qualified # 💠 diamond with a dot +1F518 ; fully-qualified # 🔘 radio button +1F533 ; fully-qualified # 🔳 white square button +1F532 ; fully-qualified # 🔲 black square button + +# Symbols subtotal: 297 +# Symbols subtotal: 297 w/o modifiers + +# group: Flags + +# subgroup: flag +1F3C1 ; fully-qualified # 🏁 chequered flag +1F6A9 ; fully-qualified # 🚩 triangular flag +1F38C ; fully-qualified # 🎌 crossed flags +1F3F4 ; fully-qualified # 🏴 black flag +1F3F3 FE0F ; fully-qualified # 🏳️ white flag +1F3F3 ; unqualified # 🏳 white flag +1F3F3 FE0F 200D 1F308 ; fully-qualified # 🏳️‍🌈 rainbow flag +1F3F3 200D 1F308 ; unqualified # 🏳‍🌈 rainbow flag +1F3F4 200D 2620 FE0F ; fully-qualified # 🏴‍☠️ pirate flag +1F3F4 200D 2620 ; minimally-qualified # 🏴‍☠ pirate flag + +# subgroup: country-flag +1F1E6 1F1E8 ; fully-qualified # 🇦🇨 flag: Ascension Island +1F1E6 1F1E9 ; fully-qualified # 🇦🇩 flag: Andorra +1F1E6 1F1EA ; fully-qualified # 🇦🇪 flag: United Arab Emirates +1F1E6 1F1EB ; fully-qualified # 🇦🇫 flag: Afghanistan +1F1E6 1F1EC ; fully-qualified # 🇦🇬 flag: Antigua & Barbuda +1F1E6 1F1EE ; fully-qualified # 🇦🇮 flag: Anguilla +1F1E6 1F1F1 ; fully-qualified # 🇦🇱 flag: Albania +1F1E6 1F1F2 ; fully-qualified # 🇦🇲 flag: Armenia +1F1E6 1F1F4 ; fully-qualified # 🇦🇴 flag: Angola +1F1E6 1F1F6 ; fully-qualified # 🇦🇶 flag: Antarctica +1F1E6 1F1F7 ; fully-qualified # 🇦🇷 flag: Argentina +1F1E6 1F1F8 ; fully-qualified # 🇦🇸 flag: American Samoa +1F1E6 1F1F9 ; fully-qualified # 🇦🇹 flag: Austria +1F1E6 1F1FA ; fully-qualified # 🇦🇺 flag: Australia +1F1E6 1F1FC ; fully-qualified # 🇦🇼 flag: Aruba +1F1E6 1F1FD ; fully-qualified # 🇦🇽 flag: Åland Islands +1F1E6 1F1FF ; fully-qualified # 🇦🇿 flag: Azerbaijan +1F1E7 1F1E6 ; fully-qualified # 🇧🇦 flag: Bosnia & Herzegovina +1F1E7 1F1E7 ; fully-qualified # 🇧🇧 flag: Barbados +1F1E7 1F1E9 ; fully-qualified # 🇧🇩 flag: Bangladesh +1F1E7 1F1EA ; fully-qualified # 🇧🇪 flag: Belgium +1F1E7 1F1EB ; fully-qualified # 🇧🇫 flag: Burkina Faso +1F1E7 1F1EC ; fully-qualified # 🇧🇬 flag: Bulgaria +1F1E7 1F1ED ; fully-qualified # 🇧🇭 flag: Bahrain +1F1E7 1F1EE ; fully-qualified # 🇧🇮 flag: Burundi +1F1E7 1F1EF ; fully-qualified # 🇧🇯 flag: Benin +1F1E7 1F1F1 ; fully-qualified # 🇧🇱 flag: St. Barthélemy +1F1E7 1F1F2 ; fully-qualified # 🇧🇲 flag: Bermuda +1F1E7 1F1F3 ; fully-qualified # 🇧🇳 flag: Brunei +1F1E7 1F1F4 ; fully-qualified # 🇧🇴 flag: Bolivia +1F1E7 1F1F6 ; fully-qualified # 🇧🇶 flag: Caribbean Netherlands +1F1E7 1F1F7 ; fully-qualified # 🇧🇷 flag: Brazil +1F1E7 1F1F8 ; fully-qualified # 🇧🇸 flag: Bahamas +1F1E7 1F1F9 ; fully-qualified # 🇧🇹 flag: Bhutan +1F1E7 1F1FB ; fully-qualified # 🇧🇻 flag: Bouvet Island +1F1E7 1F1FC ; fully-qualified # 🇧🇼 flag: Botswana +1F1E7 1F1FE ; fully-qualified # 🇧🇾 flag: Belarus +1F1E7 1F1FF ; fully-qualified # 🇧🇿 flag: Belize +1F1E8 1F1E6 ; fully-qualified # 🇨🇦 flag: Canada +1F1E8 1F1E8 ; fully-qualified # 🇨🇨 flag: Cocos (Keeling) Islands +1F1E8 1F1E9 ; fully-qualified # 🇨🇩 flag: Congo - Kinshasa +1F1E8 1F1EB ; fully-qualified # 🇨🇫 flag: Central African Republic +1F1E8 1F1EC ; fully-qualified # 🇨🇬 flag: Congo - Brazzaville +1F1E8 1F1ED ; fully-qualified # 🇨🇭 flag: Switzerland +1F1E8 1F1EE ; fully-qualified # 🇨🇮 flag: Côte d’Ivoire +1F1E8 1F1F0 ; fully-qualified # 🇨🇰 flag: Cook Islands +1F1E8 1F1F1 ; fully-qualified # 🇨🇱 flag: Chile +1F1E8 1F1F2 ; fully-qualified # 🇨🇲 flag: Cameroon +1F1E8 1F1F3 ; fully-qualified # 🇨🇳 flag: China +1F1E8 1F1F4 ; fully-qualified # 🇨🇴 flag: Colombia +1F1E8 1F1F5 ; fully-qualified # 🇨🇵 flag: Clipperton Island +1F1E8 1F1F7 ; fully-qualified # 🇨🇷 flag: Costa Rica +1F1E8 1F1FA ; fully-qualified # 🇨🇺 flag: Cuba +1F1E8 1F1FB ; fully-qualified # 🇨🇻 flag: Cape Verde +1F1E8 1F1FC ; fully-qualified # 🇨🇼 flag: Curaçao +1F1E8 1F1FD ; fully-qualified # 🇨🇽 flag: Christmas Island +1F1E8 1F1FE ; fully-qualified # 🇨🇾 flag: Cyprus +1F1E8 1F1FF ; fully-qualified # 🇨🇿 flag: Czechia +1F1E9 1F1EA ; fully-qualified # 🇩🇪 flag: Germany +1F1E9 1F1EC ; fully-qualified # 🇩🇬 flag: Diego Garcia +1F1E9 1F1EF ; fully-qualified # 🇩🇯 flag: Djibouti +1F1E9 1F1F0 ; fully-qualified # 🇩🇰 flag: Denmark +1F1E9 1F1F2 ; fully-qualified # 🇩🇲 flag: Dominica +1F1E9 1F1F4 ; fully-qualified # 🇩🇴 flag: Dominican Republic +1F1E9 1F1FF ; fully-qualified # 🇩🇿 flag: Algeria +1F1EA 1F1E6 ; fully-qualified # 🇪🇦 flag: Ceuta & Melilla +1F1EA 1F1E8 ; fully-qualified # 🇪🇨 flag: Ecuador +1F1EA 1F1EA ; fully-qualified # 🇪🇪 flag: Estonia +1F1EA 1F1EC ; fully-qualified # 🇪🇬 flag: Egypt +1F1EA 1F1ED ; fully-qualified # 🇪🇭 flag: Western Sahara +1F1EA 1F1F7 ; fully-qualified # 🇪🇷 flag: Eritrea +1F1EA 1F1F8 ; fully-qualified # 🇪🇸 flag: Spain +1F1EA 1F1F9 ; fully-qualified # 🇪🇹 flag: Ethiopia +1F1EA 1F1FA ; fully-qualified # 🇪🇺 flag: European Union +1F1EB 1F1EE ; fully-qualified # 🇫🇮 flag: Finland +1F1EB 1F1EF ; fully-qualified # 🇫🇯 flag: Fiji +1F1EB 1F1F0 ; fully-qualified # 🇫🇰 flag: Falkland Islands +1F1EB 1F1F2 ; fully-qualified # 🇫🇲 flag: Micronesia +1F1EB 1F1F4 ; fully-qualified # 🇫🇴 flag: Faroe Islands +1F1EB 1F1F7 ; fully-qualified # 🇫🇷 flag: France +1F1EC 1F1E6 ; fully-qualified # 🇬🇦 flag: Gabon +1F1EC 1F1E7 ; fully-qualified # 🇬🇧 flag: United Kingdom +1F1EC 1F1E9 ; fully-qualified # 🇬🇩 flag: Grenada +1F1EC 1F1EA ; fully-qualified # 🇬🇪 flag: Georgia +1F1EC 1F1EB ; fully-qualified # 🇬🇫 flag: French Guiana +1F1EC 1F1EC ; fully-qualified # 🇬🇬 flag: Guernsey +1F1EC 1F1ED ; fully-qualified # 🇬🇭 flag: Ghana +1F1EC 1F1EE ; fully-qualified # 🇬🇮 flag: Gibraltar +1F1EC 1F1F1 ; fully-qualified # 🇬🇱 flag: Greenland +1F1EC 1F1F2 ; fully-qualified # 🇬🇲 flag: Gambia +1F1EC 1F1F3 ; fully-qualified # 🇬🇳 flag: Guinea +1F1EC 1F1F5 ; fully-qualified # 🇬🇵 flag: Guadeloupe +1F1EC 1F1F6 ; fully-qualified # 🇬🇶 flag: Equatorial Guinea +1F1EC 1F1F7 ; fully-qualified # 🇬🇷 flag: Greece +1F1EC 1F1F8 ; fully-qualified # 🇬🇸 flag: South Georgia & South Sandwich Islands +1F1EC 1F1F9 ; fully-qualified # 🇬🇹 flag: Guatemala +1F1EC 1F1FA ; fully-qualified # 🇬🇺 flag: Guam +1F1EC 1F1FC ; fully-qualified # 🇬🇼 flag: Guinea-Bissau +1F1EC 1F1FE ; fully-qualified # 🇬🇾 flag: Guyana +1F1ED 1F1F0 ; fully-qualified # 🇭🇰 flag: Hong Kong SAR China +1F1ED 1F1F2 ; fully-qualified # 🇭🇲 flag: Heard & McDonald Islands +1F1ED 1F1F3 ; fully-qualified # 🇭🇳 flag: Honduras +1F1ED 1F1F7 ; fully-qualified # 🇭🇷 flag: Croatia +1F1ED 1F1F9 ; fully-qualified # 🇭🇹 flag: Haiti +1F1ED 1F1FA ; fully-qualified # 🇭🇺 flag: Hungary +1F1EE 1F1E8 ; fully-qualified # 🇮🇨 flag: Canary Islands +1F1EE 1F1E9 ; fully-qualified # 🇮🇩 flag: Indonesia +1F1EE 1F1EA ; fully-qualified # 🇮🇪 flag: Ireland +1F1EE 1F1F1 ; fully-qualified # 🇮🇱 flag: Israel +1F1EE 1F1F2 ; fully-qualified # 🇮🇲 flag: Isle of Man +1F1EE 1F1F3 ; fully-qualified # 🇮🇳 flag: India +1F1EE 1F1F4 ; fully-qualified # 🇮🇴 flag: British Indian Ocean Territory +1F1EE 1F1F6 ; fully-qualified # 🇮🇶 flag: Iraq +1F1EE 1F1F7 ; fully-qualified # 🇮🇷 flag: Iran +1F1EE 1F1F8 ; fully-qualified # 🇮🇸 flag: Iceland +1F1EE 1F1F9 ; fully-qualified # 🇮🇹 flag: Italy +1F1EF 1F1EA ; fully-qualified # 🇯🇪 flag: Jersey +1F1EF 1F1F2 ; fully-qualified # 🇯🇲 flag: Jamaica +1F1EF 1F1F4 ; fully-qualified # 🇯🇴 flag: Jordan +1F1EF 1F1F5 ; fully-qualified # 🇯🇵 flag: Japan +1F1F0 1F1EA ; fully-qualified # 🇰🇪 flag: Kenya +1F1F0 1F1EC ; fully-qualified # 🇰🇬 flag: Kyrgyzstan +1F1F0 1F1ED ; fully-qualified # 🇰🇭 flag: Cambodia +1F1F0 1F1EE ; fully-qualified # 🇰🇮 flag: Kiribati +1F1F0 1F1F2 ; fully-qualified # 🇰🇲 flag: Comoros +1F1F0 1F1F3 ; fully-qualified # 🇰🇳 flag: St. Kitts & Nevis +1F1F0 1F1F5 ; fully-qualified # 🇰🇵 flag: North Korea +1F1F0 1F1F7 ; fully-qualified # 🇰🇷 flag: South Korea +1F1F0 1F1FC ; fully-qualified # 🇰🇼 flag: Kuwait +1F1F0 1F1FE ; fully-qualified # 🇰🇾 flag: Cayman Islands +1F1F0 1F1FF ; fully-qualified # 🇰🇿 flag: Kazakhstan +1F1F1 1F1E6 ; fully-qualified # 🇱🇦 flag: Laos +1F1F1 1F1E7 ; fully-qualified # 🇱🇧 flag: Lebanon +1F1F1 1F1E8 ; fully-qualified # 🇱🇨 flag: St. Lucia +1F1F1 1F1EE ; fully-qualified # 🇱🇮 flag: Liechtenstein +1F1F1 1F1F0 ; fully-qualified # 🇱🇰 flag: Sri Lanka +1F1F1 1F1F7 ; fully-qualified # 🇱🇷 flag: Liberia +1F1F1 1F1F8 ; fully-qualified # 🇱🇸 flag: Lesotho +1F1F1 1F1F9 ; fully-qualified # 🇱🇹 flag: Lithuania +1F1F1 1F1FA ; fully-qualified # 🇱🇺 flag: Luxembourg +1F1F1 1F1FB ; fully-qualified # 🇱🇻 flag: Latvia +1F1F1 1F1FE ; fully-qualified # 🇱🇾 flag: Libya +1F1F2 1F1E6 ; fully-qualified # 🇲🇦 flag: Morocco +1F1F2 1F1E8 ; fully-qualified # 🇲🇨 flag: Monaco +1F1F2 1F1E9 ; fully-qualified # 🇲🇩 flag: Moldova +1F1F2 1F1EA ; fully-qualified # 🇲🇪 flag: Montenegro +1F1F2 1F1EB ; fully-qualified # 🇲🇫 flag: St. Martin +1F1F2 1F1EC ; fully-qualified # 🇲🇬 flag: Madagascar +1F1F2 1F1ED ; fully-qualified # 🇲🇭 flag: Marshall Islands +1F1F2 1F1F0 ; fully-qualified # 🇲🇰 flag: Macedonia +1F1F2 1F1F1 ; fully-qualified # 🇲🇱 flag: Mali +1F1F2 1F1F2 ; fully-qualified # 🇲🇲 flag: Myanmar (Burma) +1F1F2 1F1F3 ; fully-qualified # 🇲🇳 flag: Mongolia +1F1F2 1F1F4 ; fully-qualified # 🇲🇴 flag: Macao SAR China +1F1F2 1F1F5 ; fully-qualified # 🇲🇵 flag: Northern Mariana Islands +1F1F2 1F1F6 ; fully-qualified # 🇲🇶 flag: Martinique +1F1F2 1F1F7 ; fully-qualified # 🇲🇷 flag: Mauritania +1F1F2 1F1F8 ; fully-qualified # 🇲🇸 flag: Montserrat +1F1F2 1F1F9 ; fully-qualified # 🇲🇹 flag: Malta +1F1F2 1F1FA ; fully-qualified # 🇲🇺 flag: Mauritius +1F1F2 1F1FB ; fully-qualified # 🇲🇻 flag: Maldives +1F1F2 1F1FC ; fully-qualified # 🇲🇼 flag: Malawi +1F1F2 1F1FD ; fully-qualified # 🇲🇽 flag: Mexico +1F1F2 1F1FE ; fully-qualified # 🇲🇾 flag: Malaysia +1F1F2 1F1FF ; fully-qualified # 🇲🇿 flag: Mozambique +1F1F3 1F1E6 ; fully-qualified # 🇳🇦 flag: Namibia +1F1F3 1F1E8 ; fully-qualified # 🇳🇨 flag: New Caledonia +1F1F3 1F1EA ; fully-qualified # 🇳🇪 flag: Niger +1F1F3 1F1EB ; fully-qualified # 🇳🇫 flag: Norfolk Island +1F1F3 1F1EC ; fully-qualified # 🇳🇬 flag: Nigeria +1F1F3 1F1EE ; fully-qualified # 🇳🇮 flag: Nicaragua +1F1F3 1F1F1 ; fully-qualified # 🇳🇱 flag: Netherlands +1F1F3 1F1F4 ; fully-qualified # 🇳🇴 flag: Norway +1F1F3 1F1F5 ; fully-qualified # 🇳🇵 flag: Nepal +1F1F3 1F1F7 ; fully-qualified # 🇳🇷 flag: Nauru +1F1F3 1F1FA ; fully-qualified # 🇳🇺 flag: Niue +1F1F3 1F1FF ; fully-qualified # 🇳🇿 flag: New Zealand +1F1F4 1F1F2 ; fully-qualified # 🇴🇲 flag: Oman +1F1F5 1F1E6 ; fully-qualified # 🇵🇦 flag: Panama +1F1F5 1F1EA ; fully-qualified # 🇵🇪 flag: Peru +1F1F5 1F1EB ; fully-qualified # 🇵🇫 flag: French Polynesia +1F1F5 1F1EC ; fully-qualified # 🇵🇬 flag: Papua New Guinea +1F1F5 1F1ED ; fully-qualified # 🇵🇭 flag: Philippines +1F1F5 1F1F0 ; fully-qualified # 🇵🇰 flag: Pakistan +1F1F5 1F1F1 ; fully-qualified # 🇵🇱 flag: Poland +1F1F5 1F1F2 ; fully-qualified # 🇵🇲 flag: St. Pierre & Miquelon +1F1F5 1F1F3 ; fully-qualified # 🇵🇳 flag: Pitcairn Islands +1F1F5 1F1F7 ; fully-qualified # 🇵🇷 flag: Puerto Rico +1F1F5 1F1F8 ; fully-qualified # 🇵🇸 flag: Palestinian Territories +1F1F5 1F1F9 ; fully-qualified # 🇵🇹 flag: Portugal +1F1F5 1F1FC ; fully-qualified # 🇵🇼 flag: Palau +1F1F5 1F1FE ; fully-qualified # 🇵🇾 flag: Paraguay +1F1F6 1F1E6 ; fully-qualified # 🇶🇦 flag: Qatar +1F1F7 1F1EA ; fully-qualified # 🇷🇪 flag: Réunion +1F1F7 1F1F4 ; fully-qualified # 🇷🇴 flag: Romania +1F1F7 1F1F8 ; fully-qualified # 🇷🇸 flag: Serbia +1F1F7 1F1FA ; fully-qualified # 🇷🇺 flag: Russia +1F1F7 1F1FC ; fully-qualified # 🇷🇼 flag: Rwanda +1F1F8 1F1E6 ; fully-qualified # 🇸🇦 flag: Saudi Arabia +1F1F8 1F1E7 ; fully-qualified # 🇸🇧 flag: Solomon Islands +1F1F8 1F1E8 ; fully-qualified # 🇸🇨 flag: Seychelles +1F1F8 1F1E9 ; fully-qualified # 🇸🇩 flag: Sudan +1F1F8 1F1EA ; fully-qualified # 🇸🇪 flag: Sweden +1F1F8 1F1EC ; fully-qualified # 🇸🇬 flag: Singapore +1F1F8 1F1ED ; fully-qualified # 🇸🇭 flag: St. Helena +1F1F8 1F1EE ; fully-qualified # 🇸🇮 flag: Slovenia +1F1F8 1F1EF ; fully-qualified # 🇸🇯 flag: Svalbard & Jan Mayen +1F1F8 1F1F0 ; fully-qualified # 🇸🇰 flag: Slovakia +1F1F8 1F1F1 ; fully-qualified # 🇸🇱 flag: Sierra Leone +1F1F8 1F1F2 ; fully-qualified # 🇸🇲 flag: San Marino +1F1F8 1F1F3 ; fully-qualified # 🇸🇳 flag: Senegal +1F1F8 1F1F4 ; fully-qualified # 🇸🇴 flag: Somalia +1F1F8 1F1F7 ; fully-qualified # 🇸🇷 flag: Suriname +1F1F8 1F1F8 ; fully-qualified # 🇸🇸 flag: South Sudan +1F1F8 1F1F9 ; fully-qualified # 🇸🇹 flag: São Tomé & Príncipe +1F1F8 1F1FB ; fully-qualified # 🇸🇻 flag: El Salvador +1F1F8 1F1FD ; fully-qualified # 🇸🇽 flag: Sint Maarten +1F1F8 1F1FE ; fully-qualified # 🇸🇾 flag: Syria +1F1F8 1F1FF ; fully-qualified # 🇸🇿 flag: Eswatini +1F1F9 1F1E6 ; fully-qualified # 🇹🇦 flag: Tristan da Cunha +1F1F9 1F1E8 ; fully-qualified # 🇹🇨 flag: Turks & Caicos Islands +1F1F9 1F1E9 ; fully-qualified # 🇹🇩 flag: Chad +1F1F9 1F1EB ; fully-qualified # 🇹🇫 flag: French Southern Territories +1F1F9 1F1EC ; fully-qualified # 🇹🇬 flag: Togo +1F1F9 1F1ED ; fully-qualified # 🇹🇭 flag: Thailand +1F1F9 1F1EF ; fully-qualified # 🇹🇯 flag: Tajikistan +1F1F9 1F1F0 ; fully-qualified # 🇹🇰 flag: Tokelau +1F1F9 1F1F1 ; fully-qualified # 🇹🇱 flag: Timor-Leste +1F1F9 1F1F2 ; fully-qualified # 🇹🇲 flag: Turkmenistan +1F1F9 1F1F3 ; fully-qualified # 🇹🇳 flag: Tunisia +1F1F9 1F1F4 ; fully-qualified # 🇹🇴 flag: Tonga +1F1F9 1F1F7 ; fully-qualified # 🇹🇷 flag: Turkey +1F1F9 1F1F9 ; fully-qualified # 🇹🇹 flag: Trinidad & Tobago +1F1F9 1F1FB ; fully-qualified # 🇹🇻 flag: Tuvalu +1F1F9 1F1FC ; fully-qualified # 🇹🇼 flag: Taiwan +1F1F9 1F1FF ; fully-qualified # 🇹🇿 flag: Tanzania +1F1FA 1F1E6 ; fully-qualified # 🇺🇦 flag: Ukraine +1F1FA 1F1EC ; fully-qualified # 🇺🇬 flag: Uganda +1F1FA 1F1F2 ; fully-qualified # 🇺🇲 flag: U.S. Outlying Islands +1F1FA 1F1F3 ; fully-qualified # 🇺🇳 flag: United Nations +1F1FA 1F1F8 ; fully-qualified # 🇺🇸 flag: United States +1F1FA 1F1FE ; fully-qualified # 🇺🇾 flag: Uruguay +1F1FA 1F1FF ; fully-qualified # 🇺🇿 flag: Uzbekistan +1F1FB 1F1E6 ; fully-qualified # 🇻🇦 flag: Vatican City +1F1FB 1F1E8 ; fully-qualified # 🇻🇨 flag: St. Vincent & Grenadines +1F1FB 1F1EA ; fully-qualified # 🇻🇪 flag: Venezuela +1F1FB 1F1EC ; fully-qualified # 🇻🇬 flag: British Virgin Islands +1F1FB 1F1EE ; fully-qualified # 🇻🇮 flag: U.S. Virgin Islands +1F1FB 1F1F3 ; fully-qualified # 🇻🇳 flag: Vietnam +1F1FB 1F1FA ; fully-qualified # 🇻🇺 flag: Vanuatu +1F1FC 1F1EB ; fully-qualified # 🇼🇫 flag: Wallis & Futuna +1F1FC 1F1F8 ; fully-qualified # 🇼🇸 flag: Samoa +1F1FD 1F1F0 ; fully-qualified # 🇽🇰 flag: Kosovo +1F1FE 1F1EA ; fully-qualified # 🇾🇪 flag: Yemen +1F1FE 1F1F9 ; fully-qualified # 🇾🇹 flag: Mayotte +1F1FF 1F1E6 ; fully-qualified # 🇿🇦 flag: South Africa +1F1FF 1F1F2 ; fully-qualified # 🇿🇲 flag: Zambia +1F1FF 1F1FC ; fully-qualified # 🇿🇼 flag: Zimbabwe + +# subgroup: subdivision-flag +1F3F4 E0067 E0062 E0065 E006E E0067 E007F ; fully-qualified # 🏴󠁧󠁢󠁥󠁮󠁧󠁿 flag: England +1F3F4 E0067 E0062 E0073 E0063 E0074 E007F ; fully-qualified # 🏴󠁧󠁢󠁳󠁣󠁴󠁿 flag: Scotland +1F3F4 E0067 E0062 E0077 E006C E0073 E007F ; fully-qualified # 🏴󠁧󠁢󠁷󠁬󠁳󠁿 flag: Wales + +# Flags subtotal: 271 +# Flags subtotal: 271 w/o modifiers + +# Status Counts +# fully-qualified : 3010 +# minimally-qualified : 571 +# unqualified : 246 +# component : 9 + +#EOF diff --git a/dot_oh-my-zsh/plugins/emoji/emoji.plugin.zsh b/dot_oh-my-zsh/plugins/emoji/emoji.plugin.zsh new file mode 100644 index 0000000..f9e476e --- /dev/null +++ b/dot_oh-my-zsh/plugins/emoji/emoji.plugin.zsh @@ -0,0 +1,110 @@ +# emoji plugin +# +# Makes emoji support available within ZSH +# +# See the README for documentation. + +# Handle $0 according to the standard: +# https://zdharma-continuum.github.io/Zsh-100-Commits-Club/Zsh-Plugin-Standard.html +0="${${ZERO:-${0:#$ZSH_ARGZERO}}:-${(%):-%N}}" +0="${${(M)0:#/*}:-$PWD/$0}" + +_omz_emoji_plugin_dir="${0:h}" + +() { + +local LC_ALL=en_US.UTF-8 + +typeset -gAH emoji_skintone + +source "$_omz_emoji_plugin_dir/emoji-char-definitions.zsh" +unset _omz_emoji_plugin_dir + +# These additional emoji are not in the definition file, but are useful in conjunction with it + +# This is a combining character that can be placed after any other character to surround +# it in a "keycap" symbol. +# The digits 0-9 are already in the emoji table as keycap_digit_, keycap_ten, etc. +# It's unclear whether this should be in the $emoji array, because those characters are all ones +# which can be displayed on their own. + +emoji[regional_indicator_symbol_letter_d_regional_indicator_symbol_letter_e]=$'\xF0\x9F\x87\xA9\xF0\x9F\x87\xAA' +emoji[regional_indicator_symbol_letter_g_regional_indicator_symbol_letter_b]=$'\xF0\x9F\x87\xAC\xF0\x9F\x87\xA7' +emoji[regional_indicator_symbol_letter_c_regional_indicator_symbol_letter_n]=$'\xF0\x9F\x87\xA8\xF0\x9F\x87\xB3' +emoji[regional_indicator_symbol_letter_j_regional_indicator_symbol_letter_p]=$'\xF0\x9F\x87\xAF\xF0\x9F\x87\xB5' +emoji[regional_indicator_symbol_letter_k_regional_indicator_symbol_letter_r]=$'\xF0\x9F\x87\xB0\xF0\x9F\x87\xB7' +emoji[regional_indicator_symbol_letter_f_regional_indicator_symbol_letter_r]=$'\xF0\x9F\x87\xAB\xF0\x9F\x87\xB7' +emoji[regional_indicator_symbol_letter_e_regional_indicator_symbol_letter_s]=$'\xF0\x9F\x87\xAA\xF0\x9F\x87\xB8' +emoji[regional_indicator_symbol_letter_i_regional_indicator_symbol_letter_t]=$'\xF0\x9F\x87\xAE\xF0\x9F\x87\xB9' +emoji[regional_indicator_symbol_letter_u_regional_indicator_symbol_letter_s]=$'\xF0\x9F\x87\xBA\xF0\x9F\x87\xB8' +emoji[regional_indicator_symbol_letter_r_regional_indicator_symbol_letter_u]=$'\xF0\x9F\x87\xB7\xF0\x9F\x87\xBA' + +# Easier access to skin tone modifiers +emoji_skintone[1_2]=$'\U1F3FB' +emoji_skintone[3]=$'\U1F3FC' +emoji_skintone[4]=$'\U1F3FD' +emoji_skintone[5]=$'\U1F3FE' +emoji_skintone[6]=$'\U1F3FF' +} + +# Prints a random emoji character +# +# random_emoji [group] +# +function random_emoji() { + local group=$1 + local names + if [[ -z "$group" || "$group" == "all" ]]; then + names=(${(k)emoji}) + else + names=(${=emoji_groups[$group]}) + fi + local list_size=${#names} + [[ $list_size -eq 0 ]] && return 1 + local random_index=$(( ( RANDOM % $list_size ) + 1 )) + local name=${names[$random_index]} + if [[ "$group" == "flags" ]]; then + echo ${emoji_flags[$name]} + else + echo ${emoji[$name]} + fi +} + +# Displays a listing of emoji with their names +# +# display_emoji [group] +# +function display_emoji() { + local group=$1 + local names + if [[ -z "$group" || "$group" == "all" ]]; then + names=(${(k)emoji}) + else + names=(${=emoji_groups[$group]}) + fi + # The extra spaces in output here are a hack for readability, since some + # terminals treat these emoji chars as single-width. + local counter=1 + for i in $names; do + if [[ "$group" == "flags" ]]; then + printf '%s ' "$emoji_flags[$i]" + else + printf '%s ' "$emoji[$i]" + fi + # New line every 20 emoji, to avoid weirdnesses + if (($counter % 20 == 0)); then + printf "\n" + fi + let counter=$counter+1 + done + print + for i in $names; do + if [[ "$group" == "flags" ]]; then + echo "${emoji_flags[$i]} = $i" + else + echo "${emoji[$i]} = $i" + fi + done +} + + diff --git a/dot_oh-my-zsh/plugins/emoji/gemoji_db.json b/dot_oh-my-zsh/plugins/emoji/gemoji_db.json new file mode 100644 index 0000000..9227c26 --- /dev/null +++ b/dot_oh-my-zsh/plugins/emoji/gemoji_db.json @@ -0,0 +1,21538 @@ +[ + { + "emoji": "😀" + , "description": "grinning face" + , "category": "Smileys & Emotion" + , "aliases": [ + "grinning" + ] + , "tags": [ + "smile" + , "happy" + ] + , "unicode_version": "6.1" + , "ios_version": "6.0" + } +, { + "emoji": "😃" + , "description": "grinning face with big eyes" + , "category": "Smileys & Emotion" + , "aliases": [ + "smiley" + ] + , "tags": [ + "happy" + , "joy" + , "haha" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "😄" + , "description": "grinning face with smiling eyes" + , "category": "Smileys & Emotion" + , "aliases": [ + "smile" + ] + , "tags": [ + "happy" + , "joy" + , "laugh" + , "pleased" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "😁" + , "description": "beaming face with smiling eyes" + , "category": "Smileys & Emotion" + , "aliases": [ + "grin" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "😆" + , "description": "grinning squinting face" + , "category": "Smileys & Emotion" + , "aliases": [ + "laughing" + , "satisfied" + ] + , "tags": [ + "happy" + , "haha" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "😅" + , "description": "grinning face with sweat" + , "category": "Smileys & Emotion" + , "aliases": [ + "sweat_smile" + ] + , "tags": [ + "hot" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🤣" + , "description": "rolling on the floor laughing" + , "category": "Smileys & Emotion" + , "aliases": [ + "rofl" + ] + , "tags": [ + "lol" + , "laughing" + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "😂" + , "description": "face with tears of joy" + , "category": "Smileys & Emotion" + , "aliases": [ + "joy" + ] + , "tags": [ + "tears" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🙂" + , "description": "slightly smiling face" + , "category": "Smileys & Emotion" + , "aliases": [ + "slightly_smiling_face" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🙃" + , "description": "upside-down face" + , "category": "Smileys & Emotion" + , "aliases": [ + "upside_down_face" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "😉" + , "description": "winking face" + , "category": "Smileys & Emotion" + , "aliases": [ + "wink" + ] + , "tags": [ + "flirt" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "😊" + , "description": "smiling face with smiling eyes" + , "category": "Smileys & Emotion" + , "aliases": [ + "blush" + ] + , "tags": [ + "proud" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "😇" + , "description": "smiling face with halo" + , "category": "Smileys & Emotion" + , "aliases": [ + "innocent" + ] + , "tags": [ + "angel" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🥰" + , "description": "smiling face with hearts" + , "category": "Smileys & Emotion" + , "aliases": [ + "smiling_face_with_three_hearts" + ] + , "tags": [ + "love" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "😍" + , "description": "smiling face with heart-eyes" + , "category": "Smileys & Emotion" + , "aliases": [ + "heart_eyes" + ] + , "tags": [ + "love" + , "crush" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🤩" + , "description": "star-struck" + , "category": "Smileys & Emotion" + , "aliases": [ + "star_struck" + ] + , "tags": [ + "eyes" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "😘" + , "description": "face blowing a kiss" + , "category": "Smileys & Emotion" + , "aliases": [ + "kissing_heart" + ] + , "tags": [ + "flirt" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "😗" + , "description": "kissing face" + , "category": "Smileys & Emotion" + , "aliases": [ + "kissing" + ] + , "tags": [ + ] + , "unicode_version": "6.1" + , "ios_version": "6.0" + } +, { + "emoji": "☺️" + , "description": "smiling face" + , "category": "Smileys & Emotion" + , "aliases": [ + "relaxed" + ] + , "tags": [ + "blush" + , "pleased" + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "😚" + , "description": "kissing face with closed eyes" + , "category": "Smileys & Emotion" + , "aliases": [ + "kissing_closed_eyes" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "😙" + , "description": "kissing face with smiling eyes" + , "category": "Smileys & Emotion" + , "aliases": [ + "kissing_smiling_eyes" + ] + , "tags": [ + ] + , "unicode_version": "6.1" + , "ios_version": "6.0" + } +, { + "emoji": "😋" + , "description": "face savoring food" + , "category": "Smileys & Emotion" + , "aliases": [ + "yum" + ] + , "tags": [ + "tongue" + , "lick" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "😛" + , "description": "face with tongue" + , "category": "Smileys & Emotion" + , "aliases": [ + "stuck_out_tongue" + ] + , "tags": [ + ] + , "unicode_version": "6.1" + , "ios_version": "6.0" + } +, { + "emoji": "😜" + , "description": "winking face with tongue" + , "category": "Smileys & Emotion" + , "aliases": [ + "stuck_out_tongue_winking_eye" + ] + , "tags": [ + "prank" + , "silly" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🤪" + , "description": "zany face" + , "category": "Smileys & Emotion" + , "aliases": [ + "zany_face" + ] + , "tags": [ + "goofy" + , "wacky" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "😝" + , "description": "squinting face with tongue" + , "category": "Smileys & Emotion" + , "aliases": [ + "stuck_out_tongue_closed_eyes" + ] + , "tags": [ + "prank" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🤑" + , "description": "money-mouth face" + , "category": "Smileys & Emotion" + , "aliases": [ + "money_mouth_face" + ] + , "tags": [ + "rich" + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "🤗" + , "description": "hugging face" + , "category": "Smileys & Emotion" + , "aliases": [ + "hugs" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "🤭" + , "description": "face with hand over mouth" + , "category": "Smileys & Emotion" + , "aliases": [ + "hand_over_mouth" + ] + , "tags": [ + "quiet" + , "whoops" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🤫" + , "description": "shushing face" + , "category": "Smileys & Emotion" + , "aliases": [ + "shushing_face" + ] + , "tags": [ + "silence" + , "quiet" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🤔" + , "description": "thinking face" + , "category": "Smileys & Emotion" + , "aliases": [ + "thinking" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "🤐" + , "description": "zipper-mouth face" + , "category": "Smileys & Emotion" + , "aliases": [ + "zipper_mouth_face" + ] + , "tags": [ + "silence" + , "hush" + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "🤨" + , "description": "face with raised eyebrow" + , "category": "Smileys & Emotion" + , "aliases": [ + "raised_eyebrow" + ] + , "tags": [ + "suspicious" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "😐" + , "description": "neutral face" + , "category": "Smileys & Emotion" + , "aliases": [ + "neutral_face" + ] + , "tags": [ + "meh" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "😑" + , "description": "expressionless face" + , "category": "Smileys & Emotion" + , "aliases": [ + "expressionless" + ] + , "tags": [ + ] + , "unicode_version": "6.1" + , "ios_version": "6.0" + } +, { + "emoji": "😶" + , "description": "face without mouth" + , "category": "Smileys & Emotion" + , "aliases": [ + "no_mouth" + ] + , "tags": [ + "mute" + , "silence" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "😏" + , "description": "smirking face" + , "category": "Smileys & Emotion" + , "aliases": [ + "smirk" + ] + , "tags": [ + "smug" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "😒" + , "description": "unamused face" + , "category": "Smileys & Emotion" + , "aliases": [ + "unamused" + ] + , "tags": [ + "meh" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🙄" + , "description": "face with rolling eyes" + , "category": "Smileys & Emotion" + , "aliases": [ + "roll_eyes" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "😬" + , "description": "grimacing face" + , "category": "Smileys & Emotion" + , "aliases": [ + "grimacing" + ] + , "tags": [ + ] + , "unicode_version": "6.1" + , "ios_version": "6.0" + } +, { + "emoji": "🤥" + , "description": "lying face" + , "category": "Smileys & Emotion" + , "aliases": [ + "lying_face" + ] + , "tags": [ + "liar" + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "😌" + , "description": "relieved face" + , "category": "Smileys & Emotion" + , "aliases": [ + "relieved" + ] + , "tags": [ + "whew" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "😔" + , "description": "pensive face" + , "category": "Smileys & Emotion" + , "aliases": [ + "pensive" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "😪" + , "description": "sleepy face" + , "category": "Smileys & Emotion" + , "aliases": [ + "sleepy" + ] + , "tags": [ + "tired" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🤤" + , "description": "drooling face" + , "category": "Smileys & Emotion" + , "aliases": [ + "drooling_face" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "😴" + , "description": "sleeping face" + , "category": "Smileys & Emotion" + , "aliases": [ + "sleeping" + ] + , "tags": [ + "zzz" + ] + , "unicode_version": "6.1" + , "ios_version": "6.0" + } +, { + "emoji": "😷" + , "description": "face with medical mask" + , "category": "Smileys & Emotion" + , "aliases": [ + "mask" + ] + , "tags": [ + "sick" + , "ill" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🤒" + , "description": "face with thermometer" + , "category": "Smileys & Emotion" + , "aliases": [ + "face_with_thermometer" + ] + , "tags": [ + "sick" + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "🤕" + , "description": "face with head-bandage" + , "category": "Smileys & Emotion" + , "aliases": [ + "face_with_head_bandage" + ] + , "tags": [ + "hurt" + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "🤢" + , "description": "nauseated face" + , "category": "Smileys & Emotion" + , "aliases": [ + "nauseated_face" + ] + , "tags": [ + "sick" + , "barf" + , "disgusted" + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🤮" + , "description": "face vomiting" + , "category": "Smileys & Emotion" + , "aliases": [ + "vomiting_face" + ] + , "tags": [ + "barf" + , "sick" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🤧" + , "description": "sneezing face" + , "category": "Smileys & Emotion" + , "aliases": [ + "sneezing_face" + ] + , "tags": [ + "achoo" + , "sick" + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🥵" + , "description": "hot face" + , "category": "Smileys & Emotion" + , "aliases": [ + "hot_face" + ] + , "tags": [ + "heat" + , "sweating" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🥶" + , "description": "cold face" + , "category": "Smileys & Emotion" + , "aliases": [ + "cold_face" + ] + , "tags": [ + "freezing" + , "ice" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🥴" + , "description": "woozy face" + , "category": "Smileys & Emotion" + , "aliases": [ + "woozy_face" + ] + , "tags": [ + "groggy" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "😵" + , "description": "dizzy face" + , "category": "Smileys & Emotion" + , "aliases": [ + "dizzy_face" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🤯" + , "description": "exploding head" + , "category": "Smileys & Emotion" + , "aliases": [ + "exploding_head" + ] + , "tags": [ + "mind" + , "blown" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🤠" + , "description": "cowboy hat face" + , "category": "Smileys & Emotion" + , "aliases": [ + "cowboy_hat_face" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🥳" + , "description": "partying face" + , "category": "Smileys & Emotion" + , "aliases": [ + "partying_face" + ] + , "tags": [ + "celebration" + , "birthday" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "😎" + , "description": "smiling face with sunglasses" + , "category": "Smileys & Emotion" + , "aliases": [ + "sunglasses" + ] + , "tags": [ + "cool" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🤓" + , "description": "nerd face" + , "category": "Smileys & Emotion" + , "aliases": [ + "nerd_face" + ] + , "tags": [ + "geek" + , "glasses" + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "🧐" + , "description": "face with monocle" + , "category": "Smileys & Emotion" + , "aliases": [ + "monocle_face" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "😕" + , "description": "confused face" + , "category": "Smileys & Emotion" + , "aliases": [ + "confused" + ] + , "tags": [ + ] + , "unicode_version": "6.1" + , "ios_version": "6.0" + } +, { + "emoji": "😟" + , "description": "worried face" + , "category": "Smileys & Emotion" + , "aliases": [ + "worried" + ] + , "tags": [ + "nervous" + ] + , "unicode_version": "6.1" + , "ios_version": "6.0" + } +, { + "emoji": "🙁" + , "description": "slightly frowning face" + , "category": "Smileys & Emotion" + , "aliases": [ + "slightly_frowning_face" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "☹" + , "description": "frowning face" + , "category": "Smileys & Emotion" + , "aliases": [ + "frowning_face" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "9.1" + } +, { + "emoji": "😮" + , "description": "face with open mouth" + , "category": "Smileys & Emotion" + , "aliases": [ + "open_mouth" + ] + , "tags": [ + "surprise" + , "impressed" + , "wow" + ] + , "unicode_version": "6.1" + , "ios_version": "6.0" + } +, { + "emoji": "😯" + , "description": "hushed face" + , "category": "Smileys & Emotion" + , "aliases": [ + "hushed" + ] + , "tags": [ + "silence" + , "speechless" + ] + , "unicode_version": "6.1" + , "ios_version": "6.0" + } +, { + "emoji": "😲" + , "description": "astonished face" + , "category": "Smileys & Emotion" + , "aliases": [ + "astonished" + ] + , "tags": [ + "amazed" + , "gasp" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "😳" + , "description": "flushed face" + , "category": "Smileys & Emotion" + , "aliases": [ + "flushed" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🥺" + , "description": "pleading face" + , "category": "Smileys & Emotion" + , "aliases": [ + "pleading_face" + ] + , "tags": [ + "puppy" + , "eyes" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "😦" + , "description": "frowning face with open mouth" + , "category": "Smileys & Emotion" + , "aliases": [ + "frowning" + ] + , "tags": [ + ] + , "unicode_version": "6.1" + , "ios_version": "6.0" + } +, { + "emoji": "😧" + , "description": "anguished face" + , "category": "Smileys & Emotion" + , "aliases": [ + "anguished" + ] + , "tags": [ + "stunned" + ] + , "unicode_version": "6.1" + , "ios_version": "6.0" + } +, { + "emoji": "😨" + , "description": "fearful face" + , "category": "Smileys & Emotion" + , "aliases": [ + "fearful" + ] + , "tags": [ + "scared" + , "shocked" + , "oops" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "😰" + , "description": "anxious face with sweat" + , "category": "Smileys & Emotion" + , "aliases": [ + "cold_sweat" + ] + , "tags": [ + "nervous" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "😥" + , "description": "sad but relieved face" + , "category": "Smileys & Emotion" + , "aliases": [ + "disappointed_relieved" + ] + , "tags": [ + "phew" + , "sweat" + , "nervous" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "😢" + , "description": "crying face" + , "category": "Smileys & Emotion" + , "aliases": [ + "cry" + ] + , "tags": [ + "sad" + , "tear" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "😭" + , "description": "loudly crying face" + , "category": "Smileys & Emotion" + , "aliases": [ + "sob" + ] + , "tags": [ + "sad" + , "cry" + , "bawling" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "😱" + , "description": "face screaming in fear" + , "category": "Smileys & Emotion" + , "aliases": [ + "scream" + ] + , "tags": [ + "horror" + , "shocked" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "😖" + , "description": "confounded face" + , "category": "Smileys & Emotion" + , "aliases": [ + "confounded" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "😣" + , "description": "persevering face" + , "category": "Smileys & Emotion" + , "aliases": [ + "persevere" + ] + , "tags": [ + "struggling" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "😞" + , "description": "disappointed face" + , "category": "Smileys & Emotion" + , "aliases": [ + "disappointed" + ] + , "tags": [ + "sad" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "😓" + , "description": "downcast face with sweat" + , "category": "Smileys & Emotion" + , "aliases": [ + "sweat" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "😩" + , "description": "weary face" + , "category": "Smileys & Emotion" + , "aliases": [ + "weary" + ] + , "tags": [ + "tired" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "😫" + , "description": "tired face" + , "category": "Smileys & Emotion" + , "aliases": [ + "tired_face" + ] + , "tags": [ + "upset" + , "whine" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🥱" + , "description": "yawning face" + , "category": "Smileys & Emotion" + , "aliases": [ + "yawning_face" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "😤" + , "description": "face with steam from nose" + , "category": "Smileys & Emotion" + , "aliases": [ + "triumph" + ] + , "tags": [ + "smug" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "😡" + , "description": "pouting face" + , "category": "Smileys & Emotion" + , "aliases": [ + "rage" + , "pout" + ] + , "tags": [ + "angry" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "😠" + , "description": "angry face" + , "category": "Smileys & Emotion" + , "aliases": [ + "angry" + ] + , "tags": [ + "mad" + , "annoyed" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🤬" + , "description": "face with symbols on mouth" + , "category": "Smileys & Emotion" + , "aliases": [ + "cursing_face" + ] + , "tags": [ + "foul" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "😈" + , "description": "smiling face with horns" + , "category": "Smileys & Emotion" + , "aliases": [ + "smiling_imp" + ] + , "tags": [ + "devil" + , "evil" + , "horns" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "👿" + , "description": "angry face with horns" + , "category": "Smileys & Emotion" + , "aliases": [ + "imp" + ] + , "tags": [ + "angry" + , "devil" + , "evil" + , "horns" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "💀" + , "description": "skull" + , "category": "Smileys & Emotion" + , "aliases": [ + "skull" + ] + , "tags": [ + "dead" + , "danger" + , "poison" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "☠" + , "description": "skull and crossbones" + , "category": "Smileys & Emotion" + , "aliases": [ + "skull_and_crossbones" + ] + , "tags": [ + "danger" + , "pirate" + ] + , "unicode_version": "" + , "ios_version": "9.1" + } +, { + "emoji": "💩" + , "description": "pile of poo" + , "category": "Smileys & Emotion" + , "aliases": [ + "hankey" + , "poop" + , "shit" + ] + , "tags": [ + "crap" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🤡" + , "description": "clown face" + , "category": "Smileys & Emotion" + , "aliases": [ + "clown_face" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "👹" + , "description": "ogre" + , "category": "Smileys & Emotion" + , "aliases": [ + "japanese_ogre" + ] + , "tags": [ + "monster" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "👺" + , "description": "goblin" + , "category": "Smileys & Emotion" + , "aliases": [ + "japanese_goblin" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "👻" + , "description": "ghost" + , "category": "Smileys & Emotion" + , "aliases": [ + "ghost" + ] + , "tags": [ + "halloween" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "👽" + , "description": "alien" + , "category": "Smileys & Emotion" + , "aliases": [ + "alien" + ] + , "tags": [ + "ufo" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "👾" + , "description": "alien monster" + , "category": "Smileys & Emotion" + , "aliases": [ + "space_invader" + ] + , "tags": [ + "game" + , "retro" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🤖" + , "description": "robot" + , "category": "Smileys & Emotion" + , "aliases": [ + "robot" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "😺" + , "description": "grinning cat" + , "category": "Smileys & Emotion" + , "aliases": [ + "smiley_cat" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "😸" + , "description": "grinning cat with smiling eyes" + , "category": "Smileys & Emotion" + , "aliases": [ + "smile_cat" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "😹" + , "description": "cat with tears of joy" + , "category": "Smileys & Emotion" + , "aliases": [ + "joy_cat" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "😻" + , "description": "smiling cat with heart-eyes" + , "category": "Smileys & Emotion" + , "aliases": [ + "heart_eyes_cat" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "😼" + , "description": "cat with wry smile" + , "category": "Smileys & Emotion" + , "aliases": [ + "smirk_cat" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "😽" + , "description": "kissing cat" + , "category": "Smileys & Emotion" + , "aliases": [ + "kissing_cat" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🙀" + , "description": "weary cat" + , "category": "Smileys & Emotion" + , "aliases": [ + "scream_cat" + ] + , "tags": [ + "horror" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "😿" + , "description": "crying cat" + , "category": "Smileys & Emotion" + , "aliases": [ + "crying_cat_face" + ] + , "tags": [ + "sad" + , "tear" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "😾" + , "description": "pouting cat" + , "category": "Smileys & Emotion" + , "aliases": [ + "pouting_cat" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🙈" + , "description": "see-no-evil monkey" + , "category": "Smileys & Emotion" + , "aliases": [ + "see_no_evil" + ] + , "tags": [ + "monkey" + , "blind" + , "ignore" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🙉" + , "description": "hear-no-evil monkey" + , "category": "Smileys & Emotion" + , "aliases": [ + "hear_no_evil" + ] + , "tags": [ + "monkey" + , "deaf" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🙊" + , "description": "speak-no-evil monkey" + , "category": "Smileys & Emotion" + , "aliases": [ + "speak_no_evil" + ] + , "tags": [ + "monkey" + , "mute" + , "hush" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "💋" + , "description": "kiss mark" + , "category": "Smileys & Emotion" + , "aliases": [ + "kiss" + ] + , "tags": [ + "lipstick" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "💌" + , "description": "love letter" + , "category": "Smileys & Emotion" + , "aliases": [ + "love_letter" + ] + , "tags": [ + "email" + , "envelope" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "💘" + , "description": "heart with arrow" + , "category": "Smileys & Emotion" + , "aliases": [ + "cupid" + ] + , "tags": [ + "love" + , "heart" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "💝" + , "description": "heart with ribbon" + , "category": "Smileys & Emotion" + , "aliases": [ + "gift_heart" + ] + , "tags": [ + "chocolates" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "💖" + , "description": "sparkling heart" + , "category": "Smileys & Emotion" + , "aliases": [ + "sparkling_heart" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "💗" + , "description": "growing heart" + , "category": "Smileys & Emotion" + , "aliases": [ + "heartpulse" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "💓" + , "description": "beating heart" + , "category": "Smileys & Emotion" + , "aliases": [ + "heartbeat" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "💞" + , "description": "revolving hearts" + , "category": "Smileys & Emotion" + , "aliases": [ + "revolving_hearts" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "💕" + , "description": "two hearts" + , "category": "Smileys & Emotion" + , "aliases": [ + "two_hearts" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "💟" + , "description": "heart decoration" + , "category": "Smileys & Emotion" + , "aliases": [ + "heart_decoration" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "❣️" + , "description": "heart exclamation" + , "category": "Smileys & Emotion" + , "aliases": [ + "heavy_heart_exclamation" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "9.1" + } +, { + "emoji": "💔" + , "description": "broken heart" + , "category": "Smileys & Emotion" + , "aliases": [ + "broken_heart" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "❤️" + , "description": "red heart" + , "category": "Smileys & Emotion" + , "aliases": [ + "heart" + ] + , "tags": [ + "love" + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "🧡" + , "description": "orange heart" + , "category": "Smileys & Emotion" + , "aliases": [ + "orange_heart" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "💛" + , "description": "yellow heart" + , "category": "Smileys & Emotion" + , "aliases": [ + "yellow_heart" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "💚" + , "description": "green heart" + , "category": "Smileys & Emotion" + , "aliases": [ + "green_heart" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "💙" + , "description": "blue heart" + , "category": "Smileys & Emotion" + , "aliases": [ + "blue_heart" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "💜" + , "description": "purple heart" + , "category": "Smileys & Emotion" + , "aliases": [ + "purple_heart" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🤎" + , "description": "brown heart" + , "category": "Smileys & Emotion" + , "aliases": [ + "brown_heart" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🖤" + , "description": "black heart" + , "category": "Smileys & Emotion" + , "aliases": [ + "black_heart" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🤍" + , "description": "white heart" + , "category": "Smileys & Emotion" + , "aliases": [ + "white_heart" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "💯" + , "description": "hundred points" + , "category": "Smileys & Emotion" + , "aliases": [ + "100" + ] + , "tags": [ + "score" + , "perfect" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "💢" + , "description": "anger symbol" + , "category": "Smileys & Emotion" + , "aliases": [ + "anger" + ] + , "tags": [ + "angry" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "💥" + , "description": "collision" + , "category": "Smileys & Emotion" + , "aliases": [ + "boom" + , "collision" + ] + , "tags": [ + "explode" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "💫" + , "description": "dizzy" + , "category": "Smileys & Emotion" + , "aliases": [ + "dizzy" + ] + , "tags": [ + "star" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "💦" + , "description": "sweat droplets" + , "category": "Smileys & Emotion" + , "aliases": [ + "sweat_drops" + ] + , "tags": [ + "water" + , "workout" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "💨" + , "description": "dashing away" + , "category": "Smileys & Emotion" + , "aliases": [ + "dash" + ] + , "tags": [ + "wind" + , "blow" + , "fast" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🕳" + , "description": "hole" + , "category": "Smileys & Emotion" + , "aliases": [ + "hole" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "💣" + , "description": "bomb" + , "category": "Smileys & Emotion" + , "aliases": [ + "bomb" + ] + , "tags": [ + "boom" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "💬" + , "description": "speech balloon" + , "category": "Smileys & Emotion" + , "aliases": [ + "speech_balloon" + ] + , "tags": [ + "comment" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "👁️‍🗨️" + , "description": "eye in speech bubble" + , "category": "Smileys & Emotion" + , "aliases": [ + "eye_speech_bubble" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🗨" + , "description": "left speech bubble" + , "category": "Smileys & Emotion" + , "aliases": [ + "left_speech_bubble" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🗯" + , "description": "right anger bubble" + , "category": "Smileys & Emotion" + , "aliases": [ + "right_anger_bubble" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "💭" + , "description": "thought balloon" + , "category": "Smileys & Emotion" + , "aliases": [ + "thought_balloon" + ] + , "tags": [ + "thinking" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "💤" + , "description": "zzz" + , "category": "Smileys & Emotion" + , "aliases": [ + "zzz" + ] + , "tags": [ + "sleeping" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "👋" + , "description": "waving hand" + , "category": "People & Body" + , "aliases": [ + "wave" + ] + , "tags": [ + "goodbye" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "🤚" + , "description": "raised back of hand" + , "category": "People & Body" + , "aliases": [ + "raised_back_of_hand" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "🖐" + , "description": "hand with fingers splayed" + , "category": "People & Body" + , "aliases": [ + "raised_hand_with_fingers_splayed" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + , "skin_tones": true + } +, { + "emoji": "✋" + , "description": "raised hand" + , "category": "People & Body" + , "aliases": [ + "hand" + , "raised_hand" + ] + , "tags": [ + "highfive" + , "stop" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "🖖" + , "description": "vulcan salute" + , "category": "People & Body" + , "aliases": [ + "vulcan_salute" + ] + , "tags": [ + "prosper" + , "spock" + ] + , "unicode_version": "7.0" + , "ios_version": "8.3" + , "skin_tones": true + } +, { + "emoji": "👌" + , "description": "OK hand" + , "category": "People & Body" + , "aliases": [ + "ok_hand" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "🤏" + , "description": "pinching hand" + , "category": "People & Body" + , "aliases": [ + "pinching_hand" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + , "skin_tones": true + } +, { + "emoji": "✌️" + , "description": "victory hand" + , "category": "People & Body" + , "aliases": [ + "v" + ] + , "tags": [ + "victory" + , "peace" + ] + , "unicode_version": "" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "🤞" + , "description": "crossed fingers" + , "category": "People & Body" + , "aliases": [ + "crossed_fingers" + ] + , "tags": [ + "luck" + , "hopeful" + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "🤟" + , "description": "love-you gesture" + , "category": "People & Body" + , "aliases": [ + "love_you_gesture" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🤘" + , "description": "sign of the horns" + , "category": "People & Body" + , "aliases": [ + "metal" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + , "skin_tones": true + } +, { + "emoji": "🤙" + , "description": "call me hand" + , "category": "People & Body" + , "aliases": [ + "call_me_hand" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "👈" + , "description": "backhand index pointing left" + , "category": "People & Body" + , "aliases": [ + "point_left" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "👉" + , "description": "backhand index pointing right" + , "category": "People & Body" + , "aliases": [ + "point_right" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "👆" + , "description": "backhand index pointing up" + , "category": "People & Body" + , "aliases": [ + "point_up_2" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "🖕" + , "description": "middle finger" + , "category": "People & Body" + , "aliases": [ + "middle_finger" + , "fu" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + , "skin_tones": true + } +, { + "emoji": "👇" + , "description": "backhand index pointing down" + , "category": "People & Body" + , "aliases": [ + "point_down" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "☝️" + , "description": "index pointing up" + , "category": "People & Body" + , "aliases": [ + "point_up" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "👍" + , "description": "thumbs up" + , "category": "People & Body" + , "aliases": [ + "+1" + , "thumbsup" + ] + , "tags": [ + "approve" + , "ok" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "👎" + , "description": "thumbs down" + , "category": "People & Body" + , "aliases": [ + "-1" + , "thumbsdown" + ] + , "tags": [ + "disapprove" + , "bury" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "✊" + , "description": "raised fist" + , "category": "People & Body" + , "aliases": [ + "fist_raised" + , "fist" + ] + , "tags": [ + "power" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "👊" + , "description": "oncoming fist" + , "category": "People & Body" + , "aliases": [ + "fist_oncoming" + , "facepunch" + , "punch" + ] + , "tags": [ + "attack" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "🤛" + , "description": "left-facing fist" + , "category": "People & Body" + , "aliases": [ + "fist_left" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "🤜" + , "description": "right-facing fist" + , "category": "People & Body" + , "aliases": [ + "fist_right" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "👏" + , "description": "clapping hands" + , "category": "People & Body" + , "aliases": [ + "clap" + ] + , "tags": [ + "praise" + , "applause" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "🙌" + , "description": "raising hands" + , "category": "People & Body" + , "aliases": [ + "raised_hands" + ] + , "tags": [ + "hooray" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "👐" + , "description": "open hands" + , "category": "People & Body" + , "aliases": [ + "open_hands" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "🤲" + , "description": "palms up together" + , "category": "People & Body" + , "aliases": [ + "palms_up_together" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🤝" + , "description": "handshake" + , "category": "People & Body" + , "aliases": [ + "handshake" + ] + , "tags": [ + "deal" + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🙏" + , "description": "folded hands" + , "category": "People & Body" + , "aliases": [ + "pray" + ] + , "tags": [ + "please" + , "hope" + , "wish" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "✍️" + , "description": "writing hand" + , "category": "People & Body" + , "aliases": [ + "writing_hand" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "9.1" + , "skin_tones": true + } +, { + "emoji": "💅" + , "description": "nail polish" + , "category": "People & Body" + , "aliases": [ + "nail_care" + ] + , "tags": [ + "beauty" + , "manicure" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "🤳" + , "description": "selfie" + , "category": "People & Body" + , "aliases": [ + "selfie" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "💪" + , "description": "flexed biceps" + , "category": "People & Body" + , "aliases": [ + "muscle" + ] + , "tags": [ + "flex" + , "bicep" + , "strong" + , "workout" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "🦾" + , "description": "mechanical arm" + , "category": "People & Body" + , "aliases": [ + "mechanical_arm" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🦿" + , "description": "mechanical leg" + , "category": "People & Body" + , "aliases": [ + "mechanical_leg" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🦵" + , "description": "leg" + , "category": "People & Body" + , "aliases": [ + "leg" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🦶" + , "description": "foot" + , "category": "People & Body" + , "aliases": [ + "foot" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "👂" + , "description": "ear" + , "category": "People & Body" + , "aliases": [ + "ear" + ] + , "tags": [ + "hear" + , "sound" + , "listen" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "🦻" + , "description": "ear with hearing aid" + , "category": "People & Body" + , "aliases": [ + "ear_with_hearing_aid" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + , "skin_tones": true + } +, { + "emoji": "👃" + , "description": "nose" + , "category": "People & Body" + , "aliases": [ + "nose" + ] + , "tags": [ + "smell" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "🧠" + , "description": "brain" + , "category": "People & Body" + , "aliases": [ + "brain" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🦷" + , "description": "tooth" + , "category": "People & Body" + , "aliases": [ + "tooth" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🦴" + , "description": "bone" + , "category": "People & Body" + , "aliases": [ + "bone" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "👀" + , "description": "eyes" + , "category": "People & Body" + , "aliases": [ + "eyes" + ] + , "tags": [ + "look" + , "see" + , "watch" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "👁" + , "description": "eye" + , "category": "People & Body" + , "aliases": [ + "eye" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "👅" + , "description": "tongue" + , "category": "People & Body" + , "aliases": [ + "tongue" + ] + , "tags": [ + "taste" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "👄" + , "description": "mouth" + , "category": "People & Body" + , "aliases": [ + "lips" + ] + , "tags": [ + "kiss" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "👶" + , "description": "baby" + , "category": "People & Body" + , "aliases": [ + "baby" + ] + , "tags": [ + "child" + , "newborn" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "🧒" + , "description": "child" + , "category": "People & Body" + , "aliases": [ + "child" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "👦" + , "description": "boy" + , "category": "People & Body" + , "aliases": [ + "boy" + ] + , "tags": [ + "child" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "👧" + , "description": "girl" + , "category": "People & Body" + , "aliases": [ + "girl" + ] + , "tags": [ + "child" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "🧑" + , "description": "person" + , "category": "People & Body" + , "aliases": [ + "adult" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "👱" + , "description": "person: blond hair" + , "category": "People & Body" + , "aliases": [ + "blond_haired_person" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "👨" + , "description": "man" + , "category": "People & Body" + , "aliases": [ + "man" + ] + , "tags": [ + "mustache" + , "father" + , "dad" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "🧔" + , "description": "man: beard" + , "category": "People & Body" + , "aliases": [ + "bearded_person" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "👱‍♂" + , "description": "man: blond hair" + , "category": "People & Body" + , "aliases": [ + "blond_haired_man" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "👨‍🦰" + , "description": "man: red hair" + , "category": "People & Body" + , "aliases": [ + "red_haired_man" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "👨‍🦱" + , "description": "man: curly hair" + , "category": "People & Body" + , "aliases": [ + "curly_haired_man" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "👨‍🦳" + , "description": "man: white hair" + , "category": "People & Body" + , "aliases": [ + "white_haired_man" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "👨‍🦲" + , "description": "man: bald" + , "category": "People & Body" + , "aliases": [ + "bald_man" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "👩" + , "description": "woman" + , "category": "People & Body" + , "aliases": [ + "woman" + ] + , "tags": [ + "girls" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "👱‍♀" + , "description": "woman: blond hair" + , "category": "People & Body" + , "aliases": [ + "blond_haired_woman" + , "blonde_woman" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "👩‍🦰" + , "description": "woman: red hair" + , "category": "People & Body" + , "aliases": [ + "red_haired_woman" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "👩‍🦱" + , "description": "woman: curly hair" + , "category": "People & Body" + , "aliases": [ + "curly_haired_woman" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "👩‍🦳" + , "description": "woman: white hair" + , "category": "People & Body" + , "aliases": [ + "white_haired_woman" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "👩‍🦲" + , "description": "woman: bald" + , "category": "People & Body" + , "aliases": [ + "bald_woman" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🧓" + , "description": "older person" + , "category": "People & Body" + , "aliases": [ + "older_adult" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "👴" + , "description": "old man" + , "category": "People & Body" + , "aliases": [ + "older_man" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "👵" + , "description": "old woman" + , "category": "People & Body" + , "aliases": [ + "older_woman" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "🙍" + , "description": "person frowning" + , "category": "People & Body" + , "aliases": [ + "frowning_person" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "🙍‍♂" + , "description": "man frowning" + , "category": "People & Body" + , "aliases": [ + "frowning_man" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "🙍‍♀" + , "description": "woman frowning" + , "category": "People & Body" + , "aliases": [ + "frowning_woman" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🙎" + , "description": "person pouting" + , "category": "People & Body" + , "aliases": [ + "pouting_face" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "🙎‍♂" + , "description": "man pouting" + , "category": "People & Body" + , "aliases": [ + "pouting_man" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "🙎‍♀" + , "description": "woman pouting" + , "category": "People & Body" + , "aliases": [ + "pouting_woman" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🙅" + , "description": "person gesturing NO" + , "category": "People & Body" + , "aliases": [ + "no_good" + ] + , "tags": [ + "stop" + , "halt" + , "denied" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "🙅‍♂" + , "description": "man gesturing NO" + , "category": "People & Body" + , "aliases": [ + "no_good_man" + , "ng_man" + ] + , "tags": [ + "stop" + , "halt" + , "denied" + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "🙅‍♀" + , "description": "woman gesturing NO" + , "category": "People & Body" + , "aliases": [ + "no_good_woman" + , "ng_woman" + ] + , "tags": [ + "stop" + , "halt" + , "denied" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🙆" + , "description": "person gesturing OK" + , "category": "People & Body" + , "aliases": [ + "ok_person" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "🙆‍♂" + , "description": "man gesturing OK" + , "category": "People & Body" + , "aliases": [ + "ok_man" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "🙆‍♀" + , "description": "woman gesturing OK" + , "category": "People & Body" + , "aliases": [ + "ok_woman" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "💁" + , "description": "person tipping hand" + , "category": "People & Body" + , "aliases": [ + "tipping_hand_person" + , "information_desk_person" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "💁‍♂" + , "description": "man tipping hand" + , "category": "People & Body" + , "aliases": [ + "tipping_hand_man" + , "sassy_man" + ] + , "tags": [ + "information" + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "💁‍♀" + , "description": "woman tipping hand" + , "category": "People & Body" + , "aliases": [ + "tipping_hand_woman" + , "sassy_woman" + ] + , "tags": [ + "information" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🙋" + , "description": "person raising hand" + , "category": "People & Body" + , "aliases": [ + "raising_hand" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "🙋‍♂" + , "description": "man raising hand" + , "category": "People & Body" + , "aliases": [ + "raising_hand_man" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "🙋‍♀" + , "description": "woman raising hand" + , "category": "People & Body" + , "aliases": [ + "raising_hand_woman" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🧏" + , "description": "deaf person" + , "category": "People & Body" + , "aliases": [ + "deaf_person" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + , "skin_tones": true + } +, { + "emoji": "🧏‍♂" + , "description": "deaf man" + , "category": "People & Body" + , "aliases": [ + "deaf_man" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + , "skin_tones": true + } +, { + "emoji": "🧏‍♀" + , "description": "deaf woman" + , "category": "People & Body" + , "aliases": [ + "deaf_woman" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + , "skin_tones": true + } +, { + "emoji": "🙇" + , "description": "person bowing" + , "category": "People & Body" + , "aliases": [ + "bow" + ] + , "tags": [ + "respect" + , "thanks" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "🙇‍♂" + , "description": "man bowing" + , "category": "People & Body" + , "aliases": [ + "bowing_man" + ] + , "tags": [ + "respect" + , "thanks" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🙇‍♀" + , "description": "woman bowing" + , "category": "People & Body" + , "aliases": [ + "bowing_woman" + ] + , "tags": [ + "respect" + , "thanks" + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "🤦" + , "description": "person facepalming" + , "category": "People & Body" + , "aliases": [ + "facepalm" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🤦‍♂" + , "description": "man facepalming" + , "category": "People & Body" + , "aliases": [ + "man_facepalming" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "🤦‍♀" + , "description": "woman facepalming" + , "category": "People & Body" + , "aliases": [ + "woman_facepalming" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "🤷" + , "description": "person shrugging" + , "category": "People & Body" + , "aliases": [ + "shrug" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🤷‍♂" + , "description": "man shrugging" + , "category": "People & Body" + , "aliases": [ + "man_shrugging" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "🤷‍♀" + , "description": "woman shrugging" + , "category": "People & Body" + , "aliases": [ + "woman_shrugging" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "👨‍⚕" + , "description": "man health worker" + , "category": "People & Body" + , "aliases": [ + "man_health_worker" + ] + , "tags": [ + "doctor" + , "nurse" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "👩‍⚕" + , "description": "woman health worker" + , "category": "People & Body" + , "aliases": [ + "woman_health_worker" + ] + , "tags": [ + "doctor" + , "nurse" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "👨‍🎓" + , "description": "man student" + , "category": "People & Body" + , "aliases": [ + "man_student" + ] + , "tags": [ + "graduation" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "👩‍🎓" + , "description": "woman student" + , "category": "People & Body" + , "aliases": [ + "woman_student" + ] + , "tags": [ + "graduation" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "👨‍🏫" + , "description": "man teacher" + , "category": "People & Body" + , "aliases": [ + "man_teacher" + ] + , "tags": [ + "school" + , "professor" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "👩‍🏫" + , "description": "woman teacher" + , "category": "People & Body" + , "aliases": [ + "woman_teacher" + ] + , "tags": [ + "school" + , "professor" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "👨‍⚖" + , "description": "man judge" + , "category": "People & Body" + , "aliases": [ + "man_judge" + ] + , "tags": [ + "justice" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "👩‍⚖" + , "description": "woman judge" + , "category": "People & Body" + , "aliases": [ + "woman_judge" + ] + , "tags": [ + "justice" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "👨‍🌾" + , "description": "man farmer" + , "category": "People & Body" + , "aliases": [ + "man_farmer" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "👩‍🌾" + , "description": "woman farmer" + , "category": "People & Body" + , "aliases": [ + "woman_farmer" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "👨‍🍳" + , "description": "man cook" + , "category": "People & Body" + , "aliases": [ + "man_cook" + ] + , "tags": [ + "chef" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "👩‍🍳" + , "description": "woman cook" + , "category": "People & Body" + , "aliases": [ + "woman_cook" + ] + , "tags": [ + "chef" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "👨‍🔧" + , "description": "man mechanic" + , "category": "People & Body" + , "aliases": [ + "man_mechanic" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "👩‍🔧" + , "description": "woman mechanic" + , "category": "People & Body" + , "aliases": [ + "woman_mechanic" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "👨‍🏭" + , "description": "man factory worker" + , "category": "People & Body" + , "aliases": [ + "man_factory_worker" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "👩‍🏭" + , "description": "woman factory worker" + , "category": "People & Body" + , "aliases": [ + "woman_factory_worker" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "👨‍💼" + , "description": "man office worker" + , "category": "People & Body" + , "aliases": [ + "man_office_worker" + ] + , "tags": [ + "business" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "👩‍💼" + , "description": "woman office worker" + , "category": "People & Body" + , "aliases": [ + "woman_office_worker" + ] + , "tags": [ + "business" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "👨‍🔬" + , "description": "man scientist" + , "category": "People & Body" + , "aliases": [ + "man_scientist" + ] + , "tags": [ + "research" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "👩‍🔬" + , "description": "woman scientist" + , "category": "People & Body" + , "aliases": [ + "woman_scientist" + ] + , "tags": [ + "research" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "👨‍💻" + , "description": "man technologist" + , "category": "People & Body" + , "aliases": [ + "man_technologist" + ] + , "tags": [ + "coder" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "👩‍💻" + , "description": "woman technologist" + , "category": "People & Body" + , "aliases": [ + "woman_technologist" + ] + , "tags": [ + "coder" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "👨‍🎤" + , "description": "man singer" + , "category": "People & Body" + , "aliases": [ + "man_singer" + ] + , "tags": [ + "rockstar" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "👩‍🎤" + , "description": "woman singer" + , "category": "People & Body" + , "aliases": [ + "woman_singer" + ] + , "tags": [ + "rockstar" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "👨‍🎨" + , "description": "man artist" + , "category": "People & Body" + , "aliases": [ + "man_artist" + ] + , "tags": [ + "painter" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "👩‍🎨" + , "description": "woman artist" + , "category": "People & Body" + , "aliases": [ + "woman_artist" + ] + , "tags": [ + "painter" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "👨‍✈" + , "description": "man pilot" + , "category": "People & Body" + , "aliases": [ + "man_pilot" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "👩‍✈" + , "description": "woman pilot" + , "category": "People & Body" + , "aliases": [ + "woman_pilot" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "👨‍🚀" + , "description": "man astronaut" + , "category": "People & Body" + , "aliases": [ + "man_astronaut" + ] + , "tags": [ + "space" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "👩‍🚀" + , "description": "woman astronaut" + , "category": "People & Body" + , "aliases": [ + "woman_astronaut" + ] + , "tags": [ + "space" + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "👨‍🚒" + , "description": "man firefighter" + , "category": "People & Body" + , "aliases": [ + "man_firefighter" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "👩‍🚒" + , "description": "woman firefighter" + , "category": "People & Body" + , "aliases": [ + "woman_firefighter" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "👮" + , "description": "police officer" + , "category": "People & Body" + , "aliases": [ + "police_officer" + , "cop" + ] + , "tags": [ + "law" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "👮‍♂" + , "description": "man police officer" + , "category": "People & Body" + , "aliases": [ + "policeman" + ] + , "tags": [ + "law" + , "cop" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "👮‍♀" + , "description": "woman police officer" + , "category": "People & Body" + , "aliases": [ + "policewoman" + ] + , "tags": [ + "law" + , "cop" + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "🕵" + , "description": "detective" + , "category": "People & Body" + , "aliases": [ + "detective" + ] + , "tags": [ + "sleuth" + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + , "skin_tones": true + } +, { + "emoji": "🕵️‍♂️" + , "description": "man detective" + , "category": "People & Body" + , "aliases": [ + "male_detective" + ] + , "tags": [ + "sleuth" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🕵️‍♀️" + , "description": "woman detective" + , "category": "People & Body" + , "aliases": [ + "female_detective" + ] + , "tags": [ + "sleuth" + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "💂" + , "description": "guard" + , "category": "People & Body" + , "aliases": [ + "guard" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "💂‍♂" + , "description": "man guard" + , "category": "People & Body" + , "aliases": [ + "guardsman" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "💂‍♀" + , "description": "woman guard" + , "category": "People & Body" + , "aliases": [ + "guardswoman" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "👷" + , "description": "construction worker" + , "category": "People & Body" + , "aliases": [ + "construction_worker" + ] + , "tags": [ + "helmet" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "👷‍♂" + , "description": "man construction worker" + , "category": "People & Body" + , "aliases": [ + "construction_worker_man" + ] + , "tags": [ + "helmet" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "👷‍♀" + , "description": "woman construction worker" + , "category": "People & Body" + , "aliases": [ + "construction_worker_woman" + ] + , "tags": [ + "helmet" + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "🤴" + , "description": "prince" + , "category": "People & Body" + , "aliases": [ + "prince" + ] + , "tags": [ + "crown" + , "royal" + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "👸" + , "description": "princess" + , "category": "People & Body" + , "aliases": [ + "princess" + ] + , "tags": [ + "crown" + , "royal" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "👳" + , "description": "person wearing turban" + , "category": "People & Body" + , "aliases": [ + "person_with_turban" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "👳‍♂" + , "description": "man wearing turban" + , "category": "People & Body" + , "aliases": [ + "man_with_turban" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "👳‍♀" + , "description": "woman wearing turban" + , "category": "People & Body" + , "aliases": [ + "woman_with_turban" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "👲" + , "description": "man with Chinese cap" + , "category": "People & Body" + , "aliases": [ + "man_with_gua_pi_mao" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "🧕" + , "description": "woman with headscarf" + , "category": "People & Body" + , "aliases": [ + "woman_with_headscarf" + ] + , "tags": [ + "hijab" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🤵" + , "description": "man in tuxedo" + , "category": "People & Body" + , "aliases": [ + "man_in_tuxedo" + ] + , "tags": [ + "groom" + , "marriage" + , "wedding" + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "👰" + , "description": "bride with veil" + , "category": "People & Body" + , "aliases": [ + "bride_with_veil" + ] + , "tags": [ + "marriage" + , "wedding" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "🤰" + , "description": "pregnant woman" + , "category": "People & Body" + , "aliases": [ + "pregnant_woman" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "🤱" + , "description": "breast-feeding" + , "category": "People & Body" + , "aliases": [ + "breast_feeding" + ] + , "tags": [ + "nursing" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "👼" + , "description": "baby angel" + , "category": "People & Body" + , "aliases": [ + "angel" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "🎅" + , "description": "Santa Claus" + , "category": "People & Body" + , "aliases": [ + "santa" + ] + , "tags": [ + "christmas" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "🤶" + , "description": "Mrs. Claus" + , "category": "People & Body" + , "aliases": [ + "mrs_claus" + ] + , "tags": [ + "santa" + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "🦸" + , "description": "superhero" + , "category": "People & Body" + , "aliases": [ + "superhero" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🦸‍♂" + , "description": "man superhero" + , "category": "People & Body" + , "aliases": [ + "superhero_man" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🦸‍♀" + , "description": "woman superhero" + , "category": "People & Body" + , "aliases": [ + "superhero_woman" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🦹" + , "description": "supervillain" + , "category": "People & Body" + , "aliases": [ + "supervillain" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🦹‍♂" + , "description": "man supervillain" + , "category": "People & Body" + , "aliases": [ + "supervillain_man" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🦹‍♀" + , "description": "woman supervillain" + , "category": "People & Body" + , "aliases": [ + "supervillain_woman" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🧙" + , "description": "mage" + , "category": "People & Body" + , "aliases": [ + "mage" + ] + , "tags": [ + "wizard" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🧙‍♂" + , "description": "man mage" + , "category": "People & Body" + , "aliases": [ + "mage_man" + ] + , "tags": [ + "wizard" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🧙‍♀" + , "description": "woman mage" + , "category": "People & Body" + , "aliases": [ + "mage_woman" + ] + , "tags": [ + "wizard" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🧚" + , "description": "fairy" + , "category": "People & Body" + , "aliases": [ + "fairy" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🧚‍♂" + , "description": "man fairy" + , "category": "People & Body" + , "aliases": [ + "fairy_man" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🧚‍♀" + , "description": "woman fairy" + , "category": "People & Body" + , "aliases": [ + "fairy_woman" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🧛" + , "description": "vampire" + , "category": "People & Body" + , "aliases": [ + "vampire" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🧛‍♂" + , "description": "man vampire" + , "category": "People & Body" + , "aliases": [ + "vampire_man" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🧛‍♀" + , "description": "woman vampire" + , "category": "People & Body" + , "aliases": [ + "vampire_woman" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🧜" + , "description": "merperson" + , "category": "People & Body" + , "aliases": [ + "merperson" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🧜‍♂" + , "description": "merman" + , "category": "People & Body" + , "aliases": [ + "merman" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🧜‍♀" + , "description": "mermaid" + , "category": "People & Body" + , "aliases": [ + "mermaid" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🧝" + , "description": "elf" + , "category": "People & Body" + , "aliases": [ + "elf" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🧝‍♂" + , "description": "man elf" + , "category": "People & Body" + , "aliases": [ + "elf_man" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🧝‍♀" + , "description": "woman elf" + , "category": "People & Body" + , "aliases": [ + "elf_woman" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🧞" + , "description": "genie" + , "category": "People & Body" + , "aliases": [ + "genie" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🧞‍♂" + , "description": "man genie" + , "category": "People & Body" + , "aliases": [ + "genie_man" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🧞‍♀" + , "description": "woman genie" + , "category": "People & Body" + , "aliases": [ + "genie_woman" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🧟" + , "description": "zombie" + , "category": "People & Body" + , "aliases": [ + "zombie" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🧟‍♂" + , "description": "man zombie" + , "category": "People & Body" + , "aliases": [ + "zombie_man" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🧟‍♀" + , "description": "woman zombie" + , "category": "People & Body" + , "aliases": [ + "zombie_woman" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "💆" + , "description": "person getting massage" + , "category": "People & Body" + , "aliases": [ + "massage" + ] + , "tags": [ + "spa" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "💆‍♂" + , "description": "man getting massage" + , "category": "People & Body" + , "aliases": [ + "massage_man" + ] + , "tags": [ + "spa" + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "💆‍♀" + , "description": "woman getting massage" + , "category": "People & Body" + , "aliases": [ + "massage_woman" + ] + , "tags": [ + "spa" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "💇" + , "description": "person getting haircut" + , "category": "People & Body" + , "aliases": [ + "haircut" + ] + , "tags": [ + "beauty" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "💇‍♂" + , "description": "man getting haircut" + , "category": "People & Body" + , "aliases": [ + "haircut_man" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "💇‍♀" + , "description": "woman getting haircut" + , "category": "People & Body" + , "aliases": [ + "haircut_woman" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🚶" + , "description": "person walking" + , "category": "People & Body" + , "aliases": [ + "walking" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "🚶‍♂" + , "description": "man walking" + , "category": "People & Body" + , "aliases": [ + "walking_man" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🚶‍♀" + , "description": "woman walking" + , "category": "People & Body" + , "aliases": [ + "walking_woman" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "🧍" + , "description": "person standing" + , "category": "People & Body" + , "aliases": [ + "standing_person" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + , "skin_tones": true + } +, { + "emoji": "🧍‍♂" + , "description": "man standing" + , "category": "People & Body" + , "aliases": [ + "standing_man" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + , "skin_tones": true + } +, { + "emoji": "🧍‍♀" + , "description": "woman standing" + , "category": "People & Body" + , "aliases": [ + "standing_woman" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + , "skin_tones": true + } +, { + "emoji": "🧎" + , "description": "person kneeling" + , "category": "People & Body" + , "aliases": [ + "kneeling_person" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + , "skin_tones": true + } +, { + "emoji": "🧎‍♂" + , "description": "man kneeling" + , "category": "People & Body" + , "aliases": [ + "kneeling_man" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + , "skin_tones": true + } +, { + "emoji": "🧎‍♀" + , "description": "woman kneeling" + , "category": "People & Body" + , "aliases": [ + "kneeling_woman" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + , "skin_tones": true + } +, { + "emoji": "👨‍🦯" + , "description": "man with probing cane" + , "category": "People & Body" + , "aliases": [ + "man_with_probing_cane" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + , "skin_tones": true + } +, { + "emoji": "👩‍🦯" + , "description": "woman with probing cane" + , "category": "People & Body" + , "aliases": [ + "woman_with_probing_cane" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + , "skin_tones": true + } +, { + "emoji": "👨‍🦼" + , "description": "man in motorized wheelchair" + , "category": "People & Body" + , "aliases": [ + "man_in_motorized_wheelchair" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + , "skin_tones": true + } +, { + "emoji": "👩‍🦼" + , "description": "woman in motorized wheelchair" + , "category": "People & Body" + , "aliases": [ + "woman_in_motorized_wheelchair" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + , "skin_tones": true + } +, { + "emoji": "👨‍🦽" + , "description": "man in manual wheelchair" + , "category": "People & Body" + , "aliases": [ + "man_in_manual_wheelchair" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + , "skin_tones": true + } +, { + "emoji": "👩‍🦽" + , "description": "woman in manual wheelchair" + , "category": "People & Body" + , "aliases": [ + "woman_in_manual_wheelchair" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + , "skin_tones": true + } +, { + "emoji": "🏃" + , "description": "person running" + , "category": "People & Body" + , "aliases": [ + "runner" + , "running" + ] + , "tags": [ + "exercise" + , "workout" + , "marathon" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "🏃‍♂" + , "description": "man running" + , "category": "People & Body" + , "aliases": [ + "running_man" + ] + , "tags": [ + "exercise" + , "workout" + , "marathon" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🏃‍♀" + , "description": "woman running" + , "category": "People & Body" + , "aliases": [ + "running_woman" + ] + , "tags": [ + "exercise" + , "workout" + , "marathon" + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "💃" + , "description": "woman dancing" + , "category": "People & Body" + , "aliases": [ + "woman_dancing" + , "dancer" + ] + , "tags": [ + "dress" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "🕺" + , "description": "man dancing" + , "category": "People & Body" + , "aliases": [ + "man_dancing" + ] + , "tags": [ + "dancer" + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "🕴" + , "description": "man in suit levitating" + , "category": "People & Body" + , "aliases": [ + "business_suit_levitating" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + , "skin_tones": true + } +, { + "emoji": "👯" + , "description": "people with bunny ears" + , "category": "People & Body" + , "aliases": [ + "dancers" + ] + , "tags": [ + "bunny" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "👯‍♂" + , "description": "men with bunny ears" + , "category": "People & Body" + , "aliases": [ + "dancing_men" + ] + , "tags": [ + "bunny" + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + } +, { + "emoji": "👯‍♀" + , "description": "women with bunny ears" + , "category": "People & Body" + , "aliases": [ + "dancing_women" + ] + , "tags": [ + "bunny" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🧖" + , "description": "person in steamy room" + , "category": "People & Body" + , "aliases": [ + "sauna_person" + ] + , "tags": [ + "steamy" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🧖‍♂" + , "description": "man in steamy room" + , "category": "People & Body" + , "aliases": [ + "sauna_man" + ] + , "tags": [ + "steamy" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🧖‍♀" + , "description": "woman in steamy room" + , "category": "People & Body" + , "aliases": [ + "sauna_woman" + ] + , "tags": [ + "steamy" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🧗" + , "description": "person climbing" + , "category": "People & Body" + , "aliases": [ + "climbing" + ] + , "tags": [ + "bouldering" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🧗‍♂" + , "description": "man climbing" + , "category": "People & Body" + , "aliases": [ + "climbing_man" + ] + , "tags": [ + "bouldering" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🧗‍♀" + , "description": "woman climbing" + , "category": "People & Body" + , "aliases": [ + "climbing_woman" + ] + , "tags": [ + "bouldering" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🤺" + , "description": "person fencing" + , "category": "People & Body" + , "aliases": [ + "person_fencing" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🏇" + , "description": "horse racing" + , "category": "People & Body" + , "aliases": [ + "horse_racing" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "⛷" + , "description": "skier" + , "category": "People & Body" + , "aliases": [ + "skier" + ] + , "tags": [ + ] + , "unicode_version": "5.2" + , "ios_version": "9.1" + } +, { + "emoji": "🏂" + , "description": "snowboarder" + , "category": "People & Body" + , "aliases": [ + "snowboarder" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "🏌" + , "description": "person golfing" + , "category": "People & Body" + , "aliases": [ + "golfing" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + , "skin_tones": true + } +, { + "emoji": "🏌️‍♂️" + , "description": "man golfing" + , "category": "People & Body" + , "aliases": [ + "golfing_man" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🏌️‍♀️" + , "description": "woman golfing" + , "category": "People & Body" + , "aliases": [ + "golfing_woman" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "🏄" + , "description": "person surfing" + , "category": "People & Body" + , "aliases": [ + "surfer" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "🏄‍♂" + , "description": "man surfing" + , "category": "People & Body" + , "aliases": [ + "surfing_man" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🏄‍♀" + , "description": "woman surfing" + , "category": "People & Body" + , "aliases": [ + "surfing_woman" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "🚣" + , "description": "person rowing boat" + , "category": "People & Body" + , "aliases": [ + "rowboat" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "🚣‍♂" + , "description": "man rowing boat" + , "category": "People & Body" + , "aliases": [ + "rowing_man" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🚣‍♀" + , "description": "woman rowing boat" + , "category": "People & Body" + , "aliases": [ + "rowing_woman" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "🏊" + , "description": "person swimming" + , "category": "People & Body" + , "aliases": [ + "swimmer" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "🏊‍♂" + , "description": "man swimming" + , "category": "People & Body" + , "aliases": [ + "swimming_man" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🏊‍♀" + , "description": "woman swimming" + , "category": "People & Body" + , "aliases": [ + "swimming_woman" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "⛹" + , "description": "person bouncing ball" + , "category": "People & Body" + , "aliases": [ + "bouncing_ball_person" + ] + , "tags": [ + "basketball" + ] + , "unicode_version": "5.2" + , "ios_version": "9.1" + , "skin_tones": true + } +, { + "emoji": "⛹️‍♂️" + , "description": "man bouncing ball" + , "category": "People & Body" + , "aliases": [ + "bouncing_ball_man" + , "basketball_man" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "⛹️‍♀️" + , "description": "woman bouncing ball" + , "category": "People & Body" + , "aliases": [ + "bouncing_ball_woman" + , "basketball_woman" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "🏋" + , "description": "person lifting weights" + , "category": "People & Body" + , "aliases": [ + "weight_lifting" + ] + , "tags": [ + "gym" + , "workout" + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + , "skin_tones": true + } +, { + "emoji": "🏋️‍♂️" + , "description": "man lifting weights" + , "category": "People & Body" + , "aliases": [ + "weight_lifting_man" + ] + , "tags": [ + "gym" + , "workout" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🏋️‍♀️" + , "description": "woman lifting weights" + , "category": "People & Body" + , "aliases": [ + "weight_lifting_woman" + ] + , "tags": [ + "gym" + , "workout" + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "🚴" + , "description": "person biking" + , "category": "People & Body" + , "aliases": [ + "bicyclist" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "🚴‍♂" + , "description": "man biking" + , "category": "People & Body" + , "aliases": [ + "biking_man" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🚴‍♀" + , "description": "woman biking" + , "category": "People & Body" + , "aliases": [ + "biking_woman" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "🚵" + , "description": "person mountain biking" + , "category": "People & Body" + , "aliases": [ + "mountain_bicyclist" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "🚵‍♂" + , "description": "man mountain biking" + , "category": "People & Body" + , "aliases": [ + "mountain_biking_man" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🚵‍♀" + , "description": "woman mountain biking" + , "category": "People & Body" + , "aliases": [ + "mountain_biking_woman" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + , "skin_tones": true + } +, { + "emoji": "🤸" + , "description": "person cartwheeling" + , "category": "People & Body" + , "aliases": [ + "cartwheeling" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🤸‍♂" + , "description": "man cartwheeling" + , "category": "People & Body" + , "aliases": [ + "man_cartwheeling" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "🤸‍♀" + , "description": "woman cartwheeling" + , "category": "People & Body" + , "aliases": [ + "woman_cartwheeling" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "🤼" + , "description": "people wrestling" + , "category": "People & Body" + , "aliases": [ + "wrestling" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🤼‍♂" + , "description": "men wrestling" + , "category": "People & Body" + , "aliases": [ + "men_wrestling" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🤼‍♀" + , "description": "women wrestling" + , "category": "People & Body" + , "aliases": [ + "women_wrestling" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🤽" + , "description": "person playing water polo" + , "category": "People & Body" + , "aliases": [ + "water_polo" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🤽‍♂" + , "description": "man playing water polo" + , "category": "People & Body" + , "aliases": [ + "man_playing_water_polo" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "🤽‍♀" + , "description": "woman playing water polo" + , "category": "People & Body" + , "aliases": [ + "woman_playing_water_polo" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "🤾" + , "description": "person playing handball" + , "category": "People & Body" + , "aliases": [ + "handball_person" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🤾‍♂" + , "description": "man playing handball" + , "category": "People & Body" + , "aliases": [ + "man_playing_handball" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "🤾‍♀" + , "description": "woman playing handball" + , "category": "People & Body" + , "aliases": [ + "woman_playing_handball" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "🤹" + , "description": "person juggling" + , "category": "People & Body" + , "aliases": [ + "juggling_person" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🤹‍♂" + , "description": "man juggling" + , "category": "People & Body" + , "aliases": [ + "man_juggling" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "🤹‍♀" + , "description": "woman juggling" + , "category": "People & Body" + , "aliases": [ + "woman_juggling" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + , "skin_tones": true + } +, { + "emoji": "🧘" + , "description": "person in lotus position" + , "category": "People & Body" + , "aliases": [ + "lotus_position" + ] + , "tags": [ + "meditation" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🧘‍♂" + , "description": "man in lotus position" + , "category": "People & Body" + , "aliases": [ + "lotus_position_man" + ] + , "tags": [ + "meditation" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🧘‍♀" + , "description": "woman in lotus position" + , "category": "People & Body" + , "aliases": [ + "lotus_position_woman" + ] + , "tags": [ + "meditation" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + , "skin_tones": true + } +, { + "emoji": "🛀" + , "description": "person taking bath" + , "category": "People & Body" + , "aliases": [ + "bath" + ] + , "tags": [ + "shower" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "🛌" + , "description": "person in bed" + , "category": "People & Body" + , "aliases": [ + "sleeping_bed" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + , "skin_tones": true + } +, { + "emoji": "🧑‍🤝‍🧑" + , "description": "people holding hands" + , "category": "People & Body" + , "aliases": [ + "people_holding_hands" + ] + , "tags": [ + "couple" + , "date" + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + , "skin_tones": true + } +, { + "emoji": "👭" + , "description": "women holding hands" + , "category": "People & Body" + , "aliases": [ + "two_women_holding_hands" + ] + , "tags": [ + "couple" + , "date" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "👫" + , "description": "woman and man holding hands" + , "category": "People & Body" + , "aliases": [ + "couple" + ] + , "tags": [ + "date" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "👬" + , "description": "men holding hands" + , "category": "People & Body" + , "aliases": [ + "two_men_holding_hands" + ] + , "tags": [ + "couple" + , "date" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + , "skin_tones": true + } +, { + "emoji": "💏" + , "description": "kiss" + , "category": "People & Body" + , "aliases": [ + "couplekiss" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "👩‍❤️‍💋‍👨" + , "description": "kiss: woman, man" + , "category": "People & Body" + , "aliases": [ + "couplekiss_man_woman" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "👨‍❤️‍💋‍👨" + , "description": "kiss: man, man" + , "category": "People & Body" + , "aliases": [ + "couplekiss_man_man" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "👩‍❤️‍💋‍👩" + , "description": "kiss: woman, woman" + , "category": "People & Body" + , "aliases": [ + "couplekiss_woman_woman" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "💑" + , "description": "couple with heart" + , "category": "People & Body" + , "aliases": [ + "couple_with_heart" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "👩‍❤️‍👨" + , "description": "couple with heart: woman, man" + , "category": "People & Body" + , "aliases": [ + "couple_with_heart_woman_man" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "👨‍❤️‍👨" + , "description": "couple with heart: man, man" + , "category": "People & Body" + , "aliases": [ + "couple_with_heart_man_man" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "👩‍❤️‍👩" + , "description": "couple with heart: woman, woman" + , "category": "People & Body" + , "aliases": [ + "couple_with_heart_woman_woman" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "👪" + , "description": "family" + , "category": "People & Body" + , "aliases": [ + "family" + ] + , "tags": [ + "home" + , "parents" + , "child" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "👨‍👩‍👦" + , "description": "family: man, woman, boy" + , "category": "People & Body" + , "aliases": [ + "family_man_woman_boy" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "👨‍👩‍👧" + , "description": "family: man, woman, girl" + , "category": "People & Body" + , "aliases": [ + "family_man_woman_girl" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "👨‍👩‍👧‍👦" + , "description": "family: man, woman, girl, boy" + , "category": "People & Body" + , "aliases": [ + "family_man_woman_girl_boy" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "👨‍👩‍👦‍👦" + , "description": "family: man, woman, boy, boy" + , "category": "People & Body" + , "aliases": [ + "family_man_woman_boy_boy" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "👨‍👩‍👧‍👧" + , "description": "family: man, woman, girl, girl" + , "category": "People & Body" + , "aliases": [ + "family_man_woman_girl_girl" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "👨‍👨‍👦" + , "description": "family: man, man, boy" + , "category": "People & Body" + , "aliases": [ + "family_man_man_boy" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "👨‍👨‍👧" + , "description": "family: man, man, girl" + , "category": "People & Body" + , "aliases": [ + "family_man_man_girl" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "👨‍👨‍👧‍👦" + , "description": "family: man, man, girl, boy" + , "category": "People & Body" + , "aliases": [ + "family_man_man_girl_boy" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "👨‍👨‍👦‍👦" + , "description": "family: man, man, boy, boy" + , "category": "People & Body" + , "aliases": [ + "family_man_man_boy_boy" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "👨‍👨‍👧‍👧" + , "description": "family: man, man, girl, girl" + , "category": "People & Body" + , "aliases": [ + "family_man_man_girl_girl" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "👩‍👩‍👦" + , "description": "family: woman, woman, boy" + , "category": "People & Body" + , "aliases": [ + "family_woman_woman_boy" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "👩‍👩‍👧" + , "description": "family: woman, woman, girl" + , "category": "People & Body" + , "aliases": [ + "family_woman_woman_girl" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "👩‍👩‍👧‍👦" + , "description": "family: woman, woman, girl, boy" + , "category": "People & Body" + , "aliases": [ + "family_woman_woman_girl_boy" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "👩‍👩‍👦‍👦" + , "description": "family: woman, woman, boy, boy" + , "category": "People & Body" + , "aliases": [ + "family_woman_woman_boy_boy" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "👩‍👩‍👧‍👧" + , "description": "family: woman, woman, girl, girl" + , "category": "People & Body" + , "aliases": [ + "family_woman_woman_girl_girl" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "👨‍👦" + , "description": "family: man, boy" + , "category": "People & Body" + , "aliases": [ + "family_man_boy" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + } +, { + "emoji": "👨‍👦‍👦" + , "description": "family: man, boy, boy" + , "category": "People & Body" + , "aliases": [ + "family_man_boy_boy" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + } +, { + "emoji": "👨‍👧" + , "description": "family: man, girl" + , "category": "People & Body" + , "aliases": [ + "family_man_girl" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + } +, { + "emoji": "👨‍👧‍👦" + , "description": "family: man, girl, boy" + , "category": "People & Body" + , "aliases": [ + "family_man_girl_boy" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + } +, { + "emoji": "👨‍👧‍👧" + , "description": "family: man, girl, girl" + , "category": "People & Body" + , "aliases": [ + "family_man_girl_girl" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + } +, { + "emoji": "👩‍👦" + , "description": "family: woman, boy" + , "category": "People & Body" + , "aliases": [ + "family_woman_boy" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + } +, { + "emoji": "👩‍👦‍👦" + , "description": "family: woman, boy, boy" + , "category": "People & Body" + , "aliases": [ + "family_woman_boy_boy" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + } +, { + "emoji": "👩‍👧" + , "description": "family: woman, girl" + , "category": "People & Body" + , "aliases": [ + "family_woman_girl" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + } +, { + "emoji": "👩‍👧‍👦" + , "description": "family: woman, girl, boy" + , "category": "People & Body" + , "aliases": [ + "family_woman_girl_boy" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + } +, { + "emoji": "👩‍👧‍👧" + , "description": "family: woman, girl, girl" + , "category": "People & Body" + , "aliases": [ + "family_woman_girl_girl" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + } +, { + "emoji": "🗣" + , "description": "speaking head" + , "category": "People & Body" + , "aliases": [ + "speaking_head" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "👤" + , "description": "bust in silhouette" + , "category": "People & Body" + , "aliases": [ + "bust_in_silhouette" + ] + , "tags": [ + "user" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "👥" + , "description": "busts in silhouette" + , "category": "People & Body" + , "aliases": [ + "busts_in_silhouette" + ] + , "tags": [ + "users" + , "group" + , "team" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "👣" + , "description": "footprints" + , "category": "People & Body" + , "aliases": [ + "footprints" + ] + , "tags": [ + "feet" + , "tracks" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐵" + , "description": "monkey face" + , "category": "Animals & Nature" + , "aliases": [ + "monkey_face" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐒" + , "description": "monkey" + , "category": "Animals & Nature" + , "aliases": [ + "monkey" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🦍" + , "description": "gorilla" + , "category": "Animals & Nature" + , "aliases": [ + "gorilla" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🦧" + , "description": "orangutan" + , "category": "Animals & Nature" + , "aliases": [ + "orangutan" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🐶" + , "description": "dog face" + , "category": "Animals & Nature" + , "aliases": [ + "dog" + ] + , "tags": [ + "pet" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐕" + , "description": "dog" + , "category": "Animals & Nature" + , "aliases": [ + "dog2" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🦮" + , "description": "guide dog" + , "category": "Animals & Nature" + , "aliases": [ + "guide_dog" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🐕‍🦺" + , "description": "service dog" + , "category": "Animals & Nature" + , "aliases": [ + "service_dog" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🐩" + , "description": "poodle" + , "category": "Animals & Nature" + , "aliases": [ + "poodle" + ] + , "tags": [ + "dog" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐺" + , "description": "wolf" + , "category": "Animals & Nature" + , "aliases": [ + "wolf" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🦊" + , "description": "fox" + , "category": "Animals & Nature" + , "aliases": [ + "fox_face" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🦝" + , "description": "raccoon" + , "category": "Animals & Nature" + , "aliases": [ + "raccoon" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🐱" + , "description": "cat face" + , "category": "Animals & Nature" + , "aliases": [ + "cat" + ] + , "tags": [ + "pet" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐈" + , "description": "cat" + , "category": "Animals & Nature" + , "aliases": [ + "cat2" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🦁" + , "description": "lion" + , "category": "Animals & Nature" + , "aliases": [ + "lion" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "🐯" + , "description": "tiger face" + , "category": "Animals & Nature" + , "aliases": [ + "tiger" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐅" + , "description": "tiger" + , "category": "Animals & Nature" + , "aliases": [ + "tiger2" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐆" + , "description": "leopard" + , "category": "Animals & Nature" + , "aliases": [ + "leopard" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐴" + , "description": "horse face" + , "category": "Animals & Nature" + , "aliases": [ + "horse" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐎" + , "description": "horse" + , "category": "Animals & Nature" + , "aliases": [ + "racehorse" + ] + , "tags": [ + "speed" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🦄" + , "description": "unicorn" + , "category": "Animals & Nature" + , "aliases": [ + "unicorn" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "🦓" + , "description": "zebra" + , "category": "Animals & Nature" + , "aliases": [ + "zebra" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🦌" + , "description": "deer" + , "category": "Animals & Nature" + , "aliases": [ + "deer" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🐮" + , "description": "cow face" + , "category": "Animals & Nature" + , "aliases": [ + "cow" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐂" + , "description": "ox" + , "category": "Animals & Nature" + , "aliases": [ + "ox" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐃" + , "description": "water buffalo" + , "category": "Animals & Nature" + , "aliases": [ + "water_buffalo" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐄" + , "description": "cow" + , "category": "Animals & Nature" + , "aliases": [ + "cow2" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐷" + , "description": "pig face" + , "category": "Animals & Nature" + , "aliases": [ + "pig" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐖" + , "description": "pig" + , "category": "Animals & Nature" + , "aliases": [ + "pig2" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐗" + , "description": "boar" + , "category": "Animals & Nature" + , "aliases": [ + "boar" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐽" + , "description": "pig nose" + , "category": "Animals & Nature" + , "aliases": [ + "pig_nose" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐏" + , "description": "ram" + , "category": "Animals & Nature" + , "aliases": [ + "ram" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐑" + , "description": "ewe" + , "category": "Animals & Nature" + , "aliases": [ + "sheep" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐐" + , "description": "goat" + , "category": "Animals & Nature" + , "aliases": [ + "goat" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐪" + , "description": "camel" + , "category": "Animals & Nature" + , "aliases": [ + "dromedary_camel" + ] + , "tags": [ + "desert" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐫" + , "description": "two-hump camel" + , "category": "Animals & Nature" + , "aliases": [ + "camel" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🦙" + , "description": "llama" + , "category": "Animals & Nature" + , "aliases": [ + "llama" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🦒" + , "description": "giraffe" + , "category": "Animals & Nature" + , "aliases": [ + "giraffe" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🐘" + , "description": "elephant" + , "category": "Animals & Nature" + , "aliases": [ + "elephant" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🦏" + , "description": "rhinoceros" + , "category": "Animals & Nature" + , "aliases": [ + "rhinoceros" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🦛" + , "description": "hippopotamus" + , "category": "Animals & Nature" + , "aliases": [ + "hippopotamus" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🐭" + , "description": "mouse face" + , "category": "Animals & Nature" + , "aliases": [ + "mouse" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐁" + , "description": "mouse" + , "category": "Animals & Nature" + , "aliases": [ + "mouse2" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐀" + , "description": "rat" + , "category": "Animals & Nature" + , "aliases": [ + "rat" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐹" + , "description": "hamster" + , "category": "Animals & Nature" + , "aliases": [ + "hamster" + ] + , "tags": [ + "pet" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐰" + , "description": "rabbit face" + , "category": "Animals & Nature" + , "aliases": [ + "rabbit" + ] + , "tags": [ + "bunny" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐇" + , "description": "rabbit" + , "category": "Animals & Nature" + , "aliases": [ + "rabbit2" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐿" + , "description": "chipmunk" + , "category": "Animals & Nature" + , "aliases": [ + "chipmunk" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🦔" + , "description": "hedgehog" + , "category": "Animals & Nature" + , "aliases": [ + "hedgehog" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🦇" + , "description": "bat" + , "category": "Animals & Nature" + , "aliases": [ + "bat" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🐻" + , "description": "bear" + , "category": "Animals & Nature" + , "aliases": [ + "bear" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐨" + , "description": "koala" + , "category": "Animals & Nature" + , "aliases": [ + "koala" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐼" + , "description": "panda" + , "category": "Animals & Nature" + , "aliases": [ + "panda_face" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🦥" + , "description": "sloth" + , "category": "Animals & Nature" + , "aliases": [ + "sloth" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🦦" + , "description": "otter" + , "category": "Animals & Nature" + , "aliases": [ + "otter" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🦨" + , "description": "skunk" + , "category": "Animals & Nature" + , "aliases": [ + "skunk" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🦘" + , "description": "kangaroo" + , "category": "Animals & Nature" + , "aliases": [ + "kangaroo" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🦡" + , "description": "badger" + , "category": "Animals & Nature" + , "aliases": [ + "badger" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🐾" + , "description": "paw prints" + , "category": "Animals & Nature" + , "aliases": [ + "feet" + , "paw_prints" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🦃" + , "description": "turkey" + , "category": "Animals & Nature" + , "aliases": [ + "turkey" + ] + , "tags": [ + "thanksgiving" + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "🐔" + , "description": "chicken" + , "category": "Animals & Nature" + , "aliases": [ + "chicken" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐓" + , "description": "rooster" + , "category": "Animals & Nature" + , "aliases": [ + "rooster" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐣" + , "description": "hatching chick" + , "category": "Animals & Nature" + , "aliases": [ + "hatching_chick" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐤" + , "description": "baby chick" + , "category": "Animals & Nature" + , "aliases": [ + "baby_chick" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐥" + , "description": "front-facing baby chick" + , "category": "Animals & Nature" + , "aliases": [ + "hatched_chick" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐦" + , "description": "bird" + , "category": "Animals & Nature" + , "aliases": [ + "bird" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐧" + , "description": "penguin" + , "category": "Animals & Nature" + , "aliases": [ + "penguin" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🕊" + , "description": "dove" + , "category": "Animals & Nature" + , "aliases": [ + "dove" + ] + , "tags": [ + "peace" + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🦅" + , "description": "eagle" + , "category": "Animals & Nature" + , "aliases": [ + "eagle" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🦆" + , "description": "duck" + , "category": "Animals & Nature" + , "aliases": [ + "duck" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🦢" + , "description": "swan" + , "category": "Animals & Nature" + , "aliases": [ + "swan" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🦉" + , "description": "owl" + , "category": "Animals & Nature" + , "aliases": [ + "owl" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🦩" + , "description": "flamingo" + , "category": "Animals & Nature" + , "aliases": [ + "flamingo" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🦚" + , "description": "peacock" + , "category": "Animals & Nature" + , "aliases": [ + "peacock" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🦜" + , "description": "parrot" + , "category": "Animals & Nature" + , "aliases": [ + "parrot" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🐸" + , "description": "frog" + , "category": "Animals & Nature" + , "aliases": [ + "frog" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐊" + , "description": "crocodile" + , "category": "Animals & Nature" + , "aliases": [ + "crocodile" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐢" + , "description": "turtle" + , "category": "Animals & Nature" + , "aliases": [ + "turtle" + ] + , "tags": [ + "slow" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🦎" + , "description": "lizard" + , "category": "Animals & Nature" + , "aliases": [ + "lizard" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🐍" + , "description": "snake" + , "category": "Animals & Nature" + , "aliases": [ + "snake" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐲" + , "description": "dragon face" + , "category": "Animals & Nature" + , "aliases": [ + "dragon_face" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐉" + , "description": "dragon" + , "category": "Animals & Nature" + , "aliases": [ + "dragon" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🦕" + , "description": "sauropod" + , "category": "Animals & Nature" + , "aliases": [ + "sauropod" + ] + , "tags": [ + "dinosaur" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🦖" + , "description": "T-Rex" + , "category": "Animals & Nature" + , "aliases": [ + "t-rex" + ] + , "tags": [ + "dinosaur" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🐳" + , "description": "spouting whale" + , "category": "Animals & Nature" + , "aliases": [ + "whale" + ] + , "tags": [ + "sea" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐋" + , "description": "whale" + , "category": "Animals & Nature" + , "aliases": [ + "whale2" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐬" + , "description": "dolphin" + , "category": "Animals & Nature" + , "aliases": [ + "dolphin" + , "flipper" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐟" + , "description": "fish" + , "category": "Animals & Nature" + , "aliases": [ + "fish" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐠" + , "description": "tropical fish" + , "category": "Animals & Nature" + , "aliases": [ + "tropical_fish" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐡" + , "description": "blowfish" + , "category": "Animals & Nature" + , "aliases": [ + "blowfish" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🦈" + , "description": "shark" + , "category": "Animals & Nature" + , "aliases": [ + "shark" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🐙" + , "description": "octopus" + , "category": "Animals & Nature" + , "aliases": [ + "octopus" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐚" + , "description": "spiral shell" + , "category": "Animals & Nature" + , "aliases": [ + "shell" + ] + , "tags": [ + "sea" + , "beach" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐌" + , "description": "snail" + , "category": "Animals & Nature" + , "aliases": [ + "snail" + ] + , "tags": [ + "slow" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🦋" + , "description": "butterfly" + , "category": "Animals & Nature" + , "aliases": [ + "butterfly" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🐛" + , "description": "bug" + , "category": "Animals & Nature" + , "aliases": [ + "bug" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐜" + , "description": "ant" + , "category": "Animals & Nature" + , "aliases": [ + "ant" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐝" + , "description": "honeybee" + , "category": "Animals & Nature" + , "aliases": [ + "bee" + , "honeybee" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🐞" + , "description": "lady beetle" + , "category": "Animals & Nature" + , "aliases": [ + "beetle" + ] + , "tags": [ + "bug" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🦗" + , "description": "cricket" + , "category": "Animals & Nature" + , "aliases": [ + "cricket" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🕷" + , "description": "spider" + , "category": "Animals & Nature" + , "aliases": [ + "spider" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🕸" + , "description": "spider web" + , "category": "Animals & Nature" + , "aliases": [ + "spider_web" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🦂" + , "description": "scorpion" + , "category": "Animals & Nature" + , "aliases": [ + "scorpion" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "🦟" + , "description": "mosquito" + , "category": "Animals & Nature" + , "aliases": [ + "mosquito" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🦠" + , "description": "microbe" + , "category": "Animals & Nature" + , "aliases": [ + "microbe" + ] + , "tags": [ + "germ" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "💐" + , "description": "bouquet" + , "category": "Animals & Nature" + , "aliases": [ + "bouquet" + ] + , "tags": [ + "flowers" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🌸" + , "description": "cherry blossom" + , "category": "Animals & Nature" + , "aliases": [ + "cherry_blossom" + ] + , "tags": [ + "flower" + , "spring" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "💮" + , "description": "white flower" + , "category": "Animals & Nature" + , "aliases": [ + "white_flower" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🏵" + , "description": "rosette" + , "category": "Animals & Nature" + , "aliases": [ + "rosette" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🌹" + , "description": "rose" + , "category": "Animals & Nature" + , "aliases": [ + "rose" + ] + , "tags": [ + "flower" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🥀" + , "description": "wilted flower" + , "category": "Animals & Nature" + , "aliases": [ + "wilted_flower" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🌺" + , "description": "hibiscus" + , "category": "Animals & Nature" + , "aliases": [ + "hibiscus" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🌻" + , "description": "sunflower" + , "category": "Animals & Nature" + , "aliases": [ + "sunflower" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🌼" + , "description": "blossom" + , "category": "Animals & Nature" + , "aliases": [ + "blossom" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🌷" + , "description": "tulip" + , "category": "Animals & Nature" + , "aliases": [ + "tulip" + ] + , "tags": [ + "flower" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🌱" + , "description": "seedling" + , "category": "Animals & Nature" + , "aliases": [ + "seedling" + ] + , "tags": [ + "plant" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🌲" + , "description": "evergreen tree" + , "category": "Animals & Nature" + , "aliases": [ + "evergreen_tree" + ] + , "tags": [ + "wood" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🌳" + , "description": "deciduous tree" + , "category": "Animals & Nature" + , "aliases": [ + "deciduous_tree" + ] + , "tags": [ + "wood" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🌴" + , "description": "palm tree" + , "category": "Animals & Nature" + , "aliases": [ + "palm_tree" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🌵" + , "description": "cactus" + , "category": "Animals & Nature" + , "aliases": [ + "cactus" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🌾" + , "description": "sheaf of rice" + , "category": "Animals & Nature" + , "aliases": [ + "ear_of_rice" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🌿" + , "description": "herb" + , "category": "Animals & Nature" + , "aliases": [ + "herb" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "☘" + , "description": "shamrock" + , "category": "Animals & Nature" + , "aliases": [ + "shamrock" + ] + , "tags": [ + ] + , "unicode_version": "4.1" + , "ios_version": "9.1" + } +, { + "emoji": "🍀" + , "description": "four leaf clover" + , "category": "Animals & Nature" + , "aliases": [ + "four_leaf_clover" + ] + , "tags": [ + "luck" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍁" + , "description": "maple leaf" + , "category": "Animals & Nature" + , "aliases": [ + "maple_leaf" + ] + , "tags": [ + "canada" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍂" + , "description": "fallen leaf" + , "category": "Animals & Nature" + , "aliases": [ + "fallen_leaf" + ] + , "tags": [ + "autumn" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍃" + , "description": "leaf fluttering in wind" + , "category": "Animals & Nature" + , "aliases": [ + "leaves" + ] + , "tags": [ + "leaf" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍇" + , "description": "grapes" + , "category": "Food & Drink" + , "aliases": [ + "grapes" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍈" + , "description": "melon" + , "category": "Food & Drink" + , "aliases": [ + "melon" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍉" + , "description": "watermelon" + , "category": "Food & Drink" + , "aliases": [ + "watermelon" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍊" + , "description": "tangerine" + , "category": "Food & Drink" + , "aliases": [ + "tangerine" + , "orange" + , "mandarin" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍋" + , "description": "lemon" + , "category": "Food & Drink" + , "aliases": [ + "lemon" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍌" + , "description": "banana" + , "category": "Food & Drink" + , "aliases": [ + "banana" + ] + , "tags": [ + "fruit" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍍" + , "description": "pineapple" + , "category": "Food & Drink" + , "aliases": [ + "pineapple" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🥭" + , "description": "mango" + , "category": "Food & Drink" + , "aliases": [ + "mango" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🍎" + , "description": "red apple" + , "category": "Food & Drink" + , "aliases": [ + "apple" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍏" + , "description": "green apple" + , "category": "Food & Drink" + , "aliases": [ + "green_apple" + ] + , "tags": [ + "fruit" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍐" + , "description": "pear" + , "category": "Food & Drink" + , "aliases": [ + "pear" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍑" + , "description": "peach" + , "category": "Food & Drink" + , "aliases": [ + "peach" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍒" + , "description": "cherries" + , "category": "Food & Drink" + , "aliases": [ + "cherries" + ] + , "tags": [ + "fruit" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍓" + , "description": "strawberry" + , "category": "Food & Drink" + , "aliases": [ + "strawberry" + ] + , "tags": [ + "fruit" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🥝" + , "description": "kiwi fruit" + , "category": "Food & Drink" + , "aliases": [ + "kiwi_fruit" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🍅" + , "description": "tomato" + , "category": "Food & Drink" + , "aliases": [ + "tomato" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🥥" + , "description": "coconut" + , "category": "Food & Drink" + , "aliases": [ + "coconut" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🥑" + , "description": "avocado" + , "category": "Food & Drink" + , "aliases": [ + "avocado" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🍆" + , "description": "eggplant" + , "category": "Food & Drink" + , "aliases": [ + "eggplant" + ] + , "tags": [ + "aubergine" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🥔" + , "description": "potato" + , "category": "Food & Drink" + , "aliases": [ + "potato" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🥕" + , "description": "carrot" + , "category": "Food & Drink" + , "aliases": [ + "carrot" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🌽" + , "description": "ear of corn" + , "category": "Food & Drink" + , "aliases": [ + "corn" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🌶" + , "description": "hot pepper" + , "category": "Food & Drink" + , "aliases": [ + "hot_pepper" + ] + , "tags": [ + "spicy" + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🥒" + , "description": "cucumber" + , "category": "Food & Drink" + , "aliases": [ + "cucumber" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🥬" + , "description": "leafy green" + , "category": "Food & Drink" + , "aliases": [ + "leafy_green" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🥦" + , "description": "broccoli" + , "category": "Food & Drink" + , "aliases": [ + "broccoli" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🧄" + , "description": "garlic" + , "category": "Food & Drink" + , "aliases": [ + "garlic" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🧅" + , "description": "onion" + , "category": "Food & Drink" + , "aliases": [ + "onion" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🍄" + , "description": "mushroom" + , "category": "Food & Drink" + , "aliases": [ + "mushroom" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🥜" + , "description": "peanuts" + , "category": "Food & Drink" + , "aliases": [ + "peanuts" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🌰" + , "description": "chestnut" + , "category": "Food & Drink" + , "aliases": [ + "chestnut" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍞" + , "description": "bread" + , "category": "Food & Drink" + , "aliases": [ + "bread" + ] + , "tags": [ + "toast" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🥐" + , "description": "croissant" + , "category": "Food & Drink" + , "aliases": [ + "croissant" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🥖" + , "description": "baguette bread" + , "category": "Food & Drink" + , "aliases": [ + "baguette_bread" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🥨" + , "description": "pretzel" + , "category": "Food & Drink" + , "aliases": [ + "pretzel" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🥯" + , "description": "bagel" + , "category": "Food & Drink" + , "aliases": [ + "bagel" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🥞" + , "description": "pancakes" + , "category": "Food & Drink" + , "aliases": [ + "pancakes" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🧇" + , "description": "waffle" + , "category": "Food & Drink" + , "aliases": [ + "waffle" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🧀" + , "description": "cheese wedge" + , "category": "Food & Drink" + , "aliases": [ + "cheese" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "🍖" + , "description": "meat on bone" + , "category": "Food & Drink" + , "aliases": [ + "meat_on_bone" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍗" + , "description": "poultry leg" + , "category": "Food & Drink" + , "aliases": [ + "poultry_leg" + ] + , "tags": [ + "meat" + , "chicken" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🥩" + , "description": "cut of meat" + , "category": "Food & Drink" + , "aliases": [ + "cut_of_meat" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🥓" + , "description": "bacon" + , "category": "Food & Drink" + , "aliases": [ + "bacon" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🍔" + , "description": "hamburger" + , "category": "Food & Drink" + , "aliases": [ + "hamburger" + ] + , "tags": [ + "burger" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍟" + , "description": "french fries" + , "category": "Food & Drink" + , "aliases": [ + "fries" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍕" + , "description": "pizza" + , "category": "Food & Drink" + , "aliases": [ + "pizza" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🌭" + , "description": "hot dog" + , "category": "Food & Drink" + , "aliases": [ + "hotdog" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "🥪" + , "description": "sandwich" + , "category": "Food & Drink" + , "aliases": [ + "sandwich" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🌮" + , "description": "taco" + , "category": "Food & Drink" + , "aliases": [ + "taco" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "🌯" + , "description": "burrito" + , "category": "Food & Drink" + , "aliases": [ + "burrito" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "🥙" + , "description": "stuffed flatbread" + , "category": "Food & Drink" + , "aliases": [ + "stuffed_flatbread" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🧆" + , "description": "falafel" + , "category": "Food & Drink" + , "aliases": [ + "falafel" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🥚" + , "description": "egg" + , "category": "Food & Drink" + , "aliases": [ + "egg" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🍳" + , "description": "cooking" + , "category": "Food & Drink" + , "aliases": [ + "fried_egg" + ] + , "tags": [ + "breakfast" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🥘" + , "description": "shallow pan of food" + , "category": "Food & Drink" + , "aliases": [ + "shallow_pan_of_food" + ] + , "tags": [ + "paella" + , "curry" + ] + , "unicode_version": "" + , "ios_version": "10.2" + } +, { + "emoji": "🍲" + , "description": "pot of food" + , "category": "Food & Drink" + , "aliases": [ + "stew" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🥣" + , "description": "bowl with spoon" + , "category": "Food & Drink" + , "aliases": [ + "bowl_with_spoon" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🥗" + , "description": "green salad" + , "category": "Food & Drink" + , "aliases": [ + "green_salad" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🍿" + , "description": "popcorn" + , "category": "Food & Drink" + , "aliases": [ + "popcorn" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "🧈" + , "description": "butter" + , "category": "Food & Drink" + , "aliases": [ + "butter" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🧂" + , "description": "salt" + , "category": "Food & Drink" + , "aliases": [ + "salt" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🥫" + , "description": "canned food" + , "category": "Food & Drink" + , "aliases": [ + "canned_food" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🍱" + , "description": "bento box" + , "category": "Food & Drink" + , "aliases": [ + "bento" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍘" + , "description": "rice cracker" + , "category": "Food & Drink" + , "aliases": [ + "rice_cracker" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍙" + , "description": "rice ball" + , "category": "Food & Drink" + , "aliases": [ + "rice_ball" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍚" + , "description": "cooked rice" + , "category": "Food & Drink" + , "aliases": [ + "rice" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍛" + , "description": "curry rice" + , "category": "Food & Drink" + , "aliases": [ + "curry" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍜" + , "description": "steaming bowl" + , "category": "Food & Drink" + , "aliases": [ + "ramen" + ] + , "tags": [ + "noodle" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍝" + , "description": "spaghetti" + , "category": "Food & Drink" + , "aliases": [ + "spaghetti" + ] + , "tags": [ + "pasta" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍠" + , "description": "roasted sweet potato" + , "category": "Food & Drink" + , "aliases": [ + "sweet_potato" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍢" + , "description": "oden" + , "category": "Food & Drink" + , "aliases": [ + "oden" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍣" + , "description": "sushi" + , "category": "Food & Drink" + , "aliases": [ + "sushi" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍤" + , "description": "fried shrimp" + , "category": "Food & Drink" + , "aliases": [ + "fried_shrimp" + ] + , "tags": [ + "tempura" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍥" + , "description": "fish cake with swirl" + , "category": "Food & Drink" + , "aliases": [ + "fish_cake" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🥮" + , "description": "moon cake" + , "category": "Food & Drink" + , "aliases": [ + "moon_cake" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🍡" + , "description": "dango" + , "category": "Food & Drink" + , "aliases": [ + "dango" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🥟" + , "description": "dumpling" + , "category": "Food & Drink" + , "aliases": [ + "dumpling" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🥠" + , "description": "fortune cookie" + , "category": "Food & Drink" + , "aliases": [ + "fortune_cookie" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🥡" + , "description": "takeout box" + , "category": "Food & Drink" + , "aliases": [ + "takeout_box" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🦀" + , "description": "crab" + , "category": "Food & Drink" + , "aliases": [ + "crab" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "🦞" + , "description": "lobster" + , "category": "Food & Drink" + , "aliases": [ + "lobster" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🦐" + , "description": "shrimp" + , "category": "Food & Drink" + , "aliases": [ + "shrimp" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🦑" + , "description": "squid" + , "category": "Food & Drink" + , "aliases": [ + "squid" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🦪" + , "description": "oyster" + , "category": "Food & Drink" + , "aliases": [ + "oyster" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🍦" + , "description": "soft ice cream" + , "category": "Food & Drink" + , "aliases": [ + "icecream" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍧" + , "description": "shaved ice" + , "category": "Food & Drink" + , "aliases": [ + "shaved_ice" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍨" + , "description": "ice cream" + , "category": "Food & Drink" + , "aliases": [ + "ice_cream" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍩" + , "description": "doughnut" + , "category": "Food & Drink" + , "aliases": [ + "doughnut" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍪" + , "description": "cookie" + , "category": "Food & Drink" + , "aliases": [ + "cookie" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🎂" + , "description": "birthday cake" + , "category": "Food & Drink" + , "aliases": [ + "birthday" + ] + , "tags": [ + "party" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍰" + , "description": "shortcake" + , "category": "Food & Drink" + , "aliases": [ + "cake" + ] + , "tags": [ + "dessert" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🧁" + , "description": "cupcake" + , "category": "Food & Drink" + , "aliases": [ + "cupcake" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🥧" + , "description": "pie" + , "category": "Food & Drink" + , "aliases": [ + "pie" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🍫" + , "description": "chocolate bar" + , "category": "Food & Drink" + , "aliases": [ + "chocolate_bar" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍬" + , "description": "candy" + , "category": "Food & Drink" + , "aliases": [ + "candy" + ] + , "tags": [ + "sweet" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍭" + , "description": "lollipop" + , "category": "Food & Drink" + , "aliases": [ + "lollipop" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍮" + , "description": "custard" + , "category": "Food & Drink" + , "aliases": [ + "custard" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍯" + , "description": "honey pot" + , "category": "Food & Drink" + , "aliases": [ + "honey_pot" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍼" + , "description": "baby bottle" + , "category": "Food & Drink" + , "aliases": [ + "baby_bottle" + ] + , "tags": [ + "milk" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🥛" + , "description": "glass of milk" + , "category": "Food & Drink" + , "aliases": [ + "milk_glass" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "☕" + , "description": "hot beverage" + , "category": "Food & Drink" + , "aliases": [ + "coffee" + ] + , "tags": [ + "cafe" + , "espresso" + ] + , "unicode_version": "4.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍵" + , "description": "teacup without handle" + , "category": "Food & Drink" + , "aliases": [ + "tea" + ] + , "tags": [ + "green" + , "breakfast" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍶" + , "description": "sake" + , "category": "Food & Drink" + , "aliases": [ + "sake" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍾" + , "description": "bottle with popping cork" + , "category": "Food & Drink" + , "aliases": [ + "champagne" + ] + , "tags": [ + "bottle" + , "bubbly" + , "celebration" + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "🍷" + , "description": "wine glass" + , "category": "Food & Drink" + , "aliases": [ + "wine_glass" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍸" + , "description": "cocktail glass" + , "category": "Food & Drink" + , "aliases": [ + "cocktail" + ] + , "tags": [ + "drink" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍹" + , "description": "tropical drink" + , "category": "Food & Drink" + , "aliases": [ + "tropical_drink" + ] + , "tags": [ + "summer" + , "vacation" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍺" + , "description": "beer mug" + , "category": "Food & Drink" + , "aliases": [ + "beer" + ] + , "tags": [ + "drink" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🍻" + , "description": "clinking beer mugs" + , "category": "Food & Drink" + , "aliases": [ + "beers" + ] + , "tags": [ + "drinks" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🥂" + , "description": "clinking glasses" + , "category": "Food & Drink" + , "aliases": [ + "clinking_glasses" + ] + , "tags": [ + "cheers" + , "toast" + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🥃" + , "description": "tumbler glass" + , "category": "Food & Drink" + , "aliases": [ + "tumbler_glass" + ] + , "tags": [ + "whisky" + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🥤" + , "description": "cup with straw" + , "category": "Food & Drink" + , "aliases": [ + "cup_with_straw" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🧃" + , "description": "beverage box" + , "category": "Food & Drink" + , "aliases": [ + "beverage_box" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🧉" + , "description": "mate" + , "category": "Food & Drink" + , "aliases": [ + "mate" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🧊" + , "description": "ice cube" + , "category": "Food & Drink" + , "aliases": [ + "ice_cube" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🥢" + , "description": "chopsticks" + , "category": "Food & Drink" + , "aliases": [ + "chopsticks" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🍽" + , "description": "fork and knife with plate" + , "category": "Food & Drink" + , "aliases": [ + "plate_with_cutlery" + ] + , "tags": [ + "dining" + , "dinner" + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🍴" + , "description": "fork and knife" + , "category": "Food & Drink" + , "aliases": [ + "fork_and_knife" + ] + , "tags": [ + "cutlery" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🥄" + , "description": "spoon" + , "category": "Food & Drink" + , "aliases": [ + "spoon" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🔪" + , "description": "kitchen knife" + , "category": "Food & Drink" + , "aliases": [ + "hocho" + , "knife" + ] + , "tags": [ + "cut" + , "chop" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🏺" + , "description": "amphora" + , "category": "Food & Drink" + , "aliases": [ + "amphora" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "🌍" + , "description": "globe showing Europe-Africa" + , "category": "Travel & Places" + , "aliases": [ + "earth_africa" + ] + , "tags": [ + "globe" + , "world" + , "international" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🌎" + , "description": "globe showing Americas" + , "category": "Travel & Places" + , "aliases": [ + "earth_americas" + ] + , "tags": [ + "globe" + , "world" + , "international" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🌏" + , "description": "globe showing Asia-Australia" + , "category": "Travel & Places" + , "aliases": [ + "earth_asia" + ] + , "tags": [ + "globe" + , "world" + , "international" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🌐" + , "description": "globe with meridians" + , "category": "Travel & Places" + , "aliases": [ + "globe_with_meridians" + ] + , "tags": [ + "world" + , "global" + , "international" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🗺" + , "description": "world map" + , "category": "Travel & Places" + , "aliases": [ + "world_map" + ] + , "tags": [ + "travel" + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🗾" + , "description": "map of Japan" + , "category": "Travel & Places" + , "aliases": [ + "japan" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🧭" + , "description": "compass" + , "category": "Travel & Places" + , "aliases": [ + "compass" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🏔" + , "description": "snow-capped mountain" + , "category": "Travel & Places" + , "aliases": [ + "mountain_snow" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "⛰" + , "description": "mountain" + , "category": "Travel & Places" + , "aliases": [ + "mountain" + ] + , "tags": [ + ] + , "unicode_version": "5.2" + , "ios_version": "9.1" + } +, { + "emoji": "🌋" + , "description": "volcano" + , "category": "Travel & Places" + , "aliases": [ + "volcano" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🗻" + , "description": "mount fuji" + , "category": "Travel & Places" + , "aliases": [ + "mount_fuji" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🏕" + , "description": "camping" + , "category": "Travel & Places" + , "aliases": [ + "camping" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🏖" + , "description": "beach with umbrella" + , "category": "Travel & Places" + , "aliases": [ + "beach_umbrella" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🏜" + , "description": "desert" + , "category": "Travel & Places" + , "aliases": [ + "desert" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🏝" + , "description": "desert island" + , "category": "Travel & Places" + , "aliases": [ + "desert_island" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🏞" + , "description": "national park" + , "category": "Travel & Places" + , "aliases": [ + "national_park" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🏟" + , "description": "stadium" + , "category": "Travel & Places" + , "aliases": [ + "stadium" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🏛" + , "description": "classical building" + , "category": "Travel & Places" + , "aliases": [ + "classical_building" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🏗" + , "description": "building construction" + , "category": "Travel & Places" + , "aliases": [ + "building_construction" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🧱" + , "description": "brick" + , "category": "Travel & Places" + , "aliases": [ + "bricks" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🏘" + , "description": "houses" + , "category": "Travel & Places" + , "aliases": [ + "houses" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🏚" + , "description": "derelict house" + , "category": "Travel & Places" + , "aliases": [ + "derelict_house" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🏠" + , "description": "house" + , "category": "Travel & Places" + , "aliases": [ + "house" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🏡" + , "description": "house with garden" + , "category": "Travel & Places" + , "aliases": [ + "house_with_garden" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🏢" + , "description": "office building" + , "category": "Travel & Places" + , "aliases": [ + "office" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🏣" + , "description": "Japanese post office" + , "category": "Travel & Places" + , "aliases": [ + "post_office" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🏤" + , "description": "post office" + , "category": "Travel & Places" + , "aliases": [ + "european_post_office" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🏥" + , "description": "hospital" + , "category": "Travel & Places" + , "aliases": [ + "hospital" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🏦" + , "description": "bank" + , "category": "Travel & Places" + , "aliases": [ + "bank" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🏨" + , "description": "hotel" + , "category": "Travel & Places" + , "aliases": [ + "hotel" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🏩" + , "description": "love hotel" + , "category": "Travel & Places" + , "aliases": [ + "love_hotel" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🏪" + , "description": "convenience store" + , "category": "Travel & Places" + , "aliases": [ + "convenience_store" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🏫" + , "description": "school" + , "category": "Travel & Places" + , "aliases": [ + "school" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🏬" + , "description": "department store" + , "category": "Travel & Places" + , "aliases": [ + "department_store" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🏭" + , "description": "factory" + , "category": "Travel & Places" + , "aliases": [ + "factory" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🏯" + , "description": "Japanese castle" + , "category": "Travel & Places" + , "aliases": [ + "japanese_castle" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🏰" + , "description": "castle" + , "category": "Travel & Places" + , "aliases": [ + "european_castle" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "💒" + , "description": "wedding" + , "category": "Travel & Places" + , "aliases": [ + "wedding" + ] + , "tags": [ + "marriage" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🗼" + , "description": "Tokyo tower" + , "category": "Travel & Places" + , "aliases": [ + "tokyo_tower" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🗽" + , "description": "Statue of Liberty" + , "category": "Travel & Places" + , "aliases": [ + "statue_of_liberty" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "⛪" + , "description": "church" + , "category": "Travel & Places" + , "aliases": [ + "church" + ] + , "tags": [ + ] + , "unicode_version": "5.2" + , "ios_version": "6.0" + } +, { + "emoji": "🕌" + , "description": "mosque" + , "category": "Travel & Places" + , "aliases": [ + "mosque" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "🛕" + , "description": "hindu temple" + , "category": "Travel & Places" + , "aliases": [ + "hindu_temple" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🕍" + , "description": "synagogue" + , "category": "Travel & Places" + , "aliases": [ + "synagogue" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "⛩" + , "description": "shinto shrine" + , "category": "Travel & Places" + , "aliases": [ + "shinto_shrine" + ] + , "tags": [ + ] + , "unicode_version": "5.2" + , "ios_version": "9.1" + } +, { + "emoji": "🕋" + , "description": "kaaba" + , "category": "Travel & Places" + , "aliases": [ + "kaaba" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "⛲" + , "description": "fountain" + , "category": "Travel & Places" + , "aliases": [ + "fountain" + ] + , "tags": [ + ] + , "unicode_version": "5.2" + , "ios_version": "6.0" + } +, { + "emoji": "⛺" + , "description": "tent" + , "category": "Travel & Places" + , "aliases": [ + "tent" + ] + , "tags": [ + "camping" + ] + , "unicode_version": "5.2" + , "ios_version": "6.0" + } +, { + "emoji": "🌁" + , "description": "foggy" + , "category": "Travel & Places" + , "aliases": [ + "foggy" + ] + , "tags": [ + "karl" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🌃" + , "description": "night with stars" + , "category": "Travel & Places" + , "aliases": [ + "night_with_stars" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🏙" + , "description": "cityscape" + , "category": "Travel & Places" + , "aliases": [ + "cityscape" + ] + , "tags": [ + "skyline" + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🌄" + , "description": "sunrise over mountains" + , "category": "Travel & Places" + , "aliases": [ + "sunrise_over_mountains" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🌅" + , "description": "sunrise" + , "category": "Travel & Places" + , "aliases": [ + "sunrise" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🌆" + , "description": "cityscape at dusk" + , "category": "Travel & Places" + , "aliases": [ + "city_sunset" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🌇" + , "description": "sunset" + , "category": "Travel & Places" + , "aliases": [ + "city_sunrise" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🌉" + , "description": "bridge at night" + , "category": "Travel & Places" + , "aliases": [ + "bridge_at_night" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "♨️" + , "description": "hot springs" + , "category": "Travel & Places" + , "aliases": [ + "hotsprings" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "🎠" + , "description": "carousel horse" + , "category": "Travel & Places" + , "aliases": [ + "carousel_horse" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🎡" + , "description": "ferris wheel" + , "category": "Travel & Places" + , "aliases": [ + "ferris_wheel" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🎢" + , "description": "roller coaster" + , "category": "Travel & Places" + , "aliases": [ + "roller_coaster" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "💈" + , "description": "barber pole" + , "category": "Travel & Places" + , "aliases": [ + "barber" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🎪" + , "description": "circus tent" + , "category": "Travel & Places" + , "aliases": [ + "circus_tent" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚂" + , "description": "locomotive" + , "category": "Travel & Places" + , "aliases": [ + "steam_locomotive" + ] + , "tags": [ + "train" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚃" + , "description": "railway car" + , "category": "Travel & Places" + , "aliases": [ + "railway_car" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚄" + , "description": "high-speed train" + , "category": "Travel & Places" + , "aliases": [ + "bullettrain_side" + ] + , "tags": [ + "train" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚅" + , "description": "bullet train" + , "category": "Travel & Places" + , "aliases": [ + "bullettrain_front" + ] + , "tags": [ + "train" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚆" + , "description": "train" + , "category": "Travel & Places" + , "aliases": [ + "train2" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚇" + , "description": "metro" + , "category": "Travel & Places" + , "aliases": [ + "metro" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚈" + , "description": "light rail" + , "category": "Travel & Places" + , "aliases": [ + "light_rail" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚉" + , "description": "station" + , "category": "Travel & Places" + , "aliases": [ + "station" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚊" + , "description": "tram" + , "category": "Travel & Places" + , "aliases": [ + "tram" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚝" + , "description": "monorail" + , "category": "Travel & Places" + , "aliases": [ + "monorail" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚞" + , "description": "mountain railway" + , "category": "Travel & Places" + , "aliases": [ + "mountain_railway" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚋" + , "description": "tram car" + , "category": "Travel & Places" + , "aliases": [ + "train" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚌" + , "description": "bus" + , "category": "Travel & Places" + , "aliases": [ + "bus" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚍" + , "description": "oncoming bus" + , "category": "Travel & Places" + , "aliases": [ + "oncoming_bus" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚎" + , "description": "trolleybus" + , "category": "Travel & Places" + , "aliases": [ + "trolleybus" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚐" + , "description": "minibus" + , "category": "Travel & Places" + , "aliases": [ + "minibus" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚑" + , "description": "ambulance" + , "category": "Travel & Places" + , "aliases": [ + "ambulance" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚒" + , "description": "fire engine" + , "category": "Travel & Places" + , "aliases": [ + "fire_engine" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚓" + , "description": "police car" + , "category": "Travel & Places" + , "aliases": [ + "police_car" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚔" + , "description": "oncoming police car" + , "category": "Travel & Places" + , "aliases": [ + "oncoming_police_car" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚕" + , "description": "taxi" + , "category": "Travel & Places" + , "aliases": [ + "taxi" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚖" + , "description": "oncoming taxi" + , "category": "Travel & Places" + , "aliases": [ + "oncoming_taxi" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚗" + , "description": "automobile" + , "category": "Travel & Places" + , "aliases": [ + "car" + , "red_car" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚘" + , "description": "oncoming automobile" + , "category": "Travel & Places" + , "aliases": [ + "oncoming_automobile" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚙" + , "description": "sport utility vehicle" + , "category": "Travel & Places" + , "aliases": [ + "blue_car" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚚" + , "description": "delivery truck" + , "category": "Travel & Places" + , "aliases": [ + "truck" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚛" + , "description": "articulated lorry" + , "category": "Travel & Places" + , "aliases": [ + "articulated_lorry" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚜" + , "description": "tractor" + , "category": "Travel & Places" + , "aliases": [ + "tractor" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🏎" + , "description": "racing car" + , "category": "Travel & Places" + , "aliases": [ + "racing_car" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🏍" + , "description": "motorcycle" + , "category": "Travel & Places" + , "aliases": [ + "motorcycle" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🛵" + , "description": "motor scooter" + , "category": "Travel & Places" + , "aliases": [ + "motor_scooter" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🦽" + , "description": "manual wheelchair" + , "category": "Travel & Places" + , "aliases": [ + "manual_wheelchair" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🦼" + , "description": "motorized wheelchair" + , "category": "Travel & Places" + , "aliases": [ + "motorized_wheelchair" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🛺" + , "description": "auto rickshaw" + , "category": "Travel & Places" + , "aliases": [ + "auto_rickshaw" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🚲" + , "description": "bicycle" + , "category": "Travel & Places" + , "aliases": [ + "bike" + ] + , "tags": [ + "bicycle" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🛴" + , "description": "kick scooter" + , "category": "Travel & Places" + , "aliases": [ + "kick_scooter" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🛹" + , "description": "skateboard" + , "category": "Travel & Places" + , "aliases": [ + "skateboard" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🚏" + , "description": "bus stop" + , "category": "Travel & Places" + , "aliases": [ + "busstop" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🛣" + , "description": "motorway" + , "category": "Travel & Places" + , "aliases": [ + "motorway" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🛤" + , "description": "railway track" + , "category": "Travel & Places" + , "aliases": [ + "railway_track" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🛢" + , "description": "oil drum" + , "category": "Travel & Places" + , "aliases": [ + "oil_drum" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "⛽" + , "description": "fuel pump" + , "category": "Travel & Places" + , "aliases": [ + "fuelpump" + ] + , "tags": [ + ] + , "unicode_version": "5.2" + , "ios_version": "6.0" + } +, { + "emoji": "🚨" + , "description": "police car light" + , "category": "Travel & Places" + , "aliases": [ + "rotating_light" + ] + , "tags": [ + "911" + , "emergency" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚥" + , "description": "horizontal traffic light" + , "category": "Travel & Places" + , "aliases": [ + "traffic_light" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚦" + , "description": "vertical traffic light" + , "category": "Travel & Places" + , "aliases": [ + "vertical_traffic_light" + ] + , "tags": [ + "semaphore" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🛑" + , "description": "stop sign" + , "category": "Travel & Places" + , "aliases": [ + "stop_sign" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🚧" + , "description": "construction" + , "category": "Travel & Places" + , "aliases": [ + "construction" + ] + , "tags": [ + "wip" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "⚓" + , "description": "anchor" + , "category": "Travel & Places" + , "aliases": [ + "anchor" + ] + , "tags": [ + "ship" + ] + , "unicode_version": "4.1" + , "ios_version": "6.0" + } +, { + "emoji": "⛵" + , "description": "sailboat" + , "category": "Travel & Places" + , "aliases": [ + "boat" + , "sailboat" + ] + , "tags": [ + ] + , "unicode_version": "5.2" + , "ios_version": "6.0" + } +, { + "emoji": "🛶" + , "description": "canoe" + , "category": "Travel & Places" + , "aliases": [ + "canoe" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🚤" + , "description": "speedboat" + , "category": "Travel & Places" + , "aliases": [ + "speedboat" + ] + , "tags": [ + "ship" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🛳" + , "description": "passenger ship" + , "category": "Travel & Places" + , "aliases": [ + "passenger_ship" + ] + , "tags": [ + "cruise" + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "⛴" + , "description": "ferry" + , "category": "Travel & Places" + , "aliases": [ + "ferry" + ] + , "tags": [ + ] + , "unicode_version": "5.2" + , "ios_version": "9.1" + } +, { + "emoji": "🛥" + , "description": "motor boat" + , "category": "Travel & Places" + , "aliases": [ + "motor_boat" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🚢" + , "description": "ship" + , "category": "Travel & Places" + , "aliases": [ + "ship" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "✈️" + , "description": "airplane" + , "category": "Travel & Places" + , "aliases": [ + "airplane" + ] + , "tags": [ + "flight" + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "🛩" + , "description": "small airplane" + , "category": "Travel & Places" + , "aliases": [ + "small_airplane" + ] + , "tags": [ + "flight" + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🛫" + , "description": "airplane departure" + , "category": "Travel & Places" + , "aliases": [ + "flight_departure" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🛬" + , "description": "airplane arrival" + , "category": "Travel & Places" + , "aliases": [ + "flight_arrival" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🪂" + , "description": "parachute" + , "category": "Travel & Places" + , "aliases": [ + "parachute" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "💺" + , "description": "seat" + , "category": "Travel & Places" + , "aliases": [ + "seat" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚁" + , "description": "helicopter" + , "category": "Travel & Places" + , "aliases": [ + "helicopter" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚟" + , "description": "suspension railway" + , "category": "Travel & Places" + , "aliases": [ + "suspension_railway" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚠" + , "description": "mountain cableway" + , "category": "Travel & Places" + , "aliases": [ + "mountain_cableway" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚡" + , "description": "aerial tramway" + , "category": "Travel & Places" + , "aliases": [ + "aerial_tramway" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🛰" + , "description": "satellite" + , "category": "Travel & Places" + , "aliases": [ + "artificial_satellite" + ] + , "tags": [ + "orbit" + , "space" + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🚀" + , "description": "rocket" + , "category": "Travel & Places" + , "aliases": [ + "rocket" + ] + , "tags": [ + "ship" + , "launch" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🛸" + , "description": "flying saucer" + , "category": "Travel & Places" + , "aliases": [ + "flying_saucer" + ] + , "tags": [ + "ufo" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🛎" + , "description": "bellhop bell" + , "category": "Travel & Places" + , "aliases": [ + "bellhop_bell" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🧳" + , "description": "luggage" + , "category": "Travel & Places" + , "aliases": [ + "luggage" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "⌛" + , "description": "hourglass done" + , "category": "Travel & Places" + , "aliases": [ + "hourglass" + ] + , "tags": [ + "time" + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "⏳" + , "description": "hourglass not done" + , "category": "Travel & Places" + , "aliases": [ + "hourglass_flowing_sand" + ] + , "tags": [ + "time" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "⌚" + , "description": "watch" + , "category": "Travel & Places" + , "aliases": [ + "watch" + ] + , "tags": [ + "time" + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "⏰" + , "description": "alarm clock" + , "category": "Travel & Places" + , "aliases": [ + "alarm_clock" + ] + , "tags": [ + "morning" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "⏱" + , "description": "stopwatch" + , "category": "Travel & Places" + , "aliases": [ + "stopwatch" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.1" + } +, { + "emoji": "⏲" + , "description": "timer clock" + , "category": "Travel & Places" + , "aliases": [ + "timer_clock" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.1" + } +, { + "emoji": "🕰" + , "description": "mantelpiece clock" + , "category": "Travel & Places" + , "aliases": [ + "mantelpiece_clock" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🕛" + , "description": "twelve o’clock" + , "category": "Travel & Places" + , "aliases": [ + "clock12" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🕧" + , "description": "twelve-thirty" + , "category": "Travel & Places" + , "aliases": [ + "clock1230" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🕐" + , "description": "one o’clock" + , "category": "Travel & Places" + , "aliases": [ + "clock1" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🕜" + , "description": "one-thirty" + , "category": "Travel & Places" + , "aliases": [ + "clock130" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🕑" + , "description": "two o’clock" + , "category": "Travel & Places" + , "aliases": [ + "clock2" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🕝" + , "description": "two-thirty" + , "category": "Travel & Places" + , "aliases": [ + "clock230" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🕒" + , "description": "three o’clock" + , "category": "Travel & Places" + , "aliases": [ + "clock3" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🕞" + , "description": "three-thirty" + , "category": "Travel & Places" + , "aliases": [ + "clock330" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🕓" + , "description": "four o’clock" + , "category": "Travel & Places" + , "aliases": [ + "clock4" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🕟" + , "description": "four-thirty" + , "category": "Travel & Places" + , "aliases": [ + "clock430" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🕔" + , "description": "five o’clock" + , "category": "Travel & Places" + , "aliases": [ + "clock5" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🕠" + , "description": "five-thirty" + , "category": "Travel & Places" + , "aliases": [ + "clock530" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🕕" + , "description": "six o’clock" + , "category": "Travel & Places" + , "aliases": [ + "clock6" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🕡" + , "description": "six-thirty" + , "category": "Travel & Places" + , "aliases": [ + "clock630" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🕖" + , "description": "seven o’clock" + , "category": "Travel & Places" + , "aliases": [ + "clock7" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🕢" + , "description": "seven-thirty" + , "category": "Travel & Places" + , "aliases": [ + "clock730" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🕗" + , "description": "eight o’clock" + , "category": "Travel & Places" + , "aliases": [ + "clock8" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🕣" + , "description": "eight-thirty" + , "category": "Travel & Places" + , "aliases": [ + "clock830" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🕘" + , "description": "nine o’clock" + , "category": "Travel & Places" + , "aliases": [ + "clock9" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🕤" + , "description": "nine-thirty" + , "category": "Travel & Places" + , "aliases": [ + "clock930" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🕙" + , "description": "ten o’clock" + , "category": "Travel & Places" + , "aliases": [ + "clock10" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🕥" + , "description": "ten-thirty" + , "category": "Travel & Places" + , "aliases": [ + "clock1030" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🕚" + , "description": "eleven o’clock" + , "category": "Travel & Places" + , "aliases": [ + "clock11" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🕦" + , "description": "eleven-thirty" + , "category": "Travel & Places" + , "aliases": [ + "clock1130" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🌑" + , "description": "new moon" + , "category": "Travel & Places" + , "aliases": [ + "new_moon" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🌒" + , "description": "waxing crescent moon" + , "category": "Travel & Places" + , "aliases": [ + "waxing_crescent_moon" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🌓" + , "description": "first quarter moon" + , "category": "Travel & Places" + , "aliases": [ + "first_quarter_moon" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🌔" + , "description": "waxing gibbous moon" + , "category": "Travel & Places" + , "aliases": [ + "moon" + , "waxing_gibbous_moon" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🌕" + , "description": "full moon" + , "category": "Travel & Places" + , "aliases": [ + "full_moon" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🌖" + , "description": "waning gibbous moon" + , "category": "Travel & Places" + , "aliases": [ + "waning_gibbous_moon" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🌗" + , "description": "last quarter moon" + , "category": "Travel & Places" + , "aliases": [ + "last_quarter_moon" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🌘" + , "description": "waning crescent moon" + , "category": "Travel & Places" + , "aliases": [ + "waning_crescent_moon" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🌙" + , "description": "crescent moon" + , "category": "Travel & Places" + , "aliases": [ + "crescent_moon" + ] + , "tags": [ + "night" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🌚" + , "description": "new moon face" + , "category": "Travel & Places" + , "aliases": [ + "new_moon_with_face" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🌛" + , "description": "first quarter moon face" + , "category": "Travel & Places" + , "aliases": [ + "first_quarter_moon_with_face" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🌜" + , "description": "last quarter moon face" + , "category": "Travel & Places" + , "aliases": [ + "last_quarter_moon_with_face" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🌡" + , "description": "thermometer" + , "category": "Travel & Places" + , "aliases": [ + "thermometer" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "☀️" + , "description": "sun" + , "category": "Travel & Places" + , "aliases": [ + "sunny" + ] + , "tags": [ + "weather" + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "🌝" + , "description": "full moon face" + , "category": "Travel & Places" + , "aliases": [ + "full_moon_with_face" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🌞" + , "description": "sun with face" + , "category": "Travel & Places" + , "aliases": [ + "sun_with_face" + ] + , "tags": [ + "summer" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🪐" + , "description": "ringed planet" + , "category": "Travel & Places" + , "aliases": [ + "ringed_planet" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "⭐" + , "description": "star" + , "category": "Travel & Places" + , "aliases": [ + "star" + ] + , "tags": [ + ] + , "unicode_version": "5.1" + , "ios_version": "6.0" + } +, { + "emoji": "🌟" + , "description": "glowing star" + , "category": "Travel & Places" + , "aliases": [ + "star2" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🌠" + , "description": "shooting star" + , "category": "Travel & Places" + , "aliases": [ + "stars" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🌌" + , "description": "milky way" + , "category": "Travel & Places" + , "aliases": [ + "milky_way" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "☁️" + , "description": "cloud" + , "category": "Travel & Places" + , "aliases": [ + "cloud" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "⛅" + , "description": "sun behind cloud" + , "category": "Travel & Places" + , "aliases": [ + "partly_sunny" + ] + , "tags": [ + "weather" + , "cloud" + ] + , "unicode_version": "5.2" + , "ios_version": "6.0" + } +, { + "emoji": "⛈" + , "description": "cloud with lightning and rain" + , "category": "Travel & Places" + , "aliases": [ + "cloud_with_lightning_and_rain" + ] + , "tags": [ + ] + , "unicode_version": "5.2" + , "ios_version": "9.1" + } +, { + "emoji": "🌤" + , "description": "sun behind small cloud" + , "category": "Travel & Places" + , "aliases": [ + "sun_behind_small_cloud" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🌥" + , "description": "sun behind large cloud" + , "category": "Travel & Places" + , "aliases": [ + "sun_behind_large_cloud" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🌦" + , "description": "sun behind rain cloud" + , "category": "Travel & Places" + , "aliases": [ + "sun_behind_rain_cloud" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🌧" + , "description": "cloud with rain" + , "category": "Travel & Places" + , "aliases": [ + "cloud_with_rain" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🌨" + , "description": "cloud with snow" + , "category": "Travel & Places" + , "aliases": [ + "cloud_with_snow" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🌩" + , "description": "cloud with lightning" + , "category": "Travel & Places" + , "aliases": [ + "cloud_with_lightning" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🌪" + , "description": "tornado" + , "category": "Travel & Places" + , "aliases": [ + "tornado" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🌫" + , "description": "fog" + , "category": "Travel & Places" + , "aliases": [ + "fog" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🌬" + , "description": "wind face" + , "category": "Travel & Places" + , "aliases": [ + "wind_face" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🌀" + , "description": "cyclone" + , "category": "Travel & Places" + , "aliases": [ + "cyclone" + ] + , "tags": [ + "swirl" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🌈" + , "description": "rainbow" + , "category": "Travel & Places" + , "aliases": [ + "rainbow" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🌂" + , "description": "closed umbrella" + , "category": "Travel & Places" + , "aliases": [ + "closed_umbrella" + ] + , "tags": [ + "weather" + , "rain" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "☂️" + , "description": "umbrella" + , "category": "Travel & Places" + , "aliases": [ + "open_umbrella" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "9.1" + } +, { + "emoji": "☔" + , "description": "umbrella with rain drops" + , "category": "Travel & Places" + , "aliases": [ + "umbrella" + ] + , "tags": [ + "rain" + , "weather" + ] + , "unicode_version": "4.0" + , "ios_version": "6.0" + } +, { + "emoji": "⛱" + , "description": "umbrella on ground" + , "category": "Travel & Places" + , "aliases": [ + "parasol_on_ground" + ] + , "tags": [ + "beach_umbrella" + ] + , "unicode_version": "5.2" + , "ios_version": "9.1" + } +, { + "emoji": "⚡" + , "description": "high voltage" + , "category": "Travel & Places" + , "aliases": [ + "zap" + ] + , "tags": [ + "lightning" + , "thunder" + ] + , "unicode_version": "4.0" + , "ios_version": "6.0" + } +, { + "emoji": "❄️" + , "description": "snowflake" + , "category": "Travel & Places" + , "aliases": [ + "snowflake" + ] + , "tags": [ + "winter" + , "cold" + , "weather" + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "☃️" + , "description": "snowman" + , "category": "Travel & Places" + , "aliases": [ + "snowman_with_snow" + ] + , "tags": [ + "winter" + , "christmas" + ] + , "unicode_version": "" + , "ios_version": "9.1" + } +, { + "emoji": "⛄" + , "description": "snowman without snow" + , "category": "Travel & Places" + , "aliases": [ + "snowman" + ] + , "tags": [ + "winter" + ] + , "unicode_version": "5.2" + , "ios_version": "6.0" + } +, { + "emoji": "☄" + , "description": "comet" + , "category": "Travel & Places" + , "aliases": [ + "comet" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "9.1" + } +, { + "emoji": "🔥" + , "description": "fire" + , "category": "Travel & Places" + , "aliases": [ + "fire" + ] + , "tags": [ + "burn" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "💧" + , "description": "droplet" + , "category": "Travel & Places" + , "aliases": [ + "droplet" + ] + , "tags": [ + "water" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🌊" + , "description": "water wave" + , "category": "Travel & Places" + , "aliases": [ + "ocean" + ] + , "tags": [ + "sea" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🎃" + , "description": "jack-o-lantern" + , "category": "Activities" + , "aliases": [ + "jack_o_lantern" + ] + , "tags": [ + "halloween" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🎄" + , "description": "Christmas tree" + , "category": "Activities" + , "aliases": [ + "christmas_tree" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🎆" + , "description": "fireworks" + , "category": "Activities" + , "aliases": [ + "fireworks" + ] + , "tags": [ + "festival" + , "celebration" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🎇" + , "description": "sparkler" + , "category": "Activities" + , "aliases": [ + "sparkler" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🧨" + , "description": "firecracker" + , "category": "Activities" + , "aliases": [ + "firecracker" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "✨" + , "description": "sparkles" + , "category": "Activities" + , "aliases": [ + "sparkles" + ] + , "tags": [ + "shiny" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🎈" + , "description": "balloon" + , "category": "Activities" + , "aliases": [ + "balloon" + ] + , "tags": [ + "party" + , "birthday" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🎉" + , "description": "party popper" + , "category": "Activities" + , "aliases": [ + "tada" + ] + , "tags": [ + "hooray" + , "party" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🎊" + , "description": "confetti ball" + , "category": "Activities" + , "aliases": [ + "confetti_ball" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🎋" + , "description": "tanabata tree" + , "category": "Activities" + , "aliases": [ + "tanabata_tree" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🎍" + , "description": "pine decoration" + , "category": "Activities" + , "aliases": [ + "bamboo" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🎎" + , "description": "Japanese dolls" + , "category": "Activities" + , "aliases": [ + "dolls" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🎏" + , "description": "carp streamer" + , "category": "Activities" + , "aliases": [ + "flags" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🎐" + , "description": "wind chime" + , "category": "Activities" + , "aliases": [ + "wind_chime" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🎑" + , "description": "moon viewing ceremony" + , "category": "Activities" + , "aliases": [ + "rice_scene" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🧧" + , "description": "red envelope" + , "category": "Activities" + , "aliases": [ + "red_envelope" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🎀" + , "description": "ribbon" + , "category": "Activities" + , "aliases": [ + "ribbon" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🎁" + , "description": "wrapped gift" + , "category": "Activities" + , "aliases": [ + "gift" + ] + , "tags": [ + "present" + , "birthday" + , "christmas" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🎗" + , "description": "reminder ribbon" + , "category": "Activities" + , "aliases": [ + "reminder_ribbon" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🎟" + , "description": "admission tickets" + , "category": "Activities" + , "aliases": [ + "tickets" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🎫" + , "description": "ticket" + , "category": "Activities" + , "aliases": [ + "ticket" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🎖" + , "description": "military medal" + , "category": "Activities" + , "aliases": [ + "medal_military" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🏆" + , "description": "trophy" + , "category": "Activities" + , "aliases": [ + "trophy" + ] + , "tags": [ + "award" + , "contest" + , "winner" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🏅" + , "description": "sports medal" + , "category": "Activities" + , "aliases": [ + "medal_sports" + ] + , "tags": [ + "gold" + , "winner" + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🥇" + , "description": "1st place medal" + , "category": "Activities" + , "aliases": [ + "1st_place_medal" + ] + , "tags": [ + "gold" + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🥈" + , "description": "2nd place medal" + , "category": "Activities" + , "aliases": [ + "2nd_place_medal" + ] + , "tags": [ + "silver" + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🥉" + , "description": "3rd place medal" + , "category": "Activities" + , "aliases": [ + "3rd_place_medal" + ] + , "tags": [ + "bronze" + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "⚽" + , "description": "soccer ball" + , "category": "Activities" + , "aliases": [ + "soccer" + ] + , "tags": [ + "sports" + ] + , "unicode_version": "5.2" + , "ios_version": "6.0" + } +, { + "emoji": "⚾" + , "description": "baseball" + , "category": "Activities" + , "aliases": [ + "baseball" + ] + , "tags": [ + "sports" + ] + , "unicode_version": "5.2" + , "ios_version": "6.0" + } +, { + "emoji": "🥎" + , "description": "softball" + , "category": "Activities" + , "aliases": [ + "softball" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🏀" + , "description": "basketball" + , "category": "Activities" + , "aliases": [ + "basketball" + ] + , "tags": [ + "sports" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🏐" + , "description": "volleyball" + , "category": "Activities" + , "aliases": [ + "volleyball" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "🏈" + , "description": "american football" + , "category": "Activities" + , "aliases": [ + "football" + ] + , "tags": [ + "sports" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🏉" + , "description": "rugby football" + , "category": "Activities" + , "aliases": [ + "rugby_football" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🎾" + , "description": "tennis" + , "category": "Activities" + , "aliases": [ + "tennis" + ] + , "tags": [ + "sports" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🥏" + , "description": "flying disc" + , "category": "Activities" + , "aliases": [ + "flying_disc" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🎳" + , "description": "bowling" + , "category": "Activities" + , "aliases": [ + "bowling" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🏏" + , "description": "cricket game" + , "category": "Activities" + , "aliases": [ + "cricket_game" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "🏑" + , "description": "field hockey" + , "category": "Activities" + , "aliases": [ + "field_hockey" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "🏒" + , "description": "ice hockey" + , "category": "Activities" + , "aliases": [ + "ice_hockey" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "🥍" + , "description": "lacrosse" + , "category": "Activities" + , "aliases": [ + "lacrosse" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🏓" + , "description": "ping pong" + , "category": "Activities" + , "aliases": [ + "ping_pong" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "🏸" + , "description": "badminton" + , "category": "Activities" + , "aliases": [ + "badminton" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "🥊" + , "description": "boxing glove" + , "category": "Activities" + , "aliases": [ + "boxing_glove" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🥋" + , "description": "martial arts uniform" + , "category": "Activities" + , "aliases": [ + "martial_arts_uniform" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🥅" + , "description": "goal net" + , "category": "Activities" + , "aliases": [ + "goal_net" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "⛳" + , "description": "flag in hole" + , "category": "Activities" + , "aliases": [ + "golf" + ] + , "tags": [ + ] + , "unicode_version": "5.2" + , "ios_version": "6.0" + } +, { + "emoji": "⛸" + , "description": "ice skate" + , "category": "Activities" + , "aliases": [ + "ice_skate" + ] + , "tags": [ + "skating" + ] + , "unicode_version": "5.2" + , "ios_version": "9.1" + } +, { + "emoji": "🎣" + , "description": "fishing pole" + , "category": "Activities" + , "aliases": [ + "fishing_pole_and_fish" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🤿" + , "description": "diving mask" + , "category": "Activities" + , "aliases": [ + "diving_mask" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🎽" + , "description": "running shirt" + , "category": "Activities" + , "aliases": [ + "running_shirt_with_sash" + ] + , "tags": [ + "marathon" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🎿" + , "description": "skis" + , "category": "Activities" + , "aliases": [ + "ski" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🛷" + , "description": "sled" + , "category": "Activities" + , "aliases": [ + "sled" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🥌" + , "description": "curling stone" + , "category": "Activities" + , "aliases": [ + "curling_stone" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🎯" + , "description": "direct hit" + , "category": "Activities" + , "aliases": [ + "dart" + ] + , "tags": [ + "target" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🪀" + , "description": "yo-yo" + , "category": "Activities" + , "aliases": [ + "yo_yo" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🪁" + , "description": "kite" + , "category": "Activities" + , "aliases": [ + "kite" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🎱" + , "description": "pool 8 ball" + , "category": "Activities" + , "aliases": [ + "8ball" + ] + , "tags": [ + "pool" + , "billiards" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔮" + , "description": "crystal ball" + , "category": "Activities" + , "aliases": [ + "crystal_ball" + ] + , "tags": [ + "fortune" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🧿" + , "description": "nazar amulet" + , "category": "Activities" + , "aliases": [ + "nazar_amulet" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🎮" + , "description": "video game" + , "category": "Activities" + , "aliases": [ + "video_game" + ] + , "tags": [ + "play" + , "controller" + , "console" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🕹" + , "description": "joystick" + , "category": "Activities" + , "aliases": [ + "joystick" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🎰" + , "description": "slot machine" + , "category": "Activities" + , "aliases": [ + "slot_machine" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🎲" + , "description": "game die" + , "category": "Activities" + , "aliases": [ + "game_die" + ] + , "tags": [ + "dice" + , "gambling" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🧩" + , "description": "puzzle piece" + , "category": "Activities" + , "aliases": [ + "jigsaw" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🧸" + , "description": "teddy bear" + , "category": "Activities" + , "aliases": [ + "teddy_bear" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "♠️" + , "description": "spade suit" + , "category": "Activities" + , "aliases": [ + "spades" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "♥️" + , "description": "heart suit" + , "category": "Activities" + , "aliases": [ + "hearts" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "♦️" + , "description": "diamond suit" + , "category": "Activities" + , "aliases": [ + "diamonds" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "♣️" + , "description": "club suit" + , "category": "Activities" + , "aliases": [ + "clubs" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "♟" + , "description": "chess pawn" + , "category": "Activities" + , "aliases": [ + "chess_pawn" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🃏" + , "description": "joker" + , "category": "Activities" + , "aliases": [ + "black_joker" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🀄" + , "description": "mahjong red dragon" + , "category": "Activities" + , "aliases": [ + "mahjong" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "🎴" + , "description": "flower playing cards" + , "category": "Activities" + , "aliases": [ + "flower_playing_cards" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🎭" + , "description": "performing arts" + , "category": "Activities" + , "aliases": [ + "performing_arts" + ] + , "tags": [ + "theater" + , "drama" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🖼" + , "description": "framed picture" + , "category": "Activities" + , "aliases": [ + "framed_picture" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🎨" + , "description": "artist palette" + , "category": "Activities" + , "aliases": [ + "art" + ] + , "tags": [ + "design" + , "paint" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🧵" + , "description": "thread" + , "category": "Activities" + , "aliases": [ + "thread" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🧶" + , "description": "yarn" + , "category": "Activities" + , "aliases": [ + "yarn" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "👓" + , "description": "glasses" + , "category": "Objects" + , "aliases": [ + "eyeglasses" + ] + , "tags": [ + "glasses" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🕶" + , "description": "sunglasses" + , "category": "Objects" + , "aliases": [ + "dark_sunglasses" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🥽" + , "description": "goggles" + , "category": "Objects" + , "aliases": [ + "goggles" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🥼" + , "description": "lab coat" + , "category": "Objects" + , "aliases": [ + "lab_coat" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🦺" + , "description": "safety vest" + , "category": "Objects" + , "aliases": [ + "safety_vest" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "👔" + , "description": "necktie" + , "category": "Objects" + , "aliases": [ + "necktie" + ] + , "tags": [ + "shirt" + , "formal" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "👕" + , "description": "t-shirt" + , "category": "Objects" + , "aliases": [ + "shirt" + , "tshirt" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "👖" + , "description": "jeans" + , "category": "Objects" + , "aliases": [ + "jeans" + ] + , "tags": [ + "pants" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🧣" + , "description": "scarf" + , "category": "Objects" + , "aliases": [ + "scarf" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🧤" + , "description": "gloves" + , "category": "Objects" + , "aliases": [ + "gloves" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🧥" + , "description": "coat" + , "category": "Objects" + , "aliases": [ + "coat" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🧦" + , "description": "socks" + , "category": "Objects" + , "aliases": [ + "socks" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "👗" + , "description": "dress" + , "category": "Objects" + , "aliases": [ + "dress" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "👘" + , "description": "kimono" + , "category": "Objects" + , "aliases": [ + "kimono" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🥻" + , "description": "sari" + , "category": "Objects" + , "aliases": [ + "sari" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🩱" + , "description": "one-piece swimsuit" + , "category": "Objects" + , "aliases": [ + "one_piece_swimsuit" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🩲" + , "description": "swim brief" + , "category": "Objects" + , "aliases": [ + "swim_brief" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🩳" + , "description": "shorts" + , "category": "Objects" + , "aliases": [ + "shorts" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "👙" + , "description": "bikini" + , "category": "Objects" + , "aliases": [ + "bikini" + ] + , "tags": [ + "beach" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "👚" + , "description": "woman’s clothes" + , "category": "Objects" + , "aliases": [ + "womans_clothes" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "👛" + , "description": "purse" + , "category": "Objects" + , "aliases": [ + "purse" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "👜" + , "description": "handbag" + , "category": "Objects" + , "aliases": [ + "handbag" + ] + , "tags": [ + "bag" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "👝" + , "description": "clutch bag" + , "category": "Objects" + , "aliases": [ + "pouch" + ] + , "tags": [ + "bag" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🛍" + , "description": "shopping bags" + , "category": "Objects" + , "aliases": [ + "shopping" + ] + , "tags": [ + "bags" + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🎒" + , "description": "backpack" + , "category": "Objects" + , "aliases": [ + "school_satchel" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "👞" + , "description": "man’s shoe" + , "category": "Objects" + , "aliases": [ + "mans_shoe" + , "shoe" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "👟" + , "description": "running shoe" + , "category": "Objects" + , "aliases": [ + "athletic_shoe" + ] + , "tags": [ + "sneaker" + , "sport" + , "running" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🥾" + , "description": "hiking boot" + , "category": "Objects" + , "aliases": [ + "hiking_boot" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🥿" + , "description": "flat shoe" + , "category": "Objects" + , "aliases": [ + "flat_shoe" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "👠" + , "description": "high-heeled shoe" + , "category": "Objects" + , "aliases": [ + "high_heel" + ] + , "tags": [ + "shoe" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "👡" + , "description": "woman’s sandal" + , "category": "Objects" + , "aliases": [ + "sandal" + ] + , "tags": [ + "shoe" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🩰" + , "description": "ballet shoes" + , "category": "Objects" + , "aliases": [ + "ballet_shoes" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "👢" + , "description": "woman’s boot" + , "category": "Objects" + , "aliases": [ + "boot" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "👑" + , "description": "crown" + , "category": "Objects" + , "aliases": [ + "crown" + ] + , "tags": [ + "king" + , "queen" + , "royal" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "👒" + , "description": "woman’s hat" + , "category": "Objects" + , "aliases": [ + "womans_hat" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🎩" + , "description": "top hat" + , "category": "Objects" + , "aliases": [ + "tophat" + ] + , "tags": [ + "hat" + , "classy" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🎓" + , "description": "graduation cap" + , "category": "Objects" + , "aliases": [ + "mortar_board" + ] + , "tags": [ + "education" + , "college" + , "university" + , "graduation" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🧢" + , "description": "billed cap" + , "category": "Objects" + , "aliases": [ + "billed_cap" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "⛑" + , "description": "rescue worker’s helmet" + , "category": "Objects" + , "aliases": [ + "rescue_worker_helmet" + ] + , "tags": [ + ] + , "unicode_version": "5.2" + , "ios_version": "9.1" + } +, { + "emoji": "📿" + , "description": "prayer beads" + , "category": "Objects" + , "aliases": [ + "prayer_beads" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "💄" + , "description": "lipstick" + , "category": "Objects" + , "aliases": [ + "lipstick" + ] + , "tags": [ + "makeup" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "💍" + , "description": "ring" + , "category": "Objects" + , "aliases": [ + "ring" + ] + , "tags": [ + "wedding" + , "marriage" + , "engaged" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "💎" + , "description": "gem stone" + , "category": "Objects" + , "aliases": [ + "gem" + ] + , "tags": [ + "diamond" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔇" + , "description": "muted speaker" + , "category": "Objects" + , "aliases": [ + "mute" + ] + , "tags": [ + "sound" + , "volume" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔈" + , "description": "speaker low volume" + , "category": "Objects" + , "aliases": [ + "speaker" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔉" + , "description": "speaker medium volume" + , "category": "Objects" + , "aliases": [ + "sound" + ] + , "tags": [ + "volume" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔊" + , "description": "speaker high volume" + , "category": "Objects" + , "aliases": [ + "loud_sound" + ] + , "tags": [ + "volume" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📢" + , "description": "loudspeaker" + , "category": "Objects" + , "aliases": [ + "loudspeaker" + ] + , "tags": [ + "announcement" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📣" + , "description": "megaphone" + , "category": "Objects" + , "aliases": [ + "mega" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📯" + , "description": "postal horn" + , "category": "Objects" + , "aliases": [ + "postal_horn" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔔" + , "description": "bell" + , "category": "Objects" + , "aliases": [ + "bell" + ] + , "tags": [ + "sound" + , "notification" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔕" + , "description": "bell with slash" + , "category": "Objects" + , "aliases": [ + "no_bell" + ] + , "tags": [ + "volume" + , "off" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🎼" + , "description": "musical score" + , "category": "Objects" + , "aliases": [ + "musical_score" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🎵" + , "description": "musical note" + , "category": "Objects" + , "aliases": [ + "musical_note" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🎶" + , "description": "musical notes" + , "category": "Objects" + , "aliases": [ + "notes" + ] + , "tags": [ + "music" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🎙" + , "description": "studio microphone" + , "category": "Objects" + , "aliases": [ + "studio_microphone" + ] + , "tags": [ + "podcast" + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🎚" + , "description": "level slider" + , "category": "Objects" + , "aliases": [ + "level_slider" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🎛" + , "description": "control knobs" + , "category": "Objects" + , "aliases": [ + "control_knobs" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🎤" + , "description": "microphone" + , "category": "Objects" + , "aliases": [ + "microphone" + ] + , "tags": [ + "sing" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🎧" + , "description": "headphone" + , "category": "Objects" + , "aliases": [ + "headphones" + ] + , "tags": [ + "music" + , "earphones" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📻" + , "description": "radio" + , "category": "Objects" + , "aliases": [ + "radio" + ] + , "tags": [ + "podcast" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🎷" + , "description": "saxophone" + , "category": "Objects" + , "aliases": [ + "saxophone" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🎸" + , "description": "guitar" + , "category": "Objects" + , "aliases": [ + "guitar" + ] + , "tags": [ + "rock" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🎹" + , "description": "musical keyboard" + , "category": "Objects" + , "aliases": [ + "musical_keyboard" + ] + , "tags": [ + "piano" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🎺" + , "description": "trumpet" + , "category": "Objects" + , "aliases": [ + "trumpet" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🎻" + , "description": "violin" + , "category": "Objects" + , "aliases": [ + "violin" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🪕" + , "description": "banjo" + , "category": "Objects" + , "aliases": [ + "banjo" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🥁" + , "description": "drum" + , "category": "Objects" + , "aliases": [ + "drum" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "10.2" + } +, { + "emoji": "📱" + , "description": "mobile phone" + , "category": "Objects" + , "aliases": [ + "iphone" + ] + , "tags": [ + "smartphone" + , "mobile" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📲" + , "description": "mobile phone with arrow" + , "category": "Objects" + , "aliases": [ + "calling" + ] + , "tags": [ + "call" + , "incoming" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "☎️" + , "description": "telephone" + , "category": "Objects" + , "aliases": [ + "phone" + , "telephone" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "📞" + , "description": "telephone receiver" + , "category": "Objects" + , "aliases": [ + "telephone_receiver" + ] + , "tags": [ + "phone" + , "call" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📟" + , "description": "pager" + , "category": "Objects" + , "aliases": [ + "pager" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📠" + , "description": "fax machine" + , "category": "Objects" + , "aliases": [ + "fax" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔋" + , "description": "battery" + , "category": "Objects" + , "aliases": [ + "battery" + ] + , "tags": [ + "power" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔌" + , "description": "electric plug" + , "category": "Objects" + , "aliases": [ + "electric_plug" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "💻" + , "description": "laptop computer" + , "category": "Objects" + , "aliases": [ + "computer" + ] + , "tags": [ + "desktop" + , "screen" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🖥" + , "description": "desktop computer" + , "category": "Objects" + , "aliases": [ + "desktop_computer" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🖨" + , "description": "printer" + , "category": "Objects" + , "aliases": [ + "printer" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "⌨" + , "description": "keyboard" + , "category": "Objects" + , "aliases": [ + "keyboard" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "9.1" + } +, { + "emoji": "🖱" + , "description": "computer mouse" + , "category": "Objects" + , "aliases": [ + "computer_mouse" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🖲" + , "description": "trackball" + , "category": "Objects" + , "aliases": [ + "trackball" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "💽" + , "description": "computer disk" + , "category": "Objects" + , "aliases": [ + "minidisc" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "💾" + , "description": "floppy disk" + , "category": "Objects" + , "aliases": [ + "floppy_disk" + ] + , "tags": [ + "save" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "💿" + , "description": "optical disk" + , "category": "Objects" + , "aliases": [ + "cd" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📀" + , "description": "dvd" + , "category": "Objects" + , "aliases": [ + "dvd" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🧮" + , "description": "abacus" + , "category": "Objects" + , "aliases": [ + "abacus" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🎥" + , "description": "movie camera" + , "category": "Objects" + , "aliases": [ + "movie_camera" + ] + , "tags": [ + "film" + , "video" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🎞" + , "description": "film frames" + , "category": "Objects" + , "aliases": [ + "film_strip" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "📽" + , "description": "film projector" + , "category": "Objects" + , "aliases": [ + "film_projector" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🎬" + , "description": "clapper board" + , "category": "Objects" + , "aliases": [ + "clapper" + ] + , "tags": [ + "film" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📺" + , "description": "television" + , "category": "Objects" + , "aliases": [ + "tv" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📷" + , "description": "camera" + , "category": "Objects" + , "aliases": [ + "camera" + ] + , "tags": [ + "photo" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📸" + , "description": "camera with flash" + , "category": "Objects" + , "aliases": [ + "camera_flash" + ] + , "tags": [ + "photo" + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "📹" + , "description": "video camera" + , "category": "Objects" + , "aliases": [ + "video_camera" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📼" + , "description": "videocassette" + , "category": "Objects" + , "aliases": [ + "vhs" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔍" + , "description": "magnifying glass tilted left" + , "category": "Objects" + , "aliases": [ + "mag" + ] + , "tags": [ + "search" + , "zoom" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔎" + , "description": "magnifying glass tilted right" + , "category": "Objects" + , "aliases": [ + "mag_right" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🕯" + , "description": "candle" + , "category": "Objects" + , "aliases": [ + "candle" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "💡" + , "description": "light bulb" + , "category": "Objects" + , "aliases": [ + "bulb" + ] + , "tags": [ + "idea" + , "light" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔦" + , "description": "flashlight" + , "category": "Objects" + , "aliases": [ + "flashlight" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🏮" + , "description": "red paper lantern" + , "category": "Objects" + , "aliases": [ + "izakaya_lantern" + , "lantern" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🪔" + , "description": "diya lamp" + , "category": "Objects" + , "aliases": [ + "diya_lamp" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "📔" + , "description": "notebook with decorative cover" + , "category": "Objects" + , "aliases": [ + "notebook_with_decorative_cover" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📕" + , "description": "closed book" + , "category": "Objects" + , "aliases": [ + "closed_book" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📖" + , "description": "open book" + , "category": "Objects" + , "aliases": [ + "book" + , "open_book" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📗" + , "description": "green book" + , "category": "Objects" + , "aliases": [ + "green_book" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📘" + , "description": "blue book" + , "category": "Objects" + , "aliases": [ + "blue_book" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📙" + , "description": "orange book" + , "category": "Objects" + , "aliases": [ + "orange_book" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📚" + , "description": "books" + , "category": "Objects" + , "aliases": [ + "books" + ] + , "tags": [ + "library" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📓" + , "description": "notebook" + , "category": "Objects" + , "aliases": [ + "notebook" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📒" + , "description": "ledger" + , "category": "Objects" + , "aliases": [ + "ledger" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📃" + , "description": "page with curl" + , "category": "Objects" + , "aliases": [ + "page_with_curl" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📜" + , "description": "scroll" + , "category": "Objects" + , "aliases": [ + "scroll" + ] + , "tags": [ + "document" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📄" + , "description": "page facing up" + , "category": "Objects" + , "aliases": [ + "page_facing_up" + ] + , "tags": [ + "document" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📰" + , "description": "newspaper" + , "category": "Objects" + , "aliases": [ + "newspaper" + ] + , "tags": [ + "press" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🗞" + , "description": "rolled-up newspaper" + , "category": "Objects" + , "aliases": [ + "newspaper_roll" + ] + , "tags": [ + "press" + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "📑" + , "description": "bookmark tabs" + , "category": "Objects" + , "aliases": [ + "bookmark_tabs" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔖" + , "description": "bookmark" + , "category": "Objects" + , "aliases": [ + "bookmark" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🏷" + , "description": "label" + , "category": "Objects" + , "aliases": [ + "label" + ] + , "tags": [ + "tag" + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "💰" + , "description": "money bag" + , "category": "Objects" + , "aliases": [ + "moneybag" + ] + , "tags": [ + "dollar" + , "cream" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "💴" + , "description": "yen banknote" + , "category": "Objects" + , "aliases": [ + "yen" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "💵" + , "description": "dollar banknote" + , "category": "Objects" + , "aliases": [ + "dollar" + ] + , "tags": [ + "money" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "💶" + , "description": "euro banknote" + , "category": "Objects" + , "aliases": [ + "euro" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "💷" + , "description": "pound banknote" + , "category": "Objects" + , "aliases": [ + "pound" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "💸" + , "description": "money with wings" + , "category": "Objects" + , "aliases": [ + "money_with_wings" + ] + , "tags": [ + "dollar" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "💳" + , "description": "credit card" + , "category": "Objects" + , "aliases": [ + "credit_card" + ] + , "tags": [ + "subscription" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🧾" + , "description": "receipt" + , "category": "Objects" + , "aliases": [ + "receipt" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "💹" + , "description": "chart increasing with yen" + , "category": "Objects" + , "aliases": [ + "chart" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "💱" + , "description": "currency exchange" + , "category": "Objects" + , "aliases": [ + "currency_exchange" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "💲" + , "description": "heavy dollar sign" + , "category": "Objects" + , "aliases": [ + "heavy_dollar_sign" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "✉️" + , "description": "envelope" + , "category": "Objects" + , "aliases": [ + "email" + , "envelope" + ] + , "tags": [ + "letter" + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "📧" + , "description": "e-mail" + , "category": "Objects" + , "aliases": [ + "e-mail" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📨" + , "description": "incoming envelope" + , "category": "Objects" + , "aliases": [ + "incoming_envelope" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📩" + , "description": "envelope with arrow" + , "category": "Objects" + , "aliases": [ + "envelope_with_arrow" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📤" + , "description": "outbox tray" + , "category": "Objects" + , "aliases": [ + "outbox_tray" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📥" + , "description": "inbox tray" + , "category": "Objects" + , "aliases": [ + "inbox_tray" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📦" + , "description": "package" + , "category": "Objects" + , "aliases": [ + "package" + ] + , "tags": [ + "shipping" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📫" + , "description": "closed mailbox with raised flag" + , "category": "Objects" + , "aliases": [ + "mailbox" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📪" + , "description": "closed mailbox with lowered flag" + , "category": "Objects" + , "aliases": [ + "mailbox_closed" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📬" + , "description": "open mailbox with raised flag" + , "category": "Objects" + , "aliases": [ + "mailbox_with_mail" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📭" + , "description": "open mailbox with lowered flag" + , "category": "Objects" + , "aliases": [ + "mailbox_with_no_mail" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📮" + , "description": "postbox" + , "category": "Objects" + , "aliases": [ + "postbox" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🗳" + , "description": "ballot box with ballot" + , "category": "Objects" + , "aliases": [ + "ballot_box" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "✏️" + , "description": "pencil" + , "category": "Objects" + , "aliases": [ + "pencil2" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "✒️" + , "description": "black nib" + , "category": "Objects" + , "aliases": [ + "black_nib" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "🖋" + , "description": "fountain pen" + , "category": "Objects" + , "aliases": [ + "fountain_pen" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🖊" + , "description": "pen" + , "category": "Objects" + , "aliases": [ + "pen" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🖌" + , "description": "paintbrush" + , "category": "Objects" + , "aliases": [ + "paintbrush" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🖍" + , "description": "crayon" + , "category": "Objects" + , "aliases": [ + "crayon" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "📝" + , "description": "memo" + , "category": "Objects" + , "aliases": [ + "memo" + , "pencil" + ] + , "tags": [ + "document" + , "note" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "💼" + , "description": "briefcase" + , "category": "Objects" + , "aliases": [ + "briefcase" + ] + , "tags": [ + "business" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📁" + , "description": "file folder" + , "category": "Objects" + , "aliases": [ + "file_folder" + ] + , "tags": [ + "directory" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📂" + , "description": "open file folder" + , "category": "Objects" + , "aliases": [ + "open_file_folder" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🗂" + , "description": "card index dividers" + , "category": "Objects" + , "aliases": [ + "card_index_dividers" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "📅" + , "description": "calendar" + , "category": "Objects" + , "aliases": [ + "date" + ] + , "tags": [ + "calendar" + , "schedule" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📆" + , "description": "tear-off calendar" + , "category": "Objects" + , "aliases": [ + "calendar" + ] + , "tags": [ + "schedule" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🗒" + , "description": "spiral notepad" + , "category": "Objects" + , "aliases": [ + "spiral_notepad" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🗓" + , "description": "spiral calendar" + , "category": "Objects" + , "aliases": [ + "spiral_calendar" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "📇" + , "description": "card index" + , "category": "Objects" + , "aliases": [ + "card_index" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📈" + , "description": "chart increasing" + , "category": "Objects" + , "aliases": [ + "chart_with_upwards_trend" + ] + , "tags": [ + "graph" + , "metrics" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📉" + , "description": "chart decreasing" + , "category": "Objects" + , "aliases": [ + "chart_with_downwards_trend" + ] + , "tags": [ + "graph" + , "metrics" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📊" + , "description": "bar chart" + , "category": "Objects" + , "aliases": [ + "bar_chart" + ] + , "tags": [ + "stats" + , "metrics" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📋" + , "description": "clipboard" + , "category": "Objects" + , "aliases": [ + "clipboard" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📌" + , "description": "pushpin" + , "category": "Objects" + , "aliases": [ + "pushpin" + ] + , "tags": [ + "location" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📍" + , "description": "round pushpin" + , "category": "Objects" + , "aliases": [ + "round_pushpin" + ] + , "tags": [ + "location" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📎" + , "description": "paperclip" + , "category": "Objects" + , "aliases": [ + "paperclip" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🖇" + , "description": "linked paperclips" + , "category": "Objects" + , "aliases": [ + "paperclips" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "📏" + , "description": "straight ruler" + , "category": "Objects" + , "aliases": [ + "straight_ruler" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📐" + , "description": "triangular ruler" + , "category": "Objects" + , "aliases": [ + "triangular_ruler" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "✂️" + , "description": "scissors" + , "category": "Objects" + , "aliases": [ + "scissors" + ] + , "tags": [ + "cut" + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "🗃" + , "description": "card file box" + , "category": "Objects" + , "aliases": [ + "card_file_box" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🗄" + , "description": "file cabinet" + , "category": "Objects" + , "aliases": [ + "file_cabinet" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🗑" + , "description": "wastebasket" + , "category": "Objects" + , "aliases": [ + "wastebasket" + ] + , "tags": [ + "trash" + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🔒" + , "description": "locked" + , "category": "Objects" + , "aliases": [ + "lock" + ] + , "tags": [ + "security" + , "private" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔓" + , "description": "unlocked" + , "category": "Objects" + , "aliases": [ + "unlock" + ] + , "tags": [ + "security" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔏" + , "description": "locked with pen" + , "category": "Objects" + , "aliases": [ + "lock_with_ink_pen" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔐" + , "description": "locked with key" + , "category": "Objects" + , "aliases": [ + "closed_lock_with_key" + ] + , "tags": [ + "security" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔑" + , "description": "key" + , "category": "Objects" + , "aliases": [ + "key" + ] + , "tags": [ + "lock" + , "password" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🗝" + , "description": "old key" + , "category": "Objects" + , "aliases": [ + "old_key" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🔨" + , "description": "hammer" + , "category": "Objects" + , "aliases": [ + "hammer" + ] + , "tags": [ + "tool" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🪓" + , "description": "axe" + , "category": "Objects" + , "aliases": [ + "axe" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "⛏" + , "description": "pick" + , "category": "Objects" + , "aliases": [ + "pick" + ] + , "tags": [ + ] + , "unicode_version": "5.2" + , "ios_version": "9.1" + } +, { + "emoji": "⚒" + , "description": "hammer and pick" + , "category": "Objects" + , "aliases": [ + "hammer_and_pick" + ] + , "tags": [ + ] + , "unicode_version": "4.1" + , "ios_version": "9.1" + } +, { + "emoji": "🛠" + , "description": "hammer and wrench" + , "category": "Objects" + , "aliases": [ + "hammer_and_wrench" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🗡" + , "description": "dagger" + , "category": "Objects" + , "aliases": [ + "dagger" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "⚔" + , "description": "crossed swords" + , "category": "Objects" + , "aliases": [ + "crossed_swords" + ] + , "tags": [ + ] + , "unicode_version": "4.1" + , "ios_version": "9.1" + } +, { + "emoji": "🔫" + , "description": "pistol" + , "category": "Objects" + , "aliases": [ + "gun" + ] + , "tags": [ + "shoot" + , "weapon" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🏹" + , "description": "bow and arrow" + , "category": "Objects" + , "aliases": [ + "bow_and_arrow" + ] + , "tags": [ + "archery" + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "🛡" + , "description": "shield" + , "category": "Objects" + , "aliases": [ + "shield" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🔧" + , "description": "wrench" + , "category": "Objects" + , "aliases": [ + "wrench" + ] + , "tags": [ + "tool" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔩" + , "description": "nut and bolt" + , "category": "Objects" + , "aliases": [ + "nut_and_bolt" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "⚙" + , "description": "gear" + , "category": "Objects" + , "aliases": [ + "gear" + ] + , "tags": [ + ] + , "unicode_version": "4.1" + , "ios_version": "9.1" + } +, { + "emoji": "🗜" + , "description": "clamp" + , "category": "Objects" + , "aliases": [ + "clamp" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "⚖" + , "description": "balance scale" + , "category": "Objects" + , "aliases": [ + "balance_scale" + ] + , "tags": [ + ] + , "unicode_version": "4.1" + , "ios_version": "9.1" + } +, { + "emoji": "🦯" + , "description": "probing cane" + , "category": "Objects" + , "aliases": [ + "probing_cane" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🔗" + , "description": "link" + , "category": "Objects" + , "aliases": [ + "link" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "⛓" + , "description": "chains" + , "category": "Objects" + , "aliases": [ + "chains" + ] + , "tags": [ + ] + , "unicode_version": "5.2" + , "ios_version": "9.1" + } +, { + "emoji": "🧰" + , "description": "toolbox" + , "category": "Objects" + , "aliases": [ + "toolbox" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🧲" + , "description": "magnet" + , "category": "Objects" + , "aliases": [ + "magnet" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "⚗" + , "description": "alembic" + , "category": "Objects" + , "aliases": [ + "alembic" + ] + , "tags": [ + ] + , "unicode_version": "4.1" + , "ios_version": "9.1" + } +, { + "emoji": "🧪" + , "description": "test tube" + , "category": "Objects" + , "aliases": [ + "test_tube" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🧫" + , "description": "petri dish" + , "category": "Objects" + , "aliases": [ + "petri_dish" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🧬" + , "description": "dna" + , "category": "Objects" + , "aliases": [ + "dna" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🔬" + , "description": "microscope" + , "category": "Objects" + , "aliases": [ + "microscope" + ] + , "tags": [ + "science" + , "laboratory" + , "investigate" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔭" + , "description": "telescope" + , "category": "Objects" + , "aliases": [ + "telescope" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📡" + , "description": "satellite antenna" + , "category": "Objects" + , "aliases": [ + "satellite" + ] + , "tags": [ + "signal" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "💉" + , "description": "syringe" + , "category": "Objects" + , "aliases": [ + "syringe" + ] + , "tags": [ + "health" + , "hospital" + , "needle" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🩸" + , "description": "drop of blood" + , "category": "Objects" + , "aliases": [ + "drop_of_blood" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "💊" + , "description": "pill" + , "category": "Objects" + , "aliases": [ + "pill" + ] + , "tags": [ + "health" + , "medicine" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🩹" + , "description": "adhesive bandage" + , "category": "Objects" + , "aliases": [ + "adhesive_bandage" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🩺" + , "description": "stethoscope" + , "category": "Objects" + , "aliases": [ + "stethoscope" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🚪" + , "description": "door" + , "category": "Objects" + , "aliases": [ + "door" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🛏" + , "description": "bed" + , "category": "Objects" + , "aliases": [ + "bed" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🛋" + , "description": "couch and lamp" + , "category": "Objects" + , "aliases": [ + "couch_and_lamp" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🪑" + , "description": "chair" + , "category": "Objects" + , "aliases": [ + "chair" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🚽" + , "description": "toilet" + , "category": "Objects" + , "aliases": [ + "toilet" + ] + , "tags": [ + "wc" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚿" + , "description": "shower" + , "category": "Objects" + , "aliases": [ + "shower" + ] + , "tags": [ + "bath" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🛁" + , "description": "bathtub" + , "category": "Objects" + , "aliases": [ + "bathtub" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🪒" + , "description": "razor" + , "category": "Objects" + , "aliases": [ + "razor" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🧴" + , "description": "lotion bottle" + , "category": "Objects" + , "aliases": [ + "lotion_bottle" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🧷" + , "description": "safety pin" + , "category": "Objects" + , "aliases": [ + "safety_pin" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🧹" + , "description": "broom" + , "category": "Objects" + , "aliases": [ + "broom" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🧺" + , "description": "basket" + , "category": "Objects" + , "aliases": [ + "basket" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🧻" + , "description": "roll of paper" + , "category": "Objects" + , "aliases": [ + "roll_of_paper" + ] + , "tags": [ + "toilet" + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🧼" + , "description": "soap" + , "category": "Objects" + , "aliases": [ + "soap" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🧽" + , "description": "sponge" + , "category": "Objects" + , "aliases": [ + "sponge" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🧯" + , "description": "fire extinguisher" + , "category": "Objects" + , "aliases": [ + "fire_extinguisher" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🛒" + , "description": "shopping cart" + , "category": "Objects" + , "aliases": [ + "shopping_cart" + ] + , "tags": [ + ] + , "unicode_version": "9.0" + , "ios_version": "10.2" + } +, { + "emoji": "🚬" + , "description": "cigarette" + , "category": "Objects" + , "aliases": [ + "smoking" + ] + , "tags": [ + "cigarette" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "⚰" + , "description": "coffin" + , "category": "Objects" + , "aliases": [ + "coffin" + ] + , "tags": [ + "funeral" + ] + , "unicode_version": "4.1" + , "ios_version": "9.1" + } +, { + "emoji": "⚱" + , "description": "funeral urn" + , "category": "Objects" + , "aliases": [ + "funeral_urn" + ] + , "tags": [ + ] + , "unicode_version": "4.1" + , "ios_version": "9.1" + } +, { + "emoji": "🗿" + , "description": "moai" + , "category": "Objects" + , "aliases": [ + "moyai" + ] + , "tags": [ + "stone" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🏧" + , "description": "ATM sign" + , "category": "Symbols" + , "aliases": [ + "atm" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚮" + , "description": "litter in bin sign" + , "category": "Symbols" + , "aliases": [ + "put_litter_in_its_place" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚰" + , "description": "potable water" + , "category": "Symbols" + , "aliases": [ + "potable_water" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "♿" + , "description": "wheelchair symbol" + , "category": "Symbols" + , "aliases": [ + "wheelchair" + ] + , "tags": [ + "accessibility" + ] + , "unicode_version": "4.1" + , "ios_version": "6.0" + } +, { + "emoji": "🚹" + , "description": "men’s room" + , "category": "Symbols" + , "aliases": [ + "mens" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚺" + , "description": "women’s room" + , "category": "Symbols" + , "aliases": [ + "womens" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚻" + , "description": "restroom" + , "category": "Symbols" + , "aliases": [ + "restroom" + ] + , "tags": [ + "toilet" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚼" + , "description": "baby symbol" + , "category": "Symbols" + , "aliases": [ + "baby_symbol" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚾" + , "description": "water closet" + , "category": "Symbols" + , "aliases": [ + "wc" + ] + , "tags": [ + "toilet" + , "restroom" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🛂" + , "description": "passport control" + , "category": "Symbols" + , "aliases": [ + "passport_control" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🛃" + , "description": "customs" + , "category": "Symbols" + , "aliases": [ + "customs" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🛄" + , "description": "baggage claim" + , "category": "Symbols" + , "aliases": [ + "baggage_claim" + ] + , "tags": [ + "airport" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🛅" + , "description": "left luggage" + , "category": "Symbols" + , "aliases": [ + "left_luggage" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "⚠️" + , "description": "warning" + , "category": "Symbols" + , "aliases": [ + "warning" + ] + , "tags": [ + "wip" + ] + , "unicode_version": "4.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚸" + , "description": "children crossing" + , "category": "Symbols" + , "aliases": [ + "children_crossing" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "⛔" + , "description": "no entry" + , "category": "Symbols" + , "aliases": [ + "no_entry" + ] + , "tags": [ + "limit" + ] + , "unicode_version": "5.2" + , "ios_version": "6.0" + } +, { + "emoji": "🚫" + , "description": "prohibited" + , "category": "Symbols" + , "aliases": [ + "no_entry_sign" + ] + , "tags": [ + "block" + , "forbidden" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚳" + , "description": "no bicycles" + , "category": "Symbols" + , "aliases": [ + "no_bicycles" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚭" + , "description": "no smoking" + , "category": "Symbols" + , "aliases": [ + "no_smoking" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚯" + , "description": "no littering" + , "category": "Symbols" + , "aliases": [ + "do_not_litter" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚱" + , "description": "non-potable water" + , "category": "Symbols" + , "aliases": [ + "non-potable_water" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚷" + , "description": "no pedestrians" + , "category": "Symbols" + , "aliases": [ + "no_pedestrians" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📵" + , "description": "no mobile phones" + , "category": "Symbols" + , "aliases": [ + "no_mobile_phones" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔞" + , "description": "no one under eighteen" + , "category": "Symbols" + , "aliases": [ + "underage" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "☢" + , "description": "radioactive" + , "category": "Symbols" + , "aliases": [ + "radioactive" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "9.1" + } +, { + "emoji": "☣" + , "description": "biohazard" + , "category": "Symbols" + , "aliases": [ + "biohazard" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "9.1" + } +, { + "emoji": "⬆️" + , "description": "up arrow" + , "category": "Symbols" + , "aliases": [ + "arrow_up" + ] + , "tags": [ + ] + , "unicode_version": "4.0" + , "ios_version": "6.0" + } +, { + "emoji": "↗️" + , "description": "up-right arrow" + , "category": "Symbols" + , "aliases": [ + "arrow_upper_right" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "➡️" + , "description": "right arrow" + , "category": "Symbols" + , "aliases": [ + "arrow_right" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "↘️" + , "description": "down-right arrow" + , "category": "Symbols" + , "aliases": [ + "arrow_lower_right" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "⬇️" + , "description": "down arrow" + , "category": "Symbols" + , "aliases": [ + "arrow_down" + ] + , "tags": [ + ] + , "unicode_version": "4.0" + , "ios_version": "6.0" + } +, { + "emoji": "↙️" + , "description": "down-left arrow" + , "category": "Symbols" + , "aliases": [ + "arrow_lower_left" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "⬅️" + , "description": "left arrow" + , "category": "Symbols" + , "aliases": [ + "arrow_left" + ] + , "tags": [ + ] + , "unicode_version": "4.0" + , "ios_version": "6.0" + } +, { + "emoji": "↖️" + , "description": "up-left arrow" + , "category": "Symbols" + , "aliases": [ + "arrow_upper_left" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "↕️" + , "description": "up-down arrow" + , "category": "Symbols" + , "aliases": [ + "arrow_up_down" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "↔️" + , "description": "left-right arrow" + , "category": "Symbols" + , "aliases": [ + "left_right_arrow" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "↩️" + , "description": "right arrow curving left" + , "category": "Symbols" + , "aliases": [ + "leftwards_arrow_with_hook" + ] + , "tags": [ + "return" + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "↪️" + , "description": "left arrow curving right" + , "category": "Symbols" + , "aliases": [ + "arrow_right_hook" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "⤴️" + , "description": "right arrow curving up" + , "category": "Symbols" + , "aliases": [ + "arrow_heading_up" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "⤵️" + , "description": "right arrow curving down" + , "category": "Symbols" + , "aliases": [ + "arrow_heading_down" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "🔃" + , "description": "clockwise vertical arrows" + , "category": "Symbols" + , "aliases": [ + "arrows_clockwise" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔄" + , "description": "counterclockwise arrows button" + , "category": "Symbols" + , "aliases": [ + "arrows_counterclockwise" + ] + , "tags": [ + "sync" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔙" + , "description": "BACK arrow" + , "category": "Symbols" + , "aliases": [ + "back" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔚" + , "description": "END arrow" + , "category": "Symbols" + , "aliases": [ + "end" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔛" + , "description": "ON! arrow" + , "category": "Symbols" + , "aliases": [ + "on" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔜" + , "description": "SOON arrow" + , "category": "Symbols" + , "aliases": [ + "soon" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔝" + , "description": "TOP arrow" + , "category": "Symbols" + , "aliases": [ + "top" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🛐" + , "description": "place of worship" + , "category": "Symbols" + , "aliases": [ + "place_of_worship" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "⚛" + , "description": "atom symbol" + , "category": "Symbols" + , "aliases": [ + "atom_symbol" + ] + , "tags": [ + ] + , "unicode_version": "4.1" + , "ios_version": "9.1" + } +, { + "emoji": "🕉" + , "description": "om" + , "category": "Symbols" + , "aliases": [ + "om" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "✡️" + , "description": "star of David" + , "category": "Symbols" + , "aliases": [ + "star_of_david" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "9.1" + } +, { + "emoji": "☸" + , "description": "wheel of dharma" + , "category": "Symbols" + , "aliases": [ + "wheel_of_dharma" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "9.1" + } +, { + "emoji": "☯️" + , "description": "yin yang" + , "category": "Symbols" + , "aliases": [ + "yin_yang" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "9.1" + } +, { + "emoji": "✝️" + , "description": "latin cross" + , "category": "Symbols" + , "aliases": [ + "latin_cross" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "9.1" + } +, { + "emoji": "☦" + , "description": "orthodox cross" + , "category": "Symbols" + , "aliases": [ + "orthodox_cross" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "9.1" + } +, { + "emoji": "☪" + , "description": "star and crescent" + , "category": "Symbols" + , "aliases": [ + "star_and_crescent" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "9.1" + } +, { + "emoji": "☮" + , "description": "peace symbol" + , "category": "Symbols" + , "aliases": [ + "peace_symbol" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "9.1" + } +, { + "emoji": "🕎" + , "description": "menorah" + , "category": "Symbols" + , "aliases": [ + "menorah" + ] + , "tags": [ + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "🔯" + , "description": "dotted six-pointed star" + , "category": "Symbols" + , "aliases": [ + "six_pointed_star" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "♈" + , "description": "Aries" + , "category": "Symbols" + , "aliases": [ + "aries" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "♉" + , "description": "Taurus" + , "category": "Symbols" + , "aliases": [ + "taurus" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "♊" + , "description": "Gemini" + , "category": "Symbols" + , "aliases": [ + "gemini" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "♋" + , "description": "Cancer" + , "category": "Symbols" + , "aliases": [ + "cancer" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "♌" + , "description": "Leo" + , "category": "Symbols" + , "aliases": [ + "leo" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "♍" + , "description": "Virgo" + , "category": "Symbols" + , "aliases": [ + "virgo" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "♎" + , "description": "Libra" + , "category": "Symbols" + , "aliases": [ + "libra" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "♏" + , "description": "Scorpio" + , "category": "Symbols" + , "aliases": [ + "scorpius" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "♐" + , "description": "Sagittarius" + , "category": "Symbols" + , "aliases": [ + "sagittarius" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "♑" + , "description": "Capricorn" + , "category": "Symbols" + , "aliases": [ + "capricorn" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "♒" + , "description": "Aquarius" + , "category": "Symbols" + , "aliases": [ + "aquarius" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "♓" + , "description": "Pisces" + , "category": "Symbols" + , "aliases": [ + "pisces" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "⛎" + , "description": "Ophiuchus" + , "category": "Symbols" + , "aliases": [ + "ophiuchus" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔀" + , "description": "shuffle tracks button" + , "category": "Symbols" + , "aliases": [ + "twisted_rightwards_arrows" + ] + , "tags": [ + "shuffle" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔁" + , "description": "repeat button" + , "category": "Symbols" + , "aliases": [ + "repeat" + ] + , "tags": [ + "loop" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔂" + , "description": "repeat single button" + , "category": "Symbols" + , "aliases": [ + "repeat_one" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "▶️" + , "description": "play button" + , "category": "Symbols" + , "aliases": [ + "arrow_forward" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "⏩" + , "description": "fast-forward button" + , "category": "Symbols" + , "aliases": [ + "fast_forward" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "⏭" + , "description": "next track button" + , "category": "Symbols" + , "aliases": [ + "next_track_button" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.1" + } +, { + "emoji": "⏯" + , "description": "play or pause button" + , "category": "Symbols" + , "aliases": [ + "play_or_pause_button" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.1" + } +, { + "emoji": "◀️" + , "description": "reverse button" + , "category": "Symbols" + , "aliases": [ + "arrow_backward" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "⏪" + , "description": "fast reverse button" + , "category": "Symbols" + , "aliases": [ + "rewind" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "⏮" + , "description": "last track button" + , "category": "Symbols" + , "aliases": [ + "previous_track_button" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.1" + } +, { + "emoji": "🔼" + , "description": "upwards button" + , "category": "Symbols" + , "aliases": [ + "arrow_up_small" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "⏫" + , "description": "fast up button" + , "category": "Symbols" + , "aliases": [ + "arrow_double_up" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔽" + , "description": "downwards button" + , "category": "Symbols" + , "aliases": [ + "arrow_down_small" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "⏬" + , "description": "fast down button" + , "category": "Symbols" + , "aliases": [ + "arrow_double_down" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "⏸" + , "description": "pause button" + , "category": "Symbols" + , "aliases": [ + "pause_button" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "⏹" + , "description": "stop button" + , "category": "Symbols" + , "aliases": [ + "stop_button" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "⏺" + , "description": "record button" + , "category": "Symbols" + , "aliases": [ + "record_button" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "⏏️" + , "description": "eject button" + , "category": "Symbols" + , "aliases": [ + "eject_button" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🎦" + , "description": "cinema" + , "category": "Symbols" + , "aliases": [ + "cinema" + ] + , "tags": [ + "film" + , "movie" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔅" + , "description": "dim button" + , "category": "Symbols" + , "aliases": [ + "low_brightness" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔆" + , "description": "bright button" + , "category": "Symbols" + , "aliases": [ + "high_brightness" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📶" + , "description": "antenna bars" + , "category": "Symbols" + , "aliases": [ + "signal_strength" + ] + , "tags": [ + "wifi" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📳" + , "description": "vibration mode" + , "category": "Symbols" + , "aliases": [ + "vibration_mode" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📴" + , "description": "mobile phone off" + , "category": "Symbols" + , "aliases": [ + "mobile_phone_off" + ] + , "tags": [ + "mute" + , "off" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "♀️" + , "description": "female sign" + , "category": "Symbols" + , "aliases": [ + "female_sign" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "♂️" + , "description": "male sign" + , "category": "Symbols" + , "aliases": [ + "male_sign" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "⚕" + , "description": "medical symbol" + , "category": "Symbols" + , "aliases": [ + "medical_symbol" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "♾" + , "description": "infinity" + , "category": "Symbols" + , "aliases": [ + "infinity" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "♻️" + , "description": "recycling symbol" + , "category": "Symbols" + , "aliases": [ + "recycle" + ] + , "tags": [ + "environment" + , "green" + ] + , "unicode_version": "3.2" + , "ios_version": "6.0" + } +, { + "emoji": "⚜" + , "description": "fleur-de-lis" + , "category": "Symbols" + , "aliases": [ + "fleur_de_lis" + ] + , "tags": [ + ] + , "unicode_version": "4.1" + , "ios_version": "9.1" + } +, { + "emoji": "🔱" + , "description": "trident emblem" + , "category": "Symbols" + , "aliases": [ + "trident" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "📛" + , "description": "name badge" + , "category": "Symbols" + , "aliases": [ + "name_badge" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔰" + , "description": "Japanese symbol for beginner" + , "category": "Symbols" + , "aliases": [ + "beginner" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "⭕" + , "description": "hollow red circle" + , "category": "Symbols" + , "aliases": [ + "o" + ] + , "tags": [ + ] + , "unicode_version": "5.2" + , "ios_version": "6.0" + } +, { + "emoji": "✅" + , "description": "check mark button" + , "category": "Symbols" + , "aliases": [ + "white_check_mark" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "☑️" + , "description": "check box with check" + , "category": "Symbols" + , "aliases": [ + "ballot_box_with_check" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "✔️" + , "description": "check mark" + , "category": "Symbols" + , "aliases": [ + "heavy_check_mark" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "✖️" + , "description": "multiplication sign" + , "category": "Symbols" + , "aliases": [ + "heavy_multiplication_x" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "❌" + , "description": "cross mark" + , "category": "Symbols" + , "aliases": [ + "x" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "❎" + , "description": "cross mark button" + , "category": "Symbols" + , "aliases": [ + "negative_squared_cross_mark" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "➕" + , "description": "plus sign" + , "category": "Symbols" + , "aliases": [ + "heavy_plus_sign" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "➖" + , "description": "minus sign" + , "category": "Symbols" + , "aliases": [ + "heavy_minus_sign" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "➗" + , "description": "division sign" + , "category": "Symbols" + , "aliases": [ + "heavy_division_sign" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "➰" + , "description": "curly loop" + , "category": "Symbols" + , "aliases": [ + "curly_loop" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "➿" + , "description": "double curly loop" + , "category": "Symbols" + , "aliases": [ + "loop" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "〽️" + , "description": "part alternation mark" + , "category": "Symbols" + , "aliases": [ + "part_alternation_mark" + ] + , "tags": [ + ] + , "unicode_version": "3.2" + , "ios_version": "6.0" + } +, { + "emoji": "✳️" + , "description": "eight-spoked asterisk" + , "category": "Symbols" + , "aliases": [ + "eight_spoked_asterisk" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "✴️" + , "description": "eight-pointed star" + , "category": "Symbols" + , "aliases": [ + "eight_pointed_black_star" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "❇️" + , "description": "sparkle" + , "category": "Symbols" + , "aliases": [ + "sparkle" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "‼️" + , "description": "double exclamation mark" + , "category": "Symbols" + , "aliases": [ + "bangbang" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "⁉️" + , "description": "exclamation question mark" + , "category": "Symbols" + , "aliases": [ + "interrobang" + ] + , "tags": [ + ] + , "unicode_version": "3.0" + , "ios_version": "6.0" + } +, { + "emoji": "❓" + , "description": "question mark" + , "category": "Symbols" + , "aliases": [ + "question" + ] + , "tags": [ + "confused" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "❔" + , "description": "white question mark" + , "category": "Symbols" + , "aliases": [ + "grey_question" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "❕" + , "description": "white exclamation mark" + , "category": "Symbols" + , "aliases": [ + "grey_exclamation" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "❗" + , "description": "exclamation mark" + , "category": "Symbols" + , "aliases": [ + "exclamation" + , "heavy_exclamation_mark" + ] + , "tags": [ + "bang" + ] + , "unicode_version": "5.2" + , "ios_version": "6.0" + } +, { + "emoji": "〰️" + , "description": "wavy dash" + , "category": "Symbols" + , "aliases": [ + "wavy_dash" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "©️" + , "description": "copyright" + , "category": "Symbols" + , "aliases": [ + "copyright" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "®️" + , "description": "registered" + , "category": "Symbols" + , "aliases": [ + "registered" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "™️" + , "description": "trade mark" + , "category": "Symbols" + , "aliases": [ + "tm" + ] + , "tags": [ + "trademark" + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "#️⃣" + , "description": "keycap: #" + , "category": "Symbols" + , "aliases": [ + "hash" + ] + , "tags": [ + "number" + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "*️⃣" + , "description": "keycap: *" + , "category": "Symbols" + , "aliases": [ + "asterisk" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "9.1" + } +, { + "emoji": "0️⃣" + , "description": "keycap: 0" + , "category": "Symbols" + , "aliases": [ + "zero" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "1️⃣" + , "description": "keycap: 1" + , "category": "Symbols" + , "aliases": [ + "one" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "2️⃣" + , "description": "keycap: 2" + , "category": "Symbols" + , "aliases": [ + "two" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "3️⃣" + , "description": "keycap: 3" + , "category": "Symbols" + , "aliases": [ + "three" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "4️⃣" + , "description": "keycap: 4" + , "category": "Symbols" + , "aliases": [ + "four" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "5️⃣" + , "description": "keycap: 5" + , "category": "Symbols" + , "aliases": [ + "five" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "6️⃣" + , "description": "keycap: 6" + , "category": "Symbols" + , "aliases": [ + "six" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "7️⃣" + , "description": "keycap: 7" + , "category": "Symbols" + , "aliases": [ + "seven" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "8️⃣" + , "description": "keycap: 8" + , "category": "Symbols" + , "aliases": [ + "eight" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "9️⃣" + , "description": "keycap: 9" + , "category": "Symbols" + , "aliases": [ + "nine" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "🔟" + , "description": "keycap: 10" + , "category": "Symbols" + , "aliases": [ + "keycap_ten" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔠" + , "description": "input latin uppercase" + , "category": "Symbols" + , "aliases": [ + "capital_abcd" + ] + , "tags": [ + "letters" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔡" + , "description": "input latin lowercase" + , "category": "Symbols" + , "aliases": [ + "abcd" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔢" + , "description": "input numbers" + , "category": "Symbols" + , "aliases": [ + "1234" + ] + , "tags": [ + "numbers" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔣" + , "description": "input symbols" + , "category": "Symbols" + , "aliases": [ + "symbols" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔤" + , "description": "input latin letters" + , "category": "Symbols" + , "aliases": [ + "abc" + ] + , "tags": [ + "alphabet" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🅰️" + , "description": "A button (blood type)" + , "category": "Symbols" + , "aliases": [ + "a" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🆎" + , "description": "AB button (blood type)" + , "category": "Symbols" + , "aliases": [ + "ab" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🅱️" + , "description": "B button (blood type)" + , "category": "Symbols" + , "aliases": [ + "b" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🆑" + , "description": "CL button" + , "category": "Symbols" + , "aliases": [ + "cl" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🆒" + , "description": "COOL button" + , "category": "Symbols" + , "aliases": [ + "cool" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🆓" + , "description": "FREE button" + , "category": "Symbols" + , "aliases": [ + "free" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "ℹ️" + , "description": "information" + , "category": "Symbols" + , "aliases": [ + "information_source" + ] + , "tags": [ + ] + , "unicode_version": "3.0" + , "ios_version": "6.0" + } +, { + "emoji": "🆔" + , "description": "ID button" + , "category": "Symbols" + , "aliases": [ + "id" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "Ⓜ️" + , "description": "circled M" + , "category": "Symbols" + , "aliases": [ + "m" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "🆕" + , "description": "NEW button" + , "category": "Symbols" + , "aliases": [ + "new" + ] + , "tags": [ + "fresh" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🆖" + , "description": "NG button" + , "category": "Symbols" + , "aliases": [ + "ng" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🅾️" + , "description": "O button (blood type)" + , "category": "Symbols" + , "aliases": [ + "o2" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🆗" + , "description": "OK button" + , "category": "Symbols" + , "aliases": [ + "ok" + ] + , "tags": [ + "yes" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🅿️" + , "description": "P button" + , "category": "Symbols" + , "aliases": [ + "parking" + ] + , "tags": [ + ] + , "unicode_version": "5.2" + , "ios_version": "6.0" + } +, { + "emoji": "🆘" + , "description": "SOS button" + , "category": "Symbols" + , "aliases": [ + "sos" + ] + , "tags": [ + "help" + , "emergency" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🆙" + , "description": "UP! button" + , "category": "Symbols" + , "aliases": [ + "up" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🆚" + , "description": "VS button" + , "category": "Symbols" + , "aliases": [ + "vs" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🈁" + , "description": "Japanese “here” button" + , "category": "Symbols" + , "aliases": [ + "koko" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🈂️" + , "description": "Japanese “service charge” button" + , "category": "Symbols" + , "aliases": [ + "sa" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🈷️" + , "description": "Japanese “monthly amount” button" + , "category": "Symbols" + , "aliases": [ + "u6708" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🈶" + , "description": "Japanese “not free of charge” button" + , "category": "Symbols" + , "aliases": [ + "u6709" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🈯" + , "description": "Japanese “reserved” button" + , "category": "Symbols" + , "aliases": [ + "u6307" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "🉐" + , "description": "Japanese “bargain” button" + , "category": "Symbols" + , "aliases": [ + "ideograph_advantage" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🈹" + , "description": "Japanese “discount” button" + , "category": "Symbols" + , "aliases": [ + "u5272" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🈚" + , "description": "Japanese “free of charge” button" + , "category": "Symbols" + , "aliases": [ + "u7121" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "🈲" + , "description": "Japanese “prohibited” button" + , "category": "Symbols" + , "aliases": [ + "u7981" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🉑" + , "description": "Japanese “acceptable” button" + , "category": "Symbols" + , "aliases": [ + "accept" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🈸" + , "description": "Japanese “application” button" + , "category": "Symbols" + , "aliases": [ + "u7533" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🈴" + , "description": "Japanese “passing grade” button" + , "category": "Symbols" + , "aliases": [ + "u5408" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🈳" + , "description": "Japanese “vacancy” button" + , "category": "Symbols" + , "aliases": [ + "u7a7a" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "㊗️" + , "description": "Japanese “congratulations” button" + , "category": "Symbols" + , "aliases": [ + "congratulations" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "㊙️" + , "description": "Japanese “secret” button" + , "category": "Symbols" + , "aliases": [ + "secret" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "🈺" + , "description": "Japanese “open for business” button" + , "category": "Symbols" + , "aliases": [ + "u55b6" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🈵" + , "description": "Japanese “no vacancy” button" + , "category": "Symbols" + , "aliases": [ + "u6e80" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔴" + , "description": "red circle" + , "category": "Symbols" + , "aliases": [ + "red_circle" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🟠" + , "description": "orange circle" + , "category": "Symbols" + , "aliases": [ + "orange_circle" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🟡" + , "description": "yellow circle" + , "category": "Symbols" + , "aliases": [ + "yellow_circle" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🟢" + , "description": "green circle" + , "category": "Symbols" + , "aliases": [ + "green_circle" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🔵" + , "description": "blue circle" + , "category": "Symbols" + , "aliases": [ + "large_blue_circle" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🟣" + , "description": "purple circle" + , "category": "Symbols" + , "aliases": [ + "purple_circle" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🟤" + , "description": "brown circle" + , "category": "Symbols" + , "aliases": [ + "brown_circle" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "⚫" + , "description": "black circle" + , "category": "Symbols" + , "aliases": [ + "black_circle" + ] + , "tags": [ + ] + , "unicode_version": "4.1" + , "ios_version": "6.0" + } +, { + "emoji": "⚪" + , "description": "white circle" + , "category": "Symbols" + , "aliases": [ + "white_circle" + ] + , "tags": [ + ] + , "unicode_version": "4.1" + , "ios_version": "6.0" + } +, { + "emoji": "🟥" + , "description": "red square" + , "category": "Symbols" + , "aliases": [ + "red_square" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🟧" + , "description": "orange square" + , "category": "Symbols" + , "aliases": [ + "orange_square" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🟨" + , "description": "yellow square" + , "category": "Symbols" + , "aliases": [ + "yellow_square" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🟩" + , "description": "green square" + , "category": "Symbols" + , "aliases": [ + "green_square" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🟦" + , "description": "blue square" + , "category": "Symbols" + , "aliases": [ + "blue_square" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🟪" + , "description": "purple square" + , "category": "Symbols" + , "aliases": [ + "purple_square" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "🟫" + , "description": "brown square" + , "category": "Symbols" + , "aliases": [ + "brown_square" + ] + , "tags": [ + ] + , "unicode_version": "12.0" + , "ios_version": "13.0" + } +, { + "emoji": "⬛" + , "description": "black large square" + , "category": "Symbols" + , "aliases": [ + "black_large_square" + ] + , "tags": [ + ] + , "unicode_version": "5.1" + , "ios_version": "6.0" + } +, { + "emoji": "⬜" + , "description": "white large square" + , "category": "Symbols" + , "aliases": [ + "white_large_square" + ] + , "tags": [ + ] + , "unicode_version": "5.1" + , "ios_version": "6.0" + } +, { + "emoji": "◼️" + , "description": "black medium square" + , "category": "Symbols" + , "aliases": [ + "black_medium_square" + ] + , "tags": [ + ] + , "unicode_version": "3.2" + , "ios_version": "6.0" + } +, { + "emoji": "◻️" + , "description": "white medium square" + , "category": "Symbols" + , "aliases": [ + "white_medium_square" + ] + , "tags": [ + ] + , "unicode_version": "3.2" + , "ios_version": "6.0" + } +, { + "emoji": "◾" + , "description": "black medium-small square" + , "category": "Symbols" + , "aliases": [ + "black_medium_small_square" + ] + , "tags": [ + ] + , "unicode_version": "3.2" + , "ios_version": "6.0" + } +, { + "emoji": "◽" + , "description": "white medium-small square" + , "category": "Symbols" + , "aliases": [ + "white_medium_small_square" + ] + , "tags": [ + ] + , "unicode_version": "3.2" + , "ios_version": "6.0" + } +, { + "emoji": "▪️" + , "description": "black small square" + , "category": "Symbols" + , "aliases": [ + "black_small_square" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "▫️" + , "description": "white small square" + , "category": "Symbols" + , "aliases": [ + "white_small_square" + ] + , "tags": [ + ] + , "unicode_version": "" + , "ios_version": "6.0" + } +, { + "emoji": "🔶" + , "description": "large orange diamond" + , "category": "Symbols" + , "aliases": [ + "large_orange_diamond" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔷" + , "description": "large blue diamond" + , "category": "Symbols" + , "aliases": [ + "large_blue_diamond" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔸" + , "description": "small orange diamond" + , "category": "Symbols" + , "aliases": [ + "small_orange_diamond" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔹" + , "description": "small blue diamond" + , "category": "Symbols" + , "aliases": [ + "small_blue_diamond" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔺" + , "description": "red triangle pointed up" + , "category": "Symbols" + , "aliases": [ + "small_red_triangle" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔻" + , "description": "red triangle pointed down" + , "category": "Symbols" + , "aliases": [ + "small_red_triangle_down" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "💠" + , "description": "diamond with a dot" + , "category": "Symbols" + , "aliases": [ + "diamond_shape_with_a_dot_inside" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔘" + , "description": "radio button" + , "category": "Symbols" + , "aliases": [ + "radio_button" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔳" + , "description": "white square button" + , "category": "Symbols" + , "aliases": [ + "white_square_button" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🔲" + , "description": "black square button" + , "category": "Symbols" + , "aliases": [ + "black_square_button" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🏁" + , "description": "chequered flag" + , "category": "Flags" + , "aliases": [ + "checkered_flag" + ] + , "tags": [ + "milestone" + , "finish" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🚩" + , "description": "triangular flag" + , "category": "Flags" + , "aliases": [ + "triangular_flag_on_post" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🎌" + , "description": "crossed flags" + , "category": "Flags" + , "aliases": [ + "crossed_flags" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🏴" + , "description": "black flag" + , "category": "Flags" + , "aliases": [ + "black_flag" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🏳" + , "description": "white flag" + , "category": "Flags" + , "aliases": [ + "white_flag" + ] + , "tags": [ + ] + , "unicode_version": "7.0" + , "ios_version": "9.1" + } +, { + "emoji": "🏳️‍🌈" + , "description": "rainbow flag" + , "category": "Flags" + , "aliases": [ + "rainbow_flag" + ] + , "tags": [ + "pride" + ] + , "unicode_version": "6.0" + , "ios_version": "10.0" + } +, { + "emoji": "🏴‍☠" + , "description": "pirate flag" + , "category": "Flags" + , "aliases": [ + "pirate_flag" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🇦🇨" + , "description": "flag: Ascension Island" + , "category": "Flags" + , "aliases": [ + "ascension_island" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🇦🇩" + , "description": "flag: Andorra" + , "category": "Flags" + , "aliases": [ + "andorra" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇦🇪" + , "description": "flag: United Arab Emirates" + , "category": "Flags" + , "aliases": [ + "united_arab_emirates" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇦🇫" + , "description": "flag: Afghanistan" + , "category": "Flags" + , "aliases": [ + "afghanistan" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇦🇬" + , "description": "flag: Antigua & Barbuda" + , "category": "Flags" + , "aliases": [ + "antigua_barbuda" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇦🇮" + , "description": "flag: Anguilla" + , "category": "Flags" + , "aliases": [ + "anguilla" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇦🇱" + , "description": "flag: Albania" + , "category": "Flags" + , "aliases": [ + "albania" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇦🇲" + , "description": "flag: Armenia" + , "category": "Flags" + , "aliases": [ + "armenia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇦🇴" + , "description": "flag: Angola" + , "category": "Flags" + , "aliases": [ + "angola" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇦🇶" + , "description": "flag: Antarctica" + , "category": "Flags" + , "aliases": [ + "antarctica" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "🇦🇷" + , "description": "flag: Argentina" + , "category": "Flags" + , "aliases": [ + "argentina" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇦🇸" + , "description": "flag: American Samoa" + , "category": "Flags" + , "aliases": [ + "american_samoa" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇦🇹" + , "description": "flag: Austria" + , "category": "Flags" + , "aliases": [ + "austria" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇦🇺" + , "description": "flag: Australia" + , "category": "Flags" + , "aliases": [ + "australia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇦🇼" + , "description": "flag: Aruba" + , "category": "Flags" + , "aliases": [ + "aruba" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇦🇽" + , "description": "flag: Åland Islands" + , "category": "Flags" + , "aliases": [ + "aland_islands" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "🇦🇿" + , "description": "flag: Azerbaijan" + , "category": "Flags" + , "aliases": [ + "azerbaijan" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇧🇦" + , "description": "flag: Bosnia & Herzegovina" + , "category": "Flags" + , "aliases": [ + "bosnia_herzegovina" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇧🇧" + , "description": "flag: Barbados" + , "category": "Flags" + , "aliases": [ + "barbados" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇧🇩" + , "description": "flag: Bangladesh" + , "category": "Flags" + , "aliases": [ + "bangladesh" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇧🇪" + , "description": "flag: Belgium" + , "category": "Flags" + , "aliases": [ + "belgium" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇧🇫" + , "description": "flag: Burkina Faso" + , "category": "Flags" + , "aliases": [ + "burkina_faso" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇧🇬" + , "description": "flag: Bulgaria" + , "category": "Flags" + , "aliases": [ + "bulgaria" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇧🇭" + , "description": "flag: Bahrain" + , "category": "Flags" + , "aliases": [ + "bahrain" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇧🇮" + , "description": "flag: Burundi" + , "category": "Flags" + , "aliases": [ + "burundi" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇧🇯" + , "description": "flag: Benin" + , "category": "Flags" + , "aliases": [ + "benin" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇧🇱" + , "description": "flag: St. Barthélemy" + , "category": "Flags" + , "aliases": [ + "st_barthelemy" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "🇧🇲" + , "description": "flag: Bermuda" + , "category": "Flags" + , "aliases": [ + "bermuda" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇧🇳" + , "description": "flag: Brunei" + , "category": "Flags" + , "aliases": [ + "brunei" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇧🇴" + , "description": "flag: Bolivia" + , "category": "Flags" + , "aliases": [ + "bolivia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇧🇶" + , "description": "flag: Caribbean Netherlands" + , "category": "Flags" + , "aliases": [ + "caribbean_netherlands" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "🇧🇷" + , "description": "flag: Brazil" + , "category": "Flags" + , "aliases": [ + "brazil" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇧🇸" + , "description": "flag: Bahamas" + , "category": "Flags" + , "aliases": [ + "bahamas" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇧🇹" + , "description": "flag: Bhutan" + , "category": "Flags" + , "aliases": [ + "bhutan" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇧🇻" + , "description": "flag: Bouvet Island" + , "category": "Flags" + , "aliases": [ + "bouvet_island" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🇧🇼" + , "description": "flag: Botswana" + , "category": "Flags" + , "aliases": [ + "botswana" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇧🇾" + , "description": "flag: Belarus" + , "category": "Flags" + , "aliases": [ + "belarus" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇧🇿" + , "description": "flag: Belize" + , "category": "Flags" + , "aliases": [ + "belize" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇨🇦" + , "description": "flag: Canada" + , "category": "Flags" + , "aliases": [ + "canada" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇨🇨" + , "description": "flag: Cocos (Keeling) Islands" + , "category": "Flags" + , "aliases": [ + "cocos_islands" + ] + , "tags": [ + "keeling" + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "🇨🇩" + , "description": "flag: Congo - Kinshasa" + , "category": "Flags" + , "aliases": [ + "congo_kinshasa" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇨🇫" + , "description": "flag: Central African Republic" + , "category": "Flags" + , "aliases": [ + "central_african_republic" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇨🇬" + , "description": "flag: Congo - Brazzaville" + , "category": "Flags" + , "aliases": [ + "congo_brazzaville" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇨🇭" + , "description": "flag: Switzerland" + , "category": "Flags" + , "aliases": [ + "switzerland" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇨🇮" + , "description": "flag: Côte d’Ivoire" + , "category": "Flags" + , "aliases": [ + "cote_divoire" + ] + , "tags": [ + "ivory" + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇨🇰" + , "description": "flag: Cook Islands" + , "category": "Flags" + , "aliases": [ + "cook_islands" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇨🇱" + , "description": "flag: Chile" + , "category": "Flags" + , "aliases": [ + "chile" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇨🇲" + , "description": "flag: Cameroon" + , "category": "Flags" + , "aliases": [ + "cameroon" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇨🇳" + , "description": "flag: China" + , "category": "Flags" + , "aliases": [ + "cn" + ] + , "tags": [ + "china" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🇨🇴" + , "description": "flag: Colombia" + , "category": "Flags" + , "aliases": [ + "colombia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇨🇵" + , "description": "flag: Clipperton Island" + , "category": "Flags" + , "aliases": [ + "clipperton_island" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🇨🇷" + , "description": "flag: Costa Rica" + , "category": "Flags" + , "aliases": [ + "costa_rica" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇨🇺" + , "description": "flag: Cuba" + , "category": "Flags" + , "aliases": [ + "cuba" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇨🇻" + , "description": "flag: Cape Verde" + , "category": "Flags" + , "aliases": [ + "cape_verde" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇨🇼" + , "description": "flag: Curaçao" + , "category": "Flags" + , "aliases": [ + "curacao" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇨🇽" + , "description": "flag: Christmas Island" + , "category": "Flags" + , "aliases": [ + "christmas_island" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "🇨🇾" + , "description": "flag: Cyprus" + , "category": "Flags" + , "aliases": [ + "cyprus" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇨🇿" + , "description": "flag: Czechia" + , "category": "Flags" + , "aliases": [ + "czech_republic" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇩🇪" + , "description": "flag: Germany" + , "category": "Flags" + , "aliases": [ + "de" + ] + , "tags": [ + "flag" + , "germany" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🇩🇬" + , "description": "flag: Diego Garcia" + , "category": "Flags" + , "aliases": [ + "diego_garcia" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🇩🇯" + , "description": "flag: Djibouti" + , "category": "Flags" + , "aliases": [ + "djibouti" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇩🇰" + , "description": "flag: Denmark" + , "category": "Flags" + , "aliases": [ + "denmark" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇩🇲" + , "description": "flag: Dominica" + , "category": "Flags" + , "aliases": [ + "dominica" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇩🇴" + , "description": "flag: Dominican Republic" + , "category": "Flags" + , "aliases": [ + "dominican_republic" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇩🇿" + , "description": "flag: Algeria" + , "category": "Flags" + , "aliases": [ + "algeria" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇪🇦" + , "description": "flag: Ceuta & Melilla" + , "category": "Flags" + , "aliases": [ + "ceuta_melilla" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🇪🇨" + , "description": "flag: Ecuador" + , "category": "Flags" + , "aliases": [ + "ecuador" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇪🇪" + , "description": "flag: Estonia" + , "category": "Flags" + , "aliases": [ + "estonia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇪🇬" + , "description": "flag: Egypt" + , "category": "Flags" + , "aliases": [ + "egypt" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇪🇭" + , "description": "flag: Western Sahara" + , "category": "Flags" + , "aliases": [ + "western_sahara" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "🇪🇷" + , "description": "flag: Eritrea" + , "category": "Flags" + , "aliases": [ + "eritrea" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇪🇸" + , "description": "flag: Spain" + , "category": "Flags" + , "aliases": [ + "es" + ] + , "tags": [ + "spain" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🇪🇹" + , "description": "flag: Ethiopia" + , "category": "Flags" + , "aliases": [ + "ethiopia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇪🇺" + , "description": "flag: European Union" + , "category": "Flags" + , "aliases": [ + "eu" + , "european_union" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "🇫🇮" + , "description": "flag: Finland" + , "category": "Flags" + , "aliases": [ + "finland" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇫🇯" + , "description": "flag: Fiji" + , "category": "Flags" + , "aliases": [ + "fiji" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇫🇰" + , "description": "flag: Falkland Islands" + , "category": "Flags" + , "aliases": [ + "falkland_islands" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "🇫🇲" + , "description": "flag: Micronesia" + , "category": "Flags" + , "aliases": [ + "micronesia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "🇫🇴" + , "description": "flag: Faroe Islands" + , "category": "Flags" + , "aliases": [ + "faroe_islands" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇫🇷" + , "description": "flag: France" + , "category": "Flags" + , "aliases": [ + "fr" + ] + , "tags": [ + "france" + , "french" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🇬🇦" + , "description": "flag: Gabon" + , "category": "Flags" + , "aliases": [ + "gabon" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇬🇧" + , "description": "flag: United Kingdom" + , "category": "Flags" + , "aliases": [ + "gb" + , "uk" + ] + , "tags": [ + "flag" + , "british" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🇬🇩" + , "description": "flag: Grenada" + , "category": "Flags" + , "aliases": [ + "grenada" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇬🇪" + , "description": "flag: Georgia" + , "category": "Flags" + , "aliases": [ + "georgia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇬🇫" + , "description": "flag: French Guiana" + , "category": "Flags" + , "aliases": [ + "french_guiana" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇬🇬" + , "description": "flag: Guernsey" + , "category": "Flags" + , "aliases": [ + "guernsey" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "🇬🇭" + , "description": "flag: Ghana" + , "category": "Flags" + , "aliases": [ + "ghana" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇬🇮" + , "description": "flag: Gibraltar" + , "category": "Flags" + , "aliases": [ + "gibraltar" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇬🇱" + , "description": "flag: Greenland" + , "category": "Flags" + , "aliases": [ + "greenland" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "🇬🇲" + , "description": "flag: Gambia" + , "category": "Flags" + , "aliases": [ + "gambia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇬🇳" + , "description": "flag: Guinea" + , "category": "Flags" + , "aliases": [ + "guinea" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇬🇵" + , "description": "flag: Guadeloupe" + , "category": "Flags" + , "aliases": [ + "guadeloupe" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "🇬🇶" + , "description": "flag: Equatorial Guinea" + , "category": "Flags" + , "aliases": [ + "equatorial_guinea" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇬🇷" + , "description": "flag: Greece" + , "category": "Flags" + , "aliases": [ + "greece" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇬🇸" + , "description": "flag: South Georgia & South Sandwich Islands" + , "category": "Flags" + , "aliases": [ + "south_georgia_south_sandwich_islands" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "🇬🇹" + , "description": "flag: Guatemala" + , "category": "Flags" + , "aliases": [ + "guatemala" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇬🇺" + , "description": "flag: Guam" + , "category": "Flags" + , "aliases": [ + "guam" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇬🇼" + , "description": "flag: Guinea-Bissau" + , "category": "Flags" + , "aliases": [ + "guinea_bissau" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇬🇾" + , "description": "flag: Guyana" + , "category": "Flags" + , "aliases": [ + "guyana" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇭🇰" + , "description": "flag: Hong Kong SAR China" + , "category": "Flags" + , "aliases": [ + "hong_kong" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇭🇲" + , "description": "flag: Heard & McDonald Islands" + , "category": "Flags" + , "aliases": [ + "heard_mcdonald_islands" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🇭🇳" + , "description": "flag: Honduras" + , "category": "Flags" + , "aliases": [ + "honduras" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇭🇷" + , "description": "flag: Croatia" + , "category": "Flags" + , "aliases": [ + "croatia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇭🇹" + , "description": "flag: Haiti" + , "category": "Flags" + , "aliases": [ + "haiti" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇭🇺" + , "description": "flag: Hungary" + , "category": "Flags" + , "aliases": [ + "hungary" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇮🇨" + , "description": "flag: Canary Islands" + , "category": "Flags" + , "aliases": [ + "canary_islands" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "🇮🇩" + , "description": "flag: Indonesia" + , "category": "Flags" + , "aliases": [ + "indonesia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇮🇪" + , "description": "flag: Ireland" + , "category": "Flags" + , "aliases": [ + "ireland" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇮🇱" + , "description": "flag: Israel" + , "category": "Flags" + , "aliases": [ + "israel" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇮🇲" + , "description": "flag: Isle of Man" + , "category": "Flags" + , "aliases": [ + "isle_of_man" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "🇮🇳" + , "description": "flag: India" + , "category": "Flags" + , "aliases": [ + "india" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇮🇴" + , "description": "flag: British Indian Ocean Territory" + , "category": "Flags" + , "aliases": [ + "british_indian_ocean_territory" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "🇮🇶" + , "description": "flag: Iraq" + , "category": "Flags" + , "aliases": [ + "iraq" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇮🇷" + , "description": "flag: Iran" + , "category": "Flags" + , "aliases": [ + "iran" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇮🇸" + , "description": "flag: Iceland" + , "category": "Flags" + , "aliases": [ + "iceland" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇮🇹" + , "description": "flag: Italy" + , "category": "Flags" + , "aliases": [ + "it" + ] + , "tags": [ + "italy" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🇯🇪" + , "description": "flag: Jersey" + , "category": "Flags" + , "aliases": [ + "jersey" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "🇯🇲" + , "description": "flag: Jamaica" + , "category": "Flags" + , "aliases": [ + "jamaica" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇯🇴" + , "description": "flag: Jordan" + , "category": "Flags" + , "aliases": [ + "jordan" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇯🇵" + , "description": "flag: Japan" + , "category": "Flags" + , "aliases": [ + "jp" + ] + , "tags": [ + "japan" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🇰🇪" + , "description": "flag: Kenya" + , "category": "Flags" + , "aliases": [ + "kenya" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇰🇬" + , "description": "flag: Kyrgyzstan" + , "category": "Flags" + , "aliases": [ + "kyrgyzstan" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇰🇭" + , "description": "flag: Cambodia" + , "category": "Flags" + , "aliases": [ + "cambodia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇰🇮" + , "description": "flag: Kiribati" + , "category": "Flags" + , "aliases": [ + "kiribati" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇰🇲" + , "description": "flag: Comoros" + , "category": "Flags" + , "aliases": [ + "comoros" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇰🇳" + , "description": "flag: St. Kitts & Nevis" + , "category": "Flags" + , "aliases": [ + "st_kitts_nevis" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇰🇵" + , "description": "flag: North Korea" + , "category": "Flags" + , "aliases": [ + "north_korea" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇰🇷" + , "description": "flag: South Korea" + , "category": "Flags" + , "aliases": [ + "kr" + ] + , "tags": [ + "korea" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🇰🇼" + , "description": "flag: Kuwait" + , "category": "Flags" + , "aliases": [ + "kuwait" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇰🇾" + , "description": "flag: Cayman Islands" + , "category": "Flags" + , "aliases": [ + "cayman_islands" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇰🇿" + , "description": "flag: Kazakhstan" + , "category": "Flags" + , "aliases": [ + "kazakhstan" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇱🇦" + , "description": "flag: Laos" + , "category": "Flags" + , "aliases": [ + "laos" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇱🇧" + , "description": "flag: Lebanon" + , "category": "Flags" + , "aliases": [ + "lebanon" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇱🇨" + , "description": "flag: St. Lucia" + , "category": "Flags" + , "aliases": [ + "st_lucia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇱🇮" + , "description": "flag: Liechtenstein" + , "category": "Flags" + , "aliases": [ + "liechtenstein" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇱🇰" + , "description": "flag: Sri Lanka" + , "category": "Flags" + , "aliases": [ + "sri_lanka" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇱🇷" + , "description": "flag: Liberia" + , "category": "Flags" + , "aliases": [ + "liberia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇱🇸" + , "description": "flag: Lesotho" + , "category": "Flags" + , "aliases": [ + "lesotho" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇱🇹" + , "description": "flag: Lithuania" + , "category": "Flags" + , "aliases": [ + "lithuania" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇱🇺" + , "description": "flag: Luxembourg" + , "category": "Flags" + , "aliases": [ + "luxembourg" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇱🇻" + , "description": "flag: Latvia" + , "category": "Flags" + , "aliases": [ + "latvia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇱🇾" + , "description": "flag: Libya" + , "category": "Flags" + , "aliases": [ + "libya" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇲🇦" + , "description": "flag: Morocco" + , "category": "Flags" + , "aliases": [ + "morocco" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇲🇨" + , "description": "flag: Monaco" + , "category": "Flags" + , "aliases": [ + "monaco" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "🇲🇩" + , "description": "flag: Moldova" + , "category": "Flags" + , "aliases": [ + "moldova" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇲🇪" + , "description": "flag: Montenegro" + , "category": "Flags" + , "aliases": [ + "montenegro" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇲🇫" + , "description": "flag: St. Martin" + , "category": "Flags" + , "aliases": [ + "st_martin" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🇲🇬" + , "description": "flag: Madagascar" + , "category": "Flags" + , "aliases": [ + "madagascar" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇲🇭" + , "description": "flag: Marshall Islands" + , "category": "Flags" + , "aliases": [ + "marshall_islands" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "🇲🇰" + , "description": "flag: Macedonia" + , "category": "Flags" + , "aliases": [ + "macedonia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇲🇱" + , "description": "flag: Mali" + , "category": "Flags" + , "aliases": [ + "mali" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇲🇲" + , "description": "flag: Myanmar (Burma)" + , "category": "Flags" + , "aliases": [ + "myanmar" + ] + , "tags": [ + "burma" + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇲🇳" + , "description": "flag: Mongolia" + , "category": "Flags" + , "aliases": [ + "mongolia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇲🇴" + , "description": "flag: Macao SAR China" + , "category": "Flags" + , "aliases": [ + "macau" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇲🇵" + , "description": "flag: Northern Mariana Islands" + , "category": "Flags" + , "aliases": [ + "northern_mariana_islands" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇲🇶" + , "description": "flag: Martinique" + , "category": "Flags" + , "aliases": [ + "martinique" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "🇲🇷" + , "description": "flag: Mauritania" + , "category": "Flags" + , "aliases": [ + "mauritania" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇲🇸" + , "description": "flag: Montserrat" + , "category": "Flags" + , "aliases": [ + "montserrat" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇲🇹" + , "description": "flag: Malta" + , "category": "Flags" + , "aliases": [ + "malta" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇲🇺" + , "description": "flag: Mauritius" + , "category": "Flags" + , "aliases": [ + "mauritius" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "🇲🇻" + , "description": "flag: Maldives" + , "category": "Flags" + , "aliases": [ + "maldives" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇲🇼" + , "description": "flag: Malawi" + , "category": "Flags" + , "aliases": [ + "malawi" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇲🇽" + , "description": "flag: Mexico" + , "category": "Flags" + , "aliases": [ + "mexico" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇲🇾" + , "description": "flag: Malaysia" + , "category": "Flags" + , "aliases": [ + "malaysia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇲🇿" + , "description": "flag: Mozambique" + , "category": "Flags" + , "aliases": [ + "mozambique" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇳🇦" + , "description": "flag: Namibia" + , "category": "Flags" + , "aliases": [ + "namibia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇳🇨" + , "description": "flag: New Caledonia" + , "category": "Flags" + , "aliases": [ + "new_caledonia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇳🇪" + , "description": "flag: Niger" + , "category": "Flags" + , "aliases": [ + "niger" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇳🇫" + , "description": "flag: Norfolk Island" + , "category": "Flags" + , "aliases": [ + "norfolk_island" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "🇳🇬" + , "description": "flag: Nigeria" + , "category": "Flags" + , "aliases": [ + "nigeria" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇳🇮" + , "description": "flag: Nicaragua" + , "category": "Flags" + , "aliases": [ + "nicaragua" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇳🇱" + , "description": "flag: Netherlands" + , "category": "Flags" + , "aliases": [ + "netherlands" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇳🇴" + , "description": "flag: Norway" + , "category": "Flags" + , "aliases": [ + "norway" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇳🇵" + , "description": "flag: Nepal" + , "category": "Flags" + , "aliases": [ + "nepal" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇳🇷" + , "description": "flag: Nauru" + , "category": "Flags" + , "aliases": [ + "nauru" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "🇳🇺" + , "description": "flag: Niue" + , "category": "Flags" + , "aliases": [ + "niue" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇳🇿" + , "description": "flag: New Zealand" + , "category": "Flags" + , "aliases": [ + "new_zealand" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇴🇲" + , "description": "flag: Oman" + , "category": "Flags" + , "aliases": [ + "oman" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇵🇦" + , "description": "flag: Panama" + , "category": "Flags" + , "aliases": [ + "panama" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇵🇪" + , "description": "flag: Peru" + , "category": "Flags" + , "aliases": [ + "peru" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇵🇫" + , "description": "flag: French Polynesia" + , "category": "Flags" + , "aliases": [ + "french_polynesia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "🇵🇬" + , "description": "flag: Papua New Guinea" + , "category": "Flags" + , "aliases": [ + "papua_new_guinea" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇵🇭" + , "description": "flag: Philippines" + , "category": "Flags" + , "aliases": [ + "philippines" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇵🇰" + , "description": "flag: Pakistan" + , "category": "Flags" + , "aliases": [ + "pakistan" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇵🇱" + , "description": "flag: Poland" + , "category": "Flags" + , "aliases": [ + "poland" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇵🇲" + , "description": "flag: St. Pierre & Miquelon" + , "category": "Flags" + , "aliases": [ + "st_pierre_miquelon" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "🇵🇳" + , "description": "flag: Pitcairn Islands" + , "category": "Flags" + , "aliases": [ + "pitcairn_islands" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "🇵🇷" + , "description": "flag: Puerto Rico" + , "category": "Flags" + , "aliases": [ + "puerto_rico" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇵🇸" + , "description": "flag: Palestinian Territories" + , "category": "Flags" + , "aliases": [ + "palestinian_territories" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇵🇹" + , "description": "flag: Portugal" + , "category": "Flags" + , "aliases": [ + "portugal" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇵🇼" + , "description": "flag: Palau" + , "category": "Flags" + , "aliases": [ + "palau" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇵🇾" + , "description": "flag: Paraguay" + , "category": "Flags" + , "aliases": [ + "paraguay" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇶🇦" + , "description": "flag: Qatar" + , "category": "Flags" + , "aliases": [ + "qatar" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇷🇪" + , "description": "flag: Réunion" + , "category": "Flags" + , "aliases": [ + "reunion" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "🇷🇴" + , "description": "flag: Romania" + , "category": "Flags" + , "aliases": [ + "romania" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇷🇸" + , "description": "flag: Serbia" + , "category": "Flags" + , "aliases": [ + "serbia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇷🇺" + , "description": "flag: Russia" + , "category": "Flags" + , "aliases": [ + "ru" + ] + , "tags": [ + "russia" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🇷🇼" + , "description": "flag: Rwanda" + , "category": "Flags" + , "aliases": [ + "rwanda" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇸🇦" + , "description": "flag: Saudi Arabia" + , "category": "Flags" + , "aliases": [ + "saudi_arabia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇸🇧" + , "description": "flag: Solomon Islands" + , "category": "Flags" + , "aliases": [ + "solomon_islands" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇸🇨" + , "description": "flag: Seychelles" + , "category": "Flags" + , "aliases": [ + "seychelles" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇸🇩" + , "description": "flag: Sudan" + , "category": "Flags" + , "aliases": [ + "sudan" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇸🇪" + , "description": "flag: Sweden" + , "category": "Flags" + , "aliases": [ + "sweden" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇸🇬" + , "description": "flag: Singapore" + , "category": "Flags" + , "aliases": [ + "singapore" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇸🇭" + , "description": "flag: St. Helena" + , "category": "Flags" + , "aliases": [ + "st_helena" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "🇸🇮" + , "description": "flag: Slovenia" + , "category": "Flags" + , "aliases": [ + "slovenia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇸🇯" + , "description": "flag: Svalbard & Jan Mayen" + , "category": "Flags" + , "aliases": [ + "svalbard_jan_mayen" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🇸🇰" + , "description": "flag: Slovakia" + , "category": "Flags" + , "aliases": [ + "slovakia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇸🇱" + , "description": "flag: Sierra Leone" + , "category": "Flags" + , "aliases": [ + "sierra_leone" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇸🇲" + , "description": "flag: San Marino" + , "category": "Flags" + , "aliases": [ + "san_marino" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇸🇳" + , "description": "flag: Senegal" + , "category": "Flags" + , "aliases": [ + "senegal" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇸🇴" + , "description": "flag: Somalia" + , "category": "Flags" + , "aliases": [ + "somalia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇸🇷" + , "description": "flag: Suriname" + , "category": "Flags" + , "aliases": [ + "suriname" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇸🇸" + , "description": "flag: South Sudan" + , "category": "Flags" + , "aliases": [ + "south_sudan" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇸🇹" + , "description": "flag: São Tomé & Príncipe" + , "category": "Flags" + , "aliases": [ + "sao_tome_principe" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇸🇻" + , "description": "flag: El Salvador" + , "category": "Flags" + , "aliases": [ + "el_salvador" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇸🇽" + , "description": "flag: Sint Maarten" + , "category": "Flags" + , "aliases": [ + "sint_maarten" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇸🇾" + , "description": "flag: Syria" + , "category": "Flags" + , "aliases": [ + "syria" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇸🇿" + , "description": "flag: Eswatini" + , "category": "Flags" + , "aliases": [ + "swaziland" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇹🇦" + , "description": "flag: Tristan da Cunha" + , "category": "Flags" + , "aliases": [ + "tristan_da_cunha" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🇹🇨" + , "description": "flag: Turks & Caicos Islands" + , "category": "Flags" + , "aliases": [ + "turks_caicos_islands" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇹🇩" + , "description": "flag: Chad" + , "category": "Flags" + , "aliases": [ + "chad" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "🇹🇫" + , "description": "flag: French Southern Territories" + , "category": "Flags" + , "aliases": [ + "french_southern_territories" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇹🇬" + , "description": "flag: Togo" + , "category": "Flags" + , "aliases": [ + "togo" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇹🇭" + , "description": "flag: Thailand" + , "category": "Flags" + , "aliases": [ + "thailand" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇹🇯" + , "description": "flag: Tajikistan" + , "category": "Flags" + , "aliases": [ + "tajikistan" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇹🇰" + , "description": "flag: Tokelau" + , "category": "Flags" + , "aliases": [ + "tokelau" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "🇹🇱" + , "description": "flag: Timor-Leste" + , "category": "Flags" + , "aliases": [ + "timor_leste" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇹🇲" + , "description": "flag: Turkmenistan" + , "category": "Flags" + , "aliases": [ + "turkmenistan" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇹🇳" + , "description": "flag: Tunisia" + , "category": "Flags" + , "aliases": [ + "tunisia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇹🇴" + , "description": "flag: Tonga" + , "category": "Flags" + , "aliases": [ + "tonga" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇹🇷" + , "description": "flag: Turkey" + , "category": "Flags" + , "aliases": [ + "tr" + ] + , "tags": [ + "turkey" + ] + , "unicode_version": "8.0" + , "ios_version": "9.1" + } +, { + "emoji": "🇹🇹" + , "description": "flag: Trinidad & Tobago" + , "category": "Flags" + , "aliases": [ + "trinidad_tobago" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇹🇻" + , "description": "flag: Tuvalu" + , "category": "Flags" + , "aliases": [ + "tuvalu" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇹🇼" + , "description": "flag: Taiwan" + , "category": "Flags" + , "aliases": [ + "taiwan" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "🇹🇿" + , "description": "flag: Tanzania" + , "category": "Flags" + , "aliases": [ + "tanzania" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇺🇦" + , "description": "flag: Ukraine" + , "category": "Flags" + , "aliases": [ + "ukraine" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇺🇬" + , "description": "flag: Uganda" + , "category": "Flags" + , "aliases": [ + "uganda" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇺🇲" + , "description": "flag: U.S. Outlying Islands" + , "category": "Flags" + , "aliases": [ + "us_outlying_islands" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🇺🇳" + , "description": "flag: United Nations" + , "category": "Flags" + , "aliases": [ + "united_nations" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🇺🇸" + , "description": "flag: United States" + , "category": "Flags" + , "aliases": [ + "us" + ] + , "tags": [ + "flag" + , "united" + , "america" + ] + , "unicode_version": "6.0" + , "ios_version": "6.0" + } +, { + "emoji": "🇺🇾" + , "description": "flag: Uruguay" + , "category": "Flags" + , "aliases": [ + "uruguay" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇺🇿" + , "description": "flag: Uzbekistan" + , "category": "Flags" + , "aliases": [ + "uzbekistan" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇻🇦" + , "description": "flag: Vatican City" + , "category": "Flags" + , "aliases": [ + "vatican_city" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "🇻🇨" + , "description": "flag: St. Vincent & Grenadines" + , "category": "Flags" + , "aliases": [ + "st_vincent_grenadines" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇻🇪" + , "description": "flag: Venezuela" + , "category": "Flags" + , "aliases": [ + "venezuela" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇻🇬" + , "description": "flag: British Virgin Islands" + , "category": "Flags" + , "aliases": [ + "british_virgin_islands" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇻🇮" + , "description": "flag: U.S. Virgin Islands" + , "category": "Flags" + , "aliases": [ + "us_virgin_islands" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇻🇳" + , "description": "flag: Vietnam" + , "category": "Flags" + , "aliases": [ + "vietnam" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇻🇺" + , "description": "flag: Vanuatu" + , "category": "Flags" + , "aliases": [ + "vanuatu" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇼🇫" + , "description": "flag: Wallis & Futuna" + , "category": "Flags" + , "aliases": [ + "wallis_futuna" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "🇼🇸" + , "description": "flag: Samoa" + , "category": "Flags" + , "aliases": [ + "samoa" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇽🇰" + , "description": "flag: Kosovo" + , "category": "Flags" + , "aliases": [ + "kosovo" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇾🇪" + , "description": "flag: Yemen" + , "category": "Flags" + , "aliases": [ + "yemen" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇾🇹" + , "description": "flag: Mayotte" + , "category": "Flags" + , "aliases": [ + "mayotte" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "9.0" + } +, { + "emoji": "🇿🇦" + , "description": "flag: South Africa" + , "category": "Flags" + , "aliases": [ + "south_africa" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇿🇲" + , "description": "flag: Zambia" + , "category": "Flags" + , "aliases": [ + "zambia" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🇿🇼" + , "description": "flag: Zimbabwe" + , "category": "Flags" + , "aliases": [ + "zimbabwe" + ] + , "tags": [ + ] + , "unicode_version": "6.0" + , "ios_version": "8.3" + } +, { + "emoji": "🏴󠁧󠁢󠁥󠁮󠁧󠁿" + , "description": "flag: England" + , "category": "Flags" + , "aliases": [ + "england" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🏴󠁧󠁢󠁳󠁣󠁴󠁿" + , "description": "flag: Scotland" + , "category": "Flags" + , "aliases": [ + "scotland" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +, { + "emoji": "🏴󠁧󠁢󠁷󠁬󠁳󠁿" + , "description": "flag: Wales" + , "category": "Flags" + , "aliases": [ + "wales" + ] + , "tags": [ + ] + , "unicode_version": "11.0" + , "ios_version": "12.1" + } +] diff --git a/dot_oh-my-zsh/plugins/emoji/update_emoji.py b/dot_oh-my-zsh/plugins/emoji/update_emoji.py new file mode 100644 index 0000000..18b3c06 --- /dev/null +++ b/dot_oh-my-zsh/plugins/emoji/update_emoji.py @@ -0,0 +1,213 @@ +""" +Update Emoji.py +Refeshes OMZ emoji database based on the latest Unicode spec +""" +import re +import json + +spec = open("emoji-data.txt", "r") + +# Regexes +# regex_emoji will return, respectively: +# the code points, its type (status), the actual emoji, and its official name +regex_emoji = r"^([\w ].*?\S)\s*;\s*([\w-]+)\s*#\s*(.*?)\s(\S.*).*$" +# regex_group returns the group of subgroup that a line opens +regex_group = r"^#\s*(group|subgroup):\s*(.*)$" + +headers = """ +# emoji-char-definitions.zsh - Emoji definitions for oh-my-zsh emoji plugin +# +# This file is auto-generated by update_emoji.py. Do not edit it manually. +# +# This contains the definition for: +# $emoji - which maps character names to Unicode characters +# $emoji_flags - maps country names to Unicode flag characters using region +# indicators +# $emoji_mod - maps modifier components to Unicode characters +# $emoji_groups - a single associative array to avoid cluttering up the +# global namespace, and to allow adding additional group +# definitions at run time. The keys are the group names, and +# the values are whitespace-separated lists of emoji +# character names. + +# Main emoji +typeset -gAH emoji +# National flags +typeset -gAH emoji_flags +# Combining modifiers +typeset -gAH emoji_mod +# Emoji groups +typeset -gAH emoji_groups +""" + +####### +# Adding country codes +####### +# This is the only part of this script that relies on an external library +# (country_converter), and is hence commented out by default. +# You can uncomment it to have country codes added as aliases for flag +# emojis. (By default, when you install this extension, country codes are +# included as aliases, but not if you re-run this script without uncommenting.) +# Warning: country_converter is very verbose, and will print warnings all over +# your terminal. + +# import country_converter as coco # pylint: disable=wrong-import-position +# cc = coco.CountryConverter() + +# def country_iso(_all_names, _omz_name): +# """ Using the external library country_converter, +# this function can detect the ISO2 and ISO3 codes +# of the country. It takes as argument the array +# with all the names of the emoji, and returns that array.""" +# omz_no_underscore = re.sub(r'_', r' ', _omz_name) +# iso2 = cc.convert(names=[omz_no_underscore], to='ISO2') +# if iso2 != 'not found': +# _all_names.append(iso2) +# iso3 = cc.convert(names=[omz_no_underscore], to='ISO3') +# _all_names.append(iso3) +# return _all_names + + +####### +# Helper functions +####### + +def code_to_omz(_code_points): + """ Returns a ZSH-compatible Unicode string from the code point(s) """ + return r'\U' + r'\U'.join(_code_points.split(' ')) + +def name_to_omz(_name, _group, _subgroup, _status): + """ Returns a reasonable snake_case name for the emoji. """ + def snake_case(_string): + """ Does the regex work of snake_case """ + remove_dots = re.sub(r'\.\(\)', r'', _string) + replace_ands = re.sub(r'\&', r'and', remove_dots) + remove_whitespace = re.sub(r'[^\#\*\w]', r'_', replace_ands) + return re.sub(r'__', r'_', remove_whitespace) + + shortname = "" + split_at_colon = lambda s: s.split(": ") + # Special treatment by group and subgroup + # If the emoji is a flag, we strip "flag" from its name + if _group == "Flags" and len(split_at_colon(_name)) > 1: + shortname = snake_case(split_at_colon(_name)[1]) + else: + shortname = snake_case(_name) + # Special treatment by status + # Enables us to have every emoji combination, + # even the one that are not officially sanctionned + # and are implemented by, say, only one vendor + if _status == "unqualified": + shortname += "_unqualified" + elif _status == "minimally-qualified": + shortname += "_minimally" + return shortname + +def increment_name(_shortname): + """ Increment the short name by 1. If you get, say, + 'woman_detective_unqualified', it returns + 'woman_detective_unqualified_1', and then + 'woman_detective_unqualified_2', etc. """ + last_char = _shortname[-1] + if last_char.isdigit(): + num = int(last_char) + return _shortname[:-1] + str(num + 1) + return _shortname + "_1" + +######## +# Going through every line +######## + +group, subgroup, short_name_buffer = "", "", "" +emoji_database = [] +for line in spec: + # First, test if this line opens a group or subgroup + group_match = re.findall(regex_group, line) + if group_match != []: + gr_or_sub, name = group_match[0] + if gr_or_sub == "group": + group = name + elif gr_or_sub == "subgroup": + subgroup = name + continue # Moving on... + # Second, test if this line references one emoji + emoji_match = re.findall(regex_emoji, line) + if emoji_match != []: + code_points, status, emoji, name = emoji_match[0] + omz_codes = code_to_omz(code_points) + omz_name = name_to_omz(name, group, subgroup, status) + # If this emoji has the same shortname as the preceding one + if omz_name in short_name_buffer: + omz_name = increment_name(short_name_buffer) + short_name_buffer = omz_name + emoji_database.append( + [omz_codes, status, emoji, omz_name, group, subgroup]) +spec.close() + +######## +# Write to emoji-char-definitions.zsh +######## + +# Aliases for emojis are retrieved through the DB of Gemoji +# Retrieved on Aug 9 2019 from the following URL: +# https://raw.githubusercontent.com/github/gemoji/master/db/emoji.json + +gemoji_db = open("gemoji_db.json") +j = json.load(gemoji_db) +aliases_map = {entry['emoji']: entry['aliases'] for entry in j} +all_omz_names = [emoji_data[3] for emoji_data in emoji_database] + +# Let's begin writing to this file +output = open("emoji-char-definitions.zsh", "w") +output.write(headers) + +emoji_groups = {"fruits": "\n", "vehicles": "\n", "hands": "\n", + "people": "\n", "animals": "\n", "faces": "\n", + "flags": "\n"} + +# First, write every emoji down +for _omz_codes, _status, _emoji, _omz_name, _group, _subgroup in emoji_database: + + # One emoji can be mapped to multiple names (aliases or country codes) + names_for_this_emoji = [_omz_name] + + # Variable that indicates in which map the emoji will be located + emoji_map = "emoji" + if _status == "component": + emoji_map = "emoji_mod" + if _group == "Flags": + emoji_map = "emoji_flags" + # Adding country codes (Optional, see above) + # names_for_this_emoji = country_iso(names_for_this_emoji, _omz_name) + + # Check if there is an alias available in the Gemoji DB + if _emoji in aliases_map.keys(): + for alias in aliases_map[_emoji]: + if alias not in all_omz_names: + names_for_this_emoji.append(alias) + + # And now we write to the definitions file + for one_name in names_for_this_emoji: + output.write(f"{emoji_map}[{one_name}]=$'{_omz_codes}'\n") + + # Storing the emoji in defined subgroups for the next step + if _status == "fully-qualified": + if _subgroup == "food-fruit": + emoji_groups["fruits"] += f" {_omz_name}\n" + elif "transport-" in _subgroup: + emoji_groups["vehicles"] += f" {_omz_name}\n" + elif "hand-" in _subgroup: + emoji_groups["hands"] += f" {_omz_name}\n" + elif "person-" in _subgroup or _subgroup == "family": + emoji_groups["people"] += f" {_omz_name}\n" + elif "animal-" in _subgroup: + emoji_groups["animals"] += f" {_omz_name}\n" + elif "face-" in _subgroup: + emoji_groups["faces"] += f" {_omz_name}\n" + elif _group == "Flags": + emoji_groups["flags"] += f" {_omz_name}\n" + +# Second, write the subgroups to the end of the file +for name, string in emoji_groups.items(): + output.write(f'\nemoji_groups[{name}]="{string}"\n') +output.close() diff --git a/dot_oh-my-zsh/plugins/emotty/README.md b/dot_oh-my-zsh/plugins/emotty/README.md new file mode 100644 index 0000000..ee57170 --- /dev/null +++ b/dot_oh-my-zsh/plugins/emotty/README.md @@ -0,0 +1,39 @@ +# emotty plugin + +This plugin returns an emoji for the current $TTY number so it can be used +in a prompt. + +To use it, add emotty to the plugins array in your zshrc file: +``` +plugins=(... emotty) +``` + +**NOTE:** it requires the [emoji plugin](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/emoji). + +## Usage + +The function `emotty` displays an emoji from the current character set (default: `emoji`), based +on the number associated to the `$TTY`. + +There are different sets of emoji characters available, to choose a different +set, set `$emotty_set` to the name of the set you would like to use, e.g.: +``` +emotty_set=nature +``` + +### Character Sets + +- emoji +- loral +- love +- nature +- stellar +- zodiac + +Use the `display_emotty` function to list the emojis in the current character set, or +the character set passed as the first argument. For example: + +``` +$ display_emotty zodiac + +``` diff --git a/dot_oh-my-zsh/plugins/emotty/emotty.plugin.zsh b/dot_oh-my-zsh/plugins/emotty/emotty.plugin.zsh new file mode 100644 index 0000000..661169a --- /dev/null +++ b/dot_oh-my-zsh/plugins/emotty/emotty.plugin.zsh @@ -0,0 +1,55 @@ +# ------------------------------------------------------------------------------ +# FILE: emotty.plugin.zsh +# DESCRIPTION: Return an emoji for the current $TTY number. +# AUTHOR: Alexis Hildebrandt (afh[at]surryhill.net) +# VERSION: 1.0.0 +# DEPENDS: emoji plugin +# +# There are different sets of emoji characters available, to choose a different +# set export emotty_set to the name of the set you would like to use, e.g.: +# % export emotty_set=nature +# ------------------------------------------------------------------------------ + +# Handle $0 according to the standard: +# https://zdharma-continuum.github.io/Zsh-100-Commits-Club/Zsh-Plugin-Standard.html +0="${${ZERO:-${0:#$ZSH_ARGZERO}}:-${(%):-%N}}" +0="${${(M)0:#/*}:-$PWD/$0}" + +typeset -gAH _emotty_sets +local _emotty_plugin_dir="${0:h}" +source "$_emotty_plugin_dir/emotty_stellar_set.zsh" +source "$_emotty_plugin_dir/emotty_floral_set.zsh" +source "$_emotty_plugin_dir/emotty_zodiac_set.zsh" +source "$_emotty_plugin_dir/emotty_nature_set.zsh" +source "$_emotty_plugin_dir/emotty_emoji_set.zsh" +source "$_emotty_plugin_dir/emotty_love_set.zsh" +unset _emotty_plugin_dir + +emotty_default_set=emoji + +function emotty() { + # Use emotty set defined by user, fallback to default + local emotty=${_emotty_sets[${emotty_set:-$emotty_default_set}]} + + # Parse tty number via prompt expansion. %l equals: + # - N if tty = /dev/ttyN + # - pts/N if tty = /dev/pts/N + local tty=${${(%):-%l}##pts/} + # Normalize it to an emotty set index + (( tty = (tty % ${#${=emotty}}) + 1 )) + + local character_name=${${=emotty}[tty]} + echo "${emoji[${character_name}]}${emoji2[emoji_style]}" +} + +function display_emotty() { + local name=${1:-$emotty_set} + echo $name + for i in ${=_emotty_sets[$name]}; do + printf "${emoji[$i]}${emoji2[emoji_style]} " + done + print + for i in ${=_emotty_sets[$name]}; do + print "${emoji[$i]}${emoji2[emoji_style]} = $i" + done +} diff --git a/dot_oh-my-zsh/plugins/emotty/emotty_emoji_set.zsh b/dot_oh-my-zsh/plugins/emotty/emotty_emoji_set.zsh new file mode 100644 index 0000000..00e3171 --- /dev/null +++ b/dot_oh-my-zsh/plugins/emotty/emotty_emoji_set.zsh @@ -0,0 +1,24 @@ +#!/usr/bin/env zsh +# vim:ft=zsh ts=2 sw=2 sts=2 + +_emotty_sets[emoji]=" + crystal_ball + ghost + jack_o_lantern + see_no_evil_monkey + hear_no_evil_monkey + speak_no_evil_monkey + smiling_cat_face_with_open_mouth + extraterrestrial_alien + rocket + billiards + bomb + pill + japanese_symbol_for_beginner + direct_hit + cyclone + diamond_shape_with_a_dot_inside + sparkle + eight_spoked_asterisk + eight_pointed_black_star + " diff --git a/dot_oh-my-zsh/plugins/emotty/emotty_floral_set.zsh b/dot_oh-my-zsh/plugins/emotty/emotty_floral_set.zsh new file mode 100644 index 0000000..f761fea --- /dev/null +++ b/dot_oh-my-zsh/plugins/emotty/emotty_floral_set.zsh @@ -0,0 +1,18 @@ +#!/usr/bin/env zsh +# vim:ft=zsh ts=2 sw=2 sts=2 + +_emotty_sets[floral]=" + hibiscus + cherry_blossom + blossom + sunflower + bouquet + tulip + rose + four_leaf_clover + seedling + herb + palm_tree + evergreen_tree + deciduous_tree + " diff --git a/dot_oh-my-zsh/plugins/emotty/emotty_love_set.zsh b/dot_oh-my-zsh/plugins/emotty/emotty_love_set.zsh new file mode 100644 index 0000000..8f19e69 --- /dev/null +++ b/dot_oh-my-zsh/plugins/emotty/emotty_love_set.zsh @@ -0,0 +1,34 @@ +#!/usr/bin/env zsh +# vim:ft=zsh ts=2 sw=2 sts=2 + +# Note: The heavy_black_heart emoji requires $emoji2[emoji_style] +# to be rendered as the emoji red heart. +_emotty_sets[love]=" + green_heart + blue_heart + purple_heart + yellow_heart + heavy_black_heart + broken_heart + heart_with_arrow + heart_with_ribbon + sparkling_heart + two_hearts + revolving_hearts + growing_heart + beating_heart + heart_decoration + couple_with_heart + kiss + man_and_woman_holding_hands + two_women_holding_hands + two_men_holding_hands + kiss_mark + smiling_face_with_heart_shaped_eyes + kissing_face + face_throwing_a_kiss + kissing_face_with_smiling_eyes + kissing_face_with_closed_eyes + smiling_cat_face_with_heart_shaped_eyes + kissing_cat_face_with_closed_eyes + " diff --git a/dot_oh-my-zsh/plugins/emotty/emotty_nature_set.zsh b/dot_oh-my-zsh/plugins/emotty/emotty_nature_set.zsh new file mode 100644 index 0000000..8dab4c1 --- /dev/null +++ b/dot_oh-my-zsh/plugins/emotty/emotty_nature_set.zsh @@ -0,0 +1,58 @@ +#!/usr/bin/env zsh +# vim:ft=zsh ts=2 sw=2 sts=2 + +_emotty_sets[nature]=" + mouse_face + hamster_face + rabbit_face + dog_face + cat_face + tiger_face + bear_face + monkey_face + koala + panda_face + chicken + baby_chick + bird + penguin + cow_face + pig_face + frog_face + boar + wolf_face + horse_face + snail + bug + ant + honeybee + lady_beetle + spouting_whale + dolphin + octopus + fish + tropical_fish + snake + turtle + lemon + tangerine + peach + mushroom + tomato + strawberry + red_apple + cherries + grapes + aubergine + watermelon + banana + pineapple + melon + pear + green_apple + ear_of_maize + sunflower + seedling + herb + four_leaf_clover + " diff --git a/dot_oh-my-zsh/plugins/emotty/emotty_stellar_set.zsh b/dot_oh-my-zsh/plugins/emotty/emotty_stellar_set.zsh new file mode 100644 index 0000000..8e7e610 --- /dev/null +++ b/dot_oh-my-zsh/plugins/emotty/emotty_stellar_set.zsh @@ -0,0 +1,25 @@ +#!/usr/bin/env zsh +# vim:ft=zsh ts=2 sw=2 sts=2 + +# NOTE: The following emoji show as $'character' in the title +# white_medium_star +# sparkles +# dizzy_symbol + +_emotty_sets[stellar]=" + full_moon_symbol + waning_gibbous_moon_symbol + waning_crescent_moon_symbol + last_quarter_moon_symbol + new_moon_symbol + new_moon_with_face + waxing_crescent_moon_symbol + first_quarter_moon_symbol + waxing_gibbous_moon_symbol + full_moon_with_face + sun_with_face + glowing_star + crescent_moon + first_quarter_moon_with_face + last_quarter_moon_with_face + " diff --git a/dot_oh-my-zsh/plugins/emotty/emotty_zodiac_set.zsh b/dot_oh-my-zsh/plugins/emotty/emotty_zodiac_set.zsh new file mode 100644 index 0000000..bde6e3d --- /dev/null +++ b/dot_oh-my-zsh/plugins/emotty/emotty_zodiac_set.zsh @@ -0,0 +1,29 @@ +#!/usr/bin/env zsh +# vim:ft=zsh ts=2 sw=2 sts=2 + +_emotty_sets[zodiac]=" + aries + taurus + gemini + cancer + leo + virgo + libra + scorpius + sagittarius + capricorn + aquarius + pisces + rat + ox + tiger + rabbit + dragon + snake + horse + goat + monkey + rooster + dog + pig + " diff --git a/dot_oh-my-zsh/plugins/encode64/README.md b/dot_oh-my-zsh/plugins/encode64/README.md new file mode 100644 index 0000000..7cdf8c3 --- /dev/null +++ b/dot_oh-my-zsh/plugins/encode64/README.md @@ -0,0 +1,73 @@ +# encode64 + +Alias plugin for encoding or decoding using `base64` command. + +To use it, add `encode64` to the plugins array in your zshrc file: + +```zsh +plugins=(... encode64) +``` + +## Functions and Aliases + +| Function | Alias | Description | +| -------------- | ------ | -------------------------------------- | +| `encode64` | `e64` | Encodes given data to base64 | +| `encodefile64` | `ef64` | Encodes given file's content to base64 | +| `decode64` | `d64` | Decodes given data from base64 | + +## Usage and examples + +### Encoding + +- From parameter + + ```console + $ encode64 "oh-my-zsh" + b2gtbXktenNo + $ e64 "oh-my-zsh" + b2gtbXktenNo + ``` + +- From piping + + ```console + $ echo "oh-my-zsh" | encode64 + b2gtbXktenNo== + $ echo "oh-my-zsh" | e64 + b2gtbXktenNo== + ``` + +### Encoding a file + +Encode a file's contents to base64 and save output to text file. +**NOTE:** Takes provided file and saves encoded content as new file with `.txt` extension + +- From parameter + + ```console + $ encodefile64 ohmyzsh.icn + ohmyzsh.icn's content encoded in base64 and saved as ohmyzsh.icn.txt + $ ef64 "oh-my-zsh" + ohmyzsh.icn's content encoded in base64 and saved as ohmyzsh.icn.txt + ``` + +### Decoding + +- From parameter + + ```console + $ decode64 b2gtbXktenNo + oh-my-zsh% + $ d64 b2gtbXktenNo + oh-my-zsh% + ``` + +- From piping + + ```console + $ echo "b2gtbXktenNoCg==" | decode64 + oh-my-zsh + $ echo "b2gtbXktenNoCg==" | d64 + oh-my-zsh + ``` diff --git a/dot_oh-my-zsh/plugins/encode64/encode64.plugin.zsh b/dot_oh-my-zsh/plugins/encode64/encode64.plugin.zsh new file mode 100644 index 0000000..6927f52 --- /dev/null +++ b/dot_oh-my-zsh/plugins/encode64/encode64.plugin.zsh @@ -0,0 +1,27 @@ +encode64() { + if [[ $# -eq 0 ]]; then + cat | base64 + else + printf '%s' $1 | base64 + fi +} + +encodefile64() { + if [[ $# -eq 0 ]]; then + echo "You must provide a filename" + else + base64 -i $1 -o $1.txt + echo "${1}'s content encoded in base64 and saved as ${1}.txt" + fi +} + +decode64() { + if [[ $# -eq 0 ]]; then + cat | base64 --decode + else + printf '%s' $1 | base64 --decode + fi +} +alias e64=encode64 +alias ef64=encodefile64 +alias d64=decode64 diff --git a/dot_oh-my-zsh/plugins/extract/README.md b/dot_oh-my-zsh/plugins/extract/README.md new file mode 100644 index 0000000..44f0b05 --- /dev/null +++ b/dot_oh-my-zsh/plugins/extract/README.md @@ -0,0 +1,60 @@ +# extract plugin + +This plugin defines a function called `extract` that extracts the archive file +you pass it, and it supports a wide variety of archive filetypes. + +This way you don't have to know what specific command extracts a file, you just +do `extract ` and the function takes care of the rest. + +To use it, add `extract` to the plugins array in your zshrc file: + +```zsh +plugins=(... extract) +``` + +## Supported file extensions + +| Extension | Description | +|:------------------|:-------------------------------------| +| `7z` | 7zip file | +| `Z` | Z archive (LZW) | +| `apk` | Android app file | +| `aar` | Android library file | +| `bz2` | Bzip2 file | +| `cab` | Microsoft cabinet archive | +| `cpio` | Cpio archive | +| `deb` | Debian package | +| `ear` | Enterprise Application aRchive | +| `gz` | Gzip file | +| `ipa` | iOS app package | +| `ipsw` | iOS firmware file | +| `jar` | Java Archive | +| `lrz` | LRZ archive | +| `lz4` | LZ4 archive | +| `lzma` | LZMA archive | +| `rar` | WinRAR archive | +| `rpm` | RPM package | +| `sublime-package` | Sublime Text package | +| `tar` | Tarball | +| `tar.bz2` | Tarball with bzip2 compression | +| `tar.gz` | Tarball with gzip compression | +| `tar.lrz` | Tarball with lrzip compression | +| `tar.lz` | Tarball with lzip compression | +| `tar.lz4` | Tarball with lz4 compression | +| `tar.xz` | Tarball with lzma2 compression | +| `tar.zma` | Tarball with lzma compression | +| `tar.zst` | Tarball with zstd compression | +| `tbz` | Tarball with bzip compression | +| `tbz2` | Tarball with bzip2 compression | +| `tgz` | Tarball with gzip compression | +| `tlz` | Tarball with lzma compression | +| `txz` | Tarball with lzma2 compression | +| `tzst` | Tarball with zstd compression | +| `war` | Web Application archive (Java-based) | +| `xpi` | Mozilla XPI module file | +| `xz` | LZMA2 archive | +| `zip` | Zip archive | +| `zst` | Zstandard file (zstd) | + +See [list of archive formats](https://en.wikipedia.org/wiki/List_of_archive_formats) for +more information regarding archive formats. diff --git a/dot_oh-my-zsh/plugins/extract/_extract b/dot_oh-my-zsh/plugins/extract/_extract new file mode 100644 index 0000000..27b099c --- /dev/null +++ b/dot_oh-my-zsh/plugins/extract/_extract @@ -0,0 +1,7 @@ +#compdef extract +#autoload + +_arguments \ + '(-r --remove)'{-r,--remove}'[Remove archive.]' \ + "*::archive file:_files -g '(#i)*.(7z|Z|apk|aar|bz2|cab|cpio|deb|ear|gz|ipa|ipsw|jar|lrz|lz4|lzma|rar|rpm|sublime-package|tar|tar.bz2|tar.gz|tar.lrz|tar.lz|tar.lz4|tar.xz|tar.zma|tar.zst|tbz|tbz2|tgz|tlz|txz|tzst|war|whl|xpi|xz|zip|zst)(-.)'" \ + && return 0 diff --git a/dot_oh-my-zsh/plugins/extract/extract.plugin.zsh b/dot_oh-my-zsh/plugins/extract/extract.plugin.zsh new file mode 100644 index 0000000..563d88c --- /dev/null +++ b/dot_oh-my-zsh/plugins/extract/extract.plugin.zsh @@ -0,0 +1,88 @@ +alias x=extract + +extract() { + setopt localoptions noautopushd + + if (( $# == 0 )); then + cat >&2 <<'EOF' +Usage: extract [-option] [file ...] + +Options: + -r, --remove Remove archive after unpacking. +EOF + fi + + local remove_archive=1 + if [[ "$1" == "-r" ]] || [[ "$1" == "--remove" ]]; then + remove_archive=0 + shift + fi + + local pwd="$PWD" + while (( $# > 0 )); do + if [[ ! -f "$1" ]]; then + echo "extract: '$1' is not a valid file" >&2 + shift + continue + fi + + local success=0 + local extract_dir="${1:t:r}" + local file="$1" full_path="${1:A}" + case "${file:l}" in + (*.tar.gz|*.tgz) + (( $+commands[pigz] )) && { tar -I pigz -xvf "$file" } || tar zxvf "$file" ;; + (*.tar.bz2|*.tbz|*.tbz2) + (( $+commands[pbzip2] )) && { tar -I pbzip2 -xvf "$file" } || tar xvjf "$file" ;; + (*.tar.xz|*.txz) + (( $+commands[pixz] )) && { tar -I pixz -xvf "$file" } || { + tar --xz --help &> /dev/null \ + && tar --xz -xvf "$file" \ + || xzcat "$file" | tar xvf - } ;; + (*.tar.zma|*.tlz) + tar --lzma --help &> /dev/null \ + && tar --lzma -xvf "$file" \ + || lzcat "$file" | tar xvf - ;; + (*.tar.zst|*.tzst) + tar --zstd --help &> /dev/null \ + && tar --zstd -xvf "$file" \ + || zstdcat "$file" | tar xvf - ;; + (*.tar) tar xvf "$file" ;; + (*.tar.lz) (( $+commands[lzip] )) && tar xvf "$file" ;; + (*.tar.lz4) lz4 -c -d "$file" | tar xvf - ;; + (*.tar.lrz) (( $+commands[lrzuntar] )) && lrzuntar "$file" ;; + (*.gz) (( $+commands[pigz] )) && pigz -dk "$file" || gunzip -k "$file" ;; + (*.bz2) bunzip2 "$file" ;; + (*.xz) unxz "$file" ;; + (*.lrz) (( $+commands[lrunzip] )) && lrunzip "$file" ;; + (*.lz4) lz4 -d "$file" ;; + (*.lzma) unlzma "$file" ;; + (*.z) uncompress "$file" ;; + (*.zip|*.war|*.jar|*.ear|*.sublime-package|*.ipa|*.ipsw|*.xpi|*.apk|*.aar|*.whl) unzip "$file" -d "$extract_dir" ;; + (*.rar) unrar x -ad "$file" ;; + (*.rpm) + command mkdir -p "$extract_dir" && builtin cd -q "$extract_dir" \ + && rpm2cpio "$full_path" | cpio --quiet -id ;; + (*.7z) 7za x "$file" ;; + (*.deb) + command mkdir -p "$extract_dir/control" "$extract_dir/data" + builtin cd -q "$extract_dir"; ar vx "$full_path" > /dev/null + builtin cd -q control; extract ../control.tar.* + builtin cd -q ../data; extract ../data.tar.* + builtin cd -q ..; command rm *.tar.* debian-binary ;; + (*.zst) unzstd "$file" ;; + (*.cab) cabextract -d "$extract_dir" "$file" ;; + (*.cpio) cpio -idmvF "$file" ;; + (*) + echo "extract: '$file' cannot be extracted" >&2 + success=1 ;; + esac + + (( success = success > 0 ? success : $? )) + (( success == 0 && remove_archive == 0 )) && rm "$full_path" + shift + + # Go back to original working directory in case we ran cd previously + builtin cd -q "$pwd" + done +} diff --git a/dot_oh-my-zsh/plugins/fabric/README.md b/dot_oh-my-zsh/plugins/fabric/README.md new file mode 100644 index 0000000..f121d2e --- /dev/null +++ b/dot_oh-my-zsh/plugins/fabric/README.md @@ -0,0 +1,9 @@ +# Fabric + +This plugin provides completion for [Fabric](https://www.fabfile.org/). + +To use it add fabric to the plugins array in your zshrc file. + +```zsh +plugins=(... fabric) +``` diff --git a/dot_oh-my-zsh/plugins/fabric/_fab b/dot_oh-my-zsh/plugins/fabric/_fab new file mode 100644 index 0000000..9102dad --- /dev/null +++ b/dot_oh-my-zsh/plugins/fabric/_fab @@ -0,0 +1,69 @@ +#compdef fab +#autoload + +local curcontext=$curcontext state line +declare -A opt_args + +declare -a target_list +target_list=("${(@f)$(fab -l 2>/dev/null | awk '{ + if (NF == 0 || NR == 1) next + if (NF < 2) print $1 + else { + docstring=substr($0, index($0,$2)) + gsub(":", "\\:", docstring) + print $1":"docstring + } +}')}") + +_fab_targets() { + [[ -n "$target_list" ]] || return + _describe -t commands "fabric targets" target_list +} + +output_levels=( + 'status: Status messages, i.e. noting when Fabric is done running, if the user used a keyboard interrupt, or when servers are disconnected from. These messages are almost always relevant and rarely verbose.' + 'aborts: Abort messages. Like status messages, these should really only be turned off when using Fabric as a library, and possibly not even then. Note that even if this output group is turned off, aborts will still occur – there just won’t be any output about why Fabric aborted!' + 'warnings: Warning messages. These are often turned off when one expects a given operation to fail, such as when using grep to test existence of text in a file. If paired with setting env.warn_only to True, this can result in fully silent warnings when remote programs fail. As with aborts, this setting does not control actual warning behavior, only whether warning messages are printed or hidden.' + 'running: Printouts of commands being executed or files transferred, e.g. [myserver] run: ls /var/www. Also controls printing of tasks being run, e.g. [myserver] Executing task ''foo''.' + 'stdout: Local, or remote, stdout, i.e. non-error output from commands.' + 'stderr: Local, or remote, stderr, i.e. error-related output from commands.' + 'user: User-generated output, i.e. local output printed by fabfile code via use of the fastprint or puts functions.' +) + +_arguments -w -S -C \ + '(-)'{-h,--help}'[show this help message and exit]: :->noargs' \ + '(-)'{-V,--version}'[show program''s version number and exit]: :->noargs' \ + '(-)--list[print list of possible commands and exit]: :->noargs' \ + '(-)--shortlist[print non-verbose list of possible commands and exit]: :->noargs' \ + '(--reject-unknown-hosts)--reject-unknown-hosts[reject unknown hosts]' \ + '(--no-pty)--no-pty[do not use pseudo-terminal in run/sudo]' \ + "(-d+ --display=-)"{-d+,--display=-}"[print detailed info about a given command]: :_fab_targets" \ + '(-D --disable-known-hosts)'{-D,--disable-known-hosts}'[do not load user known_hosts file]' \ + '(-r --reject-unknown-hosts)'{-r,--reject-unknown-hosts}'[reject unknown hosts]' \ + '(-u+ --user=-)'{-u+,--user=-}'[username to use when connecting to remote hosts]: :' \ + '(-p+ --password=-)'{-p+,--password=-}'[password for use with authentication and/or sudo]: :' \ + '(-H+ --hosts=-)'{-H+,--hosts=-}'[comma separated list of hosts to operate on]: :' \ + '(-R+ --roles=-)'{-R+,--roles=-}'[comma separated list of roles to operate on]: :' \ + '(-a --no-agent)'{-a,--no-agent}'[don''t use the running SSH agent]' \ + '(-k --no-keys)'{-k,--no-keys}'[don''t load private key files from ~/.ssh/]' \ + '(-w --warn-only)'{-w,--warn-only}'[warn instead of abort, when commands fail]' \ + '-i+[path to SSH private key file. May be repeated]: :_files' \ + "(-f+ --fabfile=)"{-f+,--fabfile=}"[Python module file to import]: :_files -g *.py" \ + '(-c+ --config=-)'{-c+,--config=-}'[specify location of config file to use]: :_files' \ + '(-s+ --shell=-)'{-s+,--shell=-}'[specify a new shell, defaults to ''/bin/bash -l -c'']: :' \ + '(--hide=-)--hide=-[comma-separated list of output levels to hide]: :->levels' \ + '(--show=-)--show=-[comma-separated list of output levels to show]: :->levels' \ + '*::: :->subcmds' && return 0 + +if [[ CURRENT -ge 1 ]]; then + case $state in + noargs) + _message "nothing to complete";; + levels) + _describe -t commands "output levels" output_levels;; + *) + _fab_targets;; + esac + + return +fi diff --git a/dot_oh-my-zsh/plugins/fabric/empty_fabric.plugin.zsh b/dot_oh-my-zsh/plugins/fabric/empty_fabric.plugin.zsh new file mode 100644 index 0000000..e69de29 diff --git a/dot_oh-my-zsh/plugins/fancy-ctrl-z/README.md b/dot_oh-my-zsh/plugins/fancy-ctrl-z/README.md new file mode 100644 index 0000000..f1b1dfa --- /dev/null +++ b/dot_oh-my-zsh/plugins/fancy-ctrl-z/README.md @@ -0,0 +1,14 @@ +# Use Ctrl-Z to switch back to Vim + +I frequently need to execute random commands in my shell. To achieve it I pause +Vim by pressing Ctrl-z, type command and press fg to switch back to Vim. +The fg part really hurts me. I just wanted to hit Ctrl-z once again to get back +to Vim. I could not find a solution, so I developed one on my own that +works wonderfully with ZSH. + +Source: http://sheerun.net/2014/03/21/how-to-boost-your-vim-productivity/ + +Credits: +- original idea by @sheerun +- added to OMZ by @mbologna + diff --git a/dot_oh-my-zsh/plugins/fancy-ctrl-z/fancy-ctrl-z.plugin.zsh b/dot_oh-my-zsh/plugins/fancy-ctrl-z/fancy-ctrl-z.plugin.zsh new file mode 100644 index 0000000..82b9688 --- /dev/null +++ b/dot_oh-my-zsh/plugins/fancy-ctrl-z/fancy-ctrl-z.plugin.zsh @@ -0,0 +1,12 @@ +fancy-ctrl-z () { + if [[ $#BUFFER -eq 0 ]]; then + BUFFER="fg" + zle accept-line -w + else + zle push-input -w + zle clear-screen -w + fi +} +zle -N fancy-ctrl-z +bindkey '^Z' fancy-ctrl-z + diff --git a/dot_oh-my-zsh/plugins/fasd/README.md b/dot_oh-my-zsh/plugins/fasd/README.md new file mode 100644 index 0000000..a5c74e5 --- /dev/null +++ b/dot_oh-my-zsh/plugins/fasd/README.md @@ -0,0 +1,21 @@ +# fasd + +[`Fasd`](https://github.com/clvv/fasd) (pronounced similar to "fast") is a command-line productivity booster. Fasd offers quick access to files and directories for POSIX shells. + +To use it, add `fasd` to the plugins array in your zshrc file: + +```zsh +plugins=(... fasd) +``` + +## Installation + +Please find detailed installation guide [`here`](https://github.com/clvv/fasd#install) + +## Aliases + +| Alias | Command | Description | +|-------|-------------------------------------------|-------------------------------------------------------------| +| v | `fasd -f -e "$EDITOR"` | List frequent/recent files matching the given filename. | +| o | `fasd -a -e xdg-open` | List frequent/recent files and directories matching. | +| j | `fasd_cd -d -i` | cd with interactive selection | diff --git a/dot_oh-my-zsh/plugins/fasd/fasd.plugin.zsh b/dot_oh-my-zsh/plugins/fasd/fasd.plugin.zsh new file mode 100644 index 0000000..6538d09 --- /dev/null +++ b/dot_oh-my-zsh/plugins/fasd/fasd.plugin.zsh @@ -0,0 +1,16 @@ +# check if fasd is installed +if (( ! ${+commands[fasd]} )); then + return +fi + +fasd_cache="${ZSH_CACHE_DIR}/fasd-init-cache" +if [[ "$commands[fasd]" -nt "$fasd_cache" || ! -s "$fasd_cache" ]]; then + fasd --init posix-alias zsh-hook zsh-ccomp zsh-ccomp-install \ + zsh-wcomp zsh-wcomp-install >| "$fasd_cache" +fi +source "$fasd_cache" +unset fasd_cache + +alias v='f -e "$EDITOR"' +alias o='a -e xdg-open' +alias j='zz' diff --git a/dot_oh-my-zsh/plugins/fastfile/README.md b/dot_oh-my-zsh/plugins/fastfile/README.md new file mode 100644 index 0000000..32f619f --- /dev/null +++ b/dot_oh-my-zsh/plugins/fastfile/README.md @@ -0,0 +1,85 @@ +# Fastfile plugin + +This plugin adds a way to reference certain files or folders used frequently using +a global alias or shortcut. + +To use it, add `fastfile` to the plugins array in your zshrc file: + +```zsh +plugins=(... fastfile) +``` + +## Usage + +Example: you access folder `/code/project/backend/database` very frequently. + +First, generate a shortcut with the name `pjdb`: + +```zsh +$ fastfile pjdb /code/project/backend/database +``` + +Next time you want to access it, use `§pjdb`. For example: + +```zsh +$ cd §pjdb +$ subl §pjdb +``` + +where § is the fastfile prefix (see [below](#options) for how to change). + +**Note:** shortcuts with spaces in the name are assigned a global alias +where the spaces have been substituted with underscores (`_`). For example: +a shortcut named `"hello world"` corresponds with `§hello_world`. + +## Functions + +- `fastfile [path/to/file/or/folder]`: generate a shortcut. + If the second argument is not provided, the current directory is used. + +- `fastfile_print `: prints a shortcut, with the format + ` -> `. + +- `fastfile_ls`: lists all shortcuts. + +- `fastfile_rm `: remove a shortcut. + +- `fastfile_sync`: generates the global aliases for the shortcuts. + +### Internal functions + +- `fastfile_resolv `: resolves the location of the shortcut + file, i.e., the file in the fastfile directory where the shortcut path + is stored. + +- `fastfile_get `: get the real path of the shortcut. + +## Aliases + +| Alias | Function | +|--------|------------------| +| ff | `fastfile` | +| ffp | `fastfile_print` | +| ffrm | `fastfile_rm` | +| ffls | `fastfile_ls` | +| ffsync | `fastfile_sync` | + +## Options + +These are options you can set to change certain parts of the plugin. To change +them, add `=` to your zshrc file, before Oh My Zsh is sourced. +For example: `fastfile_var_prefix='@'`. + +- `fastfile_var_prefix`: prefix for the global aliases created. Controls the prefix of the + created global aliases. + **Default:** `§` (section sign), easy to type in a german keyboard via the combination + [`⇧ Shift`+`3`](https://en.wikipedia.org/wiki/German_keyboard_layout#/media/File:KB_Germany.svg), + or using `⌥ Option`+`6` in macOS. + +- `fastfile_dir`: directory where the fastfile shortcuts are stored. Needs to end + with a trailing slash. + **Default:** `$HOME/.fastfile/`. + +## Author + +- [Karolin Varner](https://github.com/koraa) diff --git a/dot_oh-my-zsh/plugins/fastfile/fastfile.plugin.zsh b/dot_oh-my-zsh/plugins/fastfile/fastfile.plugin.zsh new file mode 100644 index 0000000..896fed5 --- /dev/null +++ b/dot_oh-my-zsh/plugins/fastfile/fastfile.plugin.zsh @@ -0,0 +1,128 @@ +########################### +# Settings + +# These can be overwritten any time. +# If they are not set yet, they will be +# overwritten with their default values + +default fastfile_dir "${HOME}/.fastfile" +default fastfile_var_prefix "§" + +########################### +# Impl + +# +# Generate a shortcut +# +# Arguments: +# 1. name - The name of the shortcut (default: name of the file) +# 2. file - The file or directory to make the shortcut for +# STDOUT: +# => fastfile_print +# +function fastfile() { + test "$2" || 2="." + file=$(readlink -f "$2") + + test "$1" || 1="$(basename "$file")" + name=$(echo "$1" | tr " " "_") + + + mkdir -p "${fastfile_dir}" + echo "$file" > "$(fastfile_resolv "$name")" + + fastfile_sync + fastfile_print "$name" +} + +# +# Resolve the location of a shortcut file (the database file, where the value is written!) +# +# Arguments: +# 1. name - The name of the shortcut +# STDOUT: +# The path to the shortcut file +# +function fastfile_resolv() { + echo "${fastfile_dir}/${1}" +} + +# +# Get the real path of a shortcut +# +# Arguments: +# 1. name - The name of the shortcut +# STDOUT: +# The path +# +function fastfile_get() { + cat "$(fastfile_resolv "$1")" +} + +# +# Print a shortcut +# +# Arguments: +# 1. name - The name of the shortcut +# STDOUT: +# Name and value of the shortcut +# +function fastfile_print() { + echo "${fastfile_var_prefix}${1} -> $(fastfile_get "$1")" +} + +# +# List all shortcuts +# +# STDOUT: +# (=> fastfile_print) for each shortcut +# +function fastfile_ls() { + for f in "${fastfile_dir}"/*(N); do + file=$(basename "$f") # To enable simpler handling of spaces in file names + varkey=$(echo "$file" | tr " " "_") + + # Special format for columns + echo "${fastfile_var_prefix}${varkey}|->|$(fastfile_get "$file")" + done | column -t -s "|" +} + +# +# Remove a shortcut +# +# Arguments: +# 1. name - The name of the shortcut (default: name of the file) +# STDOUT: +# => fastfile_print +# +function fastfile_rm() { + fastfile_print "$1" + rm "$(fastfile_resolv "$1")" + unalias "${fastfile_var_prefix}${1}" +} + +# +# Generate the aliases for the shortcuts +# +function fastfile_sync() { + for f in "${fastfile_dir}"/*(N); do + file=$(basename "$f") # To enable simpler handling of spaces in file names + varkey=$(echo "$file" | tr " " "_") + + alias -g "${fastfile_var_prefix}${varkey}"="'$(fastfile_get "$file")'" + done +} + +################################## +# Shortcuts + +alias ff=fastfile +alias ffp=fastfile_print +alias ffrm=fastfile_rm +alias ffls=fastfile_ls +alias ffsync=fastfile_sync + +################################## +# Init + +fastfile_sync diff --git a/dot_oh-my-zsh/plugins/fbterm/README.md b/dot_oh-my-zsh/plugins/fbterm/README.md new file mode 100644 index 0000000..70ce56d --- /dev/null +++ b/dot_oh-my-zsh/plugins/fbterm/README.md @@ -0,0 +1,10 @@ +# fbterm + +This plugin automatically starts [fbterm](https://github.com/zhangyuanwei/fbterm) +if on a real TTY (`/dev/tty*`). + +To use it, add `fbterm` to the plugins array of your zshrc file: + +```zsh +plugins=(... fbterm) +``` diff --git a/dot_oh-my-zsh/plugins/fbterm/fbterm.plugin.zsh b/dot_oh-my-zsh/plugins/fbterm/fbterm.plugin.zsh new file mode 100644 index 0000000..bc25320 --- /dev/null +++ b/dot_oh-my-zsh/plugins/fbterm/fbterm.plugin.zsh @@ -0,0 +1,7 @@ +# start fbterm automatically in /dev/tty* + +if (( ${+commands[fbterm]} )); then + if [[ "$TTY" = /dev/tty* ]] ; then + fbterm && exit + fi +fi diff --git a/dot_oh-my-zsh/plugins/fd/README.md b/dot_oh-my-zsh/plugins/fd/README.md new file mode 100644 index 0000000..f334161 --- /dev/null +++ b/dot_oh-my-zsh/plugins/fd/README.md @@ -0,0 +1,9 @@ +# fd + +This plugin adds completion for the file search tool [`fd`](https://github.com/sharkdp/fd), also known as `fd-find`. + +To use it, add `fd` to the plugins array in your zshrc file: + +```zsh +plugins=(... fd) +``` diff --git a/dot_oh-my-zsh/plugins/fd/_fd b/dot_oh-my-zsh/plugins/fd/_fd new file mode 100644 index 0000000..45b8ca4 --- /dev/null +++ b/dot_oh-my-zsh/plugins/fd/_fd @@ -0,0 +1,273 @@ +#compdef fd + +## +# zsh completion function for fd +# +# Based on ripgrep completion function. +# Originally based on code from the zsh-users project — see copyright notice +# below. + +autoload -U is-at-least + +_fd() { + local curcontext="$curcontext" no='!' ret=1 + local -a context line state state_descr _arguments_options fd_types fd_args + local -A opt_args + + if is-at-least 5.2; then + _arguments_options=( -s -S ) + else + _arguments_options=( -s ) + fi + + fd_types=( + {f,file}'\:"regular files"' + {d,directory}'\:"directories"' + {l,symlink}'\:"symbolic links"' + {e,empty}'\:"empty files or directories"' + {x,executable}'\:"executable (files)"' + {s,socket}'\:"sockets"' + {p,pipe}'\:"named pipes (FIFOs)"' + ) + + # Do not complete rare options unless either the current prefix + # matches one of those options or the user has the `complete-all` + # style set. Note that this prefix check has to be updated manually to account + # for all of the potential negation options listed below! + if + # (--[bpsu]* => match all options marked with '$no') + [[ $PREFIX$SUFFIX == --[bopsu]* ]] || + zstyle -t ":complete:$curcontext:*" complete-all + then + no= + fi + + # We make heavy use of argument groups here to prevent the option specs from + # growing unwieldy. These aren't supported in zsh <5.4, though, so we'll strip + # them out below if necessary. This makes the exclusions inaccurate on those + # older versions, but oh well — it's not that big a deal + fd_args=( + + '(hidden)' # hidden files + {-H,--hidden}'[search hidden files/directories]' + + + '(no-ignore-full)' # all ignore files + '(no-ignore-partial)'{-I,--no-ignore}"[don't respect .(git|fd)ignore and global ignore files]" + $no'(no-ignore-partial)*'{-u,--unrestricted}'[alias for --no-ignore, when repeated also alias for --hidden]' + + + no-ignore-partial # some ignore files + "(no-ignore-full --no-ignore-vcs)--no-ignore-vcs[don't respect .gitignore files]" + "!(no-ignore-full --no-global-ignore-file)--no-global-ignore-file[don't respect the global ignore file]" + $no'(no-ignore-full --no-ignore-parent)--no-ignore-parent[]' + + + '(case)' # case-sensitivity + {-s,--case-sensitive}'[perform a case-sensitive search]' + {-i,--ignore-case}'[perform a case-insensitive search]' + + + '(regex-pattern)' # regex-based search pattern + '(no-regex-pattern)--regex[perform a regex-based search (default)]' + + + '(no-regex-pattern)' # non-regex-based search pattern + {-g,--glob}'[perform a glob-based search]' + {-F,--fixed-strings}'[treat pattern as literal string instead of a regex]' + + + '(match-full)' # match against full path + {-p,--full-path}'[match the pattern against the full path instead of the basename]' + + + '(follow)' # follow symlinks + {-L,--follow}'[follow symbolic links to directories]' + + + '(abs-path)' # show absolute paths + '(long-listing)'{-a,--absolute-path}'[show absolute paths instead of relative paths]' + + + '(null-sep)' # use null separator for output + '(long-listing)'{-0,--print0}'[separate search results by the null character]' + + + '(long-listing)' # long-listing output + '(abs-path null-sep max-results exec-cmds)'{-l,--list-details}'[use a long listing format with file metadata]' + + + '(max-results)' # max number of results + '(long-listing exec-cmds)--max-results=[limit number of search results to given count and quit]:count' + '(long-listing exec-cmds)-1[limit to a single search result and quit]' + + + '(fs-errors)' # file-system errors + $no'--show-errors[enable the display of filesystem errors]' + + + '(fs-traversal)' # file-system traversal + $no"--one-file-system[don't descend into directories on other file systems]" + '!--mount' + '!--xdev' + + + dir-depth # directory depth + '(--exact-depth -d --max-depth)'{-d+,--max-depth=}'[set max directory depth to descend when searching]:depth' + '!(--exact-depth -d --max-depth)--maxdepth:depth' + '(--exact-depth --min-depth)--min-depth=[set directory depth to descend before start searching]:depth' + '(--exact-depth -d --max-depth --maxdepth --min-depth)--exact-depth=[only search at the exact given directory depth]:depth' + + + prune # pruning + "--prune[don't traverse into matching directories]" + + + filter-misc # filter search + '*'{-t+,--type=}"[filter search by type]:type:(($fd_types))" + '*'{-e+,--extension=}'[filter search by file extension]:extension' + '*'{-E+,--exclude=}'[exclude files/directories that match the given glob pattern]:glob pattern' + '*'{-S+,--size=}'[limit search by file size]:size limit:->size' + '(-o --owner)'{-o+,--owner=}'[filter by owning user and/or group]:owner and/or group:->owner' + + + ignore-file # extra ignore files + '*--ignore-file=[add a custom, low-precedence ignore-file with .gitignore format]: :_files' + + + '(filter-mtime-newer)' # filter by files modified after than + '--changed-within=[limit search to files/directories modified within the given date/duration]:date or duration' + '!--change-newer-than=:date/duration' + '!--newer=:date/duration' + + + '(filter-mtime-older)' # filter by files modified before than + '--changed-before=[limit search to files/directories modified before the given date/duration]:date or duration' + '!--change-older-than=:date/duration' + '!--older=:date/duration' + + + '(color)' # colorize output + {-c+,--color=}'[declare when to colorize search results]:when to colorize:(( + auto\:"show colors if the output goes to an interactive console (default)" + never\:"do not use colorized output" + always\:"always use colorized output" + ))' + + + '(threads)' + {-j+,--threads=}'[set the number of threads for searching and executing]:number of threads' + + + '(exec-cmds)' # execute command + '(long-listing max-results)'{-x+,--exec=}'[execute command for each search result]:command: _command_names -e:*\;::program arguments: _normal' + '(long-listing max-results)'{-X+,--exec-batch=}'[execute command for all search results at once]:command: _command_names -e:*\;::program arguments: _normal' + '(long-listing max-results)--batch-size=[max number of args for each -X call]:size' + + + other + '!(--max-buffer-time)--max-buffer-time=[set amount of time to buffer before showing output]:time (ms)' + + + '(about)' # about flags + '(: * -)'{-h,--help}'[display help message]' + '(: * -)'{-v,--version}'[display version information]' + + + path-sep # set path separator for output + $no'(--path-separator)--path-separator=[set the path separator to use when printing file paths]:path separator' + + + search-path + $no'(--base-directory)--base-directory=[change the current working directory to the given path]:directory:_files -/' + $no'(*)*--search-path=[set search path (instead of positional arguments)]:directory:_files -/' + + + strip-cwd-prefix + $no'(strip-cwd-prefix exec-cmds)--strip-cwd-prefix[Strip ./ prefix when output is redirected]' + + + args # positional arguments + '1: :_guard "^-*" pattern' + '(--search-path)*:directory:_files -/' + ) + + # Strip out argument groups where unsupported (see above) + is-at-least 5.4 || + fd_args=( ${(@)args:#(#i)(+|[a-z0-9][a-z0-9_-]#|\([a-z0-9][a-z0-9_-]#\))} ) + + _arguments $_arguments_options : $fd_args && ret=0 + + case ${state} in + owner) + compset -P '(\\|)\!' + if compset -P '*:'; then + _groups && ret=0 + else + if + compset -S ':*' || + # Do not add the colon suffix when completing "!user + # (with a starting double-quote) otherwise pressing tab again + # after the inserted colon "!user: will complete history modifiers + [[ $IPREFIX == (\\|\!)* && ($QIPREFIX == \"* && -z $QISUFFIX) ]] + then + _users && ret=0 + else + local q + # Since quotes are needed when using the negation prefix !, + # automatically remove the colon suffix also when closing the quote + if [[ $QIPREFIX == [\'\"]* ]]; then + q=${QIPREFIX:0:1} + fi + _users -r ": \t\n\-$q" -S : && ret=0 + fi + fi + ;; + + size) + if compset -P '[-+][0-9]##'; then + local -a suff=( + 'B:bytes' + 'K:kilobytes (10^3 = 1000 bytes)' + 'M:megabytes (10^6 = 1000^2 bytes)' + 'G:gigabytes (10^9 = 1000^3 bytes)' + 'T:terabytes (10^12 = 1000^4 bytes)' + 'Ki:kibibytes ( 2^10 = 1024 bytes)' + 'Mi:mebibytes ( 2^20 = 1024^2 bytes)' + 'Gi:gigibytes ( 2^30 = 1024^3 bytes)' + 'Ti:tebibytes ( 2^40 = 1024^4 bytes)' + ) + _describe -t units 'size limit units' suff -V 'units' + elif compset -P '[-+]'; then + _message -e 'size limit number (full format: <+->)' + else + _values 'size limit prefix (full format: )' \ + '\+[file size must be greater or equal to]'\ + '-[file size must be less than or equal to]' && ret=0 + fi + ;; + esac + + return ret +} + +_fd "$@" + +# ------------------------------------------------------------------------------ +# Copyright (c) 2011 GitHub zsh-users - http://github.com/zsh-users +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of the zsh-users nor the +# names of its contributors may be used to endorse or promote products +# derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL ZSH-USERS BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# ------------------------------------------------------------------------------ +# Description +# ----------- +# +# Completion script for fd +# +# ------------------------------------------------------------------------------ +# Authors +# ------- +# +# * smancill (https://github.com/smancill) +# +# ------------------------------------------------------------------------------ + +# Local Variables: +# mode: shell-script +# coding: utf-8-unix +# indent-tabs-mode: nil +# sh-indentation: 2 +# sh-basic-offset: 2 +# End: +# vim: ft=zsh sw=2 ts=2 et diff --git a/dot_oh-my-zsh/plugins/fig/README.md b/dot_oh-my-zsh/plugins/fig/README.md new file mode 100644 index 0000000..3861958 --- /dev/null +++ b/dot_oh-my-zsh/plugins/fig/README.md @@ -0,0 +1,9 @@ +# Fig plugin + +This plugin sets up completion for [Fig](https://fig.io/). + +To use it, add `fig` to the plugins array in your zshrc file: + +```zsh +plugins=(... fig) +``` diff --git a/dot_oh-my-zsh/plugins/fig/fig.plugin.zsh b/dot_oh-my-zsh/plugins/fig/fig.plugin.zsh new file mode 100644 index 0000000..cddb6c7 --- /dev/null +++ b/dot_oh-my-zsh/plugins/fig/fig.plugin.zsh @@ -0,0 +1,13 @@ +if ! (( $+commands[fig] )); then + return +fi + +# If the completion file doesn't exist yet, we need to autoload it and +# bind it to `fig`. Otherwise, compinit will have already done that +if [[ ! -f "$ZSH_CACHE_DIR/completions/_fig" ]]; then + autoload -Uz _fig + typeset -g -A _comps + _comps[fig]=_fig +fi + +fig completion zsh >| "$ZSH_CACHE_DIR/completions/_fig" &| diff --git a/dot_oh-my-zsh/plugins/firewalld/README.md b/dot_oh-my-zsh/plugins/firewalld/README.md new file mode 100644 index 0000000..8b5bc74 --- /dev/null +++ b/dot_oh-my-zsh/plugins/firewalld/README.md @@ -0,0 +1,22 @@ +# FirewallD Plugin + +This plugin adds some aliases and functions for FirewallD using the `firewalld-cmd` command. To use it, add firewalld to your plugins array. + +```zsh +plugins=(... firewalld) +``` + +## Aliases + +| Alias | Command | Description | +| :---- | :----------------------------------------- | :--------------------------- | +| fw | `sudo firewall-cmd` | Shorthand | +| fwr | `sudo firewall-cmd --reload` | Reload current configuration | +| fwp | `sudo firewall-cmd --permanent` | Create permanent rule | +| fwrp | `sudo firewall-cmd --runtime-to-permanent` | Save current configuration | + +## Functions + +| Function | Description | +| :------- | :--------------------------------------------------------- | +| fwl | Lists configuration from all active zones and direct rules | diff --git a/dot_oh-my-zsh/plugins/firewalld/firewalld.plugin.zsh b/dot_oh-my-zsh/plugins/firewalld/firewalld.plugin.zsh new file mode 100644 index 0000000..5b10906 --- /dev/null +++ b/dot_oh-my-zsh/plugins/firewalld/firewalld.plugin.zsh @@ -0,0 +1,17 @@ +alias fw="sudo firewall-cmd" +alias fwp="sudo firewall-cmd --permanent" +alias fwr="sudo firewall-cmd --reload" +alias fwrp="sudo firewall-cmd --runtime-to-permanent" + +function fwl () { + # converts output to zsh array () + # @f flag split on new line + zones=("${(@f)$(sudo firewall-cmd --get-active-zones | grep -v 'interfaces\|sources')}") + + for i in $zones; do + sudo firewall-cmd --zone $i --list-all + done + + echo 'Direct Rules:' + sudo firewall-cmd --direct --get-all-rules +} diff --git a/dot_oh-my-zsh/plugins/flutter/README.md b/dot_oh-my-zsh/plugins/flutter/README.md new file mode 100644 index 0000000..e5a4fd2 --- /dev/null +++ b/dot_oh-my-zsh/plugins/flutter/README.md @@ -0,0 +1,28 @@ +## Flutter plugin + +The Flutter plugin provides completion and useful aliases + +To use it, add `flutter` to the plugins array of your zshrc file: + +```zsh +plugins=(... flutter) +``` + +## Aliases + +| Alias | Command | Description | +| :--------- | :---------------------- | :------------------------------------------------------------------------- | +| `fl` | `flutter` | Shorthand for flutter command | +| `flattach` | `flutter attach` | Attaches flutter to a running flutter application with enabled observatory | +| `flb` | `flutter build` | Build flutter application | +| `flchnl` | `flutter channel` | Switches flutter channel (requires input of desired channel) | +| `flc` | `flutter clean` | Cleans flutter project | +| `fldvcs` | `flutter devices` | List connected devices (if any) | +| `fldoc` | `flutter doctor` | Runs flutter doctor | +| `flpub` | `flutter pub` | Shorthand for flutter pub command | +| `flget` | `flutter pub get` | Installs dependencies | +| `flr` | `flutter run` | Runs flutter app | +| `flrd` | `flutter run --debug` | Runs flutter app in debug mode (default mode) | +| `flrp` | `flutter run --profile` | Runs flutter app in profile mode | +| `flrr` | `flutter run --release` | Runs flutter app in release mode | +| `flupgrd` | `flutter upgrade` | Upgrades flutter version depending on the current channel | diff --git a/dot_oh-my-zsh/plugins/flutter/flutter.plugin.zsh b/dot_oh-my-zsh/plugins/flutter/flutter.plugin.zsh new file mode 100644 index 0000000..44d196c --- /dev/null +++ b/dot_oh-my-zsh/plugins/flutter/flutter.plugin.zsh @@ -0,0 +1,29 @@ +alias fl="flutter" +alias flattach="flutter attach" +alias flb="flutter build" +alias flchnl="flutter channel" +alias flc="flutter clean" +alias fldvcs="flutter devices" +alias fldoc="flutter doctor" +alias flpub="flutter pub" +alias flget="flutter pub get" +alias flr="flutter run" +alias flrd="flutter run --debug" +alias flrp="flutter run --profile" +alias flrr="flutter run --release" +alias flupgrd="flutter upgrade" + +# COMPLETION FUNCTION +if (( ! $+commands[flutter] )); then + return +fi + +# If the completion file doesn't exist yet, we need to autoload it and +# bind it to `flutter`. Otherwise, compinit will have already done that. +if [[ ! -f "$ZSH_CACHE_DIR/completions/_flutter" ]]; then + typeset -g -A _comps + autoload -Uz _flutter + _comps[flutter]=_flutter +fi + +flutter zsh-completion >| "$ZSH_CACHE_DIR/completions/_flutter" &| \ No newline at end of file diff --git a/dot_oh-my-zsh/plugins/fluxcd/README.md b/dot_oh-my-zsh/plugins/fluxcd/README.md new file mode 100644 index 0000000..9723fcc --- /dev/null +++ b/dot_oh-my-zsh/plugins/fluxcd/README.md @@ -0,0 +1,9 @@ +# FluxCD plugin + +This plugin adds completion for [FluxCD](https://fluxcd.io), an open and extensible continuous delivery solution for Kubernetes. Powered by GitOps Toolkit. + +To use it, add `fluxcd` to the plugins array in your zshrc file: + +```zsh +plugins=(... fluxcd) +``` diff --git a/dot_oh-my-zsh/plugins/fluxcd/fluxcd.plugin.zsh b/dot_oh-my-zsh/plugins/fluxcd/fluxcd.plugin.zsh new file mode 100644 index 0000000..d30866a --- /dev/null +++ b/dot_oh-my-zsh/plugins/fluxcd/fluxcd.plugin.zsh @@ -0,0 +1,14 @@ +# Autocompletion for the FluxCD CLI (flux). +if (( ! $+commands[flux] )); then + return +fi + +# If the completion file doesn't exist yet, we need to autoload it and +# bind it to `flux`. Otherwise, compinit will have already done that. +if [[ ! -f "$ZSH_CACHE_DIR/completions/_flux" ]]; then + typeset -g -A _comps + autoload -Uz _flux + _comps[flux]=_flux +fi + +flux completion zsh >| "$ZSH_CACHE_DIR/completions/_flux" &| diff --git a/dot_oh-my-zsh/plugins/fnm/README.md b/dot_oh-my-zsh/plugins/fnm/README.md new file mode 100644 index 0000000..00fab5c --- /dev/null +++ b/dot_oh-my-zsh/plugins/fnm/README.md @@ -0,0 +1,9 @@ +# fnm plugin + +This plugin adds autocompletion for [fnm](https://github.com/Schniz/fnm) - a Node.js version manager. + +To use it, add `fnm` to the plugins array in your zshrc file: + +```zsh +plugins=(... fnm) +``` diff --git a/dot_oh-my-zsh/plugins/fnm/fnm.plugin.zsh b/dot_oh-my-zsh/plugins/fnm/fnm.plugin.zsh new file mode 100644 index 0000000..6219025 --- /dev/null +++ b/dot_oh-my-zsh/plugins/fnm/fnm.plugin.zsh @@ -0,0 +1,13 @@ +if (( ! $+commands[fnm] )); then + return +fi + +# If the completion file doesn't exist yet, we need to autoload it and +# bind it to `fnm`. Otherwise, compinit will have already done that. +if [[ ! -f "$ZSH_CACHE_DIR/completions/_fnm" ]]; then + typeset -g -A _comps + autoload -Uz _fnm + _comps[fnm]=_fnm +fi + +fnm completions --shell=zsh >| "$ZSH_CACHE_DIR/completions/_fnm" &| diff --git a/dot_oh-my-zsh/plugins/forklift/README.md b/dot_oh-my-zsh/plugins/forklift/README.md new file mode 100644 index 0000000..7dfd8bf --- /dev/null +++ b/dot_oh-my-zsh/plugins/forklift/README.md @@ -0,0 +1,23 @@ +# forklift + +Plugin for ForkLift, an FTP application for OS X. + +To use it, add `forklift` to the plugins array in your zshrc file: + +```zsh +plugins=(... forklift) +``` + +## Requirements + +* [ForkLift](https://binarynights.com/) + +## Usage + +`fl []` + +* If `fl` is called without arguments then the current folder is opened in ForkLift. This is equivalent to `fl .`. + +* If `fl` is called with a directory as the argument, then that directory is opened in ForkLift + +* If `fl` is called with a non-directory file as the argument, then the file's parent directory is opened. diff --git a/dot_oh-my-zsh/plugins/forklift/forklift.plugin.zsh b/dot_oh-my-zsh/plugins/forklift/forklift.plugin.zsh new file mode 100644 index 0000000..8588948 --- /dev/null +++ b/dot_oh-my-zsh/plugins/forklift/forklift.plugin.zsh @@ -0,0 +1,122 @@ +# Open folder in ForkLift.app or ForkLift2.app from console +# Author: Adam Strzelecki nanoant.com, modified by Bodo Tasche bitboxer.de +# Updated to support ForkLift 2 and ForkLift 3 by Johan Kaving +# Updated to support ForkLift from Setapp by Paul Rudkin +# +# Usage: +# fl [] +# +# Opens specified directory or current working directory in ForkLift.app +# +# Notes: +# It assumes Shift+Cmd+G launches go to folder panel and Cmd+N opens new +# app window. +# +# https://gist.github.com/3313481 +function fl { + if [ ! -z "$1" ]; then + DIR=$1 + if [ ! -d "$DIR" ]; then + DIR=$(dirname $DIR) + fi + if [ "$DIR" != "." ]; then + PWD=`cd "$DIR";pwd` + fi + fi + osascript 2>&1 1>/dev/null <command'\ + '2: :->subcommand' + + case $state in + command) + local _OUTPUT=$(fossil branch 2>&1 | grep "use --repo") + if [[ -z "$_OUTPUT" ]]; then + compadd "$(_fossil_get_command_list)" + else + compadd clone init import help version + fi ;; + subcommand) + case "$words[2]" in + help) compadd "$(_fossil_get_command_list)" ;; + add) compadd "$(fossil extra)" ;; + *) compcall -D ;; + esac ;; + esac +} + +_fossil "$@" diff --git a/dot_oh-my-zsh/plugins/fossil/fossil.plugin.zsh b/dot_oh-my-zsh/plugins/fossil/fossil.plugin.zsh new file mode 100644 index 0000000..fadf609 --- /dev/null +++ b/dot_oh-my-zsh/plugins/fossil/fossil.plugin.zsh @@ -0,0 +1,56 @@ +_FOSSIL_PROMPT="" + +# Prefix at the very beginning of the prompt, before the branch name +ZSH_THEME_FOSSIL_PROMPT_PREFIX="%{$fg_bold[blue]%}fossil:(%{$fg_bold[red]%}" + +# At the very end of the prompt +ZSH_THEME_FOSSIL_PROMPT_SUFFIX="%{$fg_bold[blue]%})" + +# Text to display if the branch is dirty +ZSH_THEME_FOSSIL_PROMPT_DIRTY=" %{$fg_bold[red]%}✖" + +# Text to display if the branch is clean +ZSH_THEME_FOSSIL_PROMPT_CLEAN=" %{$fg_bold[green]%}✔" + +function fossil_prompt_info() { + local branch=$(fossil branch current 2>&1) + + # if we're not in a fossil repo, don't show anything + ! command grep -q "use --repo" <<< "$branch" || return + + local changes=$(fossil changes) + local dirty="$ZSH_THEME_FOSSIL_PROMPT_CLEAN" + + if [[ -n "$changes" ]]; then + dirty="$ZSH_THEME_FOSSIL_PROMPT_DIRTY" + fi + + printf '%s %s %s %s %s' \ + "$ZSH_THEME_FOSSIL_PROMPT_PREFIX" \ + "${branch:gs/%/%%}" \ + "$ZSH_THEME_FOSSIL_PROMPT_SUFFIX" \ + "$dirty" \ + "%{$reset_color%}" +} + +function _fossil_prompt () { + local current=`echo $PROMPT $RPROMPT | grep fossil` + + if [ "$_FOSSIL_PROMPT" = "" -o "$current" = "" ]; then + local _prompt=${PROMPT} + local _rprompt=${RPROMPT} + + local is_prompt=`echo $PROMPT | grep git` + + if [ "$is_prompt" = "" ]; then + RPROMPT="$_rprompt"'$(fossil_prompt_info)' + else + PROMPT="$_prompt"'$(fossil_prompt_info) ' + fi + + _FOSSIL_PROMPT="1" + fi +} + +autoload -U add-zsh-hook +add-zsh-hook precmd _fossil_prompt diff --git a/dot_oh-my-zsh/plugins/frontend-search/README.md b/dot_oh-my-zsh/plugins/frontend-search/README.md new file mode 100644 index 0000000..0500589 --- /dev/null +++ b/dot_oh-my-zsh/plugins/frontend-search/README.md @@ -0,0 +1,75 @@ +## Introduction + +> Searches for your frontend web development made easier + +## Installation + +Open your `~/.zshrc` file and enable the `frontend-search` plugin: + +```zsh + +plugins=( ... frontend-search) + +``` + +## Usage + +You can use the frontend-search plugin in these two forms: + +- `frontend [more terms if you want]` +- ` [more terms if you want]` + +For example, these two are equivalent: + +```zsh +$ angular dependency injection +# Will turn into ... +$ frontend angular dependency injection +``` + +Available search contexts are: + +| context | URL | +| ------------- | --------------------------------------------------------------------------- | +| angular | `https://angular.io/?search=` | +| angularjs | `https://google.com/search?as_sitesearch=angularjs.org&as_q=` | +| bem | `https://google.com/search?as_sitesearch=bem.info&as_q=` | +| bootsnipp | `https://bootsnipp.com/search?q=` | +| bundlephobia | `https://bundlephobia.com/result?p=` | +| caniuse | `https://caniuse.com/#search=` | +| codepen | `https://codepen.io/search?q=` | +| compassdoc | `http://compass-style.org/search?q=` | +| cssflow | `http://www.cssflow.com/search?q=` | +| dartlang | `https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/dart:` | +| emberjs | `https://www.google.com/search?as_sitesearch=emberjs.com/&as_q=` | +| flowtype | `https://google.com/search?as_sitesearch=flow.org/en/docs/&as_q=` | +| fontello | `http://fontello.com/#search=` | +| github | `https://github.com/search?q=` | +| html5please | `https://html5please.com/#` | +| jestjs | `https://www.google.com/search?as_sitesearch=jestjs.io&as_q=` | +| jquery | `https://api.jquery.com/?s=` | +| lodash | `https://devdocs.io/lodash/index#` | +| mdn | `https://developer.mozilla.org/search?q=` | +| nodejs | `https://www.google.com/search?as_sitesearch=nodejs.org/en/docs/&as_q=` | +| npmjs | `https://www.npmjs.com/search?q=` | +| packagephobia | `https://packagephobia.now.sh/result?p=` | +| qunit | `https://api.qunitjs.com/?s=` | +| reactjs | `https://google.com/search?as_sitesearch=facebook.github.io/react&as_q=` | +| smacss | `https://google.com/search?as_sitesearch=smacss.com&as_q=` | +| stackoverflow | `https://stackoverflow.com/search?q=` | +| typescript | `https://google.com/search?as_sitesearch=www.typescriptlang.org/docs&as_q=` | +| unheap | `http://www.unheap.com/?s=` | +| vuejs | `https://www.google.com/search?as_sitesearch=vuejs.org&as_q=` | + +If you want to have another context, open an Issue and tell us! + +## Fallback search behaviour + +The plugin will use Google as a fallback if the docs site for a search context does not have a search function. You can set the fallback search engine to DuckDuckGo by setting `FRONTEND_SEARCH_FALLBACK='duckduckgo'` in your `~/.zshrc` file before Oh My Zsh is sourced. + +## Author + +**Wilson Mendes (willmendesneto)** + +- +- diff --git a/dot_oh-my-zsh/plugins/frontend-search/_frontend b/dot_oh-my-zsh/plugins/frontend-search/_frontend new file mode 100644 index 0000000..aca4920 --- /dev/null +++ b/dot_oh-my-zsh/plugins/frontend-search/_frontend @@ -0,0 +1,161 @@ +#compdef frontend + +zstyle ':completion:*:descriptions' format '%B%d%b' +zstyle ':completion::complete:frontend:*:commands' group-name commands +zstyle ':completion::complete:frontend:*:frontend_points' group-name frontend_points +zstyle ':completion::complete:frontend::' list-grouped + +zmodload zsh/mapfile + +function _frontend() { + local CONFIG=$HOME/.frontend-search + local ret=1 + + local -a commands + local -a frontend_points + + frontend_points=( "${(f)mapfile[$CONFIG]//$HOME/~}" ) + + commands=( + 'angular: Search in Angular.io website' + 'angularjs: Search in docs.angularjs.org website' + 'bem: Search in BEM website' + 'bootsnipp: Search in bootsnipp website' + 'bundlephobia: Search in Bundlephobia website' + 'caniuse: Search in Can I Use website' + 'codepen: Search in codepen website' + 'compassdoc: Search in COMPASS website' + 'cssflow: Search in cssflow website' + 'dartlang: Search in Dart website' + 'emberjs: Search in Ember website' + 'flowtype: Search in Flowtype website' + 'fontello: Search in fontello website' + 'github: Search in GitHub website' + 'html5please: Search in HTML5 Please website' + 'jestjs: Search in Jest website' + 'jquery: Search in jQuery website' + 'lodash: Search in Lo-Dash website' + 'mdn: Search in MDN website' + 'nodejs: Search in NodeJS website' + 'npmjs: Search in npmjs website' + 'packagephobia: Search in Packagephobia website' + 'qunit: Search in Qunit website' + 'reactjs: Search in React website' + 'smacss: Search in SMACSS website' + 'stackoverflow: Search in StackOverflow website' + 'typescript: Search in TypeScript website' + 'unheap: Search in unheap website' + 'vuejs: Search in VueJS website' + ) + + _arguments -C \ + '1: :->first_arg' \ + '2: :->second_arg' && ret=0 + + case $state in + first_arg) + _describe -t frontend_points "Warp points" frontend_points && ret=0 + _describe -t commands "Commands" commands && ret=0 + ;; + second_arg) + case $words[2] in + jquery) + _describe -t points "Warp points" frontend_points && ret=0 + ;; + mdn) + _describe -t points "Warp points" frontend_points && ret=0 + ;; + compassdoc) + _describe -t points "Warp points" frontend_points && ret=0 + ;; + html5please) + _describe -t points "Warp points" frontend_points && ret=0 + ;; + caniuse) + _describe -t points "Warp points" frontend_points && ret=0 + ;; + dartlang) + _describe -t points "Warp points" frontend_points && ret=0 + ;; + lodash) + _describe -t points "Warp points" frontend_points && ret=0 + ;; + qunit) + _describe -t points "Warp points" frontend_points && ret=0 + ;; + fontello) + _describe -t points "Warp points" frontend_points && ret=0 + ;; + github) + _describe -t points "Warp points" frontend_points && ret=0 + ;; + bootsnipp) + _describe -t points "Warp points" frontend_points && ret=0 + ;; + cssflow) + _describe -t points "Warp points" frontend_points && ret=0 + ;; + codepen) + _describe -t points "Warp points" frontend_points && ret=0 + ;; + unheap) + _describe -t points "Warp points" frontend_points && ret=0 + ;; + bem) + _describe -t points "Warp points" frontend_points && ret=0 + ;; + smacss) + _describe -t points "Warp points" frontend_points && ret=0 + ;; + angularjs) + _describe -t points "Warp points" frontend_points && ret=0 + ;; + reactjs) + _describe -t points "Warp points" frontend_points && ret=0 + ;; + emberjs) + _describe -t points "Warp points" frontend_points && ret=0 + ;; + stackoverflow) + _describe -t points "Warp points" frontend_points && ret=0 + ;; + npmjs) + _describe -t points "Warp points" frontend_points && ret=0 + ;; + bundlephobia) + _describe -t points "Warp points" frontend_points && ret=0 + ;; + packagephobia) + _describe -t points "Warp points" frontend_points && ret=0 + ;; + flowtype) + _describe -t points "Warp points" frontend_points && ret=0 + ;; + typescript) + _describe -t points "Warp points" frontend_points && ret=0 + ;; + vuejs) + _describe -t points "Warp points" frontend_points && ret=0 + ;; + nodejs) + _describe -t points "Warp points" frontend_points && ret=0 + ;; + jestjs) + _describe -t points "Warp points" frontend_points && ret=0 + ;; + esac + ;; + esac + + return $ret +} + +_frontend "$@" + +# Local Variables: +# mode: Shell-Script +# sh-indentation: 2 +# indent-tabs-mode: nil +# sh-basic-offset: 2 +# End: +# vim: ft=zsh sw=2 ts=2 et diff --git a/dot_oh-my-zsh/plugins/frontend-search/frontend-search.plugin.zsh b/dot_oh-my-zsh/plugins/frontend-search/frontend-search.plugin.zsh new file mode 100644 index 0000000..b9e2fe9 --- /dev/null +++ b/dot_oh-my-zsh/plugins/frontend-search/frontend-search.plugin.zsh @@ -0,0 +1,111 @@ +alias angular='frontend angular' +alias angularjs='frontend angularjs' +alias bem='frontend bem' +alias bootsnipp='frontend bootsnipp' +alias bundlephobia='frontend bundlephobia' +alias caniuse='frontend caniuse' +alias codepen='frontend codepen' +alias compassdoc='frontend compassdoc' +alias cssflow='frontend cssflow' +alias dartlang='frontend dartlang' +alias emberjs='frontend emberjs' +alias flowtype='frontend flowtype' +alias fontello='frontend fontello' +alias github='frontend github' +alias html5please='frontend html5please' +alias jestjs='frontend jestjs' +alias jquery='frontend jquery' +alias lodash='frontend lodash' +alias mdn='frontend mdn' +alias nodejs='frontend nodejs' +alias npmjs='frontend npmjs' +alias packagephobia='frontend packagephobia' +alias qunit='frontend qunit' +alias reactjs='frontend reactjs' +alias smacss='frontend smacss' +alias stackoverflow='frontend stackoverflow' +alias typescript='frontend typescript' +alias unheap='frontend unheap' +alias vuejs='frontend vuejs' + +function _frontend_fallback() { + case "$FRONTEND_SEARCH_FALLBACK" in + duckduckgo) echo "https://duckduckgo.com/?sites=$1&q=" ;; + *) echo "https://google.com/search?as_sitesearch=$1&as_q=" ;; + esac +} + +function frontend() { + emulate -L zsh + + # define search context URLS + local -A urls + urls=( + angular 'https://angular.io/?search=' + angularjs $(_frontend_fallback 'angularjs.org') + bem $(_frontend_fallback 'bem.info') + bootsnipp 'https://bootsnipp.com/search?q=' + bundlephobia 'https://bundlephobia.com/result?p=' + caniuse 'https://caniuse.com/#search=' + codepen 'https://codepen.io/search/pens?q=' + compassdoc 'http://compass-style.org/search?q=' + cssflow 'http://www.cssflow.com/search?q=' + dartlang 'https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/dart:' + emberjs $(_frontend_fallback 'emberjs.com/') + flowtype $(_frontend_fallback 'flow.org/en/docs/') + fontello 'http://fontello.com/#search=' + github 'https://github.com/search?q=' + html5please 'https://html5please.com/#' + jestjs $(_frontend_fallback 'jestjs.io') + jquery 'https://api.jquery.com/?s=' + lodash 'https://devdocs.io/lodash/index#' + mdn 'https://developer.mozilla.org/search?q=' + nodejs $(_frontend_fallback 'nodejs.org/en/docs/') + npmjs 'https://www.npmjs.com/search?q=' + packagephobia 'https://packagephobia.now.sh/result?p=' + qunit 'https://api.qunitjs.com/?s=' + reactjs $(_frontend_fallback 'reactjs.org/') + smacss $(_frontend_fallback 'smacss.com') + stackoverflow 'https://stackoverflow.com/search?q=' + typescript $(_frontend_fallback 'www.typescriptlang.org/docs') + unheap 'http://www.unheap.com/?s=' + vuejs $(_frontend_fallback 'vuejs.org') + ) + + # show help for command list + if [[ $# -lt 2 ]]; then + print -P "Usage: frontend %Ucontext%u %Uterm%u [...%Umore%u] (or just: %Ucontext%u %Uterm%u [...%Umore%u])" + print -P "" + print -P "%Uterm%u and what follows is what will be searched for in the %Ucontext%u website," + print -P "and %Ucontext%u is one of the following:" + print -P "" + print -P " angular, angularjs, bem, bootsnipp, caniuse, codepen, compassdoc, cssflow, packagephobia" + print -P " dartlang, emberjs, fontello, flowtype, github, html5please, jestjs, jquery, lodash," + print -P " mdn, npmjs, nodejs, qunit, reactjs, smacss, stackoverflow, unheap, vuejs, bundlephobia" + print -P "" + print -P "For example: frontend npmjs mocha (or just: npmjs mocha)." + print -P "" + return 1 + fi + + # check whether the search context is supported + if [[ -z "$urls[$1]" ]]; then + echo "Search context \"$1\" currently not supported." + echo "" + echo "Valid contexts are:" + echo "" + echo " angular, angularjs, bem, bootsnipp, caniuse, codepen, compassdoc, cssflow, packagephobia" + echo " dartlang, emberjs, fontello, github, html5please, jest, jquery, lodash," + echo " mdn, npmjs, nodejs, qunit, reactjs, smacss, stackoverflow, unheap, vuejs, bundlephobia" + echo "" + return 1 + fi + + # build search url: + # join arguments passed with '%20', then append to search context URL + url="${urls[$1]}$(omz_urlencode -P ${@[2,-1]})" + + echo "Opening $url ..." + + open_command "$url" +} diff --git a/dot_oh-my-zsh/plugins/fzf/README.md b/dot_oh-my-zsh/plugins/fzf/README.md new file mode 100644 index 0000000..7e3e3e5 --- /dev/null +++ b/dot_oh-my-zsh/plugins/fzf/README.md @@ -0,0 +1,61 @@ +# fzf + +This plugin tries to find [junegunn's fzf](https://github.com/junegunn/fzf) based on where +it's been installed, and enables its fuzzy auto-completion and key bindings. + +To use it, add `fzf` to the plugins array in your zshrc file: + +```zsh +plugins=(... fzf) +``` + +## Settings + +All these settings should go in your zshrc file, before Oh My Zsh is sourced. + +### `FZF_BASE` + +Set to fzf installation directory path: + +```zsh +export FZF_BASE=/path/to/fzf/install/dir +``` + +### `FZF_DEFAULT_COMMAND` + +Set default command to use when input is tty: + +```zsh +export FZF_DEFAULT_COMMAND='' +``` + +If not set, the plugin will try to set it to these, in the order in which they're found: + +- [`fd`](https://github.com/sharkdp/fd) +- [`rg`](https://github.com/BurntSushi/ripgrep) +- [`ag`](https://github.com/ggreer/the_silver_searcher) + +### `DISABLE_FZF_AUTO_COMPLETION` + +Set whether to load fzf auto-completion: + +```zsh +DISABLE_FZF_AUTO_COMPLETION="true" +``` + +### `DISABLE_FZF_KEY_BINDINGS` + +Set whether to disable key bindings (CTRL-T, CTRL-R, ALT-C): + +```zsh +DISABLE_FZF_KEY_BINDINGS="true" +``` + +### Skip `dpkg` loading + +If you have `dpkg` available in your `$PATH` but you don't want to load `fzf` from there, and facing some +issues, you can define this option before loading `oh-my-zsh` in order to skip that loading: + +```zsh +zstyle ':omz:plugins:fzf' skip-dpkg yes +``` diff --git a/dot_oh-my-zsh/plugins/fzf/fzf.plugin.zsh b/dot_oh-my-zsh/plugins/fzf/fzf.plugin.zsh new file mode 100644 index 0000000..c07d384 --- /dev/null +++ b/dot_oh-my-zsh/plugins/fzf/fzf.plugin.zsh @@ -0,0 +1,237 @@ +function fzf_setup_using_base_dir() { + local fzf_base fzf_shell fzfdirs dir + + test -d "${FZF_BASE}" && fzf_base="${FZF_BASE}" + + if [[ -z "${fzf_base}" ]]; then + fzfdirs=( + "${HOME}/.fzf" + "${HOME}/.nix-profile/share/fzf" + "${XDG_DATA_HOME:-$HOME/.local/share}/fzf" + "/usr/local/opt/fzf" + "/opt/homebrew/bin/fzf" + "/usr/share/fzf" + "/usr/local/share/examples/fzf" + ) + for dir in ${fzfdirs}; do + if [[ -d "${dir}" ]]; then + fzf_base="${dir}" + break + fi + done + + if [[ -z "${fzf_base}" ]]; then + if (( ${+commands[fzf-share]} )) && dir="$(fzf-share)" && [[ -d "${dir}" ]]; then + fzf_base="${dir}" + elif (( ${+commands[brew]} )) && dir="$(brew --prefix fzf 2>/dev/null)"; then + if [[ -d "${dir}" ]]; then + fzf_base="${dir}" + fi + fi + fi + fi + + if [[ ! -d "${fzf_base}" ]]; then + return 1 + fi + + # Fix fzf shell directory for Arch Linux, NixOS or Void Linux packages + if [[ ! -d "${fzf_base}/shell" ]]; then + fzf_shell="${fzf_base}" + else + fzf_shell="${fzf_base}/shell" + fi + + # Setup fzf binary path + if (( ! ${+commands[fzf]} )) && [[ "$PATH" != *$fzf_base/bin* ]]; then + export PATH="$PATH:$fzf_base/bin" + fi + + # Auto-completion + if [[ -o interactive && "$DISABLE_FZF_AUTO_COMPLETION" != "true" ]]; then + source "${fzf_shell}/completion.zsh" 2> /dev/null + fi + + # Key bindings + if [[ "$DISABLE_FZF_KEY_BINDINGS" != "true" ]]; then + source "${fzf_shell}/key-bindings.zsh" + fi +} + + +function fzf_setup_using_debian() { + if (( ! $+commands[dpkg] )) || zstyle -t ':omz:plugins:fzf' skip-dpkg; then + # Not a debian based distro + return 1 + fi + + # NOTE: There is no need to configure PATH for debian package, all binaries + # are installed to /usr/bin by default + + local completions key_bindings + + case $PREFIX in + *com.termux*) + if [[ ! -f "${PREFIX}/bin/fzf" ]]; then + # fzf not installed + return 1 + fi + # Support Termux package + completions="${PREFIX}/share/fzf/completion.zsh" + key_bindings="${PREFIX}/share/fzf/key-bindings.zsh" + ;; + *) + if [[ ! -f /usr/bin/fzf ]]; then + # fzf not installed + return 1 + fi + # Determine completion file path: first bullseye/sid, then buster/stretch + completions="/usr/share/doc/fzf/examples/completion.zsh" + [[ -f "$completions" ]] || completions="/usr/share/zsh/vendor-completions/_fzf" + key_bindings="/usr/share/doc/fzf/examples/key-bindings.zsh" + ;; + esac + + # Auto-completion + if [[ -o interactive && "$DISABLE_FZF_AUTO_COMPLETION" != "true" ]]; then + source $completions 2> /dev/null + fi + + # Key bindings + if [[ ! "$DISABLE_FZF_KEY_BINDINGS" == "true" ]]; then + source $key_bindings + fi + + return 0 +} + +function fzf_setup_using_opensuse() { + # OpenSUSE installs fzf in /usr/bin/fzf + # If the command is not found, the package isn't installed + (( $+commands[fzf] )) || return 1 + + # The fzf-zsh-completion package installs the auto-completion in + local completions="/usr/share/zsh/site-functions/_fzf" + # The fzf-zsh-completion package installs the key-bindings file in + local key_bindings="/etc/zsh_completion.d/fzf-key-bindings" + + # If these are not found: (1) maybe we're not on OpenSUSE, or + # (2) maybe the fzf-zsh-completion package isn't installed. + if [[ ! -f "$completions" || ! -f "$key_bindings" ]]; then + return 1 + fi + + # Auto-completion + if [[ -o interactive && "$DISABLE_FZF_AUTO_COMPLETION" != "true" ]]; then + source "$completions" 2>/dev/null + fi + + # Key bindings + if [[ "$DISABLE_FZF_KEY_BINDINGS" != "true" ]]; then + source "$key_bindings" 2>/dev/null + fi + + return 0 +} + +function fzf_setup_using_openbsd() { + # openBSD installs fzf in /usr/local/bin/fzf + if [[ "$OSTYPE" != openbsd* ]] || (( ! $+commands[fzf] )); then + return 1 + fi + + # The fzf package installs the auto-completion in + local completions="/usr/local/share/zsh/site-functions/_fzf_completion" + # The fzf package installs the key-bindings file in + local key_bindings="/usr/local/share/zsh/site-functions/_fzf_key_bindings" + + # Auto-completion + if [[ -o interactive && "$DISABLE_FZF_AUTO_COMPLETION" != "true" ]]; then + source "$completions" 2>/dev/null + fi + + # Key bindings + if [[ "$DISABLE_FZF_KEY_BINDINGS" != "true" ]]; then + source "$key_bindings" 2>/dev/null + fi + + return 0 +} + +function fzf_setup_using_cygwin() { + # Cygwin installs fzf in /usr/local/bin/fzf + if [[ "$OSTYPE" != cygwin* ]] || (( ! $+commands[fzf] )); then + return 1 + fi + + # The fzf-zsh-completion package installs the auto-completion in + local completions="/etc/profile.d/fzf-completion.zsh" + # The fzf-zsh package installs the key-bindings file in + local key_bindings="/etc/profile.d/fzf.zsh" + + # Auto-completion + if [[ -o interactive && "$DISABLE_FZF_AUTO_COMPLETION" != "true" ]]; then + source "$completions" 2>/dev/null + fi + + # Key bindings + if [[ "$DISABLE_FZF_KEY_BINDINGS" != "true" ]]; then + source "$key_bindings" 2>/dev/null + fi + + return 0 +} + +function fzf_setup_using_macports() { + # If the command is not found, the package isn't installed + (( $+commands[fzf] )) || return 1 + + # The fzf-zsh-completion package installs the auto-completion in + local completions="/opt/local/share/fzf/shell/completion.zsh" + # The fzf-zsh-completion package installs the key-bindings file in + local key_bindings="/opt/local/share/fzf/shell/key-bindings.zsh" + + if [[ ! -f "$completions" || ! -f "$key_bindings" ]]; then + return 1 + fi + + # Auto-completion + if [[ -o interactive && "$DISABLE_FZF_AUTO_COMPLETION" != "true" ]]; then + source "$completions" 2>/dev/null + fi + + # Key bindings + if [[ "$DISABLE_FZF_KEY_BINDINGS" != "true" ]]; then + source "$key_bindings" 2>/dev/null + fi + + return 0 +} + +# Indicate to user that fzf installation not found if nothing worked +function fzf_setup_error() { + cat >&2 <<'EOF' +[oh-my-zsh] fzf plugin: Cannot find fzf installation directory. +Please add `export FZF_BASE=/path/to/fzf/install/dir` to your .zshrc +EOF +} + +fzf_setup_using_openbsd \ + || fzf_setup_using_debian \ + || fzf_setup_using_opensuse \ + || fzf_setup_using_cygwin \ + || fzf_setup_using_macports \ + || fzf_setup_using_base_dir \ + || fzf_setup_error + +unset -f -m 'fzf_setup_*' + +if [[ -z "$FZF_DEFAULT_COMMAND" ]]; then + if (( $+commands[fd] )); then + export FZF_DEFAULT_COMMAND='fd --type f --hidden --exclude .git' + elif (( $+commands[rg] )); then + export FZF_DEFAULT_COMMAND='rg --files --hidden --glob "!.git/*"' + elif (( $+commands[ag] )); then + export FZF_DEFAULT_COMMAND='ag -l --hidden -g "" --ignore .git' + fi +fi diff --git a/dot_oh-my-zsh/plugins/gas/README.md b/dot_oh-my-zsh/plugins/gas/README.md new file mode 100644 index 0000000..47b3fb9 --- /dev/null +++ b/dot_oh-my-zsh/plugins/gas/README.md @@ -0,0 +1,10 @@ +# Gas plugin + +This plugin adds autocompletion for the [gas](http://walle.github.com/gas) command, +a utility to manage Git authors. + +To use it, add `gas` to the plugins array of your zshrc file: + +```zsh +plugins=(... gas) +``` diff --git a/dot_oh-my-zsh/plugins/gas/_gas b/dot_oh-my-zsh/plugins/gas/_gas new file mode 100644 index 0000000..23e6d99 --- /dev/null +++ b/dot_oh-my-zsh/plugins/gas/_gas @@ -0,0 +1,39 @@ +#compdef gas + +local curcontext="$curcontext" state line cmds ret=1 + +_arguments -C \ + '(- 1 *)'{-v,--version}'[display version information]' \ + '(-h|--help)'{-h,--help}'[show help information]' \ + '1: :->cmds' \ + '*: :->args' && ret=0 + +case $state in + cmds) + cmds=( + "version:Prints Gas's version" + "use:Uses author" + "ssh:Creates a new ssh key for an existing gas author" + "show:Shows your current user" + "list:Lists your authors" + "import:Imports current user to gasconfig" + "help:Describe available tasks or one specific task" + "delete:Deletes author" + "add:Adds author to gasconfig" + ) + _describe -t commands 'gas command' cmds && ret=0 + ;; + args) + case $line[1] in + (use|delete) + VERSION=$(gas -v) + if [[ $VERSION == <1->.*.* ]] || [[ $VERSION == 0.<2->.* ]] || [[ $VERSION == 0.1.<6-> ]] then + _values -S , 'authors' $(cat ~/.gas/gas.authors | sed -n -e 's/^.*\[\(.*\)\]/\1/p') && ret=0 + else + _values -S , 'authors' $(cat ~/.gas | sed -n -e 's/^\[\(.*\)\]/\1/p') && ret=0 + fi + esac + ;; +esac + +return ret diff --git a/dot_oh-my-zsh/plugins/gatsby/README.md b/dot_oh-my-zsh/plugins/gatsby/README.md new file mode 100644 index 0000000..36846a2 --- /dev/null +++ b/dot_oh-my-zsh/plugins/gatsby/README.md @@ -0,0 +1,7 @@ +# gatsby autocomplete plugin + +* Adds autocomplete options for all gatsby commands. + +## Requirements + +In order to make this work, you will need to have gatsby set up in your path. diff --git a/dot_oh-my-zsh/plugins/gatsby/_gatsby b/dot_oh-my-zsh/plugins/gatsby/_gatsby new file mode 100644 index 0000000..66eb02f --- /dev/null +++ b/dot_oh-my-zsh/plugins/gatsby/_gatsby @@ -0,0 +1,24 @@ +#compdef gatsby +#autoload + +# in order to make this work, you will need to have gatsby +# https://www.gatsbyjs.org/ + +local -a _1st_arguments +_1st_arguments=( +'develop:Start development server. Watches files, rebuilds, and hot reloads if something changes' +'build:Build a Gatsby project.' +'serve:Serve previously built Gatsby site.' +'info:Get environment information for debugging and issue reporting' +'clean:Wipe the local gatsby environment including built assets and cache' +'repl:Get a node repl with context of Gatsby environment, see (add docs link here)' +'new: [rootPath] [starter] Create new Gatsby project.' +'telemetry:Enable or disable Gatsby anonymous analytics collection.' +) + +_arguments -C '*:: :->subcmds' && return 0 + +if (( CURRENT == 1 )); then + _describe -t commands "gatsby subcommand" _1st_arguments + return +fi diff --git a/dot_oh-my-zsh/plugins/gcloud/README.md b/dot_oh-my-zsh/plugins/gcloud/README.md new file mode 100644 index 0000000..e7ce0e0 --- /dev/null +++ b/dot_oh-my-zsh/plugins/gcloud/README.md @@ -0,0 +1,24 @@ +# gcloud + +This plugin provides completion support for the +[Google Cloud SDK CLI](https://cloud.google.com/sdk/gcloud/). + +To use it, add `gcloud` to the plugins array in your zshrc file. + +```zsh +plugins=(... gcloud) +``` + +It relies on you having installed the SDK using one of the supported options +listed [here](https://cloud.google.com/sdk/install). + +## Plugin Options + +* Set `CLOUDSDK_HOME` in your `zshrc` file before you load oh-my-zsh if you have +your GCloud SDK installed in a non-standard location. The plugin will use this +as the base for your SDK if it finds it set already. + +* If you do not have a `python2` in your `PATH` you'll also need to set the +`CLOUDSDK_PYTHON` environment variable at the end of your `.zshrc`. This is +used by the SDK to call a compatible interpreter when you run one of the +SDK commands. diff --git a/dot_oh-my-zsh/plugins/gcloud/gcloud.plugin.zsh b/dot_oh-my-zsh/plugins/gcloud/gcloud.plugin.zsh new file mode 100644 index 0000000..9be9d68 --- /dev/null +++ b/dot_oh-my-zsh/plugins/gcloud/gcloud.plugin.zsh @@ -0,0 +1,49 @@ +##################################################### +# gcloud plugin for oh-my-zsh # +# Author: Ian Chesal (github.com/ianchesal) # +##################################################### + +if [[ -z "${CLOUDSDK_HOME}" ]]; then + search_locations=( + "$HOME/google-cloud-sdk" + "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk" + "/opt/homebrew/Caskroom/google-cloud-sdk/latest/google-cloud-sdk" + "/usr/share/google-cloud-sdk" + "/snap/google-cloud-sdk/current" + "/usr/lib/google-cloud-sdk" + "/usr/lib64/google-cloud-sdk" + "/opt/google-cloud-sdk" + "/opt/local/libexec/google-cloud-sdk" + ) + + for gcloud_sdk_location in $search_locations; do + if [[ -d "${gcloud_sdk_location}" ]]; then + CLOUDSDK_HOME="${gcloud_sdk_location}" + break + fi + done + unset search_locations gcloud_sdk_location +fi + +if (( ${+CLOUDSDK_HOME} )); then + # Only source this if gcloud isn't already on the path + if (( ! $+commands[gcloud] )); then + if [[ -f "${CLOUDSDK_HOME}/path.zsh.inc" ]]; then + source "${CLOUDSDK_HOME}/path.zsh.inc" + fi + fi + + # Look for completion file in different paths + for comp_file ( + "${CLOUDSDK_HOME}/completion.zsh.inc" # default location + "/usr/share/google-cloud-sdk/completion.zsh.inc" # apt-based location + ); do + if [[ -f "${comp_file}" ]]; then + source "${comp_file}" + break + fi + done + unset comp_file + + export CLOUDSDK_HOME +fi diff --git a/dot_oh-my-zsh/plugins/geeknote/README.md b/dot_oh-my-zsh/plugins/geeknote/README.md new file mode 100644 index 0000000..95b3aa7 --- /dev/null +++ b/dot_oh-my-zsh/plugins/geeknote/README.md @@ -0,0 +1,10 @@ +# Geeknote plugin + +This plugin provides autocompletion for [Geeknote](https://github.com/VitaliyRodnenko/geeknote) +and an alias for `geeknote` called `gn`. + +To use it, add `geeknote` to the plugins array in your zshrc file: + +```zsh +plugins=( ... geeknote ...) +``` diff --git a/dot_oh-my-zsh/plugins/geeknote/_geeknote b/dot_oh-my-zsh/plugins/geeknote/_geeknote new file mode 100644 index 0000000..a34be59 --- /dev/null +++ b/dot_oh-my-zsh/plugins/geeknote/_geeknote @@ -0,0 +1,157 @@ +#compdef geeknote + +# Geeknote Autocomplete plugin for Zsh +# Requires: Geeknote installed +# Author : Ján Koščo (@s7anley) + +__login() { + # no arguments +} + +__logout() { + _arguments \ + '--force[Do not ask about logging out.]' +} + +__settings() { + _arguments \ + "--editor+[Set the editor, which use to edit and create notes.]::" +} + +__create() { + _arguments \ + '--title+[The note title.]::' \ + '--content+[The note content.]::' \ + '--tags+[One tag or the list of tags which will be added to the note.]::' \ + '--notebook+[Set the notebook where to save note.]::' \ + '--resource+[Add a resource to the note.]::' +} + +__edit() { + _arguments \ + '--note+[The name or ID from the previous search of a note to edit.]::' \ + '--title+[Set new title of the note.]::' \ + '--content+[Set new content of the note.]::' \ + '--tags+[Set new list o tags for the note.]::' \ + '--notebook+[Assign new notebook for the note.]::' \ + '--resource+[Add a resource to the note.]::' +} + +__find() { + _arguments \ + '--search+[Text to search.]::' \ + '--tags+[Notes with which tag/tags to search.]::' \ + '--notebook+[In which notebook search the note.]::' \ + '--date+[Set date in format dd.mm.yyyy or date range dd.mm.yyyy-dd.mm.yyyy.]::' \ + '--count+[How many notes show in the result list.]::' \ + '--with-url[Add direct url of each note in results to Evernote web-version.]' \ + '--content-search[Search by content, not by title.]' \ + '--exact-entry[Search for exact entry of the request.]' +} + +__show() { + _arguments \ + '--note+[The name or ID from the previous search of a note to show.]::' \ + '--raw[Show the raw note body.]' +} + +__remove() { + _arguments \ + '--note+[The name or ID from the previous search of a note to remove.]::' \ + '--force[Do not ask about removing.]' +} + +__notebook-list() { + # no arguments +} + +__notebook-create() { + _arguments \ + '--title+[Set the title of new notebook.]::' +} + +__notebook-edit() { + _arguments \ + '--title+[Set the title of new notebook.]::' \ + '--notebook+[The name of a notebook to rename.]::' +} + +__tag-list() { + # no arguments +} + +__tag-create() { + _arguments \ + '--title+[Set the title of new tag.]::' +} + +__tag-edit() { + _arguments \ + '--tagname+[The name of a tag to rename.]::' \ + '--title+[Set the new name of tag.]::' +} + +__user() { + _arguments \ + '--full[Show full information.]' +} + +local -a _1st_arguments +_1st_arguments=( + 'login':'Authorize in Evernote.' + 'logout':'Logout from Evernote.' + 'settings':'Show and edit current settings.' + 'create':'Create note in Evernote.' + 'edit':'Edit note in Evernote.' + 'find':'Search notes in Evernote.' + 'show':'Output note in the terminal.' + 'remove':'Remove note from Evernote.' + 'notebook-list':'Show the list of existing notebooks in your Evernote.' + 'notebook-create':'Create new notebook.' + 'notebook-edit':'Edit/rename notebook.' + 'tag-list':'Show the list of existing tags in your Evernote.' + 'tag-create':'Create new tag.' + 'tag-edit':'Edit/rename tag.' + 'user':'Show information about active user.' +) + +_arguments '*:: :->command' + +if (( CURRENT == 1 )); then + _describe -t commands "geeknote command" _1st_arguments + return +fi + +local -a _command_args +case "$words[1]" in + login) + __login ;; + logout) + __logout ;; + settings) + __settings ;; + create) + __create ;; + edit) + __edit ;; + find) + __find ;; + show) + __show ;; + remove) + __remove ;; + notebook-list) + __notebook-list ;; + notebook-create) + __notebook-create ;; + notebook-edit) + __notebook-edit ;; + tag-list) + __tag-list ;; + tag-create) + __tag-create ;; + tag-edit) + __tag-edit ;; + user) + __user ;; +esac diff --git a/dot_oh-my-zsh/plugins/geeknote/geeknote.plugin.zsh b/dot_oh-my-zsh/plugins/geeknote/geeknote.plugin.zsh new file mode 100644 index 0000000..8126d26 --- /dev/null +++ b/dot_oh-my-zsh/plugins/geeknote/geeknote.plugin.zsh @@ -0,0 +1,2 @@ +#Alias +alias gn='geeknote' diff --git a/dot_oh-my-zsh/plugins/gem/README.md b/dot_oh-my-zsh/plugins/gem/README.md new file mode 100644 index 0000000..decd87b --- /dev/null +++ b/dot_oh-my-zsh/plugins/gem/README.md @@ -0,0 +1,17 @@ +# Gem plugin + +This plugin adds completions and aliases for [Gem](https://rubygems.org/). The completions include the common `gem` subcommands as well as the installed gems in the current directory. + +To use it, add `gem` to the plugins array in your zshrc file: + +```zsh +plugins=(... gem) +``` + +## Aliases + +| Alias | Command | Description | +|----------------------|-------------------------------|--------------------------------------------| +| gemb | `gem build *.gemspec` | Build a gem from a gemspec | +| gemp | `gem push *.gem` | Push a gem up to the gem server | +| gemy [gem] [version] | `gem yank [gem] -v [version]` | Remove a pushed gem version from the index | diff --git a/dot_oh-my-zsh/plugins/gem/_gem b/dot_oh-my-zsh/plugins/gem/_gem new file mode 100644 index 0000000..92feebe --- /dev/null +++ b/dot_oh-my-zsh/plugins/gem/_gem @@ -0,0 +1,72 @@ +#compdef gem +#autoload + +# gem zsh completion, based on homebrew completion + +_gem_installed() { + installed_gems=(${(f)"$(gem list --local --no-versions)"}) +} + +local -a _1st_arguments + +_1st_arguments=( + 'build:Build a gem from a gemspec' + 'cert:Manage RubyGems certificates and signing settings' + 'check:Check a gem repository for added or missing files' + 'cleanup:Clean up old versions of installed gems in the local repository' + 'contents:Display the contents of the installed gems' + 'dependency:Show the dependencies of an installed gem' + 'environment:Display information about the RubyGems environment' + 'fetch:Download a gem and place it in the current directory' + 'generate_index:Generates the index files for a gem server directory' + 'help:Provide help on the `gem` command' + 'install:Install a gem into the local repository' + 'list:Display gems whose name starts with STRING' + 'lock:Generate a lockdown list of gems' + 'mirror:Mirror all gem files (requires rubygems-mirror)' + 'outdated:Display all gems that need updates' + 'owner:Manage gem owners on RubyGems.org.' + 'pristine:Restores installed gems to pristine condition from files located in the gem cache' + 'push:Push a gem up to RubyGems.org' + 'query:Query gem information in local or remote repositories' + 'rdoc:Generates RDoc for pre-installed gems' + 'search:Display all gems whose name contains STRING' + 'server:Documentation and gem repository HTTP server' + 'sources:Manage the sources and cache file RubyGems uses to search for gems' + 'specification:Display gem specification (in yaml)' + 'stale:List gems along with access times' + 'uninstall:Uninstall gems from the local repository' + 'unpack:Unpack an installed gem to the current directory' + 'update:Update installed gems to the latest version' + 'which:Find the location of a library file you can require' + 'yank:Remove a specific gem version release from RubyGems.org' +) + +local expl +local -a gems installed_gems + +_arguments \ + '(-v --version)'{-v,--version}'[show version]' \ + '(-h --help)'{-h,--help}'[show help]' \ + '*:: :->subcmds' && return 0 + +if (( CURRENT == 1 )); then + _describe -t commands "gem subcommand" _1st_arguments + return +fi + +case "$words[1]" in + build) + _files -g "*.gemspec" + ;; + install) + _files ;; + list) + if [[ "$state" == forms ]]; then + _gem_installed + _requested installed_gems expl 'installed gems' compadd -a installed_gems + fi ;; + uninstall|update) + _gem_installed + _wanted installed_gems expl 'installed gems' compadd -a installed_gems ;; +esac diff --git a/dot_oh-my-zsh/plugins/gem/gem.plugin.zsh b/dot_oh-my-zsh/plugins/gem/gem.plugin.zsh new file mode 100644 index 0000000..938f5c9 --- /dev/null +++ b/dot_oh-my-zsh/plugins/gem/gem.plugin.zsh @@ -0,0 +1,7 @@ +alias gemb="gem build *.gemspec" +alias gemp="gem push *.gem" + +# gemy GEM 0.0.0 = gem yank GEM -v 0.0.0 +function gemy { + gem yank $1 -v $2 +} \ No newline at end of file diff --git a/dot_oh-my-zsh/plugins/genpass/README.md b/dot_oh-my-zsh/plugins/genpass/README.md new file mode 100644 index 0000000..a5ff4a8 --- /dev/null +++ b/dot_oh-my-zsh/plugins/genpass/README.md @@ -0,0 +1,66 @@ +# genpass + +This plugin provides three unique password generators for ZSH. Each generator +has at least a 128-bit security margin and generates passwords from the +cryptographically secure `/dev/urandom`. Each generator can also take an +optional numeric argument to generate multiple passwords. + +To use it from an interactive ZSH, add `genpass` to the plugins array in your +zshrc file: + + plugins=(... genpass) + +You can also invoke password generators directly (they are implemented as +standalone executable files), which can be handy when you need to generate +passwords in a script: + + ~/.oh-my-zsh/plugins/genpass/genpass-apple 3 + +## genpass-apple + +Generates a pronounceable pseudoword passphrase of the "cvccvc" consonant/vowel +syntax, inspired by [Apple's iCloud Keychain password generator][1]. Each +password has exactly 1 digit placed at the edge of a "word" and exactly 1 +capital letter to satisfy most password security requirements. + + % genpass-apple + gelcyv-foqtam-fotqoh-viMleb-lexduv-6ixfuk + + % genpass-apple 3 + japvyz-qyjti4-kajrod-nubxaW-hukkan-dijcaf + vydpig-fucnul-3ukpog-voggom-zygNad-jepgad + zocmez-byznis-hegTaj-jecdyq-qiqmiq-5enwom + +[1]: https://developer.apple.com/password-rules/ + +## genpass-monkey + +Generates visually unambiguous random meaningless strings using [Crockford's +base32][2]. + + % genpass-monkey + xt7gn976e7jj3fstgpy27330x3 + + % genpass-monkey 3 + n1qqwtzgejwgqve9yzf2gxvx4m + r2n3f5s6vbqs2yx7xjnmahqewy + 296w9y9rts3p5r9yay0raek8e5 + +[2]: https://www.crockford.com/base32.html + +## genpass-xkcd + +Generates passphrases from `/usr/share/dict/words` inspired by the [famous (and +slightly misleading) XKCD comic][3]. Each passphrase is prepended with a digit +showing the number of words in the passphrase to adhere to password security +requirements that require digits. Each word is 6 characters or less. + + % genpass-xkcd + 9-eaten-Slav-rife-aired-hill-cordon-splits-welsh-napes + + % genpass-xkcd 3 + 9-worker-Vlad-horde-shrubs-smite-thwart-paw-alters-prawns + 9-tutors-stink-rhythm-junk-snappy-hooray-barbs-mewl-clomp + 9-vital-escape-Angkor-Huff-wet-Mayra-abbés-putts-guzzle + +[3]: https://xkcd.com/936/ diff --git a/dot_oh-my-zsh/plugins/genpass/executable_genpass-apple b/dot_oh-my-zsh/plugins/genpass/executable_genpass-apple new file mode 100644 index 0000000..963ab64 --- /dev/null +++ b/dot_oh-my-zsh/plugins/genpass/executable_genpass-apple @@ -0,0 +1,79 @@ +#!/usr/bin/env zsh +# +# Usage: genpass-apple [NUM] +# +# Generate a password made of 6 pseudowords of 6 characters each +# with the security margin of at least 128 bits. +# +# Example password: xudmec-4ambyj-tavric-mumpub-mydVop-bypjyp +# +# If given a numerical argument, generate that many passwords. + +emulate -L zsh -o no_unset -o warn_create_global -o warn_nested_var + +if [[ ARGC -gt 1 || ${1-1} != ${~:-<1-$((16#7FFFFFFF))>} ]]; then + print -ru2 -- "usage: $0 [NUM]" + return 1 +fi + +zmodload zsh/system zsh/mathfunc || return + +{ + local -r vowels=aeiouy + local -r consonants=bcdfghjklmnpqrstvwxz + local -r digits=0123456789 + + # Sets REPLY to a uniformly distributed random number in [1, $1]. + # Requires: $1 <= 256. + function -$0-rand() { + local c + while true; do + sysread -s1 c || return + # Avoid bias towards smaller numbers. + (( #c < 256 / $1 * $1 )) && break + done + typeset -g REPLY=$((#c % $1 + 1)) + } + + local REPLY chars + + repeat ${1-1}; do + # Generate 6 pseudowords of the form cvccvc where c and v + # denote random consonants and vowels respectively. + local words=() + repeat 6; do + words+=('') + repeat 2; do + for chars in $consonants $vowels $consonants; do + -$0-rand $#chars || return + words[-1]+=$chars[REPLY] + done + done + done + + local pwd=${(j:-:)words} + + # Replace either the first or the last character in one of + # the words with a random digit. + -$0-rand $#digits || return + local digit=$digits[REPLY] + -$0-rand $((2 * $#words)) || return + pwd[REPLY/2*7+2*(REPLY%2)-1]=$digit + + # Convert one lower-case character to upper case. + while true; do + -$0-rand $#pwd || return + [[ $vowels$consonants == *$pwd[REPLY]* ]] && break + done + # NOTE: We aren't using ${(U)c} here because its results are + # locale-dependent. For example, when upper-casing 'i' in Turkish + # locale we would get 'İ', a.k.a. latin capital letter i with dot + # above. We could set LC_CTYPE=C locally but then we would run afoul + # of this zsh bug: https://www.zsh.org/mla/workers/2020/msg00588.html. + local c=$pwd[REPLY] + printf -v c '%o' $((#c - 32)) + printf "%s\\$c%s\\n" "$pwd[1,REPLY-1]" "$pwd[REPLY+1,-1]" || return + done +} always { + unfunction -m -- "-${(b)0}-*" +} } ]]; then + print -ru2 -- "usage: $0 [NUM]" + return 1 +fi + +zmodload zsh/system || return + +{ + local -r chars=abcdefghjkmnpqrstvwxyz0123456789 + local c + repeat ${1-1}; do + repeat 26; do + sysread -s1 c || return + # There is uniform because $#chars divides 256. + print -rn -- $chars[#c%$#chars+1] + done + print + done +} } ]]; then + print -ru2 -- "usage: $0 [NUM]" + return 1 +fi + +zmodload zsh/system zsh/mathfunc || return + +local -r dict=/usr/share/dict/words + +if [[ ! -e $dict ]]; then + print -ru2 -- "$0: file not found: $dict" + return 1 +fi + +# Read all dictionary words and leave only those made of 1-6 characters. +local -a words +words=(${(M)${(f)"$(<$dict)"}:#[a-zA-Z](#c1,6)}) || return + +if (( $#words < 2 )); then + print -ru2 -- "$0: not enough suitable words in $dict" + return 1 +fi + +if (( $#words > 16#7FFFFFFF )); then + print -ru2 -- "$0: too many words in $dict" + return 1 +fi + +# Figure out how many words we need for 128 bits of security margin. +# Each word adds log2($#words) bits. +local -i n=$((ceil(128. / (log($#words) / log(2))))) + +{ + local c + repeat ${1-1}; do + print -rn -- $n + repeat $n; do + while true; do + # Generate a random number in [0, 2**31). + local -i rnd=0 + repeat 4; do + sysread -s1 c || return + (( rnd = (~(1 << 23) & rnd) << 8 | #c )) + done + # Avoid bias towards words in the beginning of the list. + (( rnd < 16#7FFFFFFF / $#words * $#words )) || continue + print -rn -- -$words[rnd%$#words+1] + break + done + done + print + done +} | "$ZSH_CACHE_DIR/completions/_gh" &| diff --git a/dot_oh-my-zsh/plugins/git-auto-fetch/README.md b/dot_oh-my-zsh/plugins/git-auto-fetch/README.md new file mode 100644 index 0000000..e96ab42 --- /dev/null +++ b/dot_oh-my-zsh/plugins/git-auto-fetch/README.md @@ -0,0 +1,50 @@ +# Git auto-fetch + +Automatically fetches all changes from all remotes while you are working in a git-initialized directory. + +To use it, add `git-auto-fetch` to the plugins array in your zshrc file: + +```shell +plugins=(... git-auto-fetch) +``` + +## Usage + +Every time the command prompt is shown all remotes will be fetched in the background. By default, +`git-auto-fetch` will be triggered only if the last auto-fetch was done at least 60 seconds ago. +You can change the fetch interval in your .zshrc: + +```sh +GIT_AUTO_FETCH_INTERVAL=1200 # in seconds +``` + +A log of `git fetch --all` will be saved in `.git/FETCH_LOG`. + +## Toggle auto-fetch per folder + +If you are using a mobile connection or for any other reason you can disable git-auto-fetch +for any folder: + +```shell +$ cd to/your/project +$ git-auto-fetch +disabled +$ git-auto-fetch +enabled +``` + +## Caveats + +Automatically fetching all changes defeats the purpose of `git push --force-with-lease`, +and makes it behave like `git push --force` in some cases. For example: + +Consider that you made some changes and possibly rebased some stuff, which means you'll +need to use `--force-with-lease` to overwrite the remote history of a branch. Between the +time when you make the changes (maybe do a `git log`) and the time when you `git push`, +it's possible that someone else updates the branch you're working on. + +If `git-auto-fetch` triggers then, you'll have fetched the remote changes without knowing +it, and even though you're running the push with `--force-with-lease`, git will overwrite +the recent changes because you already have them in your local repository. The +[`git push --force-with-lease` docs](https://git-scm.com/docs/git-push) talk about possible +solutions to this problem. diff --git a/dot_oh-my-zsh/plugins/git-auto-fetch/git-auto-fetch.plugin.zsh b/dot_oh-my-zsh/plugins/git-auto-fetch/git-auto-fetch.plugin.zsh new file mode 100644 index 0000000..2df34bb --- /dev/null +++ b/dot_oh-my-zsh/plugins/git-auto-fetch/git-auto-fetch.plugin.zsh @@ -0,0 +1,65 @@ +# Default auto-fetch interval: 60 seconds +: ${GIT_AUTO_FETCH_INTERVAL:=60} + +# Necessary for the git-fetch-all function +zmodload zsh/datetime +zmodload -F zsh/stat b:zstat # only zstat command, not stat command + +function git-fetch-all { + ( + # Get git root directory + if ! gitdir="$(command git rev-parse --git-dir 2>/dev/null)"; then + return 0 + fi + + # Do nothing if auto-fetch is disabled or don't have permissions + if [[ ! -w "$gitdir" || -f "$gitdir/NO_AUTO_FETCH" ]] || + [[ -f "$gitdir/FETCH_LOG" && ! -w "$gitdir/FETCH_LOG" ]]; then + return 0 + fi + + # Get time (seconds) when auto-fetch was last run + lastrun="$(zstat +mtime "$gitdir/FETCH_LOG" 2>/dev/null || echo 0)" + # Do nothing if not enough time has passed since last auto-fetch + if (( EPOCHSECONDS - lastrun < $GIT_AUTO_FETCH_INTERVAL )); then + return 0 + fi + + # Fetch all remotes (avoid ssh passphrase prompt) + date -R &>! "$gitdir/FETCH_LOG" + GIT_SSH_COMMAND="command ssh -o BatchMode=yes" \ + GIT_TERMINAL_PROMPT=0 \ + command git fetch --all 2>/dev/null &>> "$gitdir/FETCH_LOG" + ) &| +} + +function git-auto-fetch { + # Do nothing if not in a git repository + command git rev-parse --is-inside-work-tree &>/dev/null || return 0 + + # Remove or create guard file depending on its existence + local guard="$(command git rev-parse --git-dir)/NO_AUTO_FETCH" + if [[ -f "$guard" ]]; then + command rm "$guard" && echo "${fg_bold[green]}enabled${reset_color}" + else + command touch "$guard" && echo "${fg_bold[red]}disabled${reset_color}" + fi +} + +# zle-line-init widget (don't redefine if already defined) +(( ! ${+functions[_git-auto-fetch_zle-line-init]} )) || return 0 + +case "$widgets[zle-line-init]" in + # Simply define the function if zle-line-init doesn't yet exist + builtin|"") function _git-auto-fetch_zle-line-init() { + git-fetch-all + } ;; + # Override the current zle-line-init widget, calling the old one + user:*) zle -N _git-auto-fetch_orig_zle-line-init "${widgets[zle-line-init]#user:}" + function _git-auto-fetch_zle-line-init() { + git-fetch-all + zle _git-auto-fetch_orig_zle-line-init -- "$@" + } ;; +esac + +zle -N zle-line-init _git-auto-fetch_zle-line-init diff --git a/dot_oh-my-zsh/plugins/git-escape-magic/README.md b/dot_oh-my-zsh/plugins/git-escape-magic/README.md new file mode 100644 index 0000000..7fefed3 --- /dev/null +++ b/dot_oh-my-zsh/plugins/git-escape-magic/README.md @@ -0,0 +1,16 @@ +# Git Escape Magic + +This plugin is copied from the original at +https://github.com/knu/zsh-git-escape-magic. All credit for the +functionality enabled by this plugin should go to @knu. + +An excerpt from that project's readme explains its purpose. + +> It eliminates the need for manually escaping those meta-characters. The zle function it provides is context aware and recognizes the characteristics of each subcommand of git. Every time you type one of these meta-characters on a git command line, it automatically escapes the meta-character with a backslash as necessary and as appropriate. + +## Usage + +To use this plugin, add it to your list of plugins in your `.zshrc` file. + +**NOTE**: If you use url-quote-magic, it must be included before this +plugin runs to prevent any conflicts. diff --git a/dot_oh-my-zsh/plugins/git-escape-magic/git-escape-magic b/dot_oh-my-zsh/plugins/git-escape-magic/git-escape-magic new file mode 100644 index 0000000..94a8d7b --- /dev/null +++ b/dot_oh-my-zsh/plugins/git-escape-magic/git-escape-magic @@ -0,0 +1,135 @@ +# -*- mode: sh -*- +# +# git-escape-magic - zle tweak for git command line arguments +# +# Copyright (c) 2011, 2012, 2014 Akinori MUSHA +# Licensed under the 2-clause BSD license. +# +# This tweak eliminates the need for manually escaping shell +# meta-characters such as [~^{}] that are used for specifying a git +# object (commit or tree). Every time you type one of these +# characters on a git command line, it is automatically escaped with a +# backslash as necessary and as appropriate. +# +# If you want to use this with url-quote-magic, make sure to enable it +# first. +# +# Usage: +# autoload -Uz git-escape-magic +# git-escape-magic +# + +git-escape-magic.self-insert() { + emulate -L zsh + setopt extendedglob + local self_insert_function + zstyle -s ':git-escape-magic' self-insert-function self_insert_function + + if [[ "$KEYS" == [{}~^]* ]] && { + local qkey="${(q)KEYS}" + [[ "$KEYS" != "$qkey" ]] + } && { + local lbuf="$LBUFFER$qkey" + [[ "${(Q)LBUFFER}$KEYS" == "${(Q)lbuf}" ]] + } && { + local -a words + words=("${(@Q)${(z)lbuf}}") + [[ "$words[(i)(*/|)git(|-[^/]##)]" -le $#words ]] + } + then + local i + i="$words[(I)([;(){\&]|\&[\&\!]|\|\||[=<>]\(*)]" + if [[ $i -gt 0 ]]; then + shift $((i-1)) words + if [[ "$words[1]" == [\=\<\>]\(* ]]; then + words[1]="${words[1]#[=<>]\(}" + else + [[ "$words[1]" == \; && $words[2] == (then|else|elif|do) ]] && shift words + shift words + fi + fi + while [[ "$words[1]" == (if|while|until|\!) ]]; do + shift words + done + while [[ "$words[1]" == [A-Za-z_][A-Za-z0-9_]#=* ]]; do + shift words + done + [[ "$words[1]" == (*/|)git(|-[^/]##) ]] && { + local subcommand + subcommand="${words[1]##*/git-}" + if [[ -z "$subcommand" ]]; then + shift words + subcommand="$words[1]" + fi + [[ $#words -ge 2 ]] + } && + case "$subcommand" in + # commands that may take pathspec but never take refspec with [{}~^] + (add|rm|am|apply|check-attr|checkout-index|clean|clone|config|diff-files|hash-object|help|index-pack|mailinfo|mailsplit|merge-file|merge-index|mergetool|mktag|mv|pack-objects|pack-redundant|relink|send-email|show-index|show-ref|stage|status|verify-pack) + false ;; + # commands that may take pathspec but rarely take refspec with [{}~^] + (for-each-ref|grep|ls-files|update-index) + false ;; + (archive|ls-tree) + ! [[ $#words -ge 3 && + "$words[-2]" == [^-]* ]] ;; + (diff-tree) + ! [[ $#words -ge 4 && + "$words[-2]" == [^-]* && + "$words[-3]" == [^-]* ]] ;; + (*) + [[ $words[(i)--] -gt $#words ]] ;; + esac && + case "${words[-1]%%"$KEYS"}" in + (*[@^]) + [[ "$KEYS" == [{~^]* ]] ;; + (*[@^]\{[^}]##) + [[ "$KEYS" == \}* ]] ;; + (?*) + [[ "$KEYS" == [~^]* ]] ;; + (*) + false ;; + esac && + LBUFFER="$LBUFFER\\" + fi + + zle "$self_insert_function" +} + +git-escape-magic.on() { + emulate -L zsh + local self_insert_function="${$(zle -lL | awk \ + '$1=="zle"&&$2=="-N"&&$3=="self-insert"{print $4;exit}'):-.self-insert}" + + [[ "$self_insert_function" == git-escape-magic.self-insert ]] && + return 0 + + # For url-quote-magic which does not zle -N itself + zle -la "$self_insert_function" || zle -N "$self_insert_function" + + zstyle ':git-escape-magic' self-insert-function "$self_insert_function" + + zle -A git-escape-magic.self-insert self-insert + return 0 +} + +git-escape-magic.off() { + emulate -L zsh + local self_insert_function + zstyle -s ':git-escape-magic' self-insert-function self_insert_function + + [[ -n "$self_insert_function" ]] && + zle -A "$self_insert_function" self-insert + return 0 +} + +zle -N git-escape-magic.self-insert +zle -N git-escape-magic.on +zle -N git-escape-magic.off + +git-escape-magic() { + git-escape-magic.on +} + +[[ -o kshautoload ]] || git-escape-magic "$@" + diff --git a/dot_oh-my-zsh/plugins/git-escape-magic/git-escape-magic.plugin.zsh b/dot_oh-my-zsh/plugins/git-escape-magic/git-escape-magic.plugin.zsh new file mode 100644 index 0000000..c021ea7 --- /dev/null +++ b/dot_oh-my-zsh/plugins/git-escape-magic/git-escape-magic.plugin.zsh @@ -0,0 +1,9 @@ +# Automatically detect and escape zsh globbing meta-characters when used with +# git refspec characters like `[^~{}]`. NOTE: This must be loaded _after_ +# url-quote-magic. +# +# This trick is detailed at https://github.com/knu/zsh-git-escape-magic and is +# what allowed this plugin to exist. + +autoload -Uz git-escape-magic +git-escape-magic diff --git a/dot_oh-my-zsh/plugins/git-extras/README.md b/dot_oh-my-zsh/plugins/git-extras/README.md new file mode 100644 index 0000000..2adc9d4 --- /dev/null +++ b/dot_oh-my-zsh/plugins/git-extras/README.md @@ -0,0 +1,17 @@ +# git-extras + +This plugin provides completion definitions for some of the commands defined by [git-extras](https://github.com/tj/git-extras). + +To use it, add `git-extras` to the plugins array in your zshrc file: + +```zsh +plugins=(... git-extras) +``` + +## Setup notes + +The completions work by augmenting the `_git` completion provided by `zsh`. This only works with the `zsh`-provided `_git`, not the `_git` provided by `git` itself. If you have both `zsh` and `git` installed, you need to make sure that the `zsh`-provided `_git` takes precedence. + +### OS X Homebrew Setup + +**NOTE:** this no longer works on current Homebrew distributions of git. ~~On OS X with Homebrew, you need to install `git` with `brew install git --without-completions`. Otherwise, `git`'s `_git` will take precedence, and you won't see the completions for `git-extras` commands.~~ diff --git a/dot_oh-my-zsh/plugins/git-extras/git-extras.plugin.zsh b/dot_oh-my-zsh/plugins/git-extras/git-extras.plugin.zsh new file mode 100644 index 0000000..6b96e12 --- /dev/null +++ b/dot_oh-my-zsh/plugins/git-extras/git-extras.plugin.zsh @@ -0,0 +1,498 @@ +# ------------------------------------------------------------------------------ +# Description +# ----------- +# +# Completion script for git-extras (https://github.com/tj/git-extras). +# +# This depends on and reuses some of the internals of the _git completion +# function that ships with zsh itself. It will not work with the _git that ships +# with git. +# +# ------------------------------------------------------------------------------ +# Authors +# ------- +# +# * Alexis GRIMALDI (https://github.com/agrimaldi) +# * spacewander (https://github.com/spacewander) +# +# ------------------------------------------------------------------------------ +# Inspirations +# ----------- +# +# * git-extras (https://github.com/tj/git-extras) +# * git-flow-completion (https://github.com/bobthecow/git-flow-completion) +# +# ------------------------------------------------------------------------------ + + +# Internal functions +# These are a lot like their __git_* equivalents inside _git + +__gitex_command_successful () { + if (( ${#*:#0} > 0 )); then + _message 'not a git repository' + return 1 + fi + return 0 +} + +__gitex_commits() { + declare -A commits + git log --oneline -15 | sed 's/\([[:alnum:]]\{7\}\) /\1:/' | while read commit + do + hash=$(echo $commit | cut -d':' -f1) + commits[$hash]="$commit" + done + local ret=1 + _describe -t commits commit commits && ret=0 +} + +__gitex_remote_names() { + local expl + declare -a remote_names + remote_names=(${(f)"$(_call_program remotes git remote 2>/dev/null)"}) + __gitex_command_successful || return + _wanted remote-names expl remote-name compadd $* - $remote_names +} + +__gitex_tag_names() { + local expl + declare -a tag_names + tag_names=(${${(f)"$(_call_program tags git for-each-ref --format='"%(refname)"' refs/tags 2>/dev/null)"}#refs/tags/}) + __gitex_command_successful || return + _wanted tag-names expl tag-name compadd $* - $tag_names +} + + +__gitex_branch_names() { + local expl + declare -a branch_names + branch_names=(${${(f)"$(_call_program branchrefs git for-each-ref --format='"%(refname)"' refs/heads 2>/dev/null)"}#refs/heads/}) + __gitex_command_successful || return + _wanted branch-names expl branch-name compadd $* - $branch_names +} + +__gitex_specific_branch_names() { + local expl + declare -a branch_names + branch_names=(${${(f)"$(_call_program branchrefs git for-each-ref --format='"%(refname)"' refs/heads/"$1" 2>/dev/null)"}#refs/heads/$1/}) + __gitex_command_successful || return + _wanted branch-names expl branch-name compadd - $branch_names +} + +__gitex_chore_branch_names() { + __gitex_specific_branch_names 'chore' +} + +__gitex_feature_branch_names() { + __gitex_specific_branch_names 'feature' +} + +__gitex_refactor_branch_names() { + __gitex_specific_branch_names 'refactor' +} + +__gitex_bug_branch_names() { + __gitex_specific_branch_names 'bug' +} + +__gitex_submodule_names() { + local expl + declare -a submodule_names + submodule_names=(${(f)"$(_call_program branchrefs git submodule status | awk '{print $2}')"}) # ' + __gitex_command_successful || return + _wanted submodule-names expl submodule-name compadd $* - $submodule_names +} + + +__gitex_author_names() { + local expl + declare -a author_names + author_names=(${(f)"$(_call_program branchrefs git log --format='%aN' | sort -u)"}) + __gitex_command_successful || return + _wanted author-names expl author-name compadd $* - $author_names +} + +# subcommands +_git-authors() { + _arguments -C \ + '(--list -l)'{--list,-l}'[show authors]' \ + '--no-email[without email]' \ +} + +_git-bug() { + local curcontext=$curcontext state line ret=1 + declare -A opt_args + + _arguments -C \ + ': :->command' \ + '*:: :->option-or-argument' && ret=0 + + case $state in + (command) + declare -a commands + commands=( + 'finish:merge bug into the current branch' + ) + _describe -t commands command commands && ret=0 + ;; + (option-or-argument) + curcontext=${curcontext%:*}-$line[1]: + case $line[1] in + (finish) + _arguments -C \ + ':branch-name:__gitex_bug_branch_names' + ;; + -r|--remote ) + _arguments -C \ + ':remote-name:__gitex_remote_names' + ;; + esac + return 0 + esac + + _arguments \ + '(--remote -r)'{--remote,-r}'[setup remote tracking branch]' +} + + +_git-changelog() { + _arguments \ + '(-l --list)'{-l,--list}'[list commits]' \ +} + +_git-chore() { + local curcontext=$curcontext state line ret=1 + declare -A opt_args + + _arguments -C \ + ': :->command' \ + '*:: :->option-or-argument' && ret=0 + + case $state in + (command) + declare -a commands + commands=( + 'finish:merge and delete the chore branch' + ) + _describe -t commands command commands && ret=0 + ;; + (option-or-argument) + curcontext=${curcontext%:*}-$line[1]: + case $line[1] in + (finish) + _arguments -C \ + ':branch-name:__gitex_chore_branch_names' + ;; + -r|--remote ) + _arguments -C \ + ':remote-name:__gitex_remote_names' + ;; + esac + return 0 + esac + + _arguments \ + '(--remote -r)'{--remote,-r}'[setup remote tracking branch]' +} + + +_git-contrib() { + _arguments \ + ':author:__gitex_author_names' +} + + +_git-count() { + _arguments \ + '--all[detailed commit count]' +} + +_git-create-branch() { + local curcontext=$curcontext state line + _arguments -C \ + ': :->command' \ + '*:: :->option-or-argument' + + case "$state" in + (command) + _arguments \ + '(--remote -r)'{--remote,-r}'[setup remote tracking branch]' + ;; + (option-or-argument) + curcontext=${curcontext%:*}-$line[1]: + case $line[1] in + -r|--remote ) + _arguments -C \ + ':remote-name:__gitex_remote_names' + ;; + esac + esac +} + +_git-delete-branch() { + _arguments \ + ':branch-name:__gitex_branch_names' +} + + +_git-delete-submodule() { + _arguments \ + ':submodule-name:__gitex_submodule_names' +} + + +_git-delete-tag() { + _arguments \ + ':tag-name:__gitex_tag_names' +} + + +_git-effort() { + _arguments \ + '--above[ignore file with less than x commits]' +} + + +_git-extras() { + local curcontext=$curcontext state line ret=1 + declare -A opt_args + + _arguments -C \ + ': :->command' \ + '*:: :->option-or-argument' && ret=0 + + case $state in + (command) + declare -a commands + commands=( + 'update:update git-extras' + ) + _describe -t commands command commands && ret=0 + ;; + esac + + _arguments \ + '(-v --version)'{-v,--version}'[show current version]' +} + + +_git-feature() { + local curcontext=$curcontext state line ret=1 + declare -A opt_args + + _arguments -C \ + ': :->command' \ + '*:: :->option-or-argument' && ret=0 + + case $state in + (command) + declare -a commands + commands=( + 'finish:merge feature into the current branch' + ) + _describe -t commands command commands && ret=0 + ;; + (option-or-argument) + curcontext=${curcontext%:*}-$line[1]: + case $line[1] in + (finish) + _arguments -C \ + ':branch-name:__gitex_feature_branch_names' + ;; + -r|--remote ) + _arguments -C \ + ':remote-name:__gitex_remote_names' + ;; + esac + return 0 + esac + + _arguments \ + '(--remote -r)'{--remote,-r}'[setup remote tracking branch]' +} + +_git-graft() { + _arguments \ + ':src-branch-name:__gitex_branch_names' \ + ':dest-branch-name:__gitex_branch_names' +} + +_git-guilt() { + _arguments -C \ + '(--email -e)'{--email,-e}'[display author emails instead of names]' \ + '(--ignore-whitespace -w)'{--ignore-whitespace,-w}'[ignore whitespace only changes]' \ + '(--debug -d)'{--debug,-d}'[output debug information]' \ + '-h[output usage information]' +} + +_git-ignore() { + _arguments -C \ + '(--local -l)'{--local,-l}'[show local gitignore]' \ + '(--global -g)'{--global,-g}'[show global gitignore]' \ + '(--private -p)'{--private,-p}'[show repo gitignore]' +} + + +_git-ignore() { + _arguments -C \ + '(--append -a)'{--append,-a}'[append .gitignore]' \ + '(--replace -r)'{--replace,-r}'[replace .gitignore]' \ + '(--list-in-table -l)'{--list-in-table,-l}'[print available types in table format]' \ + '(--list-alphabetically -L)'{--list-alphabetically,-L}'[print available types in alphabetical order]' \ + '(--search -s)'{--search,-s}'[search word in available types]' +} + + +_git-merge-into() { + _arguments '--ff-only[merge only fast-forward]' + _arguments \ + ':src:__gitex_branch_names' \ + ':dest:__gitex_branch_names' +} + +_git-missing() { + _arguments \ + ':first-branch-name:__gitex_branch_names' \ + ':second-branch-name:__gitex_branch_names' +} + + +_git-refactor() { + local curcontext=$curcontext state line ret=1 + declare -A opt_args + + _arguments -C \ + ': :->command' \ + '*:: :->option-or-argument' && ret=0 + + case $state in + (command) + declare -a commands + commands=( + 'finish:merge refactor into the current branch' + ) + _describe -t commands command commands && ret=0 + ;; + (option-or-argument) + curcontext=${curcontext%:*}-$line[1]: + case $line[1] in + (finish) + _arguments -C \ + ':branch-name:__gitex_refactor_branch_names' + ;; + -r|--remote ) + _arguments -C \ + ':remote-name:__gitex_remote_names' + ;; + esac + return 0 + esac + + _arguments \ + '(--remote -r)'{--remote,-r}'[setup remote tracking branch]' +} + + +_git-squash() { + _arguments \ + ':branch-name:__gitex_branch_names' +} + +_git-stamp() { + _arguments -C \ + '(--replace -r)'{--replace,-r}'[replace stamps with same id]' +} + +_git-standup() { + _arguments -C \ + '-a[Specify the author of commits. Use "all" to specify all authors.]' \ + '-d[Show history since N days ago]' \ + '-D[Specify the date format displayed in commit history]' \ + '-f[Fetch commits before showing history]' \ + '-g[Display GPG signed info]' \ + '-h[Display help message]' \ + '-L[Enable the inclusion of symbolic links]' \ + '-m[The depth of recursive directory search]' +} + +_git-summary() { + _arguments '--line[summarize with lines rather than commits]' + __gitex_commits +} + + +_git-undo(){ + _arguments -C \ + '(--soft -s)'{--soft,-s}'[only rolls back the commit but changes remain un-staged]' \ + '(--hard -h)'{--hard,-h}'[wipes your commit(s)]' +} + +zstyle -g existing_user_commands ':completion:*:*:git:*' user-commands + +zstyle ':completion:*:*:git:*' user-commands $existing_user_commands \ + alias:'define, search and show aliases' \ + archive-file:'export the current head of the git repository to an archive' \ + authors:'generate authors report' \ + back:'undo and stage latest commits' \ + bug:'create bug branch' \ + bulk:'run bulk commands' \ + changelog:'generate a changelog report' \ + chore:'create chore branch' \ + clear-soft:'soft clean up a repository' \ + clear:'rigorously clean up a repository' \ + commits-since:'show commit logs since some date' \ + contrib:'show user contributions' \ + count:'show commit count' \ + create-branch:'create branches' \ + delete-branch:'delete branches' \ + delete-merged-branches:'delete merged branches' \ + delete-submodule:'delete submodules' \ + delete-tag:'delete tags' \ + delta:'lists changed files' \ + effort:'show effort statistics on file(s)' \ + extras:'awesome git utilities' \ + feature:'create/merge feature branch' \ + force-clone:'overwrite local repositories with clone' \ + fork:'fork a repo on GitHub' \ + fresh-branch:'create fresh branches' \ + gh-pages:'create the GitHub pages branch' \ + graft:'merge and destroy a given branch' \ + guilt:'calculate change between two revisions' \ + ignore-io:'get sample gitignore file' \ + ignore:'add .gitignore patterns' \ + info:'returns information on current repository' \ + local-commits:'list local commits' \ + lock:'lock a file excluded from version control' \ + locked:'ls files that have been locked' \ + merge-into:'merge one branch into another' \ + merge-repo:'merge two repo histories' \ + missing:'show commits missing from another branch' \ + mr:'checks out a merge request locally' \ + obliterate:'rewrite past commits to remove some files' \ + pr:'checks out a pull request locally' \ + psykorebase:'rebase a branch with a merge commit' \ + pull-request:'create pull request to GitHub project' \ + reauthor:'replace the author and/or committer identities in commits and tags' \ + rebase-patch:'rebases a patch' \ + refactor:'create refactor branch' \ + release:'commit, tag and push changes to the repository' \ + rename-branch:'rename a branch' \ + rename-tag:'rename a tag' \ + repl:'git read-eval-print-loop' \ + reset-file:'reset one file' \ + root:'show path of root' \ + scp:'copy files to ssh compatible `git-remote`' \ + sed:'replace patterns in git-controlled files' \ + setup:'set up a git repository' \ + show-merged-branches:'show merged branches' \ + show-tree:'show branch tree of commit history' \ + show-unmerged-branches:'show unmerged branches' \ + squash:'import changes from a branch' \ + stamp:'stamp the last commit message' \ + standup:'recall the commit history' \ + summary:'show repository summary' \ + sync:'sync local branch with remote branch' \ + touch:'touch and add file to the index' \ + undo:'remove latest commits' \ + unlock:'unlock a file excluded from version control' diff --git a/dot_oh-my-zsh/plugins/git-flow-avh/README.md b/dot_oh-my-zsh/plugins/git-flow-avh/README.md new file mode 100644 index 0000000..0768d93 --- /dev/null +++ b/dot_oh-my-zsh/plugins/git-flow-avh/README.md @@ -0,0 +1,19 @@ +# git-flow (AVH Edition) plugin + +This plugin adds completion for the [git-flow (AVH Edition)](https://github.com/petervanderdoes/gitflow-avh). +The AVH Edition of the git extensions that provides high-level repository operations for [Vincent Driessen's branching model](https://nvie.com/posts/a-successful-git-branching-model/). + +To use it, add `git-flow-avh` to the plugins array in your zshrc file: + +```zsh +plugins=(... git-flow-avh) +``` + +## Requirements + +1. The git-flow tool has to be [installed](https://github.com/petervanderdoes/gitflow-avh#installing-git-flow) + separately. + +2. You have to use zsh's git completion instead of the git project's git completion. This is typically + done by default so you don't need to do anything else. If you installed git with Homebrew you + might have to uninstall the git completion it's bundled with. diff --git a/dot_oh-my-zsh/plugins/git-flow-avh/git-flow-avh.plugin.zsh b/dot_oh-my-zsh/plugins/git-flow-avh/git-flow-avh.plugin.zsh new file mode 100644 index 0000000..860ca55 --- /dev/null +++ b/dot_oh-my-zsh/plugins/git-flow-avh/git-flow-avh.plugin.zsh @@ -0,0 +1,526 @@ +_git-flow () +{ + local curcontext="$curcontext" state line + typeset -A opt_args + + _arguments -C \ + ':command:->command' \ + '*::options:->options' + + case $state in + (command) + + local -a subcommands + subcommands=( + 'init:Initialize a new git repo with support for the branching model.' + 'feature:Manage your feature branches.' + 'bugfix:Manage your bugfix branches.' + 'config:Manage your configuration.' + 'release:Manage your release branches.' + 'hotfix:Manage your hotfix branches.' + 'support:Manage your support branches.' + 'version:Shows version information.' + 'finish:Finish the branch you are currently on.' + 'delete:Delete the branch you are currently on.' + 'publish:Publish the branch you are currently on.' + 'rebase:Rebase the branch you are currently on.' + ) + _describe -t commands 'git flow' subcommands + ;; + + (options) + case $line[1] in + + (init) + _arguments \ + -f'[Force setting of gitflow branches, even if already configured]' + ;; + + (version) + ;; + + (hotfix) + __git-flow-hotfix + ;; + + (release) + __git-flow-release + ;; + + (feature) + __git-flow-feature + ;; + (bugfix) + __git-flow-bugfix + ;; + + (config) + __git-flow-config + ;; + + esac + ;; + esac +} + +__git-flow-release () +{ + local curcontext="$curcontext" state line + typeset -A opt_args + + _arguments -C \ + ':command:->command' \ + '*::options:->options' + + case $state in + (command) + + local -a subcommands + subcommands=( + 'start:Start a new release branch.' + 'finish:Finish a release branch.' + 'list:List all your release branches. (Alias to `git flow release`)' + 'publish:Publish release branch to remote.' + 'track:Checkout remote release branch.' + 'rebase:Rebase from integration branch.' + 'delete:Delete a release branch.' + ) + _describe -t commands 'git flow release' subcommands + _arguments \ + -v'[Verbose (more) output]' + ;; + + (options) + case $line[1] in + + (start) + _arguments \ + -F'[Fetch from origin before performing finish]'\ + ':version:__git_flow_version_list' + ;; + + (finish) + _arguments \ + -F'[Fetch from origin before performing finish]' \ + -s'[Sign the release tag cryptographically]'\ + -u'[Use the given GPG-key for the digital signature (implies -s)]'\ + -m'[Use the given tag message]'\ + -p'[Push to $ORIGIN after performing finish]'\ + ':version:__git_flow_version_list' + ;; + + (delete) + _arguments \ + -f'[Force deletion]' \ + -r'[Delete remote branch]' \ + ':version:__git_flow_version_list' + ;; + + (publish) + _arguments \ + ':version:__git_flow_version_list' + ;; + + (track) + _arguments \ + ':version:__git_flow_version_list' + ;; + + (rebase) + _arguments \ + -i'[Do an interactive rebase]' \ + ':branch:__git_branch_names' + ;; + + *) + _arguments \ + -v'[Verbose (more) output]' + ;; + esac + ;; + esac +} + +__git-flow-hotfix () +{ + local curcontext="$curcontext" state line + typeset -A opt_args + + _arguments -C \ + ':command:->command' \ + '*::options:->options' + + case $state in + (command) + + local -a subcommands + subcommands=( + 'start:Start a new hotfix branch.' + 'finish:Finish a hotfix branch.' + 'delete:Delete a hotfix branch.' + 'rebase:Rebase from integration branch.' + 'list:List all your hotfix branches. (Alias to `git flow hotfix`)' + 'rename:Rename a hotfix branch.' + ) + _describe -t commands 'git flow hotfix' subcommands + _arguments \ + -v'[Verbose (more) output]' + ;; + + (options) + case $line[1] in + + (start) + _arguments \ + -F'[Fetch from origin before performing finish]'\ + ':hotfix:__git_flow_version_list'\ + ':branch-name:__git_branch_names' + ;; + + (finish) + _arguments \ + -F'[Fetch from origin before performing finish]' \ + -s'[Sign the release tag cryptographically]'\ + -u'[Use the given GPG-key for the digital signature (implies -s)]'\ + -m'[Use the given tag message]'\ + -p'[Push to $ORIGIN after performing finish]'\ + ':hotfix:__git_flow_hotfix_list' + ;; + + (delete) + _arguments \ + -f'[Force deletion]' \ + -r'[Delete remote branch]' \ + ':hotfix:__git_flow_hotfix_list' + ;; + + (rebase) + _arguments \ + -i'[Do an interactive rebase]' \ + ':branch:__git_branch_names' + ;; + + *) + _arguments \ + -v'[Verbose (more) output]' + ;; + esac + ;; + esac +} + +__git-flow-feature () +{ + local curcontext="$curcontext" state line + typeset -A opt_args + + _arguments -C \ + ':command:->command' \ + '*::options:->options' + + case $state in + (command) + + local -a subcommands + subcommands=( + 'start:Start a new feature branch.' + 'finish:Finish a feature branch.' + 'delete:Delete a feature branch.' + 'list:List all your feature branches. (Alias to `git flow feature`)' + 'publish:Publish feature branch to remote.' + 'track:Checkout remote feature branch.' + 'diff:Show all changes.' + 'rebase:Rebase from integration branch.' + 'checkout:Checkout local feature branch.' + 'pull:Pull changes from remote.' + 'rename:Rename a feature branch.' + ) + _describe -t commands 'git flow feature' subcommands + _arguments \ + -v'[Verbose (more) output]' + ;; + + (options) + case $line[1] in + + (start) + _arguments \ + -F'[Fetch from origin before performing finish]'\ + ':feature:__git_flow_feature_list'\ + ':branch-name:__git_branch_names' + ;; + + (finish) + _arguments \ + -F'[Fetch from origin before performing finish]' \ + -r'[Rebase instead of merge]'\ + ':feature:__git_flow_feature_list' + ;; + + (delete) + _arguments \ + -f'[Force deletion]' \ + -r'[Delete remote branch]' \ + ':feature:__git_flow_feature_list' + ;; + + (publish) + _arguments \ + ':feature:__git_flow_feature_list'\ + ;; + + (track) + _arguments \ + ':feature:__git_flow_feature_list'\ + ;; + + (diff) + _arguments \ + ':branch:__git_branch_names'\ + ;; + + (rebase) + _arguments \ + -i'[Do an interactive rebase]' \ + ':branch:__git_branch_names' + ;; + + (checkout) + _arguments \ + ':branch:__git_flow_feature_list'\ + ;; + + (pull) + _arguments \ + ':remote:__git_remotes'\ + ':branch:__git_branch_names' + ;; + + *) + _arguments \ + -v'[Verbose (more) output]' + ;; + esac + ;; + esac +} + +__git-flow-bugfix () +{ + local curcontext="$curcontext" state line + typeset -A opt_args + + _arguments -C \ + ':command:->command' \ + '*::options:->options' + + case $state in + (command) + + local -a subcommands + subcommands=( + 'start:Start a new bugfix branch.' + 'finish:Finish a bugfix branch.' + 'delete:Delete a bugfix branch.' + 'list:List all your bugfix branches. (Alias to `git flow bugfix`)' + 'publish:Publish bugfix branch to remote.' + 'track:Checkout remote bugfix branch.' + 'diff:Show all changes.' + 'rebase:Rebase from integration branch.' + 'checkout:Checkout local bugfix branch.' + 'pull:Pull changes from remote.' + 'rename:Rename a bugfix branch.' + ) + _describe -t commands 'git flow bugfix' subcommands + _arguments \ + -v'[Verbose (more) output]' + ;; + + (options) + case $line[1] in + + (start) + _arguments \ + -F'[Fetch from origin before performing finish]'\ + ':bugfix:__git_flow_bugfix_list'\ + ':branch-name:__git_branch_names' + ;; + + (finish) + _arguments \ + -F'[Fetch from origin before performing finish]' \ + -r'[Rebase instead of merge]'\ + ':bugfix:__git_flow_bugfix_list' + ;; + + (delete) + _arguments \ + -f'[Force deletion]' \ + -r'[Delete remote branch]' \ + ':bugfix:__git_flow_bugfix_list' + ;; + + (publish) + _arguments \ + ':bugfix:__git_flow_bugfix_list'\ + ;; + + (track) + _arguments \ + ':bugfix:__git_flow_bugfix_list'\ + ;; + + (diff) + _arguments \ + ':branch:__git_branch_names'\ + ;; + + (rebase) + _arguments \ + -i'[Do an interactive rebase]' \ + ':branch:__git_branch_names' + ;; + + (checkout) + _arguments \ + ':branch:__git_flow_bugfix_list'\ + ;; + + (pull) + _arguments \ + ':remote:__git_remotes'\ + ':branch:__git_branch_names' + ;; + + *) + _arguments \ + -v'[Verbose (more) output]' + ;; + esac + ;; + esac +} + +__git-flow-config () +{ + local curcontext="$curcontext" state line + typeset -A opt_args + + _arguments -C \ + ':command:->command' \ + '*::options:->options' + + case $state in + (command) + + local -a subcommands + subcommands=( + 'list:List the configuration. (Alias to `git flow config`)' + 'set:Set the configuration option' + ) + _describe -t commands 'git flow config' subcommands + ;; + + (options) + case $line[1] in + + (set) + _arguments \ + --local'[Use repository config file]' \ + --global'[Use global config file]'\ + --system'[Use system config file]'\ + --file'[Use given config file]'\ + ':option:(master develop feature hotfix release support versiontagprefix)' + ;; + + *) + _arguments \ + --local'[Use repository config file]' \ + --global'[Use global config file]'\ + --system'[Use system config file]'\ + --file'[Use given config file]' + ;; + esac + ;; + esac +} +__git_flow_version_list () +{ + local expl + declare -a versions + + versions=(${${(f)"$(_call_program versions git flow release list 2> /dev/null | tr -d ' |*')"}}) + __git_command_successful || return + + _wanted versions expl 'version' compadd $versions +} + +__git_flow_feature_list () +{ + local expl + declare -a features + + features=(${${(f)"$(_call_program features git flow feature list 2> /dev/null | tr -d ' |*')"}}) + __git_command_successful || return + + _wanted features expl 'feature' compadd $features +} + +__git_flow_bugfix_list () +{ + local expl + declare -a bugfixes + + bugfixes=(${${(f)"$(_call_program bugfixes git flow bugfix list 2> /dev/null | tr -d ' |*')"}}) + __git_command_successful || return + + _wanted bugfixes expl 'bugfix' compadd $bugfixes +} + +__git_remotes () { + local expl gitdir remotes + + gitdir=$(_call_program gitdir git rev-parse --git-dir 2>/dev/null) + __git_command_successful || return + + remotes=(${${(f)"$(_call_program remotes git config --get-regexp '"^remote\..*\.url$"')"}//#(#b)remote.(*).url */$match[1]}) + __git_command_successful || return + + # TODO: Should combine the two instead of either or. + if (( $#remotes > 0 )); then + _wanted remotes expl remote compadd $* - $remotes + else + _wanted remotes expl remote _files $* - -W "($gitdir/remotes)" -g "$gitdir/remotes/*" + fi +} + +__git_flow_hotfix_list () +{ + local expl + declare -a hotfixes + + hotfixes=(${${(f)"$(_call_program hotfixes git flow hotfix list 2> /dev/null | tr -d ' |*')"}}) + __git_command_successful || return + + _wanted hotfixes expl 'hotfix' compadd $hotfixes +} + +__git_branch_names () { + local expl + declare -a branch_names + + branch_names=(${${(f)"$(_call_program branchrefs git for-each-ref --format='"%(refname)"' refs/heads 2>/dev/null)"}#refs/heads/}) + __git_command_successful || return + + _wanted branch-names expl branch-name compadd $* - $branch_names +} + +__git_command_successful () { + if (( ${#pipestatus:#0} > 0 )); then + _message 'not a git repository' + return 1 + fi + return 0 +} + +zstyle ':completion:*:*:git:*' user-commands flow:'provide high-level repository operations' diff --git a/dot_oh-my-zsh/plugins/git-flow/README.md b/dot_oh-my-zsh/plugins/git-flow/README.md new file mode 100644 index 0000000..fc8ccf0 --- /dev/null +++ b/dot_oh-my-zsh/plugins/git-flow/README.md @@ -0,0 +1,40 @@ +# Git-Flow plugin + +This plugin adds completion and aliases for the [`git-flow` command](https://github.com/nvie/gitflow). + +To use it, add `git-flow` to the plugins array in your zshrc file: + +```zsh +plugins=(... git-flow) +``` + +## Aliases + +| Alias | Command | Description | +| --------- | ----------------------------------------- | ---------------------------------------------- | +| `gcd` | `git checkout develop` | Check out develop branch | +| `gch` | `git checkout hotfix` | Check out hotfix branch | +| `gcr` | `git checkout release` | Check out release branch | +| `gfl` | `git flow` | Git-Flow command | +| `gflf` | `git flow feature` | List existing feature branches | +| `gflff` | `git flow feature finish` | Finish feature: `gflff ` | +| `gflffc` | `gflff ${$(git_current_branch)#feature/}` | Finish current feature | +| `gflfp` | `git flow feature publish` | Publish feature: `gflfp ` | +| `gflfpc` | `gflfp ${$(git_current_branch)#feature/}` | Publish current feature | +| `gflfpll` | `git flow feature pull` | Pull remote feature: `gflfpll ` | +| `gflfs` | `git flow feature start` | Start a new feature: `gflfs ` | +| `gflh` | `git flow hotfix` | List existing hotfix branches | +| `gflhf` | `git flow hotfix finish` | Finish hotfix: `gflhf ` | +| `gflhfc` | `gflhf ${$(git_current_branch)#hotfix/}` | Finish current hotfix | +| `gflhp` | `git flow hotfix publish` | Publish hostfix: `gflhp ` | +| `gflhpc` | `gflhp ${$(git_current_branch)#hotfix/}` | Finish current hotfix | +| `gflhs` | `git flow hotfix start` | Start a new hotfix: `gflhs ` | +| `gfli` | `git flow init` | Initialize git-flow repository | +| `gflr` | `git flow release` | List existing release branches | +| `gflrf` | `git flow release finish` | Finish release: `gflrf ` | +| `gflrfc` | `gflrf ${$(git_current_branch)#release/}` | Finish current release | +| `gflrp` | `git flow release publish` | Publish release: `gflrp ` | +| `gflrpc` | `gflrp ${$(git_current_branch)#release/}` | Publish current release | +| `gflrs` | `git flow release start` | Start a new release: `gflrs ` | + +[More information about `git-flow` commands](https://github.com/nvie/gitflow/wiki/Command-Line-Arguments). diff --git a/dot_oh-my-zsh/plugins/git-flow/_git-flow b/dot_oh-my-zsh/plugins/git-flow/_git-flow new file mode 100644 index 0000000..eab7127 --- /dev/null +++ b/dot_oh-my-zsh/plugins/git-flow/_git-flow @@ -0,0 +1,327 @@ +#compdef git-flow + +_git-flow () { + local curcontext="$curcontext" state line + typeset -A opt_args + + _arguments -C \ + ':command:->command' \ + '*::options:->options' + + case $state in + (command) + + local -a subcommands + subcommands=( + 'init:Initialize a new git repo with support for the branching model.' + 'feature:Manage your feature branches.' + 'release:Manage your release branches.' + 'hotfix:Manage your hotfix branches.' + 'support:Manage your support branches.' + 'version:Shows version information.' + ) + _describe -t commands 'git flow' subcommands + ;; + + (options) + case $line[1] in + + (init) + _arguments \ + -f'[Force setting of gitflow branches, even if already configured]' + ;; + + (version) + ;; + + (hotfix) + __git-flow-hotfix + ;; + + (release) + __git-flow-release + ;; + + (feature) + __git-flow-feature + ;; + esac + ;; + esac +} + +__git-flow-release () { + local curcontext="$curcontext" state line + typeset -A opt_args + + _arguments -C \ + ':command:->command' \ + '*::options:->options' + + case $state in + (command) + + local -a subcommands + subcommands=( + 'start:Start a new release branch.' + 'finish:Finish a release branch.' + 'list:List all your release branches. (Alias to `git flow release`)' + 'publish: public' + 'track: track' + ) + _describe -t commands 'git flow release' subcommands + _arguments \ + -v'[Verbose (more) output]' + ;; + + (options) + case $line[1] in + + (start) + _arguments \ + -F'[Fetch from origin before performing finish]'\ + ':version:__git_flow_version_list' + ;; + + (finish) + _arguments \ + -F'[Fetch from origin before performing finish]' \ + -s'[Sign the release tag cryptographically]'\ + -u'[Use the given GPG-key for the digital signature (implies -s)]'\ + -m'[Use the given tag message]'\ + -p'[Push to $ORIGIN after performing finish]'\ + -k'[Keep branch after performing finish]'\ + -n"[Don't tag this release]"\ + ':version:__git_flow_version_list' + ;; + + (publish) + _arguments \ + ':version:__git_flow_version_list'\ + ;; + + (track) + _arguments \ + ':version:__git_flow_version_list'\ + ;; + + *) + _arguments \ + -v'[Verbose (more) output]' + ;; + esac + ;; + esac +} + +__git-flow-hotfix () { + local curcontext="$curcontext" state line + typeset -A opt_args + + _arguments -C \ + ':command:->command' \ + '*::options:->options' + + case $state in + (command) + + local -a subcommands + subcommands=( + 'start:Start a new hotfix branch.' + 'finish:Finish a hotfix branch.' + 'list:List all your hotfix branches. (Alias to `git flow hotfix`)' + ) + _describe -t commands 'git flow hotfix' subcommands + _arguments \ + -v'[Verbose (more) output]' + ;; + + (options) + case $line[1] in + + (start) + _arguments \ + -F'[Fetch from origin before performing finish]'\ + ':hotfix:__git_flow_version_list'\ + ':branch-name:__git_branch_names' + ;; + + (finish) + _arguments \ + -F'[Fetch from origin before performing finish]' \ + -s'[Sign the release tag cryptographically]'\ + -u'[Use the given GPG-key for the digital signature (implies -s)]'\ + -m'[Use the given tag message]'\ + -p'[Push to $ORIGIN after performing finish]'\ + -k'[Keep branch after performing finish]'\ + -n"[Don't tag this release]"\ + ':hotfix:__git_flow_hotfix_list' + ;; + + *) + _arguments \ + -v'[Verbose (more) output]' + ;; + esac + ;; + esac +} + +__git-flow-feature () { + local curcontext="$curcontext" state line + typeset -A opt_args + + _arguments -C \ + ':command:->command' \ + '*::options:->options' + + case $state in + (command) + + local -a subcommands + subcommands=( + 'start:Start a new feature branch.' + 'finish:Finish a feature branch.' + 'list:List all your feature branches. (Alias to `git flow feature`)' + 'publish: publish' + 'track: track' + 'diff: diff' + 'rebase: rebase' + 'checkout: checkout' + 'pull: pull' + ) + _describe -t commands 'git flow feature' subcommands + _arguments \ + -v'[Verbose (more) output]' + ;; + + (options) + case $line[1] in + + (start) + _arguments \ + -F'[Fetch from origin before performing finish]'\ + ':feature:__git_flow_feature_list'\ + ':branch-name:__git_branch_names' + ;; + + (finish) + _arguments \ + -F'[Fetch from origin before performing finish]' \ + -r'[Rebase instead of merge]'\ + -k'[Keep branch after performing finish]'\ + ':feature:__git_flow_feature_list' + ;; + + (publish) + _arguments \ + ':feature:__git_flow_feature_list'\ + ;; + + (track) + _arguments \ + ':feature:__git_flow_feature_list'\ + ;; + + (diff) + _arguments \ + ':branch:__git_flow_feature_list'\ + ;; + + (rebase) + _arguments \ + -i'[Do an interactive rebase]' \ + ':branch:__git_flow_feature_list' + ;; + + (checkout) + _arguments \ + ':branch:__git_flow_feature_list'\ + ;; + + (pull) + _arguments \ + ':remote:__git_remotes'\ + ':branch:__git_flow_feature_list' + ;; + + *) + _arguments \ + -v'[Verbose (more) output]' + ;; + esac + ;; + esac +} + +__git_flow_version_list () { + local expl + declare -a versions + + versions=(${${(f)"$(_call_program versions git flow release list 2> /dev/null | tr -d ' |*')"}}) + __git_command_successful || return + + _wanted versions expl 'version' compadd $versions +} + +__git_flow_feature_list () { + local expl + declare -a features + + features=(${${(f)"$(_call_program features git flow feature list 2> /dev/null | tr -d ' |*')"}}) + __git_command_successful || return + + _wanted features expl 'feature' compadd $features +} + +__git_remotes () { + local expl gitdir remotes + + gitdir=$(_call_program gitdir git rev-parse --git-dir 2>/dev/null) + __git_command_successful || return + + remotes=(${${(f)"$(_call_program remotes git config --get-regexp '"^remote\..*\.url$"')"}//#(#b)remote.(*).url */$match[1]}) + __git_command_successful || return + + # TODO: Should combine the two instead of either or. + if (( $#remotes > 0 )); then + _wanted remotes expl remote compadd $* - $remotes + else + _wanted remotes expl remote _files $* - -W "($gitdir/remotes)" -g "$gitdir/remotes/*" + fi +} + +__git_flow_hotfix_list () { + local expl + declare -a hotfixes + + hotfixes=(${${(f)"$(_call_program hotfixes git flow hotfix list 2> /dev/null | tr -d ' |*')"}}) + __git_command_successful || return + + _wanted hotfixes expl 'hotfix' compadd $hotfixes +} + +__git_branch_names () { + local expl + declare -a branch_names + + branch_names=(${${(f)"$(_call_program branchrefs git for-each-ref --format='"%(refname)"' refs/heads 2>/dev/null)"}#refs/heads/}) + __git_command_successful || return + + _wanted branch-names expl branch-name compadd $* - $branch_names +} + +__git_command_successful () { + if (( ${#pipestatus:#0} > 0 )); then + _message 'not a git repository' + return 1 + fi + return 0 +} + +zstyle ':completion:*:*:git:*' user-commands flow:'description for foo' + +# Detect if script is sourced or called via autoload +[[ "$ZSH_EVAL_CONTEXT" != *:file ]] || return + +_git-flow "$@" diff --git a/dot_oh-my-zsh/plugins/git-flow/git-flow.plugin.zsh b/dot_oh-my-zsh/plugins/git-flow/git-flow.plugin.zsh new file mode 100644 index 0000000..f842de9 --- /dev/null +++ b/dot_oh-my-zsh/plugins/git-flow/git-flow.plugin.zsh @@ -0,0 +1,32 @@ +# Aliases +alias gcd='git checkout $(git config gitflow.branch.develop)' +alias gch='git checkout $(git config gitflow.prefix.hotfix)' +alias gcr='git checkout $(git config gitflow.prefix.release)' +alias gfl='git flow' +alias gflf='git flow feature' +alias gflff='git flow feature finish' +alias gflffc='git flow feature finish ${$(git_current_branch)#feature/}' +alias gflfp='git flow feature publish' +alias gflfpc='git flow feature publish ${$(git_current_branch)#feature/}' +alias gflfpll='git flow feature pull' +alias gflfs='git flow feature start' +alias gflh='git flow hotfix' +alias gflhf='git flow hotfix finish' +alias gflhfc='git flow hotfix finish ${$(git_current_branch)#hotfix/}' +alias gflhp='git flow hotfix publish' +alias gflhpc='git flow hotfix publish ${$(git_current_branch)#hotfix/}' +alias gflhs='git flow hotfix start' +alias gfli='git flow init' +alias gflr='git flow release' +alias gflrf='git flow release finish' +alias gflrfc='git flow release finish ${$(git_current_branch)#release/}' +alias gflrp='git flow release publish' +alias gflrpc='git flow release publish ${$(git_current_branch)#release/}' +alias gflrs='git flow release start' + +# Source completion script +# Handle $0 according to the standard: +# https://zdharma-continuum.github.io/Zsh-100-Commits-Club/Zsh-Plugin-Standard.html +0="${${ZERO:-${0:#$ZSH_ARGZERO}}:-${(%):-%N}}" +0="${${(M)0:#/*}:-$PWD/$0}" +source "${0:A:h}/_git-flow" diff --git a/dot_oh-my-zsh/plugins/git-hubflow/README.md b/dot_oh-my-zsh/plugins/git-hubflow/README.md new file mode 100644 index 0000000..dada60d --- /dev/null +++ b/dot_oh-my-zsh/plugins/git-hubflow/README.md @@ -0,0 +1,24 @@ +# git-hubflow plugin + +This plugin adds completion for [HubFlow](https://datasift.github.io/gitflow/) (GitFlow for GitHub), as well as some +aliases for common commands. HubFlow is a git extension to make it easy to use GitFlow with GitHub. Based on the +original gitflow extension for git. + +The hubflow tool has to be [installed](https://github.com/datasift/gitflow#installation) separately. + +To use it, add `git-hubflow` to the plugins array in your zshrc file: + +```zsh +plugins=(... git-hubflow) +``` + +## Aliases + +| Alias | Command | Description | +|-------|------------------|------------------------------------------------------------------| +| ghf | `git hf` | Print command overview | +| ghff | `git hf feature` | Manage your feature branches | +| ghfr | `git hf release` | Manage your release branches | +| ghfh | `git hf hotfix` | Manage your hotfix branches | +| ghfs | `git hf support` | Manage your support branches | +| ghfu | `git hf update` | Pull upstream changes down into your master and develop branches | diff --git a/dot_oh-my-zsh/plugins/git-hubflow/git-hubflow.plugin.zsh b/dot_oh-my-zsh/plugins/git-hubflow/git-hubflow.plugin.zsh new file mode 100644 index 0000000..50d7b23 --- /dev/null +++ b/dot_oh-my-zsh/plugins/git-hubflow/git-hubflow.plugin.zsh @@ -0,0 +1,333 @@ +alias ghf='git hf' +alias ghff='git hf feature' +alias ghfr='git hf release' +alias ghfh='git hf hotfix' +alias ghfs='git hf support' +alias ghfu='git hf update' + +_git-hf () +{ + local curcontext="$curcontext" state line + typeset -A opt_args + + _arguments -C \ + ':command:->command' \ + '*::options:->options' + + case $state in + (command) + + local -a subcommands + subcommands=( + 'init:Initialize a new git repo with support for the branching model.' + 'feature:Manage your feature branches.' + 'release:Manage your release branches.' + 'hotfix:Manage your hotfix branches.' + 'support:Manage your support branches.' + 'update:Pull upstream changes down into your master and develop branches.' + 'version:Shows version information.' + ) + _describe -t commands 'git hf' subcommands + ;; + + (options) + case $line[1] in + + (init) + _arguments \ + -f'[Force setting of gitflow branches, even if already configured]' + ;; + + (version) + ;; + + (hotfix) + __git-hf-hotfix + ;; + + (release) + __git-hf-release + ;; + + (feature) + __git-hf-feature + ;; + esac + ;; + esac +} + +__git-hf-release () +{ + local curcontext="$curcontext" state line + typeset -A opt_args + + _arguments -C \ + ':command:->command' \ + '*::options:->options' + + case $state in + (command) + + local -a subcommands + subcommands=( + 'start:Start a new release branch.' + 'finish:Finish a release branch.' + 'list:List all your release branches. (Alias to `git hf release`)' + 'cancel:Cancel release' + 'push:Push release to GitHub' + 'pull:Pull release from GitHub' + 'track:Track release' + ) + _describe -t commands 'git hf release' subcommands + _arguments \ + -v'[Verbose (more) output]' + ;; + + (options) + case $line[1] in + + (start) + _arguments \ + -F'[Fetch from origin before performing finish]'\ + ':version:__git_hf_version_list' + ;; + + (finish) + _arguments \ + -F'[Fetch from origin before performing finish]' \ + -s'[Sign the release tag cryptographically]'\ + -u'[Use the given GPG-key for the digital signature (implies -s)]'\ + -m'[Use the given tag message]'\ + -p'[Push to $ORIGIN after performing finish]'\ + -k'[Keep branch after performing finish]'\ + -n"[Don't tag this release]"\ + ':version:__git_hf_version_list' + ;; + + *) + _arguments \ + -v'[Verbose (more) output]' + ;; + esac + ;; + esac +} + +__git-hf-hotfix () +{ + local curcontext="$curcontext" state line + typeset -A opt_args + + _arguments -C \ + ':command:->command' \ + '*::options:->options' + + case $state in + (command) + + local -a subcommands + subcommands=( + 'start:Start a new hotfix branch.' + 'finish:Finish a hotfix branch.' + 'list:List all your hotfix branches. (Alias to `git hf hotfix`)' + 'publish:Publish the hotfix branch.' + 'track:Track the hotfix branch.' + 'pull:Pull the hotfix from GitHub.' + 'push:Push the hotfix to GitHub.' + 'cancel:Cancel the hotfix.' + ) + _describe -t commands 'git hf hotfix' subcommands + _arguments \ + -v'[Verbose (more) output]' + ;; + + (options) + case $line[1] in + + (start) + _arguments \ + -F'[Fetch from origin before performing finish]'\ + ':hotfix:__git_hf_version_list'\ + ':branch-name:__git_branch_names' + ;; + + (finish) + _arguments \ + -F'[Fetch from origin before performing finish]' \ + -s'[Sign the release tag cryptographically]'\ + -u'[Use the given GPG-key for the digital signature (implies -s)]'\ + -m'[Use the given tag message]'\ + -p'[Push to $ORIGIN after performing finish]'\ + -k'[Keep branch after performing finish]'\ + -n"[Don't tag this release]"\ + ':hotfix:__git_hf_hotfix_list' + ;; + + *) + _arguments \ + -v'[Verbose (more) output]' + ;; + esac + ;; + esac +} + +__git-hf-feature () +{ + local curcontext="$curcontext" state line + typeset -A opt_args + + _arguments -C \ + ':command:->command' \ + '*::options:->options' + + case $state in + (command) + + local -a subcommands + subcommands=( + 'list:List all your feature branches. (Alias to `git hf feature`)' + 'start:Start a new feature branch' + 'finish:Finish a feature branch' + 'submit:submit' + 'track:track' + 'diff:Diff' + 'rebase:Rebase feature branch against develop' + 'checkout:Checkout feature' + 'pull:Pull feature branch from GitHub' + 'push:Push feature branch to GitHub' + 'cancel:Cancel feature' + ) + _describe -t commands 'git hf feature' subcommands + _arguments \ + -v'[Verbose (more) output]' + ;; + + (options) + case $line[1] in + + (start) + _arguments \ + -F'[Fetch from origin before performing finish]'\ + ':feature:__git_hf_feature_list'\ + ':branch-name:__git_branch_names' + ;; + + (finish) + _arguments \ + -F'[Fetch from origin before performing finish]' \ + -r'[Rebase instead of merge]'\ + ':feature:__git_hf_feature_list' + ;; + + (publish) + _arguments \ + ':feature:__git_hf_feature_list'\ + ;; + + (track) + _arguments \ + ':feature:__git_hf_feature_list'\ + ;; + + (diff) + _arguments \ + ':branch:__git_branch_names'\ + ;; + + (rebase) + _arguments \ + -i'[Do an interactive rebase]' \ + ':branch:__git_branch_names' + ;; + + (checkout) + _arguments \ + ':branch:__git_hf_feature_list'\ + ;; + + (pull) + _arguments \ + ':remote:__git_remotes'\ + ':branch:__git_branch_names' + ;; + + *) + _arguments \ + -v'[Verbose (more) output]' + ;; + esac + ;; + esac +} + +__git_hf_version_list () +{ + local expl + declare -a versions + + versions=(${${(f)"$(_call_program versions git hf release list 2> /dev/null | tr -d ' |*')"}}) + __git_command_successful || return + + _wanted versions expl 'version' compadd $versions +} + +__git_hf_feature_list () +{ + local expl + declare -a features + + features=(${${(f)"$(_call_program features git hf feature list 2> /dev/null | tr -d ' |*')"}}) + __git_command_successful || return + + _wanted features expl 'feature' compadd $features +} + +__git_remotes () { + local expl gitdir remotes + + gitdir=$(_call_program gitdir git rev-parse --git-dir 2>/dev/null) + __git_command_successful || return + + remotes=(${${(f)"$(_call_program remotes git config --get-regexp '"^remote\..*\.url$"')"}//#(#b)remote.(*).url */$match[1]}) + __git_command_successful || return + + # TODO: Should combine the two instead of either or. + if (( $#remotes > 0 )); then + _wanted remotes expl remote compadd $* - $remotes + else + _wanted remotes expl remote _files $* - -W "($gitdir/remotes)" -g "$gitdir/remotes/*" + fi +} + +__git_hf_hotfix_list () +{ + local expl + declare -a hotfixes + + hotfixes=(${${(f)"$(_call_program hotfixes git hf hotfix list 2> /dev/null | tr -d ' |*')"}}) + __git_command_successful || return + + _wanted hotfixes expl 'hotfix' compadd $hotfixes +} + +__git_branch_names () { + local expl + declare -a branch_names + + branch_names=(${${(f)"$(_call_program branchrefs git for-each-ref --format='"%(refname)"' refs/heads 2>/dev/null)"}#refs/heads/}) + __git_command_successful || return + + _wanted branch-names expl branch-name compadd $* - $branch_names +} + +__git_command_successful () { + if (( ${#pipestatus:#0} > 0 )); then + _message 'not a git repository' + return 1 + fi + return 0 +} + +zstyle ':completion:*:*:git:*' user-commands flow:'description for foo' diff --git a/dot_oh-my-zsh/plugins/git-lfs/README.md b/dot_oh-my-zsh/plugins/git-lfs/README.md new file mode 100644 index 0000000..1222b27 --- /dev/null +++ b/dot_oh-my-zsh/plugins/git-lfs/README.md @@ -0,0 +1,24 @@ +# git lfs plugin + +The git lfs plugin provides [aliases](#aliases) and [functions](#functions) for [git-lfs](https://github.com/git-lfs/git-lfs). + +To use it, add `git-lfs` to the plugins array in your zshrc file: + +```zsh +plugins=(... git-lfs) +``` + +## Aliases + +| Alias | Command | +| :------- | :---------------------------------- | +| `glfsi` | `git lfs install` | +| `glfst` | `git lfs track` | +| `glfsls` | `git lfs ls-files` | +| `glfsmi` | `git lfs migrate import --include=` | + +## Functions + +| Function | Command | +| :------- | :---------------------------------------------- | +| `gplfs` | `git lfs push origin "$(current_branch)" --all` | diff --git a/dot_oh-my-zsh/plugins/git-lfs/git-lfs.plugin.zsh b/dot_oh-my-zsh/plugins/git-lfs/git-lfs.plugin.zsh new file mode 100644 index 0000000..e7bb676 --- /dev/null +++ b/dot_oh-my-zsh/plugins/git-lfs/git-lfs.plugin.zsh @@ -0,0 +1,17 @@ +# +# Aliases +# + +alias glfsi='git lfs install' +alias glfst='git lfs track' +alias glfsls='git lfs ls-files' +alias glfsmi='git lfs migrate import --include=' + +# +# Functions +# + +function gplfs() { + local b="$(git_current_branch)" + git lfs push origin "$b" --all +} diff --git a/dot_oh-my-zsh/plugins/git-prompt/README.md b/dot_oh-my-zsh/plugins/git-prompt/README.md new file mode 100644 index 0000000..05208d7 --- /dev/null +++ b/dot_oh-my-zsh/plugins/git-prompt/README.md @@ -0,0 +1,68 @@ +# git-prompt plugin + +A `zsh` prompt that displays information about the current git repository. In particular: +the branch name, difference with remote branch, number of files staged or changed, etc. + +To use it, add `git-prompt` to the plugins array in your zshrc file: + +```zsh +plugins=(... git-prompt) +``` + +See the [original repository](https://github.com/olivierverdier/zsh-git-prompt). + +## Requirements + +This plugin uses `python3`, so your host needs to have it installed. + +## Examples + +The prompt may look like the following: + +- `(master↑3|✚1)`: on branch `master`, ahead of remote by 3 commits, 1 file changed but not staged +- `(status|●2)`: on branch `status`, 2 files staged +- `(master|✚7…)`: on branch `master`, 7 files changed, some files untracked +- `(master|✖2✚3)`: on branch `master`, 2 conflicts, 3 files changed +- `(experimental↓2↑3|✔)`: on branch `experimental`; your branch has diverged by 3 commits, remote by 2 commits; the repository is otherwise clean +- `(:70c2952|✔)`: not on any branch; parent commit has hash `70c2952`; the repository is otherwise clean +- `(master|⚑2)`: on branch `master`, there are 2 stashed changes + +## Prompt Structure + +By default, the general appearance of the prompt is: + +```text +(|) +``` + +The symbols are as follows: + +### Local Status Symbols + +| Symbol | Meaning | +|--------|--------------------------------| +| ✔ | repository clean | +| ●n | there are `n` staged files | +| ✖n | there are `n` unmerged files | +| ✚n | there are `n` unstaged files | +| -n | there are `n` deleted files | +| ⚑n | there are `n` stashed changes | +| … | there are some untracked files | + +### Branch Tracking Symbols + +| Symbol | Meaning | +|--------|---------------------------------------------------------------| +| ↑n | ahead of remote by `n` commits | +| ↓n | behind remote by `n` commits | +| ↓m↑n | branches diverged: other by `m` commits, yours by `n` commits | + +## Customisation + +- Set the variable `ZSH_THEME_GIT_PROMPT_CACHE` to any value in order to enable caching. +- Set the variable `ZSH_THEME_GIT_SHOW_UPSTREAM` to any value to display the upstream branch. +- You may also change a number of variables (whose name start with `ZSH_THEME_GIT_PROMPT_`) + to change the appearance of the prompt. Take a look at the bottom of the [plugin file](git-prompt.plugin.zsh)` + to see what variables are available. + +**Enjoy!** diff --git a/dot_oh-my-zsh/plugins/git-prompt/git-prompt.plugin.zsh b/dot_oh-my-zsh/plugins/git-prompt/git-prompt.plugin.zsh new file mode 100644 index 0000000..4873320 --- /dev/null +++ b/dot_oh-my-zsh/plugins/git-prompt/git-prompt.plugin.zsh @@ -0,0 +1,113 @@ +# Handle $0 according to the standard: +# https://zdharma-continuum.github.io/Zsh-100-Commits-Club/Zsh-Plugin-Standard.html +0="${${ZERO:-${0:#$ZSH_ARGZERO}}:-${(%):-%N}}" +0="${${(M)0:#/*}:-$PWD/$0}" + +__GIT_PROMPT_DIR="${0:A:h}" + +## Hook function definitions +function chpwd_update_git_vars() { + update_current_git_vars +} + +function preexec_update_git_vars() { + case "$2" in + git*|hub*|gh*|stg*) + __EXECUTED_GIT_COMMAND=1 + ;; + esac +} + +function precmd_update_git_vars() { + if [ -n "$__EXECUTED_GIT_COMMAND" ] || [ ! -n "$ZSH_THEME_GIT_PROMPT_CACHE" ]; then + update_current_git_vars + unset __EXECUTED_GIT_COMMAND + fi +} + +autoload -U add-zsh-hook +add-zsh-hook chpwd chpwd_update_git_vars +add-zsh-hook precmd precmd_update_git_vars +add-zsh-hook preexec preexec_update_git_vars + + +## Function definitions +function update_current_git_vars() { + unset __CURRENT_GIT_STATUS + + local gitstatus="$__GIT_PROMPT_DIR/gitstatus.py" + _GIT_STATUS=$(python3 ${gitstatus} 2>/dev/null) + __CURRENT_GIT_STATUS=("${(@s: :)_GIT_STATUS}") + GIT_BRANCH=$__CURRENT_GIT_STATUS[1] + GIT_AHEAD=$__CURRENT_GIT_STATUS[2] + GIT_BEHIND=$__CURRENT_GIT_STATUS[3] + GIT_STAGED=$__CURRENT_GIT_STATUS[4] + GIT_CONFLICTS=$__CURRENT_GIT_STATUS[5] + GIT_CHANGED=$__CURRENT_GIT_STATUS[6] + GIT_UNTRACKED=$__CURRENT_GIT_STATUS[7] + GIT_STASHED=$__CURRENT_GIT_STATUS[8] + GIT_CLEAN=$__CURRENT_GIT_STATUS[9] + GIT_DELETED=$__CURRENT_GIT_STATUS[10] + + if [ -z ${ZSH_THEME_GIT_SHOW_UPSTREAM+x} ]; then + GIT_UPSTREAM= + else + GIT_UPSTREAM=$(git rev-parse --abbrev-ref --symbolic-full-name "@{upstream}" 2>/dev/null) && GIT_UPSTREAM="${ZSH_THEME_GIT_PROMPT_UPSTREAM_SEPARATOR}${GIT_UPSTREAM}" + fi +} + +git_super_status() { + precmd_update_git_vars + if [ -n "$__CURRENT_GIT_STATUS" ]; then + STATUS="$ZSH_THEME_GIT_PROMPT_PREFIX$ZSH_THEME_GIT_PROMPT_BRANCH$GIT_BRANCH$GIT_UPSTREAM%{${reset_color}%}" + if [ "$GIT_BEHIND" -ne "0" ]; then + STATUS="$STATUS$ZSH_THEME_GIT_PROMPT_BEHIND$GIT_BEHIND%{${reset_color}%}" + fi + if [ "$GIT_AHEAD" -ne "0" ]; then + STATUS="$STATUS$ZSH_THEME_GIT_PROMPT_AHEAD$GIT_AHEAD%{${reset_color}%}" + fi + STATUS="$STATUS$ZSH_THEME_GIT_PROMPT_SEPARATOR" + if [ "$GIT_STAGED" -ne "0" ]; then + STATUS="$STATUS$ZSH_THEME_GIT_PROMPT_STAGED$GIT_STAGED%{${reset_color}%}" + fi + if [ "$GIT_CONFLICTS" -ne "0" ]; then + STATUS="$STATUS$ZSH_THEME_GIT_PROMPT_CONFLICTS$GIT_CONFLICTS%{${reset_color}%}" + fi + if [ "$GIT_CHANGED" -ne "0" ]; then + STATUS="$STATUS$ZSH_THEME_GIT_PROMPT_CHANGED$GIT_CHANGED%{${reset_color}%}" + fi + if [ "$GIT_DELETED" -ne "0" ]; then + STATUS="$STATUS$ZSH_THEME_GIT_PROMPT_DELETED$GIT_DELETED%{${reset_color}%}" + fi + if [ "$GIT_UNTRACKED" -ne "0" ]; then + STATUS="$STATUS$ZSH_THEME_GIT_PROMPT_UNTRACKED$GIT_UNTRACKED%{${reset_color}%}" + fi + if [ "$GIT_STASHED" -ne "0" ]; then + STATUS="$STATUS$ZSH_THEME_GIT_PROMPT_STASHED$GIT_STASHED%{${reset_color}%}" + fi + if [ "$GIT_CLEAN" -eq "1" ]; then + STATUS="$STATUS$ZSH_THEME_GIT_PROMPT_CLEAN" + fi + STATUS="$STATUS%{${reset_color}%}$ZSH_THEME_GIT_PROMPT_SUFFIX" + echo "$STATUS" + fi +} + +# Default values for the appearance of the prompt. +ZSH_THEME_GIT_PROMPT_PREFIX="(" +ZSH_THEME_GIT_PROMPT_SUFFIX=")" +ZSH_THEME_GIT_PROMPT_SEPARATOR="|" +ZSH_THEME_GIT_PROMPT_BRANCH="%{$fg_bold[magenta]%}" +ZSH_THEME_GIT_PROMPT_STAGED="%{$fg[red]%}%{●%G%}" +ZSH_THEME_GIT_PROMPT_CONFLICTS="%{$fg[red]%}%{✖%G%}" +ZSH_THEME_GIT_PROMPT_CHANGED="%{$fg[blue]%}%{✚%G%}" +ZSH_THEME_GIT_PROMPT_DELETED="%{$fg[blue]%}%{-%G%}" +ZSH_THEME_GIT_PROMPT_BEHIND="%{↓%G%}" +ZSH_THEME_GIT_PROMPT_AHEAD="%{↑%G%}" +ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg[cyan]%}%{…%G%}" +ZSH_THEME_GIT_PROMPT_STASHED="%{$fg_bold[blue]%}%{⚑%G%}" +ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg_bold[green]%}%{✔%G%}" +ZSH_THEME_GIT_PROMPT_UPSTREAM_SEPARATOR="->" + +# Set the prompt. +RPROMPT='$(git_super_status)' diff --git a/dot_oh-my-zsh/plugins/git-prompt/gitstatus.py b/dot_oh-my-zsh/plugins/git-prompt/gitstatus.py new file mode 100644 index 0000000..94774d8 --- /dev/null +++ b/dot_oh-my-zsh/plugins/git-prompt/gitstatus.py @@ -0,0 +1,103 @@ +#!/usr/bin/env python3 +from __future__ import print_function + +import os +import sys +import re +from subprocess import Popen, PIPE, check_output + + +def get_tagname_or_hash(): + """return tagname if exists else hash""" + # get hash + hash_cmd = ['git', 'rev-parse', '--short', 'HEAD'] + hash_ = check_output(hash_cmd).decode('utf-8').strip() + + # get tagname + tags_cmd = ['git', 'for-each-ref', '--points-at=HEAD', '--count=2', '--sort=-version:refname', '--format=%(refname:short)', 'refs/tags'] + tags = check_output(tags_cmd).decode('utf-8').split() + + if tags: + return tags[0] + ('+' if len(tags) > 1 else '') + elif hash_: + return hash_ + return None + +# Re-use method from https://github.com/magicmonty/bash-git-prompt to get stashs count +def get_stash(): + cmd = Popen(['git', 'rev-parse', '--git-dir'], stdout=PIPE, stderr=PIPE) + so, se = cmd.communicate() + stash_file = '%s%s' % (so.decode('utf-8').rstrip(), '/logs/refs/stash') + + try: + with open(stash_file) as f: + return sum(1 for _ in f) + except IOError: + return 0 + + +# `git status --porcelain --branch` can collect all information +# branch, remote_branch, untracked, staged, changed, conflicts, ahead, behind +po = Popen(['git', 'status', '--porcelain', '--branch'], env=dict(os.environ, LANG="C"), stdout=PIPE, stderr=PIPE) +stdout, sterr = po.communicate() +if po.returncode != 0: + sys.exit(0) # Not a git repository + +# collect git status information +untracked, staged, changed, deleted, conflicts = [], [], [], [], [] +ahead, behind = 0, 0 +status = [(line[0], line[1], line[2:]) for line in stdout.decode('utf-8').splitlines()] +for st in status: + if st[0] == '#' and st[1] == '#': + if re.search('Initial commit on', st[2]) or re.search('No commits yet on', st[2]): + branch = st[2].split(' ')[-1] + elif re.search('no branch', st[2]): # detached status + branch = get_tagname_or_hash() + elif len(st[2].strip().split('...')) == 1: + branch = st[2].strip() + else: + # current and remote branch info + branch, rest = st[2].strip().split('...') + if len(rest.split(' ')) == 1: + # remote_branch = rest.split(' ')[0] + pass + else: + # ahead or behind + divergence = ' '.join(rest.split(' ')[1:]) + divergence = divergence.lstrip('[').rstrip(']') + for div in divergence.split(', '): + if 'ahead' in div: + ahead = int(div[len('ahead '):].strip()) + elif 'behind' in div: + behind = int(div[len('behind '):].strip()) + elif st[0] == '?' and st[1] == '?': + untracked.append(st) + else: + if st[1] == 'M': + changed.append(st) + if st[1] == 'D': + deleted.append(st) + if st[0] == 'U': + conflicts.append(st) + elif st[0] != ' ': + staged.append(st) + +stashed = get_stash() +if not changed and not deleted and not staged and not conflicts and not untracked: + clean = 1 +else: + clean = 0 + +out = ' '.join([ + branch, + str(ahead), + str(behind), + str(len(staged)), + str(len(conflicts)), + str(len(changed)), + str(len(untracked)), + str(stashed), + str(clean), + str(len(deleted)) +]) +print(out, end='') diff --git a/dot_oh-my-zsh/plugins/git/README.md b/dot_oh-my-zsh/plugins/git/README.md new file mode 100644 index 0000000..d455e0e --- /dev/null +++ b/dot_oh-my-zsh/plugins/git/README.md @@ -0,0 +1,254 @@ +# git plugin + +The git plugin provides many [aliases](#aliases) and a few useful [functions](#functions). + +To use it, add `git` to the plugins array in your zshrc file: + +```zsh +plugins=(... git) +``` + +## Aliases + +| Alias | Command | +| :------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| g | git | +| ga | git add | +| gaa | git add --all | +| gapa | git add --patch | +| gau | git add --update | +| gav | git add --verbose | +| gap | git apply | +| gapt | git apply --3way | +| gb | git branch | +| gba | git branch --all | +| gbd | git branch --delete | +| gbda | git branch --no-color --merged \| grep -vE "^([+*]\|\s*($(git_main_branch)\|$(git_develop_branch))\s*$)" \| xargs git branch --delete 2>/dev/null | +| gbD | git branch --delete --force | +| gbl | git blame -b -w | +| gbnm | git branch --no-merged | +| gbr | git branch --remote | +| gbs | git bisect | +| gbsb | git bisect bad | +| gbsg | git bisect good | +| gbsr | git bisect reset | +| gbss | git bisect start | +| gc | git commit --verbose | +| gc! | git commit --verbose --amend | +| gcn! | git commit --verbose --no-edit --amend | +| gca | git commit --verbose --all | +| gca! | git commit --verbose --all --amend | +| gcan! | git commit --verbose --all --no-edit --amend | +| gcans! | git commit --verbose --all --signoff --no-edit --amend | +| gcam | git commit --all --message | +| gcas | git commit --all --signoff | +| gcasm | git commit --all --signoff --message | +| gcsm | git commit --signoff --message | +| gcb | git checkout -b | +| gcf | git config --list | +| gcl | git clone --recurse-submodules | +| gccd | git clone --recurse-submodules "$@" && cd "$(basename $\_ .git)" | +| gclean | git clean --interactive -d | +| gpristine | git reset --hard && git clean -dffx | +| gcm | git checkout $(git_main_branch) | +| gcd | git checkout $(git_develop_branch) | +| gcmsg | git commit --message | +| gco | git checkout | +| gcor | git checkout --recurse-submodules | +| gcount | git shortlog --summary -n | +| gcp | git cherry-pick | +| gcpa | git cherry-pick --abort | +| gcpc | git cherry-pick --continue | +| gcs | git commit -S | +| gcss | git commit -S -s | +| gcssm | git commit -S -s -m | +| gd | git diff | +| gdca | git diff --cached | +| gdcw | git diff --cached --word-diff | +| gdct | git describe --tags $(git rev-list --tags --max-count=1) | +| gds | git diff --staged | +| gdt | git diff-tree --no-commit-id --name-only -r | +| gdnolock | git diff $@ ":(exclude)package-lock.json" ":(exclude)\*.lock" | +| gdup | git diff @{upstream} | +| gdv | git diff -w $@ \| view - | +| gdw | git diff --word-diff | +| gf | git fetch | +| gfa | git fetch --all --prune | +| gfg | git ls-files \| grep | +| gfo | git fetch origin | +| gg | git gui citool | +| gga | git gui citool --amend | +| ggf | git push --force origin $(current_branch) | +| ggfl | git push --force-with-lease origin $(current_branch) | +| ggl | git pull origin $(current_branch) | +| ggp | git push origin $(current_branch) | +| ggpnp | ggl && ggp | +| ggpull | git pull origin "$(git_current_branch)" | +| ggpur | ggu | +| ggpush | git push origin "$(git_current_branch)" | +| ggsup | git branch --set-upstream-to=origin/$(git_current_branch) | +| ggu | git pull --rebase origin $(current_branch) | +| gpsup | git push --set-upstream origin $(git_current_branch) | +| ghh | git help | +| gignore | git update-index --assume-unchanged | +| gignored | git ls-files -v \| grep "^[[:lower:]]" | +| git-svn-dcommit-push | git svn dcommit && git push github $(git_main_branch):svntrunk | +| gk | gitk --all --branches &! | +| gke | gitk --all $(git log --walk-reflogs --pretty=%h) &! | +| gl | git pull | +| glg | git log --stat | +| glgp | git log --stat --patch | +| glgg | git log --graph | +| glgga | git log --graph --decorate --all | +| glgm | git log --graph --max-count=10 | +| glo | git log --oneline --decorate | +| glol | git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset' | +| glols | git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset' --stat | +| glod | git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset' | +| glods | git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset' --date=short | +| glola | git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset' --all | +| glog | git log --oneline --decorate --graph | +| gloga | git log --oneline --decorate --graph --all | +| glp | git log --pretty=\ | +| gm | git merge | +| gmom | git merge origin/$(git_main_branch) | +| gmtl | git mergetool --no-prompt | +| gmtlvim | git mergetool --no-prompt --tool=vimdiff | +| gmum | git merge upstream/$(git_main_branch) | +| gma | git merge --abort | +| gp | git push | +| gpd | git push --dry-run | +| gpf | git push --force-with-lease | +| gpf! | git push --force | +| gpoat | git push origin --all && git push origin --tags | +| gpr | git pull --rebase | +| gpu | git push upstream | +| gpv | git push --verbose | +| gr | git remote | +| gra | git remote add | +| grb | git rebase | +| grba | git rebase --abort | +| grbc | git rebase --continue | +| grbd | git rebase $(git_develop_branch) | +| grbi | git rebase --interactive | +| grbm | git rebase $(git_main_branch) | +| grbom | git rebase origin/$(git_main_branch) | +| grbo | git rebase --onto | +| grbs | git rebase --skip | +| grev | git revert | +| grh | git reset | +| grhh | git reset --hard | +| groh | git reset origin/$(git_current_branch) --hard | +| grm | git rm | +| grmc | git rm --cached | +| grmv | git remote rename | +| grrm | git remote remove | +| grs | git restore | +| grset | git remote set-url | +| grss | git restore --source | +| grst | git restore --staged | +| grt | cd "$(git rev-parse --show-toplevel \|\| echo .)" | +| gru | git reset -- | +| grup | git remote update | +| grv | git remote --verbose | +| gsb | git status --short -b | +| gsd | git svn dcommit | +| gsh | git show | +| gsi | git submodule init | +| gsps | git show --pretty=short --show-signature | +| gsr | git svn rebase | +| gss | git status --short | +| gst | git status | +| gsta | git stash push (git version >= 2.13) | +| gsta | git stash save (git version < 2.13) | +| gstaa | git stash apply | +| gstc | git stash clear | +| gstd | git stash drop | +| gstl | git stash list | +| gstp | git stash pop | +| gsts | git stash show --text | +| gstu | git stash --include-untracked | +| gstall | git stash --all | +| gsu | git submodule update | +| gsw | git switch | +| gswc | git switch -c | +| gswm | git switch $(git_main_branch) | +| gswd | git switch $(git_develop_branch) | +| gts | git tag -s | +| gtv | git tag \| sort -V | +| gtl | gtl(){ git tag --sort=-v:refname -n --list ${1}\* }; noglob gtl | +| gunignore | git update-index --no-assume-unchanged | +| gunwip | git log --max-count=1 \| grep -q -c "\-\-wip\-\-" && git reset HEAD~1 | +| gup | git pull --rebase | +| gupv | git pull --rebase --verbose | +| gupa | git pull --rebase --autostash | +| gupav | git pull --rebase --autostash --verbose | +| gupom | git pull --rebase origin $(git_main_branch) | +| gupomi | git pull --rebase=interactive origin $(git_main_branch) | +| glum | git pull upstream $(git_main_branch) | +| gluc | git pull upstream $(git_current_branch) | +| gwch | git whatchanged -p --abbrev-commit --pretty=medium | +| gwip | git add -A; git rm $(git ls-files --deleted) 2> /dev/null; git commit --no-verify --no-gpg-sign --message "--wip-- [skip ci]" | +| gam | git am | +| gamc | git am --continue | +| gams | git am --skip | +| gama | git am --abort | +| gamscp | git am --show-current-patch | +| gwt | git worktree | +| gwtls | git worktree list | +| gwtmv | git worktree move | +| gwtrm | git worktree remove | + +### Main branch preference + +Following the recent push for removing racially-charged words from our technical vocabulary, the git plugin favors using +a branch name other than `master`. In this case, we favor the shorter, neutral and descriptive term `main`. This means +that any aliases and functions that previously used `master`, will use `main` if that branch exists. We do this via the +function `git_main_branch`. + +### Deprecated aliases + +These are aliases that have been removed, renamed, or otherwise modified in a way that may, or may not, receive further support. + +| Alias | Command | Modification | +| :----- | :----------------------------------------------------- | :----------------------------------------------------- | +| gap | `git add --patch` | new alias `gapa` | +| gcl | `git config --list` | new alias `gcf` | +| gdc | `git diff --cached` | new alias `gdca` | +| gdt | `git difftool` | no replacement | +| ggpull | `git pull origin $(current_branch)` | new alias `ggl` (`ggpull` still exists for now though) | +| ggpur | `git pull --rebase origin $(current_branch)` | new alias `ggu` (`ggpur` still exists for now though) | +| ggpush | `git push origin $(current_branch)` | new alias `ggp` (`ggpush` still exists for now though) | +| gk | `gitk --all --branches` | now aliased to `gitk --all --branches` | +| glg | `git log --stat --max-count = 10` | now aliased to `git log --stat --color` | +| glgg | `git log --graph --max-count = 10` | now aliased to `git log --graph --color` | +| gwc | `git whatchanged -p --abbrev-commit --pretty = medium` | new alias `gwch` | + +## Functions + +### Current + +| Command | Description | +| :--------------------- | :------------------------------------------------------------------------------------------------------- | +| `grename ` | Rename `old` branch to `new`, including in origin remote | +| current_branch | Return the name of the current branch | +| git_current_user_name | Returns the `user.name` config value | +| git_current_user_email | Returns the `user.email` config value | +| git_main_branch | Returns the name of the main branch: `main` if it exists, `master` otherwise | +| git_develop_branch | Returns the name of the develop branch: `dev`, `devel`, `development` if they exist, `develop` otherwise | + +### Work in Progress (WIP) + +These features allow to pause a branch development and switch to another one (_"Work in Progress"_, or wip). When you want to go back to work, just unwip it. + +| Command | Description | +| :--------------- | :---------------------------------------------- | +| work_in_progress | Echoes a warning if the current branch is a wip | +| gwip | Commit wip branch | +| gunwip | Uncommit wip branch | + +### Deprecated functions + +| Command | Description | Reason | +| :----------------- | :-------------------------------------- | :-------------------------------------------------------------- | +| current_repository | Return the names of the current remotes | Didn't work properly. Use `git remote -v` instead (`grv` alias) | diff --git a/dot_oh-my-zsh/plugins/git/git.plugin.zsh b/dot_oh-my-zsh/plugins/git/git.plugin.zsh new file mode 100644 index 0000000..7544ca4 --- /dev/null +++ b/dot_oh-my-zsh/plugins/git/git.plugin.zsh @@ -0,0 +1,344 @@ +# Git version checking +autoload -Uz is-at-least +git_version="${${(As: :)$(git version 2>/dev/null)}[3]}" + +# +# Functions +# + +# The name of the current branch +# Back-compatibility wrapper for when this function was defined here in +# the plugin, before being pulled in to core lib/git.zsh as git_current_branch() +# to fix the core -> git plugin dependency. +function current_branch() { + git_current_branch +} + +# Pretty log messages +function _git_log_prettily(){ + if ! [ -z $1 ]; then + git log --pretty=$1 + fi +} +compdef _git _git_log_prettily=git-log + +# Warn if the current branch is a WIP +function work_in_progress() { + command git -c log.showSignature=false log -n 1 2>/dev/null | grep -q -- "--wip--" && echo "WIP!!" +} + +# Check if main exists and use instead of master +function git_main_branch() { + command git rev-parse --git-dir &>/dev/null || return + local ref + for ref in refs/{heads,remotes/{origin,upstream}}/{main,trunk,mainline,default}; do + if command git show-ref -q --verify $ref; then + echo ${ref:t} + return + fi + done + echo master +} + +# Check for develop and similarly named branches +function git_develop_branch() { + command git rev-parse --git-dir &>/dev/null || return + local branch + for branch in dev devel development; do + if command git show-ref -q --verify refs/heads/$branch; then + echo $branch + return + fi + done + echo develop +} + +# +# Aliases +# (sorted alphabetically) +# + +alias g='git' + +alias ga='git add' +alias gaa='git add --all' +alias gapa='git add --patch' +alias gau='git add --update' +alias gav='git add --verbose' +alias gap='git apply' +alias gapt='git apply --3way' + +alias gb='git branch' +alias gba='git branch --all' +alias gbd='git branch --delete' +alias gbda='git branch --no-color --merged | command grep -vE "^([+*]|\s*($(git_main_branch)|$(git_develop_branch))\s*$)" | command xargs git branch --delete 2>/dev/null' +alias gbD='git branch --delete --force' +alias gbl='git blame -b -w' +alias gbnm='git branch --no-merged' +alias gbr='git branch --remote' +alias gbs='git bisect' +alias gbsb='git bisect bad' +alias gbsg='git bisect good' +alias gbsr='git bisect reset' +alias gbss='git bisect start' + +alias gc='git commit --verbose' +alias gc!='git commit --verbose --amend' +alias gcn!='git commit --verbose --no-edit --amend' +alias gca='git commit --verbose --all' +alias gca!='git commit --verbose --all --amend' +alias gcan!='git commit --verbose --all --no-edit --amend' +alias gcans!='git commit --verbose --all --signoff --no-edit --amend' +alias gcam='git commit --all --message' +alias gcsm='git commit --signoff --message' +alias gcas='git commit --all --signoff' +alias gcasm='git commit --all --signoff --message' +alias gcb='git checkout -b' +alias gcf='git config --list' + +function gccd() { + command git clone --recurse-submodules "$@" + [[ -d "$_" ]] && cd "$_" || cd "${${_:t}%.git}" +} +compdef _git gccd=git-clone + +alias gcl='git clone --recurse-submodules' +alias gclean='git clean --interactive -d' +alias gpristine='git reset --hard && git clean --force -dx' +alias gcm='git checkout $(git_main_branch)' +alias gcd='git checkout $(git_develop_branch)' +alias gcmsg='git commit --message' +alias gco='git checkout' +alias gcor='git checkout --recurse-submodules' +alias gcount='git shortlog --summary --numbered' +alias gcp='git cherry-pick' +alias gcpa='git cherry-pick --abort' +alias gcpc='git cherry-pick --continue' +alias gcs='git commit --gpg-sign' +alias gcss='git commit --gpg-sign --signoff' +alias gcssm='git commit --gpg-sign --signoff --message' + +alias gd='git diff' +alias gdca='git diff --cached' +alias gdcw='git diff --cached --word-diff' +alias gdct='git describe --tags $(git rev-list --tags --max-count=1)' +alias gds='git diff --staged' +alias gdt='git diff-tree --no-commit-id --name-only -r' +alias gdup='git diff @{upstream}' +alias gdw='git diff --word-diff' + +function gdnolock() { + git diff "$@" ":(exclude)package-lock.json" ":(exclude)*.lock" +} +compdef _git gdnolock=git-diff + +function gdv() { git diff -w "$@" | view - } +compdef _git gdv=git-diff + +alias gf='git fetch' +# --jobs= was added in git 2.8 +is-at-least 2.8 "$git_version" \ + && alias gfa='git fetch --all --prune --jobs=10' \ + || alias gfa='git fetch --all --prune' +alias gfo='git fetch origin' + +alias gfg='git ls-files | grep' + +alias gg='git gui citool' +alias gga='git gui citool --amend' + +function ggf() { + [[ "$#" != 1 ]] && local b="$(git_current_branch)" + git push --force origin "${b:=$1}" +} +compdef _git ggf=git-checkout +function ggfl() { + [[ "$#" != 1 ]] && local b="$(git_current_branch)" + git push --force-with-lease origin "${b:=$1}" +} +compdef _git ggfl=git-checkout + +function ggl() { + if [[ "$#" != 0 ]] && [[ "$#" != 1 ]]; then + git pull origin "${*}" + else + [[ "$#" == 0 ]] && local b="$(git_current_branch)" + git pull origin "${b:=$1}" + fi +} +compdef _git ggl=git-checkout + +function ggp() { + if [[ "$#" != 0 ]] && [[ "$#" != 1 ]]; then + git push origin "${*}" + else + [[ "$#" == 0 ]] && local b="$(git_current_branch)" + git push origin "${b:=$1}" + fi +} +compdef _git ggp=git-checkout + +function ggpnp() { + if [[ "$#" == 0 ]]; then + ggl && ggp + else + ggl "${*}" && ggp "${*}" + fi +} +compdef _git ggpnp=git-checkout + +function ggu() { + [[ "$#" != 1 ]] && local b="$(git_current_branch)" + git pull --rebase origin "${b:=$1}" +} +compdef _git ggu=git-checkout + +alias ggpur='ggu' +alias ggpull='git pull origin "$(git_current_branch)"' +alias ggpush='git push origin "$(git_current_branch)"' + +alias ggsup='git branch --set-upstream-to=origin/$(git_current_branch)' +alias gpsup='git push --set-upstream origin $(git_current_branch)' + +alias ghh='git help' + +alias gignore='git update-index --assume-unchanged' +alias gignored='git ls-files -v | grep "^[[:lower:]]"' +alias git-svn-dcommit-push='git svn dcommit && git push github $(git_main_branch):svntrunk' + +alias gk='\gitk --all --branches &!' +alias gke='\gitk --all $(git log --walk-reflogs --pretty=%h) &!' + +alias gl='git pull' +alias glg='git log --stat' +alias glgp='git log --stat --patch' +alias glgg='git log --graph' +alias glgga='git log --graph --decorate --all' +alias glgm='git log --graph --max-count=10' +alias glo='git log --oneline --decorate' +alias glol="git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset'" +alias glols="git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset' --stat" +alias glod="git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset'" +alias glods="git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset' --date=short" +alias glola="git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset' --all" +alias glog='git log --oneline --decorate --graph' +alias gloga='git log --oneline --decorate --graph --all' +alias glp="_git_log_prettily" + +alias gm='git merge' +alias gmom='git merge origin/$(git_main_branch)' +alias gmtl='git mergetool --no-prompt' +alias gmtlvim='git mergetool --no-prompt --tool=vimdiff' +alias gmum='git merge upstream/$(git_main_branch)' +alias gma='git merge --abort' + +alias gp='git push' +alias gpd='git push --dry-run' +alias gpf='git push --force-with-lease' +alias gpf!='git push --force' +alias gpoat='git push origin --all && git push origin --tags' +alias gpr='git pull --rebase' +alias gpu='git push upstream' +alias gpv='git push --verbose' + +alias gr='git remote' +alias gra='git remote add' +alias grb='git rebase' +alias grba='git rebase --abort' +alias grbc='git rebase --continue' +alias grbd='git rebase $(git_develop_branch)' +alias grbi='git rebase --interactive' +alias grbm='git rebase $(git_main_branch)' +alias grbom='git rebase origin/$(git_main_branch)' +alias grbo='git rebase --onto' +alias grbs='git rebase --skip' +alias grev='git revert' +alias grh='git reset' +alias grhh='git reset --hard' +alias groh='git reset origin/$(git_current_branch) --hard' +alias grm='git rm' +alias grmc='git rm --cached' +alias grmv='git remote rename' +alias grrm='git remote remove' +alias grs='git restore' +alias grset='git remote set-url' +alias grss='git restore --source' +alias grst='git restore --staged' +alias grt='cd "$(git rev-parse --show-toplevel || echo .)"' +alias gru='git reset --' +alias grup='git remote update' +alias grv='git remote --verbose' + +alias gsb='git status --short --branch' +alias gsd='git svn dcommit' +alias gsh='git show' +alias gsi='git submodule init' +alias gsps='git show --pretty=short --show-signature' +alias gsr='git svn rebase' +alias gss='git status --short' +alias gst='git status' + +# use the default stash push on git 2.13 and newer +is-at-least 2.13 "$git_version" \ + && alias gsta='git stash push' \ + || alias gsta='git stash save' + +alias gstaa='git stash apply' +alias gstc='git stash clear' +alias gstd='git stash drop' +alias gstl='git stash list' +alias gstp='git stash pop' +alias gsts='git stash show --text' +alias gstu='gsta --include-untracked' +alias gstall='git stash --all' +alias gsu='git submodule update' +alias gsw='git switch' +alias gswc='git switch --create' +alias gswm='git switch $(git_main_branch)' +alias gswd='git switch $(git_develop_branch)' + +alias gts='git tag --sign' +alias gtv='git tag | sort -V' +alias gtl='gtl(){ git tag --sort=-v:refname -n --list "${1}*" }; noglob gtl' + +alias gunignore='git update-index --no-assume-unchanged' +alias gunwip='git log --max-count=1 | grep -q -c "\--wip--" && git reset HEAD~1' +alias gup='git pull --rebase' +alias gupv='git pull --rebase --verbose' +alias gupa='git pull --rebase --autostash' +alias gupav='git pull --rebase --autostash --verbose' +alias gupom='git pull --rebase origin $(git_main_branch)' +alias gupomi='git pull --rebase=interactive origin $(git_main_branch)' +alias glum='git pull upstream $(git_main_branch)' +alias gluc='git pull upstream $(git_current_branch)' + +alias gwch='git whatchanged -p --abbrev-commit --pretty=medium' +alias gwip='git add -A; git rm $(git ls-files --deleted) 2> /dev/null; git commit --no-verify --no-gpg-sign --message "--wip-- [skip ci]"' + +alias gwt='git worktree' +alias gwta='git worktree add' +alias gwtls='git worktree list' +alias gwtmv='git worktree move' +alias gwtrm='git worktree remove' + +alias gam='git am' +alias gamc='git am --continue' +alias gams='git am --skip' +alias gama='git am --abort' +alias gamscp='git am --show-current-patch' + +function grename() { + if [[ -z "$1" || -z "$2" ]]; then + echo "Usage: $0 old_branch new_branch" + return 1 + fi + + # Rename branch locally + git branch -m "$1" "$2" + # Rename branch in origin remote + if git push origin :"$1"; then + git push --set-upstream origin "$2" + fi +} + +unset git_version \ No newline at end of file diff --git a/dot_oh-my-zsh/plugins/gitfast/README.md b/dot_oh-my-zsh/plugins/gitfast/README.md new file mode 100644 index 0000000..fed4b12 --- /dev/null +++ b/dot_oh-my-zsh/plugins/gitfast/README.md @@ -0,0 +1,15 @@ +# Gitfast plugin + +This plugin adds completion for Git, using the zsh completion from git.git folks, which is much faster than the official one from zsh. A lot of zsh-specific features are not supported, like descriptions for every argument, but everything the bash completion has, this one does too (as it is using it behind the scenes). Not only is it faster, it should be more robust, and updated regularly to the latest git upstream version. + +To use it, add `gitfast` to the plugins array in your zshrc file: + +```zsh +plugins=(... gitfast) +``` + +## Aliases + +An earlier version of the plugin also loaded the git plugin. If you want to keep those +aliases enable the [git plugin](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/git) +as well. diff --git a/dot_oh-my-zsh/plugins/gitfast/_git b/dot_oh-my-zsh/plugins/gitfast/_git new file mode 100644 index 0000000..31bf88c --- /dev/null +++ b/dot_oh-my-zsh/plugins/gitfast/_git @@ -0,0 +1,286 @@ +#compdef git gitk + +# zsh completion wrapper for git +# +# Copyright (c) 2012-2020 Felipe Contreras +# +# The recommended way to install this script is to make a copy of it as a +# file named '_git' inside any directory in your fpath. +# +# For example, create a directory '~/.zsh/', copy this file to '~/.zsh/_git', +# and then add the following to your ~/.zshrc file: +# +# fpath=(~/.zsh $fpath) +# +# You need git's bash completion script installed. By default bash-completion's +# location will be used (e.g. pkg-config --variable=completionsdir bash-completion). +# +# If your bash completion script is somewhere else, you can specify the +# location in your ~/.zshrc: +# +# zstyle ':completion:*:*:git:*' script ~/.git-completion.bash +# + +zstyle -T ':completion:*:*:git:*' tag-order && \ + zstyle ':completion:*:*:git:*' tag-order 'common-commands' + +zstyle -s ":completion:*:*:git:*" script script +if [ -z "$script" ]; then + local -a locations + local e bash_completion + + bash_completion=$(pkg-config --variable=completionsdir bash-completion 2>/dev/null) || + bash_completion='/usr/share/bash-completion/completions/' + + locations=( + "${${funcsourcetrace[1]%:*}:A:h}"/git-completion.bash + "$HOME/.local/share/bash-completion/completions/git" + '/usr/local/share/bash-completion/completions/git' + "$bash_completion/git" + '/etc/bash_completion.d/git' # old debian + ) + for e in $locations; do + test -f $e && script="$e" && break + done +fi + +local old_complete="$functions[complete]" +functions[complete]=: +COMP_WORDBREAKS=':' +GIT_SOURCING_ZSH_COMPLETION=y . "$script" +functions[complete]="$old_complete" + +__gitcompadd () +{ + compadd -p "${2-}" -S "${3- }" -q -- ${=1} && _ret=0 +} + +__gitcomp () +{ + emulate -L zsh + + IFS=$' \t\n' __gitcompadd "$1" "${2-}" "${4- }" +} + +__gitcomp_opts () +{ + emulate -L zsh + + local cur_="${3-$cur}" + + [[ "$cur_" == *= ]] && return + + local c IFS=$' \t\n' sfx + for c in ${=1}; do + if [[ $c == "--" ]]; then + [[ "$cur_" == --no-* ]] && continue + __gitcompadd "--no-..." + break + fi + + if [[ -z "${4+set}" ]]; then + case $c in + *=) c="${c%=}"; sfx="=" ;; + *.) sfx="" ;; + *) sfx=" " ;; + esac + else + sfx="$4" + fi + __gitcompadd "$c" "${2-}" "$sfx" + done +} + +__gitcomp_nl () +{ + emulate -L zsh + + # words that don't end up in space + compadd -p "${2-}" -S "${4- }" -q -- ${${(f)1}:#*\ } && _ret=0 + # words that end in space + compadd -p "${2-}" -S " ${4- }" -q -- ${${(M)${(f)1}:#*\ }% } && _ret=0 +} + +__gitcomp_file () +{ + emulate -L zsh + + compadd -f -p "${2-}" -- ${(f)1} && _ret=0 +} + +__gitcomp_direct () +{ + __gitcomp_nl "$1" "" "" "" +} + +__gitcomp_file_direct () +{ + __gitcomp_file "$1" "" +} + +__git_complete_command () +{ + emulate -L zsh + + compset -P '*[=:]' + + local command="$1" + local completion_func="_git_${command//-/_}" + if (( $+functions[$completion_func] )); then + emulate ksh -c $completion_func + return 0 + elif emulate ksh -c "__git_support_parseopt_helper $command"; then + emulate ksh -c "__git_complete_common $command" + return 0 + else + return 1 + fi +} + +__git_zsh_bash_func () +{ + emulate -L ksh + + local command=$1 + + __git_complete_command "$command" && return + + local expansion=$(__git_aliased_command "$command") + if [ -n "$expansion" ]; then + words[1]=$expansion + __git_complete_command "$expansion" + fi +} + +__git_zsh_cmd_common () +{ + local -a list + list=( + add:'add file contents to the index' + bisect:'find by binary search the change that introduced a bug' + branch:'list, create, or delete branches' + checkout:'checkout a branch or paths to the working tree' + clone:'clone a repository into a new directory' + commit:'record changes to the repository' + diff:'show changes between commits, commit and working tree, etc' + fetch:'download objects and refs from another repository' + grep:'print lines matching a pattern' + init:'create an empty Git repository or reinitialize an existing one' + log:'show commit logs' + merge:'join two or more development histories together' + mv:'move or rename a file, a directory, or a symlink' + pull:'fetch from and merge with another repository or a local branch' + push:'update remote refs along with associated objects' + rebase:'forward-port local commits to the updated upstream head' + reset:'reset current HEAD to the specified state' + restore:'restore working tree files' + rm:'remove files from the working tree and from the index' + show:'show various types of objects' + status:'show the working tree status' + switch:'switch branches' + tag:'create, list, delete or verify a tag object signed with GPG') + _describe -t common-commands 'common commands' list && _ret=0 +} + +__git_zsh_cmd_alias () +{ + local -a list + list=(${${(0)"$(git config -z --get-regexp '^alias\.*')"}#alias.}) + list=(${(f)"$(printf "%s:alias for '%s'\n" ${(f@)list})"}) + _describe -t alias-commands 'aliases' list && _ret=0 +} + +__git_zsh_cmd_all () +{ + local -a list + emulate ksh -c __git_compute_all_commands + list=( ${=__git_all_commands} ) + _describe -t all-commands 'all commands' list && _ret=0 +} + +__git_zsh_main () +{ + local curcontext="$curcontext" state state_descr line + typeset -A opt_args + local -a __git_C_args + + _arguments -C \ + '(-p --paginate -P --no-pager)'{-p,--paginate}'[pipe all output into ''less'']' \ + '(-p --paginate -P --no-pager)'{-P,--no-pager}'[do not pipe git output into a pager]' \ + '(--bare)--git-dir=[set the path to the repository]: :_directories' \ + '(--git-dir)--bare[treat the repository as a bare repository]' \ + '(- :)--version[prints the git suite version]' \ + '--exec-path=[path to where your core git programs are installed]: :_directories' \ + '(- :)--exec-path[print the path where your core git programs are installed]' \ + '(- :)--html-path[print the path where git''s HTML documentation is installed]' \ + '(- :)--info-path[print the path where the Info files are installed]' \ + '(- :)--man-path[print the manpath (see `man(1)`) for the man pages]' \ + '--work-tree=[set the path to the working tree]: :_directories' \ + '--namespace=[set the git namespace]:' \ + '--no-replace-objects[do not use replacement refs to replace git objects]' \ + '(- :)--help[prints the synopsis and a list of the most commonly used commands]: :->arg' \ + '*-C[run as if git was started in the given path]: :_directories' \ + '*-c[pass a configuration parameter to the command]: :->config' \ + '(-): :->command' \ + '(-)*:: :->arg' && return + + case $state in + (command) + _tags common-commands alias-commands all-commands + while _tags; do + _requested common-commands && __git_zsh_cmd_common + _requested alias-commands && __git_zsh_cmd_alias + _requested all-commands && __git_zsh_cmd_all + let _ret || break + done + ;; + (config) + compset -P '*[=:]' + emulate ksh -c __git_complete_config_variable_name_and_value + ;; + (arg) + local command="${words[1]}" __git_dir __git_cmd_idx=1 + + if (( $+opt_args[--bare] )); then + __git_dir='.' + else + __git_dir=${~opt_args[--git-dir]} + fi + + for x in ${(s.:.)opt_args[-C]}; do + __git_C_args+=('-C' ${~x}) + done + + (( $+opt_args[--help] )) && command='help' + + words=( git ${words[@]} ) + + __git_zsh_bash_func $command + ;; + esac +} + +_git () +{ + local _ret=1 + local cur cword prev __git_cmd_idx=0 + + cur=${words[CURRENT]} + prev=${words[CURRENT-1]} + let cword=CURRENT-1 + + if (( $+functions[__${service}_zsh_main] )); then + __${service}_zsh_main + elif (( $+functions[__${service}_main] )); then + emulate ksh -c __${service}_main + elif (( $+functions[_${service}] )); then + emulate ksh -c _${service} + elif (( $+functions[_${service//-/_}] )); then + emulate ksh -c _${service//-/_} + fi + + let _ret && _default && _ret=0 + return _ret +} + +_git diff --git a/dot_oh-my-zsh/plugins/gitfast/executable_update b/dot_oh-my-zsh/plugins/gitfast/executable_update new file mode 100644 index 0000000..feb13ff --- /dev/null +++ b/dot_oh-my-zsh/plugins/gitfast/executable_update @@ -0,0 +1,8 @@ +#!/bin/sh + +url="https://raw.githubusercontent.com/felipec/git-completion" +version="1.3.7" + +curl -s -o _git "${url}/v${version}/git-completion.zsh" && +curl -s -o git-completion.bash "${url}/v${version}/git-completion.bash" && +curl -s -o git-prompt.sh "${url}/v${version}/git-prompt.sh" diff --git a/dot_oh-my-zsh/plugins/gitfast/git-completion.bash b/dot_oh-my-zsh/plugins/gitfast/git-completion.bash new file mode 100644 index 0000000..dd06b50 --- /dev/null +++ b/dot_oh-my-zsh/plugins/gitfast/git-completion.bash @@ -0,0 +1,3677 @@ +# bash/zsh completion support for core Git. +# +# Copyright (C) 2006,2007 Shawn O. Pearce +# Conceptually based on gitcompletion (http://gitweb.hawaga.org.uk/). +# Distributed under the GNU General Public License, version 2.0. +# +# The contained completion routines provide support for completing: +# +# *) local and remote branch names +# *) local and remote tag names +# *) .git/remotes file names +# *) git 'subcommands' +# *) git email aliases for git-send-email +# *) tree paths within 'ref:path/to/file' expressions +# *) file paths within current working directory and index +# *) common --long-options +# +# To use these routines: +# +# 1) Copy this file to somewhere (e.g. ~/.git-completion.bash). +# 2) Add the following line to your .bashrc/.zshrc: +# source ~/.git-completion.bash +# 3) Consider changing your PS1 to also show the current branch, +# see git-prompt.sh for details. +# +# If you use complex aliases of form '!f() { ... }; f', you can use the null +# command ':' as the first command in the function body to declare the desired +# completion style. For example '!f() { : git commit ; ... }; f' will +# tell the completion to use commit completion. This also works with aliases +# of form "!sh -c '...'". For example, "!sh -c ': git commit ; ... '". +# +# If you have a command that is not part of git, but you would still +# like completion, you can use __git_complete: +# +# __git_complete gl git_log +# +# Or if it's a main command (i.e. git or gitk): +# +# __git_complete gk gitk +# +# Compatible with bash 3.2.57. +# +# You can set the following environment variables to influence the behavior of +# the completion routines: +# +# GIT_COMPLETION_CHECKOUT_NO_GUESS +# +# When set to "1", do not include "DWIM" suggestions in git-checkout +# and git-switch completion (e.g., completing "foo" when "origin/foo" +# exists). +# +# GIT_COMPLETION_SHOW_ALL_COMMANDS +# +# When set to "1" suggest all commands, including plumbing commands +# which are hidden by default (e.g. "cat-file" on "git ca"). +# +# GIT_COMPLETION_SHOW_ALL +# +# When set to "1" suggest all options, including options which are +# typically hidden (e.g. '--allow-empty' for 'git commit'). + +# The following functions are meant to modify COMPREPLY, which should not be +# modified directly. The purpose is to localize the modifications so it's +# easier to emulate it in Zsh. Every time a new __gitcomp* function is added, +# the corresponding function should be added to Zsh. + +__gitcompadd () +{ + local x i=${#COMPREPLY[@]} + for x in $1; do + if [[ "$x" == "$3"* ]]; then + COMPREPLY[i++]="$2$x$4" + fi + done +} + +# Creates completion replies. +# It accepts 1 to 4 arguments: +# 1: List of possible completion words. +# 2: A prefix to be added to each possible completion word (optional). +# 3: Generate possible completion matches for this word (optional). +# 4: A suffix to be appended to each possible completion word (optional). +__gitcomp () +{ + local IFS=$' \t\n' + __gitcompadd "$1" "${2-}" "${3-$cur}" "${4- }" +} + +# Generates completion reply from newline-separated possible completion words +# by appending a space to all of them. The result is appended to COMPREPLY. +# It accepts 1 to 4 arguments: +# 1: List of possible completion words, separated by a single newline. +# 2: A prefix to be added to each possible completion word (optional). +# 3: Generate possible completion matches for this word (optional). +# 4: A suffix to be appended to each possible completion word instead of +# the default space (optional). If specified but empty, nothing is +# appended. +__gitcomp_nl () +{ + local IFS=$'\n' + __gitcompadd "$1" "${2-}" "${3-$cur}" "${4- }" +} + +# Appends prefiltered words to COMPREPLY without any additional processing. +# Callers must take care of providing only words that match the current word +# to be completed and adding any prefix and/or suffix (trailing space!), if +# necessary. +# 1: List of newline-separated matching completion words, complete with +# prefix and suffix. +__gitcomp_direct () +{ + local IFS=$'\n' + + COMPREPLY+=($1) +} + +# Generates completion reply with compgen from newline-separated possible +# completion filenames. +# It accepts 1 to 3 arguments: +# 1: List of possible completion filenames, separated by a single newline. +# 2: A directory prefix to be added to each possible completion filename +# (optional). +# 3: Generate possible completion matches for this word (optional). +__gitcomp_file () +{ + local IFS=$'\n' + + # XXX does not work when the directory prefix contains a tilde, + # since tilde expansion is not applied. + # This means that COMPREPLY will be empty and Bash default + # completion will be used. + __gitcompadd "$1" "${2-}" "${3-$cur}" "" + + # use a hack to enable file mode in bash < 4 + compopt -o filenames +o nospace 2>/dev/null || + compgen -f /non-existing-dir/ >/dev/null || + true +} + +# Fills the COMPREPLY array with prefiltered paths without any additional +# processing. +# Callers must take care of providing only paths that match the current path +# to be completed and adding any prefix path components, if necessary. +# 1: List of newline-separated matching paths, complete with all prefix +# path components. +__gitcomp_file_direct () +{ + local IFS=$'\n' + + COMPREPLY+=($1) + + # use a hack to enable file mode in bash < 4 + compopt -o filenames +o nospace 2>/dev/null || + compgen -f /non-existing-dir/ >/dev/null || + true +} + +# Creates completion replies, reorganizing options and adding suffixes as needed. +# It accepts 1 to 4 arguments: +# 1: List of possible completion words. +# 2: A prefix to be added to each possible completion word (optional). +# 3: Generate possible completion matches for this word (optional). +# 4: A suffix to be appended to each possible completion word (optional). +__gitcomp_opts () +{ + local cur_="${3-$cur}" + + if [[ "$cur_" == *= ]]; then + return + fi + + local c i=0 IFS=$' \t\n' sfx + for c in $1; do + if [[ $c == "--" ]]; then + if [[ "$cur_" == --no-* ]]; then + continue + fi + + if [[ --no == "$cur_"* ]]; then + COMPREPLY[i++]="--no-... " + fi + break + fi + if [[ $c == "$cur_"* ]]; then + if [[ -z "${4+set}" ]]; then + case $c in + *=|*.) sfx="" ;; + *) sfx=" " ;; + esac + else + sfx="$4" + fi + COMPREPLY[i++]="${2-}$c$sfx" + fi + done +} + +# __gitcomp functions end here +# ============================================================================== + +# Discovers the path to the git repository taking any '--git-dir=' and +# '-C ' options into account and stores it in the $__git_repo_path +# variable. +__git_find_repo_path () +{ + if [ -n "${__git_repo_path-}" ]; then + # we already know where it is + return + fi + + if [ -n "${__git_C_args-}" ]; then + __git_repo_path="$(git "${__git_C_args[@]}" \ + ${__git_dir:+--git-dir="$__git_dir"} \ + rev-parse --absolute-git-dir 2>/dev/null)" + elif [ -n "${__git_dir-}" ]; then + test -d "$__git_dir" && + __git_repo_path="$__git_dir" + elif [ -n "${GIT_DIR-}" ]; then + test -d "$GIT_DIR" && + __git_repo_path="$GIT_DIR" + elif [ -d .git ]; then + __git_repo_path=.git + else + __git_repo_path="$(git rev-parse --git-dir 2>/dev/null)" + fi +} + +# Deprecated: use __git_find_repo_path() and $__git_repo_path instead +# __gitdir accepts 0 or 1 arguments (i.e., location) +# returns location of .git repo +__gitdir () +{ + if [ -z "${1-}" ]; then + __git_find_repo_path || return 1 + echo "$__git_repo_path" + elif [ -d "$1/.git" ]; then + echo "$1/.git" + else + echo "$1" + fi +} + +# Runs git with all the options given as argument, respecting any +# '--git-dir=' and '-C ' options present on the command line +__git () +{ + git ${__git_C_args:+"${__git_C_args[@]}"} \ + ${__git_dir:+--git-dir="$__git_dir"} "$@" 2>/dev/null +} + +# Removes backslash escaping, single quotes and double quotes from a word, +# stores the result in the variable $dequoted_word. +# 1: The word to dequote. +__git_dequote () +{ + local rest="$1" len ch + + dequoted_word="" + + while test -n "$rest"; do + len=${#dequoted_word} + dequoted_word="$dequoted_word${rest%%[\\\'\"]*}" + rest="${rest:$((${#dequoted_word}-$len))}" + + case "${rest:0:1}" in + \\) + ch="${rest:1:1}" + case "$ch" in + $'\n') + ;; + *) + dequoted_word="$dequoted_word$ch" + ;; + esac + rest="${rest:2}" + ;; + \') + rest="${rest:1}" + len=${#dequoted_word} + dequoted_word="$dequoted_word${rest%%\'*}" + rest="${rest:$((${#dequoted_word}-$len+1))}" + ;; + \") + rest="${rest:1}" + while test -n "$rest" ; do + len=${#dequoted_word} + dequoted_word="$dequoted_word${rest%%[\\\"]*}" + rest="${rest:$((${#dequoted_word}-$len))}" + case "${rest:0:1}" in + \\) + ch="${rest:1:1}" + case "$ch" in + \"|\\|\$|\`) + dequoted_word="$dequoted_word$ch" + ;; + $'\n') + ;; + *) + dequoted_word="$dequoted_word\\$ch" + ;; + esac + rest="${rest:2}" + ;; + \") + rest="${rest:1}" + break + ;; + esac + done + ;; + esac + done +} + +# Clear the variables caching builtins' options when (re-)sourcing +# the completion script. +if [[ -n ${ZSH_VERSION-} ]]; then + unset ${(M)${(k)parameters[@]}:#__gitcomp_builtin_*} 2>/dev/null +else + unset $(compgen -v __gitcomp_builtin_) +fi + +__gitcomp_builtin_add_default=" --dry-run --verbose --interactive --patch --edit --force --update --renormalize --intent-to-add --all --ignore-removal --refresh --ignore-errors --ignore-missing --sparse --chmod= --pathspec-from-file= --pathspec-file-nul --no-dry-run -- --no-verbose --no-interactive --no-patch --no-edit --no-force --no-update --no-renormalize --no-intent-to-add --no-all --no-ignore-removal --no-refresh --no-ignore-errors --no-ignore-missing --no-sparse --no-chmod --no-pathspec-from-file --no-pathspec-file-nul" +__gitcomp_builtin_am_default=" --interactive --3way --quiet --signoff --utf8 --keep --keep-non-patch --message-id --keep-cr --no-keep-cr --scissors --quoted-cr= --whitespace= --ignore-space-change --ignore-whitespace --directory= --exclude= --include= --patch-format= --reject --resolvemsg= --continue --resolved --skip --abort --quit --show-current-patch --allow-empty --committer-date-is-author-date --ignore-date --rerere-autoupdate --gpg-sign --empty= -- --no-interactive --no-3way --no-quiet --no-signoff --no-utf8 --no-keep --no-keep-non-patch --no-message-id --no-scissors --no-whitespace --no-ignore-space-change --no-ignore-whitespace --no-directory --no-exclude --no-include --no-patch-format --no-reject --no-resolvemsg --no-committer-date-is-author-date --no-ignore-date --no-rerere-autoupdate --no-gpg-sign" +__gitcomp_builtin_apply_default=" --exclude= --include= --no-add --stat --numstat --summary --check --index --intent-to-add --cached --apply --3way --build-fake-ancestor= --whitespace= --ignore-space-change --ignore-whitespace --reverse --unidiff-zero --reject --allow-overlap --verbose --quiet --inaccurate-eof --recount --directory= --allow-empty --add -- --no-stat --no-numstat --no-summary --no-check --no-index --no-intent-to-add --no-cached --no-apply --no-3way --no-build-fake-ancestor --no-whitespace --no-ignore-space-change --no-ignore-whitespace --no-reverse --no-unidiff-zero --no-reject --no-allow-overlap --no-verbose --no-quiet --no-inaccurate-eof --no-recount --no-directory --no-allow-empty" +__gitcomp_builtin_archive_default=" --output= --remote= --exec= --no-output -- --no-remote --no-exec" +__gitcomp_builtin_bisect__helper_default=" --bisect-reset --bisect-next-check --bisect-terms --bisect-start --bisect-next --bisect-state --bisect-log --bisect-replay --bisect-skip --bisect-visualize --bisect-run --no-log --log" +__gitcomp_builtin_blame_default=" --incremental --root --show-stats --progress --score-debug --show-name --show-number --porcelain --line-porcelain --show-email --ignore-rev= --ignore-revs-file= --color-lines --color-by-age --minimal --contents= --abbrev --no-incremental -- --no-root --no-show-stats --no-progress --no-score-debug --no-show-name --no-show-number --no-porcelain --no-line-porcelain --no-show-email --no-ignore-rev --no-ignore-revs-file --no-color-lines --no-color-by-age --no-minimal --no-contents --no-abbrev" +__gitcomp_builtin_branch_default=" --verbose --quiet --track --set-upstream-to= --unset-upstream --color --remotes --contains --no-contains --abbrev --all --delete --move --copy --list --show-current --create-reflog --edit-description --merged --no-merged --column --sort= --points-at= --ignore-case --recurse-submodules --format= -- --no-verbose --no-quiet --no-track --no-set-upstream-to --no-unset-upstream --no-color --no-remotes --no-abbrev --no-all --no-delete --no-move --no-copy --no-list --no-show-current --no-create-reflog --no-edit-description --no-column --no-sort --no-points-at --no-ignore-case --no-recurse-submodules --no-format" +__gitcomp_builtin_bugreport_default=" --output-directory= --suffix= --no-output-directory -- --no-suffix" +__gitcomp_builtin_cat_file_default=" --allow-unknown-type --batch --batch-check --batch-command --batch-all-objects --buffer --follow-symlinks --unordered --textconv --filters --path= --no-allow-unknown-type -- --no-buffer --no-follow-symlinks --no-unordered --no-path" +__gitcomp_builtin_check_attr_default=" --all --cached --stdin --no-all -- --no-cached --no-stdin" +__gitcomp_builtin_check_ignore_default=" --quiet --verbose --stdin --non-matching --no-index --index -- --no-quiet --no-verbose --no-stdin --no-non-matching" +__gitcomp_builtin_check_mailmap_default=" --stdin --no-stdin" +__gitcomp_builtin_checkout_default=" --guess --overlay --quiet --recurse-submodules --progress --merge --conflict= --detach --track --orphan= --ignore-other-worktrees --ours --theirs --patch --ignore-skip-worktree-bits --pathspec-from-file= --pathspec-file-nul --no-guess -- --no-overlay --no-quiet --no-recurse-submodules --no-progress --no-merge --no-conflict --no-detach --no-track --no-orphan --no-ignore-other-worktrees --no-patch --no-ignore-skip-worktree-bits --no-pathspec-from-file --no-pathspec-file-nul" +__gitcomp_builtin_checkout__worker_default=" --prefix= --no-prefix" +__gitcomp_builtin_checkout_index_default=" --all --ignore-skip-worktree-bits --force --quiet --no-create --index --stdin --temp --prefix= --stage= --create -- --no-all --no-ignore-skip-worktree-bits --no-force --no-quiet --no-index --no-stdin --no-temp --no-prefix" +__gitcomp_builtin_cherry_default=" --abbrev --verbose --no-abbrev -- --no-verbose" +__gitcomp_builtin_cherry_pick_default=" --quit --continue --abort --skip --cleanup= --no-commit --edit --signoff --mainline= --rerere-autoupdate --strategy= --strategy-option= --gpg-sign --ff --allow-empty --allow-empty-message --keep-redundant-commits --commit -- --no-cleanup --no-edit --no-signoff --no-mainline --no-rerere-autoupdate --no-strategy --no-strategy-option --no-gpg-sign --no-ff --no-allow-empty --no-allow-empty-message --no-keep-redundant-commits" +__gitcomp_builtin_clean_default=" --quiet --dry-run --interactive --exclude= --no-quiet -- --no-dry-run --no-interactive" +__gitcomp_builtin_clone_default=" --verbose --quiet --progress --reject-shallow --no-checkout --bare --mirror --local --no-hardlinks --shared --recurse-submodules --jobs= --template= --reference= --reference-if-able= --dissociate --origin= --branch= --upload-pack= --depth= --shallow-since= --shallow-exclude= --single-branch --no-tags --shallow-submodules --separate-git-dir= --config= --server-option= --ipv4 --ipv6 --filter= --also-filter-submodules --remote-submodules --sparse --checkout --hardlinks --tags -- --no-verbose --no-quiet --no-progress --no-reject-shallow --no-bare --no-mirror --no-local --no-shared --no-recurse-submodules --no-recursive --no-jobs --no-template --no-reference --no-reference-if-able --no-dissociate --no-origin --no-branch --no-upload-pack --no-depth --no-shallow-since --no-shallow-exclude --no-single-branch --no-shallow-submodules --no-separate-git-dir --no-config --no-server-option --no-ipv4 --no-ipv6 --no-filter --no-also-filter-submodules --no-remote-submodules --no-sparse" +__gitcomp_builtin_column_default=" --command= --mode --raw-mode= --width= --indent= --nl= --padding= --no-command -- --no-mode --no-raw-mode --no-width --no-indent --no-nl --no-padding" +__gitcomp_builtin_commit_default=" --quiet --verbose --file= --author= --date= --message= --reedit-message= --reuse-message= --fixup= --squash= --reset-author --trailer= --signoff --template= --edit --cleanup= --status --gpg-sign --all --include --interactive --patch --only --no-verify --dry-run --short --branch --ahead-behind --porcelain --long --null --amend --no-post-rewrite --untracked-files --pathspec-from-file= --pathspec-file-nul --verify --post-rewrite -- --no-quiet --no-verbose --no-file --no-author --no-date --no-message --no-reedit-message --no-reuse-message --no-fixup --no-squash --no-reset-author --no-signoff --no-template --no-edit --no-cleanup --no-status --no-gpg-sign --no-all --no-include --no-interactive --no-patch --no-only --no-dry-run --no-short --no-branch --no-ahead-behind --no-porcelain --no-long --no-null --no-amend --no-untracked-files --no-pathspec-from-file --no-pathspec-file-nul" +__gitcomp_builtin_commit_graph_default=" --object-dir= --no-object-dir" +__gitcomp_builtin_config_default=" --global --system --local --worktree --file= --blob= --get --get-all --get-regexp --get-urlmatch --replace-all --add --unset --unset-all --rename-section --remove-section --list --fixed-value --edit --get-color --get-colorbool --type= --bool --int --bool-or-int --bool-or-str --path --expiry-date --null --name-only --includes --show-origin --show-scope --default= --no-global -- --no-system --no-local --no-worktree --no-file --no-blob --no-get --no-get-all --no-get-regexp --no-get-urlmatch --no-replace-all --no-add --no-unset --no-unset-all --no-rename-section --no-remove-section --no-list --no-fixed-value --no-edit --no-get-color --no-get-colorbool --no-type --no-null --no-name-only --no-includes --no-show-origin --no-show-scope --no-default" +__gitcomp_builtin_count_objects_default=" --verbose --human-readable --no-verbose -- --no-human-readable" +__gitcomp_builtin_credential_cache_default=" --timeout= --socket= --no-timeout -- --no-socket" +__gitcomp_builtin_credential_cache__daemon_default=" --debug --no-debug" +__gitcomp_builtin_credential_store_default=" --file= --no-file" +__gitcomp_builtin_describe_default=" --contains --debug --all --tags --long --first-parent --abbrev --exact-match --candidates= --match= --exclude= --always --dirty --broken --no-contains -- --no-debug --no-all --no-tags --no-long --no-first-parent --no-abbrev --no-exact-match --no-candidates --no-match --no-exclude --no-always --no-dirty --no-broken" +__gitcomp_builtin_difftool_default=" --gui --dir-diff --no-prompt --symlinks --tool= --tool-help --trust-exit-code --extcmd= --no-index --index -- --no-gui --no-dir-diff --no-symlinks --no-tool --no-tool-help --no-trust-exit-code --no-extcmd" +__gitcomp_builtin_env__helper_default=" --type= --default= --exit-code --no-default -- --no-exit-code" +__gitcomp_builtin_fast_export_default=" --progress= --signed-tags= --tag-of-filtered-object= --reencode= --export-marks= --import-marks= --import-marks-if-exists= --fake-missing-tagger --full-tree --use-done-feature --no-data --refspec= --anonymize --anonymize-map= --reference-excluded-parents --show-original-ids --mark-tags --data -- --no-progress --no-signed-tags --no-tag-of-filtered-object --no-reencode --no-export-marks --no-import-marks --no-import-marks-if-exists --no-fake-missing-tagger --no-full-tree --no-use-done-feature --no-refspec --no-anonymize --no-reference-excluded-parents --no-show-original-ids --no-mark-tags" +__gitcomp_builtin_fetch_default=" --verbose --quiet --all --set-upstream --append --atomic --upload-pack= --force --multiple --tags --jobs= --prefetch --prune --prune-tags --recurse-submodules --dry-run --write-fetch-head --keep --update-head-ok --progress --depth= --shallow-since= --shallow-exclude= --deepen= --unshallow --refetch --update-shallow --refmap= --server-option= --ipv4 --ipv6 --negotiation-tip= --negotiate-only --filter= --auto-maintenance --auto-gc --show-forced-updates --write-commit-graph --stdin --no-verbose -- --no-quiet --no-all --no-set-upstream --no-append --no-atomic --no-upload-pack --no-force --no-multiple --no-tags --no-jobs --no-prefetch --no-prune --no-prune-tags --no-recurse-submodules --no-dry-run --no-write-fetch-head --no-keep --no-update-head-ok --no-progress --no-depth --no-shallow-since --no-shallow-exclude --no-deepen --no-update-shallow --no-server-option --no-ipv4 --no-ipv6 --no-negotiation-tip --no-negotiate-only --no-filter --no-auto-maintenance --no-auto-gc --no-show-forced-updates --no-write-commit-graph --no-stdin" +__gitcomp_builtin_fmt_merge_msg_default=" --log --message= --into-name= --file= --no-log -- --no-message --no-into-name --no-file" +__gitcomp_builtin_for_each_ref_default=" --shell --perl --python --tcl --count= --format= --color --sort= --points-at= --merged --no-merged --contains --no-contains --ignore-case -- --no-shell --no-perl --no-python --no-tcl --no-count --no-format --no-color --no-sort --no-points-at --no-ignore-case" +__gitcomp_builtin_for_each_repo_default=" --config= --no-config" +__gitcomp_builtin_format_patch_default=" --numbered --no-numbered --signoff --stdout --cover-letter --numbered-files --suffix= --start-number= --reroll-count= --filename-max-length= --rfc --cover-from-description= --subject-prefix= --output-directory= --keep-subject --no-binary --zero-commit --ignore-if-in-upstream --no-stat --add-header= --to= --cc= --from --in-reply-to= --attach --inline --thread --signature= --base= --signature-file= --quiet --progress --interdiff= --range-diff= --creation-factor= --binary -- --no-numbered --no-signoff --no-stdout --no-cover-letter --no-numbered-files --no-suffix --no-start-number --no-reroll-count --no-filename-max-length --no-cover-from-description --no-zero-commit --no-ignore-if-in-upstream --no-add-header --no-to --no-cc --no-from --no-in-reply-to --no-attach --no-thread --no-signature --no-base --no-signature-file --no-quiet --no-progress --no-interdiff --no-range-diff --no-creation-factor" +__gitcomp_builtin_fsck_default=" --verbose --unreachable --dangling --tags --root --cache --reflogs --full --connectivity-only --strict --lost-found --progress --name-objects --no-verbose -- --no-unreachable --no-dangling --no-tags --no-root --no-cache --no-reflogs --no-full --no-connectivity-only --no-strict --no-lost-found --no-progress --no-name-objects" +__gitcomp_builtin_fsck_objects_default=" --verbose --unreachable --dangling --tags --root --cache --reflogs --full --connectivity-only --strict --lost-found --progress --name-objects --no-verbose -- --no-unreachable --no-dangling --no-tags --no-root --no-cache --no-reflogs --no-full --no-connectivity-only --no-strict --no-lost-found --no-progress --no-name-objects" +__gitcomp_builtin_fsmonitor__daemon_default="" +__gitcomp_builtin_gc_default=" --quiet --prune --aggressive --keep-largest-pack --no-quiet -- --no-prune --no-aggressive --no-keep-largest-pack" +__gitcomp_builtin_grep_default=" --cached --no-index --untracked --exclude-standard --recurse-submodules --invert-match --ignore-case --word-regexp --text --textconv --recursive --max-depth= --extended-regexp --basic-regexp --fixed-strings --perl-regexp --line-number --column --full-name --files-with-matches --name-only --files-without-match --only-matching --count --color --break --heading --context= --before-context= --after-context= --threads= --show-function --function-context --and --or --not --quiet --all-match --index -- --no-cached --no-untracked --no-exclude-standard --no-recurse-submodules --no-invert-match --no-ignore-case --no-word-regexp --no-text --no-textconv --no-recursive --no-extended-regexp --no-basic-regexp --no-fixed-strings --no-perl-regexp --no-line-number --no-column --no-full-name --no-files-with-matches --no-name-only --no-files-without-match --no-only-matching --no-count --no-color --no-break --no-heading --no-context --no-before-context --no-after-context --no-threads --no-show-function --no-function-context --no-or --no-quiet --no-all-match" +__gitcomp_builtin_hash_object_default=" --stdin --stdin-paths --no-filters --literally --path= --filters -- --no-stdin --no-stdin-paths --no-literally --no-path" +__gitcomp_builtin_help_default=" --all --external-commands --aliases --man --web --info --verbose --guides --config --no-external-commands -- --no-aliases --no-man --no-web --no-info --no-verbose" +__gitcomp_builtin_hook_default="" +__gitcomp_builtin_init_default=" --template= --bare --shared --quiet --separate-git-dir= --initial-branch= --object-format= --no-template -- --no-bare --no-quiet --no-separate-git-dir --no-initial-branch --no-object-format" +__gitcomp_builtin_init_db_default=" --template= --bare --shared --quiet --separate-git-dir= --initial-branch= --object-format= --no-template -- --no-bare --no-quiet --no-separate-git-dir --no-initial-branch --no-object-format" +__gitcomp_builtin_interpret_trailers_default=" --in-place --trim-empty --where= --if-exists= --if-missing= --only-trailers --only-input --unfold --parse --no-divider --trailer= --divider -- --no-in-place --no-trim-empty --no-where --no-if-exists --no-if-missing --no-only-trailers --no-only-input --no-unfold --no-trailer" +__gitcomp_builtin_log_default=" --quiet --source --use-mailmap --decorate-refs= --decorate-refs-exclude= --decorate --no-quiet -- --no-source --no-use-mailmap --no-mailmap --no-decorate-refs --no-decorate-refs-exclude --no-decorate" +__gitcomp_builtin_ls_files_default=" --cached --deleted --modified --others --ignored --stage --killed --directory --eol --empty-directory --unmerged --resolve-undo --exclude= --exclude-from= --exclude-per-directory= --exclude-standard --full-name --recurse-submodules --error-unmatch --with-tree= --abbrev --debug --deduplicate --sparse --no-cached -- --no-deleted --no-modified --no-others --no-ignored --no-stage --no-killed --no-directory --no-eol --no-empty-directory --no-unmerged --no-resolve-undo --no-exclude-per-directory --no-recurse-submodules --no-error-unmatch --no-with-tree --no-abbrev --no-debug --no-deduplicate --no-sparse" +__gitcomp_builtin_ls_remote_default=" --quiet --upload-pack= --tags --heads --refs --get-url --sort= --symref --server-option= --no-quiet -- --no-upload-pack --no-tags --no-heads --no-refs --no-get-url --no-sort --no-symref --no-server-option" +__gitcomp_builtin_ls_tree_default=" --long --name-only --name-status --object-only --full-name --full-tree --format= --abbrev --no-full-name -- --no-full-tree --no-abbrev" +__gitcomp_builtin_merge_default=" --stat --summary --log --squash --commit --edit --cleanup= --ff --ff-only --rerere-autoupdate --verify-signatures --strategy= --strategy-option= --message= --file --into-name= --verbose --quiet --abort --quit --continue --allow-unrelated-histories --progress --gpg-sign --autostash --overwrite-ignore --signoff --no-verify --verify -- --no-stat --no-summary --no-log --no-squash --no-commit --no-edit --no-cleanup --no-ff --no-rerere-autoupdate --no-verify-signatures --no-strategy --no-strategy-option --no-message --no-into-name --no-verbose --no-quiet --no-abort --no-quit --no-continue --no-allow-unrelated-histories --no-progress --no-gpg-sign --no-autostash --no-overwrite-ignore --no-signoff" +__gitcomp_builtin_merge_base_default=" --all --octopus --independent --is-ancestor --fork-point --no-all" +__gitcomp_builtin_merge_file_default=" --stdout --diff3 --zdiff3 --ours --theirs --union --marker-size= --quiet --no-stdout -- --no-diff3 --no-zdiff3 --no-ours --no-theirs --no-union --no-marker-size --no-quiet" +__gitcomp_builtin_mktree_default=" --missing --batch --no-missing -- --no-batch" +__gitcomp_builtin_multi_pack_index_default=" --object-dir= --no-object-dir" +__gitcomp_builtin_mv_default=" --verbose --dry-run --sparse --no-verbose -- --no-dry-run --no-sparse" +__gitcomp_builtin_name_rev_default=" --name-only --tags --refs= --exclude= --all --stdin --annotate-stdin --undefined --always --no-name-only -- --no-tags --no-refs --no-exclude --no-all --no-stdin --no-annotate-stdin --no-undefined --no-always" +__gitcomp_builtin_notes_default=" --ref= --no-ref" +__gitcomp_builtin_pack_objects_default=" --quiet --progress --all-progress --all-progress-implied --index-version= --max-pack-size= --local --incremental --window= --window-memory= --depth= --reuse-delta --reuse-object --delta-base-offset --threads= --non-empty --revs --unpacked --all --reflog --indexed-objects --stdin-packs --stdout --include-tag --keep-unreachable --pack-loose-unreachable --unpack-unreachable --sparse --thin --shallow --honor-pack-keep --keep-pack= --compression= --keep-true-parents --use-bitmap-index --write-bitmap-index --filter= --missing= --exclude-promisor-objects --delta-islands --uri-protocol= --no-quiet -- --no-progress --no-all-progress --no-all-progress-implied --no-local --no-incremental --no-window --no-depth --no-reuse-delta --no-reuse-object --no-delta-base-offset --no-threads --no-non-empty --no-revs --no-stdin-packs --no-stdout --no-include-tag --no-keep-unreachable --no-pack-loose-unreachable --no-unpack-unreachable --no-sparse --no-thin --no-shallow --no-honor-pack-keep --no-keep-pack --no-compression --no-keep-true-parents --no-use-bitmap-index --no-write-bitmap-index --no-filter --no-exclude-promisor-objects --no-delta-islands --no-uri-protocol" +__gitcomp_builtin_pack_refs_default=" --all --prune --no-all -- --no-prune" +__gitcomp_builtin_pickaxe_default=" --incremental --root --show-stats --progress --score-debug --show-name --show-number --porcelain --line-porcelain --show-email --ignore-rev= --ignore-revs-file= --color-lines --color-by-age --minimal --contents= --abbrev --no-incremental -- --no-root --no-show-stats --no-progress --no-score-debug --no-show-name --no-show-number --no-porcelain --no-line-porcelain --no-show-email --no-ignore-rev --no-ignore-revs-file --no-color-lines --no-color-by-age --no-minimal --no-contents --no-abbrev" +__gitcomp_builtin_prune_default=" --dry-run --verbose --progress --expire= --exclude-promisor-objects --no-dry-run -- --no-verbose --no-progress --no-expire --no-exclude-promisor-objects" +__gitcomp_builtin_prune_packed_default=" --dry-run --quiet --no-dry-run -- --no-quiet" +__gitcomp_builtin_pull_default=" --verbose --quiet --progress --recurse-submodules --rebase --stat --log --signoff --squash --commit --edit --cleanup= --ff --ff-only --verify --verify-signatures --autostash --strategy= --strategy-option= --gpg-sign --allow-unrelated-histories --all --append --upload-pack= --force --tags --prune --jobs --dry-run --keep --depth= --shallow-since= --shallow-exclude= --deepen= --unshallow --update-shallow --refmap= --server-option= --ipv4 --ipv6 --negotiation-tip= --show-forced-updates --set-upstream --no-verbose -- --no-quiet --no-progress --no-recurse-submodules --no-rebase --no-stat --no-log --no-signoff --no-squash --no-commit --no-edit --no-cleanup --no-ff --no-verify --no-verify-signatures --no-autostash --no-strategy --no-strategy-option --no-gpg-sign --no-allow-unrelated-histories --no-all --no-append --no-upload-pack --no-force --no-tags --no-prune --no-jobs --no-dry-run --no-keep --no-depth --no-shallow-since --no-shallow-exclude --no-deepen --no-update-shallow --no-server-option --no-ipv4 --no-ipv6 --no-negotiation-tip --no-show-forced-updates --no-set-upstream" +__gitcomp_builtin_push_default=" --verbose --quiet --repo= --all --mirror --delete --tags --dry-run --porcelain --force --force-with-lease --force-if-includes --recurse-submodules= --receive-pack= --exec= --set-upstream --progress --prune --no-verify --follow-tags --signed --atomic --push-option= --ipv4 --ipv6 --verify -- --no-verbose --no-quiet --no-repo --no-all --no-mirror --no-delete --no-tags --no-dry-run --no-porcelain --no-force --no-force-with-lease --no-force-if-includes --no-recurse-submodules --no-receive-pack --no-exec --no-set-upstream --no-progress --no-prune --no-follow-tags --no-signed --no-atomic --no-push-option --no-ipv4 --no-ipv6" +__gitcomp_builtin_range_diff_default=" --creation-factor= --no-dual-color --notes --left-only --right-only --patch --no-patch --unified --function-context --raw --patch-with-raw --patch-with-stat --numstat --shortstat --dirstat --cumulative --dirstat-by-file --check --summary --name-only --name-status --stat --stat-width= --stat-name-width= --stat-graph-width= --stat-count= --compact-summary --binary --full-index --color --ws-error-highlight= --abbrev --src-prefix= --dst-prefix= --line-prefix= --no-prefix --inter-hunk-context= --output-indicator-new= --output-indicator-old= --output-indicator-context= --break-rewrites --find-renames --irreversible-delete --find-copies --find-copies-harder --no-renames --rename-empty --follow --minimal --ignore-all-space --ignore-space-change --ignore-space-at-eol --ignore-cr-at-eol --ignore-blank-lines --ignore-matching-lines= --indent-heuristic --patience --histogram --diff-algorithm= --anchored= --word-diff --word-diff-regex= --color-words --color-moved --color-moved-ws= --relative --text --exit-code --quiet --ext-diff --textconv --ignore-submodules --submodule --ita-invisible-in-index --ita-visible-in-index --pickaxe-all --pickaxe-regex --rotate-to= --skip-to= --find-object= --diff-filter= --output= --dual-color -- --no-creation-factor --no-notes --no-left-only --no-right-only --no-function-context --no-compact-summary --no-full-index --no-color --no-abbrev --no-find-copies-harder --no-rename-empty --no-follow --no-minimal --no-ignore-matching-lines --no-indent-heuristic --no-color-moved --no-color-moved-ws --no-relative --no-text --no-exit-code --no-quiet --no-ext-diff --no-textconv" +__gitcomp_builtin_read_tree_default=" --index-output= --empty --verbose --trivial --aggressive --reset --prefix= --exclude-per-directory= --dry-run --no-sparse-checkout --debug-unpack --recurse-submodules --quiet --sparse-checkout -- --no-empty --no-verbose --no-trivial --no-aggressive --no-reset --no-dry-run --no-debug-unpack --no-recurse-submodules --no-quiet" +__gitcomp_builtin_rebase_default=" --onto= --keep-base --no-verify --quiet --verbose --no-stat --signoff --committer-date-is-author-date --reset-author-date --ignore-whitespace --whitespace= --force-rebase --no-ff --continue --skip --abort --quit --edit-todo --show-current-patch --apply --merge --interactive --rerere-autoupdate --empty= --autosquash --gpg-sign --autostash --exec= --rebase-merges --fork-point --strategy= --strategy-option= --root --reschedule-failed-exec --reapply-cherry-picks --verify --stat --ff -- --no-onto --no-keep-base --no-quiet --no-verbose --no-signoff --no-committer-date-is-author-date --no-reset-author-date --no-ignore-whitespace --no-whitespace --no-force-rebase --no-rerere-autoupdate --no-autosquash --no-gpg-sign --no-autostash --no-exec --no-rebase-merges --no-fork-point --no-strategy --no-strategy-option --no-root --no-reschedule-failed-exec --no-reapply-cherry-picks" +__gitcomp_builtin_receive_pack_default=" --quiet --no-quiet" +__gitcomp_builtin_reflog_default="" +__gitcomp_builtin_remote_default=" --verbose --no-verbose" +__gitcomp_builtin_repack_default=" --quiet --local --write-bitmap-index --delta-islands --unpack-unreachable= --keep-unreachable --window= --window-memory= --depth= --threads= --max-pack-size= --pack-kept-objects --keep-pack= --geometric= --write-midx --no-quiet -- --no-local --no-write-bitmap-index --no-delta-islands --no-unpack-unreachable --no-keep-unreachable --no-window --no-window-memory --no-depth --no-threads --no-max-pack-size --no-pack-kept-objects --no-keep-pack --no-geometric --no-write-midx" +__gitcomp_builtin_replace_default=" --list --delete --edit --graft --convert-graft-file --raw --format= --no-raw -- --no-format" +__gitcomp_builtin_rerere_default=" --rerere-autoupdate --no-rerere-autoupdate" +__gitcomp_builtin_reset_default=" --quiet --no-refresh --mixed --soft --hard --merge --keep --recurse-submodules --patch --intent-to-add --pathspec-from-file= --pathspec-file-nul --refresh -- --no-quiet --no-mixed --no-soft --no-hard --no-merge --no-keep --no-recurse-submodules --no-patch --no-intent-to-add --no-pathspec-from-file --no-pathspec-file-nul" +__gitcomp_builtin_restore_default=" --source= --staged --worktree --ignore-unmerged --overlay --quiet --recurse-submodules --progress --merge --conflict= --ours --theirs --patch --ignore-skip-worktree-bits --pathspec-from-file= --pathspec-file-nul --no-source -- --no-staged --no-worktree --no-ignore-unmerged --no-overlay --no-quiet --no-recurse-submodules --no-progress --no-merge --no-conflict --no-patch --no-ignore-skip-worktree-bits --no-pathspec-from-file --no-pathspec-file-nul" +__gitcomp_builtin_revert_default=" --quit --continue --abort --skip --cleanup= --no-commit --edit --signoff --mainline= --rerere-autoupdate --strategy= --strategy-option= --gpg-sign --commit -- --no-cleanup --no-edit --no-signoff --no-mainline --no-rerere-autoupdate --no-strategy --no-strategy-option --no-gpg-sign" +__gitcomp_builtin_rm_default=" --dry-run --quiet --cached --ignore-unmatch --sparse --pathspec-from-file= --pathspec-file-nul --no-dry-run -- --no-quiet --no-cached --no-ignore-unmatch --no-sparse --no-pathspec-from-file --no-pathspec-file-nul" +__gitcomp_builtin_send_pack_default=" --verbose --quiet --receive-pack= --exec= --remote= --all --dry-run --mirror --force --signed --push-option= --progress --thin --atomic --stateless-rpc --stdin --helper-status --force-with-lease --force-if-includes --no-verbose -- --no-quiet --no-receive-pack --no-exec --no-remote --no-all --no-dry-run --no-mirror --no-force --no-signed --no-push-option --no-progress --no-thin --no-atomic --no-stateless-rpc --no-stdin --no-helper-status --no-force-with-lease --no-force-if-includes" +__gitcomp_builtin_shortlog_default=" --committer --numbered --summary --email --group= --no-committer -- --no-numbered --no-summary --no-email --no-group" +__gitcomp_builtin_show_default=" --quiet --source --use-mailmap --decorate-refs= --decorate-refs-exclude= --decorate --no-quiet -- --no-source --no-use-mailmap --no-mailmap --no-decorate-refs --no-decorate-refs-exclude --no-decorate" +__gitcomp_builtin_show_branch_default=" --all --remotes --color --more --list --no-name --current --sha1-name --merge-base --independent --topo-order --topics --sparse --date-order --reflog --name -- --no-all --no-remotes --no-color --no-more --no-list --no-current --no-sha1-name --no-merge-base --no-independent --no-topo-order --no-topics --no-sparse --no-date-order" +__gitcomp_builtin_show_index_default=" --object-format= --no-object-format" +__gitcomp_builtin_show_ref_default=" --tags --heads --verify --head --dereference --hash --abbrev --quiet --exclude-existing --no-tags -- --no-heads --no-verify --no-head --no-dereference --no-hash --no-abbrev --no-quiet" +__gitcomp_builtin_sparse_checkout_default="" +__gitcomp_builtin_stage_default=" --dry-run --verbose --interactive --patch --edit --force --update --renormalize --intent-to-add --all --ignore-removal --refresh --ignore-errors --ignore-missing --sparse --chmod= --pathspec-from-file= --pathspec-file-nul --no-dry-run -- --no-verbose --no-interactive --no-patch --no-edit --no-force --no-update --no-renormalize --no-intent-to-add --no-all --no-ignore-removal --no-refresh --no-ignore-errors --no-ignore-missing --no-sparse --no-chmod --no-pathspec-from-file --no-pathspec-file-nul" +__gitcomp_builtin_stash_default="" +__gitcomp_builtin_status_default=" --verbose --short --branch --show-stash --ahead-behind --porcelain --long --null --untracked-files --ignored --ignore-submodules --column --no-renames --find-renames --renames -- --no-verbose --no-short --no-branch --no-show-stash --no-ahead-behind --no-porcelain --no-long --no-null --no-untracked-files --no-ignored --no-ignore-submodules --no-column" +__gitcomp_builtin_stripspace_default=" --strip-comments --comment-lines" +__gitcomp_builtin_switch_default=" --create= --force-create= --guess --discard-changes --quiet --recurse-submodules --progress --merge --conflict= --detach --track --orphan= --ignore-other-worktrees --no-create -- --no-force-create --no-guess --no-discard-changes --no-quiet --no-recurse-submodules --no-progress --no-merge --no-conflict --no-detach --no-track --no-orphan --no-ignore-other-worktrees" +__gitcomp_builtin_symbolic_ref_default=" --quiet --delete --short --no-quiet -- --no-delete --no-short" +__gitcomp_builtin_tag_default=" --list --delete --verify --annotate --message= --file= --edit --sign --cleanup= --local-user= --force --create-reflog --column --contains --no-contains --merged --no-merged --sort= --points-at --format= --color --ignore-case -- --no-annotate --no-file --no-edit --no-sign --no-cleanup --no-local-user --no-force --no-create-reflog --no-column --no-sort --no-points-at --no-format --no-color --no-ignore-case" +__gitcomp_builtin_update_index_default=" --ignore-submodules --add --replace --remove --unmerged --refresh --really-refresh --cacheinfo --chmod= --assume-unchanged --no-assume-unchanged --skip-worktree --no-skip-worktree --ignore-skip-worktree-entries --info-only --force-remove --stdin --index-info --unresolve --again --ignore-missing --verbose --clear-resolve-undo --index-version= --split-index --untracked-cache --test-untracked-cache --force-untracked-cache --force-write-index --fsmonitor --fsmonitor-valid --no-fsmonitor-valid -- --no-ignore-submodules --no-add --no-replace --no-remove --no-unmerged --no-ignore-skip-worktree-entries --no-info-only --no-force-remove --no-ignore-missing --no-verbose --no-index-version --no-split-index --no-untracked-cache --no-test-untracked-cache --no-force-untracked-cache --no-force-write-index --no-fsmonitor" +__gitcomp_builtin_update_ref_default=" --no-deref --stdin --create-reflog --deref -- --no-stdin --no-create-reflog" +__gitcomp_builtin_update_server_info_default=" --force --no-force" +__gitcomp_builtin_upload_pack_default=" --stateless-rpc --strict --timeout= --no-stateless-rpc -- --no-strict --no-timeout" +__gitcomp_builtin_verify_commit_default=" --verbose --raw --no-verbose -- --no-raw" +__gitcomp_builtin_verify_pack_default=" --verbose --stat-only --object-format= --no-verbose -- --no-stat-only --no-object-format" +__gitcomp_builtin_verify_tag_default=" --verbose --raw --format= --no-verbose -- --no-raw --no-format" +__gitcomp_builtin_version_default=" --build-options --no-build-options" +__gitcomp_builtin_whatchanged_default=" --quiet --source --use-mailmap --decorate-refs= --decorate-refs-exclude= --decorate --no-quiet -- --no-source --no-use-mailmap --no-mailmap --no-decorate-refs --no-decorate-refs-exclude --no-decorate" +__gitcomp_builtin_write_tree_default=" --missing-ok --prefix= --no-missing-ok -- --no-prefix" +__gitcomp_builtin_send_email_default="--sender= --from= --smtp-auth= --8bit-encoding= --no-format-patch --no-bcc --no-suppress-from --no-annotate --relogin-delay= --no-cc --no-signed-off-cc --no-signed-off-by-cc --no-chain-reply-to --smtp-debug= --smtp-domain= --chain-reply-to --dry-run --compose --bcc= --smtp-user= --thread --cc-cover --identity= --to= --reply-to= --no-cc-cover --suppress-cc= --to-cmd= --smtp-server= --smtp-ssl-cert-path= --no-thread --smtp-server-option= --quiet --batch-size= --envelope-sender= --smtp-ssl --no-to --validate --format-patch --suppress-from --cc= --compose-encoding= --to-cover --in-reply-to= --annotate --smtp-encryption= --cc-cmd= --smtp-server-port= --smtp-pass= --signed-off-cc --signed-off-by-cc --no-xmailer --subject= --no-to-cover --confirm= --transfer-encoding= --no-smtp-auth --sendmail-cmd= --no-validate --no-identity --dump-aliases --xmailer --force --numbered --no-numbered --signoff --stdout --cover-letter --numbered-files --suffix= --start-number= --reroll-count= --filename-max-length= --rfc --cover-from-description= --subject-prefix= --output-directory= --keep-subject --no-binary --zero-commit --ignore-if-in-upstream --no-stat --add-header= --from --attach --inline --signature= --base= --signature-file= --progress --interdiff= --range-diff= --creation-factor= --binary -- --no-signoff --no-stdout --no-cover-letter --no-numbered-files --no-suffix --no-start-number --no-reroll-count --no-filename-max-length --no-cover-from-description --no-zero-commit --no-ignore-if-in-upstream --no-add-header --no-from --no-in-reply-to --no-attach --no-signature --no-base --no-signature-file --no-quiet --no-progress --no-interdiff --no-range-diff --no-creation-factor" + +__gitcomp_builtin_get_default () +{ + eval "test -n \"\$${1}_default\" && echo \"\$${1}_default\"" +} + +# This function is equivalent to +# +# __gitcomp_opts "$(git xxx --git-completion-helper) ..." +# +# except that the output is cached. Accept 1-3 arguments: +# 1: the git command to execute, this is also the cache key +# 2: extra options to be added on top (e.g. negative forms) +# 3: options to be excluded +__gitcomp_builtin () +{ + # spaces must be replaced with underscore for multi-word + # commands, e.g. "git remote add" becomes remote_add. + local cmd="$1" + local incl="${2-}" + local excl="${3-}" + + local var=__gitcomp_builtin_"${cmd//-/_}" + local options + eval "options=\${$var-}" + + if [ -z "$options" ]; then + local completion_helper + if [ "${GIT_COMPLETION_SHOW_ALL-}" = "1" ]; then + completion_helper="--git-completion-helper-all" + else + completion_helper="--git-completion-helper" + fi + completion="$(__git ${cmd/_/ } $completion_helper || + __gitcomp_builtin_get_default $var)" || return + # leading and trailing spaces are significant to make + # option removal work correctly. + options=" $incl $completion " + + for i in $excl; do + options="${options/ $i / }" + done + eval "$var=\"$options\"" + fi + + __gitcomp_opts "$options" +} + +# Execute 'git ls-files', unless the --committable option is specified, in +# which case it runs 'git diff-index' to find out the files that can be +# committed. It return paths relative to the directory specified in the first +# argument, and using the options specified in the second argument. +__git_ls_files_helper () +{ + if [ "$2" = "--committable" ]; then + __git -C "$1" -c core.quotePath=false diff-index \ + --name-only --relative HEAD -- "${3//\\/\\\\}*" + else + # NOTE: $2 is not quoted in order to support multiple options + __git -C "$1" -c core.quotePath=false ls-files \ + --exclude-standard $2 -- "${3//\\/\\\\}*" + fi +} + + +# __git_index_files accepts 1 or 2 arguments: +# 1: Options to pass to ls-files (required). +# 2: A directory path (optional). +# If provided, only files within the specified directory are listed. +# Sub directories are never recursed. Path must have a trailing +# slash. +# 3: List only paths matching this path component (optional). +__git_index_files () +{ + local root="$2" match="$3" + + __git_ls_files_helper "$root" "$1" "${match:-?}" | + awk -F / -v pfx="${2//\\/\\\\}" '{ + paths[$1] = 1 + } + END { + for (p in paths) { + if (substr(p, 1, 1) != "\"") { + # No special characters, easy! + print pfx p + continue + } + + # The path is quoted. + p = dequote(p) + if (p == "") + continue + + # Even when a directory name itself does not contain + # any special characters, it will still be quoted if + # any of its (stripped) trailing path components do. + # Because of this we may have seen the same directory + # both quoted and unquoted. + if (p in paths) + # We have seen the same directory unquoted, + # skip it. + continue + else + print pfx p + } + } + function dequote(p, bs_idx, out, esc, esc_idx, dec) { + # Skip opening double quote. + p = substr(p, 2) + + # Interpret backslash escape sequences. + while ((bs_idx = index(p, "\\")) != 0) { + out = out substr(p, 1, bs_idx - 1) + esc = substr(p, bs_idx + 1, 1) + p = substr(p, bs_idx + 2) + + if ((esc_idx = index("abtvfr\"\\", esc)) != 0) { + # C-style one-character escape sequence. + out = out substr("\a\b\t\v\f\r\"\\", + esc_idx, 1) + } else if (esc == "n") { + # Uh-oh, a newline character. + # We cannot reliably put a pathname + # containing a newline into COMPREPLY, + # and the newline would create a mess. + # Skip this path. + return "" + } else { + # Must be a \nnn octal value, then. + dec = esc * 64 + \ + substr(p, 1, 1) * 8 + \ + substr(p, 2, 1) + out = out sprintf("%c", dec) + p = substr(p, 3) + } + } + # Drop closing double quote, if there is one. + # (There is not any if this is a directory, as it was + # already stripped with the trailing path components.) + if (substr(p, length(p), 1) == "\"") + out = out substr(p, 1, length(p) - 1) + else + out = out p + + return out + }' +} + +# __git_complete_index_file requires 1 argument: +# 1: the options to pass to ls-file +# +# The exception is --committable, which finds the files appropriate commit. +__git_complete_index_file () +{ + local dequoted_word pfx="" cur_ + + __git_dequote "$cur" + + case "$dequoted_word" in + ?*/*) + pfx="${dequoted_word%/*}/" + cur_="${dequoted_word##*/}" + ;; + *) + cur_="$dequoted_word" + esac + + __gitcomp_file_direct "$(__git_index_files "$1" "$pfx" "$cur_")" +} + +# Lists branches from the local repository. +# 1: A prefix to be added to each listed branch (optional). +# 2: List only branches matching this word (optional; list all branches if +# unset or empty). +# 3: A suffix to be appended to each listed branch (optional). +__git_heads () +{ + local pfx="${1-}" cur_="${2-}" sfx="${3-}" + + __git for-each-ref --format="${pfx//\%/%%}%(refname:strip=2)$sfx" \ + "refs/heads/$cur_*" "refs/heads/$cur_*/**" +} + +# Lists branches from remote repositories. +# 1: A prefix to be added to each listed branch (optional). +# 2: List only branches matching this word (optional; list all branches if +# unset or empty). +# 3: A suffix to be appended to each listed branch (optional). +__git_remote_heads () +{ + local pfx="${1-}" cur_="${2-}" sfx="${3-}" + + __git for-each-ref --format="${pfx//\%/%%}%(refname:strip=2)$sfx" \ + "refs/remotes/$cur_*" "refs/remotes/$cur_*/**" +} + +# Lists tags from the local repository. +# Accepts the same positional parameters as __git_heads() above. +__git_tags () +{ + local pfx="${1-}" cur_="${2-}" sfx="${3-}" + + __git for-each-ref --format="${pfx//\%/%%}%(refname:strip=2)$sfx" \ + "refs/tags/$cur_*" "refs/tags/$cur_*/**" +} + +# List unique branches from refs/remotes used for 'git checkout' and 'git +# switch' tracking DWIMery. +# 1: A prefix to be added to each listed branch (optional) +# 2: List only branches matching this word (optional; list all branches if +# unset or empty). +# 3: A suffix to be appended to each listed branch (optional). +__git_dwim_remote_heads () +{ + local pfx="${1-}" cur_="${2-}" sfx="${3-}" + local fer_pfx="${pfx//\%/%%}" # "escape" for-each-ref format specifiers + + # employ the heuristic used by git checkout and git switch + # Try to find a remote branch that cur_es the completion word + # but only output if the branch name is unique + __git for-each-ref --format="$fer_pfx%(refname:strip=3)$sfx" \ + --sort="refname:strip=3" \ + "refs/remotes/*/$cur_*" "refs/remotes/*/$cur_*/**" | \ + uniq -u +} + +# Lists refs from the local (by default) or from a remote repository. +# It accepts 0, 1 or 2 arguments: +# 1: The remote to list refs from (optional; ignored, if set but empty). +# Can be the name of a configured remote, a path, or a URL. +# 2: In addition to local refs, list unique branches from refs/remotes/ for +# 'git checkout's tracking DWIMery (optional; ignored, if set but empty). +# 3: A prefix to be added to each listed ref (optional). +# 4: List only refs matching this word (optional; list all refs if unset or +# empty). +# 5: A suffix to be appended to each listed ref (optional; ignored, if set +# but empty). +# +# Use __git_complete_refs() instead. +__git_refs () +{ + local i hash dir track="${2-}" + local list_refs_from=path remote="${1-}" + local format refs + local pfx="${3-}" cur_="${4-$cur}" sfx="${5-}" + local match="${4-}" + local fer_pfx="${pfx//\%/%%}" # "escape" for-each-ref format specifiers + + __git_find_repo_path + dir="$__git_repo_path" + + if [ -z "$remote" ]; then + if [ -z "$dir" ]; then + return + fi + else + if __git_is_configured_remote "$remote"; then + # configured remote takes precedence over a + # local directory with the same name + list_refs_from=remote + elif [ -d "$remote/.git" ]; then + dir="$remote/.git" + elif [ -d "$remote" ]; then + dir="$remote" + else + list_refs_from=url + fi + fi + + if [ "$list_refs_from" = path ]; then + if [[ "$cur_" == ^* ]]; then + pfx="$pfx^" + fer_pfx="$fer_pfx^" + cur_=${cur_#^} + match=${match#^} + fi + case "$cur_" in + refs|refs/*) + format="refname" + refs=("$match*" "$match*/**") + track="" + ;; + *) + for i in HEAD FETCH_HEAD ORIG_HEAD MERGE_HEAD REBASE_HEAD CHERRY_PICK_HEAD; do + case "$i" in + $match*) + if [ -e "$dir/$i" ]; then + echo "$pfx$i$sfx" + fi + ;; + esac + done + format="refname:strip=2" + refs=("refs/tags/$match*" "refs/tags/$match*/**" + "refs/heads/$match*" "refs/heads/$match*/**" + "refs/remotes/$match*" "refs/remotes/$match*/**") + ;; + esac + __git_dir="$dir" __git for-each-ref --format="$fer_pfx%($format)$sfx" \ + "${refs[@]}" + if [ -n "$track" ]; then + __git_dwim_remote_heads "$pfx" "$match" "$sfx" + fi + return + fi + case "$cur_" in + refs|refs/*) + __git ls-remote "$remote" "$match*" | \ + while read -r hash i; do + case "$i" in + *^{}) ;; + *) echo "$pfx$i$sfx" ;; + esac + done + ;; + *) + if [ "$list_refs_from" = remote ]; then + case "HEAD" in + $match*) echo "${pfx}HEAD$sfx" ;; + esac + __git for-each-ref --format="$fer_pfx%(refname:strip=3)$sfx" \ + "refs/remotes/$remote/$match*" \ + "refs/remotes/$remote/$match*/**" + else + local query_symref + case "HEAD" in + $match*) query_symref="HEAD" ;; + esac + __git ls-remote "$remote" $query_symref \ + "refs/tags/$match*" "refs/heads/$match*" \ + "refs/remotes/$match*" | + while read -r hash i; do + case "$i" in + *^{}) ;; + refs/*) echo "$pfx${i#refs/*/}$sfx" ;; + *) echo "$pfx$i$sfx" ;; # symbolic refs + esac + done + fi + ;; + esac +} + +# Completes refs, short and long, local and remote, symbolic and pseudo. +# +# Usage: __git_complete_refs [

     and , which are strings
    +#        you would put in $PS1 before and after the status string
    +#        generated by the git-prompt machinery.  e.g.
    +#        Bash: PROMPT_COMMAND='__git_ps1 "\u@\h:\w" "\\\$ "'
    +#          will show username, at-sign, host, colon, cwd, then
    +#          various status string, followed by dollar and SP, as
    +#          your prompt.
    +#        ZSH:  precmd () { __git_ps1 "%n" ":%~$ " "|%s" }
    +#          will show username, pipe, then various status string,
    +#          followed by colon, cwd, dollar and SP, as your prompt.
    +#        Optionally, you can supply a third argument with a printf
    +#        format string to finetune the output of the branch status
    +#
    +# The repository status will be displayed only if you are currently in a
    +# git repository. The %s token is the placeholder for the shown status.
    +#
    +# The prompt status always includes the current branch name.
    +#
    +# In addition, if you set GIT_PS1_SHOWDIRTYSTATE to a nonempty value,
    +# unstaged (*) and staged (+) changes will be shown next to the branch
    +# name.  You can configure this per-repository with the
    +# bash.showDirtyState variable, which defaults to true once
    +# GIT_PS1_SHOWDIRTYSTATE is enabled.
    +#
    +# You can also see if currently something is stashed, by setting
    +# GIT_PS1_SHOWSTASHSTATE to a nonempty value. If something is stashed,
    +# then a '$' will be shown next to the branch name.
    +#
    +# If you would like to see if there're untracked files, then you can set
    +# GIT_PS1_SHOWUNTRACKEDFILES to a nonempty value. If there're untracked
    +# files, then a '%' will be shown next to the branch name.  You can
    +# configure this per-repository with the bash.showUntrackedFiles
    +# variable, which defaults to true once GIT_PS1_SHOWUNTRACKEDFILES is
    +# enabled.
    +#
    +# If you would like to see the difference between HEAD and its upstream,
    +# set GIT_PS1_SHOWUPSTREAM="auto".  A "<" indicates you are behind, ">"
    +# indicates you are ahead, "<>" indicates you have diverged and "="
    +# indicates that there is no difference. You can further control
    +# behaviour by setting GIT_PS1_SHOWUPSTREAM to a space-separated list
    +# of values:
    +#
    +#     verbose       show number of commits ahead/behind (+/-) upstream
    +#     name          if verbose, then also show the upstream abbrev name
    +#     legacy        don't use the '--count' option available in recent
    +#                   versions of git-rev-list
    +#     git           always compare HEAD to @{upstream}
    +#     svn           always compare HEAD to your SVN upstream
    +#
    +# By default, __git_ps1 will compare HEAD to your SVN upstream if it can
    +# find one, or @{upstream} otherwise.  Once you have set
    +# GIT_PS1_SHOWUPSTREAM, you can override it on a per-repository basis by
    +# setting the bash.showUpstream config variable.
    +#
    +# You can change the separator between the branch name and the above
    +# state symbols by setting GIT_PS1_STATESEPARATOR. The default separator
    +# is SP.
    +#
    +# When there is an in-progress operation such as a merge, rebase,
    +# revert, cherry-pick, or bisect, the prompt will include information
    +# related to the operation, often in the form "|".
    +#
    +# When the repository has a sparse-checkout, a notification of the form
    +# "|SPARSE" will be included in the prompt.  This can be shortened to a
    +# single '?' character by setting GIT_PS1_COMPRESSSPARSESTATE, or omitted
    +# by setting GIT_PS1_OMITSPARSESTATE.
    +#
    +# If you would like to see more information about the identity of
    +# commits checked out as a detached HEAD, set GIT_PS1_DESCRIBE_STYLE
    +# to one of these values:
    +#
    +#     contains      relative to newer annotated tag (v1.6.3.2~35)
    +#     branch        relative to newer tag or branch (master~4)
    +#     describe      relative to older annotated tag (v1.6.3.1-13-gdd42c2f)
    +#     tag           relative to any older tag (v1.6.3.1-13-gdd42c2f)
    +#     default       exactly matching tag
    +#
    +# If you would like a colored hint about the current dirty state, set
    +# GIT_PS1_SHOWCOLORHINTS to a nonempty value. The colors are based on
    +# the colored output of "git status -sb" and are available only when
    +# using __git_ps1 for PROMPT_COMMAND or precmd in Bash,
    +# but always available in Zsh.
    +#
    +# If you would like __git_ps1 to do nothing in the case when the current
    +# directory is set up to be ignored by git, then set
    +# GIT_PS1_HIDE_IF_PWD_IGNORED to a nonempty value. Override this on the
    +# repository level by setting bash.hideIfPwdIgnored to "false".
    +
    +# check whether printf supports -v
    +__git_printf_supports_v=
    +printf -v __git_printf_supports_v -- '%s' yes >/dev/null 2>&1
    +
    +# stores the divergence from upstream in $p
    +# used by GIT_PS1_SHOWUPSTREAM
    +__git_ps1_show_upstream ()
    +{
    +	local key value
    +	local svn_remote svn_url_pattern count n
    +	local upstream_type=git legacy="" verbose="" name=""
    +
    +	svn_remote=()
    +	# get some config options from git-config
    +	local output="$(git config -z --get-regexp '^(svn-remote\..*\.url|bash\.showupstream)$' 2>/dev/null | tr '\0\n' '\n ')"
    +	while read -r key value; do
    +		case "$key" in
    +		bash.showupstream)
    +			GIT_PS1_SHOWUPSTREAM="$value"
    +			if [[ -z "${GIT_PS1_SHOWUPSTREAM}" ]]; then
    +				p=""
    +				return
    +			fi
    +			;;
    +		svn-remote.*.url)
    +			svn_remote[$((${#svn_remote[@]} + 1))]="$value"
    +			svn_url_pattern="$svn_url_pattern\\|$value"
    +			upstream_type=svn+git # default upstream type is SVN if available, else git
    +			;;
    +		esac
    +	done <<< "$output"
    +
    +	# parse configuration values
    +	local option
    +	for option in ${GIT_PS1_SHOWUPSTREAM}; do
    +		case "$option" in
    +		git|svn) upstream_type="$option" ;;
    +		verbose) verbose=1 ;;
    +		legacy)  legacy=1  ;;
    +		name)    name=1 ;;
    +		esac
    +	done
    +
    +	# Find our upstream type
    +	case "$upstream_type" in
    +	git)    upstream_type="@{upstream}" ;;
    +	svn*)
    +		# get the upstream from the "git-svn-id: ..." in a commit message
    +		# (git-svn uses essentially the same procedure internally)
    +		local -a svn_upstream
    +		svn_upstream=($(git log --first-parent -1 \
    +					--grep="^git-svn-id: \(${svn_url_pattern#??}\)" 2>/dev/null))
    +		if [[ 0 -ne ${#svn_upstream[@]} ]]; then
    +			svn_upstream=${svn_upstream[${#svn_upstream[@]} - 2]}
    +			svn_upstream=${svn_upstream%@*}
    +			local n_stop="${#svn_remote[@]}"
    +			for ((n=1; n <= n_stop; n++)); do
    +				svn_upstream=${svn_upstream#${svn_remote[$n]}}
    +			done
    +
    +			if [[ -z "$svn_upstream" ]]; then
    +				# default branch name for checkouts with no layout:
    +				upstream_type=${GIT_SVN_ID:-git-svn}
    +			else
    +				upstream_type=${svn_upstream#/}
    +			fi
    +		elif [[ "svn+git" = "$upstream_type" ]]; then
    +			upstream_type="@{upstream}"
    +		fi
    +		;;
    +	esac
    +
    +	# Find how many commits we are ahead/behind our upstream
    +	if [[ -z "$legacy" ]]; then
    +		count="$(git rev-list --count --left-right \
    +				"$upstream_type"...HEAD 2>/dev/null)"
    +	else
    +		# produce equivalent output to --count for older versions of git
    +		local commits
    +		if commits="$(git rev-list --left-right "$upstream_type"...HEAD 2>/dev/null)"
    +		then
    +			local commit behind=0 ahead=0
    +			for commit in $commits
    +			do
    +				case "$commit" in
    +				"<"*) ((behind++)) ;;
    +				*)    ((ahead++))  ;;
    +				esac
    +			done
    +			count="$behind	$ahead"
    +		else
    +			count=""
    +		fi
    +	fi
    +
    +	# calculate the result
    +	if [[ -z "$verbose" ]]; then
    +		case "$count" in
    +		"") # no upstream
    +			p="" ;;
    +		"0	0") # equal to upstream
    +			p="=" ;;
    +		"0	"*) # ahead of upstream
    +			p=">" ;;
    +		*"	0") # behind upstream
    +			p="<" ;;
    +		*)	    # diverged from upstream
    +			p="<>" ;;
    +		esac
    +	else # verbose, set upstream instead of p
    +		case "$count" in
    +		"") # no upstream
    +			upstream="" ;;
    +		"0	0") # equal to upstream
    +			upstream="|u=" ;;
    +		"0	"*) # ahead of upstream
    +			upstream="|u+${count#0	}" ;;
    +		*"	0") # behind upstream
    +			upstream="|u-${count%	0}" ;;
    +		*)	    # diverged from upstream
    +			upstream="|u+${count#*	}-${count%	*}" ;;
    +		esac
    +		if [[ -n "$count" && -n "$name" ]]; then
    +			__git_ps1_upstream_name=$(git rev-parse \
    +				--abbrev-ref "$upstream_type" 2>/dev/null)
    +			if [ $pcmode = yes ] && [ $ps1_expanded = yes ]; then
    +				upstream="$upstream \${__git_ps1_upstream_name}"
    +			else
    +				upstream="$upstream ${__git_ps1_upstream_name}"
    +				# not needed anymore; keep user's
    +				# environment clean
    +				unset __git_ps1_upstream_name
    +			fi
    +		fi
    +	fi
    +
    +}
    +
    +# Helper function that is meant to be called from __git_ps1.  It
    +# injects color codes into the appropriate gitstring variables used
    +# to build a gitstring. Colored variables are responsible for clearing
    +# their own color.
    +__git_ps1_colorize_gitstring ()
    +{
    +	if [[ -n ${ZSH_VERSION-} ]]; then
    +		local c_red='%F{red}'
    +		local c_green='%F{green}'
    +		local c_lblue='%F{blue}'
    +		local c_clear='%f'
    +	else
    +		# Using \[ and \] around colors is necessary to prevent
    +		# issues with command line editing/browsing/completion!
    +		local c_red='\[\e[31m\]'
    +		local c_green='\[\e[32m\]'
    +		local c_lblue='\[\e[1;34m\]'
    +		local c_clear='\[\e[0m\]'
    +	fi
    +	local bad_color=$c_red
    +	local ok_color=$c_green
    +	local flags_color="$c_lblue"
    +
    +	local branch_color=""
    +	if [ $detached = no ]; then
    +		branch_color="$ok_color"
    +	else
    +		branch_color="$bad_color"
    +	fi
    +	if [ -n "$c" ]; then
    +		c="$branch_color$c$c_clear"
    +	fi
    +	b="$branch_color$b$c_clear"
    +
    +	if [ -n "$w" ]; then
    +		w="$bad_color$w$c_clear"
    +	fi
    +	if [ -n "$i" ]; then
    +		i="$ok_color$i$c_clear"
    +	fi
    +	if [ -n "$s" ]; then
    +		s="$flags_color$s$c_clear"
    +	fi
    +	if [ -n "$u" ]; then
    +		u="$bad_color$u$c_clear"
    +	fi
    +}
    +
    +# Helper function to read the first line of a file into a variable.
    +# __git_eread requires 2 arguments, the file path and the name of the
    +# variable, in that order.
    +__git_eread ()
    +{
    +	test -r "$1" && IFS=$'\r\n' read "$2" <"$1"
    +}
    +
    +# see if a cherry-pick or revert is in progress, if the user has committed a
    +# conflict resolution with 'git commit' in the middle of a sequence of picks or
    +# reverts then CHERRY_PICK_HEAD/REVERT_HEAD will not exist so we have to read
    +# the todo file.
    +__git_sequencer_status ()
    +{
    +	local todo
    +	if test -f "$g/CHERRY_PICK_HEAD"
    +	then
    +		r="|CHERRY-PICKING"
    +		return 0;
    +	elif test -f "$g/REVERT_HEAD"
    +	then
    +		r="|REVERTING"
    +		return 0;
    +	elif __git_eread "$g/sequencer/todo" todo
    +	then
    +		case "$todo" in
    +		p[\ \	]|pick[\ \	]*)
    +			r="|CHERRY-PICKING"
    +			return 0
    +		;;
    +		revert[\ \	]*)
    +			r="|REVERTING"
    +			return 0
    +		;;
    +		esac
    +	fi
    +	return 1
    +}
    +
    +# __git_ps1 accepts 0 or 1 arguments (i.e., format string)
    +# when called from PS1 using command substitution
    +# in this mode it prints text to add to bash PS1 prompt (includes branch name)
    +#
    +# __git_ps1 requires 2 or 3 arguments when called from PROMPT_COMMAND (pc)
    +# in that case it _sets_ PS1. The arguments are parts of a PS1 string.
    +# when two arguments are given, the first is prepended and the second appended
    +# to the state string when assigned to PS1.
    +# The optional third parameter will be used as printf format string to further
    +# customize the output of the git-status string.
    +# In this mode you can request colored hints using GIT_PS1_SHOWCOLORHINTS=true
    +__git_ps1 ()
    +{
    +	# preserve exit status
    +	local exit=$?
    +	local pcmode=no
    +	local detached=no
    +	local ps1pc_start='\u@\h:\w '
    +	local ps1pc_end='\$ '
    +	local printf_format=' (%s)'
    +
    +	case "$#" in
    +		2|3)	pcmode=yes
    +			ps1pc_start="$1"
    +			ps1pc_end="$2"
    +			printf_format="${3:-$printf_format}"
    +			# set PS1 to a plain prompt so that we can
    +			# simply return early if the prompt should not
    +			# be decorated
    +			PS1="$ps1pc_start$ps1pc_end"
    +		;;
    +		0|1)	printf_format="${1:-$printf_format}"
    +		;;
    +		*)	return $exit
    +		;;
    +	esac
    +
    +	# ps1_expanded:  This variable is set to 'yes' if the shell
    +	# subjects the value of PS1 to parameter expansion:
    +	#
    +	#   * bash does unless the promptvars option is disabled
    +	#   * zsh does not unless the PROMPT_SUBST option is set
    +	#   * POSIX shells always do
    +	#
    +	# If the shell would expand the contents of PS1 when drawing
    +	# the prompt, a raw ref name must not be included in PS1.
    +	# This protects the user from arbitrary code execution via
    +	# specially crafted ref names.  For example, a ref named
    +	# 'refs/heads/$(IFS=_;cmd=sudo_rm_-rf_/;$cmd)' might cause the
    +	# shell to execute 'sudo rm -rf /' when the prompt is drawn.
    +	#
    +	# Instead, the ref name should be placed in a separate global
    +	# variable (in the __git_ps1_* namespace to avoid colliding
    +	# with the user's environment) and that variable should be
    +	# referenced from PS1.  For example:
    +	#
    +	#     __git_ps1_foo=$(do_something_to_get_ref_name)
    +	#     PS1="...stuff...\${__git_ps1_foo}...stuff..."
    +	#
    +	# If the shell does not expand the contents of PS1, the raw
    +	# ref name must be included in PS1.
    +	#
    +	# The value of this variable is only relevant when in pcmode.
    +	#
    +	# Assume that the shell follows the POSIX specification and
    +	# expands PS1 unless determined otherwise.  (This is more
    +	# likely to be correct if the user has a non-bash, non-zsh
    +	# shell and safer than the alternative if the assumption is
    +	# incorrect.)
    +	#
    +	local ps1_expanded=yes
    +	[ -z "${ZSH_VERSION-}" ] || [[ -o PROMPT_SUBST ]] || ps1_expanded=no
    +	[ -z "${BASH_VERSION-}" ] || shopt -q promptvars || ps1_expanded=no
    +
    +	local repo_info rev_parse_exit_code
    +	repo_info="$(git rev-parse --git-dir --is-inside-git-dir \
    +		--is-bare-repository --is-inside-work-tree \
    +		--short HEAD 2>/dev/null)"
    +	rev_parse_exit_code="$?"
    +
    +	if [ -z "$repo_info" ]; then
    +		return $exit
    +	fi
    +
    +	local short_sha=""
    +	if [ "$rev_parse_exit_code" = "0" ]; then
    +		short_sha="${repo_info##*$'\n'}"
    +		repo_info="${repo_info%$'\n'*}"
    +	fi
    +	local inside_worktree="${repo_info##*$'\n'}"
    +	repo_info="${repo_info%$'\n'*}"
    +	local bare_repo="${repo_info##*$'\n'}"
    +	repo_info="${repo_info%$'\n'*}"
    +	local inside_gitdir="${repo_info##*$'\n'}"
    +	local g="${repo_info%$'\n'*}"
    +
    +	if [ "true" = "$inside_worktree" ] &&
    +	   [ -n "${GIT_PS1_HIDE_IF_PWD_IGNORED-}" ] &&
    +	   [ "$(git config --bool bash.hideIfPwdIgnored)" != "false" ] &&
    +	   git check-ignore -q .
    +	then
    +		return $exit
    +	fi
    +
    +	local sparse=""
    +	if [ -z "${GIT_PS1_COMPRESSSPARSESTATE-}" ] &&
    +	   [ -z "${GIT_PS1_OMITSPARSESTATE-}" ] &&
    +	   [ "$(git config --bool core.sparseCheckout)" = "true" ]; then
    +		sparse="|SPARSE"
    +	fi
    +
    +	local r=""
    +	local b=""
    +	local step=""
    +	local total=""
    +	if [ -d "$g/rebase-merge" ]; then
    +		__git_eread "$g/rebase-merge/head-name" b
    +		__git_eread "$g/rebase-merge/msgnum" step
    +		__git_eread "$g/rebase-merge/end" total
    +		r="|REBASE"
    +	else
    +		if [ -d "$g/rebase-apply" ]; then
    +			__git_eread "$g/rebase-apply/next" step
    +			__git_eread "$g/rebase-apply/last" total
    +			if [ -f "$g/rebase-apply/rebasing" ]; then
    +				__git_eread "$g/rebase-apply/head-name" b
    +				r="|REBASE"
    +			elif [ -f "$g/rebase-apply/applying" ]; then
    +				r="|AM"
    +			else
    +				r="|AM/REBASE"
    +			fi
    +		elif [ -f "$g/MERGE_HEAD" ]; then
    +			r="|MERGING"
    +		elif __git_sequencer_status; then
    +			:
    +		elif [ -f "$g/BISECT_LOG" ]; then
    +			r="|BISECTING"
    +		fi
    +
    +		if [ -n "$b" ]; then
    +			:
    +		elif [ -h "$g/HEAD" ]; then
    +			# symlink symbolic ref
    +			b="$(git symbolic-ref HEAD 2>/dev/null)"
    +		else
    +			local head=""
    +			if ! __git_eread "$g/HEAD" head; then
    +				return $exit
    +			fi
    +			# is it a symbolic ref?
    +			b="${head#ref: }"
    +			if [ "$head" = "$b" ]; then
    +				detached=yes
    +				b="$(
    +				case "${GIT_PS1_DESCRIBE_STYLE-}" in
    +				(contains)
    +					git describe --contains HEAD ;;
    +				(branch)
    +					git describe --contains --all HEAD ;;
    +				(tag)
    +					git describe --tags HEAD ;;
    +				(describe)
    +					git describe HEAD ;;
    +				(* | default)
    +					git describe --tags --exact-match HEAD ;;
    +				esac 2>/dev/null)" ||
    +
    +				b="$short_sha..."
    +				b="($b)"
    +			fi
    +		fi
    +	fi
    +
    +	if [ -n "$step" ] && [ -n "$total" ]; then
    +		r="$r $step/$total"
    +	fi
    +
    +	local w=""
    +	local i=""
    +	local s=""
    +	local u=""
    +	local h=""
    +	local c=""
    +	local p="" # short version of upstream state indicator
    +	local upstream="" # verbose version of upstream state indicator
    +
    +	if [ "true" = "$inside_gitdir" ]; then
    +		if [ "true" = "$bare_repo" ]; then
    +			c="BARE:"
    +		else
    +			b="GIT_DIR!"
    +		fi
    +	elif [ "true" = "$inside_worktree" ]; then
    +		if [ -n "${GIT_PS1_SHOWDIRTYSTATE-}" ] &&
    +		   [ "$(git config --bool bash.showDirtyState)" != "false" ]
    +		then
    +			git diff --no-ext-diff --quiet || w="*"
    +			git diff --no-ext-diff --cached --quiet || i="+"
    +			if [ -z "$short_sha" ] && [ -z "$i" ]; then
    +				i="#"
    +			fi
    +		fi
    +		if [ -n "${GIT_PS1_SHOWSTASHSTATE-}" ] &&
    +		   git rev-parse --verify --quiet refs/stash >/dev/null
    +		then
    +			s="$"
    +		fi
    +
    +		if [ -n "${GIT_PS1_SHOWUNTRACKEDFILES-}" ] &&
    +		   [ "$(git config --bool bash.showUntrackedFiles)" != "false" ] &&
    +		   git ls-files --others --exclude-standard --directory --no-empty-directory --error-unmatch -- ':/*' >/dev/null 2>/dev/null
    +		then
    +			u="%${ZSH_VERSION+%}"
    +		fi
    +
    +		if [ -n "${GIT_PS1_COMPRESSSPARSESTATE-}" ] &&
    +		   [ "$(git config --bool core.sparseCheckout)" = "true" ]; then
    +			h="?"
    +		fi
    +
    +		if [ -n "${GIT_PS1_SHOWUPSTREAM-}" ]; then
    +			__git_ps1_show_upstream
    +		fi
    +	fi
    +
    +	local z="${GIT_PS1_STATESEPARATOR-" "}"
    +
    +	b=${b##refs/heads/}
    +	if [ $pcmode = yes ] && [ $ps1_expanded = yes ]; then
    +		__git_ps1_branch_name=$b
    +		b="\${__git_ps1_branch_name}"
    +	fi
    +
    +	# NO color option unless in PROMPT_COMMAND mode or it's Zsh
    +	if [ -n "${GIT_PS1_SHOWCOLORHINTS-}" ]; then
    +		if [ $pcmode = yes ] || [ -n "${ZSH_VERSION-}" ]; then
    +			__git_ps1_colorize_gitstring
    +		fi
    +	fi
    +
    +	local f="$h$w$i$s$u$p"
    +	local gitstring="$c$b${f:+$z$f}${sparse}$r${upstream}"
    +
    +	if [ $pcmode = yes ]; then
    +		if [ "${__git_printf_supports_v-}" != yes ]; then
    +			gitstring=$(printf -- "$printf_format" "$gitstring")
    +		else
    +			printf -v gitstring -- "$printf_format" "$gitstring"
    +		fi
    +		PS1="$ps1pc_start$gitstring$ps1pc_end"
    +	else
    +		printf -- "$printf_format" "$gitstring"
    +	fi
    +
    +	return $exit
    +}
    diff --git a/dot_oh-my-zsh/plugins/gitfast/gitfast.plugin.zsh b/dot_oh-my-zsh/plugins/gitfast/gitfast.plugin.zsh
    new file mode 100644
    index 0000000..a6db0c6
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/gitfast/gitfast.plugin.zsh
    @@ -0,0 +1,11 @@
    +# Handle $0 according to the standard:
    +# https://zdharma-continuum.github.io/Zsh-100-Commits-Club/Zsh-Plugin-Standard.html
    +0="${${ZERO:-${0:#$ZSH_ARGZERO}}:-${(%):-%N}}"
    +0="${${(M)0:#/*}:-$PWD/$0}"
    +
    +source "${0:A:h}/git-prompt.sh"
    +
    +function git_prompt_info() {
    +  dirty="$(parse_git_dirty)"
    +  __git_ps1 "${ZSH_THEME_GIT_PROMPT_PREFIX//\%/%%}%s${dirty//\%/%%}${ZSH_THEME_GIT_PROMPT_SUFFIX//\%/%%}"
    +}
    diff --git a/dot_oh-my-zsh/plugins/github/README.md b/dot_oh-my-zsh/plugins/github/README.md
    new file mode 100644
    index 0000000..5d8b625
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/github/README.md
    @@ -0,0 +1,45 @@
    +# github plugin
    +
    +This plugin supports working with GitHub from the command line. It provides a few things:
    +
    +* Sets up the `hub` wrapper and completions for the `git` command if you have [`hub`](https://github.com/github/hub) installed.
    +* Completion for the [`github` Ruby gem](https://github.com/defunkt/github-gem).
    +* Convenience functions for working with repos and URLs.
    +
    +### Functions
    +
    +* `empty_gh` - Creates a new empty repo (with a `README.md`) and pushes it to GitHub
    +* `new_gh` - Initializes an existing directory as a repo and pushes it to GitHub
    +* `exist_gh` - Takes an existing repo and pushes it to GitHub
    +
    +
    +## Installation
    +
    +[Hub](https://github.com/github/hub) needs to be installed if you want to use it. On OS X with Homebrew, this can be done with `brew install hub`. The `hub` completion definition needs to be added to your `$FPATH` before initializing OMZ.
    +
    +The [`github` Ruby gem](https://github.com/defunkt/github-gem) needs to be installed if you want to use it.
    +
    +### Configuration
    +
    +These settings affect `github`'s behavior.
    +
    +#### Environment variables
    +
    +* `$GITHUB_USER`
    +* `$GITHUB_PASSWORD`
    +
    +#### Git configuration options
    +
    +* `github.user` - GitHub username for repo operations
    +
    +See `man hub` for more details.
    +
    +### Homebrew installation note
    +
    +If you have installed `hub` using Homebrew, its completions may not be on your `$FPATH` if you are using the system `zsh`. Homebrew installs `zsh` completion definitions to `/usr/local/share/zsh/site-functions`, which will be on `$FPATH` for the Homebrew-installed `zsh`, but not for the system `zsh`. If you want it to work with the system `zsh`, add this to your `~/.zshrc` before it sources `oh-my-zsh.sh`.
    +
    +```zsh
    +if (( ! ${fpath[(I)/usr/local/share/zsh/site-functions]} )); then
    +  FPATH=/usr/local/share/zsh/site-functions:$FPATH
    +fi
    +```
    diff --git a/dot_oh-my-zsh/plugins/github/_hub b/dot_oh-my-zsh/plugins/github/_hub
    new file mode 100644
    index 0000000..209a3df
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/github/_hub
    @@ -0,0 +1,174 @@
    +#compdef hub
    +
    +# Zsh will source this file when attempting to autoload the "_hub" function,
    +# typically on the first attempt to complete the hub command.  We define two new
    +# setup helper routines (one for the zsh-distributed version, one for the
    +# git-distributed, bash-based version).  Then we redefine the "_hub" function to
    +# call "_git" after some other interception.
    +#
    +# This is pretty fragile, if you think about it.  Any number of implementation
    +# changes in the "_git" scripts could cause problems down the road.  It would be
    +# better if the stock git completions were just a bit more permissive about how
    +# it allowed third-party commands to be added.
    +
    +(( $+functions[__hub_setup_zsh_fns] )) ||
    +__hub_setup_zsh_fns () {
    +  (( $+functions[_git-alias] )) ||
    +  _git-alias () {
    +    _arguments \
    +      '-s[output shell script suitable for eval]' \
    +      '1::shell:(zsh bash csh)'
    +  }
    +
    +  (( $+functions[_git-browse] )) ||
    +  _git-browse () {
    +    _arguments \
    +      '-u[output the URL]' \
    +      '2::subpage:(wiki commits issues)'
    +  }
    +
    +  (( $+functions[_git-compare] )) ||
    +  _git-compare () {
    +    _arguments \
    +      '-u[output the URL]' \
    +      ':[start...]end range:'
    +  }
    +
    +  (( $+functions[_git-create] )) ||
    +  _git-create () {
    +    _arguments \
    +      '::name (REPOSITORY or ORGANIZATION/REPOSITORY):' \
    +      '-p[make repository private]' \
    +      '-d[description]:description' \
    +      '-h[home page]:repository home page URL:_urls'
    +  }
    +
    +  (( $+functions[_git-fork] )) ||
    +  _git-fork () {
    +    _arguments \
    +      '--no-remote[do not add a remote for the new fork]'
    +  }
    +
    +  (( $+functions[_git-pull-request] )) ||
    +  _git-pull-request () {
    +    _arguments \
    +      '-f[force (skip check for local commits)]' \
    +      '-b[base]:base ("branch", "owner\:branch", "owner/repo\:branch"):' \
    +      '-h[head]:head ("branch", "owner\:branch", "owner/repo\:branch"):' \
    +      - set1 \
    +        '-m[message]' \
    +        '-F[file]' \
    +        '--no-edit[use first commit message for pull request title/description]' \
    +        '-a[user]' \
    +        '-M[milestone]' \
    +        '-l[labels]' \
    +      - set2 \
    +        '-i[issue]:issue number:' \
    +      - set3 \
    +        '::issue-url:_urls'
    +  }
    +
    +  # stash the "real" command for later
    +  functions[_hub_orig_git_commands]=$functions[_git_commands]
    +
    +  # Replace it with our own wrapper.
    +  declare -f _git_commands >& /dev/null && unfunction _git_commands
    +  _git_commands () {
    +    local ret=1
    +    # call the original routine
    +    _call_function ret _hub_orig_git_commands
    +
    +    # Effectively "append" our hub commands to the behavior of the original
    +    # _git_commands function.  Using this wrapper function approach ensures
    +    # that we only offer the user the hub subcommands when the user is
    +    # actually trying to complete subcommands.
    +    hub_commands=(
    +      alias:'show shell instructions for wrapping git'
    +      pull-request:'open a pull request on GitHub'
    +      pr:'list or checkout a GitHub pull request'
    +      issue:'list or create a GitHub issue'
    +      release:'list or create a GitHub release'
    +      fork:'fork origin repo on GitHub'
    +      create:'create new repo on GitHub for the current project'
    +      delete:'delete a GitHub repo'
    +      browse:'browse the project on GitHub'
    +      compare:'open GitHub compare view'
    +      ci-status:'show status of GitHub checks for a commit'
    +      sync:'update local branches from upstream'
    +    )
    +    _describe -t hub-commands 'hub command' hub_commands && ret=0
    +
    +    return ret
    +  }
    +}
    +
    +(( $+functions[__hub_setup_bash_fns] )) ||
    +__hub_setup_bash_fns () {
    +  # TODO more bash-style fns needed here to complete subcommand args.  They take
    +  # the form "_git_CMD" where "CMD" is something like "pull-request".
    +
    +  # Duplicate and rename the 'list_all_commands' function
    +  eval "$(declare -f __git_list_all_commands | \
    +        sed 's/__git_list_all_commands/__git_list_all_commands_without_hub/')"
    +
    +  # Wrap the 'list_all_commands' function with extra hub commands
    +  __git_list_all_commands() {
    +    cat <<-EOF
    +alias
    +pull-request
    +pr
    +issue
    +release
    +fork
    +create
    +delete
    +browse
    +compare
    +ci-status
    +sync
    +EOF
    +    __git_list_all_commands_without_hub
    +  }
    +
    +  # Ensure cached commands are cleared
    +  __git_all_commands=""
    +}
    +
    +# redefine _hub to a much smaller function in the steady state
    +_hub () {
    +  # only attempt to intercept the normal "_git" helper functions once
    +  (( $+__hub_func_replacement_done )) ||
    +    () {
    +      # At this stage in the shell's execution the "_git" function has not yet
    +      # been autoloaded, so the "_git_commands" or "__git_list_all_commands"
    +      # functions will not be defined.  Call it now (with a bogus no-op service
    +      # to prevent premature completion) so that we can wrap them.
    +      if declare -f _git >& /dev/null ; then
    +        _hub_noop () { __hub_zsh_provided=1 }       # zsh-provided will call this one
    +        __hub_noop_main () { __hub_git_provided=1 } # git-provided will call this one
    +        local service=hub_noop
    +        _git
    +        unfunction _hub_noop
    +        unfunction __hub_noop_main
    +        service=git
    +      fi
    +
    +      if (( $__hub_zsh_provided )) ; then
    +        __hub_setup_zsh_fns
    +      elif (( $__hub_git_provided )) ; then
    +        __hub_setup_bash_fns
    +      fi
    +
    +      __hub_func_replacement_done=1
    +    }
    +
    +  # Now perform the actual completion, allowing the "_git" function to call our
    +  # replacement "_git_commands" function as needed.  Both versions expect
    +  # service=git or they will call nonexistent routines or end up in an infinite
    +  # loop.
    +  service=git
    +  declare -f _git >& /dev/null && _git
    +}
    +
    +# make sure we actually attempt to complete on the first "tab" from the user
    +_hub
    diff --git a/dot_oh-my-zsh/plugins/github/github.plugin.zsh b/dot_oh-my-zsh/plugins/github/github.plugin.zsh
    new file mode 100644
    index 0000000..79114ff
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/github/github.plugin.zsh
    @@ -0,0 +1,77 @@
    +# Set up hub wrapper for git, if it is available; https://github.com/github/hub
    +if (( $+commands[hub] )); then
    +  alias git=hub
    +fi
    +
    +# Functions #################################################################
    +
    +# Based on https://github.com/dbb/githome/blob/master/.config/zsh/functions
    +
    +# empty_gh 
    +#
    +# Use this when creating a new repo from scratch.
    +# Creates a new repo with a blank README.md in it and pushes it up to GitHub.
    +empty_gh() { # [NAME_OF_REPO]
    +  emulate -L zsh
    +  local repo=$1
    +
    +  mkdir "$repo"
    +  touch "$repo/README.md"
    +  new_gh "$repo"
    +}
    +
    +# new_gh [DIRECTORY]
    +#
    +# Use this when you have a directory that is not yet set up for git.
    +# This function will add all non-hidden files to git.
    +new_gh() { # [DIRECTORY]
    +  emulate -L zsh
    +  local repo="$1"
    +  cd "$repo" \
    +    || return
    +
    +  git init \
    +    || return
    +  # add all non-dot files
    +  print '.*'"\n"'*~' >> .gitignore
    +  git add [^.]* \
    +    || return
    +  git add -f .gitignore \
    +    || return
    +  git commit -m 'Initial commit.' \
    +    || return
    +  hub create \
    +    || return
    +  git push -u origin master \
    +    || return
    +}
    +
    +# exist_gh [DIRECTORY]
    +#
    +# Use this when you have a git repo that's ready to go and you want to add it
    +# to your GitHub.
    +exist_gh() { # [DIRECTORY]
    +  emulate -L zsh
    +  local repo=$1
    +  cd "$repo"
    +
    +  hub create \
    +    || return
    +  git push -u origin master
    +}
    +
    +# git.io "GitHub URL"
    +#
    +# Shorten GitHub url, example:
    +#   https://github.com/nvogel/dotzsh    >   https://git.io/8nU25w
    +# source: https://github.com/nvogel/dotzsh
    +# documentation: https://github.com/blog/985-git-io-github-url-shortener
    +#
    +git.io() {
    +  # emulate -L zsh
    +  # curl -i -s https://git.io -F "url=$1" | grep "Location" | cut -f 2 -d " "
    +  print -u2 ${(%):-"%F{yellow}%BThe \`git.io\` is deprecated.%b\nView the announcement made by GitHub: https://github.blog/changelog/2022-01-11-git-io-no-longer-accepts-new-urls/%f"}
    +}
    +
    +# End Functions #############################################################
    +
    diff --git a/dot_oh-my-zsh/plugins/gitignore/README.md b/dot_oh-my-zsh/plugins/gitignore/README.md
    new file mode 100644
    index 0000000..753dd31
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/gitignore/README.md
    @@ -0,0 +1,17 @@
    +# gitignore
    +
    +This plugin enables you the use of [gitignore.io](https://www.gitignore.io/) from the command line. You need an active internet connection.
    +
    +To use it, add `gitignore` to the plugins array in your zshrc file:
    +
    +```zsh
    +plugins=(... gitignore)
    +```
    +
    +## Plugin commands
    +
    +* `gi list`: List all the currently supported gitignore.io templates.
    +
    +* `gi [TEMPLATENAME]`: Show git-ignore output on the command line, e.g. `gi java` to exclude class and package files.
    +
    +* `gi [TEMPLATENAME] >> .gitignore`: Appending programming language settings to your projects .gitignore.
    diff --git a/dot_oh-my-zsh/plugins/gitignore/gitignore.plugin.zsh b/dot_oh-my-zsh/plugins/gitignore/gitignore.plugin.zsh
    new file mode 100644
    index 0000000..a687f5c
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/gitignore/gitignore.plugin.zsh
    @@ -0,0 +1,12 @@
    +function gi() { curl -fLw '\n' https://www.gitignore.io/api/"${(j:,:)@}" }
    +
    +_gitignoreio_get_command_list() {
    +  curl -sfL https://www.gitignore.io/api/list | tr "," "\n"
    +}
    +
    +_gitignoreio () {
    +  compset -P '*,'
    +  compadd -S '' `_gitignoreio_get_command_list`
    +}
    +
    +compdef _gitignoreio gi
    diff --git a/dot_oh-my-zsh/plugins/glassfish/README.md b/dot_oh-my-zsh/plugins/glassfish/README.md
    new file mode 100644
    index 0000000..1f4a8be
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/glassfish/README.md
    @@ -0,0 +1,9 @@
    +# glassfish
    +
    +The glassfish plugin adds completion for the `asadmin` utility, a command to manage
    +[Oracle GlassFish](https://docs.oracle.com/cd/E18930_01/html/821-2416/giobi.html) servers.
    +
    +To use it, add `glassfish` to the plugins array in your zshrc file:
    +```zsh
    +plugins=(... glassfish)
    +```
    diff --git a/dot_oh-my-zsh/plugins/glassfish/_asadmin b/dot_oh-my-zsh/plugins/glassfish/_asadmin
    new file mode 100644
    index 0000000..a6a7af5
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/glassfish/_asadmin
    @@ -0,0 +1,1150 @@
    +#compdef asadmin
    +#autoload
    +
    +local -a _1st_arguments
    +_1st_arguments=(
    +    "add-library:adds one or more library JAR files to GlassFish Server"
    +    "add-resources:creates the resources specified in an XML file"
    +    "apply-http-lb-changes:applies load balancer configuration changes to the load balancer"
    +    "backup-domain:performs a backup on the domain"
    +    "change-admin-password:changes the administrator password"
    +    "change-master-broker:changes the master broker in a Message Queue cluster providing JMS services for a GlassFish Server cluster."
    +    "change-master-password:changes the master password"
    +    "collect-log-files:creates a ZIP archive of all available log files"
    +    "configure-jms-cluster:configures the Message Queue cluster providing JMS services to a GlassFish Server cluster"
    +    "configure-lb-weight:sets load balancing weights for clustered instances"
    +    "configure-ldap-for-admin:configures the authentication realm named admin-realm for the given LDAP"
    +    "copy-config:copies an existing named configuration to create another configuration"
    +    "create-admin-object:adds the administered object with the specified JNDI name for a resource adapter"
    +    "create-application-ref:creates a reference to an application"
    +    "create-audit-module:adds an audit module"
    +    "create-auth-realm:adds the named authentication realm"
    +    "create-cluster:creates a GlassFish Server cluster"
    +    "create-connector-connection-pool:adds a connection pool with the specified connection pool name"
    +    "create-connector-resource:registers the connector resource with the specified JNDI name"
    +    "create-connector-security-map:creates a security map for the specified connector connection pool"
    +    "create-connector-work-security-map:creates a work security map for the specified resource adapter"
    +    "create-custom-resource:creates a custom resource"
    +    "create-domain:creates a domain"
    +    "create-file-user:creates a new file user"
    +    "create-http:sets HTTP parameters for a protocol"
    +    "create-http-health-checker:creates a health-checker for a specified load balancer configuration"
    +    "create-http-lb:creates a load balancer"
    +    "create-http-lb-config:creates a configuration for the load balancer"
    +    "create-http-lb-ref:adds an existing cluster or server instance to an existing load balancer configuration or load balancer"
    +    "create-http-listener:adds a new HTTP network listener socket"
    +    "create-http-redirect:adds a new HTTP redirect"
    +    "create-iiop-listener:adds an IIOP listener"
    +    "create-instance:creates a GlassFish Server instance"
    +    "create-jacc-provider:enables administrators to create a JACC provider that can be used by third-party authorization modules for applications running in GlassFish Server"
    +    "create-javamail-resource:creates a JavaMail session resource"
    +    "create-jdbc-connection-pool:registers a JDBC connection pool"
    +    "create-jdbc-resource:creates a JDBC resource with the specified JNDI name"
    +    "create-jms-host:creates a JMS host"
    +    "create-jms-resource:creates a JMS resource"
    +    "create-jmsdest:creates a JMS physical destination"
    +    "create-jndi-resource:registers a JNDI resource"
    +    "create-jvm-options:creates options for the Java application launcher"
    +    "create-lifecycle-module:creates a lifecycle module"
    +    "create-local-instance:creates a GlassFish Server instance on the host where the subcommand is run"
    +    "create-message-security-provider:enables administrators to create a message security provider, which specifies how SOAP messages will be secured."
    +    "create-network-listener:adds a new network listener socket"
    +    "create-node-config:creates a node that is not enabled for remote communication"
    +    "create-node-dcom:creates a node that is enabled for com munication over DCOM"
    +    "create-node-ssh:creates a node that is enabled for communication over SSH"
    +    "create-password-alias:creates a password alias"
    +    "create-profiler:creates the profiler element"
    +    "create-protocol:adds a new protocol"
    +    "create-protocol-filter:adds a new protocol filter"
    +    "create-protocol-finder:adds a new protocol finder"
    +    "create-resource-adapter-config:creates the configuration information for the connector module"
    +    "create-resource-ref:creates a reference to a resource"
    +    "create-service:configures the starting of a DAS or a GlassFish Server instance on an unattended boot"
    +    "create-ssl:creates and configures the SSL element in the selected HTTP listener, IIOP listener, or IIOP service"
    +    "create-system-properties:adds one or more system property elements that can be referenced elsewhere in the configuration."
    +    "create-threadpool:adds a thread pool"
    +    "create-transport:adds a new transport"
    +    "create-virtual-server:creates the named virtual server"
    +    "delete-admin-object:removes the administered object with the specified JNDI name."
    +    "delete-application-ref:removes a reference to an applica tion"
    +    "delete-audit-module:removes the named audit-module"
    +    "delete-auth-realm:removes the named authentication realm"
    +    "delete-cluster:deletes a GlassFish Server cluster"
    +    "delete-config:deletes an existing named configuration"
    +    "delete-connector-connection-pool:removes the specified connector connection pool"
    +    "delete-connector-resource:removes the connector resource with the specified JNDI name"
    +    "delete-connector-security-map:deletes a security map for the specified connector connection pool"
    +    "delete-connector-work-security-map:deletes a work security map for the specified resource adapter"
    +    "delete-custom-resource:removes a custom resource"
    +    "delete-domain:deletes a domain"
    +    "delete-file-user:removes the named file user"
    +    "delete-http:removes HTTP parameters from a protocol"
    +    "delete-http-health-checker:deletes the health-checker for a specified load balancer configuration"
    +    "delete-http-lb:deletes a load balancer"
    +    "delete-http-lb-config:deletes a load balancer configuration"
    +    "delete-http-lb-ref:deletes the cluster or server instance from a load balancer"
    +    "delete-http-listener:removes a network listener"
    +    "delete-http-redirect:removes an HTTP redirect"
    +    "delete-iiop-listener:removes an IIOP listener"
    +    "delete-instance:deletes a GlassFish Server instance"
    +    "delete-jacc-provider:enables administrators to delete JACC providers defined for a domain"
    +    "delete-javamail-resource:removes a JavaMail session resource"
    +    "delete-jdbc-connection-pool:removes the specified JDBC connection pool"
    +    "delete-jdbc-resource:removes a JDBC resource with the specified JNDI name"
    +    "delete-jms-host:removes a JMS host"
    +    "delete-jms-resource:removes a JMS resource"
    +    "delete-jmsdest:removes a JMS physical destination"
    +    "delete-jndi-resource:removes a JNDI resource"
    +    "delete-jvm-options:removes one or more options for the Java application launcher"
    +    "delete-lifecycle-module:removes the lifecycle module"
    +    "delete-local-instance:deletes a GlassFish Server instance on the machine where the subcommand is run"
    +    "delete-log-levels:"
    +    "delete-message-security-provider:enables administrators to delete a message security provider"
    +    "delete-network-listener:removes a network listener"
    +    "delete-node-config:deletes a node that is not enabled for remote communication"
    +    "delete-node-dcom:deletes a node that is enabled for communication over DCOM"
    +    "delete-node-ssh:deletes a node that is enabled for communication over SSH"
    +    "delete-password-alias:deletes a password alias"
    +    "delete-profiler:removes the profiler element"
    +    "delete-protocol:removes a protocol"
    +    "delete-protocol-filter:removes a protocol filter"
    +    "delete-protocol-finder:removes a protocol finder"
    +    "delete-resource-adapter-config:deletes the resource adapter configuration"
    +    "delete-resource-ref:removes a reference to a resource"
    +    "delete-ssl:deletes the SSL element in the selected HTTP listener, IIOP listener, or IIOP service"
    +    "delete-system-property:removes a system property of the domain, configuration, cluster, or server instance, one at a time"
    +    "delete-threadpool:removes a thread pool"
    +    "delete-transport:removes a transport"
    +    "delete-virtual-server:removes a virtual server"
    +    "deploy:deploys the specified component"
    +    "deploydir:deploys an exploded format of application archive"
    +    "environment variable"
    +    "disable:disables the component"
    +    "disable-http-lb-application:disables an application managed by a load balancer"
    +    "disable-http-lb-server:disables a sever or cluster managed by a load balancer"
    +    "disable-monitoring:disables monitoring for the server or for specific monitorable modules"
    +    "disable-secure-admin:disables secure admin if it is already enabled."
    +    "disable-secure-admin-internal-user:Instructs the GlassFish Server DAS and instances to not use the specified admin user to authenticate with each other and to authorize admin operations."
    +    "disable-secure-admin-principal:disables the certificate for authorizing access in secure administration."
    +    "enable:enables the component"
    +    "enable-http-lb-application:enables a previously-disabled application managed by a load balancer"
    +    "enable-http-lb-server:enables a previously disabled sever or cluster managed by a load balancer"
    +    "enable-monitoring:enables monitoring for the server or for specific monitorable modules"
    +    "enable-secure-admin:enables secure admin (if it is not already enabled), optionally changing the alias used for DAS-to-instance admin messages or the alias used for instance-to-DAS admin messages."
    +    "enable-secure-admin-internal-user:Instructs the GlassFish Server DAS and instances to use the specified admin user and the password associated with the password alias to authenticate with each other and to authorize admin operations."
    +    "enable-secure-admin-principal:Instructs GlassFish Server, when secure admin is enabled, to accept admin requests from clients identified by the specified SSL certificate."
    +    "export:marks a variable name for automatic export to the environment of subsequent commands in multimode"
    +    "export-http-lb-config:exports the load balancer configuration or load balancer to a file"
    +    "export-sync-bundle:exports the configuration data of a cluster or standalone instance to an archive file"
    +    "flush-connection-pool:reintializes all connections established in the specified connection pool"
    +    "flush-jmsdest:purges messages in a JMS destination."
    +    "freeze-transaction-service:freezes the transaction subsystem"
    +    "generate-domain-schema:"
    +    "generate-jvm-report:shows the JVM machine statistics for a given target instance"
    +    "get:gets the values of configurable or monitorable attributes"
    +    "get-client-stubs:retrieves the application JAR files needed to launch the application client."
    +    "get-health:provides information on the cluster health"
    +    "help"
    +    "asadmin:utility for performing administrative tasks for Oracle GlassFish Server"
    +    "import-sync-bundle:imports the configuration data of a clustered instance or standalone instance from an archive file"
    +    "install-node:installs GlassFish Server software on specified SSH-enabled hosts"
    +    "install-node-dcom:installs GlassFish Server software on specified DCOM-enabled hosts"
    +    "install-node-ssh:installs GlassFish Server software on specified SSH-enabled hosts"
    +    "jms-ping:checks if the JMS service is up and running"
    +    "list:lists configurable or monitorable elements"
    +    "list-admin-objects:gets all the administered objects"
    +    "list-application-refs:lists the existing application references"
    +    "list-applications:lists deployed applications"
    +    "list-audit-modules:gets all audit modules and displays them"
    +    "list-auth-realms:lists the authentication realms"
    +    "list-backups:lists all backups"
    +    "list-clusters:lists existing clusters in a domain"
    +    "list-commands:lists available commands"
    +    "list-components:lists deployed components"
    +    "list-configs:lists named configurations"
    +    "list-connector-connection-pools:lists the existing connector connection pools"
    +    "list-connector-resources:lists all connector resources"
    +    "list-connector-security-maps:lists the security maps belonging to the specified connector connection pool"
    +    "list-connector-work-security-maps:lists the work security maps belonging to the specified resource adapter"
    +    "list-containers:lists application containers"
    +    "list-custom-resources:gets all custom resources"
    +    "list-domains:lists the domains in the specified directory"
    +    "list-file-groups:lists file groups"
    +    "list-file-users:lists the file users"
    +    "list-http-lb-configs:lists load balancer configurations"
    +    "list-http-lbs:lists load balancers"
    +    "list-http-listeners:lists the existing network listeners"
    +    "list-iiop-listeners:lists the existing IIOP listeners"
    +    "list-instances:lists GlassFish Server instances in a domain"
    +    "list-jacc-providers:enables administrators to list JACC providers defined for a domain"
    +    "list-javamail-resources:lists the existing JavaMail session resources"
    +    "list-jdbc-connection-pools:lists all JDBC connection pools"
    +    "list-jdbc-resources:lists all JDBC resources"
    +    "list-jms-hosts:lists the existing JMS hosts"
    +    "list-jms-resources:lists the JMS resources"
    +    "list-jmsdest:lists the existing JMS physical destinations"
    +    "list-jndi-entries:browses and queries the JNDI tree"
    +    "list-jndi-resources:lists all existing JNDI resources"
    +    "list-jvm-options:lists options for the Java application launcher"
    +    "list-libraries:lists library JAR files on GlassFish Server"
    +    "list-lifecycle-modules:lists the lifecycle modules"
    +    "list-log-attributes:lists all logging attributes defined for a specified target in a domain"
    +    "list-log-levels:lists the loggers and their log levels"
    +    "list-message-security-providers:lists all security message providers for the given message layer"
    +    "list-modules:lists GlassFish Server modules"
    +    "list-network-listeners:lists the existing network listeners"
    +    "list-nodes:lists all GlassFish Server nodes in a domain"
    +    "list-nodes-config:lists all GlassFish Server nodes that do not support remote communication in a domain"
    +    "list-nodes-dcom:lists all GlassFish Server nodes that support communication over DCOM in a domain"
    +    "list-nodes-ssh:lists all GlassFish Server nodes that support communication over SSH in a domain"
    +    "list-password-aliases:lists all password aliases"
    +    "list-persistence-types:lists registered persistence types for HTTP sessions and SFSB instances"
    +    "list-protocol-filters:lists the existing protocol filters"
    +    "list-protocol-finders:lists the existing protocol finders"
    +    "list-protocols:lists the existing protocols"
    +    "list-resource-adapter-configs:lists the names of the current resource adapter configurations"
    +    "list-resource-refs:lists existing resource references"
    +    "list-secure-admin-internal-users:lists the user names that the GlassFish Server DAS and instances use to authenticate with each other and to authorize admin operations."
    +    "list-secure-admin-principals:lists the certificates for which GlassFish Server accepts admin requests from clients."
    +    "list-sub-components:lists EJB or servlet components in a deployed module or module of a deployed application"
    +    "list-supported-cipher-suites:enables administrators to list the cipher suites that are supported and available to a specified GlassFish Server target"
    +    "list-system-properties:lists the system properties of the domain, configuration, cluster, or server instance"
    +    "list-threadpools:lists all the thread pools"
    +    "list-timers:lists all of the persistent timers owned by server instance(s)"
    +    "list-transports:lists the existing transports"
    +    "list-virtual-servers:lists the existing virtual servers"
    +    "list-web-context-param:lists servlet contextinitialization parameters of a deployed web application or module"
    +    "list-web-env-entry:lists environment entries for a deployed web application or module"
    +    "login:logs you into a domain"
    +    "migrate-timers:moves EJB timers when a clustered instance was stopped or has crashed"
    +    "monitor:displays monitoring data for commonly used components and services"
    +    "multimode:allows multiple subcommands to be run while preserving environment settings and remaining in the asadmin utility"
    +    "ping-connection-pool:tests if a connection pool is usable"
    +    "ping-node-dcom:tests if a node that is enabled for communication over DCOM is usable"
    +    "ping-node-ssh:tests if a node that is enabled for communication over SSH is usable"
    +    "recover-transactions:manually recovers pending transactions"
    +    "redeploy:redeploys the specified component"
    +    "remove-library:removes one or more library JAR files from GlassFish Server"
    +    "restart-domain:restarts the DAS of the specified domain"
    +    "restart-instance:restarts a running GlassFish Server instance"
    +    "restart-local-instance:restarts a running GlassFish Server instance on the host where the subcommand is run"
    +    "restore-domain:restores files from backup"
    +    "rollback-transaction:rolls back the named transaction"
    +    "rotate-log:rotates the log file"
    +    "set:sets the values of configurable attributes"
    +    "set-log-attributes:sets the logging attributes for one or more loggers"
    +    "set-log-levels:sets the log level for one or more loggers"
    +    "set-web-context-param:sets a servlet context initialization parameter of a deployed web application or module"
    +    "set-web-env-entry:sets an environment entry for a deployed web application or module"
    +    "setup-ssh:sets up an SSH key on specified hosts"
    +    "show-component-status:displays the status of the deployed component"
    +    "start-cluster:starts a cluster"
    +    "start-database:starts the Java DB"
    +    "start-domain:starts the DAS of the specified domain"
    +    "start-instance:starts a GlassFish Server instance"
    +    "start-local-instance:starts a GlassFish Server instance on the host where the subcommand is run"
    +    "stop-cluster:stops a GlassFish Server cluster"
    +    "stop-database:stops the Java DB"
    +    "stop-domain:stops the Domain Administration Server of the specified domain"
    +    "stop-instance:stops a running GlassFish Server instance"
    +    "stop-local-instance:stops a GlassFish Server instance on the machine where the subcommand is run"
    +    "undeploy:removes a deployed component"
    +    "unfreeze-transaction-service:resumes all suspended transactions"
    +    "uninstall-node:uninstalls GlassFish Server software from specified hosts"
    +    "uninstall-node-dcom:uninstalls GlassFish Server software from specified DCOM-enabled hosts"
    +    "uninstall-node-ssh:uninstalls GlassFish Server software from specified SSH-enabled hosts"
    +    "unset:removes one or more variables from the multimode environment"
    +    "unset-web-context-param:unsets a servlet context initialization parameter of a deployed web application or module"
    +    "unset-web-env-entry:unsets an environment entry for a deployed web application or module"
    +    "update-connector-security-map:modifies a security map for the specified connector connection pool"
    +    "update-connector-work-security-map:modifies a work security map for the specified resource adapter"
    +    "update-file-user:updates a current file user as specified"
    +    "update-node-config:updates the configuration data of anode"
    +    "update-node-dcom:updates the configuration data of a node"
    +    "update-node-ssh:updates the configuration data of a node"
    +    "update-password-alias:updates a password alias"
    +    "uptime:returns the length of time that the DAS has been running"
    +    "validate-dcom:tests the connection over DCOM to a remote host"
    +    "validate-multicast:validates that multicast transport is available for clusters"
    +    "verify-domain-xml:verifies the content of the domain.xml file"
    +    "version:displays version information forGlassFish Server"
    +)
    +
    +_arguments '*:: :->command'
    +
    +if (( CURRENT == 1 )); then
    +    _describe -t commands "asadmin command" _1st_arguments
    +    return
    +fi
    +
    +local -a _command_args
    +case "$words[1]" in
    +    add-library)
    +        _command_args=('*:directory:_files' '--host+:' '--port+:' '--type+:type:(common ext app)')
    +        ;;
    +    add-resources)
    +        _command_args=('*:directory:_files' '--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_das_domain_standalone_instance')
    +        ;;
    +    apply-http-lb-changes)
    +        _command_args=('--host+:' '--ping+:' '--port+:')
    +        ;;
    +    backup-domain)
    +        _command_args=('--backupconfig+:' '--backupdir+:' '--description+:' '--domaindir+:' '--long+:long:(true false)')
    +        ;;
    +    change-admin-password)
    +        _command_args=('--domain_name+:' '--domaindir+:')
    +        ;;
    +    change-master-broker)
    +        _command_args=('--host+:' '--port+:')
    +        ;;
    +    change-master-password)
    +        _command_args=('--domaindir+:' '--nodedir+:' '--savemasterpassword+:savemasterpassword:(true false)')
    +        ;;
    +    collect-log-files)
    +        _command_args=('--host+:' '--port+:' '--retrieve+:retrieve:(true false)' '--target+:')
    +        ;;
    +    configure-jms-cluster)
    +        _command_args=('--clustertype+:' '--configstoretype+:' '--dburl+:' '--dbuser+:' '--dbvendor+:' '--host+:' '--jmsdbpassword+:' '--messagestoretype+:' '--port+:' '--property+:')
    +        ;;
    +    configure-lb-weight)
    +        _command_args=('--cluster+:cluster:_asadmin_clusters' '--host+:' '--port+:')
    +        ;;
    +    configure-ldap-for-admin)
    +        _command_args=('--basedn+:' '--host+:' '--ldap-group+:' '--port+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance' '--url+:')
    +        ;;
    +    copy-config)
    +        _command_args=('--host+:' '--port+:' '--systemproperties+:')
    +        ;;
    +    create-admin-object)
    +        _command_args=('--classname+:' '--description+:' '--enabled+:enabled:(true false)' '--host+:' '--port+:' '--property+:' '--raname+:' '--restype+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    create-application-ref)
    +        _command_args=('--enabled+:enabled:(true false)' '--host+:' '--lbenabled+:lbenabled:(true false)' '--port+:' '--target+:target:_asadmin_targets_cluster_das_standalone_instance' '--virtualservers+:')
    +        ;;
    +    create-audit-module)
    +        _command_args=('--classname+:' '--host+:' '--port+:' '--property+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    create-auth-realm)
    +        _command_args=('--classname+:' '--host+:' '--port+:' '--property+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    create-connector-connection-pool)
    +        _command_args=('--associatewiththread+:associatewiththread:(true false)' '--connectiondefinition+:' '--creationretryattempts+:' '--creationretryinterval+:' '--description+:' '--failconnection+:failconnection:(true false)' '--host+:' '--idletimeout+:' '--isconnectvalidatereq+:isconnectvalidatereq:(true false)' '--lazyconnectionassociation+:lazyconnectionassociation:(true false)' '--lazyconnectionenlistment+:lazyconnectionenlistment:(true false)' '--leakreclaim+:leakreclaim:(true false)' '--leaktimeout+:' '--matchconnections+:matchconnections:(true false)' '--maxconnectionusagecount+:' '--maxpoolsize+:' '--maxwait+:' '--ping+:ping:(true false)' '--pooling+:pooling:(true false)' '--poolresize+:' '--port+:' '--property+:' '--raname+:' '--steadypoolsize+:' '--target+:' '--transactionsupport+:transactionsupport:(XATransaction LocalTransaction NoTransaction)' '--validateatmostonceperiod+:')
    +        ;;
    +    create-connector-resource)
    +        _command_args=('--description+:' '--enabled+:enabled:(true false)' '--host+:' '--objecttype+:' '--poolname+:' '--port+:' '--property+:' '--target+:target:_asadmin_targets_cluster_das_domain_standalone_instance')
    +        ;;
    +    create-connector-security-map)
    +        _command_args=('--host+:' '--mappedpassword+:' '--mappedusername+:' '--poolname+:' '--port+:' '--principals+:' '--target+:' '--usergroups+:')
    +        ;;
    +    create-connector-work-security-map)
    +        _command_args=('--description+:' '--groupsmap+:' '--host+:' '--port+:' '--principalsmap+:' '--raname+:')
    +        ;;
    +    create-custom-resource)
    +        _command_args=('--description+:' '--enabled+:enabled:(true false)' '--factoryclass+:' '--host+:' '--port+:' '--property+:' '--restype+:' '--target+:target:_asadmin_targets_cluster_das_domain_standalone_instance')
    +        ;;
    +    create-domain)
    +        _command_args=('--adminport+:' '--checkports+:checkports:(true false)' '--domaindir+:' '--domainproperties+:' '--instanceport+:' '--keytooloptions+:' '--nopassword+:nopassword:(true false)' '--portbase+:' '--profile+:' '--savelogin+:savelogin:(true false)' '--savemasterpassword+:savemasterpassword:(true false)' '--template+:' '--usemasterpassword+:usemasterpassword:(true false)')
    +        ;;
    +    create-file-user)
    +        _command_args=('--authrealmname+:' '--groups+:' '--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance' '--userpassword+:')
    +        ;;
    +    create-http)
    +        _command_args=('--default-virtual-server+:' '--dns-lookup-enabled+:dns-lookup-enabled:(true false)' '--host+:' '--max-connection+:' '--port+:' '--request-timeout-seconds+:' '--servername+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance' '--timeout-seconds+:' '--xpowered+:xpowered:(true false)')
    +        ;;
    +    create-http-health-checker)
    +        _command_args=('--config+:' '--host+:' '--interval+:' '--port+:' '--timeout+:' '--url+:')
    +        ;;
    +    create-http-lb)
    +        _command_args=('--autoapplyenabled+:autoapplyenabled:(true false)' '--devicehost+:' '--deviceport+:' '--healthcheckerinterval+:' '--healthcheckertimeout+:' '--healthcheckerurl+:' '--host+:' '--httpsrouting+:httpsrouting:(true false)' '--lbenableallapplications+:' '--lbenableallinstances+:' '--lbpolicy+:' '--lbpolicymodule+:' '--lbweight+:' '--monitor+:monitor:(true false)' '--port+:' '--property+:' '--reloadinterval+:' '--responsetimeout+:' '--routecookie+:routecookie:(true false)' '--sslproxyhost+:' '--sslproxyport+:' '--target+:target:_asadmin_targets_cluster_standalone_instance')
    +        ;;
    +    create-http-lb-ref)
    +        _command_args=('--config+:' '--healthcheckerinterval+:' '--healthcheckertimeout+:' '--healthcheckerurl+:' '--host+:' '--lbenableallapplications+:' '--lbenableallinstances+:' '--lbname+:' '--lbpolicy+:' '--lbpolicymodule+:' '--lbweight+:' '--port+:')
    +        ;;
    +    create-http-listener)
    +        _command_args=('--acceptorthreads+:' '--default-virtual-server+:' '--defaultvs+:' '--enabled+:enabled:(true false)' '--host+:' '--listeneraddress+:' '--listenerport+:' '--port+:' '--redirectport+:' '--secure+:secure:(true false)' '--securityenabled+:securityenabled:(true false)' '--servername+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance' '--xpowered+:xpowered:(true false)')
    +        ;;
    +    create-http-redirect)
    +        _command_args=('--host+:' '--port+:' '--redirect-port+:' '--secure-redirect+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    create-iiop-listener)
    +        _command_args=('--enabled+:enabled:(true false)' '--host+:' '--iiopport+:' '--listeneraddress+:' '--port+:' '--property+:' '--securityenabled+:securityenabled:(true false)' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    create-instance)
    +        _command_args=('--checkports+:checkports:(true false)' '--cluster+:cluster:_asadmin_clusters' '--config+:' '--host+:' '--lbenabled+:lbenabled:(true false)' '--node+:node:_asadmin_nodes' '--port+:' '--portbase+:' '--systemproperties+:' '--terse+:terse:(true false)')
    +        ;;
    +    create-jacc-provider)
    +        _command_args=('--host+:' '--policyconfigfactoryclass+:' '--policyproviderclass+:' '--port+:' '--property+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    create-javamail-resource)
    +        _command_args=('--debug+:debug:(true false)' '--description+:' '--enabled+:enabled:(true false)' '--fromaddress+:' '--host+:' '--mailhost+:' '--mailuser+:' '--port+:' '--property+:' '--storeprotocol+:' '--storeprotocolclass+:' '--target+:target:_asadmin_targets_cluster_das_domain_standalone_instance' '--transprotocol+:' '--transprotocolclass+:')
    +        ;;
    +    create-jdbc-connection-pool)
    +        _command_args=('--allownoncomponentcallers+:allownoncomponentcallers:(true false)' '--associatewiththread+:associatewiththread:(true false)' '--creationretryattempts+:' '--creationretryinterval+:' '--datasourceclassname+:' '--description+:' '--driverclassname+:' '--failconnection+:failconnection:(true false)' '--host+:' '--idletimeout+:' '--initsql+:' '--isconnectvalidatereq+:isconnectvalidatereq:(true false)' '--isisolationguaranteed+:isisolationguaranteed:(true false)' '--isolationlevel+:' '--lazyconnectionassociation+:lazyconnectionassociation:(true false)' '--lazyconnectionenlistment+:lazyconnectionenlistment:(true false)' '--leakreclaim+:leakreclaim:(true false)' '--leaktimeout+:' '--matchconnections+:matchconnections:(true false)' '--maxconnectionusagecount+:' '--maxpoolsize+:' '--maxwait+:' '--nontransactionalconnections+:nontransactionalconnections:(true false)' '--ping+:ping:(true false)' '--pooling+:pooling:(true false)' '--poolresize+:' '--port+:' '--property+:' '--restype+:restype:(javax.sql.DataSource javax.sql.XADataSource javax.sql.ConnectionPoolDataSource java.sql.Driver)' '--sqltracelisteners+:' '--statementcachesize+:' '--statementleakreclaim+:statementleakreclaim:(true false)' '--statementleaktimeout+:' '--statementtimeout+:' '--steadypoolsize+:' '--target+:' '--validateatmostonceperiod+:' '--validationclassname+:' '--validationmethod+:validationmethod:(auto-commit meta-data table custom-validation)' '--validationtable+:' '--wrapjdbcobjects+:wrapjdbcobjects:(true false)')
    +        ;;
    +    create-jdbc-resource)
    +        _command_args=('--connectionpoolid+:' '--description+:' '--enabled+:enabled:(true false)' '--host+:' '--port+:' '--property+:' '--target+:target:_asadmin_targets_cluster_das_domain_standalone_instance')
    +        ;;
    +    create-jms-host)
    +        _command_args=('--host+:' '--mqhost+:' '--mqpassword+:' '--mqport+:' '--mquser+:' '--port+:' '--property+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    create-jms-resource)
    +        _command_args=('--description+:' '--enabled+:enabled:(true false)' '--host+:' '--port+:' '--property+:' '--restype+:' '--target+:target:_asadmin_targets_cluster_das_domain_standalone_instance')
    +        ;;
    +    create-jmsdest)
    +        _command_args=('--desttype+:' '--host+:' '--port+:' '--property+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    create-jndi-resource)
    +        _command_args=('--description+:' '--enabled+:enabled:(true false)' '--factoryclass+:' '--host+:' '--jndilookupname+:' '--port+:' '--property+:' '--restype+:' '--target+:target:_asadmin_targets_cluster_das_domain_standalone_instance')
    +        ;;
    +    create-jvm-options)
    +        _command_args=('--host+:' '--port+:' '--profiler+:profiler:(true false)' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    create-lifecycle-module)
    +        _command_args=('--classname+:' '--classpath+:' '--description+:' '--enabled+:enabled:(true false)' '--failurefatal+:failurefatal:(true false)' '--host+:' '--loadorder+:' '--port+:' '--property+:' '--target+:target:_asadmin_targets_cluster_das_domain_standalone_instance')
    +        ;;
    +    create-local-instance)
    +        _command_args=('--checkports+:checkports:(true false)' '--cluster+:cluster:_asadmin_clusters' '--config+:' '--lbenabled+:lbenabled:(true false)' '--node+:node:_asadmin_nodes' '--nodedir+:' '--portbase+:' '--savemasterpassword+:savemasterpassword:(true false)' '--systemproperties+:' '--usemasterpassword+:usemasterpassword:(true false)')
    +        ;;
    +    create-message-security-provider)
    +        _command_args=('--classname+:' '--host+:' '--isdefaultprovider+:isdefaultprovider:(true false)' '--layer+:layer:(SOAP HttpServlet)' '--port+:' '--property+:' '--providertype+:providertype:(client server client-server)' '--requestauthrecipient+:' '--requestauthsource+:' '--responseauthrecipient+:' '--responseauthsource+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    create-network-listener)
    +        _command_args=('--address+:' '--enabled+:enabled:(true false)' '--host+:' '--jkenabled+:jkenabled:(true false)' '--listenerport+:' '--port+:' '--protocol+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance' '--threadpool+:' '--transport+:')
    +        ;;
    +    create-node-config)
    +        _command_args=('--host+:' '--installdir+:' '--nodedir+:' '--nodehost+:' '--port+:')
    +        ;;
    +    create-node-dcom)
    +        _command_args=('--archive+:' '--force+:force:(true false)' '--host+:' '--install+:install:(true false)' '--installdir+:' '--nodedir+:' '--nodehost+:' '--port+:' '--windowsdomain+:' '--windowspassword+:' '--windowsuser+:')
    +        ;;
    +    create-node-ssh)
    +        _command_args=('--archive+:' '--force+:force:(true false)' '--host+:' '--install+:install:(true false)' '--installdir+:' '--nodedir+:' '--nodehost+:' '--port+:' '--sshkeyfile+:' '--sshkeypassphrase+:' '--sshpassword+:' '--sshport+:' '--sshuser+:')
    +        ;;
    +    create-password-alias)
    +        _command_args=('--aliaspassword+:' '--host+:' '--port+:')
    +        ;;
    +    create-profiler)
    +        _command_args=('--classpath+:' '--enabled+:enabled:(true false)' '--host+:' '--nativelibrarypath+:' '--port+:' '--property+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    create-protocol)
    +        _command_args=('--host+:' '--port+:' '--securityenabled+:securityenabled:(true false)' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    create-protocol-filter)
    +        _command_args=('--classname+:' '--host+:' '--port+:' '--protocol+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    create-protocol-finder)
    +        _command_args=('--classname+:' '--host+:' '--port+:' '--protocol+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance' '--targetprotocol+:')
    +        ;;
    +    create-resource-adapter-config)
    +        _command_args=('--host+:' '--objecttype+:' '--port+:' '--property+:' '--target+:' '--threadpoolid+:')
    +        ;;
    +    create-resource-ref)
    +        _command_args=('--enabled+:enabled:(true false)' '--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_das_standalone_instance')
    +        ;;
    +    create-service)
    +        _command_args=('*:instances:_asadmin_instances' '--domaindir+:domaindir:directory:_files' '--dry-run+:dry-run:(true false)' '--force+:force:(true false)' '--name+:' '--node+:node:_asadmin_nodes' '--nodedir+:' '--serviceproperties+:' '--serviceuser+:')
    +        ;;
    +    create-ssl)
    +        _command_args=('--certname+:' '--clientauthenabled+:clientauthenabled:(true false)' '--host+:' '--port+:' '--ssl2ciphers+:' '--ssl2enabled+:ssl2enabled:(true false)' '--ssl3enabled+:ssl3enabled:(true false)' '--ssl3tlsciphers+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance' '--tlsenabled+:tlsenabled:(true false)' '--tlsrollbackenabled+:tlsrollbackenabled:(true false)' '--type+:type:(network-listener http-listener iiop-listener iiop-service jmx-connector)')
    +        ;;
    +    create-system-properties)
    +        _command_args=('--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_clustered_instance_config_das_domain_standalone_instance')
    +        ;;
    +    create-threadpool)
    +        _command_args=('--host+:' '--idletimeout+:' '--maxqueuesize+:' '--maxthreadpoolsize+:' '--minthreadpoolsize+:' '--port+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance' '--workqueues+:')
    +        ;;
    +    create-transport)
    +        _command_args=('--acceptorthreads+:' '--buffersizebytes+:' '--bytebuffertype+:' '--classname+:' '--displayconfiguration+:displayconfiguration:(true false)' '--enablesnoop+:enablesnoop:(true false)' '--host+:' '--idlekeytimeoutseconds+:' '--maxconnectionscount+:' '--port+:' '--readtimeoutmillis+:' '--selectionkeyhandler+:' '--selectorpolltimeoutmillis+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance' '--tcpnodelay+:tcpnodelay:(true false)' '--writetimeoutmillis+:')
    +        ;;
    +    create-virtual-server)
    +        _command_args=('--defaultwebmodule+:' '--host+:' '--hosts+:' '--httplisteners+:' '--logfile+:' '--networklisteners+:' '--port+:' '--property+:' '--state+:state:(on off disabled)' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    delete-admin-object)
    +        _command_args=('--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    delete-application-ref)
    +        _command_args=('--cascade+:cascade:(true false)' '--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_das_standalone_instance')
    +        ;;
    +    delete-audit-module)
    +        _command_args=('--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    delete-auth-realm)
    +        _command_args=('--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    delete-config)
    +        _command_args=('--host+:' '--port+:')
    +        ;;
    +    delete-connector-connection-pool)
    +        _command_args=('--cascade+:cascade:(true false)' '--host+:' '--port+:' '--target+:')
    +        ;;
    +    delete-connector-resource)
    +        _command_args=('--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_das_domain_standalone_instance')
    +        ;;
    +    delete-connector-security-map)
    +        _command_args=('--host+:' '--poolname+:' '--port+:' '--target+:')
    +        ;;
    +    delete-connector-work-security-map)
    +        _command_args=('--host+:' '--port+:' '--raname+:')
    +        ;;
    +    delete-custom-resource)
    +        _command_args=('--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_das_domain_standalone_instance')
    +        ;;
    +    delete-domain)
    +        _command_args=('--domaindir+:')
    +        ;;
    +    delete-file-user)
    +        _command_args=('--authrealmname+:' '--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    delete-http)
    +        _command_args=('--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    delete-http-health-checker)
    +        _command_args=('--config+:' '--host+:' '--port+:')
    +        ;;
    +    delete-http-lb-ref)
    +        _command_args=('--config+:' '--force+:' '--host+:' '--lbname+:' '--port+:')
    +        ;;
    +    delete-http-listener)
    +        _command_args=('--host+:' '--port+:' '--secure+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    delete-http-redirect)
    +        _command_args=('--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    delete-iiop-listener)
    +        _command_args=('--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    delete-instance)
    +        _command_args=('*:instances:_asadmin_instances' '--host+:' '--port+:' '--terse+:terse:(true false)')
    +        ;;
    +    delete-jacc-provider)
    +        _command_args=('--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    delete-javamail-resource)
    +        _command_args=('--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_das_domain_standalone_instance')
    +        ;;
    +    delete-jdbc-connection-pool)
    +        _command_args=('--cascade+:cascade:(true false)' '--host+:' '--port+:' '--target+:')
    +        ;;
    +    delete-jdbc-resource)
    +        _command_args=('--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_das_domain_standalone_instance')
    +        ;;
    +    delete-jms-host)
    +        _command_args=('--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    delete-jms-resource)
    +        _command_args=('--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_das_domain_standalone_instance')
    +        ;;
    +    delete-jmsdest)
    +        _command_args=('--desttype+:' '--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    delete-jndi-resource)
    +        _command_args=('--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_das_domain_standalone_instance')
    +        ;;
    +    delete-jvm-options)
    +        _command_args=('--host+:' '--port+:' '--profiler+:profiler:(true false)' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    delete-lifecycle-module)
    +        _command_args=('--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_das_domain_standalone_instance')
    +        ;;
    +    delete-local-instance)
    +        _command_args=('*:instances:_asadmin_instances' '--node+:node:_asadmin_nodes' '--nodedir+:')
    +        ;;
    +    delete-log-levels)
    +        _command_args=('--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    delete-message-security-provider)
    +        _command_args=('--host+:' '--layer+:' '--port+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    delete-network-listener)
    +        _command_args=('--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    delete-node-config)
    +        _command_args=('*:nodes:_asadmin_nodes_config' '--host+:' '--port+:')
    +        ;;
    +    delete-node-dcom)
    +        _command_args=('*:nodes:_asadmin_nodes_dcom' '--force+:force:(true false)' '--host+:' '--port+:' '--uninstall+:uninstall:(true false)')
    +        ;;
    +    delete-node-ssh)
    +        _command_args=('*:nodes:_asadmin_nodes_ssh' '--force+:force:(true false)' '--host+:' '--port+:' '--uninstall+:uninstall:(true false)')
    +        ;;
    +    delete-password-alias)
    +        _command_args=('--host+:' '--port+:')
    +        ;;
    +    delete-profiler)
    +        _command_args=('--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    delete-protocol)
    +        _command_args=('--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    delete-protocol-filter)
    +        _command_args=('--host+:' '--port+:' '--protocol+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    delete-protocol-finder)
    +        _command_args=('--host+:' '--port+:' '--protocol+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    delete-resource-adapter-config)
    +        _command_args=('--host+:' '--port+:' '--target+:')
    +        ;;
    +    delete-resource-ref)
    +        _command_args=('--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_das_standalone_instance')
    +        ;;
    +    delete-ssl)
    +        _command_args=('--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance' '--type+:type:(network-listener http-listener iiop-listener iiop-service jmx-connector)')
    +        ;;
    +    delete-system-property)
    +        _command_args=('--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_clustered_instance_config_das_domain_standalone_instance')
    +        ;;
    +    delete-threadpool)
    +        _command_args=('--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    delete-transport)
    +        _command_args=('--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    delete-virtual-server)
    +        _command_args=('--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    deploy)
    +        _command_args=('*:directory:_files' '--asyncreplication+:asyncreplication:(true false)' '--availabilityenabled+:availabilityenabled:(true false)' '--contextroot+:' '--createtables+:createtables:(true false)' '--dbvendorname+:' '--deploymentplan+:deploymentplan:directory:_files' '--description+:' '--dropandcreatetables+:dropandcreatetables:(true false)' '--enabled+:enabled:(true false)' '--force+:force:(true false)' '--generatermistubs+:generatermistubs:(true false)' '--host+:' '--isredeploy+:isredeploy:(true false)' '--keepfailedstubs+:keepfailedstubs:(true false)' '--keepreposdir+:keepreposdir:(true false)' '--keepstate+:keepstate:(true false)' '--lbenabled+:lbenabled:(true false)' '--libraries+:' '--logreportederrors+:logreportederrors:(true false)' '--name+:' '--port+:' '--precompilejsp+:precompilejsp:(true false)' '--properties+:' '--property+:' '--retrieve+:' '--target+:target:_asadmin_targets_cluster_das_domain_standalone_instance' '--type+:' '--uniquetablenames+:uniquetablenames:(true false)' '--verify+:verify:(true false)' '--virtualservers+:')
    +        ;;
    +    deploydir)
    +        _command_args=('*:directory:_files' '--asyncreplication+:asyncreplication:(true false)' '--availabilityenabled+:availabilityenabled:(true false)' '--contextroot+:' '--createtables+:createtables:(true false)' '--dbvendorname+:' '--deploymentplan+:deploymentplan:directory:_files' '--description+:' '--dropandcreatetables+:dropandcreatetables:(true false)' '--enabled+:enabled:(true false)' '--force+:force:(true false)' '--generatermistubs+:generatermistubs:(true false)' '--host+:' '--isredeploy+:isredeploy:(true false)' '--keepfailedstubs+:keepfailedstubs:(true false)' '--keepreposdir+:keepreposdir:(true false)' '--keepstate+:keepstate:(true false)' '--lbenabled+:lbenabled:(true false)' '--libraries+:' '--logreportederrors+:logreportederrors:(true false)' '--name+:' '--port+:' '--precompilejsp+:precompilejsp:(true false)' '--properties+:' '--property+:' '--retrieve+:' '--target+:target:_asadmin_targets_cluster_das_domain_standalone_instance' '--type+:' '--uniquetablenames+:uniquetablenames:(true false)' '--verify+:verify:(true false)' '--virtualservers+:')
    +        ;;
    +    disable)
    +        _command_args=('--cascade+:cascade:(true false)' '--droptables+:droptables:(true false)' '--host+:' '--isredeploy+:isredeploy:(true false)' '--isundeploy+:isundeploy:(true false)' '--keepreposdir+:keepreposdir:(true false)' '--keepstate+:keepstate:(true false)' '--port+:' '--properties+:' '--target+:target:_asadmin_targets_cluster_clustered_instance_das_domain_standalone_instance')
    +        ;;
    +    disable-http-lb-application)
    +        _command_args=('--host+:' '--name+:' '--port+:' '--timeout+:')
    +        ;;
    +    disable-http-lb-server)
    +        _command_args=('--host+:' '--port+:' '--timeout+:')
    +        ;;
    +    disable-monitoring)
    +        _command_args=('--host+:' '--modules+:' '--port+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    disable-secure-admin)
    +        _command_args=('--host+:' '--port+:')
    +        ;;
    +    enable)
    +        _command_args=('--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_clustered_instance_das_domain_standalone_instance')
    +        ;;
    +    enable-http-lb-application)
    +        _command_args=('--host+:' '--name+:' '--port+:')
    +        ;;
    +    enable-http-lb-server)
    +        _command_args=('--host+:' '--port+:')
    +        ;;
    +    enable-monitoring)
    +        _command_args=('--dtrace+:dtrace:(true false)' '--host+:' '--mbean+:mbean:(true false)' '--modules+:' '--options+:' '--pid+:' '--port+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    enable-secure-admin)
    +        _command_args=('--adminalias+:' '--host+:' '--instancealias+:' '--port+:')
    +        ;;
    +    export-http-lb-config)
    +        _command_args=('--config+:' '--host+:' '--lbname+:' '--lbtargets+:' '--port+:' '--property+:' '--retrievefile+:retrievefile:(true false)')
    +        ;;
    +    export-sync-bundle)
    +        _command_args=('--host+:' '--port+:' '--retrieve+:retrieve:(true false)' '--target+:')
    +        ;;
    +    flush-connection-pool)
    +        _command_args=('--appname+:' '--host+:' '--modulename+:' '--port+:')
    +        ;;
    +    flush-jmsdest)
    +        _command_args=('--desttype+:' '--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    freeze-transaction-service)
    +        _command_args=('--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_clustered_instance_config_das_standalone_instance')
    +        ;;
    +    generate-domain-schema)
    +        _command_args=('--format+:' '--host+:' '--port+:' '--showdeprecated+:showdeprecated:(true false)' '--showsubclasses+:showsubclasses:(true false)')
    +        ;;
    +    generate-jvm-report)
    +        _command_args=('--host+:' '--port+:' '--target+:target:_asadmin_targets_clustered_instance_das_standalone_instance' '--type+:type:(summary thread class memory log)')
    +        ;;
    +    get)
    +        _command_args=('--host+:' '--monitor+:monitor:(true false)' '--port+:')
    +        ;;
    +    get-client-stubs)
    +        _command_args=('--appname+:' '--host+:' '--port+:')
    +        ;;
    +    get-health)
    +        _command_args=('--host+:' '--port+:')
    +        ;;
    +    help)
    +        _describe -t help-commands "asadmin help command" _1st_arguments
    +    ;;
    +    import-sync-bundle)
    +        _command_args=('--instance+:' '--node+:node:_asadmin_nodes' '--nodedir+:')
    +        ;;
    +    install-node)
    +        _command_args=('--archive+:' '--create+:create:(true false)' '--force+:force:(true false)' '--installdir+:' '--save+:save:(true false)' '--sshkeyfile+:' '--sshport+:' '--sshuser+:')
    +        ;;
    +    install-node-dcom)
    +        _command_args=('--archive+:' '--create+:create:(true false)' '--force+:force:(true false)' '--installdir+:' '--save+:save:(true false)' '--windowsdomain+:' '--windowsuser+:')
    +        ;;
    +    install-node-ssh)
    +        _command_args=('--archive+:' '--create+:create:(true false)' '--force+:force:(true false)' '--installdir+:' '--save+:save:(true false)' '--sshkeyfile+:' '--sshport+:' '--sshuser+:')
    +        ;;
    +    jms-ping)
    +        _command_args=('--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_clustered_instance_config_das_standalone_instance')
    +        ;;
    +    list)
    +        _command_args=('--host+:' '--monitor+:monitor:(true false)' '--port+:')
    +        ;;
    +    list-admin-objects)
    +        _command_args=('*:targets:_asadmin_targets_cluster_clustered_instance_config_das_standalone_instance' '--host+:' '--port+:')
    +        ;;
    +    list-application-refs)
    +        _command_args=('*:targets:_asadmin_targets_cluster_das_standalone_instance' '--host+:' '--long+:long:(true false)' '--port+:' '--terse+:terse:(true false)')
    +        ;;
    +    list-applications)
    +        _command_args=('*:targets:_asadmin_targets_cluster_das_domain_standalone_instance' '--host+:' '--long+:long:(true false)' '--port+:' '--resources+:resources:(true false)' '--subcomponents+:subcomponents:(true false)' '--terse+:terse:(true false)' '--type+:')
    +        ;;
    +    list-audit-modules)
    +        _command_args=('*:targets:_asadmin_targets_cluster_clustered_instance_config_das_standalone_instance' '--host+:' '--port+:')
    +        ;;
    +    list-auth-realms)
    +        _command_args=('*:targets:_asadmin_targets_cluster_clustered_instance_config_das_standalone_instance' '--host+:' '--port+:')
    +        ;;
    +    list-backups)
    +        _command_args=('--backupconfig+:' '--backupdir+:' '--domaindir+:' '--long+:long:(true false)')
    +        ;;
    +    list-clusters)
    +        _command_args=('--host+:' '--port+:')
    +        ;;
    +    list-commands)
    +        _command_args=('--localonly+:localonly:(true false)' '--remoteonly+:remoteonly:(true false)')
    +        ;;
    +    list-components)
    +        _command_args=('*:targets:_asadmin_targets_cluster_das_domain_standalone_instance' '--host+:' '--long+:long:(true false)' '--port+:' '--resources+:resources:(true false)' '--subcomponents+:subcomponents:(true false)' '--terse+:terse:(true false)' '--type+:')
    +        ;;
    +    list-configs)
    +        _command_args=('*:targets:_asadmin_targets_cluster_clustered_instance_config_das_domain_standalone_instance' '--host+:' '--port+:')
    +        ;;
    +    list-connector-connection-pools)
    +        _command_args=('--host+:' '--port+:')
    +        ;;
    +    list-connector-resources)
    +        _command_args=('*:targets:_asadmin_targets_cluster_clustered_instance_das_domain_standalone_instance' '--host+:' '--port+:')
    +        ;;
    +    list-connector-security-maps)
    +        _command_args=('--host+:' '--long+:long:(true false)' '--port+:' '--securitymap+:' '--target+:target:_asadmin_targets_cluster_clustered_instance_das_domain_standalone_instance')
    +        ;;
    +    list-connector-work-security-maps)
    +        _command_args=('--host+:' '--port+:' '--securitymap+:')
    +        ;;
    +    list-containers)
    +        _command_args=('--host+:' '--port+:')
    +        ;;
    +    list-custom-resources)
    +        _command_args=('*:targets:_asadmin_targets_cluster_clustered_instance_das_domain_standalone_instance' '--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_clustered_instance_das_domain_standalone_instance')
    +        ;;
    +    list-descriptors)
    +        _command_args=('--host+:' '--port+:')
    +        ;;
    +    list-domains)
    +        _command_args=('--domaindir+:')
    +        ;;
    +    list-file-groups)
    +        _command_args=('--authrealmname+:' '--host+:' '--name+:' '--port+:')
    +        ;;
    +    list-file-users)
    +        _command_args=('*:targets:_asadmin_targets_cluster_clustered_instance_config_das_standalone_instance' '--authrealmname+:' '--host+:' '--port+:')
    +        ;;
    +    list-http-lb-configs)
    +        _command_args=('--host+:' '--port+:')
    +        ;;
    +    list-http-listeners)
    +        _command_args=('*:targets:_asadmin_targets_cluster_config_das_standalone_instance' '--host+:' '--long+:long:(true false)' '--port+:')
    +        ;;
    +    list-iiop-listeners)
    +        _command_args=('*:targets:_asadmin_targets_cluster_clustered_instance_config_das_domain_standalone_instance' '--host+:' '--port+:')
    +        ;;
    +    list-instances)
    +        _command_args=('--host+:' '--long+:long:(true false)' '--nostatus+:nostatus:(true false)' '--port+:' '--standaloneonly+:standaloneonly:(true false)' '--timeoutmsec+:')
    +        ;;
    +    list-jacc-providers)
    +        _command_args=('*:targets:_asadmin_targets_cluster_clustered_instance_config_das_standalone_instance' '--host+:' '--port+:')
    +        ;;
    +    list-javamail-resources)
    +        _command_args=('*:targets:_asadmin_targets_cluster_clustered_instance_das_domain_standalone_instance' '--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_clustered_instance_das_domain_standalone_instance')
    +        ;;
    +    list-jdbc-connection-pools)
    +        _command_args=('--host+:' '--port+:')
    +        ;;
    +    list-jdbc-resources)
    +        _command_args=('--host+:' '--port+:')
    +        ;;
    +    list-jms-hosts)
    +        _command_args=('--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    list-jms-resources)
    +        _command_args=('*:targets:_asadmin_targets_cluster_das_domain_standalone_instance' '--host+:' '--port+:' '--restype+:')
    +        ;;
    +    list-jmsdest)
    +        _command_args=('*:targets:_asadmin_targets_cluster_config_das_standalone_instance' '--desttype+:' '--host+:' '--port+:' '--property+:')
    +        ;;
    +    list-jndi-entries)
    +        _command_args=('*:targets:_asadmin_targets_cluster_clustered_instance_das_domain_standalone_instance' '--context+:' '--host+:' '--port+:')
    +        ;;
    +    list-jndi-resources)
    +        _command_args=('*:targets:_asadmin_targets_cluster_clustered_instance_das_domain_standalone_instance' '--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_clustered_instance_das_domain_standalone_instance')
    +        ;;
    +    list-jvm-options)
    +        _command_args=('--host+:' '--port+:' '--profiler+:profiler:(true false)' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    list-libraries)
    +        _command_args=('--host+:' '--port+:' '--type+:type:(common ext app)')
    +        ;;
    +    list-lifecycle-modules)
    +        _command_args=('*:targets:_asadmin_targets_cluster_das_domain_standalone_instance' '--host+:' '--port+:' '--terse+:terse:(true false)')
    +        ;;
    +    list-log-attributes)
    +        _command_args=('*:targets:_asadmin_targets_cluster_clustered_instance_config_das_standalone_instance' '--host+:' '--port+:')
    +        ;;
    +    list-log-levels)
    +        _command_args=('--host+:' '--port+:')
    +        ;;
    +    list-message-security-providers)
    +        _command_args=('*:targets:_asadmin_targets_cluster_clustered_instance_config_das_standalone_instance' '--host+:' '--layer+:layer:(SOAP HttpServlet)' '--port+:')
    +        ;;
    +    list-modules)
    +        _command_args=('--host+:' '--port+:')
    +        ;;
    +    list-network-listeners)
    +        _command_args=('*:targets:_asadmin_targets_cluster_config_das_standalone_instance' '--host+:' '--port+:')
    +        ;;
    +    list-nodes)
    +        _command_args=('--host+:' '--long+:long:(true false)' '--port+:' '--terse+:terse:(true false)')
    +        ;;
    +    list-nodes-config)
    +        _command_args=('--host+:' '--long+:long:(true false)' '--port+:' '--terse+:terse:(true false)')
    +        ;;
    +    list-nodes-dcom)
    +        _command_args=('--host+:' '--long+:long:(true false)' '--port+:' '--terse+:terse:(true false)')
    +        ;;
    +    list-nodes-ssh)
    +        _command_args=('--host+:' '--long+:long:(true false)' '--port+:' '--terse+:terse:(true false)')
    +        ;;
    +    list-password-aliases)
    +        _command_args=('--host+:' '--port+:')
    +        ;;
    +    list-persistence-types)
    +        _command_args=('--host+:' '--port+:' '--type+:')
    +        ;;
    +    list-protocol-filters)
    +        _command_args=('--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    list-protocol-finders)
    +        _command_args=('--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    list-protocols)
    +        _command_args=('*:targets:_asadmin_targets_cluster_config_das_standalone_instance' '--host+:' '--port+:')
    +        ;;
    +    list-resource-adapter-configs)
    +        _command_args=('--host+:' '--long+:long:(true false)' '--port+:' '--raname+:')
    +        ;;
    +    list-resource-refs)
    +        _command_args=('*:targets:_asadmin_targets_cluster_clustered_instance_das_standalone_instance' '--host+:' '--port+:')
    +        ;;
    +    list-sub-components)
    +        _command_args=('--appname+:' '--host+:' '--port+:' '--resources+:resources:(true false)' '--terse+:terse:(true false)' '--type+:')
    +        ;;
    +    list-supported-cipher-suites)
    +        _command_args=('--host+:' '--port+:')
    +        ;;
    +    list-system-properties)
    +        _command_args=('*:targets:_asadmin_targets_cluster_clustered_instance_config_das_domain_standalone_instance' '--host+:' '--port+:')
    +        ;;
    +    list-threadpools)
    +        _command_args=('--host+:' '--port+:')
    +        ;;
    +    list-timers)
    +        _command_args=('*:targets:_asadmin_targets_cluster_das_standalone_instance' '--host+:' '--port+:')
    +        ;;
    +    list-transports)
    +        _command_args=('*:targets:_asadmin_targets_cluster_config_das_standalone_instance' '--host+:' '--port+:')
    +        ;;
    +    list-virtual-servers)
    +        _command_args=('*:targets:_asadmin_targets_cluster_config_das_standalone_instance' '--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    list-web-context-param)
    +        _command_args=('--host+:' '--name+:' '--port+:')
    +        ;;
    +    list-web-env-entry)
    +        _command_args=('--host+:' '--name+:' '--port+:')
    +        ;;
    +    login)
    +        _command_args=('--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_das_standalone_instance')
    +        ;;
    +    migrate-timers)
    +        _command_args=('--host+:' '--port+:' '--target+:target:_asadmin_targets_clustered_instance_das')
    +        ;;
    +    monitor)
    +        _command_args=('--filename+:filename:directory:_files' '--filter+:' '--interval+:' '--type+:')
    +        ;;
    +    multimode)
    +        _command_args=('--encoding+:' '--file+:file:directory:_files' '--printprompt+:printprompt:(true false)')
    +        ;;
    +    ping-connection-pool)
    +        _command_args=('--appname+:' '--host+:' '--modulename+:' '--port+:' '--target+:')
    +        ;;
    +    ping-node-dcom)
    +        _command_args=('*:nodes:_asadmin_nodes_dcom' '--host+:' '--port+:' '--validate+:validate:(true false)')
    +        ;;
    +    ping-node-ssh)
    +        _command_args=('*:nodes:_asadmin_nodes_ssh' '--host+:' '--port+:' '--validate+:validate:(true false)')
    +        ;;
    +    recover-transactions)
    +        _command_args=('--host+:' '--port+:' '--target+:target:_asadmin_targets_clustered_instance_das_standalone_instance' '--transactionlogdir+:')
    +        ;;
    +    redeploy)
    +        _command_args=('*:directory:_files' '--asyncreplication+:asyncreplication:(true false)' '--availabilityenabled+:availabilityenabled:(true false)' '--contextroot+:' '--createtables+:createtables:(true false)' '--dbvendorname+:' '--deploymentplan+:deploymentplan:directory:_files' '--description+:' '--dropandcreatetables+:dropandcreatetables:(true false)' '--enabled+:enabled:(true false)' '--force+:force:(true false)' '--generatermistubs+:generatermistubs:(true false)' '--host+:' '--isredeploy+:isredeploy:(true false)' '--keepfailedstubs+:keepfailedstubs:(true false)' '--keepreposdir+:keepreposdir:(true false)' '--keepstate+:keepstate:(true false)' '--lbenabled+:lbenabled:(true false)' '--libraries+:' '--logreportederrors+:logreportederrors:(true false)' '--name+:' '--port+:' '--precompilejsp+:precompilejsp:(true false)' '--properties+:' '--property+:' '--retrieve+:' '--target+:target:_asadmin_targets_cluster_das_domain_standalone_instance' '--type+:' '--uniquetablenames+:uniquetablenames:(true false)' '--verify+:verify:(true false)' '--virtualservers+:')
    +        ;;
    +    remove-library)
    +        _command_args=('*:libraries:_asadmin_libraries' '--host+:' '--port+:' '--type+:type:(common ext app)')
    +        ;;
    +    restart-domain)
    +        _command_args=('--debug+:debug:(true false)' '--domaindir+:' '--force+:force:(true false)' '--kill+:kill:(true false)')
    +        ;;
    +    restart-instance)
    +        _command_args=('*:instances:_asadmin_instances' '--debug+:' '--host+:' '--port+:')
    +        ;;
    +    restart-local-instance)
    +        _command_args=('*:instances:_asadmin_instances' '--debug+:debug:(true false)' '--force+:force:(true false)' '--kill+:kill:(true false)' '--node+:node:_asadmin_nodes' '--nodedir+:')
    +        ;;
    +    restore-domain)
    +        _command_args=('--backupconfig+:' '--backupdir+:' '--description+:' '--domaindir+:' '--filename+:' '--force+:force:(true false)' '--long+:long:(true false)')
    +        ;;
    +    rollback-transaction)
    +        _command_args=('--host+:' '--port+:' '--target+:target:_asadmin_targets_clustered_instance_das_standalone_instance' '--transaction_id+:')
    +        ;;
    +    rotate-log)
    +        _command_args=('--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_clustered_instance_das_standalone_instance')
    +        ;;
    +    set)
    +        _command_args=('--host+:' '--port+:')
    +        ;;
    +    set-log-attributes)
    +        _command_args=('--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    set-log-levels)
    +        _command_args=('--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance')
    +        ;;
    +    set-web-context-param)
    +        _command_args=('--description+:' '--host+:' '--ignoredescriptoritem+:ignoredescriptoritem:(true false)' '--name+:' '--port+:' '--value+:')
    +        ;;
    +    set-web-env-entry)
    +        _command_args=('--description+:' '--host+:' '--ignoredescriptoritem+:ignoredescriptoritem:(true false)' '--name+:' '--port+:' '--type+:' '--value+:')
    +        ;;
    +    setup-ssh)
    +        _command_args=('--generatekey+:generatekey:(true false)' '--sshkeyfile+:' '--sshport+:' '--sshpublickeyfile+:' '--sshuser+:')
    +        ;;
    +    show-component-status)
    +        _command_args=('--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_clustered_instance_das_domain_standalone_instance')
    +        ;;
    +    start-cluster)
    +        _command_args=('*:clusters:_asadmin_clusters' '--autohadboverride+:autohadboverride:(true false)' '--host+:' '--port+:' '--verbose+:verbose:(true false)')
    +        ;;
    +    start-database)
    +        _command_args=('--dbhome+:' '--dbhost+:' '--dbport+:' '--jvmoptions+:')
    +        ;;
    +    start-domain)
    +        _command_args=('--debug+:debug:(true false)' '--domaindir+:' '--upgrade+:upgrade:(true false)' '--verbose+:verbose:(true false)')
    +        ;;
    +    start-instance)
    +        _command_args=('*:instances:_asadmin_instances' '--debug+:debug:(true false)' '--host+:' '--port+:' '--setenv+:' '--sync+:sync:(none normal full)' '--terse+:terse:(true false)')
    +        ;;
    +    start-local-instance)
    +        _command_args=('*:instances:_asadmin_instances' '--debug+:debug:(true false)' '--node+:node:_asadmin_nodes' '--nodedir+:' '--sync+:sync:(none normal full)' '--verbose+:verbose:(true false)')
    +        ;;
    +    stop-cluster)
    +        _command_args=('*:clusters:_asadmin_clusters' '--autohadboverride+:autohadboverride:(true false)' '--host+:' '--kill+:kill:(true false)' '--port+:' '--verbose+:verbose:(true false)')
    +        ;;
    +    stop-database)
    +        _command_args=('--dbhost+:' '--dbport+:' '--dbuser+:')
    +        ;;
    +    stop-domain)
    +        _command_args=('--domaindir+:' '--force+:force:(true false)' '--kill+:kill:(true false)')
    +        ;;
    +    stop-instance)
    +        _command_args=('*:instances:_asadmin_instances' '--force+:force:(true false)' '--host+:' '--kill+:kill:(true false)' '--port+:')
    +        ;;
    +    stop-local-instance)
    +        _command_args=('*:instances:_asadmin_instances' '--force+:force:(true false)' '--kill+:kill:(true false)' '--node+:node:_asadmin_nodes' '--nodedir+:')
    +        ;;
    +    test-upgrade)
    +        _command_args=('--host+:' '--port+:')
    +        ;;
    +    undeploy)
    +        _command_args=('*:applications:_asadmin_applications' '--cascade+:cascade:(true false)' '--droptables+:droptables:(true false)' '--host+:' '--isredeploy+:isredeploy:(true false)' '--keepreposdir+:keepreposdir:(true false)' '--keepstate+:keepstate:(true false)' '--port+:' '--properties+:' '--target+:target:_asadmin_targets_cluster_das_domain_standalone_instance')
    +        ;;
    +    unfreeze-transaction-service)
    +        _command_args=('--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_clustered_instance_config_das_standalone_instance')
    +        ;;
    +    uninstall-node)
    +        _command_args=('--force+:force:(true false)' '--installdir+:' '--sshkeyfile+:' '--sshport+:' '--sshuser+:')
    +        ;;
    +    uninstall-node-dcom)
    +        _command_args=('--force+:force:(true false)' '--installdir+:' '--windowsdomain+:' '--windowsuser+:')
    +        ;;
    +    uninstall-node-ssh)
    +        _command_args=('--force+:force:(true false)' '--installdir+:' '--sshkeyfile+:' '--sshport+:' '--sshuser+:')
    +        ;;
    +    unset-web-context-param)
    +        _command_args=('--host+:' '--name+:' '--port+:')
    +        ;;
    +    unset-web-env-entry)
    +        _command_args=('--host+:' '--name+:' '--port+:')
    +        ;;
    +    update-connector-security-map)
    +        _command_args=('--addprincipals+:' '--addusergroups+:' '--host+:' '--mappedpassword+:' '--mappedusername+:' '--poolname+:' '--port+:' '--removeprincipals+:' '--removeusergroups+:' '--target+:')
    +        ;;
    +    update-connector-work-security-map)
    +        _command_args=('--addgroups+:' '--addprincipals+:' '--host+:' '--port+:' '--raname+:' '--removegroups+:' '--removeprincipals+:')
    +        ;;
    +    update-file-user)
    +        _command_args=('--authrealmname+:' '--groups+:' '--host+:' '--port+:' '--target+:target:_asadmin_targets_cluster_config_das_standalone_instance' '--userpassword+:')
    +        ;;
    +    update-node-config)
    +        _command_args=('*:nodes:_asadmin_nodes_config' '--host+:' '--installdir+:' '--nodedir+:' '--nodehost+:' '--port+:')
    +        ;;
    +    update-node-dcom)
    +        _command_args=('*:nodes:_asadmin_nodes_dcom' '--force+:force:(true false)' '--host+:' '--installdir+:' '--nodedir+:' '--nodehost+:' '--port+:' '--windowsdomain+:' '--windowspassword+:' '--windowsuser+:')
    +        ;;
    +    update-node-ssh)
    +        _command_args=('*:nodes:_asadmin_nodes_ssh' '--force+:force:(true false)' '--host+:' '--installdir+:' '--nodedir+:' '--nodehost+:' '--port+:' '--sshkeyfile+:' '--sshkeypassphrase+:' '--sshpassword+:' '--sshport+:' '--sshuser+:')
    +        ;;
    +    update-password-alias)
    +        _command_args=('--aliaspassword+:' '--host+:' '--port+:')
    +        ;;
    +    uptime)
    +        _command_args=('--host+:' '--milliseconds+:milliseconds:(true false)' '--port+:')
    +        ;;
    +    validate-dcom)
    +        _command_args=('--host+:' '--port+:' '--remotetestdir+:' '--verbose+:verbose:(true false)' '--windowsdomain+:' '--windowspassword+:' '--windowsuser+:')
    +        ;;
    +    validate-multicast)
    +        _command_args=('--bindaddress+:' '--multicastaddress+:' '--multicastport+:' '--sendperiod+:' '--timeout+:' '--timetolive+:' '--verbose+:verbose:(true false)')
    +        ;;
    +    verify-domain-xml)
    +        _command_args=('--domaindir+:')
    +        ;;
    +    version)
    +        _command_args=('--local+:local:(true false)' '--terse+:terse:(true false)' '--verbose+:verbose:(true false)')
    +        ;;
    +esac
    +
    +
    +_asadmin_applications() {
    +    compadd $(command asadmin list-applications --terse | sed 's/\s.*//')
    +}
    +
    +_asadmin_clusters() {
    +    compadd $(command asadmin list-clusters --terse | sed 's/\s.*//')
    +}
    +
    +_asadmin_configs() {
    +    compadd $(command asadmin list-configs --terse)
    +}
    +
    +_asadmin_instances() {
    +    compadd $(command asadmin list-instances --terse --nostatus domain)
    +}
    +
    +_asadmin_instances_standalone() {
    +    compadd $(command asadmin list-instances --terse --standaloneonly --nostatus domain)
    +}
    +
    +_asadmin_libraries() {
    +    compadd $(command asadmin list-libraries --terse)
    +}
    +
    +_asadmin_nodes() {
    +    compadd $(command asadmin list-nodes --terse)
    +}
    +
    +_asadmin_nodes_config() {
    +    compadd $(command asadmin list-nodes-config --terse)
    +}
    +
    +_asadmin_nodes_dcom() {
    +    compadd $(command asadmin list-nodes-dcom --terse)
    +}
    +
    +_asadmin_nodes_ssh() {
    +    compadd $(command asadmin list-nodes-ssh --terse)
    +}
    +
    +_asadmin_targets() {
    +    _asadmin_instances
    +    _asadmin_clusters
    +    _asadmin_configs
    +    compadd domain server
    +}
    +
    +_asadmin_targets_cluster_clustered_instance_config_das_domain_standalone_instance() {
    +    _asadmin_instances
    +    _asadmin_clusters
    +    _asadmin_configs
    +    compadd domain server
    +}
    +
    +_asadmin_targets_cluster_clustered_instance_config_das_standalone_instance() {
    +    _asadmin_instances
    +    _asadmin_clusters
    +    _asadmin_configs
    +    compadd server
    +}
    +
    +_asadmin_targets_cluster_clustered_instance_das_domain_standalone_instance() {
    +    _asadmin_instances
    +    _asadmin_clusters
    +    compadd domain server
    +}
    +
    +_asadmin_targets_cluster_clustered_instance_das_standalone_instance() {
    +    _asadmin_instances
    +    _asadmin_clusters
    +    _asadmin_configs
    +    compadd server
    +}
    +
    +_asadmin_targets_cluster_config_das_standalone_instance() {
    +    _asadmin_instances_standalone
    +    _asadmin_clusters
    +    _asadmin_configs
    +    compadd server
    +}
    +
    +_asadmin_targets_cluster_das_domain_standalone_instance() {
    +    _asadmin_instances_standalone
    +    _asadmin_clusters
    +    compadd domain server
    +}
    +
    +_asadmin_targets_cluster_das_standalone_instance() {
    +    _asadmin_instances_standalone
    +    _asadmin_clusters
    +    compadd server
    +}
    +
    +_asadmin_targets_clustered_instance_das() {
    +    _asadmin_instances
    +    compadd server
    +}
    +
    +_asadmin_targets_clustered_instance_das_standalone_instance() {
    +    _asadmin_instances
    +    compadd server
    +}
    +
    +_asadmin_targets_cluster_standalone_instance() {
    +    _asadmin_clusters
    +    _asadmin_instances_standalone
    +}
    +
    +
    +compadd '--help'
    +_arguments \
    +    $_command_args \
    +    &&  return 0;
    diff --git a/dot_oh-my-zsh/plugins/glassfish/empty_glassfish.plugin.zsh b/dot_oh-my-zsh/plugins/glassfish/empty_glassfish.plugin.zsh
    new file mode 100644
    index 0000000..e69de29
    diff --git a/dot_oh-my-zsh/plugins/globalias/README.md b/dot_oh-my-zsh/plugins/globalias/README.md
    new file mode 100644
    index 0000000..cd7fc3c
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/globalias/README.md
    @@ -0,0 +1,79 @@
    +# Globalias plugin
    +
    +Expands all glob expressions, subcommands and aliases (including global).
    +
    +Idea from: https://blog.patshead.com/2012/11/automatically-expaning-zsh-global-aliases---simplified.html.
    +
    +## Usage
    +
    +Add `globalias` to the plugins array in your zshrc file:
    +
    +```zsh
    +plugins=(... globalias)
    +```
    +
    +Then just press `SPACE` to trigger the expansion of a command you've written.
    +
    +If you only want to insert a space without expanding the command line, press
    +`CTRL`+`SPACE`.
    +
    +if you would like to filter out any values from expanding set `GLOBALIAS_FILTER_VALUES` to
    +an array of said values. See [Filtered values](#filtered-values).
    +
    +## Examples
    +
    +#### Glob expressions
    +
    +```
    +$ touch {1..10}
    +# expands to
    +$ touch 1 2 3 4 5 6 7 8 9 10
    +
    +$ ls **/*.json
    +# expands to
    +$ ls folder/file.json anotherfolder/another.json
    +```
    +
    +#### Subcommands
    +
    +```
    +$ mkdir "`date -R`"
    +# expands to
    +$ mkdir Tue,\ 04\ Oct\ 2016\ 13:54:03\ +0300
    +```
    +
    +#### Aliases
    +
    +```
    +# .zshrc:
    +alias -g G="| grep --color=auto -P"
    +alias l='ls --color=auto -lah'
    +
    +$ lG
    +# expands to
    +$ ls --color=auto -lah | grep --color=auto -P
    +```
    +
    +```
    +# .zsrc:
    +alias S="sudo systemctl"
    +
    +$ S
    +# expands to:
    +$ sudo systemctl
    +```
    +
    +#### Filtered values
    +
    +```
    +# .zshrc
    +alias l='ls -lh'
    +alias la='ls --color=auto -lah'
    +GLOBALIAS_FILTER_VALUES=(l)
    +
    +$ l
    +# does not expand
    +$ la
    +# expands to:
    +$ ls --color=auto -lah
    +```
    diff --git a/dot_oh-my-zsh/plugins/globalias/globalias.plugin.zsh b/dot_oh-my-zsh/plugins/globalias/globalias.plugin.zsh
    new file mode 100644
    index 0000000..bd27d58
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/globalias/globalias.plugin.zsh
    @@ -0,0 +1,23 @@
    +globalias() {
    +   # Get last word to the left of the cursor:
    +   # (z) splits into words using shell parsing
    +   # (A) makes it an array even if there's only one element
    +   local word=${${(Az)LBUFFER}[-1]}
    +   if [[ $GLOBALIAS_FILTER_VALUES[(Ie)$word] -eq 0 ]]; then
    +      zle _expand_alias
    +      zle expand-word
    +   fi
    +   zle self-insert
    +}
    +zle -N globalias
    +
    +# space expands all aliases, including global
    +bindkey -M emacs " " globalias
    +bindkey -M viins " " globalias
    +
    +# control-space to make a normal space
    +bindkey -M emacs "^ " magic-space
    +bindkey -M viins "^ " magic-space
    +
    +# normal space during searches
    +bindkey -M isearch " " magic-space
    diff --git a/dot_oh-my-zsh/plugins/gnu-utils/README.md b/dot_oh-my-zsh/plugins/gnu-utils/README.md
    new file mode 100644
    index 0000000..f5fa81e
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/gnu-utils/README.md
    @@ -0,0 +1,38 @@
    +# gnu-utils plugin
    +
    +This plugin binds GNU coreutils to their default names, so that you don't have
    +to call them using their prefixed name, which starts with `g`. This is useful
    +in systems which don't have GNU coreutils installed by default, mainly macOS
    +or FreeBSD, which use BSD coreutils.
    +
    +To use it, add `gnu-utils` to the plugins array in your zshrc file:
    +```zsh
    +plugins=(... gnu-utils)
    +```
    +
    +The plugin works by changing the path that the command hash points to, so
    +instead of `ls` pointing to `/bin/ls`, it points to wherever `gls` is
    +installed.
    +
    +Since `hash -rf` or `rehash` refreshes the command hashes, it also wraps
    +`hash` and `rehash` so that the coreutils binding is always done again
    +after calling these two commands.
    +
    +Look at the source code of the plugin to see which GNU coreutils are tried
    +to rebind. Open an issue if there are some missing.
    +
    +## Other methods
    +
    +The plugin also documents two other ways to do this:
    +
    +1. Using a function wrapper, such that, for example, there exists a function
    +named `ls` which calls `gls` instead. Since functions have a higher preference
    +than commands, this ends up calling the GNU coreutil. It has also a higher
    +preference over shell builtins (`gecho` is called instead of the builtin `echo`).
    +
    +2. Using an alias. This has an even higher preference than functions, but they
    +could be overridden because of a user setting.
    +
    +## Author
    +
    +- [Sorin Ionescu](https://github.com/sorin-ionescu).
    diff --git a/dot_oh-my-zsh/plugins/gnu-utils/gnu-utils.plugin.zsh b/dot_oh-my-zsh/plugins/gnu-utils/gnu-utils.plugin.zsh
    new file mode 100644
    index 0000000..9419127
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/gnu-utils/gnu-utils.plugin.zsh
    @@ -0,0 +1,63 @@
    +# ------------------------------------------------------------------------------
    +#          FILE:  gnu-utils.plugin.zsh
    +#   DESCRIPTION:  oh-my-zsh plugin file.
    +#        AUTHOR:  Sorin Ionescu (sorin.ionescu@gmail.com)
    +#       VERSION:  1.0.0
    +# ------------------------------------------------------------------------------
    +
    +# Detect if GNU coreutils are installed by looking for gwhoami
    +if [[ ! -x "${commands[gwhoami]}" ]]; then
    +  return
    +fi
    +
    +__gnu_utils() {
    +  local -a gcmds
    +  local gcmd
    +
    +  # coreutils 
    +  gcmds=('g[' 'gbase64' 'gbasename' 'gcat' 'gchcon' 'gchgrp' 'gchmod'
    +  'gchown' 'gchroot' 'gcksum' 'gcomm' 'gcp' 'gcsplit' 'gcut' 'gdate'
    +  'gdd' 'gdf' 'gdir' 'gdircolors' 'gdirname' 'gdu' 'gecho' 'genv' 'gexpand'
    +  'gexpr' 'gfactor' 'gfalse' 'gfmt' 'gfold' 'ggroups' 'ghead' 'ghostid'
    +  'gid' 'ginstall' 'gjoin' 'gkill' 'glink' 'gln' 'glogname' 'gls' 'gmd5sum'
    +  'gmkdir' 'gmkfifo' 'gmknod' 'gmktemp' 'gmv' 'gnice' 'gnl' 'gnohup' 'gnproc'
    +  'god' 'gpaste' 'gpathchk' 'gpinky' 'gpr' 'gprintenv' 'gprintf' 'gptx' 'gpwd'
    +  'greadlink' 'grm' 'grmdir' 'gruncon' 'gseq' 'gsha1sum' 'gsha224sum'
    +  'gsha256sum' 'gsha384sum' 'gsha512sum' 'gshred' 'gshuf' 'gsleep' 'gsort'
    +  'gsplit' 'gstat' 'gstty' 'gsum' 'gsync' 'gtac' 'gtail' 'gtee' 'gtest'
    +  'gtimeout' 'gtouch' 'gtr' 'gtrue' 'gtruncate' 'gtsort' 'gtty' 'guname'
    +  'gunexpand' 'guniq' 'gunlink' 'guptime' 'gusers' 'gvdir' 'gwc' 'gwho'
    +  'gwhoami' 'gyes')
    +
    +  # findutils
    +  gcmds+=('gfind' 'gxargs' 'glocate')
    +
    +  # Not part of either coreutils or findutils, installed separately.
    +  gcmds+=('gsed' 'gtar' 'gtime' 'gmake' 'ggrep')
    +
    +  # can be built optionally
    +  gcmds+=('ghostname')
    +
    +  for gcmd in "${gcmds[@]}"; do
    +    # Do nothing if the command isn't found
    +    (( ${+commands[$gcmd]} )) || continue
    +    
    +    # This method allows for builtin commands to be primary but it's
    +    # lost if hash -r or rehash is executed, or if $PATH is updated.
    +    # Thus, a preexec hook is needed, which will only run if whoami
    +    # is not already rehashed.
    +    #
    +    hash ${gcmd[2,-1]}=${commands[$gcmd]}
    +  done
    +
    +  return 0
    +}
    +
    +__gnu_utils_preexec() {
    +  # Run __gnu_utils when the whoami command is not already rehashed.
    +  # This acts as a sign that we need to rehash all GNU utils.
    +  [[ "${commands[whoami]}" = "${commands[gwhoami]}" ]] || __gnu_utils
    +}
    +
    +autoload -Uz add-zsh-hook
    +add-zsh-hook preexec __gnu_utils_preexec
    diff --git a/dot_oh-my-zsh/plugins/golang/README.md b/dot_oh-my-zsh/plugins/golang/README.md
    new file mode 100644
    index 0000000..128cc7f
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/golang/README.md
    @@ -0,0 +1,40 @@
    +# Golang plugin
    +
    +This plugin adds completion for the [Go Programming Language](https://golang.org/),
    +as well as some aliases for common Golang commands.
    +
    +To use it, add `golang` to the plugins array in your zshrc file:
    +
    +```zsh
    +plugins=(... golang)
    +```
    +
    +## Aliases
    +
    +| Alias  | Command           | Description                                                   |
    +| ------ | ----------------- | ------------------------------------------------------------- |
    +| gob    | `go build`        | Build your code                                               |
    +| goc    | `go clean`        | Removes object files from package source directories          |
    +| god    | `go doc`          | Prints documentation comments                                 |
    +| goe    | `go env`          | Prints Go environment information                             |
    +| gof    | `go fmt`          | Gofmt formats (aligns and indents) Go programs.               |
    +| gofa   | `go fmt ./...`    | Run go fmt for all packages in current directory, recursively |
    +| gofx   | `go fix`          | Update packages to use a new API                              |
    +| gog    | `go get`          | Downloads packages and then installs them to $GOPATH          |
    +| goga   | `go get ./...`    | Installs all dependencies in current directory, recursively   |
    +| goi    | `go install`      | Compiles and installs packages to $GOPATH                     |
    +| gol    | `go list`         | Lists Go packages                                             |
    +| gom    | `go mod`          | Access to operations on modules                               |
    +| gopa   | `cd $GOPATH`      | Takes you to `$GOPATH`                                        |
    +| gopb   | `cd $GOPATH/bin`  | Takes you to `$GOPATH/bin`                                    |
    +| gops   | `cd $GOPATH/src`  | Takes you to `$GOPATH/src`                                    |
    +| gor    | `go run`          | Compiles and runs your code                                   |
    +| got    | `go test`         | Runs tests                                                    |
    +| gota   | `go test ./...`   | Runs tests in all subdirectories                              |
    +| goto   | `go tool`         | Prints all the available tools                                |
    +| gotoc  | `go tool compile` | Generates object file                                         |
    +| gotod  | `go tool dist`    | Utility to bootstrap, build and test go runtime               |
    +| gotofx | `go tool fix`     | Fixes an application to use newer features                    |
    +| gov    | `go vet`          | Vet examines Go source code and reports suspicious constructs |
    +| gove   | `go version`      | Prints Go version                                             |
    +| gow    | `go work`         | Work provides access to operations on workspaces              |
    diff --git a/dot_oh-my-zsh/plugins/golang/_golang b/dot_oh-my-zsh/plugins/golang/_golang
    new file mode 100644
    index 0000000..01b976b
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/golang/_golang
    @@ -0,0 +1,249 @@
    +#compdef go
    +
    +__go_packages() {
    +  local gopaths
    +  declare -a gopaths
    +  gopaths=("${(s/:/)$(go env GOPATH)}")
    +  gopaths+=("$(go env GOROOT)")
    +  for p in $gopaths; do
    +    _path_files -W "$p/src" -/
    +  done
    +}
    +
    +__go_identifiers() {
    +  local tmpl_path="${functions_source[$0]:h}/templates"
    +  compadd $(godoc -templates "$tmpl_path" ${words[-2]} 2> /dev/null)
    +}
    +
    +_go() {
    +  typeset -a commands build_flags
    +  commands+=(
    +    'build[compile packages and dependencies]'
    +    'clean[remove object files]'
    +    'doc[run godoc on package sources]'
    +    'env[print Go environment information]'
    +    'fix[run go tool fix on packages]'
    +    'fmt[run gofmt on package sources]'
    +    'generate[generate Go files by processing source]'
    +    'get[download and install packages and dependencies]'
    +    'help[display help]'
    +    'install[compile and install packages and dependencies]'
    +    'list[list packages]'
    +    'mod[modules maintenance]'
    +    'run[compile and run Go program]'
    +    'test[test packages]'
    +    'tool[run specified go tool]'
    +    'version[print Go version]'
    +    'vet[run go tool vet on packages]'
    +  )
    +  if (( CURRENT == 2 )); then
    +    # explain go commands
    +    _values 'go tool commands' ${commands[@]}
    +    return
    +  fi
    +  build_flags=(
    +    '-a[force reinstallation of packages that are already up to date]'
    +    '-n[print the commands but do not run them]'
    +    '-p[number of parallel builds]:number'
    +    '-race[enable data race detection]'
    +    '-x[print the commands]'
    +    '-work[print temporary directory name and keep it]'
    +    '-ccflags[flags for 5c/6c/8c]:flags'
    +    '-gcflags[flags for 5g/6g/8g]:flags'
    +    '-ldflags[flags for 5l/6l/8l]:flags'
    +    '-gccgoflags[flags for gccgo]:flags'
    +    '-compiler[name of compiler to use]:name'
    +    '-installsuffix[suffix to add to package directory]:suffix'
    +    '-tags[list of build tags to consider satisfied]:tags'
    +  )
    +
    +  case ${words[2]} in
    +  doc)
    +    _arguments -s -w \
    +      "-c[symbol matching honors case (paths not affected)]" \
    +      "-cmd[show symbols with package docs even if package is a command]" \
    +      "-u[show unexported symbols as well as exported]" \
    +      "2:importpaths:__go_packages" \
    +      ":next identifiers:__go_identifiers"
    +    ;;
    +  clean)
    +    _arguments -s -w \
    +      "-i[remove the corresponding installed archive or binary (what 'go install' would create)]" \
    +      "-n[print the remove commands it would execute, but not run them]" \
    +      "-r[apply recursively to all the dependencies of the packages named by the import paths]" \
    +      "-x[print remove commands as it executes them]" \
    +      "*:importpaths:__go_packages"
    +    ;;
    +  fix|fmt|vet)
    +    _alternative ':importpaths:__go_packages' ':files:_path_files -g "*.go"'
    +    ;;
    +  install)
    +    _arguments -s -w : ${build_flags[@]} \
    +      "-v[show package names]" \
    +      '*:importpaths:__go_packages'
    +    ;;
    +  get)
    +    _arguments -s -w : \
    +      ${build_flags[@]}
    +    ;;
    +  build)
    +    _arguments -s -w : \
    +      ${build_flags[@]} \
    +      "-v[show package names]" \
    +      "-o[output file]:file:_files" \
    +      "*:args:{ _alternative ':importpaths:__go_packages' ':files:_path_files -g \"*.go\"' }"
    +    ;;
    +  test)
    +    _arguments -s -w : \
    +      ${build_flags[@]} \
    +      "-c[do not run, compile the test binary]" \
    +      "-i[do not run, install dependencies]" \
    +      "-v[print test output]" \
    +      "-x[print the commands]" \
    +      "-short[use short mode]" \
    +      "-parallel[number of parallel tests]:number" \
    +      "-cpu[values of GOMAXPROCS to use]:number list" \
    +      "-run[run tests and examples matching regexp]:regexp" \
    +      "-bench[run benchmarks matching regexp]:regexp" \
    +      "-benchmem[print memory allocation stats]" \
    +      "-benchtime[run each benchmark until taking this long]:duration" \
    +      "-blockprofile[write goroutine blocking profile to file]:file" \
    +      "-blockprofilerate[set sampling rate of goroutine blocking profile]:number" \
    +      "-timeout[kill test after that duration]:duration" \
    +      "-cpuprofile[write CPU profile to file]:file:_files" \
    +      "-memprofile[write heap profile to file]:file:_files" \
    +      "-memprofilerate[set heap profiling rate]:number" \
    +      "*:args:{ _alternative ':importpaths:__go_packages' ':files:_path_files -g \"*.go\"' }"
    +    ;;
    +  list)
    +    _arguments -s -w : \
    +      "-f[alternative format for the list]:format" \
    +      "-json[print data in json format]" \
    +      "-compiled[set CompiledGoFiles to the Go source files presented to the compiler]" \
    +      "-deps[iterate over not just the named packages but also all their dependencies]" \
    +      "-e[change the handling of erroneous packages]" \
    +      "-export[set the Export field to the name of a file containing up-to-date export information for the given package]" \
    +      "-find[identify the named packages but not resolve their dependencies]" \
    +      "-test[report not only the named packages but also their test binaries]" \
    +      "-m[list modules instead of packages]" \
    +      "-u[adds information about available upgrades]" \
    +      "-versions[set the Module's Versions field to a list of all known versions of that module]:number" \
    +      "*:importpaths:__go_packages"
    +    ;;
    +  mod)
    +    local -a mod_commands
    +    mod_commands+=(
    +      'download[download modules to local cache]'
    +      'edit[edit go.mod from tools or scripts]'
    +      'graph[print module requirement graph]'
    +      'init[initialize new module in current directory]'
    +      'tidy[add missing and remove unused modules]'
    +      'vendor[make vendored copy of dependencies]'
    +      'verify[verify dependencies have expected content]'
    +      'why[explain why packages or modules are needed]'
    +    )
    +
    +    if (( CURRENT == 3 )); then
    +      _values 'go mod commands' ${mod_commands[@]} "help[display help]"
    +      return
    +    fi
    +
    +    case ${words[3]} in
    +    help)
    +      _values 'go mod commands' ${mod_commands[@]}
    +      ;;
    +    download)
    +      _arguments -s -w : \
    +        "-json[print a sequence of JSON objects standard output]" \
    +        "*:flags"
    +      ;;
    +    edit)
    +      _arguments -s -w : \
    +        "-fmt[reformat the go.mod file]" \
    +        "-module[change the module's path]" \
    +        "-replace[=old{@v}=new{@v} add a replacement of the given module path and version pair]:name" \
    +        "-dropreplace[=old{@v}=new{@v} drop a replacement of the given module path and version pair]:name" \
    +        "-go[={version} set the expected Go language version]:number" \
    +        "-print[print the final go.mod in its text format]" \
    +        "-json[print the final go.mod file in JSON format]" \
    +        "*:flags"
    +      ;;
    +    graph)
    +      ;;
    +    init)
    +      ;;
    +    tidy)
    +      _arguments -s -w : \
    +        "-v[print information about removed modules]" \
    +        "*:flags"
    +      ;;
    +    vendor)
    +      _arguments -s -w : \
    +        "-v[print the names of vendored]" \
    +        "*:flags"
    +      ;;
    +    verify)
    +      ;;
    +    why)
    +      _arguments -s -w : \
    +        "-m[treats the arguments as a list of modules and finds a path to any package in each of the modules]" \
    +        "-vendor[exclude tests of dependencies]" \
    +        "*:importpaths:__go_packages"
    +      ;;
    +    esac
    +    ;;
    +  help)
    +    _values "${commands[@]}" \
    +      'environment[show Go environment variables available]' \
    +      'gopath[GOPATH environment variable]' \
    +      'packages[description of package lists]' \
    +      'remote[remote import path syntax]' \
    +      'testflag[description of testing flags]' \
    +      'testfunc[description of testing functions]'
    +    ;;
    +  run)
    +    _arguments -s -w : \
    +      ${build_flags[@]} \
    +      '*:file:_files -g "*.go"'
    +    ;;
    +  tool)
    +    if (( CURRENT == 3 )); then
    +        _values "go tool" $(go tool)
    +        return
    +    fi
    +    case ${words[3]} in
    +    [568]g)
    +        _arguments -s -w : \
    +            '-I[search for packages in DIR]:includes:_path_files -/' \
    +            '-L[show full path in file:line prints]' \
    +            '-S[print the assembly language]' \
    +            '-V[print the compiler version]' \
    +            '-e[no limit on number of errors printed]' \
    +            '-h[panic on an error]' \
    +            '-l[disable inlining]' \
    +            '-m[print optimization decisions]' \
    +            '-o[file specify output file]:file' \
    +            '-p[assumed import path for this code]:importpath' \
    +            '-u[disable package unsafe]' \
    +            "*:file:_files -g '*.go'"
    +        ;;
    +    [568]l)
    +        local O=${words[3]%l}
    +        _arguments -s -w : \
    +            '-o[file specify output file]:file' \
    +            '-L[search for packages in DIR]:includes:_path_files -/' \
    +            "*:file:_files -g '*.[ao$O]'"
    +        ;;
    +    dist)
    +        _values "dist tool" banner bootstrap clean env install version
    +        ;;
    +    *)
    +        # use files by default
    +        _files
    +        ;;
    +    esac
    +    ;;
    +  esac
    +}
    +
    +_go "$@"
    diff --git a/dot_oh-my-zsh/plugins/golang/golang.plugin.zsh b/dot_oh-my-zsh/plugins/golang/golang.plugin.zsh
    new file mode 100644
    index 0000000..45ccd3a
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/golang/golang.plugin.zsh
    @@ -0,0 +1,37 @@
    +## completion
    +compctl -g "*.go" gofmt # standard go tools
    +compctl -g "*.go" gccgo # gccgo
    +
    +# gc
    +for p in 5 6 8; do
    +  compctl -g "*.${p}" ${p}l
    +  compctl -g "*.go" ${p}g
    +done
    +unset p
    +
    +## aliases
    +alias gob='go build'
    +alias goc='go clean'
    +alias god='go doc'
    +alias goe='go env'
    +alias gof='go fmt'
    +alias gofa='go fmt ./...'
    +alias gofx='go fix'
    +alias gog='go get'
    +alias goga='go get ./...'
    +alias goi='go install'
    +alias gol='go list'
    +alias gom='go mod'
    +alias gopa='cd $GOPATH'
    +alias gopb='cd $GOPATH/bin'
    +alias gops='cd $GOPATH/src'
    +alias gor='go run'
    +alias got='go test'
    +alias gota='go test ./...'
    +alias goto='go tool'
    +alias gotoc='go tool compile'
    +alias gotod='go tool dist'
    +alias gotofx='go tool fix'
    +alias gov='go vet'
    +alias gove='go version'
    +alias gow='go work'
    diff --git a/dot_oh-my-zsh/plugins/golang/templates/empty_search.txt b/dot_oh-my-zsh/plugins/golang/templates/empty_search.txt
    new file mode 100644
    index 0000000..e69de29
    diff --git a/dot_oh-my-zsh/plugins/golang/templates/package.txt b/dot_oh-my-zsh/plugins/golang/templates/package.txt
    new file mode 100644
    index 0000000..2b75cce
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/golang/templates/package.txt
    @@ -0,0 +1,29 @@
    +{{with .PDoc}}{{/*
    +
    +Constants 
    +---------------------------------------
    +
    +*/}}{{with .Consts}}{{range .}}{{range .Names}}{{.}} {{end}}{{end}}{{end}}{{/*
    +
    +Variables
    +---------------------------------------
    +
    +*/}}{{with .Vars}}{{range .}}{{range .Names}}{{.}} {{end}}{{end}}{{end}}{{/*
    +
    +Functions
    +---------------------------------------
    +
    +*/}}{{with .Funcs}}{{range .}}{{ .Name }} {{end}}{{end}}{{/*
    +
    +Types
    +---------------------------------------
    +
    +*/}}{{with .Types}}{{range .}}{{ $TypeName := .Name }}{{ $TypeName }} {{/*
    +
    +*/}}{{range .Methods}}{{ $TypeName }}.{{.Name}} {{end}}{{/*
    +
    +*/}}{{range .Funcs}}{{.Name}} {{end}}{{/*
    +
    +*/}}{{range .Consts}}{{range .Names}}{{.}} {{end}}{{end}}{{/*
    +
    +*/}}{{range .Vars}}{{range .Names}}{{.}} {{end}}{{end}}{{end}}{{end}}{{end}}
    diff --git a/dot_oh-my-zsh/plugins/gpg-agent/README.md b/dot_oh-my-zsh/plugins/gpg-agent/README.md
    new file mode 100644
    index 0000000..8eeb94f
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/gpg-agent/README.md
    @@ -0,0 +1,9 @@
    +# gpg-agent
    +
    +Enables [GPG's gpg-agent](https://www.gnupg.org/documentation/manuals/gnupg/) if it is not running.
    +
    +To use it, add `gpg-agent` to the plugins array of your zshrc file:
    +
    +```zsh
    +plugins=(... gpg-agent)
    +```
    diff --git a/dot_oh-my-zsh/plugins/gpg-agent/gpg-agent.plugin.zsh b/dot_oh-my-zsh/plugins/gpg-agent/gpg-agent.plugin.zsh
    new file mode 100644
    index 0000000..1f4be20
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/gpg-agent/gpg-agent.plugin.zsh
    @@ -0,0 +1,17 @@
    +export GPG_TTY=$TTY
    +
    +# Fix for passphrase prompt on the correct tty
    +# See https://www.gnupg.org/documentation/manuals/gnupg/Agent-Options.html#option-_002d_002denable_002dssh_002dsupport
    +function _gpg-agent_update-tty_preexec {
    +  gpg-connect-agent updatestartuptty /bye &>/dev/null
    +}
    +autoload -U add-zsh-hook
    +add-zsh-hook preexec _gpg-agent_update-tty_preexec
    +
    +# If enable-ssh-support is set, fix ssh agent integration
    +if [[ $(gpgconf --list-options gpg-agent 2>/dev/null | awk -F: '$1=="enable-ssh-support" {print $10}') = 1 ]]; then
    +  unset SSH_AGENT_PID
    +  if [[ "${gnupg_SSH_AUTH_SOCK_by:-0}" -ne $$ ]]; then
    +    export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
    +  fi
    +fi
    diff --git a/dot_oh-my-zsh/plugins/gradle/README.md b/dot_oh-my-zsh/plugins/gradle/README.md
    new file mode 100644
    index 0000000..3756db0
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/gradle/README.md
    @@ -0,0 +1,30 @@
    +# Gradle plugin
    +
    +This plugin adds completions and aliases for [Gradle](https://gradle.org/).
    +
    +To use it, add `gradle` to the plugins array in your zshrc file:
    +
    +```zsh
    +plugins=(... gradle)
    +```
    +
    +## Usage
    +
    +This plugin creates a function called `gradle-or-gradlew`, which is aliased
    +to `gradle`, which is used to determine whether the current project directory
    +has a gradlew file. If `gradlew` is present it will be used, otherwise `gradle`
    +is used instead. Gradle tasks can be executed directly without regard for
    +whether it is `gradle` or `gradlew`. It also supports being called from
    +any directory inside the root project directory.
    +
    +Examples:
    +
    +```zsh
    +gradle test
    +gradle build
    +```
    +
    +## Completion
    +
    +This plugin uses [the completion from the Gradle project](https://github.com/gradle/gradle-completion),
    +which is distributed under the MIT license.
    diff --git a/dot_oh-my-zsh/plugins/gradle/_gradle b/dot_oh-my-zsh/plugins/gradle/_gradle
    new file mode 100644
    index 0000000..770723d
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/gradle/_gradle
    @@ -0,0 +1,420 @@
    +#compdef gradle gradlew gw
    +#
    +# Taken from https://github.com/gradle/gradle-completion
    +# Copyright (c) 2017 Eric Wendelin
    +#
    +# Permission is hereby granted, free of charge, to any person obtaining a copy of
    +# this software and associated documentation files (the "Software"), to deal in
    +# the Software without restriction, including without limitation the rights to
    +# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
    +# of the Software, and to permit persons to whom the Software is furnished to do
    +# so, subject to the following conditions:
    +#
    +# The above copyright notice and this permission notice shall be included in all
    +# copies or substantial portions of the Software.
    +#
    +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    +# SOFTWARE.
    +# Terms
    +
    +__gradle-set-project-root-dir() {
    +    local dir=`pwd`
    +    project_root_dir=`pwd`
    +    while [[ $dir != '/' ]]; do
    +        if [[ -f "$dir/settings.gradle" || -f "$dir/settings.gradle.kts" || -f "$dir/gradlew" ]]; then
    +            project_root_dir=$dir
    +            return 0
    +        fi
    +        dir="$(dirname "$dir")"
    +    done
    +    return 1
    +}
    +
    +__gradle-init-cache-dir() {
    +    cache_dir="$HOME/.gradle/completion"
    +    mkdir -p $cache_dir
    +}
    +
    +__gradle-set-settings-file() {
    +    # In order of precedence: --settings-file=filename, settings.gradle, settings.gradle.kts
    +
    +    local default_gradle_settings_file="$project_root_dir/settings.gradle"
    +    if [[ ! -f $default_gradle_settings_file ]]; then
    +      default_gradle_settings_file="$project_root_dir/settings.gradle.kts"
    +    fi
    +    gradle_settings_file=${${(v)opt_args[(i)-c|--settings-file]}:-$default_gradle_settings_file}
    +}
    +
    +__gradle-set-build-file() {
    +    __gradle-set-settings-file
    +    # In order of precedence: --build-file=filename, rootProject.buildFileName, build.gradle, build.gradle.kts
    +
    +    local default_gradle_build_file_name="build.gradle"
    +    if [[ -r $gradle_settings_file ]]; then
    +        default_gradle_build_file_name=${$(grep "^rootProject\.buildFileName" $gradle_settings_file | \
    +            sed -n -e "s/rootProject\.buildFileName = [\'\"]\(.*\)[\'\"]/\1/p")}
    +
    +        default_gradle_build_file_name="${default_gradle_build_file:-build.gradle}"
    +    fi
    +
    +    local default_gradle_build_file="$project_root_dir/$default_gradle_build_file_name"
    +    if [[ ! -f $default_gradle_build_file ]]; then
    +        default_gradle_build_file="$project_root_dir/build.gradle.kts"
    +    fi
    +
    +    # If a build file is specified after '-b' or '--build-file', use this file.
    +    gradle_build_file=${${(v)opt_args[(i)-b|--build-file]}:-$default_gradle_build_file}
    +}
    +
    +__gradle-set-cache-name() {
    +    # Cache name is constructed from the absolute path of the build file.
    +    cache_name=${${gradle_build_file:a}//[^[:alnum:]]/_}
    +}
    +
    +__gradle-set-files-checksum() {
    +    # Cache MD5 sum of all Gradle scripts and modified timestamps
    +    if builtin command -v md5 > /dev/null; then
    +        gradle_files_checksum=( $(md5 -q -s "$(cat "$cache_dir/$cache_name" | xargs ls -o 2>/dev/null)") )
    +    elif builtin command -v md5sum > /dev/null; then
    +        gradle_files_checksum=( $(cat "$cache_dir/$cache_name" | xargs ls -o 2>/dev/null | md5sum | awk '{print $1}') )
    +    else
    +        _message 'Cannot generate completions as neither md5 nor md5sum exist on \$PATH'
    +        return 1
    +    fi
    +}
    +
    +__gradle-generate-script-cache() {
    +    # Invalidate cache after 3 weeks by default
    +    local cache_ttl_mins=${$(echo $GRADLE_CACHE_TTL_MINUTES):-30240}
    +    local script_exclude_pattern=${$(echo $GRADLE_COMPLETION_EXCLUDE_PATTERN):-"/(.git|build|integTest|samples|templates|smokeTest|testFixtures|out)/"}
    +    if [[ ! $(find $cache_dir/$cache_name -mmin -$cache_ttl_mins 2>/dev/null) ]]; then
    +        zle -R "Generating Gradle build script cache"
    +        # Cache all Gradle scripts
    +        local -a gradle_build_scripts
    +        gradle_build_scripts=( $(find $project_root_dir -type f -name "*.gradle" -o -name "*.gradle.kts" 2>/dev/null | grep -E -v "$script_exclude_pattern") )
    +        printf "%s\n" "${gradle_build_scripts[@]}" >| $cache_dir/$cache_name
    +    fi
    +}
    +
    +__gradle-generate-tasks-cache() {
    +    __gradle-set-files-checksum
    +
    +    # Use Gradle wrapper when it exists.
    +    local gradle_cmd="gradle"
    +    if [[ -x "$project_root_dir/gradlew" ]]; then
    +        gradle_cmd="$project_root_dir/gradlew"
    +    fi
    +
    +    zle -R "Generating Gradle task cache from $gradle_build_file"
    +
    +    # Run gradle to retrieve possible tasks and cache.
    +    # Reuse Gradle Daemon if IDLE but don't start a new one.
    +    local gradle_tasks_output
    +    if [[ ! -z "$($gradle_cmd --status 2>/dev/null | grep IDLE)" ]]; then
    +        gradle_tasks_output="$($gradle_cmd --daemon --build-file $gradle_build_file --console plain -q tasks --all 2>/dev/null)"
    +    else
    +        gradle_tasks_output="$($gradle_cmd --no-daemon --build-file $gradle_build_file --console plain -q tasks --all 2>/dev/null)"
    +    fi
    +    local gradle_all_tasks="" root_tasks="" subproject_tasks="" output_line
    +    local -a match
    +    for output_line in ${(f)"$(printf "%s\n" "${gradle_tasks_output[@]}")"}; do
    +        if [[ $output_line =~ ^([[:lower:]][[:alnum:][:punct:]]*)([[:space:]]-[[:space:]]([[:print:]]*))? ]]; then
    +            local task_name="${match[1]}"
    +            local task_description="${match[3]}"
    +            # Completion for subproject tasks with ':' prefix
    +            if [[ $task_name =~ ^([[:alnum:][:punct:]]+):([[:alnum:]]+) ]]; then
    +                gradle_all_tasks+="${task_name//:/\\:}:$task_description\n\\:${task_name//:/\\:}:$task_description\n"
    +                subproject_tasks+="${match[2]}\n"
    +            else
    +                gradle_all_tasks+="${task_name//:/\\:}:$task_description\n"
    +                root_tasks+="$task_name\n"
    +            fi
    +        fi
    +    done
    +
    +    # subproject tasks can be referenced implicitly from root project
    +    if [[ $GRADLE_COMPLETION_UNQUALIFIED_TASKS == "true" ]]; then
    +        local -a implicit_tasks
    +        implicit_tasks=( $(comm -23 <(echo $subproject_tasks | sort) <(echo $root_tasks | sort)) )
    +        for task in $(printf "%s\n" "${implicit_tasks[@]}"); do
    +            gradle_all_tasks+="$task\n"
    +        done
    +    fi
    +
    +    echo $gradle_all_tasks >| $cache_dir/$gradle_files_checksum
    +    echo $gradle_files_checksum >| $cache_dir/$cache_name.md5
    +}
    +
    +__gradle-completion-init() {
    +    local cache_dir cache_name gradle_build_file gradle_files_checksum project_root_dir
    +    __gradle-init-cache-dir
    +    __gradle-set-project-root-dir
    +    __gradle-set-build-file
    +    if [[ -f $gradle_build_file ]]; then
    +        __gradle-set-cache-name
    +        __gradle-generate-script-cache
    +        __gradle-set-files-checksum
    +        __gradle-generate-tasks-cache
    +    fi
    +    return 0
    +}
    +
    +__gradle_tasks() {
    +    local cache_dir cache_name gradle_build_file gradle_files_checksum project_root_dir
    +
    +    __gradle-init-cache-dir
    +    __gradle-set-project-root-dir
    +    __gradle-set-build-file
    +    if [[ -f $gradle_build_file ]]; then
    +        __gradle-set-cache-name
    +        __gradle-generate-script-cache
    +        __gradle-set-files-checksum
    +
    +        # The cache key is md5 sum of all gradle scripts, so it's valid if it exists.
    +        if [[ -f $cache_dir/$cache_name.md5 ]]; then
    +            local cached_checksum="$(cat $cache_dir/$cache_name.md5)"
    +            local -a cached_tasks
    +            if [[ -z $cur ]]; then
    +                cached_tasks=(${(f)"$(cat $cache_dir/$cached_checksum)"})
    +            else
    +                cached_tasks=(${(f)"$(grep "^${cur//:/\\\\:}" $cache_dir/$cached_checksum)"})
    +            fi
    +            _describe 'all tasks' cached_tasks && ret=0
    +        else
    +            __gradle-generate-tasks-cache
    +        fi
    +
    +        # Regenerate tasks cache in the background
    +        if [[ $gradle_files_checksum != "$(cat $cache_dir/$cache_name.md5)" || ! -f $cache_dir/$gradle_files_checksum || $(wc -c < $cache_dir/$gradle_files_checksum) -le 1 ]]; then
    +            $(__gradle-generate-tasks-cache 1>&2 2>/dev/null &)
    +        fi
    +    else
    +        _describe 'built-in tasks' '(
    +            "buildEnvironment:Displays all buildscript dependencies declared in root project."
    +            "components:Displays the components produced by root project."
    +            "dependencies:Displays all dependencies declared in root project."
    +            "dependencyInsight:Displays the insight into a specific dependency in root project."
    +            "dependentComponents:Displays the dependent components of components in root project."
    +            "help:Displays a help message."
    +            "init:Initializes a new Gradle build."
    +            "model:Displays the configuration model of root project."
    +            "projects:Displays the sub-projects of root project."
    +            "properties:Displays the properties of root project."
    +            "tasks:Displays the tasks runnable from root project."
    +            "wrapper:Generates Gradle wrapper files."
    +            )' && ret=0
    +    fi
    +}
    +
    +__gradle_subcommand() {
    +    integer ret=1
    +
    +    case "$words[1]" in
    +        (dependencies)
    +            _arguments \
    +                '--configuration=[The configuration to generate the report for.]:dependency configuration:_gradle_dependency_configurations' && ret=0
    +            ;;
    +        (dependencyInsight)
    +            _arguments \
    +                '--dependency=[Shows the details of given dependency.]' \
    +                '--configuration=[Looks for the dependency in given configuration.]:dependency configuration:_gradle_dependency_configurations' && ret=0
    +            ;;
    +        (help)
    +            _arguments \
    +                '--task[The task to show help for.]' && ret=0
    +            ;;
    +        (init)
    +            _arguments \
    +                '--dsl=[DSL to be used in generated scripts.]:dsl:(groovy kotlin)' \
    +                '--package=[Package for the generated source.]' \
    +                '--project-name=[Name of the generated project.]' \
    +                '--test-framework=[Test framework to be used.]:test framework:(junit kotlintest scalatest spock testng)' \
    +                '--type=[Project type to generate.]:project type:(basic cpp-application cpp-library groovy-application groovy-library java-application java-library kotlin-application kotlin-library pom scala-library)' && ret=0
    +            ;;
    +        (tasks)
    +            _arguments \
    +                '--all[List all tasks, including subproject tasks.]' \
    +                '--group=[Show tasks only from given task group.]' && ret=0
    +            ;;
    +        (test)
    +            _arguments -C \
    +                '--debug-jvm[Enable debugging for the test process. The process is started suspended and listening on port 5005. Requires the "java" plugin.]' \
    +                '--fail-fast[Stops test execution after the first failed test. Requires the "java" plugin.]' \
    +                '--tests=[Sets test class or method name to be included, * is supported. Requires the "java" plugin.]' \
    +                '(-)*:: :->task-or-option' && ret=0
    +            ;;
    +        (wrapper)
    +            _arguments \
    +                '--distribution-type=[Binary-only or all with docs and sources]:*:distribution type:(bin all)' \
    +                '--gradle-version=[Set Gradle version for wrapper]' \
    +                '--gradle-distribution-sha256-sum=[SHA-256 checksum]' \
    +                '--gradle-distribution-url=[Set Gradle distribution URL]' && ret=0
    +            ;;
    +        (*)
    +            _arguments -C \
    +                {-a,--no-rebuild}'[Do not rebuild project dependencies.]' \
    +                '(--no-build-cache)--build-cache[Enable the Gradle build cache.]' \
    +                {-b,--build-file}'[Specifies the build file.]:build script:_files -g \*.gradle' \
    +                {-C,--cache}'[Specifies how compiled build scripts should be cached.]:cache policy:(on rebuild)' \
    +                {-c,--settings-file}'[Specifies the settings file.]:settings file:_files -g \*.gradle' \
    +                '(--no-configure-on-demand)--configure-on-demand[Only relevant projects are configured in this build run.]' \
    +                '--console=[Specifies which type of console output to generate.]:console output type:(plain auto rich verbose)' \
    +                '--continue[Continues task execution after a task failure.]' \
    +                '-Dorg.gradle.cache.reserved.mb=[Reserve Gradle Daemon memory for operations.]' \
    +                '-Dorg.gradle.caching=[Set true to enable Gradle build cache.]:enable build cache:(true false)' \
    +                '-Dorg.gradle.console=[Set type of console output to generate.]:console output type:(plain auto rich verbose)' \
    +                '-Dorg.gradle.daemon.debug=[Set true to debug Gradle Daemon.]:enable daemon debug:(true false)' \
    +                '-Dorg.gradle.daemon.idletimeout=[Kill Gradle Daemon after # idle millis.]' \
    +                '-Dorg.gradle.debug=[Set true to debug Gradle Client.]' \
    +                '-Dorg.gradle.jvmargs=[Set JVM arguments.]' \
    +                '-Dorg.gradle.java.home=[Set JDK home dir.]' \
    +                '-Dorg.gradle.logging.level=[Set default Gradle log level.]:log level:(quiet warn lifecycle info debug)' \
    +                '-Dorg.gradle.parallel=[Set true to enable parallel project builds.]:enable parallel build:(true false)' \
    +                '-Dorg.gradle.priority=[Set priority for Gradle worker processes.]:priority:(low normal)' \
    +                '-Dorg.gradle.warning.mode=[Set types of warnings to log.]:warning level:(all summary none)' \
    +                '-Dorg.gradle.workers.max=[Set the number of workers Gradle is allowed to use.]' \
    +                '(-i --info -w --warn -q --quiet)'{-d,--debug}'[Log in debug mode (includes normal stacktrace).]' \
    +                '(--no-daemon)--daemon[Uses the Gradle daemon to run the build. Starts the daemon if not running.]' \
    +                '--foreground[Starts the Gradle daemon in the foreground.]' \
    +                {-g,--gradle-user-home}'[Specifies the gradle user home directory.]:file:_directories' \
    +                \*--include-build'[Includes the specified build in the composite.]:file:_directories' \
    +                \*{-I,--init-script}'[Specifies an initialization script.]:init script:_files -g \*.gradle' \
    +                '(-d --debug -w --warn -q --quiet)'{-i,--info}'[Set log level to info.]' \
    +                '--max-workers[Set the maximum number of concurrent workers that Gradle may use.]:number workers' \
    +                {-m,--dry-run}'[Runs the builds with all task actions disabled.]' \
    +                '--no-color[Do not use color in the console output. (Removed in Gradle 3.0)]' \
    +                '(--build-cache)--no-build-cache[Do not use the Gradle build cache.]' \
    +                '(--configure-on-demand)--no-configure-on-demand[Disables configuration on demand.]' \
    +                '(--daemon)--no-daemon[Do not use the Gradle daemon to run the build.]' \
    +                '(--parallel)--no-parallel[Disables parallel execution to build projects.]' \
    +                '(--scan)--no-scan[Do not create a build scan.]' \
    +                '--offline[The build should operate without accessing network resources.]' \
    +                \*{-P+,--project-prop}'[Set project property for the build script (e.g. -Pmyprop=myvalue).]:project property (prop=val):' \
    +                {-p,--project-dir}'[Specifies the start directory for Gradle.]:start directory:_directories' \
    +                '(--no-parallel)--parallel[Build projects in parallel. Gradle will attempt to determine the optimal number of executor threads to use.]' \
    +                '--profile[Profiles build execution time and generates a report in the /reports/profile directory.]' \
    +                '--priority[Set priority for Gradle worker processes.]:priority:(low normal)' \
    +                '--project-cache-dir[Specifies the project-specific cache directory.]:cache directory:_directories' \
    +                '(-d --debug -w --warn -i --info)'{-q,--quiet}'[Log errors only.]' \
    +                '--recompile-scripts[Force build script recompiling.]' \
    +                '--refresh[Refresh the state of resources of the type(s) specified.]:refresh policy:(dependencies)' \
    +                '--refresh-dependencies[Refresh the state of dependencies.]' \
    +                '--rerun-tasks[Ignore previously cached task results.]' \
    +                '(--no-scan)--scan[Create a build scan.]' \
    +                '(-S --full-stacktrace)'{-s,--stacktrace}'[Print out the stacktrace for all exceptions.]' \
    +                '(-s --stacktrace)'{-S,--full-stacktrace}'[Print out the full (very verbose) stacktrace for all exceptions.]' \
    +                '--system-prop[system property (prop=val)]' \
    +                {-t,--continuous}'[Enables continuous build. Gradle does not exit and will re-execute tasks when task file inputs change.]' \
    +                {-u,--no-search-upward}"[Don't search in parent folders for a settings.gradle file.]" \
    +                '(--write-locks)--update-locks[Perform a partial update of the dependency lock.]' \
    +                '(-d --debug -q --quiet -i --info)'{-w,--warn}'[Log warnings and errors only.]' \
    +                '--warning-mode=[Set types of warnings to log.]:warning mode:(all summary none)' \
    +                '(--update-locks)--write-locks[Persists dependency resolution for locked configurations.]' \
    +                {-x,--exclude-task}'[Specify a task to be excluded from execution.]' && ret=0
    +            ;;
    +    esac
    +
    +    return ret
    +}
    +
    +(( $+functions[_gradle_dependency_configurations] )) ||
    +_gradle_dependency_configurations() {
    +    local configurations
    +    configurations=(
    +        'compileClasspath'
    +        'runtimeClasspath'
    +        'testCompileClasspath'
    +        'testRuntimeClasspath'
    +    )
    +    _describe -t 'dependency configurations' "dependency configuration" configurations
    +}
    +
    +_gradle() {
    +    local cur=${words[CURRENT]}
    +    local curcontext="$curcontext" state
    +    integer ret=1
    +    typeset -A opt_args
    +
    +    _arguments -C \
    +        '(-)'{-\?,-h,--help}'[Shows a help message.]' \
    +        {-a,--no-rebuild}'[Do not rebuild project dependencies.]' \
    +        '(--no-build-cache)--build-cache[Enable the Gradle build cache.]' \
    +        {-b,--build-file}'[Specifies the build file.]:build script:_files -g \*.gradle' \
    +        {-C,--cache}'[Specifies how compiled build scripts should be cached.]:cache policy:(on rebuild)' \
    +        {-c,--settings-file}'[Specifies the settings file.]:settings file:_files -g \*.gradle:->argument-expected' \
    +        '(--no-configure-on-demand)--configure-on-demand[Only relevant projects are configured in this build run.]' \
    +        '--console=[Specifies which type of console output to generate.]:console output type:(plain auto rich verbose)' \
    +        '--continue[Continues task execution after a task failure.]' \
    +        '-Dorg.gradle.cache.reserved.mb=[Reserve Gradle Daemon memory for operations.]' \
    +        '-Dorg.gradle.caching=[Set true to enable Gradle build cache.]' \
    +        '-Dorg.gradle.console=[Set type of console output to generate.]:console output type:(plain auto rich verbose)' \
    +        '-Dorg.gradle.daemon.debug=[Set true to debug Gradle Daemon.]' \
    +        '-Dorg.gradle.daemon.idletimeout=[Kill Gradle Daemon after # idle millis.]' \
    +        '-Dorg.gradle.debug=[Set true to debug Gradle Client.]' \
    +        '-Dorg.gradle.jvmargs=[Set JVM arguments.]' \
    +        '-Dorg.gradle.java.home=[Set JDK home dir.]' \
    +        '-Dorg.gradle.logging.level=[Set default Gradle log level.]:log level:(quiet warn lifecycle info debug)' \
    +        '-Dorg.gradle.parallel=[Set true to enable parallel project builds.]:(true false)' \
    +        '-Dorg.gradle.priority=[Set priority for Gradle worker processes.]:priority:(low normal)' \
    +        '-Dorg.gradle.warning.mode=[Set types of warnings to log.]:warning level:(all summary none)' \
    +        '-Dorg.gradle.workers.max=[Set the number of workers Gradle is allowed to use.]' \
    +        '(-i --info -w --warn -q --quiet)'{-d,--debug}'[Log in debug mode (includes normal stacktrace).]' \
    +        '(--no-daemon)--daemon[Uses the Gradle daemon to run the build. Starts the daemon if not running.]' \
    +        '--foreground[Starts the Gradle daemon in the foreground.]' \
    +        {-g,--gradle-user-home}'[Specifies the gradle user home directory.]:home directory:_directories:->argument-expected' \
    +        '(-)--gui[Launches the Gradle GUI. (Removed in Gradle 4.0)]' \
    +        \*--include-build'[Includes the specified build in the composite.]:file:_directories:->argument-expected' \
    +        \*{-I,--init-script}'[Specifies an initialization script.]:init script:_files -g \*.gradle:->argument-expected' \
    +        '(-d --debug -w --warn -q --quiet)'{-i,--info}'[Set log level to info.]' \
    +        '--max-workers[Set the maximum number of concurrent workers that Gradle may use.]:number workers:->argument-expected' \
    +        {-m,--dry-run}'[Runs the builds with all task actions disabled.]' \
    +        '--no-color[Do not use color in the console output. (Removed in Gradle 3.0)]' \
    +        '(--build-cache)--no-build-cache[Do not use the Gradle build cache.]' \
    +        '(--configure-on-demand)--no-configure-on-demand[Disables configuration on demand.]' \
    +        '(--daemon)--no-daemon[Do not use the Gradle daemon to run the build.]' \
    +        '(--parallel)--no-parallel[Disables parallel execution to build projects.]' \
    +        '(--scan)--no-scan[Do not create a build scan.]' \
    +        '--offline[The build should operate without accessing network resources.]' \
    +        \*{-P+,--project-prop}'[Set project property for the build script (e.g. -Pmyprop=myvalue).]:project property (prop=val):->argument-expected' \
    +        {-p,--project-dir}'[Specifies the start directory for Gradle.]:start directory:_directories:->argument-expected' \
    +        '(--no-parallel)--parallel[Build projects in parallel. Gradle will attempt to determine the optimal number of executor threads to use.]' \
    +        '--priority=[Set priority for Gradle worker processes.]:priority:(low normal)' \
    +        '--profile[Profiles build execution time and generates a report in the /reports/profile directory.]' \
    +        '--project-cache-dir=[Specifies the project-specific cache directory.]:cache directory:_directories:->argument-expected' \
    +        '(-d --debug -w --warn -i --info)'{-q,--quiet}'[Log errors only.]' \
    +        '--recompile-scripts[Force build script recompiling.]' \
    +        '--refresh[Refresh the state of resources of the type(s) specified.]:refresh policy:(dependencies)' \
    +        '--refresh-dependencies[Refresh the state of dependencies.]' \
    +        '--rerun-tasks[Ignore previously cached task results.]' \
    +        '(--no-scan)--scan[Create a build scan.]' \
    +        '(-S --full-stacktrace)'{-s,--stacktrace}'[Print out the stacktrace for all exceptions.]' \
    +        '(-s --stacktrace)'{-S,--full-stacktrace}'[Print out the full (very verbose) stacktrace for all exceptions.]' \
    +        '(-)--status[Shows status of running and recently stopped Gradle Daemons.]' \
    +        '(-)--stop[Stops all Gradle daemons.]' \
    +        '--system-prop[system property (prop=val)]' \
    +        {-t,--continuous}'[Enables continuous build. Gradle does not exit and will re-execute tasks when task file inputs change.]' \
    +        {-u,--no-search-upward}"[Don't search in parent folders for a settings.gradle file.]" \
    +        '(--write-locks)--update-locks[Perform a partial update of the dependency lock.]' \
    +        '(-)'{-v,--version}'[Print version info.]' \
    +        '(-d --debug -q --quiet -i --info)'{-w,--warn}'[Log warnings and errors only.]' \
    +        '--warning-mode=[Set types of warnings to log.]:warning mode:(all summary none)' \
    +        '(--update-locks)--write-locks[Persists dependency resolution for locked configurations.]' \
    +        {-x,--exclude-task}'[Specify a task to be excluded from execution.]' \
    +        '(-)*:: :->task-or-option' && ret=0
    +
    +    if [[ $words[CURRENT] != -* && $state != "argument-expected" ]]; then
    +        __gradle_tasks && ret=0
    +    else
    +        curcontext=${curcontext%:*:*}:gradle-$words[1]:
    +        __gradle_subcommand && ret=0
    +    fi
    +
    +    return ret
    +}
    +
    +_gradle "$@"
    diff --git a/dot_oh-my-zsh/plugins/gradle/gradle.plugin.zsh b/dot_oh-my-zsh/plugins/gradle/gradle.plugin.zsh
    new file mode 100644
    index 0000000..5bca364
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/gradle/gradle.plugin.zsh
    @@ -0,0 +1,26 @@
    +# Looks for a gradlew file in the current working directory
    +# or any of its parent directories, and executes it if found.
    +# Otherwise it will call gradle directly.
    +function gradle-or-gradlew() {
    +  # find project root
    +  # taken from https://github.com/gradle/gradle-completion
    +  local dir="$PWD" project_root="$PWD"
    +  while [[ "$dir" != / ]]; do
    +    if [[ -f "$dir/settings.gradle" || -f "$dir/settings.gradle.kts" || -f "$dir/gradlew" ]]; then
    +      project_root="$dir"
    +      break
    +    fi
    +    dir="${dir:h}"
    +  done
    +
    +  # if gradlew found, run it instead of gradle
    +  if [[ -f "$project_root/gradlew" ]]; then
    +    echo "executing gradlew instead of gradle"
    +    "$project_root/gradlew" "$@"
    +  else
    +    command gradle "$@"
    +  fi
    +}
    +
    +alias gradle=gradle-or-gradlew
    +compdef _gradle gradle-or-gradlew
    diff --git a/dot_oh-my-zsh/plugins/grails/README.md b/dot_oh-my-zsh/plugins/grails/README.md
    new file mode 100644
    index 0000000..5d9ebd7
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/grails/README.md
    @@ -0,0 +1,16 @@
    +# Grails plugin
    +
    +This plugin adds completion for the [Grails 2 CLI](https://grails.github.io/grails2-doc/2.5.x/guide/commandLine.html)
    +
    +To use it, add `grails` to the plugins array in your zshrc file:
    +
    +```zsh
    +plugins=(... grails)
    +```
    +
    +It looks for scripts in the following paths:
    +
    +- `$GRAILS_HOME/scripts`
    +- `~/.grails/scripts`
    +- `./scripts`
    +- `./plugins/*/scripts`
    diff --git a/dot_oh-my-zsh/plugins/grails/grails.plugin.zsh b/dot_oh-my-zsh/plugins/grails/grails.plugin.zsh
    new file mode 100644
    index 0000000..ddc2574
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/grails/grails.plugin.zsh
    @@ -0,0 +1,60 @@
    +_enumerateGrailsScripts() {
    +    # Default directories
    +    directories=($GRAILS_HOME/scripts ~/.grails/scripts ./scripts)
    +
    +    # Check all of the plugins directories, if they exist
    +    if [ -d plugins ]
    +    then
    +        directories+=(plugins/*/scripts)
    +    fi
    +    
    +    # Enumerate all of the Groovy files
    +    files=()
    +    for dir in $directories;
    +    do
    +        if [ -d $dir ]
    +        then
    +            files+=($dir/[^_]*.groovy)
    +        fi
    +    done
    +    
    +    # Don't try to basename ()
    +    if [ ${#files} -eq 0 ];
    +    then
    +        return
    +    fi
    +    
    +    scripts=()
    +    for file in $files
    +    do
    +        # - Strip the path
    +        # - Remove all scripts with a leading '_'
    +        # - PackagePlugin_.groovy -> PackagePlugin
    +        # - PackagePlugin         -> Package-Plugin
    +        # - Package-Plugin        -> package-plugin
    +        command=$(basename $file                              \
    +            | sed -E  -e 's/^_?([^_]+)_?.groovy/\1/'\
    +                      -e 's/([a-z])([A-Z])/\1-\2/g' \
    +            | tr "[:upper:]" "[:lower:]"            \
    +            | sort                                  \
    +            | uniq)
    +        scripts+=($command)
    +    done
    +    echo $scripts
    +}
    + 
    +_grails() {
    +    if (( CURRENT == 2 )); then
    +        scripts=( $(_enumerateGrailsScripts) )
    +        
    +        if [ ${#scripts} -ne 0 ];
    +        then
    +            _multi_parts / scripts
    +            return
    +        fi
    +    fi
    +    
    +    _files
    +}
    + 
    +compdef _grails grails
    diff --git a/dot_oh-my-zsh/plugins/grc/README.md b/dot_oh-my-zsh/plugins/grc/README.md
    new file mode 100644
    index 0000000..515e876
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/grc/README.md
    @@ -0,0 +1,15 @@
    +# Generic Colouriser plugin
    +
    +This plugin adds wrappers for commands supported by [Generic Colouriser](https://github.com/garabik/grc):
    +
    +To use it, add `grc` to the plugins array in your zshrc file:
    +
    +```zsh
    +plugins=(... grc)
    +```
    +
    +## Commands
    +
    +The plugin sources the bundled alias generator from the installation, available at `/etc/grc.zsh`.
    +The complete list of wrapped commands may vary depending on the installed version of `grc`, look
    +at the file mentioned above (`/etc/grc.zsh`) to see which commands are wrapped.
    diff --git a/dot_oh-my-zsh/plugins/grc/grc.plugin.zsh b/dot_oh-my-zsh/plugins/grc/grc.plugin.zsh
    new file mode 100644
    index 0000000..b709b9e
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/grc/grc.plugin.zsh
    @@ -0,0 +1,17 @@
    +#!/usr/bin/env zsh
    +
    +# common grc.zsh paths
    +files=(
    +  /etc/grc.zsh            # default
    +  /usr/local/etc/grc.zsh  # homebrew
    +)
    +
    +# verify the file is readable and source it
    +for file in $files; do
    +  if [[ -r "$file" ]]; then
    +    source "$file"
    +    break
    +  fi
    +done
    +
    +unset file files
    diff --git a/dot_oh-my-zsh/plugins/grunt/README.md b/dot_oh-my-zsh/plugins/grunt/README.md
    new file mode 100644
    index 0000000..a69a9b7
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/grunt/README.md
    @@ -0,0 +1,37 @@
    +# grunt plugin
    +
    +This plugin adds completions for [grunt](https://github.com/gruntjs/grunt).
    +
    +To use it, add `grunt` to the plugins array of your `.zshrc` file:
    +```zsh
    +plugins=(... grunt)
    +```
    +
    +## Enable caching
    +
    +If you want to use the cache, set the following in your `.zshrc`:
    +```zsh
    +zstyle ':completion:*' use-cache yes
    +```
    +
    +## Settings
    +
    +* Show grunt file path:
    +  ```zsh
    +  zstyle ':completion::complete:grunt::options:' show_grunt_path yes
    +  ```
    +* Cache expiration days (default: 7):
    +  ```zsh
    +  zstyle ':completion::complete:grunt::options:' expire 1
    +  ```
    +* Not update options cache if target gruntfile is changed.
    +  ```zsh
    +  zstyle ':completion::complete:grunt::options:' no_update_options yes
    +  ```
    +
    +Note that if you change the zstyle settings, you should delete the cache file and restart zsh.
    +
    +```zsh
    +$ rm ~/.zcompcache/grunt
    +$ exec zsh
    +```
    diff --git a/dot_oh-my-zsh/plugins/grunt/grunt.plugin.zsh b/dot_oh-my-zsh/plugins/grunt/grunt.plugin.zsh
    new file mode 100644
    index 0000000..a89469a
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/grunt/grunt.plugin.zsh
    @@ -0,0 +1,255 @@
    +#compdef grunt
    +#autoload
    +# -----------------------------------------------------------------------------
    +#  _grunt
    +#
    +#  Completion script for grunt.
    +#   - https://github.com/gruntjs/grunt
    +#   - https://github.com/gruntjs/grunt-cli
    +#
    +# -----------------------------------------------------------------------------
    +#
    +#  Version     : 0.1.2
    +#  Author      : Yonchu 
    +#  License     : MIT License
    +#  Repository  : https://github.com/yonchu/grunt-zsh-completion
    +#  Last Change : 20 Aug 2014.
    +#
    +#  Copyright (c) 2013 Yonchu.
    +#
    +# -----------------------------------------------------------------------------
    +# USAGE
    +# -----
    +#
    +# Enable caching:
    +#
    +#   If you want to use the cache, set the followings in your .zshrc:
    +#
    +#     zstyle ':completion:*' use-cache yes
    +#
    +#
    +# Settings:
    +#
    +#  - Show grunt file path:
    +#      zstyle ':completion::complete:grunt::options:' show_grunt_path yes
    +#
    +#  - Cache expiration days (default: 7):
    +#      zstyle ':completion::complete:grunt::options:' expire 1
    +#
    +#  - Not update options cache if target gruntfile is changed.
    +#      zstyle ':completion::complete:grunt::options:' no_update_options yes
    +#
    +#  Note that if you change the zstyle settings,
    +#  you should delete the cache file and restart zsh.
    +#
    +#    $ rm ~/.zcompcache/grunt
    +#    $ exec zsh
    +#
    +# -----------------------------------------------------------------------------
    +
    +function __grunt() {
    +    local curcontext="$curcontext" update_policy state
    +    local show_grunt_path update_msg gruntfile opts tasks
    +
    +    # Setup cache-policy.
    +    zstyle -s ":completion:${curcontext}:" cache-policy update_policy
    +    if [[ -z $update_policy ]]; then
    +        zstyle ":completion:${curcontext}:" cache-policy __grunt_caching_policy
    +    fi
    +
    +    # Check show_path option.
    +    zstyle -b ":completion:${curcontext}:options:" show_grunt_path show_grunt_path
    +
    +    # Get current gruntfile.
    +    gruntfile=$(__grunt_get_gruntfile)
    +
    +    # Initialize opts and tasks.
    +    opts=()
    +    tasks=()
    +
    +    # Add help options.
    +    opts+=('(- 1 *)'{-h,--help}'[Display this help text.]')
    +
    +    ## Complete without gruntfile.
    +    if [[ ! -f $gruntfile ]]; then
    +        _arguments "${opts[@]}"
    +        return
    +    fi
    +
    +    ## Complete with gruntfile.
    +    # Retrieve cache.
    +    if ! __grunt_update_cache "$gruntfile"; then
    +        update_msg=' (cache updated)'
    +    fi
    +
    +    # Make options completion.
    +    if [[ ${#__grunt_opts} -gt 0 ]]; then
    +        opts+=("${__grunt_opts[@]}")
    +    fi
    +
    +    # Complete arguments.
    +    _arguments \
    +        "${opts[@]}" \
    +        '*: :->tasks' \
    +        && return
    +
    +    case $state in
    +        tasks)
    +            if [[ $show_grunt_path == 'yes' ]]; then
    +                update_msg="$update_msg: ${${gruntfile/#$HOME/~}%/}"
    +            fi
    +            # Make tasks completion.
    +            if [[ ${#__grunt_tasks} -gt 0 ]]; then
    +                tasks+=("${__grunt_tasks[@]}")
    +                _describe -t grunt-task "$verbose grunt task$update_msg" tasks || return 1
    +            fi
    +        ;;
    +    esac
    +
    +    return 0
    +}
    +
    +# Cache policy:
    +#   The cache file name: grunt
    +#   The cache variable name: __grunt_version __grunt_gruntfile __grunt_opts __grunt_tasks
    +function __grunt_update_cache() {
    +    # TODO
    +    local version='0.1.2'
    +    local is_updating=0
    +    local gruntfile="$1"
    +    local grunt_info no_update_options cache_path
    +
    +    # Check no_update_options option.
    +    zstyle -b ":completion:${curcontext}:options:" no_update_options no_update_options
    +
    +
    +    if ! ( ((  $+__grunt_gruntfile )) \
    +        && (( $+__grunt_opts )) \
    +        && (( $+__grunt_tasks )) ) \
    +        && ! _retrieve_cache 'grunt'; then
    +        is_updating=1
    +    fi
    +
    +    if [[ $gruntfile != $__grunt_gruntfile ]]; then
    +        # Except for --help options.
    +        __grunt_gruntfile=$gruntfile
    +        if [[ $no_update_options == 'yes' ]]; then
    +            if [[ $PREFIX == ${PREFIX#-} ]]; then
    +                # Not options completions.
    +                is_updating=1
    +            elif [[ ${#__grunt_opts} -lt 2 ]]; then
    +                is_updating=1
    +            else
    +                unset __grunt_gruntfile
    +            fi
    +        else
    +            is_updating=1
    +        fi
    +    else
    +        if [[ $PREFIX != ${PREFIX#-} && ${#__grunt_opts} -gt 1 ]]; then
    +            unset __grunt_gruntfile
    +        fi
    +    fi
    +
    +    if _cache_invalid 'grunt'; then
    +        is_updating=1
    +    fi
    +
    +    # Check _grunt version.
    +    if [[ $__grunt_version != $version ]]; then
    +        is_updating=1
    +    fi
    +
    +    if [[ $is_updating -ne 0 ]]; then
    +        # Update cache.
    +        __grunt_version=$version
    +        __grunt_gruntfile=$gruntfile
    +        is_updating=1
    +        grunt_info=$(grunt --help --no-color --gruntfile "$__grunt_gruntfile" 2>/dev/null)
    +        __grunt_opts=(${(f)"$(__grunt_get_opts "$grunt_info")"})
    +        __grunt_tasks=(${(f)"$(__grunt_get_tasks "$grunt_info")"})
    +        _store_cache 'grunt' __grunt_version __grunt_gruntfile __grunt_opts __grunt_tasks
    +    fi
    +    return $is_updating
    +}
    +
    +function __grunt_get_tasks() {
    +    echo -E "$1" \
    +        | grep 'Available tasks' -A 100 \
    +        | grep '^ ' \
    +        | sed -e 's/^[[:blank:]]*//' -e 's/[[:blank:]]*$//' \
    +        | sed -e 's/:/\\:/g' \
    +        | sed -e 's/  /:/'
    +}
    +
    +function __grunt_get_opts() {
    +    local opt_hunk opt_sep opt_num line opt
    +    opt_hunk=$(echo -E "$1" \
    +        | grep 'Options$' -A 100 \
    +        | sed '1 d' \
    +        | sed -e 's/[[:blank:]]*$//' \
    +    )
    +
    +    opt_sep=()
    +    opt_hunk=(${(f)opt_hunk})
    +    opt_num=0
    +    for line in "$opt_hunk[@]"; do
    +        opt=$(echo -E "$line" | sed -e 's/^[[:blank:]]*//')
    +        if [[ $line == $opt ]]; then
    +            break
    +        fi
    +        if [[ $opt != ${opt#-} ]]; then
    +            # Start with -
    +            (( opt_num++ ))
    +            opt=$(echo -E "$opt" | sed 's/^\(\(--[^ ]*\)\(, \(-[^ ]*\)\)*\)  */\2\\t\4\\\t/')
    +        fi
    +        opt_sep[$opt_num]=("${opt_sep[$opt_num]}${opt}")
    +    done
    +
    +    for line in "$opt_sep[@]"; do
    +        opt=(${(s:\t:)line})
    +        if [[ ${opt[1]} == '--help' ]]; then
    +            continue
    +        fi
    +        if [[ ${#opt} -eq 2 ]]; then
    +            echo -E "(${opt[1]})${opt[1]}[${opt[2]}]"
    +        else
    +            echo -E "(${opt[1]},${opt[2]})${opt[1]}[${opt[3]}]"
    +            echo -E "(${opt[1]},${opt[2]})${opt[2]}[${opt[3]}]"
    +        fi
    +    done
    +}
    +
    +function __grunt_get_gruntfile() {
    +    local gruntfile
    +    local curpath="$PWD"
    +    while [ "$curpath" ]; do
    +        for gruntfile in "$curpath/"{G,g}runtfile.{js,coffee}; do
    +            if [[ -e "$gruntfile" ]]; then
    +                echo "$gruntfile"
    +                return
    +            fi
    +        done
    +        curpath=${curpath%/*}
    +    done
    +    return 1
    +}
    +
    +function __grunt_caching_policy() {
    +    # Returns status zero if the completions cache needs rebuilding.
    +
    +    # Rebuild if .agignore more recent than cache.
    +    if [[ -f $__grunt_gruntfile && $__grunt_gruntfile -nt $1 ]]; then
    +        # Invalid cache because gruntfile is old.
    +        return 0
    +    fi
    +
    +    local -a oldp
    +    local expire
    +    zstyle -s ":completion:${curcontext}:options:" expire expire || expire=7
    +    # Rebuild if cache is more than $expire days.
    +    oldp=( "$1"(Nm+$expire) )
    +    (( $#oldp ))
    +}
    +
    +compdef __grunt grunt
    \ No newline at end of file
    diff --git a/dot_oh-my-zsh/plugins/gulp/README.md b/dot_oh-my-zsh/plugins/gulp/README.md
    new file mode 100644
    index 0000000..4ed2b99
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/gulp/README.md
    @@ -0,0 +1,8 @@
    +# gulp plugin
    +
    +This plugin adds autocompletion for your [`gulp`](https://gulpjs.com/) tasks. It grabs all available tasks from the `gulpfile.js` in the current directory.
    +
    +To use it, add `gulp` to the plugins array of your `.zshrc` file:
    +```
    +plugins=(... gulp)
    +```
    diff --git a/dot_oh-my-zsh/plugins/gulp/gulp.plugin.zsh b/dot_oh-my-zsh/plugins/gulp/gulp.plugin.zsh
    new file mode 100644
    index 0000000..6234302
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/gulp/gulp.plugin.zsh
    @@ -0,0 +1,29 @@
    +#!/usr/bin/env zsh
    +
    +#
    +# gulp-autocompletion-zsh
    +#
    +# Autocompletion for your gulp.js tasks
    +#
    +# Copyright(c) 2014 André König 
    +# MIT Licensed
    +#
    +
    +#
    +# André König
    +# GitHub: https://github.com/akoenig
    +# Twitter: https://twitter.com/caiifr
    +#
    +
    +#
    +# Grabs all available tasks from the `gulpfile.js`
    +# in the current directory.
    +#
    +function _gulp_completion {
    +    compls=$(gulp --tasks-simple 2>/dev/null)
    +
    +    completions=(${=compls})
    +    compadd -- $completions
    +}
    +
    +compdef _gulp_completion gulp
    diff --git a/dot_oh-my-zsh/plugins/hanami/README.md b/dot_oh-my-zsh/plugins/hanami/README.md
    new file mode 100644
    index 0000000..c9e09f4
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/hanami/README.md
    @@ -0,0 +1,45 @@
    +# Hanami Plugin
    +
    +This plugin adds convenient aliases to work with [Hanami](https://hanamirb.org/) via console.
    +It's inspired by Rails plugin, so if you've used it, you'll feel like home.
    +
    +To use it, add `hanami` to the plugins array in your zshrc file:
    +
    +```zsh
    +plugins=(... hanami)
    +```
    +
    +## Usage
    +
    +For example, type `hc` into your console when you're within Hanami project directory to run
    +the application console. Have a look at available shortcuts below. You can read more about
    +these commands [on the official website](https://hanamirb.org/guides/command-line/applications/).
    +
    +## Aliases
    +
    +| Alias | Command                     | Description                                             |
    +|-------|-----------------------------|---------------------------------------------------------|
    +| HED\* | `HANAMI_ENV=development`    | Set environment variable HANAMI_ENV to development      |
    +| HEP\* | `HANAMI_ENV=production`     | Set environment variable HANAMI_ENV to production       |
    +| HET\* | `HANAMI_ENV=test`           | Set environment variable HANAMI_ENV to test             |
    +| hc    | `hanami console`            | Run application console                                 |
    +| hd    | `hanami destroy`            | Remove specified hanami resource                        |
    +| hg    | `hanami generate`           | Create specified hanami resource                        |
    +| hgm   | `hanami generate migration` | Create migration file                                   |
    +| hs    | `hanami server`             | Launch server with hanami application                   |
    +| hsp   | `hanami server -p`          | Launch server with specified port                       |
    +| hr    | `hanami routes`             | List application routes                                 |
    +| hdc   | `hanami db create`          | Create application database                             |
    +| hdd   | `hanami db drop`            | Delete application database                             |
    +| hdp   | `hanami db prepare`         | Prepare database for the current environment            |
    +| hda   | `hanami db apply`           | Recreates a fresh schema after migrations (destructive) |
    +| hdv   | `hanami db version`         | Print current database version                          |
    +| hdrs  | `hdd && hdp`                | Drop and recreate application database                  |
    +| hdtp  | `HET hdp`                   | Actualize test environment database                     |
    +| hrg   | `hr | grep`                 | Grep hanami routes with specified pattern               |
    +
    +\* You should use these at the beginning of a command, for example:
    +
    +```console
    +$ HED hdd # equivalent to 'HANAMI_ENV=development hanami db drop'
    +```
    diff --git a/dot_oh-my-zsh/plugins/hanami/hanami.plugin.zsh b/dot_oh-my-zsh/plugins/hanami/hanami.plugin.zsh
    new file mode 100644
    index 0000000..42143b4
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/hanami/hanami.plugin.zsh
    @@ -0,0 +1,19 @@
    +alias HED='HANAMI_ENV=development '
    +alias HEP='HANAMI_ENV=production '
    +alias HET='HANAMI_ENV=test '
    +
    +alias hc='hanami console'
    +alias hd='hanami destroy'
    +alias hg='hanami generate'
    +alias hgm='hanami generate migration'
    +alias hs='hanami server'
    +alias hsp='hanami server -p'
    +alias hr='hanami routes'
    +alias hdc='hanami db create'
    +alias hdd='hanami db drop'
    +alias hdp='hanami db prepare'
    +alias hda='hanami db apply'
    +alias hdv='hanami db version'
    +alias hdrs='hdd && hdp'
    +alias hdtp='HET hdp'
    +alias hrg='hr | grep'
    diff --git a/dot_oh-my-zsh/plugins/hasura/README.md b/dot_oh-my-zsh/plugins/hasura/README.md
    new file mode 100644
    index 0000000..d7db9ed
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/hasura/README.md
    @@ -0,0 +1,9 @@
    +# Hasura plugin
    +
    +This plugin adds completion for [the Hasura CLI](https://hasura.io/docs/latest/hasura-cli/index/).
    +
    +To use it, add `hasura` to the plugins array in your zshrc file:
    +
    +```zsh
    +plugins=(... hasura)
    +```
    diff --git a/dot_oh-my-zsh/plugins/hasura/hasura.plugin.zsh b/dot_oh-my-zsh/plugins/hasura/hasura.plugin.zsh
    new file mode 100644
    index 0000000..18254c4
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/hasura/hasura.plugin.zsh
    @@ -0,0 +1,13 @@
    +if (( ! $+commands[hasura] )); then
    +  return
    +fi
    +
    +# If the completion file does not exist, generate it and then source it
    +# Otherwise, source it and regenerate in the background
    +if [[ ! -f "$ZSH_CACHE_DIR/completions/_hasura" ]]; then
    +  hasura completion zsh --file "$ZSH_CACHE_DIR/completions/_hasura" >/dev/null
    +  source "$ZSH_CACHE_DIR/completions/_hasura"
    +else
    +  source "$ZSH_CACHE_DIR/completions/_hasura"
    +  hasura completion zsh --file "$ZSH_CACHE_DIR/completions/_hasura" >/dev/null &|
    +fi
    diff --git a/dot_oh-my-zsh/plugins/helm/README.md b/dot_oh-my-zsh/plugins/helm/README.md
    new file mode 100644
    index 0000000..8be024b
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/helm/README.md
    @@ -0,0 +1,18 @@
    +# Helm plugin
    +
    +This plugin adds completion and aliases for [Helm](https://helm.sh/), the Kubernetes package manager.
    +
    +To use it, add `helm` to the plugins array in your zshrc file:
    +
    +```zsh
    +plugins=(... helm)
    +```
    +
    +## Aliases
    +
    +| Alias | Full command |
    +| ----- | ------------ |
    +| h     | helm         |
    +| hin   | helm install |
    +| hse   | helm search  |
    +| hup   | helm upgrade |
    diff --git a/dot_oh-my-zsh/plugins/helm/helm.plugin.zsh b/dot_oh-my-zsh/plugins/helm/helm.plugin.zsh
    new file mode 100644
    index 0000000..7fc05be
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/helm/helm.plugin.zsh
    @@ -0,0 +1,18 @@
    +if (( ! $+commands[helm] )); then
    +  return
    +fi
    +
    +# If the completion file does not exist, generate it and then source it
    +# Otherwise, source it and regenerate in the background
    +if [[ ! -f "$ZSH_CACHE_DIR/completions/_helm" ]]; then
    +  helm completion zsh | tee "$ZSH_CACHE_DIR/completions/_helm" >/dev/null
    +  source "$ZSH_CACHE_DIR/completions/_helm"
    +else
    +  source "$ZSH_CACHE_DIR/completions/_helm"
    +  helm completion zsh | tee "$ZSH_CACHE_DIR/completions/_helm" >/dev/null &|
    +fi
    +
    +alias h='helm'
    +alias hin='helm install'
    +alias hse='helm search'
    +alias hup='helm upgrade'
    diff --git a/dot_oh-my-zsh/plugins/heroku-alias/README.md b/dot_oh-my-zsh/plugins/heroku-alias/README.md
    new file mode 100644
    index 0000000..4b7b953
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/heroku-alias/README.md
    @@ -0,0 +1,127 @@
    +# heroku-alias
    +🧬 Full alias for heroku cli
    +
    +|🚀 last maj|📡 source|
    +|---|---|
    +|02/06/2020|[heroku cli doc](https://devcenter.heroku.com/articles/heroku-cli-commands)|
    +
    +# Alias list
    +
    +## general
    +| Alias  | Command |
    +| ------------- | ------------- |
    +| h | heroku |
    +| hauto | heroku autocomplete $(echo $SHELL) |
    +| hl | heroku local |
    +
    +## config
    +| Alias  | Command |
    +| ------------- | ------------- |
    +| hc | heroku config |
    +| hca | heroku config -a |
    +| hcr | heroku config -r |
    +| hcs | heroku config:set |
    +| hcu | heroku config:unset |
    +| hcfile | function hcfile bellow |
    +
    +```sh
    +hcfile() {
    +  echo " Which platform [-r/a name] ? "
    +  read platform
    +  echo " Which file ? "
    +  read file
    +  while read line;
    +    do heroku config:set "$platform" "$line";
    +  done < "$file"
    +}
    +```
    +
    +## apps and favorites
    +| Alias  | Command |
    +| ------------- | ------------- |
    +| ha | heroku apps |
    +| hpop | heroku create |
    +| hkill | heroku apps:destroy |
    +| hlog | heroku apps:errors |
    +| hfav | heroku apps:favorites |
    +| hfava | heroku apps:favorites:add |
    +| hfavr | heroku apps:favorites:remove |
    +| hai | heroku apps:info |
    +| hair | heroku apps:info -r |
    +| haia | heroku apps:info -a |
    +
    +# auth
    +| Alias  | Command |
    +| ------------- | ------------- |
    +| h2fa | heroku auth:2fa |
    +| h2far | heroku auth:2fa:disable |
    +
    +# access
    +| Alias  | Command |
    +| ------------- | ------------- |
    +| hac | heroku access |
    +| hacr | heroku access -r |
    +| haca | heroku access -a |
    +| hadd | heroku access:add |
    +| hdel | heroku access:remove |
    +| hup | heroku access:update |
    +
    +## addons
    +| Alias  | Command |
    +| ------------- | ------------- |
    +| hads | heroku addons -A |
    +| hada | heroku addons -a |
    +| hadr | heroku addons -r |
    +| hadat | heroku addons:attach |
    +| hadc | heroku addons:create |
    +| hadel | heroku addons:destroy |
    +| hadde | heroku addons:detach |
    +| hadoc | heroku addons:docs |
    +
    +## login
    +| Alias  | Command |
    +| ------------- | ------------- |
    +| hin | heroku login |
    +| hout | heroku logout |
    +| hi | heroku login -i |
    +| hwho | heroku auth:whoami |
    +
    +## authorizations
    +| Alias  | Command |
    +| ------------- | ------------- |
    +| hth | heroku authorizations |
    +| hthadd | heroku authorizations:create |
    +| hthif | heroku authorizations:info |
    +| hthdel | heroku authorizations:revoke |
    +| hthrot | heroku authorizations:rotate |
    +| hthup | heroku authorizations:update |
    +
    +## plugins
    +| Alias  | Command |
    +| ------------- | ------------- |
    +| hp | heroku plugins |
    +
    +# log
    +| Alias  | Command |
    +| ------------- | ------------- |
    +|hg | heroku logs|
    +| hgt | heroku log tail |
    +
    +# database
    +| Alias  | Command |
    +| ------------- | ------------- |
    +| hpg | heroku pg |
    +| hpsql | heroku pg:psql |
    +| hpb | heroku pg:backups |
    +| hpbc | heroku pg:backups:capture |
    +| hpbd | heroku pg:backups:download |
    +| hpbr | heroku pg:backups:restore |
    +
    +# certs
    +| Alias  | Command |
    +| ------------- | ------------- |
    +| hssl | heroku certs |
    +| hssli | heroku certs:info |
    +| hssla | heroku certs:add |
    +| hsslu | heroku certs:update |
    +| hsslr | heroku certs:remove |
    diff --git a/dot_oh-my-zsh/plugins/heroku-alias/heroku.alias.sh b/dot_oh-my-zsh/plugins/heroku-alias/heroku.alias.sh
    new file mode 100644
    index 0000000..7daf715
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/heroku-alias/heroku.alias.sh
    @@ -0,0 +1,92 @@
    +# general
    +alias h='heroku'
    +alias hauto='heroku autocomplete $(echo $SHELL)'
    +alias hl='heroku local'
    +
    +# log
    +alias hg='heroku logs'
    +alias hgt='heroku log tail'
    +
    +# database
    +alias hpg='heroku pg'
    +alias hpsql='heroku pg:psql'
    +alias hpb='heroku pg:backups'
    +alias hpbc='heroku pg:backups:capture'
    +alias hpbd='heroku pg:backups:download'
    +alias hpbr='heroku pg:backups:restore'
    +
    +# config
    +alias hc='heroku config'
    +alias hca='heroku config -a'
    +alias hcr='heroku config -r'
    +alias hcs='heroku config:set'
    +alias hcu='heroku config:unset'
    +
    +# this function allow to load multi env set in a file
    +hcfile() {
    +  echo 'Which platform [-r/a name] ?'
    +  read platform
    +  echo 'Which file ?'
    +  read file
    +  while read line;
    +    do heroku config:set "$platform" "$line";
    +  done < "$file"
    +}
    +
    +# apps and favorites
    +alias ha='heroku apps'
    +alias hpop='heroku create'
    +alias hkill='heroku apps:destroy'
    +alias hlog='heroku apps:errors'
    +alias hfav='heroku apps:favorites'
    +alias hfava='heroku apps:favorites:add'
    +alias hfavr='heroku apps:favorites:remove'
    +alias hai='heroku apps:info'
    +alias hair='heroku apps:info -r'
    +alias haia='heroku apps:info -a'
    +
    +# auth
    +alias h2fa='heroku auth:2fa'
    +alias h2far='heroku auth:2fa:disable'
    +
    +# access
    +alias hac='heroku access'
    +alias hacr='heroku access -r'
    +alias haca='heroku access -a'
    +alias hadd='heroku access:add'
    +alias hdel='heroku access:remove'
    +alias hup='heroku access:update'
    +
    +# addons
    +alias hads='heroku addons -A'
    +alias hada='heroku addons -a'
    +alias hadr='heroku addons -r'
    +alias hadat='heroku addons:attach'
    +alias hadc='heroku addons:create'
    +alias hadel='heroku addons:destroy'
    +alias hadde='heroku addons:detach'
    +alias hadoc='heroku addons:docs'
    +
    +# login
    +alias hin='heroku login'
    +alias hout='heroku logout'
    +alias hi='heroku login -i'
    +alias hwho='heroku auth:whoami'
    +
    +# authorizations
    +alias hth='heroku authorizations'
    +alias hthadd='heroku authorizations:create'
    +alias hthif='heroku authorizations:info'
    +alias hthdel='heroku authorizations:revoke'
    +alias hthrot='heroku authorizations:rotate'
    +alias hthup='heroku authorizations:update'
    +
    +# plugins
    +alias hp='heroku plugins'
    +
    +# cert
    +alias hssl='heroku certs'
    +alias hssli='heroku certs:info'
    +alias hssla='heroku certs:add'
    +alias hsslu='heroku certs:update'
    +alias hsslr='heroku certs:remove'
    diff --git a/dot_oh-my-zsh/plugins/heroku/README.md b/dot_oh-my-zsh/plugins/heroku/README.md
    new file mode 100644
    index 0000000..2bf92c9
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/heroku/README.md
    @@ -0,0 +1,9 @@
    +# Heroku
    +
    +This plugin provides completion for the [Heroku CLI](https://devcenter.heroku.com/articles/heroku-cli).
    +
    +To use it add heroku to the plugins array in your zshrc file:
    +
    +```bash
    +plugins=(... heroku)
    +```
    diff --git a/dot_oh-my-zsh/plugins/heroku/heroku.plugin.zsh b/dot_oh-my-zsh/plugins/heroku/heroku.plugin.zsh
    new file mode 100644
    index 0000000..d22c1bb
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/heroku/heroku.plugin.zsh
    @@ -0,0 +1,9 @@
    +if [[ "$OSTYPE" = darwin* ]]; then
    +  cache_dir="${HOME}/Library/Caches"
    +else
    +  cache_dir="${XDG_CACHE_HOME:-"${HOME}/.cache"}"
    +fi
    +
    +setup_path="${cache_dir}/heroku/autocomplete/zsh_setup"
    +[[ -f "$setup_path" ]] && source $setup_path
    +unset cache_dir setup_path
    diff --git a/dot_oh-my-zsh/plugins/history-substring-search/README.md b/dot_oh-my-zsh/plugins/history-substring-search/README.md
    new file mode 100644
    index 0000000..6d8b564
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/history-substring-search/README.md
    @@ -0,0 +1,198 @@
    +# zsh-history-substring-search
    +
    +This is a clean-room implementation of the [Fish shell][1]'s history search
    +feature, where you can type in any part of any command from history and then
    +press chosen keys, such as the UP and DOWN arrows, to cycle through matches.
    +
    +[1]: http://fishshell.com
    +[2]: http://www.zsh.org/mla/users/2009/msg00818.html
    +[3]: http://sourceforge.net/projects/fizsh/
    +[4]: https://github.com/robbyrussell/oh-my-zsh/pull/215
    +[5]: https://github.com/zsh-users/zsh-history-substring-search
    +[6]: https://github.com/zsh-users/zsh-syntax-highlighting
    +
    +
    +Requirements
    +------------------------------------------------------------------------------
    +
    +* [ZSH](http://zsh.sourceforge.net) 4.3 or newer
    +
    +Install
    +------------------------------------------------------------------------------
    +
    +Using the [Homebrew]( https://brew.sh ) package manager:
    +
    +    brew install zsh-history-substring-search
    +    echo 'source /usr/local/share/zsh-history-substring-search/zsh-history-substring-search.zsh' >> ~/.zshrc
    +
    +Using [Oh-my-zsh](https://github.com/robbyrussell/oh-my-zsh):
    +
    +1. Clone this repository in oh-my-zsh's plugins directory:
    +
    +        git clone https://github.com/zsh-users/zsh-history-substring-search ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-history-substring-search
    +
    +2. Activate the plugin in `~/.zshrc`:
    +
    +        plugins=( [plugins...] history-substring-search)
    +
    +3. Source `~/.zshrc`  to take changes into account:
    +
    +        source ~/.zshrc
    +
    +Usage
    +------------------------------------------------------------------------------
    +
    +1.  Load this script into your interactive ZSH session:
    +
    +        % source zsh-history-substring-search.zsh
    +
    +    If you want to use [zsh-syntax-highlighting][6] along with this script,
    +    then make sure that you load it *before* you load this script:
    +
    +        % source zsh-syntax-highlighting.zsh
    +        % source zsh-history-substring-search.zsh
    +
    +2.  Bind keyboard shortcuts to this script's functions.
    +
    +    Users typically bind their UP and DOWN arrow keys to this script, thus:
    +    * Run `cat -v` in your favorite terminal emulator to observe key codes.
    +      (**NOTE:** In some cases, `cat -v` shows the wrong key codes.  If the
    +      key codes shown by `cat -v` don't work for you, press `` and
    +      `` at your ZSH command line prompt for correct key codes.)
    +    * Press the UP arrow key and observe what is printed in your terminal.
    +    * Press the DOWN arrow key and observe what is printed in your terminal.
    +    * Press the Control and C keys simultaneously to terminate the `cat -v`.
    +    * Use your observations from the previous steps to create key bindings.
    +      For example, if you observed `^[[A` for UP and `^[[B` for DOWN, then:
    +
    +          bindkey '^[[A' history-substring-search-up
    +          bindkey '^[[B' history-substring-search-down
    +
    +      However, if the observed values don't work, you can try using terminfo:
    +
    +          bindkey "$terminfo[kcuu1]" history-substring-search-up
    +          bindkey "$terminfo[kcud1]" history-substring-search-down
    +
    +      You might also want to bind the Control-P/N keys for use in EMACS mode:
    +
    +          bindkey -M emacs '^P' history-substring-search-up
    +          bindkey -M emacs '^N' history-substring-search-down
    +
    +      You might also want to bind the `k` and `j` keys for use in VI mode:
    +
    +          bindkey -M vicmd 'k' history-substring-search-up
    +          bindkey -M vicmd 'j' history-substring-search-down
    +
    +3.  Type any part of any previous command and then:
    +
    +    * Press the `history-substring-search-up` key, which was configured in
    +      step 2 above, to select the nearest command that (1) contains your query
    +      and (2) is also older than the current command in your command history.
    +
    +    * Press the `history-substring-search-down` key, which was configured in
    +      step 2 above, to select the nearest command that (1) contains your query
    +      and (2) is also newer than the current command in your command history.
    +
    +    * Press `^U` the Control and U keys simultaneously to abort the search.
    +
    +4.  If a matching command spans more than one line of text, press the LEFT
    +    arrow key to move the cursor away from the end of the command, and then:
    +
    +    * Press the `history-substring-search-up` key, which was configured in
    +      step 2 above, to move the cursor to the line above the cursored line.
    +      When the cursor reaches the first line of the command, pressing the
    +      `history-substring-search-up` key again will cause this script to
    +      perform another search.
    +
    +    * Press the `history-substring-search-down` key, which was configured in
    +      step 2 above, to move the cursor to the line below the cursored line.
    +      When the cursor reaches the last line of the command, pressing the
    +      `history-substring-search-down` key, which was configured in step 2
    +      above, again will cause this script to perform another search.
    +
    +
    +Configuration
    +------------------------------------------------------------------------------
    +
    +This script defines the following global variables. You may override their
    +default values only after having loaded this script into your ZSH session.
    +
    +* `HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND` is a global variable that defines
    +  how the query should be highlighted inside a matching command. Its default
    +  value causes this script to highlight using bold, white text on a magenta
    +  background. See the "Character Highlighting" section in the zshzle(1) man
    +  page to learn about the kinds of values you may assign to this variable.
    +
    +* `HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_NOT_FOUND` is a global variable that
    +  defines how the query should be highlighted when no commands in the
    +  history match it. Its default value causes this script to highlight using
    +  bold, white text on a red background. See the "Character Highlighting"
    +  section in the zshzle(1) man page to learn about the kinds of values you
    +  may assign to this variable.
    +
    +* `HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS` is a global variable that defines
    +  how the command history will be searched for your query. Its default value
    +  causes this script to perform a case-insensitive search. See the "Globbing
    +  Flags" section in the zshexpn(1) man page to learn about the kinds of
    +  values you may assign to this variable.
    +
    +* `HISTORY_SUBSTRING_SEARCH_FUZZY` is a global variable that defines
    +  how the command history will be searched for your query. If set to a non-empty
    +  value, causes this script to perform a fuzzy search by words, matching in
    +  given order e.g. `ab c` will match `*ab*c*`
    +
    +* `HISTORY_SUBSTRING_SEARCH_ENSURE_UNIQUE` is a global variable that defines
    +  whether all search results returned are _unique_. If set to a non-empty
    +  value, then only unique search results are presented. This behaviour is off
    +  by default. An alternative way to ensure that search results are unique is
    +  to use `setopt HIST_IGNORE_ALL_DUPS`. If this configuration variable is off
    +  and `setopt HIST_IGNORE_ALL_DUPS` is unset, then `setopt HIST_FIND_NO_DUPS`
    +  is still respected and it makes this script skip duplicate _adjacent_ search
    +  results as you cycle through them, but this does not guarantee that search
    +  results are unique: if your search results were "Dog", "Dog", "HotDog",
    +  "Dog", then cycling them gives "Dog", "HotDog", "Dog". Notice that the "Dog"
    +  search result appeared twice as you cycled through them. If you wish to
    +  receive globally unique search results only once, then use this
    +  configuration variable, or use `setopt HIST_IGNORE_ALL_DUPS`.
    +
    +
    +History
    +------------------------------------------------------------------------------
    +
    +* September 2009: [Peter Stephenson][2] originally wrote this script and it
    +  published to the zsh-users mailing list.
    +
    +* January 2011: Guido van Steen (@guidovansteen) revised this script and
    +  released it under the 3-clause BSD license as part of [fizsh][3], the
    +  Friendly Interactive ZSHell.
    +
    +* January 2011: Suraj N. Kurapati (@sunaku) extracted this script from
    +  [fizsh][3] 1.0.1, refactored it heavily, and finally repackaged it as an
    +  [oh-my-zsh plugin][4] and as an independently loadable [ZSH script][5].
    +
    +* July 2011: Guido van Steen, Suraj N. Kurapati, and Sorin Ionescu
    +  (@sorin-ionescu) [further developed it][4] with Vincent Guerci (@vguerci).
    +
    +* March 2016: Geza Lore (@gezalore) greatly refactored it in pull request #55.
    +
    +------------------------------------------------------------------------------
    +Oh My Zsh Distribution Notes
    +------------------------------------------------------------------------------
    +
    +What you are looking at now is Oh My Zsh's repackaging of zsh-history-substring-search 
    +as an OMZ module inside the Oh My Zsh distribution.
    +
    +The upstream repo, zsh-users/zsh-history-substring-search, can be found on GitHub at 
    +https://github.com/zsh-users/zsh-history-substring-search.
    +
    +This downstream copy was last updated from the following upstream commit:
    +
    +  SHA:          0f80b8eb3368b46e5e573c1d91ae69eb095db3fb
    +  Commit date:  2019-05-12 17:35:54 -0700
    +
    +Everything above this section is a copy of the original upstream's README, so things
    +may differ slightly when you're using this inside OMZ. In particular, you do not
    +need to set up key bindings for the up and down arrows yourself in `~/.zshrc`; the OMZ 
    +plugin does that for you. You may still want to set up additional emacs- or vi-specific
    +bindings as mentioned above.
    +
    diff --git a/dot_oh-my-zsh/plugins/history-substring-search/executable_update-from-upstream.zsh b/dot_oh-my-zsh/plugins/history-substring-search/executable_update-from-upstream.zsh
    new file mode 100644
    index 0000000..81e1942
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/history-substring-search/executable_update-from-upstream.zsh
    @@ -0,0 +1,129 @@
    +#!/usr/bin/env zsh
    +#
    +# update-from-upstream.zsh
    +#
    +# This script updates the Oh My Zsh version of the zsh-history-substring-search
    +# plugin from the independent upstream repo. This is to be run by OMZ developers
    +# when they want to pull in new changes from upstream to OMZ. It is not run
    +# during normal use of the plugin.
    +#
    +# The official upstream repo is zsh-users/zsh-history-substring-search
    +# https://github.com/zsh-users/zsh-history-substring-search
    +#
    +# This is a zsh script, not a function. Call it with `zsh update-from-upstream.zsh`
    +# from the command line, running it from within the plugin directory.
    +#
    +# You can set the environment variable REPO_PATH to point it at an upstream
    +# repo you have already prepared. Otherwise, it will do a clean checkout of
    +# upstream's HEAD to a temporary local repo and use that.
    +
    +
    +# Just bail on any error so we don't have to do extra checking.
    +# This is a developer-use script, so terse output like that should
    +# be fine.
    +set -e
    +
    +
    +upstream_basename=zsh-history-substring-search
    +plugin_basename=history-substring-search
    +UPSTREAM_REPO=zsh-users/$upstream_basename
    +need_repo_cleanup=false
    +upstream_github_url="https://github.com/$UPSTREAM_REPO"
    +
    +if [[ -z "$UPSTREAM_REPO_PATH" ]]; then
    +  # Do a clean checkout
    +  my_tempdir=$(mktemp -d -t omz-update-histsubstrsrch)
    +  UPSTREAM_REPO_PATH="$my_tempdir/$upstream_basename"
    +  git clone "$upstream_github_url" "$UPSTREAM_REPO_PATH"
    +  need_repo_cleanup=true
    +  print "Checked out upstream repo to $UPSTREAM_REPO_PATH"
    +else
    +	print "Using existing $upstream_basename repo at $UPSTREAM_REPO_PATH"
    +fi
    +
    +upstream="$UPSTREAM_REPO_PATH"
    +
    +# Figure out what we're pulling in
    +upstream_sha=$(cd $upstream && git rev-parse HEAD)
    +upstream_commit_date=$(cd $upstream && git log  -1 --pretty=format:%ci)
    +upstream_just_date=${${=upstream_commit_date}[1]}
    +print "upstream SHA:         $upstream_sha"
    +print "upstream commit time: $upstream_commit_date"
    +print "upstream commit date: $upstream_just_date"
    +print
    +
    +# Copy the files over, using the OMZ plugin's names where needed
    +cp -v "$upstream"/* .
    +mv -v zsh-history-substring-search.zsh $plugin_basename.zsh
    +mv -v zsh-history-substring-search.plugin.zsh $plugin_basename.plugin.zsh
    +
    +if [[ $need_repo_cleanup == true ]]; then
    +	print "Removing temporary repo at $my_tempdir"
    +	rm -rf "$my_tempdir"
    +fi
    +
    +# Do OMZ-specific edits
    +
    +print
    +print "Updating files with OMZ-specific stuff"
    +print
    +
    +# OMZ binds the keys as part of the plugin loading
    +
    +cat >> $plugin_basename.plugin.zsh <> README.md </dev/null || {
    +      echo 'zsh-syntax-highlighting: failed loading zsh/zleparameter.' >&2
    +      return 1
    +    }
    +
    +    # Override ZLE widgets to make them invoke _zsh_highlight.
    +    local cur_widget
    +    for cur_widget in ${${(f)"$(builtin zle -la)"}:#(.*|_*|orig-*|run-help|which-command|beep|yank*)}; do
    +      case $widgets[$cur_widget] in
    +
    +        # Already rebound event: do nothing.
    +        user:$cur_widget|user:_zsh_highlight_widget_*);;
    +
    +        # User defined widget: override and rebind old one with prefix "orig-".
    +        user:*) eval "zle -N orig-$cur_widget ${widgets[$cur_widget]#*:}; \
    +                      _zsh_highlight_widget_$cur_widget() { builtin zle orig-$cur_widget -- \"\$@\" && _zsh_highlight }; \
    +                      zle -N $cur_widget _zsh_highlight_widget_$cur_widget";;
    +
    +        # Completion widget: override and rebind old one with prefix "orig-".
    +        completion:*) eval "zle -C orig-$cur_widget ${${widgets[$cur_widget]#*:}/:/ }; \
    +                            _zsh_highlight_widget_$cur_widget() { builtin zle orig-$cur_widget -- \"\$@\" && _zsh_highlight }; \
    +                            zle -N $cur_widget _zsh_highlight_widget_$cur_widget";;
    +
    +        # Builtin widget: override and make it call the builtin ".widget".
    +        builtin) eval "_zsh_highlight_widget_$cur_widget() { builtin zle .$cur_widget -- \"\$@\" && _zsh_highlight }; \
    +                       zle -N $cur_widget _zsh_highlight_widget_$cur_widget";;
    +
    +        # Default: unhandled case.
    +        *) echo "zsh-syntax-highlighting: unhandled ZLE widget '$cur_widget'" >&2 ;;
    +      esac
    +    done
    +  }
    +  #-------------->8------------------->8------------------->8-----------------
    +
    +  _zsh_highlight_bind_widgets
    +fi
    +
    +_history-substring-search-begin() {
    +  setopt localoptions extendedglob
    +
    +  _history_substring_search_refresh_display=
    +  _history_substring_search_query_highlight=
    +
    +  #
    +  # If the buffer is the same as the previously displayed history substring
    +  # search result, then just keep stepping through the match list. Otherwise
    +  # start a new search.
    +  #
    +  if [[ -n $BUFFER && $BUFFER == ${_history_substring_search_result:-} ]]; then
    +    return;
    +  fi
    +
    +  #
    +  # Clear the previous result.
    +  #
    +  _history_substring_search_result=''
    +
    +  if [[ -z $BUFFER ]]; then
    +    #
    +    # If the buffer is empty, we will just act like up-history/down-history
    +    # in ZSH, so we do not need to actually search the history. This should
    +    # speed things up a little.
    +    #
    +    _history_substring_search_query=
    +    _history_substring_search_query_parts=()
    +    _history_substring_search_raw_matches=()
    +
    +  else
    +    #
    +    # For the purpose of highlighting we keep a copy of the original
    +    # query string.
    +    #
    +    _history_substring_search_query=$BUFFER
    +
    +    #
    +    # compose search pattern
    +    #
    +    if [[ -n $HISTORY_SUBSTRING_SEARCH_FUZZY ]]; then
    +      #
    +      # `=` split string in arguments
    +      #
    +      _history_substring_search_query_parts=(${=_history_substring_search_query})
    +    else
    +      _history_substring_search_query_parts=(${==_history_substring_search_query})
    +    fi
    +
    +    #
    +    # Escape and join query parts with wildcard character '*' as separator
    +    # `(j:CHAR:)` join array to string with CHAR as separator
    +    #
    +    local search_pattern="*${(j:*:)_history_substring_search_query_parts[@]//(#m)[\][()|\\*?#<>~^]/\\$MATCH}*"
    +
    +    #
    +    # Find all occurrences of the search pattern in the history file.
    +    #
    +    # (k) returns the "keys" (history index numbers) instead of the values
    +    # (R) returns values in reverse older, so the index of the youngest
    +    # matching history entry is at the head of the list.
    +    #
    +    _history_substring_search_raw_matches=(${(k)history[(R)(#$HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS)${search_pattern}]})
    +  fi
    +
    +  #
    +  # In order to stay as responsive as possible, we will process the raw
    +  # matches lazily (when the user requests the next match) to choose items
    +  # that need to be displayed to the user.
    +  # _history_substring_search_raw_match_index holds the index of the last
    +  # unprocessed entry in _history_substring_search_raw_matches. Any items
    +  # that need to be displayed will be added to
    +  # _history_substring_search_matches.
    +  #
    +  # We use an associative array (_history_substring_search_unique_filter) as
    +  # a 'set' data structure to ensure uniqueness of the results if desired.
    +  # If an entry (key) is in the set (non-empty value), then we have already
    +  # added that entry to _history_substring_search_matches.
    +  #
    +  _history_substring_search_raw_match_index=0
    +  _history_substring_search_matches=()
    +  _history_substring_search_unique_filter=()
    +
    +  #
    +  # If $_history_substring_search_match_index is equal to
    +  # $#_history_substring_search_matches + 1, this indicates that we
    +  # are beyond the end of $_history_substring_search_matches and that we
    +  # have also processed all entries in
    +  # _history_substring_search_raw_matches.
    +  #
    +  # If $#_history_substring_search_match_index is equal to 0, this indicates
    +  # that we are beyond the beginning of $_history_substring_search_matches.
    +  #
    +  # If we have initially pressed "up" we have to initialize
    +  # $_history_substring_search_match_index to 0 so that it will be
    +  # incremented to 1.
    +  #
    +  # If we have initially pressed "down" we have to initialize
    +  # $_history_substring_search_match_index to 1 so that it will be
    +  # decremented to 0.
    +  #
    +  if [[ $WIDGET == history-substring-search-down ]]; then
    +     _history_substring_search_match_index=1
    +  else
    +    _history_substring_search_match_index=0
    +  fi
    +}
    +
    +_history-substring-search-end() {
    +  setopt localoptions extendedglob
    +
    +  _history_substring_search_result=$BUFFER
    +
    +  # the search was successful so display the result properly by clearing away
    +  # existing highlights and moving the cursor to the end of the result buffer
    +  if [[ $_history_substring_search_refresh_display -eq 1 ]]; then
    +    region_highlight=()
    +    CURSOR=${#BUFFER}
    +  fi
    +
    +  # highlight command line using zsh-syntax-highlighting
    +  _zsh_highlight
    +
    +  # highlight the search query inside the command line
    +  if [[ -n $_history_substring_search_query_highlight ]]; then
    +    # highlight first matching query parts
    +    local highlight_start_index=0
    +    local highlight_end_index=0
    +    local query_part
    +    for query_part in $_history_substring_search_query_parts; do
    +      local escaped_query_part=${query_part//(#m)[\][()|\\*?#<>~^]/\\$MATCH}
    +      # (i) get index of pattern
    +      local query_part_match_index="${${BUFFER:$highlight_start_index}[(i)(#$HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS)${escaped_query_part}]}"
    +      if [[ $query_part_match_index -le ${#BUFFER:$highlight_start_index} ]]; then
    +        highlight_start_index=$(( $highlight_start_index + $query_part_match_index ))
    +        highlight_end_index=$(( $highlight_start_index + ${#query_part} ))
    +        region_highlight+=("$(($highlight_start_index - 1)) $(($highlight_end_index - 1)) $_history_substring_search_query_highlight")
    +      fi
    +    done
    +  fi
    +
    +  # For debugging purposes:
    +  # zle -R "mn: "$_history_substring_search_match_index" m#: "${#_history_substring_search_matches}
    +  # read -k -t 200 && zle -U $REPLY
    +
    +  # Exit successfully from the history-substring-search-* widgets.
    +  return 0
    +}
    +
    +_history-substring-search-up-buffer() {
    +  #
    +  # Check if the UP arrow was pressed to move the cursor within a multi-line
    +  # buffer. This amounts to three tests:
    +  #
    +  # 1. $#buflines -gt 1.
    +  #
    +  # 2. $CURSOR -ne $#BUFFER.
    +  #
    +  # 3. Check if we are on the first line of the current multi-line buffer.
    +  #    If so, pressing UP would amount to leaving the multi-line buffer.
    +  #
    +  #    We check this by adding an extra "x" to $LBUFFER, which makes
    +  #    sure that xlbuflines is always equal to the number of lines
    +  #    until $CURSOR (including the line with the cursor on it).
    +  #
    +  local buflines XLBUFFER xlbuflines
    +  buflines=(${(f)BUFFER})
    +  XLBUFFER=$LBUFFER"x"
    +  xlbuflines=(${(f)XLBUFFER})
    +
    +  if [[ $#buflines -gt 1 && $CURSOR -ne $#BUFFER && $#xlbuflines -ne 1 ]]; then
    +    zle up-line-or-history
    +    return 0
    +  fi
    +
    +  return 1
    +}
    +
    +_history-substring-search-down-buffer() {
    +  #
    +  # Check if the DOWN arrow was pressed to move the cursor within a multi-line
    +  # buffer. This amounts to three tests:
    +  #
    +  # 1. $#buflines -gt 1.
    +  #
    +  # 2. $CURSOR -ne $#BUFFER.
    +  #
    +  # 3. Check if we are on the last line of the current multi-line buffer.
    +  #    If so, pressing DOWN would amount to leaving the multi-line buffer.
    +  #
    +  #    We check this by adding an extra "x" to $RBUFFER, which makes
    +  #    sure that xrbuflines is always equal to the number of lines
    +  #    from $CURSOR (including the line with the cursor on it).
    +  #
    +  local buflines XRBUFFER xrbuflines
    +  buflines=(${(f)BUFFER})
    +  XRBUFFER="x"$RBUFFER
    +  xrbuflines=(${(f)XRBUFFER})
    +
    +  if [[ $#buflines -gt 1 && $CURSOR -ne $#BUFFER && $#xrbuflines -ne 1 ]]; then
    +    zle down-line-or-history
    +    return 0
    +  fi
    +
    +  return 1
    +}
    +
    +_history-substring-search-up-history() {
    +  #
    +  # Behave like up in ZSH, except clear the $BUFFER
    +  # when beginning of history is reached like in Fish.
    +  #
    +  if [[ -z $_history_substring_search_query ]]; then
    +
    +    # we have reached the absolute top of history
    +    if [[ $HISTNO -eq 1 ]]; then
    +      BUFFER=
    +
    +    # going up from somewhere below the top of history
    +    else
    +      zle up-line-or-history
    +    fi
    +
    +    return 0
    +  fi
    +
    +  return 1
    +}
    +
    +_history-substring-search-down-history() {
    +  #
    +  # Behave like down-history in ZSH, except clear the
    +  # $BUFFER when end of history is reached like in Fish.
    +  #
    +  if [[ -z $_history_substring_search_query ]]; then
    +
    +    # going down from the absolute top of history
    +    if [[ $HISTNO -eq 1 && -z $BUFFER ]]; then
    +      BUFFER=${history[1]}
    +      _history_substring_search_refresh_display=1
    +
    +    # going down from somewhere above the bottom of history
    +    else
    +      zle down-line-or-history
    +    fi
    +
    +    return 0
    +  fi
    +
    +  return 1
    +}
    +
    +_history_substring_search_process_raw_matches() {
    +  #
    +  # Process more outstanding raw matches and append any matches that need to
    +  # be displayed to the user to _history_substring_search_matches.
    +  # Return whether there were any more results appended.
    +  #
    +
    +  #
    +  # While we have more raw matches. Process them to see if there are any more
    +  # matches that need to be displayed to the user.
    +  #
    +  while [[ $_history_substring_search_raw_match_index -lt $#_history_substring_search_raw_matches ]]; do
    +    #
    +    # Move on to the next raw entry and get its history index.
    +    #
    +    _history_substring_search_raw_match_index+=1
    +    local index=${_history_substring_search_raw_matches[$_history_substring_search_raw_match_index]}
    +
    +    #
    +    # If HISTORY_SUBSTRING_SEARCH_ENSURE_UNIQUE is set to a non-empty value,
    +    # then ensure that only unique matches are presented to the user.
    +    # When HIST_IGNORE_ALL_DUPS is set, ZSH already ensures a unique history,
    +    # so in this case we do not need to do anything.
    +    #
    +    if [[ ! -o HIST_IGNORE_ALL_DUPS && -n $HISTORY_SUBSTRING_SEARCH_ENSURE_UNIQUE ]]; then
    +      #
    +      # Get the actual history entry at the new index, and check if we have
    +      # already added it to _history_substring_search_matches.
    +      #
    +      local entry=${history[$index]}
    +
    +      if [[ -z ${_history_substring_search_unique_filter[$entry]} ]]; then
    +        #
    +        # This is a new unique entry. Add it to the filter and append the
    +        # index to _history_substring_search_matches.
    +        #
    +        _history_substring_search_unique_filter[$entry]=1
    +        _history_substring_search_matches+=($index)
    +
    +        #
    +        # Indicate that we did find a match.
    +        #
    +        return 0
    +      fi
    +
    +    else
    +      #
    +      # Just append the new history index to the processed matches.
    +      #
    +      _history_substring_search_matches+=($index)
    +
    +      #
    +      # Indicate that we did find a match.
    +      #
    +      return 0
    +    fi
    +
    +  done
    +
    +  #
    +  # We are beyond the end of the list of raw matches. Indicate that no
    +  # more matches are available.
    +  #
    +  return 1
    +}
    +
    +_history-substring-search-has-next() {
    +  #
    +  # Predicate function that returns whether any more older matches are
    +  # available.
    +  #
    +
    +  if  [[ $_history_substring_search_match_index -lt $#_history_substring_search_matches ]]; then
    +    #
    +    # We did not reach the end of the processed list, so we do have further
    +    # matches.
    +    #
    +    return 0
    +
    +  else
    +    #
    +    # We are at the end of the processed list. Try to process further
    +    # unprocessed matches. _history_substring_search_process_raw_matches
    +    # returns whether any more matches were available, so just return
    +    # that result.
    +    #
    +    _history_substring_search_process_raw_matches
    +    return $?
    +  fi
    +}
    +
    +_history-substring-search-has-prev() {
    +  #
    +  # Predicate function that returns whether any more younger matches are
    +  # available.
    +  #
    +
    +  if [[ $_history_substring_search_match_index -gt 1 ]]; then
    +    #
    +    # We did not reach the beginning of the processed list, so we do have
    +    # further matches.
    +    #
    +    return 0
    +
    +  else
    +    #
    +    # We are at the beginning of the processed list. We do not have any more
    +    # matches.
    +    #
    +    return 1
    +  fi
    +}
    +
    +_history-substring-search-found() {
    +  #
    +  # A match is available. The index of the match is held in
    +  # $_history_substring_search_match_index
    +  #
    +  # 1. Make $BUFFER equal to the matching history entry.
    +  #
    +  # 2. Use $HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND
    +  #    to highlight the current buffer.
    +  #
    +  BUFFER=$history[$_history_substring_search_matches[$_history_substring_search_match_index]]
    +  _history_substring_search_query_highlight=$HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND
    +}
    +
    +_history-substring-search-not-found() {
    +  #
    +  # No more matches are available.
    +  #
    +  # 1. Make $BUFFER equal to $_history_substring_search_query so the user can
    +  #    revise it and search again.
    +  #
    +  # 2. Use $HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_NOT_FOUND
    +  #    to highlight the current buffer.
    +  #
    +  BUFFER=$_history_substring_search_query
    +  _history_substring_search_query_highlight=$HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_NOT_FOUND
    +}
    +
    +_history-substring-search-up-search() {
    +  _history_substring_search_refresh_display=1
    +
    +  #
    +  # Select history entry during history-substring-down-search:
    +  #
    +  # The following variables have been initialized in
    +  # _history-substring-search-up/down-search():
    +  #
    +  # $_history_substring_search_matches is the current list of matches that
    +  # need to be displayed to the user.
    +  # $_history_substring_search_match_index is the index of the current match
    +  # that is being displayed to the user.
    +  #
    +  # The range of values that $_history_substring_search_match_index can take
    +  # is: [0, $#_history_substring_search_matches + 1].  A value of 0
    +  # indicates that we are beyond the beginning of
    +  # $_history_substring_search_matches. A value of
    +  # $#_history_substring_search_matches + 1 indicates that we are beyond
    +  # the end of $_history_substring_search_matches and that we have also
    +  # processed all entries in _history_substring_search_raw_matches.
    +  #
    +  # If $_history_substring_search_match_index equals
    +  # $#_history_substring_search_matches and
    +  # $_history_substring_search_raw_match_index is not greater than
    +  # $#_history_substring_search_raw_matches, then we need to further process
    +  # $_history_substring_search_raw_matches to see if there are any more
    +  # entries that need to be displayed to the user.
    +  #
    +  # In _history-substring-search-up-search() the initial value of
    +  # $_history_substring_search_match_index is 0. This value is set in
    +  # _history-substring-search-begin(). _history-substring-search-up-search()
    +  # will initially increment it to 1.
    +  #
    +
    +  if [[ $_history_substring_search_match_index -gt $#_history_substring_search_matches ]]; then
    +    #
    +    # We are beyond the end of $_history_substring_search_matches. This
    +    # can only happen if we have also exhausted the unprocessed matches in
    +    # _history_substring_search_raw_matches.
    +    #
    +    # 1. Update display to indicate search not found.
    +    #
    +    _history-substring-search-not-found
    +    return
    +  fi
    +
    +  if _history-substring-search-has-next; then
    +    #
    +    # We do have older matches.
    +    #
    +    # 1. Move index to point to the next match.
    +    # 2. Update display to indicate search found.
    +    #
    +    _history_substring_search_match_index+=1
    +    _history-substring-search-found
    +
    +  else
    +    #
    +    # We do not have older matches.
    +    #
    +    # 1. Move the index beyond the end of
    +    #    _history_substring_search_matches.
    +    # 2. Update display to indicate search not found.
    +    #
    +    _history_substring_search_match_index+=1
    +    _history-substring-search-not-found
    +  fi
    +
    +  #
    +  # When HIST_FIND_NO_DUPS is set, meaning that only unique command lines from
    +  # history should be matched, make sure the new and old results are different.
    +  #
    +  # However, if the HIST_IGNORE_ALL_DUPS shell option, or
    +  # HISTORY_SUBSTRING_SEARCH_ENSURE_UNIQUE is set, then we already have a
    +  # unique history, so in this case we do not need to do anything.
    +  #
    +  if [[ -o HIST_IGNORE_ALL_DUPS || -n $HISTORY_SUBSTRING_SEARCH_ENSURE_UNIQUE ]]; then
    +    return
    +  fi
    +
    +  if [[ -o HIST_FIND_NO_DUPS && $BUFFER == $_history_substring_search_result ]]; then
    +    #
    +    # Repeat the current search so that a different (unique) match is found.
    +    #
    +    _history-substring-search-up-search
    +  fi
    +}
    +
    +_history-substring-search-down-search() {
    +  _history_substring_search_refresh_display=1
    +
    +  #
    +  # Select history entry during history-substring-down-search:
    +  #
    +  # The following variables have been initialized in
    +  # _history-substring-search-up/down-search():
    +  #
    +  # $_history_substring_search_matches is the current list of matches that
    +  # need to be displayed to the user.
    +  # $_history_substring_search_match_index is the index of the current match
    +  # that is being displayed to the user.
    +  #
    +  # The range of values that $_history_substring_search_match_index can take
    +  # is: [0, $#_history_substring_search_matches + 1].  A value of 0
    +  # indicates that we are beyond the beginning of
    +  # $_history_substring_search_matches. A value of
    +  # $#_history_substring_search_matches + 1 indicates that we are beyond
    +  # the end of $_history_substring_search_matches and that we have also
    +  # processed all entries in _history_substring_search_raw_matches.
    +  #
    +  # In _history-substring-search-down-search() the initial value of
    +  # $_history_substring_search_match_index is 1. This value is set in
    +  # _history-substring-search-begin(). _history-substring-search-down-search()
    +  # will initially decrement it to 0.
    +  #
    +
    +  if [[ $_history_substring_search_match_index -lt 1 ]]; then
    +    #
    +    # We are beyond the beginning of $_history_substring_search_matches.
    +    #
    +    # 1. Update display to indicate search not found.
    +    #
    +    _history-substring-search-not-found
    +    return
    +  fi
    +
    +  if _history-substring-search-has-prev; then
    +    #
    +    # We do have younger matches.
    +    #
    +    # 1. Move index to point to the previous match.
    +    # 2. Update display to indicate search found.
    +    #
    +    _history_substring_search_match_index+=-1
    +    _history-substring-search-found
    +
    +  else
    +    #
    +    # We do not have younger matches.
    +    #
    +    # 1. Move the index beyond the beginning of
    +    #    _history_substring_search_matches.
    +    # 2. Update display to indicate search not found.
    +    #
    +    _history_substring_search_match_index+=-1
    +    _history-substring-search-not-found
    +  fi
    +
    +  #
    +  # When HIST_FIND_NO_DUPS is set, meaning that only unique command lines from
    +  # history should be matched, make sure the new and old results are different.
    +  #
    +  # However, if the HIST_IGNORE_ALL_DUPS shell option, or
    +  # HISTORY_SUBSTRING_SEARCH_ENSURE_UNIQUE is set, then we already have a
    +  # unique history, so in this case we do not need to do anything.
    +  #
    +  if [[ -o HIST_IGNORE_ALL_DUPS || -n $HISTORY_SUBSTRING_SEARCH_ENSURE_UNIQUE ]]; then
    +    return
    +  fi
    +
    +  if [[ -o HIST_FIND_NO_DUPS && $BUFFER == $_history_substring_search_result ]]; then
    +    #
    +    # Repeat the current search so that a different (unique) match is found.
    +    #
    +    _history-substring-search-down-search
    +  fi
    +}
    +
    +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-
    +# vim: ft=zsh sw=2 ts=2 et
    diff --git a/dot_oh-my-zsh/plugins/history/README.md b/dot_oh-my-zsh/plugins/history/README.md
    new file mode 100644
    index 0000000..a9d480f
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/history/README.md
    @@ -0,0 +1,17 @@
    +# history plugin
    +
    +Provides a couple of convenient aliases for using the `history` command to examine your command line history.
    +
    +To use it, add `history` to the plugins array in your zshrc file:
    +
    +```zsh
    +plugins=(... history)
    +```
    +
    +## Aliases
    +
    +| Alias | Command              | Description                                                      |
    +|-------|----------------------|------------------------------------------------------------------|
    +| `h`   | `history`            | Prints your command history                                      |
    +| `hs`  | `history \| grep`    | Use grep to search your command history                          |
    +| `hsi` | `history \| grep -i` | Use grep to do a case-insensitive search of your command history |
    diff --git a/dot_oh-my-zsh/plugins/history/history.plugin.zsh b/dot_oh-my-zsh/plugins/history/history.plugin.zsh
    new file mode 100644
    index 0000000..9cee48f
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/history/history.plugin.zsh
    @@ -0,0 +1,3 @@
    +alias h='history'
    +alias hs='history | grep'
    +alias hsi='history | grep -i'
    diff --git a/dot_oh-my-zsh/plugins/hitchhiker/README.md b/dot_oh-my-zsh/plugins/hitchhiker/README.md
    new file mode 100644
    index 0000000..d12a1e9
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/hitchhiker/README.md
    @@ -0,0 +1,44 @@
    +# hitchhiker
    +
    +This plugin adds quotes from The Hitchhiker's Guide to the Galaxy, from Douglas Adams.
    +
    +To use it, add `hitchhiker` to the plugins array in your zshrc file:
    +
    +```zsh
    +plugins=(... hitchhiker)
    +```
    +
    +## Aliases
    +
    +- `hitchhiker`: displays a quote from the book using `fortune`.
    +- `hitchhiker_cow`: displays a quote from the book using `cowthink`.
    +
    +```console
    +$ hitchhiker_cow
    + _______________________________________
    +( "OK, so ten out of ten for style, but )
    +( minus several million for good        )
    +( thinking, yeah? "                     )
    + ---------------------------------------
    +        o   ^__^
    +         o  (oo)\_______
    +            (__)\       )\/\
    +                ||----w |
    +                ||     ||
    +```
    +
    +## Requirements
    +
    +- `fortune` and `strfile`.
    +- `cowthink` if using the `hitchhiker_cow` command.
    +
    +## Credits
    +
    +Fortune file: Andreas Gohr  ([splitbrain.org](https://www.splitbrain.org/projects/fortunes/hg2g))
    +
    +Spelling and formatting fixes: grok@resist.ca
    +
    +Original quotes from:
    +
    +- https://web.archive.org/web/20120106083254/http://tatooine.fortunecity.com/vonnegut/29/hitch/parhaat.html
    +- https://web.archive.org/web/20011112065737/http://www-personal.umd.umich.edu/~nhughes/dna/faqs/quotedir.html
    diff --git a/dot_oh-my-zsh/plugins/hitchhiker/dot_gitignore b/dot_oh-my-zsh/plugins/hitchhiker/dot_gitignore
    new file mode 100644
    index 0000000..63c2b54
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/hitchhiker/dot_gitignore
    @@ -0,0 +1 @@
    +fortunes/hitchhiker.dat
    diff --git a/dot_oh-my-zsh/plugins/hitchhiker/fortunes/hitchhiker b/dot_oh-my-zsh/plugins/hitchhiker/fortunes/hitchhiker
    new file mode 100644
    index 0000000..825b86c
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/hitchhiker/fortunes/hitchhiker
    @@ -0,0 +1,275 @@
    +"`...You hadn't exactly gone out of your way to call attention to them had you? I mean like actually telling anyone or anything.' `But the plans were on display...' `On display? I eventually had to go down to the cellar to find them.' `That's the display department.' `With a torch.' `Ah, well the lights had probably gone.' `So had the stairs.' `But look you found the notice didn't you?' `Yes,' said Arthur, `yes I did. It was on display in the bottom of a locked filing cabinet stuck in a disused lavatory with a sign on the door saying "Beware of The Leopard".'"
    +
    +- Arthur singing the praises of the local council planning department.
    +%
    +"`Time is an illusion. Lunchtime doubly so.' `Very deep,' said Arthur, `you should send that in to the "Reader's Digest". They've got a page for people like you.'"
    +
    +- Ford convincing Arthur to drink three pints in ten minutes at lunchtime.
    +%
    +"`This must be Thursday,' said Arthur to himself, sinking low over his beer, `I never could get the hang of Thursdays.'"
    +
    +- Arthur, on what was to be his last Thursday on Earth.
    +%
    +"Pages one and two [of Zaphod's presidential speech] had been salvaged by a Damogran Frond Crested Eagle and had already become incorporated into an extraordinary new form of nest which the eagle had invented. It was constructed largely of papier mache and it was virtually impossible for a newly hatched baby eagle to break out of it. The Damogran Frond Crested Eagle had heard of the notion of survival of the species but wanted no truck with it."
    +
    +- An example of Damogran wildlife.
    +%
    +"`How do you feel?' he asked him. `Like a military academy,' said Arthur, `bits of me keep passing out.'" .... `We're safe,' he said. `Oh good,' said Arthur. `We're in a small galley cabin,' said Ford, `in one of the spaceships of the Vogon Constructor Fleet.' `Ah,' said Arthur, `this is obviously some strange usage of the word "safe" that I wasn't previously aware of.'
    +
    +- Arthur after his first ever teleport ride.
    +%
    +"`The best way to get a drink out of a Vogon is to stick your finger down his throat...'"
    +
    +- The Book, on one of the Vogon's social inadequacies.
    +%
    +"`You'd better be prepared for the jump into hyperspace. It's unpleasantly like being drunk.' `What's so unpleasant about being drunk?' `You ask a glass of water.'"
    +
    +- Arthur getting ready for his first jump into hyperspace.
    +%
    +"`You know,' said Arthur, `it's at times like this, when I'm trapped in a Vogon airlock with a man from Betelgeuse, and about to die from asphyxiation in deep space that I really wish I'd listened to what my mother told me when I was young.' `Why, what did she tell you?' `I don't know, I didn't listen.'"
    +
    +- Arthur coping with certain death as best as he could.
    +%
    +"`Ford, you're turning into a penguin. Stop it.'"
    +
    +- Arthur experiences the improbability drive at work.
    +%
    +"`I think you ought to know that I'm feeling very depressed.'" "`Life, don't talk to me about life.'" "`Here I am, brain the size of a planet and they ask me to take you down to the bridge. Call that "job satisfaction"? 'Cos I don't.'" "`I've got this terrible pain in all the diodes down my left side.'"
    +
    +- Guess who.
    +%
    +"`If there's anything more important than my ego around, I want it caught and shot now.'"
    +
    +- Zaphod.
    +%
    +"`In those days spirits were brave, the stakes were high, men were REAL men, women were REAL women, and small furry creatures from Alpha Centauri were REAL small furry creatures from Aplha Centauri.'"
    +
    +- The Book getting all nostalgic.
    +%
    +"`Hey this is terrific!' Zaphod said. `Someone down there is trying to kill us!' `Terrific,' said Arthur. `But don't you see what this means?' `Yes. We are going to die.' `Yes, but apart from that.' `APART from that?' `It means we must be on to something!' `How soon can we get off it?'"
    +
    +- Zaphod and Arthur in a certain death situation over Magrathea.
    +%
    +"And wow! Hey! What's this thing coming towards me very fast? Very very fast. So big and flat and round, it needs a big wide sounding word like... ow... ound... round... ground! That's it! That's a good name - ground! I wonder if it will be friends with me?"
    +
    +- For the sperm whale, it wasn't.
    +%
    +"Oh no, not again."
    +
    +- A bowl of petunias on it's way to certain death.
    +%
    +"`Er, hey Earthman...' `Arthur,' said Arthur. `Yeah, could you just sort of keep this robot with you and guard this end of the passageway. OK?' `Guard?' said Arthur. `What from? You just said there's no one here.' `Yeah, well, just for safety, OK?' said Zaphod. `Whose? Yours or mine?'"
    +
    +- Arthur drawing the short straw on Magrathea.
    +%
    +"There are of course many problems connected with life, of which some of the most popular are `Why are people born?' `Why do they die?' `Why do they spend so much of the intervening time wearing digital watches?'"
    +
    +- The Book.
    +%
    +"`Right,' said Ford, `I'm going to have a look.' He glanced round at the others. `Is no one going to say, "No you can't possibly, let me go instead"?' They all shook their heads. `Oh well.'"
    +
    +- Ford attempting to be heroic whilst being seiged by Shooty and Bangbang.
    +%
    +"In the beginning the Universe was created. This has made a lot of people very angry and been widely regarded as a bad move." - The Book just recapping what happened in the last book. "`I am so amazingly cool you could keep a side of meat in me for a month. I am so hip I have difficulty seeing over my pelvis.'"
    +
    +- Zaphod being cool.
    +%
    +"`You ARE Zaphod Beeblebrox?' `Yeah,' said Zaphod, `but don't shout it out or they'll all want one.' `THE Zaphod Beeblebrox?' `No, just A Zaphod Bebblebrox, didn't you hear I come in six packs?' `But sir,' it squealed, `I just heard on the sub-ether radio report. It said you were dead...' `Yeah, that's right, I just haven't stopped moving yet.'"
    +
    +- Zaphod and the Guide's receptionist.
    +%
    +"The fronting for the eighty-yard-long marble-topped bar had been made by stitching together nearly twenty thousand Antarean Mosaic Lizard skins, despite the fact that the twenty thousand lizards concerned had needed them to keep their insides in."
    +
    +- The Book decribing Milliways' politically incorrect decor.
    +%
    +"`...and the Universe,' continued the waiter, determined not to be deflected on his home stretch, `will explode later for your pleasure.' Ford's head swivelled slowly towards him. He spoke with feeling. `Wow,' he said, `What sort of drinks do you serve in this place?' The waiter laughed a polite little waiter's laugh. `Ah,' he said, `I think sir has perhaps misunderstood me.' `Oh, I hope not,' breathed Ford."
    +
    +- Ford in paradise.
    +%
    +"Zaphod grinned two manic grins, sauntered over to the bar and bought most of it."
    +
    +- Zaphod in paradise.
    +%
    +"`Maybe somebody here tipped off the Galactic Police,' said Trillian. `Everybody saw you come in.' `You mean they want to arrest me over the phone?' said Zaphod, `Could be. I'm a pretty dangerous dude when I'm cornered.' `Yeah,' said a voice from under the table [Ford's now completely rat-arsed at this point], `you go to pieces so fast people get hit by the shrapnel.'"
    +
    +- Zaphod getting paranoid over a phone call.
    +%
    +"`Hand me the rap-rod, Plate Captain.' The little waiter's eyebrows wandered about his forehead in confusion. `I beg your pardon, sir?' he said. `The phone, waiter,' said Zaphod, grabbing it off him. `Shee, you guys are so unhip it's a wonder your bums don't fall off.'"
    +
    +- Zaphod discovers that waiters are the least hip people in the Universe.
    +%
    +"The main reception foyer was almost empty but Ford nevertheless weaved his way through it."
    +
    +- Ford making his way out of Milliways whilst under the influence of enough alcohol to make a rhino sing.
    +%
    +"`The first ten million years were the worst,' said Marvin, `and the second ten million, they were the worst too. The third ten million I didn't enjoy at all. After that I went into a bit of a decline.'"
    +
    +- Marvin reflecting back on his 576,000,003,579 year career as Milliways' car park attendent.
    +%
    +"`Incidentally,' he said, `what does teleport mean?' Another moment passed. Slowly, the others turned to face him. `Probably the wrong moment to ask,' said Arthur, `It's just I remember you use the word a short while ago and I only bring it up because...' `Where,' said Ford quietly, `does it say teleport?' `Well, just over here in fact,' said Arthur, pointing at a dark control box in the rear of the cabin, `Just under the word "emergency", above the word "system" and beside the sign saying "out of order".'"
    +
    +- Arthur finding an escape route from a certain death situation.
    +%
    +"I teleported home one night With Ron and Sid and Meg. Ron stole Meggie's heart away And I got Sidney's leg."
    +
    +- A poem about matter transference beams.
    +%
    +"Anyone who is capable of getting themselves made President should on no account be allowed to do the job."
    +
    +- Some wisdom from The Book.
    +%
    +"`We've got to find out what people want from fire, how they relate to it, what sort of image it has for them.' The crowd were tense. They were expecting something wonderful from Ford. `Stick it up your nose,' he said. `Which is precisely the sort of thing we need to know,' insisted the girl, `Do people want fire that can be fitted nasally?'"
    +
    +- Ford "debating" what to do with fire with a marketing girl.
    +%
    +"The story goes that I first had the idea for THHGTTG while lying drunk in a field in Innsbruck (or `Spain' as the BBC TV publicity department authoritatively has it, probably because it's easier to spell)." - Foreward by DNA.
    +
    +FORD 	Six pints of bitter. And quickly please, the world's about to 	end. BARMAN	Oh yes, sir? Nice weather for it.
    +%
    +BOOK	Meanwhile, the starship has landed on the surface of Magrathea 	and Trillian is about to make one of the most important 	statements of her life. Its importance is not immediately 	recognised by her companions. TRILL.	Hey, my white mice have escaped. ZAPHOD	Nuts to your white mice.
    +%
    +BOOK	...Man had always assumed that he was more intelligent than 	dolphins because he had achieved so much... the wheel, New York, 	wars, and so on, whilst all the dolphins had ever done was muck 	about in the water having a good time. But conversely the 	dolphins believed themselves to be more intelligent than man for 	precisely the same reasons.
    +%
    +ARTHUR	What is an Algolian Zylatburger anyway? FORD	They're a kind of meatburger made from the most unpleasant parts 	of a creature well known for its total lack of any pleasant 	parts. ARTHUR	So you mean that the Universe does actually end not with a bang 	but with a Wimpy?
    +
    +- Cut dialogue from Fit the Fifth.
    +%
    +BOOK	There is a theory which states that if ever anyone discovers 	exactly what the Universe is for and why it is here, it will 	instantly disappear and be replaced by something even more 	bizarrely inexplicable. 	There is another theory which states that this has already happened.
    +
    +- Introduction to Fit the Seventh.
    +%
    +FORD	Tell me Arthur... ARTHUR	Yes? FORD	This boulder we're stuck under, how big would you say it was? Roughly? ARTHUR	Oh, about the size of Coventry Cathedral. FORD	Do you think we could move it? (Arthur doesn't reply) Just asking.
    +
    +- Ford and Arthur in a tricky situation, Fit the Eighth.
    +%
    +BOOK	What to do if you find yourself stuck in a crack in the ground 	underneath a giant boulder you can't move, with no hope of 	rescue. Consider how lucky you are that life has been good to 	you so far. Alternatively, if life hasn't been good to you so 	far, which given your current circumstances seems more likely, 	consider how lucky you are that it won't be troubling you much 	longer.
    +
    +- Comforting advice for Ford and Arthur in this current situation, Fit the Eighth.
    +%
    +ZAPHOD	Hey, this rock... FORD	Marble... ZAPHOD	Marble... FORD	Ice-covered marble... ZAPHOD	Right... it's as slippery as... as... What's the slipperiest 	thing you can think of? FORD	At the moment? This marble. ZAPHOD	Right. This marble is as slippery as this marble.
    +
    +- Zaphod and Ford trying to get a grip on things in Brontitall, Fit the Tenth.
    +%
    +ARTHUR	It's not a question of whose habitat it is, it's a 	question of how hard you hit it.
    +
    +- Arthur pointing out one of the disadvantages of gravity, Fit the Tenth.
    +%
    +ARTHUR	It probably seems a terrible thing to say, but you 	know what I sometimes think would be useful in these situations? LINT.	What? ARTHUR	A gun of some sort. LINT.2	Will this help? ARTHUR	What is it? LINT.2	A gun of some sort. ARTHUR	Oh, that'll help. Can you make it fire? LINT.	Er... F/X	DEAFENING ROAR LINT.	Yes.
    +
    +- Arthur and the Lintillas gaining the upper hand, Fit the Twelfth.
    +%
    +"He stood up straight and looked the world squarely in the fields and hills. To add weight to his words he stuck the rabbit bone in his hair. He spread his arms out wide. `I will go mad!' he announced."
    +
    +- Arthur discovering a way of coping with life on Prehistoric Earth.
    +%
    +"`... then I decided that I was a lemon for a couple of weeks. I kept myself amused all that time jumping in and out of a gin and tonic.' Arthur cleared his throat, and then did it again. `Where,' he said, `did you...?' `Find a gin and tonic?' said Ford brightly. `I found a small lake that thought it was a gin and tonic, and jumped in and out of that. At least, I think it thought it was a gin and tonic.' `I may,' he addded with a grin which would have sent sane men scampering into the trees, `have been imagining it.'"
    +
    +- Ford updating Arthur about what he's been doing for the past four years.
    +%
    +"`Eddies,' said Ford, `in the space-time continuum.' `Ah,' nodded Arthur, `is he? Is he?'"
    +
    +- Arthur failing in his first lesson of galactic physics in four years.
    +%
    +"Ford grabbed him by the lapels of his dressing gown and spoke to him as slowly and distinctly and patiently as if he were somebody from a telephone company accounts department."
    +
    +- Ford trying to rectify that situation.
    +%
    +"...[Arthur] leapt to his feet like an author hearing the phone ring..."
    +
    +- Who says that the character of Arthur isn't autobiographical?
    +%
    +"Arthur's consciousness approached his body as from a great distance, and reluctantly. It had had some bad times in there. Slowly, nervously, it entered and settled down into its accustomed position. Arthur sat up. `Where am I?' he said. `Lord's Cricket Ground,' said Ford. `Fine,' said Arthur, and his consciousness stepped out again for a quick breather. His body flopped back on the grass."
    +
    +- Arthur coping with his return to Earth as best as he could.
    +%
    +"`A curse,' said Slartibartfast, `which will engulf the Galaxy in fire and destruction, and possibly bring the Universe to a premature doom. I mean it,' he added. `Sounds like a bad time,' said Ford, `with luck I'll be drunk enough not to notice.'"
    +
    +- Ford ensuring everyone knew where his priorities lay.
    +%
    +"`My doctor says that I have a malformed public-duty gland and a natural deficiency in moral fibre, and that I am therefore excused from saving Universes.'"
    +
    +- Ford's last-ditch attempt to get out of helping Slartibartfast.
    +%
    +"Trillian did a little research in the ship's copy of THHGTTG. It had some advice to offer on drunkenness. `Go to it,' it said, `and good luck.' It was cross-referenced to the entry concerning the size of the Universe and ways of coping with that."
    +
    +- One of the more preferable pieces of advice contained in the Guide.
    +%
    +"His eyes seemed to be popping out of his head. He wasn't certain if this was because they were trying to see more clearly, or if they simply wanted to leave at this point."QUOTEHERESTRINGMAGIC1234- Arthur trying to see who had diverted him from going to a party.
    +%
    +"Arthur yawed wildly as his skin tried to jump one way and his skeleton the other, whilst his brain tried to work out which of his ears it most wanted to crawl out of. `Bet you weren't expecting to see me again,' said the monster, which Arthur couldn't help thinking was a strange remark for it to make, seeing as he had never met the creature before. He could tell that he hadn't met the creature before from the simple fact that he was able to sleep at nights."QUOTEHERESTRINGMAGIC1234- Arthur discovering who had diverted him from going to a party.
    +%
    +"`That young girl is one of the least benightedly unintelligent organic life forms it has been my profound lack of pleasure not to be able to avoid meeting.'"QUOTEHERESTRINGMAGIC1234- Marvin's first ever compliment about anybody.
    +%
    +"Arthur hoped and prayed that there wasn't an afterlife. Then he realised there was a contradiction there and merely hoped that there wasn't an afterlife."QUOTEHERESTRINGMAGIC1234- Arthur realising that he's in a certain death situation with a supernova bomb that is shaped like a cricket ball.
    +%
    +"`Credit?' he said. `Aaaargggh...' These two words are usually coupled together in the Old Pink Dog Bar."QUOTEHERESTRINGMAGIC1234- Ford in a spot of bother.
    +%
    +"`...we might as well start with where your hand is now.' Arthur said, `So which way do I go?' `Down,' said Fenchurch, `on this occasion.' He moved his hand. `Down,' she said, `is in fact the other way.' `Oh yes.'"QUOTEHERESTRINGMAGIC1234- Arthur trying to discover which part of Fenchurch is wrong.
    +%
    +"There was a point to this story, but it has temporarily escaped the chronicler's mind."QUOTEHERESTRINGMAGIC1234- This line perhaps best sums up the whole book.
    +%
    +"The last time anybody made a list of the top hundred character attributes of New Yorkers, common sense snuck in at number 79. .... When it's fall in New York, the air smells as if someone's been frying goats in it, and if you are keen to breathe the best plan is to open a window and stick your head in a building."QUOTEHERESTRINGMAGIC1234- Nuff said??
    +%
    +"`What's been happening here?' he demanded. `Oh just the nicest things, sir, just the nicest things. can I sit on your lap please?'" "`Colin, I am going to abandon you to your fate.' `I'm so happy.'" "`It will be very, very nasty for you, and that's just too bad. Got it?' `I gurgle with pleasure.'"QUOTEHERESTRINGMAGIC1234- Ford and Colin the robot.
    +%
    +"What the hell, he thought, you're only young once, and threw himself out of the window. That would at least keep the element of surprise on his side."QUOTEHERESTRINGMAGIC1234- Ford outwitting a Vogon with a rocket launcher by going into another certain death situation.
    +%
    +"The major difference between a thing that might go wrong and a thing that cannot possibly go wrong is that when a thing that cannot possibly go wrong goes wrong it usually turns out to be impossible to get at or repair."QUOTEHERESTRINGMAGIC1234- One of the laws of computers and programming revealed.
    +%
    +"`You know they've reintroduced the death penalty for insurance company directors?' `Really?' said Arthur. `No I didn't. For what offence?' Trillian frowned. `What do you mean, offence?' `I see.'"QUOTEHERESTRINGMAGIC1234- Evidence that there will be some justice in the Universe eventually.
    +%
    +"`She hit me on the head with the rock again.' `I think I can confirm that that was my daughter.' `Sweet kid.' `You have to get to know her,' said Arthur. `She eases up does she?' `No,' said Arthur, `but you get a better sense of when to duck.'"QUOTEHERESTRINGMAGIC1234- Ford and Arthur on Random.
    +%
    +"Far out in the uncharted backwaters of the unfashionable end of the western spiral arm of the Galaxy lies a small unregarded yellow sun. "
    +%
    +"Ah, " said Arthur, "this is obviously some strange usage of the word safe that I wasn't previously aware of. "
    +%
    +"I don't know, " said the voice on the PA, "apathetic bloody planet, I've no sympathy at all. "
    +%
    +"Now it is such a bizarrely improbable coincidence that anything so mindboggingly useful could have evolved purely by chance that some thinkers have chosen to see it as the final and clinching proof of the non-existence of God. "The argument goes something like this: `I refuse to prove that I exist,' says God, `for proof denies faith, and without faith I am nothing.' "`But,' says Man, `The Babel fish is a dead giveaway, isn't it? It could not have evolved by chance. It proves you exist, and so therefore, by your own arguments, you don't. QED.'
    +%
    +"Prostetnic Vogon Jeltz smiled very slowly. This was done not so much for effect as because he was trying to remember the sequence of muscle movements. "
    +%
    +"OK, so ten out of ten for style, but minus several million for good thinking, yeah? "
    +%
    +"In those days spirits were brave, the stakes were high, men were real men, women were real women, and small furry creatures from Alpha Centauri were real small furry creatures from Alpha Centauri. "
    +%
    +"For a moment, nothing happened. Then, after a second or so, nothing continued to happen. "
    +%
    +(aikamuotojen k�ytt� aikamatkustuksessa) "You can arrive (mayan arivan on-when) for any sitting you like without prior (late fore-when) reservation because you can book retrospectively, as it were when you return to your own time. (you can have on-book haventa forewhen presooning returningwenta retrohome.) "
    +%
    +"The suit into which the man's body had been stuffed looked as if it's only purpose in life was to demonstrate how difficult it was to get this sort of body into a suit. "
    +%
    +"He dropped his voice still lower. In the stillness, a fly would not have dared clear its throat. "
    +%
    +"And finally, " said Max, quieting the audience down and putting on his solemn face, "finally I believe we have with us here tonight, a party of believers, very devout believers, from the Church of the Second Coming of the Great Prophet Zarquon. " ... "There they are, " said Max, "sitting there, patiently. He said he'd come again, and he's kept you waiting a long time, so let's hope he's hurrying fellas, because he's only got eight minutes left! "
    +%
    +"As he came into the light they could see his black and gold uniform on which the buttons were so highly polished that they shone with an intensity that would have made an approaching motorist flash his lights in annoyance. "
    +%
    +"You're very sure of your facts, " he said at last, "I couldn't trust the thinking of a man who takes the Universe - if there is one - for granted. "
    +%
    +"What are you talking about? " "Never mind, eat the fruit. " "You know, this place almost looks like the Garden of Eden. " "Eat the fruit. " "Sounds quite like it too. "
    +%
    +"Rome wasn't burned in a day. "
    +%
    +"Does it worry you that you don't talk any kind of sense? "
    +%
    +"One's never alone with a rubber duck. "
    +%
    +"Another world, another day, another dawn. "
    +%
    +"He expanded his chest to make it totally clear that here was the sort of man you only dared to cross if you had a team of Sherpas with you. "
    +%
    +"It was real. At least, if it wasn't real, it did support them, and as that is what sofas are supposed to do, this, by any test that mattered, was a real sofa. "
    +%
    +Arthur said, "So which way do I go? " "Down, " said Fenchurch, "on this occasion. " He moved his hand. "Down, " she said, "is in fact the other way. " "Oh yes. "
    +%
    +"You're one hundred percent positive that the ship which is crashed on the bottom of this ocean is the ship which you said you were one hundred percent positive could one hundred percent positively never crash? "
    +%
    +"Yes, it's the right planet, all right, " he said again. "Right planet, wrong universe. "
    +%
    +"Ford had his own code of ethics. It wasn't much of one, but it was his and he stuck by it, more or less. One rule he made was never to buy his own drinks. He wasn't sure if that counted as an ethic, but you have to go with what you've got. "
    +%
    +"Arthur felt at a bit of a loss. There was a whole Galaxy of stuff out there for him, and he wondered if it was churlish of him to complain to himself that it lacked just two things: the world he was born on and the woman he loved. "
    +%
    +"What was the self-sacrifice? " "I jettisoned half of a much loved and I think irreplaceable pair of shoes. " "Why was that self-sacrifice? " "Because they were mine! " said Ford crossly. "I think we have different value systems. " "Well mine's better. " "That's according to your... oh never mind. " 
    diff --git a/dot_oh-my-zsh/plugins/hitchhiker/hitchhiker.plugin.zsh b/dot_oh-my-zsh/plugins/hitchhiker/hitchhiker.plugin.zsh
    new file mode 100644
    index 0000000..0b1a301
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/hitchhiker/hitchhiker.plugin.zsh
    @@ -0,0 +1,28 @@
    +# Handle $0 according to the standard:
    +# https://zdharma-continuum.github.io/Zsh-100-Commits-Club/Zsh-Plugin-Standard.html
    +0="${${ZERO:-${0:#$ZSH_ARGZERO}}:-${(%):-%N}}"
    +0="${${(M)0:#/*}:-$PWD/$0}"
    +
    +HITCHHIKER_DIR="${0:h}/fortunes"
    +
    +# Aliases
    +alias hitchhiker="fortune -a $HITCHHIKER_DIR"
    +alias hitchhiker_cow="hitchhiker | cowthink"
    +
    +() {
    +  # Don't generate hitchhiker.dat if it exists and is up-to-date
    +  if [[ -f "$HITCHHIKER_DIR/hitchhiker.dat" ]] && ! [[ "$HITCHHIKER_DIR/hitchhiker.dat" -ot "$HITCHHIKER_DIR/hitchhiker" ]]; then
    +    return
    +  fi
    +
    +  # If strfile is not found: some systems install strfile in /usr/sbin but it's not in $PATH
    +  if ! command -v strfile &>/dev/null && ! [[ -f /usr/sbin/strfile ]]; then
    +    echo "[oh-my-zsh] hitchhiker depends on strfile, which is not installed" >&2
    +    echo "[oh-my-zsh] strfile is often provided as part of the 'fortune' package" >&2
    +    return
    +  fi
    +
    +  "${commands[strfile]:-/usr/sbin/strfile}" "$HITCHHIKER_DIR/hitchhiker" "$HITCHHIKER_DIR/hitchhiker.dat" >/dev/null
    +}
    +
    +unset HITCHHIKER_DIR
    diff --git a/dot_oh-my-zsh/plugins/hitokoto/README.md b/dot_oh-my-zsh/plugins/hitokoto/README.md
    new file mode 100644
    index 0000000..3a8758f
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/hitokoto/README.md
    @@ -0,0 +1,15 @@
    +# hitokoto plugin
    +
    +Displays a random quote taken from [hitokoto.cn](https://v1.hitokoto.cn/)
    +
    +Created by [Sinrimin](https://github.com/sinrimin)
    +
    +## Usage
    +
    +Add the plugin to the plugins array in your zshrc file and restart zsh:
    +
    +```zsh
    +plugins=(... hitokoto)
    +```
    +
    +Then, run `hitokoto` to get a new random quote.
    diff --git a/dot_oh-my-zsh/plugins/hitokoto/hitokoto.plugin.zsh b/dot_oh-my-zsh/plugins/hitokoto/hitokoto.plugin.zsh
    new file mode 100644
    index 0000000..e346d18
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/hitokoto/hitokoto.plugin.zsh
    @@ -0,0 +1,18 @@
    +if ! (( $+commands[curl] )); then
    +  echo "hitokoto plugin needs curl to work" >&2
    +  return
    +fi
    +
    +function hitokoto {
    +  setopt localoptions nopromptsubst
    +
    +  # Get hitokoto data
    +  local -a data
    +  data=("${(ps:\n:)"$(command curl -s --connect-timeout 2 "https://v1.hitokoto.cn" | command jq -j '.hitokoto+"\n"+.from')"}")
    +
    +  # Exit if could not fetch hitokoto
    +  [[ -n "$data" ]] || return 0
    +
    +  local quote="${data[1]}" author="${data[2]}"
    +  print -P "%F{3}${author}%f: “%F{5}${quote}%f”"
    +}
    diff --git a/dot_oh-my-zsh/plugins/homestead/README.md b/dot_oh-my-zsh/plugins/homestead/README.md
    new file mode 100644
    index 0000000..4763023
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/homestead/README.md
    @@ -0,0 +1,9 @@
    +# Homestead
    +
    +This plugin provides completion for [Homestead](https://laravel.com/docs/homestead).
    +
    +To use it add homestead to the plugins array in your zshrc file.
    +
    +```bash
    +plugins=(... homestead)
    +```
    diff --git a/dot_oh-my-zsh/plugins/homestead/homestead.plugin.zsh b/dot_oh-my-zsh/plugins/homestead/homestead.plugin.zsh
    new file mode 100644
    index 0000000..ea2803d
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/homestead/homestead.plugin.zsh
    @@ -0,0 +1,10 @@
    +# Homestead basic command completion
    +_homestead_get_command_list () {
    +  homestead --no-ansi | sed -E "1,/(Available|Common) commands/d" | awk '/^ +[a-z]+/ { print $1 }'
    +}
    +
    +_homestead () {
    +  compadd `_homestead_get_command_list`
    +}
    +
    +compdef _homestead homestead
    diff --git a/dot_oh-my-zsh/plugins/httpie/README.md b/dot_oh-my-zsh/plugins/httpie/README.md
    new file mode 100644
    index 0000000..25bdd0c
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/httpie/README.md
    @@ -0,0 +1,14 @@
    +# HTTPie plugin
    +
    +This plugin adds completion for [HTTPie](https://httpie.org), a command line HTTP
    +client, a friendlier cURL replacement.
    +
    +To use it, add `httpie` to the plugins array in your zshrc file:
    +
    +```zsh
    +plugins=(... httpie)
    +```
    +
    +It uses completion from [zsh-completions](https://github.com/zsh-users/zsh-completions).
    +
    +**Maintainer:** [lululau](https://github.com/lululau)
    diff --git a/dot_oh-my-zsh/plugins/httpie/_httpie b/dot_oh-my-zsh/plugins/httpie/_httpie
    new file mode 100644
    index 0000000..11bc8e1
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/httpie/_httpie
    @@ -0,0 +1,181 @@
    +#compdef http
    +# ------------------------------------------------------------------------------
    +# Copyright (c) 2015 GitHub zsh-users - http://github.com/zsh-users
    +# All rights reserved.
    +#
    +# Redistribution and use in source and binary forms, with or without
    +# modification, are permitted provided that the following conditions are met:
    +#     * Redistributions of source code must retain the above copyright
    +#       notice, this list of conditions and the following disclaimer.
    +#     * Redistributions in binary form must reproduce the above copyright
    +#       notice, this list of conditions and the following disclaimer in the
    +#       documentation and/or other materials provided with the distribution.
    +#     * Neither the name of the zsh-users nor the
    +#       names of its contributors may be used to endorse or promote products
    +#       derived from this software without specific prior written permission.
    +#
    +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
    +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
    +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
    +# DISCLAIMED. IN NO EVENT SHALL ZSH-USERS BE LIABLE FOR ANY
    +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
    +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
    +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
    +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
    +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    +# ------------------------------------------------------------------------------
    +# Description
    +# -----------
    +#
    +#  Completion script for httpie 0.7.2  (http://httpie.org)
    +#
    +# ------------------------------------------------------------------------------
    +# Authors
    +# -------
    +#
    +#  * Akira Maeda 
    +#  * Valodim 
    +#  * Claus Klingberg 
    +#
    +# ------------------------------------------------------------------------------
    +# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-
    +# vim: ft=zsh sw=2 ts=2 et
    +# ------------------------------------------------------------------------------
    +
    +_httpie_params () {
    +
    +    local ret=1 expl
    +
    +    # or a url
    +    if (( CURRENT <= NORMARG+1 )) && [[ $words[NORMARG] != *:* ]] ; then
    +        _httpie_urls && ret=0
    +
    +    # regular param, if we already have a url
    +    elif (( CURRENT > NORMARG )); then
    +
    +        # if the suffix is precisely : this is shorthand for a header
    +        if [[ -prefix ':' ]]; then
    +            PREFIX=
    +            SUFFIX=:
    +        fi
    +
    +        # if we are in front of a : (possibly due to the PREFIX move before)
    +        if [[ -suffix ':' ]]; then
    +
    +            # this is rather buggy with normal tab behavior :\
    +            compstate[insert]=menu
    +            _wanted http_header expl 'HTTP Header' \
    +                compadd -s ':' -S '' -- Content-Type Cookie && return 0
    +        fi
    +
    +        # ignore all prefix stuff
    +        compset -P '(#b)([^:@=]#)'
    +        local name=$match[1]
    +
    +        if compset -P '='; then
    +            _message "$name data field value"
    +        elif compset -P '@'; then
    +            _files
    +        elif compset -P ':=@'; then
    +            _files
    +        elif compset -P ':='; then
    +            _message "$name raw json data"
    +        elif compset -P '=='; then
    +            _message "$name url parameter value"
    +        elif compset -P ':'; then
    +            _message "$name header content"
    +        else
    +            typeset -a ops
    +            ops=(
    +                '=:data field'
    +                '\::header'
    +                '==:request parameter'
    +                '@:data file field'
    +                '\:=:raw json field'
    +                '\:=@:raw json field file path'
    +            )
    +            _describe -t httpparams "parameter types" ops -Q -S ''
    +        fi
    +
    +        ret=0
    +
    +    fi
    +
    +    # first arg may be a request method
    +    (( CURRENT == NORMARG )) &&
    +        _wanted http_method expl 'Request Method' \
    +            compadd GET POST PUT DELETE HEAD OPTIONS TRACE CONNECT PATCH LINK UNLINK && ret=0
    +
    +    return $ret
    +
    +}
    +
    +_httpie_urls() {
    +
    +  local ret=1
    +
    +  if ! [[ -prefix [-+.a-z0-9]#:// ]]; then
    +    local expl
    +    compset -S '[^:/]*' && compstate[to_end]=''
    +    _wanted url-schemas expl 'URL schema' compadd -S '' http:// https:// && ret=0
    +  else
    +    _urls && ret=0
    +  fi
    +
    +  return $ret
    +
    +}
    +
    +_httpie_printflags () {
    +
    +    local ret=1
    +
    +    # not sure why this is necessary, but it will complete "-pH" style without it
    +    [[ $IPREFIX == "-p" ]] && IPREFIX+=" "
    +
    +    compset -P '(#b)([a-zA-Z]#)'
    +
    +    local -a flags
    +    [[ $match[1] != *H* ]] && flags+=( "H:request headers" )
    +    [[ $match[1] != *B* ]] && flags+=( "B:request body" )
    +    [[ $match[1] != *h* ]] && flags+=( "h:response headers" )
    +    [[ $match[1] != *b* ]] && flags+=( "b:response body" )
    +
    +    _describe -t printflags "print flags" flags -S '' && ret=0
    +
    +    return $ret
    +
    +}
    +
    +integer NORMARG
    +
    +_arguments -n -C -s \
    +  '(-j --json -f)'{-j,--json}'[Data items from the command line are serialized as a JSON object.]' \
    +  '(-f --form -j)'{-f,--form}'[Data items from the command line are serialized as form fields.]' \
    +  '--pretty=[Controls output processing.]:output format:(all colors format none)' \
    +  '(-s --style)'{-s,--style}'=[Output coloring style]:STYLE:(autumn borland bw colorful default emacs friendly fruity manni monokai murphy native pastie perldoc ttr solarized tango trac vim vs)' \
    +  '(-p --print)'{-p,--print}'=[String specifying what the output should contain]:print flags:_httpie_printflags' \
    +  '(-v --verbose)'{-v,--verbose}'[Print the whole request as well as the response.]' \
    +  '(-p -h --headers)'{-h,--headers}'[Print only the response headers.]' \
    +  '(-p -b --body)'{-b,--body}'[Print only the response body.]' \
    +  '(-S --stream)'{-S,--stream}'[Always stream the output by line, i.e., behave like `tail -f`.]' \
    +  '(-o --output)'{-o,--output}'=[Save output to FILE.]:output file:_files' \
    +  '(-d --download)'{-d,--download}'=[Do not print the response body to stdout.]' \
    +  '(-c --continue)'{-c,--continue}'[Resume an interrupted download.]' \
    +  '(--session-read-only)--session=[Create, or reuse and update a session.]:session name (or path)' \
    +  '(--session)--session-read-only=[Create or read a session without updating it form the request/response exchange.]:session name (or path)' \
    +  '(-a --auth)'{-a,--auth}'=[If only the username is provided (-a username)]:USER\:PASS' \
    +  '--auth-type=[The authentication mechanism to be used. Defaults to "basic".]:AUTH-TYPE:(basic digest)' \
    +  '--proxy=[String mapping protocol to the URL of the proxy.]:PROXY' \
    +  '--follow[Allow full redirects.]' \
    +  "--verify=[Enable or disable verification of ssl certificates.]:verify certificate:(yes no)" \
    +  '--allow-redirects[Set this flag if full redirects are allowed (e.g. re-POST-ing of data at new ``Location``)]' \
    +  '--timeout=[Float describes the timeout of the request (Use socket.setdefaulttimeout() as fallback).]:timeout (seconds)' \
    +  '--check-status[This flag instructs HTTPie to also check the HTTP status code and exit with an error if the status indicates one.]' \
    +  '--ignore-stdin[Do not attempt to read stdin.]' \
    +  '(- *)--help[show help message.]' \
    +  "(- *)--version[show program's version number and exit.]" \
    +  '--traceback[Prints exception traceback should one occur.]' \
    +  '--debug[Prints exception traceback should one occur and other information useful for debugging HTTPie itself.]' \
    +  '*:args:_httpie_params' && return 0
    diff --git a/dot_oh-my-zsh/plugins/invoke/README.md b/dot_oh-my-zsh/plugins/invoke/README.md
    new file mode 100644
    index 0000000..3f4b880
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/invoke/README.md
    @@ -0,0 +1,10 @@
    +# Invoke plugin
    +
    +This plugin adds completion for [invoke](https://github.com/pyinvoke/invoke).
    +
    +To use it, add `invoke` to the plugins array in your `~/.zshrc` file:
    +
    +```zsh
    +plugins=(... invoke)
    +```
    +
    diff --git a/dot_oh-my-zsh/plugins/invoke/invoke.plugin.zsh b/dot_oh-my-zsh/plugins/invoke/invoke.plugin.zsh
    new file mode 100644
    index 0000000..8c807de
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/invoke/invoke.plugin.zsh
    @@ -0,0 +1,5 @@
    +# Autocompletion for invoke.
    +#
    +if [ $commands[invoke] ]; then
    +  source <(invoke --print-completion-script=zsh)
    +fi
    diff --git a/dot_oh-my-zsh/plugins/ionic/README.md b/dot_oh-my-zsh/plugins/ionic/README.md
    new file mode 100644
    index 0000000..3ec4fc8
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/ionic/README.md
    @@ -0,0 +1,30 @@
    +# Ionic plugin
    +
    +This plugin adds completion for the [Ionic CLI](https://ionicframework.com/docs/cli),
    +as well as some aliases for common Ionic commands.
    +
    +To use it, add `ionic` to the plugins array in your zshrc file:
    +
    +```zsh
    +plugins=(... ionic)
    +```
    +
    +## Aliases
    +
    +| Alias | Command                              | Description                                                      |
    +|-------|--------------------------------------|------------------------------------------------------------------|
    +| iv    | `ionic --version`                    | Check Ionic version                                              |
    +| ih    | `ionic --help`                       | Ionic help command                                               |
    +| ist   | `ionic start`                        | Create a new project                                             |
    +| ii    | `ionic info`                         | Print system/environment info                                    |
    +| is    | `ionic serve`                        | Start a local dev server for app dev/testing                     |
    +| icba  | `ionic cordova build android`        | Build web assets and prepare app for android platform targets    |
    +| icbi  | `ionic cordova build ios`            | Build web assets and prepare app for ios platform targets        |
    +| icra  | `ionic cordova run android`          | Run an Ionic project on a connected android device               |
    +| icri  | `ionic cordova run ios`              | Run an Ionic project on a connected ios device                   |
    +| icrsa | `ionic cordova resources android`    | Automatically create icon and splash screen resources for android|
    +| icrsi | `ionic cordova resources ios`        | Automatically create icon and splash screen resources for ios    |
    +| icpaa | `ionic cordova platform add android` | Add Cordova android platform targets                             |
    +| icpai | `ionic cordova platform add ios`     | Add Cordova ios platform targets                                 |
    +| icpra | `ionic cordova platform rm android`  | Remove Cordova platform targets                                  |
    +| icpri | `ionic cordova platform rm ios`      | Remove Cordova platform targets                                  |
    diff --git a/dot_oh-my-zsh/plugins/ionic/ionic.plugin.zsh b/dot_oh-my-zsh/plugins/ionic/ionic.plugin.zsh
    new file mode 100644
    index 0000000..cf388af
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/ionic/ionic.plugin.zsh
    @@ -0,0 +1,15 @@
    +alias iv="ionic --version"
    +alias ih="ionic --help"
    +alias ist="ionic start"
    +alias ii="ionic info"
    +alias is="ionic serve"
    +alias icba="ionic cordova build android" 
    +alias icbi="ionic cordova build ios" 
    +alias icra="ionic cordova run android" 
    +alias icri="ionic cordova run ios" 
    +alias icrsa="ionic cordova resources android" 
    +alias icrsi="ionic cordova resources ios"
    +alias icpaa="ionic cordova platform add android" 
    +alias icpai="ionic cordova platform add ios"
    +alias icpra="ionic cordova platform rm android"
    +alias icpri="ionic cordova platform rm ios"
    diff --git a/dot_oh-my-zsh/plugins/ipfs/LICENSE b/dot_oh-my-zsh/plugins/ipfs/LICENSE
    new file mode 100644
    index 0000000..cf84491
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/ipfs/LICENSE
    @@ -0,0 +1,22 @@
    +The MIT License (MIT)
    +
    +Copyright (c) 2015 Angel Ramboi
    +
    +Permission is hereby granted, free of charge, to any person obtaining a copy
    +of this software and associated documentation files (the "Software"), to deal
    +in the Software without restriction, including without limitation the rights
    +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    +copies of the Software, and to permit persons to whom the Software is
    +furnished to do so, subject to the following conditions:
    +
    +The above copyright notice and this permission notice shall be included in all
    +copies or substantial portions of the Software.
    +
    +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    +SOFTWARE.
    +
    diff --git a/dot_oh-my-zsh/plugins/ipfs/README.md b/dot_oh-my-zsh/plugins/ipfs/README.md
    new file mode 100644
    index 0000000..0808a26
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/ipfs/README.md
    @@ -0,0 +1,17 @@
    +# zsh-ipfs
    +
    +zsh completion plugin for [The InterPlanetary File System (IPFS)][1]
    +
    +Please submit issues and pull requests to the [main zsh-ipfs repo][2].
    +
    +### About
    +
    +[IPFS (InterPlanetary File System)][1] is a peer-to-peer hypermedia protocol
    +designed to make the web faster, safer, and more open.
    +
    +### License
    +
    +See: https://github.com/hellounicorn/zsh-ipfs/blob/master/LICENSE
    +
    +[1]: http://ipfs.io/
    +[2]: https://github.com/hellounicorn/zsh-ipfs
    diff --git a/dot_oh-my-zsh/plugins/ipfs/_ipfs b/dot_oh-my-zsh/plugins/ipfs/_ipfs
    new file mode 100644
    index 0000000..8771bc4
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/ipfs/_ipfs
    @@ -0,0 +1,791 @@
    +#compdef ipfs
    +#autoload
    +
    +local -a _1st_arguments
    +_1st_arguments=(
    +  'add:Add a file or directory to ipfs.'
    +  'bitswap:Interact with the bitswap agent.'
    +  'block:Interact with raw IPFS blocks.'
    +  'bootstrap:Show or edit the list of bootstrap peers.'
    +  'cat:Show IPFS object data.'
    +  'cid:Convert and discover properties of CIDs'
    +  'commands:List all available commands.'
    +  'config:Get and set ipfs config values.'
    +  'daemon:Run a network-connected IPFS node.'
    +  'dag:Interact with ipld dag objects. (experimental)'
    +  'dht:Issue commands directly through the DHT.'
    +  'diag:Generate diagnostic reports.'
    +  'dns:Resolve DNS links.'
    +  'files:Interact with unixfs files.'
    +  'filestore:Interact with filestore objects. (experimental)'
    +  'get:Download IPFS objects.'
    +  'id:Show ipfs node id info.'
    +  'init:Initializes ipfs config file.'
    +  'key:Create and list IPNS name keypairs.'
    +  'log:Interact with the daemon log output.'
    +  'ls:List directory contents for Unix filesystem objects.'
    +  'mount:Mounts IPFS to the filesystem (read-only).'
    +  'name:Publish and resolve IPNS names.'
    +  'object:Interact with IPFS objects.'
    +  'p2p:Libp2p stream mounting.'
    +  'pin:Pin (and unpin) objects to local storage.'
    +  'ping:Send echo request packets to IPFS hosts.'
    +  'refs:List links (references) from an object.'
    +  'repo:Manipulate the IPFS repo.'
    +  'resolve:Resolve the value of names to IPFS.'
    +  'stats:Query IPFS statistics.'
    +  'swarm:Interact with the swarm.'
    +  'tar:Utility functions for tar files in ipfs.'
    +  'update:Download and apply go-ipfs updates'
    +  'version:Show ipfs version information.'
    +)
    +
    +_ipfs_subcommand(){
    +  local curcontext="$curcontext" state line
    +  typeset -A opt_args
    +  _arguments -C ':command:->command' '*::options:->options'
    +  case $state in
    +    (command)
    +      _describe -t commands "ipfs subcommand" $1
    +      return
    +    ;;
    +    (options)
    +      case $line[1] in
    +        (wantlist)
    +          case $MAIN_SUBCOMMAND in
    +            (bitswap)
    +              _arguments '(-p --peer)'{-p,--peer}'[Specify which peer to show wantlist for. Default: self.]'
    +            ;;
    +          esac
    +        ;;
    +        (add)
    +          case $MAIN_SUBCOMMAND in
    +            (pin)
    +              _arguments \
    +                '(-r --recursive)'{-r,--recursive}'[Recursively pin the object linked to by the specified object(s). Default: true.]' \
    +                '--progress[Show progress.]'
    +            ;;
    +            (bootstrap)
    +              local -a _bootstrap_rm_arguments
    +              _bootstrap_rm_arguments=(
    +                'default:Add default peers to the bootstrap list.'
    +              )
    +              _ipfs_subcommand _bootstrap_rm_arguments
    +            ;;
    +          esac
    +        ;;
    +        (rm)
    +          case $MAIN_SUBCOMMAND in
    +            (pin)
    +              _arguments '(-r --recursive)'{-r,--recursive}'[Recursively unpin the object linked to by the specified object(s). Default: true.]'
    +            ;;
    +            (bootstrap)
    +              local -a _bootstrap_rm_arguments
    +              _bootstrap_rm_arguments=(
    +                'all:Remove all peers from the bootstrap list.'
    +              )
    +              _ipfs_subcommand _bootstrap_rm_arguments
    +            ;;
    +          esac
    +        ;;
    +        (ls)
    +          case $MAIN_SUBCOMMAND in
    +            (pin)
    +              _arguments \
    +                '(-t --type)'{-t,--type}'[The type of pinned keys to list. Can be "direct", "indirect", "recursive", or "all". Default: all.]' \
    +                '(-q --quiet)'{-q,--quiet}'[Write just hashes of objects.]' \
    +                '(-s --stream)'{-s,--stream}'[Enable streaming of pins as they are discovered.]'
    +            ;;
    +            (p2p)
    +              _arguments '(-v --headers)'{-v,--headers}'[Print table headers (Protocol, Listen, Target).]'
    +            ;;
    +          esac
    +        ;;
    +        (update)
    +          case $MAIN_SUBCOMMAND in
    +            (pin)
    +              _arguments '--unpin[Remove the old pin. Default: true.]'
    +            ;;
    +          esac
    +        ;;
    +        (verify)
    +          case $MAIN_SUBCOMMAND in
    +            (pin)
    +              _arguments \
    +                '--verbose[Also write the hashes of non-broken pins.]' \
    +                '(-q --quiet)'{-q,--quiet}'[Write just hashes of broken pins.]'
    +            ;;
    +          esac
    +        ;;
    +        (query|findpeer)
    +          case $MAIN_SUBCOMMAND in
    +            (dht)
    +              _arguments '(-v --verbose)'{-v,--verbose}'[Print extra information.]'
    +            ;;
    +          esac
    +        ;;
    +        (get)
    +          case $MAIN_SUBCOMMAND in
    +            (dht)
    +              _arguments '(-v --verbose)'{-v,--verbose}'[Print extra information.]'
    +            ;;
    +            (object)
    +              _arguments '--data-encoding[Encoding type of the data field, either "text" or "base64". Default: text.]'
    +            ;;
    +          esac
    +        ;;
    +        (put)
    +          case $MAIN_SUBCOMMAND in
    +            (dht)
    +              _arguments '(-v --verbose)'{-v,--verbose}'[Print extra information.]'
    +            ;;
    +            (object)
    +              _arguments \
    +                '--inputenc[Encoding type of input data. One of: {"protobuf", "json"}. Default: json.]' \
    +                '--datafieldenc[Encoding type of the data field, either "text" or "base64". Default: text.]' \
    +                '--pin[Pin this object when adding.]' \
    +                '(-q --quiet)'{-q,--quiet}'[Write minimal output]'
    +            ;;
    +          esac
    +        ;;
    +        (findprovs)
    +          case $MAIN_SUBCOMMAND in
    +            (dht)
    +              _arguments \
    +                '(-v --verbose)'{-v,--verbose}'[Print extra information.]' \
    +                '(-n --num-providers)'{-n,--num-providers}'[The number of providers to find. Default: 20.]'
    +            ;;
    +          esac
    +        ;;
    +        (provide)
    +          case $MAIN_SUBCOMMAND in
    +            (dht)
    +              _arguments \
    +                '(-v --verbose)'{-v,--verbose}'[Print extra information.]' \
    +                '(-r --recursive)'{-r,--recursive}'[Recursively provide entire graph.]'
    +            ;;
    +          esac
    +        ;;
    +        (cmds)
    +          case $MAIN_SUBCOMMAND in
    +            (diag)
    +              _arguments '(-v --verbose)'{-v,--verbose}'[Print extra information.]'
    +            ;;
    +          esac
    +        ;;
    +        (diff)
    +          case $MAIN_SUBCOMMAND in
    +            (object)
    +              _arguments '(-v --verbose)'{-v,--verbose}'[Print extra information.]'
    +            ;;
    +          esac
    +        ;;
    +        (stat)
    +          case $MAIN_SUBCOMMAND in
    +            (dag)
    +              _arguments \
    +                '(-p --progress)'{-p,--progress}'[Return progressive data while reading through the DAG. Default: true.]'
    +            ;;
    +            (object)
    +              _arguments '--human[Print sizes in human readable format (e.g., 1K 234M 2G).]'
    +            ;;
    +            (repo)
    +              _arguments \
    +                '(-s --size-only)'{-s,--size-only}'[Only report RepoSize and StorageMax.]' \
    +                '(-H --human)'{-H,--human}'[Print sizes in human readable format (e.g., 1K 234M 2G).]'
    +            ;;
    +          esac
    +        ;;
    +        (publish)
    +          case $MAIN_SUBCOMMAND in
    +            (name)
    +              _arguments \
    +                '--resolve[Check if the given path can be resolved before publishing. Default: true.]' \
    +                '(-t --lifetime)'{-t,--lifetime}'[Time duration that the record will be valid for. Default: 24h.]' \
    +                '--allow-offline[When offline, save the IPNS record to the the local datastore without broadcasting to the network instead of simply failing.]' \
    +                '--ttl[Time duration this record should be cached for. Uses the same syntax as the lifetime option. (caution: experimental).]' \
    +                '(-k --key)'{-k,--key}"[Name of the key to be used or a valid PeerID, as listed by 'ipfs key list -l'. Default: self.]" \
    +                '(-Q --quieter)'{-Q,--quieter}'[Write only final hash.]' \
    +                '--ipns-base[Encoding used for keys: Can either be a multibase encoded CID or a base58btc encoded multihash. Takes {b58mh|base36|k|base32|b...}. Default: base36.]'
    +            ;;
    +          esac
    +        ;;
    +        (pubsub)
    +          case $MAIN_SUBCOMMAND in
    +            (name)
    +              local -a _name_pubsub_arguments
    +              _name_pubsub_arguments=(
    +                'cancel:Cancel a name subscription'
    +                'state:Query the state of IPNS pubsub'
    +                'subs:Show current name subscriptions'
    +              )
    +              _ipfs_subcommand _name_pubsub_arguments
    +            ;;
    +          esac
    +        ;;
    +        (resolve)
    +          case $MAIN_SUBCOMMAND in
    +            (name)
    +              _arguments \
    +                '(-r --recursive)'{-r,--recursive}'[Resolve until the result is not an IPNS name. Default: true.]' \
    +                '(-n --nocache)'{-n,--nocache}'[Do not use cached entries.]' \
    +                '(--dhtrc --dht-record-count)'{--dhtrc,--dht-record-count}'[Number of records to request for DHT resolution.]' \
    +                '(--dhtt --dht-timeout)'{--dhtt,--dht-timeout}'[Max time to collect values during DHT resolution eg "30s". Pass 0 for no timeout.]' \
    +                '(-s --stream)'{-s,--stream}'[Stream entries as they are found.]'
    +            ;;
    +          esac
    +        ;;
    +        (patch)
    +          case $MAIN_SUBCOMMAND in
    +            (object)
    +              local -a _object_patch_arguments
    +              _object_patch_arguments=(
    +                'add-link:Add a link to a given object.'
    +                'append-data:Append data to the data segment of a dag node.'
    +                'rm-link:Remove a link from a given object.'
    +                'set-data:Set the data field of an IPFS object.'
    +              )
    +              _ipfs_subcommand _object_patch_arguments
    +            ;;
    +          esac
    +        ;;
    +        (gc)
    +          case $MAIN_SUBCOMMAND in
    +            (repo)
    +              _arguments \
    +                '--stream-errors[Stream errors.]' \
    +                '(-q --quiet)'{-q,--quiet}'[Write minimal output.]'
    +            ;;
    +          esac
    +        ;;
    +        (bitswap)
    +          case $MAIN_SUBCOMMAND in
    +            (stats)
    +              _arguments \
    +                '(-v --verbose)'{-v,--verbose}'[Print extra information.]' \
    +                '--human[Print sizes in human readable format (e.g., 1K 234M 2G).]'
    +            ;;
    +          esac
    +        ;;
    +        (bw)
    +          case $MAIN_SUBCOMMAND in
    +            (stats)
    +              _arguments \
    +                '(-p --peer)'{-p,--peer}'[Specify a peer to print bandwidth for.]' \
    +                '(-t --proto)'{-t,--proto}'[Specify a protocol to print bandwidth for.]' \
    +                '--poll[Print bandwidth at an interval.]' \
    +                '(-i --interval)'{-i,--interval}"[Time interval to wait between updating output, if 'poll' is true.]"
    +            ;;
    +          esac
    +        ;;
    +        (repo)
    +          case $MAIN_SUBCOMMAND in
    +            (stats)
    +              _arguments \
    +                '--size-only[Only report RepoSize and StorageMax.]' \
    +                '--human[Print sizes in human readable format (e.g., 1K 234M 2G).]'
    +            ;;
    +          esac
    +        ;;
    +        (bases)
    +          case $MAIN_SUBCOMMAND in
    +            (cid)
    +              _arguments \
    +                '--prefix[also include the single leter prefixes in addition to the code.]' \
    +                '--numeric[also include numeric codes.]'
    +            ;;
    +          esac
    +        ;;
    +        (codecs|hashes)
    +          case $MAIN_SUBCOMMAND in
    +            (cid)
    +              _arguments '--numeric[also include numeric codes.]'
    +            ;;
    +          esac
    +        ;;
    +        (format)
    +          case $MAIN_SUBCOMMAND in
    +            (cid)
    +              _arguments \
    +                '-f[Printf style format string. Default: %s.]' \
    +                '-v[CID version to convert to.]' \
    +                '--codec[CID codec to convert to.]' \
    +                '-b[Multibase to display CID in.]'
    +            ;;
    +          esac
    +        ;;
    +        (close)
    +          case $MAIN_SUBCOMMAND in
    +            (p2p)
    +              _arguments \
    +                '(-a --all)'{-a,--all}'[Close all listeners.]' \
    +                '(-p --protocol)'{-p,--protocol}'[Match protocol name.]' \
    +                '(-l --listen-address)'{-l,--listen-address}'[Match listen address.]' \
    +                '(-t --target-address)'{-t,--target-address}'[Match target address.]'
    +            ;;
    +          esac
    +        ;;
    +        (forward)
    +          case $MAIN_SUBCOMMAND in
    +            (p2p)
    +              _arguments "--allow-custom-protocol[Don't require /x/ prefix.]"
    +            ;;
    +          esac
    +        ;;
    +        (listen)
    +          case $MAIN_SUBCOMMAND in
    +            (p2p)
    +              _arguments \
    +                "--allow-custom-protocol[Don't require /x/ prefix.]" \
    +                '(-r --report-peer-id)'{-r,--report-peer-id}'[Send remote base58 peerid to target when a new connection is established.]'
    +            ;;
    +          esac
    +        ;;
    +        (stream)
    +          case $MAIN_SUBCOMMAND in
    +            (p2p)
    +              local -a _p2p_stream_arguments
    +              _p2p_stream_arguments=(
    +                'close:Close active p2p stream.'
    +                'ls:List active p2p streams.'
    +              )
    +              _ipfs_subcommand _p2p_stream_arguments
    +            ;;
    +          esac
    +        ;;
    +        (addrs)
    +          case $MAIN_SUBCOMMAND in
    +            (swarm)
    +              local -a _swarm_addrs_arguments
    +              _swarm_addrs_arguments=(
    +                'listen:List interface listening addresses.'
    +                'local:List local addresses.'
    +              )
    +              _ipfs_subcommand _swarm_addrs_arguments
    +            ;;
    +          esac
    +        ;;
    +        (filters)
    +          case $MAIN_SUBCOMMAND in
    +            (swarm)
    +              local -a _swarm_filters_arguments
    +              _swarm_filters_arguments=(
    +                'add:Add an address filter.'
    +                'rm:Remove an address filter.'
    +              )
    +              _ipfs_subcommand _swarm_filters_arguments
    +            ;;
    +          esac
    +        ;;
    +        (peers)
    +          case $MAIN_SUBCOMMAND in
    +            (swarm)
    +              _arguments \
    +                '(-v --verbose)'{-v,--verbose}'[display all extra information.]' \
    +                '--streams[Also list information about open streams for each peer.]' \
    +                '--latency[Also list information about latency to each peer.]' \
    +                '--direction[Also list information about the direction of connection.]'
    +            ;;
    +          esac
    +        ;;
    +        (export)
    +          case $MAIN_SUBCOMMAND in
    +            (dag)
    +              _arguments \
    +                '(-p --progress)'{-p,--progress}'[Display progress on CLI. Defaults to true when STDERR is a TTY.]'
    +            ;;
    +            (key)
    +              _arguments \
    +                '(-o --output)'{-o,--output}'[The path where the output should be stored.]'
    +            ;;
    +          esac
    +        ;;
    +        (import)
    +          case $MAIN_SUBCOMMAND in
    +            (dag)
    +              _arguments \
    +                '--silent[No output.]' \
    +                '--pin-roots[Pin optional roots listed in the .car headers after importing. Default: true.]'
    +            ;;
    +            (key)
    +              _arguments \
    +                '--ipns-base[Encoding used for keys: Can either be a multibase encoded CID or a base58btc encoded multihash. Takes {b58mh|base36|k|base32|b...}. Default: base36.]'
    +            ;;
    +          esac
    +        ;;
    +        (remote)
    +          case $MAIN_SUBCOMMAND in
    +            (pin)
    +              local -a _pin_remote_arguments
    +              _pin_remote_arguments=(
    +                'add:Pin object to remote pinning service.'
    +                'ls:List objects pinned to remote pinning service.'
    +                'rm:Remove pins from remote pinning service.'
    +                'service:Configure remote pinning services.'
    +              )
    +              _ipfs_subcommand _pin_remote_arguments
    +            ;;
    +          esac
    +        ;;
    +      esac
    +    ;;
    +  esac
    +}
    +
    +local expl
    +
    +_arguments \
    +  '(-c --config)'{-c,--config}'[Path to the configuration file to use.]' \
    +  '(-D --debug)'{-D,--debug}'[Operate in debug mode.]' \
    +  '(--help)--help[Show the full command help text.]' \
    +  '(--h)-h[Show a short version of the command help text.]' \
    +  '(-L --local)'{-L,--local}'[Run the command locally, instead of using the daemon. DEPRECATED: use --offline.]' \
    +  '(--offline)--offline[Run the command offline.]' \
    +  '(--api)--api[Use a specific API instance (defaults to /ip4/127.0.0.1/tcp/5001).]' \
    +  '(--cid-base)--cid-base[Multibase encoding used for version 1 CIDs in output.]' \
    +  '(--upgrade-cidv0-in-output)--upgrade-cidv0-in-output[Upgrade version 0 to version 1 CIDs in output.]' \
    +  '(--enc --encoding)'{--enc,--encoding}'[The encoding type the output should be encoded with (json, xml, or text). Default: text.]' \
    +  '(--stream-channels)--stream-channels[Stream channel output.]' \
    +  '(--timeout)--timeout[Set a global timeout on the command.]' \
    +  '*:: :->subcmds' && return 0
    +
    +if (( CURRENT == 1 )); then
    +  _describe -t commands "ipfs subcommand" _1st_arguments
    +  return
    +fi
    +
    +MAIN_SUBCOMMAND="$words[1]"
    +case $MAIN_SUBCOMMAND in
    +  (add)
    +    _arguments \
    +      '(-r --recursive)'{-r,--recursive}'[Add directory paths recursively.]' \
    +      '(--dereference-args)--dereference-args[Symlinks supplied in arguments are dereferenced.]' \
    +      '(--stdin-name)--stdin-name[Assign a name if the file source is stdin.]' \
    +      '(-H --hidden)'{-H,--hidden}'[Include files that are hidden. Only takes effect on recursive add.]' \
    +      '(--ignore)--ignore[A rule (.gitignore-stype) defining which file(s) should be ignored (variadic, experimental).]' \
    +      '(--ignore-rules-path)--ignore-rules-path[A path to a file with .gitignore-style ignore rules (experimental).]' \
    +      '(-q --quiet)'{-q,--quiet}'[Write minimal output.]' \
    +      '(-Q --quieter)'{-Q,--quieter}'[Write only final hash.]' \
    +      '(--silent)--silent[Write no output.]' \
    +      '(-p --progress)'{-p,--progress}'[Stream progress data.]' \
    +      '(-t --trickle)'{-t,--trickle}'[Use trickle-dag format for dag generation.]' \
    +      '(-n --only-hash)'{-n,--only-hash}'[Only chunk and hash - do not write to disk.]' \
    +      '(-w --wrap-with-directory)'{-w,--wrap-with-directory}'[Wrap files with a directory object.]' \
    +      '(-s --chunker)'{-s,--chunker}'[Chunking algorithm, size-(bytes) or rabin-(min)-(avg)-(max). Default: size-262144.]' \
    +      '(--pin)--pin[Pin this object when adding. Default: true.]' \
    +      '(--raw-leaves)--raw-leaves[Use raw blocks for leaf nodes. (experimental).]' \
    +      '(--nocopy)--nocopy[Add the file using filestore. Implies raw-leaves. (experimental).]' \
    +      '(--fscache)--fscache[Check the filestore for pre-existing blocks. (experimental).]' \
    +      '(--cid-version)--cid-version[CID version. Defaults to 0 unless an option that depends on CIDv1 is passed. (experimental).]' \
    +      '(--hash)--hash[Hash function to use. Implies CIDv1 if not sha2-256. (experimental). Default: sha2-256.]' \
    +      '(--inline)--inline[Inline small blocks into CIDs. (experimental).]' \
    +      '(--inline-limit)--inline-limit[Maximum block size to inline. (experimental). Default: 32.]'
    +  ;;
    +  (bitswap)
    +    local -a _bitswap_arguments
    +    _bitswap_arguments=(
    +      'ledger:Show the current ledger for a peer.'
    +      'reprovide:Trigger reprovider.'
    +      'stat:Show some diagnostic information on the bitswap agent.'
    +      'wantlist:Show blocks currently on the wantlist.'
    +    )
    +    _ipfs_subcommand _bitswap_arguments
    +  ;;
    +  (block)
    +    local -a _block_arguments
    +    _block_arguments=(
    +      'get:Get a raw IPFS block.'
    +      'put:Store input as an IPFS block.'
    +      'rm:Remove IPFS block(s).'
    +      'stat:Print information of a raw IPFS block.'
    +    )
    +    _ipfs_subcommand _block_arguments
    +  ;;
    +  (bootstrap)
    +    local -a _bootstrap_arguments
    +    _bootstrap_arguments=(
    +      'add:Add peers to the bootstrap list.'
    +      'list:Show peers in the bootstrap list.'
    +      'rm:Remove peers from the bootstrap list.'
    +    )
    +    _ipfs_subcommand _bootstrap_arguments
    +  ;;
    +  (cat)
    +    _arguments \
    +      '(-o --offset)'{-o,--offset}'[Byte offset to begin reading from.]' \
    +      '(-l --length)'{-l,--length}'[Maximum number of bytes to read.]'
    +  ;;
    +  (cid)
    +    local -a _cid_arguments
    +    _cid_arguments=(
    +      'base32:Convert CIDs to Base32 CID version 1.'
    +      'bases:List available multibase encodings.'
    +      'codecs:List available CID codecs.'
    +      'format:Format and convert a CID in various useful ways.'
    +      'hashes:List available multihashes.'
    +    )
    +    _ipfs_subcommand _cid_arguments
    +  ;;
    +  (commands)
    +    _arguments '(-f --flags)'{-f,--flags}'[Show command flags.]'
    +  ;;
    +  (config)
    +    _arguments \
    +      '--bool[Set a boolean value.]' \
    +      '--json[Parse stringified JSON.]'
    +    local -a _config_arguments
    +    _config_arguments=(
    +      'edit:Open the config file for editing in $EDITOR.'
    +      'profile:Apply profiles to config.'
    +      'replace:Replace the config with .'
    +      'show:Output config file contents.'
    +    )
    +    _ipfs_subcommand _config_arguments
    +  ;;
    +  (daemon)
    +    _arguments \
    +      '--init[Initialize ipfs with default settings if not already initialized.]' \
    +      '--init-config[Path to existing configuration file to be loaded during --init.]' \
    +      '--init-profile[Configuration profiles to apply for --init. See ipfs init --help for more.]' \
    +      '--routing[Overrides the routing option. Default: default.]' \
    +      '--mount[Mounts IPFS to the filesystem.]' \
    +      '--writable[Enable writing objects (with POST, PUT and DELETE).]' \
    +      '--mount-ipfs[Path to the mountpoint for IPFS (if using --mount). Defaults to config setting.]' \
    +      '--mount-ipns[Path to the mountpoint for IPNS (if using --mount). Defaults to config setting.]' \
    +      '--unrestricted-api[Allow API access to unlisted hashes.]' \
    +      '--disable-transport-encryption[Disable transport encryption (for debugging protocols).]' \
    +      '--enable-gc[Enable automatic periodic repo garbage collection.]' \
    +      '--manage-fdlimit[Check and raise file descriptor limits if needed. Default: true.]' \
    +      '--migrate[If true, assume yes at the migrate prompt. If false, assume no.]' \
    +      '--enable-pubsub-experiment[Instantiate the ipfs daemon with the experimental pubsub feature enabled.]' \
    +      '--enable-namesys-pubsub[Enable IPNS record distribution through pubsub; enables pubsub.]' \
    +      '--enable-mplex-experiment[Add the experimental 'go-multiplex' stream muxer to libp2p on construction. Default: true.]'
    +  ;;
    +  (dag)
    +    local -a _dag_arguments
    +    _dag_arguments=(
    +      'export:Streams the selected DAG as a .car stream on stdout.'
    +      'get:Get a dag node from ipfs.'
    +      'import:Import the contents of .car files'
    +      'put:Add a dag node to ipfs.'
    +      'resolve:Resolve ipld block.'
    +      'stat:Gets stats for a DAG'
    +    )
    +    _ipfs_subcommand _dag_arguments
    +  ;;
    +  (dht)
    +    local -a _dht_arguments
    +    _dht_arguments=(
    +      'findpeer:Find the multiaddresses associated with a Peer ID.'
    +      'findprovs:Find peers that can provide a specific value, given a key.'
    +      'get:Given a key, query the routing system for its best value.'
    +      'provide:Announce to the network that you are providing given values.'
    +      'put:Write a key/value pair to the routing system.'
    +      'query:Find the closest Peer IDs to a given Peer ID by querying the DHT.'
    +    )
    +    _ipfs_subcommand _dht_arguments
    +  ;;
    +  (diag)
    +    local -a _diag_arguments
    +    _diag_arguments=(
    +      'cmds:List commands run on this IPFS node.'
    +      'sys:Print system diagnostic information.'
    +    )
    +    _ipfs_subcommand _diag_arguments
    +  ;;
    +  (dns)
    +    _arguments '(-r --recursive)'{-r,--recursive}'[Resolve until the result is not a DNS link. Default: true.]'
    +  ;;
    +  (files)
    +    _arguments '(-f --flush)'{-f,--flush}'[Flush target and ancestors after write. Default: true.]'
    +    local -a _files_arguments
    +    _files_arguments=(
    +      'chcid:Change the cid version or hash function of the root node of a given path.'
    +      'cp:Copy files into mfs.'
    +      "flush:Flush a given path's data to disk."
    +      'ls:List directories in the local mutable namespace.'
    +      'mkdir:Make directories.'
    +      'mv:Move files.'
    +      'read:Read a file in a given mfs.'
    +      'rm:Remove a file.'
    +      'stat:Display file status.'
    +      'write:Write to a mutable file in a given filesystem.'
    +    )
    +    _ipfs_subcommand _files_arguments
    +  ;;
    +  (filestore)
    +    local -a _filestore_arguments
    +    _filestore_arguments=(
    +      'dups:List blocks that are both in the filestore and standard block storage.'
    +      'ls:List objects in filestore.'
    +      'verify:Verify objects in filestore.'
    +    )
    +    _ipfs_subcommand _filestore_arguments
    +  ;;
    +  (get)
    +    _arguments \
    +      '(-o --output)'{-o,--output}'[The path where the output should be stored.]'\
    +      '(-a --archive)'{-a,--archive}'[Output a TAR archive.]' \
    +      '(-C --compress)'{-C,--compress}'[Compress the output with GZIP compression.]' \
    +      '(-l --compression-level)'{-l,--compression-level}'[The level of compression (1-9).]'
    +  ;;
    +  (id)
    +    _arguments \
    +      '(-f --format)'{-f,--format}'[Optional output format.]' \
    +      '--peerid-base[Encoding used for peer IDs: Can either be a multibase encoded CID or a base58btc encoded multihash. Takes {b58mh|base36|k|base32|b...}. Default: b58mh.]'
    +  ;;
    +  (init)
    +    _arguments \
    +      '(-a --algorithm)'{-a, --algorithm}'[Cryptographic algorithm to use for key generation. Default: ed25519.]' \
    +      '(-b --bits)'{-b,--bits}'[Number of bits to use in the generated RSA private key.]' \
    +      '(-e --empty-repo)'{-e,--empty-repo}"[Don't add and pin help files to the local storage.]" \
    +      '(-p --profile)'{-p,--profile}"[Apply profile settings to config. Multiple profiles can be separated by ','.]"
    +  ;;
    +  (key)
    +    local -a _key_arguments
    +    _key_arguments=(
    +      'export:Export a keypair'
    +      'gen:Create a new keypair'
    +      'import:Import a key and prints imported key id'
    +      'list:List all local keypairs'
    +      'rename:Rename a keypair'
    +      'rm:Remove a keypair'
    +      'rotate:Rotates the ipfs identity.'
    +    )
    +    _ipfs_subcommand _key_arguments
    +  ;;
    +  (log)
    +    local -a _log_arguments
    +    _log_arguments=(
    +      'level:Change the logging level.'
    +      'ls:List the logging subsystems.'
    +      'tail:Read the event log.'
    +    )
    +    _ipfs_subcommand _log_arguments
    +  ;;
    +  (ls)
    +    _arguments \
    +      '(-v --headers)'{-v,--headers}'[Print table headers (Hash, Size, Name).]' \
    +      '--resolve-type[Resolve linked objects to find out their types. Default: true.]' \
    +      '--size[Resolve linked objects to find out their file size. Default: true.]' \
    +      '(-s --stream)'{-s,--stream}'[Enable experimental streaming of directory entries as they are traversed.]' \
    +  ;;
    +  (mount)
    +    _arguments \
    +      '(-f --ipfs-path)'{-f,--ipfs-path}'[The path where IPFS should be mounted.]' \
    +      '(-n --ipns-path)'{-n,--ipns-path}'[The path where IPNS should be mounted.]'
    +  ;;
    +  (name)
    +    local -a _name_arguments
    +    _name_arguments=(
    +      'publish:Publish IPNS names.'
    +      'pubsub:IPNS pubsub management.'
    +      'resolve:Resolve IPNS names.'
    +    )
    +    _ipfs_subcommand _name_arguments
    +  ;;
    +  (object)
    +    local -a _object_arguments
    +    _object_arguments=(
    +      'data:Output the raw bytes of an IPFS object.'
    +      'diff:Display the diff between two ipfs objects.'
    +      'get:Get and serialize the DAG node named by .'
    +      'links:Output the links pointed to by the specified object.'
    +      'new:Create a new object from an ipfs template.'
    +      'patch:Create a new merkledag object based on an existing one.'
    +      'put:Store input as a DAG object, print its key.'
    +      'stat:Get stats for the DAG node named by .'
    +    )
    +    _ipfs_subcommand _object_arguments
    +  ;;
    +  (p2p)
    +    local -a _p2p_arguments
    +    _p2p_arguments=(
    +      'close:Stop listening for new connections to forward.'
    +      'forward:Forward connections to libp2p service'
    +      'listen:Create libp2p service'
    +      'ls:List active p2p listeners.'
    +      'stream:P2P stream management.'
    +    )
    +    _ipfs_subcommand _p2p_arguments
    +  ;;
    +  (pin)
    +    local -a _pin_arguments
    +    _pin_arguments=(
    +      'add:Pin objects to local storage.'
    +      'ls:List objects pinned to local storage.'
    +      'remote:Pin (and unpin) objects to remote pinning service.'
    +      'rm:Remove pinned objects from local storage.'
    +      'update:Update a recursive pin'
    +      'verify:Verify that recursive pins are complete.'
    +    )
    +    _ipfs_subcommand _pin_arguments
    +  ;;
    +  (ping)
    +    _arguments '(-n --count)'{-n,--count}'[Number of ping messages to send. Default: 10.]'
    +  ;;
    +  (refs)
    +    _arguments \
    +      '--format[Emit edges with given format. Available tokens:   . Default: .]' \
    +      '(-e --edges)'{-e,--edges}'[Emit edge format: ` -> `.]' \
    +      '(-u --unique)'{-u,--unique}'[Omit duplicate refs from output.]' \
    +      '(-r --recursive)'{-r,--recursive}'[Recursively list links of child nodes.]' \
    +      '--max-depth[Only for recursive refs, limits fetch and listing to the given depth. Default: -1.]'
    +    local -a _refs_arguments
    +    _refs_arguments='local:List all local references.'
    +    _ipfs_subcommand _refs_arguments
    +  ;;
    +  (repo)
    +    local -a _repo_arguments
    +    _repo_arguments=(
    +      'fsck:Remove repo lockfiles.'
    +      'gc:Perform a garbage collection sweep on the repo.'
    +      'stat:Get stats for the currently used repo.'
    +      'verify:Verify all blocks in repo are not corrupted.'
    +      'version:Show the repo version.'
    +    )
    +    _ipfs_subcommand _repo_arguments
    +  ;;
    +  (resolve)
    +    _arguments \
    +      '(-r --recursive)'{-r,--recursive}'[Resolve until the result is an IPFS name. Default: true.]' \
    +      '(--dhtrc --dht-record-count)'{--dhtrc,--dht-record-count}'[Number of records to request for DHT resolution.]' \
    +      '(--dhtt --dht-timeout)'{--dhtt,--dht-timeout}'[Max time to collect values during DHT resolution eg "30s". Pass 0 for no timeout.]'
    +  ;;
    +  (stats)
    +    local -a _stats_arguments
    +    _stats_arguments=(
    +      'bitswap:Show some diagnostic information on the bitswap agent.'
    +      'bw:Print ipfs bandwidth information.'
    +      "dht:Returns statistics about the node's DHT(s)"
    +      'repo:Get stats for the currently used repo.'
    +    )
    +    _ipfs_subcommand _stats_arguments
    +  ;;
    +  (swarm)
    +    local -a _swarm_arguments
    +    _swarm_arguments=(
    +      'addrs:List known addresses. Useful for debugging.'
    +      'connect:Open connection to a given address.'
    +      'disconnect:Close connection to a given address.'
    +      'filters:Manipulate address filters.'
    +      'peers:List peers with open connections.'
    +    )
    +    _ipfs_subcommand _swarm_arguments
    +  ;;
    +  (tar)
    +    local -a _tar_arguments
    +    _tar_arguments=(
    +      'add:Import a tar file into ipfs.'
    +      'cat:Export a tar file from IPFS.'
    +    )
    +    _ipfs_subcommand _tar_arguments
    +  ;;
    +  (version)
    +    _arguments \
    +      '(-n --number)'{-n,--number}'[Only show the version number.]' \
    +      '--commit[Show the commit hash.]' \
    +      '--repo[Show repo version.]' \
    +      '--all[Show all version information.]'
    +  ;;
    +esac
    diff --git a/dot_oh-my-zsh/plugins/isodate/README.md b/dot_oh-my-zsh/plugins/isodate/README.md
    new file mode 100644
    index 0000000..1ec75b2
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/isodate/README.md
    @@ -0,0 +1,22 @@
    +# Isodate plugin
    +
    +**Maintainer:** [@Frani](https://github.com/frani)
    +
    +This plugin adds completion for the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601),
    +as well as some aliases for common Date commands.
    +
    +To use it, add `isodate` to the plugins array in your zshrc file:
    +
    +```zsh
    +plugins=(... isodate)
    +```
    +
    +## Aliases
    +
    +| Alias         | Command                              | Description                                                                |
    +|---------------|--------------------------------------|----------------------------------------------------------------------------|
    +| isodate       | `date +%Y-%m-%dT%H:%M:%S%z`          | Display the current date with UTC offset and ISO 8601-2 extended format    |
    +| isodate_utc   | `date -u +%Y-%m-%dT%H:%M:%SZ`        | Display the current date in UTC and ISO 8601-2 extended format             |
    +| isodate_basic | `date -u +%Y%m%dT%H%M%SZ`            | Display the current date in UTC and ISO 8601 basic format                  |
    +| unixstamp     | `date +%s`                           | Display the current date as a Unix timestamp (seconds since the Unix epoch)|
    +| date_locale   | `date +"%c"`                         | Display the current date using the default locale's format                 |
    diff --git a/dot_oh-my-zsh/plugins/isodate/isodate.plugin.zsh b/dot_oh-my-zsh/plugins/isodate/isodate.plugin.zsh
    new file mode 100644
    index 0000000..1a827e7
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/isodate/isodate.plugin.zsh
    @@ -0,0 +1,7 @@
    +# work with date ISO 8601 easy
    +
    +alias isodate="date +%Y-%m-%dT%H:%M:%S%z"
    +alias isodate_utc="date -u +%Y-%m-%dT%H:%M:%SZ"
    +alias isodate_basic="date -u +%Y%m%dT%H%M%SZ"
    +alias unixstamp="date +%s"
    +alias date_locale="date +"%c""
    diff --git a/dot_oh-my-zsh/plugins/istioctl/README.md b/dot_oh-my-zsh/plugins/istioctl/README.md
    new file mode 100644
    index 0000000..afd4d29
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/istioctl/README.md
    @@ -0,0 +1,9 @@
    +# Istioctl - Istio Command-line Tool
    +
    +The [istioctl](https://istio.io/latest/docs/ops/diagnostic-tools/istioctl/) tool is a configuration command line utility that allows service operators to debug and diagnose their Istio service mesh deployments.
    +
    +To use it, add `istioctl` to the plugins array of your zshrc file:
    +
    +```sh
    +plugins=(... istioctl)
    +```
    diff --git a/dot_oh-my-zsh/plugins/istioctl/istioctl.plugin.zsh b/dot_oh-my-zsh/plugins/istioctl/istioctl.plugin.zsh
    new file mode 100644
    index 0000000..13ead1b
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/istioctl/istioctl.plugin.zsh
    @@ -0,0 +1,4 @@
    +if [ $commands[istioctl] ]; then
    +  source <(istioctl completion zsh)
    +  compdef _istioctl istioctl
    +fi
    diff --git a/dot_oh-my-zsh/plugins/iterm2/README.md b/dot_oh-my-zsh/plugins/iterm2/README.md
    new file mode 100644
    index 0000000..50cdebf
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/iterm2/README.md
    @@ -0,0 +1,29 @@
    +# iTerm2 plugin
    +
    +This plugin adds a few functions that are useful when using [iTerm2](https://www.iterm2.com/).
    +
    +To use it, add _iterm2_ to the plugins array of your zshrc file:
    +```
    +plugins=(... iterm2)
    +```
    +
    +## Plugin commands
    +
    +* `_iterm2_command `
    +  executes an arbitrary iTerm2 command via an escape code sequence.
    +  See https://iterm2.com/documentation-escape-codes.html for all supported commands.
    +
    +* `iterm2_profile `
    +  changes the current terminal window's profile (colors, fonts, settings, etc).
    +  `profile-name` is the name of another iTerm2 profile. The profile name can contain spaces.
    +
    +* `iterm2_tab_color   `
    +  changes the color of iTerm2's currently active tab.
    +  `red`/`green`/`blue` are on the range 0-255.
    +
    +* `iterm2_tab_color_reset`
    +  resets the color of iTerm2's current tab back to default.
    +
    +## Contributors
    +
    +- [Aviv Rosenberg](https://github.com/avivrosenberg)
    diff --git a/dot_oh-my-zsh/plugins/iterm2/iterm2.plugin.zsh b/dot_oh-my-zsh/plugins/iterm2/iterm2.plugin.zsh
    new file mode 100644
    index 0000000..9d8e40b
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/iterm2/iterm2.plugin.zsh
    @@ -0,0 +1,68 @@
    +#####################################################
    +# iTerm2 plugin for oh-my-zsh                       #
    +# Author: Aviv Rosenberg (github.com/avivrosenberg) #
    +#####################################################
    +
    +###
    +# This plugin is only relevant if the terminal is iTerm2 on OSX.
    +if [[ "$OSTYPE" == darwin* ]] && [[ -n "$ITERM_SESSION_ID" ]] ; then
    +
    +  ###
    +  # Executes an arbitrary iTerm2 command via an escape code sequence.
    +  # See https://iterm2.com/documentation-escape-codes.html for all supported commands.
    +  # Example: $ _iterm2_command "1337;StealFocus"
    +  function _iterm2_command() {
    +    local cmd="$1"
    +
    +    # Escape codes for wrapping commands for iTerm2.
    +    local iterm2_prefix="\x1B]"
    +    local iterm2_suffix="\x07"
    +
    +    # If we're in tmux, a special escape code must be prepended/appended so that
    +    # the iTerm2 escape code is passed on into iTerm2.
    +    if [[ -n $TMUX ]]; then
    +      local tmux_prefix="\x1BPtmux;\x1B"
    +      local tmux_suffix="\x1B\\"
    +    fi
    +
    +    echo -n "${tmux_prefix}${iterm2_prefix}${cmd}${iterm2_suffix}${tmux_suffix}"
    +  }
    +
    +  ###
    +  # iterm2_profile(): Function for changing the current terminal window's
    +  # profile (colors, fonts, settings, etc).
    +  # To change the current iTerm2 profile, call this function and pass in a name
    +  # of another existing iTerm2 profile (name can contain spaces).
    +  function iterm2_profile() {
    +    # Desired name of profile
    +    local profile="$1"
    +
    +    # iTerm2 command for changing profile
    +    local cmd="1337;SetProfile=$profile"
    +
    +    # send the sequence
    +    _iterm2_command "${cmd}"
    +
    +    # update shell variable
    +    ITERM_PROFILE="$profile"
    +  }
    +
    +  ###
    +  # iterm2_tab_color(): Changes the color of iTerm2's currently active tab.
    +  # Usage: iterm2_tab_color   
    +  #        where red/green/blue are on the range 0-255.
    +  function iterm2_tab_color() {
    +    _iterm2_command "6;1;bg;red;brightness;$1"
    +    _iterm2_command "6;1;bg;green;brightness;$2"
    +    _iterm2_command "6;1;bg;blue;brightness;$3"
    +  }
    +
    +
    +  ###
    +  # iterm2_tab_color_reset(): Resets the color of iTerm2's current tab back to
    +  # default.
    +  function iterm2_tab_color_reset() {
    +    _iterm2_command "6;1;bg;*;default"
    +  }
    +
    +fi
    diff --git a/dot_oh-my-zsh/plugins/jake-node/README.md b/dot_oh-my-zsh/plugins/jake-node/README.md
    new file mode 100644
    index 0000000..78ca8d8
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/jake-node/README.md
    @@ -0,0 +1,9 @@
    +# Jake
    +
    +This plugin provides completion for [Jake](http://jakejs.com/).
    +
    +To use it add jake-node to the plugins array in your zshrc file.
    +
    +```bash
    +plugins=(... jake-node)
    +```
    diff --git a/dot_oh-my-zsh/plugins/jake-node/jake-node.plugin.zsh b/dot_oh-my-zsh/plugins/jake-node/jake-node.plugin.zsh
    new file mode 100644
    index 0000000..c2dad28
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/jake-node/jake-node.plugin.zsh
    @@ -0,0 +1,14 @@
    +#---oh-my-zsh plugin : task Autocomplete for Jake tool---
    +# Jake : https://github.com/mde/jake
    +# Warning : Jakefile should have the right case : Jakefile or jakefile
    +# Tested on : MacOSX 10.7 (Lion), Ubuntu 11.10
    +# Author : Alexandre Lacheze (@al3xstrat)
    +# Inspiration : https://weblog.rubyonrails.org/2006/3/9/fast-rake-task-completion-for-zsh
    +
    +function _jake () {
    +  if [ -f Jakefile ] || [ -f jakefile ] || [ -f Jakefile.js ] || [ -f jakefile.js ]; then
    +    compadd `jake -T | cut -d " " -f 2 | sed -E "s/.\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"`
    +  fi
    +}
    +
    +compdef _jake jake
    diff --git a/dot_oh-my-zsh/plugins/jenv/README.md b/dot_oh-my-zsh/plugins/jenv/README.md
    new file mode 100644
    index 0000000..1487941
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/jenv/README.md
    @@ -0,0 +1,27 @@
    +# jenv plugin
    +
    +[jenv](https://www.jenv.be/) is a Java version manager similar to [rbenv](https://github.com/rbenv/rbenv)
    +and [pyenv](https://github.com/yyuu/pyenv).
    +
    +This plugin initializes jenv and provides the `jenv_prompt_info` function to add Java
    +version information to prompts.
    +
    +To use, add `jenv` to your plugins array in your zshrc file:
    +
    +```zsh
    +plugins=(... jenv)
    +```
    +
    +## Theme example
    +
    +You can modify your `$PROMPT` or `$RPROMPT` variables to run `jenv_prompt_info`.
    +
    +For example:
    +```
    +PROMPT="%~$ "
    +RPROMPT='$(jenv_prompt_info)'
    +```
    +changes your prompt to:
    +```
    +~/java/project$ ▋                                       oracle64-1.6.0.39
    +```
    diff --git a/dot_oh-my-zsh/plugins/jenv/jenv.plugin.zsh b/dot_oh-my-zsh/plugins/jenv/jenv.plugin.zsh
    new file mode 100644
    index 0000000..2401026
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/jenv/jenv.plugin.zsh
    @@ -0,0 +1,36 @@
    +jenvdirs=("$HOME/.jenv" "/usr/local/bin/jenv" "/usr/local/jenv" "/opt/jenv")
    +
    +FOUND_JENV=0
    +for jenvdir in $jenvdirs; do
    +    if [[ -d "${jenvdir}/bin" ]]; then
    +        FOUND_JENV=1
    +        break
    +    fi
    +done
    +
    +if [[ $FOUND_JENV -eq 0 ]]; then
    +    if (( $+commands[brew] )) && jenvdir="$(brew --prefix jenv)"; then
    +        [[ -d "${jenvdir}/bin" ]] && FOUND_JENV=1
    +    fi
    +fi
    +
    +if [[ $FOUND_JENV -eq 1 ]]; then
    +    (( $+commands[jenv] )) || export PATH="${jenvdir}/bin:$PATH"
    +    eval "$(jenv init - zsh)"
    +
    +    function jenv_prompt_info() {
    +      local version="$(jenv version-name 2>/dev/null)"
    +      echo "${version:gs/%/%%}"
    +    }
    +
    +    if [[ -d "${jenvdir}/versions" ]]; then
    +        export JENV_ROOT=$jenvdir
    +    fi
    +else
    +    function jenv_prompt_info() {
    +      local version="$(java -version 2>&1 | cut -d' ' -f2)"
    +      echo "system: ${version:gs/%/%%}"
    +    }
    +fi
    +
    +unset jenvdir jenvdirs FOUND_JENV
    diff --git a/dot_oh-my-zsh/plugins/jfrog/README.md b/dot_oh-my-zsh/plugins/jfrog/README.md
    new file mode 100644
    index 0000000..1d85862
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/jfrog/README.md
    @@ -0,0 +1,11 @@
    +# JFrog CLI
    +
    +This plugin provides completion for [JFrog CLI](https://github.com/jfrog/jfrog-cli).
    +
    +JFrog CLI provides a simple interface that automates access to [Artifactory](https://jfrog.com/artifactory), [Xray](https://jfrog.com/xray), [Bintray](https://jfrog.com/bintray) and [Mission Control](https://jfrog.com/mission-control) through their respective REST APIs.
    +
    +To use it, add `jfrog` to the plugins array in your zshrc file:
    +
    +```zsh
    +plugins=(... jfrog)
    +```
    diff --git a/dot_oh-my-zsh/plugins/jfrog/jfrog.plugin.zsh b/dot_oh-my-zsh/plugins/jfrog/jfrog.plugin.zsh
    new file mode 100644
    index 0000000..1441bc1
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/jfrog/jfrog.plugin.zsh
    @@ -0,0 +1,11 @@
    +_jfrog() {
    +	local -a opts
    +	opts=("${(@f)$(_CLI_ZSH_AUTOCOMPLETE_HACK=1 ${words[@]:0:#words[@]-1} --generate-bash-completion)}")
    +	_describe 'values' opts
    +	if [[ $compstate[nmatches] -eq 0 && $words[$CURRENT] != -* ]]; then
    +		_files
    +	fi
    +}
    +
    +compdef _jfrog jfrog
    +compdef _jfrog jf
    diff --git a/dot_oh-my-zsh/plugins/jhbuild/README.md b/dot_oh-my-zsh/plugins/jhbuild/README.md
    new file mode 100644
    index 0000000..3220e0d
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/jhbuild/README.md
    @@ -0,0 +1,34 @@
    +# JHBuild
    +
    +This plugin adds some [JHBuild](https://developer.gnome.org/jhbuild/) aliases.
    +
    +To use it, add `jhbuild` to the plugins array of your zshrc file:
    +
    +```zsh
    +plugins=(... jhbuild)
    +```
    +
    +**Maintainer:** [Miguel Vaello](https://github.com/miguxbe)
    +
    +## Aliases
    +
    +| Alias   | Command                   |
    +|---------|---------------------------|
    +| `jh`    | `jhbuild`                 |
    +| `jhb`   | `jhbuild build`           |
    +| `jhbo`  | `jhbuild buildone`        |
    +| `jhckb` | `jhbuild checkbranches`   |
    +| `jhckm` | `jhbuild checkmodulesets` |
    +| `jhi`   | `jhbuild info`            |
    +| `jhl`   | `jhbuild list`            |
    +| `jhc`   | `jhbuild clean`           |
    +| `jhco`  | `jhbuild cleanone`        |
    +| `jhm`   | `jhbuild make`            |
    +| `jhr`   | `jhbuild run`             |
    +| `jhrd`  | `jhbuild rdepends`        |
    +| `jhsd`  | `jhbuild sysdeps`         |
    +| `jhu`   | `jhbuild update`          |
    +| `jhuo`  | `jhbuild updateone`       |
    +| `jhun`  | `jhbuild uninstall`       |
    +| `jhsh`  | `jhbuild shell`           |
    +| `jht`   | `jhbuild tinderbox`       |
    diff --git a/dot_oh-my-zsh/plugins/jhbuild/jhbuild.plugin.zsh b/dot_oh-my-zsh/plugins/jhbuild/jhbuild.plugin.zsh
    new file mode 100644
    index 0000000..416745d
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/jhbuild/jhbuild.plugin.zsh
    @@ -0,0 +1,32 @@
    +# JHBuild Aliases
    +
    +# Base
    +alias jh='jhbuild'
    +# Build
    +alias jhb='jhbuild build'
    +alias jhbo='jhbuild buildone'
    +# Checks
    +alias jhckb='jhbuild checkbranches'
    +alias jhckm='jhbuild checkmodulesets'
    +# Info & List
    +alias jhi='jhbuild info'
    +alias jhl='jhbuild list'
    +# Clean
    +alias jhc='jhbuild clean'
    +alias jhco='jhbuild cleanone'
    +# Make
    +alias jhm='jhbuild make'
    +# Run
    +alias jhr='jhbuild run'
    +# Depends
    +alias jhrd='jhbuild rdepends'
    +alias jhsd='jhbuild sysdeps'
    +# Update
    +alias jhu='jhbuild update'
    +alias jhuo='jhbuild updateone'
    +# Uninstall
    +alias jhun='jhbuild uninstall'
    +# Shell
    +alias jhsh='jhbuild shell'
    +# Tinderbox
    +alias jht='jhbuild tinderbox'
    diff --git a/dot_oh-my-zsh/plugins/jira/README.md b/dot_oh-my-zsh/plugins/jira/README.md
    new file mode 100644
    index 0000000..d78ea15
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/jira/README.md
    @@ -0,0 +1,81 @@
    +#  Jira plugin  #
    +
    +CLI support for JIRA interaction
    +
    +##  Description  ##
    +
    +This plugin provides command line tools for interacting with Atlassian's [JIRA](https://www.atlassian.com/software/jira) bug tracking software.
    +
    +The interaction is all done through the web. No local installation of JIRA is necessary.
    +
    +In this document, "JIRA" refers to the JIRA issue tracking server, and `jira` refers to the command this plugin supplies.
    +
    +##  Usage  ##
    +
    +This plugin supplies one command, `jira`, through which all its features are exposed. Most forms of this command open a JIRA page in your web browser.
    +
    +## Commands
    +
    +| Command       | Description                                               |
    +| :------------ | :-------------------------------------------------------- |
    +| `jira`        | Performs the default action                               |
    +| `jira new`    | Opens a new Jira issue dialogue                           |
    +| `jira ABC-123`   | Opens an existing issue                                |
    +| `jira ABC-123 m` | Opens an existing issue for adding a comment           |
    +| `jira dashboard [rapid_view]` |  # opens your JIRA dashboard              |
    +| `jira mine`   | Queries for your own issues                               |
    +| `jira tempo`  | Opens your JIRA Tempo                                     |
    +| `jira reported [username]`  | Queries for issues reported by a user       |
    +| `jira assigned [username]`  | Queries for issues assigned to a user       |
    +| `jira branch` | Opens an existing issue matching the current branch name  |
    +
    +
    +### Jira Branch usage notes
    +
    +The branch name may have prefixes ending in "/": "feature/MP-1234", and also suffixes 
    +starting with "_": "MP-1234_fix_dashboard". In both these cases, the issue opened will be "MP-1234"
    +
    +This is also checks if the prefix is in the name, and adds it if not, so: "MP-1234" opens the issue "MP-1234",
    +"mp-1234" opens the issue "mp-1234", and "1234" opens the issue "MP-1234".
    +
    +
    +
    +#### Debugging usage  ####
    +
    +These calling forms are for developers' use, and may change at any time.
    +
    +```
    +jira dumpconfig   # displays the effective configuration
    +```
    +
    +##  Setup  ##
    +
    +The URL for your JIRA instance is set by `$JIRA_URL` or a `.jira_url` file.
    +
    +Add a `.jira-url` file in the base of your project. You can also set `$JIRA_URL` in your `~/.zshrc` or put a `.jira-url` in your home directory. A `.jira-url` in the current directory takes precedence, so you can make per-project customizations.
    +
    +The same goes with `.jira-prefix` and `$JIRA_PREFIX`. These control the prefix added to all issue IDs, which differentiates projects within a JIRA instance.
    +
    +For example:
    +
    +```
    +cd to/my/project
    +echo "https://jira.atlassian.com" >> .jira-url
    +```
    +
    +(Note: The current implementation only looks in the current directory for `.jira-url` and `.jira-prefix`, not up the path, so if you are in a subdirectory of your project, it will fall back to your default JIRA URL. This will probably change in the future though.)
    +
    +###  Variables  ###
    +
    +* `$JIRA_URL` - Your JIRA instance's URL
    +* `$JIRA_NAME` - Your JIRA username; used as the default user for `assigned`/`reported` searches
    +* `$JIRA_PREFIX` - Prefix added to issue ID arguments
    +* `$JIRA_RAPID_BOARD` - Set to `true` if you use Rapid Board
    +* `$JIRA_RAPID_VIEW` - Set the default rapid view; it doesn't work if `$JIRA_RAPID_BOARD` is set to false
    +* `$JIRA_DEFAULT_ACTION` - Action to do when `jira` is called with no arguments; defaults to "new"
    +* `$JIRA_TEMPO_PATH` - Your JIRA tempo url path; defaults to "/secure/Tempo.jspa"
    +
    +
    +### Browser ###
    +
    +Your default web browser, as determined by how `open_command` handles `http://` URLs, is used for interacting with the JIRA instance. If you change your system's URL handler associations, it will change the browser that `jira` uses.
    diff --git a/dot_oh-my-zsh/plugins/jira/_jira b/dot_oh-my-zsh/plugins/jira/_jira
    new file mode 100644
    index 0000000..0e37b7e
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/jira/_jira
    @@ -0,0 +1,25 @@
    +#compdef jira
    +#autoload
    +
    +local -a _1st_arguments
    +_1st_arguments=(
    +  'new:create a new issue'
    +  'mine:open my issues'
    +  'dashboard:open the dashboard'
    +  'tempo:open the tempo'
    +  'reported:search for issues reported by a user'
    +  'assigned:search for issues assigned to a user'
    +  'branch:open the issue named after the git branch of the current directory'
    +  'dumpconfig:display effective jira configuration'
    +)
    +
    +_arguments -C \
    +  ':command:->command' \
    +  '*::options:->options'
    +
    +case $state in
    +  (command)
    +    _describe -t commands "jira subcommand" _1st_arguments
    +    return
    +   ;;
    +esac
    diff --git a/dot_oh-my-zsh/plugins/jira/jira.plugin.zsh b/dot_oh-my-zsh/plugins/jira/jira.plugin.zsh
    new file mode 100644
    index 0000000..e789fce
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/jira/jira.plugin.zsh
    @@ -0,0 +1,149 @@
    +# CLI support for JIRA interaction
    +#
    +# See README.md for details
    +
    +function jira() {
    +  emulate -L zsh
    +  local action jira_url jira_prefix
    +  if [[ -n "$1" ]]; then
    +    action=$1
    +  elif [[ -f .jira-default-action ]]; then
    +    action=$(cat .jira-default-action)
    +  elif [[ -f ~/.jira-default-action ]]; then
    +    action=$(cat ~/.jira-default-action)
    +  elif [[ -n "${JIRA_DEFAULT_ACTION}" ]]; then
    +    action=${JIRA_DEFAULT_ACTION}
    +  else
    +    action="new"
    +  fi
    +
    +  if [[ -f .jira-url ]]; then
    +    jira_url=$(cat .jira-url)
    +  elif [[ -f ~/.jira-url ]]; then
    +    jira_url=$(cat ~/.jira-url)
    +  elif [[ -n "${JIRA_URL}" ]]; then
    +    jira_url=${JIRA_URL}
    +  else
    +    _jira_url_help
    +    return 1
    +  fi
    +
    +  if [[ -f .jira-prefix ]]; then
    +    jira_prefix=$(cat .jira-prefix)
    +  elif [[ -f ~/.jira-prefix ]]; then
    +    jira_prefix=$(cat ~/.jira-prefix)
    +  elif [[ -n "${JIRA_PREFIX}" ]]; then
    +    jira_prefix=${JIRA_PREFIX}
    +  else
    +    jira_prefix=""
    +  fi
    +
    +
    +  if [[ $action == "new" ]]; then
    +    echo "Opening new issue"
    +    open_command "${jira_url}/secure/CreateIssue!default.jspa"
    +  elif [[ "$action" == "assigned" || "$action" == "reported" ]]; then
    +    _jira_query ${@:-$action}
    +  elif [[ "$action" == "mine" ]]; then
    +    echo "Opening my issues"
    +    open_command "${jira_url}/issues/?filter=-1"
    +  elif [[ "$action" == "dashboard" ]]; then
    +    echo "Opening dashboard"
    +    if [[ "$JIRA_RAPID_BOARD" == "true" ]]; then
    +      _jira_rapid_board ${@}
    +    else
    +      open_command "${jira_url}/secure/Dashboard.jspa"
    +    fi
    +  elif [[ "$action" == "tempo" ]]; then
    +    echo "Opening tempo"
    +    if [[ -n "$JIRA_TEMPO_PATH" ]]; then
    +      open_command "${jira_url}${JIRA_TEMPO_PATH}"
    +    else
    +      open_command "${jira_url}/secure/Tempo.jspa"
    +    fi
    +  elif [[ "$action" == "dumpconfig" ]]; then
    +    echo "JIRA_URL=$jira_url"
    +    echo "JIRA_PREFIX=$jira_prefix"
    +    echo "JIRA_NAME=$JIRA_NAME"
    +    echo "JIRA_RAPID_VIEW=$JIRA_RAPID_VIEW"
    +    echo "JIRA_RAPID_BOARD=$JIRA_RAPID_BOARD"
    +    echo "JIRA_DEFAULT_ACTION=$JIRA_DEFAULT_ACTION"
    +    echo "JIRA_TEMPO_PATH=$JIRA_TEMPO_PATH"
    +  else
    +    # Anything that doesn't match a special action is considered an issue name
    +    # but `branch` is a special case that will parse the current git branch
    +    local issue_arg issue
    +    if [[ "$action" == "branch" ]]; then
    +      # Get name of the branch
    +      issue_arg=$(git rev-parse --abbrev-ref HEAD)
    +      # Strip prefixes like feature/ or bugfix/
    +      issue_arg=${issue_arg##*/}
    +      # Strip suffixes starting with _
    +      issue_arg=(${(s:_:)issue_arg})
    +      issue_arg=${issue_arg[1]}
    +      if [[ "${issue_arg:l}" = ${jira_prefix:l}* ]]; then
    +        issue="${issue_arg}"
    +      else
    +        issue="${jira_prefix}${issue_arg}"
    +      fi
    +    else
    +      issue_arg=${(U)action}
    +      issue="${jira_prefix}${issue_arg}"
    +    fi
    +
    +    local url_fragment
    +    if [[ "$2" == "m" ]]; then
    +      url_fragment="#add-comment"
    +      echo "Add comment to issue #$issue"
    +    else
    +      echo "Opening issue #$issue"
    +    fi
    +    open_command "${jira_url}/browse/${issue}${url_fragment}"
    +  fi
    +}
    +
    +function _jira_url_help() {
    +  cat << EOF
    +error: JIRA URL is not specified anywhere.
    +
    +Valid options, in order of precedence:
    +  .jira-url file
    +  \$HOME/.jira-url file
    +  \$JIRA_URL environment variable
    +EOF
    +}
    +
    +function _jira_rapid_board() {
    +  rapid_view=${2:=$JIRA_RAPID_VIEW}
    +
    +  if [[ -z $rapid_view ]]; then
    +    open_command "${jira_url}/secure/RapidBoard.jspa"
    +  else
    +    open_command "${jira_url}/secure/RapidBoard.jspa?rapidView=$rapid_view"
    +  fi
    +}
    +
    +function _jira_query() {
    +  emulate -L zsh
    +  local verb="$1"
    +  local jira_name lookup preposition query
    +  if [[ "${verb}" == "reported" ]]; then
    +    lookup=reporter
    +    preposition=by
    +  elif [[ "${verb}" == "assigned" ]]; then
    +    lookup=assignee
    +    preposition=to
    +  else
    +    echo "error: not a valid lookup: $verb" >&2
    +    return 1
    +  fi
    +  jira_name=${2:=$JIRA_NAME}
    +  if [[ -z $jira_name ]]; then
    +    echo "error: JIRA_NAME not specified" >&2
    +    return 1
    +  fi
    +
    +  echo "Browsing issues ${verb} ${preposition} ${jira_name}"
    +  query="${lookup}+%3D+%22${jira_name}%22+AND+resolution+%3D+unresolved+ORDER+BY+priority+DESC%2C+created+ASC"
    +  open_command "${jira_url}/secure/IssueNavigator.jspa?reset=true&jqlQuery=${query}"
    +}
    diff --git a/dot_oh-my-zsh/plugins/jruby/README.md b/dot_oh-my-zsh/plugins/jruby/README.md
    new file mode 100644
    index 0000000..821a46d
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/jruby/README.md
    @@ -0,0 +1,21 @@
    +# JRuby plugin
    +
    +This plugin adds aliases for [JRuby](https://www.jruby.org/).
    +
    +To use it, add `jruby` to the plugins array in your zshrc file:
    +
    +```zsh
    +plugins=(... jruby)
    +```
    +
    +## Requirements
    +
    +This plugin assumes you already have jruby installed and available in your [path](https://www.jruby.org/getting-started).
    +
    +## Aliases
    +
    +| Alias        | Command                                                          |
    +| ------------ | ---------------------------------------------------------------- |
    +| `jrspec`     | `jruby --debug -S rspec --debug`                                 |
    +| `jprofile`   | `jruby --profile.api -S rspec`                                   |
    +| `jexec`      | `jruby -S`                                                       |
    diff --git a/dot_oh-my-zsh/plugins/jruby/jruby.plugin.zsh b/dot_oh-my-zsh/plugins/jruby/jruby.plugin.zsh
    new file mode 100644
    index 0000000..bb7975b
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/jruby/jruby.plugin.zsh
    @@ -0,0 +1,4 @@
    +# Aliases
    +alias jrspec='jruby --debug -S rspec --debug'
    +alias jprofile='jruby --profile.api -S rspec'
    +alias jexec='jruby -S'
    diff --git a/dot_oh-my-zsh/plugins/jsontools/README.md b/dot_oh-my-zsh/plugins/jsontools/README.md
    new file mode 100644
    index 0000000..6a27400
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/jsontools/README.md
    @@ -0,0 +1,79 @@
    +# jsontools
    +
    +Handy command line tools for dealing with json data.
    +
    +To use it, add `jsontools` to the plugins array in your zshrc file:
    +
    +```zsh
    +plugins=(... jsontools)
    +```
    +
    +## Usage
    +
    +Usage is simple... just take your json data and pipe it into the appropriate jsontool:
    +
    +- `pp_json`: pretty prints json.
    +- `is_json`: returns true if valid json; false otherwise.
    +- `urlencode_json`: returns a url encoded string for the given json.
    +- `urldecode_json`: returns decoded json for the given url encoded string.
    +
    +### Supports NDJSON (Newline Delimited JSON)
    +
    +The plugin also supports [NDJSON](http://ndjson.org/) input, which means all functions
    +have an alternative function that reads and processes the input line by line. These
    +functions have the same name except using `ndjson` instead of `json`:
    +
    +> `pp_ndjson`, `is_ndjson`, `urlencode_ndjson`, `urldecode_ndjson`.
    +
    +### Examples
    +
    +- **pp_json**:
    +
    +```console
    +# curl json data and pretty print the results
    +curl https://coderwall.com/bobwilliams.json | pp_json
    +```
    +
    +- **is_json**:
    +
    +```console
    +# validate if file's content conforms to a valid JSON schema
    +$ is_json < data.json
    +true
    +# shows true / false and returns the proper exit code
    +$ echo $?
    +0
    +```
    +
    +- **urlencode_json**:
    +
    +```console
    +# json data directly from the command line
    +$ echo '{"b":2, "a":1}' | urlencode_json
    +%7B%22b%22:2,%20%22a%22:1%7D
    +```
    +
    +- **urldecode_json**:
    +
    +```console
    +# url encoded string to decode
    +$ echo '%7B%22b%22:2,%20%22a%22:1%7D' | urldecode_json
    +{"b":2, "a":1}
    +```
    +
    +- **pp_ndjson**:
    +
    +```console
    +# echo two separate json objects and pretty print both
    +$ echo '{"a": "b"}\n{"c": [1,2,3]}' | pp_ndjson
    +{
    +    "a": "b"
    +}
    +{
    +    "c": [
    +        1,
    +        2,
    +        3
    +    ]
    +}
    +```
    diff --git a/dot_oh-my-zsh/plugins/jsontools/jsontools.plugin.zsh b/dot_oh-my-zsh/plugins/jsontools/jsontools.plugin.zsh
    new file mode 100644
    index 0000000..49828d3
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/jsontools/jsontools.plugin.zsh
    @@ -0,0 +1,113 @@
    +# JSON Tools
    +# Adds command line aliases useful for dealing with JSON
    +
    +# Check that user-defined method is installed
    +if [[ -n "$JSONTOOLS_METHOD" ]]; then
    +  (( $+commands[$JSONTOOLS_METHOD] )) || unset JSONTOOLS_METHOD
    +fi
    +
    +# If method undefined, find the first one that is installed
    +if [[ -z "$JSONTOOLS_METHOD" ]]; then
    +  for JSONTOOLS_METHOD in node python3 ruby; do
    +    # If method found, break out of loop
    +    (( $+commands[$JSONTOOLS_METHOD] )) && break
    +    # Otherwise unset the variable
    +    unset JSONTOOLS_METHOD
    +  done
    +
    +  # If no methods were found, exit the plugin
    +  [[ -n "$JSONTOOLS_METHOD" ]] || return 1
    +fi
    +
    +# Define json tools for each method
    +case "$JSONTOOLS_METHOD" in
    +  node)
    +    # node doesn't make it easy to deal with stdin, so we pass it as an argument with xargs -0
    +    function pp_json() {
    +      xargs -0 node -e 'console.log(JSON.stringify(JSON.parse(process.argv[1]), null, 4));'
    +    }
    +    function is_json() {
    +      xargs -0 node -e '
    +        try {
    +          json = JSON.parse(process.argv[1]);
    +          console.log("true");
    +          process.exit(0);
    +        } catch (e) {
    +          console.log("false");
    +          process.exit(1);
    +        }
    +      '
    +    }
    +    function urlencode_json() {
    +      xargs -0 node -e "console.log(encodeURIComponent(process.argv[1]))"
    +    }
    +    function urldecode_json() {
    +      xargs -0 node -e "console.log(decodeURIComponent(process.argv[1]))"
    +    }
    +  ;;
    +  python3)
    +    function pp_json() {
    +      python3 -c 'import sys; del sys.path[0]; import runpy; runpy._run_module_as_main("json.tool")'
    +    }
    +    function is_json() {
    +      python3 -c '
    +import sys; del sys.path[0];
    +import json
    +try:
    +  json.loads(sys.stdin.read())
    +  print("true"); sys.exit(0)
    +except ValueError:
    +  print("false"); sys.exit(1)
    +      '
    +    }
    +    function urlencode_json() {
    +      python3 -c '
    +import sys; del sys.path[0];
    +from urllib.parse import quote_plus
    +print(quote_plus(sys.stdin.read()))
    +      '
    +    }
    +    function urldecode_json() {
    +      python3 -c '
    +import sys; del sys.path[0];
    +from urllib.parse import unquote_plus
    +print(unquote_plus(sys.stdin.read()))
    +      '
    +    }
    +  ;;
    +  ruby)
    +    function pp_json() {
    +      ruby -e '
    +        require "json"
    +        require "yaml"
    +        puts JSON.parse(STDIN.read).to_yaml
    +      '
    +    }
    +    function is_json() {
    +      ruby -e '
    +        require "json"
    +        begin
    +          puts !!JSON.parse(STDIN.read); exit(0)
    +        rescue JSON::ParserError
    +          puts false; exit(1)
    +        end
    +      '
    +    }
    +    function urlencode_json() {
    +      ruby -e 'require "cgi"; puts CGI.escape(STDIN.read)'
    +    }
    +    function urldecode_json() {
    +      ruby -e 'require "cgi"; puts CGI.unescape(STDIN.read)'
    +    }
    +  ;;
    +esac
    +unset JSONTOOLS_METHOD
    +
    +## Add NDJSON support
    +
    +function {pp,is,urlencode,urldecode}_ndjson() {
    +  local json jsonfunc="${0//ndjson/json}"
    +  while read -r json; do
    +    $jsonfunc <<< "$json"
    +  done
    +}
    diff --git a/dot_oh-my-zsh/plugins/juju/README.md b/dot_oh-my-zsh/plugins/juju/README.md
    new file mode 100644
    index 0000000..f0c6530
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/juju/README.md
    @@ -0,0 +1,130 @@
    +# juju plugin
    +
    +This plugin provides useful aliases and functions for [juju](https://juju.is/) (for TAB completion,
    +refer to the [official repo](https://github.com/juju/juju/blob/develop/etc/bash_completion.d/juju)).
    +
    +To use this plugin, add `juju` to the plugins array in your zshrc file.
    +
    +```zsh
    +plugins=(... juju)
    +```
    +
    +## Aliases
    +
    +Naming convention:
    +
    +- `!` suffix: `--force --no-wait -y`.
    +- `ds` suffix: `--destroy-storage`.
    +- `jsh` prefix means `juju show-*`.
    +
    +### General
    +
    +| Alias   | Command                                     | Description                                            |
    +|---------|---------------------------------------------|--------------------------------------------------------|
    +| `j`     | `juju`                                      | The juju command                                       |
    +| `jcld`  | `juju clouds`                               | Lists all clouds with registered credentials           |
    +| `jclda` | `juju clouds --all`                         | Lists all clouds available to Juju                     |
    +| `jdl`   | `juju debug-log --ms`                       | Display log, with millisecond resolution               |
    +| `jdlr`  | `juju debug-log --ms --replay`              | Replay entire log                                      |
    +| `jh`    | `juju help`                                 | Show help on a command or other topic                  |
    +| `jshsl` | `juju show-status-log`                      | Output past statuses for the specified entity          |
    +| `jstj`  | `juju status --format=json`                 | Show status in json format (more detailed)             |
    +| `jst`   | `juju status --relations --color`           | Show status, including relations, in color             |
    +| `jsts`  | `juju status --relations --storage --color` | Show status, including relations and storage, in color |
    +
    +### Bootstrap
    +
    +| Alias   | Command                             | Description                                           |
    +|---------|-------------------------------------|-------------------------------------------------------|
    +| `jb`    | `juju bootstrap`                    | Initializing a Juju cloud environment                 |
    +| `jbng`  | `juju bootstrap --no-gui`           | Initializing a Juju cloud environment without GUI     |
    +| `jbl`   | `juju bootstrap localhost`          | Initializing an lxd cloud environment                 |
    +| `jblng` | `juju bootstrap --no-gui localhost` | Initializing an lxd cloud environment without GUI     |
    +| `jbm`   | `juju bootstrap microk8s`           | Initializing a MicroK8s cloud environment             |
    +| `jbmng` | `juju bootstrap --no-gui microk8s`  | Initializing a MicroK8s cloud environment without GUI |
    +
    +### Controller
    +
    +| Alias    | Command                                                                               | Description                                                       |
    +|----------|---------------------------------------------------------------------------------------|-------------------------------------------------------------------|
    +| `jctl`   | `juju controllers`                                                                    | List all controllers                                              |
    +| `jctlr`  | `juju controllers --refresh`                                                          | List all controllers (download latest details)                    |
    +| `jdc`    | `juju destroy-controller --destroy-all-models`                                        | Destroy a controller                                              |
    +| `jdc!`   | `juju destroy-controller --destroy-all-models --force --no-wait -y`                   | Destroy a controller                                              |
    +| `jdcds`  | `juju destroy-controller --destroy-all-models --destroy-storage`                      | Destroy a controller and associated storage                       |
    +| `jdcds!` | `juju destroy-controller --destroy-all-models --destroy-storage --force --no-wait -y` | Destroy a controller and associated storage                       |
    +| `jkc`    | `juju kill-controller -y -t 0`                                                        | Forcibly terminate all associated resources for a Juju controller |
    +| `jshc`   | `juju show-controller`                                                                | Shows detailed information of a controller                    |
    +| `jsw`    | `juju switch`                                                                         | Select or identify the current controller and model               |
    +
    +### Model
    +
    +| Alias    | Command                                                     | Description                                           |
    +|----------|-------------------------------------------------------------|-------------------------------------------------------|
    +| `jam`    | `juju add-model`                                            | Add a hosted model                                    |
    +| `jdm`    | `juju destroy-model`                                        | Non-recoverable, complete removal of a model          |
    +| `jdm!`   | `juju destroy-model --force --no-wait -y`                   | Non-recoverable, complete removal of a model          |
    +| `jdmds`  | `juju destroy-model --destroy-storage`                      | Non-recoverable, complete removal of a model          |
    +| `jdmds!` | `juju destroy-model --destroy-storage --force --no-wait -y` | Non-recoverable, complete removal of a model          |
    +| `jmc`    | `juju model-config`                                         | Display or set configuration values on a model        |
    +| `jm`     | `juju models`                                               | List models a user can access on a controller         |
    +| `jshm`   | `juju show-model`                                           | Show information about the current or specified model |
    +| `jsw`    | `juju switch`                                               | Select or identify the current controller and model   |
    +
    +### Application / unit
    +
    +| Alias    | Command                                                       | Description                                                               |
    +|----------|---------------------------------------------------------------|---------------------------------------------------------------------------|
    +| `jc`     | `juju config`                                                 | Get, set, or reset configuration for a deployed application               |
    +| `jde`    | `juju deploy --channel=edge`                                  | Deploy a new application or bundle from the edge channel                  |
    +| `jd`     | `juju deploy`                                                 | Deploy a new application or bundle                                        |
    +| `jra`    | `juju run-action`                                             | Queue an action for execution                                             |
    +| `jraw`   | `juju run-action --wait`                                      | Queue an action for execution and wait for results, with optional timeout |
    +| `jrm`    | `juju remove-application`                                     | Remove application                                                        |
    +| `jrm!`   | `juju remove-application --force --no-wait`                   | Remove application forcefully                                             |
    +| `jrmds`  | `juju remove-application --destroy-storage`                   | Remove application and destroy attached storage                           |
    +| `jrmds!` | `juju remove-application --destroy-storage --force --no-wait` | Remove application forcefully, destroying attached storage                |
    +| `jrp`    | `juju refresh --path`                                         | Upgrade charm from local charm file                                       |
    +| `jsa`    | `juju scale-application`                                      | Set the desired number of application units                               |
    +| `jssh`   | `juju ssh`                                                    | Initiate an SSH session or execute a command on a Juju target             |
    +| `jsshc`  | `juju ssh --container`                                        | Initiate an SSH session or execute a command on a given container         |
    +| `jshu`   | `juju show-unit`                                              | Displays information about a unit                                         |
    +
    +### Storage
    +
    +| Alias   | Command                       | Description                                     |
    +|---------|-------------------------------|-------------------------------------------------|
    +| `jrs`   | `juju remove-storage`         | Remove storage                                  |
    +| `jrs!`  | `juju remove-storage --force` | Remove storage even if it is currently attached |
    +
    +### Relation
    +
    +| Alias     | Command                        | Description                                                       |
    +|-----------|--------------------------------|-------------------------------------------------------------------|
    +| `jrel`    | `juju relate`                  | Relate two applications                                           |
    +| `jrmrel`  | `juju remove-relation`         | Remove an existing relation between two applications.             |
    +| `jrmrel!` | `juju remove-relation --force` | Remove an existing relation between two applications, forcefully. |
    +
    +### Cross-model relation (CMR)
    +
    +| Alias    | Command            | Description                                                    |
    +|----------|--------------------|----------------------------------------------------------------|
    +| `jex`    | `juju expose`      | Make an application publicly available over the network        |
    +| `jof`    | `juju offer`       | Offer application endpoints for use in other models            |
    +| `jcon`   | `juju consume`     | Add a remote offer to the model                                |
    +| `jrmsas` | `juju remove-saas` | Remove consumed applications (SAAS) from the model             |
    +| `junex`  | `juju unexpose`    | Remove public availability over the network for an application |
    +
    +### Bundle
    +
    +| Alias | Command              | Description                                                 |
    +|-------|----------------------|-------------------------------------------------------------|
    +| `jeb` | `juju export-bundle` | Export the current model configuration as a reusable bundle |
    +
    +## Functions
    +
    +- `jaddr  [unit_num]`: display app or unit IP address.
    +- `jreld   `: display app and unit relation data.
    +- `jclean`: destroy all controllers
    +- `wjst [interval_secs] [args_for_watch]`: watch juju status, with optional interval
    +  (default: 5s); you may pass additional arguments to `watch`.
    diff --git a/dot_oh-my-zsh/plugins/juju/juju.plugin.zsh b/dot_oh-my-zsh/plugins/juju/juju.plugin.zsh
    new file mode 100644
    index 0000000..be8a2c7
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/juju/juju.plugin.zsh
    @@ -0,0 +1,172 @@
    +# ---------------------------------------------------------- #
    +# Aliases and functions for juju (https://juju.is)           #
    +# ---------------------------------------------------------- #
    +
    +# Load TAB completions
    +# You need juju's bash completion script installed. By default bash-completion's
    +# location will be used (i.e. pkg-config --variable=completionsdir bash-completion).
    +completion_file="$(pkg-config --variable=completionsdir bash-completion 2>/dev/null)/juju" || \
    +  completion_file="/usr/share/bash-completion/completions/juju"
    +[[ -f "$completion_file" ]] && source "$completion_file"
    +unset completion_file
    +
    +# ---------------------------------------------------------- #
    +# Aliases (in alphabetic order)                              #
    +#                                                            #
    +# Generally,                                                 #
    +#   - `!` means --force --no-wait -y                         #
    +#   - `ds` suffix means --destroy-storage                    #
    +#   - `jsh` prefix means juju show-*                         #
    +# ---------------------------------------------------------- #
    +alias j="juju"
    +alias jam="juju add-model --config logging-config=\"=WARNING; unit=DEBUG\"\
    + --config update-status-hook-interval=\"60m\""
    +alias jb='juju bootstrap'
    +alias jbng='juju bootstrap --no-gui'
    +alias jbl='juju bootstrap localhost'
    +alias jblng='juju bootstrap --no-gui localhost'
    +alias jbm='juju bootstrap microk8s'
    +alias jbmng='juju bootstrap --no-gui microk8s'
    +alias jc='juju config'
    +alias jcld='juju clouds'
    +alias jclda='juju clouds --all'
    +alias jctl='juju controllers'
    +alias jctlr='juju controllers --refresh'
    +alias jdc='juju destroy-controller --destroy-all-models'
    +alias 'jdc!'='juju destroy-controller --destroy-all-models --force --no-wait -y'
    +alias jdcds='juju destroy-controller --destroy-all-models --destroy-storage'
    +alias 'jdcds!'='juju destroy-controller --destroy-all-models --destroy-storage --force --no-wait -y'
    +alias jdm='juju destroy-model'
    +alias 'jdm!'='juju destroy-model --force --no-wait -y'
    +alias jdmds='juju destroy-model --destroy-storage'
    +alias 'jdmds!'='juju destroy-model --destroy-storage --force --no-wait -y'
    +alias jde='juju deploy --channel=edge'
    +alias jd='juju deploy'
    +alias jdl='juju debug-log --ms'
    +alias jdlr='juju debug-log --ms --replay'
    +alias jcon='juju consume'
    +alias jeb='juju export-bundle'
    +alias jex='juju expose'
    +alias jh='juju help'
    +alias jkc='juju kill-controller -y -t 0'
    +alias jm='juju models'
    +alias jmc='juju model-config'
    +alias jof='juju offer'
    +alias jra='juju run-action'
    +alias jraw='juju run-action --wait'
    +alias jrel='juju relate'
    +alias jrm='juju remove-application'
    +alias 'jrm!'='juju remove-application --force --no-wait'
    +alias jrmds='juju remove-application --destroy-storage'
    +alias 'jrmds!'='juju remove-application --destroy-storage --force --no-wait'
    +alias jrmrel='juju remove-relation'
    +alias 'jrmrel!'='juju remove-relation --force'
    +alias jrmsas='juju remove-saas'
    +alias jrp='juju refresh --path'
    +alias jrs='juju remove-storage'
    +alias 'jrs!'='juju remove-storage --force'
    +alias jsa='juju scale-application'
    +alias jsha='juju show-application'
    +alias jshc='juju show-controller'
    +alias jshm='juju show-model'
    +alias jshsl='juju show-status-log'
    +alias jshu='juju show-unit'
    +alias jssh='juju ssh'
    +alias jsshc='juju ssh --container'
    +alias jstj='juju status --format=json'
    +alias jst='juju status --relations --color'
    +alias jsts='juju status --relations --storage --color'
    +alias jsw='juju switch'
    +
    +# ---------------------------------------------------------- #
    +# Functions (in alphabetic order)                            #
    +# ---------------------------------------------------------- #
    +
    +# Get app or unit address
    +jaddr() {
    +  # $1 = app name
    +  # $2 = unit number (optional)
    +  if (( ! ${+commands[jq]} )); then
    +    echo "jq is required but could not be found." >&2
    +    return 1
    +  fi
    +
    +  if [[ $# -eq 1 ]]; then
    +    # Get app address
    +    juju status "$1" --format=json \
    +      | jq -r ".applications.\"$1\".address"
    +  elif [[ $# -eq 2 ]]; then
    +    # Get unit address
    +    juju status "$1/$2" --format=json \
    +      | jq -r ".applications.\"$1\".units.\"$1/$2\".address"
    +  else
    +    echo "Invalid number of arguments."
    +    echo "Usage:   jaddr  []"
    +    echo "Example: jaddr karma"
    +    echo "Example: jaddr karma 0"
    +    return 1
    +  fi
    +}
    +
    +# Destroy all controllers
    +jclean() {
    +  if (( ! ${+commands[jq]} )); then
    +    echo "jq is required but could not be found." >&2
    +    return 1
    +  fi
    +
    +  local controllers=$(juju controllers --format=json | jq -r '.controllers | keys[]' 2>/dev/null)
    +  if [[ -z "$controllers" ]]; then
    +    echo "No controllers registered"
    +    return 0
    +  fi
    +
    +  echo "This will forcefully destroy all storages, models and controllers."
    +  echo "Controllers to be destroyed:"
    +  echo "$controllers"
    +
    +  if ! read -q '?Are you sure (y/n)? '; then
    +    echo
    +    echo "Aborted."
    +    return 0
    +  fi
    +
    +  echo
    +  for controller in ${=controllers}; do
    +    timeout 2m juju destroy-controller --destroy-all-models --destroy-storage --force --no-wait -y $controller
    +    timeout 2m juju kill-controller -y -t 0 $controller 2>/dev/null
    +    timeout 10s juju unregister $controller 2>/dev/null
    +  done
    +}
    +
    +# Display app and unit relation data
    +jreld() {
    +  # $1 = relation name
    +  # $2 = app name
    +  # $3 = unit number
    +  if [[ $# -ne 3 ]]; then
    +    echo "Invalid number of arguments."
    +    echo "Usage:   jreld   "
    +    echo "Example: jreld karma-dashboard alertmanager 0"
    +    return 1
    +  fi
    +
    +  local relid="$(juju run "relation-ids $1" --unit $2/$3)"
    +  if [[ -z "$relid" ]]; then
    +    return 1
    +  fi
    +
    +  echo "App data:"
    +  juju run "relation-get -r $relid --app - $2" --unit $2/$3
    +  echo
    +  echo "Unit data:"
    +  juju run "relation-get -r $relid - $2" --unit $2/$3
    +}
    +
    +# Watch juju status, with optional interval (default: 5 sec)
    +wjst() {
    +  local interval="${1:-5}"
    +  shift $(( $# > 0 ))
    +  watch -n "$interval" --color juju status --relations --color "$@"
    +}
    +
    diff --git a/dot_oh-my-zsh/plugins/jump/README.md b/dot_oh-my-zsh/plugins/jump/README.md
    new file mode 100644
    index 0000000..1b0ce68
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/jump/README.md
    @@ -0,0 +1,31 @@
    +# Jump plugin
    +
    +This plugin allows to easily jump around the file system by manually adding marks.
    +Those marks are stored as symbolic links in the directory `$MARKPATH` (default `$HOME/.marks`)
    +
    +To use it, add `jump` to the plugins array in your zshrc file:
    +
    +```zsh
    +plugins=(... jump)
    +```
    +
    +## Commands
    +
    +| Command              | Description                                                                                     |
    +|----------------------|-------------------------------------------------------------------------------------------------|
    +| `jump `   | Jump to the given mark                                                                          |
    +| `mark [mark-name]`   | Create a mark with the given name or with the name of the current directory if none is provided |
    +| `unmark ` | Remove the given mark                                                                           |
    +| `marks`              | List the existing marks and the directories they point to                                       |
    +
    +## Key bindings
    +
    +Pressing `CTRL`+`G` substitutes the written mark name for the full path of the mark.
    +For example, with a mark named `mymark` pointing to `/path/to/my/mark`:
    +```zsh
    +$ cp /tmp/file mymark
    +```
    +will become:
    +```zsh
    +$ cp /tmp/file /path/to/my/mark
    +```
    diff --git a/dot_oh-my-zsh/plugins/jump/jump.plugin.zsh b/dot_oh-my-zsh/plugins/jump/jump.plugin.zsh
    new file mode 100644
    index 0000000..c2da114
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/jump/jump.plugin.zsh
    @@ -0,0 +1,59 @@
    +# Easily jump around the file system by manually adding marks
    +# marks are stored as symbolic links in the directory $MARKPATH (default $HOME/.marks)
    +#
    +# jump FOO: jump to a mark named FOO
    +# mark FOO: create a mark named FOO
    +# unmark FOO: delete a mark
    +# marks: lists all marks
    +#
    +export MARKPATH=$HOME/.marks
    +
    +jump() {
    +	builtin cd -P "$MARKPATH/$1" 2>/dev/null || {echo "No such mark: $1"; return 1}
    +}
    +
    +mark() {
    +	if [[ $# -eq 0 || "$1" = "." ]]; then
    +		MARK=${PWD:t}
    +	else
    +		MARK="$1"
    +	fi
    +	if read -q "?Mark $PWD as ${MARK}? (y/n) "; then
    +		command mkdir -p "$MARKPATH"
    +		command ln -sfn "$PWD" "$MARKPATH/$MARK"
    +	fi
    +}
    +
    +unmark() {
    +	LANG= command rm -i "$MARKPATH/$1"
    +}
    +
    +marks() {
    +	local link max=0
    +	for link in $MARKPATH/{,.}*(@N); do
    +		if [[ ${#link:t} -gt $max ]]; then
    +			max=${#link:t}
    +		fi
    +	done
    +	local printf_markname_template="$(printf -- "%%%us " "$max")"
    +	for link in $MARKPATH/{,.}*(@N); do
    +		local markname="$fg[cyan]${link:t}$reset_color"
    +		local markpath="$fg[blue]$(readlink $link)$reset_color"
    +		printf -- "$printf_markname_template" "$markname"
    +		printf -- "-> %s\n" "$markpath"
    +	done
    +}
    +
    +_completemarks() {
    +	reply=("${MARKPATH}"/{,.}*(@N:t))
    +}
    +compctl -K _completemarks jump
    +compctl -K _completemarks unmark
    +
    +_mark_expansion() {
    +	setopt localoptions extendedglob
    +	autoload -U modify-current-argument
    +	modify-current-argument '$(readlink "$MARKPATH/$ARG" || echo "$ARG")'
    +}
    +zle -N _mark_expansion
    +bindkey "^g" _mark_expansion
    diff --git a/dot_oh-my-zsh/plugins/kate/README.md b/dot_oh-my-zsh/plugins/kate/README.md
    new file mode 100644
    index 0000000..aa2eaa3
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/kate/README.md
    @@ -0,0 +1,20 @@
    +# Kate plugin
    +
    +This plugin adds aliases for the [Kate editor](https://kate-editor.org).
    +
    +To use it, add kate to the plugins array of your zshrc file:
    +```
    +plugins=(... kate)
    +```
    +
    +## Aliases
    +
    +| Alias | Command                | Description         |
    +|-------|------------------------|---------------------|
    +| kate  | `kate >/dev/null 2>&1` | Start kate silently |
    +
    +## Functions
    +
    +| Function   | Description                              |
    +|------------|------------------------------------------|
    +| `kt ` | Change to directory and start kate there |
    diff --git a/dot_oh-my-zsh/plugins/kate/kate.plugin.zsh b/dot_oh-my-zsh/plugins/kate/kate.plugin.zsh
    new file mode 100644
    index 0000000..eb16522
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/kate/kate.plugin.zsh
    @@ -0,0 +1,9 @@
    +
    +# Kate
    +# Start kate always silent
    +alias kate='kate >/dev/null 2>&1'
    +
    +function kt () {
    +  cd $1
    +  kate $1
    +}
    \ No newline at end of file
    diff --git a/dot_oh-my-zsh/plugins/keychain/README.md b/dot_oh-my-zsh/plugins/keychain/README.md
    new file mode 100644
    index 0000000..c603f67
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/keychain/README.md
    @@ -0,0 +1,45 @@
    +# keychain plugin
    +
    +This plugin starts automatically [`keychain`](https://www.funtoo.org/Keychain)
    +to set up and load whichever credentials you want for both gpg and ssh
    +connections.
    +
    +To enable it, add `keychain` to your plugins:
    +
    +```zsh
    +plugins=(... keychain)
    +```
    +
    +**NOTE**: It is HIGHLY recommended to also enable the `gpg-agent` plugin.
    +
    +## Instructions
    +
    +**IMPORTANT: put these settings _before_ the line that sources oh-my-zsh**
    +
    +**To adjust the agents** that keychain manages, use the `agents` style as
    +shown below. By default, only the `gpg` agent is managed.
    +
    +```zsh
    +zstyle :omz:plugins:keychain agents gpg,ssh
    +```
    +
    +To **load multiple identities** use the `identities` style, For example:
    +
    +```zsh
    +zstyle :omz:plugins:keychain identities id_ed25519 id_github 2C5879C2
    +```
    +
    +**To pass additional options** to the `keychain` program, use the
    +`options` style; for example:
    +
    +```zsh
    +zstyle :omz:plugins:keychain options --quiet
    +```
    +
    +## Credits
    +
    +Based on code from the `ssh-agent` plugin.
    +
    +## References
    +
    +- [Keychain](https://www.funtoo.org/Keychain)
    diff --git a/dot_oh-my-zsh/plugins/keychain/keychain.plugin.zsh b/dot_oh-my-zsh/plugins/keychain/keychain.plugin.zsh
    new file mode 100644
    index 0000000..f122f79
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/keychain/keychain.plugin.zsh
    @@ -0,0 +1,32 @@
    +(( $+commands[keychain] )) || return
    +
    +# Define SHORT_HOST if not defined (%m = host name up to first .)
    +SHORT_HOST=${SHORT_HOST:-${(%):-%m}}
    +
    +function {
    +	local agents
    +	local -a identities
    +	local -a options
    +	local _keychain_env_sh
    +	local _keychain_env_sh_gpg
    +
    +	# load agents to start.
    +	zstyle -s :omz:plugins:keychain agents agents
    +
    +	# load identities to manage.
    +	zstyle -a :omz:plugins:keychain identities identities
    +
    +	# load additional options
    +	zstyle -a :omz:plugins:keychain options options
    +
    +	# start keychain...
    +	keychain ${^options:-} --agents ${agents:-gpg} ${^identities} --host $SHORT_HOST
    +
    +	# Get the filenames to store/lookup the environment from
    +	_keychain_env_sh="$HOME/.keychain/$SHORT_HOST-sh"
    +	_keychain_env_sh_gpg="$HOME/.keychain/$SHORT_HOST-sh-gpg"
    +
    +	# Source environment settings.
    +	[ -f "$_keychain_env_sh" ]     && . "$_keychain_env_sh"
    +	[ -f "$_keychain_env_sh_gpg" ] && . "$_keychain_env_sh_gpg"
    +}
    diff --git a/dot_oh-my-zsh/plugins/kitchen/README.md b/dot_oh-my-zsh/plugins/kitchen/README.md
    new file mode 100644
    index 0000000..89a6d70
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/kitchen/README.md
    @@ -0,0 +1,9 @@
    +# kitchen plugin
    +
    +This plugin adds completion support for the [Test Kitchen](https://kitchen.ci).
    +
    +To use it, add `kitchen` to the plugins array in your zshrc file:
    +
    +```zsh
    +plugins=(... kitchen)
    +```
    diff --git a/dot_oh-my-zsh/plugins/kitchen/_kitchen b/dot_oh-my-zsh/plugins/kitchen/_kitchen
    new file mode 100644
    index 0000000..64c01e3
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/kitchen/_kitchen
    @@ -0,0 +1,85 @@
    +#compdef kitchen
    +# ------------------------------------------------------------------------------
    +# Copyright (c) 2014 GitHub zsh-users - https://github.com/zsh-users
    +# All rights reserved.
    +#
    +# Redistribution and use in source and binary forms, with or without
    +# modification, are permitted provided that the following conditions are met:
    +#     * Redistributions of source code must retain the above copyright
    +#       notice, this list of conditions and the following disclaimer.
    +#     * Redistributions in binary form must reproduce the above copyright
    +#       notice, this list of conditions and the following disclaimer in the
    +#       documentation and/or other materials provided with the distribution.
    +#     * Neither the name of the zsh-users nor the
    +#       names of its contributors may be used to endorse or promote products
    +#       derived from this software without specific prior written permission.
    +#
    +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
    +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
    +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
    +# DISCLAIMED. IN NO EVENT SHALL ZSH-USERS BE LIABLE FOR ANY
    +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
    +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
    +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
    +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
    +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    +# ------------------------------------------------------------------------------
    +# Description
    +# -----------
    +#
    +#  Completion script for Test Kitchen (https://kitchen.ci/).
    +#
    +# ------------------------------------------------------------------------------
    +# Authors
    +# -------
    +#
    +#  * Peter Eisentraut (https://github.com/petere)
    +#
    +# ------------------------------------------------------------------------------
    +
    +
    +_kitchen() {
    +  local curcontext="$curcontext" state line
    +  typeset -A opt_args
    +
    +  _arguments '1: :->cmds'\
    +             '2: :->args'
    +
    +  case $state in
    +    cmds)
    +      _kitchen_commands
    +      ;;
    +    args)
    +      case $line[1] in
    +        converge|create|destroy|diagnose|list|setup|test|verify)
    +          compadd 'all'
    +          _kitchen_instances
    +          ;;
    +        login)
    +          _kitchen_instances
    +          ;;
    +      esac
    +      ;;
    +  esac
    +}
    +
    +_kitchen_commands() {
    +  local commands
    +
    +  commands=("${(@f)$(_call_program commands $service help | sed -n 's/^  kitchen \([[:alpha:]]*\) [ A-Z[].*# \(.*\)$/\1:\2/p')}")
    +  _describe -t commands 'kitchen commands' commands
    +}
    +
    +_kitchen_instances() {
    +  if [[ $_kitchen_instances_cache_dir != $PWD ]]; then
    +    unset _kitchen_instances_cache
    +  fi
    +  if [[ ${+_kitchen_instances_cache} -eq 0 ]]; then
    +    _kitchen_instances_cache=(${(f)"$(_call_program instances $service list -b 2>/dev/null)"})
    +    _kitchen_instances_cache_dir=$PWD
    +  fi
    +  _wanted instances expl 'instance' compadd -a _kitchen_instances_cache
    +}
    +
    +_kitchen "$@"
    diff --git a/dot_oh-my-zsh/plugins/kn/README.md b/dot_oh-my-zsh/plugins/kn/README.md
    new file mode 100644
    index 0000000..d2eb9b3
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/kn/README.md
    @@ -0,0 +1,17 @@
    +# kn - Knative CLI
    +
    +This plugin provides autocompletion for [kn](https://knative.dev/docs/install/client/install-kn/) operations.
    +
    +To use it, add `kn` to the plugins array of your zshrc file:
    +
    +```zsh
    +plugins=(... kn)
    +```
    +
    +## See Also
    +
    ++ [kn/client](https://github.com/knative/client)
    +
    +## Contributors
    +
    ++ [btannous](https://github.com/btannous) - Plugin Author
    diff --git a/dot_oh-my-zsh/plugins/kn/kn.plugin.zsh b/dot_oh-my-zsh/plugins/kn/kn.plugin.zsh
    new file mode 100644
    index 0000000..f60177d
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/kn/kn.plugin.zsh
    @@ -0,0 +1,8 @@
    +# Autocompletion for kn, the command line interface for knative
    +#
    +# Author: https://github.com/btannous
    +
    +if [ $commands[kn] ]; then
    +  source <(kn completion zsh)
    +  compdef _kn kn 
    +fi
    diff --git a/dot_oh-my-zsh/plugins/knife/README.md b/dot_oh-my-zsh/plugins/knife/README.md
    new file mode 100644
    index 0000000..b167f16
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/knife/README.md
    @@ -0,0 +1,25 @@
    +# knife plugin
    +
    +This plugin adds completion for [knife](https://docs.chef.io/knife.html), a command-line tool
    +to interact with [Chef](https://chef.io), a platform to automate and manage infrastructure via
    +code.
    +
    +To use it, add `knife` to the plugins array in your zshrc file:
    +```zsh
    +plugins=(... knife)
    +```
    +
    +## Options
    +
    +- `KNIFE_RELATIVE_PATH`: if set to `true`, the completion script will look for local cookbooks
    +  under the `cookbooks` folder in the chef root directory. It has preference over the other two
    +  options below. **Default:** empty.
    +
    +- `KNIFE_COOKBOOK_PATH`: if set, it points to the folder that contains local cookbooks, for
    +   example: `/path/to/my/chef/cookbooks`. **Default:** `cookbook_path` field in `knife.rb`
    +   (see below).
    +
    +- `KNIFE_CONF_PATH`: variable pointing to the `knife.rb` configuration file, for example
    +  `/path/to/my/.chef/knife.rb`. Only used if `$KNIFE_COOKBOOK_PATH` isn't set. If it exists,
    +  `$PWD/.chef/knife.rb` is used instead. Otherwise, if it's set, its value is used.
    +  **Default**: `$HOME/.chef/knife.rb`.
    diff --git a/dot_oh-my-zsh/plugins/knife/_knife b/dot_oh-my-zsh/plugins/knife/_knife
    new file mode 100644
    index 0000000..09757eb
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/knife/_knife
    @@ -0,0 +1,257 @@
    +#compdef knife
    +
    +# You can override the path to knife.rb and your cookbooks by setting
    +# KNIFE_CONF_PATH=/path/to/my/.chef/knife.rb
    +# KNIFE_COOKBOOK_PATH=/path/to/my/chef/cookbooks
    +# If you want your local cookbooks path to be calculated relative to where you are then
    +# set the below option
    +# KNIFE_RELATIVE_PATH=true
    +# Read around where these are used for more detail.
    +
    +# These flags should be available everywhere according to man knife
    +knife_general_flags=(--help --server-url --key --config --editor --format --log_level --logfile --no-editor --user --print-after --version --yes)
    +
    +# knife has a very special syntax, some example calls are:
    +# knife status
    +# knife cookbook list
    +# knife role show ROLENAME
    +# knife data bag show DATABAGNAME
    +# knife role show ROLENAME --attribute ATTRIBUTENAME
    +# knife cookbook show COOKBOOKNAME COOKBOOKVERSION recipes
    +
    +# The -Q switch in compadd allow for completions of things like "data bag" without having to go through two rounds of completion and avoids zsh inserting a \ for escaping spaces
    +_knife() {
    +  local curcontext="$curcontext" state line
    +  typeset -A opt_args
    +  cloudproviders=(bluebox ec2 rackspace slicehost terremark)
    +  _arguments \
    +    '1: :->knifecmd' \
    +    '2: :->knifesubcmd' \
    +    '3: :->knifesubcmd2' \
    +    '4: :->knifesubcmd3' \
    +    '5: :->knifesubcmd4' \
    +    '6: :->knifesubcmd5'
    +
    +  case $state in
    +  knifecmd)
    +    compadd -Q "$@" bootstrap client configure cookbook "cookbook site" "data bag" diff exec environment index node recipe role search solo ssh status upload vault windows $cloudproviders
    +    ;;
    +  knifesubcmd)
    +    case $words[2] in
    +    bluebox|ec2|rackspace|slicehost|terremark)
    +      compadd "$@" server images
    +      ;;
    +    client)
    +      compadd -Q "$@" "bulk delete" list create show delete edit reregister
    +      ;;
    +    configure)
    +      compadd "$@" client
    +      ;;
    +    cookbook)
    +      compadd -Q "$@" test list create download delete "metadata from" show "bulk delete" metadata upload
    +      ;;
    +    diff)
    +      _arguments '*:file or directory:_files -g "*"'
    +      ;;
    +    environment)
    +      compadd -Q "$@" list create delete edit show "from file"
    +      ;;
    +    node)
    +      compadd -Q "$@" "from file" create show edit delete list run_list "bulk delete"
    +      ;;
    +    recipe)
    +      compadd "$@" list
    +      ;;
    +    role)
    +      compadd -Q "$@" "bulk delete" create delete edit "from file" list show
    +      ;;
    +    solo)
    +      compadd "$@" bootstrap clean cook init prepare
    +      ;;
    +    upload)
    +      _arguments '*:file or directory:_files -g "*"'
    +      ;;
    +    vault)
    +      compadd -Q "$@" create decrypt delete edit remove "rotate all keys" "rotate keys" show update
    +      ;;
    +    windows)
    +      compadd "$@" bootstrap
    +      ;;
    +    *)
    +      _arguments '2:Subsubcommands:($(_knife_options1))'
    +      ;;
    +    esac
    +    ;;
    +  knifesubcmd2)
    +    case $words[3] in
    +    server)
    +      compadd "$@" list create delete
    +      ;;
    +    images)
    +      compadd "$@" list
    +      ;;
    +    site)
    +      compadd "$@" vendor show share search download list unshare
    +      ;;
    +    show|delete|edit)
    +      _arguments '3:Subsubcommands:($(_chef_$words[2]s_remote))'
    +      ;;
    +    upload|test)
    +      _arguments '3:Subsubcommands:($(_chef_$words[2]s_local) --all)'
    +      ;;
    +    list)
    +      compadd -a "$@" knife_general_flags
    +      ;;
    +    bag)
    +      compadd -Q "$@" show edit list "from file" create delete
    +      ;;
    +    bootstrap|clean|cook|prepare)
    +      compadd "$@" nodes/*.json(N:t:r)
    +      ;;
    +    init)
    +      compadd "$@" ./*(/N:t)
    +      ;;
    +    *)
    +      _arguments '3:Subsubcommands:($(_knife_options2))'
    +      ;;
    +    esac
    +    ;;
    +  knifesubcmd3)
    +    case $words[3] in
    +    show)
    +      case $words[2] in
    +      cookbook)
    +        versioncomp=1
    +        _arguments '4:Cookbookversions:($(_cookbook_versions) latest)'
    +        ;;
    +      node|client|role)
    +        compadd "$@" --attribute
    +        ;;
    +      esac
    +      ;;
    +    esac
    +    case $words[4] in
    +    show|edit)
    +      _arguments '4:Subsubsubcommands:($(_chef_$words[2]_$words[3]s_remote))'
    +      ;;
    +    file)
    +      case $words[2] in
    +      environment)
    +        _arguments '*:files:_path_files -g "*.(rb|json)" -W "$(_chef_root)/environments"'
    +        ;;
    +      node)
    +        _arguments '*:files:_path_files -g "*.(rb|json)" -W "$(_chef_root)/nodes"'
    +        ;;
    +      role)
    +        _arguments '*:files:_path_files -g "*.(rb|json)" -W "$(_chef_root)/roles"'
    +        ;;
    +      *)
    +        _arguments '*:Subsubcommands:($(_knife_options3))'
    +        ;;
    +      esac
    +      ;;
    +    list)
    +      compadd -a "$@" knife_general_flags
    +      ;;
    +    *)
    +      _arguments '*:Subsubcommands:($(_knife_options3))'
    +      ;;
    +    esac
    +    ;;
    +  knifesubcmd4)
    +    if ((versioncomp > 0)); then
    +      compadd "$@" attributes definitions files libraries providers recipes resources templates
    +    else
    +      case $words[5] in
    +      file)
    +        _arguments '*:directory:_path_files -/ -W "$(_chef_root)/data_bags" -qS \ '
    +        ;;
    +      *) _arguments '*:Subsubcommands:($(_knife_options2))' ;;
    +      esac
    +    fi
    +    ;;
    +  knifesubcmd5)
    +    case $words[5] in
    +    file)
    +      _arguments '*:files:_path_files -g "*.json" -W "$(_chef_root)/data_bags/$words[6]"'
    +      ;;
    +    *)
    +      _arguments '*:Subsubcommands:($(_knife_options3))'
    +      ;;
    +    esac
    +    ;;
    +  esac
    +}
    +
    +# Helper functions to provide the argument completion for several depths of commands
    +_knife_options1() {
    +  (for line in $(knife $words[2] --help | grep -v "^knife"); do echo $line | grep "\-\-"; done)
    +}
    +
    +_knife_options2() {
    +  (for line in $(knife $words[2] $words[3] --help | grep -v "^knife"); do echo $line | grep "\-\-"; done)
    +}
    +
    +_knife_options3() {
    +  (for line in $(knife $words[2] $words[3] $words[4] --help | grep -v "^knife"); do echo $line | grep "\-\-"; done)
    +}
    +
    +# The chef_x_remote functions use knife to get a list of objects of type x on the server
    +_chef_roles_remote() {
    +  (knife role list --format json | grep \" | awk '{print $1}' | awk -F"," '{print $1}' | awk -F"\"" '{print $2}')
    +}
    +
    +_chef_clients_remote() {
    +  (knife client list --format json | grep \" | awk '{print $1}' | awk -F"," '{print $1}' | awk -F"\"" '{print $2}')
    +}
    +
    +_chef_nodes_remote() {
    +  (knife node list --format json | grep \" | awk '{print $1}' | awk -F"," '{print $1}' | awk -F"\"" '{print $2}')
    +}
    +
    +_chef_cookbooks_remote() {
    +  (knife cookbook list --format json | grep \" | awk '{print $1}' | awk -F"," '{print $1}' | awk -F"\"" '{print $2}')
    +}
    +
    +_chef_sitecookbooks_remote() {
    +  (knife cookbook site list --format json | grep \" | awk '{print $1}' | awk -F"," '{print $1}' | awk -F"\"" '{print $2}')
    +}
    +
    +_chef_data_bags_remote() {
    +  (knife data bag list --format json | grep \" | awk '{print $1}' | awk -F"," '{print $1}' | awk -F"\"" '{print $2}')
    +}
    +
    +_chef_environments_remote() {
    +  (knife environment list | awk '{print $1}')
    +}
    +
    +# The chef_x_local functions use the knife config to find the paths of relevant objects x to be uploaded to the server
    +_chef_cookbooks_local() {
    +  if [ $KNIFE_RELATIVE_PATH ]; then
    +    local cookbook_path="$(_chef_root)/cookbooks"
    +  else
    +    local knife_rb=${KNIFE_CONF_PATH:-${HOME}/.chef/knife.rb}
    +    if [ -f ./.chef/knife.rb ]; then
    +      knife_rb="./.chef/knife.rb"
    +    fi
    +    local cookbook_path=${KNIFE_COOKBOOK_PATH:-$(grep cookbook_path $knife_rb | awk 'BEGIN {FS = "[" }; {print $2}' | sed 's/\,//g' | sed "s/'//g" | sed 's/\(.*\)]/\1/')}
    +  fi
    +  (for i in $cookbook_path; do ls $i; done)
    +}
    +
    +# This function extracts the available cookbook versions on the chef server
    +_cookbook_versions() {
    +  (knife cookbook show $words[4] | grep -v $words[4] | grep -v -E '\]|\[|\{|\}' | sed 's/ //g' | sed 's/"//g')
    +}
    +
    +# Searches up from current directory to find the closest folder that has a .chef folder
    +# Useful for the knife upload/from file commands
    +_chef_root() {
    +  directory="$PWD"
    +  while [ $directory != '/' ]; do
    +    test -e "$directory/.chef" && echo "$directory" && return
    +    directory="${directory:h}"
    +  done
    +}
    +
    +_knife "$@"
    diff --git a/dot_oh-my-zsh/plugins/knife_ssh/README.md b/dot_oh-my-zsh/plugins/knife_ssh/README.md
    new file mode 100644
    index 0000000..cb836b7
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/knife_ssh/README.md
    @@ -0,0 +1,14 @@
    +# knife_ssh plugin
    +
    +This plugin adds a `knife_ssh` function as well as completion for it, to allow
    +connecting via ssh to servers managed with [Chef](https://www.chef.io/).
    +
    +To use it, add `knife_ssh` to the plugins array in your zshrc file:
    +```zsh
    +plugins=(... knife_ssh)
    +```
    +
    +The plugin creates a cache of the Chef node list via `knife`, and stores it
    +in `$HOME/.knife_comp~`, when first triggering knife_ssh completion.
    +
    +**Requirements:** `knife` has to be installed.
    diff --git a/dot_oh-my-zsh/plugins/knife_ssh/knife_ssh.plugin.zsh b/dot_oh-my-zsh/plugins/knife_ssh/knife_ssh.plugin.zsh
    new file mode 100644
    index 0000000..dc425a3
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/knife_ssh/knife_ssh.plugin.zsh
    @@ -0,0 +1,18 @@
    +function knife_ssh() {
    +  grep -q $1 ~/.knife_comp~ 2> /dev/null || rm -f ~/.knife_comp~
    +  ssh $(knife node show $1 | awk '/IP:/{print $2}')
    +}
    +
    +_knife_ssh() {
    +  if hash knife 2>/dev/null; then
    +    if [[ ! -f ~/.knife_comp~ ]]; then
    +      echo "\nGenerating ~/.knife_comp~..." >&2
    +      knife node list > ~/.knife_comp~
    +    fi
    +    compadd $(< ~/.knife_comp~)
    +  else
    +    echo "Could not find knife" >&2
    +  fi
    +}
    +
    +compdef _knife_ssh knife_ssh
    diff --git a/dot_oh-my-zsh/plugins/kops/README.md b/dot_oh-my-zsh/plugins/kops/README.md
    new file mode 100644
    index 0000000..5d9b5f8
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/kops/README.md
    @@ -0,0 +1,12 @@
    +# kops
    +
    +This plugin provides completion for [kops](https://github.com/kubernetes/kops) (Kubernetes Operations),
    +the command line interface to get a production grade Kubernetes cluster up and running.
    +
    +To use it, add `kops` to the plugins array in your zshrc file.
    +
    +```
    +plugins=(... kops)
    +```
    +
    +**Author:** [@nmrony](https://github.com/nmrony)
    diff --git a/dot_oh-my-zsh/plugins/kops/kops.plugin.zsh b/dot_oh-my-zsh/plugins/kops/kops.plugin.zsh
    new file mode 100644
    index 0000000..0c38ce2
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/kops/kops.plugin.zsh
    @@ -0,0 +1,3 @@
    +if [ $commands[kops] ]; then
    +  source <(kops completion zsh)
    +fi
    diff --git a/dot_oh-my-zsh/plugins/kube-ps1/README.md b/dot_oh-my-zsh/plugins/kube-ps1/README.md
    new file mode 100644
    index 0000000..1ed3e44
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/kube-ps1/README.md
    @@ -0,0 +1,241 @@
    +kube-ps1: Kubernetes prompt for bash and zsh
    +============================================
    +
    +A script that lets you add the current Kubernetes context and namespace
    +configured on `kubectl` to your Bash/Zsh prompt strings (i.e. the `$PS1`).
    +
    +Inspired by several tools used to simplify usage of `kubectl`.
    +
    +## Installing
    +
    +### MacOS
    +
    +Homebrew package manager:
    +
    +```
    +$ brew update
    +$ brew install kube-ps1
    +```
    +### From Source
    +
    +1. Clone this repository
    +2. Source the kube-ps1.sh in your `~/.zshrc` or your `~/.bashrc`
    +
    +### Arch Linux
    +AUR Package available at [https://aur.archlinux.org/packages/kube-ps1/](https://aur.archlinux.org/packages/kube-ps1/).
    +
    +#### Zsh
    +```sh
    +source /path/to/kube-ps1.sh
    +PROMPT='$(kube_ps1)'$PROMPT
    +```
    +#### Bash
    +```sh
    +source /path/to/kube-ps1.sh
    +PS1='[\u@\h \W $(kube_ps1)]\$ '
    +```
    +
    +### Zsh Plugin Managers
    +
    +#### Using [zplugin](https://github.com/zdharma/zplugin)
    +
    +Update `.zshrc` with:
    +```sh
    +zplugin light jonmosco/kube-ps1
    +PROMPT='$(kube_ps1)'$PROMPT
    +```
    +
    +## Requirements
    +
    +The default prompt assumes you have the `kubectl` command line utility installed.
    +Official installation instructions and binaries are available:
    +
    +[Install and Set up kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/)
    +
    +If using this with OpenShift, the `oc` tool needs installed.  It can be obtained
    +from brew ports:
    +
    +```
    +brew install openshift-cli
    +```
    +or the source can be downloaded:
    +
    +[OC Client Tools](https://www.openshift.org/download.html)
    +
    +Set the binary to `oc` with the following environment variable:
    +
    +```
    +KUBE_PS1_BINARY=oc
    +```
    +
    +If neither binary is available, the prompt will print the following:
    +
    +```
    +(|BINARY-N/A:N/A)
    +```
    +
    +## Helper utilities
    +
    +There are several great tools that make using kubectl very enjoyable:
    +
    +- [`kubectx` and `kubens`](https://github.com/ahmetb/kubectx) are great for
    +fast switching between clusters and namespaces.
    +
    +## Tmux port
    +
    +I have begun porting kube-ps1 to tmux as a status line plugin.  If you prefer
    +tmux, and like the functionality provided by kube-ps1, checkout the
    +[kube-tmux](https://github.com/jonmosco/kube-tmux) project
    +
    +## Prompt Structure
    +
    +The default prompt layout is:
    +
    +```
    +(|:)
    +```
    +
    +If the current-context is not set, kube-ps1 will return the following:
    +
    +```
    +(|N/A:N/A)
    +```
    +
    +## Enabling/Disabling
    +
    +If you want to stop showing Kubernetes status on your prompt string temporarily
    +run `kubeoff`. To disable the prompt for all shell sessions, run `kubeoff -g`.
    +You can enable it again in the current shell by running `kubeon`, and globally
    +with `kubeon -g`.
    +
    +```
    +kubeon     : turn on kube-ps1 status for this shell.  Takes precedence over
    +             global setting for current session
    +kubeon -g  : turn on kube-ps1 status globally
    +kubeoff    : turn off kube-ps1 status for this shell. Takes precedence over
    +             global setting for current session
    +kubeoff -g : turn off kube-ps1 status globally
    +```
    +
    +## Customization
    +
    +The default settings can be overridden in `~/.bashrc` or `~/.zshrc` by setting
    +the following environment variables:
    +
    +| Variable | Default | Meaning |
    +| :------- | :-----: | ------- |
    +| `KUBE_PS1_BINARY` | `kubectl` | Default Kubernetes binary |
    +| `KUBE_PS1_NS_ENABLE` | `true` | Display the namespace. If set to `false`, this will also disable `KUBE_PS1_DIVIDER` |
    +| `KUBE_PS1_PREFIX` | `(` | Prompt opening character  |
    +| `KUBE_PS1_SYMBOL_ENABLE` | `true ` | Display the prompt Symbol. If set to `false`, this will also disable `KUBE_PS1_SEPARATOR` |
    +| `KUBE_PS1_SYMBOL_PADDING` | `false` | Adds a space (padding) after the symbol to prevent clobbering prompt characters |
    +| `KUBE_PS1_SYMBOL_DEFAULT` | `⎈ ` | Default prompt symbol. Unicode `\u2388` |
    +| `KUBE_PS1_SYMBOL_USE_IMG` | `false` | ☸️  ,  Unicode `\u2638` as the prompt symbol |
    +| `KUBE_PS1_SEPARATOR` | | | Separator between symbol and context name |
    +| `KUBE_PS1_DIVIDER` | `:` | Separator between context and namespace |
    +| `KUBE_PS1_SUFFIX` | `)` | Prompt closing character |
    +| `KUBE_PS1_CLUSTER_FUNCTION` | No default, must be user supplied | Function to customize how cluster is displayed |
    +| `KUBE_PS1_NAMESPACE_FUNCTION` | No default, must be user supplied | Function to customize how namespace is displayed |
    +
    +For terminals that do not support UTF-8, the symbol will be replaced with the
    +string `k8s`.
    +
    +To disable a feature, set it to an empty string:
    +
    +```
    +KUBE_PS1_SEPARATOR=''
    +```
    +
    +## Colors
    +
    +The default colors are set with the following environment variables:
    +
    +| Variable | Default | Meaning |
    +| :------- | :-----: | ------- |
    +| `KUBE_PS1_PREFIX_COLOR` | `null` | Set default color of the prompt prefix |
    +| `KUBE_PS1_SYMBOL_COLOR` | `blue` | Set default color of the Kubernetes symbol |
    +| `KUBE_PS1_CTX_COLOR` | `red` | Set default color of the context |
    +| `KUBE_PS1_SUFFIX_COLOR` | `null` | Set default color of the prompt suffix |
    +| `KUBE_PS1_NS_COLOR` | `cyan` | Set default color of the namespace |
    +| `KUBE_PS1_BG_COLOR` | `null` | Set default color of the prompt background |
    +
    +Blue was used for the default symbol to match the Kubernetes color as closely
    +as possible. Red was chosen as the context name to stand out, and cyan for the
    +namespace.
    +
    +Set the variable to an empty string if you do not want color for each
    +prompt section:
    +
    +```
    +KUBE_PS1_CTX_COLOR=''
    +```
    +
    +Names are usable for the following colors:
    +
    +```
    +black, red, green, yellow, blue, magenta, cyan
    +```
    +
    +256 colors are available by specifying the numerical value as the variable
    +argument.
    +
    +## Customize display of cluster name and namespace
    +
    +You can change how the cluster name and namespace are displayed using the
    +`KUBE_PS1_CLUSTER_FUNCTION` and `KUBE_PS1_NAMESPACE_FUNCTION` variables
    +respectively.
    +
    +For the following examples let's assume the following:
    +
    +cluster name: `sandbox.k8s.example.com`
    +namespace: `alpha`
    +
    +If you're using domain style cluster names, your prompt will get quite long
    +very quickly. Let's say you only want to display the first portion of the
    +cluster name (`sandbox`), you could do that by adding the following:
    +
    +```sh
    +function get_cluster_short() {
    +  echo "$1" | cut -d . -f1
    +}
    +
    +KUBE_PS1_CLUSTER_FUNCTION=get_cluster_short
    +```
    +
    +The same pattern can be followed to customize the display of the namespace.
    +Let's say you would prefer the namespace to be displayed in all uppercase
    +(`ALPHA`), here's one way you could do that:
    +
    +```sh
    +function get_namespace_upper() {
    +    echo "$1" | tr '[:lower:]' '[:upper:]'
    +}
    +
    +export KUBE_PS1_NAMESPACE_FUNCTION=get_namespace_upper
    +```
    +
    +In both cases, the variable is set to the name of the function, and you must have defined the function in your shell configuration before kube_ps1 is called. The function must accept a single parameter and echo out the final value.
    +
    +### Bug Reports and shell configuration
    +
    +Due to the vast ways of customizing the shell, please try the prompt with a
    +minimal configuration before submitting a bug report.
    +
    +This can be done as follows for each shell before loading kube-ps1:
    +
    +Bash:
    +```bash
    +bash --norc
    +```
    +
    +Zsh:
    +```bash
    +zsh -f
    +or
    +zsh --no-rcs
    +```
    +
    +## Contributors
    +
    +* [Ahmet Alp Balkan](https://github.com/ahmetb)
    +* Jared Yanovich
    diff --git a/dot_oh-my-zsh/plugins/kube-ps1/kube-ps1.plugin.zsh b/dot_oh-my-zsh/plugins/kube-ps1/kube-ps1.plugin.zsh
    new file mode 100644
    index 0000000..894e0f7
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/kube-ps1/kube-ps1.plugin.zsh
    @@ -0,0 +1,386 @@
    +#!/usr/bin/env bash
    +
    +# Kubernetes prompt helper for bash/zsh
    +# Displays current context and namespace
    +
    +# Copyright 2021 Jon Mosco
    +#
    +#  Licensed under the Apache License, Version 2.0 (the "License");
    +# you may not use this file except in compliance with the License.
    +# You may obtain a copy of the License at
    +#
    +#     http://www.apache.org/licenses/LICENSE-2.0
    +#
    +# Unless required by applicable law or agreed to in writing, software
    +# distributed under the License is distributed on an "AS IS" BASIS,
    +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +# See the License for the specific language governing permissions and
    +# limitations under the License.
    +
    +# Debug
    +[[ -n $DEBUG ]] && set -x
    +
    +# Default values for the prompt
    +# Override these values in ~/.zshrc or ~/.bashrc
    +KUBE_PS1_BINARY="${KUBE_PS1_BINARY:-kubectl}"
    +KUBE_PS1_SYMBOL_ENABLE="${KUBE_PS1_SYMBOL_ENABLE:-true}"
    +KUBE_PS1_SYMBOL_DEFAULT=${KUBE_PS1_SYMBOL_DEFAULT:-$'\u2388'}
    +KUBE_PS1_SYMBOL_PADDING="${KUBE_PS1_SYMBOL_PADDING:-false}"
    +KUBE_PS1_SYMBOL_USE_IMG="${KUBE_PS1_SYMBOL_USE_IMG:-false}"
    +KUBE_PS1_NS_ENABLE="${KUBE_PS1_NS_ENABLE:-true}"
    +KUBE_PS1_CONTEXT_ENABLE="${KUBE_PS1_CONTEXT_ENABLE:-true}"
    +KUBE_PS1_PREFIX="${KUBE_PS1_PREFIX-(}"
    +KUBE_PS1_SEPARATOR="${KUBE_PS1_SEPARATOR-|}"
    +KUBE_PS1_DIVIDER="${KUBE_PS1_DIVIDER-:}"
    +KUBE_PS1_SUFFIX="${KUBE_PS1_SUFFIX-)}"
    +
    +KUBE_PS1_SYMBOL_COLOR="${KUBE_PS1_SYMBOL_COLOR-blue}"
    +KUBE_PS1_CTX_COLOR="${KUBE_PS1_CTX_COLOR-red}"
    +KUBE_PS1_NS_COLOR="${KUBE_PS1_NS_COLOR-cyan}"
    +KUBE_PS1_BG_COLOR="${KUBE_PS1_BG_COLOR}"
    +
    +KUBE_PS1_KUBECONFIG_CACHE="${KUBECONFIG}"
    +KUBE_PS1_DISABLE_PATH="${HOME}/.kube/kube-ps1/disabled"
    +KUBE_PS1_LAST_TIME=0
    +KUBE_PS1_CLUSTER_FUNCTION="${KUBE_PS1_CLUSTER_FUNCTION}"
    +KUBE_PS1_NAMESPACE_FUNCTION="${KUBE_PS1_NAMESPACE_FUNCTION}"
    +
    +# Determine our shell
    +if [ "${ZSH_VERSION-}" ]; then
    +  KUBE_PS1_SHELL="zsh"
    +elif [ "${BASH_VERSION-}" ]; then
    +  KUBE_PS1_SHELL="bash"
    +fi
    +
    +_kube_ps1_init() {
    +  [[ -f "${KUBE_PS1_DISABLE_PATH}" ]] && KUBE_PS1_ENABLED=off
    +
    +  case "${KUBE_PS1_SHELL}" in
    +    "zsh")
    +      _KUBE_PS1_OPEN_ESC="%{"
    +      _KUBE_PS1_CLOSE_ESC="%}"
    +      _KUBE_PS1_DEFAULT_BG="%k"
    +      _KUBE_PS1_DEFAULT_FG="%f"
    +      setopt PROMPT_SUBST
    +      autoload -U add-zsh-hook
    +      add-zsh-hook precmd _kube_ps1_update_cache
    +      zmodload -F zsh/stat b:zstat
    +      zmodload zsh/datetime
    +      ;;
    +    "bash")
    +      _KUBE_PS1_OPEN_ESC=$'\001'
    +      _KUBE_PS1_CLOSE_ESC=$'\002'
    +      _KUBE_PS1_DEFAULT_BG=$'\033[49m'
    +      _KUBE_PS1_DEFAULT_FG=$'\033[39m'
    +      [[ $PROMPT_COMMAND =~ _kube_ps1_update_cache ]] || PROMPT_COMMAND="_kube_ps1_update_cache;${PROMPT_COMMAND:-:}"
    +      ;;
    +  esac
    +}
    +
    +_kube_ps1_color_fg() {
    +  local KUBE_PS1_FG_CODE
    +  case "${1}" in
    +    black) KUBE_PS1_FG_CODE=0;;
    +    red) KUBE_PS1_FG_CODE=1;;
    +    green) KUBE_PS1_FG_CODE=2;;
    +    yellow) KUBE_PS1_FG_CODE=3;;
    +    blue) KUBE_PS1_FG_CODE=4;;
    +    magenta) KUBE_PS1_FG_CODE=5;;
    +    cyan) KUBE_PS1_FG_CODE=6;;
    +    white) KUBE_PS1_FG_CODE=7;;
    +    # 256
    +    [0-9]|[1-9][0-9]|[1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-6]) KUBE_PS1_FG_CODE="${1}";;
    +    *) KUBE_PS1_FG_CODE=default
    +  esac
    +
    +  if [[ "${KUBE_PS1_FG_CODE}" == "default" ]]; then
    +    KUBE_PS1_FG_CODE="${_KUBE_PS1_DEFAULT_FG}"
    +    return
    +  elif [[ "${KUBE_PS1_SHELL}" == "zsh" ]]; then
    +    KUBE_PS1_FG_CODE="%F{$KUBE_PS1_FG_CODE}"
    +  elif [[ "${KUBE_PS1_SHELL}" == "bash" ]]; then
    +    if tput setaf 1 &> /dev/null; then
    +      KUBE_PS1_FG_CODE="$(tput setaf ${KUBE_PS1_FG_CODE})"
    +    elif [[ $KUBE_PS1_FG_CODE -ge 0 ]] && [[ $KUBE_PS1_FG_CODE -le 256 ]]; then
    +      KUBE_PS1_FG_CODE="\033[38;5;${KUBE_PS1_FG_CODE}m"
    +    else
    +      KUBE_PS1_FG_CODE="${_KUBE_PS1_DEFAULT_FG}"
    +    fi
    +  fi
    +  echo ${_KUBE_PS1_OPEN_ESC}${KUBE_PS1_FG_CODE}${_KUBE_PS1_CLOSE_ESC}
    +}
    +
    +_kube_ps1_color_bg() {
    +  local KUBE_PS1_BG_CODE
    +  case "${1}" in
    +    black) KUBE_PS1_BG_CODE=0;;
    +    red) KUBE_PS1_BG_CODE=1;;
    +    green) KUBE_PS1_BG_CODE=2;;
    +    yellow) KUBE_PS1_BG_CODE=3;;
    +    blue) KUBE_PS1_BG_CODE=4;;
    +    magenta) KUBE_PS1_BG_CODE=5;;
    +    cyan) KUBE_PS1_BG_CODE=6;;
    +    white) KUBE_PS1_BG_CODE=7;;
    +    # 256
    +    [0-9]|[1-9][0-9]|[1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-6]) KUBE_PS1_BG_CODE="${1}";;
    +    *) KUBE_PS1_BG_CODE=$'\033[0m';;
    +  esac
    +
    +  if [[ "${KUBE_PS1_BG_CODE}" == "default" ]]; then
    +    KUBE_PS1_FG_CODE="${_KUBE_PS1_DEFAULT_BG}"
    +    return
    +  elif [[ "${KUBE_PS1_SHELL}" == "zsh" ]]; then
    +    KUBE_PS1_BG_CODE="%K{$KUBE_PS1_BG_CODE}"
    +  elif [[ "${KUBE_PS1_SHELL}" == "bash" ]]; then
    +    if tput setaf 1 &> /dev/null; then
    +      KUBE_PS1_BG_CODE="$(tput setab ${KUBE_PS1_BG_CODE})"
    +    elif [[ $KUBE_PS1_BG_CODE -ge 0 ]] && [[ $KUBE_PS1_BG_CODE -le 256 ]]; then
    +      KUBE_PS1_BG_CODE="\033[48;5;${KUBE_PS1_BG_CODE}m"
    +    else
    +      KUBE_PS1_BG_CODE="${DEFAULT_BG}"
    +    fi
    +  fi
    +  echo ${OPEN_ESC}${KUBE_PS1_BG_CODE}${CLOSE_ESC}
    +}
    +
    +_kube_ps1_binary_check() {
    +  command -v $1 >/dev/null
    +}
    +
    +_kube_ps1_symbol() {
    +  [[ "${KUBE_PS1_SYMBOL_ENABLE}" == false ]] && return
    +
    +  case "${KUBE_PS1_SHELL}" in
    +    bash)
    +      if ((BASH_VERSINFO[0] >= 4)) && [[ $'\u2388' != "\\u2388" ]]; then
    +        KUBE_PS1_SYMBOL="${KUBE_PS1_SYMBOL_DEFAULT}"
    +        KUBE_PS1_SYMBOL_IMG=$'\u2638\ufe0f'
    +      else
    +        KUBE_PS1_SYMBOL=$'\xE2\x8E\x88'
    +        KUBE_PS1_SYMBOL_IMG=$'\xE2\x98\xB8'
    +      fi
    +      ;;
    +    zsh)
    +      KUBE_PS1_SYMBOL="${KUBE_PS1_SYMBOL_DEFAULT}"
    +      KUBE_PS1_SYMBOL_IMG="\u2638";;
    +    *)
    +      KUBE_PS1_SYMBOL="k8s"
    +  esac
    +
    +  if [[ "${KUBE_PS1_SYMBOL_USE_IMG}" == true ]]; then
    +    KUBE_PS1_SYMBOL="${KUBE_PS1_SYMBOL_IMG}"
    +  fi
    +
    +  if [[ "${KUBE_PS1_SYMBOL_PADDING}" == true ]]; then
    +    echo "${KUBE_PS1_SYMBOL} "
    +  else
    +    echo "${KUBE_PS1_SYMBOL}"
    +  fi
    +
    +}
    +
    +_kube_ps1_split() {
    +  type setopt >/dev/null 2>&1 && setopt SH_WORD_SPLIT
    +  local IFS=$1
    +  echo $2
    +}
    +
    +_kube_ps1_file_newer_than() {
    +  local mtime
    +  local file=$1
    +  local check_time=$2
    +
    +  if [[ "${KUBE_PS1_SHELL}" == "zsh" ]]; then
    +    mtime=$(zstat +mtime "${file}")
    +  elif stat -c "%s" /dev/null &> /dev/null; then
    +    # GNU stat
    +    mtime=$(stat -L -c %Y "${file}")
    +  else
    +    # BSD stat
    +    mtime=$(stat -L -f %m "$file")
    +  fi
    +
    +  [[ "${mtime}" -gt "${check_time}" ]]
    +}
    +
    +_kube_ps1_update_cache() {
    +  local return_code=$?
    +
    +  [[ "${KUBE_PS1_ENABLED}" == "off" ]] && return $return_code
    +
    +  if ! _kube_ps1_binary_check "${KUBE_PS1_BINARY}"; then
    +    # No ability to fetch context/namespace; display N/A.
    +    KUBE_PS1_CONTEXT="BINARY-N/A"
    +    KUBE_PS1_NAMESPACE="N/A"
    +    return
    +  fi
    +
    +  if [[ "${KUBECONFIG}" != "${KUBE_PS1_KUBECONFIG_CACHE}" ]]; then
    +    # User changed KUBECONFIG; unconditionally refetch.
    +    KUBE_PS1_KUBECONFIG_CACHE=${KUBECONFIG}
    +    _kube_ps1_get_context_ns
    +    return
    +  fi
    +
    +  # kubectl will read the environment variable $KUBECONFIG
    +  # otherwise set it to ~/.kube/config
    +  local conf
    +  for conf in $(_kube_ps1_split : "${KUBECONFIG:-${HOME}/.kube/config}"); do
    +    [[ -r "${conf}" ]] || continue
    +    if _kube_ps1_file_newer_than "${conf}" "${KUBE_PS1_LAST_TIME}"; then
    +      _kube_ps1_get_context_ns
    +      return
    +    fi
    +  done
    +
    +  return $return_code
    +}
    +
    +_kube_ps1_get_context() {
    +  if [[ "${KUBE_PS1_CONTEXT_ENABLE}" == true ]]; then
    +    KUBE_PS1_CONTEXT="$(${KUBE_PS1_BINARY} config current-context 2>/dev/null)"
    +    # Set namespace to 'N/A' if it is not defined
    +    KUBE_PS1_CONTEXT="${KUBE_PS1_CONTEXT:-N/A}"
    +
    +    if [[ ! -z "${KUBE_PS1_CLUSTER_FUNCTION}" ]]; then
    +      KUBE_PS1_CONTEXT=$($KUBE_PS1_CLUSTER_FUNCTION $KUBE_PS1_CONTEXT)
    +    fi
    +  fi
    +}
    +
    +_kube_ps1_get_ns() {
    +  if [[ "${KUBE_PS1_NS_ENABLE}" == true ]]; then
    +    KUBE_PS1_NAMESPACE="$(${KUBE_PS1_BINARY} config view --minify --output 'jsonpath={..namespace}' 2>/dev/null)"
    +    # Set namespace to 'default' if it is not defined
    +    KUBE_PS1_NAMESPACE="${KUBE_PS1_NAMESPACE:-default}"
    +
    +    if [[ ! -z "${KUBE_PS1_NAMESPACE_FUNCTION}" ]]; then
    +        KUBE_PS1_NAMESPACE=$($KUBE_PS1_NAMESPACE_FUNCTION $KUBE_PS1_NAMESPACE)
    +    fi
    +  fi
    +}
    +
    +_kube_ps1_get_context_ns() {
    +  # Set the command time
    +  if [[ "${KUBE_PS1_SHELL}" == "bash" ]]; then
    +    if ((BASH_VERSINFO[0] >= 4 && BASH_VERSINFO[1] >= 2)); then
    +      KUBE_PS1_LAST_TIME=$(printf '%(%s)T')
    +    else
    +      KUBE_PS1_LAST_TIME=$(date +%s)
    +    fi
    +  elif [[ "${KUBE_PS1_SHELL}" == "zsh" ]]; then
    +    KUBE_PS1_LAST_TIME=$EPOCHSECONDS
    +  fi
    +
    +  _kube_ps1_get_context
    +  _kube_ps1_get_ns
    +}
    +
    +# Set kube-ps1 shell defaults
    +_kube_ps1_init
    +
    +_kubeon_usage() {
    +  cat <<"EOF"
    +Toggle kube-ps1 prompt on
    +
    +Usage: kubeon [-g | --global] [-h | --help]
    +
    +With no arguments, turn off kube-ps1 status for this shell instance (default).
    +
    +  -g --global  turn on kube-ps1 status globally
    +  -h --help    print this message
    +EOF
    +}
    +
    +_kubeoff_usage() {
    +  cat <<"EOF"
    +Toggle kube-ps1 prompt off
    +
    +Usage: kubeoff [-g | --global] [-h | --help]
    +
    +With no arguments, turn off kube-ps1 status for this shell instance (default).
    +
    +  -g --global turn off kube-ps1 status globally
    +  -h --help   print this message
    +EOF
    +}
    +
    +kubeon() {
    +  if [[ "${1}" == '-h' || "${1}" == '--help' ]]; then
    +    _kubeon_usage
    +  elif [[ "${1}" == '-g' || "${1}" == '--global' ]]; then
    +    rm -f -- "${KUBE_PS1_DISABLE_PATH}"
    +  elif [[ "$#" -ne 0 ]]; then
    +    echo -e "error: unrecognized flag ${1}\\n"
    +    _kubeon_usage
    +    return
    +  fi
    +
    +  KUBE_PS1_ENABLED=on
    +}
    +
    +kubeoff() {
    +  if [[ "${1}" == '-h' || "${1}" == '--help' ]]; then
    +    _kubeoff_usage
    +  elif [[ "${1}" == '-g' || "${1}" == '--global' ]]; then
    +    mkdir -p -- "$(dirname "${KUBE_PS1_DISABLE_PATH}")"
    +    touch -- "${KUBE_PS1_DISABLE_PATH}"
    +  elif [[ $# -ne 0 ]]; then
    +    echo "error: unrecognized flag ${1}" >&2
    +    _kubeoff_usage
    +    return
    +  fi
    +
    +  KUBE_PS1_ENABLED=off
    +}
    +
    +# Build our prompt
    +kube_ps1() {
    +  [[ "${KUBE_PS1_ENABLED}" == "off" ]] && return
    +  [[ -z "${KUBE_PS1_CONTEXT}" ]] && [[ "${KUBE_PS1_CONTEXT_ENABLE}" == true ]] && return
    +
    +  local KUBE_PS1
    +  local KUBE_PS1_RESET_COLOR="${_KUBE_PS1_OPEN_ESC}${_KUBE_PS1_DEFAULT_FG}${_KUBE_PS1_CLOSE_ESC}"
    +
    +  # Background Color
    +  [[ -n "${KUBE_PS1_BG_COLOR}" ]] && KUBE_PS1+="$(_kube_ps1_color_bg ${KUBE_PS1_BG_COLOR})"
    +
    +  # Prefix
    +  if [[ -z "${KUBE_PS1_PREFIX_COLOR:-}" ]] && [[ -n "${KUBE_PS1_PREFIX}" ]]; then
    +      KUBE_PS1+="${KUBE_PS1_PREFIX}"
    +  else
    +      KUBE_PS1+="$(_kube_ps1_color_fg $KUBE_PS1_PREFIX_COLOR)${KUBE_PS1_PREFIX}${KUBE_PS1_RESET_COLOR}"
    +  fi
    +
    +  # Symbol
    +  KUBE_PS1+="$(_kube_ps1_color_fg $KUBE_PS1_SYMBOL_COLOR)$(_kube_ps1_symbol)${KUBE_PS1_RESET_COLOR}"
    +
    +  if [[ -n "${KUBE_PS1_SEPARATOR}" ]] && [[ "${KUBE_PS1_SYMBOL_ENABLE}" == true ]]; then
    +    KUBE_PS1+="${KUBE_PS1_SEPARATOR}"
    +  fi
    +
    +  # Context
    +  if [[ "${KUBE_PS1_CONTEXT_ENABLE}" == true ]]; then
    +    KUBE_PS1+="$(_kube_ps1_color_fg $KUBE_PS1_CTX_COLOR)${KUBE_PS1_CONTEXT}${KUBE_PS1_RESET_COLOR}"
    +  fi
    +
    +  # Namespace
    +  if [[ "${KUBE_PS1_NS_ENABLE}" == true ]]; then
    +    if [[ -n "${KUBE_PS1_DIVIDER}" ]] && [[ "${KUBE_PS1_CONTEXT_ENABLE}" == true ]]; then
    +      KUBE_PS1+="${KUBE_PS1_DIVIDER}"
    +    fi
    +    KUBE_PS1+="$(_kube_ps1_color_fg ${KUBE_PS1_NS_COLOR})${KUBE_PS1_NAMESPACE}${KUBE_PS1_RESET_COLOR}"
    +  fi
    +
    +  # Suffix
    +  if [[ -z "${KUBE_PS1_SUFFIX_COLOR:-}" ]] && [[ -n "${KUBE_PS1_SUFFIX}" ]]; then
    +      KUBE_PS1+="${KUBE_PS1_SUFFIX}"
    +  else
    +      KUBE_PS1+="$(_kube_ps1_color_fg $KUBE_PS1_SUFFIX_COLOR)${KUBE_PS1_SUFFIX}${KUBE_PS1_RESET_COLOR}"
    +  fi
    +
    +  # Close Background color if defined
    +  [[ -n "${KUBE_PS1_BG_COLOR}" ]] && KUBE_PS1+="${_KUBE_PS1_OPEN_ESC}${_KUBE_PS1_DEFAULT_BG}${_KUBE_PS1_CLOSE_ESC}"
    +
    +  echo "${KUBE_PS1}"
    +}
    diff --git a/dot_oh-my-zsh/plugins/kubectl/README.md b/dot_oh-my-zsh/plugins/kubectl/README.md
    new file mode 100644
    index 0000000..579a90b
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/kubectl/README.md
    @@ -0,0 +1,137 @@
    +# Kubectl plugin
    +
    +This plugin adds completion for the [Kubernetes cluster manager](https://kubernetes.io/docs/reference/kubectl/kubectl/),
    +as well as some aliases for common kubectl commands.
    +
    +To use it, add `kubectl` to the plugins array in your zshrc file:
    +
    +```zsh
    +plugins=(... kubectl)
    +```
    +
    +## Aliases
    +
    +| Alias   | Command                             | Description                                                                                      |
    +|:--------|:------------------------------------|:-------------------------------------------------------------------------------------------------|
    +| k       | `kubectl`                           | The kubectl command                                                                              |
    +| kca     | `kubectl --all-namespaces`          | The kubectl command targeting all namespaces                                                     |
    +| kaf     | `kubectl apply -f`                  | Apply a YML file                                                                                 |
    +| keti    | `kubectl exec -ti`                  | Drop into an interactive terminal on a container                                                 |
    +|         |                                     | **Manage configuration quickly to switch contexts between local, dev and staging**               |
    +| kcuc    | `kubectl config use-context`        | Set the current-context in a kubeconfig file                                                     |
    +| kcsc    | `kubectl config set-context`        | Set a context entry in kubeconfig                                                                |
    +| kcdc    | `kubectl config delete-context`     | Delete the specified context from the kubeconfig                                                 |
    +| kccc    | `kubectl config current-context`    | Display the current-context                                                                      |
    +| kcgc    | `kubectl config get-contexts`       | List of contexts available                                                                       |
    +|         |                                     | **General aliases**                                                                              |
    +| kdel    | `kubectl delete`                    | Delete resources by filenames, stdin, resources and names, or by resources and label selector    |
    +| kdelf   | `kubectl delete -f`                 | Delete a pod using the type and name specified in -f argument                                    |
    +|         |                                     | **Pod management**                                                                               |
    +| kgp     | `kubectl get pods`                  | List all pods in ps output format                                                                |
    +| kgpw    | `kgp --watch`                       | After listing/getting the requested object, watch for changes                                    |
    +| kgpwide | `kgp -o wide`                       | Output in plain-text format with any additional information. For pods, the node name is included |
    +| kep     | `kubectl edit pods`                 | Edit pods from the default editor                                                                |
    +| kdp     | `kubectl describe pods`             | Describe all pods                                                                                |
    +| kdelp   | `kubectl delete pods`               | Delete all pods matching passed arguments                                                        |
    +| kgpl    | `kgp -l`                            | Get pods by label. Example: `kgpl "app=myapp" -n myns`                                           |
    +| kgpn    | `kgp -n`                            | Get pods by namespace. Example: `kgpn kube-system`                                               |
    +|         |                                     | **Service management**                                                                           |
    +| kgs     | `kubectl get svc`                   | List all services in ps output format                                                            |
    +| kgsw    | `kgs --watch`                       | After listing all services, watch for changes                                                    |
    +| kgswide | `kgs -o wide`                       | After listing all services, output in plain-text format with any additional information          |
    +| kes     | `kubectl edit svc`                  | Edit services(svc) from the default editor                                                       |
    +| kds     | `kubectl describe svc`              | Describe all services in detail                                                                  |
    +| kdels   | `kubectl delete svc`                | Delete all services matching passed argument                                                     |
    +|         |                                     | **Ingress management**                                                                           |
    +| kgi     | `kubectl get ingress`               | List ingress resources in ps output format                                                       |
    +| kei     | `kubectl edit ingress`              | Edit ingress resource from the default editor                                                    |
    +| kdi     | `kubectl describe ingress`          | Describe ingress resource in detail                                                              |
    +| kdeli   | `kubectl delete ingress`            | Delete ingress resources matching passed argument                                                |
    +|         |                                     | **Namespace management**                                                                         |
    +| kgns    | `kubectl get namespaces`            | List the current namespaces in a cluster                                                         |
    +| kcn     | `kubectl config set-context --current --namespace` | Change current namespace |
    +| kens    | `kubectl edit namespace`            | Edit namespace resource from the default editor                                                  |
    +| kdns    | `kubectl describe namespace`        | Describe namespace resource in detail                                                            |
    +| kdelns  | `kubectl delete namespace`          | Delete the namespace. WARNING! This deletes everything in the namespace                          |
    +|         |                                     | **ConfigMap management**                                                                         |
    +| kgcm    | `kubectl get configmaps`            | List the configmaps in ps output format                                                          |
    +| kecm    | `kubectl edit configmap`            | Edit configmap resource from the default editor                                                  |
    +| kdcm    | `kubectl describe configmap`        | Describe configmap resource in detail                                                            |
    +| kdelcm  | `kubectl delete configmap`          | Delete the configmap                                                                             |
    +|         |                                     | **Secret management**                                                                            |
    +| kgsec   | `kubectl get secret`                | Get secret for decoding                                                                          |
    +| kdsec   | `kubectl describe secret`           | Describe secret resource in detail                                                               |
    +| kdelsec | `kubectl delete secret`             | Delete the secret                                                                                |
    +|         |                                     | **Deployment management**                                                                        |
    +| kgd     | `kubectl get deployment`            | Get the deployment                                                                               |
    +| kgdw    | `kgd --watch`                       | After getting the deployment, watch for changes                                                  |
    +| kgdwide | `kgd -o wide`                       | After getting the deployment, output in plain-text format with any additional information        |
    +| ked     | `kubectl edit deployment`           | Edit deployment resource from the default editor                                                 |
    +| kdd     | `kubectl describe deployment`       | Describe deployment resource in detail                                                           |
    +| kdeld   | `kubectl delete deployment`         | Delete the deployment                                                                            |
    +| ksd     | `kubectl scale deployment`          | Scale a deployment                                                                               |
    +| krsd    | `kubectl rollout status deployment` | Check the rollout status of a deployment                                                         |
    +| kres    | `kubectl set env $@ REFRESHED_AT=...` | Recreate all pods in deployment with zero-downtime                                             |
    +|         |                                     | **Rollout management**                                                                           |
    +| kgrs    | `kubectl get replicaset`            | List all ReplicaSets `rs` created by the deployment                                              |
    +| kdrs    | `kubectl describe replicaset`       | Describe ReplicaSet in detail                                                                    |
    +| kers    | `kubectl edit replicaset`           | Edit ReplicaSet from the default editor                                                          |
    +| krh     | `kubectl rollout history`           | Check the revisions of this deployment                                                           |
    +| kru     | `kubectl rollout undo`              | Rollback to the previous revision                                                                |
    +|         |                                     | **Port forwarding**                                                                              |
    +| kpf     | `kubectl port-forward`              | Forward one or more local ports to a pod                                                         |
    +|         |                                     | **Tools for accessing all information**                                                          |
    +| kga     | `kubectl get all`                   | List all resources in ps format                                                                  |
    +| kgaa    | `kubectl get all --all-namespaces`  | List the requested object(s) across all namespaces                                               |
    +|         |                                     | **Logs**                                                                                         |
    +| kl      | `kubectl logs`                      | Print the logs for a container or resource                                                       |
    +| klf     | `kubectl logs -f`                   | Stream the logs for a container or resource (follow)                                             |
    +|         |                                     | **File copy**                                                                                    |
    +| kcp     | `kubectl cp`                        | Copy files and directories to and from containers                                                |
    +|         |                                     | **Node management**                                                                              |
    +| kgno    | `kubectl get nodes`                 | List the nodes in ps output format                                                               |
    +| keno    | `kubectl edit node`                 | Edit nodes resource from the default editor                                                      |
    +| kdno    | `kubectl describe node`             | Describe node resource in detail                                                                 |
    +| kdelno  | `kubectl delete node`               | Delete the node                                                                                  |
    +|         |                                     | **Persistent Volume Claim management**                                                           |
    +| kgpvc   | `kubectl get pvc`                   | List all PVCs                                                                                    |
    +| kgpvcw  | `kgpvc --watch`                     | After listing/getting the requested object, watch for changes                                    |
    +| kepvc   | `kubectl edit pvc`                  | Edit pvcs from the default editor                                                                |
    +| kdpvc   | `kubectl describe pvc`              | Describe all pvcs                                                                                |
    +| kdelpvc | `kubectl delete pvc`                | Delete all pvcs matching passed arguments                                                        |
    +|         |                                     | **StatefulSets management**                                                                      |
    +| kgss    | `kubectl get statefulset`           | List the statefulsets in ps format                                                               |
    +| kgssw   | `kgss --watch`                      | After getting the list of statefulsets, watch for changes                                        |
    +| kgsswide| `kgss -o wide`                      | After getting the statefulsets, output in plain-text format with any additional information      |
    +| kess    | `kubectl edit statefulset`          | Edit statefulset resource from the default editor                                                |
    +| kdss    | `kubectl describe statefulset`      | Describe statefulset resource in detail                                                          |
    +| kdelss  | `kubectl delete statefulset`        | Delete the statefulset                                                                           |
    +| ksss    | `kubectl scale statefulset`         | Scale a statefulset                                                                              |
    +| krsss   | `kubectl rollout status statefulset`| Check the rollout status of a deployment                                                         |
    +|         |                                     | **Service Accounts management**                                                                  |
    +| kdsa    | `kubectl describe sa`               | Describe a service account in details                                                            |
    +| kdelsa  | `kubectl delete sa`                 | Delete the service account                                                                       |
    +|         |                                     | **DaemonSet management**                                                                         |
    +| kgds    | `kubectl get daemonset`             | List all DaemonSets in ps output format                                                          |
    +| kgdsw   | `kgds --watch`                      | After listing all DaemonSets, watch for changes                                                  |
    +| keds    | `kubectl edit daemonset`            | Edit DaemonSets from the default editor                                                          |
    +| kdds    | `kubectl describe daemonset`        | Describe all DaemonSets in detail                                                                |
    +| kdelds  | `kubectl delete daemonset`          | Delete all DaemonSets matching passed argument                                                   |
    +|         |                                     | **CronJob management**                                                                           |
    +| kgcj    | `kubectl get cronjob`               | List all CronJobs in ps output format                                                            |
    +| kecj    | `kubectl edit cronjob`              | Edit CronJob from the default editor                                                             |
    +| kdcj    | `kubectl describe cronjob`          | Describe a CronJob in details                                                                    |
    +| kdelcj  | `kubectl delete cronjob`            | Delete the CronJob                                                                               |
    +|         |                                     | **Job management**                                                                               |
    +| kgj     | `kubectl get job`                   | List all Job in ps output format                                                                 |
    +| kej     | `kubectl edit job`                  | Edit a Job in details                                                                            |
    +| kdj     | `kubectl describe job`              | Describe the Job                                                                                 |
    +| kdelj   | `kubectl delete job`                | Delete the Job                                                                                   |
    +
    +## Wrappers
    +
    +This plugin provides 3 wrappers to colorize kubectl output in JSON and YAML using various tools (which must be installed):
    +
    +- `kj`: JSON, colorized with [`jq`](https://stedolan.github.io/jq/).
    +- `kjx`: JSON, colorized with [`fx`](https://github.com/antonmedv/fx).
    +- `ky`: YAML, colorized with [`yh`](https://github.com/andreazorzetto/yh).
    diff --git a/dot_oh-my-zsh/plugins/kubectl/kubectl.plugin.zsh b/dot_oh-my-zsh/plugins/kubectl/kubectl.plugin.zsh
    new file mode 100644
    index 0000000..315d3ce
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/kubectl/kubectl.plugin.zsh
    @@ -0,0 +1,191 @@
    +if (( ! $+commands[kubectl] )); then
    +  return
    +fi
    +
    +# If the completion file doesn't exist yet, we need to autoload it and
    +# bind it to `kubectl`. Otherwise, compinit will have already done that.
    +if [[ ! -f "$ZSH_CACHE_DIR/completions/_kubectl" ]]; then
    +  typeset -g -A _comps
    +  autoload -Uz _kubectl
    +  _comps[kubectl]=_kubectl
    +fi
    +
    +kubectl completion zsh 2> /dev/null >| "$ZSH_CACHE_DIR/completions/_kubectl" &|
    +
    +# This command is used a LOT both below and in daily life
    +alias k=kubectl
    +
    +# Execute a kubectl command against all namespaces
    +alias kca='_kca(){ kubectl "$@" --all-namespaces;  unset -f _kca; }; _kca'
    +
    +# Apply a YML file
    +alias kaf='kubectl apply -f'
    +
    +# Drop into an interactive terminal on a container
    +alias keti='kubectl exec -t -i'
    +
    +# Manage configuration quickly to switch contexts between local, dev ad staging.
    +alias kcuc='kubectl config use-context'
    +alias kcsc='kubectl config set-context'
    +alias kcdc='kubectl config delete-context'
    +alias kccc='kubectl config current-context'
    +
    +# List all contexts
    +alias kcgc='kubectl config get-contexts'
    +
    +# General aliases
    +alias kdel='kubectl delete'
    +alias kdelf='kubectl delete -f'
    +
    +# Pod management.
    +alias kgp='kubectl get pods'
    +alias kgpa='kubectl get pods --all-namespaces'
    +alias kgpw='kgp --watch'
    +alias kgpwide='kgp -o wide'
    +alias kep='kubectl edit pods'
    +alias kdp='kubectl describe pods'
    +alias kdelp='kubectl delete pods'
    +alias kgpall='kubectl get pods --all-namespaces -o wide'
    +
    +# get pod by label: kgpl "app=myapp" -n myns
    +alias kgpl='kgp -l'
    +
    +# get pod by namespace: kgpn kube-system"
    +alias kgpn='kgp -n'
    +
    +# Service management.
    +alias kgs='kubectl get svc'
    +alias kgsa='kubectl get svc --all-namespaces'
    +alias kgsw='kgs --watch'
    +alias kgswide='kgs -o wide'
    +alias kes='kubectl edit svc'
    +alias kds='kubectl describe svc'
    +alias kdels='kubectl delete svc'
    +
    +# Ingress management
    +alias kgi='kubectl get ingress'
    +alias kgia='kubectl get ingress --all-namespaces'
    +alias kei='kubectl edit ingress'
    +alias kdi='kubectl describe ingress'
    +alias kdeli='kubectl delete ingress'
    +
    +# Namespace management
    +alias kgns='kubectl get namespaces'
    +alias kens='kubectl edit namespace'
    +alias kdns='kubectl describe namespace'
    +alias kdelns='kubectl delete namespace'
    +alias kcn='kubectl config set-context --current --namespace'
    +
    +# ConfigMap management
    +alias kgcm='kubectl get configmaps'
    +alias kgcma='kubectl get configmaps --all-namespaces'
    +alias kecm='kubectl edit configmap'
    +alias kdcm='kubectl describe configmap'
    +alias kdelcm='kubectl delete configmap'
    +
    +# Secret management
    +alias kgsec='kubectl get secret'
    +alias kgseca='kubectl get secret --all-namespaces'
    +alias kdsec='kubectl describe secret'
    +alias kdelsec='kubectl delete secret'
    +
    +# Deployment management.
    +alias kgd='kubectl get deployment'
    +alias kgda='kubectl get deployment --all-namespaces'
    +alias kgdw='kgd --watch'
    +alias kgdwide='kgd -o wide'
    +alias ked='kubectl edit deployment'
    +alias kdd='kubectl describe deployment'
    +alias kdeld='kubectl delete deployment'
    +alias ksd='kubectl scale deployment'
    +alias krsd='kubectl rollout status deployment'
    +
    +function kres(){
    +  kubectl set env $@ REFRESHED_AT=$(date +%Y%m%d%H%M%S)
    +}
    +
    +# Rollout management.
    +alias kgrs='kubectl get replicaset'
    +alias kdrs='kubectl describe replicaset'
    +alias kers='kubectl edit replicaset'
    +alias krh='kubectl rollout history'
    +alias kru='kubectl rollout undo'
    +
    +# Statefulset management.
    +alias kgss='kubectl get statefulset'
    +alias kgssa='kubectl get statefulset --all-namespaces'
    +alias kgssw='kgss --watch'
    +alias kgsswide='kgss -o wide'
    +alias kess='kubectl edit statefulset'
    +alias kdss='kubectl describe statefulset'
    +alias kdelss='kubectl delete statefulset'
    +alias ksss='kubectl scale statefulset'
    +alias krsss='kubectl rollout status statefulset'
    +
    +# Port forwarding
    +alias kpf="kubectl port-forward"
    +
    +# Tools for accessing all information
    +alias kga='kubectl get all'
    +alias kgaa='kubectl get all --all-namespaces'
    +
    +# Logs
    +alias kl='kubectl logs'
    +alias kl1h='kubectl logs --since 1h'
    +alias kl1m='kubectl logs --since 1m'
    +alias kl1s='kubectl logs --since 1s'
    +alias klf='kubectl logs -f'
    +alias klf1h='kubectl logs --since 1h -f'
    +alias klf1m='kubectl logs --since 1m -f'
    +alias klf1s='kubectl logs --since 1s -f'
    +
    +# File copy
    +alias kcp='kubectl cp'
    +
    +# Node Management
    +alias kgno='kubectl get nodes'
    +alias keno='kubectl edit node'
    +alias kdno='kubectl describe node'
    +alias kdelno='kubectl delete node'
    +
    +# PVC management.
    +alias kgpvc='kubectl get pvc'
    +alias kgpvca='kubectl get pvc --all-namespaces'
    +alias kgpvcw='kgpvc --watch'
    +alias kepvc='kubectl edit pvc'
    +alias kdpvc='kubectl describe pvc'
    +alias kdelpvc='kubectl delete pvc'
    +
    +# Service account management.
    +alias kdsa="kubectl describe sa"
    +alias kdelsa="kubectl delete sa"
    +
    +# DaemonSet management.
    +alias kgds='kubectl get daemonset'
    +alias kgdsw='kgds --watch'
    +alias keds='kubectl edit daemonset'
    +alias kdds='kubectl describe daemonset'
    +alias kdelds='kubectl delete daemonset'
    +
    +# CronJob management.
    +alias kgcj='kubectl get cronjob'
    +alias kecj='kubectl edit cronjob'
    +alias kdcj='kubectl describe cronjob'
    +alias kdelcj='kubectl delete cronjob'
    +
    +# Job management.
    +alias kgj='kubectl get job'
    +alias kej='kubectl edit job'
    +alias kdj='kubectl describe job'
    +alias kdelj='kubectl delete job'
    +
    +# Only run if the user actually has kubectl installed
    +if (( ${+_comps[kubectl]} )); then
    +  function kj() { kubectl "$@" -o json | jq; }
    +  function kjx() { kubectl "$@" -o json | fx; }
    +  function ky() { kubectl "$@" -o yaml | yh; }
    +
    +  compdef kj=kubectl
    +  compdef kjx=kubectl
    +  compdef ky=kubectl
    +fi
    diff --git a/dot_oh-my-zsh/plugins/kubectx/README.md b/dot_oh-my-zsh/plugins/kubectx/README.md
    new file mode 100644
    index 0000000..98f1cf0
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/kubectx/README.md
    @@ -0,0 +1,26 @@
    +# kubectx - show active kubectl context
    +
    +This plugins adds ```kubectx_prompt_info()``` function. It shows name of the
    +active kubectl context (```kubectl config current-context```).
    +
    +You can use it to customize prompt and know if You are on prod cluster ;)
    +
    +_Example_. Add to **.zshrc**:
    +
    +```
    +RPS1='$(kubectx_prompt_info)'
    +```
    +
    +### custom ctx names
    +
    +One can rename default context name for better readability.
    +
    +_Example_. Add to **.zshrc**:
    +```
    +kubectx_mapping[minikube]="mini"
    +kubectx_mapping[context_name_from_kubeconfig]="$emoji[wolf_face]"
    +kubectx_mapping[production_cluster]="%{$fg[yellow]%}prod!%{$reset_color%}"
    +```
    +
    +![staging](stage.png)
    +![production](prod.png)
    diff --git a/dot_oh-my-zsh/plugins/kubectx/kubectx.plugin.zsh b/dot_oh-my-zsh/plugins/kubectx/kubectx.plugin.zsh
    new file mode 100644
    index 0000000..6096fee
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/kubectx/kubectx.plugin.zsh
    @@ -0,0 +1,13 @@
    +typeset -g -A kubectx_mapping
    +
    +function kubectx_prompt_info() {
    +  (( $+commands[kubectl] )) || return
    +
    +  local current_ctx=$(kubectl config current-context 2> /dev/null)
    +
    +  [[ -n "$current_ctx" ]] || return
    +
    +  # use value in associative array if it exists
    +  # otherwise fall back to the context name
    +  echo "${kubectx_mapping[$current_ctx]:-${current_ctx:gs/%/%%}}"
    +}
    diff --git a/dot_oh-my-zsh/plugins/kubectx/prod.png b/dot_oh-my-zsh/plugins/kubectx/prod.png
    new file mode 100644
    index 0000000000000000000000000000000000000000..0c194a66d357e3089e26470e54bcd9cd1614aca0
    GIT binary patch
    literal 3834
    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
    E10~p6Gynhq
    
    literal 0
    HcmV?d00001
    
    diff --git a/dot_oh-my-zsh/plugins/kubectx/stage.png b/dot_oh-my-zsh/plugins/kubectx/stage.png
    new file mode 100644
    index 0000000000000000000000000000000000000000..ac15b392997ee141c324548c6924fe92a82f72f9
    GIT binary patch
    literal 3829
    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
    +#
    +# This plugin does the following:
    +#  - Adds aliases and autocompletion for artisan
    +#  - Adds aliases and autocompletion for bob
    +
    +local curcontext="$curcontext" state line _opts _bundles ret=1
    +_arguments -C \
    +    '1: :->cmds' \
    +    '*:: :->args' && ret=0
    +
    +case $state in
    +    cmds)
    +
    +    _values "Artisan command" \
    +        'session\:install[Create a session table]' \
    +        'migrate[Manage Migrations]' \
    +        'test[Run a test]' \
    +        'route\:\:call[Call a route in the CLI]' \
    +        'key\:\:generate[Generate a key]'
    +        ret=0
    +        ;;
    +    args)
    +        case $line[1] in
    +            migrate)
    +                _values \
    +                    'install[Create the Laravel migration table' \
    +                    'make[Create a migration]' \
    +                    'rollback[Roll back to the last migration operation]' \
    +                    'reset[Roll back all migrations that have ever run]'
    +                ret=0
    +                ;;
    +        esac
    +        ;;
    +esac
    +
    +return ret
    diff --git a/dot_oh-my-zsh/plugins/laravel/laravel.plugin.zsh b/dot_oh-my-zsh/plugins/laravel/laravel.plugin.zsh
    new file mode 100644
    index 0000000..a8382d3
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/laravel/laravel.plugin.zsh
    @@ -0,0 +1,41 @@
    +#!zsh
    +alias artisan='php artisan'
    +alias bob='php artisan bob::build'
    +
    +# Development
    +alias pas='php artisan serve'
    +
    +# Database
    +alias pam='php artisan migrate'
    +alias pamf='php artisan migrate:fresh'
    +alias pamfs='php artisan migrate:fresh --seed'
    +alias pamr='php artisan migrate:rollback'
    +alias pads='php artisan db:seed'
    +
    +# Makers
    +alias pamm='php artisan make:model'
    +alias pamc='php artisan make:controller'
    +alias pams='php artisan make:seeder'
    +alias pamt='php artisan make:test'
    +alias pamfa='php artisan make:factory'
    +alias pamp='php artisan make:policy'
    +alias pame='php artisan make:event'
    +alias pamj='php artisan make:job'
    +alias paml='php artisan make:listener'
    +alias pamn='php artisan make:notification'
    +alias pampp='php artisan make:provider'
    +
    +
    +# Clears
    +alias pacac='php artisan cache:clear'
    +alias pacoc='php artisan config:clear'
    +alias pavic='php artisan view:clear'
    +alias paroc='php artisan route:clear'
    +
    +# queues
    +alias paqf='php artisan queue:failed'
    +alias paqft='php artisan queue:failed-table'
    +alias paql='php artisan queue:listen'
    +alias paqr='php artisan queue:retry'
    +alias paqt='php artisan queue:table'
    +alias paqw='php artisan queue:work'
    diff --git a/dot_oh-my-zsh/plugins/laravel4/README.md b/dot_oh-my-zsh/plugins/laravel4/README.md
    new file mode 100644
    index 0000000..97a6a78
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/laravel4/README.md
    @@ -0,0 +1,18 @@
    +# Laravel 4 plugin
    +
    +This plugin adds some aliases for common [Laravel 4](https://laravel.com/docs/4.2) commands.
    +
    +To use it, add `laravel4` to the plugins array in your zshrc file:
    +
    +```zsh
    +plugins=(... laravel4)
    +```
    +
    +## Aliases
    +
    +| Alias     | Command                     | Description                         |
    +|-----------|-----------------------------|-------------------------------------|
    +| la4       | `php artisan`               | Main Artisan command                |
    +| la4dump   | `php artisan dump-autoload` | Regenerate framework autoload files |
    +| la4cache  | `php artisan cache:clear`   | Flush the application cache         |
    +| la4routes | `php artisan routes`        | List all registered routes          |
    diff --git a/dot_oh-my-zsh/plugins/laravel4/laravel4.plugin.zsh b/dot_oh-my-zsh/plugins/laravel4/laravel4.plugin.zsh
    new file mode 100644
    index 0000000..0edc849
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/laravel4/laravel4.plugin.zsh
    @@ -0,0 +1,20 @@
    +# Laravel4 basic command completion
    +_laravel4_get_command_list () {
    +	php artisan --no-ansi | sed "1,/Available commands/d" | awk '/^ +[a-z]+/ { print $1 }'
    +}
    +
    +_laravel4 () {
    +  if [ -f artisan ]; then
    +    compadd `_laravel4_get_command_list`
    +  fi
    +}
    +
    +compdef _laravel4 artisan
    +compdef _laravel4 la4
    +
    +#Alias
    +alias la4='php artisan'
    +
    +alias la4dump='php artisan dump-autoload'
    +alias la4cache='php artisan cache:clear'
    +alias la4routes='php artisan routes'
    diff --git a/dot_oh-my-zsh/plugins/laravel5/README.md b/dot_oh-my-zsh/plugins/laravel5/README.md
    new file mode 100644
    index 0000000..933342a
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/laravel5/README.md
    @@ -0,0 +1,18 @@
    +# Laravel 5 plugin
    +
    +This plugin adds some aliases for common [Laravel 5](https://laravel.com/docs) commands.
    +
    +To use it, add `laravel5` to the plugins array in your zshrc file:
    +
    +```zsh
    +plugins=(... laravel5)
    +```
    +
    +## Aliases
    +
    +| Alias     | Command                      | Description                                        |
    +|-----------|------------------------------|----------------------------------------------------|
    +| la5       | `php artisan`                | Main Artisan command                               |
    +| la5cache  | `php artisan cache:clear`    | Flush the application cache                        |
    +| la5routes | `php artisan route:list`     | List all registered routes                         |
    +| la5vendor | `php artisan vendor:publish` | Publish any publishable assets from vendor package |
    diff --git a/dot_oh-my-zsh/plugins/laravel5/laravel5.plugin.zsh b/dot_oh-my-zsh/plugins/laravel5/laravel5.plugin.zsh
    new file mode 100644
    index 0000000..70dc4ed
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/laravel5/laravel5.plugin.zsh
    @@ -0,0 +1,19 @@
    +# Alias
    +alias la5='php artisan'
    +alias la5cache='php artisan cache:clear'
    +alias la5routes='php artisan route:list'
    +alias la5vendor='php artisan vendor:publish'
    +
    +# Laravel5 basic command completion
    +_laravel5_get_command_list () {
    +  php artisan --raw --no-ansi list | sed "s/[[:space:]].*//g"
    +}
    +
    +_laravel5 () {
    +  if [[ -f artisan ]]; then
    +    compadd $(_laravel5_get_command_list)
    +  fi
    +}
    +
    +compdef _laravel5 artisan
    +compdef _laravel5 la5
    diff --git a/dot_oh-my-zsh/plugins/last-working-dir/README.md b/dot_oh-my-zsh/plugins/last-working-dir/README.md
    new file mode 100644
    index 0000000..b5cc558
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/last-working-dir/README.md
    @@ -0,0 +1,33 @@
    +# last-working-dir plugin
    +
    +Keeps track of the last used working directory and automatically jumps into it
    +for new shells, unless the starting directory is not `$HOME`.
    +
    +Also adds a `lwd` function to jump to the last working directory.
    +
    +To use it, add `last-working-dir` to the plugins array in your zshrc file:
    +
    +```zsh
    +plugins=(... last-working-dir)
    +```
    +
    +## Features
    +
    +### Use separate last-working-dir files with different SSH keys
    +
    +If the same user account is used by multiple users connecting via different SSH keys, you can
    +configure SSH to map them to different `SSH_USER`s and the plugin will use separate lwd files
    +for each one.
    +
    +Make sure that your SSH server allows environment variables. You can enable this feature
    +within the `/etc/sshd/sshd_config` file:
    +
    +```
    +PermitUserEnvironment yes
    +```
    +
    +Then, add `environment="SSH_USER="` before the SSH keys in your `authorized_keys` file:
    +
    +```
    +environment="SSH_USER=a.test@example.com" ssh-ed25519 AAAAC3Nz...
    +```
    diff --git a/dot_oh-my-zsh/plugins/last-working-dir/last-working-dir.plugin.zsh b/dot_oh-my-zsh/plugins/last-working-dir/last-working-dir.plugin.zsh
    new file mode 100644
    index 0000000..684972c
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/last-working-dir/last-working-dir.plugin.zsh
    @@ -0,0 +1,28 @@
    +# Flag indicating if we've previously jumped to last directory
    +typeset -g ZSH_LAST_WORKING_DIRECTORY
    +
    +# Updates the last directory once directory is changed
    +autoload -U add-zsh-hook
    +add-zsh-hook chpwd chpwd_last_working_dir
    +chpwd_last_working_dir() {
    +  # Don't run in subshells
    +  [[ "$ZSH_SUBSHELL" -eq 0 ]] || return 0
    +  # Add ".$SSH_USER" suffix to cache file if $SSH_USER is set and non-empty
    +  local cache_file="$ZSH_CACHE_DIR/last-working-dir${SSH_USER:+.$SSH_USER}"
    +  builtin pwd >| "$cache_file"
    +}
    +
    +# Changes directory to the last working directory
    +lwd() {
    +  # Add ".$SSH_USER" suffix to cache file if $SSH_USER is set and non-empty
    +  local cache_file="$ZSH_CACHE_DIR/last-working-dir${SSH_USER:+.$SSH_USER}"
    +  [[ -r "$cache_file" ]] && cd "$(cat "$cache_file")"
    +}
    +
    +# Jump to last directory automatically unless:
    +# - this isn't the first time the plugin is loaded
    +# - it's not in $HOME directory
    +[[ -n "$ZSH_LAST_WORKING_DIRECTORY" ]] && return
    +[[ "$PWD" != "$HOME" ]] && return
    +
    +lwd 2>/dev/null && ZSH_LAST_WORKING_DIRECTORY=1 || true
    diff --git a/dot_oh-my-zsh/plugins/lein/README.md b/dot_oh-my-zsh/plugins/lein/README.md
    new file mode 100644
    index 0000000..0c41196
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/lein/README.md
    @@ -0,0 +1,9 @@
    +# Leiningen plugin
    +
    +This plugin adds completions for the [Leiningen](https://leiningen.org/) Clojure build tool.
    +
    +To use it, add `lein` to the plugins array in your zshrc file:
    +
    +```zsh
    +plugins=(... lein)
    +```
    diff --git a/dot_oh-my-zsh/plugins/lein/_lein b/dot_oh-my-zsh/plugins/lein/_lein
    new file mode 100644
    index 0000000..9d022e9
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/lein/_lein
    @@ -0,0 +1,69 @@
    +#compdef lein
    +
    +# Lein ZSH completion function
    +# Drop this somewhere in your $fpath (like /usr/share/zsh/site-functions)
    +# and rename it _lein
    +
    +_lein() {
    +  if (( CURRENT > 2 )); then
    +    # shift words so _arguments doesn't have to be concerned with second command
    +    (( CURRENT-- ))
    +    shift words
    +    # use _call_function here in case it doesn't exist
    +    _call_function 1 _lein_${words[1]}
    +  else
    +    _values "lein command" \
    +      "change[Rewrite project.clj by applying a function.]" \
    +      "check[Check syntax and warn on reflection.]" \
    +      "classpath[Print the classpath of the current project.]" \
    +      "clean[Remove all files from project's target-path.]" \
    +      "compile[Compile Clojure source into .class files.]" \
    +      "deploy[Build and deploy jar to remote repository.]" \
    +      "deps[Download all dependencies.]" \
    +      "do[Higher-order task to perform other tasks in succession.]" \
    +      "help[Display a list of tasks or help for a given task.]" \
    +      "install[Install the current project to the local repository.]" \
    +      "jar[Package up all the project's files into a jar file.]" \
    +      "javac[Compile Java source files.]" \
    +      "new[Generate project scaffolding based on a template.]" \
    +      "plugin[DEPRECATED. Please use the :user profile instead.]" \
    +      "pom[Write a pom.xml file to disk for Maven interoperability.]" \
    +      "release[Perform :release-tasks.]" \
    +      "repl[Start a repl session either with the current project or standalone.]" \
    +      "retest[Run only the test namespaces which failed last time around.]" \
    +      "run[Run a -main function with optional command-line arguments.]" \
    +      "search[Search remote maven repositories for matching jars.]" \
    +      "show-profiles[List all available profiles or display one if given an argument.]" \
    +      "test[Run the project's tests.]" \
    +      "trampoline[Run a task without nesting the project's JVM inside Leiningen's.]" \
    +      "uberjar[Package up the project files and dependencies into a jar file.]" \
    +      "update-in[Perform arbitrary transformations on your project map.]" \
    +      "upgrade[Upgrade Leiningen to specified version or latest stable.]" \
    +      "vcs[Interact with the version control system.]" \
    +      "version[Print version for Leiningen and the current JVM.]" \
    +      "with-profile[Apply the given task with the profile(s) specified.]"
    +  fi
    +}
    +
    +_lein_plugin() {
    +  _values "lein plugin commands" \
    +    "install[Download, package, and install plugin jarfile into ~/.lein/plugins]" \
    +    "uninstall[Delete the plugin jarfile: \[GROUP/\]ARTIFACT-ID VERSION]"
    +}
    +
    +
    +_lein_namespaces() {
    +  if [ -f "./project.clj" -a -d "$1" ]; then
    +    _values "lein valid namespaces" \
    +      $(find "$1" -type f -name "*.clj" -exec awk '/^\(ns */ {gsub("\\)", "", $2); print $2}' '{}' '+')
    +  fi
    +}
    +
    +
    +_lein_run() {
    +  _lein_namespaces "src/"
    +}
    +
    +_lein_test() {
    +  _lein_namespaces "test/"
    +}
    diff --git a/dot_oh-my-zsh/plugins/lighthouse/README.md b/dot_oh-my-zsh/plugins/lighthouse/README.md
    new file mode 100644
    index 0000000..55587b2
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/lighthouse/README.md
    @@ -0,0 +1,29 @@
    +# Lighthouse plugin
    +
    +This plugin adds commands to manage [Lighthouse](https://lighthouseapp.com/).
    +
    +To use it, add `lighthouse` to the plugins array in your zshrc file:
    +
    +```zsh
    +plugins=(... lighthouse)
    +```
    +
    +## Commands
    +
    +* `open_lighthouse_ticket ` (alias: `lho`):
    +
    +  Opens the URL to the issue passed as an argument. To use it, add a `.lighthouse-url`
    +  file in your directory with the URL to the individual project.
    +
    +  Example:
    +
    +  ```console
    +  $ cat .lighthouse-url
    +  https://rails.lighthouseapp.com/projects/8994
    +
    +  $ lho 23
    +  Opening ticket #23
    +  # The browser goes to https://rails.lighthouseapp.com/projects/8994/tickets/23
    +  ```
    +
    +See a demo: http://screencast.com/t/ZDgwNDUwNT
    diff --git a/dot_oh-my-zsh/plugins/lighthouse/lighthouse.plugin.zsh b/dot_oh-my-zsh/plugins/lighthouse/lighthouse.plugin.zsh
    new file mode 100644
    index 0000000..3fca2bf
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/lighthouse/lighthouse.plugin.zsh
    @@ -0,0 +1,12 @@
    +open_lighthouse_ticket () {
    +  if [ ! -f .lighthouse-url ]; then
    +    echo "There is no .lighthouse-url file in the current directory..."
    +    return 0
    +  fi
    +
    +  lighthouse_url=$(cat .lighthouse-url)
    +  echo "Opening ticket #$1"
    +  open_command "$lighthouse_url/tickets/$1"
    +}
    +
    +alias lho='open_lighthouse_ticket'
    diff --git a/dot_oh-my-zsh/plugins/lol/README.md b/dot_oh-my-zsh/plugins/lol/README.md
    new file mode 100644
    index 0000000..b45513b
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/lol/README.md
    @@ -0,0 +1,71 @@
    +# lol
    +
    +Plugin for adding catspeak aliases, because why not.
    +
    +To use it, add `lol` to the plugins array in your zshrc file:
    +
    +```zsh
    +plugins=(... lol)
    +```
    +
    +## Aliases
    +
    +| Alias        | Command                                                         |
    +| ------------ | --------------------------------------------------------------- |
    +| `:3`         | `echo`                                                          |
    +| `alwayz`     | `tail -f`                                                       |
    +| `bringz`     | `git pull`                                                      |
    +| `btw`        | `nice`                                                          |
    +| `byes`       | `exit`                                                          |
    +| `chicken`    | `git add`                                                       |
    +| `cya`        | `reboot`                                                        |
    +| `donotwant`  | `rm`                                                            |
    +| `dowant`     | `cp`                                                            |
    +| `gimmeh`     | `touch`                                                         |
    +| `gtfo`       | `mv`                                                            |
    +| `hackzor`    | `git init`                                                      |
    +| `hai`        | `cd`                                                            |
    +| `icanhas`    | `mkdir`                                                         |
    +| `ihasbucket` | `df -h`                                                         |
    +| `iminurbase` | `finger`                                                        |
    +| `inur`       | `locate`                                                        |
    +| `invisible`  | `cat`                                                           |
    +| `iz`         | `ls`                                                            |
    +| `kthxbai`    | `halt`                                                          |
    +| `letcat`     | `git checkout`                                                  |
    +| `moar`       | `more`                                                          |
    +| `nomnom`     | `killall`                                                       |
    +| `nomz`       | `ps aux`                                                        |
    +| `nowai`      | `chmod`                                                         |
    +| `oanward`    | `git commit -m`                                                 |
    +| `obtw`       | `nohup`                                                         |
    +| `onoz`       | `cat /var/log/errors.log`                                       |
    +| `ooanward`   | `git commit -am`                                                |
    +| `plz`        | `pwd`                                                           |
    +| `pwned`      | `ssh`                                                           |
    +| `rtfm`       | `man`                                                           |
    +| `rulz`       | `git push`                                                      |
    +| `tldr`       | `less`                                                          |
    +| `violenz`    | `git rebase`                                                    |
    +| `visible`    | `echo`                                                          |
    +| `wtf`        | `dmesg`                                                         |
    +| `yolo`       | `git commit -m "$(curl -s https://whatthecommit.com/index.txt)"` |
    +
    +## Usage Examples
    +
    +```sh
    +# mkdir new-directory
    +icanhas new-directory
    +
    +# killall firefox
    +nomnom firefox
    +
    +# chmod u=r,go= some.file
    +nowai u=r,go= some.file
    +
    +# ssh root@catserver.org
    +pwned root@catserver.org
    +
    +# git commit -m "$(curl -s https://whatthecommit.com/index.txt)"
    +yolo
    +```
    diff --git a/dot_oh-my-zsh/plugins/lol/lol.plugin.zsh b/dot_oh-my-zsh/plugins/lol/lol.plugin.zsh
    new file mode 100644
    index 0000000..585f96e
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/lol/lol.plugin.zsh
    @@ -0,0 +1,51 @@
    +# LOL!!1
    +# Source: https://aur.archlinux.org/packages/lolbash/lolbash/lolbash.sh
    +
    +alias wtf='dmesg'
    +alias onoz='cat /var/log/errors.log'
    +alias rtfm='man'
    +
    +alias :3='echo'
    +alias visible='echo'
    +alias invisible='cat'
    +alias moar='more'
    +alias tldr='less'
    +alias alwayz='tail -f'
    +
    +alias icanhas='mkdir'
    +alias gimmeh='touch'
    +alias donotwant='rm'
    +alias dowant='cp'
    +alias gtfo='mv'
    +alias nowai='chmod'
    +
    +alias hai='cd'
    +alias iz='ls'
    +alias plz='pwd'
    +alias ihasbucket='df -h'
    +
    +alias inur='locate'
    +alias iminurbase='finger'
    +
    +alias btw='nice'
    +alias obtw='nohup'
    +
    +alias nomz='ps aux'
    +alias nomnom='killall'
    +
    +alias byes='exit'
    +alias cya='reboot'
    +alias kthxbai='halt'
    +
    +alias pwned='ssh'
    +
    +alias hackzor='git init'
    +alias rulz='git push'
    +alias bringz='git pull'
    +alias chicken='git add'
    +alias oanward='git commit -m'
    +alias ooanward='git commit -am'
    +alias yolo='git commit -m "$(curl -s https://whatthecommit.com/index.txt)"'
    +alias letcat='git checkout'
    +alias violenz='git rebase'
    +
    diff --git a/dot_oh-my-zsh/plugins/lpass/README.md b/dot_oh-my-zsh/plugins/lpass/README.md
    new file mode 100644
    index 0000000..d3923ea
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/lpass/README.md
    @@ -0,0 +1,13 @@
    +# lpass (LastPass CLI)
    +
    +This plugin adds completion for LastPass CLI [`lpass`](https://github.com/lastpass/lastpass-cli).
    +
    +To use it, add `lpass` to the plugins array in your zshrc file:
    +
    +```zsh
    +plugins=(... lpass)
    +```
    +
    +Completion is taken from the `lpass` release [`1.3.3`](https://github.com/lastpass/lastpass-cli/releases/tag/v1.3.3).
    +
    +Updated on October 9th, 2020.
    diff --git a/dot_oh-my-zsh/plugins/lpass/_lpass b/dot_oh-my-zsh/plugins/lpass/_lpass
    new file mode 100644
    index 0000000..621a7bc
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/lpass/_lpass
    @@ -0,0 +1,169 @@
    +#compdef lpass
    +
    +_lpass() {
    +    local cmd has_color has_sync has_interactive
    +  	if (( CURRENT > 2)); then
    +        cmd=${words[2]}
    +        # Set the context for the subcommand.
    +        curcontext="${curcontext%:*:*}:lpass-$cmd"
    +        # Narrow the range of words we are looking at to exclude `lpass'
    +        (( CURRENT-- ))
    +        shift words
    +        # Run the completion for the subcommand
    +        case "${cmd}" in
    +            login)
    +                _arguments : \
    +                  '--trust[Cause subsequent logins to not require multifactor authentication.]' \
    +                  '--plaintext-key[Save plaintext decryption key to the hard disk]' \
    +                  '--force[Do not ask on saving plaintext key]'
    +                has_color=1
    +            ;;
    +
    +            logout)
    +                _arguments : '--force[Force confirmation]'
    +                has_color=1
    +            ;;
    +            show)
    +                _arguments : \
    +                  '(-c --clip)'{-c,--clip}'[Copy output to clipboard]' \
    +                  '(-x --expand-multi)'{-x,---expand-multi}'[Show the requested information from all of the matching sites]' \
    +                  '(--all --username --password --url --notes --field= --id --name --attach=)'{--all,--username,--password,--url,--notes,--field=,--id,--name,--attach=}'[Output the specific field]' \
    +                  '(--basic-regexp,--fixed-string)'{-G,--basic-regexp}'[Find a site by substring or regular expression]' \
    +                  '--format=[Format output with printf-style placeholders]'
    +                _lpass_complete_uniqenames
    +                has_color=1
    +                has_sync=1
    +            ;;
    +
    +            ls)
    +                _arguments : \
    +                  '(-l --long)'{-l,--long}'[Also list the last modification time and username]' \
    +                  '-u[List username]' \
    +                  '-m[List modification time]' \
    +                  '--format=[Format output with printf-style placeholders]'
    +      				  _lpass_complete_groups
    +                has_color=1
    +                has_sync=1
    +      			;;
    +            mv)
    +                _lpass_complete_uniqenames
    +                _lpass_complete_groups
    +                has_color=1
    +            ;;
    +            duplicate|rm)
    +                _lpass_complete_uniqenames
    +                has_color=1
    +                has_sync=1
    +            ;;
    +            add)
    +                _arguments : '(--username --password --url --notes --field=)'{--username,--password,--url,--notes,--field=}'[Add field]'
    +                _lpass_complete_uniqenames
    +                has_color=1
    +                has_sync=1
    +                has_interactive=1
    +            ;;
    +            edit)
    +                _arguments : '(--name --username --password --url --notes --field=)'{--name,--username,--password,--url,--notes,--field=}'[Update field]'
    +                _lpass_complete_uniqenames
    +                has_color=1
    +                has_sync=1
    +                has_interactive=1
    +            ;;
    +            generate)
    +                _arguments : \
    +                  '(-c --clip)'{-c,--clip}'[Copy output to clipboard]' \
    +                  '--username=[USERNAME]' \
    +                  '--url=[URL]' \
    +                  '--no-symbols[Do not use symbols]'
    +                has_sync=1
    +            ;;
    +            status)
    +               _arguments : '(-q --quiet)'{-q,--quiet}'[Supress output to stdout]'
    +                has_color=1
    +            ;;
    +            sync)
    +                _arguments : '(-b --background)'{-b,--background}'[Run sync in background]'
    +                has_color=1
    +            ;;
    +            export)
    +                _arguments : '--fields=[Field list]'
    +                has_color=1
    +                has_sync=1
    +            ;;
    +            import)
    +              if ((CURRENT < 3)); then
    +                _files
    +              fi
    +            ;;
    +        esac
    +
    +        if [ -n "$has_sync" ] || [ -n "$has_color" ] || [ -n "$has_interactive" ]; then
    +            local -a generic_options
    +            if [ "$has_sync" -eq 1 ]; then
    +                generic_options+=('--sync=[Synchronize local cache with server: auto | now | no]')
    +            fi
    +            if [ "$has_color" -eq 1 ]; then
    +                generic_options+=('--color=[Color: auto | never | always]')
    +            fi
    +            if [ "$has_interactive" -eq 1 ]; then
    +                generic_options+=("--non-interactive[Use standard input instead of $EDITOR]")
    +            fi
    +            _arguments $generic_options
    +        fi
    +    else
    +        local -a subcommands
    +        subcommands=(
    +          "login:Authenticate with the LastPass server and initialize a local cache"
    +          "logout:Remove the local cache and stored encryption keys"
    +          "passwd:Change your LastPass password"
    +          "show:Display a password or selected field"
    +          "ls:List names in groups in a tree structure"
    +          "mv:Move the specified entry to a new group"
    +          "add:Add a new entry"
    +          "edit:Edit the selected field"
    +          "generate:Create a randomly generated password"
    +          "duplicate:Create a duplicate entry of the one specified"
    +          "rm:Remove the specified entry"
    +          "status:Show current login status"
    +          "sync:Synchronize local cache with server"
    +          "export:Dump all account information including passwords as unencrypted csv to stdout"
    +          "import:Upload accounts from an unencrypted CSV file to the server"
    +          "share:Manipulate shared folders (only enterprise or premium user)"
    +        )
    +        _describe -t commands 'lpass' subcommands
    +        _arguments : \
    +          '(-h --help)'{-h,--help}'[show help]' \
    +          '(-v --version)'{-v,--version}'[show version]'
    +
    +    fi
    +}
    +
    +_lpass_complete_uniqenames(){
    +  local -a entries
    +  while read i;  do
    +    if [ -n "$i" ]; then
    +      entries+=("$i")
    +    fi
    +  done < <(lpass ls --sync auto --format "%an" --color=never)
    +  compadd -a entries
    +}
    +
    +
    +_lpass_complete_groups() {
    +  local -a entries
    +  while read i;  do
    +    if [ -n "$i" ]; then
    +      entries+=("$i")
    +    fi
    +  done < <(lpass ls --sync auto --format "%aN" --color=never | grep -E "\/$")
    +  compadd -a entries
    +}
    +
    +_lpass
    +# Local Variables:
    +# mode: Shell-Script
    +# sh-indentation: 2
    +# indent-tabs-mode: nil
    +# sh-basic-offset: 2
    +# End:
    +# vim: ft=zsh sw=2 ts=2 et
    diff --git a/dot_oh-my-zsh/plugins/lxd/README.md b/dot_oh-my-zsh/plugins/lxd/README.md
    new file mode 100644
    index 0000000..cea45e3
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/lxd/README.md
    @@ -0,0 +1,9 @@
    +# lxd
    +
    +This plugin provides completion for [lxd](https://linuxcontainers.org/lxd/), as well as aliases
    +for frequent lxc commands.
    +
    +To use it add `lxd` to the plugins array in your zshrc file.
    +
    +```zsh
    +plugins=(... lxd)
    diff --git a/dot_oh-my-zsh/plugins/lxd/lxd.plugin.zsh b/dot_oh-my-zsh/plugins/lxd/lxd.plugin.zsh
    new file mode 100644
    index 0000000..a6a0742
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/lxd/lxd.plugin.zsh
    @@ -0,0 +1,26 @@
    +_lxc_get_command_list () {
    +    $_comp_command1 | sed "1,/Available Commands/d" | awk '/^[ \t]*[a-z]+/ { print $1 }'
    +}
    +
    +_lxc_get_subcommand_list () {
    +    $_comp_command1 ${words[2]} | sed "1,/Available Commands/d" | awk '/^[ \t]*[a-z]+/ { print $1 }'
    +}
    +
    +_lxc () {
    +  local curcontext="$curcontext" state line
    +  typeset -A opt_args
    +  _arguments \
    +    '1: :->command'\
    +    '*: :->args'
    +
    +  case $state in
    +    command)
    +      compadd $(_lxc_get_command_list)
    +      ;;
    +    *)
    +        compadd $(_lxc_get_subcommand_list)
    +      ;;
    +  esac
    +}
    +
    +compdef _lxc lxc
    diff --git a/dot_oh-my-zsh/plugins/macos/README.md b/dot_oh-my-zsh/plugins/macos/README.md
    new file mode 100644
    index 0000000..1bc4244
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/macos/README.md
    @@ -0,0 +1,63 @@
    +# MacOS plugin
    +
    +This plugin provides a few utilities to make it more enjoyable on macOS (previously named OSX).
    +
    +To start using it, add the `macos` plugin to your plugins array in `~/.zshrc`:
    +
    +```zsh
    +plugins=(... macos)
    +```
    +
    +Original author: [Sorin Ionescu](https://github.com/sorin-ionescu)
    +
    +## Commands
    +
    +| Command       | Description                                              |
    +| :------------ | :------------------------------------------------------- |
    +| `tab`         | Open the current directory in a new tab                  |
    +| `split_tab`   | Split the current terminal tab horizontally              |
    +| `vsplit_tab`  | Split the current terminal tab vertically                |
    +| `ofd`         | Open the current directory in a Finder window            |
    +| `pfd`         | Return the path of the frontmost Finder window           |
    +| `pfs`         | Return the current Finder selection                      |
    +| `cdf`         | `cd` to the current Finder directory                     |
    +| `pushdf`      | `pushd` to the current Finder directory                  |
    +| `pxd`         | Return the current Xcode project directory               |
    +| `cdx`         | `cd` to the current Xcode project directory              |
    +| `quick-look`  | Quick-Look a specified file                              |
    +| `man-preview` | Open a specified man page in Preview app                 |
    +| `showfiles`   | Show hidden files in Finder                              |
    +| `hidefiles`   | Hide the hidden files in Finder                          |
    +| `itunes`      | _DEPRECATED_. Use `music` from macOS Catalina on         |
    +| `music`       | Control Apple Music. Use `music -h` for usage details    |
    +| `spotify`     | Control Spotify and search by artist, album, track…      |
    +| `rmdsstore`   | Remove .DS_Store files recursively in a directory        |
    +| `btrestart`   | Restart the Bluetooth daemon                             |
    +| `freespace`   | Erases purgeable disk space with 0s on the selected disk |
    +
    +## Acknowledgements
    +
    +This application makes use of the following third party scripts:
    +
    +[shpotify](https://github.com/hnarayanan/shpotify)
    +
    +Copyright (c) 2012–2019 [Harish Narayanan](https://harishnarayanan.org/).
    +
    +Permission is hereby granted, free of charge, to any person obtaining
    +a copy of this software and associated documentation files (the
    +"Software"), to deal in the Software without restriction, including
    +without limitation the rights to use, copy, modify, merge, publish,
    +distribute, sublicense, and/or sell copies of the Software, and to
    +permit persons to whom the Software is furnished to do so, subject to
    +the following conditions:
    +
    +The above copyright notice and this permission notice shall be
    +included in all copies or substantial portions of the Software.
    +
    +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
    +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
    +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
    +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
    +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
    +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
    +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    diff --git a/dot_oh-my-zsh/plugins/macos/_security b/dot_oh-my-zsh/plugins/macos/_security
    new file mode 100644
    index 0000000..e4ed585
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/macos/_security
    @@ -0,0 +1,90 @@
    +#compdef security
    +
    +local -a _1st_arguments
    +_1st_arguments=(
    +  'help:Show all commands, or show usage for a command'
    +  'list-keychains:Display or manipulate the keychain search list'
    +  'default-keychain:Display or set the default keychain'
    +  'login-keychain:Display or set the login keychain'
    +  'create-keychain:Create keychains and add them to the search list'
    +  'delete-keychain:Delete keychains and remove them from the search list'
    +  'lock-keychain:Lock the specified keychain'
    +  'lock-keychain:Unlock the specified keychain'
    +  'set-keychain-settings:Set settings for a keychain'
    +  'set-keychain-password:Set password for a keychain'
    +  'show-keychain-info:Show the settings for keychain'
    +  'dump-keychain:Dump the contents of one or more keychains'
    +  'create-keypair:Create an asymmetric key pair'
    +  'add-generic-password:Add a generic password item'
    +  'add-internet-password:Add an internet password item'
    +  'add-certificates:Add certificates to a keychain'
    +  'find-generic-password:Find a generic password item'
    +  'delete-generic-password:Delete a generic password item'
    +  'find-internet-password:Find an internet password item'
    +  'delete-internet-password:Delete an internet password item'
    +  'find-certificate:Find a certificate item'
    +  'find-identity:Find an identity certificate + private key'
    +  'delete-certificate:Delete a certificate from a keychain'
    +  'set-identity-preference:Set the preferred identity to use for a service'
    +  'get-identity-preference:Get the preferred identity to use for a service'
    +  'create-db:Create a db using the DL'
    +  'export:Export items from a keychain'
    +  'import:Import items into a keychain'
    +  'cms:Encode or decode CMS messages'
    +  'install-mds:MDS database'
    +  'add-trusted-cert:Add trusted certificates:'
    +  'remove-trusted-cert:Remove trusted certificates:'
    +  'dump-trust-settings:Display contents of trust settings'
    +  'user-trust-settings-enable:Display or manipulate user-level trust settings'
    +  'trust-settings-export:Export trust settings'
    +  'trust-settings-import:Import trust settings'
    +  'verify-cert:Verify certificates:'
    +  'authorize:Perform authorization operations'
    +  'authorizationdb:Make changes to the authorization policy database'
    +  'execute-with-privileges:Execute tool with privileges'
    +  'leaks:Run /usr/bin/leaks on this process'
    +  'error:Display a descriptive message for the given error codes:'
    +  'create-filevaultmaster-keychain:"Create a keychain containing a key pair for FileVault recovery use'
    +)
    +_arguments '*:: :->command'
    +
    +if (( CURRENT == 1 )); then
    +  _describe -t commands "security command" _1st_arguments
    +  return
    +fi
    +
    +case "$words[1]" in
    +  find-(generic|internet)-password)
    +    _values \
    +      'Usage: find-[internet/generic]-password [-a account] [-s server] [options...] [-g] [keychain...]' \
    +      '-a[Match "account" string]' \
    +      '-c[Match "creator" (four-character code)]' \
    +      '-C[Match "type" (four-character code)]' \
    +      '-D[Match "kind" string]' \
    +      '-G[Match "value" string (generic attribute)]' \
    +      '-j[Match "comment" string]' \
    +      '-l[Match "label" string]' \
    +      '-s[Match "service" string]' \
    +      '-g[Display the password for the item found]' \
    +      '-w[Display only the password on stdout]' ;;
    +  add-(generic|internet)-password)
    +    _values \
    +      'Usage: add-[internet/generic]-password [-a account] [-s server] [-w password] [options...] [-A|-T appPath] [keychain]]' \
    +      '-a[Specify account name (required)]' \
    +      '-c[Specify item creator (optional four-character code)]' \
    +      '-C[Specify item type (optional four-character code)]' \
    +      '-d[Specify security domain string (optional)]' \
    +      '-D[Specify kind (default is "Internet password")]' \
    +      '-j[Specify comment string (optional)]' \
    +      '-l[Specify label (if omitted, server name is used as default label)]' \
    +      '-p[Specify path string (optional)]' \
    +      '-P[Specify port number (optional)]' \
    +      '-r[Specify protocol (optional four-character SecProtocolType, e.g. "http", "ftp ")]' \
    +      '-s[Specify server name (required)]' \
    +      '-t[Specify authentication type (as a four-character SecAuthenticationType, default is "dflt")]' \
    +      '-w[Specify password to be added]' \
    +      '-A[Allow any application to access this item without warning (insecure, not recommended!)]' \
    +      '-T[Specify an application which may access this item (multiple -T options are allowed)]' \
    +      '-U[Update item if it already exists (if omitted, the item cannot already exist) ]' \
    +      'utils)]' ;;
    +esac
    diff --git a/dot_oh-my-zsh/plugins/macos/macos.plugin.zsh b/dot_oh-my-zsh/plugins/macos/macos.plugin.zsh
    new file mode 100644
    index 0000000..e4d759d
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/macos/macos.plugin.zsh
    @@ -0,0 +1,269 @@
    +# Handle $0 according to the standard:
    +# https://zdharma-continuum.github.io/Zsh-100-Commits-Club/Zsh-Plugin-Standard.html
    +0="${${ZERO:-${0:#$ZSH_ARGZERO}}:-${(%):-%N}}"
    +0="${${(M)0:#/*}:-$PWD/$0}"
    +
    +# Open the current directory in a Finder window
    +alias ofd='open_command $PWD'
    +
    +# Show/hide hidden files in the Finder
    +alias showfiles="defaults write com.apple.finder AppleShowAllFiles -bool true && killall Finder"
    +alias hidefiles="defaults write com.apple.finder AppleShowAllFiles -bool false && killall Finder"
    +
    +# Bluetooth restart
    +function btrestart() {
    +  sudo kextunload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport
    +  sudo kextload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport
    +}
    +
    +function _omz_macos_get_frontmost_app() {
    +  osascript 2>/dev/null < 0 )) && command="${command}; $*"
    +
    +  local the_app=$(_omz_macos_get_frontmost_app)
    +
    +  if [[ "$the_app" == 'Terminal' ]]; then
    +    # Discarding stdout to quash "tab N of window id XXX" output
    +    osascript >/dev/null </dev/null <&2
    +    return 1
    +  fi
    +}
    +
    +function vsplit_tab() {
    +  local command="cd \\\"$PWD\\\"; clear"
    +  (( $# > 0 )) && command="${command}; $*"
    +
    +  local the_app=$(_omz_macos_get_frontmost_app)
    +
    +  if [[ "$the_app" == 'iTerm' ]]; then
    +    osascript </dev/null <&2
    +    return 1
    +  fi
    +}
    +
    +function split_tab() {
    +  local command="cd \\\"$PWD\\\"; clear"
    +  (( $# > 0 )) && command="${command}; $*"
    +
    +  local the_app=$(_omz_macos_get_frontmost_app)
    +
    +  if [[ "$the_app" == 'iTerm' ]]; then
    +    osascript 2>/dev/null </dev/null <&2
    +    return 1
    +  fi
    +}
    +
    +function pfd() {
    +  osascript 2>/dev/null </dev/null </dev/null < 0 )) && qlmanage -p $* &>/dev/null &
    +}
    +
    +function man-preview() {
    +  local location
    +  # Don't let Preview.app steal focus if the man page doesn't exist
    +  location=$(man -w "$@") && mandoc -Tpdf $location | open -f -a Preview
    +}
    +compdef _man man-preview
    +
    +function vncviewer() {
    +  open vnc://$@
    +}
    +
    +# Remove .DS_Store files recursively in a directory, default .
    +function rmdsstore() {
    +  find "${@:-.}" -type f -name .DS_Store -delete
    +}
    +
    +# Erases purgeable disk space with 0s on the selected disk
    +function freespace(){
    +  if [[ -z "$1" ]]; then
    +    echo "Usage: $0 "
    +    echo "Example: $0 /dev/disk1s1"
    +    echo
    +    echo "Possible disks:"
    +    df -h | awk 'NR == 1 || /^\/dev\/disk/'
    +    return 1
    +  fi
    +
    +  echo "Cleaning purgeable files from disk: $1 ...."
    +  diskutil secureErase freespace 0 $1
    +}
    +
    +_freespace() {
    +  local -a disks
    +  disks=("${(@f)"$(df | awk '/^\/dev\/disk/{ printf $1 ":"; for (i=9; i<=NF; i++) printf $i FS; print "" }')"}")
    +  _describe disks disks
    +}
    +
    +compdef _freespace freespace
    +
    +# Music / iTunes control function
    +source "${0:h:A}/music"
    +
    +# Spotify control function
    +source "${0:h:A}/spotify"
    diff --git a/dot_oh-my-zsh/plugins/macos/music b/dot_oh-my-zsh/plugins/macos/music
    new file mode 100644
    index 0000000..5056679
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/macos/music
    @@ -0,0 +1,170 @@
    +#!/usr/bin/env zsh
    +
    +function music itunes() {
    +  local APP_NAME=Music sw_vers=$(sw_vers -productVersion 2>/dev/null)
    +
    +  autoload is-at-least
    +  if [[ -z "$sw_vers" ]] || is-at-least 10.15 $sw_vers; then
    +    if [[ $0 = itunes ]]; then
    +      echo >&2 The itunes function name is deprecated. Use \'music\' instead.
    +      return 1
    +    fi
    +  else
    +    APP_NAME=iTunes
    +  fi
    +
    +  local opt=$1 playlist=$2
    +  (( $# > 0 )) && shift
    +  case "$opt" in
    +    launch|play|pause|stop|rewind|resume|quit)
    +      ;;
    +    mute)
    +      opt="set mute to true"
    +      ;;
    +    unmute)
    +      opt="set mute to false"
    +      ;;
    +    next|previous)
    +      opt="$opt track"
    +      ;;
    +    vol)
    +      local new_volume volume=$(osascript -e "tell application \"$APP_NAME\" to get sound volume")
    +      if [[ $# -eq 0 ]]; then
    +        echo "Current volume is ${volume}."
    +        return 0
    +      fi
    +      case $1 in
    +        up) new_volume=$((volume + 10 < 100 ? volume + 10 : 100)) ;;
    +        down) new_volume=$((volume - 10 > 0 ? volume - 10 : 0)) ;;
    +        <0-100>) new_volume=$1 ;;
    +        *) echo "'$1' is not valid. Expected <0-100>, up or down."
    +           return 1 ;;
    +      esac
    +      opt="set sound volume to ${new_volume}"
    +      ;;
    +    playlist)
    +      # Inspired by: https://gist.github.com/nakajijapan/ac8b45371064ae98ea7f
    +      if [[ -n "$playlist" ]]; then
    +        osascript 2>/dev/null </dev/null 2>&1 </dev/null 2>&1 <"
    +      echo "option:"
    +      echo "\t-h|--help\tShow this message and exit"
    +      echo "\tlaunch|play|pause|stop|rewind|resume|quit"
    +      echo "\tmute|unmute\tMute or unmute $APP_NAME"
    +      echo "\tnext|previous\tPlay next or previous track"
    +      echo "\tshuf|shuffle [on|off|toggle]\tSet shuffled playback. Default: toggle. Note: toggle doesn't support the MiniPlayer."
    +      echo "\tvol [0-100|up|down]\tGet or set the volume. 0 to 100 sets the volume. 'up' / 'down' increases / decreases by 10 points. No argument displays current volume."
    +      echo "\tplaying|status\tShow what song is currently playing in Music."
    +      echo "\tplaylist [playlist name]\t Play specific playlist"
    +      return 0
    +      ;;
    +    *)
    +      print "Unknown option: $opt"
    +      return 1
    +      ;;
    +  esac
    +  osascript -e "tell application \"$APP_NAME\" to $opt"
    +}
    +
    +function _music() {
    +  local app_name
    +  case "$words[1]" in
    +    itunes) app_name="iTunes" ;;
    +    music|*) app_name="Music" ;;
    +  esac
    +
    +  local -a cmds subcmds
    +  cmds=(
    +    "launch:Launch the ${app_name} app"
    +    "play:Play ${app_name}"
    +    "pause:Pause ${app_name}"
    +    "stop:Stop ${app_name}"
    +    "rewind:Rewind ${app_name}"
    +    "resume:Resume ${app_name}"
    +    "quit:Quit ${app_name}"
    +    "mute:Mute the ${app_name} app"
    +    "unmute:Unmute the ${app_name} app"
    +    "next:Skip to the next song"
    +    "previous:Skip to the previous song"
    +    "vol:Change the volume"
    +    "playlist:Play a specific playlist"
    +    {playing,status}":Show what song is currently playing"
    +    {shuf,shuff,shuffle}":Set shuffle mode"
    +    {-h,--help}":Show usage"
    +  )
    +
    +  if (( CURRENT == 2 )); then
    +    _describe 'command' cmds
    +  elif (( CURRENT == 3 )); then
    +    case "$words[2]" in
    +      vol) subcmds=( 'up:Raise the volume' 'down:Lower the volume' )
    +        _describe 'command' subcmds ;;
    +      shuf|shuff|shuffle) subcmds=('on:Switch on shuffle mode' 'off:Switch off shuffle mode' 'toggle:Toggle shuffle mode (default)')
    +        _describe 'command' subcmds ;;
    +    esac
    +  elif (( CURRENT == 4 )); then
    +    case "$words[2]" in
    +      playlist) subcmds=('play:Play the playlist (default)' 'stop:Stop the playlist')
    +        _describe 'command' subcmds ;;
    +    esac
    +  fi
    +
    +  return 0
    +}
    +
    +compdef _music music itunes
    diff --git a/dot_oh-my-zsh/plugins/macos/spotify b/dot_oh-my-zsh/plugins/macos/spotify
    new file mode 100644
    index 0000000..491a606
    --- /dev/null
    +++ b/dot_oh-my-zsh/plugins/macos/spotify
    @@ -0,0 +1,478 @@
    +#!/usr/bin/env bash
    +
    +function spotify() {
    +# Copyright (c) 2012--2019 Harish Narayanan 
    +#
    +# Contains numerous helpful contributions from Jorge Colindres, Thomas
    +# Pritchard, iLan Epstein, Gabriele Bonetti, Sean Heller, Eric Martin
    +# and Peter Fonseca.
    +
    +# Permission is hereby granted, free of charge, to any person
    +# obtaining a copy of this software and associated documentation files
    +# (the "Software"), to deal in the Software without restriction,
    +# including without limitation the rights to use, copy, modify, merge,
    +# publish, distribute, sublicense, and/or sell copies of the Software,
    +# and to permit persons to whom the Software is furnished to do so,
    +# subject to the following conditions:
    +
    +# The above copyright notice and this permission notice shall be
    +# included in all copies or substantial portions of the Software.
    +
    +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
    +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
    +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
    +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
    +# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
    +# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
    +# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    +# SOFTWARE.
    +
    +USER_CONFIG_DEFAULTS="CLIENT_ID=\"\"\nCLIENT_SECRET=\"\"";
    +USER_CONFIG_FILE="${HOME}/.shpotify.cfg";
    +if ! [[ -f "${USER_CONFIG_FILE}" ]]; then
    +    touch "${USER_CONFIG_FILE}";
    +    echo -e "${USER_CONFIG_DEFAULTS}" > "${USER_CONFIG_FILE}";
    +fi
    +source "${USER_CONFIG_FILE}";
    +
    +showAPIHelp() {
    +    echo;
    +    echo "Connecting to Spotify's API:";
    +    echo;
    +    echo "  This command line application needs to connect to Spotify's API in order to";
    +    echo "  find music by name. It is very likely you want this feature!";
    +    echo;
    +    echo "  To get this to work, you need to sign up (or in) and create an 'Application' at:";
    +    echo "  https://developer.spotify.com/my-applications/#!/applications/create";
    +    echo;
    +    echo "  Once you've created an application, find the 'Client ID' and 'Client Secret'";
    +    echo "  values, and enter them into your shpotify config file at '${USER_CONFIG_FILE}'";
    +    echo;
    +    echo "  Be sure to quote your values and don't add any extra spaces!";
    +    echo "  When done, it should look like this (but with your own values):";
    +    echo '  CLIENT_ID="abc01de2fghijk345lmnop"';
    +    echo '  CLIENT_SECRET="qr6stu789vwxyz"';
    +}
    +
    +showHelp () {
    +    echo "Usage:";
    +    echo;
    +    echo "  `basename $0` ";
    +    echo;
    +    echo "Commands:";
    +    echo;
    +    echo "  play                         # Resumes playback where Spotify last left off.";
    +    echo "  play              # Finds a song by name and plays it.";
    +    echo "  play album       # Finds an album by name and plays it.";
    +    echo "  play artist     # Finds an artist by name and plays it.";
    +    echo "  play list     # Finds a playlist by name and plays it.";
    +    echo "  play uri                # Play songs from specific uri.";
    +    echo;
    +    echo "  next                         # Skips to the next song in a playlist.";
    +    echo "  prev                         # Returns to the previous song in a playlist.";
    +    echo "  replay                       # Replays the current track from the beginning.";
    +    echo "  pos 

    P4^eP1T85?#NEgUg4zuvn1A-Jtm zC3kvF`2?iDc{#*nboEnNQ+#bajL}A9$kpq!)(BLfSc7BnR+tPLh$m56ChP554YXj9U} zbKo3lvZ=-tmyt3KHr#*!o*nSLLCfw^x$@M5{*l!^`~4rs^GehX3V5y=30EFs(-np= zNBG?qIE<=6!xkp26s6r`CIS3@Na)EG3d?NccM^nHB*gN076*||EuK3CVLfjce{7t+ zEkZysfbG=0J$)h$yyk_5nCe8+(ONK5$u4C!{RJC7<{CLA{#9+6Xo1{+i%|NtZ`#mb z;~L{i(SA15$&DVLB9& z&jvxH0Ybmbh{yulBi%}AAw}9-zFM@do>&1ES7(%zq>=8bo;gYa6qjv{SRX88yObhf zNs)V@2q~yhily#@8M)U1uJq>xqELkj@o>=)Z7tS5{QWK12Y?y%Oag(TulpxHsrbu; zmF+vRR&LPHGsz~Db{mh@rRj$-5PoR!y;E)>G_q{j8q%br9eE9sh{;M$heS52p@mY? zzs0L&Tp}Y0_26PbQ4QJ(lWa+EPyizEEyGB5|HkGPjW9beGe-nt*ptjZ%1oA<{T31{ zgOA{Iv?X{4<*{csE6d)fzrc>Jsq>%lbIHl&jj9=Xm5pj7cVFRd#dn z@Z09>HXC(>#2M>SaP3T>H0U#ZQ6?9|*rP$F#x8tB0nIWHHOi) z^^qVd%gC`bY|BJPFG{}~ZvZ!gupw70gGxe=^DLX@3KOuvvJ5e~i3SlJ&(KidwgXe-|KYhigGf}kh8CdneaAR+YqY?Ok9iG9l)(|O~Si6-l zX#a~Wa4U2oV@_Z`f@858*;Eq}s`+S(WN_SDKyaxWoUDdCxqrY0$$s4SQh6=T;J>+{ zPlv(VnL;I6&{4c@?J8GF*;aC23_Y){uq?XDtk~Q5pugZpPEv>VkoxayO+)>WmcUG2 zf@QeA^M9DxPQ;_#3vu{6+8<^kT30-khrOo_wv8MLdk;>zBK3vt_TSpq9;_=Y9|a50 zZ!qIy;C&Js8~lsE4gD!0v!d6c10$@}peR4^Q+31w$h1vKxwH5Ew-6p^+&oo`V>5CS zIE%eWl%=lS)=oQV&fV(&wkTA+Pw=+8o-vtr%|x=A|A96vf<@Y#iaqQNsBn>pO(SVuoXw%QN7KHVS`-pMvDqJyu+$(F595S$Z(vx zFxldQjE}aw?l>ZBB~w^Az>K=&#EIqpz+rz}GNkn9-|usu+DyDi^ZG*+#dzzUKkbpN zM2C{(ojqgI2rG#$%d+-(4}J0ERsl9Sc3R((!;0B7^=v)P^?JFZ2h46%o2r|Bfncas zItYw+@hdh^jrWBCJzuwsck;9`A=GLnp34%dAUPkTy2BPZ^Gs z1|fmJ3*qHNWfaIR2ZJUU8dF^2n!p5oos?ug!)8pOh?3wNRiB*ORxyX}vi@|_T%fo2 zQVN#}U><$1conE)s|jCS;IIHi#gTny+=>__q>^AE{o6tJ1_2+@v;c;fP4j)7OPdZ<5499JSSnDm(fRsN(fLgXZ2S9|XCGuF>=`z@FoojTEA0 z%C5b#d~icuylj86MJ_&%Uzck>RTS?mJ$F!DsgmV8L(@n2*BW>s7`vYfUz57B9WVVU zlTl+>wXV3AIB;Cc_g_bQ?MTSA&5Mc1_B>=(aMCFsJoh*zmyGHN_-xgJv(DyvPEn>eA z^}(QSOFi7SoM<}=kAaTz&ZT@F){&br;5$CYJ&s^>AX{`85tB)Vg}%bK;+rUXl%sq7_ElgjI*B6Nw) z*o}M58OgOCL%qM$A7fyczA|FP!7$8z6a6-{HcbQd74brmt;tCb%j6z?e#I#$0c^EpF5K z?dY_hyq7P{bZLi7JhS))snOoX*;?kpFwrKfvhGeqwKv@Us0$WHTalp!Y3y6A%mFnJ zAu|C}1m0w{jVAdeq$?*F;9&!zO&)ZVQbiWA|9vn}3+#OEyLL)lZAGcB=_euyl;Aa9 zPmha6S+m>!FYFF6#!~HWi`C?x^)R*m_#3o$`b5jv_!lYFHh4t9yNJxWD4i5ax;y|} zuu44@{XbUso|}DxT>;KXb;s7ySyLB2OU!ZfOG4YSSsk!!#l8nmDZpH>YJ2?rko1pp zF9&O<@u$li6m~lRS(S9Db>ghOa4oSM1A(8Ef7T~giyqd|Gr3g5yjXo(Cw4C{{1B z(;xwUam`1X!66>A<*ed%^ccX4hBT|AMQqj!{NIMN2Ws@K!`87fP!4MrZayH$S?WPj zqmIw1ZcCrnM)iDrYAt~wtU<27$6>^3DHT_n56q6@?aVyRUZzX9-_Fwc{GiNdRw;wTQTU zX15*bY)?qI-FI59wFJ!1=K`sj>Wi+;du1mpBrEHChcmR7OQc_+;NT+b+fRh~rIBdA z;F=qMICjOmPJGY)YTv2J-^k1Mi$2}EoZeM68A0q=c`*qHhi?a|Cc$y&h!%N(KlAE7 zqiSrIy_p`M2pr{7K&lYUr~%TUJZROqqNf4E?eGk)YrtLWp(br)$|&f# z=RaqYU4bgt+||@ZkfNJQ5GUk_=L=i?Wt~W{tR?(QDYNV$`oLCD4#4>?W8*SHmq^cL zhN5~E{c)f;mY{w51+Bj_(EX3ig{UVc&m(Xp6&pjKe$A#a5Bw+NhOwPpKyB6#xQmTL z#ZDfk9Mb4VR)AZDRV!2sVExsCYbGt7?!gP!L9dU^>MgGoHTND-v~hRXrZ!`sq*Xf z^cS>Q=U|;g88>Dm6bklC4G}zLkU)X!0Cn8O?gq>4M`i4K_f;l)gx>dkix>`)Q@uYF zO-Z;Y@rwA*dK2$@>tTz;C#RU4p81*w$I@olrpsT5>Ui>;06R`$1ESz&xMFy_Cr=LmMgF%;hH?#j;=7Srdw`^u6cf%>s9aEhyEPU@s`>XI@T5XQ^-Q#Al+c5-)D+ zt3pAxXLEQHQn4rb7)cP-3gI6}#qcDcAbYFX1=lN*;!E^IVmyw?Rti@CLRZ;z& zYG@GTT~sz4oDWMFRDtZfIq(}^;?*w-5&Er{4D<;Hh5CEz0&DHBo{gsTfIp8*Z?M0_ zowOuOD!_yrZxvL((*$u}&OgtUvfSYEy+GL6s!ttu=W+hyPjOE{tfl0GIE5ZUa!opJ zVE?5G*nra~sjfJnU}Rk$=S%o3n!2~w#$z~`O@wm#aSHH#p8SeYlCWvBlzOd1;zQYw1qmQP(M3Dp3WvZ^0_HYDg8uJB|e|M#wUSo1W>O~ix?8tCgjHkJp;&VxBZZm z;ga-*trm+!FkSchI~AY2`fBk^n&=JMzg8CYmlyG7E-JPzs{dPEpx@v5dwqRDM5iUN2b!$kNX!rsunQnFfDbZVIDAy)QyOBxh=G^LFphVVW z1)|K0wayK|zcD<}y9FwzzF`onu5aF$>!>{>qIol*UwZu0kDf>lm}zfU;Noc#2Sf(@ z0S6|dj?IilZ{K{;@%U-X&(TAH0mHDg@59KoH#OW2A_^9y`Vs*hk7oBWKr75NY9YAX)i<=l@p`~*%J*?#;fbMVI10WEJrh$f|GmpYMG6^8Ap z5~|XnB4`KRxg+Av%j-jjPJT>U>VgB3#)G2FUa61=da|T-X0$4eOb}SJeC+@zr55t@ z{cnf|IX6GqQ7cXuBHP@S!++^EV75e{H486|;ge%6*jHalet!4<`qhc7MO@crUBSQV zG}7Ri%eD@WG`ki~*7VI8;I(v@gJQFeU4$X)Vwf=qJ@ios2mcn?#X@RZn@d+K*sS=n z{$qaf8)D@uiWN-~b3?Yyb@KssI5#+5iwi;Q$K0JOByWMF0#{-~bSy zM*t0;U;qh93;+q4*#HcG=l}(m5&#AmzW@n}ZU61cK{6inE(tvF#rkz)c^_)Pyhjq zl>iBn7yt+5r2qmo@&F1Ut^ffUasUh2lmHCz2mlZZ(f|mkr2q(g8UP5}9smkg&Hw^i z*#HS&#{dtTmH-X(OaKXehyVfk-~b3EPXGW1B>)NQcmN1IuK)>)8UPDGi~tDKD*y;; z$N&l~sQ?NDQUDCip8ybVh5!KbP5=pt!T<>|ZU75As{jyPzW@UoLjVgqQUC|-1OO1r zX8;BkRR9VgS^y0g5daJp_5ctLw*Ueu-2ewUasUEVvj7Mr`2YeoQ~(Lm;s6HATL1_$ zaR3M{^#BZ`ivS8c-T(`FJOB(|1=nE(St5daJ}+W-u3qW}+trT`0d zRR997SO5%jp#TB7+yDoFLI4Qx^Z*d$Z2$!_^8f)*wg3S9HvkXGZ~ze_?f?lh2>=RH zL;wNB_5cdMJ^%|kN&pBWD*zA2tN;jH(*Oz&0{{#uC;$OGk^l(vvj7S&qyPz;%K!l# zo&XHeRsaaaAOHw4TL1;tbpQc!M*sj4`v4FJRsaAn;Q#_q*#HV*9RLtk695PyMgRzW zy#NbJCjbI>Qve3|W&j6EJOBWz8~_R+u>cE^>HrD2F#rj$jQ|Ge(*O-w4*&oeQ*ivR&QO#lnzOaKA>&j13wqW}S=?*Ixm(f|TeF#rM>m;ee|EC32n z*#HHvGyn)MYybjb=l}`)W&jG)S(J^&2?+W-n;l>iC;_y7>N)Bq5tivR~nCIAa`RR967ZvYHL z^Z*H=r~nO+IRFWbRsaJnrT_^ts{jmla{vvU_W%ruc>oI9nE(sG5&#W0Z2$~8I{*de z$^Z$#fB*`EBLEPDQ~(J`EC3LzD*z8~SpWw~cmNPawEzMBLjVVf^Z)^*-v9t|mjD1R zIsgxHQ~(gxDF6@+^8f|fumAuaEy8sH0S^x+j>i__0u>cA_xBw8hjTM`DoQ~xl z#=p<=dfsP!dmof-$ad^mrx{K}497N>v6RBpSSw4XP&4)!vLz&2OgPqrY6fMOm`I2s zrz}m$oyu*Z@dlIX^ zgK)2ndoEMD(md84g_XAzf9iwS9eQ9?_!Mj042srDC6YJ{vt<+MMCVsg=h#5=+3^ha z#nJ?k;kcU)Vyv!;IkF|;h9h`C-U2@#FQq-fzkJPPF7}@l2vai&68B)=-ix32Dxq@< zugX-MA66557Q-GijPU%!m{rqo=X?sOn!7#q2^v3yVg5o;ptCFg3s(BGM7oc{Nvcnz zjsDNkBZL`iiL||dJ$5i;KB$>!jyb0q?s%>JerduOh;{5syk5zKO;_NzFRk}miCsIu z`MN*Oz;T$_m$7#&#+sCh)iDL{rLI^Tld*=@!ft&-OL`u+PB(&9t?}C)AyRoD{+Y^{ zRc;Y^tPuP141(OX#P>HNOp9Z^HE02J#gbOB57GTZAKA% zS_gBz{@>vba8g?kd_GpcSqP1wW0E0;r1?MsR_*hFk) z4~j%<6V#R7ciqFRw+-XH4+;Crn`&EFIopV(T_vo%3u|^1ug(nY0Z$SuJ_O?B2rF#D zYoh$}QwSFvBYIw5KB@usvpT=MeTYqe0Ha|^JS$0aUjlPNRU(b+;D5UWWAjjqglTx$ z{jh%1nsPhitlo&(n`H@}>>!Wwu$p&JOcFO6AJ`kZ_OdwPUO ztpu2si&yYI;mBVJt7U2?E8xGqlGuzy%qhx=eFb=%>tGEos*JvZb9@Z329M%Tm;0Rt7utj@#6KkG$sO}hy^*@WVs$%E;g_H6ov57b21)AF(Ul2T%D`t~+{-Hg~ zU5@okRlHX|$2r?qSD}{C0{^JQVK8$DbwknZFkIaud9&&l5C~Zxolt zkH}NB66^IJ@lHfA7LUf9uRQ+yF0nLrRb9fp?>)u34SJJHBBRu>oLDzH~Q@)b& z2>w2UNHw1@se-g{k@%g7((o(V*VpleNH>!gVLdwqw@PRHQp@Dc^7mTGt^EryuHPUU zERh#~Lo}s^w9#KoC*RM`!rh^ac<2!Pc}0HMTjzB^9`FQoXhU$a0IT&#%$%0Q##g{< z^9}lwPV6Dd+P(!us!J39xhG#LgrYunySZ5Z61V1e6}vXYOj9mAp)8&Mz4k1NA{!?X zztRk6pS0g}3f9LJalR~0*y2HP@DzdAr+7Z^!yVp4k7ISm2nv_y6;8Q@O6QK9DYU-6>ty#NNCYYe+KASI^0#wB|K=@PUh2 zsWRcHenb)fxYAYEC9p?(z3QLJ;3gQAN)iqi=iPpdpxabwMH%ee!)+-2rWFw1oPhP= z0D?!p)T}j?#>9;$x8hV=Kb(YfJT513FyW;X(oFjw85Muu=;*l5D z!Mfd=SMkt{8sg3m@Mb-Qv19}80r}*X@;Dhcm77VhO1!=O2*JCTaR1cjs?z98F+|zP z1dlhyYt;$o!(jx2GUY3;VakCBvauG4SN4h(&xm<{5z9>v@sGSN?aah%wG+4YU5wG{ zH)m%O&ufiSc$E0L8$=#@1T*D7I0v2~=%>ywJffZu;=Qnh*zAt*f_lgJT2f|Sa{=C33eUKeNNNy2=cUC+Dn%vnUzXUjj6 z#k?m>!f7K1#kEO}4)q`FtLQr};#_xK!^Y`!u{Eb(> zhxDOkzpwS2l3#vU3G4CkdY`t$>TSVzDqnr!SMhQ!j6>4Q1`YHiIGNXR}u@nr%|IG}I*C)Rn<*;AtNc>to?6>w~^eTn-q&n~Z2XV(OP(KvgT)jl_ z=vji>wFpx8sV7AUpDckfSRHe0S7<+p@VFAH@nm(}cL+xBSC1BhwQB@ZUnZ0!{lbg# zdHM1}b&Eb{30u`9K1n*CwU}UEF6Lb2rZ_QDbGNv#jB@P|!FQYSzi*~|7GGPYn0)}@ z|7R+5J7!`j&9|YmO_6>j(vAL_TO{G z8)b}m6~k9)=PV)G|FHC+^2Tstj#0UEV#CpvyVT)IE4DyW^!lfRnrcH%I5bFGcUH4n1b5x{>Y%#w`&S z4W{Yp~*DE`>;MPsn9<|rA5(u+r5lyo& z+qxJNb!Tu|J??kSZi&yapR23iEJmdBV#1E?)&JjCc5lahW4AK-G0cg&$M{67aP_v> z@;Kou9};Zv@eh^6UHKwL3H6MGiNuQC!FWH0yWqcsZ4QYsm8D@B0z=G_t~;Ab-{HQO zNPO>VtU)@%i|UZ6BlN6xc#U!hKb}E&tSDyL0-SrwtJ}I$C_E=0%!Tz?#N>Hyjk8!2 zOTx}^7}=N9rA^JWk6G{_X1V(`=gG>jkML^w1Z9*#kIJh{iU~K)()m=;S+v4G32uj1 z33AjA2TFJ9GQmzUL%Y^kC%O}!*5@JO^_Q+;U(xJk7~<<@1oeL=TBIY<2mVxVlg|6< zeyZM_-G_{;hehj`QtN%vrZEhTNxn9uNPo70MCyy_8mXw{;KFr5Hxy2QXJ!yHA?? zy8+&e@6^Q>>UWyT^KRkvS01N}qo&DE_WUkRtw?-{vOiJ%VaDs2k7p>KbBLYlq zY2v4h9R$;k6Thv#oG7nt{g-l5_inAG;Wlna)YErknyG`d#LFr}%h`a6qtW5&Zg?WSiXOsk)nc4`-ADjgZXHsb)Y`GB8x+R7*rk^bE_YL}aY#njuT3 zA+(s$GY1$FRiUDsnMR_T3f3}0WX&KFfly8r&CD{4A3(rYUNj6?m~r|EHkgzcyd;>l zn26F_UgNU*Mw-Ll8}yu#M8wo!Of*>2k;GMNM;q(mleEBP=aO z=bA4YzAbLz8jg2HecioJDop@X#TlElu`>&gMPtm9F-)*nU5Dvy3elF_{L^fRgNc3# z&MV`xxhU2)5}k6Mv2yU*Q~<}(l(lLZ_pa2h4_TuvGaH-v?2zuAsU6q5aJcgQA+9Fo zIsU}ERdR9F4^s7qhPx!$K9=;?N-574i=z^Aua|D>)XC94M~Cwm!pQQFp1&_jPSWG>nu3l#T*RD$mNj+D zK{wV(Q-SPZ8*3U4uH8eOr!NpHDts1%UjS_88>KFIoHH~qFf%bx&`V9pEXglQ&d*EB zOlR0?B>QyUYJpJ6<;gLDcjMAiqvti47yyBSUV3IpMrjg5>5gwnQ}gaj<7rvGE$M(j zwNl)#9z&>6KqZ;!dHF@D42A1l{31VhDx5twW3q4DuibhIf6gGOD#%aKbIDK6PAy8y z%t>X~9Mf=rN6;>$1doe+Zn;!Xt6k`d}(n>elEk;M>8Vg^@}6}I?EzI zEZw%@Sz*Kxh=QEVB!=b97Y$4F=VUEwQ=05|x2QOP#jh4Bo1c!=aHt#eGjww+b*qXq z^olbWX6#*YVu$Qi!;?|#kDKbqE!4g>Jp*D&K~8CUW?nHvaplrkIlI@r{Gbk%y}O)}n#E|Y1h5Vpka$c1ISMt- z0iqPjiXn<+6gt1=UAW!mLj9m>80Y4C62%hlu1tT{i#sTXbp#LbJtu;$40xO~G%zqT zF;Q^#cX9O(_j3&jW=P98Tk~pqqo&x--~+<{yf(W=YAPE-RJn!vxp?}y>s99FFyyqY zaphZ-$$o-^WA%kSj_YI_BVU*p0D*#MaB!$=e2A-WfRAH{D+BMr8<(=I&)$t%lIi$W z^b>=e@|p;!c>$q5KJh`WfuXL!A#e?PxhV`WQ%=2(n#sQY=XRB=vI_5|XSS_Rh8SL+ zUzDAelV4uUuxoGfx{F&^)=qO?w|4P$?+H`9e7*w!EjCU>za4m-bSI2@b0!Yq|fTM`V^8q514S6FsOMCwgRxSaCvd)`n8?hC7UE zqomEMpARp6|8fxaznF%~pY7V1WO?jjono{)k{rtONr9h(EZa}tT_yB5+lKG4bxg-i zx=D2WLytPs7FcB=k6!{XVHuxFUg7i)Nlu1`z6E%kEzH3UfFKM&(K}Og09=4oj4_2Y zLQ<${!33w5gQx#a|0+F?7+{xN=WE%6N{my788LgPNwh7Y2Szn%TSD!m9#&Zl84o8n zwKEAbrCuHi@Xy=_m`@{TtqORYGc+(TGci#}Dou|sN-fAQD$%RV&0(1FEn8M^QpU?k z=B{52Ta%iFBdB`E%)yXo6`ZDTqjK% zY-}yw+5Y$i0Q&q!E3}sZc$~FXe`^~#5dA-&VrZ}A2hQ3~n!*{5lD26ZNE(RKE7wr2 zT4`*FXr--2a_n*+{zhwiV^gQ);0y+@w4<5Pdv9jei3$gBjkOOE1e9qE#=(__%Ncwo zy`zw1Fm*KE4d8V^5s}Tp+&+5HXlqCWrmBOV;L1rWO0+b9+uc`by!&OR^lCQP0XT#> zt2t&R!kzN>j<*0rjKP#CA`O}~z(m-@R{t!P08gL75bX$FYm|5G?jal;T#7pcN&z8i zL(Lt$vop}5uF(O}PzD31hN5v}xP52h z`&7a?Q9}B%r(>*X(Cv=de<};^tf9-!!H#zx`q8+3{(!+J`;QX#vNQ))T7z z)jV#(jL{WR=YT#%z6sw7;r5Lo>4O5oFv0K;T+R23@pu_@zqv;yrdWYH;xr2Oyt4q; zD3M8R@ecScnShEdL&8T$X*eCgn?@8RHkmQpi??f9Ipy0S z5o^l&WTghLlEh6pK8Wi_`zA?#W~o$5f@&)yYHt;W)x&QYZk&p$wm4`v`vsgeLgQ0u z%re?7iek5YeN@18a=@CYgj4gESrU=?=QMbqy>YFr8MLR53$6v6YjjHpo=t0%5fzlE z#l$pmHjrEfgQJZkllIA~MG-#A^WzN4fLy%VM}iDMz$|mF3i>&d=Of^V*2s)~2ZZ91 zS#h;&SvX}fnU$GOp`{uA@(HAHAT0SsM952$#yG45S07Oma9MustHOtIcjcDG)hYfT zL|hG_3m3+vDR8aNjo8;FNq#bpJ1RlH*MW~^axuYCujoDRz-f?r?xe$wSF+E3ujrq! zsJ4-E?y}sZ=poHDva;~MqSPLK`#gOA_n&9i!}F^TUmM-$=DxAqo}3gfo@@o*b};-Z zWnXIcAd*$f3cl`T{ll^TZeuJShPFTPySrOX`UCYE|tD_FQ`*3x6)*k7! zPX!mtx(ZbA^-t#VA~=^>qCBHM4KMPHT1c0Lgvv9GCI_cQQ31j5n~M41Qj%3R=960m@q{MC`$#(W}H z$S};CK0nAr(O29!V*ZApjP<{W%J$^v2Zerkockj5Q6M!hF*nspAt<#VzoRt4^>8?BqOmzA+tD7y+k27v9vffMIotD!9PR6w^AXhI73gtGfkm1 zueh`*RYw6R3sjz2tdN#plshpqax(|xFV@Yw*>^Gm02x>+-@OxfoMnzdYQ!)MMfW+y zzd)0HHf5mD(rphAlthh99Lcrhf$8aMW;#Qm8wvFJdT&l7`xMP8+r&b1;&p_V%H5*k zwD^>w>^6456NC;P@lkWu;_U*|l12pgY~wI&(Lzqcel>RpYX^$>vSw z8Sfh9s_^?3#^uZfBrB-d=`E$4i{=u^n`|HvPJQ#X0r_vX!5Y^j9L zgdutYPxp~H%oK6$br-a=CEUd2QXT@rV!XC+9)2|Ny@%i2%nVj!xP;q-5$51-Ryoy| zGk`M)eJ2H4^eg2yRvrOh2wqn)5SRH3utpQ**5C06aCiteWESwTp?WnvJ%ew~t#WzR ztv2W%DKTgZ^q@ItyM)^>I(&^4TrrEByW=K=j?44&r4CK3irTg3u4(%}+)Up(U%j}0 zulen}c|M)MvFpf!RI80+QYXchB5k`EUXYU=DdB1Xp`ppO(Ol4+6(DpbE_KG2Yb~7u zcU0>|4>~|Yo{ACfNjH88qLrqB8_@p)kxvZJy9gT>jRK=r1d$;)&~4}4dP40C*3>wo z$d^FHvH)>yggb@#(mD<_qHgI9^bpV!?j@a_Sxb*ZvUioCHWO@c{YuUA?PC(YNg}iQ z5l?dgyL5eeDB$X-1vDG%#djY$cnqWjf^1O~dn>!lOe%UT-=$OswFu_c$QmC{iCG>sVzfY4IG}3G<*r`v#?PyIN@WE@+3}*pv-U)m8y7N%OUUE&>2D|p>J2YqaaM&=FRLMzoIj0yDfN}byC4@+b|5h`ztu)&`azO2#Q^X z4ai~Gu=ZBuph$E~R2Bu1j^n={rFQFvZa0B^e2?!@yB$2JOTm>O;3xFYkwgz&cmJX9 z;S0qGE9nF-!3}gm;Dllir{Hpq+W?<$Zq5-8@N_#t-+%179-iO?j|Tq!1C%r(kU&83 zg|gBWhrc0#QPQ14!5qmuMN?zbDz&*zQvHVnh5Rll|0VrFN{s5Y(B{RHr2^oFYhc$_mdFfcPQQOHfq%+ssP&0*+!bl{rt`a=2V7cx;`iQ-xc~*v z9>uUjc$|$>!EW0y488j+h^|1kV6rjn=AyuWo(k-=?Y0epW7D=)Tht_KjnnksN7;$z zv_LRlY?6-9Il_9pwZlhZTd*=q3-Aro}bks-C|LR z>>3V-Q_2Oi(UstYr<8fvDQ%Q>)Hw7$2X+CI#G>o9_nOS8M&>gbma-E@cmqsOBbTjI zDulO1$q|}~`tpGSze|!|v>jVnHgi!@cr?=&?DQ@rKgk2obw2Ax zOI|a%0d8+$MQuOqeVZNMs}b(m6^zYrTHwTYiU3Fqd=J}TIH<0OBHjz8B!7&49$C;X z&R|mg6&Zq!V&I>WnK*bkHF&v&Pk%nXV7WJ*i>?DvJoiSAvIT=K8js#SYZG>>86d?R ze5eQt%c>cLRHFChJgHxCpQe5jYp3#f<(9lHq!|-+K06}PSN(UuBsM{zVQsI0GLRu!;;Oe*uwWH(a}*0(hLwS6fr!NECkOSDax}1yq@^ z<0C6p>4;8tMzj!pSY)Y48i*6pvD49Il>fe`FTu_QbhmsM%95nd>2v+gg~(fy4qP&N zPo^9=^QJ$7XkMdHrv?xtNlFs&1i)7@KEjB`BqIJEFruEuNR87loG|i$%zVNgd=yst&7t7Vp zWYN~&4arWTN2Lqk%pHEcKAsFOzV-Sl1PPfk!V~9maPepF%TSS&g8&I9agyD&wXFjT zOJ*tf9``gor$~G*24_co_phU&dx6TdNd`Sr*}pzN?hQIn|6Jct(fba(7|g%H8Q~i! z<TsiZJ6_i0jJps?+jW@g)DgZiozGkh_)%A+S$D1+;7B zp#z6m@FxNo&V53oS`Isx9!p3yXhk7&I6MSP7e}vu0|y7ai_;3Ix+h($dH(j+Z?c3O3_e93e{q3#ZQ=Mt(qBlSYf7UA?I^l${vR&a?a$Dt)tzL9E-Pzj7l zhT=xWy3yDU4^GqR0%BQui4z71t~sI%)U)XYq9n!9$z%DPQ9le*j3w*M{xUZ?aytyT>_3Kjja7Kbm8+> zd-;>NqX08-#WMu*pka???JteRkGhIuqq+%(AVpql=RFfgQhYW@J}0GRV6X* z16(r*WYx`_)_0bLRwE4+T9n1xl_*A`!+^?e6}igGO*R)NWfZRPAIYo_5?E3{z=n;h zFxDA%0MS@cS;irIx!L4qFdBi?e42tC!a)wtEfIDYkN*$?qMTK#Fx4=_5hCVj?q;b( zjfe$Xz0h&o?u24^%LgO2Z@M6-q4vPMx7&e2!#NGG&zQ|dZ*vlOg`xIQ?dQLZBxn{u zmK#w;n&`8Y1eN27^llf!qZg)RvuYQaWSn;hQS==$$_17XK2f^yS5u5*hU7+!+=Fj~ zz|COYw#1v0wsN3K2Juj$N{`fiBTgkY?O4@Z=HwsV$w%?+L0#Q$4DUZ?1yDhjx%nkx zY@q0WgxJ8?FB9SSE?FWlxM8WSs5ty*V1f^?=6`S)4AS|Gp)AITZ`aEIXm}-S8IoLD zLlRs%B3}C!eHOw(wgz~dC5u50fFKM6?|nrRZXVzh{(uJr!rODO91m3Z5oopnf; zbuG9_W`n;30EeAR{V67COkJA{W2J)wWZeTy-ku76j!XPj9xqPvMI=2p*$w<{q={eM z@ggO&2zZ=x3-b3>NY5-O$WPHP&o9a@E=WvH)lDnS$>HJ(3iVScE=|c-NGvGPO;0UR zC@n}yEJ;;RQ&WiHQUC%J$;`aslEj=G1>H)8s^SbZMMb#^x6j>?gvk-WkZH~@!iJ;^=LL%|+|LZN^65LXQvHzWaTDSh@P zVsGwY*_jdKAiXy5ogdAaDCKDxm(wzrij(mhuRo^ey zL#fGHH8s#VAcqsMxrAqZdmPWZzYU@tuolEjeh5x!6x7@09eNSbx=}?8A}OzV+U)Pa zSMb%{AY&qiJxUHz&+NjISi@TrncAa zQZO_$(18f%7pI07B^Ch1loE5w6Dy0AxN5loWjPLDzS04BoQ+pakJLC2z57>K;()a3 z=@t?vPRp)fwI|TRo)8DesdT*K*ui!>gkQg}%IQuT28qL{li040SFc`qp6NehD9JTb zi3!ga3MLdhw4`Ili|u5KQqP|0cT>{uJ+)_2>hGXSPuhh-iE`nsUCelK;jB&2aioCX zR?p;Z9QZ4Ri%T&K6v_dgwaLnEuCweO3@qZ0@IHzwT_V0dvVqa0;;b7@aWTNPjtFQ> z@jtSKPb+?hvtbIZEZXSaB$G2ceCQI9rmrIcq+kibCQTPgOAK_-iOwdqo^s|y%o(4W z*e)u&Z+L87HjVSJdC*k)fEf5O(^qZTh2^v}LdyqzrqEK-u7y(x0!hIwFv{Y=(5%kIlnG{oESnkw4rYE)W*iCr#RkHVM7%qTA>@YuC*$v9 ziR`n8wd1X*9}1QLKvwF_S2F;3!J(nvTpSFQ-V}YS6&6twn+R68*m{iF6?dV1g_R4| zPc6Mt>Novw=8YQ@I1pLSe9D_}o`5+v{z1G9utt=$n*^xVbzP;^#nC)Q5F}q=T@lPU z`WFL$BOZBLOQXbwm~%C#3cZ2r*4SqMCU zdi{dzX9i10Y}^xWprJu&?m?VF4aYQ|Hbk3cV>9QoN9!ZpPg%OJRuCj?ZzyqL-GGNw z3p$00D_zTNO5u7Vv6z(BroEUIqK_$hk322fLYWpS$uG3dek3G za#k{ExqYA+uJmy#TzJnt$T1F18VerZt~02Oq43)X1`xX9)1Q;!Eh_YDbyM=lhJ#u4uLag z>8Ey!&Q!h^u@<0gB95>tj~KL}9MQ4cZq~$3Z3zuV6rr1v)V-z7F|Qc#+O7_7EY&~u zM6K)_mNHACdAJho+RHRkB|}xkN|BXdvqMilJr`<3XdSS&ROigmio{(>3z>m)kNvQG z%l+>o1_Tw8&KT^d(ow(m9``HM)X2n~9jMi?F7X&$vvlEtq319F)(^4^cwst-9_md) z&NxBj;>yn*@6_KM1wY$(=RuKfOuH}wbvE_WbdS#L8j&#O) zLA%;s;Yk8CH-VJ{NA>nrNtp6d2);_7kQSGdTdicES?;5i0ZdJVkqJW?0r}-8LOAzP zw^2l>!z_)n46ABbBKy9*kE($B!9(mG)~S8$ z%ixvToW1%blS;jnfthE;Nc~dao%y2v2M`R= z#Jj%)c%0Q*-E!N;6~4z)tfT2zoRF05x=o{II(1~(*3`CCSxVw)GU5_g5*q?o6bpz# z?|aurXkV^R((jzJ07y#lD3i%dn~PWi_UHV3=Q}^po;o^xe{p{D_2tFM``7CA<;lzA zwOZ!<$g4AJyl1ps4F{fYU>JGyEYjX zo3S!Q?3zk1O)^%xNR%$i%EVUJCYeSjHJ_V#r;PWesIAV_!d0qHjY`ao$y}M^v2qK3 z)Lj=vuWaS(u_`m8y-~GZ8HkrVUR*m>nHy`?3OB2(*d>Mzh+UC1as9*o(do(f`) z(E8=&(Zw`RMmX^zH8^S6*u-SEFc7Q4nT67IZSu0lziMvqbER~WR1nt|OBO0^mROj( zM&v9_k>FKiy>I9g=v+2g29f@T-)lcrXCicEbV3K@D$blYSxaiU%H)nTn;QkItSp(# zlS)_K=qgTs*xzfsnPA^U9!#=kWkyqVk;0Uw@J+?HwxnM(oL|;9cOw`5ck!s2WK5~WEH|DUe8uCY3r;EzvhtJex@~0@8sH<~Rx~e8i zoUpo(uIe65!~&y8DXjbm0aBa=H^GbZ%;Z=LsV4Mrq9@_u-POKXE@3w)vAtnGUrwl`{bFci^?^)%%{$g?mz6ObzS!q7G* zCRch6pMc;q2mA3Yv|-`0%&npCVH7=`syCt<2%>UeV$)GN?eVYb5$F4$-Aif2d zEQ}O{nVaah8_RTDH^>+LD(ic+#jb4WE+7aV96iG31$h@+yP=P30sN5KIR|^2XqYgT~)YQ*6Kh z6nJ?RT_I?|S6QpPsgbE4&O@7J+T_B-X@LOFCTA65$;QYRQ&IEX<%bKvXRTY`x$f-T zi>lWe)X@e0ywXLSUX$*I5X6Sa@XC{5pf;m(h5wrYYvDY0hg%moxUb{5HlYfJ7b1j^ z;3~UJQDDBHBJoa4RAvD(Dq<56^ab@b@x!`v6O!_cAs%DN&dwpbk1Jbpp*nX-JC3e8 z9)>FB0Y0K~ZK!W1H&#zV;tlBX2czivvsd;OmDt{Q`0ul8;d+*@X!1F@oSxr91fhob z^=aVhlVw;a)^Sj%XAg2yp@=`I3{~K;C`{QMD8B4O7f+M5yC+iQix5&CQa4b88R1{o z)O^?HPbD90)XK{8IZ=Pk8t6xWt)}W!{OLGLQrwSeF`=eTZL!*xi0+pR3Z$XBj&LnQ zxrYxKb~uliNQjSkj6E~QoBllZ16*E$1~-Tgdv{n*Do?oe?EHU%@iw706s0}Zt`Kq1 z!)j>cIK=E+;ixD1xIaY#9g~tOp zx9GgbDKE*GxNy&!h=LmJ6rj%fG*$0f^}SE2*)^3^A#$dd%`DC5PoF&Lj(J4oF`_@! z!~isr7>Z$@Gptdjp^V{X9t7nP+=tZJexRj*AGGPvA*!;8k$kZdwPzK$_-j3jS zT+1P3;a)#dHDf3&jLAg)x>u`q4%x7vnZVa3);LOLAl8o+_23jj0Nt2KirCUt!G7eW z?hdKH=~M<+A>r<&8ixs6@!_0BO&ClPSXASUc|!1G;|Zh-gMfX;oBGqY_VUKs=3(MN zwhhrxYrpbSD%{VQZkb(|2KcqHoTVr{t_i?HcARr`n>lEN<9ZsJlHlLQ)& z6A)lJTTvI%)Eu7+=nV-SzmV}7;~Fy((cAQ8U{nT z;S!+^1QmqoEgp)QT*oO-s(_45$01)5Uk#$IhwDonpOu2reODCKy*Aek|9CYvS$N!>-8Gu99Bpj z@29R>9+=|b=IQjw^a&u>@e;E{puwhgIew2rs?6MySUc~~@h!1D89h3r z3WTa9euI=Xqqnm|K_`CfkQ(l=o{2j=+??#tEOAB=jm?yOy5OFMH})1UXl}KjhA2Eu zTXgjx+NfKbfvDsvhGK^UUNNQ<3_?fq414+@}>lUFysLfwK`z?Eujc) zyRz{76Sv4=^oz1N&B6?c)~y21EwG6GA(K+maL+0#f#@jFq-!g<9rlf_O;{G&yNixa zly6Z$Kz+*WW>8 zB?kgEVCs^-q`1a2Bz*YFkT~PRpP$W5H-d)mSK(^3*a)((SAA^(;>FbdIboV!i^ zGWoT>%yiquD|G>zLg5l>JRf&>mUeI*PHg!`^x@c%7@bK$g$hk|r2^Hld6U(a=CJam zl5Qf#X3GT`|A>3GB?P=l6qa#iOvxW0N&g1PFXP43rf<`Jr!nj<%kYePJt};}STW^I|$wy)2RU;KqWNFTj<@&5I( zWF~&Q<>NIq2)f_zE%F470>il|UvO4uYHpoSWw^DeICSuWW}o6BO|#x2(N&@@FJ4Xl z00rHTwl{r$4jEyN&XqbQAEv~!??1e`zIb!|?)duU$@#^{>(_5Tp1ql|S;8dn`LieV z+mV~d(7+^&^K4y5Q{yP)=rSN?Ew zf6xl_CKa|O;$*UTYl~Hw>&lcSd_;E@kDp=guJ)Pj@vGU6)~Q{l84Zl3oxK~Phn%eh zk%6VD_6HW4+rZV~yN2{}O{LX~%X4lxV4D5CFQ5PZi&1|FOC7XjQwyl5kihjk%x9$3 zgArF8$~)FFIGUy2u$72O0zWY~< z_OvUdu;SL<44B1gUUI@xj(Hg3D#TIj6wzPbnZUj(MT$J0`CgMmGKbJqx^tSbmF=&C zIW-<0t0!1IKY#zWcwQ_(*|NNX8lBT^3q@B$WjjBZa`bj^@Ys0YyC3uU$@pe0XO%tA zZF9c zQtP5+rUSZryMhavvZIGVJ9JPHMgXR(+OZ}LZ`Z9kn>z!IPcb@%prbFCS={*JN?-4nwTpD}+>clv9 z9ET1m^)ypkjBH~3tt(FzYCqbxwHLC6JF5*jaz7Z$@v128A3b@weI=dsDD@_R7SMle z^?v1=0>7A2-vdKljJNn?XCQj#aq*^Tp|``t_rJ{<@^1xX$tK@(B|v77s^nF!#Tp)X zhUbR>_A=ilyBx4X@i;#~vH>0+;HQk&0f=9z5?Ka`VlqlYDX=EvRk&Nr_yv|Y7bo~D z$Vlc0nkPVncPJ?`0*i!NZSlyLGL-otU>ljogtG86SxA!MSb*}+DnvPzX3Uw@_3sW4@9 zuraHu!t4(Q`7B+0GPBS;3S}xk<(ZtDFv`z(Iy78^0nOS~S6H>$dCL{%nraUnW-~pV;5?c_xN9F~69C>_UuX zbaihiz6FPclF>|DsfDS^{EAkx6N!B?i$zi9X;JaA_pwMt$B^;0%qlrmevKJ8QYtV7 ze;4^&m6JLVMN)&oB$ya`lXazO6w^~>LUCS|GMlQ>*v<3S>jJxFR$v#Aoczy!*|(*+ zqR|~O+^A-DoNs81{NEiA~9(Ilx$9Q?$%fRlIlq zj;tyuD?}`K4Wc=d*Eno4mkR^IBz7=XMwQnp4h2NVinJIjPrWuy0GcIX>D}xs=3CwN^4p6VIQg`F6{UY^Y{B4EU68RU%t>L%FDQ=5Zi%pI&BC*$1m?) z9-Xw4oUL|NX?~K$;k0uzI64`OWjs}(xt{j#^sbCZAm;fGwJH|}p3)y49Uh(ZX$vpy zxo;jD?gpIEDv3>~bI*l=<&!7>JdtCS99Sa%KfLT7UQv;qFjFVbDPx5JgFy-N8VPJsX+x%tu@FrmURT;vcwM3#g3!C8q|28x# zs!Mp|A@64hKa{WNLHouS9=6iT@VQ|qYVf?S(qSaiLQ+_9%l~2brI#5!PF1Yy^uXki zmI;s8P;g)m@JHAkZ2o|kg9_no{I5M+ORfE_-|Kx9t4iv`eBJxX)NqOA;_C}JPT2Jw z<*W(jtAT&i>jmQSm8vQ-?Q^np1ykCb+L6H6k$z7I%zIa=QvFbqeJg`mMfYzv=NoBs zBu=dR=Lm#}V;T%}XOL#|{8O3L2n%>tsK`xEc`Rth`n1ar?0%X^g?TlN1olMY*A1b*^2looLtU%)*=t4h?u{V?^`rxk_l?cwY*hgDJ+3 z1v232j>gNwzu@Ua{=jEEq(Bv^SX|_Vj)=5$BSFO@?yY9t3Zt9ZYk7TCn<`Jm3teI> zc?lETjCd%B{ZM=UjN?m;H5@HsLNn+WXy&_((4i-Yz&JTT%atNyFLEe|T~0T%0-6P0 z*jYh4YgIE=PT1{=Fs`nv}^KsP`GjTj^oI?PULTd>R97M4u}^AUd|nx z`B22tT7$Ql+K#vt+$q{=?f}g!=5@=LWd-j%=;}G%d5tg<=i-FWUR7#9GD1%6+t2a( zET0E)9_XN*12wu~FfVfP_Ur<3Vk@hd=W4@{&2#`IDc!F!zBT z+Nc8p{Nz-X(G0BAhKwR@|Kg`_H1Ib+N$hXdDBxZz$Vg^DK!@ejYB~)JHZ**3F+!5cLzX-)y z1|XWnKnVNd+w(WO1n=MqC#oz7?-DwW7SlN(3ZX3!0wgmz(2=Qp5b05tOgBWD4#*C?BZK zIlI9>kf7zjjz2%PE+Id9Vsxq#i52oZ0j~W?oT_RDP=)_~LV&kP(C_!(Pgrq3aQ}(U z@4wf7yyEsY@nd_N&Nw1{jl{+mTQnwui8+5GysnjU9$I}vW>ZEM@2pk5R2o9q#6~l4 z!lC43W8_vO&abXWVUe%tkgTXCYQXoe-bEAp5Ka`79l`BSeqe4AG;>66)le8aWQ z5dcQyiOOi?vvl|xN)}>r4enV;j--hrqfi_oAuL5V)N%sLnxE#^%4vJ2Fu{-KNXv;V z$Z^^M3iylW!f`bl35RU3o8kso?DbBlm?6b9hY9FdNuuVSGaYYs$a-{9S!@Cj@I9Uz zn;z%cePq3m>s6M|TYHW39UPDutrrHrno?qD+WnNF=Kq{o_Lcy^v zVDorD6AavNnaX4b#8uWf6aL8@{X z>zE`Qt*(d-Tr_crX=3X%#Pu7MmX??H5i@{1B=PXF@X-1WVWL9D>QCq)xM(md1-b$D z!DK0-+&%QX^Tepmq2Picap)5q3v`~MwY&zLp!6wpD!7_MxOx{?bP7aR=~yGSup>j# zmr1{^ti-lfhUKX8!i;UW-IRPXWsQxK6E>aHv#qhsiN>CY!Sn(kK+KQ%AwO#((ddiU zXQ#)bmR$faRCa`V^71@sBCm5KyI4zotOWAXiX%?!cSO9A_JG(|q74qpu}n3Z&^2e$ zlF%#kwHE&}u-mr!_Y$<#N94wd+OgpYVDay`&f-Ls z_$`Jj%dYVY@LF#0vxLggkFgyt>+z!3x9fNOUiSc0m@}%7a8EYk&u0V?3kmUV@ehOT z$}#>W=R_gfgkcD9wY?1pjqnWDO;Y8cZg8Axu2g2lha)q?$)T1?UNtUlDbMWnj;Xjg zu60rYr+HPpy#p&_(_72V*)hU$#*@1+}T);~E*n=YcnDZfJqNM?a zEj{TR8s-{P*0bodup#@>x>Bu-3k;?5%g0s+F$f-2I;shUSUT1?TXwo)OPYnRiU@=Kg^tVxk_n~dODQ9y6MRdyEQNy#|Om2r9V z6FsRGE_s14=1w`{P@DpIJIIz=0++T12JTdMb3p7Y?D4o7Ne5vZyoEgxj|kOUbSOBp zvw=XHdr*%f52B$4b#>1P{zj1iiupbtj~Dk{3PuQ&)``_b)=9rc=7u9^!Q+-Bz~2(F)B$m ztZ`ph&nn^XCP;;76+Xz0WywNN!a22g*pD2|CvKV#%=#Z|kSA@xFQZFVDijLn} zw;4Ija*9wJVpD9fThnGKTY$6{G=NNalezKh6mQcn(D7oFpJt8Lb6#6E_{8eg_jU(Q9!$P`IvMW;WBK4w@bIB}96a5Po(0i^r;o;y zXL9e$Cy%M$h=lfp8c@a>aI9l?1kR96t*Zt|C=c06wp;`=s58B2dq?(YE;6!*qv@Bf z>BAK6E{NlgU<0`6OGgM3CllXbqQ)Ut3l-4BqRkc(*X9D%q9!)l$|+k?33=oxjM&3Y z?geu1ivHqu>RLgD>zoG@V{1hicU+*=H9-+kXoX?Vow2eFJ05j7;t<@`ljS@{!_!;B zp4+w<%8<$Xl@@I=Uv4^+;rqk4FV0SfNBD8_;_%}5oI%fuzr#S|b3C@O`~|bXB+6$9 z#8}rxM%Ly#q_Qo~0RwD&a>WI_jKfgT0`$oP()MrP=EC1YwrTij&kXysKoPijsc$<0t3oXh9G z!ZGw2s)&_3dsi>H8@ecb`~ja#r~9fAFS*bII89n>eV9?M5@t7xWH!%$A{{JRTdb$H zJav!_b(9JJconksVa7`~%k1O_U`;1{d0j;kz?ReAzR!qOy9$WGoy{eAWYc{FLqY~^(Lij?bR4U!$y8>< zkS0y(XeV}UOp~yTqF5{u>NnzRF-nI`e%o!n$YdC*K$S;p5y_4(#I=>b-bj5csP~SS z4hFR20dal=-!RFSqAm*xFFO8Ohr)AcQ7W^qaJ0|`IYZUEne@hGMLn=fmR;Qed@ zwp5wIVq7)XAke0%zjIYlY;1@wcRHfFL+i}i)T(^w#NMQ>MSJySmnFFgvvhJ2Wd|9z z3+z)TWc2>{-5KoCF?e5$R*pC7@7si(3OdHsz{`}#j`BHR;Gm^A;-&zUKx@AP*F_ZN z>bCCPnAfsnVjW=UF=6Q0k|94dTI1k<J1WIAVQRKC1ZYUJ!_!>o8PVi{OI3_B$c1wo3HN_=)soDd@J_+7!E? z7@ifh9l|Zc9louHl!}A8`lu~WSIPpP-C9&MCBx>I5RiG=UG@>qTq;B)2l+p7y}H|B z_{=)qbffhY?5hajQC=*(3RMb{l)iL0cPUd-9dkKJxO|9)V*~%X8QAmS-=HD6Tp_gw zd`zVyR(e;B=!Ct`vu{Sh%!n_xEc)kGKNF^7r&I?@@+sR1yCf!0?g6%Es0++7m8Os+ z?E+k|VEeR&82Vj)2|u6dN(1+QQa-U?qlx-d&1j;l}%jgh3zxva}d^-&oPG{npyyOCj21w+20Ckt13 ze|LBRuZPoibYC|Zj6ApFDC&WuI z(_`^&U;lOpyu5M8&RZ|cG%WT0k&3jXjxBp#AZ;AC0^@aFBE{pXB;}u0?re8kKu8<` zGTZMM`Klnb#cBOPx1F&pOsdYl%Y^qZLL$aAFM;14uOQa2Qb;T&cx>Ah(`LExF zuAzHh)gvoWxJMO$`OenT3hwvSkAOaL4NEQu&aOrxDyW7<3eY5Zq?$n2= zl)}X`Yamwh$XB`>P_{!Vb|E5lWm-@b&GH-})<#x4m#hmfz%4^zY@Fu0roDq*u7;Q$ zvAyl`uBB@o_K@4#h{=eXhc>U#kzZu)ij?jajP)G$2>S$>gmtp`7b7Osuzoc848TVlC@E!f_Sb2^?qO$YMMi+lRb1`sJP za#AH$PPuYmNFb}A5Xs`sD>zbdvx3Et-m3UMSdOF)=?C8w@9>}HZ|N!!`77xyVjkU_HJgw&`!>Ak1#>e;HbEA@GYJeQOuvza~b^K&NQBNvk9 zhTS-b+lt-$shsNQp7_V#|NY?EQAJlqB@^ah zNqet+1Hj*o8A~EYchi{aP0%5J@opwurS(g6DBDfd1qt4jHDi?!te~`{`6{R>)YFxC zd)FZ%TZE6sGI1SMf7?1bdvQEGdpSHhd;8+U(M6cXTywvliis@k`Nzt&g>JikIOqej z7j$l7fvKCTG|n$^faNbtD6>uB7{Rpv{n!8S`I-gAF}6y1E%%=r*{)sz!X#~5MX7|U zOS(3}y5%YccFVSo9&V8>+(S|J&@b-J?RfR6%s_40k=njG@=HrcAnO)t&U3+y1UZPHbH=iz}g@h@Zao1in_nP^R1GU8H z^F8`}L(s<@lB;OH{-Y)fdR%(rK8?~9UlM*PBQ=I@E}QDajWWTrS#Y`tz{+6v+1}p6 zz1_V>Pai(pef9vBT+kPCwP8}62~A6xF4NL}n28O&O#85mDJh$;&KGoxg6@+n`TToC z`7WPexe|`6;n&78v~wN2Rp(0se|V)xMrNkV%GerjMED8*r=E5|QM)F#R)qFGI9~_n z<3wPl>&>*qmghG4BF${g5uMmWUWJq_ReH&QXKq>U0v^0>=h7dd+ zWi8^%)UtOoVL!gIcXBtgAZ+PK=jiMKoTJW>(geSPB|SCG!2z7-aSSox02dgUg6F0= zOOOnL3l4pPp9X$R@Rtn)Zzs@_LWAVioDIeatV+m9UYsK-4bUU-BkrQP#PZaWM=4PW zwv+@bN4Ql|6_H1Q#8O9I3$#xR$`2J^R zU!MX8!21z(Ss*d6M1`Jcrj7FJLRxnI8w*D%00kE>6>FNd{TjfBB>U^jGL;8n&Iloj zoYFVqzbwmc+iu^&(b|+HZcy31BVGb73I~xy4W}@L3~WNS1E5p1&z8U^`4vA66lGqq zm`WX7wJpzf{Su6u9u{oc_WHO~rqI26JCRnGvo=GSrMm3hKrlwyh>uDaal|9b*&0eD z3&ku9V_>G<7RCO^;97)GR^**4rsCh%$g!$gw7xP~wzC*;bA4=58o668pRSgDkdTm< z1F^P&arrqXccYaX6|McMGGcT1@!K37m1lN!fbCGJ?j{T6pIED5`fQ1IeT|&t}Bnaap*};@I(OqT@Y_Dc$@qD9K38O)X~VdFJwp*^ zKpCYuCP`c|voTyjF=A>txM-#%zM*m-AAeTTXZAeP-+htct7Vl0qm=wSC5tPbIBOf@_BHQ(} z|55{g&{7gV9tAdSRyj?mx-jaj=An7r`xVo-o}umxbaKvE)!uv3p1OODMv{A4TkPp` zc=@4+$ahX!7S2ADM46rJrg`{-cX5b#__sNI0UIWP4Wa^goHH>10)^Cy#N2|MRE9rx z?mphVS`V&j%s1sud?m5%$J81C%yJE`t^#`A<(j=B_u*tpa$QGc+(TGci#}tw_u* z$Vt_!D$dX?$wV~=l2Sk$+`ep-VmCz33!}SRtP99QK-x> zEmBA>EiTE=RVc|w%}p&<$jk$>GK&?`@^eyBi}bjZ6)CrsF zQS0u@Bi*!XmC~sj&#d27ZHKEYDoRa;t8|LI?AX8I^+(x%>HUk}L?+dLJ+d6CG9@!H zJuknwBr~}ftn}6E<(CYtAL_T*Jy^};x#W;RnL;gGDag$HqRdo?(qsBzZY=@seLocK zJkoTVm1Bl~va_Szj#i;CZVr*U@qoE8gpgeoa00!CU%d}dx+emrWZJPnTU*mKRge)amogYPEjiY0HDwG*nT zxBwW?MWqnKr++=1uppv!qxR0Z(b4L&3)M~HmO|B)q!#5CmlhP{7ePX?;Z)uC{%8JI zizC;mHmLoc;aDkS@skg;yYc#jSqf*{ z43DHEP(5YI#bAen)ji|1IOwW-<4KBHu4lMZNI0Ky;cEa+*+6f;8hD&tkY8)UFcig~ z?WZ`T_1~b#d~~>nx;h<*Qajj`(q?U{nJz79s-W|`FIG2XPvM^Y?m35RnsDfWQVA{; zTS=;TCJfWWOIaxFGr1|S=V}eLW_TX^w-`Rp3{4VPt&f8YbD4eRD&!)~+E7`wGV`XB znQx?}h^v)rvx5d;tCe!{3#=}%+NfA15b z$7KapT?$22Swsi|G#a?!P(NDfYAIO~)K9p(j=CljS~$C~c%A9A#e5X{BX{D4^T8y% z978|uaQt>{V*T0P!1~a?@cebCVQram$9Or?Jw= z#`K#z_o|o{NLo4rgb6Tr+9VCKwYK#kORgRXA#wlqdmg*1l`MyZOCK{|GXsgG-LvPl z=e1|Ob#GAS*WxS-1nJmgI5kvT}>cD?-ItgMiNf(PC2}e$M=)l8#9!(2;yCq(iWA#$#C3BG% zK~{*1sF;g0k*A`V2L=2mFGZLpI|WS)mP;9ABFGW=GM0p_Oo}X$xwx3i1eQ+UN6Ab~ z(@eYrEZ@PrUQcwtHVYjy@?C|&sc_v}6IP!pobLBdXJzs2Of!x-;00o`2!S-97kP;z<5h%Dm9yGFU7K{UiFtD3nLSg;{P@AC1B|5SqGGmN$t#o7T)h_bVbpWF zSH172Znrlsqqv9?F$snD8-V=f^)u&Nt>$7D6{vNd3?_3AW(v<^fsLH)9(+y$U|v2? zv%>Yad!Q2kmXpGDXpzBO2B0VOXA#VDcjdSSi#FtJ`8GOcJ8=5>Aj6XMYY-zVkeh{ z|61Zo^a$7`F4Hm-eb`gkL`#0ZkWhCn6&HvzgqSGN^gJ_7%=tWo70uG z9h5oodrD`nSud_pbZ&*4-YRd!c@Rh8nUZzK3;=|{Z#cC@MnVAvH)7$&KU+9OZ=)y| zjvDLii8P5XMLL~IF#2%@o8(e3R$7m83r-E6QLn51s!*44E;okR9KN{S6!#{AnI@n&lZ*6R-h$Q^4)b92(_ekH#*3@k z1OHn6v8vFTMx8eOKrDNz($<0yjlpyqUuixJoL5^E3*Xk(e%M z3YL(AL=Z+)s}O9l2;NJZ1`3p`6eLN(*@xl!q6Tj*o&MSmK^iO2_yGmMGW*wFgH5h` zY6;_0;zM97_wHt084Z@T%7N}5XL6Tp{tWzl{I0B`Q=?r6cFfdFUs0Rqw5T;F;mk7*s z>!yn_0|*ed0$~LYfj!y1A^;g^%kl7Z>uj~{@2(ufblh4H8Kw!PgfOZg+z?^mWx{(8 zIjJTy0p`n#ID)aTQ)EVTk}|5toyyuC9lUz}vm@?}M0e)|#9u>JPUb0N(9CI>1ZFIN zVp<>|g^dc^3B(R73h+9Vs8S05?wx=PyxVhW&P4e$|jy#7nJwoZExGlm`;(mO$ zq#W3Lg$X+VOo3OlL*Nf84WdV=J#n4^jT z!Gsy|i>w7O_q>u!S1pMykcNSA_CAX4+2M;{&h`(Uy#28*D&CZqx;&kyX^uNDPBUC@ z9H0eGu^DGC4_D*3l&h{He0#c`gVBEAXd6LjR+C`P z4_9C-3wug!0!4`R@v}_IWYc(*X>B~>bSdLFz1WNu>A>17*b8U)Kk(@U$~Gw5ncV7H&#elk{wJ~=m&=N?2eu;a~S za64+!>enkA8x`boT=CVTK`74$2?)BD6SSyz_p0}AU-&Nk&ilUKckhGsTZv-@8T6dp z=R@`2kyw;ii2)DG!GB2D9bV8qwY=jcb(BIHsZ z_}&WtVA-t~W_@3636wm>B3qCK-ADe})#2`a$b5$Ns_>G*dwu4r9%sq z)W?Wsovy>S)fyoL*6OSx9Xh%|%|NxsYL)#%D~*3`A=d|$Kds*1Zlw!~c+%8bKLLuPn~uJMDHpm?>X1d70?{3dR?10 zDx3!l&#K3G4q=L>MBKL!Ewe*p&wr%`ANPKet^x=lu_u3{Lzh|}T*YGO9fhMH?{sxI zuc8Z;5%wK54?<(GRVAmjKomLf3eT@Gt>wR|?i@ng$%G$#08DN7y z`?c@d*tml|apIgfE=8sgtWwgJtE|94XrIe)H$b4g&j2{-wSzcmB9NAahR~y0hAQZH z91bXJRw3WW3VJkhIvk_xtk6}u3Nob}0gb|5#apRmSILuHNQz=j!0!o4AqKw^;kz2_ zN$>dAt<$eh-2U!KcR<^*yCx3`FfcYb>E4IG5gKQaZTKz97*jlhp|X4QSWIJZ7Km5a z;05dEYT%@oSSf&8e0UVE8kad6b({jm=t3 zLIt_Qe~w0Ci0%kT0N(C`npl|MzYFGdc(F`o#k>bYT=IAug@wUQW3bx_|EhWl2HvSm z{Kqf_4eVb1vVZty|ED8Jm7X2GIG`v)4ZstS5hcJ7S#_^)!fL<=BhJcyOhZw@oo=Pm z=+$`ypag%y95tm6DXv5D574Py$Yd$JX*H!jVLW-iHeqqDCNu$S7;DB5Q)~M;2kdc< zS>FUQbj)feDa62&BEIbKA^La50#;E4GX%`wsQX=`SU_ovaQGMNi&drS*Zfo$errE_ zGmcmm%P*56_`nM&kymjeM(k9^uo&UARx=cW<1Bp-*}MXZo=AywutkC&ocwNtyVDm( zX&iHM3f`1Mxg7j1lXH_WNN7eF8@&g&5FqJR?oqj~3#t5yesWkH||_k@?$-m*?GE)4C4_(xgAzd`teamI!a zCCtfw4I+?hXe>2aoq(9P}5VqpD%8?;38E z#LcjsrWfU-I9-f7j)9eQ49Dq0o?A14i&+0M4-^D*ENFbGc9&}Pa1%8IQopV}-*9xM zb_FWnPIsvLH()(UwqYLNS-4<6(3V6T%_;sG92*7(G1Ih6!s_VFNNlsZQ2ngl=2_-N zx-jRcsyJ)~LG=NujbObspyv%m_HgH{8s&DwJ4}iCtAZmRm*2&G=?I%xZ zs5a2s5qgHS?bC%*TtMde~Qc(mxjFPCZqC+&<@bnD5MXuu{^>NfwGT80C zR1H}Th40eoQ8k0AYObr1dah4G*F=0LIp%4ZP2>#|)?F{TfeXnlu|jwcpCuCF=ZY!y zJ{_9-zmmG1gtuRHNX=v-(awPBk?ZunnI(faj241mWfI4vbWf!=xpf+M=FnTn!jdBQ z%@r5sfI=L&+q>b)Ob$zoJnjhqkx}o5=g|_@g_SGt$2Ht-E!{QwYlTw! z`3-KBv)Veqwp%A`ZSnl4U(cEvPK^6^I4*BuMv+{F)roS~pf#%7(X=wEPFA!_H3;?Q zNGDA3E()7lbvT6;FxgJRcjEZxL2@ees+62Bvvh*aMAbvMbJ7kKE`fHo3^c9Ld3b#J zGc_NcswQN`lTI6x4OwU;+B=dAu4^R^R4;xBszW*3PF+oQ#5Fpxm^(q$SQEFl1KKyz z;Kj)G;w7ebn?RO}8z&#*2EnF9Pz!2@0TZT+uZRyIK?HTGcFiGnY|o2gnfrsmZe1gX zSnV77MXhU8SL(5vuq+E*iL%;Lf#D4Ick%1-G3<6A&ObfT5UG_Bo(v;$))N>g(2xua&8HM4S3Z(h^xcY zYVgZpawzZWXMR-O*$P+HCANU@Xl>Wg118={tru%oDuDaN(=$JzywzGEZ)1oXB3TjP$ zw}Edhno`ph6r#hCk8caFKYVL9k!Y}nx?CMh@QGzigU0~i0k?akD(fb8wQ0&J^tt#2nx_PlXZ+TxlHp2b6f*aP2D5iz_GJ99m8x;u|Do& z4b7z5@00W*QQmM5(^Tw*H{j%lNZol4#PGrY;3fE?#56XP`lg6NdQ=aa$e+*5at#6> zRQ;T!=hk5epPL}d@OTy19&HlPV>9~_n_Uv zYKAu}A=R!{lhp>JYQYliFC$^}dL0DDP74gG)rA+St}KzC2kB7)q>fWrx(F_F!x?3P6{{^P>^N?lXgse>&}%eAWK8F7>#W9T zYrS=wyK0Z;*m?k?iSt*(mB`D<1oHK1857mDYIa8Fe|YXgrf5&FsDXP48Ur-OHuqi~ zb=pn^4GRhK5wN~FQL(+#Dkxg&CSeiClXtk4dBiNGqd20cb_N(T3Xl1A7+y|7OQMFG zP%x9{Q3^%?0~#G;gQ3bOX0MQJjp(b@*TAvmwFCOk3g>Sf%-r6qF^4tV26)kbhh`|!o9{kJb( zsUy#r6-0Hj=c*(|Whxx~_~^%94vr2x)?q(215~f@PEvIv$s3;1eI&=q3BZlxj-s3t z^fkbXK_HBLF3Dh$Sg8s*65cMI(4}e!3s!!R6FdgOljwZDg{}55h@SGq7QXSFkH1YV zs@e8_W7oU6l!6-kkUnv}=@Vb<05dSEuxHp`^6*F2pwuGCs|NP4(0goR!#``&X77S`8s+jf9(jvXT$|giNRIXSs?p&M=dX<=Hy*y~6*q1wv;tr1(3MTYZMrR4 zry#Q6i+8niLhED{G9t5k5Gi#b478(lxY}~JoV98AO|2T+PrAeHu|mIbO1io8(d-~L zr=6Cz$DPhSlmz$PQCFbR=@B(4_IGuMBBVUH2DRaB9=j);>gfsfhMYK@=b;gyuMo4^ z^;*02s9CRb@N&PpdY+`B0?Q@|BUxg@o@RlLYt^Q@NA+~d2(kHO=kL({XM8g5Jh_x$ zUz>D6K%v|pAH(WHGSXV(&)Jt(b7}h+HlHA$Pu^9|kvop;emQiL|A}3Sc~z@i$bVWC z|DYB{>Iq}}!+Eh1;9t>{s5}lvk$;lM0sbw4T*_sFA{z5IZBSVX4+8N!70abavruN8 zS}Vg1KFC7TG%{=&-m&_4Zs)5$0ljTj%OZD#z8UPMR>M2`L3P*N=pk-=)YiJ$R7Pc3 ziv&TfxTIqTf-TCWuGm-U0e;)g8CQ00Jaeh;lhZ*AJV)*?Xy~?2rL9LbyBJ2Bd~G=$WUi^9~Wt; zZNUKF6cKgva-9AA@#{Bd2d@sFKBG<{`s?+<)5Dkhuf;(8*M0rp1N;syaK871O6H$F ze){a-3_LuWPLEf0I@aA-#chzCZhJD(ppruL8f$`czeAe z08ZD^y2ggPOEu(k>LItThUi-&QmYG;TQPC0||*90QmhO{PhUGl7YwbXV>Dh4cvTbM(w=7e8H6G;kQ(9 z4YPI{!ASlp}|a z&GNynbDO1{hoLO6_3aM|+!ZOUdKE%wV~^t%w%6KSH%SZk+izz5N-#>>SXJX>XP$Xxc4l{mO&BkX z#T0@><`X4!2r{!c)xt`Z4K@dx@FA84BAFn>!hk9ATxkoD(hw?{O~EV!1S(&E$U?{k zt$@n0L^A{yX_bPFk%ZEeWfGYonFIk-%uve!0ZR|uu7)quh5&|9$5IlJo;yGd#O;zGC!6Jam}mAS+U(PCifd!4tGLYoe?QTO1SKSE&zSk=~xllo}H z6i?hMysB#B6z*DWdOWTyNd%1zY0DpBw8F2rTu-5X8b#si_!mRpsmL>H9)Yx+%S7>D z|u?a?M&lBr%ZOROnBb2?2_tLPRw@Jp=t z$B~_L1nR`AGRkX0wljop0{~15$}rlP3;1f{0sTU`e02pITi@P~KYYG?d%pp%U(;@B zs(@eN`Wm*kVP^-nzWr9k(p;72$@M)9hrO$gmRo+w$(;>2S`D!}%a{-Z!m{c86VDIv zi|;a%7~EB7)=Rj5tnA>Oc4exR!lc)eo$`dcOX;2&vO_=1=@i`8CZH?0F-o6;qsbv_ zBgPUVoa1#Tpq+TC8EO+_lGHLkAJy8@s<=Kd30|fsRoxZt)%Wh7Xub0u&#p+CZ7*F8 zCmz}F%cbgWc`BLe8)waIs;t2Fsawd3B!TU_6;Y^d_jtF;E582Lr0i}`udQEtmswue z6{LIA=xA*8e#{F-S=SAB)qBJWTeXTAT|z&!Ar%(+(+jv%UmZv4CSgrqn!e;aj;2O- zIfa&}wJpn<o5rD=vfH4g8>Md|A(N`z;3rW5O-YVo8op*S%!H=0 z$W{^*gXMOm<0U_&RRK_VHn#rQs8$+k{N$Qu&#veRT-IY?oi)^Y)dL%M-?}_he0OZ} zn#_!)i4a4&@V5^dX!5tv8SGa-MAE(VM6=n2)gfy8ZFXqI-h3xq*%5Z}I?Rdn{lE<> ztO}IiZ&!ggc96 z5c5dHfz;>*YmotJt@H@qMGk>RZ%xIOB#eqQT+{yxDtEd7gteIFt`pZ-`bVg4lEbo@ zrWqD>EOOIA@gEg3HETDn+|i+H?m345Wz}tScGP?bSXCW3shA?*PCTM(XfYZr=OWxu z)$0NW{{s@bf$zR?c$|e*+iuf95PkPojNGbCQ0yQic!&xrmsX7g0;wP&sw&!e$MK5w zuGvf7Q2Ou8Zkp6v73!xXp39jt=S=qCj43V=D&2MxozTjHP!=n1gcE3CBuXqNgZBl; z4i!h`fD40_(SI{0XW1TwK7%vgGF2F4oGs-V zly;(C3$+5*Ab5)gbR9lhOfZ#M?Nt@9Koij~?$IrVfuk|pWB_~cQCN3Z3)s?X=^aAH zTw}wpOiJ)d{PK7Ye=ynvY$pZft5{26FNH#=jcy|?%yZ#J<3pGt2Jl2KRit#DXuC$|5JdRaa%UrnD1`)~FR?72`CMzX|8 zX+z7QafKlcpbT%r7NKIDqw)A8mb;6fG)o-Is@WuV2CssO zTqAbWMN%cQpHT&RCxjBHlGGKGP_S=1{uabv7&ZC+dIbA7qxyI}EAsu(ZbR_m&6MNS zRCy`K`7MmI2yR{zVz9ny5;@~FNoE2obkskf3qlF|D=F*Z0*c>|@82YSZ*#c3go6Xx zKMk+4f%0}<2rLcEuvOn+Th zAHWVsE9T(n=;ZT08q4GWf<@#JR2#cixQ#Nd?^GO4)Mp0sow zVnuQoA~z{hWF*Io14=BDBIk&AUe;Ggq9l%MLi+F?!OCbK50Iv413jGuwiIOMb(zlj zRYy<+F2xkkR!jjWiDiQttM zP**t`Nm7QUaxqdyC^L3XlW>I%V$b5SD{|d;wo4qR7oKq=m@=6xnUQnPfa5Jl-Z;O| zlDY@?iXS{|KHVjUC0fuT5=(krf6pg=eYoJY==(5+>VL}he! zMV;-V!$E&I=${QvFHe8%cc@3ctR%gC`y{x-Bt#$83fgd=B0N~|I(5r~KYG~g>af!C zE|Jk~Q+Q34)>u|KFWtXh?Coxi_GoMO>M{HA?baT}3mAmq=3(#gw@<$NzV{d_vc2*2 z`QY-^^XOe?H7}KW_}PG3eOgN3X&$W8DIBqiwqFeT7iWjh`ot_1N<2bhm5+i@rwO$G z8<<#)|4wi&oFiUp{ZS|3*<6~QH*j~Vh(mZ-Do(ur%B=6b=L=jjxQ z>?du3pu`L0e9F^F$Yy6@QSKW)4sM%D;-O-JohYX3gvT!GICupDo1z7eS%8+b*c^OO zfCbHH`}N>tcyxGl(jOk5UIgWit?AyEQL2nG9u36#plz_~2H5zC&%30?#+I-zj=;Od z(VL{H>RjZ+15*x?QBjcRGd@wvUl#nJ3W1u;$6ARwx|InUdxc+Pcnd4lK$?-@GDlYs zqbiu+`6Yj0T+ZD!I@C<2Xi*uTQ|1dA!}E^DP~#qGJT0ZxxuCHvP(EnFQ(ZY9uk;EY zSDq&BT8j}WfrduES7wScJx$*O!wUuJ0<}o#_ye|aHI)tR5H?wDlf3sj!fo^9a*uUW^pM*z|B;i%$)4Vm6ah|NHZ%;3k*9YM;ua- zLdU}Dsq&Z;tn(Ni;yQ+>(NNXQ&KFcvNJ%PYIbBzLJmyq#F%vDkvPi=>cpYm_r3WCn zl%r|6N#%vD(XFp5gHh9jCgk1CM!z0yadE zMs)6@%vMH+v8I+(N_5Kw)g0dNc7Gk1p}-%LD@}M>!wQ&9?%A%UT5d0ThPDz`_I32vd&6H zUzG@sEJLX=lIoHdMab!gde zal5;-w?Un|r3N=3{-HJ3kD#w|h2{(F+$GCBcJ@j8CxO;Lu7=Obq;XtaSysr5SIFHk zDz=8nT8Xjrc(XO>$(*N-I`2+9pF6Jg(oA7~`|_7kl$+1LwCq};CStTvX$&Mrc$`(xO$viB5C!0UPBDanhbS&u zaZxB1q&pF@Ce~nTY<`5^zOjL3vV8A*vl%f$(*Qk`)#-dKyW&>YWpTgUDhhcH)N02m zwCxe>#1{h4OVJw`);wF(ptRfo-*3iVoQy7bV&rv6?)$Fi`1}#>_7}v=p zRB`j_7wkSFo0&+ie+BX_!41jByk&xW5#2bZFz*>_Y8mllxK*qFU}(EuN-_%a1w1*3 zjJDhbc$~dj>vz-075|>UV%8XJL*y)+_Crlgo00%&Ny142J-dV&SsL4FWJ%RXF%C)p z_WtgjhaNUzx33(KrO}-`_x+gB0})34JV{j%1!{Ps7CR4i9*6@sCj2B6p`4cUd6dkB zDzhxj3o%P`kuJRD+M_9$kuGm06{bm8F0=lCaqXAIBF#r)KM8ZW5`XrSD=B{O^V1*w z?C!W_}S(V<}etS`C?k)3V6Qg4UjvNw5&<409l(B_Pv8_|vp3M6r-U6@H-!2-0L0 z&C6Uvq%&gJ3UpWSg}`W1sbt<$LakLHmqW)WF_eTdB*H=Jbrb?K&^QvXL?ORuWf?&d zpX;=Q@>WHJRRF_fV6UT%pBXwwTW#u%6iNH8SF3B#8 zI4(eR$|4~;7v<7Vyj=Pr;~>NlWTnL;mj2p^U8L7C7e%y`q%fM9qy?}wSNC&bVkq|G zn1xfV11+Tqh{bCHhIt5;Vkr^$32{M$%aC+Sike5NAPErh(CJbpcud6WsCZLOhvrv= zsZ>d?aCYw(g&!=KeLtW2ajZyh5GP2JCMvonA6h%r!W6*_IlK~mmIMSE%0dRk z0QU;0L1IE?>?@e+48B1!@_F$%LMW2KB4w6ViwJ(hTA4~Ln@g-2B{GCLChQ?mP{w`^ z0mMt#5|Bz*?7CokV7XnVR}kAODi)$MEu$DR?~r+P$ilEjXO~1_;}a>70}>QUJ}!XK zEE*A!Hn_aII66H!=X)LXgb?SM45ArXL(K_TmEvedjspX~mI-Lpo?w;>$~-4a52G9+ zO7k^vnm;h0WQ4;q=TR#0w0ggzcwDHdJ2vI|u%MOu3s|)Y_4J^y^ z3onM<6gxZC1GiTU;_HqO5)z;^>Ae+PUC>JGOWIdEuVo@hPf%ZlfQ9;8WHFm3g?m6i zC&S^e0}S{_OvN0DXF)RFvb=-w_9-YU_l$>$R-)wlB&|O|a3r*91yWn#FSBvC9}*u= z9{%)j`7rbzzIk~3@O)6A)e{{lM8l-(rVooRMUD3xN_~>(vh)e>KzN?$Tt6AtDC~&N z2R-1(?6@T@-HC-BcfUTUO}@h$H_g6t19!mF?>i)8IM`77aw`o6Tj0Cq=Ht^( zwYN?TPsSZ_{$^iTu#N-bS&u#mykBmn%xz$)*oWUCOYy!-3H&Nhe3U@9mowmaO`RT!Sa3oDL0z>$s` z8kLucZg;0!1&$(g4XSMxs66RE7wm;kL^+sOBj0V64C(s`1?@^5- zJ+dWvHs;;%W>FoT9{J9+9`Ev&kiBV(M?KBE9{irTdfgei&xPA%iKMa!wD4e|G1RQV zwhHmol}vR}e!H-$Lyg)?h2o!k!<)xjhttL5?+Bw>#BHz83QiM2$PrXLden+)Zw~hl zZ1l_JwZ{#tpwU5xp!N7NrB?si4iNrQwOzII@oyhTD)R$5`t+$YsCpjPd(LIMRoq6P zUUC+vbA(x{3CDK(qqSg$$TVoj5F?$c)S$%i^8NY6>2Y&uT{-DpS;XUfT!XBYGDz&* z3aFjf>(d*&)TV$XL?z+98|>6_dQ%OR{`5pL%TZ?wAO`9j^=k{60-{02*Xs3XaYv+B z334UbcwgM1(Wa7n$f+>P%LF=0=?+E5V1t-igZ-D%KWXKD^r~ z88%|3?ixqcUQaO7Ww7~GOu%`%l;(hdaw-=!ynSys?zuiIAxQ2pd0UhB%lR0Lb5+QQ zkdTmyGu@2WPM6%lS{Th{Xh?aVV=9XkZK?BerctA4WGEZ=#hxsJJ&Ym^ntK$COul`S z2j&*e3n{pJI$C3qca8A&h6Yb3V1!w-@Bz3SAHUN9BJm8H%u zgc)WScdfxm``K_Y*p?!!jKs4SkJ=U6FS348vo!@`&?0o5*+$t&s3!z7SxpuwM`Z41 z@dQ(?ZwrmvY_zsfUN=t~WTNbi+QxpR4vUD=m74;~*#^=-8HjHriD#SAag>mF9O_>u zA3Lojp!+sgwp8b4kEJQaM!nCIYEpEERD#2+nW?BFlsVj10Yb_AT85KVnujD~H)Y%( z?C32_eUwTefX=y>X;{V%mt9)NkBfygv7zv<;L)=j3B^uEX4M`~d$1*_BkBHj_~Y=I z34W#r;YoTGs_3~Irm!=WF2)RbM*kJZsM@hRpBnCxVriFGpQjjt61j@#*c>Bkixn8D z!T|fbjF67J>CnPgbn+bXww$i8X+J)($2Cfy$v2M7kg^gAa1;o%+&U=W=?tyIpB=<1 zh150mSU2z~h|(@4US1`1-p;3>TJ{`sSr>KXz?wte;*&xuKVU0GUjt^Txq&@tXQl%V zjOoo=XI*T0C|x8Nq%#CjB67#(OplI^(N96jus14736u1Lg^)0+-VZ&|`}h%;ulRr0 z)3|E2HBsir5$&zogPrNz=1egKrmHHGt|gTR!Gh`&V>>oeW^P-apXhi|-xT^clq$%h zDVw|YLcW{lX_@KUf0R@%(p}-tmBU-)YyQ3V2qb;i*W z2&m*VaXv}saXJ-QnuU7P#caLk?zL2lkgvc@wOuag(+OM%z3tr<;y}nft?q+h@6k-> zDwUQw?QE4QlUyz-Z4cB*`x!0}OHr&zBGI~fCj7+6NCEBfwlJk1X(>Rs>#epR|agY zSZWaP;xtZwWj|eS38Y!(hBc=9o9J-7V+}*j4sE=`zHtI;?4etL-D7>!xM3KcyRdY=;V-g z1{!3xz0e@r=M+&@KzwK_T+u^EJ?KsBf#f~q)@Ie#IMJ#Op*6pK;mt&s%fj1R?$r5y za3AAi_h+E1fljOK-*!OpO=Q%0i!p8LyA6E|wUL|V-&Kl;Q(ae*eiJw4i0#C-N_(zD zi286F^-cV*=zWjDditA8_rX!8hUy32MEO<7T#JgVtcr%+w0nn6w{}*4-y!Gb@mj+& zQpHZ4D*8Op0I(r79=Lm<%B*7!4^b6rZbCm_Mag4(Mx@b=Yo|#oUY7Pk=<~nggo1$s z#;bc^&1uL$LvOXC({p=f0*^DibTu;s2yONqRv!3JJAI(P=g+lx*K@F833CMT;VXYd zRqddWdr`pnO>K<68=$dgb*xn7nh?{BP_dd$a;d-N`TkJ>@pz`8X}_^DgbIlV?!rO! z-9kfkcK_kAXTYg{G$Ym`+{mOhVv}{lDk%Cl(7O!KIufe`wRV%pd7A)ReUd{oO#5H^ zFb|u#CU~4}k>6^=AQXr1eTqX{$abM!`oE08#%}ipr38s4kwy*C6vno9pQ$_RLVKm( z_d7=po+-T5+*Ha`bInh~(MfI3;Q~T+vhcS1AWnMQdf>gcdE2{Mpt(SWzMz&|3~lLC2uel1Nnv#>WC{7DNDwlG zcjf$b-%wcNrSa}}tj6&yX~KIAuW{7o)}Xo?YhUa(bW-GWucjlVL#^5!de|ZwM--&grz<=YJyJNoq1FQ(|MTS1KN#-r9#K@x za?KA*I{op49%x)hYKN5MysAT`Omb}m!XbJ1XCGho_xF27mb@K|hO}(eRwh!E6x@>6 z?RogB3aKf`B_5|DjPXbZ`}h(S=`71Bh+a{kjP5{VI8V2hTU+BQq*l<% zX)zxze=M{(q^nQ<{?#W+6vd*HA_}#LyYx{B%oN!@l*Sn16|jmZyS@}k=n;Y}qzCP* zMQhF!rO2@;%fdW%exyYdrfwpOw=l8|qvIqOq^H76kdwe%6v7A3|8Rcsud`DR=1mde zP|lP5Wru1#gBCxv=;+8Sh!&G43owR^NnI~WlYDl^Yv}S4Hrlg1%mf9pxc*_d^xz*XN}*>m2l|&Ax|UUZnOZ0lUc;B#fohRmz&{2c-dP%I zY?6#z&M7Z6saaV9<|6hsY*kKd3>)1-g%Ow6e;8Eumx$r5M=xIYVsYEcXQ|l?+oZ!A zK^15ek7PGd%y1O{oh7$nDzFoEVb;ZoT;a_&^M>~Q1}Bq(@qtMnRwcnwb=sdP7P4j3&g&QrRcYBY(y zQHeyaq~NRPTT$bz@%sMY@$SC!s3-RwAHY1~$m||;8LWH|>AK3xcfqe= zaK9gXJ-pg|`{*pdsYj)zYzg0_TI7+ji1FT=XAE$twE-pSaV{}Ki4TFqUCjS4*OHoBUlfA=IVcA5y2o*f%@cZ;V%&x{!-1(q|LK&J>tImqq(^o19lB zc{$U6OFH)mC$-;q*^+{rL0;6;pULjKbRI4g?Kcyq{=mnL3B} zx1mhJ>(s46NI0&-S*od$J@D8~Gn?3|Eg)tOwfM8yvZsxU-dTWh9IJN8L6;4XTe4>J z|3Ir&XTYQO=#@hiqs{1FWyk4Vhf*0zIH!edqRGKv-)_Q1$pnCciHUn)l0c1RubLSI zmq}!ia{~T`Y%+8DlQX)e@(*Mc>qncJ<>vUXp4laVX9VJo57&xjtfkpbaWV#+myPrq zr*S|^5gTIbr(r%x@^P_spA~Uh;GhBj>(!%J|M92yfykpG#tsD=0sWnrjGme?RS(ik z@#jz99n-<9ufJT$@o0M|5Go2w5t}Y|F2Ep7gFo!`=JR0fcxwwJSIhK9>jYh+n@xe0D*av57hgkW zxXRRz2_Rox1Ww`rei_IiJ~I9|8`3w{#%sE)pSs=d(5S!YQ-7kK7*=n^r!RMsUDrr@Qk*I1>r3W3RwR5oF zs_tK0{?=}*anWivj)7&6rR4IJFM>kS}zff>O!D%%`k}^8mswI*f z*KTIBhH%+27_)<`A?x`FhiaM5R82C2d-7T9Wm|T*4i(AUSU>0=F_){A8H3icXK#s& zIm&oLB2o15;=ACh8W4Qd&u;~KCDwED>@+-(u0z(EE0ICnE-#NioSdGYUJO^(!?74u z3pteafkE4e^zl4+cYgfC51qA$AJ!!}c)$9FzQ4wFIaa@IxCe^h`5ZEC3JHfq z!I)}6euZExcZ{54+;8~0y1%Zny3U3@GbI_CS~;FyKc!%#|~R@`CNFSH1*7XklWVaN=F)Wt0N?*040@m77l*^zo}wE+jM z)vjyRv%I?ot<{cN&BR5nM|NWkywwH7dmf5%xSq0x^zOi~eAsfaZmD*IhithX|=HscK)@_)$6R50N|D?ql{Bo1m64s67{!WyG{q^UUs!rLN2 zKb>8xsYp|EQn7DoQIvZ|88d}aNWSEUc_gR}4R9er(?=uuImu(34mjAK-Rb82SsT?H z5cX?A-wXitZA>qZXm>XORXjorCP=RLz<~KO8F~%CdOlBid{4yPcNMU=31Md$iLeru z5>@xWC+Y^~EgLuzZrA>LbJ^6~)V*81)M#iX1}gSsn=ZGv`(F-e+n~48c}9N6$J$DV zDdMV@qI&UW_O+9-mkUFwV)2xUorsExJ!N00e}jBEDa#tnyE`k%^~UL7;LzG>xwEE* zg1N*wSxa|P5#9<_UHY0Q7tWU{x+K31JgKjwXqhq+mgTGzGUI{@@Mqw!>9OwNhJj}^thWuvro$4=HJ#|1}i*=tC-n5VekJUP&v#@{*4T_n7C z;P-96__;u*V#M`5w;q~D}^>%yITN>FjS!fVehr|lGe8ey!^i&qJ$<&n4HNG05{Myav#wY8% zy25{aSiRo^E9jQh=27O-fHIrYkFf(~1%0}@`{kEUm1?(iQ}GV;-Wj#-*s+D>w|!19 z2>3-_R(c)Rz<&h3=Ypo#W+--px~%ZvHfMFq?9$HysIU!R3b&bzGF&;6v8xvEC$mie z*1+mDPKj0j2C4gN=*$LQHd#%TmL{`tV{7cj+6J@PRQTtR9IGBl+*JQZxXx40(YyZ# zDJ(MYvxx*U<>Xr&vFfy*|)*(`(zYyGO=7YAS27Z zB~#zB=_GW4zX|gRbH~8L9rXj)6%aN-fewJ!fC@qDN4mg6S>US?aEpgQyh_G2uzg3I ziJSS%g40}U3M7EYuOO>$EkJZY1%@n_OhV5V*p3%)P!;Z?4-4jV6bCet2t9UuYI9)J z@labnatfkbcgz{b+KiO|76?Jir2(qRT4l5pbi;u92bK7I(*z__+7Un2b+W1ua@rZ1 zy)VN~@1l8bp7)M_88qHRqy$;5`bn#-D+!?#8ONJ2MQ4w6Cgh$9mtZLVM5-D+frAZh z=@=P<&HH3ZIbk8F9k=z+EAE|u?h|`P!D6WBnKPyaQYWC_smn&7Nn}Xs)Tav;IGp)Q z;?g_n0v%^UUTla6h%K zI8)q?JkN~z()c5o9VGm{{SZ^rHPUF1BXV=|9u43L+CJr>?~ym~W#Uxe|44*M1%Z=B z!J)x&K4Pw88vuu+;ZFISoVA-RI4xmb7u*BuB~+xVj!<@PO#}EtA1s?2bBo)vKTj^L z%cnU~LJJFD!X9PAe+|ye;aR)eHqq|}XT4v|%P)grzuoLMj)dhM&vwHxdU?1AI0TnD zP@6LjF#*&a>n{RI)7R^yx_Z5Z_?qZ?$|%w9r{uIoBmAn&5LpGIiQ!puO0-X_h}2rk zxPtPmSFe(@G-7-JHj@ppOHg~p!24EN0lxHm-7om3ebV`DU0nee@20`w%fpv1*9nyFM9npX!mos*SdrQ#ZgW~8bs68N4yg*2q!P84T6z6$5iOkU;!B*APedn z7~~>lKt4GD>^U2Uz)V8t{d@KCr!;NQMCb*Sza!4nV?LFZBtbY*1X8#%CqteMsZ8e! z3v%-q^NwN2?MA^yr6{ccr}30l1UJI_GeXe7vc(6vvoJ1-WDIvm9KX)Q9`Z=I<$&*b z6-OXezjke9MFM7i80{1e&S{kvA^MAY!96!=hqDXO7I***%*p=9r?M=vZYZ z1cAw(2!v2DIg=%5e#Y3X3FX0+WcX&Cih#v2G948UA%+Flhw@bTuuk1vw9-mK*7OMn>~NZf7JO+)YZoMg(PC1+=Z5T+&k~} zpT?`!>q16df4QncWThMo<}&}~xQ7xks-EC9~neYh!k@t zjcoT1wfsFAX?6b5?w_{*KV9T6*SjnP(-8vWVIgsKyh^aG_OJ=%P3t?YktHf?&L|uw zC1$xAMoYix5Z4#}AM zKJ+g2qqjfnU_PMb;H(7kthk%Q#!8MS#CYITNHpy<^-rM%A123G93Jux>cSs~SMf z0M3vuvAl3Tf*KZ_0ml{&tjgFmf%8>?lT)!oGX}1N7i4Q~qHEd0NUJK^8tOmwZPQ{Uh3avy+wBYoD*UPYt;lReOn<+BjN=)jK{fBljpM~MKB-ycJi2QwAViYXL}>w6!+8*oEuMU7@kC1T z0PbR&oL~5zU15G)KtTl;(;OAB=UhkHzca!yQuhlu}#2``*YHryzECuybJoMWa z&2F-(l|WkU^Y$=?v`87`@-l&3UUWs@s6Zl(DFulvqSj>w5P+JDzX~vR?x;Vd2&zRr zr~-lZgPDMk8uToKGYQdCZi8mua1eByls~}7IZazVHmvexY4w8D$m)ru%Pw7vp;c0L z7HTL=DBAkIlMkdO5L>VO-!z0HeQalj~B~no&Qa~h6h80d9c)|sKD=f=Z@J&4p z5o44qLZq%*%&Unw%N;LN@5?qc-jE~NVg{}C#B$uwr%5~eQB3V*&${^aY}p)Dv9;^~KOUzSR;+12dphWR|De7&Sx}y{rf|B@Io6@RhQ| zO(S7CqiomlXv*f|Yoo4JSM^U5y}C*nVZGLr?{(zhL_Bd}k%603gWa%?7xZjb#ISceI+-q$@NwJ;3xh1CRaL2c4d)iM#2e5ZcVWr9PS_L;*}a1 zMm#KnGPpQGspfXSCu63%Fv;(W9E#vp&Eg)TH1H@VfTVu)#`xRKYyIQKqacYLPc5i7 zz(_C`+|U%t8b?F6YC%T7stS=nZ8vIr*3Q*UIyViq=dIi_W*$v>E)DF>$kAJQa=Ms!=Fw5yWqw^3RW(Y|=SC89$d#v3nb% z0$~?UB_AcMZYb1ejH@4u;ZLB{YBY$IKa46905OUb9Ixjl&ak?$_)O-2_-pBuE!8*Q z8=Nh~&$Dt(nS4qTgNm47(Xat0zY6@0ucPt6e*k5dEIN;uO$m zrThSm`IoEo zG9Mfd&eHsJI7$ryVr-Cn~zNd z;ej1m)`}u*;`5MebRc(%l9Nh@WJVY#w;X$YcyK?PLFHsZMB#vz>$4BO4{wg*0%x(P zIfui;L%ZbgkDhyN!LSliVUvos8c1HC($H)50f7{?ChETBbisjG_$ql2Nf&U488kT5Khpn#hfk!b{Gm5?IA-8tk{4QJ1ht?MWSl~wq!_h)28iz zA0>ap>56T>nSAf@ktRJF!IiX5n@89hR#j-CtXAAftw5K%b>1eQB7j13Rsb)M87L@D zppGoiPdU5;Z`s+Lnsf^P`V_k6sD{7U)n+34+DIp*Q`e z!D3+0)C!pOVH!pu)gAoG_ymMB$X)RmSesfFPAYFI9$&T56Rs~uM3{+kEPNf~F z+gxvfbo<`%9u*DuopsDOUoA7bgxPTrBje+zi)AufB`=V|$?`+;d38b^z|qmr1U2A& z!1ME4(HUuFGJ1)k5!}iWsZ?1(rcKFQ#F<4Z;>WsP++N;%Ur;IOhZC3OsSu}+^u)*H zS<+Nm*Xd-qI!QKxvop^SVp^8d|6t5JhQ}slnF#R@hU^%B#kHW5*O>S~%fVzkXm}EP z7Fxz>LZib~;#y_$t~SgcOhkLM8}1;457E7*l=*fuKb`Ju-W7|9(-0QdKZ%eO4nBRL zXHWHsG{gdSartBJ!wq(}$99P{#15=-U6xFVS8gpjI$Xd9hl-Z3@4tCQKntyn0N1aC z&Uz)$J5vNP|+c*MP1o-CXIEZ)0`VntdN{Jw9sU>bY#5>Sh+*;!V!h-`##W? zcS^U~y~ifD*A|__{@XTxsyB3O#W=pw>B%l<4#LgBR=OMl_(0_zjm)}XwJPCyyAcIm zf5s0LQ`Y}forc=d*>5oO73p`P{8`K1qslO8cY3D9=?6@ZTRi<@WA;`mWUoW% zv^j}gn#_)V#`@?>g6w536DO7ZNmu8NtB{+JeUjl4ot=@tcYK9lbA#Yw?&yU+ph>0T z2}lc40nf5T3hty#G-~k+edsL6jZMwR-{0>Ir*2X7iJ_n}Y-to642dgZ*{C*EEFPj`RPTy4_ z2jF>DlGKLP-nR^|B~7d!GZblfpdqEE5`CuE%FFie2Mbqs6JEkYig0J?hnx1qkC>J- zgWAtfhix*N5by}*7a4nDj9&Y6MEULQ252IMbt-@wdri%{CnX}!AMYfE=T0Y@hrlkn zHMqj1RElCUi``o5rrb&T?WU?QyX-{ zPF3Xqn_e-7Y%sAnNN_QqKlyK((=@E0F#y{W^~v+62Zf!)RdM^cYTCVWCSkqOu4A1v z1!ikKJO$^4+W=NFNqV4q@=busY1aoe+&;)f4unh8Jb|G46$A0{tWCbf!{Y5tA zrL9=1b7Qsf`;`BdaZZ!8${`@(Fw-P332jwkh{( zSW6ef!b|3gE`+8~UNWfjuytDT5B%PD((0h!lrN=V#X3Kone%2l&?<2B+8jagCgaLd z{bs&V{9V2-iy?7!7Ry@{aX)^2_U7Z?A7z;Ez--ksER$C## zUv^NQi@-Gr9~c|plGmbAs}#n@*jIxhR@FZ!18-}>mYi4C_!~&&MWG3*ObScqVu9h^ zbUyy^Fv%as_tV?_=gaK&dHQQM$CnX;i-hI!24PKx0i|`2d+xAoL|7-FO;MmDal+Y9 zev3}?ztINjsyaIayqgc|$Mx0sBN-5ftrkwKHWWzmCb{34y>*wG;j@pXPm@Z;PCWCW zXm*76q)V=hCl^i{3rAwZdbqTPSh}&n0Do-ZnWtcz0Buc`Yvn`UMj4rHE~ykz2V}p; z_mig#nI`YEW9eZspC^SsWi8Ujh8$w520|<0S$iTMWj;!a&Qx2M)@%Z4ttv7BX&}l} z?FM5JO^7YQLl_BTJ5r~%;a3&bHnwT|e{z0~;n$U|>ty$f6y%koW{Hc7es>)~l*-6a z_TK@nbm~T*LVTLtCALF^qm`|U+7b5YshNJF`v%jhgW6Iry#el+0%W`nc${^NyAFat z6hwQz;zqzgq4Xx&L9jrHpfNTZvs@l#xl5J>3*g^{N*k-0WX>5A3e=!W1nTPzm!y>x z0y7|);r7)+kE*RC8F@!s&t>6Qqh#G^R#7e;7X}01T~@qYHdr6L4113{Az&Oqq3#sT zgpm9xe(b$9Sk5BwPAMeqn*B6m$V&+;Yj`9fOG7{M+36Os_;QZobPhi_-Y0AL-t3Cj zvpw6M{wT>cSd^7986QPZP$Rfmc$|Gy%Wm5+5WMRv7LF4ng&me777X{Gs~4UP$&(~uo8hw z=#5r9rnwnu1H9zjiaD$%s^ z2y1yFRE{TbZ5^vm(fm0D+Ts9O_Ar^%plk=Xc4&-Do^YX5YribT%1JACk%R;ePUUzJw2- z;vCypy1KsdjZtSW(CaU@{L3CZJ;BArZbO(=%4h9xKYsr4k9;~C-QIs+?vi{gO?)1o zpD*94nLpn8nx1#$e;wcSIJ8jqB5$1Y@22A6=Yf)?b=YbhVuSt+x!yBoKtB`^%v#j6 z`#h_NWqm}jq+efnN~SXwg|F{C5WV{sdKnQTB?oM3a9csC3Mi0EB~++{8bxSr4|v6T*V$bsB9{NXYh$OB z&`WRi$(r}x%=o?W6^ucJlBOE8fQ0N3GDZ0gJpTiPf(faBa(GcOFjNXsLisjhj&%hK zXX?N*K9EGkgzt%j&+4!jl6+-Zh+GF~`Z%FTz8LaUq!c6AN|8XUb*cugyQ4bJf|B7L zg)ZvQ4VVbrgeZ;DHDldv#zRd7SFTDi)G|w4%hHDw6>8{=?{+X-!)y+dxn<4PqiYL5 zR#^G8+WEWtZZ~NcEmIE!i{PaGzN`Zmoio7mY5~=R(eSsR*9gu4uU88)9-(BEV=d@6 zf-}JDH!GRi{$wTpb)`Q6&#wg%pHM1%6?|+2XMk4$){SLtg*+x%2AOxeUB~f!zZgO! zOuyOu-mcJxQKjpB8u~*!uS!Kdb8^P%zu`oJqh(@V#^M1^$p}^lnG9lTVx_6%)FGjn~zJ)*`!)!fzpOkf$(#Aw^=T3r>pNjzHL^w>($84 z-_!=3u}la&Q8VN*LkI~Mu#$ojgvX3RDru4_AOQ$TRbiSR-HPy{Sx^eNIlBdPI?%F9 z;sEUYXkvs9#f2S;c5YV}xv5MzT3Q)a{ME7;C4!C-0ut_bQke4rs!Dgt-?X%iZq5Bw z^b2+d|GA%&fA#Yhjs=ARw5YH7zt^;-dG?U*5E7&>m?wL zbHWmx)=W$4Ff%w0Z(Lk1yZpI> zE1Rl>?Z+{gMn$ZeMy#fv4F-m24JjE~YxTe4w(d5{)Ic zT8|uGbEAI0&R*|TC|0Xe3QlG1(FdCep}AK>vHt7q<9PJ(@YCVgCStVzVLUn-9UqR5 z4vr6pPNVm3x6|2e{My*vMZ9|Nn1{@w{HJg~LHBb4l#^c$o+zp+iT=_E2aR7HV9@@x zl0Ng(IFOJf=ulJU%S3oaA<{A`aa$vqW)6xkVu4?99(?%GalmhDFV>Gmv~h`Jl@j`2 zCOS352sWMq5!gfk9_>U}5c*JhGZ0&Wo(k{AWNnV8;}~9qzC}T6+Wo=N+5QLIv41}L zoLy&e3ZR783Bsi1vcM#kmy%O|H6_k7468%R=(_#lMtG?yJn&Q)0>xf+fh7K*4^&rS z8lWbad(7_id^HaQfDcLZ$Fo39G5|&%0id}_$TPZ%Ckel$ir~pC4Uuv}4?9Yj%Nc?T zI+5~E!zK)D-nIG@+rCz1&Nagwh6mTWm3x-kf0y37+Io#MveRl=Tp!P3Wo;ooWkH{$O+PZu@<2 zSQ1zhL!7D9VCc7=THm~Cl?pGKNvjP7?aPWYt_`01s_E$4YpGKGitX-ivE3bf_wDy@ ztF~)fBEQLQcirxbA1>S0^dGcIs3l)=fQ&NeRZX1|as%6GHRZOw7IURn-P^|UZaB8Y zHrvg#?!9E0)o2X^O)?U1E5N z16iiYsw&Q8sFtnF<)!t^6vDShJ63P_JYRm?f9=?=7&Jr4U>b$AR@rCC7PX(KmCVYJK^C3z1D`%An3*DHbjo$Y5UZ>O9tKSp<1FbkTKzV9Zpt#T6^E<|U-vt7? zbEU3o`O@LuJ$Ywf20kXOULIw9tIAluEj+(OJi~00{=&S@7ni>a5kGp-(H{Lqm(aFQ z$raW5YU4^{pLRG%e<-GlO%mQB3y}=UQGgpoLipc7admn3ZSUQ7|9go2LPcjMEmD6Y zY?sVYd@usLfRU41tOK+)YWskSROFtIesceurAp}9%d4ETzRNlJEAIIeRN}nB4)M~} z`P`38q5|w8UsDlzg3ODQk<;6?7}3&U*%!W5a6}8IoJx^tsl>}ZM#IZJ6h%F6Uwcd$Bz3WS)Ox$aQ=6m6X)W?Zbp zuyG9Ink~DVJz2DJlsFL>`;l?ssq)3j2>TBOTw$%T_Y|#ietJCq`1x#PKb-83KH9T_ ziY97O&810@t8`CTolaWLYVl*eQiwD>FN84cG7~TC}SM>MJv!DTZ zoTXOVZreBzefL+)DsF6NZRb6O7s$oA0ErdY&UUjwU{KOX=9VS}k@6)?|Gh&>vXv%j zyQmSskvKdv=kUzXdmuD~N~laXSZ?Sa7D4Z>d8m! zT}_Tpu7|Vh$*jQj;Ew@#Cd<)-$H$Mf8D#@t56-!a>=UTea3vvD8RVMFq$;0Fs`Lk|W6kZ1xO9n@3VWWIzEnv=;{7Yu4+cY2A?9<(n; zca)|B+$Pk934sx`9YrM(be>w7D%Cn4OF%{7*^1QYfYo|8*GQ@=)eN*yCe@GrND#sznZr*|caoiZ}Qx66+lS zd|Gk}l*|b+&eQ^|0-?$bSkmMYTF!iUT%M-gf6mdO{vrV1xtlsH=oUC;{B3}eiI z8!)OM-2Z*W0m|Cx{C=`~7x?Z`wIfCjlFxC5NJrLrb!N_l^v57kDk{LcmeNXPpS2Ys z!kCfx@Lx`zE}ExVHM9dMO8r5dWr>xmrPzS=?p92TK($-9V^K@Qv$8=$%BmLpiMjqI z#WhL;?dG=kX=Ffu7awzho!9+ig?1*$-E6@vtKyV&IL8ITYR<#CtsqaRMix69lC&pD z)!MXqeuf@3ck|M}86NJE+u>uG|7OQ&EbBj~{l)0$!U|uNUX5A%a)EuA&T(Un41yW5 zC7D^#7+YoB7<6`aak}tm;g#OgOJXm~0nlzk^UqK%7Stm8VaxLoIvvXcmrT(9_D=m? z&?#Cj=8dg4eo2Y%gs>8S`Bi7Z*UDQ{_L=%QS~6)^Li}T>8O08NB9jVqULuGU3Q@@M zq|JtgNb6`9aCFcD!L{j?+`Q(Ow(cMGJ6puBmMbx}WcL7z%P-<_T%HSQOan%9dfm5| zSE*zXQpvJoR^zziyFHJBwB0&r)d5;Ay+%V<9M}tb7Dm;h8=6X2k137F)Xa1qXwzs^ zzW#JII`cnO-kqF|hr`iqod$Cb4Pyy9EDQ@4$#Dk1Rij_6}>?XnbMNFpN@Z>oc#3e{e+Qd zP#EWChKa80gYd&ZKhYG7A5!&UkhH|n6`-U+ zwG!2oH+D6^IT(XuQOpuvj9P?9i=1JCe)0JDWGi$$KWxjdCqv1Q8_O%6OU#;(DSe$$ zW#`JpP4faGwUxM_fm|TVXfHsc&?|^2d?RlTvZjxg(7LPOtXwDuwipuU3&+5xV9Y+; zQIl4Iz;KxHW}--xMSo6ZOT_I0I1cdd^!vr>q0X5<|^&?&w)fRz`YX278o+({j zL0J~qx?yWcL-K&*E-x$nP|PmI>tWb7zQmuaAS7Lhbq1fpT!;V>wOkt)Y|x2E$0{$3 z^}J0`J#<$$$7&n~n`z7h4nVR<`FGV#@K$aTra!5fsRkOhJJ53{OSWy9CG6jNUjT+c zdB5IXX{lxViVVx~-tq%zrp_hx-(AHfGxi$m@OzBwhjT`sX z#t5EhC0VQS6;^3Lc~PVAr!Cq8-t9KRo6XJ7{mp*A?&W2jnHU{Zy1QS!2+s%gfDf&y z8@1v`I_zY{f?AV^GnIF76`+Zn#Sv~VU6BUT-FHv8j2Re))oMUs}y~!*5~16Ehr4(5hLnUqpsW zC&4{HnSuSFTdTx03x2(~-u0d}cJGsuH%HAjib8sHFg@5GZ>2lY!M5Cs z#^aaUkx2K)(SbY=TS@$4Ki;0AqxTvLstSJX25j#?Zig35!*57|itzgMl)Akp&Yj+c zIP20kNA#@MH2RFr&R&Jp)1kX67(4(opwAt4-Tz$WRnXuNyQHaj{i^vRJpCA+2Ax!O zO5IY}6506=u`P$%vV#M7oUK@EZ`(Q&{qA2eRn*ijA~}y@ck9$$@9>-`~DxNYR#Kr)jYZB$iBahKDm}9`pvC=?#6xaI-7~o%Q-BpQyM=Rd7vXk&9O2g1nR*_jCVv@Smd({gd8% zhrZDF?{wE7+Mt8?{Sz9>d=e-Xrz0AcX{ePqFSqyhE?$K)60avMy>`1pxhRC%qMZ(1 z$t2pM7ac0oNaRVJiY?mR?Eq#qwfjPUsZHf~*|>+Cy}<#DQp~A1;pp+{I8Fqg_YOne_6&X!8pY-&Wm>42732x>B+G8`7=5Q; z`V~iacc|MXRtBWnAav>O(#&b?QzW&1s_j_lrOv(q!G`@ zIQ{OipZ&>m#OR6>dTFbuwz=qx7 zRWX=*-MlmgymYqM!Yz8zrEN#k4IhRN#TZ@9njYk#3$9It=PGsvqMrwes_zTC2_OGo#m=yKHBZ1!$)M zt82d_o!J17#1Pp9j^_ke55gkM<4gfk6z52!GQaT~7l`#+lMayvb*zc&Oy-I;B3AC) zyXMnY$9sA`>ja(g%;Ej|LQfCg9K1O`8XTT{V8iKi25O8r#=+s15CcO{umB%qnMCZP zFc*Om5p>9$L;`?Q{KcTN1q<{+nJ6RQZp1^XL0s&}VE0*o<8NuEt5>$Qywe!Q4EQwo zDyS#{Ygr4MY?{X^xJr3p2s*NJ{7 zq*pC)(L6!^`oY>SGitRs?Dg_)^G9nd5G{>;EW)o`PpHfyoT4BU&p3@$jEciC>id49 zkYyeUgSD-sOp12Mas$W>%50P)lzp}bv)jnVw@@_?d!Aqe1d9T#%}@v1wo?FDk>UZ& z?*L1e!9qy}Z{?`T*`!)&$lQWg6695|8Rgn<1f`OED)K&RF9l^3EB(f2rdv>m-xIME zI3N4xz0);Oa|62|UIAkQ9qBM0nO*s`aCw%LBjg~2Xk4gb>+vAcnpUGoZ@a;u4;ZFVFkKEF&uz)U3X_b#&xml?&AAZ87F8c&~BhvLkV>4@^*EMw#$pn zr*Fo5Zs;yG9x(4`H4OB_=Z7E>Yxn1sA)~VJyH3KilkzTksN40!TN)+~FRsZ9Pf2^@EFEd{#+4(}iRx(W`RV0Rv2Dv_Ws<5vNh^Cz)vd~Zm)m- z$JvoXU5a#X^Sn;A4VnaDua7!}EZ9G%a2%u~#P&2s7)0YR+ajStpFV=jZ{Ua${px#Y zXM1O|C}JdQAA0oO16F}nqu?t*LY_B5h%HIgdM2IDYGO#t{A~Nr+bC?6c^;fMskt9~ zGcm?=x3`XZm0jc*ipoi*`65mFmgd0CLdOUFkChf8*LYPt&>)IIUvX5`V90RDVzJ#s>&yvyzWV0z7BGTi{!Yw zW0GwZMZEs-q<`?+yCW_4_T-bp?KYe$>bzMhrb&FI%iJ)&_H{?W0jKMmOp_bk9aDh| zGlJOmH?b%TT2r#Tn7n8WT-|5Z*o`d1dQhB2Rgt!68lWp>XQC42kb$S7L<|;EgC(iW z?>6eRaw`ZmsVXRjLS0%lXmd+NMtTr;xem99g@Y^;kX%D17<&>Uso>&^SMHBi+`@ej z6Xd7(@l$-OIP*Ph>G~@8$OP-iv>|ghqfP zFIYLwW-WYPy*lc>Z8X-Hp>aQS8oUxtDZv9ps{(Xy{c4o3KX0q1%4FU(8JGRabN=l# zWV6X60VWw`5tAI_9QhDGKRN5@hR6t@x#WHaw`GnmUdL%1Jo520zXj=j z$LuoDW;9)eqtnWBR%@Fd(;W_KYr9LG4GXw;wdszUv0beb$=Xd(C$}h5v#Q+a}f^{BL{z z1$dlYnt32p-}}c8S(79csYEJUlSC3i$&!7E zkfqsYn9VG<6e0I3nj8Im0c-ImdL)9k`Pi#^}C~c_4)q%`+k|Z=iKK!&-;1K zXzYUiWYrjG7R#5;#DN~p#a%r@UP_FDm}OC>?=0&kp7v@iGH4tIJfwxKstM6{%Kue% z{EL8UNS2O(Bdij^1)X^F=XPgwYGr@dYbU-S24bdnz#@f=W}ygV8V=6{&$n-%T@a~J^I?W?$*hzLf2t}#v)@Vc#spdQQG;~ zr?I>nUWtZ*G2gzpK9)rYHV{c{*cR-}+A`nXG?JB zSmveoDMzYyvT z9>Pz7L9^L-rax$B(Yt@2wJJ%G8|>PVtUP?fPJKN>1mG#4$aU<~yYTsfZ=Z}9>r$HY zYiEOZ!8!(yBeQ`TV7AA-hhV1!7cv&jU1fc^S>_1&N4-yOenYFZB)h@N_&aT-SGzEA{Vj1|Pbxw=-^ zYICru))BMQ|U_^tjsDKU2g@RNelJ(u^QJ7~;@y6zDMmZU;=s z*lc_J>{Y-!hm8ES}h&S z?j-hqR@`3Yzm+|LJ=E6_svmY1fmmL^MK3`@KNX$SQG7&lw}goyt~Jmdk=bM_5m>A( zEU2HeY*9RAGFjm5WtkQ|YzPB*3O6bwdw6yi`zO}cDTL90W^;grJRc1PNN6S%kP~mn zyu>!@6fmxh4s2`9Qm=K(M|36!;}7(rp3l}NeDrz|m)o?u1RWebA^#NtI9M+loyjD# zfO!nNNQC6?T-EC+vOnqpsdA7BpL#5X&cPAr(6&QQGu}RI(AqHFRkGX7z(A}u#pHIi z7mU$ycr1lXMYHiB@#a3yq&xv3-0eLX%A0XD@v)sN5sE;-5sSv|uq|`iiaXLtCa$ZT+K_0VQ=w17p`hqT zEv^z=7%A`FruM0faW11lXQj|8+_EPM|5!Q=g=9(*+b1$b`ch}MoqTq`CEN8<#s|OF zC6GbEquF5c$&O!?ur z$`J?W?%ex_FwkrgXjC-(ct+kxlle~9clzT^%-iL)?_q=i(1Ph<9_44Gb2{Byqh_w( z9orFuoCpS*Mg^bj29<*5yOx&`&OA79c>G&xhPuUH9fxL-fLfPDi=pHGDxu~}J1IP} zJG0kno`+>ThK#0xJM#+xsVGWeC*?lx`0RRm?*PvT0ze08^Zx6sXQfwno^zQZz1{P3 zm5XKg9attavHn8{2|BWLD1`f8zuThHC*c;9GBSNi_l;$u!BFcG#K1FI+_G~oWyC6WgI$w6 z+WOUxc;2I~pC8_bAsPWpdKrlf+$?&K6iMEFeT`^&dQA0AM5ROVf6zM+r!-59vI^<3 ztXB}d`1NvJ2&~hwUU()7e)%Bu(aktg%bs;xdGew^Z2tLC{H06l|A0`bB#~)&V8(y^ zv>wmuBS$X$#O^4T84Xxi@&3Oc@JTo`tKEuLnBLf+wed@at>4T~aPVd zm4+YX?7W>Ok@4*9Mju3HbN9~QvNa%lTj;qDvOVN+S&2eS>g%IR01eLuHh**{TD}cV z?4j&9y(z2uc*VUoDHveV85AaXv7gUTxWwU4Ot;S7YQI~K`zt+_5P$dJ1zyCa z_I{i~t@^PuFVaMMo49oRZ0Ua};NNj6$~1juY;cZL+B=pf>_4{8d`V}s{Xve6_0J*2 z)Czu%U)5kb=VPC6=sXP2xQS3x11z-a$lp%xPngXAa6&PkXk-1uM+QdxpwfY51KU$_ z10GLreN1RVGsLw&4whC3<^ClIXs8roL1E@q^2v&@$&Y#Kv%C_dDR-7@E&(*GKMKoc zQcwZlfI7kDu*bsA>64fvgD?41LfkP<>%LSnqFI8A&Za_Iq^|eDVl5 z5TCF&_vcPxtA+i;rcl*=VO9Bu{a}$y1TW;%6dK2KH{IEkd*eufO_ANls%}Ju>;RfV z!2!Hj`wCYlU6E58B8Rg3(~DdahPq&e!r_`D;CMp=7jXadr~9$Snu(zgtde!w?k*92 zSRA0*={2R^)tt&&w^QrPf!oLDM%|rZ0Loo9!r`O&{h?7apQ*3;JPkV*Bpc&lmCp2{ zkO^$i6BSM?R-RtQ{wuw#?X%wH+)+2d_}1S0#Ncoo zf%W*WN<_0jS)~kFGitV5Z{E2*<*LZ`(Gw@_5tYq?%K7c@&-*g<6nsKOnz}pDWbf43 z->@qoE>>z_^hoZe$L>7cRMRV0tP4|vgK`fP3-EaIJu;X& z{e$mpJoCM(*Z%a$4T}FD0)_62Li><_M}ei+^G8w!1JZkP#Z^GGZpn=+|BHcZ$BeAA zNj>LPnaQ!%76)opbnPGfhmbg!MJfW=&TluW6zVc`JVLZgt1}eHtolb$2rMx6@@GZU zl(xArK}yhtI;&^Ra#n+)|J zR?W%RPy3AUYARY3$4`T)P?NY8i26124tmnWC6Ad*8fN1kM)WB2eY*6uy*oqp%{06gd z$t8gM7$>!VmH*hI(0D)7nyRo$HBVC|?kNIbfdP+D(2*j8hOh64ya$6FqE4&`5=2xE z^!*oO^Ltjz{fOP6b7)^uj#h>?_BUKEi5v<8(DKUywA#WzdRgRV%1hzEGd_FZLry}| z&{Q&DpPRS6+%faIr?Nb7-JZ;NIeNSU0sR0kcy3#GV2ElEW~7 zr%=Imm(X6Xtf~#Tw{`(*&_}n38sKaZnMwEJ{57edQ<`^q(CXpv%ehxXaYJvN_C1gf z`7Z`OOT~$B!lzrYKV^cS{E2h*2zX!#1AqMzip9Y|y$+d1MABR3`+5O9WC5Y}tXVXFPnL&Yb;SqJUZ+GzC%6+JH^qr_DjL@lg78{So0nej{l-3Aa zI2->y|IWqH$tqQQ53)iwn?c5dulbWVGOs?|_$%_u3BH{>0#y&EjQ$14G#@(D3eG2$ z?HU}IllYn;O!CMc3y~~xN5cS}1|=U$f3FF>?nr5ei)Q`e>nBjS!YVwhGoV90d9WqD z?VS7ynS#yWy+Ex_yLu(^`7An)+YYIUSh8Qw#RpHsZ1SQ#yE*g8 z$HOu8;e^e>!oWbu;vv`~9GW`7p#c)V_LKTb% zs&hWD_1-;rtf|oNep*2%wb!o&ZWKL97!Db#(`Q!fnCTX_S@(ET3`6LN%HD@{G&PtY zLm@l*4Y%CI5@p6Z@_2LEduwU^aft+2UhG7}l1*}Z%X&|iqknpr*V;L7Ldh-hF-K13Tf_4+FYb$Yr(arZosFG}Q@B#}y?S2f#G`jtVHxia zwbNu8;N36u=YF|r|E0Xl=le3W&SzQ$!6wv;8@hNJI7G-A4-y}*n0Hint>2)kQ=@ho z?v%Y~KupkLuU%))W5W!I`&vx(q0{~MHX|aLfCq0!k|(beJUh>F9(|oE^dzhCi<#Vi zbPpDkXMM~BMK~7;A}^Y11x;kvWQK=dyZ|$F1`FhFy+qwmm8&qdOa9)S)ylsz=h(;^ zIT$>O!BPVgysb`8M!P~JV2Dlur^h^RP~@!SZ8i~0vM2NPNq6OkVRg|MRVsFvWHVNG9rpG1+hm*^ zQ?zy~oYg6QI3R@ylukSBb0bY$aAt$TbRX4;Z{J@P>Tl>Q&_I2D@x{THlRG!*{`|$8 zC7xLS0l%dGotRcI)4LzNk*JFE7nY9=2~Z#8r!Pkk$S9$p(g>y2ch>|(^uvXHl^s-? zt;fT|d~y}V5sC(~`0k+&%|$BeCA-|yvKj4qQDM`Hs7x1fGfIFv(~NP;o}GT7 z4rHDUObRmZYYu_|G8U>mS}ag*tL4YrE*e=RWOVRdxQQeGriBs&p^>?f2zW+pd!OyL zolO^6o**cY+}X0*lz>MOV2ry$DEYHeVZabY4gMq%byO6MkIEgTA)yciyVDU~P7 z8F{zj6EFDhj4=t{r7cZ`86O(BWh8a``#8T?#m{>IQFrSF>M~GpyGQkBc~kz4%|&IS z*|&Pn4J$i223ITJh+TuLhiBrneOg?{jE5`=IC#m*{ARw)@4ar+)nU)dW<_d4^kKMTB6!y% zOm<$~`X(hTA=$mi?ZH?0l+b*rAilY;!NsKRRZ^T|#ldHMtM&C&RR5~blC|$=1~_;^wE8wZH@e&qPD+2F1d8 zfqO=$+s`|F&i5RC8a%oqO8$&NHEbE^YzAmH{PW=3Bqd$KSu|uDF{fDU+C4Z+EJi_o z$hI>1eUI{1kg`_U?I7+-Yp~`)WFP4CGJ+c~oW&F#s?reVRjiiGX%Kvw0qfjrhFZGM z4_D;^Lxu^ZWAwv;6F(Bpm?JWin+Kuv&Gl`F8GGGnmxAtnu4@>=psrE*RLz%LExp8J zp`^C#YUq7k+tnTehA(G7zNr>Y@LA=w1W>@0tgF9F_cj!M?DQI~fBg2T!J7%0N*h_&2cMKAgnZfNMy{|gO7$ZYJugs_wSId^AG6RUd zYrI@FQ8HYWFrC?_vj3|m;la8kmFrq2)KsQg=6ZjXWoI4ia@Lqzr<5}Z1D+sn{r4>& zN=vTjUt1mTSpG`=q1UnJut>q9p>%G&FXUHN*IvO%mG3sbl@cGmX`O>RT?S;T_W61R z4tk1$r2Fe{C>`Aq|Ejxa8?4fCV8iARqp{EHFLXJ~y((~cn_Ar0WRIwLHng*3ZN?wdy<5}}#22hap?OZO zwQl0LswnRcogKO$&G24Qxwm!tRi!;Uj*Cm92Gq|@kxQ*Ia#P)w0PbbYz2tt2{p+Vi zcWX(=pKKiR8FZ^U1_Mkycg#qIdPtTl-Y;Tb)}EzJ-n2v*NKmPthJm&h?uL_dRaScYlcJ6f)Eg$usE} z(zd_q>Ksi!6>RjrY+i~TYD+l@Q*ZJL1ayv4BU>GzL6s*YGqpC$Z9o}Xkr7XF>r3Rmyi0C*nYjG5M zx+-UN%;Z4!?)TdATB~mzNw~Pd3}F~_;E`Mv=_8$Uu2!xxbn>pA=gNmyVH?RLGoaXI z09Ap4je5>oQ_e0s^UUc~mHKOWUf9eqA+y3r+*|2;Eb*ArvUBR$rp-@0t0L23mE}*v zf*-~HQnoe{nu!~GCBJO>EIDi25051ldjZU)P#ceXPCle*``P^q{8nQaVdTR((2I0? zBk%dsHvsQ)TliAKsx;#-5*BcC&V-WuRw_O^FY6RVsZ;m0Ha~V-TKAjAzbXq&fGjW+ z3V3k)Gf$Y6d7+Ph6kV4&C9tcl&uk8XC~VMTez&PO+Hr_&@Z5ADf|>4mqVyOdQ~&lN zC!ZeVzapc)*5=5Nc#e}?U>%zQ=W!N>4Ft0iV_qj5aR1?#@x1br1+RU0TQaO-(G)Z| zvq8!;=Y9_Wity<#i-QM8|>f2!ZB@u>n&m`YpW$U+a#l7NA&kTC^z#}CV0p|yrlx`EdCWku(>WdT=s{J$ONcKX*T^)bHqzy z^O(dwBjUpG$Pj8(9jue^6bg56<>wDhWM=cQteD33ZX+1gTj9w}S^Oo0Vv=cIsKqO% z+z&5f4Vq5hA*fA>IQE9y5H{w*VZtI4xdjRj&K8{#`S_&cA|Lf|?ZSt%Cj^L2I}wCN zq~N*toS^4($JKR{V^2yBiyd#c(|%0xx*+U%SYBuXfev-2zXJEKR#nka(?7h+9@Bo8 zujC7zA4VA5`30a=#ThAto5f4_$RF9rN{$hxnOZLa92yZ1SfiXc?2&tep8rXqp@BcEJddOEs?*3`9RP6(DCx60?`?a@JGs5JYKS&$2-WF*C3yYUJm z*l*H{36J3ml~7JVAgDgRd7?3Y#c4fbG#hS*V}br<-> za@tgvH@QY6BYWyYTg%7UsG8!~m)^VX#iHOuIG0yO4faOmm&}sfah!=My z=KMNASxvu$EMawZWmO;M{}8)DXukjXCx@L5oD?~lA{q9>KLuxEk04M+fUG6dRsi?) zMs{Z$8p2E{X+l5cP1EjvYi#~6g#$y|jLC<_PE6MP*#6G3!BBfd>pEO@*=UxRFPh0D zLpxirzLF^&tIFpV(Ykx*2dRmT=MKRS#GTl9u+bQB{(+m8i0HE+){0f?BSv3N&|aJ3 z{~=I|1I0h+(05(q$~SXD(*HpAsCuujo=<@D62wFk=u9dIiGEY$An5IIkKy(lM4%cX zBXk-N#t(WZHW>@XjR%+ouY*>5^Zt3QGwAg~TdvUlAG3Hbe?`dt_nXm$-IgYzBC@8O zbw`hm!ESA1hMU424;T~4(kv}nB1B@kt3K@kPk3z*lhI%a(yPY1K zGq}s?6?1k%0BAAQqQSX$(^37 zqN8)UhzcDFaCPg<@2`(BI$+*k&wb6%mQ52*@Vx??%JD;CxziCPZGYvR#dT*%9xBI= zT^--8AtN2~j{!Hnr?zhG4vGIRonw{1MsOj9{e{7~6ON9&G)Z*7R*D}13q0YWgD+%ynUm0?_Rk(zUx!z_K- zY;o+{2md^nfXoDoduiYA_u+`;CGXwB22pl|pOlBMq+{X4#^w+)bm(|>G9@>kd362# z=fLO$gN!tTJDM2yYd9DVjm-g%f^LC>Cneardqvz*hS#>cew7!70fH|WH?xouOLn-~ zDBXg!J34%CUF9$Mr#KuMWFweRq2o?$xsF28)U;ZIcgN`FmwriS<>_yV+=wbL%B1`) zclPMVx%*GP#&ua+^41=7A$00bKKhIJpo!3$mToM17*BmZ)|Gd)r-V#)`?RVK{F!z7 z9}w`>RjF7DR+(!1&z72x&+*%NKNdv@s2c`K&kK9Hv(gWf6i!(z=a0M@ZiKl3>tqy_ z>jsa<+`2gv>lvN3=}A2)OkMuwopKC9P@$Xyoejt@ks)K5xx(#2|J@L~BpInVE1FG1 zP0b$}gk-WgXbRV~^+dOgO*+`jJwGCySsM8Hf_~q$- zx~-yM!k1)%-Qc%QW8*gI7=&T7pmis&36WBetS^v~s3C0?y}OQ<%)1>1a3J8=%4yG) zKbV`X^B2x#dkr1Cj|+oEJO&x$^ICm&QaW8Xsvdq`q~}AbyTYMr_(u-Dj71As+PiYq z$>&ckho9b<+4978A}ht_#9zQ~aiKxZD?F}Q$Y0vLPDAy{BkW<_J}i6&{LxGr7~CWy z^y{SuDxBgxfnB?% zd#t5A1!AlkM!P@5GTo01t(qfuLwijG@+#^29K+z!V_0Av!DLemH8zi>e5 zQt!!&Zd)Wv&E8*n`?{~lWsS1sKbVI0ArsNuFh>17gO54RFU-Ng^b=AvFVOaC*R-fdA@JHdd1%97t_>lK2ff&U488kT5XfN- z;5ciK0oKc~b_IsDSaT}|Se9j5h%9OPXqNr@k@82Hw7}5aY>9mD@sZR5E+3fpd*kXX z+ji1}Rk4*CSY7+$9W+t%AdO~9h64lxrd#!g)gRv#m}ek*ky8$omv+o4DJ*mXl=J~i zGa`FH^n-~G$^z3JFQJi2Y_hB@OFYQNuum67QNWD0q-&BWbWZ8OnI_i6z)jyXjpWAq z{Xoo(J;0Rgp)n4;aL&Hg$}m@B6^q4`pJ-;V2^_s)uy@Q_;ea_4@hl8+ zb5H?y0Rr0ziXHhf&3XY0PtaA@#$MK;zl>p^^E!iM$flMalU!eD#9eaJxuDl|!};hgCWqU;qB z+(;Y~b(mybeMCx3seOKiMnp<5C&>OAEK~euy;bPK;61c5bg?SX+!FRuDX=jNvvVuM z*I3QI9b0;YFCYy|h83k;=6A`<6PvKV9b`-T_0d}6LJr=Xt^uoFh9R97N^sQCN#12s(8FHT$_Mi3OE(at*4uGk(GBxYN+^bWj%N(A(5YU-D z)g5i?SS{%Dy*kF!Ws&^_Eu}f)yCQg;mC!+J!Y~vE@OwVRf3;wHh}H~t5FEmG8OQ|L zPD4g$UtL&iN|RPl``wq;$tJkNZjZ-H-v9juso9npvDhD^=uuWy@q#*=Epa5ng;jdxgwoeIOX((?>FJU5rMXY zJYD0T%>(uYTRN=Fv#$YooUN7LZrU&u#_#hKr-61LH32eh7p$!&b*ofqQmctxRlP_P z2P}oyvK>(W@D{t=)9p!i?8HeZVJ)mTh$P3K&-r}(JDo6BEM;NrI2~YIE@R-ilAvY; zcqrwPi5OU7p0jXHVvs~EXheW!ika6@O8GqtMeM_+2^8dmgiz~c1QeauO2oMnl{yVp%MGn9K<3)e%(U0|^DO!C}Vq&Jfg#oFva8MOjwV)$7BP z13(kFy@hTEyi~ym?(V+m%`^N0K%yA~_eO?OGA_+HDa$=`O@tsS7a5H3A)yZbrYs6m z>&a<%q~CS4510>roK8)J$G`>F2}B5{bB#+O3}zg1Tn;If3eI2Zwv9HM@mdfm z;d`dr1HWQZD4OLaA3=1(TU%{+uG?C5|2A7~z#D9>wDz*KTD_C4cGXr}TV)$|?q+3Y z?ee!>eVu^5|1EwN=b)J4g}M6Q3tK%8-!;u`S_wx-`c|8|^;);(UN=6j8Pc?5ay7Yr z)eg5ZyC+jZxMmLSZzbWRzQgM|9ylva*~!(nt1&JL0&n=y3qFtGCz-Pa0hx2ogfaE}N#@n9{V!Mk}x?0KQ`5PVWOjsFn%Lw^XyFwa{MA(480O%P4I0zIC{1L!{W4*O%z zJ-m2&AZf~$D?_<4UNK}Il3C64&ZWYJAW}CbT#zVK1iRvfPem9T?&w^D5^N^hM>+GI z3oL|YQiU?x zKQOz+%U5B$7jE6gk?aN3vfDn{CTpBTiP#sA)wZhr@d{9IaAY|63T*enZEg9^$OTww z>=swV?S6HgziRM_a-{@#oHH~qFf%bx2y%6F@paY9O<`!hb6lgLZ^QP*jT5#V?0R#1 z+dT1pLx`gI#FQk4iX-7AN#|cNsj73vTktHN&z!u|1OS^J8oay>c$`&@F%H5o5CnU_ zVx@El@`sePydZ`YsPaLY$Go$I?=?-5_AG)N-#z?Wgf;e}=Kva%QlLeK6 zr)KyV_jrSg7b^X~I0j7|n{_Fpb6tlUziY_6uvl^KD$q=vVT#4i44Xp1s(C)+s}*b5 zCc;cjnEa;+j6o=Cp#5&Dv7oS_CIo3!M)EfG?g#KmOe49B0eGBsR@-jlHV}QbzG9$w z*LK%huM6}=Y4XtB7T7)nLAr|qO@e@yXqz=f5+r5UP10}g8C`5A-3CY`4d;61%rIw# ztz0RWB+5l{ChBOl6=jl~kuqd`DLq9?mDos%YZYi`{bovgThmTyO-9O+71mfG0c@YEt&&w+x~k|C|o5vTxV7L|o_2D-%y~V`--oq*p>4d!p2e$kf#Wl(EYb%ibu8C{HYk+IuvS8u?3$ z9G^?AjHD-8SR0v=@cMLgxR%=GXyUH1;xDRX2x7&D%D|`AxvRmshP6%<8=TQn0Tguc zq%6QgodKx`>p#n#Yg=~x`BUJ;oVVyzkO5o`QJEDw^XsSIuPJ(A0+R)18@XReljB!< zE{Hkr>V;Ot3^i|A1Qk}q+%SS$>2rSX;lnqnC34{AqMHVRpswwz5Ha5>Oh}h9L^yCY zN-V6~H&x9_O-af(!BvZ1E839E0fTn}%qz@pNmxV>bd&Xwv zMRo9(9reE9`djWA)5_L{b7`Kfg%duihMBx2PJDPN%53LVY^rE$K>vJa2jDSZ0ho*~kN+ILF})!`NF5ItXx zG>L^%t_Pxt-!KqMtvR8}mJC;I`r+V8w%t+}&K*bO<+@~>usAq=4KP>01A*7Czx@Pd zWW^x2v)O&{R>09tsF-2@WZjT2u;e#{ek*;T2ltu>f0Ru6OF;hR^zlA$n^owWBg+T= zOp@b`KzGStl!e=FzuxD;$wDpn{bI>3JHbO&USsfGo)aI{i=rySh~B=X?lSq1Bn2)i zN{7vwN)b94ymT>11`k`IYpjRtBlSyvM8n77m|M^ZDAP}3x1rJ1&E*^chI0-*ctp_g zjNZ+rDW%ilhsk*(Ua>gM(`kBlhrh#lCkK3Ebum9zKVDq@a<1OJo6sY~1GO9v75zgq z?z7Hk5L0kkMTn=>6rLvZ+;|vBjd~9HnBTI--Sg7I^%kv7v$U6#z6rN)!uU;?+;gt; zDY@J4@26DZ@AGJqXKDJJ3|i!p!TEV2gD8>&)E|%OJN_NATXcCBy}S z(KqPh8r&SLi}VL7snhI?Uw6gi)*_2)Z>}HwDmz9b*d*`){;4w5N2GABx^W_^_$ZF*SsvCna zcb>NHish%>>~wdZ?dK8w?&savck%6izPT z%?17S8S7D2!yf5yry^ zn}=l_XqMcYJs%km@ghR&`uO1Erzaf_mO2p^bPKzfx4(K}JQo!R$b5IlFv!`u_dP z-`;j0>}m>0>^O{eNAHFaH>5tYm5z(7Jz=Xb2Bf%9teK5U_r=zuz1~7|P5gg=MUvt{ zT+yuOctf-?)x8r=oN#nj)`i_CO#pr`b>34#tuu1DrzUSl$I2m@akdnlJApe9oCRtA zyrC6rq{|ZWh4LyV*}{-7wF)6FylcwE?2iTI#zuxoj_kL=(GY1-C5g0nxbCPDCwkbx zbjI05Q`esJR%~4fL~u|ghJC85+%$zuEbpBkf(%i`E;9KIQxOnCuB^pkAEK@hqFSQe z2aNf_5Y4TwN{{u{STcHvKua)d*Wr+w0`XuEOIW$a6unkQqLpooVTmq~w4iA=$_~yV z;C1qfs%Ynq=Q3nRJLE(MqSA;nCX*SSkeF4WAq6un9Q|eD5)lXsT@+lKvU~^!rH;C^ zRBl6f1=iHyF5iB5a|JD8Q$ut>Z)m!B%%k&~%nPI-N80~5%+7f#31^I3v1dQaF9_?3 zv|SEa`%7OsSxSk_V~Kat8Tzt*tt%bdlwm)PFETB<&De-ej*|R+CZ$`qFMLnrTrtHUyZ;I$E1C+CslHArS66q-D+L>4w;&gw+0t$E;^@liz;pg=`HKwW(f)R|EI$$ZiK# zcm9GLpk{zxq^d9g+Nko1L61hT z8q0cmO|7zcxOiJV24#36Ueku_0qaAeiBcrH%|n}q(hS-RY`s&EXu-0s+jjSC+p}%k zw(Z%rZQHhO+qP}ncHds-+}LM7toIQWF~+FOs`&oQKR>_TghNDCU4S#cfDZv2Gw!z) zY-~zY^)quutWuh*4KK#u2$e0iWZQ_w&G*OxT)lR04DK22e&kmQLXTMR1^<^v^NpKa4*okNpN+vLU3!Gco^ST-6ar#ZO4S%6zs@M%V1F z>DE4&Gy|)u%C>b^=ISm)(Y!n^0b|G>mlMtdU(T9Hy{|)ZYUWVhzS0+YdO8aon*xy} z3cZ<{Rg>nB{s1zY848vDc7Xl=Wbyyq|7}xmvdoJ|HSNvsK3tA|Vyc;1l^3lbr6I`)tp*F3B$bE<+_u8!KD29E@@&*Y8sU#0veDXp;T4 z8&Tx{zpkq&8?C;G_=~_$r+SU#=DAkB!)=fHRYgrgiG-l>;RW5@lJm}&>oo2RO_^C) zX+Co3BUxZXhuAiI~eGEK0HH3h+emrjZP01!KCe z2|HQ5@bDEF`xO=W46pCdUMNVG6v1YOsl)dN@3cFojTv2?R~1svLrbiIx{d^ElQ`hE zS%+~mIzj-m4Dx&-EjQ{&uL6b@mpEUX3?0EPM?>bYrX`n47eOra?f2o?dc2%1$&SDY ziSHiHCd|K`=zTQ2bUc3^Zw;7zba=coXwmQ_ZA8QOu#4~wNNR`h!%ooVt`ByL=4d8B zI8X3{ z^kk$Z9z?`Ry9?}DVS|N)1Z75DL_V1eB$S1yUV;nL&^&#eEp(f?2@aGlN-vi)?D!o0 zY9{Q?TIcKY?n&Q(vzQAMKnwi5L6&J`D&wCpiMmJ74g)VB0GlLX2qJNQ%=Zvb9Vg-@eLZV5i#-ajB8Cuz;c~LNxJreL-Fgkl)W%BKf z1t(fOXqgQUPfOZeYBA*0mU8@%lp0GkSnPdhacFa$O}btT6U8FI(ONpB6NfFr3^YYJ zNvd(XV~1?SVRh6|AqtvUtRa4mNN8IpAYnQqyiuTjy(IkR(D6}$%vCi9t6amA4{ zaK7s9>Jy-t3ItHAEIuN4zipuYKs^hrbU4u!sHDR)p~bmMeCpNLxt8vYA$!yz!ExI8 zGGkTd5c;7Ge7A1mV0}zUj7`=D{v&Dx>$bb^ooglknky{kNLwbtoOXOwlZZv1b8xVY zI{q?2d?hD!cMO4L$G~x|xI%HOd1H;I*c-~0#(@Z=!Wk%@M4co*2Q53Bw<{|bbEQXr zqpZ|){^O4Otg%L&IRI34;7uxB*2GuR0>wiad40Mgscz7M1tB%)mX@FwWH3cS!6L^% zR{x{;lFjp+`3JLk(vi>82PL{!Yw+DAWSjIlkjB<7Zk`}ljSYBT^C#X!+?Ca zO~Tw5owI+PC@S^YQB4*3XPS?uO!o}Q!_msx4DG_s#MsqT4PHXV+DQdfdjMbX6=6HA z>v-9qPsQgs&k>f(z+1o^tlU5!v)VA@S3G@cIn4iLms!afsxhgV30euG)ffFVm!t7A zq-sp`h6py)ET6plj}8JM<=BdXh?)u=Yp4L-w-)n)AtbnJi&w^zXcB1I!;Pqtyl_MZ z2BZkZh$kp}i3P@o$MSGSbmPL!3=Lw2aD-7-j z4cx-Y4_E*L5`{}H*UX3*+EOVQscEsOm=hoX+))t2x?ihuWrhFiCjCI!JW9+$SP_0e zI-mRH3m`m~ACl{{JYy4~nx>MOFh9Dt5DvwmBFmd!3 z^LKm`c8a9ydwEWjh5N&a24lbpTSAiT_8>V$ZuAH-tnaW6(?FTPBzz%CFrP zWr#@<*tO^uxI7kZ%F9rp%K!+;^m<5xbY8X|rRybChDz}QEWCPf-aylkakc&6u=*1f z3a@FV8;(Sf1fZvTxDmcR(5@Sjdph9QPk{MS~q7)$Hc(guzSc%@2}1?oAT@c^QC1G;M_v)tA%hKKjL z(X|^C+lcap*?|gxWj&tAJPpVl4K*_cvLYNanq2z6kzDG+-n==u_Gb0RSaAC5o7~IB z+N|;pUW^2VR{_@R}ie_;45m%O&vSS64m zjn&iR8!?QRIIYs+);8E2HZCf_xo)MCf~PFfQI9z{W&Zru>4}xwjn`|Ksj}v}{c@o;p3_FO>o3etPG)E9AIZuNRAP)4H9g@-S+`^qLhsnLhpWgol zqYCM}I}fl1Wf8U2x7n)ENzWSIjiYq_AY4@r4KjFdI2IP6|7ZH zYS&k!cUlOaiYE&K;e|Q;D3ARGXzS^e+}i#h{;ncv^GnvcKU8aJfF!E&i8eCiK~IbL zXorBfIsALY8V8e$LE^TfPO4ZkJ(#K=s@I|5V@;Z2OLC$tdMeNUwB-k`zV}A@h z4cPPs+Lp840LqctDC)q=2(c5(?8EjlQ>D6nmapM}z4p(oe`fU5N>R{kdj{ag zXEb)Fuw&A-s4`m*5DsHc{K10Ju&ky${_QzUcZ@r!zn>FNg^TTQV2&Jb4Yx$3kiJc> zgL4-$$U*LT5izc0eZNGBVjJIA1;h?42MG=^8xQyA9vw>uTk!yv`D~M22ZbbbJRDn^|WbuO^5%lX0YC=t??P7G(t(4lLfE zsp=0jD@8FDfA2g6F=t8Ea`v<7GEJljK{GMm^1R4{(s_&6%Y#o*mM+$xCMZQG8Zr-D zrWQPW@~qLTq4UAYy^-^Vv9j-9m|&OLk2Sfx;5WNXqkc9@HAGy6%Bvn;?dMctLAkCY z{8V$Dn=WU`tB9MIR*W{vqU|~^yr4wbD%Kj( z_vPYiuk0JB=#9g)qjHn^a1E&u_E*FPon z^r#-6d84vkPU=m3ETen*@ZiER`-PAS*z{v)NJpq?TJqp#fGX;ZcO!xGJWZ8$Ru-Yw zQ*CYJHNsaWTUFjztN2;j9*63kVKc=*TL-ug$FJ{(N3h_zYxsvLmZ0p7 zkeHH^oE;youUkOtzd!Wu!3Z9P-i^>|ss2-$eC`2UjHuvT;;zU*vU(Hx%^bZX&i#pQ zP?ZM5_!cRH{W|mmd>A z6%6!Oq*{t8OafoO)<)>(HC|oeGwN6NZFbh*C`kf)!7)yBE{U!~$SksV=aAW!Y#2NY zgB8{)4RnJ)Kq(#IcApN50bb>#6-}M!X^=_fOp~++m$cJoZbmvDVA8}b&{?IPDsG9? zHIpkH_d8n2>=&mqV;@wwm&rPQ=;O6RZ0bil&>hY+MA}IvVFJe9R5mNp$oxZ02aRg=Vc(Tto z8lP?26Iv>Pid-ynuY#mOI*JVuN?n6+F^GZ_FA3kttI7alXJmri=vM{xYPyVnlgY7w zDoy4gRja0Qkg!Iq9W{WWA2l;g!v^ZYz#__f$!Jpv4~#38k;4QVHw|Kdu5KTR51-kC z4%RIcgg|O`*qy04>gyc|=wbC6`0~R7^%0*R8w)d^bh;GdF`nlL2PTy!_qju;<#SOh zP+Ct+%RBfJs}sLWzdT~!wq5d(N}bXREWx=t#3gmdguFy^R3c9(K5rkk$3G6O=6e}W zb36vc1BHu$OLT@>AgHIscM|~g%6%mnZ@!TntsZ38)@$yvkPY$%&dIm_G3?SM>?VZg zhVn+%?sm+6xALt1;f3c;_3Spfj<%}Ok7qx!T7PgDiq_#9@r96OmC4IA7D%}|#u};h zQ?O&RxvcXMKjK-+r#{L+NE$^yK$>_|BT5dHl97tD{=8ooDuqT5%{l!i5>sbnXnY4R z&u_%9Aun&Hm4^fhX{5Gk~w4rXememTqx_+F<>ER61vv$ zUp!!bCt@6<(BUO`sGj7CC5X`X%j2b`9pYI|6Q-X>A5yXOiC zML*5^$xAWQhUf+thJP$-A0&M77BOAIM+5aJv5Xs~g)UALBVs}THG62+ zbg9xrnyJ(2yT1SpWk{?S=X%4v|Uz}yoTX`7J&dw3vLmZr08JmcNs!sCdbVe?DK(b z@*EeOv6X961A?d;V`fluWdl|H(|g_+bAQ|lggH+s6mFe&i>q}w;99s%op{pZlFs*R zHFl=!m0Aj?s*$Z1oyrh(aNP=w2fY;ZvVNHj{htUxIND`n;(~Y3S(cn!nk>rY0OMds zYTqb6vZx*E+xQ_uKA=$Z57Q%+6P+~(y*5KK+sh?N4YA&wvmCv9NjE-7OvvaZcc*DGoC1=zst`yWq{X1pVH^ zhmxj#DI1LMjXM-jH&L&p&59nD+;5$mAnk@VKOiLw4s;T+V0?r7=s?W9Y<-b6sYwWA zGl3)#Z+!j~L~Ff1DFWu&b&x()_^u9nK?IA7z(W5E6v2lg1+We>Di!XmEuw(rqqc)Eh6SM@x3(b-5U05YS1@)-3aki>B@n#MqvXigKO9GXc=Uv?d^3%%>K` zC)<&=H9D!9rn8yL-L_*nocOd#ebV&6UKsNhCG<;&Hc8E%Ftb_}3}PR|OwaB5J)vIy z!Ddr}RXV7504V3S%!!Wj>{jizmjG5oH_jToU&=OMn3W!oU$k-av`^-ywb#UsGe=9a zUO)Ua`_U%9Wq#+IX~E|@0)Kws&-_~EsS9vFk{|er4o^i6bpNhy6R>D;H!-uG7`LNU zo4a^nQNMrvxmoF5eUAE4QnlL}S_D)yfnSLK&a2|j$hO#N>1W08V_CjLtAc}pZYFol zw2GUO8K8q1x$%NpAh5y?Z=}?nXX*pSw-dnb+;>J$XCO9f@^^KyG>x|&2pN5z`B@D! zxm`@-AhYnCi^R>nGcPDRA9IUFQ`H5njWR1GBg9D-cL51EbkRDVJ^4>c`p? zSdD)p)>pEjPOP{)H$feULaxU7Cs*8MOsVK(IiEi~05BgMfdm&#HeAS^<>+>|I{su* z(4W<+XDj;WDD3pkx1;M@mt^~1c9!fd3Zt@7KsPtj_vPW$UaU#<5yG8w z>AuB;;~Jlz6v-$vSPIl5YG8OhMhl6tEr7vm7&{hn88)qFgTn!iVK2&%p_;Vi`Y}*~ z$!$?-)u6;}AJ2z;ai|9De<0NVL);K(45|z|IE6J1>71MX7GDeRR$2MM@WOXtZp1JY zl(;2JQ?5>mLm{#`K>Tr;Vo>#TqOf{@Fv#k)Epe(VbX4ukQH3JA(S%6I@xWU_YQ_opNf8={-nYnfIP z=3~a<@cL^4BjmlD#@Fz)mU?&T%sc%)RR^9K`KHAUCV3UfpyN|&$yAzVesqr~F?UdE zXsre|GQk4gRTLrto5n=e8~+|mqhZRbZ{tXZ>Z@a0@64(u(@;sYNH?ITeTbT7wk z^9wwXBm|6C6}{qyk569j%#VD zjp(w2X784t`I3y0?De%Ew?y!H!r2lg-HP@*asTUfEb1({y}%jTfDPbQ0s8uo_b_l4=Nm(;mI)7Tl>4SJRc? zECMlPZ`%i947cXO&`d)s-i@@doxi@8WD#QIUH^0T8pU?X$ilM7LpGe>NgXMIIppq? zI#%!mJg)IyYW&?7iYm6^(vnnDI6!Nx@&|xkx z_J5j{SEj~fWo4-qMrkEhB&o!Hao`f=*vt(1vg9P?+{73ajrf!#^}NF*<+LMM+99w? z)ifx;ch=wK%Kw)6TffeRsJ=E-kr^4cQGE_`CfyIe(%F7%tOorD4v#EQ&Oc6ab(QbKfTbz(@X|_PISbS9o?A0=laTbk5;6jqXA?2>Q2+j{cxg#sdida* zHx$~(dH*T@5r4hA0}`<(5`p5iMl7*}SVL{fkAtap&AFZ0WNO|IIroAJ-LxT|aEEV#% zRxDJ+?vabwFVR;*u%|ic@llnkJZke4kg?{@}!B-Jks- z@)pb*`N^GzhMC1?G&VM6ZOXWQIdjU=8ZF2;nJaUtHv+3{EJFX)#q4pqv8|QU>tqX? zk0^S6!CzGjJzM}CjPOflKO!(zT)WG~s-#*UbzJ;vJ?zz81U!t9aec_oP6MZy7G?8X zuiI7zB^p^~EdW$;n6+LZH2I-%bWyH}bsjK(4vZY6PG#@&7j$nt0tLxGCul%P5l&wV ziLdRA-{DKBF&Q-RC9i{RMZf)6ZR&+Eef7YfG2{0l96=J*72Nm z@Vu8c1GilY9BigE%SoW2N@g!Hl;8rXuD`^mTg`%p20VA7ld3mB;fyD)8fx~L)#rG9%g5;kh|g(wz7;K;@R z*apUw!!9k-IYa}h<-kSCGM0eX_K~*MK-fweX-^CH7LWUl>xr*Y>jMbEL3E<~mBQek zC#4hn%KA1RS@RTe)Z`sYJ23JAjbgxKO2G_8>%;=*(gIqYQkHx;=mQk?02JQeOOXG~ z9aF{+hO*K@3OApo%J!|Ni7rZg)soXZsxDCJJ!G>s=9Td~0eQ+Mgh zbDBdH9Rb6-#kY)-x1#0X&E^#hnj&LOlJ}5=&0n=Q_g7kTt%5#B6L?%_wZqiDOhfD{ z0KyH(!nLgk&=|5e*99U8G&hki!VX{2dwCZ^qJD`SP|YahVs*d7z8zOZ-$F z(*3rc%c*7js;j7*s5Qc%pg}sw$XqVzSe)uC;Q-t^Xs4jN;Zn+;b4H>m zxKY2SJNHUzdC*mDt;Id03V5eRnHo&C@(88!NTsiALN`(m zS*vZQ6**BlE7X{u&Ano|L0m~wzBC}aBXm6&j8%I#13WQ*2J=dsXOw@ig(7QsbF{8e zZ7fc5p*GNmSW#5dI$WoZ@4=@NUZe3sU@$PO)hqi?NXT$#Y3196&1*SE)V~zKorh@= z$Ou%w$hn~3JHF!F?PC3%dw&gQmwUHQR?lP(t_><$Z^hF)$iVRX3*;ZEeoL(($o{pr zYkSleleKOq=huO?y`M~VpYgSS$P7-OAcn?J{zd;SuwON+6I$)h{gEtC+ij6aa>P)% zYfy}Sb$GSJ%(#R!RgJv=CBpC0W-9Q^(e19y80o6gX8KfS-gWQ;10duOq<3zCyJj9~ zYC3GNpn9Lw^saK^xRK0T?_Wz6Uk!>6cXYXC9N*8bt&tNTBL0g5f%bJyyu-V&@L9tJ z01=Z5BoZ}z{`V9sM(EmoqXpmzo;WjyBFpfIM12ucI)1@SU2y6pBK!cj$AltQ>yMwQ zNEOQ0Dm7P5gCwp_9&31-eFxiK!f>&w;foS%&JUj?n}~pH(3)CdQP(bRT<8Z7k$FH3 zR7+jK{!YY@or^Lx_COYXfX*X2HELrLF$Baeh<0v|oRw2x;cqk*CWkjYhn0zp{^`o6 z8qR30^XC+W5=!`|_X4nsgmAA>fd&^7n+}0{vP<>G;MM7|mz$*b0g80d&WEqARI#`l zwd-!v7usY2{Kpm@ThlclT7DWa z^CF!M{TYl4);0Rrfl5Ik3^xLBCeL0EpIlLaWZb0Lf87Kg>iQJc?*t?T@Rn$oL#ens zVhOR1Ye}(^=HGK6S)cf_6o;r~%n5uc%O&ay8YWa5#%p>w#R{YCkgK25(m@g70tryK zIEtURP&lzpzkV$=jdR~e+_hiNUvr+neAYOd(5UyBEi51Z{tSKrb`gViC`x9KSIabA zwB8VG1EWQ%Vg#q(1pLI0!@tTZiNRW36N58ggV2^bd5t_=v4D6_x#k}~La9tir8sN8 zlYtw{IZ#3t>8Qp6XjCKg+72%j(XiP>++BkO_2LCq|7vI4qr zofJa&rTEoj0hAcUubkc8!gZSWX%CKMm=9c7L3eX5ZF_wyaa!B8>kDWi64Xk~)Q&aFtfc|5B4W3v_Bfc4z2 z0p54<&k^FISt^p}KEIPF76RzOVydpXTaO9Twn+d3$m{l^_M~RbD~%B*UfRRTqS9%u z%GLjtv)@I!akt<7+7`HW+CkCQno;$`B@8+UiW%Z4$8g+^pe@@DnB?+)ech5Z*%Qyb zp%ZgmVg&AH&EpNr7Gf8GZR5{3jls()PXW$N9~>2hXec_kwM4-0=n&p-MowMsF1Gqp zkuo;l9&4d)#*ephS5df}Vuy^$LM1*qar4!-t3|J?_?i!>I+Xb9qc!? zBc?nC)r#ii(5)m%QH%kRx!_^ziPpe6ta_C3P2SMDV%~~#*)g0kb>Y@EGol(lopKEl zn&4GGcK(&3ZoJj9C1~`s4UGX5R0$^ir|1Ep1TTYM&j@vAsAH4W<3~aOUBNc^0w*Wl zmB!$_G2ofK;>KvFTS_HR6?T@R>AH zE@jT4k%trx@6fNs$E_PyxLc;q47T zQ6a~D2XGv)9$c*?`wy+}c(-&VAUrXVcOpXAMF4Pv`@exfVn)VHAiZ$&Ck$)? z4({0A)cQ^cV$ouDUd(4`{*eBiJpUIsW)D55w!pdS7^7U29P;QIdtj=D3;bSW<^A+2 zk3yf|+QmY#FEw&*S;8|JCuq|h2#3XmOPa&!%9R_pxp(()wU^uKw8c{2Bqz7td!Q2> za)!Y1RM*0NdXHYNnD(!XVyMvwMf^0J#on2O1}IsIE3|GsO7s?c_`vQyPAW#UZsM;a zQA5s1_Ci`a6{PqWKJi3>Kvw4^Z`Pe_rl;J&!>kZ?Oog3WYg)%le3YmQcNb!93)MeG zHldT(hQA)c_P(M83A_Q|Dlz$i;eA_w-QNKIIHWG>j=6nInuHy=ZCG&q|7 zMAvlJ_vi9N;LTlnoa-H%i!eCvxrSn19nj~bSZ3GS3%ku7?P=2$rZWw#x4c4X2n#c}2Y$IAt;5>uiCtcD6 zgW!-naDJ@T!7+O>rKmZ2WAJf$$7nA_GCYAgD9$=|Y>5CwcV!@O2y z{=Je1riD|s&{*0pnstxhh{pWnm36z;An25pAq@L$eeh@wr~Fz`{6M!I3jFG#7*6aP4ImJ0uI$}DNi^X|)6 z;W4k(L@(jAE&ZN^R4VzMk(aF>rKv=z z$-E{yx}04j2-OUH^T8Eu+{AFsU6LdA_Cr!Yq`Ed|mdpWQ`b_~>C$#cdK!cq%$IOJX zZc$+6h)%JdXbf#GPl{#}&v|z&2V5OZwvAkVE8pYmny?wh zdUEl&FKth{O?8e2Z-e>!whIxgd`W zvL6EogWF0FF9T@c7z30b{{x#9r%MhWM*Ay=DgPK%sz+OL)?!joVzTq~Hp1$otm}!^72+O>B~kabpd$1HGF!BuZMJyR zx)K-x`i@&XiZg8iw7GaQ`P9i*8F|f^?}GRxTJ>!;UarZMgTFeR06SS$Or%ORv({xF zbeDL0BLC=^H-IQQgR0^*Ja^QOi#I&C0{u`C#`gZv|1GojiEv4&(hnPpUF@C4B}yyq z23=tlrc=*x1S05<@Tn`EJNfGR|*~U<}Hs1 zX^?c^9%MRoiX)_AohU%giobeNicgzf0o~@8#|to}=_qYi9a#)Rb*~wJvVkI_M}|^Z zjak8KthN~o3jO8Qx+2(hPRE@t?^y^%=O#fJ%Ol*`2$fv2Lkh41bf^d)kDk5 z0dhXj;GbCO`F?qSF>Un&>dDuTTigGu3umQT*=(@DkL-LXZX!2H$dQ?2>8-A}Yc5v{ z`dUY1fuYA1`ccWVpm7H!o|lHbtho?9*(Pogr0R;lba2Lx{K!i^KjS`ST>5=+!WK|X zii+^{h#n6FT0!BdC@YVv^4A`-e$pY&Q5?B>xu}I2^**F-;Urfu&~2~exRR6p8yAE$ zLSH(vKOf_uS&WczUS8bpb>kTZDW=-&k3*pnea#e!sQMKfRv~7nQ=`misC8tzcxYR~ zh(f`NgqdP7S|B0Q#XX|#Tyb_k@*?f<_fzhwj#yxE1W@y}f;3SwhETG+nl~(H`nGNa z%U_>;L5R7GHa2PnVP`8N69!mFx zt3!_J*Li(EAfG`#5hYN8{bf!gg0Rm%p-nEz$=nJXzmZ}}cyYac1`tGE7(0z_0aB2b zj9l{6ByMGUJ9b>FV12jpXxXm6^2H7=O2we-+<<6vPIk9RCoVc$Rd)5e_E9?4xx%(Q z`iLqtWJO6cEH8})we+*pHfcbEkc;JvhzFs?h%|29&bNKuzaGEFHvimOA*Et`XqVn( z=XAbkqh%coEefaL>+DJrPC*y< zgsK7R32r$>qs2ao-7N#`^FM*FrSQi;f`%yct|{`p>75yf+%q?Pq9QkUWMS^y1n)7I z0Hc2`+I36veJO;YarpC@&)j#!&svH}ALl+;I%-=@8xvWS1-Wd0nnU+z;W3!G`O&LU zuLCl9SEq6@0~-=Di%9o4TrI;FtZ81Ll(e^~jkhPbb@pPFneS291bhYL+FoLb@4e0C zyj(6!LnY-cj$$YPQaf2PQXK_Dk+TG9>-zKGul?O+f=+684x0Cv&~VY9^4o>nA(!f0 zx#d6H4{?~8I}}D`$IsT$v~ogOJs-SHld6u+)`%2u`T9>NI5-`_CjGW@(6aS(>UDEK zy~iQYRu8%%eq3Bz2OT!LFL16*ZpjI7pQFAdcrP8U5NPp#~(Y+vV=~qJrs*X-|8Re+ZuoH2Dxz?Y%*O;B+n_!2S z1NXTdc3ZKsuNu=Og6Y;;<5la~e*mAAC=@@4c)c^bpsqP5rVqPQ8LWcM;B;_9UEf(k*HZ9n7LXsT zNXqMDx)9b_D-Ryn$=nzSer{kbDy;f70#znb56CM&EaLBHQwsgU5V(qCxAWFlN00S| zsJS+4VR-QRR^dp{kSx6a_8eq+zq=b^FCL8o)ss4hR=W3+p<4@HO)hGON|kA;zs~ef zk5jR=s2dM#>QuC&H4AE3zz1SK$cy!~8+0um`C~`7&RQ8}$_h8D$kz&^X5^VwzrFb!3Jh&oxff~5D7WoRttsokX5k~7C zi1_d%k*3AAqc%6BZlOjO1p^kseeIr-CC0rU@{!VWRlIy~y*dq7Z&-qh=km9lRpUE_ zT0Svk3!JtVWFRzZn`vDpFDl6y^LJ%&D=uNBu2c9w@-%MnZL#63f!X7qB$h^>_HKe< z5HzA8Q;zX@29C;^sHnZD#)~lW2oPBshm;lMibm!Ow0O*vyEdMtN*RreDFweXVNh(W zV)<{e(wS&pFI!(FN)W%U%xRAumIki(l$l`n`kWvX7R@3^;VP6i@~v6ZE4^>beaO#B zG@8W0f(plF$-`Y{A{OPtO78EvQ?8(a~v2+$Ig^UV}_4jFiB%{-;gxuO0 z{=6w{(&V$425^67dcQoo>}Xm(4H$V{Rar})DN_#<);wuuzL-=ZiDI{uvgfIHIh&~j zpoX`~xr^(9PF(|(z#N_~-8$_Dpa?JK)|g!7M4n4^D5}yhNWnOo^~cdbX8{Phr8O_- za?Aa%1Z8)7xI||=&B5mF8OuHYLUaCiusNmxGBIjN;Tg(dVzJ5bnKFtA9eSwQsUcO5 ziQBl<$FlZ3W--mXHWHwUCH6%l>+cB`FZ~}X8hrDP0^DsWV7Xu=>nDK55+blMken@0 zW@Mpn5y#Armm&S<>k3C4F3<6wSzj_e}UQ)^-Ar}E#DVu z{J`UvG1T5^ixuZN-B34%sWok161e zg`o|6_Us!GgCwP>V@Ce*!JQaQuOBwo;CH7VZDFn3Bi1U$S0%g6No3<+u?jtskSKU% zI%7aIIcCLF>8FEcl?c8pEZ=V! z8jXpxwj^K-LDKIHD8N}KoSaQAm|&`YN@phW2i1+kxI}ZiiAm0kt~cKOmL?h!Ex#g# zuoPNo5R-7Y_JXj#Cr-JyxmD8vi>MsMZ)c>ej#EuJ#4lgcsGYtf9X)Qi>F~M;4H#~a zd~@(7hg%Z)Khr1BV!5>Y0Dpy@IrjKOcP817)!orWmw`%|bvK zrgS6AdN#~&kxOD!t>kMd$+^!>b+|wQH}f6Z4r-st{Xb3mJ-(dS0=y60Lqs@ZP=tl{z~f(xg88{pFW_= zuE^|a-iHoCM(swEJFK{<6d&{W%ig!ngQ=lKU)tzPPF|!uIzS3Qx?IDxR*MxT!q3E& zTrv7#YjxCj3H=7x1^-aCLSJ~$_I|)Y=GSRI!vy_47V#=isqL1*o-J7Pn!S}37LrH& zEdVR}_U+EFJ_cfyr5ig?%-NU(vKmWL=02w6_%6{G@>mofChuqm7@g8Vzp8F7#kX-6 z#!*^N-5!V9zeLZcPk;g(z|Q|#!Vvm}(^GRd{J5cu`o@%0snt4vWb9M*+t8|SChl#n zlcvKjW9Dw0t)pxQ7BF8~Z4ABxUj5m5smjFA>7KZ9o$&`i2m^nl0smKgi0hL11zlNI)hXM+VQRb0#SXla6}2Dy+G!c9Ltoh(h^W07%qRfZ2qmmcF1rih!S408=H+LZ z6k@m*<(wnJB13t&!iA2>nbU)NncuwSrliVjB*UYfa0A7e`7Rw$)fVdiX*0bUyFE`y zO)nD^f@3d39 zK!~RG^++#60NG=y({DFp9!YAR5sj0OviX5l0v$`M%S2?7*UGc-@>$EjdJ- zW({~Bu_wcRWn(&^Wgiy*e%n?g;MDj@zoLoy`{2`GzrBRN^^`fNObw(Q;6-OsKE3-{a3(Zjk5u~2NkMcUB?tJAMQOczdv8k^*jHZ0 zS@*!CEv!4!HP^XNj;m!fhN#uCJ}qu3+LDK;1XVlxP&(yNeT!p5P=+Z_N#MXphvQ+8 z!L-U#N~p5gg+UG9F$py(Cnj5%d(R;VVSHn`l#%{kD&@!2y%)lQfECaQ`{@)@W_0E5 z28CLlFr3`4O4B`-Sa^)h(5xU0wQRR^XH#P6`HK#Jk`(p-y~)KxNH+K`JV{6>+*hFe zLB=q8vn}0{LRYmF-{Mhtb0CP6lg&jj8|s_iS)?9NvKM5SfiIMUa2H}VJbl^lN9SJ& zz<>;EmZbi$R_7HKJkEiqLyywSjM0>QMmr@sRwYmi`amB59 ze&#b5y%}RZGuPjF;nUN`-G&_-0k^4nm=vj>gJE^qi7?rOfmEq`EA&H^`=CW!-4(`A z#s$Tnh&rJtgl#kxqEjkB~Xx7`7(tF)T1IGUmSTy2ul+!hH z|ChdkzqS0be{J>v>(?}&G0*!mxxg&-3J8F2ONd&F^c#jTb-zw%FhVb$LBz={0%tm5 zet3HNf@1VmV*Uc!#BdPZ*^P~pktH53CN_FGY1VH%{pj^i0q~+H3xxRa&ycGaYhA3VGxGb>HIj*p~NM2uX{WGSN}Ll?FwiQsF-P6{A@q-0Dm+bIs4dIGCT zf`*Rr-kS5nio*3LGPihM9#9KYGAK8hk{!T=V#e@~1M&?L+t|uk^dh}KcPGNZqw|2)p@Q?$-SlX|tJl-aoAS%H{vfoI-EC%b`oO zzv&$K!7GxNT*l@N_ zF;g0lT{DGay37aZ{?8H4m(JNLMl--a{zx;A0|+hIjO?gGP^F((5_9+(Z|t+W_LfRo zI*Bah%75!-XR*?ynGy{uaS<4H-G}Aes9zkqad2>8m?qdRfgxe*zfUMwD9c#qDR%e< z1WIzRSK%76h0-DJrkk#*jTqeDoGx1^y|mojEQz&-xf$F72wqv=Y=!jCXEkiyb4)^_ zitEKoH%?5evoAi2CI6V<&~W#4e*g1?`_d}!E^b6)_t&4X92 zMq{T|Ad2USqIQk`98K}b7~p;jO;Idx%lyb; zYBA?u$(Rvs1f9daaGw%328oz0o*?K6)3X8Iu)J>i94CO!*iWeOl5sM7@LGfPlq2H<*XkfewMpD#K<2~fS$1Q*b z8O0eB#bH7hB}o!0Hmc3A|B>0m(RwRCcMNe61hwR<#l*jcQZ6>UAs2-Jf>*v1N}No) zDT97JZ>OhcOK&G?aV-9j`Qg7%d-v1U*@T1Yi~(;?Yb_;duN+B}?nZOWaiq)= zztrH*0$#vI1$b!LV$51(F}F68pCh+WlUXhmTUFH`soOiWg?v57)n~D3`)xII5!DgJ zfz%p;+oG)7ux;D6ZQFK+ZQG8>ux;D6ZQC}!JoR#`wOfB-J?uT#8nchSXv_l~v?B0@ zD;RfkqaJnag1~*Yy-51^^FUeNDLT3!hFET(e&MmH z_eyPO|FBOTo=vPaMN#wd1)EkaA84xy5%WuRZdE*L37vV6UsJ=r;)P--6#sskh)Oe- zZvVP>VWSM062+Ky#)n;wC05&r=G}qGt?z(fC*tYKr5F7>diUu>)~d=>*7`wrk&T1^ zO&7#6(b?5<@-v$@vdeL_NMau2JoC+%w7$`4ICtwN$cBmhfvSNc(;3`4m4zq7fv5y& z4ho)0`E4NH)bNFC{TJuOAMRn9rimGXAEyZtIqpCs@rj^(DusvcxmXw1wBy5(=TWL6 zD?LXdl!6eBE-jx}PcGY=mB;8J;6wK0*pHA@1L|-obUgjEs(lma%C`;>KE%>{ye(=fLSl${OM#LZ@5Z^UB9e z+(9;kNk(n<(d@Q;>OP~$;&5fcEg6Y+B3deO^M zk8I+zatYxV$ry&)XCWI}R5kCrANyvN$OtKh0~6tL1Tu9*p{&~ir|jKL^+j_a*i?Fs z2zH^TAg#qFkVXrC5b^N2P4>h*_{+kM-A{I4yJXP~7PRH46b}kVVO%KEY8n-Q-qi?+Q#pb z2KR5Dgy<0Gm%pmKoJ?w*J)9|7TnE(gcfs-S?elN+hir*WeRLYW^@(d zkBg_#495nr7}FF=yn;VWDx}Y~ONN?TiufJ%n{7retdnf*gH1zje9u{n(M%jE>VM>Z zV-MFM2Ur9=?Y{>;r88(TIc(F`$9eAbIZZg-4H8_BO68ht!iVnwZ-s$CA z62YgGRv~Bu-A?_vU7^zm>PSz)6yr24@m}7d02cq_yzdE2jqY*Ji(%njS#kM?iGs&s${;|?%ETZ8id^@7wvR&c7=~7crN(ufb-|{{DfW~KUa`_7 zrb^QiZ3CJAWV{BdfJmDQXGT62s{c_JLSrDrn`r7tNvD`Bt+bx_2A4M>YdEdcj5+H2 z)=L)3nzUOpd8620Y(J}&BP+KH0bVJ;$8qj~SPo^L3o&XVVH!|tKj}0)Sl@lF)NFv`P$s_v+K`ke@JtA*`B8;xlnG8%EjL^tQ z8pa#%afAethe%F`1&;AmuwCar3+c?i3?4J>GiP*252XR8SmY141GK>M4VnaeHtJ_A zf=gY5HFg^HG-}>eAE%R0O&Eb&d~N!r7herhW5>IVriAzaQ*1MVF+&6dZ9aaI&XS9f znn^>cU#22c(ZeC>pj6F6Uk*ZHKC*(xGiz;#CS_@GLYz=8KAniK<6^^{1yM#&>7}`( z5Tz}a&vmrLyt_1kS`*m>of90&Rq?KKf6u}sBcc?J%zQ+sd{*VI~!=uGGR#^4s8Rs;yAkfBw=WM;qcb(E!Gs! zOvPE;z#b<*&||oz0QUjoN_+p`Ow{bZzpQyZ_JgD_EFT+`X;+)~R> zGt!tRRodrHr#`;QD!g3#8mr8XgCD3ySt>m%9PH`LOoSd6Akk$W@8e2OWDF;=K_hm< za*IM=#U?8Q^7w_-52_+o$tk;{&Wq3RPW6o3-nbUut~2Q*`VP+y-#kq)4y-?CB8NC2 zcfJRlk!9_OXy~dAT#=mgZP(}(p=yv1rb2Zy4jHQ^okE4dkz2(2ahPBQoRDH23nF)Z zN~*@pS*aBi?*-K#*TXhUm>opew)@yu z(+V`80}xVXXToj`IsU*8GQa|HZNDc0ljdX`*o=4#h>>bWrB%;^F-FG;z4()*9YT1v zE_SoGYP7bZe!<>SS!ayQ9S-W3Do54grfN2>XKq^PKco9CuYNA-N7c3lZKn6ETK8}|Jh4@{Qxf^>^F+tnV7V1S~AT zJ0L4f<(G~~JymB1`?3&;BUqy*5{tfRZuu%n4U>FlJnNpX3@O56MMV3zBSpa=mrICOFD~qA0RsiD zGG(+`4NKqnbHIfjnHKD(&Yn7I+k}UR|K1eqJS93@Yif8AiZXqqcfnbQBdDek*&U5-y;`r@Ru6R2Ibu;0X+q^F48ehqL z-RVll>>9-=<{vDPj$w+v){c`_k*4pF2 z>?f-Uklr?~Fk;5MHen~}alpjL&=M>ToSQ6JDvF;&#%O*o3I|s2ClOA-7n=b0_1e`*s=S2e+O3t(4e!!TjkWh$~9 zqODqc9x~d~K=A_=lnCZNX_(54xu))x8Al|a=t*8;g+U#-uab^()80rP?RI z#!qwW6r}!7mU5e>y_*bI`N!IX;+KXd%KCHL-0Q7(28-f)6QFp+BFgK6``txw?3SsdsKsq1d3e8V3zcT7DJYKs7y03@-zsjSVc+pJrd z_pkRA`D4y5#=-cvI0iQ~olBXg%j3C05&; zg%-3C?2&|>-`6H7@WB(lcQjts$k0OYGLwM@jJaOEV@Qq+x!fRpX@&ZTw{8mCc7ENT zp1;esonXVKXPY-BP|I;?$lA>7S~i_LZ7H|wE9gTC^`rJa zu!&oj`a0Q|NY4FC-(H*B0sVW}5T!%a0MY0-6ivM7wjPRb*9IIJ8GLBlMOs0oAzUrI z_>;1a;y5WkFx1p^2YvtpT*7&V2T7df{DB|B#^OwP_UM-{)u$aMC`i&B0XMKZ2?C-? zl}xjbifQgyvp`cBY=)U!VhES+y#<2qeX+}V9*8C6DuudiiH-6 zGf?nB5mPE@^xCJC0CVQW+~s(i!LZ&DwTxos!g2^Xg

    An?0&Y~Tm3UGDrmHPYTO62TIx+Xfrq6ZzgiYQuqVen#jCJ+RI4R~n?9jA z@jK&BCg?4SN7hCJm5&#n-q=69&p~*`aX3@%OjaZ!3$BtR9Hzk=RpI!s)fG|W-{54S zu_!Ln)FX|uW-cqlZ&wyRcx4nZbSj!VGmVJ&f8V;%|M#s^YoH@&(Lc+-MMqG^KqM^u zr!M>{0`FCn%}pJS69u%OGpz#%&b6XKR`Z(3*Hl*BC>k*0=4@>mU!Mdvn!S-}xCa)< zF{f*0eTPDnXjd@x*(wm3t>RqPk(Ix58)wqQ1Z*!QTPNf~rwMXNt}kA6rt#fFrf+Ty z+s7Iq2lDm)@UYAi=j4UFRViWVDI3XF5S7P->ZdiBUO_xB-Bs+KOLeM;6dt_|jTSS4jGDAdZ5$?|Z!q z^q_X)tu2Yr#{7eOcj!s}oEvSZ>VM2rG*uATUs*{M8B|8n5sYxcuTso+NdnwGDXA{% z@2mdx=(_nYB9w2GS)VO!!QLi=?&|8eMC)a`#A zP8&GfeWp!9O!yUE%azJOjh42URb3(@5g$s1a z|G~Yd?yQx{Q!tBlb)M+-JU4Nz+FJ7#+dsLSioUmY(+n+s`bKxgD6NtI0XA*L-*Mix ze-}vuQ$prEA17<&d=Ez=ualvRrxLVS&eSE3$1Bd~{Q3nYBrP2oqJvQET;;20PCOR@ zQd|@%UsvQ&R*wLMZUaTeY0alrG~=K=`p^P_;$))UtcrtJSQ^;fRtAY*;US;)X$2^| z&c{QeY6lJfM{Hou#93-c=<@xCPIumw1xpfKXsNuLC;nhfVn#b=u3nR*%MnDWkts=9 zN18eu8SOz+t0iG<+EVuy*Gt(Os2wF6fUCPV1A1mZDl81P9J9nFc*Etf2E@($_DE7p zGeTU67|Oi0y!;|mD)8NS*Wf+mpFFi-e~Mqj@vk_M$Ht$yLyTA~Xy#|s{P7HagLFRYixrJJ~M~pLQ444YP2LJBzK|Pc*j|u6PdFk8n7*7pR;KA z=5B#k@0{V3!4#rbd=|_fo2p3aXs5SUtLHLak$;L@czRDgNDiU;C#D!!MIMm{5@$z7tnpk%;3m-kta9vA zxDFJKEVS2-e=xSqx6wop(y^t8E-w%>yeC|ogu|}BZs~cdVShi5!@AZ zN!KcCy?G5!=9$;c#bTh9OIwl*$yRw&CQSKlJ??<*Zn3edxr&H((N&sH4ad=+ry-#c zuGDm3>J=U+BwIh#y%l9opWCZoW?A%Ee?sRgd*SU|B48YT-;+Xv0dU-e;f}{~!2IHx z7i7INCx$0(4(gNP%%AW^17wH_0(%J)w2p^C(hk-&^&eg=)hP3J;h|Pwz^^R+A3nf0 zj7rEZNArRgM zHQz0)YqpYnRA@C9YW;&zihh`aicfA8OsgFHO;upxWRU77h4jfNV|Cgti%ND81>4DX zhvQ1-pEAX6lotuXe9A!6+t9dNExB! zKhVqqwCaMYT}U@PG$3(Ilr#0959EyTWV(4LgI0mN+SD8X7|wvE&1Y0o8AsTBQglIL zmpbLazxAWHa_T>690?;#CRS^JK*Mv}9|pl*up58J!!qEjtF?}qYgQ-evLxNFFmdfv zu*eqvsk4YMem(=3Ap^;^S~uNry|2GML?#eP0FPSAi~t*$!p$QrMi1`t#8)%oRyg2w zuwH|-7<5a^n>sDe^5pb3ItvhDL#XqYnYXxB(x{7T^H_0jAerlQL^gt6eES0do11ct zjRc;SzF!yCfhR5Cbc#tFX{EVSGS+CNl}+pLoajO+^f$-|aG%5EkRCVsqtsfb9%%qB z)^CU3&YI!n^Et6Ta?5tAAq!<5v_k=#?`k6X=1#M%{I-A8PkEGWQPm_al#|8E*Q+n4 z7c6T!EJ`!Mwr#``ji@)(ow1|HdK>rOWN#I8 z|5l5M!p7lMRCMiLn3MkDb1GdzQmVmtgH>0aQjmk0gZqW*gLgm`0d$Nj>_?{D%V_12 zKxAg6;azX;1P5yw>7TB&^PQl!(oe!m`#yNsBw_#PAD)yQZmWqo_Vn$ZN1%kC4*mCZ zV!ZG8YV=-x)C{}R)dVG8z0|!G#3eXU(!aP-Vqf8LPp1j()w!)JjT4Yi9+hZ+Y#IVa z*l^dPiPo`u^bg>K^qrbz1@v4WcM1+2EIHCii6g5ox#cEj3U_Zy#H*ZvPQqBiUs z6F%du6PRf|!V}DTLP~cxQ#1-k%Z~^-am_-Wc8>Q;idsS)z=ldD)Zycom%jOZ0&lNz z(%kr?%#*Sfl$j+#O>%I-VAU-tryPl!9yz;LSoNI#5we$DeHmxtM*S1KX^%8sQ^Juy zEhmnRy1yFIua`{uLx*N<@*+QP6;F&PJaPj{A~0>amZI+pPiHHXE%My^r%;0_GC5lK zBH_XhN$D@&$>(5=eHj29bX=HjrLe0_Km6sYXalB-mmm|upd!p zS0Ku&W8PLfk7}2f+CIOvOUkZaaFymC>?2MotBflOstV}KO&MSV%{Opx;w3ZU+z)p6 z_OLF{N1{kft`rms2RK;p?C_D)RLI<5=>V&_9NpXpqyr{poeKDpmUFPb=$Ue9CLOrh zGW!A3cZwsV`;Y#euEMcVm6;(9$_(X}bY@HH3t;rCy%H(o!MmF;5qBF3M{y0sXT{|N zxJ;x)f2g54_bNCmJRk4P>Fkz2tH#kt%hdPtndw_i4k?;Fc(U-P<;j@^$O^1!SMpp! z6R}EGmcbE6de8ph9XBGc%R(uvHy*Y|S&|+_Mti-DnwD1Hq8>IAZDLDD9#$h``bmv7 z9F+JM*%a(Dbd>6f0(Xp@9mhkk{?yC`{BH| z;l#?fW;0@q-Z8Mwi1Ky0l}COO;#iG@{IT@o58ec0z=pyC_%Hf6bFq7zMwu6(*IEDs z&~uN*eq$ZQWg|8gnQlsh3nYE?49^l3If##<^8Po;a6@-rd+X9MyD!Big_||*fjjI6G z--GuB`)3ukndnS}sCd1qIZo(;kF=}km zp6P5AB&z(wJLl}D56~!dFGq0SX9OblU@E;#v>l-M2Tun^A9O!P2UpO0M5%MSgG(e$ z28C6W@f^(v_hA1{^%OcMMc40Hnuf3o>ci|{=7%!vJ_C0HC-aFT^=yPB3x_&`=194qsoHA4oF)6qb976DP30*xxBIdrR^!tz!|6q)>=bKC49>4V;6ZiI44s&)VTqlg*=kMxN1usQ>|KJde# zn?ZZHoS4SLP4LG44AlK>Ro-UzK-9QHV44;K=(5iqjhHQ`FU^S3gGe*mS1;+6`&7e5 zZ|4aHDESxpsUs6*%HmAd5NrKAIf=%iIll?^RJm1)j8qEyKV0^eaJ72Iv|v-$#(!lo zH^nCoL0Zrd0~0m}7wXTs7IW=P01ORH-)v`}+|>g~?x{G?IFquY`t+OU&dVv!CK`_> zV?TWW$pH_CE&?#XQmdeIRkQ52hk;@cXF*~bu-pre%f|P`(JxaTMVNeS%xO7z-6ppM zi>)(^8p(K6FLgWv``@xY#G`^ zkdpXDUyP{**egDOtS@T4r|prje0`CeK=GB96gW}o5}riL)vf7cA|0Y9+z65BV!U`s z9+J`g3>meC&QE)?y$b3bvt{MMO_5jQQxk@lg$dqx@fF-thEvn>KZh$pXHI)8p#~t; zSqqUm;-(D38!7^$exk`Y{g!a8Q(SY}3X?@x8h{MxkVcAvl?oa)>BLy0UqodV&3d@p zio?XQuxbHGUiamtbkT!my>n$R)uV!u(D!RM-YgR=_ugtD8t&n3Be37pb&A=)_At`h*bZd#rhO#{V$xX>D zeFY)!KmJ@vc6qU3{@}qi`?Z6txKpK#;x?JWdGr}eGM9j8)EO8R7_ncvJ6qk zic5H{!Gl2or3plr*}$<*ADYN#xAwwOXOz{#zbU!#tLPDo*od=33vSATB4b&>L5|k) zqROQR7Z_i`7BYm;;?<^jT{m7V3}VD4V%c4>OshKuA3zt-W??{#X$N|0PkAYO2PHV)vA{l zQ9{>b(0a2$-O?5%G* zqTDgc(7k^)FzwN#@KfKa-P+oedm-(zV;8h%_((B=4WJhetxtdqze zhIy)Q)3hy`5zCW@uY+?n7xl&m$9p@)esB9W^c{3)?g^y!*FWaqxy()9ocwZQ&7J!& zUWWDV4GB#Hud;$3h3bcpVs619C9_!#PsmeC%DxE^E_WrPdqwm5p|wsxhSrX^Sz2bZGsAH^xmI0pFhG6BEoz^W|NPXv{NS4c-`@XtXx}E&g+}0OSCF1U>j}d7>Y(8{ts9S{1zVZwEQoQUO%T^H8XT0=l;?=c zN`QHgW)Hu)Hz+K8U`7{X{6p@TJVbTOq>ZGzbe)!A!-Tnc`@kZ_=i$h^Z@k{REc=hnM|R%Vg5NZJ zksKKvFc4g;`k0Hf4lxtWaCkcp|2YTrik9|T;1ynvg^ODV-Mml3KfI)0IO-2_4&?OZ z?ny%j&APpUwr|+;D^FO%YLn!#F7+8UQxz?IkZNhTBdT3m@_0?vSbbRfn1!bfMUmi6 z;lMx>lAwPf72?k={=E1gU+$TW7u6oqS;uZ;>jht(O1|uI;8|r!zH?9ioYFp0VCjer_J4S-A6HNcEIjQ!mg4Px^~Y1Q8W3z?Ai3JSPhf6L$HceW2VWC6TR8uZ z=)Js(p2wjdMn}VK;wLT121BPtXBVocV2TTH-*6o1LIrRCO*g{I zP?oB=o#s)^Wr>a%#9x6>rgHYl=af16>^=C>N{T)Ag93g_+5w52%Wb`vY1OIx1Bzia z2|t2vX*jEs7QdwBRQ3X5EU?`E%+u+Tq%S{(rpG+N9a}M&ti(nB3%&l?EmDI&gwI)kqGIWThzI2X2 zj?e1e=JBiRWUwhIKoBJA6gSZDS zH;~bFvxwv#2PI_QOxlFVqul9&?e4u#-_BackAGvfpBXcd+Z27->l*h^{oa28r+qNQ z^1%3hL{RRV=qLa18ZQf)7fq<)aXF~ELKxTB95XZfAy)`R(6Jtxl!k;}x;&$LNV3BH!PIq7*B%jOo#OV;<{{R2?p2o%egsZ-t+mb&yOZ zd8L+a1f*VMJMEuOLNtj8w%y3O&ov%nKJN3LDeDB5PV3I-(tc;F5d`G599EnWV!elE z3dMsue8baC_9qd%%MyO-%%8H4xU?JW{d$CDPL+XicjrYIcS3Z|td)ISyIqm9k&r-! z7;*PlE=6Qlc(Aq=yB^x{-B05K#sf(6xfT)$ljcFmD|esa{`*qD zLoCybo{k!h9c_iV2wGn+{IeEK*J)Mj3=^dfI?CL5&(FvhH^cE+HE#Otjiyvd_tMy9 z@jnz?z0%2!D(($r@C8I!mk1ZdQDYqB9b#35tI$DE7V~-`?7>DG;eFV9E3#h;2z;hY&P-2j*r@jq)ju=|K}2 zlXEGERv2Pl(scQn{TXY9;}Wi!TDiF^Jiv3vVYQT`q}@djnW9`Z7;@(jGNN(gLGiZ2 z9Iv&z4ZOto0neAuuvv)oH!r0=Nh!t8ft+C5!M7B{5=Zx507l3CZK<3G$FY$d*`^nK zyC+X?0|_zw7z$0Gv*`gCC?8*c~_$)#>z zNYQTjr>wJ+p%X86L064W>kGHmqE@JN@|s(l=-u4U+1olNAvGIKEJJIjcS`rA#ypls zc#{TzEWyWq!x!b>2aYPsm2N)X$|H-))}P2Nbvlhd9>9?n#GGj|s*cwS$2_<{ z4snok`0!rC7*OdTZ%1-COWTW3$KoUD0bPf3nQ~jodk5bwaI%rMZ7^s{u}1WzVg0SV z8$VCXDm%L26LKHOTVfT*TsPk8KwOw}hq4(n$tsE@*tyZsa9}{Vgk`6L^=-7xw(`Jq z_@dFlaE@NP^YR1jZr$X)4-S=ZA_FGnk}^$a116Td?lCB>`cQn^9p{B;A+)S;55bLm zQ$7RT`2>|0en#<{`@&7^X+hR`IKG>^9Pb1!Gd#Gz7{E0FZOkf(aZki>k}u=f`$YH` za!88FLJBJ8JXu6XM^7Z^CPpEzTyCUxo@u1*RSxcWnzTyWDDM37wpOfF zP{><#bf>{3t48Fqjcq=gZHBTEsLCTEd5A1YC%^OzCp<|mW)(`L>jTo^a6>FbS6W3b zY@A%jnQhV851Kw;Mk3|m!MT+4q{PA|XA<~7IMh}1d`m^3OglsF-bZ_!e>%B8&q1{y zATgXL$}|zz^_Ywi`6=dpAo(m$Kc~OaO*{I?Fq$LEus|Z;5tI(TuO~X!Nl}_28ci`y zo~O{ojd|+Q-%rLmel|Ztjqz+3KB&^$SkFAUYJUIWogpsmJ`q+jkGfX%G#PIPz6M1Z z|3$!#f*D{r(0P8SgF4)Q=u7&t>jV7uP#1(V*6?ndT(p!hX>8Z^VnGV2j%JP}Tv`#6 zC{DpbIoj6iRSFSz<``;4S8)YawUX8OkYq6mTtX^reGFc*4Gj{SUqbkSGR%=27KR_9B05i z^DgrzOr)1aJdOTs`~1aIzC!(M+WBL{qlh8isPVU)5B1e}Xq3uI2J1_@dlfiIdg`Zw zb(gK4p+a=diw|c*g^V{ty5D4&hB#heel@WxuH+ntYYs zt1PTqymA&?NEPYg?sliAF+!X_*ho{IJ54(@w*QAGaFO)m!YkU#x8i=+L-nsX|2C?g zwygIUxzqBi`TWNc&{-kcAx|lSck*cb>S#$3Ae`V4luc@*6&_%GQB*iS z#AItt4It+iVmX5b#xNV`zH7V|a?0@1S(+B0R<}QI=~VTeaIGk$OjE(8D5EaI%#`jv zw$PaL7&!?sXx&#K8)Zw$f&hUw6tQ^2+p@TOikgZenTf@%6I&(QyrdI`-%^E;YEgkO z*Bfp~1X=4JETfIFW>X>qHKZT3`4ZYztfJfx9V$zFcYBTJ(ZO8*@G5n{I{rVrKWIeg z8xCuP2GTI`XuSjnH!{@c?S&W&Cs915>&kivG^%?HY5B-XtIeTU0srNd_`2g7of3B1 z@{zARmq6@@_3DVk^radd##~1IwMx3xcF(vuyGwPrd9|Pyh*b`>l=bKy&&v~%qj`=D zbZ&6vU=uBdm~iUUt(=j0Lecz;YInwEB)dYVzrb@Fb4Xi@jxnv1?j`OH%jv2$cCLnb zDm!_~lFUWRc6w6zkD}RbjgagrhI;#be<5&B9|dxd2ost)xm9_bhl<(-#>W`XpH6YB zaun*x+^zl7M40WavupS$2_r_1}kKCi4Nv6R%1BpVFXa zX6t|CiSAOhSM-mi32^2`bROZGZ`ImC-bg1_E0o5kK7--0K$|-7au$TkO5_{5o!nM3 z-3-1ayqhFb%&8yuyuVR)lG;)6tMPPB;jM~u?YW5VBOQ1`J{n4v1jk`-i1KOQ&^7dY z`Qjg*Ids$g4Jhn+@^*yA@xfj`c&pM5p+b?AdrjQFqv&hq8F8%)}7?`n_GMQxTn#uR^MBj?`3tlBV98-v5*z zRNm*Pdi@Zv8!Ut&CaTV$rt36zYpyAU<{!}E6Ty6A3LT3M9Ub$oAIS#R2b?F9>qN8G z@S`IRa|+)5Mb^zCg;`XjVR3FTYg^8mm6QGDNi+no!G||Sux3w)lMY_b(GJ4BY*Sa3 zB!qZ<5`Or5eH7p+b6Yud?U@kd=B-5)S=@b;CDb->ykGq8%Y6dHogCd zp53*Jb5|NaS8vo@J!6UBfl_E8&u){}=_FdeO&QGM8y2CqeQ=Q4=x*35RGE$_>udo@W|XG_)X za)$|=IS5meTALY^IA0A$7Tgs6xB|wPW$?96&A8dX4d#LWb(cP0RWv}tVkW-qYmLrM zV{2ur?t5o2g)e;hyeg6@wPP2{^7Fwxz|#4}z^E;?ro2bsz)8nSqbG8m$yw3DCztHB zD-s>duKIPo_tI_};n#IV)wh7>8~Wy;_Bj=0<&#;#gcZ_1=lWJZOGGC=$Tjo0A?k>w zphZNdOyQQyq@DyvV)r4qopxBmc~dnN!oPv4<}arirt~F3h8T#D-^moXu=+<{u)ygJ zL297qT2AF#(MzyxZhh-|x!x+}O{d3(1)1d&qf0n8-=%bFaK?RkYCw$KI)=ZWAj+7? z^2_tW8U3+Ow77ob1%aETTj0@4dg+NCr*W{l;A+KoAOs8pk zRE!2y%Ze1^_neVP#%`_h0jzOoj0@|ZVhn0-0~F9t^8Rq-U^n&*)RuE}xW*SXKM}|6 zQ_6qfqXP<9sSjO?dm5RIj$?5l9APa!O)8liyg$oPeWA-|mt@A9k7GvX)u^f3E)_$` zj8~W!?asAki!R?io2|2DxOdI%p>Zx0mc3&kC^S>3XomFi5Jw{vtQDuQP=k#Ac%F|F zZXpBxxrsxJ4w3AP*QUv8x@A6H@*=w4r*EpHEPoA=&#*gXOWFu4@_oT?trzR}O3I*D ztCS&)^cd<^bf^!RtRapb{L}U}nmW4gs7x4+ItrNt>>Vov%EG*BLYVuvj*{E4Pw_y0 zXpu1Z(0_qGPCW~TG>s3a0SaV7qv1W~8tlU>z?Jq5ub|^gq#d6`Ez23UWQlSnB(}Wetl(aB z@p(~8p4|)o00h=Y)q>O1uu%KMnF3?>3>7)mKaHoc!P%kCO&q~68jUt}KXjitO`8k5 z`si&3n6TM}MAS?aJqtF*?^?sy@0Cv{ny1A90W+E{*gvKUE~xWkDnrXPfL)@mDk`Zd z&&FV*T_gWQ)iAi#F!Y^6&lE%qfl~lfBO93mSSO9I&~U6z?zzzSVh0xFke~e zlPjnCWtAznvS^XA)F+SYI*SffblvU<_u)<4iK!6-`4~1>fzZ=}n>lAzhE|@+X>1JB z5(imNaUhdPaiC`o=3jlG7Ie4z_Yr85YJdKHv=*totXaV`j~t0svRks{?YV}1@@?nx zTQlb*Bq1&5y7_fpMSe(TW%G)VpbDh9x5Rv+_I6`v{KoO>VH3?$>c_|VV@dsl%PZ_$ z)qCE~!51MRrofS1UlD)I?27Vb4QP3Imajl}>}ud?L2yil_iAj7uqPro!ob$6qMfA=q#6F|uD3I)={!qrSv-HJeXbKH*CDw$)0E0z5J;q7Un zmPEx{fZF6f6(?AJ&npYFwd(6nc9-O6q=6mCQHp?(V)H+|IhLZbGIjy&6;l`?x0lFd zF1oVzC814OKYG_A4TNfrMz!>U04P{O-3o$KWHS!k8%YN*i5 zd9Rhl=x=Glzud&gYF3ujk*#B<5P|$rVhkmkByc8zOe2^?6VA3FnO_9#G_IMJ8zCce z#o}c}@8-ZS+>W3She-P9RIcR=5w>KF1v5A zoux|i`kZ;DYT<6uGhx+jV4lJN0ld9C_`}xA-nz+8k{M~pExyi3Q=ou~Z{7GivpC4r zVDY2`?udn;ka=APPx}h@Y-EWh566D2UOxD?dLdu;F_DgZgS!z_%NU`qHZ9MR#;_iy zi}AWI<0%aJ+fqUTL;m1HYIC-9NobhGuFl54f>TnU#BN^*Oa$L7UQL>rLhPuY{{O@{ zJf~01jOeL3Kv2S`@bAM2#smk52$4ia(1pBB(qMcOkE?#!Qra@Wz_7B$`KhT__2h~v zSDQeks3@ezsR%Q(AQo<5Jq`?&i;l3qdH-2MRvPp$EMwDBLb9|zRPd+BGw$UZi1t|( zggb`s_G-FUJ5+A?elcda=(rqMaMO&|lJIC1PH?dh+agq2x!81k_-n%rAu*ij9vJc#R)wp~~uIeB#6d~RlpV6`^RRN4B% zWnb7_H742!z2BhjR*pzMxPnMrJFmRSjn+UD>wVY;!y`yV|-s5 zw=?BD>UTwS5SPG)Nj9p9b8dmUGn0!4o1b^To!a_6=>is!J3^&#Skp&ZChVJ&t;>aK z+|*hk)~q+}I&PG03FY2uR-Dz~dO1u_JwrX?;N>O5a?47@`Qlm`+uawZ-FwG$%kwAf zyrq~sJg;<|zT}Y)EOlX!RE-fNel{v)u8D3_dUCdGE6icE6WvvlY)MN`xdlBC6p%tX zsV=F$jlYGgiE@3QiJ`2Tu+u9&l`mb1-!qJxjq2z*LWRna^@QkHuCxvu&ToJ;dztl! z5Z7W&49Mk++t}Y~BAz$jR`D>X+XKBc92B1Gpgo5_;7s7723wS7d20XD6{~vFfU4V* z88t@69G|!znfgNqct@!}#GZ)bc*Il$m0NEJQ1xEeTFg=@u$Xs`_S2h$&>O0ITK4xk}*0*6Z5miqIF*Di1DeKpD{$5s2K5u8`ejsPd8j4Fw2uP7~rMvD-NYoXL zhSC^Vvzin%$r$Ju7|9s-X#O^&q^AW5nCtzFY-@w?EJ($gV)%P8=lpl~!k}Vqp&b&( z%l~T&X<6<^OuQnR5_i!=?%TUlqkCFR61edXFJ6Dw=6>xt{7p<~@d|KAb*8nab;(5i zf^vfeS8whTQx+b5Za4xGfC!a3$er-!FK#u2x4Z8>r4B7`e~51!L_qX~SDq{IFD1zG2o{hDF5+iHRr zSJLcId{eBn6MI!9?P|)+L}Km`<`}u9I-YzB9i_yIDehKLEL=;y$SOg})1a$K;Ge1 zotWeCmMRK;8oCu$5-OkwI-8{Mi-k(CJfLJ+EWr^QY%rrqIq_FeK4nCVX&w09^E7ou zevAR0TRKu8+Mw5YJ`+LS1a!)YyQSzPj&KNQ{svDb4gmzjBT|UyrSVcbbtm!LhS(1} z%U(!PMn2VXR^)7*J)~!C2Q*Z&$#$x=+RPf1x46Vf_eJindO=BNZ=r7G7&O=t?YUK< zbC047u)@nUJDI|#&&qx})$j9cAg7EtylTrlbmlc}D%g;Fq>E~rJ&xPZ(*V_>_XR?) zHSh7XGS|qT>3vM~qqg=%L^+VY1T`5VKE_iVDEQXJwZry4aZ4=c6mM}jA1S}r**`f; z!NTjCkh>pM={Ay*p0P_T2RHmb|2T$Co{llYRMK%5K+mc8C&F~E0C2gL!}8u8&2KAD zHB?!NYd>$D8=3zX4DFbt{157#vkZTWL=pp`tRp&3q|9pH;MKx`Q5k#zX%!%+Q=?>hY= z?uXPKoGa1Yi4HB3FQvDzj2aCG9X@xWfwW*0Mo;P=UhaW*8R$P)O%i1FbI_8@T4yhK z`?lRU->FZ8Inu|BTovW45k<&Gg06M#3f4$EHnIdAd*b$?a|;%eK~r zXMM~D_xaAu$>#92^~E4KECWoKj;;FYjtdHnkN-AK_kqzt(hnhpKC_kT9=v;0lFWL~ zVIvND&&dH_bJH;Hdm#k`BKijP&@dxF1DqN&&epk2SIp*Dikq1EsLvdesuy<2Ue4yx z99|(ER?qoF<<)SEe3iYBI;^L?8){hnJIamr!F^Vzm-}V^@FbbDyI-D~O&?U8iIx7t zd;Sdm$WAu{b@J?Uu2`Y9?_=A_x+2 zgZ#uzrMdTwv+Xg8mmdOEU+#%rp9y+XFXHnC(7n%92gLgfCktrtXxB!FCbi&*V-G95vdffJ_y7B4q_cv_p&jP?=Ox5fG+f#57n zY`sH{0vapn$sCWx*FU1DE@E%uHAvJC@fA@iqR?VRelCBDWll#BNKd){F7DZNAszRqD}R5 zSdRh!>CeB8n`vu9AI(PfAIf|%@Z?5!!X6>Niqhk2dd>>T!dQ@;vYJf@ga)M0SY6+m zSb<+NRWkb-GrO!DFjp=d9^=s^#L8$SxD9bf)w8{%u4>m{dwEk6Qy0N{jj^uHNIOKe zhi~K4oGQksYt_DRXt(pbs9Twxx00PK9Q|!*N*=A%Be&}lw038W&e>f4IMWMiA{O( zD+x$#0)hL3%n40mJLhP^pXUL;T80Fu`aCrv*v(x`6`%;6&y#7z#rPE<5u*4{^PXvw$3EHew~YQ zYGzQ!1y02UV&+7K>nj4IP>jd9dBm1OL8)Z_oNB?TKr+1~%-PiB(FB;@TAYoc`JDZo zRwHf|5FN`E{x!~Z)F>-8cuqe4-pqd`!%C1vnc*K^c+%zmiAKV0DQS7Dlx_(L1KS&y zTaJW+Y+4lcH;d%7;UA5OeV=cV|GsJW{UBWSa1`iOSp*H`RwatyW|7vuiBE`GD=7bx z8MR-)=i-jf3BsYg;a!%RQQ? z^FEcm6R_^VHYp103`tA(Z&UQvIcT^g=eVM!JTmYbThCRgVn@_Pd#5tWM3nW1q386@ zvA=b>P|PdImZ4Q^-N|xD6H1H(=swd{GsiydKEn8&9a(v6k zVYGS6%$=2)ZE`V>IXYa*rgWzVFs7VsG!8T-a6}o(4C_Dxva-fO+JpfJqpHH=8W}N1 z%96|E#PUO1-W97)^fQQ8pAo&Rc9;*3@WEvAnCOa^hwu6+m7qlp$(a+bKrp*PjfQCp zF5^$lf`6k2mHO2w+|W;WGET(Ln%uTG_hhVA^6Cuk0;@{jmR3=oAs1HP+pNX{lPkH+ zhz$Uyh*>!oG^)~cd_R&TOsQZm9e02Z<+5fSFPZRns!+n8fmHz*O}U;^Bx67MZLgS8 zj!5YtvP6}Qkpkhm_=^pXCLTXYv9{WB&#=EmfKzK86Z8q2ppz+NDvm!d*AYmSaJ<0V z_v${V={f>0zwLbjP+ZbKyc9q=nK=IY5AUZ|;X!f#a$m_MM?L%VQw=JH38O`-op$y; zFs0sO)AyI&my45|r`i9&_79JEU8`l)+E|qPN}?s!Pn5T(CG&c~-_ZhYwI|~-p)M(V z1?0qS}(Tmc0Ub>G>^wFwl4~of6x}5bunKMNdR^De|VgU<@$c&&z1q&&chMB z@A5*6CR-HGF=nUSKp}STQ(PtAYaMbzEO*&9B`>!=Vid9RD}#Jqn6dDun_4?@QQ08a zei;D9UlA%B^YpayH}BsjLr~H#C?XwGG30fEqI4T*ZE74KO@LGqY*2U_7Bw14v#q&J z^+L79&j}no7Q?%!Hx*%4;cLl#xFDq-eHVOUVT`r1!M3@)IU zUL_S_eGV-1BCAC%)mQ3VQ88Dp!I`dc$j0#aC*6)YcAf(^Ffw=qLQ!pVsZ;xH@>z^; zOe4yNyX4-k6nI-~IEr&rW&V380W8i_d0`$Kl+n=Jl;YVm4lKZyciF<#kYrZjU}W~X z#?^9RJk5-xxd>~IaYzT6Ez4vdDj>OPuc&|DZE)!^XSMmvsu%x?dpH3gF$^%F7(3ZJ zoVm;v$1}nvk_BOj=VL(kFNLnO6-#qQOUM}%-rj=+_vr- z4z>=qj;q$5BgbOmkC3Be;1~KyU7;l1x<=c8aUzTd4Jounwyt7YSI}~Xv_L+{T9__( zBC^vMiH?$iDq69J*N>~s3|6pQ03wydS@t*x(&I#D%YnZ4nzAb95 zPF@0u_0``$Z=Z+Nvn%raR0|_k?QMMM^5!3&Kl26GnO%gYd6}xWCwH{6x_DkDEi#dA!`r_&0E5FLy`THZo~ZTZ~~xFh7ZFve!0?R40Ge z>1ES%32mf(+oyWBZW$vi{MiE(WE%veBmkztC z5tlJo>O(2+@??#x_LHMH`2U;jzA?_|)cz;i`CgSRqJV~Oha&cSTSvT0M=xzD$;U|8 zQ)YlwZsimt@ZKWe{$mMpp76)@PNc%~PAZrG{;YM*`Kte~pC`VLw9N>Mu9qHZo4p?% z%$$2-vO7Ek{*XN55j2&D%9|9=q7Q6T|5OCzJpM{|AR_ihtk69yVjXvzi$P##+{-AwJr)NR%vOC->#3&5ndRfe0)jb-M*z%nAczeR2@tp;)kyo>*i;SU zaiCF5jwS}{`sMeOIYAHJsKgf#uI%c!&yv)^G1Cu8j&#sSq(OSi(C)#&Gi$c2_Bxn3 zpt8zDZV59lC}RD3=U4d__Y0Csv+$ybLiTk;s%tNweKx^!8KyDPWPTjna$IF_ zXQ3jBnH-4Z8JRBsUu3;`IMi+U|7|ofjcumJ*v1~lF8glG7*dv*xN9ug$(CJNN{ksa z_AOg7Gs;rPT5?kvDU=#(xDi4WN?DWc->3Wg{Jzg~9M6&eJ6t~3d0ppuz2C35=!DLc z!x!9M7X6pNuAAUOT&U2HdBbpp>uBl zgNGoCbJN?Ii{lZRVkBcd$l=bBvd}?lza&88OmyT@pFn^-L8G<*a=fUzs_jb|xYWW* zY~;#dG~~*tscRhhfqT`dMSU~)+u}FP%sL8oAR~Loy-~SUCAlAw@Z+!`AwS5z2`u~d z@O|=LLyJ@W_crb^?~#V_t;+BGLT56V8CVFf6>x(B=Jv;|USyvp0y6>*E0>y$tg6^I zrw2){(i1lqf7vW;c;8=vWJ^K{lL6&bY^Di^t%a_Y|{ z`=~|SLjo0_q!|}w9$kZnX1(W3ts|*iw#z2EWxKUOd;wsxC@G4MfzLj@xDB({x?pk#{&5N^UZUtFHiznVGLV)Rhg zV?y0f=aXf|9{H!^+wSY~rmt7wK<{o+G@R|b_3Zn@|J%)O?^Bc3yUcJ0E5oax5X zGUbJ*C34r*tfF*E!}C%e+W-1c`ty9ne$lYc4NcK`T5i{nk0Du%6u& z+ngl>+(D&)G~=%rH6O24K90}lFFZfzHlMqWA+;0kpe@dWPUFC%fp)*8F$D1Wo`}lv z0J(!mX~|K=JL>b_%9j%YFJ%URw$0IdYi3^V3(U&BPra^6c6EX$oXpHZBCq$@1HNR|f zk;kp;k8ikV6sSlr96<7_E)^o%r}d1CnH3)<91NbhX^jeFmG)cR%N;B{>P7q_EzxIn zL06reQT*7r2qgRpNa{U$P-!y@1m{FdOwRwT`gyZrm`+c!>^f0ht0r2eRzr*9S;dT4 z36O&pezs?i<+CeVzMGhunWWX$G7v0j*cNc@wH2z2lf3)+>i;bycPeywdaqr$_%Uv! z?dRSdtz8fs#1`1Nx&#_v0e}g^GL6#bWmhfIaD}?D*<-0f6kE}|4L9>cH$0D1HP0(8 zdWPd?V)M<49~xf$A=$-eN%zv)E!?U<4a7tye1BSU-|PqUr(gA5-|Kpgrc*x?9s;~Y zIeMAqwJZbb>v7JP&$ueHX=krsqS17;o(_=Ck?m4h^vk+2`!gcJXkN3c_F0(1mcw-^ z_GU2yF1dO*nvmPGBbQ({iC;xNSTlzl0A^mvte65)<}*5RFQwyBo3477aAkJPYbF6Q zjr=Th6^cxg=fMjVJt&m)PyMtZPlZ~D${0{&vXEDlPO+T#@8o>WkP#syZ4Oi{h)({? z(OY~&dY8wxD+Eo?3RY$+_7PqnADJ3_ns2jGkuvzU+e!EY$a$HSiuZ+_LCu0I1Jcb1 z?G>thTqz(f0f;6WFx}N2><;gDPCDpgk@rA>3^wsMc>Z?dPfjj9y8Z9N$`g>N>|(li?5pR;^3 zhwh44xZ$L(zv_w3`RuzNY0|X!>jJL=Qv){%k#ciY9-zj`c6@)TJfQqq`Sr~(%P(ZL z*C}d!8zMuH}Hy)7TyM>Z>O_jCa zkNX71M&BVeA&0d?*Vp&aK!l&0kHyg6L%B93nn8`tjV7G!5B`$57sY5*%b?NJgl+K0mjf36c<^6W$Im-5d|in~0&rysO4RNC|ZIqr2D6d(-?pi|B%exLu$1V$5R%ix|d z@sTU`GkQUy*)vE>jSS0b-B(%GUpKt!O0cOup}mj11)fWERS_<@?U71WD_D} z4Tgr6nn>jCJ~-+sRUhUFaaIkf?r9?gMdgOQNo)snKhY~6vRAugzD-2uUCD;`{Ax;g zCAG8Hp)Eb41F40iy5$3H`&N+o|MyQlvfLf>I6bH{@}f{$48>mLAaR9bg?ra%2FOg= zK9a|Mt|esoIWj171i>Z$4i?wAblgiVymQFTyO75X$IqOBhRtI?itNKicOg zeT%Luu>%G?>FRb{#&H48dy&WH&1AFNe@D^wZqeLPvsy#uy86D~SnUg@!$wsWI-GjK ziI!U7kBq0U)S$B?kUc;(?u9JFFCrUMPtKmoy6@`cBcpHEE6V9Gmc!>ctzhn}`M$yp zZg1HoH5zBMK=>jTs_f1$fd>*@GrF7dtFheRdx!O3=7jc>%CX z4=)fD*9#Krq*QwwlB*lKxxU$YtIP*CKW6z%Cjth8${#O2@R22eD~?&1w$3JOs=(j? z*O8^i3!m7a4H%tQ&P=I#qe4+b*9V7c;HHN9An^rquiC*_VY(hz1%U*kHM1^@=O7>{ z=)WE{N>3tA5vRx{5EVyXgmQK2De1yw50;?GhRF)_i|1D&CPf5Flh}#5lM$1eIyfxZ zY9>*UF2k#kqQVr{)GfSMwA3#?kbEp(!J>M1eTer+?Cz;+`F;(^?c2rw^lC9=ku|`SYX1-?QjXF?pcTmw{%k`$3Yjr zi|*I}E{v!PcnYU>bgz}-PUjuhiurU7Mk`nd+A9vpk*bPr;}h99cGDFQJJ=}C5rJ#v zKH5v;4%)GVJt!$bH0Q1KwBmX3sxcu@!u1Mlfr9Q)QQ%FLn$ohVB;_z5p=}*Cdnfb# zUrEK&Rbr3i@IfKz_c(9ak3oc6$=xxI|YO=@0 z3(h>8B9Em}CP`o|LYEOcb_$}yUUvGhB(xj)ESFK#!(ALV47~49U!IS(a2-uYjcmy3 zf^nk={2u0+_P8*UER8U5Rwa#D-)PmsC^lkON+~7^p}NX)wk0ybT6b?{9iPjhsN)Xh zi&iC5I|th|E(`z5u_Jk8PyBBgH146b$w_vc7Ts{rGba1b>AXI@wclu}^U)a?`sr-O zq^4PHqWE*NmnZ<@rGJ(V%q=UW(43rgY4N6{aEzY=s4FT^dXO%3Wgy|NW@??$f*#6X9<^>c)lA4q(w4zh~armmT?- zptm5Avq$;gZ~U%C)`xwgQNTQh;G{b}QV9~JOPvTMF;h5zoR>F)DJSR#HXT3QvIhfo z`*@ChvJOQ{spyK*jyDw+jB{e)yG|H+5Jy?jd{fvL53~$}h8935Sm%~wO1FT=y-BMYg6dvAEZ<`DtcxG&_MKX2y9S-gSf$1WPJY^jSESk&-Vo4c*U)FCE?~rxGg2F#U%7g z^4{0OkZ=2LO{I=R4tRDmIRBjL)LOc2V$F}QU^kVcnXdn}Aofx47V`%`wciRKCjTzK z6mE{OR=G3ojm5P4#)+>QCu9fhU6R}lxHGZ-+jCPqK096gbeH0{cUGM$F&TU9?Wtod z{>@*{UeBt4Ha)I|zWjw7mV~9hFvcpR%|%h7QsDpm%b^gL^rv3bAfqNht|YDs5CPH8 za&zo&vQ-z-0N;3yu|gNXmj@*1i=JAeSDi2y;w~Y%UQS}to^-^tD|AbG!Rk&4+y7Zc zUCGQ>5CT1mD5&fzX?t8`2@iz1g`UpF3kQPF%7zb8c{<*6MFa8)NpOpJW%2JhtVnyr zBtNFnD^(C8L$!#qVdQt~sWx5E}%_GaqPi3}&7=n5^NetBO zP^`+gLEr`HQ}Df(eVS2fa*t~9n)f})E?26 z_{Wab1EZJfF1(eGax!jq&?ZeMj9H{k!I$&?IybC~dL$p2jf{)etd0z; zoV)Rj+2J$sXRS&!6`R8G7y<$SLX2_Njq&J!u5l%*C(?O5P_Kt8lIU^inrPABQKd$Mk4-3*15-_KJTUw|H5X;7idH{EWgU@QXY<#ko(kgGYPQjPy9~(Ie9mk?6Aww7SgbAHIR#HB+vw| zynT(}sXtAsMb#0q2SP#JD9uCv(bY|xeU&wX;u=&HiL~@9_7t8SpL7?t`C@>N&eP}W((1!-PJ0T)+~jvzuP zow~s64Y*Hy0X60$&R^t~a2z6c^41w7DgC%pTy|DzL63I3xK z_W%qg!_D*`@(?6zNA2;k!vR0G4mlMe!VnbRRhS|V!;AqsKPnHVyRvO{RtMmp|Hl+s zU@~);0{`Wp`uy)Qc`eW;uAr|eQp*RQ6QGG-=2TcmY9C0IW>kOn$kVrK?d+>efA6&H z9S7?F+?YZHOfzLZoQk<720o7*ElNQccqIWG0x7jlPLYr;6lhi=a;nm34k7RcG`9-) zwFmIX8+rPyP#Z9L2NG905r-CpYlHzE2#^~NTy1VHgzZhB36?XbFI#vo5EfCgm^6Cx zslSKO(&kYymrKdNO}TECi89CtwygDdKZLlS^u~_{mfB{8JfZeS-i6) z^Nw#kHvGDT=eC`x;Po7BL^hAp8cSI>Sd+1E)20M5(avn;qJra_F!HT`{N_h$vCrWG zm=l_#fxq88eA-yFoP~2hh^bWBV*PC;L!55jx{9X5F~ocVo338SjdBN{5oR=_!DkG@ zxoCy}7)5a)PSdM2@AY$)ple8VHy=qgi~p(po7&d`H8VM-qgq_W{t^{lMBrm?+1}M} z_Td*7Hj+ICNw@6^3{hsjf4P}vL^Al8C!loX*~w+*d;u0zhm0bOx(QkMpZC}DU|fWC zIx7WL1NwDNk=6^$r~_$-@UM1hL^d`FkI*>4<{FUo)%;7yf1W zAs_8IQ=svUC4FqXS7)uXAzR(6thr>J#6y_IpQf{9^WOIa5k%nw(nntRLRxxsW}_r5 zM!pEV96H_DmKuYP4zq!8-X@tUYfDv~TR4!<1dc?&GXR;mGU3RjsqaBuU{&0wh2A$Q z19`0owY~>M(NQUQ&c_2F00qrT(p}A$f?qtLQt4^TBn;Y$PKJeH$Hgl1_~-G*QngVz zqh7^Tm6Yv#48? z!bz~#7i88bFq|qOgYeu<4tXEcYE;v9Lgr=v>nHAFcyhjcnrYDRu~UItaQwKW%kD2^ zsZe%$TlQClNPqP5bN_IRKmPP07|-@wXgX&=!gLrjrYPqj3q`OjUTWnS?tbA*t#NuC zc%?pcGZ2$@%3)Ci|Ek4xMr9M)h6zk8t@oC8Rh&vYnfYVVwhT3KN136T0Jx#^4S>Hd zvVb$l4ozUmvoIDzD+B~Wfo@5@$C1f*67wm8&2OovtoSz-@o*6%^r7Ggaj3(|f2IG{ z%34xGiW;9Q7v!MEi%T@4l3*h@e@@{hBfFJ`Kzn^aNV*)`lOB-G!=*#Q`cfuF6C*Mn zE?FK2id}v!@J>M_8T6RWsU@z*(k{rS`@a(xmX!W4-ygQeYXU8drP;CYyB&xk`VlM zOdFC?qdl0jT*ZRbE*8?@Zvt1NPp$gh%=wq&um6bIQr$Hs$`8!kf~72kYkx+f+jj_j z*TCd?Y|LW-tpr5J_mMaQL8J6G(I)O%b#y*FGDiGNirOvEXmzFZHJw#Ybc9x;6{HFm z)we)-jNZY>Qn-4-jvB?xc?byNX^!)EDdi}Zg`_Jf`k^8;ZYwO3=l74>^G` z`nC}&V3w=mi5GLP&_MJl4n4V0Ibo))t}7@I-L{#zR>HHPra7;qNaS@o4oK8yWhL0J zcO}x|6ZJ4x8~v)j8OShrrOM)>aJtEMx5W4Z(S#=rNFe$vO4s!~;2QJ8B7|PJj1vRp zdVoc%P4#S!L|#TfeCrW3X^x1>a>QVVRM5vf(I~A~?n8RU2P?Y1;7AOdZlQSDMO>8LC1g1k3x_-UrO*xcq=0dl z4FmZZ&1=v$X{Kf!W1xZWg_x`u5%4h939G-3S?LBut#3Cq)G%3I8iY?+}*JZ~k6XtAl*di0K*!n>gthM7Z+ z?qeqQ&u%-4lCuH{7E(m3>!ZNAiIy>t)A*F@er!A(;Lf};+B(doWQ;1_Tee8h3z$ps zxps>0)-!WtshYk?_P}r)nCm3)it!h)3!kI8{A|gDn1afV*^(4tItBFS9{9uXaB9j;dgL>DxC474~4?BeW@_t%qJp5Ys$QplK$0NpKrU3k%k97 z)r9gj&aYI?F9aG;<-6VF?Vy5?iBook*K^uk$HMN+-AgS-pC_z);F^K=ktDpStBIp? zO?ERg3w>B=?$PLsh7HP=@HTEL<}VbJ=K05=5-aLrIYZ_(;#UALQVx46IFKfR83dHa z8BCKtF{x)!hby@E=qz)H;5bE3n-=it&4}%ZdyA^NOt<@|%hmEZ=H%xK@A9dx{=X|p z`m>TsAafFMlad00ny`SBuQSFPYEan)HEor?7iv1Mq5UVV8#peP0XY}GntPIXHVgIMT@tY&F}?ZKqZuIBctV@C zKd&s8G!`aVPJN?_$JM1 zt@%>`opMfc+Stf7%Hi=JxCAd2&{53?@|@0Ix|TTXSx4wW8K3eDYUQ>SLP!A5@3kqe z_CxXJFaHFuu|QTR4SsaNx`o3PiNTb_NG^;8y;%OC8$jR5`x7E9)Y-BIOx`^`gC!;~ zkvOf1u`G-ci%DUT*kG63Y9nF){(Pr-c-$r{D=67X^y>D3m! zmQd%VzU9X5LKq83!}M{~-aYf z^zdU}J*Mn1DJD{W*tSCefDX}h3*Xz;BX4--lK7;!xlv!Bo>#%=IKp+lI_ zPEo=l0kBM(xeoilc=}Et5riYnSh_&d+GPG6cb%N;rzmlZBr+z)3e;0 z_TBH5zc6n9K~Oexl-~ATI&K~5rwaj3&s$+4Tzsadxrx9A?CKGK`@B&)5kk9V67Cl& zDAFm@$SmT0Q=8|VoNzm-DM~o&wWjT7+Y7by8hQm@KCYPsp3%&yRn|0UNmArSqd1>0E8kD)&ZwZubxp`5R8e%2sg z&S`Wtz)l{y+E$C`liH!BJD!3NZL?I$G%uWQC4K>RT>n%q_XB>wF9%<^c?1)@S93V zt?LwSle(jG;(8~+oR`O87R+w^mj5OoGk5FBQ3GB&83BDK3P z(MdvUt1^Pnvo2dJ>5JFZ?_i2+IZ9;_zxqFBA~|>Rr1>4!t<%Sf(y3VSd^*tA@?2Et z2MVao;g+_@B5GnBP~aIfilPV-0hsB3n2a5~u#Cthue8O)F|YDVd1F2TDk*nMsvNJG z<6vpwIKPaz#fh*K{|gY>aT(Tof4e(s1_`g02+C@nMUpUrr97?|TB3W*e8J(8mHyXs zcOPyIuq{Ws7)LZ^g(uM>G+YYt^^&uOt900(^|J{`!Wc9&7HBDq=)24x+zM2Xf2*uH z&T?U*wlt)92#nNSW%_3*t~S}65NvnXIkr&5>o^kd;e83VgHSmmiW;3U`-fip?#T<3 zYNohhw8r(jzq%YhDA=RkQID#BE;;q!Mk0nZO{jS%3z5Bp8N}l`kx)PKd>=A#sX+RX zD^|e2rVVyjh*((wRE`l`N&MqHvgKgL7sZy!(yJ^k-cf?n*!#2GfqQR?Qbay3;mrF3 zJG?L0pSShUD^0%Sc;@IwOsH^Ej>!<}*6dw^r-Tb3)%Nx9yYKJ7q!vpPETC9nP*GAT z$}S8|ffDtJUpdHu3RJc4f5%4a4kl9M1V)|f0R>4A(pfg09wxBnxx%=59=%Sa3#hrG zV9jzm9P|xZo@t{*%wwL9=C}@T(p-whkYZ^JeOA0TM?$#U6^J_@KYvS2RhxT$U)8iC z{flhlm0H$H2PtIKhu{`gQK5;{!wVb(U`sbL1_KBK;y2FH5Q07*=Jb`0FLalg)78W2 zgM%$}*kD+oMiQOHmCvA{;R8ZEZ^gk%r$q>MsoB1ttdP^mW!zHE@gK|_rM5i=P6@w* z58B6NOv6-4z$&9>ek|gZpM5%=W7{9yF<;5d#6_B0J`Xg-DNx@h`lm~?A;M%%Yl6>x;R}ZRBumlpdgNf=A(Z<8X}Bq?ry(= zCDYr0DXPdPul|qginy^j-YImjpb*f>T!N(t-LxCSOFlS?Ryj&%i_*9@|9;`KZ&;Jq zJtKOgKd?-qp*(ar^PN83LfW(X41X-D840s|IhEY@oDD=LoK{1YhLs7t%zMSlL5fI$ zGw8%boM7Ehi2`t9{dT>z?CGng$yqX3m-rOjetz-EZjzq^+T)|KGz2V7_IXKRE8MLJ zo#wh?+Xp=J4wT&EjtvCN$*pJ4B43JXf}&j%BizT8y9LIqxL+M6oUZf?L{*k$#x;xI zs+^!Rb^~&nI`rd)@-J$dLU_ZYh!$RHFCqvn_w42Je4{^yun$m!av9CQ{4j{T* z3#&ba(?25MV&@OQ!XQkbr)#nBsQ`eL`)=IYU*AH+j>f{R{`qhe&8cLAlBF#lBhT45 z=6;z1l*0a)$II#XQ!9iWsw#Hpihx`0&y`Ul`AP)-IpTw8Ui+8Trd+c5WzvUUODYOC)}mxtXgzc&yy4Jvt6( zphVk>fufhYPT;?Hyy=M(hES#WL@L7GM?J^w;?Xpl?QfN2MPDW`_YwDL+5EL*g}8oCU3m-1z+K>0D2 z41`9X{3P#%dW}E><`6~YmM9l&f%;(lIr(#DWsb7pwc~&8j<2*k9fi_C4gP38XCPs8 z)9IRXxZeH^$F0=KO8L%Q?}`2fX&$k72yS}mzZp;HY*7_p_!=+~)DpvNQcQah+d2c<*M}|=8FmhZ zFD{-KuAcSg4V6xJd04g-Ae-J``jeLwFO3VM53;DxVr~m_)DVtH3Ma-`>G6J`gi$%g zYv6!%ZUV5dBDDN%yD$->!VX8QV(@mSN+Iqa(<9!yGQSJ*XEkTjR^-P8=h;?W& zNE~Ncb#ix4Wy0d`5BCh&^ei;uv@hynIq*sRdRX^gAtX%@_=6(M7iv{9?EMkOc|lO0 zSf4EfXn+!yLPt#X*cId#aGLRZVsoz4PR;EY#&Zs{hSC;#F;N2s8n!zHGb&*rdQeB# z2u6B)V?%+UffZ!eGUc8i(!T2@iugB>-YK>4L9}emTGDKLZ%UJf_;U3O4<}kSmV)pw zQAJC2RGQ2;VsYAT*ROGk+Uqy?Fk2;;AqL;l<+$~6XFA#FzyT$~op{TehA zeuJh$qk#JHsqLM{(8$5INJes&e9JuU$wdM(>Td2G zrMIn6cO6@??dfh)4sM1DbpXZVi&l@r^zc)2qR+sxilFVA8iAm!bC{An&>F{sjQ$1Amiw$TzF zo;>ym)F=s2$vE{?YT?c)y%bF0^zRF(2#l4UXwHg5y;uj5g5}ak+sJ4bkg^OIf_glp z8PMyvqu|)NvUsuq_LDhZCUestU?Q|k2sxh-5N}Dn|0{QeZyD2B%%7A@3(KgnBmI&301-=2nF(1VKWFrooSU1c-n!rn@(Z-pP?Y7KhJvE$x*hSpXBW0o2<&-WJWrvaJq%Ky}a??@0mlhhrOje0ViAZrA!voK6b%uw^ z$BA|WnhRlR1ERGoBrB!cr+L1}Jq!uH{JGIz%gXMlE)NTRK^jUk=K)2rhi2hbFh+=w zQo`dk>x1#D+TuBYXq3mj&2WgVjo7QFab5HO^3h*$1}Mdc^3wDms)ZryPoKf4o) zA?)meu5coP?0((CbKIm?!J91vz7(9{dGMXj_N2#mal_d<*w?UjCpCwkL!Las(zepu z89eoQXKkrGZ}*9qI9XiyfWC9KPkg#OwgK=FtEA~a>#dG;);#JpMSepdL>@(>M0NOE@67SAUSyA&1HzQTh#I-Uzuef)iF_`8p{+&et2Du3L$ zdn57e4p&*new9T;31^ER8hfRcCb6sKz@u$&7lzkpRdP)84IM8H8^%+iq6p1wvkP~> z|890~iIJH5hcpWEmFVMfUqZGq&&lkvt4 z1-v(xK|Zziz&43j(18>vDyfMi)=3jEQdPFGmLS*+9+a9;@Wla}g?#An`|xO~7Wfs=`vDxheE(}q1vG|3mi{)!GU2M=lq&9n9w?* zq7c{%MDRMw&+s}(L({n;Qi4s`7Xzxrx;EpwX}$9v%<9kd{Knb;*)<}hcG8#V?@jB+ zei8^`66LU__x*+?4|3HNZjehBh~@W=65p0+9C}{7EWc}aXWS|W~=X+*hRz?0;{)Hgl zJNlqUPB9=x>ynRDsxOLu6^gb|i1H5t-t2wxnx-_HiK;IzR=(RmF;v_S&&+2!0Fku$ zorjK*3A&VsR4HE+BTPugaGEeU4o%6B=z1ao8_1+)tkA`C# zG7U%FplC-gDi>NCsvk4&s}?I!_X3ip|H$9JB8S8`Ug>IItMIjETKbBrkIK<(*J>ry zUnA3QEjq`2d5y;O(R3=M)6w`&t2r#gH%+X*sM@?^a3@d zyI6L`70zBSSxFcP4OKuZ$3PtU+r3p1Q6$W zBW3PZc$Xz6wv)z+)YBu)gIw;Vk7*3CXLP^Vxsmh=j2!MORwx;`4`fZ&vNo^d4lPWy zemMJEk78yHdxt(*>f3VqHk2#|c$a*`4w?6fuNahv_-OS*Ci*TYDH00gtible<*EQm zzhAi3K^lB?oEAl=uLA*yAtF!;fZQHUj7->FpJKTT0Vu>K<6+O)Uod6qwCP-5eG*Qcs)(dbxEz(PPh7FLyW z_!r;viwGH&ntOPD_`s;0XsmpIbJ`o1+l9CEi;DBv<^02^DW4Sv_5J^K3*}&pl!FHRQyHen_*lGc5-1~*P zu>BlO?IPoz)-%Es^Ik|;uXj+iXrFIfW9acLpGcXH8DAsoLhkG~HeqI0h$D1@4$TJ^ zDnblm9DuB9$|USnNbe1&s~VrFl(TnPFlEKejFf*AEZnAnG~|G&$hPoruf?L3&sG-R zO-=zli>_6z&R+6h4Q0EQC5*|Kqv9V`+xBedeQOy2dC{dLiv!B3FRLNYtlj9wt4>Nb z{BF#TeYCu;tn&fsKcb#obGhx*@u41r++duvfKpQ8wJ-St{T-%r2|jv0xY+x{{mpD` z3%SQNhQA!2du3D5(lD$vRMIE%F;d4+ekteWQ$?e<<1Z$}u78-}IU}-I#^KaS@MF_} zZrP4(@N9v6EAG6a#%=VyUI8f?GBT>R*X2IXN1}ffJ_%tYJyim9ezhm#vZ$P+m{;i? z2(s+4Npo#+=H0m=6Kfa%)~!Dkmlr-;=|j*v65p02SaA564>Z+4KGnnB>KNC@-PDo( zm!@eQ^Xs5+W%ZMX2_COHaqB$JPb^4S?ha`!SG-pIMjEN<7Q8BzwH#>rD1@CLca|(d zxEav{z8G{nzzfJ%xIC2YSZ3)D9CW51hX?J-Qh|fNVEf2z;_kKOL<0{7O8UN#Tfp6i z^R&x2kE(^_t~UfEmzq2B6Ox}a8SoCl@XPqQD2q`=B2GwEz3M(v)8)}?H4n4WdYk*W zhgrgVjyYe_bgqv^k}X|f%bOqX2!0ItUMY4is$0p?!5(w-l*K1q3SoH*O9uWcbAKze zY&?6YVWr#y&4UjhL%zdv5(Z2gLiBME@y~>dAv|-`1v2>wVvj9D0zs~1*S^e3&La097+{vBi&MxMkO`REB0YRAte?knr*R!_49J5LP zqtRd!vOHMIp9X?>BC@;A&U$nX{X~pw*gWM)>Bfrdi2ewGV7-hrmi&#SFeA}U>j$F` zkN;zT7^nzLDV@=g*c9Tc_N_)$%d*t>MOg%i)%=Yv$Kr(d9cO+EFLGv~-}7Mq)Tyk~ z&kUUPyS({IF9L!d4YCNMoq+>VNTq1<+&-5sHz%i=ca#CRi5S0BcMQ$-+5PDR;}J_t zsFh{*8|id)(X#Hl-(Py6o#F3J`ubEow18t72za|n>9$MPVQ`Ruk0uQwgyfYchCQxJ zisv-RZ47NY8Z2xMCiLR>kzhi@c|HJH$AcYxJ`_%)y?wuLuM&D3cu(qm1)uSoTWR)c z@ptDZk=#$hjAf&dOjrFGd~L>ok&KN?+3g?hAwa%)xtZ3(&Vk=jxG4Ohf+7II7L*~U zP*fsB`$c0rihn&Z_y1*jJ}2DIbZ4*jXS>zQ#$i%`2PrH?#lT!LT$k6up(?blCREx66}Do6p)JKpa^Y93!Lpo9|`2 z$rJZ(7hg~OYz7~-S_{sIl)nM%lFQN`GC#wrs46syEHtv!Jb!3l1!(Bqr)9+qH%)lg zol*?K`8pI!RUNZK1jeVqTKz#siP#~Ef8^CO;82ko%b|jZl)gH}>kXq8>~D;+qZb_g zm50DV)bS)JMFoKn>}!;DI^q?GM)c{=&10LaSo%yORl5%Kp*0C_2#{4cv!nPVK4HF> zTh-;NKloKNQe~T-Lh{HU;@2e{4*qsT*zc(%{=oVWCgBMu>N6L_*Zl0#Dox&|Ri*bV ze}0Dqph=3y+MROHeakCkeoX= zKc70|djK+FQR{+4`_Hv^d8cc@Y&|Ac2;0Mc>YqW{x) zFQ253j1SMyXSA;En31!H#ERI$n02z8)kDB!$ctXKDOoQKp!);Ngp|4MIF;3f-wKD^M5PytEk-_817N@EZy#_<0+x5KO15bLd3tUMm3->bUfJ z7qO;wC-xNYDAr_8PFiXDur`Zum)U|8dCna2S$WSk&Z6-gKo^=3_EOhj3mi9`uxQSe zSv71j;1Ra-3Vh;-rMT_4dX;yV#vF`gu1T`g_Z0IK&ip=k(iwosW!As`(w|@n8|0E! z16U7L7VIt!D(9Y5O0Y=l68MT5O^9newTt-#Kz-8hO1~z-=nhgJld1OOHxur5)?@(6 zl$J0|Gu*HbGd4at0KnpFl#y1Zjv`7XfP?=QBC^V6CzE^v;VO*<%TnT#r&h$KSmVF) z%OIGc6sQKaT?k}z{nOd?veWi661&ZN@<2f6Ojtp0SRv~Ibk0?=h|^ceqJQ(|IYvxT z%HGLx^p8tFN6a`nYp)l9#dA_5#-TC4>=(dSK+x4AgYiJn-$GAC#OKVT%C#ehPp+}y zgQo@*AN>)hWwvox%)&)>`A!jgkJ0>n&}U~r{*BJa zTk@qdYlX1m=5n^1swW?|0`6t4mjJ{dpL@3IOPj;>n&0a+V}X2+Z4v{y(AOWx#b2<^ zRSVl@l~>{Y*I$-jNIx&cFvH(*+Rzf$GjcCLkcri*J%6SysB zun%$;Gnix}sQ@*#LM6|LF+rn^RP+d%xUt9ftWiUltQDX-1bL3;+K?UP4XEU?z1t2? z8|>J>r4nsSDvXA)1cP?-rqoBeMOL>&60-lIS#aF`vxrQF;}^;20%)50pcnRJcw#MA^Vm=T&PU8-FvGZ^ySel9z1AZGX(5H_};DOL_EngO@5ZM4) zqaquEUHA$nD${CnGrmGHXy8YfXBP2(64{4;Owh^Ml5MCvvk&+xrNsKXIba#vzC?FyzPCyx;geWZ_ zsHC)XNW8xf@Avxs!=Jmjp3iyCInRCWbKkUVoJ}K>l=@xt6>+GpXQ7#VL681lH0xV&2?m1rXp*2RbKSum6!Lz!Z#D06@bjpn689x8J?#F-`JL5 zqXh@SlY+UU-cT-J>QfjHIOWw6H?~pq_?B)7+h|)eC}hE{MX1&*d?cN>+v;h0N{|!m z3%IYmdT?QOAr&J{>4(U7i}2#|iL)m4u<*FvM;k}-bZs)TyVpm1c!?eoo#YaCv%73E z>llK=l6Q0dNKGLZX@&ZF3*CxkU+JY+ph}P|<*O-({wa2Y=$^8yx9(mT@nQjnVVzYM z(R?`oUQKg_L@g}g&v zzAm=3yolf^aFu!0L4tOYb7&pIc{UlCRSyOQjO(1n!BmXYll8) zxSk10su;iRs-e_@DmpaC1)NkCDiXyu16h9{S~hD);AhE0vZa2lv<36>E0zvn1-S9S zGr2uIm5*KhV6OHjm3x0jj^SZR8mV8N?#(c_KTAY4BPH;~P*L5ZpX@`q*+ z9cBG4=kE)8DM zukt@I4-T8<2qsWrFjUc7!-{#c$PK%2iU{bn+mu!UC*^vrtwIo0x11~DZs+yBB~DS? z9Cv;%`sbb%tkFNsTi14qQiT77NZcR=IaM>$@-y|PkIE`@bb?-P0ny~4;9beS%t~}xlzR~Tfzv)vG;&bveWjt`@jtr+4zpg%An03~`fUAOTDni=c zB(Yqd4yL41!~lH3@;0GtM3cR!&*Aunm?!S%%w{Wh0U`gShMNM>RGt>b>wtbpl&>5& z2xwkRoP%>F@|!nvhE&X3y{Fk|wPyjm?XxKQxM`VY_b4${;(8W<@AuPMW~j=aJ`ixS z1rLFfHKoj;`RVZpU6^Yjws_Dpy^vXctT zIF~-{omdom&0}_MumXHgGr2JPI;Gg);_N((Q)H&%bD)0x29Fg}l`S#a6)xIM#yb@Xg|B11&VhW; zp&eeyoUp53L~8Y;TlYcz$8HspQ!2q{vZdeA5vvr z3r6W!iKS)e3k;J+4_QYJ(aV=64DfMeo1=tAM_Ccn2Jh@xEgA>A&pCU>T0^$Z$|*!J zyn@mooCh&1q}@)NN9kNgk*P6XbKVoK!W&*}3AwsP*?wjCv%q0cA;X;}x>joC2|3MHstcSsDJe2hGtU%D0 zm)G<6m75p~`PcW~UFq(U2M}BOR7M+v#b!a&$Ims!xFlR9Q)y}{Fh&h3@wqpz??Zm4d z8&m~~^`{~u?aG%LsN?R8UbxP!L^@ngwgQ%aOSL!{JMBkY|;3@bel$0NCb?=E3WSG{qUc8Dtp&6}0+((1$7L%Id!xg>APz<7+ z6i5CwH3&BEz~~mRSKrYqnm3NstIAnV^BI><8%%S3Gll4Xw5*oL*AYlNV#DI7AX1sp zzIGR)C5Eq6w_7!6{yyDj492R}f%J!`LYY(BfkEG@xV3TI%1bDHxE?r+i#hxzZRaLo+)fdYQ2f#Y?xl81YG$%fzI*WHtasY9 z?1ni9Z?_%pd$xHIy}F_KIS!y~yY3}485khs`m^YIRwK+S@yF~2!xnp7%GFy`3rzY9 z-xwZn=*K0CBhJ{k*fB`MakOa$hD`#mBMvT9wR4)>k ztvRg$u5<;y;mtV8bZbu++pTXlNu5~|J zUfh%GG8_9crr)h(KBA0~T^m_C&{OaWaoc~6HwA~;YkrR72Rw^>#rO-6T)Z&@>?N_a zX<#!Wv3c)QpAE;h&E|M7{)1JNvQ!0FYq-4J^m~J88+n(=A5+tn57vCcO>D6+U4w_Z zl?sS`P!srKOF55`UT5BHT0s&eWAOuRi+%e1qdJB3FhW{TrF=7`N=E|4IueSggd7-H z8+(@T)E)}h>Uij|l;=^@hKOOnfRr{no%R4|p4809`B1cb|AMKpSSiC34yyGCjDO2p z>pl9V4p6K6_BG?^S1p+L^QPQtbR9&vx~s=F6G7bgq6GYew3_bSD@c^-+Wp!&AFu2B z<%e90wYb`N{@*e;`_Ja@$ zAwa^W&+^#(GX}Ac;-wt$<+!9(yeCuNoJ`zT5 zQu|;NkrWUDZ@pl$Y8ghuW%Gg!MqDbu^7_0m5P8o0C4ky}^Cs{8{$@M1(3+@WFB&{skvmnYHz>3E( z7odfx*FhMn!4trz)y&Ff`ppf4us;f(xRdv3PgjMALREa8PiMu~`BKFVp zogJf3Cof|F15k(9HOHgby0Ax@FXlg7mjSO!m48fw5B@mi{PgfmNlSBM`T~ z1Y3sdk86tV+`NBdFjJ>_IK(G~URE{j{Z>F8X`g`}HE1mjmRu0S>C8n(v+eY-NcgP}62h z0E{TLhQ;RxqPU=7>6^mUg9>gW-)Yf)>?E%cxI9HqPk%zrd|2N;-Bn%yT;kKV@1EZ< zq@Io{%%fmAidGdm;PVUn|Sk&6O>t(w}Rcfe5Ze=`xE=<+2x>_@V!EZ98vk@X2oCXv@)8VNqw8< zS@N{Qme+#nY)tgN zI+InOXxGU3L|30kXPnH*ti{Q_O2}o{rV&(x4#j@ybP#7ary~T|j!xdPo$0G{Cnu znoMXGQvO}S*a9@-dUb)HAO32y1zAz1xiaOyj)TtseOvljAQDIe#yY(zowps(p8utT zP?q=cBy3>zROpmYQo8|zjHK2ZV=Nn59w3AO!?!aiSeAp12(eZ*lK_TrzvjKpg?-*T zm;p+i|B@hw5J0=oIlt4W?h6U(yJ=uYS7CPS6OqJJzvo3v7!^=S!R*OxFY7^Y66~Q z4C=CF+18Y;q^6}GO<>0v-hQp1S9BneIjw>@UWu8MzPzotjF8QQ*3#r^qXKOOSwvvF z4zYSoyV-qTM=tNrHt8cL-40{<;<)EYNq~CbzQ7Qz$H$&4tmdvLB=s` zGyv#2Yt3bo@kL`9lj+?btx3A#6dwM=vgT+A1_RM+39Lf|o?PB$>h{)8Yt9q*`8rPo zDws{%9?uF8uR8lKXW8%RN4kz2R&aR~O{3kGHi2;!J6H~r*w1-jJ|cvc$U82x8QF)B zE($Cvl+5znGPxhWb_iX##u5B{=fWT>B({4tsv(!P);SXTy=-DV)HtEF-W6W6q%RBV zD6bgpKDwY!qUfFQZnYZ|H`?g1KPS1M!dQMKIUry+ks2d6~JnV@F?X ziw1$(v9UoJ|L-7^)Mw%;xgP3RVNt64)4LRHIV_TtLM?v31tVE%Rg(t4Y0V1VJe0aq zl~tA31&R3jPuuae-2UOVT!zHJ6#`eVVTBNcY$qYcgVE5r{ zc_2qK{E7@!FxBu7)nBr)c476NaTCAx+q3dl37xp^ai_w!(t}7(4nmm5wEWV#c<3u* zdkzu<@)2L@Y#VJWVz0*dLd~j>0>mu=LZ%+}iIK_NG>__bl1+fLh>CjYNEP(B1_Jvz z`$fI#fqt4N7=r}tXuH@$O<9N8O`rZ$z2XM?qd+w+vy=Ttt1ups9}BPUO@~CG4Rtnx zd7vjb^h|f+QC5zS-?MXSrp5QIIjB;7p5l`Bnh~CeBvS-H@cmt=hyix&IhRh1(<(xc zby~Jj1+#U3?PY6KYOIo0*egfO=u6u3qAwPAFD5HTWFk5ac0r#2fAn52O&!~+q>BY} zfib`LV2DW4@7qx}+)U9e}mhYtSY7YlfmFm5iCz6q>>h;l4No71X6tq+4mmoJ~J_fHw zE4d<;y0IM^KV-o?0BOor(emxEzX=2Ti!PV=Z=)Q1gnvo&IkBKNXC53!c&fTA>y>X` z3F{C<=8x;({NRM~-cspNlbvLWkS26^;L#tlcnCr`xOUn1K^r?Gbc8T8V*n`H$PwJ#3fBXpMKNcVR|+Lqv~LKHSfV& z$ED)p<-~uaI1QDBEHc4VZ3JjB7AE6=IDBI?9vWMKKh4=|X+Dr;q%V#dJl#U@HuwGp zIaj0%a1>A7coOeeYjtiyRWBEf9j8JY7C68RZRANglQyjnO_nDP|Nk zoT@R7BO72l8MdZwhM3TDFhF6SY3bsF7YHw(O|ViotANq1BdKr7LPRosy*AtfjDKzQ zkHJK!*p~H}{ry(ssMHa+6?_3!a)47R=hJF_e3g*ChO4y-(|iWKO-ulsVOMhIW|*I{3&(yR)sSmae_+OxN$8w@@97bfO=<721>(#{gI-EW-ym!X)sE zlZJI_=tzk(jcLU>t<)Omb)+UMj+rra!(#Ot+DjF~Kz`})-M>{k-Yov9=rCaO^e;)p z_=#NNnog4Fn}D`+Y4xi9C@&rbXfw|+LyKDs9NQQ3mD$>mgBu*+*;IN9u9QP>{;8Wb z-iYf6n=!v*@IXw?M4Zu`JB}74=mle=V?S&Wj%$P99BbcOQ1d3>Y$c!+x7m~2&LD*p zw>d}w8a4{`tNo$%!6Tg<>Q;^=l+!3mN?WpPW}$3$0J%1X$0=R?HH_2?pz-I#iuQ!0 ziR(qMLhJHq71Q*bL{z}cy!lQFPEZK^Z5<#C3*M1WUR|*2bd}{}0d~E@nshKV#;Hyr zLt@5?3k$TIXn2BER99ce$P!!;;*Tq#Im+$P)LuW73DIJH!<*YKoRTSTvdnBRj&iTs z)o&5lpw&wZjLw6|H%Zj#Q_O2^kGuB2<@z}+;#VRma1 zk0$%oFJ=8ZKb2M#&DIR164i`Zd5Rkh;^EK#B}vQ{zAU;pwMo;9(DwZs@|pUNK=iF)7X00a?)WDStHB zlIz_wRkWE{dby3{(3Hcq)GsCDcy z%O_cYKHhUL-w86X*(S`}CVH3%loA#yOA8#Qxmof&!|GTynesy-%liWFWy9-_Pt@L+ z+>GAQPr7w1tTmn%uz+RRsST#yg1BHb!;>b)_JaJsdl#rmJriz@iid~$wnPHba<+A6 z?~x=tl#t-ovEg`Q3;rOwi|a`jKP&}UPot2MmHZxtXAYf#7XS6~#52XIP~ z<)B<70CI=%(&uKYI<{S|bd?06n!Zk(mc15#QOC8-gyk;^1dHKxH1H7teMy*CSJzkUC4*2~l~c^qIDC#K2jx7=I7l?$?*N;ssI1`w7(lN) z`Iig{yn#Fg^sDoTuPEt#`+%T*PlmXd^mg3b)8|!D*N}!BcXAYcB3Qa}s)nKX!^Iyu z0|mM&gWjc+Qpn#q&5ngX0j~2BFcEyR8mAOf-SJY$39h8sl^PY}d6}`0+4bSD^UwC| zC$sPz4TCZZMurNjga~-U!wPNYy2I*N(i4H<_p7ZB;=JAdROO2Z2v}ZL?%KQn?aHwK zEl?o+De{MbSu&k(y|0|(9|}!#<#;8)=)Cb72b-c=&F32;{Yy?T zyAfh?@Cre;#LuA83UZ*@(eY^F^RLYA7mCIatQ2-%nA&d2g0i|8o){nvLG89hFv(m9 zyFdEHiY_U7weX}Sz5DWzf#K1W`iBL@)Pu=mVV*fq8^8H$&V_hdKEr(>u!2kG(;i_t z*TDu8eTI9?1AKY+aEwL{-QZqs!Xwck;|Gm5>$pR0LPFfIgFGFNZDr~MW44PW*yj8O zkgL;cdS;C%{^84NxDjbJ+;e~vZ^Mg&_o*P^C99=nCxps>N&MEM^!H3HQtyo;*FK5- z^XrnU;a`%3EE=ty$emuV4w{kAKaG?=L~1u(Fs`&dNDS#L3w1Qm8Hj@YjII0o$e>V` zPmhXq_nPVR2Ch4?7#@Q4Bx;nFY_~|!n}SLVwA!wE@_YGA2!Taqc2ohn-(TmsCuv_43rAzqX;!8Qt z(^CByz0m54&WpK>vXZ0o>*yfi6IyvlH(_2`Oz|UxR*b}yDd)V8M8WX63@R1men)Y! z%cg+Y6VGLCd)+CAwOkL{TNM?{6JwaJe*)A$_zYqQC1tPEwh~Pc{%E3`(B{UrtIxkm z%Tiq9CO5@?ElWlsUSD-X;t}Ht4#O!lAN|Oc6!*@p+4r8htxWCxD)WGlVtA84)@AKo zfQ#xm6gCwwq-L-FgBt%=2XlwdtN}1U@=`aO^Lb-7rx7rCl`$6c05D6OT7d1@flF7b z?Wvu_`MXHYbN1)MAwQG!Z~oQOF+Y>JU-?6>>W8{$>dxPvnJzTK(slB?ddJ1~1UJC5 zJKF@)RdgFg&f)}eMC~-~_n%lX6H%GX1VJyzHT`+y5*neJyeE8EGN$0-2~WQP4S7eW z`4c?(l+|?jEWk%6()I-wBa6vMea#QAu=w`)nA)_MUvKsNt@}-l%9oL*sal_T6YzK9 z#q^))xC*U&LEOfWT=)o$z!#E9^+}Bl%pnxiy8lHnRx4#r1FeovT#Go>^glz))szrJ zgg?E@*iKIH4du-j*9T3*)p+rAi8{*bWI`nUC6q;!8bba6e*Cz_jj8-dAH~WwA1`H8 z&T`rOco*2lZ$z#Q8|PcH+uicJha4IVESBR*O6z?nkhVkur?m==4m9w9gqE;w5`vI> zsg>pwF-Hls{G7UI=igFp&29wbV(!}N!j@^gVg0pdIrI(+f9oz2L+rXPw~Yl7&Z7YH zSHm7LKYW6L_TtIbNrOSGZPitUbh<2hdV=dU(GCA9>OSSTaGi;gZ0G$#?_QI14#~7) z&IAd@>jsoSg(~s7t^n=R%=As(GTPZ0Qb~$4@Q`CiBiig1fWel{h4rMD@sAR1qwTOl zT8*i#e#!OzbUj5*Td<1ef@;$-Acuk6u)V=jzcG-b8q>_HQWO(A(ODX~~ z*+%Ow=C9QcIe$kA>k)V`x+DpYh#>2dhMRu<9U^B(pT zvnjdb)AIVY?341#C&_kUrz25?azpeo@}b00j2APJtIDoBHL5Z!O0_3qEP?!A5{p)Q z4djsqa^9!&4)XkK=A72oIj;yF;$iqura;^GJ)nKA{;z!oy*Y;iHp;7?lGcuy0@C*K z&Tjx58~6SsjE^XPkMeDfhuP8?eo=BC=FP%Vu9g5xVH}^O8uSjDsUQm=bz;0nQ5C2( ze_*e4ghOc(z5#0BNTTd6{6@K0_*2$lM6mzs;MuI#bs$|Gn=`y72>DIWi|Y!LeK2h@ zm+O}t16bL*1mcE)35?akIni<1IPG)tr>_|T07txlf`7!^D}EZFhY0uAvpA=PQ-wufu@dZw+PXRQ6_Vt_YDAZJLe#wC(v&*W2BZ)+et^2Wq z(rx*;u4x4@PcBDA~Jyqo&*>tunC_igd`*jsS+r7ZQNnZ1GB{0jn<`8fw0DN12VZ1TF=W?{1vz9ogcyi*1&5g5TV5 z+q1Cf>YNj@X|}%uopYI<(hb!y14o^Z3*eutJFw_k`Xg2;K=x_(V*ElJe>)^t z@w1M6BCdV-9?&WSPjBprC22^wis;+B)t&W*Z0C`(8;%Hi=t5)_~ zia*@E@>FpY=g~AorYB2oKC<$}K(rwE=xT?#(50r>acy)e=%JG6Mde5|% zh(W@ybEWs*N;ds?WMW*weS$gPx&O~~P>l%_v1$#M_x31*$ce-Ax=@A!)+pM3!3@uQ zq8N!5%Y z`6P_|$Avh@=pGBwrgGR1a0x>3zxxSM_^5Nw<5$M zP(CJHXho&ZhSh$7`(?!#=cm?~ebeOyV+K}4<8}QZ;*janseOr0%YzCcp7u=3cd~dt zJ3)oHLIzw7*0OvHhiQl`pJp6L!;c)4jtSwd1iz|&r!9JEAK$Sr`$F?cDjC~)c72!? zfybC*GgpOP2Ii!s@WOJIXi`HzJq}AlU#A~Uw{I{En#gjBpy2?<>l06q@P)zvb8gn( zjISdPl*2L-^3LFQHEJVFqYxZtcV(M|7Mc!YcOACWsReNh+;=grZbi;;m#Ck){DHYr zQ<9bCEoS(KSdQ(T--2C<8rV)&KP@b^vU>MIVkD8*V#SM5_h;1Q^|i_V+4*K+I zLZ|lp9-ep(H~g1`Su_S{t$8dbIgM`t>UO3{6TUx6DGw)$A@4ww{VSO-UB!5Qk1h4>Y2x6;!?#Zly1CQqV84?#o^=;_!< zt3(e^tWR?HU}Tih8F9bA#50$5T=RX#Yk=65aXgEPhWEC@oB0)PZo!y#U##Q-=(nq; z`~8_{+`?aY9=un{a4VAX+T&DdV~`heH(VjDUG7#5{PMFfYbMhGT2nXB)V$YJ-5*$` z3Zajc=*A`0+g_GcAQ!$#0x^HVntdKGIXM_i2rRa`e*Q+1_`PCI>u(td&_Lc@ivJUP z99MUsdWZk7QH?<9;(<=#_+P1onWw+d|25tN$i%;Zy7LDo9j1Y+bkl{>N(V!%=W*p& zR4fGHPK>J|9l61GDgyW@{wj;SRj)q;ld{w@XEU;HdIIlg;%KvtD^l?$?lwHk5b2AZ zN!nW?AVcF@1?CF7&1+JUX<>+D| zY5E4#Y`yTK$U&Mv5;<=z1W`U$d*~7QRVIoR1mm&mawy7U_Ka=uN@bCs*NA&^9B}Gz zk)uZNNsWJkcNn6a9~fFn-lfoPu`aiXT1dK<9uJve#!06nZ;*YdU5TR?DN4D``9LtT zo)OE1(C6TEmH4vVnWH3E{du!9KaAL!uag6Ro;UTP`nJQZthvzUuQLV^Q(CZQQ);Ml zldijgSa())9!ZWY7vdMye<{bbM6GoIxq(~`2;|d<-0mV7+P|ldq%&WQ=<3Y$*ExQ45`UikFA2r2iR``@%gq$PRRPMwV=6iS zzB}RE!cqteZHJ*S^9HrL2Q6pmP(3Sq4USBGn)0T3Iz~6ZS`EOXDpnUU#;+7LDW8?G zKSNqnt{09no2Cflu4^As;rMMUnptt#@R8i@{0A@rw)!Lt1L*_>0>_&#_6gVzyjMyS zUNWF0MzMB;Ton{f0^K23itK-fZ~Zo;BUpOp$U*t7)dR7b{p!%BG^;D^E!BzM?IpoD zbP%Iv5+;8?qWpdoX+?%*-KGYR| zT^paTDTd>;jm~Zv=LRsDGBADB`LGoFLxe^xKI-toH@Mk#5P7UIeN_VB*=yfe0{R0> zt{z3eS1GF+^?JYHmhc`AIDaRFAm^4?NzXnlo;4U&bP7p@Qv83fo^&7Z(}vxsycS*FX;+U{EF5e0FVVRk5$Wm*Osj^m*x!!To(`c2KzehL z7Po@2vNPpUd29r}1{FQAr4OW8BAmX+biK%BZHO%DE8IB~ztH@t$gU1#o}0ptG>KZn z4>Ju#No3WR$gOZsS3OvLJFnYyYW;=i^1xC(Br7k4PHiBnhV&_^C?!BQ<7tsuIIRje zz{#Gy{lbx!O|A~gU21Je3%)YA$Y$ey%w-R%P+)eh4?nG ziI}{#jd^YwIm%j9*208kjeS^o*T!xLy76YVEPHK(5YDGD?VH~)c25&b*YsV}In*rN8`6r=KpHcM znT}G8+7M^a^@u|@aGu0NYz#Lr^4sOk4zQxOG;d#t<1Q9&zFx@9t)W)e*mm*c01Dj{ za%%b!hy`XyN`FfwYJ|_?w}Cop7F1h~a`cQD|4KV*{J}4?;MbVJUPV-w@yNPc zxIY_%Hx;7S;Jz(v!x7JDLk`WEa2~-@_yevS6O-_STImn)aGI;L^st6!b0m95X4UTf z0$`B8BUyX4d808*fH;!9&RdNM!(IW<8Vsf0f}=3cjk`UX@FXoLKv$NPh2_JLy()6E zEQ9T9fAGF-PLpl1OxzF2nyBLhorXQ}(*VCDKvG`UNBhW7`C?D7Pmrz&G01d2T&_>r z3CyZy=c_s$IwIpu?v@XP@~v z_*{k>d5)J{Yo2+BH}hE1Kw4z4O#+>rDdbq)&Mw{-I3lgDMuncNPupMx^LL#ux%_&K zcZQ7lzpUOVkn@a5H*@U8cc4%y(-e>=91n9JJx#Bv;g>W(bgOm9w22;%M+_!p3o*@uAvd7*a!rrKbX5Uhpu?VTOu6Qzb@n5bV1q)`zRPKODpPNX z_XIx_4o*sE{v0h59Dkni4%H1kof8C)uE7~7lEKrWsrz$itIO_etL4CWm2gBGQUwgmfdRR!|QPQ zxESyiHM6CczRfsb-n-S%y7mSEd1|-eTU=v|Mb70ew6&oDOa(pZrbv^^`d%`(Q47rm znx<%5c|@Co$2_?3W6DI6ecCJ{MBZr_m=d|a^xiG5xB)c~IUB$En$A{ajpg+bMx90c zH2qJ}tz&Y8S7=Xo7vnawOM0IZGxU~Q=dv;_pc+j7&E#Auz~a_pu$n=G6KoEptU?js z;=4LNt<}iHhyDT`mOOi9>Psn03Nnw>9k?J6wGG;ohygqRdW(tQNWRawd~WvnL{5E zKd6gjdqK#QX(KdmB)qEN+tg|RwN^TAr~vV@f zwHVI3nlTtQ`h>j)5b1#YXMxR-o?O~{MfJT+*RH9EaVHqTNTh>vn#}qm`?HQr=2*%y zH&!~03Uu6>%)(z3hMlCA4W@mGr{3=beQs+*p%i#EVWV2TS%MyBn)?a0?Wwm2IuEn3 zqy&adT<-V69u;JOqtzV!nAy2tO0;_2%T0(Cz(Ibd{B)YH*25>MdqFLcPbsj&11nWM zBADuX9UPd-WT=|WyrgiGvNBzXU=$W`qzev<7=OL+-kVQH+OAg}Xkkp*`%!Zd>wM~F zA;QN}i8_KV*=w6vPbjRKI>xgJCW(-Z<^XF^B2p)+awk%e(#8* zhbZkD|ExgS$#2oBu&lyvGtt@a6zGV38v@WZC>SxI-oB6#sL5e=PzKJT)^*tak!C1K zjJ+Dw&1|_JwKWCWS+RmwK3##W9Rmxda)1)ZAaZR}khivFv|_blq^#NUu6uVn#(V$} z6$0eZmUu|?HIS^z%Kq(dYVCbE;n~cvE{_N54g2_~+zzi8e_y-^yJ;0zqE;!>3kBTM zo(#D5YPs+|;xvJ>R+NtQ%_-XyCbZS4dJCZ-gRp8(Tx`f26>g9bj7bJLH`W}^pIVG> z`>#0z5^_!|{3`tbVe~n6C|+c5$@5{O7n*X>C z5sse$xuo|$Q`eOiLH31IXP7&-2t6iakMT>~ph_}!j-R>7c(|iKH>7>PBb8Q(T~(Aw z>%}xrFWx#evK21=`G0+_RPP~^iGpFf1b(w+rk@+P&UY64#;uu{Dho2ccV~>X-HX!+ ztps_I!bjq4OexSzTrjox32ZI|0@+z=3AkwcR~HRPM-eip$yR|xz1(VZuCt0VWLXkJlr(luGJyT)dS+=SkZa}C$?tLO^1{l%i4HXk_a$I)=SxZ_>D30cf&<;ClcY|g~GE~IU5Tf7$o zUIanqF~<^8iCQ(5uSWQE_Oe|+^T|G4?N4u;qLr#nvrgan=+q|rn(`Wse=^CR_XT*8 z&$p_Vu~|i6W6@yCpq)uS8<)ojw%Pcx z7sySF``$dfT)$Ugc@k31p|52pW4B5@LAX(UeAns5MGQbVqKVP~BtyhNx@OZ(5o1R{ z*NN{K+q2(!O;aXCCwUflBQ6yVWF{}s#J$g;SekkDPCIuyJ3u2el^^m*blGfD~>k7jOQwZZCXhNC{;*pv^%x!b7)mqaE}P2*N%U@pgXUDlik5=k{0;NTTR zL7c#riRNY{6!}5S? zIEAJnV3Tsnya_*3O%VhmSWg(skU~TNoy5gVMDNEKUL2Nfb*1dft`JubN!f5@Fml5! zPHO5U%8hV3<|S_@nI$fXozsww&Dv%t36P*!hj{}%W9OYni|hk%aQ2`-5N&3C@^E&T zqR<&Y2^0nmt?Xt$qO)dvCfp?CQT_(>q{&vrhdb2Vv>>|GCgIRxp^V?e4*&aon?`bQ zBQuu2b|^a707*^vH7*pO9R6neZA>?mAJ(XrX1P)-q%%~s+#PfJ^LoTI<#G;wmnKNd zx=5gle_fsVb1Zt3Hb>kpeY7_@-y-m3+&)nIfcJcGc6Y{G2hq7P;4&I4-*ia_9y)Vi zVMvHGu}rit-%&F~`rF^Oj@h(8k-1wd(G^Dx80vwK;~O3W>nXjw%7AP*DvsAC$c2tJ ztm7Jn*f|tmp54QZv_wZ1ccyM!4-j=p%ylhd>W zq<3ovvBt4e^V9TSml26U^gtJd5n@_k&$v{akn2|>$tFiQm-s!((_?O_m(=-)Sxn+a zD~HXlpqn4Jt>D=e-CrR${z+#dsxReC@CsHeaRY`I#g%9XVqoV~;P$sWS+keqK_`La zW08))DA09n40y6lZXhqlCMNrd{>9?P_coB{SJ1Pq%vetP8#BkY@b5W2WtnbW>@bah zquZ%=h=-Zq5t3asfC@1TVnrDf^5y+nSR5N2n&8uwmi5u-+x{!>kSy%0j6Wy zEtgVEhrt42DA%_6gwWz~68O{jSM@?*0lpF>g#qZx; z(Z8<1%ViU~vo5yV9rPapJ#Z>5z3c;?qFAM8hWt`ol-DmcD1AaYpTr>$ATpaq&?%q%IbZVhKTGtH@jrT+Zpv5c&s$C;%Po<4JT>@^?9k=;w8r> zayKI3d;CRscCGH8b2=i32jcBGgK5e-o>-_ylcnryx`?12p%KrBTC*1d%j3YML_Yk$ zG3vC+F&attHIZxg;DOJVja2Q8#8X@Jfy(=E2Lf^C)6yT;2zjD&8g0awhG)Koow_34 zB!dH7F=)2nZ+!T0Gl~Kv)cbYX$xX)>Dw%b(#A*N}RwtK+A&2H76}yCxm7Hf2pT~PU zhmRUdBWyy8{p*5+ibzuF|M{N5iSif0vTtm~dKOFIN~Y z(Cno#Fuq>BHvcb)Vu^<9>d6XQA+rg8?b_me(zIk31M8lDrzep3!&~o06eKJ3{Xa8h zRI3jI@T%5^x3OrJ$9BB(=a1G?7TQH|QUoTV!aWEq!RM}>Gs`l~j$FmpLAlB=mzJ(W zey)w6Pj`T4!=%Q{WE0LJ+rvL@&Qc#Ira$xqw*+Q(a39GwheK+e6nX^X#f~y}M-Z-{ednb%gjmW~+&6LS{@4YdzE0Qp|>QiO0Y6}HisnXdp zbidRk9;I8?ry$p~>wd6_{39OK^klOnVr-936?v7k_5f7XZ03{k>GLC7%IDu`9#p;e z-UDQtHO<{)A?Ta;;m_v(Cg!j8&(;GqGOJZtv1ctp%Y5qP((Qb=-X5H=P>+nrIdc}j zh0NP8xcC$}2rX}+Rm4Z(`w#|7j}A7bv?g_G#NIE`)TUbH&_`A(ItI4CjT&IifL!FT zmzud9cxvU1h{@r)hAS(6&KT-N74V6=Jkzj_dCLC8?I3h6FH80GKE=}v3JS%P+cZPh zXu{@6Qlce$%ORDYxeR$TQBu`7-b%FOuVzhPY!ln`bNh13EHhBCBtZH_Vb<1|8)42D zBl%vCe+`&P47zeT&$Cc&5F&%JFUI2DORgWonbB>!39+fSBms30iISpBnS3=Dk&Ng# z7{sArVsO~gWx{yvq%_8?h`$DDu~KIBC+OHglra)MCJ7Xn_~5q6v(#Qy*Hsaw?e@O# zN=1gakW~Cof>AvAez}|nBrq_|RT{8a@;oza)7ge=h2U$P%m@lm1y@y#BEDboL@wvGmwMdC#h`6E2`3upTe+9|bV& ziAb>z721wf-bQpeIXyBQg_yP<&!b;^TY_Ca|&C80NQ!h+|Ga#4j3fal;Vgx15l%{U;wN$Ds{ zvqJJlTXpoZpWf2pBwS3Lee2f|1RpQ_vMBd}@dD$#=KO;?Q#|XZ<^{<$ZNDt(-ie2S z(QQGL!-l-CdP$wDLK3v=|0U@l6Xr!MG`^AIG7GPNkx4woZ@C@mLRE;?Rw&`!>3+ccOX}_g|gz^>6C*+{7|p8KfBJx(>Lb2Hzn>$eDV0$H=p1N1M*hM%^$P_b6R{_U+sy=gRuXPU4-`eoxG(ELd<#xC9zyM zPQO%r!C`ZYSze$%$s;Oi?X)$plWL__bEk|jbgg=vFbgD86(2Zyo}C84bBva((g$H>mkNU!hh z^Zxz*1LyXTnMChjiu@`N`vp9rVK<4P6kpjnH+e zvB#<@-oC>b0wiu@Ysn$ZbEAfGUJ}N~ISH+PVRllm`!B!ote^h^#59ZWm?{d2}6LLdj0e?tFc{s_Eg3rm~%pImkm^ z9nGMzuNvP+^9!f}WbUUyN?%ajTjPGWrxxsu0nyOQaFWPbS9*}wi>EJ`6tcJ}M55w& zH|tnwpYg%XT|>Xd7hWCjl8?CL{n&YSpwjEl1@aXUd^B2$~Vdv}n?zi64 zxiv;exc8*5N9Y5=5$Z)lIcjlV`_?z(^c~vUFCG2>rUbhR|WEeW@_!Uj_T30dgy(c5d+S-zGke&aytg4^j1r> z^a5X%bzx$q94y;TDZP6Nt#@`)zWO$y&&K;bu>w<|6cBf3OLp^sHqEpV2mNiTazn_> zz_j4gJ3x{XIjp`tuL~3nd`yA;=!NgsZtM!@e_Cqo@#>({)9J0ZdT3i~yNXN*yGk8n zen9+s_VLH=ySY{>cLha|LHdqn{5Ev9@cQbe;4i93%c|tBw>oGYveOy+91?;EWHH`&j`9Z*Mvn-7g*0nycf-J7KbC(MSK5d>b6m@1njTp;31GCAW$` zygaRTsH|e}@t~=-5tfFmc5`frmNM8J6CAjh$EVXe*oyC+8_`!j=R)n@LyHMazV1UW zsgl9ONTONk#a?R}xXKg{`;%$EbpM;`WF>FJBvh-|Q58-q5kmami4IUH{|>`0sLeLy zsfV{~`^u9{Ox;l)fMX)BxJJ@XQ<9r(99?%zAjg zZt;*#?EE3BES$%Czq$Va%7oFXZqBqt&gE5Q_9`!G%CaX3>N4?d2wv(z|6PT;{KotX zw4b)hF2&ih?JTT`>LNQ*ir(AD$Zv7e$AC-xb?M2VyIV~Aagg(iv(Zz`)g=4p^!#uO zzaEc%Ie|}>WnJZYUfmN}5#mzGQK%sNskqf)C9}W_CyLU$yoo-!Ecv6mN@6YrY2EaV zp~UvFwc`A>WJ2@#eUJ9gM~4^6hXtNG=i{??Yx9w^G_DJx58f)j&8%&C(WWWMo+KPE z5)8Pt*pgtQA+}n)>lJT#wFxtC>;wds7@9WtDM*{Zy0R2D+Nmy~pkg=kaCj*!;PlS+ zxe+*d1a=4M}lZGEnt9R`Fi1wF~5U6?dtBw9n{`rx#**HZ`kc{ONCc_`2 zVo(|yS*U3*>D;|LTVp+?8Qv!$E^LORX$MC-JW9Yl8-pEB&V!eJ;%Z1|x=K2z&TUQw^LX31#Sf=>P+C6une!`undEC!%q@JF&bRO zxF`R1YHDs~xC1E6d~x^MC1ck+sr!%ZN8S4|?At{de1io5V2pjin60zpy@g|qWLm^x zpk&Xn-;!@ zD!;YtY1zB2faR_BR<^6^L;Km))2bItN*z#4x!dJ{yx_cuq?MKji;Sk0_gyE=Q)}te zo^*bkRvi&6eD&1zq;UNh#cec7W|Hcm&QkE)TfB7JY(~BI*80^84A`71tM^pD`!9I>70kqpR8lh8-b1w>btYaUz(;^< z04qhD>EmHkUkvw)jPYoP`|cZKutzIFW1gay6g_0S|Doq+*At)>Gt8CcK(Q~h7pki4 zDU<6H`5ncGAby9Nxf!U1tR{uEyTu#zUB-yIxs2XSU4I3czr^xjHNF{`>(ldPm?PP` zdO-#QYHI#!WEK7OWr?*F)hSjY9?fBzWZale(%PN=X?igGVT3(ihmVCrQ*dqF9r?~z zb#j+4zTHZKDc~K=aWR1zX{sW_CYk+mCmy70Lc-4gNvexG z>i3drxcd9Si$s!1KYHKeY?YqK83S=?m`L<(Uj1vOF`!wC# z)osS0+DxH_LW8Dno{l}wSlqIxw19MtJ8+?F&pIBHCO@uYavx74>NRBj69ZBDY1v&@lIh){SP=v!PgNXt>9 zC)+eM8>Z<4V?rv#T#}WcR1t+xHc~Rp+3bsq{zlzrf=?OHe|gE0Gvna}o(XU}ukYAFGu;v`U=P3G)5uvA@`Q>D{hiYdTI<#gGITh0}>6v|u9 zu9KPIHYlS@(;qt(ob^YWHHIhoex!?84+TmPL!jN0>OEf6D zBTE>}UN=l+$d+}#mOmB+x2NJqrVDYnm24zOB5glMCWNkA;?hiCUcZ}jfEvJCxp~xe zc^_>1w%8n|>>Uf}K#4ZK_p{l68O6~MYM%BigUt%syc=E|%hab*gE8Dws7;T5Xv$0i zODf?o;KX|cvDt8@WHOC?(K`xSd{ACrWh~>Pb!5hOElCksm@6XfF8S)I1}+FFQ{dLz z@3&!}ie9H%xu;8q*8_)lv(m?cDfAhSWgb60I8Aq0J;tvq{S-N2!8`{0li~MFhQdKn zOdFzf!f%`_Kx>q?ksQZspKe@$QpC||M1IWY%ZKH+S%w6f{d*Axb!4*w?mV`$DLr0& z;dQ>x3X)xyZsjiNZ)>%ZN7M)Ku54VC>O;>jEM`Z!^+p9$!+K~z!T}#%i{Qi|JW%*K zkU`akE&i_B>qVo(ray>F0vUm>gj#`|)TdGN-hYhZY3%ZTpREP!B)og+dsgD3C<&o= zrj*mh!Js5PrgjdbQr@nCl~FN=K`Rx4Ch&{;gVU#`@NGW?4+n=O&}_0Yr*nner1lZa21BRk)=JTWSi%Dzqh0LCRBOYQyxt0UIi7_UJYQdCi_#D$XuWbgT0WC8 zK^Gqf&(eyVR@&27zvg=-h8Y}T2@FgaMsXX>d9T!=~he|IBhi|k6c#2DHHG8?v?grF6)&I;L#nj3Re{rQ&$Lg>~Drd)#ps**u0(P z?z37Ao?m$JprWGULnqls>!B#j7lnk06`!iLf_%i)0I+=UDGi&B7ksFI-d{_0^nMa= zDA*x{c=67^g5ba>uWn5*7R%B`u{-Z%qXV&ie$mNFtPdN8su5*b?3f7?XxhCTvKVQd zw&SF|V*M*GHt7pcv)!jp<@HP+baecAPt->@CEmPU>0o}m`$ zkm!iua1?K{Aq*blls2%+kla!%xgyY~q$y3uo%|y!3}xVw7>^KO<^#KkLB4WvfvoYC zTJHEx3Ypwb2;ByuSq56zJXOF0lP9sa=3m_5uBTZAV971RjcZ}r%e|t z5s8amv-vetJbfC14x~2=#t=Bp1Ejpdj!laS>`e5JLvf6>PH35$93)5LguyIWTqy{Il@BOndq2M72|ertj;a)8g}4UU~p zMn9@q*PivmZLhPuE6*J%fwPa20po5)5IL$|XJd%_u`iVMf*YWQZCQ7kubr(hr2o|A zH_v6$hX?0L zfy3NH=H76iFsrt7J0XifIxpyZWo3|~iq^>gO+4|+???9*q@W6PRn%cSmt))RmvH`) zv>7%6;-hy5MG9SRF_3P0-^a0h>xMH-+U~{^@=royoo!MtxKi|2_kIwczhoBudb&WO zVo&H1H~h-iQ@$QH{GS0zs-F$CY|p4cxx{77{>uMS_{c+GO^)KBX7+n>BsBv=2`)|ZLL!SJ1f!q4vEUiyb-NcaNmH!H{ z=dS!?-XH&z15SO&@QNRfB>zpnt33V>s*8$|si;qR8G~w9F&F{wEMGsB=oKL=*$=B7p$DJW9^gHyK9dVoFQFa*M!O+9rD9CHGbgTT z+}EH$JEcbNmf%-jr?97~fEwfobA#PVRCF7Gw)~R0knkk<@(&M_J-#3RE1Nq0!3_)P z$zy{HHJ|5E*qA0;4ZV2J;WRqum%DtsOJLS>R><(H6C=P&N z<3G{Y{N9!vy`6uRvHCA9N8vzp?LTY3DQ#(G-CBLhXI`uh^IkSx%;^Hx8Cy4_?x+e? zoYyX2<(w?@Q1Q=pPhA(I8IxgW>^qNepm~>=ttiA0@Ee@fof6gmE~q{nS}ME^2VO|; zwxY|+YdKAa`*NFa=#}+kUq6|rh%eu$jsEGWD|P&yx6)O;m9OGN?=Wr(5=7O-=t5BX z7#^9*;1~F|{m(rg+eLN9w3K%rE^P^CQl3*pwAu08d_M5e0kxgJlxZ;*#r;?I!)PZi zfiGh*Kt<(yz_dC?ULQun%s;!Q$anEiljusrZGv3~bxv=CVCX8vmtHx-an~~P^;*C_ zW%^ zJFj!?YP*@usINNqgrBZa*?sSaxVu$*P6?X7n0k4%;|*+U!Jgkzt@; zu&Qn^Yk_(4jnhxRud0NHwK^CF1~Lr#yTW&R<4<~u!mfo~4E0M9GwTdy{qI7<9g~=I za=*wPu~2#-8D7kp+@zq4gjnJ7c2x-(e(aS-#m^O0WCHtviD5N^mY@E4U{wt?p?>pw z8KK4w2Gs=_SsC8YK@yCvqx3l3`|*vjj8kD#V6LKyUels57MNq^Up<|kH%*MCqHeD<8xVr zOq^x2hO)ZP4Q%6$n&gXm!oRefGbM$lRH@5=mha}pzHe)cWr5kFq+Uj?kHQ%yRJ3q{ zF@pFg?nBd)?KcA>U!J^5{82b#@8KPc3ge-jvn_l6(=^tO0jJM|3Dn0{e!FHo*ph~0 zN;WZ}7FQUIyL-XIS6r-kC0e=waXZ~f=#j&(yL$wKII&LhA@7GOFf(TOj6Odn#Z8-A z6v+uNF_!zW2mL6z+&XW1GIMxL$_D4q}86Y%Rx^T~<1G z*oUQ%@^`PPe<>(RYee}z$){i>f4nX^Iectp<0hQ}cFM_Gwl_cwdQ-Tu1QmgkRy87D zwePOhn-NXuiDd4|v#&Kg^H+X%|IoH^N9Zx=UtDzop;()@rhP2W2u+2=T;Xx9_BTkA zG4Ua88%YFhxU2eK;flGZJ#oUC*HxAnUCNiTqCk)~drRkcv(~5JQYN>jD-Fgi_;7C+ z3IAsDT~gZ73*mndqq05?gMTPv`pv z04B10&fev3U%Sy;ih4s!p-E=t{vBy7w6vm+3e1rZPcBpQ_U-qP;n8fqk?F-gO|#J< zri58u)_&}@81x~Mjb82M<@bG~+F&azxNATC6@<@hF_WCHTjDYfBWuRG+e8A@t1W-q z3%v%sN(mrh#|YpU<}D7Gy6WvYsp?=6oKd^f`z&Cj)rx`JrfKB~(b05qrhlO-8natc zPs&-a9ravY(%0}gaGkjulD6Jp?&}ru=dw1+56YB($^3y|VbOD?@u%JytIQs(S>l6o zubnlF1(TzOFbr=5VjZYGY-rJdt}4gB7AHSiBQIbUCyL0vQSd;i9{2I+g2u6=oTMZ# zAs%_I{@PxtHJLKlN#urB*#@S$~+&Bgd zZwBS38y5kNBI?j1)X{x$8tY3Yk9`iKqC^?wtAOs9u8D}9M+NlB-54Wc8yu-VkSreN zUpN|KHEZB$3Ut(S_SDWT>E9FhL5D%>x_e95ls?61a}YTx`@<;>0WE$>weOR;URz(G z{9xj|b<23~2XG``U@dwUhbyInF?Zfro88^i^6zVp_}>Kup}iD$jIp#y%?{Cc-RA|` zHKiH?T}<1nNY`d(4KT;1>I`dH5_r%MwP;i^2H20ZkA-?`)Tg{hQU;OdlVqyB&&E}x zxnIP@o790Fnr9zbT6v1Y-huRjTfSiN9`-F@_Iii28)0S0!jZHd~7lRTbX>b`raD;9!F)q-k=IO z`sSF?n9epL!%agDrdz{H$Uqsy!E5SqY>!ILy#@K%HCS6t)DNWT+6B)|PEBLm=q|{x z(mGH$sPVUjVf3HFs9~#xXbM49G-s}`y*W_B$v|8~Gp5R1j|7-A_NV;bf$i!0m0p}X z@_du});@Wx#hl9+^_l+)jlDQus64BuEV{kte|MLw>e`{Px2U-U-FIlwZ)UTr6Wa6B z$_+AiNS);iI6p5x&))AtoRp#>Z$xJ8>^K%@{3k$S+ zG>M@Q$k4y0+=xSNjK1WLqbv5MYvMD3rw~`?qkg^|GmA5m!VAiJSh~w}=Q03FDWt+U zCw5m{rKk@m3x+f9QU)5u>tCGlX-HkWOmDA$v!pk18iS};bsyHBA9|FP;dD)IqZ4MQ zvb}F$)$^#_gcjshToHSTaNBxiCN)?{$#xDxQK_qGK0?(lsZOUCdxv^&G^PRFq1s!x zSGO_k><1yS@GhxJk)CN_r%3tD<8zuGa4nj8ZLCSfao~h+y|p!^N;bP&Em-F<(ZLbb zEPA{A8gYsO;^=>b;)-2~HA7a)up3e`&8vsLFrNxURbUBsW8~SF=z|{d?P!**t5w`t zo12U@v%m%;bwEmYO!NjJrA52wL#F~adY1iBn)~m1E`qq-?--?TedsW?-KT@WIFoj1xQeg=BC+|7-j z);cNnp0Vbb$VvLkl$27En8K>=eLa!w#$r+Lp6Pp#sU!)>4~c6(?=&I)g-Lg+yA+S~ z2!xss^{o^S@w~aJdaJg)WRS;Gh6AZacz$&?pl^GU+b4TUHC)Buw-ftvm?j;gUp5cS z_u8OhWkO`2N_((%cncn3bQ_^(h~ST%P*gG3yAYbu+k7Y7SkkV#0B@N=8xfG_v^so) z)a0oXF>W{Xi```VBu<8L@IcCaB7J&yjb9iqR-L%!q@n@F}Jo`0mxjW`m zGd@TCyW41mf-ON}jvcEC7kdvL5rd1xsV7jGZ0o|uR~;gd@Yg;72#Dsq7$}|~{LFGU zAnDP^_P9oFkN2_v#{iBG1P%p3QjgxN=_^+bzC>CbP%&%k<~nAWt3LSu)!?qIxlyyR z8$_FQRM}#BlafzEtaF9Zl!Fdm7o#L%XgLj0YN!q!=|ik^Pa#%?=wTiv*PyX{Y2Nye za$|b|u|`;*~NHiTLF9UyG1jrLEn7I}6LEta(vxe*eGq0yHr6 z8j7-v+Dq@M0*{)fi4W;S;)zzAT!cg{#c3i@f(GF>Z@wi{kT_DIW)~LRtpilw2nO4L zm`20zo{?MB#RSTI=tC_mnfb_d*R{6@5ogl(z?q9zT`VUw3Cx|&nT%#je=p21JHi~u zN2U{c@F#JXzN*d0Z}GLU`fIFXw&MNG;R)|e6Q-Lb#aFO5NqR;>l;*lvMq-H(?y90r zuEq6xDz9wVrVX(4RyA*2>0`&a?CQ$8g(MNMd_Cs*e-*vT3Vk^9P>zRb29PUy9-oq` zyTSqm=(W8|vq*8PO_1Rskz;O_`mB^L;9VwglRO`n;Hh}%v$Vr4ht0ic=0coY-B?+T zrnf>t8;L|FjEbcYM_hPQA)DTB)rf0>!tmk;W_O4C9 z{?TgF3@5b{r{;`yk-W0DFR>FAgNHRn_B85XAV>%?mvb|@3T%?7kP^S+M3pt^mem+9q^Xx3J^e%pV)3j|l<5!W` z{t&;T6DMvj-6V?83&?V7&qeg)!?K#LYOLY@tTBni%-fX9hf{LmeaPW>M00$A++L*& z6J|ucl-_0DQ`XzTcX3k*mCuQvRwq2PZM;T9(KLH%rifC+Gs2W zIyhm_JKE_28h*D@iTwJlxCzC#`v@FulT46PG|RJi9pxBiq?Hm9q;Y@t_7{A?YA6pG zBD(6*36UV=FR#oh?^`^a#j{OS6dAm>+$gJ%XM{tOs?LNEg^UxFwO8lo7~q%A zyei}Eqt=v7ln366z+ zg?|vT1f+uHrUO<}seLcJxN*t@JxPI{R{{_KLC(&(wzBdp_?J2U;{xd!Lrz$;a1@!W zK8E)Q)P)2Qv)pT}P0Q{>?@}?)#w)x6A z9~)l%#@GX-SgRKGCqzU**9HM5^NBx>MWtfUjeulPDe4;1?UvR>f`!a0lKk`_b-}G6 zLvq{(1|4Jy9ZCVur$`4S%)^uedzT+)1s4`nHfBKY{{3zhzC=H{x*0+B+JH9>C#dRY zSsaXQLVF%WYwF(G@#k~2Ol&n03vaom{KjK!${!c#p7Z(*0O`hQ()y(?T7=Z<*AL?0 zndnXjri2$(BSUx`=9y`|rXP_+Bsi zV04fSzpMn^DhVnxW!jKUkYQ8g)Zc`CqrjHaCf4znd^hC(TxJsf&pTaOnlzByl@XBq z`6F!}5$ta&+I`<{#oiW2xWcXG75l7?7V~RMzr>)`P^jgPK0tBf>oZc;gm8Mu=Bxbf zrHYw5$u3kGy{)^=^USwtM*>;+QX;yJY;oqDPDL6;YTTh0TY2O9X^JD5TBki6GZ0;G zBRccq0Iv+f`~+14^8g5!P@<)up@)jh2n;kZ!K0+yt7_1PE!??ids4%A@2fhGPGOPJ z3f1gqrjr&S79>B}cl9XFOS6MHMRi%up5r?yfq03Wr--ss}qoRYVhQ`maFzM{sdR z3CwJ?4sEh*JaaaH5cI=a>fQ?z4p;R>{xFV4Pq<|%frVbrHSo7Rm!bT+Q~46-2Yyli zHM}p#ECk5`-LQ{#ECS~Ab2H{Oc6lhGWrp=sMKzu^vupNO&hbBhfOZ*X%tX)rPt3%Z z6U7{nr^-C4yIoK%79@b1bkD$04K%d5kDt@|o2yMR)ouf$KUkh+qnw@MMtLht%#r zYTSYFDLLcv!eUA$^5|B{3_ReIlKB8mZI`i4Hdr?T(I2EUh_M}p|MOB7&rIN0%Y)l^ z_ka~@BfEX3bmg=&Y^AUz<=jNyNv}12HBJX#Aeq>gJ;m;JjY*NV z8!nAUWK6v_(WK+J=V0Mc?iFF^kyV;MzPbTy93rl%n=%*O3(EWFxE2Y!jJwp7M&<>Y ztbItlnquVm*vuxaa-*w^g@YHv5N{m!CdaDjTNd&NzOd7)|LEh7rtn17F)oU(s4C;n z+%|7TWXV0|K2I{rOO50BH!96XdCl~M3d)f*Z>(?hzvvKpnxUf4=&Cs<6URfou$Q7_ zaszW5=>B8blxdUET!{Z?I$Pas)~-k?$O~j-nX`u0VxDaVvw$`Z60ak3SHKeUuR1Mw zVsQs=uZIcJ_IzW1bgR+y6qgZb3ewWCaC;$cks{z^K3y|K@7T1R75c{jSWrnDGjp0{ z(`TETq+CSGioDKR=(QI??HEvu0&7aSNcu`Y(Q}X~FUYwG7%(+w-4Gzf6|1^~um=|h zW@;V0j5z4y2629-_rlfj@su)_=+5ww^xq#6R3B|d<1%uuo-=(H&x51IQQr$j}V`BuF?S7+bXhHKM2eHrkDG`Q!*Uaq1u9PkxTx!d^Z zpLAZ9->cti?g=%$$EWn+>IG2wWbQGl1fB|KY$QDP(hn!JP@9|Ei297QK`(mW@viw~rH>q{5qkUgT>vaD(X7Emo4*?`!x^O^Jo7ZzHZB?LB{ z#$lEo+DeaKdNeMv0usfc>hzH1^xXzqy6@H3=cSi=#s|~ax|&6ek1e~u6|Q9AO^bGn z{l~R=E*|kZC_Ae6Dd!D&#l{q5+*%mwkbjhZbnTces(sajF7<<94yQ4W&Qx;*u; za2t)jL=$;;v^E#Z-m9`rW0GBVolbaQ_-~APh zvSD@G6_&0!+?-sd2=jMlkl252nbnbBj}|*&>Oxj}$UDNDG-ofy1fM>yDhRPFC!tq& z^;Ng4q@D{8rU+-PyXAu2ffL@cBAqYu3fwUAh@`ii>(nO8pKGHPAJB!pVeB%?(8c`| zNSjJ*Uws>`dT$DphNf&?>bd1^yv-^WYKDAkUr)yx=d-WCsJhzFdha7Rw4qqt#(%$i z>9ud;trKpY7{vJ1#F3R?9^Y6zcR;GPs7EAI%iLs_?8N}8b{MLIbr>jyZ9fB!TTfsU z4ni0V#<53Txr!5jI~Y_Krb-~}!a(rg)3gth`h$Pz=_0;ow^}(?0cx=N$wf zq~&gm8E?+>7EDmAwH-_*5FvnJ9zzM_K;j)-#>ILJMllk&*-HF9D2R7KRj9^$g_97| z-a&X@6eBR_FE>%O#U1Ds=Z6c^tqbY@bsl>RY^_4Ska|YgkqxXrKAs$r^h5pASLKu! z4k@m^zlXX{Wt>gf7)rJzb*T!=qyOYdyyzW#gWm3LzQF>M(XzV^fVhI)hi3l0nO|~A zTW`LA9)x5;8c1h@)z$wMl)Upw$^FPtQIf;!Q=Jc`7e)SWNHAGV|CkDG_g)hTh{}^` z$a0-1!gLYAZ#B>SUZS$$yaOFZi0zVYPAX%Ue%W)jHhm%pO&LQWFW0l)E_Of3Z0X2Q z0S6VE`pt8fz%%!0cS<%sxPCNujr`lYm?=)wZ;yLuAx|e869H4$YVyOnCSrBtei|okj0LF+q%R$%r5s0Tl2#2&9EX%>qsm@j(}h^5 z7ZRx$h!E_nSiK4ZAFkqCl8?Tl2tHE%M-j&j>2}B?X|)#>dco&)%4T^)WlyL>N(DTS zuA%SeDrQ77L}B_@o&MP9|5RA3!%KP&)9x1`A@0xi?-i8AL2PMNYRL;eeJaK!YxLZe zp)x`N|q)6d4{mOw^ zYr)^^YaTtG9bH%RRYisaS$3D6*8wk>9?=J>`XJf2oFM%oQBjqQ&}+=(3`9Cg0n)y( zRttCaTj%RPUj}3e*$^Krxd+t$6_#~=r3qRK%hE4#cyqLLStg#;kYy_hX*8tz4eu$Q zXUy-l>bQ>K1&NlK7)1<#T?6buWxR`gE$m^ zSz78&(ZbHk&15$2Kh`8y^&s%*gjNT8G8rIxd{?gKs&&_Pzek%FIw~+CkXHWfRBJk{ zdhs^(50HvnCj!`!Qcd0>{N2vC`kWqPORn6voIQbc7GfMi27sxl<~RzL0CAg9-8#nd5sQSxFfYU@$k zD0pKsLEq{(S=RY8zwSroNBwP69l^0pv6GS3MPNO4%`a!-HSkn={@P@U!V<5GeP{Fo z7|R?><%G+!JIN_M)pO-Y^eoyjxf7><00oex=0tDk{S@zm*%GIcFWvi^D}>%yp;`gI zo+H=t62}R+z{@>Xxr_lnXK4}K zT1eL9m~mf?H04g2VMZgr?0~c|omlLBT;$4`dUx=zAIt-qa|`J2aTP!R&*mau7A^bN zSDBpD?6eH~>R05A+A2=?#m9(jgP}I!0XIo!BsnevTK~d9YudbBk=`z#3FTJGGE$TZ zjIlAE#eMRtj%rdoEYY0$mfoZo9lq^srazkM6D4+ql6tB(!K{yUPygPeFrq3NVGu90 zpH?}mfUMsbsc7p?>LFy4WtWRxCodDs%l^dFF;*w5*IF_7?xgX^5ObPGxRY79S>4 zNG7b_EegAXroEBjr-asN&*!?*$oVlmhsyvp7z8zGAkh_rEBfmV=Su6K2X*uYhe4Xv zw2ax6DDC-OzD-KaR42igCr))LM0Os&zxkm~XS3WOw z*`V81`I$%hfIgV*rv6Y>OmDR*!d?H;t6NMyoc)7&-*H(zm!oP3Fb&_+S4fXMvkKOb z=VK}z%odW7wK8E^V~ahpLVgPc`Qj(Q|Nj2_o4KNquN95WXx2o>JDAN^bgiwGFk$Xh z&f#2CvuS-Ny}@ygt-t;ZA#OSRgJ!emPsFHG6_uey5(|oZikWoW5`p|z!zT;1IPbMf z1@H>r!^LHanw9#whv5PTe^}FvL*yD&Lx6n^T$=n8;g^3kUmXIJJO!Wqgw4-Y z3&oZ~`ijD8e`pm_%$_|yY&or{bIoq0#XDH^>j#Kz1?8(h&7uu-93_>l4z+(9+(i!$ z9NFp1JMq2RJ}&Tjp?HMWlx~(AxhGUr>f2ha`ImIE|Mz3~U>gONK_Fh6Ccd03)9EHJ z51FTg>coEK%3SuQcka_Z)3l>#A_7_Aid4Lr4Vf$^&k7_nu`0p}I}!#zkZ~tNK@06r0i8$Gv zh~|G}WFw~Ae2NGJI*JzaL580&1<1m8M&H{jIVz?r-+fVCWxGY$Fe+{KBxMU%au#&Z zl*t^mT-M&&mv#ky#Ji=lGo$_OZflAZ)8<+D-yg$1@*O6^PiySja%WhJ7<2G>!T|6( z$K7z?>%)Fki?sR&z2E1C_!C#gYTf2vOu^S4P_{~bIvz)}5%MAEqABxfIxt={&A&l% zQcx)AK!j*M=YBu^m0{=XVQl?{9izXNC)|aZZK3y*y(3L|DiVl)Een60i49*w*;1^K zb9$T2!`w@Wh@u#TTmId{+r`fLB)oMXs@0nk!N8f$?=nu;uJUTuN7YZ(Gdm5jfb;ND zu0t)(iO)WmqP*u)%z){BMk|n+%jJ8~LVYxX;h`8TqUZj$Ym@IY3K{0DrgOq;{X&S6 z`Jw0OfEK$^jYMtnziHbx(|G)EE{2)ABYUp8h~4C}4vb`Y9%&|Ru*T9fFWyZ$lTMc@ znY@<#R8$l`w%mao_95;b$SyzNJ?jef&-*y?(_`Ux9eq%KI?*FA{!%BHK>}5NGt?G; z=>?q`f~BtOm&pn+d&M2W+FVUWJLE!xfN36`L16j^Zk#LWX6TkBO-}?=~<5)9i#CLys_3?uo4aAf22=Ux#%jIK~rq!<& zB4V_7rHK#wP2*stVYfNoqxT8V*Ko?yNjW6)-kAL_3noR(ctdgn1+GA#d?BUxTzcY-yiVDf*RU&66rmJHGv51hB`9`(Dl%1M<9sLpH$0yr;X)vbq8wP=Ua?CX z0|^E9Mtu)dIa(jQkfV2A|K-H8>X$Gm+=--g9z1+fbH9I)fMcJBesbW%4UXx)^cisr zdju)(%7=DQ$iqGnoKlVEzjY`b$1VNE+S2oB#dyj}y>S7VHS&*+FO1Fml8&z$KMLo+ zB?&$|l%3*?r>uIF;EIye!wU}7Gr2DgDB}EV{w_1b)=ViqHU~A3D((8|05B;B)?|Ee zHEq)|T`AY+us{PRsfet{Rr<`Eu2E=%t148NoXX3p5y3t!Lkj#PNKmqY7z>uml!>Ir zyp<4PU=D6>*XPuZE~eO8<5d5?5{&q8LVY!Np}Z-7+L!TRoe=!m@QJb!16KU6bg;q;0A{NvP>NR!f! zls}d<3G2sym}*K}CH5tFh87DevyXHqes#|_^L!RM^7sOIml33C{`VcKTQc&shIS|| z6<0XQ69#^o&%$nF{m>xrr~dB(0rjq�Gi&R-02Zf|~h$9|w}oQS(b)#}phSpkh#Z z(}s}43Y|}i1dPDNBE&)#RV*f=JeAb{a!-1jgVURP^0mzqn;tS*mN9T%e3&5198-E# z{9)Vy&FMJfYV}2?+I;nEVE3nD{@II7jLSARzNo$&f6&E~38t*A*Cy%DVQs@Vh)A=W zMaUj67+zFnGLzZpLZuetN<`Tn@ z0tY>+TOWwCdxidTz@H+M%(; z-t>+u_1-GVFxELsR%QpjAJ0&hbh_qK&_0T-dcOCaL$tAa!#{HOYEw>v{8faQ%%g^; z4?_rDu~DQME~nWH$nKZBhrWJmc#)CHmFjp`I%<^J2g&C4`qX-AvCt%8Pf8uWI<<5& zByz$eaZaSM)3LDI3iM7&E`)1B-J@P9RH$})|2RwXy;ISNH?sZ$Qn*RN6=PK2_yl_O5se2-FL zeDj6xY$fHy|Gug1h4RvZgj^-2m{X&wnuc3+$?OTH-jXY^)=sW^mZc_zJ}_uGp&eoe zHm)Ps-TAo}eDzBzTo`_I7X?`}GX3FA z0pNq>yK4{L$z~Mh$MR_I^i-J>WR}#>9awL%KH#PB)g;` zZfz$)&DbkK=Uwl!2HN`xT{#?dICZSzjb-<%-;UbXiX)cyd?{ju+RH!malH{$t= zieER;y(B|Ev$1Y8;)0*(Ng!NZs+->tx>RqAsg|cA71#+yUCRr(B^}-JI?1J+foKKA zywTygX&dq{wiPjIkS&kTSJp%EvkfApjTo&0Ik0^mP?oRPt*9&Sj2ry^b=$aL+}!vQ zq|@!I_yqc4AKuKyKcZWJ=A3q~n-iM%g+cR5IP|vjCI1ypS7@K-+^n2jhZp$y&(42- ztcYELn_uzVTveMJ-rA1Qti+<_R`7opNGE?#uPkK$welM7x!ayCZ4@<-c+n&qHg zUc~RSVuE7CAUQ55e(WbglkaCc7L5LTgHI}V@=Pj|o!_0=Doy`f;&3m%;TcHvImt7S z6Z3D2fdq#>Bho6k=hTYBq)C3&g1apvST|??O=%aGsnm$}dRE$CDSV6*Zs#)>U4P-X zpgM22$e4Kt*apUbc66mE!2I)zPv%ZhZQKk+_KufCU|`b4CY-Cnj53j=$7?w}-tYf> zHmx6u0BD9HkWEWoClfR4e08x+J2#I=kQ;mroS*7mH`)>);2^v|v^9I(i5=KozJGo3 z!4Z}|h}6&Q$%dILCQA$rs`BBHNrroo8k(^n)9FxaOq}1TINzIz@H6xU;cMEJgQCTP zi6l$9S7QRE@xej`&lP{>wu;m}Tm}pNujm!7_$Mb`cN+R-+Et0FRQu6G0;<=&48kiD zu_m3V6#FSo&|go3?% z3EHdx93z7oQxh~*fgSV;v1|pVpEaBH-3qhM7b)&BrWmT3WV{Wca&r4ruC?;%$~qO> zWQ#WoQz_8^LJqSFvtXC_+(t152vU~`2H`dgRM8>z+)r(n4~sP^-98vJ)H7brz#0*A?E%G8E(MFvk?l8#OU6kXTy@+J{b z26tYdsyyKNRsD2|5uq<|qrvcj?Hg83eRixqG!gvn)rO1qRq1=~8T{YD zn=Kw@x(dv?FNutoX-evuTfYQSOyh5S6paoW%~_f0oU(2@R(Jc8IRd35<%Z8yJy0o0 zg*G6x^skHu6^-|_b?-n#vgxNqzH!?QUKV^8zF#{}4-A`D!T{_y znZ6m&7mFZhROtRAevD^~;-fD==g^z;0R=-!tYcx)pTS4O9*Au^ zvP2(J`c%KVh%wYU&y#oW1XPz;ca1FwVGq~Vu#Dh!u)(XHs5bwm`v~I_O?-r*;Sppf-eL1~a#E$s$s8nMT~#1w}iyA&zVt?BWmS7vjLl9r*& zfjDJ$kfhhnzJY>V_*JxsP^RcsB$4>=w@l8})(Pd7*W<<@B?HJLx+Bij0miWNA(S7S5Jer(zgZO>j8{$h2u0L}>pZrwSG5?aJ!GanqX8I{Q0>~an$~L*kzI^=$ zPx4$7pkQ^6i2w6pCqDeo>o32)#0kW=$EXifkD|89sK-7VzUmTs`93}2;J$S1KX`As z@a8Y!lKpX$VFdTqYO@IZvifZ`-J|EI10p}=ZB#%rhs>vVn{t1%s5!4oGCy~H<&YSz zC*wnv4YJ3IPaNe$y0B60eZ8$v;jpb_9%y6tzC7cZuB8Gs)>r!);84T1L6I|@1*DAV zd+Iw}l{_0gyh@|^lR2_1p@!y$pHvcJ8}p_x4Pz_rI>ag_x*e@FHawwlfAk4_><{kefLRvs1bUbgcq%*H);u-EtrcInu7*)T`2P{h3X{H zN9G+_F}XrS;A2B{Zj$&XE(-*Hg)}JK`pS}!JdgC9V;J-@6`kK6{z-g7rc`dRo4fK=w3+2$siP?ceAwEvAfbw)Y7%;_jPa4 zdSvId&`LZ)fxxqa;XLzdszvOp*RWfUUR?y0H#a>q9gphfeXyx7*(3*0R@e|O=2K63 zH07pge_Kjfnn~d?GHf-0vUaENKz+tjh}9HFUFUK8V*vM7jFq%5JFgN&QpQP+@I3KK zUr9{wy!N>^(40ckZ|AQXfX>VqaA|WLSsxH*)OB|Boey&aCdNb_onyY2&8RAJQ%ADD z$?Zc>fj%Zxs(<>EnWaV)GLC&dpFcyOSeD|)f_fu{)Rj<*#;|j&mXd$vaq<(LA&z`H zz4?U2z{SbkXpGGxn9iQg@Q>B1NAg*ajdO;ld zpq5O0faX3;nMBX(cbK6R)6 zR`7@7YogdO5YyA>!uo&kFh;K9oG>bwvq2*J95^U#XUM=*%WFIMKiHb?9IKTCvMx?u zPOh?X6o1Rak?lmDhMU1-o5A{<%7%(6pnXaVy;Tv&-JIV8OgrhD1Jlie>O%I}9i%Pb zmp+`5ba8Xla~5PZBsyM4DbTVp=D%5@n?&r)Vgs}{6rKWgDES>sRl{ws59SU)m$ z_6^}+)Zbe@@+%L{ytSKf0;A4h{lJiXgeqP8<7JH%9aMIchx1UX>C^4cBw<9G)8$Y9 z6;IJTJC8QPD()?6O?@jmU!fp*d2xNbs%pod?@x6ZtBW?Z+Y*l73eQ<+r% zYbV#Q<{lr5K92T}KVf%V1v}33Hy<5|>L@p09%_dhLMS*WxpTahjuJvD^WShIA3H*T zKC3r^{8DK!eSC{PEA#+k`tLLM`2F98r%*3mK5}uxClsSue`Lcmq$@fBteq~rSP#|PZVIDs zC{z+CX^OUYp`K`vTyJ0`3TdloLS{$Z|7y~&Im)|GEupy$T#2CofaRdF)>@Qs|Bc1_{321DKeS z;zJ?U|KJ^d-(87%89vJN9|@H(mHag+`YO^4qm~F0V*nVk+i;Upmyet`CB&!;x=%zf zEaZbQTS|}$1KL@_Q2ieIArdNkkwfog)lH<9X#9 zJnTXnVGC=)Wi;ec`S#~>joN8Vp*-mxU<0v>uYi#O0SYtzV%yOEtv;b^3vRJ5b`hB@ zUi?h($;gKia-KWaO+2*PMJri7;MhD-vOI&?r_C{fdfzRayw|n>Kz^wXrQ122ENO%b zsBkREGbxdB18T{)m3n&UJjuYKs}PRuauBiA3rZ!ib(oc;55d<9eY~Hqt^0<1r2YB) zcgpfVPeQtth?!a}JECH2@3#47&ZuC<<%BB(WPRt5{vgXnHc5DFzTDB{8ptj}2R9(5 zgfz^v)uZWYuJ&ec)lc^Rh&%tSIiSc$hfXj_{mafmy!BOj|S-ArPT?ZE|Q$i z?sITHDfQWjNC78{q5o1hFET1~sT!GFBW`iSJ$EA;1|j!@dRS^mYYlv#KK`iaK9Sc` zn<4~_Hos?;`AA=30(+9^?gN{NQ5~`GX3f9gYS3Fn3pcbTr^A?VDSTperOH6SqmtX;PZB$oI|6{s8Z(-V$ zF7Q&w(8co$)|&W*uVc$|@J`g^Hz;a-C+X+ z#8-9*N}1R_MOdaE>VJr{9bRDc=OO%%r?VlRJrjun^LVDJHu3dIRb_?~1qf5QWy1Lw z>=gwNFMW0mx}bBJGNRjqtTWi9TY0}tsf@Myi0S&xZh1bqe98@MvDKE<`a>{_C1yJ{ z&5Ne>4ha;g3xV>uD_rV~``GFQL+hf2_WBxXku5Y3ib|RdbfkbPug^q2h%HgiQRF_$ zH+!H`ql{dOKlB=TWdIHU zy7Kj(-SXR{g{kG)b@hUicYcEd%lB zulVAUZ=TN0@s;^*?JRPoYK6^cC1_I{z<^H3{NT|`kZU~y$b+0n76$NLzAp}gzMW@H z)%+G5lP$!grl3m^!nGMvDxdvUWd_sTmQ3r6O3`AzD+A39E&>bEy&f4SR*C;%M+D$F z>xig|ae7Y@p9z2GVPDDwnObJHJ$`x$1-iCD$5WuHisTfUhCQNLuTZZx%VC%8FK_v_ zzt6ErRn!YFIU6uz6BF9a=yRX|pQ7BAMQ$lg0)$9vWQ1xS82Yh!0d?aA`7z(W6~z1T zKHUH@Hm6534(Z-< zGSYj=ePN7c1bUQgXQWI6{0b!#lxNO$_$aMHrnw}4WTj9v4AqsD?YosHJ??73rVY$Z z@+PIN7=WYirhdiLw=vcc0@J*o5KQZP2pZ7Nb|#51Dm__WgzIADyWO>>&lp~oH0+hL znAa59;)PttD9yQkL4^cwO6)34P3Wt2u&Xqah|=?2X*Ddpm%jDx!|jEPKyUQY~w7uPot0O>rcG4TfdAWaKn!v^0BMsNCZ7EAR34 z2HFHxlC7UK_fJ#(%in>Em%H1-f z;y=B6bP0b8k|ObkUtsUT8?N6Eiz1|FLHiUkf%1HLm(H-{4xG{pA@jc2lVQ1(fLzE| zf+O^v9ulk=)>+G)o`!!bz&!{w!oW^KfFsD1cO>x7m&_4A*8%vSv7aI%Mb!1if1p(4 zRjs%Y#!!!4v+4_?qEODfv=Lvgma})0*y@>^LYzM88e@Bd3`! zpzm>w5Mb2v)^E+C#&qXE;@(ZKkR;;cmHA8!;|-@!EuXuMnOh~9Mkx6)sf)gD603V@ zA!YdvK&SA1599QlFq%g^szOiaKmYeRUtfAnkG)rHu|>DN-DE;o#EIM?`s^4J{n!iQ zX-G|;Zpma#jkcepB|ItHXR9hfnV)%Xw#X^z6HQ>DkoiK`aH;fOk3-NkrfyH(S*wXx zLT;#zNl)y{XX6e#VaoigmiK(4bHRvv5wEC1jPoBf0LOmf1&i5Cj;pJ9lq(iPN$vQg=e{-q5~ zN}?qaQzk-++?L8nW?=6m`ArKH6o(uVuO8+@ZIlBowX&%U0)`be4nAVYAt}l*I+#60 zBC}C{s5$rIsnrEBK;N_-)-Zg~ufeGvRuVt0DK`ZIn-aK_hmi|l$-{vhz+Rs$rM>-t ze63lm^?O?Tn>3CzE0{h@M4^~XSe*L^12J1i3RcL35aOd*0`VM^ zCNr&hxw_D+BiB5J_9|k2=o|pMF&K~(r;%k{u;H*2O=oxB-<+%>FAW$f0tm8rocL(d zb(M1WHH#kUmQDGTw>?J6^Ck?K>hD=t4dQ)LOG;>v!(Z97dMof8;DTEmwGiLp-4R_F z8GnVc1IpnS&$Po024ECu5N??E{YDFu0i8JeU_S=o?#j47q$Tqsw8JYz=64_C`38H@uRHR zNx$ky|Fdc=XOH%~pO`YbY<5W9-*Js|-q;K)hlz7{ELxfg0)_H^b{^(g3@RsH^bFE| z2GynL-kE*IdbyV(4ejHB6|IchJ_ewe0WIqK*%jA{cJV zj&=sPQ1D&`+a?VE5g@wl+;E#hN|{ z<49~z^l<-Me0rq6M#NPg^@sNF&q!vtCbDYrtf-%5M33q*N30-3RsEwZ^na++aLgkoA*}}6v3`cXUSe+`TeN9FI8B_*-XN`u8;yc|)R$fFUd0ib znmD=d(t+P668#)N*TCMA&8G|(~@`bWV znn~X>jeK0#oO>H3zWfHu3=YP3&prHeFny9W4i5?S8y|g6>A{@kj$_c$mI7T6+NSn6 z!f>p88Q)yCK|F0?K0vAtn>k3;VWdQr6PySB)_648)UFjdDtHf42NcMYC-Dk~0KjoY zZiHe(o8RMS?m2Doi|L}4r^%7p)Z?M!THP4P-IYXEuq(cDCPbp)#?jVca0w*zt^$gy zR3@h64Irpxm+bVK1kHJ{V~P&Of4pt~ML?Rlfk`l6Zm70$kaL5(Y^Q32k~nE6s=10F zIGswBD5B4ZpAJ-}Xb5UZ7sfnEzYWo+w5tR7wwpZX{1wrx|PdR~jq?gLO7- zN9|1S*0zO!Ug)B>ejL7EHBT41tD2)J<}8FnPEJCQH|oTc>Xrj33G6^fRR~ZwBekjZ zKP7L2U>-ofNH9yt$ow~iUf`jR(YH;KNt;>6ghmDZDch1JaS3QETE9V?0kSwl z99er719g3kHrX8KQ&qSoK!nHED4)s5ir}pGUor$DX)=3gAplwMj1SIQo?&7t zaAoS-!he0xb&tzYRh?7_rZ`!=EBeV<7b55w$y>+yv^iY*^c5|R(C#DEAhbyvS%!CUjzv=Bx;;cKo`F^YlxF;ufDk{>C7Pd@>trSU>c7*PF)U$neI zlwGKgq8{BPSJLWs&Fz+IgCA6T%oppB!`|>yEaV z-QO#amoqje+Ea;=wL+0G%tH!F8+fz&dr8+f6Bly&tAg4t5yI7AryfSLhRa-KRo%D z98vtR8nV9?egQ8P`n=Au zP$B8;ATBg%dvvAq@`4z5a|r5v;s0_XspRbOX#m0mZwZR*2}m@7PmE!oc)x|<`EA#d z4GD;yOwKmpJorF3KLZxg1ChX{mTeQkZnSa&1lui}2^8?Xai+JG97TfCXmu%u)2Wm0 zU;Ub-<+i-wPzkCtPvbxVWD1fDWyWSP3yDqthO*LHc1=z8t=TBL6OyDkm{vWC?B`di z*$gviHS-Z_DHrfFVp~mh4K3FI&Z*@b_|8(pe6R^Xg}bB@UOVWz|hypfR&Vp+W6|7Pm| zZF%}HRVZt4cV7Q#AI?sK<~hL@MS`ScF}Kqk=4p8Ijm3fApY zYA+4LI>Pj0%Mu0`03c=^_)ih7?Ls0=e50W1J|5SadZ6C|d&R;1(o`~uldll=ACUoh zbrvwLXN9eU+5v@^2C+*+{{szqh|p&@+mCJ8tqUjfhizslk|T_pdqBBY!HtgnJ(h4!KperrodQ^qxPe>yxPN!?}OrBb(xJ%J3f ziqAz`J~u{A;Yct@YecXT+N!^R9?DEQ>RSTpAVjh*Iw-Ioi<2f0<5!pTJ6#E+%Ry88 zz`SkRqxP;h(ORg6eY#X*En5*~9nCU0J(=4dqH&@j8IR{Cng8GcL}0(2ue5LYydWRH zSVDHv@cT;HgP%Yi>WSSQzNJ4z=5$YVGLZ!UXVefK&+NN!bFzwkLKORi(y{4yLV%pp zSeF5`({}URGc~NeCk)o0&5qAl^BzH82+YKStNAx zmZNoY?PB2o5*a~;t_QwXu?>K2^fElt>EdzENBH_hq6o{P!EM%jKy)7ZNspgNkH<|} z(~ph34am-~DmKbZ`GVN?E0x*IyDMn%yS%f_!BptURiS$8R32?h$0PPPV$OCV!P@Zf zK~{Di3p-^?&&d39sOM~kYcj-68s_ZiLxTg)+Q{i1Df+_W+DQ*Ue7_X^dzFbI1wP?MCyt*Di9w6$z~AO z&8_jTcwx(e=^LpX$ZhJ-U?f;D0d_>7*0j{LW{T&-z~0jK^Jl&JACis3WH^EPF%PZ# z#BXl1w#27s8(VTWTTB2vx{@F_?2JY&iQr^T*0#lzJzTohQXR6Rl5)DW@UNz- z`MJnx7ZJT=R(i|&@})JJoaN$;b%mX`iUf;0IyLBVs7({S5^q!okUoUe{#1DIzeK1I z^FhT8=&>Q?_h3axa?{`pfqZk_fS!6D>N)g&$XRzlhk>H`HY1TV0E)-r2y1hR0I{`tNYL2c@_24m>HOYyh$iDCO+wDoESrO- zdSHWwJ;i-e(<7GC+&!$|_LFUko%D=?+!Wmf&7t`AkFh1g8ng|}e81!MVr1EG{v$c{Kn}6H}mXwm-XO>E|bjlsp+djzvKB}bilkErKUVM*s#j#u|e1@5gvY$ zs3=bp&7l8zWWS6aYV}f&Ah*$Ojn>@vq_*B9`Rk47wx(cQ}TWWa1(pXT~@y0rrP z8EW}eED}{NA?c3xZpvJysW-Jl$M(|k#X~oX#Qb%Z7QACxn@UgP?rq+C4^kpAO?*I+ zo`(x68ll^M90Z<91+f6|$rDM=B~U!f6CxKhxo0utQF2fYj-4l{jmIg&Db#D2xwHAN z;2nLW26#2kf^`1`&MmQxVr+GC824@AP@Pz=d`78&nB}f z9~njTSMzj!!IO^az6W-blkAUWevS9w9M$WXUB?aY)Md(yZP3nn?M%15d>ci7efI|< zhRrC*{Kub+Z{XHW7FY!MzUPDO-%Cyu4Tm(p;@x9ptyKB8f3#m~@`pvC{=pObJw8z( zOZF3?mE5OPpG+<8dri^~)M#N9uAHs1#(Wb`22IJqym=$3?pEcTWmMDV$1768Q-N4mK`uEur1xp zPWkb}0Jhwt1GxJ}5l>0NAL<_4gt2QF0y^{ z_|~^Y!TnR6z?EC~SU&|gMf%kp5ot8B0LYGuuI1hOFTtVEvXy&0@<_}kn0$;ItTQ>R z1l;>kph$R!?)=3d>YkJTE`$}`HEw^|C_j#4 zEGPqJ=8poVs3Q=h%UVlK-2QXpU-`cBzG^^0hh2x^_o;Uh<_{H|izI~8(HZAedM5%=N3w)=3cJzEqf7Fb2$K0)B@;k;oZXvcs7<-3QuW%q2 z0Dp+Apbe@3Z!3`v@7%i$8qoWMUYxl2(;?{{na{&+Gzt|^Ph{g$7m+xGX;%dqq^vfU z*C(mJ#u5rzBBiHje=R{v?r@zyyz##$2~zM(q}j;L3>?>$5ElYz5@V+*DW7C`rhsH};fI_sb)QDx!S;mh1_ zbblUPJVp7Y?4(@iI_Nt26%qb;eF0?l|GXx zKydW{I^{o;uRAKTB_TZ@QSn*P%H_0M-zdz*{r5?j*OC2|KAZ=ps_ z9X7QTi_8?gpIs52=JqB8dU#kWYOU9i5$a)x?ZF*|oU`nT6yFyss$Ep8GMz+C@5^r; zEiEjOQ`wRdg_K;J)a%+TQSyiFQAHYArzvU+(+VP)#ZSQfBaM}GhSr-0R|`>{A+-+M z8@uV76Kn>Au(R2z=c4N`P*GQ1tfYw3p^COlIfiC8i|Fy}yyrQN zw~0;{^27n64)Xll&;IQboqMi6J}QsPw3sob^?Cn-tnt3L{?c5RZ{VQ*_E76cI8?+ zWpVT*eW~)&EBrQ+Bt7#&LzYiIGiA~e=?>rTYQ{OZ@?y4Lt*bt74)SxuJ$3e{DsA-X z^>w$99urbh5PiWW{7PV}v9`X8MbsE>#Y>^*c8k4F`AcvQZ%tx17XD2Bfb3j61|8G; z=;ncwJ|3@`Cq?A#P9d2{K8w(&dy5tt4-A?gmT#815+}AhPP1@M^~5vpaWC1`eEdwh zTgZT)5VA)-E&tLjs2VAV60vA9s&Ei3+t>I$xHTWC ze16jk8!AR*@Wk@sVGXbCZW?`v%nJ>=KiN*@iJvm^scON@?Z(0Bb7`MRW4{p)ExIS$p^qXXgZmF0JR z5~Itf3ni&~@u`YzqQ^t1BXg)O<5`;UNy(#_P1SELpzY0|N6xyFi>-YlcP?^H!M^xx55?7}$LeC~@l zxLTyjvhdKkd~X%x{;?)E)-;(HdKzltYW;1M9@5*~`^M~CfpUl%H--<8d+A`=DEGzpmGyUB7|{tB zc-%Tgb+%gCbw%vXeB8}h-}fGaL+MkI@ArbR(Ul9oZk;@OsaoXvo&C9<; zNSb?SEr6IV|HGc2fj4P`? zaEiY*5K}eT%PVc_(9sn6di1`c!5QmPENfBalH(AWMQ$JOCJ*)4j-?so6NB%hAqgHH zaZ+L-UfNvWabSTgPW z>Sq2F(FZP)$BOqa-_&lLsju*!ei{j4x)$w^skAwBt|>|41!3EbXK_LbcjCJ0y?x(K zeW8k$=PK#`vD935Mn-Hfno&HM-2U03g({XQ{XH_sy8)kfG=s8MYe|>ZB|Z4H1xK&8 z!>ser?zlSQVPDH1uBsxTMoG*1(PE?LlRBO+?HXRUW=`eHcpD%1JnX!_U;oh6Vf1Z+ zN+p-{BMJwO<#!JUo@m0Nyp1ZhDt1*Od8G??^DVy6y9Q>41>7|KP*65%XL=68r*CLr zU+WJ4;(Ou5HC&uTM<);RC@*{D zNhuW)KOG3j*Y_NXDo*YaP$h9H7EG7|NlX>F^jc2HZ0q}3T_=^iyl1n@5@$0!r-~TG&~I z`O#d1g7f?M`s2j(aE6Z4`2HKMr)z2hF`Apbi6q<$fA}T zmbnFJQGt*Xo2LFk~W7^{oKpNp=enh<&7J7Dhfts3L_ z3)fn@S_tm8Ape$b`bU{ic+*+D0TFYu5ie%rC_+AI7WV9n>~>L`J`yX)*v(%}g2bDA zn{;tjHy_sg{*g0$ggAJ4>UMg$Q;zsO1?SH+W_{_5hqhEk^*F3nuD9)&9;a^OPb0l9 zTCE-px-7hj-Y50n(slnF^xP@%0T)~3gw`|g zH3tg|bvgm96y~SV(*`GRjPqq$21!UlUAzaV7Sz&eK;NG6@A`Z$!_)Hdx=x9--Q4n1 zH1vAKzO}-7j;|V+d0)*o&p+~uZHCBO%P=_El4Pci7lfMHF{vn{ z@>o3>GUf)XMGfcP;!qQ#qf<>~Vnb4l!?&Uck^v*i0J^7?%C;|7NqhR-efoZ`F~6JO zR1DI&{fy)#4_C=Ev9CUdUwq_}Z2d_MhPW~XS+pXAby}S;T`ZCurQ>#RqlHErpTfFj zzI=#?!~YZxHTxj{!~}B1F)j=ApGE8ru?GZ$-s#?N4Y|vx$)LoL4cou}XnZyF<_mPM z>`}-NcOh246`9ylu!MW?z5$6xFl3-_;Pmi9)S6F!aYWTlY{+5>_6Zf&a(Q`+is*O# zcMgcZ^}(V~{`eAu7&Lh-DPQ0pya_nsHUh%{DJjfLmwYS};wAq?6GKb@l1maMeO`9r zhQQ^aB#&E3&C=-%$7-|=tfF>iFvc^}aE&Oh3H}t3d#ISk zMFGajha@5}5sNG4t*gD_nOyLSGD(XXnk&tR&Am0e^0HGPum(@jNBTUW8 zfgt7kpr@)EU(}X%Ve7>APdySkrx^wFV$(F}zhv51{e)-iWS2 zdG(s(9_jWzK2__dVtPaV#)GLL;PE=FiQ-IAHq~v+1QN)~N&qO>W9fy7n6vh*iYb;6 zfv=t5r|@tNZjQGxVG{)tMpnH#g%0k+|L2On|Bn^P>bjb)G_wAVE|@Qa%s%~Cc9s|r zQ|W!Qv-PjN&H$#&LdUldY!a`l&5DrGfC5g`} z(%;(VJNvZOB{)vS0is}z#zGwW`=0u0yh8s&zIE%1wmf-8Va*SBQUm5}8ehY6PDXUW z%C+{ZC4Szylop*?riT1}j{;K$T z$e{n8wUAKsfZN`X*T0Ly)C9YnLsuua)-bV({DcJhe%ej$=snRcwemP{&f!>x+eAcC ztKcD+zCo^7e+$O48k?u*M&5lGB1dG3kNkY@atmoxt|9W|GGW$E_IqdaTqm@*}mKB`=yn7kvaYxtRTt6G@!ZON)Qt9FYl z&*hDG zHl4(wJ8LgXk<_ZD(nNe7>-y@|xx=7+c5T8_a*9j5o20k<`t z!|A%yppwm}I^dEtr&EBU(KpndD?C^oy+yZ#yX%lZGM&cGO6qA8V5NSLB{ffU$8uLbr5g*Ey*(K~e0QK~w-e%oxHt4f!HoVaVl7T3VeI;g^A5B5Ae1GKgF(}E=ZxuDT4dxsOQj-FPV z`dm(tsFhCT+kzctsb$!P;p~ghdOP=K^1mC3f=yzLeN5CGHk-B5tSMh3_FVVLXHVXo z^Q}@EWT;?YAiJAAQ@N;(&&n)o-8>!a>ShQjACwk)u2gi=Z%HBKZgrU{3`8pReIWkjb^6 zsiYeYJm^kgt+0DFUYtR(CzT(D-=uknM0_wqyi0Fxm@?Y?*(<43;lAt3Y8&8y z8j%ozB~VE-wfwTq8^e0pIqP#TP#em}4Q;=?iT#*S!>Y}|dHi=j;*HhJmL~9zMIDo` zZLW@%&UbO<4l56Y^;V20fj_W40|(|;s*DKib_4&OJ1dX9#Ca>UOV&n)FX(uSa{mkU&<#rOW;&cl8jaur7YaC5J=KZB4uVDxvOywMnNm8Dv&1=a4N$gID_5!89(i} zUc(pB<3ae26$NlsARgU7s18Pcw^&5DnuQj8^;J9sN00EAbS}PNdjIY85p-g2Uox&B zs(fjsRO+;KPUeG#L)Ac3!)H!0+-)Jzbr~aOKs|qmtpITsR+yZY$lcu@**jFtCh+J_ z$%O~^QrC>?TFpu!VdB%`X37Y!^Pxzy$z+HrZ_dCn0iEA`8|>c2Jb3!IPY6a5BwAR5si!tX#Fm{lfLhOJjA@BT^oLxwlDMrm|hyH_14uLM_0&pz&w(NTiRLT30XC9qoD+-bn-CYRB*wy?NLSx&kF`vJ2AEYE6BB+o#XgY+}yJvc$<_IPeW zq&%6B^MhL-M^3ULa&2lZtTAt>I9cxHPr$8>9uxW_)hmqFmWs8=xNg&gF0tiaA@| z=HNBUSIe6?7&8_AF0UrHK`ioxiq0)jxNU2xikW$9s#m(MR()E7k$=I|eI)=55ho6N zysGp3ncVV2YlAy8Vhhq#eI0*Ivk39Fdhpk&tApMDU-2OsdW23@Y*f^BNpqH!$!pjX zvVTw}!(6Lazu48sQW+EC8u-5{Kt7oBeAy=$8n0=rC9ADcm49Kcy=jn_+GnA#_v=Ue z(Je<=dMz)(#DLJ`cLtP_XB8REJ4qI@#SlH{$JvhStph8|x7Iw!uNXCpc_Lb`8h02& zx6wsUIs?<5%p1$HaxX|D;@>|H87?(@drc!M5 z)?TyuaVuyuzkZa-!gOziN(4W;HtT0^RG^{-U1hZW+^GO zw?0`0h^&)YF|1i1b&v-$WT`vwHeM({y_Tf9dG7C()yFDS8Y=&JLDF(wrCGx8uUyp- zw>gE6KmF&FW01>ZBB!c0D&i~uS#M(wb0)PTkR)uI+CXTbk&l9)%`Wzvo0-F^&Tg1%v$(1rPzTUlaUnp58T;*U=`I2Jq zr?yv*@uFktdRfyrxqm&Ws!ABYkh!@>SQpd0==)kV2kue!ohC)Oz8s!T8zcT!^B*Fb ziyHwR)2lCy2F&%2x_UXfe^8!Wz#tLztyPWDW0}$xIn_C`-ENpAsfd%=+ifqrCY|%F z{0IcFA*l2B@;^uUJihzxi^n76j}d|NxtTg=d>rz=%ZaOHhjRcZb>s$(j~rvnr|*H} zN*o+iLY#BiIO2x-p{DgE=Dl|FPDkP8r$$E!%IA?q73k;UgVy!$`^O` zOKHsWIUckE;*3nH679clbjqB~NY9n)4fpNXf)Y82zp^hIyD0Lq;|ZXMnk;dY<C?pC>y7y{nX^?`KoY%7riP)Vs;VMhciEWR7C0!u|Fvca1*e=erE$ zS6Ikd358-$`s;DX&gmB1&bg1st1(5u`{?BPjPKssPBRol5?_f!0riaFv}=z^(mTj#(+cuJvlO+ z#7GW3@O&O-eCy^3jFbOWjtMzs9VUusS618G#f;vYVTjxU;FXX0zimu9e){-H$R{xU zNd%&tnlVY&l5lHjRGx@kQYCS|Uo+tVc{tLoW-gTcZ)n9pGp=-U6oe1YDda+k+8xbX6 zKC-3~=PEe(L;E6%lqLUjt8KX&V$w&;}v`OZ@n0bLtM+S}ABvW&MlN@~uTc|u9O zEM_uHc9x8n5`Bj`zWqOReRWin?bj|LAuu#ZgY*!Bba%rLLnA3Q41!3PNOzYs44slA z4I&`jDbmuN0s_A0@%?=#zO&9*i#7av@3{Bg&)(O*Zi5xh8`v$X_j{^`PG65oxIfi} z=AI)s=M!7*tayhEuvLvWx5?{~At02{VW`HcdQ5B8Xy`X376miSPD2;#stF z+T}tw9&Jgj&G>k8E>E^B1GCW+%wTqX<(||q18Vc91HV72`f>#9(e4)wzx9@DXJal% zFIMiU3ZE}Lxmjv2p}L0Iw7Z9K!+F)9jOr{`Z3J`%GzQ1?WL*&4R?`gZ8qG4X+Z6wN z9-0JO3chT4xiLDl38@%5>j2guL%yz&CCs00L`D^z8?k)6O_Y_YkxcxW6%L5aH)76z zZKwGEwjJ+b8Ber>>VT3h5FPvIm~>h?T+a@(QTuCKoBi}fZiQ9u)NV-xJ5ztcM|Xk= zQ~kkN!(NMeUi9C4bki?GXz4QxT{NY5JEFm!f>J2)UkY=z;?j!^7#IA~&? zkVpR*BYfrQ6u#3J;fu7Go`&gud=fIb$BTXM?v)I%ZUMuwcNJqfUJcNvY-;h(PK=*ChW%|oenb*z*dumrdp;JE2`Oa|JDpLu?d_G;NPQU_e@1R zB~&A1EfLRf)Wm`CsFW;qeY&wKk-+;vu7Kac+B8$V+v;5gzk&D}u^OCs|FNzl>nYqg zFmNj^iCaz-iLNzJeQA&IcDMnx26UAEzs(8M;fG>kLKNGE6&#CNmP;un^VTs)~k$9}{5d$ZC*sXh*_v^@AxjFxk(y*hL>GisyM> z1l(Lvx2jhU`KozRDF>Y#bI>{YCVNiK%8H`{qqVXZ1wB9#jDBa%`q5^GOO}w~OKf*` z3S-bQU1fykuXG&rywtD1wd+-Gm7Mh~OQ5EwW|T>z2sM8h7!`Iwh|yrsTqxrh7^q9i zL(nK#j#yqi{-z`7ytEV@x81#1Gd~j)7OHJ|&nL_J@26Q#TX?+I-z&=a->#_Mf3B!U zE*+wZr7$<{Xz;ey6K}{GvvRmqq>=5)$ZZg6?szi z^_jly4Ca0OJCVU!qc82Z`diK`QlodX_zn4!@ki4IvuOTQkp$$$>EZ%x^Mo9~LKa@A z-?{JNbK=AOZ=6EjH-dv(W zZ*%cTU%JEYEn1;o@1N1nL0d4Zo1~zv2*L2Pv5uebXgBcB1_+Grq6|o2VV;5~3?8#qE!zO%-C0CcD%|S$rOzcaoY9JKC%X*;Qhg7aJ6! zPM*kF674%F_-!^jFGz}nG_nVNlX|8@5nW|~DvjE{i{VTc<}6$`>Sd6Ou0tk>LO@=k zwEaqenV)JY!LCjFJzw39#!-iPz_4KQkpFMuD1EoVy%m3^`9rIomh@r^)jYSiQe=PX z9*hYWlnCRgtO!;pxW7l%9oP)hWR{ji9&w5|o_7fD$IE?;os$Z<(@jSP9LyCbbTEY=IK;F0Jkz@@Hb5~z{Dflm;HBhv zsX+*6a}0w*7XC}V;Boyd_x`sFzq!ee|I-2} zb=BjL__(m@WC{w84Hg7GNJ$QQQ~_j*Eakp^jTWDFO|Kmj& zH~ev~N)_?yQ~8r4ke(3o;uia}hZDCPR9MhQOXMUG=6$qT&Fj0@M>Sx~+UvS~?KX-3 z@EeV#XvAznBx{-n8PoVD>5}59ZpZSjNN#l3^@%Mrs7cVRi@Z~d{2P-kg)X9X3-=25 z)Z1p?eH+L7+^7Qb=HvAD+O>IFgYAXUb;Gj_x^issw1ny+hkgo?YmpQ z^f`RXCe}Dy=WAC?nhKH7S?r@XDo%*nRLo(M%;7VT99ACw=b9?`9lxMF!8l{$yOkXM zZ~`-m5TirpMQ8G@`R#3LGOe7W&w;Oa;d-lkmD~oHv5L@a0GV9yp+e-T`1!B+JEW89 zqrZ3(1QbUfp5Cdv`3B}MAmBKNACZ?dB_ZHfI-1Jv4)tD>HmcpAT(S<8$?*#Rm>`ss zxm+VME&Oo}ZJi)?S=8pi6u=LKn)Dfu7;^h+9VE=nv}q|7{i?W&$)3UNrtURQbmlWkR_cPaGIa;-L&Q)U)sN7#H8B;K3&Hx6F!;|D{*5N5+4#> z*YmUJoUJ;<%4%qAC*Y{ayV!?LR8g@Jvlt1Hp=rc0KC{JoS68oEt>b$6NUsxUa@pcd z_o3Nhx3J`C(l{bbb_HtWaR3n#bCiw z4G{XKR4j2K3K|Ly%2#&Bp6(QhzJR?pu|iJ!cyny-=@DcMHm}I*-b7k&0} zM&Nq*knoTYT-o5{*SMObT-xVCG{Aig`@fvlwfTQL zZEF$3E^U4s8<|z|`S;tDdD*%PF<(y4GoCjT>`?4Tp)Gy#QL5xQK@_t@b{GwtSk^b8 zdRG9BoOT%KzcqXP-K$SF8iK)!)k0eBlisN+4udn~2Gyo&&ZN>3NlMMFn4dL14@vDo zS?e-vR6hB(*LTxr(QVW%&P8GC^!3>gp%<4YJuVyWoG*Q6NNws=W~EhQ5}N_x5}3+? zXJwkhJ9dJ^`uTl|D8UoO_A|0^a`Muv!>T8Atd;3`f1C3F=!);y8cXc@sP*g*F@);z z+OMcTZ+QFdzlp?T?!L;o10)e)!n5P^)HZEx+3$&EciQ5)Dho1;gJgRZv1eP zzknY$ycudZI*W9wPd=U|4rP`Fs{~TGH9ox#jr^o=nY-}Pu<{=ihx=wh*9G^QoXA^c z#*}UxL@&fmOY5vQ?&eMzc?pY_Enk1D4>HbrkTrz@t|DZUd zlimq3V;1MLR>g5EDWgq6m_{&l^O~|LLS#wljFrFUo8o0@^B1=o94KebJR4T?OfPi( zg$>NPw4&e!o_gZR#axOUgwJCd^&KP;p&8pGHG(YS>KJ)x|DarABcyT3oCmRbN943H z`wX!K&AClX(ryJgboDfU_0c&+=i&XhBUas96DI<|!+1Z6n&$bwChq_7UzRZncKSsBM5hT?aNg7teLeZ@; zmxEzP6*1*egV9xIz*WDRATA1JU}KxOlAStg)OE36nBhLGD}6zVg0NID@0~6dI-WtWD$Fli-N< znOA+aTKg;8{lqY+MJ`(@8%LEPgi!H`z+BRGnH+)g+f@ql$@!I(Pg_K?q`{mZ3_m^V z7?154Jx?LtpKgC`?EC+9!u#k;^fz1nDBW^R-TLu@=`#4Z04N$+0P6wRy0w@K z9;8pcba+-9MzV|dQ994XhLLi@rmhl&CKsn}<=tW7Nb&)ujm|0RD~tKuglpwbDB|wH zNSdCIfivHG-g^PpAcv8>PL-JNXn#Iu+s$^P)3--Z`&ikLOIErs(YNxN;BVutH?ZKx z;UHAUk9M&@zOaV6g-z#r6`+4Ru6>P(A%V+sStMI+ui7YM;Qjff!|?N?n!P_%kX-YN zPJom>U6Loi6PUEheZjQkIw_b_Qc^F0Zo5G7Ii?+g&MmK}W}9g2?RpC=y{M_O8mV3Q z-R6_~sQNKVsC5s6-&-$AQ6HYi$CSp^{LK^{O4sDyvLu(NR_ql|r)-%Oh|uso!S{mD zqZJIgxQRE>`t_w^8r+7)ubi1INAkqH*~EQ=j~yf}6>!yx)xV`k>z4lt6rkP23ZQr} zEq)c2V2>J`CkAC@)x5a=Exjxlt~Oav%%!Oo#tw`#$H?|3M z4}|_RO;6?!LvtWLmS~d$%8*>ISDmdg-gKC0+XDGsJD?XJd_P zmN0L2kdqUb(W=XS^L#VO%lNzytd)+HtF?C5cpB?tSv(zQJKQnz=a@+C+u=@!tTY+O zbS+d6K>takLTC5Je)G1A%puJFQ~IEZ%4sK;P$fT6wY<>B;N<^Q@WW}=Nz^~jJhX>+ zfuD~4{R;iG?yXD7$L3U8@7G*k=Dk1jwS49`5D`>;qeb2)VNxO#0E%54+MJ6QV^Fch z*-Q7u$Zs^Xw;BxnNui^~kSrxhH6d3tEA)0`mxI9etuj#a{PY{Xk(WptUVT=Zmr3kh#%*}56(IDbs-d_!j&TLD6-*& z2IVgKY#n5)p2dfjI4pv>eUodN5#_-`m|Z#sGw+-esNLVro5ft=CwhjpxAHuh^~mES z6`+kQ|0y9d+>X}sao8@h6NqqBrzh5bpw-}|krfwSgu$dM0MD(DFBraNp)0GQoLSP8ZPDYR^)6fJpL_KUcq-3S8n7W)s5_s97r(MPFcjVjxyUPQFV!sR&fDHnbR`0-Rr(K$yoC zfTF z;Wx}(*uk@^(+G0e5kHZdYT#^fv7S$ie&Qg}z z*^;A9koTTbsJcE-F1ZHg?xgIysp}{uQyEox1|>Z*2Pu@S&8_*X^luVuedTm~|0D8; z62)P$WqgYI7Bs~7Zq+`@M#{ZneD&#&D1~p9u5O=a@AJb(QCuP{@GhO~R>^v3mImmu z*P)(q-iI@-gNI&1+5?>r%8y#c$!)=ES5f)qA#E%5a}`C|XNhimCfDj=L!p4{XQ+oo zXq>eAxVT!tCRxExhCOz6!HQAmzf&wpmukwn<|d!p5kLFx8(i>g{{B|gi#DFDcIMb%&h2-o?3&F1j!#q_L$Y)Rl;f$gW{%n8%7LuaR$HVvUt zm$gu?+&e=3EWZqBcZ9F+Y=qK$zr3IH=wd_+^kaydHPOwhB?8u8kq;2LptaB)dio9X zUFp}K=0{xP-)+&UnPaOKe_4|h$|mNvPi}qn_58B;Mw_37iI;Y$rfR!#v%Ot!N+MD} z`fE&iV_DHLZI~(6r&xSHvht>@NyIVju2M)&w9>mAGrwN4g1#&iBCfmhd&97u!R#{o z)hw^6q#1cb+BoGHLoa;YPw^&H*=Xe zxg3}w>4O_j#NR)YMypL)SHf!$x)?~YBaJa3x5Q5;HY~kkLg*agih3+hssLn@=j6Yl zFW-C^rY`pqWYA= z@3NrP2g(BZoqmV!$qojj$PCcy26#kP(4RhtD1V?B{JAvKqsk0sWr*(8MY$uDfVACN zC$gxraH!^_;b1%NJyoxyXG5L>-_kx<$sdD>joF1KAfm#IhfSGrTQFxhuXRVz$yGA-;zF@0Bz7GE@Cm75FCoV z@m!36$Ke3B0ztlJk{Y$$I|0$f2X(Nf6j z%M&W}mEI4lHRaq!ARSpbv+sLSZ#0Uqvg!1M8NAsSvihat5+$GFpY_c)_HX$CIjEww zp;_NDy}y*a*aIS4xBq*TaX@&3|3i46@KL6+&WNB_CX7{C8iIA+EUxbCc04KXD?#Fi zavzMB%xY}B1%I~cj>S(WZN4f@B&qp%>n+QVjpQ<$-O1aT1+L@J_TUfPyi<$Q_ccxt`FszN-j13Jx zX7zo4$}@kI?-cKs$xqCh(NRr31<_*+m&H$CUql2?_yh<2i)N#UaeiB9GXe9@+BgNp zrWF7Q{bwv=P*%5v=_w&i>XT4mzc<^ES6X1R~oJ}h$|=LHD;8hQJs z7HxI*58=!z<#3*Y6>et+6#(msTmL@t`W7i$b@s-30Gl*xsW-=Xh{2Sds@)RzD%2wEu<%FQE=$I{|FPybqYo7p`6LjtyzWb|t~3 z9qxVvL>QRkCZV@=fn>-4Q2Zy}A$!)(b-Q@j)zCqs3J08@$s@Wp6(43@3f^uP)*FPd z_AF;k@F?3?n>;0a23La5G`>KWS2qj7(we&-5T}EBbGWPo;R!Wh1XHR|T`keI^BaT^ z8c9MhfzBeG(R$=|RU#jKtKI;BJz(auV7z{Pec5p`chPfsdb;*0iYt|Z`*-KRxBI_& za+6^x);Ayco8`0>yh2w;C!bywfS499HTNrBCRd%`hAEWb6X{tC;5sXE%MIjtKUd?* zcws*|n_MK;zj`*?->0Ig2QjlLZ`rx6X@-hn+U(7=?lN zU&V2;c}AqG=o4(xkQNGJ7=*OS(2hb8z;2MtJTGckX-XQc__bGAf%jY0dlvtA)xYK@ zyQmTr)ok_Eoh4Uv7iw)2>S9{O8Zk1`mINP6M9wq@ZPX3t6RVMQ1Or? zGr|C5kTcq9Q}32uNf>mrT*e3GnoQ58VuQ4;?YKm6q_rc#7T6Dq+?Y5Zs`QsrNrQ%e z3bnQ#T>{Pe^!)j*9gA9$d~Qw9g2IE!8(1>7*>G?0DEQ~y&z98KHUjl{dDXma5=<#bUrAhBJ%OUYaxPaaGa zeW}*ZB!=(egI5Z*m(V}T(ny(BBdgLc<9}hyWx8D%%HSsq9!-rApn*V8WiDsN18CC2 z%NSCq^>q4~UBe2-w8!TqD2A>npGrpT8)jS&vDs_In|`9gp>#)A+}(h)4;H`~F;ZhV z=J_&y6y`~)Sss`NacE$WR9ZwPthI481f>O4weXwMZ>&-SEE~VF7!w_y*blBZXr!Ho zY%K_{fvyJ*32>(#m_j-J=y|}A8W*p)eMI31Y`U?pZY+#rSP)MDyL6v_^({Q5w(gPR z{23~Y7YgUL?upIUNmRRjQWZSy;^)E(i%tkPDzZGm2%ax&ciTej)sP(x%S@@HGb`>+ zot9DiAbU8@GrY`D)ABZ+k^m0`m+Ab;Py6zP_M`vLVLh1Vku_JHDPr@ZfQD!C>yN6j zcBMUVv7g$nwdA7AhB}>RvYy_Lf{f9Hea9X_>%-|>(Yn5N<&qvZb+jd^4{)c3e zuLa@uKXMs*ocRdG)h`DUeM7_ozZ-Xf#PY0jLa@V~vq1!{-kiFbr|Q^Awg z+P4IRbDHF(c`7@iszT7dCF|04FgMxE z$?oizD@5%qX7%w@so0zhTp#r{tVMS#K3VB9e?h3kXW--_C>?P8#)=mo z<97JZXow$8&T_+n9y24K01No`M?vILQ0nc-O&O#WB(qyhv*Nrx)Tp zW$)0pJxNnAaAIU8&#YNjtZ})u9-xD(g)W;js%>2mp=eynaF@Etf__d_Rmynn_Xh$i zQOI)Y%Wc4?0QIQ}u>1~m>`QYL!2FiQ1$p+Crh`a+!FH)1A%~Ga^f7khAeZC~$Up2= z!xup>3RMfbDElIvdw#p#P#!v36`60wudnxSb?0R2VBqoxv%Xo*EzQwZHa%XxRFlx! z&;W0g;tasDS#)?dKdP-*UeB@kYo~;x3)-WL!Fa1>Yw-ZA+-zx#A`|P=I)@A#6OQ8V z**pxh3b}(E>Ukul&S_}K8LOeKCI@86vZl`3=G6yk@yuIiTPSa+@ zpB2wv`F|tGH;EbGKztuPT=~+=9)&1i*UEoqHIQh@K9rh!OX0a(A*DQnMjnE}S~w{H zgn?$Go|GRhX+8-W0w?o0vATvVx{wM)?b`vgNk+`xr1B;AJ_u_03wthyqgvjy1*}p~&)I7heVkDprDD7HB7Zk#Kps!Yu;3SzLLcy!Q27%!n7Kr* zkP0)RuzqQt7i#-A7qS0?a`83D5ry9}TJu;#w%T=#nS5`q6%vpvxHCxVA+P>LKwtH2 z(w4Q5!B|B!fhH2KfjLkRd1TlSI4g^;??n9CW23bF!QzG7Ur04Ptopa6qvu)V5#1SIU>rgyM6s-pGo^gBs=j=?4#K+JQ|K3sGXBMmCd8S1 zDoHV@Nf~A1{l^MJ^buziFzXX2HjIicdce`>%l}MPB?j8ODgD+|2Qj@Tb3NrG{S~$0 zl;E|JiUI-5Fakvf#4A4b@2S&Pe>cJP7V3Z%Rz-!}rj5;_OYYZiT0FpL5rY}sQPO1} zeOk*RZoNwLFUDHv|6D+*Sg()>KI%Pd`BnD~&nw_aPb>!}gt>I446We7R2-rM)D^52PW1#Q;qo8-_9cjD`)>-JQ>IksR? zZqXjg+n}eo9AqEF@sl4xXO-T5a#l2b5MI_(E)jIOQG+dI|DHoMho6(hi_kdhIs*$4I!2uR{UOv&5mv#9)g21Xc_8YT))rj)w8>}3|Ju}PlvpFiO ziCvKcG|`fCA$M+AS))l{YaYQmKP7?_!QzxzIg>T!h2K3(=L6za6tUsx)x@(3k`CuI=p8x10Pdx>FzS;>U3%%8W%5TrlTq zIHWV3H2T8qLuI}sT1X|ZQGLPXCm#98i+cF4y3<=?aCQB*1Jg^ta}EZOgrF@)=u|z$ zC}wvAJyXjrpHAI z_P+J}LLw90@xsN@{EW5Ln7vH#C3@Bg?>9CzPrw``$q1F_X${9;kR&ZL!_8XSALCb9 z;gbl`@|OYY;H@ybFoO!|wp#fl_%O$t<5zav25}*%u7^Jy1c#pV zQdE;6JI>|OtX+ij9B@2mbEc-?JSI&278~A)%mSCiMo>8-I+Q$+5u)%?zf|nSGg84a z<K-?s7nwAb+N6gM~6rzlgyjNvJmsA-Rp|`u(EU z=Z?Mb-w#Yh`_roaQe?laWO|@~2_2$VOG}h(<-yVMeY@O{r=v**lzrtN3c3aUL22)l zHuSIEG_#j}1AN=LZwqx2{d6yuP%$BAt>7S13!zlVAsbBhtkirXRxRw(RwO@5RXRR* zq36s#ygu3Hb#5yZiy{Q=kt@Mo8Jg%8j*O@o^uKik-1zIv`_G^24!6=1Zqurw5Y@I2|u$k2mEe>jhP{qxC3;nb$ulG$NsH zR&!Q8Qw9kYjo}5iLUvUP;CMIB)3>GiiWn8`=yi50Z5Fnh`d^l@CKSmKSW+FqAuUbC zb7JsrMi+61q38KRloyv;S-HV+l`zpt*61?~eOESQFKJ-%0kiZ!m zlaxPia9q-5ponZO1BO|czhZc?6vLm=~<|RGwr8--N2Omi=DHgsgT{TznU1XkvZ|2?WSYvA52jV zHd16}O(+{JS43$&w8XJ)&ZhLvW@OK94flhJd&-Hz*XMfe0>K^_Jfa6B(W$Q?Hd_hH z_9i@@^Z9hwQA|Grk|xWq`?Fik{H6@!pQ>u(sD;k4$UT>hE!Ds&h6_ZG<}7+Rp6JUb ze;x(;6OH5WI`E?FJqXwZGlbt*dg*w6tbJ$J0hZ&Q(4t9JX~&s)l;&*VCAax=Rw5!8 zJ02k<>F;s{!*)rI)*76GRzVfV*vK{u94f#rl+zN^t~R*}ah8kj z*UK*x$+z-LW20+N!khh|bUs!5s1s*X`h19%vynZ5wDQCwQ%gkZ7sgwVimJ}?uuhHA zyTO_vhnb$g$_ixS=_)Z!}(ElXE+Q_F&=I0;UKYlo0#OjAMKPsd<`U_p7vOJB_|H^o?-vU(1muGvZQe zWRR(nI*?^b)nwggS4rVL&~syg!nsKKBje5At#=-jA%~M52H;w?rK%isTPIKG)e(K$ z0cTYx5yrWUxs{KxdEc7t$a9zl>U{ZEtEP`~N6Bm{O}8^E0I*IAVr|F3=q%`oG|kys z+|S)orDWe5{wT)Cr4nWz&EC{<3>KhRB*FmVYjVZ&5;-I=2!XsGop&2T0ckTH)E;ORN-Z;@##>I8XnY9 zHK>iosB|h#*S}+stjWNW`E?n${Q0Y}nX}3S5wF_)XOAU_Va=hwyV$^B)F(0_DqOZu zOO4d*D+AMj+~IhuP{UpXY5ZgYCIKDpYNelPldG78)w%_GqQTrn1@E)3&lpT58@T{_ zp0e=vkHh1|mkw)6uM|Q0W0Kzpl>FvQds7d~*xBEyj(7B0D`cb?3vN%)RF*}uixm#b z)h8B)fvh`KftQXKQ)^BZW$BLwRTu~rfTi_sx~xxzRJ#>z2lkgE1$bk=BWNXkBFXfd zoj?9?PkTqnwDrrpLP{9JK%4L2Wtia$(}ZjNElJnkS=k#AMAYo;F zB>PBT_HNhZYpq>KUWaKfa`4!*G@r?Rw>q=Y%7)z$XjCh6(C?DHD_zGI^*`6C)$g6j zWXsk(5WwJ8i80TBbE~Xnw`}Z9_*TVr6r1oFSxbxt9n9oWEb_C-x&>N@=pBCx+3(e$ zWlUuS&bK<~nPUjUrY;{G{9hU%N+Ah|9!Z#Ksrwo3)4m|9W$?mkY5P^za2W`|w+~*! zsc;`4gw~1O3xXD@t_P%hXduOCt(z_1o4Uxj)+QdC12|83<=MSJL!xi*->YHiJkhDC zq`lb|Gx{Toxi4p@6SEoKZ-PVCnSN|EKCkWN;8q+E@0EQBGhR#)xw9!I#AbX#C2On3 zJjANuV1mH{SVLu3#6G*z9q)Q`hkO||b3N1jT8Klsi>6*RMAopZmjUbZIz6$ZsP)q1 zONyZ?3r1Rd-!@Nz#gU3HYuLz*Ws_U^r_JgSg(c=yZ&`<(0f6}PymM_jmeQC3vz&t; zh>)r1$Cu)YSTpLmZHh|(8F70=f`NhT0tFt6qSQz-w<&5zj{F?2Xhq*TD= z&}G$)#JX7je6gB{!p*)r@W1s@9 zQ%pp<3NNhVCj=2KErh>~ge#IqE6%U*jL|g%4uj1rtaG%%CZWegIaiN}KIOxF-^Rfj zzDv`gw#!tUt@1?YV!Bru%Q;14w_e=DtLc622ARJ^yhqfshHC~nUnZX~&iv8)g#9wh z$w9Jn+s1{M49~h3AG6%?f4_iMkD_75%8Q-7||s4>{j*HUU-b7h7$v3Wdy< zZm$MjH@_0}aTxrO2+&X1rliH#J7NO2J-78lyGk1$KTA1AJHSiJmf)osqr12P=*X4_ z&*1LiXXob`1PehUc>APB=8Ou8gM!>dROky{Xf7`&HmZZ%8&+sGuNK{2%J-;gfC>*J zD_w|KQ4Am&WlR`q8Xz;BcOAl~?8D7ZLliXtgmi#Ct>(EyP zO-P4)mm#8@JhbcddeOO9)%!xPR3k6CIX>e1Ayw0O$KA8l;WAE=-*pJlyr+51;^azH zAs6tsS`kd&)haT0NPg&)zl4tNCghP-|H!HLaYC09Nr`W3opUbm$)kebqSuO>)ArYf z3Z(i;RJpsw%vg=~vj*c~HzsGv>kKM3y(BjsRUp5)D09>@DP!N$OmfhiQJ0;@dE7QH zsqhi-)bSOc5u6Oh6rX#|bYl&1XKakW`dO3Kuzhg<0@3#;)3=1r=1RZAQ);f`X|eIiV}AV(jr(xz-51luUJL9%zpwyrlukkInnNV9nFa z9ej_x9ngd>GHZ=T9rZTlyp0ztTy*1hk<- zfy>0PDo$@-4PbI%c(Jx5X)%w+Xxz$5UivQeaO*^{@qy+%e?{E8QZ5Uzf(72qCOUK4 zH_056S{78f?VLX_IRw%uQp)y8m)N;|?cwE3*i6oGXgw~?#)Hw22!29<9geFtvPR%S z(Jrr2i7zXA)=s8MreEzTc?xDnOmAf<5-XeT*dKUB#z`P=lg&BesS1YPbXJjgMShbY@#-r;v6Q~znlK8`g&v5^r>ad@mCi8?%*^HP7 zh%LFfQO>~F1sYvAqKl)N*Sv9d$us86?B3xt%LYl=H3cCBZ}U5{TcGd7L+!DHG-GL; zTeo5s<_`3ya|>~O*%S1+43K2(yQ2Q8flZUMiuNm2G3K(1b81-}Iyy}mH?(3D;x3s3 zq6bCB-1M-AnB8Li3SsaM*9{>tqK$$ya0=^1bNqm=(OfZNfJN(6>WP&-;HwR6YBvR5 zQ!b~Q;UuL2$EzhA_aU;w=F&pF*~%oqdY-S~}DpdP*k>v2%H5#}KS0 zPPl^>42I?Ce!jQ^tO2<@yQ)<*o9VUfB)RDc^w+p|LZiR=}UC zRA*(hzateNZ%glJ3!rO7-ynvJfzcz#+#BBwVN#Nvjh=$y9lw0N2yR?#u?&8?e4>> zJZhmije|TD$RK$CyXa1NthNMK&F@9q^NkVIj>SouFoTOcqr!6o4|UnsbjmXBpJ>bT znpkTiVJ-g60S5yj>CEB;DUK=PUq5FxRp8XiIm{HFP`#9JzT1i!n9Wt27$VF5866Z` z8a+z<(kxadeY*8urntmhc=5jkZSg95ZDjq8mOy-a2aLM?Ggug&L<0eC zB>EHRXyNu1;b*oTywu9pq-N0;7s2`YPoC-l3#M=BU0)7+#Vy z@R)UZT*NPcqDMuTRsu28_?@%+L9ia5wlkIbeM&c#KShM;a<0^-eQgx1+y8tYSfH@g zZVjw%;@_1B6cB~+rD1{h}ky^f5^*S+N2Ipu3HkUzDvo= z1FZ{lgY(6MLn`9#_kIl2`O8N{X(9BFB1TSl<@yr^nn`8DE%HA8ab&#wA&3k&rjZKNfvRxOTHf)BKsObdSiX>~gu~w*89G)h^ex$Ckzo|xU zdR0^yhXn_D(Q*TFF@A_Rq zQJrvn->Olr7W8;xaEC!eBldclB3AR{JEEj*}mUZa@-Lj(uRv z{!)i&4*j4aCoz5}VI5!lE~X-vlz`gA`I-F6GrG88nCIz@vyOiO)%nYL7$^>y$@GBe z@dQngmX6y7f$IATW~xZKaEdZFMt4jB$x=K*A+t+?Rm~&UglVk-c z-UK?2k4mjjN9KW|^FRjbDp;_X*YdU?UnHmr2{1fxt0SGeTG!GqHAzIS6ZENu99F09 zo=rqnLEn5WU(8rW8Pc-lch?D6*8%d2P(9+>epqQ#LX$09Mn64QZ=FH95ry9rHEDqC zJ>p>DEBF|vNsmrk?hkW+8(*`sPF{KkyRRT+B}~Gz*k3g~e7;h^K`8Il<+wECg=UJs zM>e`!a@bttzJRz_oh6eq39`Pt^AeUq+xkR2O$E#G^%}w1de|ue9_w=kUf?Cts!_+#9s$RdGsW9B4N+E(4aMB@|fo!lKs` zzswn9Nj!52qgyeyfdfQv3(6EyU>@c0^pdmXwwsy zyA#8wO!6y|nH#K-p4#HxR!f~frU$jdZMip7k>&krI??fp&ff|Xh-Wjl-krP`IEL$j z;^aC_f(b%i|K93(Xp$8y=~t6}HuRsm5)H*_?M(zR##aI>7IVVusglc}8s~wG$&~8J zbCEnJR0DIxWzCmoZD>bUI~^+8^ZlAUGm9b{1u({XFU|07_hhF~vi`#T&7=y$o_f(9 z$3}Y0;2_nyNSao)I_&}TSUd|gI+h>xIrAPU!|ppTnA0@wmAjvfJpH`W1(FGYy28A4 zcjiE2#&GNlc&Ez-P*m3Fqx2juN~Rjp71iWRgqdG_xo+|A8bG|d7iIJd^b(ogqoA9sng_ad&`h4&JbzfMA?fQCF~oMgjJ_{Cw9^e>s2+jfz)N|8E}crmd`e|w>6!2Yn{=R$qKSN5LxAC%`X2@NhueKXy{eNR;6vzjT% z2+(;CQC} zB`2}O0Y`OI!KhN>!+!Z4IoL!^kMoJl^1)Q|$#jiNS&TazD$NT=@sikDZ zWj`lwg{{*_$GMOu*?Q}`{@P@vDZH@BdZP2k7qmQn%^unI@g3-@JY7$=oy`Je|esRpu z2MzOX(``FiJvchSUkNmi)-F)QTr%<+;;@w(OqhxT6z{ijJXw1@)JVR905M|BtKSm7 zF*@S*PZo-0xG_WB@iAlie8v_vZF`smag>>;woMx4>w7Sw$gvO#EU?L?MpoZPn6(&RPiIgOnxZcF1A+B8eFuhU^nJ0dG`avL-{AH_CyfF!3e~$qigX zMYi#?`A${K{jX@mB2~s;p`mAR#@w)4!#+WsMU&K|CbP~t)OAtQ0~S-vR30-NM-$BV z)|}x+36YkPQ?F$76R(`Bm>h> zi!7Riy#wial9w<$Z+-ZKpkd!OX@Ai%I9+mx&@w}ps!tu?NH5xKuV-ukt}z!ePF$b@ z5}!25aXewH&2Uh&`04Qn$Ue|uW9p} z=q35JVqTBUXHlJ79_WMoLzqsmach?`zGD^4!~drFU547J&B9e8GVH#g)tc~`8G2@r-B7^RL; zI`(-^>K4652<~2znBSW)Yk58N&2^0l`v-k4T&QGn;?_G2PsiWK&|mpF+Q0)~9K~fB z(bF*yUpJiTs2n{Js&b9wx@Ez*vO&{LHzwF5X0cvnWZW+&i+^^A91ceT6hj>qlE^e) zUs!&1YjT(GCJX;c>3jXD|H0H-Mn&0ual?dwbazR^0D^QQ-Q9zP5wAqBretX(EeK)u`+X^wkgp5H4UZeEqmwI7b z)EIsvt&DK?u{l=@AU3j6)gx4C;&Z&(gS2?Z&2}q$((z{9bMAlZ5Tk^7d6Y1B$=9a1K zukAT0`KhmYcrs7e?EMjDi;ED_*J{r}bu)FLtUVDw9qWCJSr^MD zp0f?{G2UKRNv(b-sD{EXt`Kx!W#>gkQ)q4J>*mk9lfAVv2b%<>Mg}=&fd0us__6^)vFO&sT{i< zLM05?&5^Y*-~tvH+>q?sWqUGH7yYbXZ;XdZ(1|PL5u>dl_i?XHHRJlrB>hUh7S5~p zkI-=9m$AXxu2YGGPi^(TskAC(EPr}si%B~h^CU6~EehE>wnp$=6IVoXzzq?NzbJpl@ z=)=c{#LxJ^A4QyouK1Bu=0hx4l$}9=4bW+k-6b*J&ifSqeVlKU3a91wlcZn0`6?Vv z!)bs;gu>i6m#=k(ao0?MK!U}A!WrBTrQvj@5|!J6=TJnD~O4B1uyyV>`$aG5V=}dY0q+av&o*1OQ>qhtK8spWxl%!Iui_I9oMG8^0rr}{*OmatTjY|0s}?%WiQMo77hAEf|F0K@{b%E@vE?nETc zAaB%;;^{q2ZEsn>|ecf@U!+ zQI`52MCG`M$*qwirQq2*xQUHf?xNP{m6eTKgjEO+cix!d1^B_Ql;BY0= zo-?I86lkOsZjxkzQY2H@8=q!80zR~4-Jn+Q7Lc1A(DMBhgnZ@bo#~p@kljm&GMdCS zO<*IdtrOgTI{F&ciS|yt66`)R-r01jcV$#{w8B=U^7!%8fWsI!`-`U|=ux?(wI$lw7={3wAK z!|~`p2+M%1lFkpGyg;*{q)n{)!Xvy()MfxPqQ1v+6s%`-{C$30=4|W!jikcUt5m}? z{WIHrjgctd8~=q!T07=vCdssv^@Fu{_`;+PO; zUm5nR5i+EvxZJnWs@{WSP55Z%-ecThfNxwK`fP5~Dyd6CyJ73gO^&3xku600coNu( z3~3?%Rvm&l8jVJEyQ+0EV`>pndigN}Jg8MiO}@tD0bP+X>tl7j&uwQzs=WOBF)xwO1(rz-5D_Usf}`ZI6c@!7gS*z_+#$q_fkjK42w_2i6f3c?E| zepH>wf^H8EG6;>x8yr-J+u!d)+KV5TZ(M;~cAVf-Dl43TUIk^e_oVnCKjlTii(*X# zJY+O!yLlPessD1}aSbmg_N+jR6#@nGc{M8DlYE5C%)Qg%pRuBg0S(6>EfP5AxufgPN2y?(O1#MOsw|f zx~pAQ+?4xIbbSr<>X~3PQ^o6?$5M<7i_<@4@unElwy5gC&{*k$(JvP5WgSTbMJboqogrEU*glK`aU2(00cyqeD9$* zmm~Z@l+YWyK1(oRrx}Sy)(-6~M{P-?up%`t2vQzbi2Hl-?P`~4LbgX^17jQF5Y zuQbd+v?+(b2%Mtz-bI{2mgTzBMCNQI)r$+o)Xn^CVjsaD6lNz0XN3uw%spr3O^?1f zcFgCu>mG;{5R?A%ZK4JqCD|hR>JiDo4$3$Q4%PglEBIdo=ykS#zvi`F zV>?HYs=NDSG~%Mm@20em9Z+f|+WC*9L=cEuIXJrwLdPW4A#}8J@}vF2$lF!^3^y^AX1|0az2^0*WD&BpTKN{>-&CPPCv}+ zWWmq5Mp@B3o}!AhM((pCdUYZ}cO%idFJJYANs(#_4GeeRX!2HkRGd z4dX9@IhEqBTl`o7E;cS3G{4D@a2V&vh8(tGUOZQ&UOnG;M z5;xjYgq4CO=)EOi$X6-W_655a<=ooaeZh3mh#8o7Ksk9cwyoAhSk~SdZ+r6 zK)Q6Xc1_vc_DB^Lb%%6X)4XB~T5_A1UcmQ3N+)v!Kq7_+F{GQ8xwlN;=3{}i%%LFq zfi)VRKE(@2Au)pDsn{ zmLo$;Ft`#DFOcIiB#nMcsFzTz7gCLF-=!c8X_H$%yg89ngo@rsII6U&my~}|{q^Uf z677?5Hgse|X<-piv@wVQA`~*xpKS_21!=5K>Y7!Y;S%|*Op;mv&@!MmQsFNjPGfjU z^7}Q_F*W@!T>XqqMDY^+7AGMJ)W?ayfB=fvhMUyiwju#h(KIk?$KQ&7$Y;xSU(vAe zgs;@d_uTer_tmD@yoaS+@?#i~c*!iJm%8*+V#^j9&!+nEvrB*J#8zoVJ1eIZ=t+5X z;>%xGJW5HUeq(RatFfj;z1Tg*_}D~o)k zc&p>BSMFB|$IgJ$l?9t-vA1BHJ?`W{J%t)Z176(Dn4g2+OTL@L@3QUzKBiZelZvJ_ z$hF(|pPs?3%`ZcU!wft9g2y91FMI928A;<;kgnJoCkPQrGv4)#LvG~77NCy)VYm3& zLde`kNY-D4kB(9Wr7P_2sRVP-k?g-&2;41@Xxn|0syIi8vEDf;s4uuSF4|e`CWIp# z26mb`p!7v=5E7jyI^lL$Qn@(^D1a;Ho%3d|3_BD*W+iT#5jI^r9Ezq~B&YQxodaek zGj%xuo_~tuRUe!mlDo;~JZ{+(5 zhKPqUF)xg7L;8awY0vW2{h<9^7e3(BwT)+r8b@l6D077k^+qR4x@NhpC5AQVy%YP3 zU@*=1Aw24Hx|QMk!WT)XApw7;{dN;Y5S7QdbQ+IMrj-%3Q{O7f0*V%3o6?^5%=eE9 zynylwl#ZW?9*9nYdk)9jn+0RTN}rPTNaG82ntmvZX?2#7`P}L5=uT%lK@c%>mpLVI z=_gN$Zm;2wTrcgJ+~Urav!b+nt_bS5;Wf)WEC3ZXS1I*Q7dP8X2``AWL?SMb(eU2% zvmgI;g>ul5;Qq$cfg?;X5R-Uo|FYcw_JGsn}IeL zzR($eIv@>R4aTV(GyTOZ$LSM8J*r8AJ4m-P7{v`O@Z71|mwYW4#<{ZK;8A}+giD}V zDD7@?Hj8E$Iql%*K=jHh-bNd4Q9?c{uv;(eR-?D&67tqvowvuZ;E_SpLn-FFnYalT z4pK-juTJ1@q3MVLg4%Uzev@JO^EJT~RkxDNunH?!-Qsl!HvYQN*rTA$nF!(8mD8K) z^h)g@VyQZ7ZRkl5umIMdwk0Qe5>$581KNcGZlE76I`65I!uQ7KQHL(=6I}MXq-iio zGW+W^%a|9GVIe>#G$JcaxDjaS{-iFBI^24VGx6%w%v&c0rNeyFB6#fn+ar6P5{_G0!}1@h>PV316B=b0i~GBcFJ@!@?rz?8 zUO5*v#%gOwF=}dRmlrcCUYB$bpXATQ@B#>3p3=BV)2!0Mid5BSY-nLv(8VcvrwdOW_5IBZw*lydPk)eY>SimdnLgtwf2 zR#x^lOtt?}Cq7xjzDE8pf{-~sP{wze(bESn*Bjq}zciwC7tVv|f19wfqpiyQyv+Z$ zD?WLMm-?s_V>;;-IES}JF@5c{mGv|`SBtMf#o;y|=iYXJ$mr#q9`Kty{C%%_jc*jp zdRnHr!h!FL)M_J2HK~t+}BafAxhhnz;yL`Wc;hCIuqq8_h3uQ^q-N0 z&K74A(G@0E>EMw2506zK)dKf7XH)Ig=o}A$u8fe_&Y5EmlG@M1*FA5m+<4}{>{Ao%%;N@U z#d0sLu?2L?5ThrH3VeGAQr!0FIoaq`Zb?!B^z|M`9KNRKLz{^{vq0*&z)tG#N^tEv zhh%74x1G%6l ziVD{LR+8n-tMoSLO$2CIZwK+rWzgKFt#SS$WQjKhIZZ09mu$HYkc-MYWG%fei=WNv zMLp0gZaW-8&DKYurvr^sOP&21NMTVAfrtcR`9MIah)}^F8T@j-MoP*xL zCA9>bV#=rZ%F0rimT5HTG7P91;hiEbqkMdcS=YV(k`)Epg7Yowy^1LZyVIe=4!e^j zTY}x2F^S5Pn}ngi2ptIv`^8nZbt5QBcwQOXRovEHMmep3#Yw!|2jpQ~qC?B-FjSn~ zBD<=5X~?>SD#__jFtK)`1*X2w6@fhxQ>5Fev#Ge=5dpmsS5G3{)-i!cUYsQU)NV_t zCX#j%0yGlQ)%?egV-b%)#$En?f&xjWGR@d$46m>t`26*p}&%3-!sY9Re=;apr_oFMl5!RRKphz7lrq(mlT% zphHx!)F!}dNh8+v6<3a>`#v@2x5=c-MOkz7bWLF>EkHcEGdf7^6?j(Ulp9F31X0sR zbWmoeh`c-nwI&E;$570b{W#pRrQ5RMWD(-HQm@qJ%H{f!qV;ciW_+-yY<$z&q22zT zXq5I^>E0wED`B(KyQ%Bu3*(wyx5Lnxp`)~C=^uL2LK|1DFQ6 z%AN7~7H<;%HWZ?~%yao;y)rL!km{05;V;|@jkShQydDc(hZG5Jt$PjQI|a_T<5jlF z;Y%L>JN;@~bu`nU-P~4u{s*h5l{Gf3EIe&06tVl%fI5N?GZ#3w8%&^OdZ1-dKgfRw z^#0f!?(8WxFO zyL^hFV>KA_@43QhWj#X6mVL_O?T<0C-aO$8ACyI5^eNJ8K98hfYid_rh<%9W=YiMF zr=%qvf}cg8EZq5gVQ<-lq* zO0P8qsAOa%+bwF^-i_~`IO1LT1D!^lhri|gQ9#8lu1kEFtu$^?aD9NZ^aM0_dYq_h z!_ARFYD_tMa$5XiP^bBd+|hR+hhh6@^?#JzUT?n!zX!OTM|J8+?jHN#LN3c2+jyEt z&e_sjzY9EmTAbZQirBQgLuG3#EoRq=vMrw=B?HQOPGLFmWoc3L1S)#sJGXc{jIal_ zBPVIU;W?$6?J;;EFSH85HevpUV8u!7z^nb@gde-Uo6+6MfbL{nu{L8}<^G&%roX?0 zD$#!iFaV9dDkzd`mpu!lEXPGdNkH)z0hUsHqwSFmKNiT-d|JE02F$MW%JwZqp+dTM z8ZWd1dCY1%G!%bIoroN?dZF6Y3A$O-lFRa$PgnTK-2l>>4j;QUZiWL_dSiX>2%?+a zhn6b^Y`)TZ<>YFR*c77Ylu-5Yj!2iI-Y)y26Js-HVqmir2S3jo4=_AapS=6_Tm9-` zwAE&H#OvZoUpr{zu*>Xg4R+w{s4o4HI<}~uxwRy;)-Rs50%s_SRBUBdHSVfI%Z$(8 zay~Q}ussq6DMf0Iys|?L1+d~eCo~&vB28u9W5{)qt_5WK!q`I8PBgZBu5;JU=H2kt zd+&{3Blad@l$zi~1-HagBoMfi5v-!Lb2#L(`#NF`uhYA=hl}{E&l!dxS41vig)_lY z43(a&4D_)R1W-ZE->6|3JR4#_g4eRFr z)#Fn5-~PZs5(6`|Wz|4Xh3xIVzWU1Mw=i;{ch!%*E0{G(dEUuq||bXn!+C`|#&- zD7-`lG9v#u8L$V#{gGa2!?lBCV z%mEPOp z3m$}X?&DuM+t+=COFZURXHb?4h?XzA;BlkN<0 zCfy@aJlvxr-po463a~csXl7W~Z#a_e=dR0)n$uKC|lJM4TUqeCVsP$lqU| zpYEWjC&&Y5cl4b2g(Lik1OT&1IX4`2AekWSQRXaeqGE1)nhx1)q`EhLUN~8cHWe2@n9IwoP4;6!7mR$!_0d(P0@+V{ zv)ZDhuzJed#%~jg=)1VFov**Z`r1-uZgHkUE?T>=!XD(b3T94r5F!gtpxMHVcGK&X zL=ykNob!I$lVFAu<#Oy7GX;SLGp*yp>tC|7hKw%}UZG^5l^N0mjwImCP>_4oUN{ew z+kYR0zD1Btd5hIrBsMA{h%~s;)BP%}k}7f1(JDQc@=)(M-3)?eBtNyl^-{TgpZ2?t z1=?44Ze`Mmo@bd+;*QlkCtPb~(s-$%A2q6FSD#a>pNV1+1|lk=b3wO%Y8M~EW%fas zUKfDU9#zfO>?h_H);`qNJ8V%^`G&Bwvb~}0`HHOxd#$Li_EW1;O|0ld$>zv(i${@8 zU$*G$XQp!A$$qIGNJE7_@W~n3{~C~XA0|=WsXGVV_*R9Z*gj546|zmkow4x?O*-o} zgb_)oA{9;8frF+yLXX7xX7=?Yzzq%SI@gm9*5^{iNX#4yx~@d=CqF4oJYE`^^(!ZK ztqTgl*?j|TZ_djUy*{^_^)56i*1e>ZSFGTREOCp~>;C4oy=SE2Q}llTQ!?W{EJq1y zk~?_|6aP8W7E`gwL@LwzmldhcUD-{o6MJd0dc}p|^37*!z~NVCqrwBx2MR$B<#Ag- zUg-MT#AL=194ALXb#+f`EuXE-Bw(pu$GD zku>jZyDkC7;+%z_+Epm>>XM13m(te;E|#6M?DTJ^NBM+lCtD^GvjTRw04y6Zl{vAz zWL^b|L3FL{NKS7>kZPL6IE8DlDv=>1rhC_(Qi$)7;8NmYpd z&E$9MTHjVaj#AX01y}6%O(3H?4~{eqEsq_PN4=_VLZrr1QD@eaLpAsXX+5KsiD8{| z1ZWB{7hA~)Bd-s)vxq7OYscS2DRAa6H4LvLpgr6GYG6NWK$*2UNOHCA7nffhFb48R83{ci)st5r$5sITU93r(p}q9Tb=2rr|N`TQ)ct#Ta2 z18^0|6w7qIW0`eq&3-v)-kpGaSPXj>!`G!`0Yh< zkRF)3T<*h-vi$0ot{l!a1Gq=EZ0d)pn7(_q=BVb=NROJ`QMD~f^3zDcbn$JXd)TPv z{(Zy`#v90TkecwHuL^pLh06k1rFLtj5PP>lQQ{iS#Svu)I-%UEib66SY#7Df5fYn8 zKX{-ZU!qK8RuzcchlM3th~LF0Z`$%Jl`8UbAkb*J!&fs~4kGW~Q!66CofW^_O>rS- z^ux8br}E%00xmrhMcQ?>x8ATk3L`X0@l{{=%Tyds$#I%#r&$WE@yPRrp8Z;MJ0z)05Ql@gxN<;e~21# zNq#&l@JR}FeJ&8=uAhb;&~nd^Tj1N}xQS=zK2aPjUTG`rYSdwq3h!=l9H(WS@+w4i zMp<_$JyS2pu~0-92L|xP-gIT<9PkzTXV95o7U~p0^qa~&DQ-Tu>7;1T-%dO~Zgd;C z%lY1#GiP1DXRdSo4y_`jMrVU2osv+q00(vu84I{5m~GYzf(twxT&=bzFJH~DBt-~? z-at;PxNQ?mlTF2pz$4WuMb0SXa90@x@<3R&4cgI%)VVQPVvOnYns2ot^2}W$lVH#) zFOG^_T*q){zxo~!c{bV4;z4PP@=}5CdVZjSPxW)avPaKSZ zfcief=ixBxbQW`{vXA_x#zVtEK4G`mB94wYZWtu{oq?%N$&KX zkKH{X)p|;c>X+q{Cz#3Mlc%PihX~^EiuoaZvAu}LK5Q5lO1kRPoyWn}{Q2(-(5bB4 z7qzt?(+7X~cH!uZ3Vhjo1E8m~OWC}DBdSk}DQC>qVokI$(HFL#iJQ#c(g*rlOFD@vzgS z87;Kcljsaj%s80K^>XZ+8>WZJ0z-`t$Fr(}QmkiIEJ~WOXQa(%yyv(5Iw;V!jrHj$ zKFsGano1O=rAMPv?^Y7P@VnW=ai`#S%a#1z(K(iGL81Vkw6snJA`X}$3pd<^hOUUm zgQ1b$dv{3rAF6~<)4KZzbC|7x;f@k87yaeVNA$|={*}T^QRi)t)~7&_fAry->|9&! zb)%EQ%bd%r(H|bDU3_W?`i3P$48oJu)Yxh?hW31>Fw-n`#R#Qu;L>oJ=B+|rxpBba zWk8MJ=IbCIv2@o(nI^K-b^As)Xq8K$7W;RN9~$ECpPM#epIh-cjj}ULz#R7MO`I?v zAP{YJA7DX$%0?~q`Um`3Q-9x!i1IQ#rgL*?Ds5=@;N&(2K)qpPBA0k*>yUn7+kciQ zlhXN=1N+?)HJ(#C3qN4}xtF_a>!sK(MI_oKKW7$^J3jcdo%r^Ln9H0&yP-nF`m`od zil*&rg(cCKD~MrQr;;rF3}}=dR2)>z@Z}~f>|2JRA}qHlU`x=?TR_J0lxZwFRo~|V zti#JcbHrV`+g17)_d3hO&8{hsQ3#P&oSNKKrvldHUxekVBA0C4AiXodIbIh=OlUOi zA_TJ2w`$h)!Wv+!w{jWtjQ*2xy6!^XUD_FmWx1I+s6VqE9#SHqh943aDuSb)^W8wC zu2W;|_eHZ(l<<|Zubsm(|IYFi z+0QKs29=yR#+YGox|^q?wuKBnHCu*wO1(Jzr+Qr6PHZ$*s39`+A^+DVGRn;@Kfg9t7^$3sgzcdzkD__;>YU{By*qFcK=DTi!iq%k`aHt6 z8ou*xX(}dM8*WoV?-o^#Fl9}29W?P3(EqB-dm<%#J2|H#EvAhdeF820n8b%gPq?H=MxBA}d*;Zgu0lz! zEIe+kmq{fR0^zzujV!j7aKeu;>-H1e?bY$9&C};91XJ&C8&GE14QyceOMi*y5tUh> zkM~RctQxX($b{s6;HhN;2ojJA zgC~02U)WFMA@v@J``AF(Wu4^Bgts+dYtC*uTMhdFteW)rKuueBN zB=XuVmt=O;ybcL}7~NFtIurY448F2aN6O-!QQNw;NDKWoFfWYO0TEJYj3~ufqxZ`^ zDLLbvpNz1wp={Oz&~!OzX|T6%catD-%wASXURk;=YFMYU_FkEtzRb)$U#d&#V2R*t z3Wikw_XASmfw@O}aZ%6v;RK4=)-Rt6L(n(8%MC(dK<-=sK;W=S$wum1Q1eFWSZ^S) zpj&d7mtj7Ps`3`k7ZeWE%8%~N5AAUXULbMs^SzrnqsX!cSPz?f6m$C6k_w&wPdQmm zim$2<5SU^rN-L9kyPL>Qiwz7<8H(?>BPEIdbbs~MlA^^r$QPT6B5pe|6^Y(bF+9}e zTtq9ddDbOa>wNel3zAwZKsci2gtX%5LJ+GJ%dL^q!o$Wkmyh|hEqEehDN>hI-G&=e z-&UInOZ}0{im2T)UWf+yT*^6U)yOV*JJbzbef?j+gv0h0Um2jdU7ky02C zHTbYGu6Ih%MYBmLF*Qp7(hdgT>tZqd-d?k?lilU~%{#q%ZI{{vYYcv#v6mmG>~XEAcKTm$M6MQ8z>E7EcJy`#>4a+m*Ovl^w|Q+*w-jVfTdgWPAL!2O+n z89x8vWqAg|`a!vy46C4bDcea_7FpFvPBsvTLX`c{uSdtql(X4VLr+)Pz5WG^mQEf~ z7d*1#0{ex;x!5f1?KRw7iO2G_O9_H8>EfZ!9r9W!nl?Y3eh1%ZDmQpZTQ6ZWP3&EUm4mwHNaJOLrFVKXx zmlfSRFoXEGJI@bX>2sJ1zj3e3vLhrXo_sl%yow{F{NC=xj@VYuL3^F6J>+V1Yvy|m z37@*7y6tDGarTazN89*N95S zp^2sHpNtM~TQvSG^}Npj)`Llfst}W;XwiovdvZQ(PNG?kNnu-1>3qgJ#9rwkjAfCM z(khr~mrk;MX-?+yY;QZuR zG71Tx^)6n`Q(m|uV%{j}f?(7M3-|Q2n*I)u-f&-jm4gk-9q+D1{Ks=46R~p;*d&o@A|O`0tD922S%)vF4zzx+ys+u@5+8h)-FN=X-mcy&f1#NVU&Sq5)OK z^rY-{PYz$Yp>|u1{6TiEO;>S+JOaNEj97r56fInv=VdfD@D6*Z8)D}Y3ks{~;WJd9 zvOdNT(=^2EREZB(BB2KnvTCdoJ)2ka)0K067)R9iOKB-`;LEP^YRPuFR(lW3)c=aT zyu(vi`jrn55_DQ&Qz_PL$+4Y>D!P*L!kYGvgL25GUDzmf5vT>5h~$|(2DU}60lmJ# zWfjv|%Pj2Sc`KiRxj8Ua(ed!ww577#OkQcJ7N!CVGf`2*W(C>W#a}B-;W8;$sDHXp zY}b9G<&zzWUA#EYufPJ*L*P?GC#z^YRWQ|dQ^wlyBG!3JUUdTMULqji$c28}y(%PD z%460PnvlQ{26m;|@#~N(Of^oMRf0UviS5FgD83XWfde6ycoWh1g!%Ar5;|DH&pctq z+rZV*oEUu-yycS--L7-upOUs%&|k4+h?)iOI4voODb)s1tP68yVXiv1_79-%7{JUZ zRKC%%L8zFg*>jpeVw;&W9ophN4$nE2GPQi=S2-u*D4^L_nv^zb^{woTX#eu%8>NCU zB#x0-`-aNwi|K_*G$-r;Kuq$hrZ@jZ__u;@C!c^K^%jRf{#q6eQVk+DEpjI|jgX1a z4L0ZDM>BMNr^?NSev2NNN5jHRX&j7P;6PUu+Kg{qZY#a zw%GVuBQS3+PtE-?_!7!S!qJG$WqS$VGONST2OaH{W^HZ{e!hnm|G2?H0AzpUiM21K zz1)oDIEyzGe)V;N-)8J5n}nJ=iZQp#)-fh|<;*VVZBFHD)H`iTk z_`T!Ys+6`E1y^b1_#*2>vwuJOC(@`Utn1gTX7o8jkwR)53{b?E4p>FZPUEIBM509+kNKt-Uq{Wiq38hU=NtT0s?0LJQtV)5G)7w`$;C+p7JMEk#*2hrtJXX^#HTt2@`b*K~vnCqQs z{8D*h<7#K)t4)(U6%>tbEg6V|&D(FuDuBF~Rn~AWDIl9Sj)o{%TTWKfkXf4rcaOPy zvrJS|Tix{|_>XejS?Z6P*kqC`0%%N~GHw$1^w`TYlElS6; z><0q|)RjOAkt-v>zF+PpMX>FB23M|Gnr7DVcIsiQxtwmS3t<}#$XbJZPzcIi26ma! z9$pUUf=kDz(vFJ<&{k8(RZRhdm#L#WwJd8PLpB*h$?CM!;60GYZupWafQy>G8u9j$u`iZb}B*{bO#7Gg)1-Z zbt%bOj}~EQScP&drT#M=&0ufq1}Ae8-mVcOw8d9Ipo6faIX zv_lS(eDGEmJRp=>zK?Kyq5@WN_-;AwgN!L_@G;> zHsbC#245x3UTXyERxyDLj=*k}M`hg8MAOxy#4Q&vp3h+6!JNR9_M_#x6QQdTcoEMC zcai=4oanvYK>$TS>VX#0(`=oY=yDEDb)K$B9T9EWyG_DvDn6css)C!w5actMBn6P) zb`Dpe*9p)X)}g;}9f@Cw8urRvNPTcdV`>hH81`+oz{OrDVzSl{LW%t;QNm07?9z(Br1XE&ZDa2mk{C` z{8(eo@5$HdPktB}6!+-(=l-aUthdU2C9Ftx2H#cKd_xQOfiSeD{;#VJvlI)eZRn;> z%J7yDIAjH4t_D>oT@m*iP762pF{-ttc^Bv}SstPeB92Z1kBg8Ch^HI~U{4ZZCA;-% z&!yhUzb~|m?pc^9D6HQT0cqZo5q0o-WuZlp2J9qVz~B0S-Q!)&^;koAQ!SBP}pIcKo<-DcuP7677c@ph4fAg$L5lFI&7Ur=BN4BX3vNDO8T>=1 z?dsZP*s;bNuXCzvR2z&D{J`WXaoh!D9SOfA> z775IeJsN4BLHvxeO~a+FG3)?#6nNsQ82L0rzX&9{^jZR{m?B=T47{IUQrj_0CWyBF zXY>&O=231hsJ=_!9T~{tLmvV7Z?MpN{o%bs64g6&F@g^A$w;^O@~P{8fWSJHH0(6ZIljNk8)&JzN;*!Ol>BdKa@ue$S0YWv z@o7G4)ZYuacz|N30`8;e(iuY_vwy&@F~{nNx9Cx0(_e&@9-$3j>mRlKj!Bi)<5HcM zZv9ZHwGlH^`r7>*w!vQJnoIMW|DmZ}H+9QQX}#2qB&(4W_qr{Z?+BBYI~U3DQ{Lx^ z?M`C5r=>#2rHxs{I?fGm%Ye>0n!b41Taze?-U`}UIl`x97MCVDEsYc%PYp_nnGZDN zSiV$3ja+&=l52@2NE0+T~SIiFGE$x_9tye=0XB8ahD4s%OGy-f>+O_1BeCk_ z5n+?SR+l1j8MCqVYw!Fl$x)T%FMK{Tr8nDAqpsmZ%W-n1#o_}fOP9L0MwWoEkv}Jm z%3HI2jbGV$03DG_Z-^BFn7lj*Q{Ev3>oA#ICYqZM1G8{4r-}-OSYHs3g1PDUe2<`t zL;Lbze;H8;8N0`Tu?H>7R%wzr!QjPM>J$ za1t$t3`sy!=95eF4n>9%9z^cXnl1MXg7aU56a_TpxuGf+b9?;37D5@zTsXh$nTvRn zC_@sac8M!Ep2V#UJR|x!Q(!gxE=DK0uUSX&l1%9Rde>=nQj>tugm})~!CmE{iGCT& zmxMGgnSFMZ1uh-&l|iyl?u2($#K(;%=Xln1h9kUs9b077h7g_&ilLVpc1D>hTG3Ej z)|}t3eir^kU?l#sms%F1uigiLb? zU#K%m`8qCM`mHQn=e@m~_vjQ4WJ4Yg6Wo0Hp^ju?sL2&@aH}I3y2Sq1l!*jntmxYW z{(X8eEvmwRkFJj(-!K0u*m_m5XYS0u^^y26I(s_?pOl`3=-Bs<&Sg3a?>zlE*GZL; zWZ?+|GKPQ9NJwb#&T>esr6#sC&NXTQqk!<5jJDFUf2&_nZaB6oX|wjip|+P9YByND zGM+{?e&7>Js65X9-kYX62~#;B8koq5uQ-w`atiWYd%B3aZ_w@2Rvd25yIk+mA003&1TFc2lQjc>&M1d|A^REXFOQ9w zjY1sk6}8GSDlqf8yUf%kYHTYDJ2NXMNney|@%Agr2c?Owm=Vf>pxCpgoySZr6Am%2 z3ptS5s}?fyhcz*bRmd&5k+_z$8yP;J*WZAD4}KVfwJdTzQx88Cx9|va{Y8k+PkH;@ z%Jwh9ZPJzVb1vOqgiGqjtbACpaq)--EcoVubK=NyL zvs@hTVMK)rt17?iH7-uI#7o6j>z|iLW$t}o4C`!z9a+K$uCS56bDs>F4D5IgVZhW*<-ZAUV)i@ylTwps};hqXsv>fV}iDlI}B z4y!IW1BepFDK72w2Q)Z71rL_IW4q}aJR@n=_%#~UicDZWtwwQuU@v4c@S;lJCg7rC zq`j=+UEEgPXX}|$+!Utm7L-B@H{BGxYRtR9^ioP*YZUnc`XL2za5GJAV!~}7f1C}>z~=;_!0o(uBqZQ+Af0l)I|4S&x)dfRVienWrc@` zD#K)2T8dWMfTDNQ^OC`kf5^w;dwv#GQST+f_(zaikll#^gHaE0x&*L+0H7KmNDkx> z()EbGd7WrJuw5vcjD52h?8!4&Yxn;n>#d`rdcW{dN)YLi25Dg^k?xT0?jZzefuTD_ zK^lPpr8}fsxp+! zka>H`!SdKzO(pai*lA-9G}gbI;YeXHLN(oW?JQhXRnc50<7>7>qs*)YEt1aFEt}{^ z=xcTiZh62W8b&W!m=yCVOQap&onG5r4Bl32ffjO!OLf#4IRK09oX-Sqam<|U*r!&$ zEUAUe&Lo$e9$!z6@d-)(MOtK;+%VRfQrk%9o%tvf$1Ff$bSp~n(PSNU38ocFkh|wEO$q6it{rpTVr^)oQKGZ)^9(6M@ z;exgs3_JsszIe@2C%$9nOb2FLo>^B*k`0Ba&Sh>X9kB^I{gJj#=$(pQ8>;mix-~Zun?JmbGf6-tcgHbe+UfLf;-7G< zl)sNCu$c%ZMwXurC{Saz*#J;C_tx56MXYz!Rraj~yykI?4-c`g+Wj)`YI zFeb2Q`!i;K)B}ujWLI6XRwQ~%TBb^gxUX>^+WOMb4_T8TTGnebV46P+hr;I=B8K}6 zf2if;S~CXG1x@-ORhhh-%j+gG`bH-*Qn(FqrZN6*Y-Hby)9crp|J$NyBkw6nwFZD) zzQBB!9EK;hLKYo?uXgIzP_Q@mry!2QpUXFumBS9V&BogJn3dK8dwxHF*TSq)W009h z4u=I~wU+x6CV+H!$J8SkaQUE>2JCRgf=THoPOn)~ecVn=O(0z#Ol_0FJdHZQke1_=}XZ3o}HXjH_Z%NQG-nJCFGR?d4y+#7cEI zjGPD77bQ13uovUIzGE#fHu$4?jE19RnfFaLLI|<5Hb}&t%#z;^*)p>^0fEbSNas}q zgFNTr-DLRKCLouF48B2hR=MzvK}z0F!Vv}5|BjqYsQYxQ307ZNCV6`u@uI2+c)r!> zU!?D^r8&waO-4w3RzH-wj#Ah+QVl%AH7M@nr5+bCJjOpb$x;U^&wSmS8+?J_P|>c_ zm{1D&?S3fSJ0gVq=WC%MySifZ)=>M{zweSB1qvc(k^Y#-Sm)NGXU65tYMZ_NqeQKy|nLjtmAe4`rS+%k>x(1^ruifQttf) zwD>R+^Jl66Fc{I_pIUhmoY9kv*{&aKTRiZ~q}(SDxn|c)e!ZY_;>MVQmW09%N$0CS zf1Rv6F3`q>!HFi{3qb<^y_I3r8%-o570UU~w2<3o0ecC8)M-`u?&J<5SiO#w8#>$T zd3T%1NRmgX-StpT=0AF|>6NxW9+wQfDP%|lmrulx5$r(GR;mV|A~dikVpec^`)T)o z2NvX43^Akr1D6CBc4h9Z*LK^kc*=9^fB9|n4dnE!GDIC97en1CNG{ctag(=q+4&&- z-K1QM?_&mS&8)|*sg^;4EecZ{|1Q>xVdHt#=@7o$0uoBaSlr~9&^&Ull8Fwbpk1(! z$va+m8_{aX-j@fzim(PU%7*5rUcU0j^O|Poo|xX-Ne8gbzz(563^=Q)Bvj2fl4Sv}!=19DGC-9NF{CbtX(t z^8fvEkPSTkY@*d^Nj}Ci49qd5M|3TPK4KQRN2b3>h4kCxu~Fd~S~Z<7kg~C3|95^F z+q!9ft!>p4%@+?jJ{gZR6-)rps$PUG;@2x+6}^2&2bXR1h`-kdGSbKq@;r~p!5S*k!`jkY+Qzy^jheKsT68uCO3W@`*R?S5S>)r2hBo+IhA50-_<0$O|w&o?9pBTfZ3tyv|I$B zJst4U*I(Lv<{KSU4MGrN3({rWkBAeS$#*)J8+D~7;~h^bo}1dHlYWM&553!ZE^{;6 zT_PS%w-=Y4hretM@2BhUB(UDgtmhOLNheyf7kEa0Lh(Rf(wWCoB5FG*c=+6$^0N=gG)pg*1Pr#I7I?$|Gt^I2kaUR&557DuI~ zRv68<8>Qwg{lTwi(+odRuQ@im>nbV4p@@FCT`U zx$#KzuZ(1kt9&I~rQe_Vt2`$%^H*2r+_&FTx{t?TgT#@TdFIP^jvOi^4WVw4=jo@og^2zxPa^6>OPgGa+Ea))}3T7xmR@y*+YvbUT4QOy7O|z8mqtapq34R97d_1X>fo^;hDTBOXzjlpDg|> zhX)QNg{4Iy9uZvpOiU_h7z!Kr%Q|Y!6N-7}#Lxf2chUWs#u#`Qv#pjH$ z__<#g205i^r|8+CeA-`Ck4jO9LDfBB@vMsvjCeWIO0jM)?v=oB{R9|ErCoq&>Ynt7W zmr76_z|5;Xuwosje>AMB_qikGrv{fpuQv+*`<^vsZ2dr%*Noqg=vAYOzWRpE`i_mw<*YFFF>`hr&uv3`uQmNvpaRsrg{z-@=Pu1ga^MvS-*G zjWtdY%XoR#n}B3&C~WJ6mU;tVIspEkAty@UDxEPp9ey2uoN$t>EveE-*(!zwIL zYi{CS_GZrMRl!YhV6+)=KO5Cqm(+;Eu$sNJs!h@Rk|YSXxk6T=yx)Ov%@d z`-&YOzKid7fh=qQ6Ot3TRWMKo>dmMZz21t*=A{n&7xusy=@MQEI6t;ycDU_9qdsP0 zW`DBFoQC^7K73pFOvU>_G!V4iA$QThyAm0en^usaL5T=4)s}{8>Mq}Zd7+q%Y-oOq zh&qo?U0M%>HvXH1f>=XURM3c$`WFEqZp202Y_Zh)HE_`ow@aDH_!$V!Y4mQ~T2xziz+} z^H-W|YX7)3Hrr&@6M^K+4XjL6y6&lY?l6}id+41VR8Z{l`GIR<-{?EmO0!l6{oEv` z`P`*-&tT<}sC;i|dZ^;@nEumzlhoWGwza2>8HEUa89o(|gw|}c<%lz7zb3_9L{;AE zJybuyRiL7qxc zr5}~St;u<7z6qjQa|t_pH%kRU%&m8dEE@?UfLsW_n|uk$u(th+WM_{GNF>nd2|w%e zKFR*{uL22=3A04A!2-;i^kUxUuMYB(#UglSHpP4_^U#U7-hmFNSX%7_@SU8H6*)*I z9fvtHaZ5vnV`gs7I#;juL}rTZ%lPi38^FmK8lR8^HF6BznAhzfnpXyq6@|h)@v@$` z3zj_T9{_Wg`BSO=0F`#!tua}>z2n0_7|&4yaGC%bJvSKIVwa;z=Jw?XU<%4(%(`2- z0%57DQbjL*0+N(h0ULG`=NZoOgC)lh5_=1n_F|wNI^sRe%I@<_tVJOX_C*qlK$GfFpJ9ZLiA9g4&aH%f}DvVA`ENV^#OG55=} zAD)Mmj^zJ?Ef;7EcyXV5;ac>Wg*4+Ju}*iLPmm4}2Z1hoWTg7UD2~)v7w7hXE*`5e zo3zBb`o%6$!?tg@Lgf%|w7r>KcFvjDh;*5b;9n%i!px0xg?_>9VH{o{7?n{25b<;5 zj8Hj;ZxsMRP95PZ^bb&(&qF3ql^pj6*8H21=8!JbT-Kpg*9ob)icJ754@Rl!I+!>6 zK%Vi`tcHeyV?IgYmdJgD3sN;wQfni4^%rRxbmtO3sJ0O6VR`pN2+8oyiWlS9sq#BdNB{1ck#z-J=)JUOyN_xtDm))93krea`k)f?rcbIV_| zLB18ME+V{j+&Pv%k~px5S<&9nXvAYOb|NdX!`cY~Wp%^NDri51r`CPOaUx}QIi#3J zll<*2F!2{@A0S!z@F`peNOF;pUZX0FdbH7UZUp`9MFQa?BcULpqC7)GMMg#j7-50? zRs{I3=-xBZ%0s=Z-pXoNT_w&*_hUWr5@?#edb~I&tx*_H7C{Jv2DT*d@Z#2;etYgP{ZuO zP`$+HbQug`6?_kJ9;?C8mp#?E+#<>;ZWX1;SYvk0Be(ZOZKw<02jC1LK0U!3N_j&V zH3?T;8w+l@Op4N$n~~l|c!ncny%nc)^z7$8c15^Bgz6%T?A=Ku7@bB6btZ6f#<<;d zYqntU_m%a5sqV4sRSK8trdBm%OQx}-BoS-l4|@t!viYMi4lD8IC*PNk^y!*HvGN90 zM{D7+WUWOka|(L45vzLW(mEwt->i~4-qOXxQn~+pmP{HN%&pcG!?KN)oB*xNa?EYe z`4rK}V_e{~(S%6lFch$m7CK;tYdMr?FiA#yO3`X_7j757DJN;Qm}UMHj=#+khJ!)I zi$BgJBNf?#hr8@6M$i%0Uu(R19Uf}6!6J-3i|Zag2#t{!6dKtT3PV>(-|Vit?WXM3 zd>#E$AUrzkX;ZxW9-wW?iUz;ji8`hLwYK-J;Q5{*1pHqNROo{Wod1a_29JUUa+(0K zjuY}8U)$l-*1L8oD|GNFcU^dN!!5bP+<)Z;HliIVa8CsrHaWI(g?Kp)>~R`$nwVhk z5R1h+-5=V#zwzK_s!f#st`qivUkq+*z9p6 z-|&H6Bn`Qc^L(f&0gq%E8Wd_{rwR}jc%z$eraupLNw(rnrRQ+eO4zSRVM|uHEwrwmJ(^GAS{_<;Djo_CF_kPFSZGZXeiH^|#!gi}eQvdb5$Zthg~8mM2FG~&xqC6)UX=TR=C#DWgo^Ob_BD_`gRI3F zY}xG7O~t2?8$1fCR;wj3o`LjMYxt-sX8ux3g^FA@XXICY|L59A#$5lmJ#%jW5JOi8;^x75%e22p!zRTCZFuDV7|JCZGHEF((Ske!Tx4x{LS6{jye7>Zfv}GV+~e}i$9*NR z+pW^Y+RAWB__^p?y+Z^%``H^3alGrdhDQOdvLPFsV2!I~hI{%9hbbqza>JV*9F#G! zF(ip7<>8GRI*=@W((147MZb)7q;&3a!U&D-dYwEz5Zb~qty?R$*2-PS5iZwr3Bk%2 zwS9XzO!7C4e(#rE5w<#IRK4K_LlYYGCiGx79YwhsG{Hd}2ISzu*JIQJ7i#?0E8YIN zT5-%{(Knu5Pz)h%Te?y7>}Bj!92*r1H6HUh7gq>^e$dra1b>|0YDXr-(u-x^XJf(b z^v4EHR^ka8^swW=n01A8L22JZ)O!3hXKplVd~19w?4#(`^!ex6-AnWv$VT&F-0^*z zYqk35z^tf*BwvBMF_&hRc(kY89|ZMPgq5#yvf|jiw{q~QX$3M|K3zTPLRJuCChm=d zlgFxf!2BUsV=&ig>7Slaa+RVRIT>aYqoNdX11#9CcdIgE`D6RybYn_g??l%i&{=j1X)SMT6CqfF*>PZs!!n7R=i7Cp}=G8y0SE*8~cZ zL=3V*^t6_6+$Zlxt+u~N!g0ta`{q07iP03e?qouP**h%cf`g-_7T8p)&Wimw7=rZm ze$5=A@RWqDuPSjL<62#hJFiz{zdF+vo(Mbh`-#ypDJqt@l~33;uav&2_fJJ-@tB$0eutg0&m@G{} zW2XkAJk^c2eX!3H7YP0$z4l4iAqz|s&Vu*(llDS}T*_LvVn4Swaqs%{j25Zxzg+X> z1hcDN%O{@s#2XTS%;P7jy^&9u>oy!FF8WXaM>y-IiDg_Yhg6?(;syYW&SAL<_48zpuF0d@=bN*CL7a0Oognn^Lg=JH^_{0o4;w3&&#QLL% z(2~(5qT_l{s8AgU4US?HOuCgptR{bYxebigMzklwk7(Zfyk3qPI}zz83L*Y_*L9xO zopX@J1V>PVayGc2Eo^$9hyIzIn+H|vdewnzAc{ep7GTW`hHa$6+lQvj%TECTuHMFJ zBH}N0TsJ!~U3kuZ?uiW>k}@ot@SeZ1SW#$}u0z}&-lMH#dQZC4dy-sk)7iF^x_DrP zS5|{UjF(nuw+ozTJ9dLW*n=Ujg^)KxIl?mz+W20dP)z^yoc!iKcUGJvk5XW(o&QUT zo0|+M&lg!3QG=L6DU7XPC@-b`eZC3keRMzTnt#0$;(HZ>ge>{`&49F>ItJ9JF#@0? zPlRNQ7HzEXmGFF1cn1R^w-%GI=_q_J(^DWtsiRu2BNGG?q*?URb1(gk0sqV!UaHj{ zMM5g6!G0VYiebWwRP6L!Zd<|FM-kv185(M$vHfsD@%0(&Nt;qt>l!<->i{&{Pa zaOpj7_>Xj|g>rZ=WY3AO5ytM*}y_))8?w-?^$Pq26+#~Zl>Qy=d|Z;tH(U|p`h#V+vN~Eb&A~6w0f8ONOQrn!(Hrn!(>^{ zoY<>CE(l`{(dg>82UJKVo$3Hh@MUBQ+hgjq>#8sr_rLf?wHl^EE;w$_?fN`^qmwT+ zw%Q4NY~UIN#dPFz^BssD_dnV3@qL-s79Ic2i!i}c0Jb>Q;-zrIMWL?*ANo*WYtqzY z=mmp~uNNrw^qX>qa|sovK5dR~aq~6X1~xz>*|^XM`=5!sJ;;A(PGgu7;8N-dl)Ibj zJ=&nb5Q&ofC5Pt;`1g65=~r-bk7npgTM zdu$kLfewi$oF+dTV~MERmVhxr>0|N<+I1X;Rhpk2+j^-C6$R#p$=#(2OoZ7=As~V4 zt&6Zw&DUL@En}ZFHl6}q);>$VX7b2=s@wyWcPu^DG2=dojG~VL)cD>i45*AMdcTXB zG7s){7NjlS%reqj@KFuOt1yEw$OI9n=uj5?ZJkP#jLFIjj=SZ&E=qK&)vi%oh#j|E zVtQhQn)L}Z`WxLSuEE8)YhnflxzJ$0DHl)88)u9+VPy9AwPz#Le=h9r!k3~__`ST( zg;QU;(Gc~AYZpc@wlD@T%vuhW?`%PJMdJ5)txt`VEvo0%L^^7$Q?gR|G)5`DY z!pB6sVuw5@+eyYu*rixwADV^tt9#h}(gvQt3|X?xm_HOhruRG_aE_R0bURX-c-QbW z6&O&V`FcOdv;`sQ)xp$$bP47nwv#^=33zt>1gbtQU+fDK{{oAgQYq6Zsd@z_K1vuD zSuc1wT{|+` zg>$|Ac-$f%4;S4rSA7pKYv+R9V)#Fb8;Cl502=msSi zD#_=%lBDej#b&S`Nb-O+!wat>JE=c>l3Mh)omt|-)d3RO{` zokG3T_wiLS?tCtGb3g9~ve- zX67jEOogfhNeGjCC^{R8(`?H2`%Fi=X06v(a%h-uDCFxrTJ5xD)p$SljyDS&gbPqr zB=h7Iz*C}sy0;F*J##nNblF)8C>~8#aCX)n`+7Qyc3NPW%*g0}*1}yjq~yV=&gIDU z+0~hJL90MK0$|59R7Y8C99vQd;q$nq2? z`E;1ssbBjP`NB*3maGwr{AqWd6xtfIsYIN(Yg_9&W%?lo6+xT#4+NZgzsvL-yyFon z`Q-%`JnzOyL743!iQl@ZdYEwnZnXFL1JtSPs3>q<{+Ti}6ezQ8(B%-)Z(R4V$r>5N zF5J6PJp5KS#N5fLB@_jBFC~`v@j4k^uBUo- z{E6nBFNl217X8%BTb{-yo%mX_G^6GN3xi**vAyL?OkjhpXs%u-Jp%WoSWZ|I!oS}< z#RHpcR{1e~xdhh!NXIO1kDX*84$yZ(+UA}}2&>A%6jh2zBF(J^E2{SHyPA9WlDz^4 zu92Y81nZq%st+B@c$gor{VKf)cneM5h}x%v{{`9ALP7#=GBhPD5qYyA5o)~X{5=o} z5nro1@2UFVUW(P!bD@kiCK3>P%B8nc zXE+w2$Ec-^r|>f!vW}dkiR!HeQ_m;`_P1ifY&}#d z3=F?>d~?;qiOUp}jL!g4X7v{dI<-@Wg!Bw4`;<_yd|j`uCogJBah6fA&s*_%qAzP3 zG^^|66Re_+z$k%$3loR0y$Y5XgGQHazGG^6u0wRHK5glzTi5>Op(WrG3O&=8-@BqD zk3H#RLS2c9{kRY}ptKNrot55Vt>QRrin`o+A ziM#x4@=3}$XpkQZ-Cu$&3wdyIg2TBeoRtA&16Q9l4LQZz^5VWJTIe9y@SDcE`A=P)4B4x&K&@ny#<(5`=Vee&!=J?f& z3fiA;3T^Sg_QZ3oCb9WDu90rkR(!GQVI>FM)u@oNWiHJN%YdQC4)(TI>Vi}fkh%o& zleLA`cQpq_onoTzONVaMwe=~0r7^3@6OQ&HyhJ+ey4`$f9LCShTabb2uFJhN>n%U^ zw>!!?^xhT!O0!l*EX3}IM~c|?qg{7K!HCF^WW68rYr~4h;N}IA22~7lZp&;PCM8&^ zOCIYpRO1!%_LI9cU0q!#(^&>tXU1EzC100U1O)7I11vPSLxZEW>FMTA1bKzv_^wdH zD8%z4AE*C<_PASaC&wOEO^a7R-um>d@7nf9dcEJ)k}Hb=)SQ?pD0vK<*77$)2)3=+ z7{qxB$qFcEa%)3ol{4JnfXKh~LxEf?BaBUtt;2fz!ZBuIMnyYN{e9xl{d>!+hBMFc zW;|?D2h!5x+Us9S65Ky+#sg>u=tc7+p243*3#d znrh3!p_O)i@RW_kCddxu%Keb*z%2h$D;pwQSRm~hwmk%Us4DlRHbY8MdZQxu_;ta= zYkvfwvy$`#$r46rRh4Of&1NDi7AtBQ4?a4dNph{j`YqBL=bMJb71%bn5n%+vjPgp! z{H`z?#!O_K!!jSSmQSzO>{@BkSlMt}Hal52tw2_u{h<+t!Xy)6yq&8AV?!rWRa(Fx z9`5@l&#c+yP-fujvi81JE zfRmN#_f_s1g~rH4FF6Z0-!j({r*H<2%9Ci%WC*@TKaObznN0C_O*xiD`JQy~6l{-R zl|W7l_=Guy+=X`mWUk|7QDLgbd64lpmG&y3&5ufLYi*qB@`;1}{l|{Sf01e~oiFTP zKsVSo9UM|`N5YtbJU_z zqEfg>xkx#|Q5out_eyRl8*|t2ejF*h2g+2DDkE7jQ(_Sm$p&JsGT+3fJ zDkvaZm?PpoxeE56V^gTPSizuDi45L6w!*9K-+64J_sydP2jNuTYF~76TnOj!UStG7 z__7C-Np$>%>S(rb%qw_9@_R~_85okZ1?Wm=FWZ;!vI_fA`K)U9~h6+p}!^?d%(>=q!LM6 z@D&>O^&*IqZ@+|2jvl&vSD7w91yd_oN;CDyz6-)bILgnt#})p7@;G0!rLT5qe?&q6u%btX+q z5$IraH9nQu56q&$_ol-`e&V0K@TI91ak`^T=+Y`_J}2*Jr1sL`<4cpXrw0;TqQZagCB+#NcUz7W~AR zo^xmi?7R^-W`S=xp9_hBIKiC8FO8#^2aHAf`_89YD^APtgpJ0B(!DtWw4Mg5WCypA zlUytI+?mw|;*&7CdCu}31lj@ZBw9ZVx?01Nd$$j+n5x^)mXE`f68bTPR=q4(45(wK zD$K+_9i6;4Gx$-j-@H)F>$0+SSDt%K>wX)g9pw5*8fWLriQV>qM&qh~<3%dfA$Pj- zSotw9W%X!v?$h~$Br(#~d*fr`2IEMJ;S#N?;=@Ku30k3+7H=LUCfOAqt!k}r_`DP< zsNLEJ%R2l@e+17mKkm20E}vJ90TmuEvl%iMCrFtS0$}&dM3}|o8iw;lZ2G>QJgG8D z@A}NAH0bS%%{LVLBVn!Omt=O>gf5=1SdN>ig?tGfLN}LY{5H9FvHAOv5GkI z2BW|Y@+L16|BjMNm4NhsS1+iMG?WR(AA-niCTYKWgW03JT@U&7M~!f|)kpewBNm)`T6&Q%kf~)O3>sk|-1|ux zhABsc)~1V!7re2HH1_||>JJUSY>&HLz(tFGnO@^=8s74q2Xy^VLuh)s3^tGJ*RGO{ z6?v6tK0KB5zOxxWfX{iULki9>dq~6WmL12?zNOwgyP^muZr6bZeQTicqB^A6Sb6Bl zrr{M9cpo!9x%)ddV~O*mZZ9LFbj!0~T!*BC)3LYW=Dgh@tj`WNotMEHM_eR2xjEGRGZsm773i8WW2b1>E=7AS{J2;knu@3epown z*v%{6H70JcGyUdarC#8o^^a3#^2#=ZuoUAD)emPeaSw~VDGX=B+gMZONOqT&t;zj1 z+$g49e~f6svL;n^GRSU|uL<?4FkjHA$EewC$%A#PfKe4lsggR;~ zdq*}c848Q8Z@Kz-M?kp<>DUj_2sGPwwf0&H-iX{);!eR1pFfq8>pBL>b%frP$N|?d?4*>bz>8>-t~zs;&kTAY1JY29+cVf6$#Rss|c^&^d~?fw#71( zuJ9R94^N_G)WnMJ*Dg^YrgQ~WsDE1k<%f#Gh8=e0NDQQbmsE~{*X zehKk@Gk>f)No3(3?59dqNw?oPDBbBfW?|0^i!)j{;4n4w0Qa)BMUT7vC|c9{(yvW@ zOKCCSS`t8u7&yB1#&Y$p8o<8@&rtRy?e;mP#-l-{Rx>Glewtf5(0{Ir2TlzN8k{p| z4vK&uDt#=)sQ2$s5ObXQ<$D%z`YZa!LLKvj)3K*FY3>E%WuyoAqsdP|2mAW^ZuB|9 zA6>+CGq3c2I+TE4P2VI>KlQfC)}%1cPcOFMR1kLn=^mT_&|Xuzr0Rw-X2ZC zg03`Q!cYD`Y z_7^D<5MxRqqD^;n!mMhqtfnK$`_=x)*3-cd4bEnRaW=0`i5liRei~n#SFmue4N3D( z^T7mzOW(~7slBf52$fWlJuJyv3=kIbec>|SPpSQ5lQ%3C1}5YGPv0z*w-;IblNwc*P(bbb<0r)^8XK(I#e{Hcn~IqZA&@+cx0F z7u(I`3sHU=4U3BMZZ#xj8%xwSKZg&G@A(U4VEI;RS0Hx1V@u-+RAg!h%V5)6n0bPZRN%g{IBf3&?RBEoa0}9F57fY9gVhC_n zLssD_t*s{Hkn1Q;Fqi6@HGJ-Z9CBK}uyXUT+lIVO^Va?%PTjCM+~Pt4YJ{?7t0#Az z3bYHO-nl{o-MBnE>l(8@XdYmv4yS%R<^!b!RjSASQ7N!f#ry;Vzbcw%ELX%dD$(~k zq`f}MVfs)LzoDcABdqPP8>W||wzO9%#KfL;@G&?_6r&R%6B{^$ToA9-NAnly{<6cd zOb$lio)>Q|`vc=0g>#Je7$qsq=3P+q#0)eStHpF%x-qD40D>f2zsgudb1A5p1+?jK zAlUDBEM+V0!SoKf4mUnNzwpc^9CFOag6U?L6jTDv4iNC_Vdo z0}EskG%Fc04-P=JzFM|5vFyGuSD1YohmR~NpqrgytT|V5k=EqpZX)WEBnbnl%G33-nVloqjH$)$I^6ZFPwIpE=_Ydx>m5 zm~ZPPe%o9p^PU(HgZD%R<_2VR6c^tW>>7WbtkyVZGg*%HvYrT}Oi?a}7fi1~Zo=`t ztg55H^=0grn6&TWsFa>jVj#y&9AN`JWHh>GCv#|j+D0-m&n~hzg6jOT;d2L^>{Q^= zzJ#q4PO~pH>pOdOCOH>>uKSdpK*eI$<7ZLFd0josAtk=-$;y2RgFgC6C32D7-wlWZ zT@CUm*Cdu6x5g{DuCHN`9I}L62se1j>cTHmEst3x75}np;#gcA``niAlI7xRNRLR% z8?yk2)042(nqbeBtQApa)C@l1URY|MH%a6&PbqU)_PYq&nyPnU4vu<+gpFwhZ0A8{ z)0dvPL}9bs^BMYd`P>vTs3|t+s0voxc77rMN30fSlWzHgQS&*}EW#?}yb&7u<_%P? z*B%$!9z=jT3a6g5fc$67xu{}~RU8kGMHqE)_inDbZl_cVNe{#ziAj0XVq0%EfK5{j zPBfNX2a~S8HHenJ8{7e#*O%}ZP|1w9DQK0G8l>rr8`ZOs$$jJAD%E;)9ddiu*%N{d zx#;*}N0;3d0*(*vvQVTp`+m*T?E~E+fo~Lsnnih2oX!%M_f0_7t1tR?K0z8=n_3uT1H!h)AZI zv<@EHU{v$Gdi=SN#NplsHHMP6q7jjj^_$ibLk>2b5+fw7Vk7aOcJ0x}N0zMnJ9UYz zr=l#tKWm=&cTD?baa{sqkSTYWLGZ`_{d9LH+Y!`zE^fB()A4_P^a6eaCMMqw-v*Vm zjKLq}TY!I{J#rgVe4C|yJ4&!6Kh#ajB^Avu6bGXPVLue#8rW>TSB$}VBrQZfW7vLM z-A%h=lW;S}begHWAzIY$BN6=9BH-+8IbXDz~netG@4RsW=ALMM7JX&c96 z)ot}F+s86ntbpg+$Nk%YZwCVq;ZoyXMYE+_oSnLf{1@Ugr(7|ii# z*2j&iL|dEMY#0M4CKU|^8B{pGsc`{qxx+g!C-=P(y=TzbKZ*Fqg0YUzk(M>MS{Y%fw zKvGrb<0!!#N|=yk8i{VvEt4`m>~i4pcH7-DwcJKqy7?d~%V*P>w%R9CKerXuq&6(~ikY-f6;Bhi+ zbd+^N5k9~gc&wJsg<631sVVc?2DaQl^CiJ!u*`}&#EgDNp60kco@!Z2aR$S^0i}8p z|Lr7J12P*5Hkwd|30b2}O!yA9D4+GXaqOncdN}{3*Lna2wc6*p!!>KX_n#3aH5>gY zo!&iMssVS)zng~FsXZ6p?TP!bSo%0-u+I*`SD9Z&WUF%-;I<6ma$Ca}Z@OrAPoU^3 z-{^2%xV+zgh~-EB+;z%nX3Mh*2O=DLO=A?|BWF}fth&i!lf%M$K!DM_8$Nc94L&(H z9*<{;2;Y(^jo@+;5KD@sP9Yz+3#2WS&O~j@O#Fx>5uN|pWl-QaB8CLSn0v6j_;gZy z;by4HM^*T#jq6jY7ImfchpIARHog2NwNN`1opL@lJ@4KbZFr3oC5HacU5n;(q$oWj zs*2!FrA}LHbX4RJ<*@)cRl1N&hi8w62V956Rlt}H(1r$FFSo672C>%=1Ts}#-hj(wsc$CC4WTS3Cs zUM+|VD~SHwT&|BM6K5Cv&1dpP*|&rysp2d~G}xEhe{Q_%wxc+BHLfsapa!D?feP(} z@P!6mr#=7YQ#eh#R4@9TGesyM28vIz;+*txB{CrEyQZWw7im*qQ>&<;{1KwWq<=6yN1Z=j7(>pnAx`&kmzoTvkQUipj7Es|a)0>AzAE zS%rHw);37&ZYutIU6&~+(?DZ zWOsHLEY~%2)?P6!jYL0_91hCnCdWYz?lkAdKiSla|7C}rINe+a2$N&Dt7;qwc&Xv0 z%mO^Y_Ol*6dv)szCvbEC31ks|ZZ#M()*>v~`kjtT-K&;WGXIZ=Hwz6Z%bXPI#*|l( zDJvR3d9Q)E|NeOO};YWdv>YW1EV-AQBg67Kan zlD9tRg)=R|tD?7iL7o)Y_=8`e&r?F3HqV!(&n;EGFd=`DVqC5F41JnhUEvF|BVE(Q zNqK{fh+!Sd`bo}?Ge7}xY*H3v@r3xMFdLT7wx~o`UH9YHNABuf03t z2>$T@lN$*jw>JjOOKIcecu3rCV#=lJ%cC`;LuuIQdpxe8fToR#Nt)30;~{MT*@M*% zN@Uk4>nFO*xUI*t9>v0f4~6G@hOT}@V4xjrEml|FH{j1H_w{huF~U;JQY)jLW4E=P zGHnKudg-x&h&siX2uzc@o2%f`;8O4!>gziF5oq!3(*_Onc(W^!u@%3INW{9f>b9+* zn+porI@$p0^N;LJzN7-2?$&PR7fTOspMc(Pc=Yvb<+L|He3BUBlMePY`omTV|LN7` zLu-LEVESluMX;>9#Nk*nVJc=dUJ5lg{oHO2;-VS}>)_%be7y znVO`8NY@6Dd}>oH%(W|PDj(6`H8gjy+`qjxE&hZgTgri}F9|3YA37=t6d8weTje`; z7%E-NjZt9#tw#pZiw{(`fS6Rs1Uk2O%8h%zn1_kTNCjuCL8;$(%An)A)8XT5$$=YA z+^9aim@)!!dXw86wekv4D|snsB>?l9B8^SIt>zb~$S+fHwt+ zlfYBZ4LPw5A(vp%0(!eKIdE?d~f?w{RNX zof7?Wdev#gZPodHi7;;L9v;lv-~t4V?7_TYsJB}vwqP{3`39O$7ta4h*Ly%y;m7~O zRz|LsWD|u@NaEV#RyHA$%#h8s_m->7LX=%*X7=W~+3VV5kL%idubz+Z@BcjKcb?}w zr<`y&r}G)__v`(7zuvD8esR2Usv&XHcZqY=Bw@~ugMpVj`uj!8(c?!-B~50+XSb{P zp*3CxqXJ=#bW)i|S6a^igU$wv^|G zR!iNm5_TxpVHM1n>gUQvqu;H)*$X8$>*s*IFLBz~A8|3xQ{E8ctP33kr6o9pP6typ zp4GL0E#aVAd!?kYWYhlgk)^01NiVR8QTU}ZGHo!b#j`D*I;G5h!cjV{&Bc=@-@?Sl zz-cG9sL>~~%$@9U3h%mW%=rgOoA$a6L(lJ*Ra!gOY?TXpX)KcZp6#+=(1TFr z6Z?b6kEJrjet0?9tF=PKIP~{eSf<80wVpMo?K$3MDGh$9(20xd&HYv(!0I~3;mOq0?!tv5ehl6A*8r4(I%+_c9_%wW0I-AYg zdwZMR(Zy^F1!Qai9o8U^%NTREnZ$C&py`iUa`vzO;k+5Vn+&^WbcFO^XcqxxAv9w`6$<(@N~^v8|HWS`7K|b?gT-f>f8n)5v{y) zH7D;Ec*GHS?s0e6iy}D&nT{kj;od_E=VY^1{=@02aXRGtkdQThfUc>%D!$EsZaTxM zEovZ{Fn%U(vSWoHTJuX~zO$Wy5F2m_v`-1axNJ+=Q=>_|V-QW(Mrq&l*gQP4Z@^iY34RbY-bLB@hY<lognl!bh7gM>}{ovd+&sq z>-%$Z9#iu(r=l_l%H{S;FDQij3*;IpeLGEt3voG z5#+7EoABpvY7FVJa^Vaa(daIpX{x=SBj-W0AcbdDXi^i7(iVsR7Y!EIJK)#RKmbGo zK!!pH_HZ>zL4p@z5Ig?<4@Z8RJn*5kCxQ;>?5$rKw}kRCjq=b#Sd6S**9%d$8!)p) z{+`O1*cOu$Sn#j$f~An(Xf~3Y+dJHN3v?;V;epP3ujn`^v#Pg0S-z2|(--*wG(XkV z^)swE)z#dnmxp(~V(gp3cH{HB>_znp_RtM3^DkW1EjWtNi+3g$u_EwWD zg(ZI}afZYoiBp{3;-_rSPBY4|3l)AwhVO#w@3mzZKL(_H{BqsR`R+S@qK!*s90wdG zFYt97a)LWIBslPIqTLfTULep>`eC* zd903z*6TA#4IL)tLsbc_UkO-e{1K@I#>Xn5zlt*L`g4A+d7s2*2yq3Sy^EKSs#YbL z%MPjMRWdPTx8nH!9$S#eIxKVPAp{v-jqV`%hsKQ3kqj4OFInrwaWc*i2A!F{2`YJi zNfa;+=Y-G++N>e_)VOr$yu^r&zm#M~k&F7q7Li<8WQ#7q(X^LA8kcx*G=ok+IBe3w zR$$!e-fqyR8OcA{zM5<5^9ge82tH{LS?UhRb`f12UvE-)VW6m?}_Z(&TgPU=gdwpl&f=^U#@ek2$D!$})H ziVHZN{)gkg1<{;;cpRUL%#ClD&wWM)64pGULI3?+_g1UI_XfJjdu$C!(jyZ~7{P=* z33toNnHxGXcl;9-ftxvxPTUT&FqMOQ0R&Jq=lbMVoKxvd5TQQ~%$l#6^IyMLs_C4gg7%U=r1w2m7 z`e1WEs(N`gMMD%@G)a08!c5{hhZnG?^QLX%Z!~XzpJW2@B_!6;aw}Q=^-WuT?0}Y#CB|spCBp02JL^JIJ;5wG z7^dDBU9Cgbi6zbYZg}=_8sudAnJZNteeN>N!9FbTERnfDP$Q0+{d4|gQ{*6gajJpWrr^m> zxZJ@bZRb4Qo#tcb(kbep1U`$gJp#HOoBY5zh`K1)wA)u6{MeYb{-HcZ<*TSFR&#vq)7^2Wz}?xvA~x zNln$ONbWbHt=97O8MGymXII+~Y=Q5c__=XlFu`Lzg=B>3@1+R#n-7x3>_R_v<`t%7 zVAEOq6EZ1@*>xkMKrYMv^fBu#wYfr52rX?Ow^>0 z`S#h2t|y9I{Q(J_Xr5`H^|b5EFFp070aCrsuZ(!!j)d>diT(_w$fJ~6GA52ta_j<^H z-YuP*=Z^jIU!ZTXk1mgMiDiC2vMiv>eODR!C~`)uoL51JA;{-l^jJ>2oqZfSAxki~ zwY~c}kEc}agQ&Q;6PhduhI?@Z?8@hrM(R`YHt%pQ1DZVMh#6r2mH2>l0$59cu8@&r zfcvA8M5KTqJp?Q$9Wk9yNKT>t#gzif^LI|3QXXF5stO}Np)!Is+E^7FQ)7^Sgd~nZ z^FU(d9fIz1)hGq?1k*}U4)fczIJ&gZAfgy8#JP#%f)~sWb*%7qpYd8kr7+6X<%ekV z)^4>!miLUGVV=x0eIdQca*Kx_8$vY8%g;zeA*Rpg05QTvd2PemLbc)@GNmImvplNi zP8Iwq+QQ#{I7PvwGUY{9?L=@6L}C-oLPU{}7_|Mpn#s&@#J97ZCMxq2kvoR3wYz)U z~Ou*V9ozysXjHEc9R}D z#B_Mz1|UHR*XwAFo!qoUSx<-Wt2v5SUiG03yGR$Jz@Q;2)Yk22DEiza`7w&Dnxep)mAPa- z{M*^q`0iJY4~Bi*mqa&um-dr@2FS6uy~VYbMMzvdHTWbRzrDtfHZ!gN6vBjjuL=J- zWo?(lqMYou&lvmNP+yGLIrcu=7p6X;8;4?w1Y#u{r>Qqu|4W1mGdhO(;qhGy7>o(# zN%{1dzk53JD?&po?LZQmjQ_hDJNuN?%rnZWB_f+Uo>$!!EtTDu5UGv8pOVH-$_qTm z^|04nTr=V0q?WVcBSVqSXq-LsN35>%HuLX`og1ozLa5TKOz~~uTk~_@<5PAazOsAo z9=+~p%rh7K{^fu(!KzP773k+v6oV{_St6|vir#MBtLI^x|9|TbmYl;-@#G(l56&Qi z+FfHoV=x%!o>Jfbo_X-R=!bi#DyKi(E;xctz!@40M?5JaLGPQMW#P%M+zHO9N30qB z)f6(?sq>}$D}Bf#F^^)BFh^w;{Lbm_b5^MIB9HKhvb5h|0*=JQ^Fs0*Y-qd6aBcqM`nd50L`_0=R zGDGNyX@V@=tIVmtyG7#8C9gehdViLZYW8@^5!q!9syFnR2_J`v(4pT97@*Wr4zi;0 z;d8MTJqsK+4fy{=6`D`2|8wT={KNU+uR<6zY%FL7!ntYr)>glBf1lR!^+I=oc{S{a zIOwAhf@hRVd^v74fk&O+9wfQ<=ZvbC7Z{4q?<&gLx~TUO&X`-l=ZAN*P(6Pi<%=Ii z3U5qw2O}h;j)|jB@mU1BGAq0DOT5dEzsi&HNnqfce7laVD=ssyTb+(5{O8AZw%hkV zQ>Y~hJVd4=pl1?K@tb`gNiDf^9C32}$FkzyUvUv(1}j;fhAuZdGrZnX0Pv>Qd0s*U5t zoVgIE2IgqXaI*pH`qFO^x#`sF{(?f+>T$zl694PNm_aKt7lW762{}KH(ce@RdASo( z6tllxq#0Ow4IvA)d70w!D}6jIGP)nEef5u+yuuF<#`)hd8#iD;7edHO6OekWZZ~Ho zXa)HO0du9!_Cs}&{nDa`7el!zJI=AH$9-v)kqccd1mk7+!Q7Ym`jnb41A99nkJ`KMvx1KJD*2;?6X)Tvlx`lcatjD?X*W!|K&NR z_g8)K7QySGU!yWYrW_Pm zTeZ#8b7XmZDivcW?l7iaQx2i$z^xRi_4ZbhxcBB0OMz7B zGhB;6y}^2hks5}g@m)+R;^EIK;AIZPMTlNk}IL@xuW%HKfiTwKmGfr*E7vZ?fbWl{HgB6)$bU#2P6Xd zAUZy-`F{r5Gqu(?4>0>qU;g1#JwEWW+KbBlbN zKw-jZG*@;=i&1DFS87PFyzoV;55vbf&hj{{|7U};MTcNCCeBs)A5NRyKOEdTfe16ATrw!S;x!K?I zeh=z_N=SYZxNNqYU2ix)F}Z@)pHIjeTxqb6A8-)AEqzvQ^H zogS*j7DPEv&*Ax0^w~jG#8npb@$n4f9O6mda`=(a>{#;~Kj!Y<6$8?rSu-|$6oZn3 zBvvV3dm7GY2dZW$L&+q+kQN1bKCJzy2Rgu-<)w&&H=Bh+mDQ|#O^sfNW(5p~dLA|3 z_ZG{7?2ys%SK`|qSxt~493rCO>td2k*zFNJeA4euWzhay+)5o(t* zX0^p-YgMZcFGA4&aEPJue8%5Tw^)U zl=d&ZY1YTx2;q66k=Yl!)1&h!1bIR-)L8K4o!?$2Rn~TDm{h+^3p%GIt$lxrlc?_s zwG?sZ?1r@A1Ah1!KF`s$38{tI}<(J+|7iP=e zXwm`XXyT)j9_AyTfL?}I9oWZrjjIB=;DmMb-@tVwPV1T@M$xR(TC+a%otr|IGm9Euec7DI$)TRL#9=xkPWy} zocQ?&68-=PBp^c5;F}uynBr$*G-$qm@e_;A{CU{h-%~)dsPKB8Jo*$0z3;Xj{KH1= zCGJd8Uh|5{k~@1XMG@Mk*luUuCj{rgAh)N71JtE{9_{hfehP)qC>wDx`G=#dp6ofe zBreH!`h4VV9QEYxG7Xh$=`?AE3%TuJEv??)+Wec+kzQ6U(R3fio!_RPN}WGRZ_+qx z-Ja@66yQD#g(M1C0Zcfrrgk6>gA;W@y>3qa_Dy^_iu%lPlAq0uZwsb56M`_i*$%+c^(@ofCiI;<0I_;bD8LyHz`UNMwT!uZ^ zb^Jm}ctll6==G?%3!gHX8kG^+8oT&)pV7sPZ#+F^6~RC!En*KhFO-t<)+k12naeq~ zGzUVuf0ceKV|gaPx}=W#wcEw$t8&7_KJ2?Xi?&&!>y(;sRq*x--}w5d$No137!I8N5gfy1CC6#a~oAY}%n3(g!TW8h6XU)Pm7+r1cH;Hf;wG%AU(>f*QSkyv`^4qx{~fvHER(pz3#4+2EHogMOEnz!%uM@Q!aaTe!zb# z@5RoMov8LwoqC>csabpK4KUUMh%n<&Vk^o|qHX zRMqPG%pbJy|2RA*sbLYfE=w~U!{U?^e=9vr-^8_`~xG zLIC-nU{j!j&n7VmV@pR{Wgn}uJ_Ju4I%HNDm|FTj3ETfz)rVdasUW5VO)dsozA3l< z`HenttD`mi#V zQA~x1e5|Wrm$$N8!dh4NjXOF=f5q~ZW*XG{e4x(n5zjGB-99&l{P5?F<3F%=)bxnCYvn1><8?3sEVr$rCXjav7{Hzs~@j} z7UI#f8feqHRllMbU`TKS{ik}#L?1Y((%IHfJ$leMiJnsgrG>6cQzy3D;mFN1?Pi{~94juw5 z>P>Z)2q@kM!c%Vie`(8Ql=oCJ<9VN_bTkwvQ;aK}U#N4(1G&^u4d!`!-e3DJgMdxK zkd=wsM1fxVuJJ$Z9Lu)9#|Jk%x3;_oGw9#*VR?cH8G?zo-Cmx8sSOxXsu_r(m()!Q{|auulpu zBf(%FX5B|ba}cE0u=&cSy9=o`g2Jxyo0M;aqL!~$U<%Rm$x=i z(YY?Q$r9^M^QZ)zI$S<=nN5N@Kdv8M{n9O7#rZsQQcueCWe+7wb`cQ%%nSl0O#w!`d%KU6Otob3}Yt#hFr3#_E)hnTvorfDvy2e zW+8G(M#u+)wPcjGFca`%ZY<7>X++j0Yg; zHEJTbMos`Q)o5SeC*vnC0}2R;=}KKqE|1@pr^?zczC2mN#J3-`_Y$Ce_*;A@bp2`R#+S zvf)E-R-OrZ4q{M+s2&%nG_JDfG5t$}pYGOq6+wsOJ{W!czmKDs>SEnlpKZyLv$)hq zVB+tY!+Ka%x|7hgw9VDE4yaY>Xb;g8*K|E1*B>stK$V|1!H*PwGVVL|XNza6vIOnH z8RZzusbGa2A`D_6yDy3)c1D!5MV)(&}~hE@M`7U0$mOC8x*_^}P}htM`ku zdl*cpUoC@7fO0vN$6yIRNgiWYnv9~4j68q)r1`vFRu2~X_WqDqS6LBm@|x*z->?2Ewuh&dU-xPZGsRRnadk>_smd1SMz@23Sn+}pqFz?mxI z#?cV6+H??j+J2<$g+F-Kx;b+OgM1S-Ye!$f%{sHOMLVHtf^rNHI%tT19k@q9Yew1w zl6TE(%FqWawXgLK-`EV>pgF9?{u~tfGJ4i48H=ta<9?wRFb?kgcGyYoWR@IAIy#{K zB+Y7h<-+)sm2qVub7Mv#b^6A)QakLOpEKvm2G7kKFiP=11Do>Btn+G8Mea^y-0O~O zu~cd?;jk>^j_a~?`YyXz^9N?%;~%)kf>l)*m%o{9Yta`?@tx9|oi5jaj;DCYK3bIo zLGlCZrZ4K^DOj?&@83qPWc}l-THl{aqlP27_I0~3Hss2K!3ust+9 z8h8LA;IrY)>EP3R>emO^>J}j{ZWL|2MPDK<9w7{uDHQJ^Tlu`<#|uf$8SBgd3t1s% zWUt~~^q7vk`1eb`Z5<|)l~dxhxmD~-5p*VTG8ekj4*DHb~Y&R%nI=kz;sIn*gWq{Y$+S);3B zrw(#aQPwk5NCj;|WJ-T70L|!o_DA>uxABet??eQ)=Nisk$2p}AV*z?%TD+25>F+8C z@j*j4@6D=Pt5T{lV{`Ajazbc0J}Hrs`=IpHUxkg-({StYMtMkra^IUC=+)A_ga+HS zu?*(PwQ4v%Iv0Z_XC{1|v~kEjJ!N<=0pgTkTGQfUapB@F`7_kX1=goC^E;kOU+aC< z8KN=)^{`5AxPgL&NU)^xie_~+a&UWIlrVwJFU`w`vB^~SWQUAMtcQO2===n<{#b(f zD8Y0hxu6*u7I7*UTs$_kHC&s3lZ%%xV_$-@(J00G%O^<1uEHJ51!4CEM}?-l5B-JNZzZFGuVb_}Gj@dqlX?>Sp0= z#v+PgVo}0TgO~ezcSx6|il|Dqes($P&5_7r$icy$!yqvMuJL%HqGp!hH(maE$?m_r zHZx5v_|NxTz8x|p`w@BeVdF(zT6 zpZLa(*8%Lm4g)A#*n%0YcyC;93Eg3kGMi?nx~MvoLR77%^vz#L&2;^vK`)TZIZzfS%jUG5&cBmhztc_*jEi}*JqYEE;bR)=vL-6nTc^ENHR`6Ium z)9{90U~z#2ek36n`FV1zl4wF~DPX%V@NPahnGy@o0?>mZak56&MYNBfAdV|P3|BWk zADcK{fmymrei8H9KT2r$k(LO%FDL-!)@QfX^C3*ZD~ZvaZ( zE=_a6M3wB2sE{rlE$#%lcTp1#9`2I;tCJ|B-Ww|858UK~_hO$jhZTLh^fJGfz#R@R zs4hJavtM-D?etXdGZ60{cQq7WyWT@6r4RlW;VCkEpnDN^1RQ%6-7>?T~%a&NdC-+l*anA=!u0JVW25O)=4vJ=0i)%M__^-osCs zxeQE#BMBAXE+JE9_Bllnc7)&4_+l1-mVgp~g&_L7qY!#?*>(9}d;YnaHy_^q$ghcY zuQPcirG`k_6;sH?Y&95((9F~|0%Da&lnp}lq(j8w#+Dv#^8pXN5M^6em$j|>fgWlh zs0n^nBJ{Ci;sF@kARA9?Fhmd)D*(N3*<6;T%l(4dSdv0^OIJ=U?#va@b_o2?WGwtYH~7@P`8-+PT22F*dEL~bvz1i zm6S+N=1)(O@=$T$HyQER&QB;NdNn7zL-B&JdEx)yJkU3lsVBq-1uQ;551#@9noYNl z;_-AI#N)Gl?=^m+OGXor45>BDXRGGY1-vB`dzlc^EGN-mO6MYWJQVjZbUK^zRSXP^cq$-dS6_g0%}V42k%-i-X`m_K3P>sIK6b?KkPKG z=~H&#MMgVAb^GxI)wyNqqt&YC-8=1fOzaa{@?P?C)n=}>|LsUY45tM-n{D3E8F?LV z=gR1?7-7<;N*GL-i4SapW4^MyUt)`u4PpY*5kMab8QftY&4KOu)*teT!5=L4da>AU zIceA|x%$jT3^aT!4UQ6kUH1SN|BH<f{lVBz&Klk6Fc~+C|h+$$iE7 zHm(gK%rsO&KB8>S7a#Yg5{u#)9{}Lefh8=m%ZWlodRl5}P4;70H;4ifV)s7diVx zXKwnW^uz$w#v&oHOR^aP%J%vG?pLBOxHqO6)Mj!HlM)b{22E{}z8>dtru@R&(`E^N zUzX6Y`$B+MLqG*(C|Y-okMHQMo5VXt+*YmUbl77Z?==YCL?qsR_5O^-DK^r+c(Qmq zE>BNEnq)=yUW?RcAr5oFZ%!+q3C`_x>*6+uYedX188?T9CA%e>3*zmnsN1c(r(ZGC z_)3S&YadZqRiym&a=mJpzn{)>;IiMCi{CO5UY%$<4~nd~k8uNSOY@O`o=x&b?M_`M zs(04-83#=GVb?ozd#;`|{DU%^!H$^#r62%#V2d0@0oL=q8ZQ7Fmz`xSNF_v|N|TcJ zDPE)jF>xW&Y~rm1X9vIi`i*X35kZMss~Fr5(e(-=rAM@>w8Oc%&Wb2-kvJizTZPX@ zg+e{dR{H$54-eb zxrT$zxd`N~rRv)YXO0BkPo|tH3l}$Y5gK0Ak~fk7ZC0q71;sXkQj4wsI=T@)8Bq+`%=&CkrkK(SYHSg%dN!xLmeAcScKo| z)hOZ6F(K~o;giOzj?4K`iY${+3T0HTA?h^2m8C>ly*kFISJ9tr)i&Ek$z13@0NdOd z!--pYTb&~Z;!<_~_>sNe8o%dtCR@Pam3~cpQT;^|P?hXkdmxW#H8Xmu4(RjnN8hU% z3$7WWeksPPh67Lq=m7|UtP_AF-6no}<1dRYQ9VJ92ba@-gARYN;9db-4t~mvU1pe$ z1Oz>N+*I0-uUnf97{P30J+`CS49w#DKGD5lbkj{db@v0_Z8fSCg@D;gahZ=D6wglG zyymgw`Vtsa8xs^5I*`+0q)PM2YOd1OL`{24aq(IZp{}+S$3L1LcYm?tBvFW2k_$wdfkEj0O=%)Sw)*4P#bGx##a3;xMw^RX?wWU&f zlH!rkjx;cY{?Ob0?W&5UF{(*&@0&_CH6K%!3A;J}i<1!`aj0fNdG@O^`QhO2+d>Gh z)g+-H%mL0i6d!-;qF?Y96*@J#Am7?ZklA#e{L)*t*7!o^wd(E*utx&`Km2NbU#7Q` zr2A-_!r)B(VVi+hpF5n6m_F|%XY1 zoGec55szEsBdSY&9@?|t7Ny&#n{U5&{F}uE4&P_OJ=fS0f3m!w-9$z^uV4QNI2gQI zS#U?6IzoFk&sg95?g)4(!jglL5;Xc9OMsp9X6mmXw2@JIO6c(qhXC4a!>SWZ4rd^?UdnL}Nt<0suk(VfJ>6_ZexdF@ZyX2X4B#3iLzuvD0|3JIlLJB{~u zZ3Z(ak{0D+Xil-6!)QzY&q4k!ECJ`sC6q!M__#40ruKWCP7{rI&hb394(-WqO$|-Q zcsqcT0Np^qD2ZsSkb6gZ8NFi85SqW|n~-Bs#LSlsg=4yzYT$hVEG&vjzAUL>?G%sG zG|yo_b0Bcf_|FEJwdcLZ3H&WJK!`T9-_dcr0A=V`2k-1UMNL+nNtH!&w@*)Fzem4s zSVqd5?Sc^uZ!7ow$$a6+=mJ4YQAEh`;ZC0q{u@Y24#nHx>oEx9uhcpB!K4i3@|{3n zXBc~55J)KKAD2w)0hyRk3|0|LgMmDRc_Coykkk9(L+cKe=Dx-7J2Q<8QCGB=uTBoE z>8-*^)dy_h$!N-(Wo6}#)-Syz;U&uqYZO|ax3?)=70;zCNH7=7$nY#RH*jT^yjyZE zS$ul#t8nI!06vJ_!gnn@>71x!#$HXUeGW%jxcORK#fuxzVZ45QGeUCd3U4y{h86j^ zH3Q`dhYYd}kB&6iQJi{)d1Jpn%(Xv+)}g2PJm}yAR(&Ds#g*uTV*5m$z$!S=7cfxf zLvM3#@wKIOac%3|81Q-pgn?zFgfQAChIPXHGii22cyWL=mDz4_|KU?7=~9oep@2Gp zo1)CDW>3+%O5N0Q)($Zh(P2}B*HV~$QW7B%3k3baUG{B{udg`=naZEORY$QF_?ey) z{iXX@c`O}|l-0U&%>0pXTvM7{lzf!xFzA`4xT5|bRYT&3=d-4FhLWsr&h-y2E%GFv z3|-q{MQu{xNa}qE*p53-d!tt~ELG<4mzd|^e7F1svZ(X$9h&G%Q>`EBG#Oc4!RpyY zvjRbVH61g4lw4KT)%~W->4!_@>F?L>?y~c-=R01Oo}e-&GZS={mR=-O$3X_^dIBHC z8_h6670S*pOiN&pGV%E2d>fD%{}T>D8-v&)gsA0MMtoppxX@pV*)!mb&;71zpp2L! zP4H9$$&W0{lF+R*c|DV>8}t5M>S;GRs-$r}#f^Hzay{RiB3??xUBGgs0+Y%S1|N@u z_t$REH|(B=!5bw}t6_~4hJ3Fb2j;Qwg@z{n0D>ICS>*ofbffj1)F2A}~;!3(P5fcSuBnE}5qjk&TbvTj_P zaEcdRu{{VAr#@^S-m8L_6tIkSn$mIVs?5d|bAU*4>GQOB$8 zUcf9#Ts*2{r=71K>s#HQxZ*K(lxDd;>B}@zOBTV(vY}(Z{lz^{gUTsyhsI00z(%_} zVV=IBUTFAxtR!-7?z}J6Fs79k>g((w6~K^8d60l1#9Q(8|3TEbCcVXMx>DkP;lIrM zWL1TeaN_r6xBu#mi(VN`YU>w$T+c&hsMFHqo$Zt6p8}{E(q;0A&-M0fx;SHR>zc;} z4$<=XbzR(S%#Zu26STC-V+0w*e7w8r2?GKHfB+shAh3WQR0Ym4gA6ysz+##+H9ZM5 z8dLN`SE(0Jy!VS|c#*Viu|Rq`*d7uX&;figoda5BdN;O_n^#S0+EERSF0}|t*w5+N zt2$BmT$JuSsxKP~+|zc0ekUhOA4bHm=dmbYlBjB)tpGQLNkhLX6k5Gf#|=9~vD)m{ zUa&;5>Kc~wZG?MAwOJUxu#@-fhsGrG<+RLxnpu_l#_%~?DTlW9{w#|bRpqu+2@@j_ z7|LePO?Wi*Q~2-MGNvi^G}N-t-(s3$BerpoI6_{quf3iAdhBO$&H%Mxp4xXVJ7}xe zs{UJI4U~2FMf-M#L)g+oWA7l_(5i$Az{JnpUoP4wLO>ZA3>bX~W#|ujwm#^H6QjNK zEA@2rI`-gRvBKGM#CkVEW&1lSuMf4j#i6V&&dv9R?udC7$I-(mA|W_2mBHGTle~o` zQ{dsqQ)O{U5Ss;CAvU;m|JUu z)HeW@Y2;8RILEsV-NqnrHv>ik5(+*Uq!groIUQaWTnUqr83Y9!F+DML0&aR>aQR8v zlKMW^*OOG(0(0CRb*GQ|qg{y*ae_T9(~v!_P9+ilHK#i9w-Qy|kG}GbAWZlAx%T>J z!k~jkf3J4&@sjz=@M5+uj{{t#*md*09UlZf2qC;{PX9)i-lnd^n?Gla2b6|6db1mc zKTYsHmc5Nuny>fDqK<6J8e}?c_^>j z=VcpTu6Ab){cmyO6zI2GKev0PTgrsJ^Zf^RQ*A4z@45*~XoaC<=kke=xz39*lLY(7eDHDv+&OokbUaHO zMUapDLMLF&(Mq=KDL`Lm0xUs8qwm$bgTrt{xgKf()WtPXxBF2}Fu<_~E zR@el3|5JQU2!#%5_!)^|48DaYsK;xH+JpU(>~d5RLWAon(r?Qf^E=FkNd4i4W}>ZR z$%4P#V^i*DHRjfjnz(zWk$m-FaJSftUR?({xCLZkj~F5w?8VQr<@Ceed}H4L)+7*$ zLHHD~5zx7b)amJP{qh2MJ zk|$ToW=*qx`z(pUm*w*s|4`)C!)W1W2n25m|C>u0^TTB)MO;@=&hm%;0~3ePrA zw~~W^put+_*6-eR>ZiOX*|%<;JqtZ~1rY5{8ev>~lzJR#M?Ty5hp%#h zO)?pc8>wXJq6eB{Bf&rSD3oAj^3FXvzyZW{-zFa$+l%V|9(2GcTY6ryIAW)B4Qzq@ zF7&$d51O3KW{+Px&nbIWEx(;UO>Jt{{ zXy4c~@Q^smKb-vCuzxsT(|*7TSOTsrzIsd7EL~ld^?aLXcqKjrjNrDfYOaFM5NFS* z_XhpHb8XHhYL|JzLeyUbaZRf44fRZ|%yB4nxLUw4_-s)KORCT*mtf;#KJcF-M2#v8aX}Oc*a*ynfUmrH# zlt(RfJ+T=5hZCX2A05Lhl}9H}&IH~V`@IN(_a6tVB+qsBsr}B$zVpF@G~D{w-c|=& zF}SMynI)h}abVyunoTT?z%7_xK%b6$lI4=K=Vlyh^$~a=Czb7j7Pio=MsLcBG;hbM4vj9FkeIEE!sshSmxLn-pkNvrL9ZnU2UJ2-;}A|Ff7q;1GZvz^=( zPu;s>H;l+ei+jy+4Wo;D@{bhp8UM&o)VMav$klngZdeYJ>HIB3TtxSbJKNk4z& z`FfO4#Ed>q1Nw94RQa?FsHob+O;+T#v*wc%;XtsUoK~yVdF{)ja{uto&7j_hSH4j1 zM5l$Un`@ZSg?w1X0zg$EzO^!*6KAS*HNQ9eM=$Or{=*^D73-h-4oO_|Xh0?Ntl}D@uF7ywG>?Tle_Z~#g9oi>{ow^L@#W)SCt1e9Y36Wsd ziQ=py$r0Sa?SjV3Tmh-H4Ae~a&iu#ho{PuF|8UAK6y2Xqlg$+EkDexrw}|;tALse) zE??xt`Shb>drTte$J1pb-qT)OvpgDrLxz&)D91*GAu=eY+eH>74 zgU~!J-+&6Yn~}1HUyXjNO>Vg^OT5I)GV~X~ax#?;eOHB@CwhPT#iHB4ZD@c!8mT9Q zv3*vcmf_QjkZR#g>SI-n6S81dvs@X_iWx^snfR<9d=GQ{x&Ud z)Qdqp^(^&!np|&!URh=03~~==|5eQE5JY?Nx^p{sC&~w30!1Kh+|LO~y3As3V6EQ7 zkEtb8kh>fARs0@`w$@>*`l{jQAGRJ*B#B<1li4yoTQJLuL^|i-`@nyNkenEH4@gab z!-N0BUOt(KfCSO!*<^aC`3{YOjL- zjYBjsJO-Xv_za#Xq%Uxi=XJ}|QpHoU-!nQEwJtF+;qdBU0~xxpBDq&VrtIK++l?#c zBvk{qBy7$;;>bIiWZ2x-so{_)|MMo+Lm?i)9a0^LS0VIY=1hN&wr$*~K76YUa_4_- zolGHuLcpbgccdokR@i@yPK^fa2y9iNXBVE0UK2w@O_f_?jP#pDnE^drpfSA|jyh{k*~XWzYGHlVRsHHY(lsz4qr! zukv(@Yv!1$T_mhL2KyznPj}?zUhir{Qn}~oMdKSG$xFyj@mSKTg8oy213@6J>M0=q zxqNzpU3M}K5eQ$Dx_XH`4*|o*rmzGL zk*(d+4|jqVec}&ibb@bE+Ra+2Jrs?GdE_Jjrx0(03bMUKrbHEv)yKLD9#~CFMex3) z6U~i177MP+02dZwfmZSji zijT{y_?MtI&_YD`BSv20I=1v7C>{@ImnjC5${q1N`gJ(V?ij*zuQA2Doq{^7(9cW1 z-pT{L245Z+I!qfvLa)S1<`x8Y`sWw|J*GED;;N3A8oXtL37c;lBS2@&1SgDLQ#`^! zlR~@wa1+P~2?W)uf)xSH2=Prhy--7ULO^H%%nG23L7{CN^sWx>6xKw~6K6%YlKm=u z73!6<{w>*eU$f*z^85Iacl8Ziz$xi_caveG#Qo+rdn*;Obzk5>rKLV9^ob(0L>K7|v^H*x!L20op^+X|2WeYdPrAamCXB7`==>Luz zAnrc~qBFr;=~l$IN_A*3BT-}YK?jHc<0qQwN;@dr1PTVbq~k%7OUtLr(`ZJSDCK4~ zbrnWflLt{GKntcRGR;a)rylKMs(h-Hapjj5d-kFQ&>&_f&Uf=}Mt|)A&e$K+W&Whj z_*qzPhq^F(MkOTI-ugNB85JdxT9Zl$umo45uE%^3;T0~zY5uDhS;Ft64tJElJ-U;e zEjH0ymlY0fW!*6;NF>-Tu{R}X)k`#$G2o@*)nIl!xgo@~Y)VS|thT>w4? zkUqdj5;&r6o+e8-=KTI7-u#j09RtC#Scm+KoKP7-7?7Ifa~CK#(y#SnQcmVBn5SQk zY0}aLzO=jS?aQaqsR>*Zt@RoG#puew8u~vw{0>eXF+HeHYZT%mI1Y^Yi$RtV)=a>B zOXFtPEcjo&9QpU?a-_4rE;FFI5c_=?Iq5LPkQAa4Unm+Hb}f)EFe!Pd?pB?|1__e@ z*FmlXXHd@4Oke=|{z`zkMqu;+AK5o;4Uo0bFob#HH-Vmh>9+rhSnU8V(gR}!8>je4 zq0}n+eYq3hKQOb;&ux5b0;ndwsF(AyRL)76x>Y%ExX;N7?nUsJr1@X{OBD4Dfy(`S zOWi3OtiDUG6MZkaQrJ+@ADZU=IGs8m9o%YltFCed4hwbsC)~o6*AIE05@ooAFi5h+ zq7^aHiEmy503Hir{6~-grwQ2fyF98a-ewA^jU>6%`2?ZytZzmWQOnlfdz@aRW5O;{ ze72X;+H=-*hnWZ1@+qxq7+blv%Nk z5JvJQ{9Lq<(NfuPlNpVEv0u^kzSIvM0bNgipDyh+C|(G{rF}E%GWFtLLeW*zPd(G( znqSy=jd#WGW4b!Nu1Z<7EXZ`g?q$uM&O{=uuoy?Zc=F?zB^R=WH!G4r4{jer{?&Qe zf93)+@WH=bPmYZmgK}E>D(G@!T5tY?1aRh*HV-uba4NXt=^8<29RnRlLHb8g7I%M| zcBE_oQf0phATOJk$iTEtz}$ z85k){fm*Ws_1`=?3~211~qL1yI>-612=eGANpRLNZLLhO}8|zPWN{F?fUg z9r(W>MxOlmAW+qBaiA6d*B+yehs;C7?Z;K8J?7Tddy?obq8b|mcXLVdY^ z_(0|2DhDnZNbdljs;9t8HMBu2RF>V(r=I+l!i^iSqeN*1!^)abb3$mK2GO5Rmj3zy zYXR%2iWi_62w*LM8$o4G0PXyQ$2tj|!jNNeb07MGJK+z6#zL zzFgDdN0zq4-mGM>`Ho2k23}(NHUCxpC++dN)BSwnrCE@3hjQ;mkd$n!td~FO2mfY} zu#2S(DF_XISrfIjJmoaK>66jxWo}0e2(@Skxze-Lw3NR@I0~Rn;YEGVRJe^u06#<^VTO7k0)++COtQqi*XgGm>}NduA2a_9k`WkRzN;S zMg`E_syf~wdW|BlDpAOH9FvU^>9LI;DTzc;`BRqZ6)F1bZh`qc!%81e4LDJ|yk1!E z0Z-~x#T}d6=hsyx#pymXB1ugZamg<%qyYJ*dI&68YZ9J3_lLZzi0%FoO1weh`IC*u^g;^ z4MZdFIvF?(5fgkaEYSERsCW+UV2W=2KM8FG|A^WlM*+2UbOkwr+PukJnD!?P`^%p+ z{n#d!Wmgsx?Gij%{avAMV_Q+(4Kft&{Y)TX;FfpCrw+e_nYsI-5D8g91n@nv{3t`Z zJ>>cHTXPQWe{Q@!2X7nDY(2I-515anEN}-IExoTN=LU=lL8dKL@|xGdkZfy#hUTP% zPv(Jt-@$Dc3ALsUW~Z40!2>$wjAhOC9A(uKNBOdIXs(o6m_M<73SkWQp%6b+Hg?G| zT0go1v=9GwhuV%x2ri4$=F7BNs>DYuf&d9Z97d>>1H1YV@|TNLh&r0Je}zKWTEI)X zAyO>tq}+#gE;B_-)tqltuG?eLcZJNkQenNma393akS`$1@B#W)qi%YzF+GuXFG(F47O5DpR8%Nhib;F!4zRv>NADUf=*OO(Dyk7(FDW}v1ZBq3Uvv6 zSO_}8+YNdx+@P5O%qlb~3iR3tKn@X9mNT)LPN0sx45Y{*6dzITE^rvf%{TR}X*Pbk ze_yC;106FimVv*^^arBS)lb(hiMR1V9#h0O`H12YD6t<0C)X~*=(XRYTgc1227F9U z%*g+Et=9?fu!f!2bA>UO6BGkt19O?z|5b{@5S$S0C7%DT?IBU@b7F!ka>H1<+C|g<=b*Ch zUK?A{Um}a>N;W*(+p@>eg>p=9AJsJre;oCnj~D}CmGA{=!gkED5vFcygRJ<4GuW@q z;!qF(T!l{`Ub&D*y)3Z?^%v%%dQd@w1({`_+5l)D5`Jj1!9aEdpgt{U37-8WXMJh zpD9_^7bnTD|30m`BG@xm88@|!hGkjeV(;wfOh2r}j~f-6s)qji=x zR*Oa1&1bM07Rs+ebaE1x8?V(3d)ZQTlYseJuTZ{D^oIs|8kafGG&t* z{#T*Hdy-~LFIazF9O#MjI(^E1qy5+}HTD-QwcZgyQRB6Go)^oYFUtPOpJ?VZbY?7_yRA#l8c+y z(}trY0gFQUJ70h6Pt#&mv7^azlz7^~59WT8t2uGV7&|C%OD5e0Lx|bj(Tmrgd392g zTJ0+cLS9$I=O6r$YS7_x5U5W>YQ9g^pA5@~DShTzcisbB3C1CBS})fGd|M{xqwek3Az6LFVRzDA9<9uC=JdWi-~3w zez~ulobWH4{n1dw9OaX!zeK5yYvv9IG^ILs{|iRA%^h|xD)53$do*9Y2S}&SX|ln??ozl z(VsIGk>oaeO#`xltg~peJrG+*1GPh9h$8e4TzLJIMHJ?!Fv6s)7@gti z*ZUt1#AOkE>qnS`ovt0f6IUTn$!2mf`VKUg?28}JWcu23#KA+Wcl&Q`yPAi}5j`;^ zcZwksc1aKUlw=QEmWC)#4t7yP9)ao&O%S8bmoo3`0bGTD#p_R3(3M|9nYMZ|X;1Ai zoerxvrnGhK(a8v5B?J3(=I>a^_^ykFpSy8$yL^(7c>!NO?+t#p+bw$2kO=yrf}hq! zoXgq5iF9Oey42v2v}PS*pAruiA5Dc z0yJU)sMx2eaaxz2omtF_=Jpm=OJL$H1dP$ZY)(=G?GmvkTP*ts*ASCO6gY$G zE#*RwS~jBlC#q{1Z8rv<`rCVerqCl#nV-){-Bx(ker~>JZDoT)CeypRJ7B%R7+% zC1MZb{AsY3Z=;tTW8OVDo9Rc`BL4>5#sd=r7hdzbE+W$-N8YJI4co^PGlWY`Yn3$~#Se6HhHSC6HCU#_*?fe4u6C%?lue@N|K90%4~U33{PLq2S0EP-P={4kUfONTUR*pk#Ykz#e2y)`*{cz zQpxQwSkMWGN!K8O_eWUEVrvA-vVbfH8zauoWHL|=e9OH-iAPukKQ<&LinuntnQggGR?jzmnyfEM8tLiWhb@0jP#$XvuUvi8 z6>zLXh#P;2Ha?Wo4}W4<|1)LOEW3INch2-pd!T!v4-``(y4iu5?-a^SWz1-=ZN9Ji4`xdTMy@xm6hV1Q@14~8X>(7m74LtT^0OfqbhH*j2r1-4 zHp}UJzN4`(kLHU7Eg%`;%tV==W-P}<^SqAaR2uo}mNAWyd*9O*b6Ozf!H;0HZW>Xi zbk8zt-{}wwf7OC6!l%Wr#XTZ@Z%X3s^~X1lzP1PRp>9-qrz>yR#%uEIS`+Om@&n_Q zYvMoHD!W=51w|p0@!Wv9B8*_ky-3O3`ZTWGYjj%RPDXh1xgp!@?w7+ehwIKf-yZk9 zrG^BAnwcnOel;}o>US|Z?hj4op)EL@A6DD(=4^a`6OE79P8Vv2-TjmFt78P$;K!gq z{KxS^bc`M|9QbeOB0TGey6()P*`s;Gq z!9P|UVME{U>Q^sd9N|C)@jEq_Xu;vG+lFRrdTc@C9`@G7c)ya*YX z-pb8+i8+%HLSe48@GYV2{k6hAaUz|aRtK6z91;{Nl&j`!*xralclE!=4|ZM7bYSc3 zMH5d4%C4zD6-}vQju*J^uu+?=!t&&P$9?}NPq$FYAY^a$k3(QfxqPO5@i!dy2xl#* zDP*6O@PKBCn>Pf!Eij8#L314GwCu)Mugsa;@dhA320a(`8f`chw!%`hMr_`+f3hP_ zmkKRg1bcl+4m4>Ha$SYp@XNKr0XRHonv8vnT>FXDmqGR4mq?pwQdXxPqZqLqTx|L; zIiUee$GjFRy-J@7?%3W&$93tCKCbG(XQ|lwG_iW(*RvVY-_)?&%G;B)UNIcn1E=>r z^3;X&2H?XA=7OwmGOnAQGojT1k^51IjjC$(apo-DV5}$n>GH5n_JPiWC1lx1Y&o?> z;Dmjf$t=KkIa7^;%~3L`p}#hs-(Y=Ud=Hx{fn!-5rcD0&)7a+ai|h0L@n)1g<9_G9 z%1v2+iGqqu+FM#&PHh2ZF4J1|F>^=kPIyDGn4cNDZfO>`fb}-q(*f3nF_dGqTN4A{FE>u!bQe+6( zjM!ZOiv?gCDmn$loXN8>g4USIGoXbVR>je~#p}i=`+?> z`4(X;=k@v~OpCtxYdzYp=mh85_1##0eR3|IIH2QBS35xF?#~^qYmGMSqz^t8WFqB= z?gT(nKyz~5H-^iPn#XEm0vWy<9|&v@xCYuN^p-RBll$>tEnUadW)wXV>^s*=L~4E; zqb2<-ORR9^Fita6QliE8r)8@6j*GazBc3KMR_#B9rQoyp;(^`b*OtAF0gKfa_XQIy zdp#pHTNtY*w3*C^@0roUp- z8vUKWM4cqs)AbY$2eY5hj%N$;{6>KLg|l*Y!=}IEKk)xyl{o`h~iG8o1ANZZwX5JV$RP z8sEG+&1v;;>vfUaU!n*7gp7c$N?OdcBNyPs2y zjgxA?*-txu_*SF^BX-Y9;%^*%F=@2c=aAL7B)6GkIqDogEUx9qJhNs7ZmhJcRie9% z0qyzvX=)lv>#M%WY5uwI^t@CF*bgB_Q)fJVtJ8d*k(TiZ>u+pim0HJmyhHmb+e>p#+;8W%W5f6^`j#TbHXHkwDEP;j_UtPK_szGG!BxsB z5G^uM!09o)ju8J0I9XIkYwj)-fbsYC&wUn9>C_JT@OfgHmDf;D)lV{cOH^9fB+~d{KNLxyk zAPm9xJ>4P!*-8ue#|ia3`6W?sj`o#K^)~WYZyu@YX*#~yr+dzGkc9VWj}ySn3S0Hr z(d?BsUXp&4H4Q$P`~A34n1F1#6TjeENP|-jv+5$(=265_D??HXGcNjzIo2r0loM`* zx~HeR-=$kis%<(r`NQ2+Ii>8S?vf33*I=~Pn)`azSXfrTHfw*f5G*K8p56krHg{BV zCKR}Io^c1`qeD_2!k}dr z9>QxYv$z5ssVdf~7~J5TTdMKt#M~gflsQxF_SP@d7+H$Vav;Au;;_>x=IN~5%^C-Z zwUfBr3mmDXrE<>JxMDw?s4M0nc{5EHU{J6(Bi|y#=%Ox@8rhgSUBsOaMPdtT-v^dW zJB;1k**R$;+g!l*e+H|_814s*leE+EXNdKa=9vU!Ar->nl@iVMd)}uk1A*5+U1L(o z-V=CsP8Jf3^9Lp{PYK+Kv0t#kxJ{t8VA*qAJUf-C7n$zycV$x;+IabwsN{8L%0s`> zgQH_#j4Jrpu<0U(r1~^sR1^&XO)8^LloKj9;>#BT17f901ot)O>Ei`x`~B`l;CZs3 zSx5Y`^u9O!hf$%o4|&Der{5Gekm@>IIZ;0sazs$=Z3!Ufb%@#D)-j0>yc!=#X14F= z>XBLVns=)H6MH8%G35TRte#od^f>USb!-=k1bSvLUvYHHWy)>Clmfd4iBhkiD)~*t zSrhq<8DI++nKz@le!AlY=*z7BRGxm=Ui_M|QpKXXC8<20x6csT%VvgpyK=-t^|eYo z=9UbJV5ndSxf0|0KOquYQK~aEKACZA$uQECt$6PQ{c4wr@c@L*XRkekIa>_e`~1Oj z&;h=|5g05e=qMPBaDtKsQ6WT}iKlq+&$ijF5@@p`hUW3wuH5JpioCesp-%vy8T$I| zxs7__vpeZL83oEt>}??oHruQ65BBDFpFSnjZM=jRk=EXHPiftAy>eI(O)8yk-HOvg%2>Pd#>^-+hi?qswZ1BV`Vn|I<;k$#dSb>(MoR27 zbz?!jZ;F<-;RALZ^|kIQ+#CcxuFxG(SUBRp0X^=#88r=mv3uF8_tve&sI zY!70vxOD4{XGG7J1g*6^Yund1hxJn3f z!ml0II|MI75<>@kfmAgeCnbSxe^hs76^f7ymgpkS*%YJwQumi=@c57L+ua(w=&L4nF2Ef>mRT@qx07^Yf4r_ ziISCFja$>N1G4byhYCxxSq^pSq;h2 zFRlJ1LJmc9d=oiL$kcmgXstz&!GB8(nAFE0<5N~x4yL?MQ7}_ybk|e+&Y0?3Q(g`8 zmV@S2Vh~_K#gWe0Ul1r!7!uH?&DoH?MIu3MHu4?AR2@ma_)8a2EG3RNMo6c``e5s_ zN_lzb%(^`vt7#!!qmD%p-;9ox;=Ndh(}Nrg@{U5rt9V9Ev}&9_9-bC4i6GX6mVoa{ zLVxk#qL=IE6x=CW+x5)_?*@MXk}yxwie-WfV+?osRPKuX{*r6A$DWB!$Y-WX)@?$9 z;5$YXV9!5dY6VR@R1vL3y1nn!$l6Yoa7Jt3_uc#Q!j(x2qV1ZfeqQ&U|MbdSy=li6 zgcbTTObcqQ*t8H_rO@{t{l;dJz|btS!Fe8Ye43*%68i=B`Fqnt11+%(v0FbscK%jV z-;3uDnY$X}uCh(EI$vNw|J>6|jASW4zjukX(Ce7GN_`(j-+_kv?~P+NeKIS!UjDG( zHu$~Jm3D|I_H>@KKCxU$%@q)SF>}(=Z_xeBHLCXayPP9;f_yk1VZ6dSb-b}5hgc7! zLELnWV9*Y2Gw+H~jNy?K_3d4ZbZO*y?MQZrXBeD=QXx0C3bIOv%(3}h5rxqJVa8Sf zI3q#Wd_+5dbGU4q+$&m?Zp0|Bw4+$veH)PQfQKW5Dh9Vv2x-8x81yKW}2sD&5 z{ipEi(jqVQg{WDvPY69!$+UK4{*qJ*`%*8sj_%GPcNSJl;4DMTl&6%QZMQvMK#rJH z;vM{^W=g)ez)oti)CWUS?h?EKZDq?wV)rVJ(G3!6O6R=jCR@%}q?i=Xue*{~e0r+$^!jO&2olxURFUmM9VtA27V&uWrY>w3oOAQ6-VvwYQ!R`2?!ghP`=n+J7^{$cvl+>cVP z#XN;|@+AAatR!t&R##_z1@@c4?=tqM7195k>%qYx89B(!vEW|}DcA@mq;EGksO@c2 zjb!Y+c`cJsxrmQpCByQgzd0G2%3X@D&uO$H#h6t zGK;4Zq{rdf}d@LI1Juj4W zUK~0IrdrIG`5<7LKGRs^<#@~yfG5>L-9j)Lb!r=j1~EM_t}mBVKo-%cxULPTzH)j|G$8TJ1_hT^*_)KX#yQFt59F%(}37&7@o3}eg zoC-Z98Q~5>{ zh$$6FOJC?Bi+{d<0)0^<$1?xDn+gegK!s3-e7461w*6Y|K|`J}-3NB)+$6@;C}gpT zKjM;|y8tYptzs8)EX3+8L~U8_u&5Yqmh=?LY`E6_3hjRf>-^lZL)~+hm&epXzW@Y9 ziK7M_t;Qvy(D0^ly^R8)(NljPy}iJqK-ikO?}E7u^jSvsp!Pwxrj%rVt4zn1HSy|{ z{b8nn$UZDR&(gCms$=SkcXF}CzYpw|bGuBt6kMcVAo+6AM5?Sl)~|Sl(k^q)#a`TZ z_bfBQp*!|s>}*qvQHE5@;qkBMS0?6&8`dh-WoZr~=hpIl`pw`TJvtLEu%I-EB z!Pg?V@9ini>J_C=5?Y_{l)bTNtiDYytG*Y?XNg$ET>B-Is>iYGKXzc|JHC7@9?`bw zR5kX>;F*-Q;~$TvBjx^epAlW%Sr5}=8BU&Xi@H!0625~Fsv7@Vew?(nDW#(IIkg{7 zI}ib7(sn~gf-ypX>@gN5_zuC5yRg#1{2cD_fa1T$+Xid)c$_pnn)UJI(Hb~zZkVvr z?W^U?-%FIr8im*zN@=gXGeif5WFiofj41X6C&1}f#l}Y@ttNO}5!tM}n*SdRsrUBF zUn0cr2A!${?=44_jz{>z&*k~CIRYB51RjcV+h|ybmJ0WMEQkC5Obb}Wtve~b5rclZ z>8^v*Ny{@m&Ifv_N6-MqA0?upcwVteJgM|@%?XOYN^!jk7`cAWRvs9#Ux@Qs8Pkjm zm~PxyR^9G2bJ=8*N=^2AW!}TS@9LYQ$~#_6W!cMkOT8nZ6`Qu$5&Y&W{h90Dv5$~; zeb}aN%XQ06mLs$8pJI}e*M*&8ctn0APFx8rz32_a~OjtFLSse$n`nnJJe#S74<)_uKrb+K6JHe+(HHB?B(R6KZVAzPx^ zLQwqYOY4W)iMT{M2(O`y7Az(5^xj92_N@NUk8nu^c9KtgmhAUbZFc-FlFbEa%b9o; zH0Ji1l*OX)N_sdRJwZ+q-LipOK1BV0j@UMZZsUVwn$nC;P-;T_{#Gm1v^)%h_`G1RVRAy(Rj1f9QM$XKqCTp@C_Md`;G`$+Kw z{ydvL$uZnMj{^~2?-*q`xpQ4g$!`n46;`2**6v@Kv%i?9s5{Tw_$(_%%{f`!bTqHn zul0seG&;pV38`!w{fj0f2K2A}AXIMBi*+ZGZ1dA3cZX9ZBYW}0m+)#PM`dnczI*pw zN|J-rx$5r?DOu2)kOsjZOkn-xXuja&yt)7a10cqXjuG*k6ey16dQlRv~}1a%`@8SDCBE{-+Eh4XJd;Mz`&K>6V@sUPkf|S`dqX4|k{n6zGM}5zMtH<9~5Tp;3(eUh;Cx z5%|L9c}g1sKh}nj=9C%_UNUW9*ky&IY~@Uu&!tL`>}r1$6Mp_Ny|$VDwfEJO|7MM0 zjzH>&1wKTq2FhW;umNU)<_1pH=6#4$_RE2CQJE5Ld>eZBLeN^+I^!|PV0xV4g@47} zFS>SmV~p$z&Jv6$q%i`7+J@Vs1xO=0o2jZDUzPm&Zznj{O#mJfI+HiwR#o}UH81$y zB^&(vj~pppCF3FrG<{;Xwbq@CwL90=3*9L+S-lTx(?Sa;!mD^o-~$1kW1G&JL?6`S zglM}xp}l@v!vURdDGVr#Rzwq+s078_F4_25yel@!$s9{KvqeAdstq^SG(G}jxIjM> zKNk$MzMpJsi=-L#s)ZJno?UQR@IS9PV#^wnX_v5!$TWRses8+l7C&()wQ|5}8N=8` z7#{Z6MK;*(KcCk<9v65q1yaBGa=gTAH&{==M~LQ;R7=4W5-lMlhQt=5y_8F;>u&z; zh?!M)J-JJRrvjoq&R&jxVwQf$Vs;4l!mLFJaHlG)-ozOInB^Et=^i&0XTzVl`9MG=e+F7eK$CupaJ=4FnQ+80-u6TgIIyLGk^=-ni}?HD z`A3G0dm&NkZz~nkBQh$k%4c;um6kZZ6|u5~XH_4y#IKCERkh1l;QH-;d4H?CbQz|y zM06xHOSq5A->{rz2HeU0v4m>p)kHlDhmbGp)m9a?pQOLQGi-YkdlNeuh-PQIvi~Xk z+P2R w=|z2>k$2E~Z$uFSZ~{)@)ZQjx^H3LyvN!8L9upuhn@OvwLbUgOE_-JuUB z@b7BsN*-Z%lw-Al{ZE8ct=g~4n=0}h(NZ*yQX!^lAZUz=b^#k_OvUKD(1VU>>*-!0 z`AhT$JsZynJe!r#TXc;Iq&Qnt<&Uh2Y&;5482sp(a6qiLn*xR_Ac0pT`boPbYkFFxhQ? zUs$ta7UfPDt-G;!IoF=WBLynQ;OrDs>%pUFoC}&04I#-rNlJ~>`%5Hzq77r+P31S~ z{a2Q;{bjP`=1WWAlOl9Y2felz15<>&-qRG>!X@Roj^Z0zb}`M z3IP_FIwQUw0rmyQZ<5D6Cucml=33`bzA3U2fZ$0pXh_0JZRaS)N@GplVM(9SCX1g} zToYq;WQB}xoiXu&wBDW$wOp!1EpO7SQ<+?>8cU5bQWN)j)8miB8C&v5(P~WP(6haN z{SK}p?0pW)gRg_K#nogtf>GL4mUlgcSs4b6E-k*6H8eA9n;v{{CK#7Sf$Zv_|AO;W z%~a*h+V20sF0ft;Fo00=NKqvSzXhtO@+(O@vcE2VG0V}pWp4Y2JC&6I#W4_}GEwUw z#IaP#3qUUpsy3Ql?QS{|l=y*6E;PXZ&8#^6rt9nOQ@F8P$Jfy_nHFw$&uxcw+LWIj z(_TM*Kq1tmpW3kT5L2i)6l(3>`L8S?L;}_PhaIli_%g4{S9?+aB}#VL&FPDcgB6`q z;-5WUow_Arbj&BXavRRabxh%@84L15Y4vRG09m3&Pu$eK;`4*oTbm~FJ?Ek)egkF2 zMQ@!~*Oc2s`B^#JKaP(q8J8P5w4O>!$t;?2SuNN~{fADd~tTeE_JHjyC$4s#GTDCK2_Byxo ze_vVE%9?RL!qC)9S{lPWi*3Skh*yi!_^y1Mooz`go>uLN(lZMaPipJI&>r&L-}JS< zP$R<9BG*9)Q<~}LKqn`NvR>ES&NFOSiJ_ z6mh-cdj0jW+lMcGzyM5(IXETnRQ|_-Io*GN{MH#&-`GFpZLzO>_7>GsgahWBSuNfv zd3+M`|4!GDv6v}cM`mnFnK-6yBh{G9vNQ?~$!Ztxi22pik~rVCe29AeC}jWbgDb4? zaT+3Gg~v!lz4W?JbHN{GbfflcYnf^qp(riv09nIo8Jh5^eR#LVOSzIwXZrL$d&aI( zecGUe#!-y32cBZlRH~(Yf_iw>e>l?#&5h<(G}qGxF>mRP=4*=m;Pl+^#XgVOudT<4 zc$V$YFN#lmntq5@j3GmHE`Z@#&?*?%w(GngV8$4~%}P144gX$^EeQFq)QjM>;^em` zAsL9>)}^!rcn-Tz;`eldg5;&jP zew@aaS-tUQ&n^~^1+%b?tEA1v(2cL^2|C20+y$}W9}K=36pq=jjBBM0`3J-1RnjkZ zn)0{$vo_!6UD&*>_8eOW{KC4m+<#95Pd4-noOxazjWE+)z4YN1-vG7ogG)A5?c$Oi ziOhPT5V`YzL=xyVzGAjbvj+5iO$EfBa9P zk$8Bx#py*Y$8Q7gJ^E?W6C;a(02GfO%!d?$R!ncQYFof*wzm$tguN7RX2Cgpn$XjF zkVhsK<`Sa_WCrH*+p^poF-zF%;$t+uT&%3hLkXtrs4 zl*DSZQJ6?~U8RU;VH3D`$3rF!w}1zTrAtEc98uW*w)f8a)sDgfLM%nOCwe!pq3662 z^1mjcX3k~saIk;iTFTGqqaAozULHULNOhl(wiS*t%G?0H1l_9p+v~~IPYIYH^#??KaP- zq=EoO;O#n`XUV~|4KnJ>V-x7FxB;Vu?MN5bEx$?rxw^eDW77D(l<3>&Io=m<-qreu zQ4)89=nx1p&`%bTR?7;TLNz~ME|x3(7td<)y{7`~dBD2cde! zw$qd}Eyh2YCRAufdsT?i!oPOsMB7;7^XfX-Z&RYdP6btMi=^%Hq+)c+RIK^JJyI)j z>aF?Mug&35W+c;;MPq#Um>SiE?%B>>y2bSX`Kz)|AwPjlR7*EeEXVq)(2JL^gcpSm z_1z~Lu3g>EJ|@PUmWbp2NY8`4x9gGGOn#$@fRqWpsqmJ+R6V);jQ^8i(B9fmjm;5h zRJirgX0hmI;F^XO2M3}96_CtKFWM!VP)4%iJ8_yE`3>4yMzm+jk-Q|KfUL3vzFTHu z>{YIXKXEO$YH{2i8WlbPt<8W%p=RKH`= zIfUrgVS3j*cwn7TuYrBl0wD4CKazWtAQ_9{zku!zbA#2KqqRiHBSv9BGJriYJ`>-$ z6jYYhs?WEKa@+pK3L8SG_dwq2dC^aheh5WI-WM%deom=tTJ20jDI;+82qTm5c!< zCKetrx{da~GkUOas{Baq<&jj?w?}!DPAiRe{4WOv0d*IPHl%|Gs7)lVa@@{B?^>+fLWmY|NlY00V|HeOz)3^lo3=sepg zeO^#7RrG`CG=-Rm9y)#_Pg+NrYpElm;6FN5-+HGb7r@8Rn# z?;w1l!(Jb1b=u9&vbAPLB2T`${JTZ0B|R3B1u0XEfvC%J^haRZsUh!`xhbYB{^-mX z2fPy+zoDUsrb6>m)q}ece)PPu0pHxkYwef}T^;D<-c&s8!$?*KUGVRw!sfp2nB&9( zaWC=aZR<;zr~XeTME>;4?bUA4mk=b{lumzJ7emge&tD%_$}g}V%R(GmrX9%c!DSfb z0~}^zGt0+HCu*$gypd&%%Cy`6 z*!@0C|A0iw2Y(!7Q`w@JQCK8Ey1U9wbQQ#}fy{4Hg*M#odfK7f(;SVo?2L4ZVg`*% zv`6V3a(qPn!c6<}R$Lmfxaip9Qz*ucOi=HOMvL37h5F_QXv9>61_ndP6Kg2rKWN)e zuD8-CM`vG>jMU<1<<#iY3QG+RPrl2=3e+Hz>Jy}m-WycrK`GE*4LGu~F^btu3tcjJ z(9}Kbe{ZQeaoKZ-hH~EZbQ{2s{Nb%1J&Li zvh%yfIS;eWf1>?;DkP`ho+k3^N!Q+$t%FK@qepMIbtZTC9M{Wo=I;D>61j&f@^qc? z+xJcfG>occ{U2_9IY`ZZOls6I`rETCMo-dLUcYbKMD3)AbitPl9z^IA0WuQ!nRVs1 zneKU1UaPCn9?Vy?aZa`tG~R92)E2Dl)l^7ZkL*8GkKI^E!c=$`tazCl4_E0~bm{h@$nLsfS;ot1sos>p^?~bbpB)fK@w?5*$ zhgPKi^9f;eKIg@R{~lv>UR@*t#AdF@$|oR$%l7P3rRwYL)cnQ|xT0f+76|dq_o^W`x2b5CuPm`|F8aPCAh%}e zQT$fb*mpvtM3xXmn(j(f2jjQlQJYKw!>uWWvtNgu^t)1br*j)F>|P??^yX9z%|84a zYnzvltlX1*gZR7LM2qTfcTN?(Q%lr>eP!;pna`&WKFyK+YCq6gY5j+1!(}LbM@Qzc z`^d?Y?Zv8g(+9(M+~Li}3&DYxb85q1{|lTn@~nroIMi{Z4|;6x=`TO%zFgUqK;cuJ z_tKAbq{z>lFIuL1^74RlU;a&_-26ZU>uuA97rrI^`WqLEMMKAC1>4jQq$bM?gUjx2 zWgV~+5nUlJL2)WJkU}IvBqvBGtHh%3_IfPV)k()(usyWp@=w3y+!KXLr$Qj=G+p8A z;`Z~;UFN(R^{DKq*0>{fpRfttUuFsQe~5p#{X4R<+%t$$0)uv1GB%1AcZk4QSKOHO zQp=O{x;%E+kL&9H?|hU{{mW^ssYUS0{({-qxSEI;lmYUOnyPhi9#aDlR&e6Ne1*TJ(kBiE`{}RFW zYYgwQ9Ssx;c~N+7jt#D}5BmQl;x&tDa^72%f=hy*#A#jja``M;$WRHArT*6O+DL~T zWgJ~03G*=}5%inoE96aY>SPN;?y~>B-9_kp`udd(CpbusvM|ewOWy zr(|}yy(XG_EFN^X_MiWG)%};~;^n{xSGtNz%WeMKKyO_^N)Ie1eclS%NP=hHTG0HR zbU*xF#%;E(>7#B|;#T3e8(`-`4!l{Oq#M9=X^2qQl_7VnkA{!jJ@>?!=sfxcSMOb( z!frlIs3*Ou$ii^7%xCoeeUn8(^@(J7QBkpeioh+`G549jL^lYSK`7jSNSPh zyzcu~1YK(7tzWKtvKchy?ffNryvgPpXMfpv2=XKz&YG#n(;UQ%R*s)>3C!scchtOa z5UTM!vh@wr*^9q9;cq~c|%(JZ4v%XCuO|D5%(_E|~%&|H7_9*@NO7uP5G@K6KzT$K z%2>}g=zL<0=HUm{JFKD&3|rC`UZiYKu>77YVU;91hx;_Zes}^#ZV57Vh!lH+41kIB{(;F-d$gv>thkiEOJQ*A5L)=~eabmP%Bxg;+q+zT5 z0b(aqP_e0{{-|@4osxL=ots7|1igB|T&=rVR2%?YY5aqKngvL0>Xla;Q0^N(!+Ie| z&AphO@#DLAb=2KL1fUQ3w^JK@LJyM}JXP^w=C4$^l z&S%}V49)BT*Qdv$*H3GJ8e^s7>roSqMqDrGS{>0J-X_nUZ_CR4Ec|(qgqC(+@z5E6 zXR@sT{G?@>o!Sv;y7T>}t>Csr*3BzH}6cApU3Fs6$Ye~B8)RpUe&(T@u{P1WFX z)a&l?z)5$;_(=>_NtX39c0FsI|1Z%C+spnAhr()`oN+=I`Xl!vMlqUrY6dTL(a4|B zEW*~=8Wj^&f*AZgxC&HEk)x~1(`4`LJ#sV;*(^TrQ)c@%iqy^nuz<=oO75}>>0oLU z?Z6pJG6LIDnbtIee=U3N>98MP!C+*}#yJgVy$5wUmx^8ZxLNHGlxtFKEBWXvFosFQ zyFZquOkvVG=i#Zm!0>!FI&JuQyt9jv`$T7@Hej25^JR|pLnCYIa=n1ME4w$P(cjmw zgix$~wb_>ya7`zLR$rOjV|jkNE@VDqq1tm~-LWI=U?Eu~mxVQ4aR*+V&WXbzC`@Hv zt&u+K!_Ww_2?uZP<|F=(rSFcX`hVXiA{i$QBdd~8aSjs4RzgxFW#l+V$*9a@onz-@ z)G;dK$d;9?jLc)NIN2kz&T$+wd(Zdp>GS>dczA?=@OnL;_kG>hec#vRw4On2VqddK zPK|^*z8zZt_=yhWW)(`f0w5(Xq;&N2wcU^x`m!@_#9+&N$zELKTIEFbbvHMf%E%}v$t~d3pF`q{4$kH{DX3w`)jWH zGnw^3_qAo(W|$4nt%Ll#d%?b z&0_KnNgGySn%3Lq!l&T1ifb>Of9W<49_Us1j?A2dVASl0W8y9qjF<@jI0co=9MC2b zrR~VWl$*C?W*?kc;JDnGX2@~tDka;-0wU7tzgw#PMeq^iA7@q7UrxEZoAozXu62J- zeb;A_xkVe|uxeg}jcz4FH=9Pjirw^=0kSa)zg~2W9!1uKeJuQsuCFbdYM9;MniZm~ zC8=4hl1zawsl7Ktu-|e?hfo<^9l{029a2awWf7-_I9gzGB2aBifzW59OVSz&IgA~#m1^Zg10vKk|Ok9Sqtj_ z@YvsLdVKoY=?BEgRqN5J?H-U}tF41TU0O@;K}ePMbD!H2U3X=6T=;iLE22B(0y1{p zX>r=6zy$)7ykKzl%T1^CCGLPluaO@PZ-2sC(7E2}t#=L?;8*vFpLq}xy&&*-?~d3N z&**pEaW{O}yuSGv7fyGMy(Szc58SWsWWh*33W{sp^Xt>BvGZ9phP+!Rz&KYT;7$w0 z$>fS9As6-gwba42AFZdguZLW5ZH#Md(TmRZtCJo)SmQJzqc_(+rl01c|EVEtaxNS% zG6hBeRc?qna?$0V%wJ31Z;(f&U)b}G&-GgDs|c_U_K3_%$dyTX*!KrllP@IF{~8&m zN6`y8I;6Gq^zI3$j-xkSeZrx}jwf%TY1;#6S_`6*AfS^*LY$L0w^!nK0s3iQEz&Xf zS*5^|kDx63%Qpt;Z8*(F%VfQ@neF9Pgq}=e))l(zIVB*%qk^hJwO@5@_1omC7RiMr@k2& zhAZj!J^u2XogVIbwru6B3(Pa|tMyl-lW?oU=d-s3d4$`yO7TvIcU;>RO0=u`u$G@x zfGR#ItXXj6a6))a{s}Zgd3^kF(aT(ZTbUO%W7x&R>F@=wI<*^y!7$Zxe_-cw(d*fb z!HJG%JN<%Ye(is}Z5g?DG}extLe~DJ9O!k z`VfmlBtP1s?b}!6{f?%CcGMkXSv~xQ=fff!&}cEN4DEI%O`QF+JiW*9U5>I9G0`vwCkRn* z31pDkIod3HVqiH1eXj;K)Hn}yWoMR!5-w_O@W^j91C0(jI@3i1o@GI84L)XbF!$PR zv3SZB>zWG`=y`5k`Ud)z!WkQ=uL8c|W7BI+3dEeZI1_%LvvA!l$#B}u_!6I>&9aaF z`&u!Xj#BK#inv!*%}G*Qd;_Q|WZFEJkb(B@@58E|-@16JvE}K$-q1s4!)yMP2g}Mc zO=*Lo@FytM!QW=VqeUtwH?K2P^T?c|R;hOf9aa|K*%N$q6YOB9^gP78j_ z-Pyipl$9u!e4!V+a{Wo}ja$K?sNXB2+Xq1@iLy*5s0>f7W{lO|YxMj!>UU4OoYB~| zBBU3u+x^@j7_MCoT^>?bKjA;;AElx6vDCRW`eT|CKjhKaC62rQh=>h`$=RS1Y*N>8teRtr=uKTU0qwfaKK^D?x zZescx-FM58hadbV*_U2Vq!VkKtVrQ+G)V*~+HDN*SK|f%5!Vi))Jmd`#Ny9i=aEGY z!F%EG&M}WS!(G%F#_!e9KyOv%1tmQKW@398r;}b!_hkrOGiSYV!%@AUpc}jX=@;46 zT>onEA3o!fgRfp&a6Wd&kWW4WDNZ}R?kYoy4#>1?s9&az0dePaT5u8G!S7!7m^F1N zJmgA{=0-PS@6C>Va_~q|-^oNdCwF68UDhDw@AiHk(z3YG!0>gmu}J2%lzn{FHZ5go zeY|c(=p?nyEkczc_23Pf1gMrnd6D}K!&${(7$}Buf#GsC&Lw(D70KGQ5>G1MC$}Xf z!(Ak}SgW?qoS}Pkc8ymgmWr>Be0+sKZ~a)JQg&bDKE(RqYTmPXb1#Fv&hv>PyYhr* zz!_~WAYfdjDbs+{tTFncF*6pEYgfI0CIZT?cKc(0h3rKgjoBMiv5gpckhPxpYWE_B z2?EsJ&hFdRnY`}Jla%ipNJp$ke0LJ(pz%w>X=sTMziyMzz#QC1NfmD|3Ub?nak)2s zIx`EHOTA)R>xw)?K%W@+jHJrGFP$_tk9TjWMA?G)= ztYkl2wkE(lqt5jg!B&KNr%*smFPOsjyYRTRnh-dgIAuk#?a#%cat3Pb8$$(})L55q zWScMf11{nZ-|US17n?TKA@RL>^wq@zv`v4<f7c2PWT4=X;dS9Q&r3=1_Iy~dv(=s20b(8N)gjSNv+eqx0wfB8);AGl6_S3 zUNJKTM=`xF>q)+GZsA#yED@uv(MhOR!1S&YLOn%;_htE~^H#UqIB_$pwpU`R?oX>9BD7rF!ShpF#n69##`)~K(x*q<;oUp0Ca=mE#+Ie<|3~+#|JuJDcTkqLdH!L@Zns!aoNCKl9l56` zrUiB>-gS$YnTJe9(|zwgnX3zdj&v;^s-!Y`dNR}LTK#A}15q>aK#g-#Vj49`R-}Z; zb=o>yctUj*Qg(N?O|`)6vSea~{GO4!zBNQ_h1oC|T9#00&Oy*1XqG$8{NdivCgtW{ zd>wH%pNZe4R==YIDeigqe*68XRzq^++{MR?M71Z_vthDMdc=$DTrU!T{_R=3hPr-! zYwSkyEk|1RQ>}%qz57q8Sw~%TZIe99DFVA?3niz+KP0P+!ex2(LX$25u_dL~H%2-H z@4arW($Cs)q{-h42@@{TEEgXxR#6&J)JRP?Os zaH1^4=KxHF%-IxfhVkc%ES@VkC(86mK|aZXJCX^flN5o7JM}U~y>d&%RO4;g>lw%T zAdVMr;iY+>-iQCoTh0dhEm|BMQ1(z?Q22na*D0||>66gxZGjfBOuOJM z#>UeC7jgVBa{G54O;2`EZ$0t`K@^6;$!L z0g7u|B6NIAL*KSY!K*O}uEzedA=Zc6%%A8DG(w%;RWs&I4$OJ#dpr5$b`+0AY!)nD zA1gBePQEd2D0*Pd(1H__c1?KA?^pEpu3gQ{J>K+165%$3GQ@@nU(Fowve$yy(#~yP zsVQ-!aN_5#H}!oTcE6Ej5(##XCrNn9_*t50&MMT!=bvh>@6oe2@+nD66a1~>iBaj0 z{jDGzcg@!Lj?^nKan&b;29gfVF=5LA24ih{zSSvYW(^U(fX5!;1>yPAI7*)zikui@ ze=RsGdup96{IPTGUo<3O$8n`V0J#rr{O9-}1m>T-^r+GOXTKUdS1~1#v zJ)(2s1GDNgOb! zQOg66jylSM0DmR_xC6X)GD8=H?jJ*+M%Cu3mbs|58`t(U`QPKtSC`51$nr`T^T$Dv z;R<6z0l6MEjip>X*m%msI#%y;tpRu0O!ZDe&93vxyA3_9gMx2U+foW%9{ZZgJB}gA zjn%#{v7Kff$wDn}%t>ydaY=fQQ$KV#N9MByaa2}RxQf1OxR0BDy!potOQlo>hiC>4q|-Vf zmeyUvJ#Yj@#X!h7V?qDpY}@9?jKU8pSKRJ=;lK!ueC{Ax`ts~yGJ~G5s7QBp1;=IzflIqJM z2hG~@4Uf%;rq{#RPaLgU2(#XQMb!Mw(F$iU6#2i_s7v80KIZsyQ;+mM-y4I=k^hhn zZuC)Yw`;6?ROMU00Lj&E3+h!~Af9!bUb>tyuOOD+$E(qbj;YS>EQQBK;o*eo;X5?4 z@rAwMa;g8L^~5m5a7|ZLf8)pn>}q6_K5Zq;C(Ck4PhC}fw!)zbPgXST)N``vw$6C1 z5Ph9}LZ>mRD+cKDHsz!Zi7iY?A2KJytL2#-b6#1;KmVl1>uBO87oe<%dv+*T;jD0O zx#Yz8^Ge44>jcA2bLLC|h}6Oy0chD5KX)d{PE;`Xd6mH05iTjwv~q}T8l+mS8^aUT z_c8eewNp^`?6NC!KlYGX+AVF=!f2s&(n7dKfcjwtp_8o`M2h=o5SbsH%_N^WMkOxhp=np{;nWcMQ&KP`n6E|_m za8qW~OYXAdC6fz%q6O)#>Y#MNfR?&NXaDz#YV*Z~)=%&L0g28IRsqMgvnZd8otG8Z zGK5$$@xab|;Yz~0vui{1dKV)iiKTTBN!|Ugq~EoU`sh`V>9F+>@_*-VPmMrcgHBxwR{^)YoD)+;9jV)E)M%gW=Tlq8+ z;h?13mQ9dFaVCe+DfS*A>RrC#h>#m3+P7(O=wZgP+|h}RxX7{K-v>5r(tC%u6qDQ( z(5+^f<{a|VRa^Ik0;5U2%W)rkC$lc;cubjYoqg}19URlMgWpUTh^(^m7UN$;km_6H zFOLct%xtd&q_Gj}V&tgvue`;eC^nhluM6Lu>S?gG4e6N^g(ax(9&NEh9No_&h1rky z+jw5qr`Nq!2wnChby>~>uMxO@+>dZDeuHdX;E>81TxmTZp_Z;lnk)b9Gqn-D;2r2a#t5Z$ueCj#(jhaRDcz3F9fhYI| zqxM4xClz)PDMcfFYgP|c7I@&cS38ZZOSyi6S8CLJE;@xOs(;EgOt)8YM@2qKqbp@m zT#2vfCvVzmtNYz9erM2%jdijYL+NdLy5+4xW7Zt!=8LHK&@E~<#|s5F#U;c7j2quv zI1ZBHMmypa74h&-iJht=lWS0MW2w_N zEP{;}OgtqyRbY^~kbYOCtLv7h#y6kr@zmaJ+c?^N>H2kxQE{r)yR(wvf`cOGBs*VP zvVVAxvQ;C2!(6t#A@m~rJgltuB>f{$K|CB^zsgVegu@v$JzLdi{Aa3CRclV;nxB{D zVbRW=4|)*Ce(WWcZ2R43oI4xz4;XAJMwEAMH2+7()}zgD4X$TN1$r&z#t*LQukP+j z>|nAKcUvXrXaekxtuXiFCy%}=Ul(G-Fm7IE8(`X^7SFmRtgM$E-rYO=nqVJK3e3hB z_5S0mc)IT0@GY2N@`H^d)CldRRIQ!vM3(Eht^B#9ulS8k@y@kLr#*@+zm^ClTniT1 zpUn!~MlR-~R)m-fnoo(WVCzNuOlcUGjS6rogF{G68vR7DBZQIq9 z?gBvCo=`k}THpIYf<~;yrcgS(zLOb9wzhqiqKci}NU(r$mndIcNYj7ZRi%^OteKUh z2G*~KgBYxmLrtBttFw|@ zdir#t>y<9J%|6F5<=@M){P$tWb5XI(I!5qK?~^}&kA9cYof_%V4I~7qymDtvbgbV0 zF|W~%Kp^zX)SUJ%lzm*t47sn>awZ%jkW9{6nYf_rYk+z+v>*8qQKZ&b%wdSSSrr}^ z;+9BBf5UG&7Zv>+{dQ4c;#xa?%yXG42MbrNZC0_~3*+9ZnynqQ*}gJn*vVgWF0Xq% zr{gv=* zkivGae?zYa-W-4!4nA_?oX}{&35Y%CVL5&3?wJl$nWT{CZjGgNs_3eX|)_Eu&`p{9ZL8mIM`) z%w~eo?n?9eu0Uj2^;nbEC&4y7(E2PPW|?hN)qR5qbH~@+&`i8t>8|ZO`>u98xJ-Rh z;UDuu2^D^h6}lLui1kPfg@_Nyb<_|Jzmoa$TYevsSSCv7COI#+eE54V*L5rU27|-9 z=2L5ydl3`x=PiM^6*VqE3szVMYw7e8L{}7srdfbe41|6Kd28Ywre}idGSctqb}$%O z{o}y(s*DxjA&IVm*K4}3ijZ0RX4BUv3WNtqJB?)$!v&QlDvZ9uRfL!EGy4K|Xi8an zrg6|}aEL|XJChTqIg_F+mk&*4E2LZ^L(iZw^lj;r9C{Yu;X+_1x17%lN9(cQ#%Hdh zC+ya7-`Y}ceUY;9=k`$hu69kZ+?y}+(Y&kIY%Nt~1#`{$hG|Y`SH+LrZ&6<}vfR+C z$NNK$9$QC#Kvz!rEy{qmI$7m+cFNB^;VDPS1{|KyyT3~z$e~OI7+m|cF)^9P`-m$nvzdp{pYyI)*VFVW0H)aSW7mO2GE-bBBB&QTtONv zZtU>fdE@D}UPZQYamW`N8#Aug_AAbwHY+L7GFhb%)x#exUh01II=0S?1L{ni_w;q; zQK%!=|CW_dSQVdmwwgX|SM7cWiw>^Ydv8K6HCc;J3V9_9rqyJ5q;AJN_NQ6zge~+? zHnG6=(Kwx0exM&(;Y{EK=(l;c9H3r_a#FmKreNX**bj;K&SwVV5U#C&y~b)S?{@2* ztZ7+2{Eu!kAv`f&!+I~|RGFh_f$;}o$yIUbcO2{j-0kX$VB zvQ6vXjW6uHVe71LxyxUtf$;&qV60A!nxCVBbz^U;!EN6MrD(oLy=|=g?^oE08GIe6d56#bu#t5e{kl zGs)^0Ds(PZquU}Xd~qjuaC7p>w-39*D{_s&8i5~recmy6siaM_-*Z1rh=_SNF%9$Z zQnESE+(Eo?j~I=|!_IS@FC!8kSF|qss|b31aC>isp3P5e{WLEcbv473QCpd#YsGNq z7Llht3iImVIX1}|i3ELt5Cxm(OAF@9zEYKvW4pmV%Ky=&uYswO>wJDCd272#1x@Qm zk!|{y*FQ@o$SX*j32Jdl7Ju4PCKtMD!{W%{-v2BfF*CK`tw=GttKTm!A(gjk>?g-7%uKf1TeWFA=_r%&yrNmzzKdHMi$`-^~UJ1L*nAw*E(Vnuzw}|Nk^9p74%%cqPf?p|H;-$da>)5ieP`7ux_VOj*QU9FBGGPN_ z^e`joLeVgK4Vk>oqUYyw_sBC*%rJFEMVYajyg&%$YnELXa?VE6ifHqt9LHtv*Huqr zC@P8TRk{6Zm;>$~Nh=|ea&9PcR1T(?)DS=SVO#M0zUGSF3FU^zVZnv;(MP1glBBGj$f~M_Ktktu6A;Y}msZq#-?f!_vUbe)q zbICnZ&CW5}TSn8t97rpRA+Iz3k9=Ht`JnMPxu^kWlJ$b#q4AqR+6?SKbgFtrTs==) zkfC&~*{e|{L%&m)DziGmBEucte(xj|c;xxn$g5r9oJmH8c}e?KCG z)28BpV36bd#$}<-+htK8Yo-R?Gl={Hrqb!+O2f3Bmey21YIP2y3VY_(rdP@lX}Y5u zD$^SU!$15_)4@;RxC8MpR(wZub2A|xFaNXDE}i!8^k&(;4Su)Cmk&`?hFTDU992bH z{VtLxLby@Z=<7+9cd#{=o>+DCeVI!Q($)u)@DV-&;^v*F%I=wNO0B2P$eRrWLoNzR z`P{!sR^dD4{2!h3R6<#*+8Lpjv5*0w`r!L}LT^>;=vij|2)%DO%4$=4T9Cx?xix6> zbK&ER;+z%Z85LC@9o@Y-KWS2z|Gd@wf}j)VQWk~UQ9FKm@;V@jdfA&fcVHqHNM)>TxTP=H#Vl37?`jEBEsfw+)OY*1x(4~# zkDRb;g+I*ftpaO)Z>GFR{BzGBbmImKxhvvX-bSy~{@Nef7FZ^ivc=wP;k_02kcn+< zU}E@)G<(s#zkD^d0zJ7P^6_I=vSBk3QBG>!@xT+H=3yUdAOUobO)q#LRMOa#U)E=R z=pFLh6-1A(=&m1is#pYhUKhaCS)PyZc)KkB)3+lfC53~*lAD{An-xzuei_`F%><}D zNquWtg<;_EB2 zfc!?5(j-dIo?Q+s+HeZa*Lzo_>_ca4}mpqThT zML4}aY(i!E^`37*(9`Vx(d~Jk5(H5Khzz^^*pA1q!EZiShg=EG=lW-gK_HEgToS}l zlX9YILuFc7tiQ^cx5fP62?DoZ#gN~85~ChM2V(WLl!TpdcHOflEt9GDZ7?FnCLKu_MgdYdUXh zr4F|}Hdc7Hb-xciTz4sBvJ zmb?FA`Pf^@vL!g7kjm(!}9teuTi_4> zzE;L6(&~+Nak!^oaX~FL zh1}YI1m-GJnZ(y|CIZX~Tfy&K@Z)fzfaT_jO9wt{pDz&r6Pac!ZQh&1qEF`dP#XG#&QNI!>#f ziGJ$4O^U}WagLQZs^UV1lo*Nmpq?lLhX)GIzbV$F2&4xj_qgL%+gcjeL9h+7V_FSH z&ipab@bJ~a9kGzu3dgsboGWbR_j`r6w;k`YS=`~TYgOhq+GW)sp1x5kc+Wi!L zES3=1m`ZB#d~Uy0_UFj*O=YsHt1@j;F+q`F7B9wjXriVtvj0OGnXBeew)b+6H=@D2 z;YPuVI@u0riB;J#Y6gvA`~usZ}87sXl&-1BaK^^;djNK*py_DlcvK5vdcLYk#)-={-fIJ}@S zaEr5KLX4+aNb}{4=-ak;GC6z|eJ@gsnyL?OjIcUQOTY2$necHOA^i1C13R=l(j?H0 zj8wPHE`e=gd{LLf+cwq`2RTaiG=a1?_ z)V`}z3Y{hVMKAwx@HE}Lk6J)n_!W#!9#C1;XJ27UOf60e9zL4rKL85^Yik!kH;iwj z8!(2U#OH2A+O%Q<9KGBNsrtY=aiGQ-!D|^L-MdQAC2$~R1#O%cMw4*y1}JPtt;Ro@ z#(kIveYuo!SBYZsEsZMbe{@p+YB{)G5ur$YP(0cciV!JB6yJFP*gl}O1Qett>PWI? zfx9F^7D=M(eavZrEwxA9PYT&54yq!0O`a&E9=yBxs|hFzmX$u%m0O6!*nVpi3)#v) zV(vHGR09j&ZT_voOvOwOVsF|!kHZ{VY^>wRWpY@Rj@X*8LtdRuJPBXR3}!x>Qb(iD zJp*YLDhbM71kPGD8CEFrvZEZh$2kp_fBa0!_yf`ecDq|SlJB5smp}1oduc83v?tftE@2Sv zR6c8y682}*mzOy1faKP|LlNbL=)xBiXOJwR5=7jc{D#7LneEf9j}FRUDtFupP}H4k zR7CAbwG|Y@T+#eP{lyo;Vr@cmYaFOeb8t&cx?P%ueqK#VkydT@e-7 z3a?k#lh{vs@~TBS38QbGPE&co)&pI!{Mjej&z2BYJ6z{H7WsXAdnS35Yzy~q3@y$4 zD&^=eTM(+;T_*$*p`3-t0D0gx*hEA+-rz!V-v}-tN|^r-?m?mdgM0qx>@5p7vKlzS z^u(3NucX_2ZIV|EHEFU1A<5vme*bnikrFg5z|WJXo_}5gr>+qi8Nb=5%lv(rz(EMR z0aY}AK!jtu7nRBuRM=ppJD>)K1IfnK$Y2;R2256pC8}l^2@obh@#W$X?Fft;SP3b8 zSg40>nMj;uOjC0?f;a+2O5*SX=ymjl^Gb7Sr2$H(@@T!!Psifzi1W@K=`=36R1OGM zx*>=1Y~JN35}|)?`JiGobZ}SY+fr6So%TX&pVp>$5Izm~o`p!O$bC?_1xAL;Y5&_j zP|-mzYoFbx)f7MOaj36s`p3{NC-z`7;vQaWVD9~GT34Cxgg8?}IOt3h*v4-r1a_C3c7Rhie%#iXTq(4go+LH5zmB3Gg=H=qObw>??lp2S&mEl4@vT}( zC82ki@ijLf(v2dn=izSdc1O`PQ15UZfw79r5<#&+ zkRY(HgZ$rvDMeINxqJcGxS3+D8DRUrS|pYT*L5mxDlM&0%XgFy@)Dc$U8`TxMFoAC zzJuRu40F#T@6F|j1$;w6ewC?AY=gTVNgocH;SXZjfCX5NzsfUV6^m;5SuCK|gwE3D zh-tmB%w6vrmw7b)^(}nQxZm@?o;b~0{=j}2$A}I3WWO^put^~QWk@jI0GD$f6whVSUA}aVopzpZ(h!jwj-ub zBAkr{hu)_wW=tc_kN)LqwONk;R`z{m9Y!26FL%#g*ekFJSVypp2L=pjyRIX!WvxD-o-0}1;QV)9FfjjFho{-}0YrR80+$G!x+G4{K3-A|f zzWB01hIWONZOknoVAdEyu}48F-Xp7z)tHztj1&_|5j`Fiawn)fJF(0aX*=%An5%J3FF?Cb1& ze6j<<)dw7@JQoz)`-aKM<_-`FnkQ+b@TS`WpGIGpw?0zqQ^J;Tpk;@P9B%gRLnssP zcHaL-hwtji_@&Hz^X<&uIAe5-iufP>@OG=yG_ zQGVXo5}Zu8&aa?R@>RN7TlKf%=!6LPNeL6zHvXe40%SYL*&DoN+>!)#ISNSS;5JIc zILkMe^EHGOgOIt71{obg?g45owPcrv^Qw_ij{U`Z1Z5lJt#!^H`~it>*LmReJX@PR z&cPQCW*Pc2fv=HG5L*&GoA`M;NuvNI`M#)`@rmB57aQR~2ZTgXn!7y};rZBwyrGI@ z79r!K_L#;kOXYXok5YIwvg|(+_q^uTpO1gJpk^}$ToY5aqwDi>YW2H*>+SA|yIuP8 z)ggnnlwHjK7m`#h7{6O#QjDdHC8~~%0$k+C&4q-q#)GtOiaiFNpv(f_4aDOK;6bkx zr^M>ZZg?Q?D`?x ziJ^us#Bo$q1-6(Q%E1kOA(u)d7lsf>YPS{dCA?x_&}?~E zrGMTxF|6Qwm!>Z4$K^aO>oX|mwJ9H2u>efuC*aca%c7ZGU}fh0fzPS`MVe2)=E{Mj z;9wRZ-C%}nT-^E>ONx-05nr{%G^+7HxPX>Gj4aH685v)}A<( zYnt?4B%#EGztYg1!zxWjlb?I&^w?kDIbqF%kf(oQ73u_Jx@tc)#nhFT7rJ0TSOx!s z15A5CB5-pD9v|HHW;{5!s{n?s)}7>RY^^B%k1mh-q6)bdMy|Pni8vBaKX6LBlbB*5 zSYYJ(r`O}Qijr)I*EkJOoHed#vJ01R1QajxXK|YE8Pg7Cz#yA zay@Z{U|z?A$3~Fb4cydkDl*M+Xv%NXPDuOOzP>AR8>ja$f}EI5xLXawoy{aJ*yiS4>~tF*U7k1q z(ShwFaN%b01%7(2%Ht4|>UEN7lWO4ERiL0i3~iv2Duui{Yj~KsqvUJOMP)18=3*Xe9U70 zFJ90lI=Ca2&4r}fGBZY!)yP>PAT-Ogp$X|kwk$gzYr?D| zM{bI^I9%q|Nn)sglZ#?!aa>ogaO5%+3G}05T0=)YLW#<=m|lt#iHNAgV@#WQfNh+D z^3*J#7Gi-THk5~IZ>i|=qRXHe6iHB2LiwA~gXR2Ds3{bwFl)7|K3x%YU*!4YFT@H5 zNkSkHDI0~=@rUVlfLQ(8EHDD0 zv0a5iyXQ!o_sd!4s#&TW>sV}ze?O(65Nc^~`*DQcrL3r0`;(W(<)Vr!lZz$>OTJtx zzq6XS z1i&^B&kg=bF5zwi$2cQwuy>p$r`*F|9vgOQ0m;Agr%Yi@>Q7G=+*5J9-OEEQfhWrT zljV5+`=U3EwYAUfi>GlgH-R^m?&ASpFTu>;HiZO0fKcECRgh&El$^y_P4c%T-Max&8jeEDxUUYA$|j1Itr5a}DL09j1k;uT=9Jj|Xty z&~O2H7%^vG#77OYje0-TTDAQ6kootT@3{>|uZg%Amo@ACnfF+CNkZ7)6Z4}^ zwr&OHmHNQgueoSR!sI8{3iU&4ECsl{3(87>g^JE#;90&3wpeAGsvWpNSQfgV;dgy_l1;C{SoA-V zE9A@6xvo9^TY{6@L{zYgwKLSNDL2YZX*C@Cf$Bjxmtt5Um%yh9Jz%{jB}(6N=ZOgE zQ!tjrCY~|){*HHl&8t4%w?ZHFa$Hzpn$37_*7%11g$u&}5b!bB=xmeCKH69~?-m|^ zSc@unzIf{^itqDoT6k0gHBCCm0D^yUbm2Cq4Aps4!^N`fgW_@x?XCk-4 zfeYh9-JJn7a0R-})3L5xm+;M;JDvbz20{R&ftq*%^G*rrX8~#llE{p4 z5&RJj!*q=A6jba6;Y7azCwRtwoZ%i?*M=O6k**t_mt49G^SN+v0%q5t)7H z6>DT{&zeZ1uyWblw);Vs5ntelU+~mO<=8p%t5@kOx6SB3?A7Au{lfFxs968vyLBtL zNO>-#qdbVncy3L~3sS@6TG2|S+TRaNLaBopn`K5dmYco|ayeCt2x?FJ?5@cN)nLO) zMd2dsb9A|7Jjj+%N?KfNqw%-_hNm;6pD-(5Yo^Yg~TN(B`$idv1i&*df= zi)j`zZvH@h50y*)rfyno;}WudiWEvjO2oW!qEK}~A?)J7FRASfEx@Uq9KT5@{022uQwB<*mf7HFE&NCYyd_j=G| zvK1Ka##>E&$kNEdSa+>!N)5_%(38#Zgad)0!sV%vS$4~3_KA;tCt@w?Kl9uyAzr-a z(Mx4{BiZ9Va(HJq-vL2n%TEUZgiB^~v|=umAZNX{0XM3RU56sD-LYx!ue&O2`*tp> z8}rD3%W%q+ST7YS3R_UAM;4K!jsPTTEB9LOP57MlV>X%S#EYa{>&7!J}X zsfCB0N~05!$W@73cvwA;0J9#$4t&f7WOHu7OK`IipuoV4-;8|9-|d*(B}();aDN>g zJ!UBIgkU4DL`sZT;zMom%wCRx-ao*>(x!# z+!#!K8Yt?{5y42wg{H-*=1w20ZBkKXoP(!j=7AFiH}KWuidjZAvG{R_29xG1nHPt< zI>w!zCjZX3lYUfnNzYhvM<0VYe5zBSi?h}7+`z1f=!$Bs>y9?E&)J|^c{KB}n_AjJ z{)_;j_~#@bS&k1(AR$hw-Bn(7fFI=m$=mp#{QObe-JqY+tqepuk#OokQ!Q794De8V zm5r2akJ8$AQ$O!nZMvu8VraW?qjz8biZWRMb(@)vmnDdV3gH+Q4tiq&J2C9}lg>%3 zHOAC1i`%Iy|HP4)7eoMZ#7a#Ps<#gsb-*&!oAH0^%_9@O1j)g}zguf- z&7_WcV2NB`w<8ZldWcZOcuS@ggA!TIe(>*IjUb=VScShfa<5d=8qc}>nN3E+ASEW0 z_RQ&h(|67vU0T#x?;)>Bdn~MS6O=K51TLg8Hy0GJM!6t?=1L9HtJ6$0ybGqQ#CG$I zy{eZJGS6L;C(YkXM`o-!_JDW;I!-T09nE-rLgm|d=fkvV0g8Co>#}}1ui5~@r04~T zXcl8`Rv>z%ABjuL_CLwTtk2F*|3X2?kiBimpYNpLqr{Y0!`$!Az5G)Pi8bjvV3c!N z$fL*$+wqYvf~AoVvK}P;9>}Zmd^)h~iTsSl4~R)O_n!1UdGIv>roGkV1kv-;=}vxv z=VSi%Vh@&Q!5?983BF}`YITl{eSISB$g*?m-VCJch00|Y+mLt>RSc%JM>sf<11SSU zp8;{D0IrwRA|UkUhcx7*d`7cTqz0cRh^^mwa?_!x0>+ZPDxUaS>6@XG`e!YM&)@1&pl ze6JEJ@v~#^(!o?<1h`?sgfHk#HjDP=js%43gm-oI6*t_SuMAAB_j1~6@}}Gcbp}>f zyGrhAaw+8itruY65-Iv%HO7p&4X!WtO5OWpt;wdz+GUH%Q{IuR0Q8I!!G|dZWLeM| z8S=dj5w6@|AHGM;L3$9V<6F6^bf+{nw3?!fc)XM#RkQogrorF)f7m~ekfXO@LFdNT zR=M*qW9R(R-;uV1^Q)1qZdn0eAiEDa1aosS^$p1V+kSUv|18wpVFAWP{xYkPi7JIZ z|Ixe=r=>1AF*Dl8j4pYqr1c52VInTU1=iMsl%I!Ug3KY(GeSW@(qTrlUFp4a37wLF zS{8=%fC00~TDaBS=pe&uAzPpq0~S1h01a3Ol!@L`6dvvoQPqx~3RvRPn~ z^w$hAi}$|*wjEo_4*2#kOd5#F2dTj*n!nRJrFU*-TrKvf?9;R_$gFqmfi6Euv_fG z?}1MRbu0*Y?ag5Lu+Utq<+oaf{cfM{ zIlq&0^hc*Z?&o=~`?_A+Wi+a}SsQo)*C3v|0wA(*#SsalOo#&|*R_(y2n3S>BeLQ0 z!sV|EoSYIgAvp($X0-U$*9}Y6cqm-9PpXH`+%L89;h0R(kzB2sHMRu$a@DM&ffOin zhcygC$z8*tHKA#jrQ6j#gAB*hKhouob=roKRM zL7};knrgq*7&Fo<6{88irev>!pefc3_&S%1{wxOCHii2LM7xM;hw7R$N%u8UM#LfN4DXlj%>0Kw9cGoupi-Jy`06V}4`@HYQ42%lsiX z`>%SsuD;XvN5S@5p?ROpz;6qjiAfdMJIs) zR!RL`%vGN&JZ!m=KuATy3YPDmhp>FIzvxb$yuCyR9!>d}xXipOH*>`FBt{4_@9(7M zMX}V{b@PxuvVJ|D^=3;kL2Uoj+VzWul#Ava|E;dTf11Tu1fWQ%4h$R^CGv_VHCmie zlyKe!dZ1Xmqyr=1aX)x=r*1|6d@&lwU1RQ%E%aC?e7^IQu0c+cS-l9rH`(yxBRV@` zius@!Kq?&m`7vM%kc-@j0St96Fqe32Xx98y#Ioj=oB#BzXRMIbw4nMobC4%1s-ePX zux(^|IU$%ZfquYl1va+wDBJy_*JY>jECB8-jzUJDpPuaSxVa6RJwwZUz2oLCbT>Ph z#*{uI{*S3N|NJ`G_O60#osoWX#`P1})d4^}v-clAiB8x?T4cUR-uBLkkbg$jY4P3) zMoJv^Xu%zMjwa9z)>#3__?(y4CvxjzUIz(kB3YuRSMHjFKeI_Md3>@NS7R9*3%ZQW ziMOS1dwg=z8lw_84$gRQGwQL$%Hg=f`n9FIl>xoz)140aH4kg=)&0v|^PO4mo{^38 z>taE!)`e}gI%mQ2VF=};!mga*r}xX_HtAA5rN***`wvUuC`#>VnQ5@qMW(g|Yt zeCilX+t%)3X)%;AW90;CO82Y&s2*uhjldzd8OsZes&m<2?z5QCd%1d0uvR)(w`rB_ zLEZhvv{14+#$zn7|ATG_0H?#o0DL;jvPWoEw~2!WKl)#dFeAAUl0`hFPQT7^&=p$X zSCe2Fv0bw3;VUXa^NGtl6MN z{*IL?WQCs&q45exNnWS8d4RB9t1~ZRolMU4DBE$IgMG8T&@VcqTYz!hNQ6~B0H2B2 zDLe2)4)azs8;iY(DlhL>eVbd3za*%mBi00Z0y{8Dg8@2l{O8}-{|#n8kmhDt*!IRh1X=U*l7>4pxwnSzlkhfhJWzE-1@Xk3Ia^?O;e z)0$)aT?>1gTtfvv6sOh`HC`@V*MOJ5{!os{9o$N>*Dp~LHre9rfb=ZGn0)=GnUI-X zPUYm-K^`xuu&BPN<)U{9@-p3EOl4zVrcK&;ZZhZ4``9 zshRg;)Z2T*oyguRrvhL=0$Nv+a8ik(`fj!&s0YR^B$R~OuCeThaTXQe4;vDlaQGz-0r~fG^e@ENIe$z-aj|)rp%(N@B7cvQG2N? z3&*zaqlQ&Bz&@cQe8rTN3G-&V+JNF_bdWvK%3>sCjNO63GwD=y(`QA=R4;}U3X^#s z8!9^C1o=7PtkIxPLdp8b;VoYi0Za0G(gT`_i1tgSkf-(b!Z47m)^d&(`efFK?Ups#a_NvDNb}U|C0MlYj zSbN;d6uB#Bgj9f3S7-%0R6K`V^0f0Q)082SaCD&p76}l|e!?|+e6&E@b+`gGVRv6Q z^Yx4XHw4v;%LLbhER|l0o$S6&x;<0Yj9Hj1cr8*PlrggNVp2);n30UnKyji4*o-d6 zBU?V+lmsF`BkoXr1qIMA$NC4O#`x(4RB#PjQeG`G4UMjy*Q*`PU zm*cQ6js!d`Iy^%+M;J2p2qh~G0Xb7X!I%l&oPSK>j$XxUQv5r6`Dtn5mlMqtR*Pj`?`79Ctz zV*=j4{ZCN!ic;{cA{7ye0jTpV#ua)9@R#7m5@~@V^?QJTLHpI$%TjZlvx19~Fp4wG z{brXAT2*F>tK|?W+BfR&(Moq-E27Ti37-D(B>qm}v(<+eaH1anm|Qm1N`@Ylfx9C% z3bVV#4TM^2AQ`Ovp;&6^v{uiRkR$`T!~l)UH#04H&425ioEH8QqFCEO&1CFC9OLU` z-X=(he9!lQN2bFEL=OShmgVhzPx-*50;|;gcJzMcXFz!o}khSDe=-a2@hcMW?W z!4q2N5c8mn>qOv*z?=7HMXr`_>Fmc_^0@k5KKM}|dq*{XWPM-l*00ntdb^u1>RAp; zzQ@*cRk1{SLygg^~bWc|-mAUC;1LwH~y#G(O?GLO}mb`kts(+?IATGU}y0Lu*&0+ypL+op3c zK4lV6JEP0~H=IAjhYVQ7yf$_7oERPgospe@)~(C^^xPK{lvilW5=p9)M~b#(28LP> z~K&&LAy8!iPeqx#M+1U<&&d8e!KL*?h14>Mu?0JF}t<3*XY`JIevA1u+HO1U1r=N+tEA8G@kTv|V+zn^}t!kZwV=C|k)c3u85>dHP>!95Er@=X6K zh`V~DjqbdX!!{b+-oAAOa)MH+j4pU5sd;{$WP@C+$=s!h!yo6!g+tkJGh3E-oUR#{%qnePKSWCyR`4CPs5EBaHKn`4D#Q)6_4U zBES-@brmxSHo=TQZckYhmRHXRZo%`+0S*ZMbi+MQacuZ#3;*YlLo7Z?9HFU$m9mo+ zw{-8mxp0zCtHVfgYRqoPVoiym3-c%aiomA?VTKu~w1u|wGi$()mC}6Lk={8cZ{Fs; z^oJgF z&c2h(uV#qC9h7%pe}X9I8deOa6OzM?i_c|G6-uw>aps20E3!R zMQ>oayM*_7J1Pc88y>fJ$t-LaCU7Q1vBRrB7ba27e&jd~k9gHZ2?_@WHM*+gyN4+R z{+SL3+!s5xK0PHv#bKqpQ&5%^Gu{^CaJWr(iLU+z0u_{Y!GK0{WhpQOgwZ&Vptvj7 z=5rozS``7b&$vX~o8&fu=EV|5KV5f<1v;Nsc0WPE7Y4nI?P0BntqyH)F4~T}IT9CU zx2#lfos1V0gM+vcAd+z?^-vJH@h*Wh)#28wbuEXOzOVDfVsY>FdXxl2kORL+09^0q zuU5XeBB#EEQUb@TC6hVY^T`Cu=KTdl+&Gx3ji_qjI__uzoyK+ikL9FCOn(en+ja2K zqY0jCPk*JbaDWTqZbDdB*tE82B+J9a&nCN`14Hd}f<+Hzx56t7mJL^Qh;fMVx&5_B|WM!?}p z7J||sPxGN*LWy$%NY91@HC`-Evh_$id)NdP8JD1Y`wHRc%xJB6%TE9U1MYfIvq6*{ zs0#I99NnVJyScqWBU0Ep;2c_wn`9vP7zmDjX*o0O&2rRJD6;O_m|vq^#6o-T9$%bB zwVI6|3}Qhv&^xg63V3_b{82G;S|a~9pW{dRj@d}P3lRjT2yncYtqQv{+dnoRGIBY?a~HItr;48iyhY6CP&ffwJ%Z;PSUaH+@Z|Dc|2E)sstP z=ejTWpRJ)w`Fz=Ty*tJ>ptP7d&T}nB?)!1wo9iy9t1R2HY??FbshDgGeNg_qRL;|E zV^O%;>1Ud2!BZ+&afV^$sK=I2|MG@d8-sCh@j5@Kfj6D!@a}s$?d$iC>6^zCDP$c~lAknbr^%SEH9jA|?0EqokprDY37KGz03s{)SpXvyat(j8g&a?$ciFb0-eu z80x3vJ9m9c?HWCGf(~Bp%lm>s`f1B{dsq8KK_iN~eqy?g(yF<7L+wANF`dno2_NT_ z_L4iJ;dQ`qzFd0!lM!FGxbwk@`*jajR{*rei!Ela7#`JTj&0ShossU+-}`>&=Zpz= zR=ejrkf7AZOySMY7j(*9ybyVT-RN=tFWd^OkvITi#Sj7Q8D}^6+n}28d60Fb#x3o2 zB;-FIzp7*jqxZ#v(_j!{FT*K3OnPIC@zwLCf=-6x4scM=Rp#Z@c8@1$yi(;SjuMlb2>E6#|D+A#goH_Cq_wgeZ^N{kJB zY8aWf*rs#@ zt>Nic7Q(LSSr;c-U+Sok&QioC7KW{a-=z>I*|pCsEl#bihVhVMmI6>O$#$HI_nzu? zM9WNS)VYycEZ=O}Gw@IWFlpgKWXRnxB}EJ)_|jW^4)3bE7Xs;hkxD+llgzkCr5Cfw zn5`$8j#b(l*qRsMP9WK?nflMZ)e@oDTo!G=KD#gnWlV7N(QMK3rY>7?HRW;B)EOj< zj}2^k{f-n4-k_}UoS64{01f^k*sU^8ZM?ZhGpNP00|_+f2JgK~I`asV>p_o9 zKfd{P6Cc~@zTW{>48atOj4Rk~V-+l;j5F~__KS`6c)|AU;96_Iy-dd9)2%-L-gG0L ze*P$^haJE;CBgx)jLX{|Wc<)UEAFrJ%?wyk`HMlcok7Ghgarv`6KSsgy_k}Rev#VW z?a<0B#iji_zaqCJe?KjF)D%@*nV~2IR=*MaHasDpA9>usv6$3ASx%|dzQsufjAeOz zBcRKd6yw@WPaFuh^$1v$w=WDmBIEt=4i8J)WJMEdH;xD z-dUZ%CZ9F{0yrerme<&zq*_*+XzAolzfS=-9;Y(mz+RuUhz|%Ho^nM4CQz z8VvN2b!ToR*Fq{4U29t$NFjL>iid=`>gga!4+?OPGyK0y9RGvX9WHUNZNtYScvkQs ziWb`;&S?K_!=k0XkV>}T`uZh*GG0o>oJhNPC;7WZPIPQ_`@@1TOVX-HVtuK@sc}PL zc&5XbpT{)&m$eS%{mZD1&1y|4NUC zaJ=^E1`MYAfV49mnH;!du^ zFyIN&e`2%s*sIji^xebI7J-?G(PIFFS8|v`kr*KU>S~byf5(*S($0bY00KZ-D?nA5 zGM3nKp#Nme$p6b`$}b?*@r1Oux%<)yF9K6KKjCOUs0$DUq~=|$iUHU%kZyl0BkAJ? z95_@!mt^EmHlGhHr=Oc~8Gib@3dNYA(>Sd(C?2b_`sh*vQsx8QXtFZCNQpcT#1(z**<)6QKzJCIehzFa?Qi%y(%%VRO;uel+ z$y!8tRcZDSbxz0`mAuw{B=law##DVWRNgsiX{uX4=VV_bDe#Y)8$NNlq;^jtnqraK z`*10!>hG3`gCj^gE+~EKl)O@TmZt*Jdtn3Q(@pSRviQ(!9-*NNZ7H7bbJSc+`X0m_sPp=YzwYZG_8JyW%#W`|4$qOK+2wg$7l&ba92G2R?FJP$O z;D@dVkOc4(S+=}pwrTHD!=8^=G9JCv*i&(#OOe-10X=moR{g;c(uCZRq+4yc@hR;J zy;wUeZ=tD`}MzTxL5j&4|@R9DBxq zs;O8CQeX+RP>%V;d-*Dtz}*R{hD$q{n-seX{<>r0@lx52gV<2kBa%r!dj=Mx6IsSE zxW;qso7^|BO&GdY_W5{>{v!pQW2FWEZC})|KaRT8(B;AP&AZI^3h*VIGWfpoT8|Xu zvq4ikFeTnq)ZtbCAhlXkxHuMYp-!atQ{xh@)f>`#1~`l4flxO|3LUZGI=;#1Ac@5^ zC|Lxuz#AOIa#pyYFdhp5n9Q`{MY-4@`D^j2r&f}u-?}~DXJ#aK9AH+$Iwv)@Y6T#g zUMNc9=~Vp-RIPy{w}9}0N(K9V%iF8ii2BZG*V@pkVY)#nmhC#VKZ>S1C#vvtS%&Y- zKImv-ECJFU{n|371RQA5>3D+^{qWo0H4nw}=wRZbcNBT6wY1@PAH^Q$qmc^1tush& zr05-VXj|BFmwv4HG0A0G{LlsjFPawqe{KPK;=JR)$p&GW8-tVV9?P4^9pE#W`^BWYA?Rs z2+%n?;PlZmu)7{I$7WsX5qkML-odUYEYM|KIqUk|56wJ}vvcKrAo8BKuH4m4v|4KH z3*?wr+xe-(7e7D=uSQVQ*ulStK@V_AUTjNTn}wt7>85{2VNcM0)#O1alF6i@1a>Wn zVUbZeT=358o#24)R^Sg%)0LLP(_S&~=r^c9l6Q*jcYyfX5=1!DK^xgUrm?iMY30FYho;WpPGDW&4o#+E z4UTi(js4hlzZPp#+egUsl}O8eZw!ZdjoLO&jGP=3ZW`s&;>9ptrRZeL{Sg1X_+Jjz z24&<>0e3VY+L)SS2wxqvypwI#^`&tRW|SLX`Ins4|_1J=Hzuj%n&tH^X|TE=T*uyNX-N zFD5P%+Fou9o>WLs`4~EAA1y;}p(jsYN{?s~_Nxt)-)9y@QNse`5@cRq5%^Yf#<9CI z@cc-(@6~M7;+?S~*c|g(t!mQhxAhVi;IMU0h?oReSYSxp!0`_%2TYbTfQ|sB37^vY z5Z>A80X?^cz6y1w03Z&;L(~g)u7A3yn&60`MmQ93OV;)-3J2o$2P|lXr4Ejmm3t3Y zOaGGsFpft;yEeBftPhrzo>N5Kzj5l8rlW#@JTclDh<>3DQYtkg33Abj1=nW=;rQH< zT_HueL}KYnteF-Wf-&BuqW_yRd<`ab_u$x{;;fJWX8pc zdBN!)Q|5&Yj3ganK}*%TI@!~x5nZoZpju;geog#a5SahpRFU|h{=G5OSt%kWvgd;#nvGDU z!l7W9oPSl2l=$JVdBU02u4X6ul)9Pg}TYn-lc*K?MOR)P<`Z*3hU z^&LpCM21hO4hA`@4QW=CJq$IK8>ZQdfjw5>r9NdIk*>h1$QRe!u4bj1qpx^=nyU7| zW#6qSB@vQn&{}z$f%j`{{cq{Wuuk&W-wrw6L)5(MWoJX|%8bj4-g#B#`x@4_J_uY% zVtaPWbzpj0d~p#3U`$nviDAzd1dlKg2q|><_f1_?lnzvA9%(m zMcFEfO)?251>*POlYV!pHhlZ@%!~EXB+$3D~%N>(12J* zALQ)K?x6E5%=0LqP6N>8d?e;uW z3P4-|fRG1+*vFNFG+cb?kd%or+*uK$e)mYVw_lS=hm>Noi2;QR8s`tRR77egDhPW<0!OSGCHB*gB(-fIiAgf|N3yCR&VL zGJbUC9dKYN7f|cUcXxO6?3svR3Ex8md6PPBd#Dc@^ZN{TnQC08PjaVwmV_9Zk`62f z-JPg=utKyWVHw zPpyx#z2AxAno$dZsGq~NIK1i)E}Pfbeg0Fc<`8#x)xslB{$rY~X^H3UM|p4Yi6f+9 zFZ@|ab$kW-K!ecTPN8p))ZTLo%Gi2*RWq=6RmBoK%B={5)2q_J`~w1AT1EjQlA#&| zKu-{)gNK}2F0AR7Xc`*W_qthkEyw~~6Ww$NwA{SW{8` z$HdF)ULjZz>aE$nD#t!?|FYYpZ_ywNhf6xxY&p)$zvQxZ^LO@K^A<{@((iAs(oXp4 zpRd!S_I|6Fpa|Y6IXdU!<4IO4LgSSj;0DS1#r&29qGDN*OL1u8ttkHC?5j~Yo<`32 z8YTb$6?onx!u_G~XL~20J%WTN9t!zt17qsy)|I8Ti)MjVPlg!ISu2RKXmPM$T4gti zTqvB8+>9;v3Ys2WLFBxpd51?`up~3W=$IAEYDuy9(kOqL-eP^pR>y~wzq)nsJ<=CiJN?&<^hH@Fc*^kgg5lN@tO(@I-pPhn@r8dQFafX`m_5u)|N8jpJA@OPi6%(}Es>oy7(+~S~PHKx2Bb3+`vDrS7EiCSzRWPkTo zwzCq?nq%o!64T|&DmVPioZO&rhk*ho+W`h`+9lR?;EQG`JBE=&Qq{K*A0Emq1U!`f zVaI5}`?g-}1Z!d_v9^u<5H)DyVZgypf(5SbC++A)&is~k!cF(HGtF-4*(t{D4yQ{LZvFM zcF0>cAZ=zZ;P(GA4tQ%Ie@zz{04j7a(@q8fX~#IZo=flVSWkQih$8ZRWI1UY;8#6^ zWZlia%cR9?E7DA_hLx{7^XZI_s&NoL-dJk<{N!Qsy6s?9A&<0!;syM7RqYrMq$K!a zV-&pqV3=iL=Y3qV;f)(&K-h+mm*YG_L&k#_huH9bVZnc!Rn^7f_;C`W>o@4l9*ngP zK%MYC;L~RLAn`~$Y0YzIYE&%Tg=K{r+?`Q*Lb3D7pG(<0PyR7QHB4nr(HgX_%t`8z z63YE$^Pc+9*KaVzh6@qBtnOP+y86`8ah0lnr2c+5uGaGNDI@xH+GTs>U3L|Cg`W43 zYT7S-fWr($tg*Q%h#dbI-?~O1A(brPga)O@??8Y6BN;$wXDwP=hs{b}n&W|7DT27D8=!Q#x?}LUg zK+1z8or@Pag6>_ZA5XE$=-d2erTII64aAVxzc1v`9Kl>as$ZLhc!@7W-wht~W{KQ7 zI}$sU->M;=*^gyrl|BS=*x}B#v|g7Za|922-5I&1^=6!(UqOyl+2roWARCM3ai{jI zX~T_?^|)XEm;zg97$_3HrBXV?5YveHgVLPsl&U{)T$pl<6ov7$j^gx-7~L7si;yI9 zIWd24>HOhS6CyP06>{H+Pl=`i>R&%KzG`{`LS0`#6Tr?X( z2kN@BM0oA+K5fr_bg@DJe&oY-!@^V6G^dr<1SmcvZ}F4bV-R5Oq@+-6OcT%`9cG^K;>ar;tSfdaxqbKx*cqYtYHv}Ekw z4o$0Kzpwjb8z{Y7DG;#0CMfubObjEScZ`0lUSl!%G2n!8#RK8lp%(MUunOVRWRFYK zGf~oPj&ICG){oJmlfiusy*aH-$D%Ay!?jE89p*^~QZj!>k+!{%f@pQU)C;U;4ocF} zL_sF+yH#Sd7riUEd~Uicp0~^&OWyP;w}ywT$4z;s{dPNu3=paWjy+9bt!cYov8W5A zKRG5xKqya)d8DZJD^2q%dwc!&(KC}+>@Z0{^U8b6-ir}aLudCc9XuK7&N!x}=yg9z zVKV%O={w;rj_Lo#{D5{(h}l;C2&ZB3%}LMA2Za97W9=%JFQQva??6&Bb<7rU9NY~^ z?n)KPB)c$@U!s`GP`~I1)ZaGl&6c(A?~}vQuty#W+>s%-fdT~|E`~`29C_0-s~Iy6 znpL1JJ4BVG9+&PwI=61);gThJK$p%D5##*|LdJKrAdBYE4iw@kmdYM9U5#?cUHp!Wp;1h#_t(7!9N z(*^wg+vINBLllYfDxkK~-qX|be&ytAban|Go!n_>)Um4Z*4(O+Gyu$Ap_+o%7D^PG z>Xa-suUEM4{#iKek<1|%0$8OTH27VPF~a#N;uJ{jWj56Bcw?wvLVOy#e3jP0(P z*IwICpCLJ@z35AtfT`)*G3%hqxq}JDVDVYkjOp=sF^rr_z0fsm(~k?1O_WtLS~@+qF=~gAZOQ6* zwdQ@DxGIudoaEb!ux%5muU?0u)88yle$7|H1qOjbr0%FE+ z>FGxt8Ca>}Kf@=V$2ZGA;N{U^26Ze(R*Rz-=YpraF}HiR$nCP>$Wirmu|4JHfgyXy zWVfccNAbm?b^ebW?+%yD+5L1uRmH2Z_;uMxj}M7H_`X;?@xxhFN3ZU#hI?CKw1-WG zTj2}+aA>E2r~5yqvj=)p3CCZTk?CxK+X+UX9Ccakkr5W z2m{e^JR}~XYA9&=Q}}Lwq(xq5Cyev&p=}y`TUJ#s)GB;H4Z)Mrt_dFN; zK1kn$vfgODj&^G#u_UDN$9jb~DeLwaTl0w62u?mCXpDWNr0=l9N1qg>`R+bnO6@fx zD}8<01lD=8{N-v^hVhDhop4G=+SJ;8FKMf$&8n|mHVW+1#;Ry)`f^|^dNE+v-SHJJ zX5egN{m*cVX>EH{e7)dXse%n4#zXt8?_PEc!$^0@I5R-rLU0J7L^)GM#%qx=38oAJ z>Go?ZgT}KGpy*Dl1$Q|Qg&gOu{BiMZr7=M>L=l*Ut_~J|&H+Wr@eMaOpi@DiB3ibo zzHv5{f?PThKbJ;8OU+F$`DwLL?Z0{NRg5#S5OZBSLD1Tg0w>rue&!%#L3j??;q}Z5 z-}!aj%lKuXvWrPjbsqg2W_MzhZ1Lfpxjd_W{U01YnXZ8P0u+8Cl$TsAz$8Zh9S?kc z^%M}~1fBwhO78wE;(PNS)1^Z0w}1_!7X){`v_JE-a(hwTxIEc6nO!wo=-6_7CXGe! z*uanN*`?XRQ)a{tv+Bk}z%(2;$BCD4aIjViDbh>YiP+t~p!2Q5_@HdsT}4c|4LiXL zU(r>)Y0K>^{rRWyAb%DXz3Yuob2C*iNF}Cxe2ro{$LKCo@~KVUgUVnEkGFB8@qJnI zh;`b^*h{|CW+rqs@~lM7phxUha$?EDe@rb*>CBnudfk*O&yvuAG#183CCoA1{M1d) zaeMd_F5Sw&ae@!7Yy#mtNHbr&ZpR;jZK}n^N@H%E-&_snbpS$?4htZ*j9c8VsJQS_ zpF)G;KvL6~Caj`-Lk%Q%A`mNfk}tCOwZPghpY7wi4`CKCUN#+2g4cG1TtwYD$qeOak|z>`r~rVsmBv{@~L_c!uzBN$&?Yl~NM+K2+)Q=P7u zJZiLeTP`^LsbAyFb!($A74Lscf}E+f9KxcwN==)pj@!B;V-(S+@an8fm4mw83=bED z0~z(NVeK2zfh7BL0R+@mmc|#(M5p4g1YU2Q8)W{G;v2*XsZnb)5(}JvXCpRpE5Y!N z$P{jz$HTJr=LFPPT*Q{>vd7z@vH_@Gz!6vm(|g{F#D=lElYu}mE{0mmQ=dS)bEH^I z>?x9~2#~!{9(g5G&+sI0A`{@gF>qHj_%t|%KesDr^Xl@McZO@i_9~uhD&D7Co+Y#j zgm3;H25!`IFEJMXcjzxd^A7eHSi(-?w`avKp6Hrdu}N=*HshmLQB{=y`@oD-9Y7`o zh$XC^e?^Tk<^`{ME4jW0P;21i&uK4SDpRGIUstVi>e({4LrBF`9LpUU9|;N9-{#I^ zH47f~O+Im&WI$o_mL_NgO4IHP&Qn}vHCPXEZOE|;emHi0RihhidnIt_=NX+s{@u5z zPACY&hN({<-!Bdtusf2`s~08=tGuM;Mh7S=C9YkH@WeQ%;02`CI9wSn6RhkX|IJFJGGbEfL|_bg#7gjSxXk}} zVUVun-ZXhMH#OkOAi=FR0Hw)}Z3?bEvH2QuT64%2$lV-_bpfPNL+fiDrg~=(7MB_Z zY@rAH_`51tg+q%1P&M!;8XZ*us;5hK?VGgldmfUY=kRQ^Bqw|sS#b{<&Nr^QxV8R| zsf3z%W34{dl86Hx(+P+I!eq9uuJrI0paHx?7Q}T;4EsP@d@*XP6gnrYy0rUtm=ZV3)pukLqWbneB-c z8f;6?{t)=bbUN*^J(gRua+&#^Du<}NM{qOWy+%pPn(%f_5|;<8;DBp-U%``@@Z?6{ zveM?Vzyj!Hm9PORm(T>xgutGEOajCwJ9HNjYf%%Qh%@10;3??sgr9xVrjrwD)ZxCd zy3(yL|HuU|6tyx8b0I@+S4QIW9Ta~DDwc<9tIvb_<9GJp3TzORnSw(1&$pI zp5}Nl7?uHl=HS5Kf^mibqZP_pA$4tWJxoxz&H*UmCXAHN?uY-r19F2q@>~y#vIG1} z(OVsQpShd*ts1iuPuFBz%(=oalWe))9yk zceN6}to*4>S!XeJLydL%m=6m*5qq?A?f8_CzPf#OhaK}0R&?9A2&y14(mHV%4Y9Wj z06`EKfaI3!emeTb;_m?}*{{g%AJfbRKK|WmWiM%@Q~v^g$@noX0kQWlXvT02_R_Am zO5XC9eg3{bWe#Cx;kn@N`^iNV$i zoCCe;AA zFV*dWd5@M?yR$%Yh&W7I#<9uixMd22VWt&u zc=M)#?ZWnK^_2Fk!zeLuGZT}~asU#jH@cRzGglRNt;f(iqG>5y!qpo^y!>-~4nYgs!5%d?*%be+bGQnouZ)J&_Ns+k=dPR3_ z+QjSpi~tJ^#tZd$4h^j2d6;Qlzh#N9;-yI^xZrB zT=8)8|JZ&JcgQJ|?O@kqMTxhU#>pUURKk@ope|Z3Rl(9(7nsvM);OQ*xh(B*?|7Ct zD|v=nGdV`o&&u9af&@Bc^Vh1fQS6&fz~TJeTKC4%x=Pv%h~Mp{~HJc%!PQ z{|p5GNw&qfL^0cssNdKJr75mW$lnukEt`2t7cc-X;_6Mf7^vp160CP$skXN9qX(ZtmRe~ndS7V|3p zN-lG^K|*4VGD);N&@FnoDKu1aWOxtx`%RYAka**(@et?l>?@%MjlYM=!%f-Z3)=l( zE$!l=PoKQ*2kT4WiOpwEG#zcLcsRQOPp=s~ zb(uJ;iOSxBkFu;kZhK-9Lv_RlkD~EUb1DIWK(Gu$ltj+~y%pYTcxuuWEo;$WtcU_F zs2Q*a1n|tqMTA%cejA$DaM>}Y3kn}DtZHD#wx1aU^|bX<>y^FtG*P;{sg9j!ueXP0 zCi81PR*Y879$PntVQ_=kGyhN_)UW>^latjkuhs3DA-0?3WrLO?^dr_o`DM+p4Yg>g z@9sH>wf`kvAFQ#E5>Q-pVr?2$+htoS6ZwF}#W)|3`+$&86*<)XPE1$3iWDXfEtN0y zDv$X2*v!aAY#2vU)~-#t6WpUA<|^?3}*NuAVaFkb%vmMi_N>9GhN z5-{7h6q0;utaJIWKa!~x6voE^^yq#VTx!_%v;6!H&o~ADkLiqH)v`t%Acia&fR~pN z{OGHl-BHr+{6Vuo|t;um_Uw@`|)4OH0?LDD!7AV zl@srIJUJ8(y+xRM84vP7oA#SULKkHz2o5c9We&m>A9-M0M}XOq^Zhww??B%W^1#N z%yo_?XY*IeG7%SZe@APl`2mk?tvr8T z5x@6i3CijX@!Ng5zOSaL*@CTD9U2FYEXuzQXaLzFO(Rw0?_Tij}-6)e0=kMaVj^VSo~G{mkBku z7rp<5;{MJ>Br|?dCqPJw_k?j7K3Sr}!Nrs7Q;Hd-eqv4|DZM_}H`S6vR`|7sMi`t3 zp&f0I%9?VA0ncD(#TT^3dzVq;0)mInlhJ%|w(sr5y?z41N9Iu34t7r_fOlWe)CLn} zJ61K>@I>rrv3ir(E2Zl@sJe??p&+!&=~oJD&Kc+VJ>yE>x9;mpNTcu|zf)CxCp(pw zn6tY`AC-9dVrhCWOs0rg&QLp!kg!3W88*w3Se@>n@tx5~(MWA{WZxBKGY1B{@K+uB zkL4H?*GCx{OxX;Zc`;X?R&r0m@wbZ9!}E@dQ!RY<-$^z@mHfGFp`f;*~Fez;wxBRo%Z_F2I}{tk*S(&YnA^98lp zB@I6?&N^DC9WWSwFPhVf>2~kM%d5VKpT2x;n|fZl@#$;IoSEoAjV&XItpuMVQTs@P zS8sRtpz48djz&fdiO(gInNBK7W5rHYQ*iI!KKE;k_fGLkU->!hBK%{S(lbTr&^(tz zYqLwG;89f5%WJ@C4p;i$QwW#o$RQUp4NYcT8A0rudNhSAIZUkxIye@&=tx=FT%wh zskb@NF9Xp}YdpL#fijW%*qKodFvlIf-+dsN!MI<|(N^LwZGTT+`|O7((yO56uiJD0n5x zmOq~UV7`cR3}9XI3kW>s9?s(7IgTNHL0Q%Vud*_w*1t7(8buOtgLR>-O~ye^ z80hWsG2=7&`SzGE;UkTtxDrrx!WCz)H_3b2t)Cgt>alMx*Ay~63B+s}>59tPbuZWW zorlqHqp=8X3c{N@z2=VPMrt8nFYf-{kq&zBz;#BvRaieq1{CYL?4K_5DKs#=Zl1|WeiI};QZ$x;uKKkRdX z;8-VN0Ad%RI1^@sae`vc7w{oQStS54U;z9K$W%~mW5eEw_oHnYV}wIyEHVJqfSUOG z^+?a_lfUIT-qDl#SL~suak!k%ac^J`f)Zrhl3XNR6}rF`_*4O@O>qRpB3#vz>r4DG zuPyja?xEfgTZ*B@1NtmnEuZ>5M;nv|^l|83-MN^NcSTNoV-kE(UxT<#q*#VJLgy?R zFXe^bl5kf-du}JWvnt13$TuS@N?9uuzt_`4&`0*~ZxC^zFXw(IiVuwZUBA)5YBqtX zZVMje<6!Y?is)=VkjI3FQ2Ftl(t5YD2^lTyf`Bhk!X|U;C zL5Z0cC0u=VtDS}S&`av}M|z|FA5C8Y*W~y8|18)>jS&($x>OV`RL6u|9z3s)|)IQ&VLDEEozzY$j>`xMw6+Thb2eK7{(raf%4m58JS2Uvy8}Bp+ zcI^MOPv4Cc-P}lTEtvs`g8k%RC623FopU`{qw?~W#Ns&-R`XI|rRliIf3*=N+9n@+ zI_*wV_-#PH@m62Qk}uh}ZVcq3(Z<|FMUMCHdd|AFPBf-}Z^7C;U>ECPTl+XOeeNFP z<3HYcyRqA`Y9DHp4nlmf;opGhm06H=y9qZd2J*yXWaer>85}4SPkuX7Z?ZZ$ea$MR zfvUlh5U;^cO>MmPrh}ZF)crTz>pzGt`#Dljs_%Pkv|H8pwvikuZJ9&7kl>b?^Y~reqWR|HM`6AMbBf5}G zH>*`sz5H)vYSJk|stzQrGpctQn*{aCglX)%S?why94+#;IxOc9adc-BC0Qr@K66pa zbpm*ag3V1bUfS9`x>-DudTsphSkyiEt3)L0|Lxt9gB*VGbYH%@uw`N86P~m)@4U(Q z(Y&vX@Lq#1@tQFEflH5h`udQthnka7b;iru8~6K5W+F)E53r^QTUxUQpg`nuSIPL~ zhzJ>Pwow7TcgoaK;VdD=->xw(V!YI={*jR~+kQDARBGnd*xb6@$8(0%W5OfZg>*Ol zEpNMz4A)yhdMHAbQfprHY5CkeSMDpYq$gT6F75LKV{k{B5L1nAIN z5qJuI#?uetCng`wjh2mBf8dlA`m-gO+h8|7DWYh4O+Y$cwV^3Yv6_GMc#dHv!bX4L z>SKeN1L2J}sU1h@gkq6PK!DxUT1k?^wvP;6D9Yc^jVVA4ydM3Z z(o(Ce!G4lgT?IL>C?ieg?FXPDjQ0AQytwl1DmfJsfAR7?IBM$PrGnbEM3efQUZMo; z3YEFbWgZlB#Ap>A)eo51LDw3~iLJmjd39*I>O! zC_kuu!5g6h%HbTnXFIX0N#$m|Dv?$z!K3U+|mgpS6Z|jqz-;M$~;Hy-R4|Xd8(y|kC7#S=>?=E2~mbIz3ySp zhf^o~MG#;=zSTY~?&7nI^Hc7?m2q3U`YD)ybWbZ@{dprRD=wBVCtiaxpxrv>jo|G& z+%o@yCdzWhf#V17)TEpc+JK zm|sZK$7I0v;FgoJj|$$Wwk@0U?Ule|#k8&NDV(KTdJ|-mp+)z2Qs&WCvnNRVwKSvn)v8a~t{@Zi! z#sG(3`%e6mo51%^rNLBq`$i(1>E18Mz8w)^@p~lvLj0X{Hy{TAt2pBYVS_Q7!3^Q< zp5PK!EsaO~9 z-&rF@^iPZ%Z!XrsBPq?3-FiRV^Vnla3-X}zIl9>HGxY($mB9ca)OjW(IWbZR6=U8` z>FPx}DB@x`v?9Ist$&q1?wgdyJYnvmzl=<2)f2bf-iaydhk!&wQaSuCd5ObeVh)XE z-C!@8_>ndQR^5>W_$zZ*4pYNqK@DmS(R~H?A*mKNH#^DX+O%J4KJ)hHqAV92;?;kd zXR1Hv=ozS`qFTud7NQKL|E?Qu*cggl?OlO4+LqxfTl$1 zxEMXM#4kHX_o2nG^DLjGY-*J>MB~*nPtB^(P5DA+RO6!Svg=2r>g6Yg6@9!HeFm-4 z#-A%5U+CJOwSNt-77w#r@)wYlZDu7njvF5)+_gLCwn|gZ*t&Jx{WqNL+6PP;GbsN} zox5qidTHbGfYHQgxgn-<8Xhe>c{#G!~e19F~6!*;o^wqFU-9DNo z$A#Fl4ktxcQ4L1^FQaf;Z`Z*#cEi|wWgBFxrA_OeT`~`H)%DLRIGi3foG|CxS~Ltb zJH}!~Zq~P35~3QE;P*5aTNvN>6fk62425Pm+`XK-CMhTVu(Z(Cec`ko0#IPJEsPh? zr}q%!wlKIBjrh|nL&dK{H*v}ZiN8#+zuvq~KIz6cZ^Wb*y)Am5^Il!x>0M$>n8IUJ zqpfbOQg^&hy@^fsHj86Kq?@A%pZmaK?@4FP`gm5HrEXY7iPK3Q;pw>4Df?)M{hMG3 ziMEL7e=!Att7UW@(^rP%+W5bM1;MkSrOaMHBqMGUcjI=|aA;Gxb;)Ybvzg}ITwZ-= z1D+Y; z+I=xp4*(%&K8W>BIBYD0IlTQPM@^rmHEK|Pt>ee!_;!rQR@|lJw>z;<#XQSicLxqF zt$3{sUuRS_C4Bt#NhIVyXwXMLfNzIu$A@j^r|UwD!x7!)Z}}Yre{-em1f|j^$(dI&?X0t{ zL_SK83R-OI?Y3Snf|?U+4_bhVL5q^E6x&`1Yd3LVDW=)4DzAl?g+J(gb|E{}txV)z zk8sMKxX6DHS1?i11r{7bUbJ-X+UJ8fKMt)BAzSkQd_>QTUV|82Ti`Y$^N z9ginUTh@H87O$506r~g&3myV2Q)-Uwg=1}0*MZH+N3e2czBO`dH({UiVeAjPQ7uby zu$oS?|K@FK&h?ZLs-L?)D74Gs_TY(#rJHrYQl)YB#X9a z*@_o23t@?Ck(ac~;`&7=5`raNp1qv$+@s7|zvvG1r_T5&L#b!;qO9ZMe^4t?)WYdK zK?46fBK+!01%DAb!W>Il*GgPwb*XctB%Oql^sOyd5*I5#20()d!V>JXk8h+$q@EL8 z_^$d1yLQM=xokciGvmq~oG8_Nr6Z{|#U&MDqQVYdlQqwm0&eihF$+4@-Oz4be)E^(AwxF7loH*u%#Sy~LKv(cN@ki9$5GM%1L8|W1oMc7ppbi**2D0 zS1Anr`4;iuPxSU4cjv<(jJ-dASK|(=m_v!|mJ+@SPZV#*v`k1HHYVcgf{ENs5kbA??+V$I@RziSY z{l%$`-kXN0g=Vt0V!fQA4RTILO0Vvby^eA;Rqt{}r(C?UBF{yelHZvZRX1Gw%IYn*6U_C47tK`KwJ9c8)9K6rsB18s3pEw=T;qkgXS})ed;cgY( zy41Xr0q~dDgx!hZs=|+2S9-@m4GIX4XWJ}p=ob(3bcCN%v5OTnJEW_PUj>Od&Q%Bg z#hNcktz`ByKSrAeO6p3b%AFtm2Px(G81{@8xJRw|y4}7tO^l z3vRpV-%I|D#e<+PF;T+l!ZK6glP2X#FGt(VPwZ>PRz8^`gR+f@!!7u8b0KS9Su39p zPZV9ZBzzS%%PKbQnG*TV`bvO-lMnMMmB~AAP<_PV*lk^ zSe)b-0G4$hvMv34uQ|YL_W&j6_x_-;Sx4ZRs^xX$j3=GT{P97x`<3e-1p_P(6OWH* zV=_j%jwyZLG;sqt5n-h zZRTHXBP_OM3*(Ol=Uso!S56`DGQ}K~_|IGGwzuQzPFgkr;I;ILRT5PRQ38k(6rq51 zvGu|`r;vrSKe{VCmfZVHJMPqOYHjN77V!TES#SP5)DoGBYG2t;zJa$*xAQxu2gOy) zC(q4BH)e%79LK1GH_{r8w@!-`z@A_*R(-~F+9jk@w5Q`8SK2DNPR`55 zW1Eb%X#;y{x7h40(|!$*)2{tHD7#U7btmy)Q45hMNQ$=vIbyboNLfHbGV4CyB0iPT z7Z*5wV@z^=@!NB_LGGThvFXl1d#KPuQ^B8dR*Kd+Z@&r%S-&lQ)Yvn6(L30?&`AFE zlh6q^tAfg=e}!ISy-g;;to#N5wAa@kVeerwsb`zApOO-y2!w_UAUM@`a?{{ifepdh z+0$S^gA$JCBCk0qHdra&dz8}{c17pCX6)=>#ZutHcy_>teZOBv&%l09+GFPbAmNo6 zSvGdwH&yZYvnVJ2jz2no=}%hYw$j---4A|}|76NAPWm_&uf6cAY5fxUnRC6PQkLF! zpTBnK&f?L0q3fKIh*Br3VE^-T7JW;Aa}JA_p7)sPooHl<77Qo4Mc^f-SQgWEss=i$ z<|;jGOeBLpk^?vnACr$;%T9u|CSTXQx9j+R`LOomyLzdzc?pf|A#eNXJ<5zE{Dfd^ zX~Wa1t0@Ks#gSI-fbJbz=>=#jejEI?eLW@Px979oV3z*)%N_26vBv@dp|5%wvL2V- z$8rT$k_8uB7q_Q-@5hhQ$9i=Az>5xwCW+ggXW5k_0D;v>B8k3!c*Xm~dLl~N)rpta zB`QFozKIyX-3*j62&F86n?e##Z*Cse>9>j3CcKgStc(oF%l{hM{*eBsHEv$&BbuM}est1<4b;M=beGLvT;BWw(5T`8> z8)=h7yEzNZZ@ZEJP0M4~JeE#4YNvoSG!tj!XB?%KW$v)~^$1FJXiod-=w*eU;k{?` zt9mE7mVVgXTA`G^d!SYN=upk((aY~8i-NiwMsTbC=kw}(+rI%^@LRCgWH@us;r~6j z>V=LP+xCyyl|2vZa)}-Dv_-)}t$edD`Wlqc+uq$ms)~H+q9sv0s&z`RQrhvLHA6YA z+L_kWPd`WLBQ|u5TolK|8Zh=43xY{7LmK7@|Fdn--?VYu7_SuK7>y*>4}^9ge<6Vh8t!@89+qrDV(w?AZ|*aUZ+Aaho+$ z`hd>CzIh<>_Fv<_a!t9j9;$1Ojvvv@Ikm!wp5$<2EzcE~q)2b?xWMw|*Qiw#W&y;@r{BiAauZTp9T;rO5wOkd?OOH!v%T1d-m`6T1Gls##qk})xKN* zEazReBFaEJxL7NTVv%+3&icjsjQ9S7HpLkeN?g~prg-!0tnqC8le@k4VZGCh-mLys z)DxBZdi{`TTaDzrd*fas$TBzq3|oM2-f3SCHa9s4k4KN@tZ1jHypl6-rC4R0w~F6v zg6(k3z8>p8n?&5d5PqQ9))pyL7#v! z{@mezT)@Yp+7>B7kVzXWQx5EDBs^JXLCk*wta+Mq>byXNd)3ki5&_&<%q zLysQ{bH6>)xen2e#wzTwQ2>p*Lc($@RSnSvu-mp-T(zlIF*~HK1t#%_QeP}a$7JbL z0$)`dK9SukDBtv?8USiHXJu%5O_;f8g2(bTLGQiv-oeeyb2q!ohM6S(R;)-5%ZLlz zG!=bwb$7@vDs=p=%KHL-rEqumz!mIqrG#fzOOlWnTOT2DdchArS)|%3%KES1U+ZE6 z8#mU}Ki(u*f*Z??wNpZ$dhlQZa7c-Gt+8FRK?$GTjQ4t7J+B=jAGERDoJt$NRDR{! zo9q32oktFRw1cpQbHmcRy+V(j`j{?glsc}H<>I=G3~XdWe6ix1~fT?ELE6QC`dFfpeTmzV@&c?&oY zjLct0QzU_4FLK~!N8P>gJ;J;9rL)@4! ze?orv?98jsi?+L3>c(U1h3K8y?Z#Pi)8Ii^Kg-IE0TCpK>%m>jM{x8H`H2bPz3o4Cb#eY!F+-$E z`bPV_%I80N43qOUn^`99PsCs3EW3Y6-#NA^St!qF^X?(GWse1SIz%6GKphg1AS$}z z;Cyn~nmf?w(vDd@B~ z<*m1hrIY%_P#e=&1t=T;**lK0I!tmMA}S`muCiyJA-gN6=oKR6F$mu=MEW~)%B2^9 zKNmrR<8LF%EorQb;MEjE4)sZa%>ECI_$76Lz{Xlubpe2TTgh9S-Ir8zaGXKTy2hu@ zr%qS6*I;^8rz|2MrZoRLMyBN4;HlVH-Mh${tW)E+FV(B`J99@P39Q5*8vJC%LFvNK zntvw2(GPbTEGh}AgF26hQ<(`U6Nw=@q>K4T=>vTCF9Q!Je~FX;DeKB$FYy7LiLHKw z+qcoI{@hzSXBlsGtawB&dA)qIBepeIytrJxx!mrl@bq`>QQhR5v4ui1x>1zKu7^gb zFQ7Ih^{=es$Yk8e^Oaa5mR9*(j|Xl{NU#weSiTYWF}l+ZFmHfmrfK~YjYG4vMp41I zPIJ|8{}gH8ENRQO z`cxw9SYI`e4UrO&DjO(#aa`#F!+zxRnTWDRmMW(!w(#K<_Qw)# z18$%v7i^#QI_PW~0sPnXD<4SWvxP}m( zsBuZ1aPNE1=97>`tqI{(s;_H|*FToT=g3Ac-e^}14fv&>U+PXtyG)mn@h4dL44a@n zIr*;;@`_=dAU zC;h$-eC_TLi*ATCjO^)T>#}cMqbq&Xr!K5}A-Q5H=E1O-$IZWA+~%LUot&w+DtZab zV;wM$jj-(2lStxF*2XMef77A%Xn`znl669mq`_t&-VAuq3ZW#?8Z8<|zwA)EwKi{v z9P8$>!hH@*u950V09bynF%S^GhnJu7!2oc1ParOHG9c|M8(LJu?!c5%+ta zkz{lv`j!9$by!k4Pe;H~gr<~i$f#q*m?OEiA2(7Yel$Tj zW-)#vcMhgKOHr3&LOAmdHLvG39ukukd9eXEiwl;(TiDYexjX;Q{Y>KO{X-nFrkRfE zLA%cfdY>y^JpA_h)18E>k;=p=7lB|;VVyh0-C=QP%G3?au!j`K^LhH(M|peHX^;D{ z1=4-5s^ToBI!ZiRRK9|AVec0}GY-spR4Z)!0!y<7dIb#9(JzQ-jI;$DIm zS{zw2$D&3hB|C;e6xlE_r#b`3#2noETj;JtaM(@EK6;ma?-JX(D7oBg)T^pQ(zeFH z;jo)XrODx6k!SU2A?cVymn=Geh?RjGRIOewd^&h&%^H%$G214tqw#r@ELUV4e3-~> zn9f^KG1C9`aG`W7&TZ~V(=#2_&@}UiYvR(00tOZ7_X9#{53crfnEuJx!vw@K%WOP; zb|LL*_0CbLz`K}lx@RI>#EmH3Dtle0=`vRBgGCtpyXt@HStK|PA$%OIy{dlJ_|09B zyK^wI_swb|M>NGM7dJLEKOUr^F>zp%u~(0A^u<_nH*o{`o;s*{EH^C=u(lv0BJ`M4 zlQN_vHI)+8&~2I>YS&wGsL5Kc+I8Vg!+kAA+Z`{Z?OM{jK`IWHsm7}0;@I!;A4Crj z8K1C6gLM(!^@q~b3q+)*xsHEj*Td~ zGrLElzY&-xZP^RR!wiV|rP9FQVmSz1nMRzK2P1hqx&g~Us*@~Ox^sZWh%4j+%DoAZH@|BmQ~xA()IpDXzF z8+-i7r}QLxbxJ&fAoDO`fbo8vYILFFf$CxRz2x?qqhoW~r-F3)ZoGGePu_5P2i@iN zPej?=BMZ6?AM`50@rrCF5wBAyYQpS{dprV|M?88jTd~aTam$e(skN=nJOOf0mvZ)AOFDVT^v-@}SFBo-i z=sqNi+*`og(Td9&{GT*6A}&|nWsLVKEIw{h)x7sC%s(T-vmA}Om9fMBY~HoxKz+h} zs%r3#cS7A=jxFwhcC*87`|fNko4$HwA~~?P;u*^$)_DirpUYm8Kd9celoA~4SC`&} zrd@fE3rB5rSfb&ku+q-6Uwk`ACkxf_S zE!w)@F(kG1h|3NVaNQ$S6rYe> z*ZTc#C5mTwf}~>l=9Bre%$tDZ<7YP2emhOpULxtGVDW67It3O{XGmS}xkZn|t$9?p z#1pM`VrQ?hwyn@>O?X;GKa0)K-XrBuj9l*i4|*IN+V6DDxt+sAyyxax{+tr%pxa0# z=Qegrgxi6(Z6^uC{^q9f`ke!w{8V9m13M|}YF-ifDbkaQ%_&mm#Jtpd?+bgiVp1>B z=oi{^u9prCQ^I!Zvs=*(UwBq?lU^;$u9~^{Ts;(Mr&y@n?v0;xB>tW(D(>%S%!=4o z7w}AZ|6nzyR%?4J^z}rcrxRco5YW|gicEGrq~G22a^^C7Q!OMJ){pSR3Fc{gwR5ezW+ejMLh z+?o1}ctQ^Qu_E$9SbyX5M+2f$RSQ5MxNHfwy68dA#Hn@l_y2lpi�T_1VE&!+e5f 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