From c51f63cd7a7fd0aea1a4392bc63c94f882081b8e Mon Sep 17 00:00:00 2001
From: RossAsscends <124905043+RossAscends@users.noreply.github.com>
Date: Wed, 15 Mar 2023 08:42:29 +0900
Subject: [PATCH 1/5] fixed typos in readme and RA-mod.js comments
---
public/scripts/RossAscends-mods.js | 6 +-----
readme.md | 30 +++++++++++++++++-------------
2 files changed, 18 insertions(+), 18 deletions(-)
diff --git a/public/scripts/RossAscends-mods.js b/public/scripts/RossAscends-mods.js
index 9d64ae7a9..90ed4b834 100644
--- a/public/scripts/RossAscends-mods.js
+++ b/public/scripts/RossAscends-mods.js
@@ -271,18 +271,14 @@ $("document").ready(function () {
$(AutoConnectCheckbox).prop("checked",LoadLocalBool("AutoConnectEnabled"));
$(AutoLoadChatCheckbox).prop("checked",LoadLocalBool("AutoLoadChatEnabled"));
-
- //AutoLoadChat and AutoConnect must be loaded on a small delay after page load to allow getSettings to fill out what they need
if (LoadLocalBool('AutoLoadChatEnabled') == true) {
console.log('calling RA_ALC');
RA_autoloadchat();
}
-
+ //Autoconnect on page load if enabled, or when api type is changed
if (LoadLocalBool("AutoConnectEnabled") == true) {RA_autoconnect()}
-
$("#main_api").change(function () {RA_autoconnect();});
-
$("#api_button").click(function () {setTimeout(RA_checkOnlineStatus, 100);});
//close the RightNav panel when user clicks outside of it or related panels (adv editing popup, or dialog popups)
diff --git a/readme.md b/readme.md
index 920717f03..140d61d03 100644
--- a/readme.md
+++ b/readme.md
@@ -1,16 +1,19 @@
-## RossAscends 1.2.8 mods ported into Silly TavernAI 1.2.8
+## RossAscends mods ported into SillyLossy's TavernAI 1.2.8
## This branch includes:
* Base TavernAI 1.2.8
-* SillyLossy's extensive 1.2.8 modifications and functions (
+* SillyLossy's extensive 1.2.8 modifications and functions
* World Info
* OobaBooga's TextGen WebUI API connection
* Soft prompts
- * Character emotional expressions
- * Auto-Summary of the chat history
+ * installing SillyLossy's TAI-extras will give support for
+ * Character emotional expressions
+ * Auto-Summary of the chat history
+ * sending images to chat, and the AI interpreting the content.
+
...and...
@@ -25,8 +28,7 @@
* Ctrl+Right = clear locally stored variables.
* Ctrl+enter = Regenerate last AI response.
-* No more page refresh on character deletion
-* No more page refresh on user name change
+* User Name Changes and Character Deletion no longer force the page to refresh.
* Toggle option to automatically connect to API on page load (currently only for Kobold)
* Toggle option to automatically load the most recently viewed character on page load
@@ -40,14 +42,16 @@
* Clicking the Lock on the nav panel will hold the panel open, and this setting be remembered across sessions.
* Nav panel status of open or closed will also be saved across sessions.
+* Supports saving a shortcut to iOS homescreens and opening in fullscreen mode from that bookmark.
+
## Installation
*NOTE: This branch is intended for local install purposes, and has not been tested on a colab or other cloud notebook service.*
1. install [NodeJS](nodejs.org)
- 2. download the zip from this github
+ 2. download the zip from this github repo
3. unzip it into a folder of your choice
- 4. run start.bat with aby double clicking or in a command line.
+ 4. run start.bat via double clicking or in a command line.
5. Once the server has prepared everything for you, it will open a tab in your browser.
## Remote connections
@@ -56,21 +60,21 @@ Most often this is for people who want use TAI on their mobile phones while at h
If you want to enable other devices to connect to your TAI server, open 'config.conf' in a text editor, and change:
```
-const whitelistMode = false;
+const whitelistMode = true;
```
to
```
-const whitelistMode = true;
+const whitelistMode = false;
```
Save the file.
-Close, then restart your TAI server.
+Restart your TAI server.
You will now be able to connect from other devices.
***Disclaimer: Anyone else who knows your IP address and TAI port number will be able to as well***
To connect over wifi you'll need your PC's local wifi IP address
- - (For Windows: windows button > type 'cmd.exe' in the search bar> type 'ipconfig' in the consol, hit Enter > "IPv4" listing)
-if you want other people around the internet to connect, check [here](https://whatismyipaddress.com/) for 'IPv4'
+ - (For Windows: windows button > type 'cmd.exe' in the search bar> type 'ipconfig' in the console, hit Enter > "IPv4" listing)
+if you want other people on the internet to connect, and check [here](https://whatismyipaddress.com/) for 'IPv4'
## Questions or suggestions?
Contact me on Discord: RossAscends#1779
From 5f2882e33fd51274b53114d96f8c91cc5839e960 Mon Sep 17 00:00:00 2001
From: RossAsscends <124905043+RossAscends@users.noreply.github.com>
Date: Wed, 15 Mar 2023 08:50:11 +0900
Subject: [PATCH 2/5] more typos
---
public/settings.json | 2 +-
readme.md | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/public/settings.json b/public/settings.json
index d96c6244d..380ff5a28 100644
--- a/public/settings.json
+++ b/public/settings.json
@@ -1 +1 @@
-{"username":"You","api_server":"","api_server_textgenerationwebui":"","preset_settings":"gui","preset_settings_novel":"Classic-Euterpe","user_avatar":"you.png","temp":0.43,"amount_gen":90,"max_context":2048,"anchor_order":0,"style_anchor":false,"character_anchor":true,"auto_connect":true,"auto_load_chat":true,"main_api":"kobold","api_key_novel":"","rep_pen":1.17,"rep_pen_size":1024,"model_novel":"euterpe-v2","temp_novel":1.11,"rep_pen_novel":1.11,"rep_pen_size_novel":320,"world_info":null,"world_info_depth":2,"world_info_budget":200,"textgenerationwebui_settings":{"temp":0.5,"top_p":0.9,"top_k":0,"typical_p":1,"rep_pen":1.1,"rep_pen_size":0,"penalty_alpha":0}}
\ No newline at end of file
+{"username":"You","api_server":"http://localhost:5000/api","api_server_textgenerationwebui":"http://127.0.0.1:7860","preset_settings":"gui","preset_settings_novel":"Classic-Euterpe","user_avatar":"legat.png","temp":0.43,"amount_gen":90,"max_context":2048,"anchor_order":0,"style_anchor":false,"character_anchor":true,"auto_connect":false,"auto_load_chat":false,"main_api":"kobold","api_key_novel":"","rep_pen":1.17,"rep_pen_size":1024,"model_novel":"euterpe-v2","temp_novel":1.11,"rep_pen_novel":1.11,"rep_pen_size_novel":320,"world_info":null,"world_info_depth":2,"world_info_budget":200,"active_character":"0","textgenerationwebui_settings":{"temp":0.5,"top_p":0.9,"top_k":0,"typical_p":1,"rep_pen":1.1,"rep_pen_size":0,"penalty_alpha":0}}
\ No newline at end of file
diff --git a/readme.md b/readme.md
index 140d61d03..9a5dd7712 100644
--- a/readme.md
+++ b/readme.md
@@ -24,7 +24,7 @@
* Mobile-friendly page design
* HotKeys
* Ctrl+Up = Connect to API
- * Ctrl+Left = view localled stored variables (in the browser console window)
+ * Ctrl+Left = view locally stored variables (in the browser console window)
* Ctrl+Right = clear locally stored variables.
* Ctrl+enter = Regenerate last AI response.
From 9483ec464a67fc4cac2da0d6876494de589c2acf Mon Sep 17 00:00:00 2001
From: RossAsscends <124905043+RossAscends@users.noreply.github.com>
Date: Wed, 15 Mar 2023 23:27:00 +0900
Subject: [PATCH 3/5] added - swipes library - CSS for mobile, - swipe
left/right on last msg to regenerate
---
public/index.html | 3 +-
public/script.js | 34 +++---
public/scripts/RossAscends-mods.js | 34 +++++-
public/scripts/swiped-events.js | 165 +++++++++++++++++++++++++++++
public/settings.json | 2 +-
public/style.css | 89 +++++++++++++---
readme.md | 3 +-
7 files changed, 297 insertions(+), 33 deletions(-)
create mode 100644 public/scripts/swiped-events.js
diff --git a/public/index.html b/public/index.html
index 8f6f7d8d5..19c9b3f31 100644
--- a/public/index.html
+++ b/public/index.html
@@ -22,6 +22,7 @@
+
@@ -102,7 +103,7 @@
UdemA z!eEn@Jh5Kl c0cst^yJj8PiAWI$E51)Fp8ivhLQ}D3?Uh$ZAFNPVVtvNn4y(Mt6^}#c?}$V zB8E~5@v(dG(8unFh(^(vI0Iwbc4P94^D(h?Cx#|AA!-f7lXk#Z!MAgE+0y(hu|N=k zg#eTF14!qM(FRPSWOe&<)y%ydc0r5Dt*|Mx70Z%q!8QPxtn&pSAsAMDXDL)1V|jiC z^Cu2r_R!;)JM K}XUAKl*m@LO&G@W{GGzYV pXvpS0i|lur*${d4YiM z3rJr;dSo}@vPzMUHUj+9r{}SE?=l)Sazj)!;@C9}$OeMuCNw6tU}Vb~7~8rFW1Dth zcycou!{Z2RP54m+>G=>s+L)E$^3RNtTUBwisK2sU8LzZrx Uj_$+U(I>EY{1CbeN1>Bh2u>0CK&?gyLVG^CG2^stb^O3< zCNM-PbT@_8rjT6gAseX7Kr7oXm8AwMF-T(r6&skYK?lPhn;zQzbG}+W`hD-b4^Mg0 z9RS4jjo7~L O&mTP zgV}cP%cfWK{w7HmNxB!^gL|;J{|h)kbx_bm*c?G)bQ4+=ThW}@f}!z^XiZF^F}eZu z#t_0r3t_DW-wz=D5K?+YXd`kdCK^!Z=MstBId|H?s0=DikR~zWZX5B^0+!}xusnAH zi!;Zuc=8yQW)5TN -x#a@t0uz=?YNY^FrM?Q2E;kGX>;ofh}qgA)LTPaH&mBt>N zQViu9zOzi*9$h7&jUE0%(zltVum!(9f?8t)VWWw#HjJP?grHtS5Y^!aPU5BKrry9g zLN?o_wSr1xByk5xw~M5^jHJDUwB1J1SwP&GN7h+Dmb78A6l^pkG^A(Xdj`Hw@O|O( z;4b&=(wS0FF`2*^AWj$yO9s2o8^%j-8bK|Mq2jEl1{uvz+LQpbQk$g)Sz;fn#6ZUe zUDLd6cI5n9Kz#7kzxS0>Vz;i5{;$3Dv)J 1WY9W=*2_@Y z3FsMM`6R(I1oIZA9x;!43F@8@mq>y|jOr5CRLVPh(q8IVhSt>BB8JUe31Rzz^Pw=s zHJ>Y-1g&l7O}lF_HWA^n%Z5>dtsQIK%T)EkPVVKHUC|>4oihWi +Ia(rF5tsCIE(cQS{8=qW!Z0Fg37IZsTM_G55agv*ZYeOAN2Dfo(kK?3aAleCb zZL4Gc@=<*Gi__?K4TuDMH!-Jg^mEB+VqV7>QMU;CNc9yXG?0sjN=2#)8m;7jtodJZ z8jS+t*dWt{7hXPw-Mb=SxdWAI$IjuB*KDAigQb- jQG?oqyd#ZbtAogr{gd)k1ZzOUrwlt+jGduz& zw=|F_!jZ#W0Bmh__2Orh6ThA UR WUGZecmX# zG0^SWK`YvvT3Xk8ThDm#r}I`wt_G6SpxtHcICBWsyl4zfPN9|)XKQnIMt+`5?|dnC z;Pz6II%Omr-QO7V{(Six(+fB6x{vtJ@bm+m_vgO+f(Pk}x9{3Zt>%A^Rd~!~x= IXyK`Se@S{WF39yv8gls~U(L+`reWh3AG;U9RIAhEvL zBTpLO@;4s%ELt1upXR9k7isFnoH1A#E5Vs@tI-DRN?H4&ayz4K_>(Ng7@`!{UOSGn z&l^RYT8AX>;WFmQ9msbTT-~#|oi4Eb%wb%A<0Qs|3~I51OyzlNYj>3~P=-r(*CjVf zb{C3~rb3&b_QA<1`S-Zy5$;W3dnN$}fO|k+zMZ;_iQ2m}QTuF`pd`f> ?2B8O z+Jy!x(@5vL7)FZgt{uk(my9FRgm%Xu&736j)2FhZNtK*sK)YkmO@Xt{8^!fEPGUn% zK`peAWx9}DJGrqG@8( Bi`!(`j`KZ>VE_L1BI_1v8_!Xi8o!eHW#+tdbK;nQe{MaOI0P;*tv* zh~h5Ng)TB>iWFoK=elfF;h#8(HJRmHbH*@ PU{IP z |C~I%_O9*Qk94s(_ k6KvO?;vU_ai%y%#B7o*)| z@jum|8bu}x26@e=*Rm;GCnj5`P!J3lx|<+S2IE6DTz~Z_wry?TzHiOq*x_ZQsYVnE z_&yDcTb~JF^JJJVk{66PF;I#yGSR^K7ms20Sq(Hy3^mh1mMG^;<&xeb(W` ~xeN1yr_FP{CA1FsSEq;5~@3gCm(GyuZApsAmq>&|{->Vde! zO_O97NitsF$uIT)a$m<@sb`zr9Evo9)EW~LAx=AU7>&^yIvs<>g$zk*dW)r0+y@WH zNIg|a&85|Wnq@#7GvWlOwIb|(!8oqEW)eF$`|#V#Rwbv(Wv2Q=A+1f3V>V7|wFA{S z$yKRA+!b2;wGY-O8n=Grww*_Q^_Fjm0nl X1@Z?U!U# MRMRAkjNuMX)mhM`=^E>pIvur(55+s+}Jb@mXZMg_b$ zhFa?Oq?XGxn=;+i6pmFM-{#36 m#fl>O0DfJ}HJ^gX|`W8?C%r8moT>EG7^HR6S?Rvb_v$ySPUfNgzP zltC7GGZ`$ &4Imn7Ge?5=SVtR1&Xr3T&D z>*}EXp5|oj_g?t6Uw(rB>i>RP!TpW`j#GkMhk5wW_L15B3qPYf-8V-v+Z==h5fHo} zSJzgODF<5QV56wH=7hdnA_dvHtQYz4Y9UaIkO~iRW|JffODPr?6qXiKblM7OY?+&B zW}q?+BFnb$16!<*>K>ZS0IeY(!$Urr4T*XU2w6j>DO4wciZe^5cdEE|eaW7*8fMpd zVkMVzkPC2oNuV@l#Hl}HqUN79rdt2?h3D@-fdvw4f&1MAcreHS;bxdapPs1gyI;P> zEHD3ZNb!YX#N-9SscR?6Ia5;#2+wvMPzhv9baz}U2ePdm5u_*K`5t88K?FWHkYLXP zlLUi`*%r$5a@?LINMZ;$iV+y3H7Lu#Nd}!}(5bSL*9R(>uHl?>waQJ|y&^&(!FdYT zWvr4eBhlfbUbFt+w(Jc4di&2EUBdedn~Rk^(5DXW(~>f9K+`J49KZ*<{s`Uojo^yz zT>NXE?%Ys|OyoOykMOPZ=IWX}QAo4B_>-gN5**ix&?`~qPL+$3g(bJyCNkIN;x0o& zWrOVIUcguY*b& C?;0^poIqAT`S zTPLbl2DJA|u~o^+pG8>vU~R1au8Xhq9`t6OkZu$RWA(9Y&nbY{mSh6qN1^X~*J<^o zqv^}jh3 WV*VwgmGJXRm@sIkHo)HC11Esm}s_pYKz{pt|?&{)s0~(b9E?vKA z^*ESUWUsh1Y?X5r?0~j**Yv4nqe?{e%pge!sR<5q5PhgM9{rySug>oG7p8&4vG)P2 zBDvqO-F-#?UZ*s}5w?I0tRLC4y*_;?zDzC0Kh0_U@=#_Ife(_tjhTC4lmj(a*SQ^b z;1(AhFI}OHC?DKFYaV6cxN_wh8Kwj%_vU19ITY$+W>_aGOTn@B7vV>r3!DC5)F&Hv zyx^t-OL%|=g+R}U)IMVXuhYBkNplU1OD4?2AC@C?)A}Xd#q`HTmR##gH5vF!e$aEk zs1zepDTK-aCMUt=0teArwMH&q^t)&y?Vljz8tS;$QqmiSQY!srj5H%;+M81%{8~5^ zy{|dyfBO7iX-|6}pBI=bsDlH;pJzgHpD}>f6(?6!cLc^}GJEdYIC1PSUuU|V*O*LQ z>ml13dWJlAL1tNMd=vQvUkZutNp4|=%OI~+R4C2mD4eR&d<^s@F;HZtvXqf##EOFB zkp7)ii$1bpN`CI#i>HrbJ|o0M%Pr9@m|wQCHjKfpHC9gNq8-n=)gPVft*y+eU1FC! z{vsN=C~uP0O-YZ~?=};j3${Ezq<(Yu>cAEsrrL91^*f7H^S9NnuoAy4T%EO(Jtr^O znALA vZGKjY(}->-b%Z*volU)6u@+uTa;OCSIJWLd}?I4NRHV)p#PleO0v>Lz9F zo~4r5)2wJCbI17BoOy!jdS_;Fm(Gb}TYRqB(E7v+O-Hp!ha9-dA7 MKL2QE^|aa5^5T!@9xc(%+$!xhcWP>hmG<7N5}O-u^a%JUB(yMaD~V}T zdCuLzbjByg;noHNo`o}x?3q#`bjkY3&l~PRcBd{?uekPQ{*8UT%gy&`L?7y$d_a&x zMZ4>&*)T- zuKL3b*D?fGs~Nf{e4BeOj6t>S$)*n(D@B)aJ6+Ogu@S3ywM1y^(T$$#cR$ve{E+o} zM$I?o7FLduUwS5+(|CTzFnr(5_95733J;t0d@GrQ3)sA!P96VJ%#dOia$I?; #*T{sV`l&Ogvj+?rPTcNGtU31TM=10YhS3aFRT>L(4ABX?e(%E5iGOD*m zJKfH$wV%x3@qqD7XuCu9ft8UPPt`|o2h8!R+JF0i-E)-+(XW3~uKXyk%K0O5uiCHa z*7x~8c6NPv)o|H(M*(|g@AE0XwOS1R3^SHJ|5qRDyKBB??-s2S_qh)|+x}lZW7(JG zOW#gA0X(5XwZt`|BqgyV)hf9t6-Y4{85kMq8W`&uScVuFSQ!J6p*E0VVDR?0Z!n66 c-29Zxv`X9><}CaA9;kuA)78&qol`;+0Io3xA^-pY literal 0 HcmV?d00001 diff --git a/public/img/DefaultExpressions/anger.png b/public/img/DefaultExpressions/anger.png new file mode 100644 index 0000000000000000000000000000000000000000..6d7398d5b5a1105bf88b5c61e7fd9a08224e743f GIT binary patch literal 20215 zcmV)FK)=6 004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00007 zbV*G`2j&9^7cn4ehmwx~000JJOGiWi{{a60|De66lK=os`$
V*B{RCQPPy(5i4z?!9>r>1X*sjjN;dGq&uOYoD&kLAO< zrwQ?sOYvh3Fh6zx+dqXHj{lK7w{Wjl4799xEw3t?B9Ms`!npIb(k9lkO;s^1TQo`w zeb>?%=52rTdm0Zo^5b(^{>`4r+urp*c+cW*@K@u%Q8?XyWN6s0kJP-zxaZkvA ((cWVnRoGS6l}DCzZTEs6I$HIc z>eB!8rJn%&Oj?ppz4JA}=F FbPJ-qG1wmHje!#T5;+2hAQ2*7? Fk=A@@LL01@ZIBe*1alLbSs#>LF3Ez6b?`(t+xy z&tAIu!kt+kz`3)v=|4uK;93W^wxBbh)92ViY_PG#Mkv+snysktNGB=W+*XAf52@+9 zKcucd`nup_=F;E3=_dd`+2d>Pdm#}8Z lm5)*Lt*2ZVi;dgC?;#Xl9d!a2WluB zpn-${2e2 aR zY{uo! ps8@BR@k5bS6om+nbaG%8f*Q+pA`fH2FHje~LFCPi&*A@%WSwY1N%aVYi zghB>v3Thz02LcPeb*kAffL8;*2HqHWBOt0E${-3L0td9!U}LatFikKEpyog?fvSUQ zfl>}!Eg%sN5-+l@{z@)_R%l#qK98(KCgHF-u?gY0estgFTz?eKIP54bfi%K*=n(M zQCKl$$`Xp1)TY3ODX^gjg>fiugW^sI&j5c5$Vm_t+!qB1n*;GAQvpJxZwUvyZG&9| zeE{NzAi5vgyP$IrqE;%+(n)e;yFk-2sHTXT?c&{Y(eMWz>r8)QTj|i@Pt87?-}vwU z{NoSsz3)Afd!n7eS>dh=r^92vGF)uDxKPpKq9UOr9H?DzErbRNRVbeVl?$MFKKNTf zjylP-eQt4jO6exVNt|M8kNfsv2lkNyt`9n(Ti=GpJ @S)Sx6=0VK`$bHY*uF`$l7Q~N1 z>lRr0CNv(0D1yjyV0Vn$S{Bo^w$%&{&UQxMe K{=fYA0Q{-n zznq(*3&g97UpjwF@z}4AR+g?S)J%nPYG*S?Dzt7ZPr%ScF!TbahUHN1f|GNP^T3J~ zw!u>r1L`^dw^`wDoBQ4Lw{5zpgaj0*1JL*;EZhW*N1&5Hl&bEIg|>mFA#RAyVyp7S zBk|Oq-eu1D`c}EyT=w?c{_O+&)f+BDA;XQqfomtjx!)P8w9oRZ_*61*B^0ca+F})k zFM`pRK=DjxS8e{n%N5kGJc0BM0xM1+xr0(X2yFVd9e9mNkHd2+JUIyUufyDzp#DVa zyNMpiErYIG(`*(VJshq2ZwJll4@*q*d2jzldM-bhhxdcp@!!1j4Se#7``9Dak8k$( z|H_);@plXjbx!eyQk7hmP!>=$PI^bqfK@*Y |kV?%C%4PTaFsgVO0x*$JNKym8y=OSVWK5z1tuqFa|1O{>x}#RuR2m0zlF zf8p!+_)Yi!+mhhfcUIYDPhYp$d*ZjoOG`gf9MU6HJO^w^ID1>rP#J@<=fmiWAzYig zc+#msyOQda%l{U_eOC;s=M$-FyYj-ZHub{IfLSohr8-++*+Q_^Nwn!e;|@6XNmzW) z+2cq++q$i;iR+>{(;oiFZoT;r&J^E$WaRCge;X3~o_GBgU%m8JZkOk7-Qw+i$5eUY zX9~lnO4Wmka8g^cP_&rZR`kfVB;m7A?FiLAhKcJ~6L&AH5KpE;SGeFO`b?ZiGV>Ce z-v-}bL7J_?>JBEUquaBn=22Ar5UMqY7UPJ@X$Vgu^br?p3)#)8dD4VM+u2!Et<8_= zExX=-^^v1nFTIXWeC?tCdnNc|?|vEA&wPekM$g-^*?Z#Mla Yx|S6zkU9m`|tSDmgjQS4c~aiF!7&BfS+%^!p$S+pSoS{dGADd z>6&0jIA _~$~JtpcXlEfmtkQcokuKVRv2u7ddQm02h1`E4#Yfa#T9HVh1je~#moh>_m^9=dW zUH{jq=$GB_x7>T>zjC`hcguFU`#qDD#a9GF((kI|vVc%Sbpobe31iQLpoA8Z#~wJu zo(J|3wIj4rL~X^wT#Ezy=6UqNBRu-RK8_zafK28n_z|8D()STku3#HYzbfu?hRn)p zHveq33w;Luk2MK8nkSmw&C!SN;Lfk!%vV2g8@Jy05D(pVgyV-Bw3{(H(HLbA!ee~x zIxf8W1#H^63271tCZM<(%pxR*(qnTAQwk{9Xk(DXn;%rC-1GiRjvTAL_}BUJjo<#! z1N?zM_-WqKdJp%=bJuK@yZ`G{W$Cry5I)rb$*oSq>es^1`L60C5(;YpyXlHN53O3db zf~;2r->4R a4rl-+AZjJD-@_@#5?G=#3Bl zXaRoTa~HVZJG-`B?*8rR;{4ARhA8$zAmLJtwY5%it2;p`cj1Krp(vCCHk`VJ9T%R* z*0au}GF&C9FOf9s1c9Yk^auh$rx~+>u`RIfQD?GhBmWIYb5_LW*4R;3-0%r*y8e z1)$Jzop^2!`@VZSU;gOL-1NBzIDUAMLMW(JB&7oQ(oifF*nH+0T=tslx$+IKI!)ePE!EDBKA +K&M!0-Rh zSMhMXHaOdR=;ziIXMU?x)kEDFx0p(9Z56C~1yptnfSaks7(tstNie={6 oSAr(JXwwK0hli=gYE z=AXXJ(S!5U%92{uqZop)n#%A9=e+RwJpbq3#2J^JPjyrvSODGV0o%3fX=v8n5?7lp zu5&f$=y0x-2|gwWlj!t7cMkunz3RT-zQVWv{Pn#*Jb*v^&X@73=u^Dt*vEHn^bWmu zw9+|CR&(GM4V0=d`Ft2UGbgzgWGcNP1w!O9L)JK;Y2g=OYU2hr?A(dx2h1NjgpOJS zfg}h7QV5P6X>jO?S;j^sV^cM}LNQg>D}cA6DjsyQ6gpm_d2Bb|{=%(%;iGraTx>Bs z C7 o=#9` zfnEe1^(1xBbGK?hdUGIK wbnpv?=`EX? z*tC(wBQq==J%;ar9|)ur%p7gfTx_su`zYn13c~kOkWXZPm)mG-B6Mq(NAI|gPyhY5 zSemOdl7cHS_+f!_uYLhn{Pb&>+&F@;^PpQfU{}x-R;Qe=To{&D-6jpoyejxr= H1-m})rL+>1}#G7SicMEB` zueuf{E{Cw{>@GQ*o5iVJ$sNq=n&m|RtHHzwFJ@$VlBrFbnLjea;?ZM{A?rCR&auM{ zie<_AZ4-pWqKlKolc{Od7yH_{!R)@heBqyO<%x%nFgzqF6$R27!g84lU-4otea%a$ zjf O;jqzoYYz$QUo=c-!_U?GmtNFxD zyM8bLf8~rXazw7JZ8s19) `k$&wk|#C=Y2!mYkGzK~*bz>~;`jGvIjTo=qz0{;=DB+_T5R zfUniKQKs-6ao)}A_1@OuYd*lEU;f}T3-D)exSSW=dkfKox@y{={m<2^9v0<16GOtt znNT~;fhzOTnt_;;QjsgYWs)ZB3Djt6Q;h;5Y7-+&Zrs4k!Q(6*K8BZ; pgU3WN_{1)?LM+K#tvK^lullJ!>UJ^xw0``+J--e*5}^TB5p;2SPa zxMk$j$&LPz8^()`3xbN5+T4^BSDl8@XMrE&oT`B>Q@g@0PbrG5+-6oNteYOlHU)Wn zn9()U9DZy+_1Q(Flq9hsNi3&6YaK%qRab{yR`(sy6jp ZD2QAx7K1@1+ROc6iEV}E^KI{njS|AKarHfkG@iTewt6R+@ zi+}cw=%jFyC-bG(z3ttc@{U7HF#Ez0ul_tg<4y&_EfGJ2>UQu-Dc@N2Hly6Cx9Ns* zMRJ>@pQ-fkGzpOZZukErDZMq_bQ{b(>rbEJl2>0zd3XqG3_$=(a}DNa7MzK&QM#q6 zLK`pNh%q+i@ZMSCR)@eBB(Y|C+j=g3<)u`|aNezn(%;V=OLxENaU0e1j=SfgdgpD^ zYtemQ_1@1iT_`ARfbz5>@CWW%`$fU9-#mZZ%v|?pg|~_S^^P|`bJe6*bUw|8e(S 8AjfRzq=BdeWr!BUga8ICUds@AG_x$ENSgTm?wv{
z2B3&L35|M;^(?}uT=i(BQeoOn>bab^H3qE&rLh_pU3W37whTeC z2s#<4IIZw(P0nAmy)EN$*@5qNg9X$7eQO;fq`C!KvygPa7l=SoEa>7`GWYtIB_IAg zf`^|G3I6oEU&?Fmy`8PW(JL!n>molCh^!yT1Hv*?Hl#r2R%W(JyQ@|AR?AX35SAh?xcXUazvwiy5d?*R%6P?f71EQ^ 2+7N7I4 zzJSv%-hwc7FzuY==Cw&)6XnjOPy6Jx*r2vj16nL6%_fGzn3LjEkVGKx3W7=y?ObIK zzvK_s|E>JgJFoiwZSXH%Qsut&r%rAZ`~TB$p> vwd<7l}#uOmzmhGny6z~yL}DMdcmobDx{M4)JYB*NQy%>; F3#Zvlw`p&9=Gsh0|=E8Bj^iC)7cb$Z*@- z&0m``#}|*Sehv>m@bLG>==jV#p3gOhzsj9sn_s-fJMy< 9xLd1Uc>cCxm24svKb+E{M3t_%XVbK$2_ z=mpMBh?L%Hz4V}DPYSI_S9Q+W$}Wz{0h@u}?JG*%1Dn2HMt09scZ!}BP95uLIeXHc zNMYq#RIKf(z-3HJdcV;J@Bm<4QhX|n-35?yzKmS~SaMD1HYfGQz4j{*41t_Q_znZl zhYIyeYqoy+wq*CWzGr}^yhX;M@YzMbvq|`(ziU3IfM0eFhD<>cDR87}+N5gOh~ !U!}MKq}{O`I4d^PgRq}7yMK8&ENjeJ7mZ}`m91Na}`a}gh~ zqIyC7k;@AuT@q6CdZ?vz$#Ef5Z%{5*T_%&_oCKJZHfnRgbqNirv}OyTE4717WjTrN zYFyF(yv**3Cuv<-3E)9#wLJ+oW+234xkP3xjSRHD4jJ16v`>mN$Bmq`mA>}N;1@wO z5mLB>muG`&w0QXjz5D$F4nOTMX}Yah(^1=tvU8#5S&>Pvl>%e{eyNvP%EF+&V^lvo z!wiOjx$o=jxN@bzZYVV9QD@;%?powYfWn8M+;voi6i6QmGCpNU&+Zsj$9dnMy#3@Q z_~Y-shD#27mR%zo&n|d+o$!S-t(iyc6&=V%Etf)TQs+qYBskSHR=YVERti_`@nnu_ zGvGL7Sw ckz?zN$3Bgxs@ZZ^we5>2Pxp}Ek)7)z-Z z5>^AeVu%cV*8$+k)O_c_>u%0Nx2ZR4vkRvcCef%)Lez}uv=u?or#e}qFjPW#q8ElS z;0&d9Rdo{Db4@x+Z3Iv#`2^( vkq18xOoQ*hosKbH%5yy@z%GH1u zzitED&h^snzbBXAxY_2GFC5~*yXGi_FgX#hdR>9>RRxB}3KS~^{GyK^N~G88e-d5W z3D#JQGMGf6V@=Xgw3cEPW+DzBh}gF;Vs61OK3U*-SFK|6j!}g4`eS38kBv>QqcICT zWdNex<@!s{;-gL(?i`$|iPp^fe*MM#mp}W$lLKtHpLLywIpVKh t<0 z2nBv1yS|FG7OgCuj-gT4)a!=&l44 M=CpQycQA4S7_`k|31bTuipcRpO4V-B7fe zhNZe@Zb36YuUJ?zbUKzew$z4V&V2S1TRoB5Y5FDD4ghS^Y#0{n1y~`m(sq+aKJkX4 zZEQP#?ulJ{R&9D}39i~YTd$17?Kf{c%@@g(&4r&90W$qB86CxB*{D>CF;1Olo^UGJ zemUfvD^|1XfjWnFFH$HtcI4qBhC_!GU9Btxp6Awt^wMI0wcT^o3Y4~8Eh*CEnJ=Ln z3c^5g@yj=G>P6E%M`lnh=S5fuN@GQ?c=Z+z?P+m*?-GTAz*x)dtYYT4!V 5w1~tUOgn2uJ8-sg%TM^WFU}*BEl~?2PU6; z$fpy#@8v=d0TWw>nBF$R{E-&T**4{(laz8%ILQedxKh~koKt(2rLKj*_n=r1luGXZ zR!V|mD3Dl!(C3nuZRDC?IEArM3!P5Cvtn2JTO%+`ZW(5BU5%r=mx$^Sm5QWV7L tkzhqF-e3?G)6g%W)dTsy7WXzs4tGOpgwTx%#%xSNjF$y9}j(-Y!<2A?Mkqa zSR~f! vT^ &Gs@ocg#3w^p#f^f fD!p5k+m2DNo24>u;GjeE_%f_c3d(> zXxq@}^uWz$#|HDo`JJ{qNUb^T+$uw3XL9?e_VU iOpLp$a+0Jwp?+dFRU^HGc--t%vh_j7;Kg$6g`dU*?5f+V!V>f z%sjOXR N46KC6XyyA z^n3xkf(t!}P)8%QV(o?sFZ#vpY`b8R`@XWDBM;A_Ix)WQ`~sPVat>^ZF>b+WWzh!w zLcr?NMmhbttJ!|;7}bJ7%+5iS {`*Y3~=h-gQ38I({>&i^Oc{4|zKh2(d z<~X!#j>W@GqGm*#n68r~ge!D}wUDVbL#*35$=377S+${vZ`-i21WKP|>iGmIOAACX zBnjnGft?o*vH9$s?7M%Fy?4!U_>nnUb1hV?(?yhSQsRXkLlXs7Z5w6NITLI=eVA%h zAnQ#y-cFBA -+SGP3()RB91|8pHmohOcEcJP&tJ{L@rZ@PE$XuoNylB7 zu;No02^m>cVsuT3+K@z=2paRQyw@FOCi+W+VkMnyR;V=PXf+0?w-Bv}YN^2K=U3SF ztRd!)t!LqA#M1FLQ6oXc8qXILYa!L~0wb%6jE;vCeeHaJ;~h6B&6wr6=e%mh^yjr% zF2S}-%(K1XR<|l^J**w8CMN;#L<~lF!@?SA25T(Yj~Sg)&vJQ9vpdep4kX kr@B)wFV!-f*fDN06G157808(0{HLffeEy28U(_p)G2s=