From 5c3b7e0c00ed08acf79c445e13fbbc869be6f355 Mon Sep 17 00:00:00 2001 From: techguy16 <88870951+techguy16@users.noreply.github.com> Date: Wed, 6 May 2026 19:41:25 +1200 Subject: [PATCH 01/10] Cache application categories to speed up browsing --- api | 45 ++++++++++++++++++++++ gui | 113 ++++++++++++++----------------------------------------- settings | 3 ++ update | 5 +++ 4 files changed, 81 insertions(+), 85 deletions(-) diff --git a/api b/api index 6f1dd8e..ff3a9e1 100755 --- a/api +++ b/api @@ -166,6 +166,51 @@ search_apps() { fi } +cache_categories() { + # $1 - apps dir + # $2 - include Pi-Apps? + yad --title="LinStore" \ + --class="LinStore" \ + --center --borders=10 \ + --text "Generating app cache..." \ + --no-buttons & + + if [ -e "${1}/app_categories" ]; then + rm -f "${1}/app_categories" + fi + + for app_dir in "${1}"/*; do + app_name=$(basename "${app_dir}") + if [ -e "${1}/$app_name/category" ]; then + echo "$app_name|$(cat "${1}/$app_name/category")" >> "${1}/app_categories" + fi + done + + if [[ "$2" == "TRUE" ]]; then + if [ -e "$HOME/pi-apps/etc/categories" ]; then + while IFS= read -r line; do + app_name=$(echo "$line" | awk -F'|' '{print $1}') + category=$(grep -r "$(echo "$line" | awk -F'|' '{print $2}')" etc/mapping | head -n1 | awk -F'|' '{print $2}') + echo "$app_name|$category" >> "${1}/app_categories" + done < "$HOME/pi-apps/etc/categories" + fi + fi + + sort "${1}/app_categories" > "${1}/app_categories.tmp" + mv "${1}/app_categories.tmp" "${1}/app_categories" + + pkill -f "yad*" +} + +get_categories() { + cat etc/categories +} + +get_apps_in_category() { + local category="$1" + grep "|$category$" etc/categories | cut -d'|' -f1 +} + update() { pkill -f "yad*" ./api info "Updating LinStore..." diff --git a/gui b/gui index 87bc285..dcf65c3 100755 --- a/gui +++ b/gui @@ -1,5 +1,7 @@ #!/bin/bash +source api + APP_STORE_NAME="LinStore" APP_STORE_WIDTH=320 APP_STORE_HEIGHT=600 @@ -74,71 +76,6 @@ list_piapps() { fi } -read_categories() { - while read -r category; do - categories["$category"]="" - done "${1}/$app_name/category" - category_file="${1}/$app_name/category" - else - continue - fi - else - continue - fi - fi - - category_file="${1}/$app_name/category" - install_script="$app_dir/install" - - # Check if the install script or architecture-specific install scripts exist for this app - if [ -e "$install_script" ]; then - while IFS= read -r app_in_category; do - # Make sure $app_in_category is not empty before accessing the array - if [ -n "$app_in_category" ]; then - if [ -n "${categories[$app_in_category]}" ]; then - categories["$app_in_category"]+=" $app_name" - category_apps["$app_in_category"]+="|$app_name" - else - categories["$app_in_category"]="$app_name" - category_apps["$app_in_category"]="$app_name" - fi - fi - break - done <"$category_file" - else - architecture=$(cat ~/.linstore/architecture.txt) - install_script_arch="install-$architecture" - - if [ -e "$app_dir/$install_script_arch" ]; then - while IFS= read -r app_in_category; do - # Make sure $app_in_category is not empty before accessing the array - if [ -n "$app_in_category" ]; then - if [ -n "${categories[$app_in_category]}" ]; then - categories["$app_in_category"]+=" $app_name" - category_apps["$app_in_category"]+="|$app_name" - else - categories["$app_in_category"]="$app_name" - category_apps["$app_in_category"]="$app_name" - fi - fi - break - done <"$category_file" - fi - fi - done -} - get_app_description() { app_name="$1" description_file="apps/$app_name/description" @@ -284,9 +221,12 @@ show_apps_in_category() { formatted_apps=() if [ "$1" == "All Apps" ]; then title="All Apps" - for app_dir in apps/*; do - app_name=$(basename "$app_dir") - if [ -e "$app_dir/install" ] || [ -e "$app_dir/install-$(cat ~/.linstore/architecture.txt)" ]; then + while IFS= read -r line; do + app_name=$(echo "$line" | awk -F'|' '{print $1}') + app_dir="apps/$app_name" + if [ -e "$app_dir/install" ] || [ -e "$app_dir/install-$(cat ~/.linstore/architecture.txt)" ] \ + || [ -e "$HOME/pi-apps/apps/$app_name/install-$(cat ~/.linstore/architecture.txt)" ] \ + || [ -e "$HOME/pi-apps/apps/$app_name/install" ]; then app_icon="apps/$app_name/icon-24.png" formatted_apps+=("$app_icon") if [ -e "$HOME/.linstore/installscripts/$app_name" ]; then @@ -295,22 +235,26 @@ show_apps_in_category() { formatted_apps+=("$app_name") fi fi - done + done < "apps/app_categories" else - apps_in_category="${category_apps["$1"]}" title="Apps in $1 Category" #formatted_apps=() - IFS='|' read -r -a app_list <<<"$apps_in_category" - for app in "${app_list[@]}"; do - app_icon="apps/$app/icon-24.png" - formatted_apps+=("$app_icon") - if [ -e "$HOME/.linstore/installscripts/$app" ]; then - formatted_apps+=("$app") - else - formatted_apps+=("$app") + while IFS= read -r line; do + [[ $(echo "$line" | awk -F'|' '{print $2}') == "$1" ]] || continue + app=$(echo "$line" | awk -F'|' '{print $1}') + if [ -e "apps/$app/install" ] || [ -e "apps/$app/install-$(cat ~/.linstore/architecture.txt)" ] \ + || [ -e "$HOME/pi-apps/apps/$app/install-$(cat ~/.linstore/architecture.txt)" ] \ + || [ -e "$HOME/pi-apps/apps/$app/install" ]; then + app_icon="apps/$app/icon-24.png" + formatted_apps+=("$app_icon") + if [ -e "$HOME/.linstore/installscripts/$app" ]; then + formatted_apps+=("$app") + else + formatted_apps+=("$app") + fi fi - done + done < "apps/app_categories" fi GTK_THEME="${theme}" GDK_BACKEND=x11 $YAD_COMMAND --text "$title" --geometry=${APP_STORE_WIDTH}x${APP_STORE_HEIGHT}+${categoryPos}+${categoryPosY} --center --columns="2" \ @@ -330,13 +274,8 @@ show_apps_in_category() { } show_app_store() { - read_categories "apps" - if [[ "$use_piapps" == "TRUE" ]]; then - read_categories "/home/${USER}/pi-apps/apps" - fi - # Sort categories alphabetically and format with newlines - sorted_categories=$(printf '%s\n' "${!categories[@]}" | sort) + sorted_categories=$(printf '%s\n' "$(get_categories)" | sort) list_items=() list_items=("images/categories/All Apps.png" "All Apps") @@ -373,6 +312,10 @@ show_app_store() { fi } +if [ ! -e apps/app_categories ]; then + cache_categories "apps" "$(list_piapps)" +fi + if [[ $1 == "" ]]; then ./api logo ./api buildinfo diff --git a/settings b/settings index f6552b9..02c04f5 100755 --- a/settings +++ b/settings @@ -1,5 +1,7 @@ #!/bin/bash +source api + APP_STORE_DIRECTORY="apps" CATEGORIES_FILE="etc/categories" THEMES_DIRECTORY="/usr/share/themes" @@ -139,6 +141,7 @@ show_settings() { import_from_piapps=$(echo "$fixed_settings" | awk -F '|' '{print $5}') echo $import_from_piapps > "etc/pi-apps-import" + cache_categories "apps" "$(cat "etc/pi-apps-import" 2> /dev/null || echo FALSE)" express_updates=$(echo "$fixed_settings" | awk -F '|' '{print $6}') echo $express_updates > "etc/express-updates" diff --git a/update b/update index a823a90..3c9f191 100755 --- a/update +++ b/update @@ -1,5 +1,7 @@ #!/bin/bash +source api + if [[ $(xrandr --current) =~ "connected primary" ]]; then resolution=$(xrandr --current | grep " connected primary" | awk '{print $4}' | cut -d'+' -f1) else @@ -33,6 +35,9 @@ check_for_updates() { mv ~/.linstore/tmp/apps ./apps sleep 1 + echo '# Update app cache' + cache_categories "apps" "$(cat "etc/pi-apps-import" 2> /dev/null || echo FALSE)" + # Clean up # rm -rf ~/.linstore/tmp echo "# Finished" From 294f61334bcfb1fa4fa638e950fc5d627c419d07 Mon Sep 17 00:00:00 2001 From: techguy16 <88870951+techguy16@users.noreply.github.com> Date: Thu, 7 May 2026 18:00:07 +1200 Subject: [PATCH 02/10] Improve support for listing apps from Pi-Apps --- api | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- gui | 35 +++---------------------- 2 files changed, 86 insertions(+), 34 deletions(-) diff --git a/api b/api index ff3a9e1..d3f9ac5 100755 --- a/api +++ b/api @@ -31,7 +31,7 @@ logo() { # Function to install an app install_app() { - local app_directory="$1" + local app_directory="$(get_app_directory "$2")" local selected_app_name="$2" local installed_file="$HOME/.linstore/installed" local temp_script=$(mktemp) @@ -73,7 +73,7 @@ open_app() { # Function to install an app installation_script() { - local app_directory="$1" + local app_directory="$(get_app_directory "$2")" local selected_app_name="$2" local installed_file="$HOME/.linstore/installed" @@ -97,7 +97,7 @@ installation_script() { # Function to uninstall an app uninstall_app() { - local app_directory="$1" + local app_directory="$(get_app_directory "$2")" local selected_app_name="$2" local uninstalled_file="$HOME/.linstore/uninstalled" local temp_script=$(mktemp) @@ -211,6 +211,79 @@ get_apps_in_category() { grep "|$category$" etc/categories | cut -d'|' -f1 } +get_app_description() { + app_name="$1" + description_file="apps/$app_name/description" + if [ -e "$description_file" ]; then + cat "$description_file" + elif [ -e "$HOME/pi-apps/apps/$app_name/description" ]; then + cat "$HOME/pi-apps/apps/$app_name/description" + else + echo "No description available." + fi +} +get_app_creator() { + app_name="$1" + creator_file="apps/$app_name/creator" + if [ -e "$creator_file" ]; then + cat "$creator_file" + elif [ -e "$HOME/pi-apps/apps/$app_name/credits" ]; then + cat "$HOME/pi-apps/apps/$app_name/credits" + else + echo "No description available." + fi +} +get_app_website() { + app_name="$1" + website_file="apps/$app_name/website" + if [ -e "$website_file" ]; then + cat "$website_file" + else + echo "No description available." + fi +} +get_app_directory() { + app_name="$1" + if [ -d "apps/$app_name" ]; then + echo "apps/$app_name" + elif [ -d "$HOME/pi-apps/apps/$app_name" ]; then + echo "$HOME/pi-apps/apps/$app_name" + else + echo "" + fi +} + +install_packages() { + packages="$@" + sudo apt update > /dev/null 2>&1 + + for package in $packages; do + if [[ "$package" == http* ]]; then + echo "Downloading and installing $package..." + wget --no-check-certificate "$package" -O /tmp/package.deb > /dev/null 2>&1 + sudo dpkg -i /tmp/package.deb > /dev/null 2>&1 + rm -r /tmp/package.deb + elif [[ "$package" == *.deb ]]; then + echo "Installing $package using dpkg..." + sudo dpkg -i "$package" > /dev/null 2>&1 + else + echo "Installing $package using apt..." + + sudo apt install "$package" -y > /dev/null 2>&1 + fi + done +} + +git_clone() { + if [ -z "$2" ]; then + local directory=$(basename "$1") + else + local directory="$2" + fi + + git clone "$1" "$directory" +} + update() { pkill -f "yad*" ./api info "Updating LinStore..." @@ -237,6 +310,12 @@ information() { printf '\033[1;104;30m INFO:\033[0;104m %s \033[0m\n' "$msg" >&2 } +export -f install_packages +export -f error +export -f warning +export -f information +export -f git_clone + # Main logic to handle command line arguments if [[ $1 == "search" ]]; then search_apps diff --git a/gui b/gui index dcf65c3..7c27dcf 100755 --- a/gui +++ b/gui @@ -76,33 +76,6 @@ list_piapps() { fi } -get_app_description() { - app_name="$1" - description_file="apps/$app_name/description" - if [ -e "$description_file" ]; then - cat "$description_file" - else - echo "No description available." - fi -} -get_app_creator() { - app_name="$1" - creator_file="apps/$app_name/creator" - if [ -e "$creator_file" ]; then - cat "$creator_file" - else - echo "No description available." - fi -} -get_app_website() { - app_name="$1" - website_file="apps/$app_name/website" - if [ -e "$website_file" ]; then - cat "$website_file" - else - echo "No description available." - fi -} theme_get() { website_file="etc/theme" if [ -e "$website_file" ]; then @@ -159,8 +132,8 @@ app_details_page() { local selected_app_name="${1//|/}" selected_app_name=$(echo "$selected_app_name" | sed 's/<[^>]*>//g') - local app_directory="apps/$selected_app_name" - local app_icon="$app_directory/icon-48.png" + local app_directory="$(get_app_directory "$selected_app_name")" + local app_icon="$app_directory/icon-64.png" local description=$(get_app_description "$selected_app_name") local creator=$(get_app_creator "$selected_app_name") local website=$(get_app_website "$selected_app_name") @@ -227,7 +200,7 @@ show_apps_in_category() { if [ -e "$app_dir/install" ] || [ -e "$app_dir/install-$(cat ~/.linstore/architecture.txt)" ] \ || [ -e "$HOME/pi-apps/apps/$app_name/install-$(cat ~/.linstore/architecture.txt)" ] \ || [ -e "$HOME/pi-apps/apps/$app_name/install" ]; then - app_icon="apps/$app_name/icon-24.png" + app_icon="$(get_app_directory "$app_name")/icon-24.png" formatted_apps+=("$app_icon") if [ -e "$HOME/.linstore/installscripts/$app_name" ]; then formatted_apps+=("$app_name") @@ -246,7 +219,7 @@ show_apps_in_category() { if [ -e "apps/$app/install" ] || [ -e "apps/$app/install-$(cat ~/.linstore/architecture.txt)" ] \ || [ -e "$HOME/pi-apps/apps/$app/install-$(cat ~/.linstore/architecture.txt)" ] \ || [ -e "$HOME/pi-apps/apps/$app/install" ]; then - app_icon="apps/$app/icon-24.png" + app_icon="$(get_app_directory "$app")/icon-24.png" formatted_apps+=("$app_icon") if [ -e "$HOME/.linstore/installscripts/$app" ]; then formatted_apps+=("$app") From cc268edeaed90c6125b5893f6e8d91c6a3622f6e Mon Sep 17 00:00:00 2001 From: techguy16 <88870951+techguy16@users.noreply.github.com> Date: Fri, 8 May 2026 08:28:31 +1200 Subject: [PATCH 03/10] Update gitignore to not include configuration files --- .gitignore | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index cbd3f99..1472561 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,7 @@ -/updates_list.txt \ No newline at end of file +/updates_list.txt +/apps/app_categories +/etc/accent +/etc/editor +/etc/express-updates +/etc/pi-apps-import +/etc/theme \ No newline at end of file From 5a00e969ff0ac6127f426e1342f5c57b4bb4f914 Mon Sep 17 00:00:00 2001 From: techguy16 <88870951+techguy16@users.noreply.github.com> Date: Sun, 10 May 2026 20:09:45 +1200 Subject: [PATCH 04/10] Move to using a FIFO for list data --- api | 2 + gui | 129 ++++++++++++++++++++++++++---------------------------------- 2 files changed, 57 insertions(+), 74 deletions(-) diff --git a/api b/api index d3f9ac5..eb269ac 100755 --- a/api +++ b/api @@ -315,6 +315,8 @@ export -f error export -f warning export -f information export -f git_clone +export -f get_app_directory +export -f get_categories # Main logic to handle command line arguments if [[ $1 == "search" ]]; then diff --git a/gui b/gui index 7c27dcf..71b4654 100755 --- a/gui +++ b/gui @@ -11,6 +11,12 @@ YAD_COMMAND="yad" YAD_FLAGS="" ACCENT="green" +export ACCENT + +pipe="$(mktemp -u)" +mkfifo $pipe +export pipe +trap "rm -f $pipe" EXIT #pwd if ! command -v "$YAD_COMMAND" &>/dev/null; then @@ -189,90 +195,67 @@ app_details_page() { rm -f /tmp/description.tmp } -show_apps_in_category() { - while true; do - formatted_apps=() - if [ "$1" == "All Apps" ]; then - title="All Apps" - while IFS= read -r line; do - app_name=$(echo "$line" | awk -F'|' '{print $1}') - app_dir="apps/$app_name" - if [ -e "$app_dir/install" ] || [ -e "$app_dir/install-$(cat ~/.linstore/architecture.txt)" ] \ - || [ -e "$HOME/pi-apps/apps/$app_name/install-$(cat ~/.linstore/architecture.txt)" ] \ - || [ -e "$HOME/pi-apps/apps/$app_name/install" ]; then - app_icon="$(get_app_directory "$app_name")/icon-24.png" - formatted_apps+=("$app_icon") - if [ -e "$HOME/.linstore/installscripts/$app_name" ]; then - formatted_apps+=("$app_name") - else - formatted_apps+=("$app_name") - fi - fi - done < "apps/app_categories" - else - title="Apps in $1 Category" - #formatted_apps=() +update_fifo() { + if [[ "$2" == "Back" ]]; then + selected_item="" + else + selected_item="$2" + fi - while IFS= read -r line; do - [[ $(echo "$line" | awk -F'|' '{print $2}') == "$1" ]] || continue - app=$(echo "$line" | awk -F'|' '{print $1}') - if [ -e "apps/$app/install" ] || [ -e "apps/$app/install-$(cat ~/.linstore/architecture.txt)" ] \ - || [ -e "$HOME/pi-apps/apps/$app/install-$(cat ~/.linstore/architecture.txt)" ] \ - || [ -e "$HOME/pi-apps/apps/$app/install" ]; then - app_icon="$(get_app_directory "$app")/icon-24.png" - formatted_apps+=("$app_icon") - if [ -e "$HOME/.linstore/installscripts/$app" ]; then - formatted_apps+=("$app") - else - formatted_apps+=("$app") - fi + if [[ "$selected_item" == "" ]]; then + echo -e "\f" >> "$pipe" + sorted_categories=$(printf '%s\n' "$(get_categories)" | sort) + + echo "images/categories/All Apps.png" >> "$pipe" + echo "All Apps" >> "$pipe" + while IFS= read -r category; do + category_icon="images/categories/$category.png" # Path to category icons + echo "$category_icon" >> "$pipe" + echo "$category" >> "$pipe" + done <<<"$sorted_categories" + elif [[ "$selected_item" == "All Apps" ]] || grep -q "$selected_item" "etc/categories"; then + echo -e "\f" >> "$pipe" + + echo "images/button/back.png" >> "$pipe" + echo "Back" >> "$pipe" + + while IFS= read -r line; do + [[ $(echo "$line" | awk -F'|' '{print $2}') == "$selected_item" ]] ||\ + [[ "$selected_item" == "All Apps" ]] || continue + app_name=$(echo "$line" | awk -F'|' '{print $1}') + app_dir="apps/$app_name" + if [ -e "$app_dir/install" ] || [ -e "$app_dir/install-$(cat ~/.linstore/architecture.txt)" ] \ + || [ -e "$HOME/pi-apps/apps/$app_name/install-$(cat ~/.linstore/architecture.txt)" ] \ + || [ -e "$HOME/pi-apps/apps/$app_name/install" ]; then + app_icon="$(get_app_directory "$app_name")/icon-24.png" + echo "$app_icon" >> "$pipe" + if [ -e "$HOME/.linstore/installscripts/$app_name" ]; then + echo "$app_name" >> "$pipe" + else + echo "$app_name" >> "$pipe" fi - done < "apps/app_categories" - fi - - GTK_THEME="${theme}" GDK_BACKEND=x11 $YAD_COMMAND --text "$title" --geometry=${APP_STORE_WIDTH}x${APP_STORE_HEIGHT}+${categoryPos}+${categoryPosY} --center --columns="2" \ - --list --image="images/logo/logo-64.png" --window-icon="images/logo/logo-64.png" --image-on-top --title "LinStore" --column "Icon:IMG" --column "Apps" --class="LinStore" \ - --button="Back"!images/button/back.png!:4 --separator="\n" --markup "${formatted_apps[@]}" --no-headers \ - --css="span{fgcolor:green;}" --select-action='bash -c "./gui showdetails \"%s\"" &'#> /dev/null 2>&1 - - button_clicked=$? - if [ $button_clicked -eq 4 ]; then - show_app_store - break - fi - - show_app_store - break - done + fi + done < "apps/app_categories" + else + ./gui showdetails "$selected_item" + fi } +export -f update_fifo show_app_store() { - # Sort categories alphabetically and format with newlines - sorted_categories=$(printf '%s\n' "$(get_categories)" | sort) - - list_items=() - list_items=("images/categories/All Apps.png" "All Apps") - while IFS= read -r category; do - category_icon="images/categories/$category.png" # Path to category icons - list_items+=("$category_icon") - list_items+=("$category") - done <<<"$sorted_categories" - # Fetching a random line from the announcements file random_announcement=$(shuf -n 1 etc/announcements) - - # Search function - - selected_category_raw=$(GTK_THEME="${theme}" GDK_BACKEND=x11 $YAD_COMMAND --text "$random_announcement" \ + update_fifo "" & + + GTK_THEME="${theme}" GDK_BACKEND=x11 $YAD_COMMAND --text "$random_announcement" \ --geometry=${APP_STORE_WIDTH}x${APP_STORE_HEIGHT}+${categoryPos}+${categoryPosY} --center --columns="3" \ - "${list_items[@]}" --class="LinStore" \ + --class="LinStore" --select-action="bash -c "\""update_fifo %s"\""" --dclick-action="bash -c "\""update_fifo %s"\""" \ --list --image="images/logo/logo-64.png" --window-icon="images/logo/logo-64.png" --image-on-top --title "$APP_STORE_NAME" --column "Icon:IMG" \ --column "Category" --button "!images/button/search.png"!"Search":"bash -c './api search' &" \ --button "!images/button/update.png"!"Updates":"bash -c './update' &" --button "!images/button/settings.png"!"Settings":"bash -c './settings' &" \ - --no-headers --item-height="$welcome_height" --timeout=0 --no-close) + --no-headers --item-height="$welcome_height" --timeout=0 --no-close < <(tail -f $pipe 2>/dev/null) exval=$? ./api info "Exit value: ${exval}" - selected_category="${selected_category_raw//|/}" if [ "$exval" == "44" ]; then ./api search && show_app_store @@ -280,8 +263,6 @@ show_app_store() { pkill -f "yad*" > /dev/null 2>&1 elif [ "$exval" -eq "252" ]; then pkill -f "yad*" > /dev/null 2>&1 - elif [ -n "$selected_category" ]; then - show_apps_in_category "$selected_category" & fi } @@ -301,7 +282,7 @@ if [[ $1 == "showdetails" ]]; then if [ -e /tmp/tmpname ]; then app_details_page "$(cat /tmp/tmpname && rm -r /tmp/tmpname)" else - app_details_page "$(echo $2 | awk -F"'" '{print $4}')" + app_details_page "$2" fi elif [[ $1 == "multi-install" ]]; then multi_install From 8014ce63217be2659995c5c8b743987487e904d7 Mon Sep 17 00:00:00 2001 From: techguy16 <88870951+techguy16@users.noreply.github.com> Date: Tue, 12 May 2026 08:29:55 +1200 Subject: [PATCH 05/10] Fix segfault and improve speed of FIFO --- api | 13 +++++++++++-- gui | 43 ++++++++++++++++++++++--------------------- 2 files changed, 33 insertions(+), 23 deletions(-) diff --git a/api b/api index eb269ac..b22853e 100755 --- a/api +++ b/api @@ -182,7 +182,11 @@ cache_categories() { for app_dir in "${1}"/*; do app_name=$(basename "${app_dir}") if [ -e "${1}/$app_name/category" ]; then - echo "$app_name|$(cat "${1}/$app_name/category")" >> "${1}/app_categories" + if [ -e "$app_dir/install" ] || [ -e "$app_dir/install-$(cat ~/.linstore/architecture.txt)" ] \ + || [ -e "$HOME/pi-apps/apps/$app_name/install-$(cat ~/.linstore/architecture.txt)" ] \ + || [ -e "$HOME/pi-apps/apps/$app_name/install" ]; then + echo "$app_name|$(cat "${1}/$app_name/category")" >> "${1}/app_categories" + fi fi done @@ -190,8 +194,13 @@ cache_categories() { if [ -e "$HOME/pi-apps/etc/categories" ]; then while IFS= read -r line; do app_name=$(echo "$line" | awk -F'|' '{print $1}') + app_dir="$HOME/pi-apps/apps/$app_name" category=$(grep -r "$(echo "$line" | awk -F'|' '{print $2}')" etc/mapping | head -n1 | awk -F'|' '{print $2}') - echo "$app_name|$category" >> "${1}/app_categories" + if [ -e "$app_dir/install" ] || [ -e "$app_dir/install-$(cat ~/.linstore/architecture.txt)" ] \ + || [ -e "$HOME/pi-apps/apps/$app_name/install-$(cat ~/.linstore/architecture.txt)" ] \ + || [ -e "$HOME/pi-apps/apps/$app_name/install" ]; then + echo "$app_name|$category" >> "${1}/app_categories" + fi done < "$HOME/pi-apps/etc/categories" fi fi diff --git a/gui b/gui index 71b4654..70feeea 100755 --- a/gui +++ b/gui @@ -196,6 +196,7 @@ app_details_page() { } update_fifo() { + output=() if [[ "$2" == "Back" ]]; then selected_item="" else @@ -206,39 +207,39 @@ update_fifo() { echo -e "\f" >> "$pipe" sorted_categories=$(printf '%s\n' "$(get_categories)" | sort) - echo "images/categories/All Apps.png" >> "$pipe" - echo "All Apps" >> "$pipe" + output+=("images/categories/All Apps.png" "All Apps") while IFS= read -r category; do category_icon="images/categories/$category.png" # Path to category icons - echo "$category_icon" >> "$pipe" - echo "$category" >> "$pipe" + output+=("$category_icon" "$category") done <<<"$sorted_categories" elif [[ "$selected_item" == "All Apps" ]] || grep -q "$selected_item" "etc/categories"; then echo -e "\f" >> "$pipe" - - echo "images/button/back.png" >> "$pipe" - echo "Back" >> "$pipe" + output+=("images/button/back.png") + output+=("Back") while IFS= read -r line; do [[ $(echo "$line" | awk -F'|' '{print $2}') == "$selected_item" ]] ||\ [[ "$selected_item" == "All Apps" ]] || continue - app_name=$(echo "$line" | awk -F'|' '{print $1}') - app_dir="apps/$app_name" - if [ -e "$app_dir/install" ] || [ -e "$app_dir/install-$(cat ~/.linstore/architecture.txt)" ] \ - || [ -e "$HOME/pi-apps/apps/$app_name/install-$(cat ~/.linstore/architecture.txt)" ] \ - || [ -e "$HOME/pi-apps/apps/$app_name/install" ]; then - app_icon="$(get_app_directory "$app_name")/icon-24.png" - echo "$app_icon" >> "$pipe" - if [ -e "$HOME/.linstore/installscripts/$app_name" ]; then - echo "$app_name" >> "$pipe" - else - echo "$app_name" >> "$pipe" - fi + app_name=$(echo "$line" | awk -F'|' '{print $1}') + app_icon="$(get_app_directory "$app_name")/icon-24.png" + if [[ ! -f "$app_icon" ]]; then + app_icon="application-x-executable" + fi + output+=("$app_icon") + if [ -e "$HOME/.linstore/installscripts/$app_name" ]; then + output+=("$app_name") + else + output+=("$app_name") fi done < "apps/app_categories" else ./gui showdetails "$selected_item" + return fi + + for item in "${output[@]}"; do + echo "$item" >> "$pipe" + done } export -f update_fifo @@ -248,12 +249,12 @@ show_app_store() { update_fifo "" & GTK_THEME="${theme}" GDK_BACKEND=x11 $YAD_COMMAND --text "$random_announcement" \ - --geometry=${APP_STORE_WIDTH}x${APP_STORE_HEIGHT}+${categoryPos}+${categoryPosY} --center --columns="3" \ + --geometry=${APP_STORE_WIDTH}x${APP_STORE_HEIGHT}+${categoryPos}+${categoryPosY} --center \ --class="LinStore" --select-action="bash -c "\""update_fifo %s"\""" --dclick-action="bash -c "\""update_fifo %s"\""" \ --list --image="images/logo/logo-64.png" --window-icon="images/logo/logo-64.png" --image-on-top --title "$APP_STORE_NAME" --column "Icon:IMG" \ --column "Category" --button "!images/button/search.png"!"Search":"bash -c './api search' &" \ --button "!images/button/update.png"!"Updates":"bash -c './update' &" --button "!images/button/settings.png"!"Settings":"bash -c './settings' &" \ - --no-headers --item-height="$welcome_height" --timeout=0 --no-close < <(tail -f $pipe 2>/dev/null) + --no-headers --timeout=0 --no-close < <(tail -f $pipe 2>/dev/null) exval=$? ./api info "Exit value: ${exval}" From decd33e3ed1aee294e6298c1ffda51b35cf68f94 Mon Sep 17 00:00:00 2001 From: techguy16 <88870951+techguy16@users.noreply.github.com> Date: Wed, 13 May 2026 08:55:35 +1200 Subject: [PATCH 06/10] New pane to open selected script in editor, stop app creator being frontmost window --- createapp | 99 ++++++++++++++++++++++++++++++++----------------------- 1 file changed, 57 insertions(+), 42 deletions(-) diff --git a/createapp b/createapp index f1349f2..cff19e7 100755 --- a/createapp +++ b/createapp @@ -23,7 +23,7 @@ select_category_pane() { --window-icon="images/logo/logo-64.png" --class="LinStore" \ --text="Choose a category\nLinStore organises apps by category, which allows users to quickly find related apps easier.\nPlease choose a category for your app:" \ --field="Category:" \ - --width="525" --height="550" --center --on-top --borders=10 --columns=1 "${category_list[@]}" \ + --width="525" --height="550" --center --borders=10 --columns=1 "${category_list[@]}" \ --list --column="Icon:IMG" --column="Categories" --column="Description" --no-headers \ --button="Cancel!gtk-cancel":1 \ --button="Next!go-next":0 | awk -F '|' '{print $2}') @@ -63,7 +63,7 @@ create_new_app_pane() { --field="ARM 64-bit (aarch64):CHK" "" \ --field=":LBL" "" \ --field="Separate or combined install scripts?:CB" 'Combined (all architectures in one)!Separate' \ - --width="525" --height="550" --center --on-top --borders=10 --separator="|" \ + --width="525" --height="550" --center --borders=10 --separator="|" \ --button="Cancel!gtk-cancel":1 \ --button="Next!go-next":0) @@ -104,7 +104,7 @@ create_new_app_pane() { --text="App Assets\nYour app needs assets in LinStore, which is currently limited to the app's logo/icon.\nSelect these assets here:" \ --field=":LBL" "" \ --field="Icon/logo:SFL" "" \ - --width="525" --height="550" --center --on-top --borders=10 --separator="|" \ + --width="525" --height="550" --center --borders=10 --separator="|" \ --button="Cancel!gtk-cancel":1 \ --button="Next!go-next":0) @@ -120,52 +120,67 @@ create_new_app_pane() { convert "$icon_file" -resize 24x24 "$app_directory/icon-24.png" convert "$icon_file" -resize 16x16 "$app_directory/icon-16.png" fi - + + # Create or update the install scripts based on user preferences + if [[ "$separate_scripts" == "Combined (all architectures in one)" ]]; then + touch "$app_directory/install" & + else + if [ "$install_x64" == "TRUE" ]; then + touch "$app_directory/install-x64" & + fi + if [ "$install_x86" == "TRUE" ]; then + touch "$app_directory/install-x86" & + fi + if [ "$install_32" == "TRUE" ]; then + touch "$app_directory/install-32" & + fi + if [ "$install_64" == "TRUE" ]; then + touch "$app_directory/install-64" & + fi + fi + + touch "$app_directory/uninstall" & + + edit_scripts_pane "$app_directory" +} + +edit_scripts_pane() { + app_directory="$1" + editor=$(get_editor) + buttons=() + for file in "$app_directory"/*; do + [ -f "$file" ] || continue + if [[ "$(basename "$file")" == "install"* ]]; then + buttons+=("--field= $(basename "$file")!images/button/install.png:BTN" "$editor \"$file\"") + elif [[ "$(basename "$file")" == "uninstall"* ]]; then + buttons+=("--field= $(basename "$file")!images/button/uninstall.png:BTN" "$editor \"$file\"") + fi + done + yad --form \ --title="Create New App" \ --image="images/logo/logo-64.png" --image-on-top \ --window-icon="images/logo/logo-64.png" --class="LinStore" \ - --text="Installer Scripts\nYour app has been created!" \ + --text="Edit App Scripts\nEdit your app's install and uninstall scripts." \ --field=":LBL" "" \ - --field="You now need to write an Installer and an Uninstaller script. These are the scripts executed when users click \"Install\" and \"Uninstall\" in LinStore.\n\nIf you would like to create these now, press 'Next'. Else, press 'Cancel'.:LBL" "" \ - --width="525" --height="550" --center --on-top --borders=10 --separator="|" \ + --field="Listed below are the scripts used by LinStore when installing or uninstalling your app. Click on one to create or edit it.:LBL" "" \ + "${buttons[@]}" \ + --width="525" --height="550" --center --borders=10 --separator="|" \ --button="Cancel!gtk-cancel":1 \ - --button="Next!go-next":0 > /dev/null 2>&1 + --button="Next!go-next":0 > /dev/null 2>&1 - # Create or update the install scripts based on user preferences if [ $? -eq 0 ]; then - if [[ "$separate_scripts" == "Combined (all architectures in one)" ]]; then - gedit "$app_directory/install" & - else - if [ "$install_x64" == "TRUE" ]; then - gedit "$app_directory/install-x64" & - fi - if [ "$install_x86" == "TRUE" ]; then - gedit "$app_directory/install-x86" & - fi - if [ "$install_32" == "TRUE" ]; then - gedit "$app_directory/install-32" & - fi - if [ "$install_64" == "TRUE" ]; then - gedit "$app_directory/install-64" & - fi - fi - - gedit "$app_directory/uninstall" - wait - elif [ $? -eq 252 ]; then - echo $? + yad --form \ + --title="Create New App" \ + --image="images/logo/logo-64.png" --image-on-top \ + --window-icon="images/logo/logo-64.png" --class="LinStore" \ + --text="Thank you!\nThank you for using LinStore's app creation wizard." \ + --field=":LBL" "" \ + --field="Next Steps:\nSubmit your app for addition to LinStore's app library. You can do this by 'zipping' the new app's directory and uploading it to an issue at our GitHub.\n\nIf you do not wish to do so, you can still distribute your app's zip file by specifying to your users to use LinStore's 'Import App' function.:LBL" "" \ + --width="525" --height="550" --center --borders=10 --separator="|" \ + --button="Exit!window-close":0 > /dev/null 2>&1 fi - - yad --form \ - --title="Create New App" \ - --image="images/logo/logo-64.png" --image-on-top \ - --window-icon="images/logo/logo-64.png" --class="LinStore" \ - --text="Thank you!\nThank you for using LinStore's app creation wizard." \ - --field=":LBL" "" \ - --field="Next Steps:\nSubmit your app for addition to LinStore's app library. You can do this by 'zipping' the new app's directory and uploading it to an issue at our GitHub.\n\nIf you do not wish to do so, you can still distribute your app's zip file by specifying to your users to use LinStore's 'Import App' function.:LBL" "" \ - --width="525" --height="550" --center --on-top --borders=10 --separator="|" \ - --button="Exit!window-close":0 > /dev/null 2>&1 + } welcome() { @@ -176,7 +191,7 @@ welcome() { --text="App Creator\nWelcome to the LinStore's app creator!" \ --field=":LBL" "" \ --field="What is this?\nThis is a wizard that will guide you through the necessary steps in order to create an app to be displayed in LinStore.\n\nIf you're ready, press 'Next'.\nIf you got here by accident, press 'Cancel'.:LBL" "" \ - --width="525" --height="550" --center --on-top --borders=10 --separator="|" \ + --width="525" --height="550" --center --borders=10 --separator="|" \ --button="Cancel!gtk-cancel":1 \ --button="Next!go-next":0 > /dev/null 2>&1 if [ $? -eq 0 ]; then @@ -196,7 +211,7 @@ import_zip_file() { --field=":LBL" "" \ --field="Some app developers distribute ZIP files to let you import into LinStore.\n\nTo import such a ZIP file, select it below and we'll import it for you.:LBL" "" \ --field="ZIP File: :SFL" "" \ - --width="525" --height="550" --center --on-top --borders=10 --separator="|" \ + --width="525" --height="550" --center --borders=10 --separator="|" \ --button="Cancel!gtk-cancel":1 \ --button="Next!go-next":0 | awk -F '|' '{print $3}') From bdf86be0bbe49fdf0d3a5b7569e8a59ec394f6ce Mon Sep 17 00:00:00 2001 From: techguy16 <88870951+techguy16@users.noreply.github.com> Date: Thu, 14 May 2026 08:18:50 +1200 Subject: [PATCH 07/10] Fix settings not opening --- gui | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/gui b/gui index 70feeea..5424f68 100755 --- a/gui +++ b/gui @@ -253,17 +253,16 @@ show_app_store() { --class="LinStore" --select-action="bash -c "\""update_fifo %s"\""" --dclick-action="bash -c "\""update_fifo %s"\""" \ --list --image="images/logo/logo-64.png" --window-icon="images/logo/logo-64.png" --image-on-top --title "$APP_STORE_NAME" --column "Icon:IMG" \ --column "Category" --button "!images/button/search.png"!"Search":"bash -c './api search' &" \ - --button "!images/button/update.png"!"Updates":"bash -c './update' &" --button "!images/button/settings.png"!"Settings":"bash -c './settings' &" \ + --button "!images/button/update.png"!"Updates":"bash -c './update' &" --button "!images/button/settings.png"!"Settings":"bash -c './settings'" \ --no-headers --timeout=0 --no-close < <(tail -f $pipe 2>/dev/null) exval=$? ./api info "Exit value: ${exval}" if [ "$exval" == "44" ]; then ./api search && show_app_store - elif [ "$exval" -eq "143" ]; then - pkill -f "yad*" > /dev/null 2>&1 elif [ "$exval" -eq "252" ]; then pkill -f "yad*" > /dev/null 2>&1 + exit 1 fi } From 6c9691ef0b895e32da349d4fe60f2538139b79b8 Mon Sep 17 00:00:00 2001 From: techguy16 <88870951+techguy16@users.noreply.github.com> Date: Thu, 14 May 2026 08:36:40 +1200 Subject: [PATCH 08/10] Switch to using cached category data for multi-install --- gui | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/gui b/gui index 5424f68..8db4cec 100755 --- a/gui +++ b/gui @@ -97,15 +97,11 @@ theme=$(theme_get) multi_install() { all_apps_list=() - for app_dir in apps/*; do - app_name=$(basename "$app_dir") - if [ -e "$app_dir/install" ] || [ -e "$app_dir/install-$(cat ~/.linstore/architecture.txt)" ]; then - app_icon="apps/$app_name/icon-24.png" - all_apps_list+=("FALSE") - all_apps_list+=("$app_icon") - all_apps_list+=("$app_name") - fi - done + while IFS= read -r app_name; do + app_name=$(echo "$app_name" | awk -F'|' '{print $1}') + app_icon="$(get_app_directory "$app_name")/icon-24.png" + all_apps_list+=("FALSE" "$app_icon" "$app_name") + done < "apps/app_categories" APPS=$(GTK_THEME="${theme}" GDK_BACKEND=x11 $YAD_COMMAND --text "Multi Installer\nInstall multiple apps at once" --geometry=600x${APP_STORE_HEIGHT} --center --columns="3" \ --list --checklist --image="images/logo/logo-64.png" --window-icon="images/logo/logo-64.png" --image-on-top --title "LinStore" --column="Select":chk --column "Icon:IMG" --column "Apps" \ @@ -116,6 +112,7 @@ multi_install() { if [[ "$APPS" != "" ]]; then list="" while IFS= read -r line; do + echo "Selected: $line" list+="$(echo -e "$line" | awk -F "|" '{print $3}')" list+=$'\n' done <<< "$APPS" From 3b18a07b8ee52258fb3e1bd1be043e8e96046caf Mon Sep 17 00:00:00 2001 From: techguy16 <88870951+techguy16@users.noreply.github.com> Date: Thu, 14 May 2026 08:55:48 +1200 Subject: [PATCH 09/10] Simplify parameters for `install` and `uninstall` api functions --- api | 18 +++++++++--------- gui | 4 ++-- manage | 8 ++++---- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/api b/api index b22853e..df118ec 100755 --- a/api +++ b/api @@ -31,8 +31,8 @@ logo() { # Function to install an app install_app() { - local app_directory="$(get_app_directory "$2")" - local selected_app_name="$2" + local app_directory="$(get_app_directory "$1")" + local selected_app_name="$1" local installed_file="$HOME/.linstore/installed" local temp_script=$(mktemp) @@ -73,8 +73,8 @@ open_app() { # Function to install an app installation_script() { - local app_directory="$(get_app_directory "$2")" - local selected_app_name="$2" + local app_directory="$(get_app_directory "$1")" + local selected_app_name="$1" local installed_file="$HOME/.linstore/installed" if [ -e "$app_directory/install" ]; then @@ -97,8 +97,8 @@ installation_script() { # Function to uninstall an app uninstall_app() { - local app_directory="$(get_app_directory "$2")" - local selected_app_name="$2" + local app_directory="$(get_app_directory "$1")" + local selected_app_name="$1" local uninstalled_file="$HOME/.linstore/uninstalled" local temp_script=$(mktemp) @@ -331,11 +331,11 @@ export -f get_categories if [[ $1 == "search" ]]; then search_apps elif [[ $1 == "install" ]]; then - install_app "$2" "$3" + install_app "$2" elif [[ $1 == "whatscript" ]]; then - installation_script "$2" "$3" + installation_script "$2" elif [[ $1 == "uninstall" ]]; then - uninstall_app "$2" "$3" + uninstall_app "$2" elif [[ $1 == "logo" ]]; then logo elif [[ $1 == "error" ]]; then diff --git a/gui b/gui index 8db4cec..68229d7 100755 --- a/gui +++ b/gui @@ -147,8 +147,8 @@ app_details_page() { installed="false" fi - local install_command=$(./api install "$app_directory" "$selected_app_name") - local uninstall_command=$(./api uninstall "$app_directory" "$selected_app_name") + local install_command=$(./api install "$selected_app_name") + local uninstall_command=$(./api uninstall "$selected_app_name") local open_command=$(./api open "$app_directory") buttons=() diff --git a/manage b/manage index 36e2d36..ebe47de 100755 --- a/manage +++ b/manage @@ -4,25 +4,25 @@ # Very basic, sorry! install() { - local install_command=$(./api install "apps/$1" "$1") + local install_command=$(./api install "$1") bash -c "$install_command" } multi_install() { while IFS= read -r line; do - local install_command=$(./api install "apps/$line" "$line") + local install_command=$(./api install "$line") bash -c "$install_command" done <<< "$1" } uninstall() { - local uninstall_command=$(./api uninstall "apps/$1" "$1") + local uninstall_command=$(./api uninstall "$1") bash -c "$uninstall_command" } multi_uninstall() { while IFS= read -r line; do - local uninstall_command=$(./api uninstall "apps/$line" "$line") + local uninstall_command=$(./api uninstall "$line") bash -c "$uninstall_command" done <<< "$1" } From 37c9703f5ecac9eb1aa3c1f1030e57954d793403 Mon Sep 17 00:00:00 2001 From: techguy16 <88870951+techguy16@users.noreply.github.com> Date: Mon, 18 May 2026 08:41:14 +1200 Subject: [PATCH 10/10] Add new instructions for installation/uninstallation, update supported distros --- README.md | 45 +++++++++++++++++++++++++++++++++------ etc/tools/LinStore.zip | Bin 0 -> 7976 bytes images/screenshots/2.png | Bin 31645 -> 44673 bytes 3 files changed, 39 insertions(+), 6 deletions(-) create mode 100644 etc/tools/LinStore.zip diff --git a/README.md b/README.md index 996823f..13503de 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,21 @@ To install LinStore, run the following command: curl -s -L https://raw.githubusercontent.com/techguy16/LinStore/main/install | bash ``` +
+Install LinStore using Pi-Apps + +1. Open Pi-Apps +2. Click the Settings icon +3. Click "Import App" +4. Paste the following URL in the box: +``` +https://raw.githubusercontent.com/techguy16/LinStore/refs/heads/main/etc/tools/LinStore.zip +``` +5. Click "OK" +6. Click "Save". LinStore should now be listed in the applications list. Click on it, then click "Install". + +
+
Manually install LinStore @@ -51,6 +66,15 @@ chmod +x install ```
+
+Uninstall LinStore + +```bash +rm -irf ~/.linstore/!(installscripts) +rm -f $HOME/.local/share/applications/LinStore.desktop $HOME/Desktop/LinStore.desktop +``` +
+
### Launching LinStore @@ -66,14 +90,14 @@ To launch LinStore via the command line, run the following command:
-### Supported operating systems - **Debian** 13/12/11 +### Supported distributions + **Debian** 13/12/11 - **Ubuntu** 24.04/22.04/20.04 LTS + **Ubuntu** 26.04/24.04/22.04/20.04 LTS - **Linux Mint** 22.x/21.x/20.x + **Linux Mint** 22.x/21.x/20.x - **Pop!_OS** 22.04/20.04 + **Pop!_OS** 24.04/22.04/20.04 **Raspberry Pi OS** - versions based on supported **Debian** versions are supported (images from after **8th Nov 2021**) @@ -97,4 +121,13 @@ If you have an app listed on LinStore, consider adding a badge to your README to [](https://github.com/techguy16/LinStore) ```markdown [](https://github.com/techguy16/LinStore) -``` \ No newline at end of file +``` + + +## Contributing + +LinStore welcomes contributions, however small or big they are: + +* [Submit](https://github.com/techguy16/LinStore/issues/new?template=app-submission.yml) or [suggest](https://github.com/techguy16/LinStore/issues/new?template=app-request.yml) apps to be added to the app library +* [Reporting bugs](https://github.com/techguy16/LinStore/issues/new?template=bug.yml) with LinStore +* Or even just starring the repository! \ No newline at end of file diff --git a/etc/tools/LinStore.zip b/etc/tools/LinStore.zip new file mode 100644 index 0000000000000000000000000000000000000000..d572adfa6fbe8673b8b957f1fc661d478971571c GIT binary patch literal 7976 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 M5dhF4|Ml;G02w$~FaQ7m literal 0 HcmV?d00001 diff --git a/images/screenshots/2.png b/images/screenshots/2.png index 88767a152aab95b0d9509df981f4969948265567..c8a1fef4644dca05d4c0892e6c1b0498529a27b2 100644 GIT binary patch literal 44673 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

+@_h!4??wWH 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 RP3+juUrCY?997xx0oV2f8vsUx^GA=tQL8 za(ica2YsZ=?3bP1-YvtRyrHRz&)N|B@u*XGgyHjm{Gl7g+bo(dV1~RJn$6?O zd-tDm-E1>uZtLX41;kG5)-?!wf?;Y7FR&T=z5r&a{7WcTJB&5xHQ!OuSbq|u@bmLC z>3Ba;lWX{92glm>ZQKSU#Ottnp{L)ECrbJB>HBpj^)(78cDMziZ8YG~LHK81b%HDU7>luD*kCi97r{o{T~e;@g0hyWi7SNpLs62ht=R&7X)J z;42V{D0JZXd+p(ZH*vLG@%zegVVK42_aMFjEJ`#~Dfq|{Z?9BgA2>5=ndgh`Nhixl ztK@1;0*GKN7gmCxA_C8n(zWZQsz|w(ZT+iDbCuRS6E+ui;flyVa(lv|Tw*dRZ|27OR^gE{FY+sWTY_42Ii zB&N=rH6^y$-ny03E-fHH1$4vN`EFtG(NA^f$jG^l@*IbP$n|ZxtR18UyE)GjvCn_o{o5Sq|J_;7t&rUrVF9Di>Z|K8b200%Jbg>u-r$=~@q?UhO zk(89Y-cxc4C;f9JdNqO!k%<=0So)ooH8VS_LGd^j9cwlJ;d@x;garY24BqT19M90I zQV3fh@r;PYE3hBhhRh7klP7}+ky$}kLxb9qS$I^`7gX|L#sz=<0|N&^|MkQ94LT&; zg)e<%HmBj5-Rz(ugiuSU95!8gYsxV*!-&$GOVFMghyKyIMZhD#=x19r*>#JTSM0-B z%TVv5+s3X1v;}(&I;|$ot{~AWPtTM1P~1+eN~Wh8Dh+em=JN7J^mrfo`ck6a^0S`HdWiGKs-YUnwSAi5WCd+A)ZiRT;ovQr(_2a&OgL zH4RV;T8GKWNzgMdzg-u-yWAr{(}m<*YscURmAKEw}P=00XdR@lM}~`KJ+vZ z0Jg!CSDadSXWCt~Bv&&uF`&GX^$TjRff`v(V$Kq)_z zdB$Q}+{pd5acpL_YyVtvMO#~ymK!Hen7hABZ@!W1?CeaU+q1_Td5d6LYa9cTeu=&u z9K34AcFg{S9jlYRhVU$H+CjhmRmug8XJl0v}u0IdMqed9cHTHI+eeKQ3| z7@C|dxq3nJ32&MASR7{pGD{)^ddOYL0h0c8SQ6M@_N@^<0=Y%I^Qg2`S|NCU&X*pn zn+B<9!s-cg>0Um=51+87+`Of4WCskby6)uDf-ba7fE^Gd69Xl|3^Z~x4br|ahU!I) zq#pho6Y$Z0CFkkM2ZtdHh5ZFS_nTzz`}6aET`F~tt^1&3d^ZRX?>C4^+}w(EOWmzP z*0359XylK5{WkJLuLs4=kt+f*<*qTa>l0ZEdhfEkyG~elQlnsGY|m`AK(X_x^|uBk zgHFb8vxR0=pL|_Ko%^AYb;BB5_i#!~SF;CCf8J{YLBrfG>A`?dgp3T;>L{%W@*KhH zC8zkkX``7f# z6MjFK@o-9^BVS!x3lnNhTWQKNHjZ8ct_PU&bLIpI2_A$(`SM5aheTiS8oT4QSRQ-6 zeQ@JMr>Cb2dXZJzj6#+cU*~{5`}M`t(>UgiTX#CUE|eHYK^q$g@Bvn)vLLalCC|_h zWc7@FsIQvm&M-hQZWQsXs%SKEKmmfJkh^a?0t&7D1GZ0n7~>NZ6dV^%rW4^oA(@!& z%dD%5{9(=HBVOybvut#pj_iBG{btlRUEA${*k?x+;fq0!vb1jz{#w1#BXonlfR>#N(TX==E2ptrz-&wk(lNkl}XFthT{ zA0lk#qTcW}K6tY6-RcmxL!{NP1W|Z+c$giyj6xiW!9E{GBSP!FxV#LZi`pe2Tg)i< z*NlLUr|p%MTiDoa>SK9Iwy62(`(P*YL`*b3Sx2dE=Ycbpwr{Mv#0exsL*t1`-u-#T z>PUfvnS}*~tcIbM)KG*7L;)--tbuvREzW&enmBH+3+bU0;!i&B(wxkTTIlkx#)JDL z9E)Vy9h;!(L$`S0a07(W;k--tafMFU4~C+Fe2fmTJ(18_fWErAx@de+2yJNk~XNf9Xx6H1!lZAj;{itLq0r zPB}mQuoFfD=4x?1&9Am)Ya_CXL*bXYH%k?q3(9Whe z#q+wHa2*PJNJMs-lz&7&Zu=Y*K;Gu_ZJg|novgYIzFs|gTsPwAoAaKxeIhdEd^}$K zmvWyDRErg1ZIHnvAXegGR2dh{PL-?gUYgQY$fUS1#^Xoto5)ID%!EXwb zZyZLm0Vt?&fP;U;IyKa8uAt+n?)~aGo;jHe?cH>A7jAl_qkp^IVqb2(g=)vAx@+HF zR)S1O%MP$>{!&*r6smSjeAQ9)Ah#Edl*6ttrKHa8i_Y9*0o^S7khE0@`sb90VNYKE zEe=jj1_`=()rcogK0act45r-KuMNS0_3<(CN9!m{16zXskI?{W6{iszyI|!H*NN>gp-q#5Q_@47!vX5=(#*) zIsE1K+s>wuz*{xm6r zK?+8pF;~NrMVdykY~yoTa_Bd?3%t=-PYUf~x=4mpLHIm?k?z9A`VnUnmW4fX6m|m8 z#=?QW?;5s2!Cti3pSE*&mTymnZz%PmO z?b@^N-1Rk`gl|Nd1Op3^%CTv&*NYbLGh_%#JZZ=nln6ktiFgfET2NjlwJaRklh}F# zMt(rZ+gGR0tXo++-63|7zd`MXt)p^e5+qXC67Zim3n4kU^ z4q$L~dCEgN{kk1b*Ydn&!OCQ~+;{0|8Dkv1E?r9>@_+dOE4XlBdtuXAgxhlvI%3o%J!e2|X- zV!2=#Fypd+j!X3I?Es;Yiz_OU1aqRBeRU@qP%a!gNXjM*^yujbO&Zh?f=DTX4v~rg zymfPi@1XzX!ZN(J{AYo%Gvb?qVLKcvq0rmkUjw(CZochK)R!d43ZJ26kv(_L3PPb8 zRE%NTK~3)sgR_4_Kf(mZDs(=O=n|>YX2$57|I6l>^zW9DM7Q(X!+7_fU(s`OU-UTW zolmc5(tEi6x&S@^E^K=`&@Ui^Gtf4CE4Z~8GJU!pkJ4~_RXa2ehuA&To6t!;0Kv(D zGzw30HpD9~KtXXBq8}0>C9Ym;h^t^Uc2jg)l_SM@xC?c68zHIn5WN4eWLJBvpYTU< z0@9Ga+hxQG1VA-9r2df+Uo2Fa)DG^K@5BRH=J(*39gKBKegc3Ja=)AP%>Wb#6K|)% zDZ;ki|0&|(BPnRo_F>_aS5zdN)A>06-59G$OK`DKk(Z(Nwo1|{lJBHf-_&12SF`)^ zM&&}gc@8tE2{1!15S5OoAKvIS^Z%-W;pt#!XNSu-o(L1hQGp`Xc4O^sq_oE-D6PQH zL_v>ZH&x6^nx31}bcYn-nmwAMp|(2~_y&pMa1`x#{Uu8@184;Nf=e$YuJ0AGCOSsI zrL(xUNGdvuXGTdF2nNI08>K*p-p%z2tOGJ!JF?H zX(YiIfs)uv*~a_EZagHoSr5TY$5iDNKn}jmq@v-DZZ7ZX|v>9{qBm7ztfjIeok z!dyW5<9avBV(wq1a(#A%76l94J3upcWm;*Y#~T20L$BL|Y)zamW;(3t zR}LYy^5sn)XYq=PF`OBdPdJQ;h&hy3a9!4Da%NyU!kIDR{;=R6gkZ(E?IO!qZ^ix4 z`7O#|tdW{ljj|pIO4|_=*a!4N`)}*mEf~~NfQ&o4xCo$1!M*@W$oyf|zey+rQxiUP z3}aYdU-$NHqkN7Q`wwtLpr}=?tzl51!($GLi2t_!wk;wkCHGGwecyLf`kGoVg{}hP zF*s8|!@KySR{Q^zd$j1UMzDZQfni&jLgFJ>7@nq|R4_@w&k5H))woI{#qruhiMk01yQ-`Mtz zAVSPLuV=k;kCYQ7Mp-ld~En{|{hKTykpfkmD;ay8iFbrT;Iu7~A;lQ+L1a zU~PdZSry8hGVCP~7hWtdDjXk!E5oU4Xt0SWK?p9E3avD5*wFeDoz#o7!gBcIFyaIX z;djCR<{e_bLKt74_Nwl?av+ZflcDHNV^=25)jhlZ3F-asemlF5obs{x0QJF7buWsh zUhR~_!%nh4hn8pKvD{;VfP5|`}($=3P z=ex5|qINVbI=W*!?+cU{(IHSb3WFlOwVTOASdcTRr>%OOID&U!d-h@Oz-j5$YRyx-F_+W6tx9k4t!8nGo8;4zZ zDRBl(+{RMF5nvwq*#Q{(<%r8%4wu!oGN@XB0dIPKYs629cPAj-rW|wH=-b#W51!ed zmADHxC13YT2R-X6fKozMKR3gu4jAf{zDVHX$8_S3MG-@_8|I;oI1#Z0jI`=-fw_}` zr_UOarXL^X)k>DGZMl|HV1VE!_+6n^Vv=+|uK#}Zb)pS~n2-gdnF@rY^~h+h-m!(Q zwgA8tnrYg{jf{*4S0E%w5PWeD(KnyCR-~45t?Z!54=I68@~5 zj7UV((&BWVw~r43j2gaYbo|163e3^~C#R;UlV{C@u-(IwMN%Yms3X9v4oI!PR4G8z z7zffp)t`yjJOEfcQf~-4&-;7ER9`tI8}z2GM7RpRCSD|ARUcJcbtGf*%4f-jGqk6+ z$`C2Vft`rvOEfN}oG5sT{LH3vCcQE^vgI?h=N5WA@Y(8!@D|BMJGjnMb#pjTJqnMW zI&~^a+GGDeIGZ=HCA8(9AX_;O1ookpIz6}hq(X9^YW-;uW=bt?Py6-HYWk$ z+g=8m|D1}-79}=s(d&&S`(3V*dhX_Jy9WSD9j3T3Rh`F`rhOo_x0s;S#z{X}Qpf=n z^3{dOQ%X+0VaWKvun9aDCaCXXHj(eYf+CFstM^_fr-egRs16T%Q4HmsBf%rMJy#FQ z0=iSg*j;PO>;i7gL{2G{8TjqUFCWIw2?*?cV{#A>)|Khr7f=KM=eODK{M_d45R0Vq zR{gwns(U~{3Cka?wB$WT;~1H1*En$q;+E+AVybMtJOBHnQllg4pwGb`o>aRz!~dor z-!=L^9?o4rXHf2J`cb+;x{(W64P>D!n|`&VE|!^;-}kA>8bwYtOstrmk*uEZpe-y@ z6jT}EM#MAOgsX*IF|y~InS5Bm__nkNq5HvU2^Tm^HCqJTzMB%4X3&{E0NRQb0POA5 z;|=|WB?8e*VNbe(z0Pu=y1RtNMJ3;4s}3rt^g|}&Nq%> zNTJUueelMaTT)U&uWBCFb7Pt{t62Eqmr!H!-o_Ud0Odh3B%E7@&>bRSf1LI7F7G`9 z0xTa^6}T<=3uYk@xQ6Gz0U6yA1l0=0N0?_Tj!jKveI-JEtKTZ`wX~c6tz~AEu`a?; zV$V@p#1i!WW7Uz&NgU=pPs++e!2 z!Y))e*v{+G>?`{j^f)r|(l~$jsXKq6vt+#v%n)lw=h>T#@M9}1#YR~|xj=-hLWG7C zb)M8kdt93vj#pNJ!!=>wm2WS7;3wCF?5i*s9|jwZ@!i~~V7?v#mV0}xjvL^yt)1P` zCq39`76(Ivum5~UMUdL)aR>ntwhaN-Kasoi_tsQ|R3RdV2>J$@p5rj814>lDtY#1B zLT&?9;1~>O0q!9hh-{-f=)w=oyucMg1Phks^&HGOV})i4eS9TU{!4$F8^D&Bg-DL8 z=%@qG1U84^8tyfH1Op} z!$zTe6S}w{cm+_W0y563Se|Ef3B<-Kc>A{y@usRN6%`d{m^*yqwii=0BMZo;kVmGVADdjvIHA3*$eiAJZed&`WTZZneE)=%m zyOzBtGQD=srR1^?A8WraLCKmI@hMKoF_eMaPID`5Ru)au+~2>*)Al6o6SIFO7yx9) zX&(w9ZbLkW;D8AOA0A^Ao#<(aW(_k&K4b@A8mQAAs3uhUK-4}56b%ppZCEu5#5yQ$ z(eWi@2XGSq=-)+^3{po>Q1w6J{Qp!`UbL~*rgqo!f>E+pQfwZu=Mp6~NnQxITAvbq&v#ph(--0MS5b=ovjd7C25W z^It4%Ch9OO5=31bv5^*vt`lxpWW=b4edwXkpF^+Vt(p=Vj^Zsom;Ne3W?&Mks-g_2 zJhTaAU#HBq9A-?F%gYnNUe^>fMnWBS@1HnREk^<3yA1XBW9D4?xM?Q?J`)MAW50?} z{9U?*c5;7J$HjkOEjLO>Ab(W6xNkO)$H=DK(OmoJ7?r$r;bT!nUE z*B+6fp`o`!3w2EPx0t2uFFjm>bQ=Bu8AK)!Sn=Pfp4x}I)e!_nUf~;26whu@>>9SX z=#20=pE(wkD*XdjKuacRr4_PX5I^XBLeb=ax0fzCd9I$}cuS)Ci4P9HRlSyj)Kdu` zHWFy}eBpvD6TJZ<>v*9)R|d0zeN6#7BxrEk8?4=Toy5O=tD>T&&bS~291o`T00GKxP#{7uSTzZ|!3uVtTxy0$oV2F8(%6iB;Gg_0EK{s=@ejRnd!l zovbtG@))ZfQ(p{*fW`8r;tv5;Oq68JFHMA_A*&?Ci0-UJ{Cx)zRZ@J%X|BtO$8*(v z4Pa+TtVG_e)kSpxO-ZX73-cMDK_q+xiex+d^(cD2`bdF>(C~1IvUJ_}nZ`4;WN*xB z`9FP%(R^g6S5ip~#~~5a1^kg0)3mYiEel(y#`yI|na2%hUx!w`LUj$inIA>0S`|HH?mm1UFI3uLiBt&b@nm zjj~3X)uj7UQ{?Tzxk65xq@S0Gfm8@QM*iJPoRQ~LOFn_vAb>y6QcxgL&X#`4KpIH7 zKmAgtJM`5>+2G-=Z&C%dIt`u%qu4uI|Bz@`eY2~r3!{2!*Fc83c~ zLVE386ub~4wfv=Mi@PV?sBspv0G=>~awZ0Y?XU!m?#|Q0FjLoGsSGttUTOt`HUTOV z=8B`5-MtUF9tc|fEOf-D7kxl%7LoJH=QH?9Wcd!41qe5|lMhmE`R<}zZRH&4$;PgxM4Bn-tUwdea+Z;j3ZK|ik&PkBhmGq=65>TpaxzqH^yq{#05N))?b zetF#8H_W?-Zyw7wihXAs6&w)2#m^tislqZaIr+#aE04KXXZnkEd;9waW$ebAkQp3{ zp6L^(Oo7AEhbWBR+7F2k`lnmN<`7=QwWgKwyiea^tfZ-3vPHLWXF76oH$_kE+!=eR z*fmJyE}kbS@GtGv!}qlM`<5$+?qxq@eEk$-E$N&ms+`QeB(poPgeaL#%LH9<9Q1l0^FfOc;}F0)m6p9!}}`1vk)g1MNb-k1q*VA68#19f+t{ zajx8KpXGtEJ6$qOCT(qDpzP=G%R(##;Ew=MnGNe>gb^G1Mx+BWhH{l=rqhC_`tn2$ zT}Ct-!IaKeIu<=&Y$V7{Ds~+T&c*P7`zmpN6N%-B8+!4+YTb>dR9zMKwE=U^(q)Uc z7A5PhM?p;|D28&bLRy8Y81wv2W689`(m6ML*J#`w8~Sicyl^vu2obFp2hs*JVu;o- z-c2wR?H36hL7-|%0$6R5F!|OiSFUV|6f{HD{xT0R-xpuqsIwi}$Ga?7E>__XgIH@T zRjNu5izk>}?hf~*A#+68DIhNt224oH-k<9lC+;^>0gtR-^hIzp_%K9MJosl+vn9(o z9_1b$2DAFOQ?!E%?TiaQ`j_UUN3ih_Mo}2lu*s7T()vk4jKrgz4y14n5%Gk815edW zJsM%CuL*K8R{S85EsP2^JjzCvoI;We5!Wk6$C0&4f}hW;<^zIO2vQbuG)S@gC-VNW z+efec^XWv*i`;ACB&k!>>GjNGbr^Hfx!=@(z%K^QO=K)GPF6-80L47U)0I=x>oVXJ z0E8iaNZD?0@LA5zX0a)G>Y8_ms418CvC&VNK+Z{`NLlEHoFWu%0l*85s-xeP!uB66z%>+|2-`=9s|Im8 z^EFw?;;ItigaD7xoDCII&F&#Sj}%Z%yfY}f(<#m1U&*T*es0UY#ETp`I4`^^O+)Ts z{Fn8Coc2I88rWii{f>UVO~R)rGdW&eD*?D?*O%JyefUz8k16+39Xvaf?Kt4?j}@@v zP@N8Lsx{@mEXK%c5Qh01T1$%(bdi|Fl4(L{RQXMdD?4RZK*mvdKP-d^KkY2}z_ORsc1{$rI zC!U93^n%90pKZgQovkVyAAz7i* zou91h)%G2T-}0@rzNxGV7VVc*fX@w42E&Acg5XA^-7!Lw2VALeNTN@lksxK(rKA*y)o zyfUEsb#P#Bb?^FuwxdApM3+;_Zq~aoZ{9R&G&9psAg(Np*J-p#?(@i2yWQx7P%RH{ zGbnl%&~CcvkKFq-E$;hnhN*jh$-h;h+JYRdK9tBxNrz6IVkMzOL&Zo?wg|k2$`||( z8tED-Koo=p08a?)NWe<2(IoX*yIELkoDe1zg+f#x z^T}-@JoQ+q4WA>zGu!lbkDs_&O^5nM#nf~ca0TKM&gU`z&$x2EJoLDH!Gd=#$0Q8lF zVhYpTU~Jxk1OM*wACR$Bf&0XsfGW-ce(dgY2(lBcn!n9z(W5ZqLJ6;o#~>g>6OT4w zK?e~!h&BmV2YF9f#9e3LH+tDwqN}Ytq4MvV%l75hcgp*IzGn##Nck~gb;hvKeB^m+ z*qWOcfC}vT zG-(mUYow?h8P2{uvG=IlsJ4x_qT(PyEf}m9+ar?-_1xC22axj$Mv249!t9tD%fYji zFlBg$I_JL@%^tY(ac}NR{|GjQ0A}86yx+gXY}mwosh%m#i{P;dJ(^W5o>TBk9OFNY zjP}Dy$lMc24C`!tZG`bvQDIydoGTC1+O^o~0Dy2qQ(YxjyP({?<-a{C_rGc14{E+O zt?h@_zwaM0a!A%eTm<{~ah5u!plf<9j$G;L5|U|)k6o4|btA4+f7qq`x7FERV^?De zM@V#B;86+sfY7*ZmVXswMAbt}OGz-oB=F9pMl@3RGuXINuo|)6>f?itp0KfOF2O1U z$}0EaG&l*o1b}<#uhz6Y!BcC0a{hsni`RP!Pb%?Px-`KXB9DX)Gxr`)gQjD}m9LlwC$T|?VUiAc2 z_^oi^E)$KscIN8)uWnba%uR9sPc>Zm@KL|-*4_w=`Z>-BRu*Lc!GpPkJMigK54Q1( z8oCpy!E_%5{y8N6xRQ%mC`N7&EyaeULSnv2bAo~svIvkfk%SVIrvoDm$O)+%G4=+eD=|BT;h5fex7AWFDr&Zl z8>q2~sa!i)f1UuZ3vBEQlw(gP{!_*UjNbw4h_c!RK0(NgqYTY*MNqw)#(cYH@xPOe z)k!;kPrCR$8Bxre32HGUDc>i^mG}N5t7qyNdh_-Z5#g>rUcPF_7d%SE-bn&=<`7#F zY>=EwKQnim;!ce#PpiVkM_9Jl{5JKz$>W(si^E~^L73UI$Z~GjlvCOB%ZKxxX4}$v zif+d8yWM$mDz8ZF&wEi=r9R4jU$>|8Fy>!%%L=zFeHVDMWW^#rR0+V^5TGr(9Z#Oc z)%gav12uxT$fp|6N@p^fC-K5N#CiFN&dQ~ z@+j)X&u`o*lrQu$p+fV^9g^WY4-kB2FsIE9fZFqqjLDMQ)$u-O$Tp4O`#l`|NR+N= z#Q!3+(ab&eEs_Ax{%TZRI92`cmYXB(@2nr~`N4Vsl>-;Xnst8oIhzp(({0 z2g=Z7-%Fa!d4C@p5Q>w<#YOO8hYt|dYV}QFp=K}rx5mE*q19EqM{szvVe`X6ukB^TFQrhU&UKflS=R0HJ&l7xV zTU*+6HeLTRAi7T~Kq0mRzi)zm)-*2kPlOL$n;L;rR*F+3#oUdB@Cnze_L?D9 zAy_q?zC*<;lMXKvf(aK!`Uxf)#Nj|qqB+Tb-TbKnuH4n>7jz;~cP0ybKisZBJ*M&f zq}9*FbISL>TqV97XaT&ELI$d2R3|S$56Z>uWn*Ma31lZiycTDUV2sLrsHhc!jj(rP z?!~3dZ25ncdPp+Z=qQ|9eD(Xx)Ij_RW$kmPz2Demzq;_^mzjE2cK(4wHZ-2Z#``@i3+e(L4=A0s=Ke?h;U=0e)dLnc46`8PkI3cbpC ztA0))62#VF;{SJ*Oto1Wof!ElW?uh9$GvB1&3!~9H#avjSrM{DfQv88B=^&Xg@p+T z3-{ZKg4#42tPVlGuzXj1axy1356>CtbHnxp;AysP7vnqhFo}gcWHWVl@vbpLUKJIU zPQ>^-7aNg^jQE|p<}(@{8X;Oe!pBFHfLrVC42JlE=N^2WmU%O`D}HU9*}7zjlZ3n{ zL$J|zc!oU5SC$4tJsc;?>eCl~T-o?cPU{wo`#Ig1Hg zV{K+7I#PN=99Qp0kqfnTUNkZ60AGh8VvRoJZ|c#5szS--1*vb}?z{*1;44)E(`;9g z^Y;>3U;nMzuJIUc^-SH1X|+)>aKXuh^_b0DqeM8iLibuOQ3z8JfR z2xCNT>+s(Q{tX7H`1lU%6+swU7y;EDg}fMo@0t8AYosVasj#7fF+hkbAm)G6tbk*Y&=%>8rj@!8A?k_JG1g0!zYNb8YE;J9N!=8OI(z=Q-y>PWofBlV{cYo z97c1z>X=({LmxahU9k~>>i02{$uBd}Fg@O#b!Jb9;}Ir5hl+bEHa3%V3oChcY&`5& z#;l8U&L12Lw><5{zWI#o^55dbJxHbHf2Nhz4K?%FrMLZD&XW6y8?B_I6kxXR(Qvp- z#qrbZ#g*cmGIs{(V-Vqtl*0wRuN{RV?`L)&lHO=ZWr1sAKLdYB7*A&YeJK231V25Q zKM?&iB7VYvxkQ?rf~FTE3tyzC6PCFLP{1!9-m)oFVF z3^C^As|cL(;J3I#{nLP71;b~?2zZOQ9i^*7SqNLDb|LD|x;vXTMUHIG&9X{y4lPCFsp)wJ)_T+2n~VLsZ8b zhd*Dj(3y@lwy-#gnAC?=oJkR4x97Ajd3_L;e4}pnBqleyzewTGNM?4nAi`m{(dCuD zAyP5ro{xU5pxsc@XktZh#B^IQAnackiS(-$a94oE2J+h1s4fU!WdYPS#LTi@~ z`Oc8dx5Q&XSPIHycLWRf5 zmo@fuUu>~zlNdHA;ei?FS6NvYi5!iJecz7U#rZwWLaA9F8K-mY+`P4R;~zLY#~twxq*^j6`WXA{P*vQ6MsEb{_%Z!sQ zICz{_D^X!#l^EX|`bOszzk1u3sRd0vJtXO*FbiF$!!CL=H_+l4(}Nebhp1kd95^J9 z!%J=a-I;H(ZR#>J;(&C^qGm@OW{h4fiAELvNYm2M8Q?iKRG-Yrw{`O+9gUA8y1IZ- zyu-0rU%Y&^RY7T6!skHs&%$HMNJ zHD0}MA)Ar+kZYaot{~Iq=pDOUVtH%(KfXK^F1pWPHi=(g^<{wVsingkDX;vV&NWaz zfBQD%a#ipgn-p8CyEKo~Mog#OfZk@`TT#!P`_Giioc(!GUtifL<>5?4vuBQvspB;k zHaGiy@fM9gHV19;N-Gt8a-r4J;o0s>zZY_T%~UDci5}m#Bbi_CQ-)1(Wqgql8k*~p z_TEDe%0IHL-t)gt)@0-nORwcLFWq-X&){|+emy&D?>1V&bZSaiblSJk&1;y2 ztdy#RliGu{s?yjyH{dsGRhP~C`t|E+XGx+4wJ(539dun*rAQZ|C$SCz0GYmWEqebx z{Nu;d27HVIRl!xG4xFp`p_M{3sws($wzG&MJbLLt`755RL24L$yzgQV*YEe+sHp)RP=PFB z0S_~f<#9KdZDUbE=;TsrS{n7SLhCL){{ZSUKH68Vuxlotf03ULdtDxe)% z+NZewTI;y;@$d#;bZo}G_#QPzVIrq)*o9_Q<>D4nJ$G_VmvM! z(43{~^TY`vLAhhx978E_{M^~~C_R^)^6y-*$N0Iw*5~%%@!Zuvw{%3*K1TLLN&O#} zyy+>YuB`-r^^7fkvV!b9)Z2TLt)9f_BI1eF)& zig{QU&npvVLfB@6Zxj|=Ji|U4=XzrcN=LT!=_)MO!^_j5nFqLh2k7Z9PV@wa#68m0 zukAgm8F}1vb42jos==|WDqbG)+K>7=RpC0uW?fP1lzouARie!2g;4CowXcz~E-qVu zL-t_^sX6=~ilTy}DlJbB93r)}wyJC2efF)*Jy=X4~SC}Yj!@KGy@;qX>;+$h3 zUqm=aw`te!-#3izOwa>SY-m>72*h{hoUWcQ8+fHo<1(<_dbMF=b1-GjE59WS4d7$c zMx4CWvEjilMGK1q>8vOHHB(cMeb3_!(6=s#LL%3L)zyjgOEa31al=3N`Bun635SN{ zqPF$}cT&xeeMndsJxf3Hv$W-$oE$sReJ$U=n?B=&VFkc`?qWI~gGL($!1+%=aKT-5 zTqP9G4;nO2nR{Qqo(F^a^3jvxd)O;3Xlco@>IN21@|6_zDscwwt$EQTp8V*`Fk{cg zHa^Py7>c8+=Wa_V-WEHjcDtFMoxbAU?vqAjn|9ZVOEdGiUblOI&=Uvc8g?#EyfO?7#Sl~eoq+6zKo zBq&s*YW6OOP~LCSFlaNVSZR=|9d=(64G(L*u_kk%3_<8JhK8(ar*Z}NYHs993g<+UIYm;Ws3!eCs zAcsB`;S%2ZHfy^eP94Ccjv~ai5cWO130V0%1|Dl}L|n>rh1-6Q)rWCn51WqRIT*<& zwvIC?0)0(;mzIys{fY>wAK|#2nBUtxa56EUrgMjF;el4OUPqQh@#qwV?e&#ILZTNh zeVLXOJN90}*>*0kB3ODoQLb+fVpcej6#5C)Tm8*m(bjsO`YZFYZF*8x`x#5mFV1wR zEWN!l_>42teXT6}jhj^Z?;Bq~p4PA~@bO63tDHoFh=8?0%RJ%BsjfD`2o)>g(#18E zukjwNK0ZD~Hv3UczF{=TFH%zv?zOdCC5qd?p2>{U=*n$Gj|x^SYl6a9pN>u3^TRR*P5g1rzE{p=uK>^SD0 zg+z~?U!z5caNoCAzqFB@*O!cQ&~{PK)+fCFJzmo8LKA!|Oq|U>WEBH)AHErtTtdwmrOjX!=c-DZw&P(XpBCOIR@=AIvh z-kcJVw#T2FWvJc0eft&Fb<7MPy-0q5{F8nM@pgDM)5atw&s%-g(lL}%RNTqIA;$~l z=)Jjm<@JmwO;RYvV+H~f_NLBi&oqrTyA6FV2o&e{N}x{>>-xpjN@Zc~C6p%{>UDxP zfRl3bKDy&7f(F*vCz^GaYA7SQs84qsGKD(%&)NbDU*ctkCb0+)rHuXJrT6K1t$7609a zpC`HY=LDprPqosFY@FE0J!Jw$fh;zzR_~-N?sg?1DY<5@p_J~!B#EAWC{|jwDdFOk z1BaOC;~N*33X8Ir4V8Fa=i8q3h}q$lma^mW-%76n(9&CKk z&|Wadmhsmd6w2U;NU-5_XuRYX_y$~O9sY>wC{oqNs%9?LJDD`>Cre7oPgc3ovpk=^ z5xh}0Fw?tFIqsthmgxvd`*6a>TJj+AE10g|p1 zB8NdL5wIDBs$c;>OW20f~eJL|V=%Z@aRA(6~+htkhj>W!=96E)xkgn8bO#I zdHgb2ifZfh*Avo~ITtP!*mGb!+CCivJ24~!hGDOVeSc>a`}^QZcj<^OSDw_Mpha5N zk9X%=_e`}{DCp-sk#-eY>v8rPD_JolQ+QO?SMk-LC^Ct^^lQL=wH7HNxl*4G(?_u{ ze?_|G(s<4qTx(CDReFm6K`e%CW#Gze3%f9Nocg(Dop8K|Q5iff;7Lt^F4PeBk4F`{Pn{J% zExvq96TZJ7aHl}S^%1ez+X}Q*QNAY@T_MFJRaD`fE*zia^`m zTdh21Tl-bDhmp}Yym%-)`b!;a+3!}HzIj)R>(`&ZnHGh+V++Tpb?T`6DkF z@_x}=bK3Yjk}V^H?|#PhOpSnrO~$qs80dh@TLo{=Q68QvBlW>Qvdwt-A_9n6GA^@M zahxkFDpG*~H=X~TM_T;Z7H+D`U{myV8#XrI6CUfgiFA6a4ynyJ_x_*O&NQB_tPS9H z8fp?-w3a4eN^R9qsW915Ve2a74hMJJjHB-uwVg z#pZ1v#2q#QwkBS_TI>aXO;_)vIPkjp$1XeM%s@$O+9i|mOMqQv^}6AQPALKum&@N% zohZ$f-w_!axiMzlaXPm{M^?YUE>W2JKFnK0-2>I7{CLmf z7a19MF{T-3*!KLwjn@5{1gCDHv6P2pv=rl=vT!il0G|jc*7GX$&M#QO-kob7Ke`<4 zXIAO{a=8Os|tU&`I%(3>6B z*&yf5X+C=&#W+;ZY~8Vs2t|qb0h+y}-suqR_EU9U3`iete*`0;mSZ-yS(pi^JOLT z6HaHG^Y;Y4Ix`>(WX#tQpBTgIVkI~3a9XSZ)u4;?{U9&EAOADyUhBf5j8QKY-Fo)5 zqsL5;K5o-4i*v?4LxErD-mQ{`TWiM!D!RM9x<>2thsviu@e6-mZw!7PR4V-BUwf6U zx<(!7bJ5Q}s)E~aN_Ekz=`{63#%WP|+k#|b6lQ{(BCk((%u*g<1_vUu$d|R@e`b59 z2p~tCTWd6O9DGVoq8shDYo@-$FXgCDlgiWP4ELLb=PV5-=N2QgIsm#$lPQoke513m z;}8F1aziP6klv?(Vb745P3xW|8k9qEOb= zmCow61o?*mJgSK6caTtri#P&f8I%B)5A2=N?gi}k&gF+(A>w=bFcj1^4tDr}Z3-5s zAn0Xj-+~!9^AB=Qf)%sOt|qNZ-2bV=OJp}G{SZk0nfBhK0k}}8Y`wV8304?SIAj=4 z@ycfo8$Y?7^3%8F^s>S)RiG66ZT*ou%F`n4+w$2O*J)Dm?S9f?B#bW!l)e$2&-3`i zT2hXstX_lzR0anKaj*GWi38sS5Znr#$bd%oxS`~cDcg3|x!&Abr)osg?h zcI>lI0J=6x$(ic)TB*C9+S+5o3~4S7f|O;Zu3cb%R>EaVF6sHdTx~@cbbUCQ zQoTv76KdPyXP0X_rcmhClQI?GOt%|$O^20gtXM692WeGGCbcb_>70NzR#`l_b}x(gNg!g1lq-S@xUki`Un@e#sg1`5N)W;#jmRY=V~6Ket@@*w40DA z)H>n5cTO{64=0_Dnz7^H7|a_3(niX}uVevVSPy-U!DsHs#wC!G_kgpRS0CYb`ew^o zh9tojuCYNq5Q*0nYzsn+G_Y!UO(|wj2LX$}YNd4|4vF_3Fk_3~N#o5gi_jb{=tO6? zv2=7rT^B;(Qp?Wpi98fek_saqz72M}@#lbe)B8Jp;rSE4HHl%H{9HzgJ5es>6f`c> zoQ>nxk494)PFlrTX)upU%R^990|Pcz58GorkSHKw?vmcg)DA&zE03`A=_U>*_dub)(ZfMD$qzCsHDDP}>~OdPeVghKpM7#k36FM`2@ ztP-mNO=p%E=4R~8u{}flpBCC8ZhAOvqHmnHJ6%S6bTp5sq#QoWwE+^~F$PE>%d)S5 zRc_#MgDd!Z8?EjQ?tOzxjEV1_F~a3M9WSUD#1wTDxyd3BHjUg>Rg@r^`GI7C<^X|6=jyzIB7s$gEqEXZq|L8Q2=LjJqy07HbOpL#FXdk`mPSiB z(j-9bx@K?_OV1f{(zL*%3oEujNG;Zflee#SYR#Aal3zjc8vl!C?R|x>dX=DceG=8uEtW#bb?2kp%|`78qo++Lq#f{UT=(e^pZ z=+l{u1OVlG z`S7zl9I+tx6jvSo6BTYt3EXq!Fðq5c!rP2C&p7blKolR?u z;wSlKQpX`^w*+FS!#^2FM4h$X2utBr2Jss({9qfwx`@M-t0vi-Io7~>S7QP+meiC% zDJHB~GQZ-5CjEX7pHBZ2tAZpY0R~3rsZM!t6-@BnzIjbk-ifM%OWa7H6r$TkLAfJFaWaU(MT3K~DSzHW@Ywg}Nar@!};4h4vo))M8$P z?*yY=mw>k0KiiuFoG&ro(|(LV{ZL&Nb-Cq= zhW0FvDe?2rXqWaw|JV3R{{A1Nc8T(m?9e~&5sOGr2kyP)8C^K1Sqr732sN*Z@7i4p zduw>mS;i5@XS>NsG$l(-L^9;5N^-2BTxUljZ<`nT35)vUFY=Txy2UR)G118+YYN64 zoKcZ%PPL63>j=uoF4JORQa8-MY9&ppb8gn@;XU;zH)dBr^N*MjIP4*K);-NAC5N4I zmEj})Ob^5Smsdo`TD8vNmX|pzXI5ODSkILU=@fdd$2y*@5Hv*&$SRFIrv8W@{z}F1 zU*ov2DYoMg3H?=jta)B_^p*R!-|q%#clgBBoYQ|B^HCa(tEPp+V>mUgDO_gVSajsC zV>KWv{l}<)#{H-hYifp~{8Oj~O4K(zob)5Uh*Dgr!%=a72eB;rfqP;2Og8%6!~xH8XJYv+484)wx(1$@tQf~J=9`c<);||Pp-rp*w`79g(hvo+S-(=O#Vs5 zuiIZUs}PD>yCFxy8ZI?|WL!j6s7}Ec-fGB6b}3}L&=+Q6VseM@fpbA2R#6>P#-x7nkdy3&wzf7Q zA?f9KfzjZVMAV`!x}4wBtDIAHL6h;AN`w;<3&Y9c36u8x?`F^3yzLI*w_Z3XQbPDksrc`j1NCXxb7V>PF)FMAf1ye_XM(wstiw3KkFzp(r&gD^<42 z?E!eR6hg|r(cA;Okwr5v7eY(4C4T#ri>%<_uBfv!H`PILSWtAoUo$&7JNsO{(sw8$ zDLL|fSNXZsMdTY6TC^L9@BSq|^ZxtyVDyVvvREe?Cbg-*dbU{ZVDjK6E1e-rW_=J$#znt>Cn(sJrO{pOW02IJmmKvvWo1H8Zi_ z4|FyL{|_peil@g{3k6-dbul`50*M6h5_?wnU07Lj(XL*-s;tfjYt&CYyJ>Qg%F@!3 z@!>Y$coQ&Gh+M_KmXr*35C{|Kx#sX1~~LW*hd`r4hNg ztTf^`jat76+~L{aE_d8iG3eMxDtB0~`*4-&Uy&J!s_O7M+!U>zkj=(I^+&L92%ht? z!LqjF*OF#&VOVNp4OcYdRF@YGxm{OhFZPABvyHVzqRM4I_ET5

  • Nb8pgv@tqKR- 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