From 61da36291deef0210594771b52e010f4c1075051 Mon Sep 17 00:00:00 2001
From: Umar Ahmad This is the problem I had. I cancelled out each wallpaper from my list of all wallpapers I had, after I completely sucked out the goodness of a wallpaper with my eyes. I came up with the idea of automatically changing the wallpaper randomly via some sort of shell script. It’s implementation used gsettings to change the desktop wallpaper. It was supposed to run automatically as a cron-job but I couldn’t make the cron work. The current implementation uses sleep to get the delay So a simple wall paper changing script looked like: You can find the rest of the files on Github You can find the rest of the files on Github Have fun with your wallpapers :wink:
@@ -256,7 +102,7 @@ Well these are some basic customization which should be done by everyone using Emacs. You can add more features to Emacs by simply searching the package archive. Well these are some basic customization which should be done by everyone using Emacs. You can add more features to Emacs by simply searching the package archive. If you’re a confused with the basic key-bindings for navigation, you may refer to the Emacs Wiki page. Finally, once you really get the hang of Emacs, it’s basically like dark magic. Check out some videos on the Emacs rocks page to see this magic in action. If you’re addicted to vi there’s a funny song on GNU’s website : ‘Addicted to vi’ :stuck_out_tongue: Aliases greatly improve the productivity by assigning short names to complex commands and for commands you use a lot and need a shorter version of them.
This can be done by using You may add other aliases depending on the other commands you frequently use. You may add other aliases depending on the other commands you frequently use. The Autocompletion is also another great option bash. This option requires you to only partially enter the commands and pressing There is already a script for autocompletion on a drupal issue page which simply needs to be added in your You might find this textbook for bash completions helpful if you want a farther insight.
repo="gleek/gleek.github.io"
issue-term="pathname"
label="comment"
- theme="github-dark"
+ theme="github-light"
crossorigin="anonymous"
async>
diff --git a/blog/2014/02/19/hello-blogging/index.html b/blog/2014/02/19/hello-blogging/index.html
index 30ce6952..1b92eab0 100644
--- a/blog/2014/02/19/hello-blogging/index.html
+++ b/blog/2014/02/19/hello-blogging/index.html
@@ -1 +1,10 @@
-
Installing
repo="gleek/gleek.github.io"
issue-term="pathname"
label="comment"
- theme="github-dark"
+ theme="github-light"
crossorigin="anonymous"
async>
diff --git a/blog/automatically-changing-desktop-background-on-gnome-shell/index.html b/blog/automatically-changing-desktop-background-on-gnome-shell/index.html
index 8a88fc97..b3ba4b96 100644
--- a/blog/automatically-changing-desktop-background-on-gnome-shell/index.html
+++ b/blog/automatically-changing-desktop-background-on-gnome-shell/index.html
@@ -20,8 +20,7 @@
-
-
+
@@ -29,166 +28,14 @@
-
+
-
+
+
@@ -217,36 +64,35 @@ Automatically Changing desktop background on gnome-shell
-#!/bin/bash
-image_path=$1
-# Setting up a path for local storage
-
-if [ ! -d "$image_path" ]; then
- echo "Path doesn't exist (Pass absolute path as parameter)" 1>&2
- exit
-fi
-local_dir="/home/$(whoami)/.local/wall_change"
-# creating local directory
-mkdir -p $local_dir
-# getting name of the picture
-pic=$(find $image_path -regextype posix-extended -regex "(.*\.jpg)|(.*\.png)"|shuf -n1)
-echo $pic
-
-# Storing image in local_dir
-filename=$(basename "$pic")
-extension=".${filename##*.}"
-local_wallpaper=$local_dir/mywallpaper$extension
-# setting the wallpaper
-cp "$pic" $local_wallpaper
-# echo $local_wallpaper
-# Adding bogus wallpaper (don't know if this is a gsettings bug or i'm doing some basic flaw)
-gsettings set org.gnome.desktop.background picture-uri file:/$local_wallpaper
-# try increasing the sleep if wallpaper doesn't change
-sleep 1;
-gsettings set org.gnome.desktop.background picture-uri file://$local_wallpaper
-
-
+#!/bin/bash
+image_path=$1
+# Setting up a path for local storage
+
+if [ ! -d "$image_path" ]; then
+ echo "Path doesn't exist (Pass absolute path as parameter)" 1>&2
+ exit
+fi
+local_dir="/home/$(whoami)/.local/wall_change"
+# creating local directory
+mkdir -p $local_dir
+# getting name of the picture
+pic=$(find $image_path -regextype posix-extended -regex "(.*\.jpg)|(.*\.png)"|shuf -n1)
+echo $pic
+
+# Storing image in local_dir
+filename=$(basename "$pic")
+extension=".${filename##*.}"
+local_wallpaper=$local_dir/mywallpaper$extension
+# setting the wallpaper
+cp "$pic" $local_wallpaper
+# echo $local_wallpaper
+# Adding bogus wallpaper (don't know if this is a gsettings bug or i'm doing some basic flaw)
+gsettings set org.gnome.desktop.background picture-uri file:/$local_wallpaper
+# try increasing the sleep if wallpaper doesn't change
+sleep 1;
+gsettings set org.gnome.desktop.background picture-uri file://$local_wallpaper
+
Automatically Changing desktop background on gnome-shell
repo="gleek/gleek.github.io"
issue-term="pathname"
label="comment"
- theme="github-dark"
+ theme="github-light"
crossorigin="anonymous"
async>
diff --git a/blog/customizing-emacs/index.html b/blog/customizing-emacs/index.html
index 46c64453..20927fec 100644
--- a/blog/customizing-emacs/index.html
+++ b/blog/customizing-emacs/index.html
@@ -20,8 +20,7 @@
-
-
+
@@ -29,166 +28,14 @@
-
+
-
+
+
@@ -224,12 +71,12 @@ Things to do after installation
(setq redisplay-dont-pause t
- scroll-margin 1
- scroll-step 1
- scroll-conservatively 10000
- scroll-preserve-screen-position 1)
-
(setq redisplay-dont-pause t
+ scroll-margin 1
+ scroll-step 1
+ scroll-conservatively 10000
+ scroll-preserve-screen-position 1)
+
Things to do after installation
repo="gleek/gleek.github.io"
issue-term="pathname"
label="comment"
- theme="github-dark"
+ theme="github-light"
crossorigin="anonymous"
async>
diff --git a/blog/drush-it/index.html b/blog/drush-it/index.html
index 3477f602..1b742af1 100644
--- a/blog/drush-it/index.html
+++ b/blog/drush-it/index.html
@@ -20,8 +20,7 @@
-
-
+
@@ -33,162 +32,10 @@
-
+
+
@@ -225,12 +72,12 @@ Using Aliases and Autocompletion
alias
builtin. The aliases are normally created inside .bashrc
or .bash_profile
.
Some of the aliases I use are:alias dr='drush'
-alias drcc='drush cache-clear all'
-alias drdb='drush updb && drush cc all'
-alias dren='drush pm-enable'
-alias drdis='drush pm-disable'
-
alias dr='drush'
+alias drcc='drush cache-clear all'
+alias drdb='drush updb && drush cc all'
+alias dren='drush pm-enable'
+alias drdis='drush pm-disable'
+
TAB
to complete it./etc/bash_completion.d/
directory.Porting Databases
repo="gleek/gleek.github.io"
issue-term="pathname"
label="comment"
- theme="github-dark"
+ theme="github-light"
crossorigin="anonymous"
async>
diff --git a/blog/editing-remote-code-with-emacs/index.html b/blog/editing-remote-code-with-emacs/index.html
index ee23360b..0e1cc473 100644
--- a/blog/editing-remote-code-with-emacs/index.html
+++ b/blog/editing-remote-code-with-emacs/index.html
@@ -20,8 +20,7 @@
-
-
+
@@ -33,162 +32,10 @@
-
+
+
@@ -229,13 +76,12 @@ Option II: Using Tramp
the problems with tramp started to appear.
Tramp was a bit sluggish when opening and saving files. There were some optimizations that could be done with tramp settings
-(setq tramp-auto-save-directory "~/tmp/tramp/")
-(setq tramp-chunksize 2000)
-
and some ssh settings.
+(setq tramp-auto-save-directory "~/tmp/tramp/")
+(setq tramp-chunksize 2000)
+
and some ssh settings.
Host *
ControlMaster auto
ControlPath ~/tmp/.ssh-control-%r-%h-%p
-
Even though, these did improve the performance by a large factor, it’s performance on large files and slow network connections, was still a little below usable.
Apart from this, I had problems running a few Emacs packages such as flycheck.
@@ -243,8 +89,8 @@One of the options I found was mounting a remote file system locally via sshfs. It did have a few problems with connection stability, but it worked fine overall.
I solved a few problems with some optimizations via command-line parameters. The final command looked somewhat like this.
-sshfs remotehost:/remote/directory/ ~/local/directory -oauto_cache,reconnect,Ciphers=arcfour,Compression=no
-
This increased the overall speed and removed sluggishness while editing.
+sshfs remotehost:/remote/directory/ ~/local/directory -oauto_cache,reconnect,Ciphers=arcfour,Compression=no
+
This increased the overall speed and removed sluggishness while editing.
The problem with sshfs is it’s speed. Any operation requiring a disk scan was unbearably slow.
So I couldn’t run commands like locate
, grep
, and magit
via Emacs.
Projectile was usable after (setq projectile-enable-caching t)
though.
To run any command such as git
directly on remote all I had to do was
wget https://github.com/ericpruitt/sshfsexec/archive/master.zip
-unzip master.zip
-mv sshfsexec-master sshfsexec
-cd sshfsexec
-mkdir -p ~/bin/sshfsexec
-cp sshfsexec.py ~/bin/sshfsexec
-chmod +x ~/bin/sshfsexec/sshfsexec.py
-export PATH="$HOME/bin/sshfsexec:$PATH"
-cd ~/bin/sshfsexec
-ln -s sshfsexec.py git
-hash -r
-
You can check this by running git --version
from inside and outside the sshfs mount.
wget https://github.com/ericpruitt/sshfsexec/archive/master.zip
+unzip master.zip
+mv sshfsexec-master sshfsexec
+cd sshfsexec
+mkdir -p ~/bin/sshfsexec
+cp sshfsexec.py ~/bin/sshfsexec
+chmod +x ~/bin/sshfsexec/sshfsexec.py
+export PATH="$HOME/bin/sshfsexec:$PATH"
+cd ~/bin/sshfsexec
+ln -s sshfsexec.py git
+hash -r
+
You can check this by running git --version
from inside and outside the sshfs mount.
The combination of sshfs
and sshfsexec
solved almost all the problems I faced with earlier setups.
It was almost always faster than tramp when opening and saving of files, and almost as fast as tramp when doing
disk operations such as opening Magit.
On looking a bit further, I came across Unison. It supported two way syncing along with file watch facility. It is required that same version Unison is installed on both local and remote machines. Following are the steps that will setup Unison.
-sudo dnf install ocaml ocaml-camlp4-devel
-sudo dnf install ftp://195.220.108.108/linux/fedora-secondary/releases/24/Everything/ppc64le/os/Packages/p/python-inotify-0.9.6-4.fc24.noarch.rpm
-wget https://github.com/bcpierce00/unison/archive/2.48.4.tar.gz
-tar -zxvf 2.48.4.tar.gz
-cd unison-2.48.4
-make NATIVE=true UISTYLE=text
-sudo cp src/unison-fsmonitor /usr/local/bin
-sudo cp src/unison /usr/local/bin
-hash -r
-
Repeat these same steps on the server. +
sudo dnf install ocaml ocaml-camlp4-devel
+sudo dnf install ftp://195.220.108.108/linux/fedora-secondary/releases/24/Everything/ppc64le/os/Packages/p/python-inotify-0.9.6-4.fc24.noarch.rpm
+wget https://github.com/bcpierce00/unison/archive/2.48.4.tar.gz
+tar -zxvf 2.48.4.tar.gz
+cd unison-2.48.4
+make NATIVE=true UISTYLE=text
+sudo cp src/unison-fsmonitor /usr/local/bin
+sudo cp src/unison /usr/local/bin
+hash -r
+
Repeat these same steps on the server.
It is preferable to remove .git
folder from syncing. This can be done by creating/editing a ~/.unison/default.prf
and adding
# Unison preferences file
@@ -299,11 +145,11 @@ Option IV: Keeping local copy in s
You should also remove other build/libraries directories that you won’t be editing. This will decrease the amount of files it has (and memory it takes in the process) to look for changes.
You can now start the sync by
-unison default ~/local/copy ssh://server//remote/copy/path/ -repeat watch -times -logfile /tmp/unison.log
-
This will keep on looking for changes in the local copy and sync the remote every time there’s one.
+unison default ~/local/copy ssh://server//remote/copy/path/ -repeat watch -times -logfile /tmp/unison.log
+
This will keep on looking for changes in the local copy and sync the remote every time there’s one.
In the case when a sync is required from the remote to local
-unison -batch -times ~/local/copy ssh://server//remote/copy/path/ -logfile /tmp/unison.log
-
can be used.
+unison -batch -times ~/local/copy ssh://server//remote/copy/path/ -logfile /tmp/unison.log
+
can be used.
In case of errors such as Errno=No space left on device (ENOSPC)
, the inotify memory can be increased
by setting sudo sysctl fs.inotify.max_user_watches=20480
. This memory uses
[kernel memory space](https://en.wikibooks.org/wiki/The_Linux_Kernel/Memory# Process_Memory_Layout)
@@ -327,7 +173,7 @@
This is what I ended up doing to achieve that:
(advice-add 'php-syntax-propertize-function :override #'return-false)
-(advice-add 'php-syntax-propertize-extend-region :override #'return-false)
-(remove-hook 'syntax-propertize-extend-region-functions #'php-syntax-propertize-extend-region)
(advice-add 'php-syntax-propertize-function :override #'return-false)
+(advice-add 'php-syntax-propertize-extend-region :override #'return-false)
+(remove-hook 'syntax-propertize-extend-region-functions #'php-syntax-propertize-extend-region)
Here the return-false
is a small utility function and is defined as follows:
(defun return-false(&rest _)
- "Return nil no matter what the inputs here.
-Useful to override functions to become empty"
- nil)
(defun return-false(&rest _)
+ "Return nil no matter what the inputs here.
+Useful to override functions to become empty"
+ nil)
The tree sitter configuration is as follows
(use-package tree-sitter
- :ensure tree-sitter
- :ensure tree-sitter-langs
- :defer 2
- :config
- (add-hook 'tree-sitter-after-on-hook #'tree-sitter-hl-mode))
(use-package tree-sitter
+ :ensure tree-sitter
+ :ensure tree-sitter-langs
+ :defer 2
+ :config
+ (add-hook 'tree-sitter-after-on-hook #'tree-sitter-hl-mode))
For the sake of comparison my typing latency reduced from 600ms-2500ms to 35-50ms. This is closer to @@ -282,7 +129,7 @@
and changing them with root access changes the brightness. The problem here was that I wasn’t able to give a script root access without it prompting for a password. I moved the other way since I couldn’t figure that out.
Recently, I figured out the way to give the scripts root access by editing /etc/sudoers/
file and adding
$user ALL=(ALL) NOPASSWD: $path_to_script
-
where $user
is the user-name and $path_to_script
is what it says it is!
$user ALL=(ALL) NOPASSWD: $path_to_script
+
where $user
is the user-name and $path_to_script
is what it says it is!
After some researching I found out about the dbus module of python, which basically could help me get
or set
the brightness. Using this and a little argument parsing I was successfully able to make a script which changed the brightness.
Update: This method doesn’t work on Gnome-Shell v3.10 :worried: . I will update a patch soon.
Other than that I’ve started to track my time using hamster which tells me that I spend more time researching than actual coding. It also tells me that T.V. is a real time killer :grimacing:. (P.S. I don’t track the sleeping hours…the long ones)
-Other than that I might have misconfigured my mind’s clock cycle. I am usually sleeping when the ‘normal’ humans work and work when they sleep.. and it’s really hard to get rid of this schedule.
+Other than that I might have misconfigured my mind’s clock cycle. I am usually sleeping when the ’normal’ humans work and work when they sleep.. and it’s really hard to get rid of this schedule.
I wish to write more but hamster tells me that I’ve spend far more time on this than originally anticipated. So I’m gonna switch back to coding and hope everything works out in the end.
@@ -241,7 +88,7 @@
These factors are such that they are not affected by the search term but can be derived from the file.
Buffer files: If a file in the project is currently open there’s a +
Recent files: If a file in a project has been recently visited that -should contribute to increasing it’s score.
-Length of file path: Considering a file with a longer path can +gets the less score boost it should get.
The scores due to these factors vary with the search term
File non-directory name match: If the non-directory name of the file +
file.ext
in path/of/file.ext
-File basename match: If the basename of the file exactly matches the
-search term then it gets a score boost. Eg. file
in path/of/file.ext
File prefix match: If the prefix of the file basename matches with the
-search term then the score is increased. Eg. fi
in path/of/file.ext
File name loose match: If the file name loosely matches the search
+boost. Eg. file.ext
in path/of/file.ext
file
in path/of/file.ext
fi
in path/of/file.ext
ile
in path/of/file.ext
.
-ile
in path/of/file.ext
.
As you might have guessed, these are ordered here in decreasing order @@ -386,14 +219,14 @@
This is the project tree that is used
.
-├── a-somedirectory
-│ ├── afile-suffix.txt
-│ └── suffix.txt
-├── suffix-directory
-│ └── unrelated-file.txt
-├── suffix-postfix.txt
-└── suffix.txt
.
+├── a-somedirectory
+│ ├── afile-suffix.txt
+│ └── suffix.txt
+├── suffix-directory
+│ └── unrelated-file.txt
+├── suffix-postfix.txt
+└── suffix.txt
We’ll be searching for "suffix
", and analyzing the results for each framework.
No apparent default sorting
-File basenames exactly matching the search term are not pushed up.
-- +
Click here to download or view the video in a full browser window
- + + +Click here to download or view the video in a full browser window
Default sorting considers recent files and buffers and falls back on -alphabetic sorting
-Searching for suffix
brings the file base names exactly matching
-suffix
to the top
File is ranked higher if already open as a buffer
-- +
suffix
brings the file base names exactly matching
+suffix
to the topClick here to download or view the video in a full browser window
- + + +Click here to download or view the video in a full browser window
It starts by populating hashtables with project recent files and +
Projectile is invoked and the files are ranked and sorted using the -static factors. Length of the file is not considered at this time.
-Once the user starts searching
The counsel--find-file-matcher
is used to filter down the list
Both static and dynamic factors are applied to calculate the -scores
-The files are then sorted on the basis of scores they have
-counsel--find-file-matcher
is used to filter down the listTo completely replace counsel-projectile with this add this snippet:
(advice-add 'counsel-projectile-switch-project-action :override 'counsel-projectile-switch-project-action-find-file)
-(advice-add 'counsel-projectile-find-file :override '+projectile-find-file)
(advice-add 'counsel-projectile-switch-project-action :override 'counsel-projectile-switch-project-action-find-file)
+(advice-add 'counsel-projectile-find-file :override '+projectile-find-file)
To get file icons if you have all-the-icons-ivy installed, add this:
(eval-after-load 'all-the-icons-ivy
- (progn (add-to-list 'all-the-icons-ivy-file-commands '+projectile-find-file)
- (all-the-icons-ivy-setup)))
(eval-after-load 'all-the-icons-ivy
+ (progn (add-to-list 'all-the-icons-ivy-file-commands '+projectile-find-file)
+ (all-the-icons-ivy-setup)))
Alternatively, you can use dd
utility to do the same without the Fedora Media Writer by doing
- diskutil list # get the disk name from the output which is something like /dev/disk1
- diskutil unmountDisk /dev/disk1
- sudo dd if=/Users/umar/Downloads/Fedora-Workstation.iso of=/dev/rdisk1 bs=512k # notice the prepended r in the disk name
- diskutil unmountDisk /dev/disk1
-
+ diskutil list # get the disk name from the output which is something like /dev/disk1
+ diskutil unmountDisk /dev/disk1
+ sudo dd if=/Users/umar/Downloads/Fedora-Workstation.iso of=/dev/rdisk1 bs=512k # notice the prepended r in the disk name
+ diskutil unmountDisk /dev/disk1
+
Fix the camera by installing the reverse-engineered FaceTime HD drivers by running the following
-cd /usr/src
-wget https://github.com/patjak/bcwc_pcie/archive/master.zip
-unzip master.zip
-mv bcwc_pcie-master bcwc_pcie
-cd /usr/src/bcwc_pcie/firmware
-make
-sudo make install
-cd /usr/src/bcwc_pcie/
-make clean
-make
-sudo make install
-sudo depmod
-sudo modprobe facetimehd
-
-
Check it by running Cheese.
+
+cd /usr/src
+wget https://github.com/patjak/bcwc_pcie/archive/master.zip
+unzip master.zip
+mv bcwc_pcie-master bcwc_pcie
+cd /usr/src/bcwc_pcie/firmware
+make
+sudo make install
+cd /usr/src/bcwc_pcie/
+make clean
+make
+sudo make install
+sudo depmod
+sudo modprobe facetimehd
+
Check it by running Cheese.
xmodmap -e "keycode 94 = grave asciitilde"
-xset r rate 200 38 # Increase keyboard repeat rate
-
You can optionally switch control and CapsLock and make Return act like control when long-pressed by installing xcape +
xmodmap -e "keycode 94 = grave asciitilde"
+xset r rate 200 38 # Increase keyboard repeat rate
+
You can optionally switch control and CapsLock and make Return act like control when long-pressed by installing xcape and running
-setxkbmap -option ctrl:nocaps
-xmodmap -e "remove Control = Control_R"
-xmodmap -e "keycode 0x69 = Return"
-xmodmap -e "keycode 0x24 = Control_R"
-xmodmap -e "add Control = Control_R"
-xcape -t 10000 -e "Control_R=Return"
-
setxkbmap -option ctrl:nocaps
+xmodmap -e "remove Control = Control_R"
+xmodmap -e "keycode 0x69 = Return"
+xmodmap -e "keycode 0x24 = Control_R"
+xmodmap -e "add Control = Control_R"
+xcape -t 10000 -e "Control_R=Return"
+
sudo dnf install gnome-tweak-tool
Typing > Alt/Win behavior > Alt is Swapped with Win
@@ -336,7 +182,7 @@*scratch:
are treated as candidates for getting persisted. The
function is a one liner and is as follows
(defun persistent-scratch-buffer-identifier()
- (string-match "^*scratch:" (buffer-name)))
(defun persistent-scratch-buffer-identifier()
+ (string-match "^*scratch:" (buffer-name)))
I also added a few utility functions that enhance the experience of @@ -258,34 +105,34 @@
It works by getting a list of scratches from here
(defun persistent-scratch-get-scratches()
- (let ((scratch-buffers)
- (save-data
- (read
- (with-temp-buffer
- (let ((coding-system-for-read 'utf-8-unix))
- (insert-file-contents persistent-scratch-save-file))
- (buffer-string)))))
- (dolist (saved-buffer save-data)
- (push (substring (aref saved-buffer 0) (length "*scratch:")) scratch-buffers))
- scratch-buffers))
(defun persistent-scratch-get-scratches()
+ (let ((scratch-buffers)
+ (save-data
+ (read
+ (with-temp-buffer
+ (let ((coding-system-for-read 'utf-8-unix))
+ (insert-file-contents persistent-scratch-save-file))
+ (buffer-string)))))
+ (dolist (saved-buffer save-data)
+ (push (substring (aref saved-buffer 0) (length "*scratch:")) scratch-buffers))
+ scratch-buffers))
and uses it to quickly open a scratch buffer
(defun persistent-scratch-quick-open()
- (interactive)
- (let* ((scratch-buffers (persistent-scratch-get-scratches))
- (chosen-scratch (concat "*scratch:"
- (completing-read
- "Choose a scratch: "
- scratch-buffers nil nil nil nil
- (random-alnum 4))))
- (buffer-exists-p (get-buffer chosen-scratch)))
- (pop-to-buffer chosen-scratch)
- (unless buffer-exists-p
- (persistent-scratch-restore-this))
- (persistent-scratch-mode)))
(defun persistent-scratch-quick-open()
+ (interactive)
+ (let* ((scratch-buffers (persistent-scratch-get-scratches))
+ (chosen-scratch (concat "*scratch:"
+ (completing-read
+ "Choose a scratch: "
+ scratch-buffers nil nil nil nil
+ (random-alnum 4))))
+ (buffer-exists-p (get-buffer chosen-scratch)))
+ (pop-to-buffer chosen-scratch)
+ (unless buffer-exists-p
+ (persistent-scratch-restore-this))
+ (persistent-scratch-mode)))
It uses a new function persistent-scratch-restore-this
to restore the
@@ -299,13 +146,13 @@
Here’s the relevant portion of the code
(defun persistent-scratch-restore-this(&optional file)
- (interactive)
- ;; ...
- (dolist (saved-buffer save-data)
- (when (string= current-buf (aref saved-buffer 0))
- (with-current-buffer (get-buffer-create (aref saved-buffer 0))
- ;; ...
(defun persistent-scratch-restore-this(&optional file)
+ (interactive)
+ ;; ...
+ (dolist (saved-buffer save-data)
+ (when (string= current-buf (aref saved-buffer 0))
+ (with-current-buffer (get-buffer-create (aref saved-buffer 0))
+ ;; ...
Full code can be found here. It uses a function(random-alnum
)
@@ -321,7 +168,7 @@
Broadly these are the filtered down steps to get to that point.
Getting the domain: Namecheap seemed like the best option to me, +
Setting up Cloudflare: For using cloudflare, the DNS can be setup by +pretty quickly as well.
Setting up Comment system: Hugo ships with Disqus but I wanted a +you don’t need cloudflare to manage the traffic(link).
I also didn’t want any web frameworks, invasive analytics and social media plugins plaguing the site. I went for the smallest theme which @@ -307,7 +148,7 @@
Fedy lets you install multimedia codecs and additional software that Fedora doesn’t want to ship, like mp3 support, Adobe Flash, Oracle Java etc., and much more with just a few clicks.
Install it via
-su -c "curl https://satya164.github.io/fedy/fedy-installer -o fedy-installer && chmod +x fedy-installer && ./fedy-installer"
-
You can download any of the packages from this point onwards but I feel some of them are essential:
+su -c "curl https://satya164.github.io/fedy/fedy-installer -o fedy-installer && chmod +x fedy-installer && ./fedy-installer"
+
You can download any of the packages from this point onwards but I feel some of them are essential:
Template file is a file in the Templates
folder of the home directory. Files added here will appear in the New Documents Menu.
Do it via typing this in the terminal
touch ~/Templates/Empty\ File
-
You can add other types of files in the templates folder and add some default content to it.
+touch ~/Templates/Empty\ File
+
You can add other types of files in the templates folder and add some default content to it.
For example you can add a new.c
file there and write various header files, you usually use, in it.
This would **save the hassle of writing it yourself everytime you create a new ‘c’ file.
I personally don’t like the new Software manager in Fedora. It has nice UI but often takes a lot of time in loading packages and installing them. Yumex (Yum Extender) on the other hand is a graphical package management tool** which utilizes the power of yum and makes it a bit ‘user-friendly’. I also feel it’s much more easy to use and is a bit more transparent in it’s functionality than the former manager
-sudo yum install yumex
-
You might update your full system after this, as yumex will prompt you for that on it’s start.
+sudo yum install yumex
+
You might update your full system after this, as yumex will prompt you for that on it’s start.
From this point onward you can simply search for a package inside yumex, instead of googling the exact package name to be used with yum install
.
For the sake of brevity I’ll only cover these topics:
Setting up the environment, i.e., setting up the directory -structure, git repositories and tooling.
-Port my markdown files so that they work with hugo
-counsel-find-file
is more intuitive when creating new files, in
different locations.
C-x C-f
bound to counsel-find-file
Type in blog/blog-src
followed by C-M-o
d
to create a directory
Type in blog-gen
and M-o
then d
again to create another directory
-and quit to ivy buffer
C-x C-f
bound to counsel-find-file
blog/blog-src
followed by C-M-o
d
to create a directoryblog-gen
and M-o
then d
again to create another directory
+and quit to ivy bufferThis is how it looks in practice:
+One of the few incompatibilities in the markdown spec was how markdown handled headings. Earlier
#H1#
-##H2##
-###H3###
-####H4####
-#H1
-##H2
-###H3
-####H4
#H1#
+##H2##
+###H3###
+####H4####
+#H1
+##H2
+###H3
+####H4
were considered valid markdown headings which now had to be changed to
# H1
-## H2
-### H3
-#### H4
# H1
+## H2
+### H3
+#### H4
This again needs to be done across all the files.
@@ -448,18 +261,10 @@
I did this by:
C-u C-c s s
bound to counsel-rg
to search through the current directory
C-c C-o
bound to ivy-occur
to get the search results in a buffer
w
bound to ivy-wgrep-change-to-wgrep-mode
makes the buffer editable
Editing them and running C-c C-c
to save these changes
C-u C-c s s
bound to counsel-rg
to search through the current directoryC-c C-o
bound to ivy-occur
to get the search results in a bufferw
bound to ivy-wgrep-change-to-wgrep-mode
makes the buffer editableC-c C-c
to save these changes
To keep this simple it is done twice once to remove the preceding #
and once to remove the following #
DpNMh{%H-YJBpn3swg? zxhn?uSqikJVtha#np40(m7cMz^!fQVOSw9|u*W0t81ZDL!sbZz{g2laFDeE6RKpXm zIaS0;kWQFh4op38Wv*|WEy&^BKAZ*hO>@3$AH^vuvNXm55ZkXa;~pb8T9GbFjP}wN zRM;GB*ysYXR#i9|%8GQgmN(Kxh4~`;2V{|{0=ls@f*zN zAz0JX0qmI%jHR;Pmj`w|w1=`xpm 2s*4?MQLh9~=&;MH=D5mcuagf?r|?45>3j%!R8G~hDKy1!Q_ zE|Ik5t@rU=Sbvsti;5v-IKOA)+q_0YN)^v%`&$TD5*a57fCQ#Va>?Bc`C)$itT1F@ zuD3;I-p|3dT;J^(-gLg-*r>@Ay%WKse;rBRYiDk%o?RlTYSqzyLW?Iv?R`C?A_`>s zK2YaGy}Z2tg~v6~_@c9koqJ-*M%$>N{wzpRr0tnhG5eP}azMM=DW)=`*cegCgxfht z4g&RRhKzUC)woy~YMPPgznF)#C2tI-1@Vnd&GdMha;bju`ZB+tzL?5U(-_wN32R|l zth&m>Z@bo##ib5GJwq9Fer&>$6*N>r%IWBD@9OO88HA1C1E2>Pp$Yh-mgZPz>RA!A zstPWSPL6s6zSXA74r#8-B}^Y$r)?P-X$^P9c_?d%cDvJ}r3TRhl0UxD(_V~lH|W>G zSP|ngVg-qmV{ku#^SK#HtdLt@uOfRUG|~}d8F$j7UxJ4R`WdC9{@G34@-h F$=(bM~T7g`Xyr8ayUR3spmf?9klRY6OQwYkaTw9?bFugkMG z3?m&YBO}+)x&Exk)?%~7igZ+GmF0o=m6878+*At)= PX=vcxp+e7+nW@XE?Fwc{09d_xl0^IaDX z>I895zm`>-EaijTk5JMaOkTT3Mmp`L9#47t zI7?@Q?Q ?kCj|`=n$84vDeJfYaNiKDxQ_Du2F7xb3;3pf>x =aHg81f`J6=} zW9sgi`lfRaL(gy5gccMI=L^>wNe1Q+jb@&)r2|Pc um!%?Th`Ka|P7Z^;o6&3%wZJx5WJ8%)pg0`A{o zeq&!u&l2@;h9?!EpaYTW3f&guM)3lRK1ND6d~f@GLwcDvBY~S=U0#m829zLKc-3{C zL(fi40K7mmHjN12BR^0@=XNd4=N@K!5~!&pQG!N1(I+%%jRv@M+cCazyMHYAoXX=y z##8_H(9(Gp&j4CZe^Q^}5m;0_e}{za9flH7FOU1Lz?Hr8xk=3U11Ozm+3)-D*izLe zzp#Uh%;zN$6{d()lvyKG274&K)$xa85W$-AEqMT+XNT>pemxB4 {qp0iDI lPe-V9>Kg9~h#f4y_n zT zI+m9=#|CIuLD=2jq}12<=?Lb&<9wDI=nqc=ih{oMTDpJ+SsA((HnzPrMbjoykLe&j z{`uT=zilZ9XX|f1aaFLgm4u$CDF*cwf`01!XWKQ2fYfT5h}WPuQ(oh#A#CtycY}Bq z6Ja<47jWBDLVigJvu9Y~q8hst!HM*bki{{6Fft#0-pl;3)>92ZJ6q3*3Lph(Yj0q( z%Co=V>S+}zgQNH3!!er1=PS1lkjjsO@yy9>oc!M~gwU%ANRa|GCAi(3rub{@c&S4N zZrPw{Z&s5DGU00qH%b6Lys1Q68@Cm337Y2zk3wQ5f!QBWCPFM-A1~IAKhmr$HcLkj zw@nwk=R++TDdhl^;slw|d={*!VBTiOY;EpK @?P zi&_V!k6w{kLnCfKveegJOBo8z^47^Vo{cAi53E~Ob$)FkeE@u%1 ~Dda&- zajYfXgsyO#>+Sy%pkk%S8(S_vB^msh3dLAlhI~e9i<;&($ILT-Y<~ y6F$`lw^IRtJb!fLL|@c`kqFk;w~jhy!pRbO>eB6bV7Jf% zSVujGQ#&FnHq2*?(SoRoLHarO_s&Fp8euT)t(P?I%ttkJ>>Zy8ut#h2Io^)=Z7;-K z75bwAXkM55VrC-MJo49=?-``A`$DdK=qr`=BE)TOVZ6^9p{O-73W%}I0VR7a=Dwci zs4L@4^$Z3xM=3!MTF(g1FAVZ`VcGoOgfvxDpk>hfz{Wzo(kzKQ;2&VeiUVU2lxl;) z?B<*1a7_pA)Ur27dF>y&HW_{ZNq$FyP&c_z8T=)`^G}rK*Tk01twy6*NZQbYA_cr2 z*52W6zALc~TGPr2Xw9#&95kBKdUh=WDi1M;WM?E9az~Y+ViF9{nGAI-J-AOS36Iov zbeyw6TdJ-&WsvuxlnM-?HaI)x6dQJkf?*s{hp+Wh%e_dLnLJEB3I<#pAn>p_@99k0 z5L6MC;ScQ#5t&*5!-8+`n+INmG3U~OPDdjB9<5-q&*;QN)dOCl2PcC0^|a=@R~ghI z;h{EFXQDe$>%<@Ipm{x^f;{f8Nh%~A$DgraNwj}~7J3kUv!(cJGa*86#t|g17_25k zBO>G*B3 _En4qTs4SnGjQOdzz>N<6esf+P08DZ{-5MRHI jFh--9G(dJH%HuRa5hB!7^Kv8F0Q(Ii(wz+qG_RuN=e*2 zt`t8~Q(xMACdx`6WdhCb+;kPHp)8oWet>O|wdkYgv{X1!L{X26SHAaQ1;Ad>z?Smx z;sK$V2{)h>h28bW-i%NJ7|EM*C#qua2vbK7??tAk01J&E8kUSXfo60wkk6RVU-V^O z&B!375Ohh1e=inSZGzYk_wDKd->n!DCY-E{n6=EmIv0Y=05cQJDm7&+I5n-zR~B)0 z5ZY7yqXGuenpw_{L+7PuZe`d&hGNg8B(&V?y>-Xh9{~P2)eb)^T~-GthTgG1b!fhj zWoypkw#v{~j&~YN-_JT>26=ciq`WlAG#uOgH4lS~s3?5g3$ST20I}XcSW(dBI(iKM z2hZiQ0>C$#Nk?u?eJ%*R@nd(YBmCDIdZ$BBNGC;deYg>Hn2>D~t08nTGzr+t{}mdM zt}ygEn>#u>F}fbOvuyvcD+jo)!FvHc0EirRd=2xYe0F&;_3yr-0XZ7O@YE(X9X?1P z(MtKYACD30c44;rdT?*2W1Nx9zo5PxIo}Zgd5yU)VvpQ#U#0n6p9IdyuHiN``|Kd$ zKtcU+0z5oXt&Drk44Tyx8?4=kLqsUAY~+1CLHt;dS_u{%4~~!59U5*0jS6ix?ix)H zE5si2wi$(`0om9}-Ybdxt|8Rmh2=c8_3$3EPZtK7@;A gGYMH%kiFC3($x_n7opM$cHY)y)!C *H|he{pX2{KlgMjn8%tY@j`Q*Sl&*aGh-_N za@~(tZv||Q4@t$gatxtlgjr7OOUWG*o!pQeKj|J@&uQ=sK=EXLQ>+r@B~mSlF`=mW z)#c$$A~;20l7yrWWPec?q9>T^SX;vD$Pj(}9Q0z7GV}v?M{j|ADHF`9GeH6f;E{y# zAMeur9KwtR!<^J!b!jC*$X4 GwS0g)n{QQYJ!_WRD23i{=k de1= zt?=^=605fgC|14d7(h?t$7mk-J3}zv(PR_J838FCw;}c9ro)a1{@aN87R+=W42-Oc z=4}{GNOZwO*KhRLr$>uAXqbf?`oK=q;&KmQEvrdXe}tj&{1`DgpTqh7qXNLys$kuL z2rK>d%ye`)TYH!*_4|b%iZxuWiA~pe3BCjCb#tqT6qIJ0Ft=__Bi1EQGT!ZR&?Uuf zd*YpyRnYIV4M!P?eD0AQm@~2HCfoK&%h^EQQkuM|+%5-!G)wynQc53+&@0uw4it>& z(a$qH+b;)ogzhQ>Xbsi1RJX4u>d V|JOo%qIGQUseJeSIsPn`7#})J@LZtxxb@~=xS0?r zE$as}7w|j#WqIEZ;>n&InU2|YA|E%`Y?YVuer6aQ5iPYN`k;uiR{7K27tmC(W|UnM zNZeFxxmU@Pz*m@uFW`JSh`wwS6A`U1>u(5+Kt~&q@uxyqHV_QfP>mlO4$N!$V+J*b zudjy>Q!#MJBF3Mb=K)1M3HdEV2U)CN`p1(ov4B_FZoh8>zq1_-X24&(op#%0t#!I; z+LQT|@T !-kGQ=M!idLEv3_~90KLY7wI< }Myqp82qdg+k @V)l!mI*sNT_;sJUHBX(W`5- zXw!V!nP#G?#$`@uWVU9jEUv0Qr80UrHvt@4JP-5ETc{s!#iYbfXsG{{DJjaYo3-L@ zOjt~-Usw?7fe{~Kak7VvuLjuu4B45^FGzOvu+13hXOiv19NZ7_Qv?6bSDOr9T|fJA zN9uA>e;cH!?%-fWH6iLLxZU1dF?E_MZBi#gw_A`4e?h$9p3V4v?#EPlo6+YM_W 1K`-O|IAyJF&ze6jU&_?FT}{ H&$kL0n)`=2rwDMc4;!*FS_xf|wRl51iqDgkHpMtO$)8N3 zEkv1|Df!*cS8^eIHuGk@&z3XfD>#5@P4>W= {Yg4hXhC&1koJ??*OcW YJs40_QV? zFQp)w<*RNVKkKaCW~s1fR~=3JP>4C&n~U;V!NHB+a(ZZXEXl-6J%c}u4RZ|*lW}u% ze~)J$9u_c%J#F`#*G%k33kTi52FhEuAE(qSR5eO?r%EDs4%3fj S88HRq0J>%=3&tcvoZ(<6#+(gWjg`@|kM23AE+&)U2DGN1RSLPz}r z2(lz)YreRwZ%?)xwmvKmgqFCz%X1v<56hf;n(8xrkfpo4SkDp^(i|vkKaS1N7@Mq_ zUv9Oh5lBv2`$Seox9PcY@EyEDMfS->pw aQl;JyAXArFy*K7EEW+rpCy8`Oh?_u94iHRSeg6j649=eI}j!ooTr`U$Oix;vcS zCpyU~Ew3i@m5aAhkf5HN5<5cA!wm5Vcu6sEmoTx`q0P%{u@)&J;i9EX4N@80-HY$j zW&ESr2M
ND*Ie!r5s zLp{EXqkVzRl5ce*noOBIJu^5uG%3p9j;G!^_4utH&MNvdJ`V8MNKZwNzHhW8*rg9Z z(6c*<>k-zLWA7Zs>nHv9 %W>BKb*;C zJ;tM|YE5Ox<(=E>AiPxNaX=)d{$%3vjO_JIWlbh|;n$<$e2n*NPZ_F|<~Ov|m^S({ z&N*707z`p!2yWlaP_VAWbBTxDt(I8Zdftc&LAl$j{n}&08eG2F++Vnv%l(cPxp|`k zJMa>`b_2Z*r1>Ku&toHfmEBb(rujm8o|`G5T*HFRzZX5{BMlogBi;~UhM$%B%=~GI z2WIPy#bL)K)hZ?f1l=H87kWB))j *l0pgg|dr0uJ`(!;-!-;M+-U9M~glc XwpJGOB^XOR@%{=Cznj2r$OYN1I)~e_5 z12RT+3=Mi0K92uNS9K<7-{^06ZT{|!RowoOXa}M<9hRT|+RCt5y@fukOI8${)>LEl zfEk58bCK=d<^&9w|9Ur94EmIk=ji1aoaOvR_vO0l<%G*>L7uXtJ9>){pEKu6C>k1O z)?!X!VRwjX;30W91ndc2IW&|&_j(+>p4H5PY&Vz0yEv6myYaxq@_z1}W%I$5I?2Co zLn-EcjUSfol^&@SZ-HLDo&Wt6%$t20?6I4j!r rHtR|!2&wYS(l7j zP{n)-yvpwhu0_^a+-Z0x=6${peYE<7ALM5cr+Tgr5F;c!GJ$JtU7Y4c916#bbw%R$ zIy+BP_fl3-B>1|hoAq1P0-NWZildUkk3$R(F896-Ne>Kr!4+~6LB!tGMfa~?JrlmV ze0}ni{rzO3gX~H0)nlqTyQwuj+1|)9kw}TBuGQJ3dTOP^{sCP-VF;bR+5U#`r(_7* zX{)$dP3m`bt#7Wz4UyKe*K4~|53tNwf_uO8(A5i^Nf-%}K|vY1Y5IEUDcVx$0(J%5 zRw6U6sC{Snr;3}*bV95+_?@|5BM~?@!0!Az%32!}iZ>A?+ZO=v*M474J-mkFLMXHn zmYx)XxjIb<+tZPm6 2#pSVqT(VdWy1!$T)%5we#Oo`DW~7#Nl8uf za>ub=EX>=N3YPdANSHwSq(g{76U4eKEuQ;$+4kma7*!0ezhlH6_tRS9!E4`AB@vN+ zOlBs1l3>FxWm}QP2%Ce2!|wf=*-zH bR)7u5CaX1QeuGT0pvnl5S8iKpKRhbLf`tZUzJf5b5ra?(Qyup}XT7 z)cby)=lx#(IllwLnX}hkYhA1Nk;E@4;$LfDLpGZSZ^^%P7%JD4-A?b`-Gg;tcA$%z zvRs3~@-CFM)gr=$K*m<;Jx-XGcu*^#slAGb)rNTLS7-FcZ )}0Y_#!pE1G<@wd zsQo$Otj^Z2kDH>EsXfy%gwW4Xh@F+kwg4y-DlCMQrD~^iEgqM^s4 L)ny;RhnK6f} zTR!u>-#*5DGpgO}bj(XcA81P)HPH59F4FwW&rZj#Hxqh$d4E79cyJ&B53c-@g-mr{ zv=fBXjt3VQbv3!5A(HF&W-+dD2dpb46HQP`K=GWdu7?1gHRIZi$*_%u9Zzj|zek(+ zxnM3FE`68Draw^`2cr*i7>PUT)`Bt0Q!WnvsYPxt^v`0chP$aPa4Awp8}r9?IDQp4 z^S5(D4EH5z^>;2Vi2`c;r7@c?6``J~>l-c8VocS}$D}OFrrG3P?p#TFl*p94{wYD3 z#+5V-7jCpMAY=yNUrQMIDV1RsOeyq7yq)Ip1Z|!uiO*VnhljuZ>X?T~@Xs;f 4`V!5jJ0~(xtXu!{?i?ai0iI(~GD$+Et+7$V z31f!sJ7uTlVjPIh2D78$OAnm8f)J~^YYa##9+Nmqef2tyVpvT_qzZS~e7l%p@rK1{ zv-@qSQEz6{un+Z6_bc4Bp0)H0ph-oWhtQrK0A*M}$$BjleB=3rNr?zMVraQ+Q=XKl zQ=U|EDXff<>WsRf>L+Ch<}-)0_ddrr+(OM_%7V?$ltB_%?`78DT4Lc1KRi7rddC8+ zm?}y7y`}ZCiTZFhMD*O{ZWU ZjmH ?D!cLTVw;Kq{9Z(3znH51}=A zfGY*P8ezC yiZ0O zct^DGjVud?f}_I8 zBOSQS)=%x{ODR1a N_=JDO$z4^@#!igZ)*WZ&bw;C3q=3rb`6o zS5&D7;~@Py#vloroa6^&9e$HlH8M&V6Z0C!|2kbZ&`1sL=}+z{<}Ays$kP250+MPJ z%>|0;W$|BZ#1j#38d;6ma?y&J@I2Q{Y-Al=>RS5xV;dg2Fz3=q2Y#|8bPp*%nnzk9 zewSOP_F|pM+C{%jS-{jT$Jf?L03 *PL;z_R`Irw(GsrHNo{vC#H8NLOw1OS7RiIGELbVfm}HJfMiH4zW_ z{M}Pda~auASYGhc0ej2h-qe_pDg0@ZG^AWTs2gIg@Ui2R=G(%P7_oYYhGgakYo-hu zFw2HzX&OvI7rRVGnaDFuvPc682;X4H^w+gQP;!@^0P!%Pm{Mhpu5iG^T2zFjdUu%o zf0lyDKcuB!@SRf{F=95M+dNF$x2b$%G?JtGR)3)!?SF?}8lV{3TAv1P6i>yv_cBUf zB8K#x?B_ws-~5Ga*-dN;IVzvj=(L?{Q3Y3yJ>)ExLmA@xfo?`G?2TV9f8a3?c4LzC zFVvPfugchd)P- dvlnqP)yRLdk7~d2jW_PVN|sC zm-BFdZ( mRevZ-1?TCUHQ5R>2 zzR{f56F5UI7WAHM2ER3D#Ar+;6VwODNnfs~^mA xu0({<-g_)Sa zbBk*#Fg<-y&H0eMJvChUs~9J4PL3yp<;tV#9OnHBOA;Q>(bH+G{qrx1il&2?YoZ3d z&y+l#zQ;)8><9tv?}l+2Qh!1c4n)x5`$9?IYeqb~cmd&@ )p|W0Np|+FjEV6pmU+C=#mXdV& z2w(lOn^M-Eb7$iT3z?9xED!>kez!nQorT_0h%!oqggkKV^hUN~Aq`YzHO2`|P5s!C zKw`$a7+Lt?w8kiyd9 Wyh(T(hHI7W7)6nEUN{he zA`U>A6sXW@aB;plRtBgNZ*XNA&Uo~xZ&Z629;5d$H_JtlDIfa4WMP>a^&o6|Xu(qG zA{v8LNPENipmEje1mW|y>4J=VFw4{jA(%Cr!z-JcvK#Zn~PC{a2;uUh6l_W zJp9$9u%wxd=hD*8%op~2hDgg(fjcZTa;+#->Xr1ezc&0Scyfj-3(C@be)jkbYf&xg zwKFvA1R3Q;24>Nh*3@;_dFadX{q=Dfpv 31rqv3-P~=1V!iQ6i_~!w7}RsOXOj z7O!8=FO6`gXCjSSnMP79+$=;vG&%XDT)Q#}Mw7zK8!gv+vk#VaXbR)!iN6Loddfe$ z{z;vr6vy=v>03hvaF)P1eqg-c`%GI!n+fQ;CJA^#`LqLdWC@F6oJMM$f|7rA-MVxk zJNL_Idp#@+Fg@)<3bS0bDP6Eam53t7j{EHf?%yrVQ`HJLF1^^>v}{g;Dd}9s!Y&hK zW0-A$?R(bdM+OIF&X3Z-$>w}FHBR-1#%ZvwHR>2HrG94pNoOR(-B}T&PK8P>_cm(W zav9>C3KW8i!=<0Tn36NR3BmXZT)S#|C#sYvN0Z0bM_LqWMdm6suy+5{p>eyH*?P5N zyLuFl9-t>!ERIxKS=f 9eh#a-ElvC;u&*0z-k@~Z*JxOHLY7;P{h&E_z;s{f4L*3 z8Tds~C}wbAV5|fK2f^+-m9aczc?J%$1v5H_$nX5t+U18T4ptzfLEN38&d+36p1(QZ zLkcA}R(Ol$r_~?>#BrF3ijF-MM8&qD^K!KU-lzoFc^GCj $sio|0ckbNE-`%^vn0^FPm`k{}p^U-K z#WQf8zoXF+m}`8#Rzc4NGxAYtUX %1R<`6
dwBCixaHl^c&$lJeBq~G?yX>530VuU})q1h&BbKK|3_zX>ff>u#9l~ zU$x^GJvjY+nU{<33+~(4-At|^He9ZA9^xq>zww_WMEuR-2svk`=0&eXyl1ORO`b<< zG!*2KxzLYZ8Ouoo-xJ|g{gxodQKB<6ilql3X1W}@;?V$^0frprSwuoLJ|{XbZ5#5) zM5U3E2!G`=%+_Dl!p+J$xRSM|dS&Y!%9*(6$JaJuen@uDm;$|eal0cn)bf3&=}Wvh z$1h(<%ya=-h1V;ERg>+fXb(NwrOY&GUaQ8Hn-05=k`ZrL-5;mmo_)u+ho*RAd@Wj0 zrrlaG1p`BorX7T^R2U%d3H>IkIT05Cm7_Bos9V7BnT&qnmpT#2SK9M8YvlI=YI?H2 zEG?2bfCxx}gl`GfVd*=p+-L_7JlTq<0I8U}U*aK77F!X0u?o#jU{>y}QKH7;H(Hy2 zylV(2Zzs&LI^vjFFKBp4Gt4G*C7!gpRnZ@a%nc`4b7IyTAmYZxU6nhWH>Nse66BrQ zu+5n(j15F+-|w958#V5NMb-Nxjl&~!o+op>wtxkd*Rf4ZlI&qhGtj=GZI=jfdT)|P z)lz(j09G#@W{Go^nXsMgO_={h91s$kY{4-SfL4Ird3CsGWte(Nf?z$W42vCl!3O6{ zAI#tKyEsM-!k=RK-QVW>vpgL*&f<47(+GEpHt9&opER;)-$Cru zz+7WaUXfQ=D~)0b(_JuJKy%P|1-`ym-^0q2;iJCA2oeev{U5tx!+5Ui@-QRzNq{Q% z`x|s!lAh;Ep*rENYr}^dQl?QZ`svkZUUox+g%VBAjME>A?OcpZEFrLgY^Td>9laie zoB5{%J$eUP=bfr}7et1qdwM?@OGPCoFQ=JV$}@e0Llj>etq>_`z(VRPY#ei#n9(c= zvLbhFw)=~dF{rw!_^5#7@9iD^PYTY0vsU@8$opfoe5FvS4@N3ZFv(l1vYsbD(7!Hw z>q>kfQR9=L3JMD#wOI$U^Hc<7y!4d6EXL8f$c`+c2Z)&((QQ$_4Qc#e4-3ix{SZu;XzW^{G3oi=cV(5BP@OQ*k@zr1zOWQoT+xG Y$(^Yx%X&kd&}@PnmjvStw4v7WaN37u-e06 z`#ps5MUE|ny0oak%P%n3TMpnl&P}2_dx6uX)og=i?YHGZuGrK02~NG+Mhb-+^UhUn z15`3P;|x;$i}A)TPbHnaUOA`iSgmslyIzN^B!3ly@9i8X^e5xndJ5(B8mKDDed%Q! zyxEl564}JVFLdF#JIjsVs!NF2Lb3vz8#qjT(G2%_>}5{_ua?_|S@bPn^?^ dB z-28h8=5ptv)?rOy0X*To5Qc0+kb!`LVP{)^znfALRAi|b+^F3Ynj-B|QI;Fi3d#JG zZZ7d>DzF5Q&-XFM2{-a*X7K-c`S-KGKl#tyCe)MePr6ih^v^&4^Ot`f{rlsGFGYV} z6#x%?zsFQk{#TCm@7=#S*7?`|6V^P*Wa-RGr(GeI+}c(zZuWQa+J0VkJKei&TDw$` zDoiCW4CwqGRs06DAGR?@P45^~Fh9-UxEDI#a4`6>{ut@^yvo2quxX8Ys%x9`B$RvZ zgLb%nF#p8*S;2QlhkTn^A_^1B_hAKFcx^qmSA!$F)27tQbKeWAgO`7gyY(^*8Z;ZQ z-0n8?taBGiw%s0d<}M=0677<+;#z9r+&ML1|KjX<0~iQ9-p>NA^!w#288AMs)N4zV zer>|2=>QSrSuq`#s{vjt0<&*uZbBO+Hsx6x_qpO9he*Rx!3&EtE=NtCrMDezT>6W( zO5bfr&V^YsMYMOpaXC>IQkx;4B!AQL(h&!o`(QW1&nj)NzL>qGINFx{-~u8K8cfml zxC7e}=vY>|LeD!F0-k}D(`sWafznFNcRzFY^tZk}e$}!y2Xx;26C*7UMUX3tH}!x7 zT;8z6C~Y>N2`VxK-|wL)XL2mnJzVZxh=hH6xEu0p-*a+UozMQ{(dZ#i)b=Z3NiY@G zLk9Z^9Lx_BY-D45ZfBSEgCKu}8DG4fa6fFYlv69gCvQtLg`EFIEq|G 1{nD_fG6-6cKYc1SUg8Tbe`CpL~+G8no6g z$2N;SE}@^;r`$GI#sFMPH7AGp2c8~RXO4XY^uLq#)_nBf80G_PI_av>lT%|&-v-h> z67X7;DrU&ym&S<~U~FQlh@g%4sh;&7^sHTjzuVH(; f^pIN@l@*r(9hpv;gs0i1r4tUOn^3$B3o2-Q95TNDzENE%P*37d?>aL-t zv&F8tPvL2T58EjRu$rvje66dVX~&sv!KBZysPie%CdeqBf z9S;g!(55ZhTw2OamZVGX-?EAm5#z=W61j_?e~a>)zw^icxugaEc}C(tzxXrV{LkHA z731}Q_qRu|1@eE@YWywD`0vYY?tkC^pE`sRpe(uBjQU7dxR`$y^ZU-J;ZL0h?7h4y zjV>NwMWm`Q8N>lo?VO&NHq3UDb%+FQNKF*d-Lu}EAoj90-9ZQ2a+mH;T_>S8uGc)U z)nf6F)M{boub6WQ2&<=VMG!2QHY~ovnw@9#_vwlHQh0U%wtd+YC}O!FuLQ0yt4y;f zq7bmx15z- ?`w5pRR(M5(H66V-AHI0mN*z9^wM}QdMG~>St{*!$zo>t%)ZT4D+{0C&rb)R ztvYbFjmx-+m{NK~N7Pw%pM9Kk>SFdY(?ALHtF_gdVZsT;M=gF;E_Q~CUcYw48pNJC zU6;5Z*hxRKLp2*Dyt+0rGw}O$qnzrzWLBI(f?FG8t`&88Xheg?Hu9cbXX{>WY|}?u zVp0=Ov~qCjK&ftpFvSn~HqsxQH4cZjJyDw<{Hcr4es_Y5z`|ulDVuvJCp#B(;E`}A z;0XAc(j1|fnIlR&;lo?dzI4?S13Yl4n7D!q!N}F&>1Xt3QN)^>0hF#F2bMax)er1G z`u=fO*XJ1}jh?Sk=A~7C;B1A4OO5br{KzOFL#$V{guAiY6nP1t=jfOiaQBiGm4B7q zB%3l+OtCTGx+4E+^iu!q s;3zz`7jkGG)Q!lPbs>X@=m$%N zhvzjCz>-qCaY;}-8}NI77!gnLewIG;oW()mj(N#)4_x7yF9D>PNnFuA9~qnp8QgRA z%q_<^OV6G;IGyA_*8U}L?77yLd()M$FlnM0`&^6xfEzs6&}+Sp_E_rA01)rS-Mf64 zstbQMj9*{<4pdc-koo3}1)vJ@S8(IQA5lk$SFN?J-zs1>M7x+~#-WCmtGz^U1Z0*E z5Y>1DQWdsepZ`3S1jbA}Nilwft;Bi|xnG{u*oG^1dTPKNhLxr{|B~pt%BL;{4PA${ z7oMIms|TmPIQOKo8!A`53#$4ThqnW+c70XdfwnHr5mhVJZ6x2ialrj?N2sFN=O0hi zb9qaA(LYT(9&I6%+qqLz^0_&DI^3Z07o8SqdUH=2$FAw(+sHeqTY3W#2>fP6rtG+N zi1#5UGf!j}j1oh_kLBk%{A)e6oHw`B3Tzi110KsxcVBwpuvqD*KEYJ Cu+SJ<=f|nFUYx$pJx82g{Z` z=zQcDSqBMGrc%lAV#RE%ED}QfRgI`#2HMuasK=yWr?~xA*c(>mEQScUTo`o*l$BjY z1EiJRWF5PWhhD^XECwtoE!>?HCloEzJy<(~S+GJQ-%H)!@69r|R|6_fZpsPvg*A=# zYn;w_=5%U2WMs{rlTU2z9{n7QW7w3 O z`aM8-ilW$3yUrs(G^ZB)qsQKfi)~~MJ1vdhkqFm U>6z=d^3+2xze+JitFV z^)6Sv(_6%awKKRQa&+tDCO70ykVO(uKJUx7Sf$s_C#`vMSdgZ+@&da1269*}Urq&9 z2X>*5?pnxhirm{P$1>kJF^*KeN=Jbwr?g K7 3+kt$)_U?HX=f~-)dxI!WWmz8aha4 z`0Ktv74$!{_u)>L-srAdrZJ?80SIJV THI9+l_^4B_z&N_STWGVu`IuTI|R|9<2kMbMn$7^#m`EY&;A32}R z >cC!gZ-0tOCwKf7Vwfs zD{#Ki97NI~9=_BzXO&Bq1vZ0sSB4j&Hf!a1BdY?-7iOuxv{XkT=L^_b2FJqMlyu~T zTtNHBPmfepUA|Cj91Ah4Td~&g#Lo{aDQRTC6~uei#kzE-+H9zDp021P-Q@0&^7QV= z?pA%STG=lA#D3f)-ex&s5u-xi2EuiHd(W8pC%G9lNJ>ID&n}Isbc<2PuSCE+Is=q! z!~WUx#T_$)0$$y`=L< !yQ{ zlPFvrhUAT-UL!m#pT22J(k6WV1iKA0gaji=0B#I V~9dLcBqXPFJrz@(F2U{nqX1Y@jml%(;BRWu#w) z9x^#BDDCQoC8vAd`4lVaq ?K|==|ItN|LNN#Y9WoVh#Ym{Xg6cJXX6l-k>MqxN z{op-F`GS(<{La3MI)W 0eqCV7^E$N}d>(xpEQYd5NxKFKtmN? O&z
(zY#uJo$iMPX1*> zP{8U7$@9DEZF0ZN_*jQ0dHSE5c-)<@l}s+`N&aXL#7f@r5ulDoaqdv@j0}JTztwZ? z>C$#rG3_)G2gPU-+1Qazqk?IG6;;&)k;*n~Hqk-U2FE3=iJODHW1EdCo6yu8I2h!) ztQJd6 }Q)7_kY6;5WBW#;&(>@ z&AV8ONzFG{ npuFx;v_`L+XQ{sP2O?41svn_yDcEmk(B#mjMx_NI#2fnI1 zT4hNOf~0Xm71lYt=WuIm*NT>+t|A9lPva^zRa8uEwF27P5u{~AhXW}s!%2E|1%Ox= zSOcSZUfrmbs+J0Lpy8%@mWO08EX`!O>$EVrJ^f{SN5-#9$(@#4(O1OIEAdCt?CCEk zU-rVmqBqE)@HJG1IwgAZnwvxx*e3QRy(EmnYM7s&VpN@Z^Y|Kr;ra24Eg~y_6RPlk zi9{~@yin;N3VSSiZZ-+~KoSDyeZ%>+n0iV0j{J-sES*xRcvG=ag9WjhYD(d0W?;hC zky{%&_!}@ze-A0w9BV|0xJ!2t2Bl(qAwH7?@CHPdCr4D$MPYd^I8#oT(13?h>sx`x zsl6*iytyX~kn;59mjbTGTpa6`m0i7!cl4|1C8}|qID;|iWTVk#UHm8GbM@9eT0i$z zoTPL$%b!5aT`gtPio*TzIHg;5C~w;7XJP9$0TtdX2t>l>Wynff%p$_X2}q^78&mCa zLIr*}t!|9k6!r3_WHfa}cbyX>&F6%S!!~&)>sID*y>roXb4ep?)R%zcy|IILpGKVv z)aR;{4Z?Tc037$~O-@3}^pCQ+?r*h!Gr|h4MAYD_EI&b7bNvN{w_;AE+w0L =Z#sXBIp0B4XYJgU6J8vom|&wSeEB-nb3hW- zg697eA>^_*$+itPC<4an$yz&37g&&TJt_=&K< VtHNzcjnhrax?O9h4! zqkNJ8(Ed`^k?iKVLsi6LQ@GpBsVmoO=zJ;I-#uLZKVN(H?`vngg_M_B+{O-EStZf1 zjLsl1ZK%0N!@r&LQ0J{?mcoT%uIjo+^DOi5N%U7i?4kxc^>oVV!M_-zsKwBpP7Lx8 z4AvM4KnvV*TGQ^NXOR0)hf_cw{hu;$ewJJu(zAT3lcFUHT-#rR6%F{wND~w%LpZsm zDZz1?TZ?OPdWvO4{Q)5SNH(JuJxz0qcUX?eBVYv1g4aW+faTLo*-f*y pxC0f~=YXv8hGVwA$9H($zb^lC!Oa8hT z+br#Vwf=jLGA5(_K~#6WSv7^iK~xxHyqg?R>79eAvOD?RDiT{jbm>D7?%eIj+*FiR zx^_e-J-EJVtU?+12%GltM|$ClFz)P8A@=lOeXLW@c>CQ4k@LRH&hu?gjg%yyS~SDq zbN9V-m#_+3?wPv)6f@!JM45$B ;n~%;^<3Ld(d!+pkn=GPS 2JI zHe*mmkT!*&?dR%!MF8~&=9p7f+#9(2x*dAC)6NBHGKLcT{E$0%LB4kX{7BGAQl{2| z+l!%O4$-GeiTfg;(MXjG@}P0*71#AZ86i`8a9j_4%T1MekC6cPt0Ey+q1~GcAgei< zuhSyM9~;~L(Z;p`{wGB8|Axre(e8gBQcM!C)=I`_` #gYL2~-2GLk zso$f`92m;yacve4k#VAfl)LRVY&G|rYD@Hwj5+Z|A~-<-t|dvJjX*)db NnYb2U8R%G|Wkkoiou34mk-g1wqUY zk;vuNnlUIPdQxom>(jugnPHMgb6o3&YXfGEYXONUHntjZnDABQsQ*P3Nx;FpE9&zr z*l}ggp2z)c{?3N<6k?hY2I};lcNoDg#M}|n`>K`*oBJZJDRtj-IDf0E Wq|z8 zFlJjPoxSItv*sOGd5kUySwCVbMmyLln z^Oob8`0zlO0Je{Dq`1d=JHf!0qSh?8(Ik1vCzI*T-dyPv(1P2P&Yt^SVY*`(GH=}v zgFDDu`-3?KFC7B#;Mi?wcqR04_h_y=Z47SBj0luSJkS<;FT^$g9 H`sem(`F ?KAx7Gmigyfd|r^-kc`O`ND z-9N2z**(bpd@TR9-Hj|fVS1g*Xen&O_4Y;IrOGuctZ$D*kr39m=ixD4Wl=2(>)YF} zjTv{S=j%b6n-B U1CTb?(b{_jELDcZ0uFy}d;z`=nW z_@+(x-_Le^kuZfEJ!U8JkiNviLv?q|ui4956q~Z-#5mCx)In>Qh wmmH%oUX3M^17Hi z4ExC?NsKva&KI-KA3hht!xrUR6dzu+kX5ehOa`0Qi+z!BBJ!G>oBBb=Tn<&ZdO0$^ zj~~Sde@Y*BbjcMPZgg(?RP3;vyRn2gAyJR=-{-uO04d4z)af2DCz7D(Gu*oN;u&o~ z9!JrIHeYK?OWu6*R&21d+F)WbQ_ly$YKGR1{q9!2uq7WOW;%RYR(`1)Fm~{?6Cvu8 zybi i>}j- Hr} z8F5lZDU@Os7c$nnu|INENfYNqPiJ4QKF1%O )s&BXwk5w6P5djjEm6NT zs=F9fS;4S(*E5O4Z8PJ|KgOFst78A2W+Dl!7I_|={q)U8OH(`I_hR4sMM~ZymDYbH zsE+ua`)+v6)eI0+W$1)@pDD;w1)!w=+1bCmRWW_~R59@(cupkWQ>yzG)_7wBr_DGU z{ ScK8%g;8m|WtfTKiP`n@zLB#Nb2v6l9uEBGHo=!vw;NMqGQCFLJUo4P+x3p`0 zX*1UpN*W3|8&ak{;*x>_4NNhCst-R@d`$P6y&q%k?U`0ITgQ!zgO)mw%C?31{W5;o zv5xrMM61iW*}Tm0m&lGq+|{+iI4to^y7Ph@-ogm4_$aILWAup|d5D?&>rfsVB!~!7 z7P2_q(z`*5L&chlLMyy#xz4xmrZ2^U_U}iqi}usZDnq02>7n1e*$}&4aWYE+dvL&< z>QP$?la5%lmv-_yLI(ui=D_B!GZpb$4V8|V*dxUJ9Q=+h&h)}V#pb37C&;_|x`3&* zb4hL``LoBhY#KZl0;&pa=gWoVbN?Ry-~h;9vR49q$)!I%yTFN+RII8+I8M1XN>Kyo zUb$C4y>dUfFamz{YUm5RdqFge8`$H;8Ddt)+W)coTvF%Wg_<5h>#RG}l6XaB+?Kb( zfsEM7Xk%sT5R}O&2@D?magqF{hQ}eo!??J4%UrNd@Y$Lnf9-oQ*^$qn90m0ob~NhZ zrXS =Wwj&96XCqE?nV&{?*8hIZoExUMBhTtgU%Yw$B-kE>|6k>J0o2 zx0<)!tz7*TFbU!7*K^xB`1DT7e(JiD-*bsU+v>f&sp-5WuZ(HEebHz4E@IzVfdZ^r z#(hC2DWfl9=35uPj*)HbVsSb>rYCPZ!O}z8#ZB4^G?R&kfWBceW#;Dw-5DL9m`GrA zYgm_x#x~aLqi#M~E#~43Cx@M!_2$G8D)HV{9C%*&pkp48nccdWU)-eIeCmF6*<8nt zIp?zS-b4Copgw{jU7c@{otkeymo;GpWG%muprp5QDnIZ#gI!?huALB7#QdRTvo%g* zom6vSK1 #~5L628{}L`=Be3v9CyS5^y}H^fjyA?`l9Cvy*;C?OpK&qZ2NX?uQk> z5{>5#e3*r Ud-aWVtt |*{c Bxk=m7wjKvr++zpX$2@9@k(`(s^v3 z>X~;*d#?R2>zYmqZ-$EW=P?(9ThxzD=a%keWC;X4jwYGrN{{X+JUhU~L;`E)CXJW0 zx@n(AVDr;b;+Bf695Exz>USv|`KZ$xwMzlrkbyDOnvL+qqso`if*sVBI;o^AzIjfq zl#zH{D`&A`J$Z}(zVE5jRe+Ic5XK0+F2kj+szi$GQc5+^S$JtwKGnIrl)T_WT9@ NS7>zr#<6TJ^1ED&5yIR?cH{bRqkN;`!gjKnvfYtX~hSS|n*LPJe@S84; zQcb-I^`Mu%VfF0|HEp`G!Lr*xRv>}W@>BnTMs$6>Q0BKqnX7!~jnb@v!$)@j(e?pU zV*Pi8q~^OGD79+|i#Tt_%}?gDcRq%fUz|?#!b0t}PlmPjM|{+rZmltHKF`eCUq>W_ z=lHBV6PGZM?CWtbIE;0Zs@@m+c_M-EadaV!%64+wO-OK}JSy_XMAFY`0Z4gKmRd|a zn;62+Gzyu-%RKT5ld5%Xq51uVfT0V|+W|RU`@42=TpbTiy%#x~YmKteey37^Cm2%Y z4^veaJqM+g57ZBw^-eR-Fk))U->BhzL?~ azI=)YaJoKM+{Yl54N zR4sGxE)8%>1f3;K*RBu~JU5aibuK+dQPy$Jz#54TqJYqRn~?naR}_Sxp=e}>0@e1; z+vj=mc|Jclagu|dJ j(=^%&4-p`?bVp9a?b-Jkam*#6Z0*`FV@JB=8R`}1v} zKxYr~xIfDWlYi3-u#*+wrjUsZ`(Jz|vl8W<+xx1e(bA~SW?6?9s-t)Re4pW#z_$sh z!WI;}mbvc{`6(ly6CAZNNzlQvK5sl$9B8BLFoK@uBQ3#k&zrCD5!Ykh%ywfOJ>_D> z`t@@P5^Lg$fQA6XncBG)naG~ut^Q^yz#98?= (Hp!H)+B>N-t2QHrk(g%9Io;p(XK8N3=Ip#2s8g<^BOD}NzVyHfTx6DSX zO+-8!PcOaJIDF?u-+N|L$1;MU6UTl{s1ba8Du^~Nk@A<)>t0tnRpWdOws+@G@?~EU zx;xd;-jsizgxF!^kJ-}{)Vv>6kIl7A4~~8L0Y!4l&)n+eCqnW_2?V8*A-A3#i|w`X zUwLw}#+>#qcIq(}#J %Oc&+xgku|*UKe)~~?VcXA3t(<57XBjNO2Px$9*#2rChOwR} zQb6b3*#K&p>`)ZhR49Ba*uV@h0_ho8zu{k@0>%u=bf!Hmu-NOWNi^r}WTd&>9 NiQqngo_bN0Euv_6$}8In%w8$h%AoT&<7{Ilcsq>#yw2#Ozmx0nVo z7z6k #dnc=OLZ>)n4Y|Ur zc$K#Thg)2w7V+XuHp?3taMl5ynaiwYAL>dA<4dsqmjHt`eM%a|D>TD5>qd1XxW}o7 zf|MO$&wSS!VZo4{ZZik(BE`GU<)Sp;tI3xcJl-Bhi?6_JqfG04s_9YVt_@nI`bIqr zi9ANd8nzFzKt;LUV0n5llJhIo{UlI$ENSe_<@n2Cw3>T)Z7UeIKFDk~d?+}04TB~Y z^=+*w*cuTna_&umyRSMHQ9P?Z{+qQBR_^uNxFrLp`Y0Mz+ X{IA$(b1>GszE!h@RE za$mX 5I@X@ddc`A@@_lqi~;*YS~kqX&_6Iy!}02Wsh=_xel7N-^n9Rn10=TVoKMI4TA zb$m=T`@~zq$(~sVb30d-K`j*=Dbi}r(&Dx(C+-~STMq#;KrLy$ij}$&IQ0|?8t85S zHr%ZTX{ZvRq!` SinD;&NYB<5JTmSH1r8C3vowuhDTo zxT0wzB6ajv-rOc! Q%F&IXu|W(}Y_huH&n*=Z|3<(xPc7R1=N z0Be4T@MJj22@R23^jVH6`}i3%AIHkij$WTK3_cm`5m<+I$4 8A*Or*% zWebNVs{@~h `kZ6*I(NgceR>?>;45s34(T%1rO>6HA9XIkc&x(!Xl?a5 z?O42Zp3o>SGpGi-k1zJY+8u{CLtOv4oyCo-@Cz%V&kM5xo>1h)g{)1hRBQ_ugf!lG zMuj1=j$a13;i{lF8uOvr!4?-8VXw97#o55{&3zFH$MH{tyz0j`i~3)u)_B}d@xK0? zlDZVC+QwAkc%-0|TDv}Q{Umy)nxe+86?PPk`dbT{?x#>mhk7)@mVHZ1Z*MI=4zl8S z-gylYaH4oxXiUPRt+JjVvEY1&XN41i5yRPqjaFi7Z($S(sq MG}2m_BYK}p6S zi;Y5kcgGBkK+7JNgF2o#8#)tCn84dS3cPiFWf=INK`}>4_T|5(A31q?DZ@tFJ~Efw zHCw3S05GCtnG4s1VO}xVawTPg<=$a=zYR#1E3j6{#%|nAXlKUr6~6|WEsvQ)1z10k zr#DDhP)>nO2ufBSg^yr(xICfSZwq>{71#xLl*;@b%-zkrFYFdBPQH-Ha1}Su7%%6$ zr6)5I6b!SqsoiRSg@M%ue2D&sW^RQu^<>|MU8lP8wgNX9ocX~MM3q})?8ou!%q+(v z^6{y10GOwdO;f~2w&>a(QoS?Sx&=d6)dUqQBG-Daz>z;_l* pJ7zg(KPwdjd?SEJ4oEV!S{;+8CWsS=vDHPNOp zU0Cg#G6o$dfjQU$j(H?!of-1NVu{)ygZU5xsR1REn3Eq`>#{AecOpD9&J=a&-+wvf zRrct7Et}hkN+bp%M?J(4Sm~|o(V9H{K<0PzOK&S#2`_5xU0NNFBKMT#f-)r-3ByDb zFt?)lF#s36s5iIxV=@+}%{LkeBg|4q_f+3Cs;dolhcrs3kG%>oPD5|pft15e;YFyU z6=23-`RPUWEAL~jysVZDtlPctj)EW4=6sdge?ctmhx@k5OV|)u(0;;iaSuMm%ciMF zs{c>*`Mxs=@+j`@kK*34H%WPsXQWmC^e?8ohuE!%JayPE7MiBl+}^WMYeJ&;7Ec(c z0D?Q!gVQuZ3)Z)rOM8&81YJ`0$jIyb=~TzcyLlTp-~SSGKxz62ac69&w|S^CWL9YK z4-cxJ*4Xa$c6bW_+N)OZU+S)QcP&hL4sY{03If=%yLhKL(dn1iqw)7p;|0IteAE=y zOsjK`U+>^SLAc6So7P&_C|kUFWBe!#dY_V(T$dcp9=aBVmbb|yY~U7#Zp^c)NGARt zV{aK1N7uBCLJ}mn1$Pa>A-EGXXhMR!yAJLS!QI_La0n0vcORU=-5mzkZ^(VWXT8s} zzH`>$53ss>cXxH|l55w#s{ZI_uh^jcbknXpZOM_df`k9M`F1pa+i;Vz^~H*t(<>On zOp5b4Fu%A$R?|gE5J9%?e)sVcb<$URt*6*{(@BS|Bb^_WiqFCh>t#tkM(;+771F9Z zM$CMhZWO=a`8<`De)w()1H&5(!bmq*PyV#R&$rllNaQlue9}@MjGSB% ( z|92;szbH4fh0I^j`rqCw|4*A1#UM}{!pjlg|IaorHT=>Tf3N4y{96eApZ9=1-QR=% zc@JoR7ZYoN+SB$-R&}5A{Ac}+*7QB$izM4o3#0cgCVkCxk?N(M*}8hmY+1g=sM{pa z#y%n?f|l0-rcK9!bC0XH%}c6659lq%3(iYEgwOh;`N>O#nl*&P+efX0%4B#VTGaL> zn-5-TE)k}=GqxagO{<9Ey%YGX yitp{_mw-1O;xFL_Om#2&MABEhll%yFAQHO?1~nlU^k=$Fi|&tXx*x!;A30= zZF=h*WL9vjq9}W(P&(bPbvT3mj37cV)>vjD3Gy^rka|vkmA-tZoH*1urtr+iw!ESr zlseOPWmy|}7M|T0dA`$-I&V7dqQa4#x_-e6c~Y(d&Y><{apZjPiQfK*{+n@Sg6&KR zG7)(VvMtvr{YjQGd*0zQFEu!`b~Jvu$WdG}E2W=2QZZVYTcJ2UHNJ1n>61Jl#9c+B zB?^8{|E_!QO&=XReRN=9f}22Jsh=-^|5`c!U6ZY7x^@TIva6knHnilu2Ayp%fj$5P zA(~H{2QD-r@O$9Z11@H`opAI=f|DwsEn#Y=W+xI8TI8;Wf2C_R7(cIJ?=TCyKMfi_ z2)Z6lt*(EVUz_H1ig`=$`|{H>78yl)p!IhuSP9R8{URrpXW~q&=bPuU=DVI6!?qrt z*K$ }1+*C`4;W~T0N z#2+Vr^xA*oc=uMNVeN8dcGS0h{ue|rZKcub5__fnab2&$dv|3)$RU!at}sNm6ohU< zWhxAxr~e_-{px=F@^{o>PVnG2Fh|;ou6A}_N&fVL1*tE2VuOqbNhvAwk9OIQw^I!Z zz0Rs_x`X-pgqm3UawiApj6dP6N_xRnuOvLGD(XVYXWKzT-1}}DF5pMVg22!F(f!{s z8W4&(4t(Rm97jhFMb#B05fZ_G+HKAxTubv4)Ipv)r>kN^mPs#1B4@!r=w*%4*vdqu zrtK!*ZEs3$`tw4vm#(UxO<-%cZ^?R-%M5;<5Vi3tw#*2%7OUlWEPa_W{&}%jpSz#% zDgyo~U;x8vg0ud~TeZ%{-y;_R+^M%5}lGer_Ud$D0-6X)^H`m!sI>Q$*LX&((Sx zl8TVY=|%V|l)drYT}8B3y8E_AV5LerFO%>U=|)oFRJWmS3wF#@aAJ*7mppu?;RU@f z=t7%vO#Phet%xZ^77qJPmq*=UwQ&Dh*6pL5t*l1oTTksQxak6>>2^YuVl(vm%~gg! zqAI3L4E5?L*fy!fGc6AsOFqkyxRf_Ba&sI;V~wSRqB}+PM4^t3nxl(wBegr+)139# zCsuzr?23~!nsSUqKWWl));r(V_M~xOGNCQG2^yBp5Oz18oZ3H;sr@$Cn9(i<>243s z$wr^D<$Q)eWFmV20}!l;IA#Q%^Kat5%gLg*SojTFy)vNtRt=MFYW-M$S7Q79V2-|p z90zwLmMU{)$$Ci6PQE()T2Oe&_-YuEDswICFErw#!n@nNR=4s7Hu`K;!TnzAeqAxb z?WyKxe)M}cN7I2iKa%8MBN^KtudzjbsDN8 Q@1vM#FLFZ znqF#3Gu>dk_Xw8bow!||y9_2oxMedLwPasxtSHHUm51~}o?yaq5qlebFc6Ihm0qXD z-~p|4{&5VpD|u(S?ye{HjK0*zXe$kcPnE)tJ%DpTz-g~T^#|Ox3nSbpXQYz?$ mXwvNHOs3+(jFD2-7-ij-S@M*W?7LP4-@X2gB7lNDUo%PVIjPW z2>cy@(rEBT7AW+wAn8-~o6I_kB(ylnrfXFZ7mss!XIxd@U4crk>WbTagv`|8n>qRB z`}*6rzJ?DIrj{!#J<-7gfC{+5+8h) 6=;tRFXmnZ^W!=N7st8_9gQo9iT2HYDC;6V+ z)#maGVf;Htte!cCK1k~J9=Z^2cyJL@m9WwDvG^Rf0?{NWjyA3rI#Cq%?|O$^H$$>S zRg2i-Dg71Sa5GVOKeqo`wQqGz&r2e43&@6HF8UoN)hcJ5zH*;j!HH0UI L$f52AZZhq3#$N*P&BQH)!Mf;Td2km0@NR(Yz3pQN^kp&dg>Mfr? zwMA<`05- Tl9TIAP3i6-w3P 2a;Ifw~iy1dOhydbowM2UESHh+aroJ!+Z91b~qPA$2g_UWDGLp8tg7D4)tn zp~LXy-6aqQmt8vyzjoLv<7bRQ^!aa!U9I}K-Rscn7M}$-pB43Ec5*Hz9lW)7P9wG9 zGdxxr%~{#j`TTDDTrHP<@936o;dmmz8gF(I>!|ygQ~0JelFPl%(;YSOlKerA8t}`v z%Ev_|rmdFf8hi@Hjpd)JthuTVPY-|%GE?c$d#NerEofZI0vpCJONJ_vajbP3XtXI? zKyO-^V-*!xkw24TN^PWV-)aIlo3n~^;x_iUD(^8`R SLET;tRc> FM}@5kxb&| |%GEDq@QYASG>69=n|_flN8BA4<^VWwe_jAzYmL Fc1%n#j^U%Y1z z3Q!E|^J2nEb$^SPfUp>s;ZF3P^cU~e=VW%`>$1)yZ h`mrpT{^Ti$irnFP+`H%Q|Z0`Sra6u zN|~84O1?n 1H0MlYP%W%0`)u>BQc}MP$;d zdB?LOn<9Rodt0b$q<+w-C5@nx7Ltte_OLkoJ#T5nB<;rzc*)=MTtM01qloCV2erGx zD`* gEgv(PV(betA-SZLj=xBWrLQ`cpr?L&piW8ASd zz-zzefJP!6Y%P;4UCH5BDZ3hvJ>rig{jsz)zO{-SMibW4x$AjSd4YNNAB|Fe(Wr<@ zeX1Gg{uRS5M2{?n2%iYKmMQaS4(Qs{w0K^u>@@|@bnHmE_>jP)o8ue*78GgcZo{rw zv?Gb8&1iHD_at2O@9+HLE;!je6>QvvjW(|_zm-cvbyeGBdv?dfzr)RgpF06Uu*snO zV*`mAl*vm*Q&f|&vq+)ncL$G{h8fSu_L6p drq|RVZ?$-WHcxwczOi}En z*`o=Vp*IfzdTIZjxxL#dW2fr4)U?Lo3LXiAfT^N?h&oDontc08p r%PaJaUA=lfB88eD z+Z%4Zcn6T>dNFjx<0EfDCPcvb7;dab(JN<0F_~bdA+F|k7Ir0 GG4VAO=~f5ju9biK^=jqg$1qyb+ppp> zuS5jmE1iB|KG&M!TB;s$bO!9*eG|Yx+P|Bk!768dwK&dMdC#Yv{Y^n|=A%C5*6UGh zHR(X{sl6*hlv55Zar2WVG(M?jsnYBRT)0=r)#uXlRd(#13?I^@R8>YNx+)i_7C94Z zG&aKh*}6JEO~o;Lz$s^g>-&GzDN!|51b`On_%M@BWsrOO+HD-7g0xbTUd)oQ=#Ixu zLya_a-{)(w28#)ny=6&oF>{m7*9NzxBtX~&ANCFKjS%k~ #+q$Tc!fTZ?p>8AU!icU z6R>~h-yN>@gC}zg)U!kW!^=Z4)|JtCEZ*-JoF%CG);t;3dQ__!=nYYTdGrd2g4E`F ztkuMRmr}^u@-YK+3TA%J6#OJ$2H3qJurM<_{-AmO)PfK`m)&sa*`8%>wl^Uw=|j_t zw|cIo%%&5UIk<>m)1Rke%6(N8!A970L$H!-uA1Sh!b0#{==Q?p7CuV(AjP#Gz2UMD zlSpR~omu#9<^g2vNl7(jHoc+ScYOvMQ}_i_wD-%M5T B`co0We%siySIuC zL$8B=6hH=~H) Z36Vvu zhTBh+Im-NN7bMh-i{-|}W+UX-?n0N2{h&ToK0I{DSx8mq@s+SBLj}VcylfGIHl=p9 zgvl iSyrTv6Jy$PfQOn|_*P?l$H#jU$tGP6UY zB}Fm$fw#@FaWC>f7Oh!MMVEH{Jweh#o HSrr^G{0sw7^d24Q0Bt_1( zSta!-vKEqql}>&)=T*4<0e%_4*4?2yA(XenGbk43<&OC7th*02b}Y90wfn_ckEDvJ zVpi(-z96Vx!-o%i_5YM|HuL3GI8CXa3u>Rij6_}8J97h#W!f*ce7kZ%n|;2$EIy<# zL2<2P J2f@b1CZu0=^cJrtD7+$_f;u%)#pI&DorJ9dp(XT{5 zd>`L-BFnq>_%YM7oN>l!)lDdRrk9jsxFjpgQ8D|uQ*i~Rn@-MKEJfabI?w_VCds@M zvU>up@!&HaWmV3iQ2rhOBJX$BBgf#Ft=6@&IM}A#)Nd5EK^ rrXjmwV_ItpnZ}`quQ@ssOW~!kvTg9l~a0PZj$+jC9Yrl=r z5ebEEMUynCT~vNoKTYe-v5LfKpE0jtq5Z;=#9WMAoh)MM2PF(OWZmKtDFy3oaC|Um zv^hZF3)L)0+4Pa@K6a9VofG}j%j}8t>iL{y6Xsg0Q6~GhVqHX31O}H87R(kS6aQTj zh0v)p5i&24MksTvg69WTA Ef~7J&4PXK^$pWl z90+PbK*cJi0=rfmOe;G>5~Y(s9hL#_S)%f`=ab+Kd{n`k1bLO2aiGoLI8NOxlh{)N zU6Q=GLQ$KtXMeq&L>mIEoV *ayP_R-atBYO&k}C4pW>35AVy}Jt+Y7 z0ir1Ke#FIK{{++W1l9Hd?W(_6>z7~_u-emWO=|M|2XMQjZ{G-`*c?4Dcl-FV4+th< z%T;qac+o-2{QwVAj>c7N_#X&wap^-{ISr&Q-PMBlMD$2SuDSNyCq;LB%TkPqet!RN zRr|Uxw|4OLW)r722Y^-Wc}=bomv^@fgZ}o7PDGVkPe|xvR)tdwx2YX!X>>5A`d(OK zJsaFbWHt#lx<)7JZ@!JvFu+T+mT>*PQ)uVo<+zG^r?Al|>&8ENHkJW50#62MD6efR z%x}myjmgG%USzIsNM%o2OwCS(ImTllTLD5~*VAO#)|H_ENY%+$_f&81%<&D?)U8 U?q#OKwuzHHP*j^ivJ zJ{zb%*tyByvZ {}52)q4fxp*`_mcHGWuL zhaxO`#ByQ7m+{SYVLHq>1|LgN#dgkX4-9xpM)3q`x}A6!KXPMgKcJ`nc07H44dWMq zUAfSh=}~504MtKH_4-R11YI-(Y=Dr{oRd%w--d{3#lp9Nfe2XsHKJCXbJ}d~vT&K) z$@P{|0@VzuSP;~0P6?*GsL9ekG}N`!xpo2ydA J!;Oc-jY$SAKoI%lxUHUJ}|JiBs0R*Tl2 zw*sdHUWStB(^YBGYz|>i$2x*|-%Y?CHEAFMMmKfWg?i5usQ2XEMHwl#q>!)uH0mr( zF76+?AjIF+I*l}%wy=uFfr+jlUJKhKrI=M}dFYBaO83Uh+w2)LBujJt{!qnGmRp!% zEDcrjGH(1e7c)7JBs_O43?ND4M8h#uRPg3*u+hIauFszh2C{luf*$wt40LY>MRy`K z(Mp;4&GlX rkFzO{A2 UrmKdITwycZ zbz|0E7z&!n69cvaKSOm$8`63PSEpvsEr0UJp{k~?{=?L@D!|%_X|D#d#S=>05b Z#LAzcN%fa+4tTU7 z9B6#lvqnd8AG<1Ix;liq&vU(cRj~J@Ui?c-$wILoNT?g38{ro;(q85;`sF<~XFo9q zA-r8!Tz(yj((vH3P<))Otf-H;InQFU-Yzm!rC$so5wZ`S8aS~rE!U`xP0NkcbU{!$ z--D Goa}SPnwI$GMjbu+2Y!*uZ8wh5aG}C~yxB^Zf1>au=2xMN^- GD^Z9Zk?uEQtxp$cAP$M g(9I`pmB~mCo`KuOB*7``fHyj)5cm^Gygx&j{CKDk7el{X-~5 zawF(uJcJ?xpJW+O8Y~6~;WGt&o;&Z!=)V0x #JB)h|5r)$-n-(T~UzDRye7bdeX4n#-r zVJ=vOdMrLLr#5F)11{5Pj0l8qhh>2|(%lA`nw)MYj{ zw*eR?xBYc(eNoi3h|^Ny3(8VXBuq=P`uT6b<$}ChCj0F%#}W9&L^8L~j!ZDjod{ml zx{dT_$2-Y(#B@B*&<`4UGndO{GGlWSY^t dJ~K{X4$itOwfQaO9TrUh EH~fS$wz1UQgw=ek_5+*;oMbsz`}Ggi-+X&ix-xhD zHhhQ2E4|kGjFE;b8i=DpyHbZf2k~V)*96iJ^7&VlOy$&ez%Fhbc268wb#jh4PIv_d zg<`>dTj2(cH)QygLS)3-x38aqoY*O1#D#uf_3Sy?EW~908Mz#6EDo6A73fHVnCJZy z_UO=Y=7bou#WxH&1YohIpa8fI+!wAA9 5m7-(u@7|F zN@Ur631vzZb)bPz$R-8{A)rWGSYRyI^mne$iu`yw(yknNBKqLS5Z82s?nFyN#VGV; zZ6H9VJuG^sqEn|ZPlq4sN?*fZiUo+%M_+SW-8Yg+&U(HwqqjbAxBXxl2!&IbN)WBp zX|?!A 8szV8ms?Cpl6dltDAsO~- zcy!F$`SxA8At_ZN=zcHP&Wd4MGk*IkEY&O02)FM*_mHyAX-n>89XiF2(f}A@G6Clw z41EgOEKGCbEvJ4hAvqF5y_BD6-(-@x&ud{J7$G!V#EBlD6dIi}3WBF`{fKn#BenN3 z78NsahJDdi+%>Lk9LL549Xnw*uM*MiqCQaF{n$968rSrLmHG(pnYEA5gh1qEU&BR1 z$)q~>Iq&vO%q61&*Mx6X0emLCEu3`F7vL~y+XcbL6YV0XSNkH8za#7ytCaOE9qkPc zy3r@dRUtUJTfq2J6Z4l0q1Y*O!S}=NUCPmGKX?I{;{Qtzsta2&iIjR}+3(rHplJ&i zbZ#ec3rnOm(D85+e8s)Bf62pEJFGfZWlUb77ab@kOaBJyT^&aC=Y{3}V_x6zrT(DJ zhSo(4jJ*CdYfbqALg0NFyw5@d^j_<*T#?mhB &Vxyd8}16U8O*8*e4|uXU&_eF8_qg~a!+r^*jnO3E-NMqn<- zm9F(--jVwbzje*QLUAqJip_6GsI_7k8kZ8T<&86i^!JT}gO=)btQtXVJOaSh`_ z&rw;?^VNE|(zbR3fj49<+<2czi%=Zn8l4G&U9!ub4guQM3)c5$aZAcYsLFQkRNQ4{ zeZWbRCp#v5tbNRZr5TD7H2v|0L;;J?)+f!=A||wWJ@#UgqJ&zEEXL-9w^DU=+;=(a zAMn?3FXNVhOp!VAwvVx4>;nY2M_y6qt)Ip|pC=MMTPhDgL8JW?*O(Og2cc|&$AtaU z-@{Rb&dBq3v6d)A5@%jC@Y!767)Us{r+(tn*q9wVhrK$bi@4rgM6#%SjwlsmTW!#_ zz?!~#$II5WNixaT&O$J`Y?!!|pTD^`2lzY`n}e|Edl?c>Z;84$U$;Zo+U$`D1n=#& z^LV`G)kCK^9JagO`Pa2L2|d?GpXj3vnp0@K1*Om2P8ox5rw)udOjyazY) Z0H8Xy8>bC`is4KSIHT@J{RB9Kv4s9Nw?pD2x`qIw|W0# zaj;D 3W`=L-dp8nTBU)GDAA zy0U;Kp*xN0;hKC~zHFQ#F-tI$c=CI(Z0gpFRUVV!cR XRDYX00&^p{x za*EeXTkE|{HEQJ}Ar39cE(+7~bDk8A82q=}`GCSup~A_>xC+I&fby|R0*Y7@C%;_p zCDLjGW}zXXFA&UDg{hqu$Mn>W$sfE%)c!mkeVV41aUd~3*sR~~uYkpj&y`gK%APBe zejvRvvr&A=rtfcPHK~10ZG~HCLgvhSBT r{9A|tVE3TkziI#MXn1Q5=w6sn050Z1aJOxJFGx5DM`{}`o{bpk=sOCIETqPy_ zdrg}3M~6LVA|<~h g-Oyo>M5GD)fM;oQV!um(-%?V(@XD2g zrf>%IB#2H1*iF^jgrbk=(aH8fwL6^F%dI=RC5|dsl(c+#MsIelqG}N7;bSpHXDA@G z-d8qSGA?}y)d5ON*5iDmNh&?3iZyzW9tE6@l0?-uyU~o^_0(^FBp~w u0>|HmdKqvH@WQ@^i8`gISdo6&Hx8kE8PW9+%BdsD3{3d9AOcwX$#SND_w8e`V zJ(jjHAGv&lal_@x97TlY*Oz?i&?w^ymquPf2a9bkO*^ptJ#?AfLgp|jzwq^+Zmw+? zIe~=vfUvuZnUdm!@5+QOR2THnP(}M@qTFk*xHZC_G9bOeZ3zrTe&|`k*=9c#iXK=6 z$yh*>vKwy0%2(B)6Duw~=1`z|io IRn7MiV~Cc^!t8sODm6QPi&N7j-lKHqR@b-^foM&aI8 zY^Hr8uOAuX`GUp(5vVQ_aWN XPjUQ#jWx>> }}%cf>wt2jn7)hJfUoIJ6XR-t^HEcodwtLO86It$f7qF+7i|d=voch zaQRovs={SGT2AeiyZ7Uysm&?2?%o1jw-4#%uP?3lSvz!kDD)~D* zb5h`jyDyr16~<{I-@|ABL= DdbyyOs?F+|EXxQp9~6o_D+Mw6u7!PCd=8Hbue+>`HNtL-e2-Av_; ztgpVdQqQd)@IC%{b5eSY*b$`(Zg)8E%NZ2Ei)SQ*eYWc<4Ozl!)LQu8DLex-g)acV zr0}N$116#}H0)wK6 }p+0$PL zU7F=~x}Snp4L~DbLE|xA ~l@%m9Mx`9okHxMNrVu2mqj$VyHtf zm(>)90(>{Ooa~Q2T1?~zH?aA|BApcjYLmmSUoJJ`8O`0Vg1t&gv+q>4Is9L)zZ=Fm z)TBHg$ZKIY9$cnXKE9Sqh5q$2Tq@RA_)NcaQw)GfJY$n#&U!ASRRWBJPyJYdeQ#%L zlF-`Q@#_0Dzd9wCr22`Yv)y(r?fV0c0}kjD%`F%WK4!f<+jDkH)0jP#Bn+!(r7{wS zf*HZ!%Qo&s7oqIM?HZ-tGNC=?kC(1U%+ECfs}laF=|Su_{}l7#nig~Xvy(j(^#6ZH z`~M5e>fg=t?JnXwo8kY`MIZhL-)s9B;otH 9ka~?k%^I_TNoDydT%5tcN`ZBnlR=#81oc!J7&~IRTdd(J#!1oH5 z&fgd%+{Wv_vwONP3>LSWp?qYef9n_{i~$uNg>ZK)^3w-Yl^Z|jE~3!$I`2fLPG9pE zJ0{+IE18d?dT5@+s|a3yfU;8<^!)nE<-CELx#5OZO_FRmu y6F?1vxkxt4DpFb`}sZoO3Oo3y-#v zv&?T} ==yQ+!Z?my5ECrKAVCWdcC9k8ay zryI#(?HMHt*k9ZVDsP%>v=C^aF50xiR2 zJ_+z*E*Yc)k*|4HcD{6W&@|MaUM5M%- z4#VOuiDsgrNFh$nCYq>|Sx45Wm%(5>r`v8QJKih*oL+c*F5WT1VD=Yl Q`3woc?;%<^3>yqk->x-pu-A&EOf;(?&!6%TyKdXlS@Iz0!U6_S_t0xvJ z9kB`RU-RI1M-u #FguT83+7?`2qt%dg~WTH28 z29Do0ex=&nX5CrbB2xLw2(89H?luS7(yA8XBh824F@}STkS||0T<>~r^)AV^*6;s5 zYC`YkopjV>`m04%GkK0w1Sq=iZVbm$|7d}2o-28D8{Mwwj}XobrfGm~Ctn17x?cTN zQ%fekouLuMN~E%iW};uapKrf@0_f~r+%nidpHD5$G>-7EU!G0kCCOVl({7Z1>I13$ z=KRaEF1~|WVo=IYaBg2Wckj2sBfgUhJ=yRxT2uOl{v7y3Ae3qnvLI J;5 y_O3bK1Tk5tO&Lfh4<)`u2KLx09o$yDDrWVLvc LfjQ=0zkpHq_QQ*HLwk!NoJq;y5dHMf8fBiQp_Wy+g`@h-t zd2f6EwWR;nQ~$3q2nRN+Csi#*{0i05AAY?)-JyG-JE{6(y%JD-Qr-m(9NG@O;FO7% z&YyM~W$e_naIaU72^W{bLjE*;dK2E%isiFZ(e&8X^IX!vq8-ms)n*b0n )=kPWr>W&D)r?AZpSQd{EU|U{tHp)8E5> zt5LN|5O+bOn*DB;)lz^-tshj$ gd#P@zIM+uY8@!S;4i- zO07%r=Po!o>(;z$_?e;Y)T6R0!T6x4G`fBZ#KyTDT?~h8=n=gE`kc~y6}sh{9un;z z{WTwsWhEw{kJ+HT)M8=gkJ #I1#CHN}g-5Ykdh&i+0bM*E>=k9( zqIHW0dhtD +nde9AOg4UwmqE~tza%SRIBGQ4;y8V3I>3JJR zM8x=nyetm^op|3fgPgKN^;rE9{Ol1d-j;{t ^v$qzb=_lbbxF{* zR%G2Z)Nk2%$1?OUUWP}M5l5EcJDt7d^buf6L3X)rKisu|VcE{MQEi*6;0|2BF-dA_ zgo|ONbMK0)t8Z;gwkf^NZY7zk0SoiQ37=n_!` )2u;A^E%N_4T8`(oqFZc!me9QZxrJM>(MCC6Dmnil#LG an6`gsnV8O{m-M1CX1g_JcJdXwa z;)EmY*KjJeUWS8q1ryzwO@700J9q1>yK<}k)|I m-&|YxV7mjyTG{7_%P;{ldtxF z#DIK9wt-@6?84%sswnLGv1=vOb;s$LYlNm9O uK#nZ_GS(q;b;sX=ca)6h+qC~oyqo68aY zcn~5pY>iy>FMsNt`D9m`w&tm6oy6tu@zp+6Z$vp#TukHzPnvUCd3l*TZ?BE$$TO=e z%>0gynevhr`N!qriq5~iXk9aKQ3CZ(b1^i=cly-|NTupjFRu42Hs-tR7yzRdwlHl4 zEbvE@o54dsWhFbALyl=!d9@i0Ckj%0$~Sne6Faynsk-^bR8X_n!7F1bKp_@UYb%nX za=gDL)m+=4i-`Q_O_TW;Fw%&tSx^fD&6Nx$+-L&k)m<+lDP7 jorY+I8ez|eR_%zt3 z4O00(ABVy~TO?|K=a>WEbRXT}* siHT{$Zby2s(q1K{9+)dmmy! zmRc=4m%eC-QDf4ffTxR2?xvfv6aM77N9S+TCeH;mo5zzh#ceG7&kKju9-j-~#1VoC zF}`s9R2nwVkB Md7p9-dr|p#8;8eiPfZqwi!k9;fh{T z$}nwKaTx2GXoRGrRh`EXBefEJ%M=HCpo);NBdJ)w7$NpWDqbuxNH7u_rE~XO(S6eg z=6WNm^9w{B5sn6Km+RJFLsFKN){J}_sZ))ho}%y4;qOV91-`{j!8%-tKaLz3o96jX zY>3skBxDLs+ZA(o+-vNHb6y^aFI=hW`gQ7c_;vn)_afiEDl31_#ZokLoV}PJ hN{s{YC{J zNSzw{&Q&vgqLRtcZi5+^g_|(NI71#n^Y)hP1hsO~3fx~8#ABlb?-g*93r6F%vKf7? zS (~dk-a0-S+;AaOJQf29Ryfi}W`?DmW?;3E5Nc{)0Gx6d&{2VNX zf A*YZJ#a6~39W}2hK}|g aJ zdd{jfU!(H-2N>)eG RbiP`^+YlD!g _Lx8mKAs zJ|-=PzN!aoPD(lToG=NL0ZTnB*A$WH<`(+WPo?Q=s(CklbusE$>jm