shadowsocks/0000755000175000017500000000000012774125444012420 5ustar shellshellshadowsocks/MANIFEST.in0000644000175000017500000000010612774125037014151 0ustar shellshellrecursive-include shadowsocks *.py include README.rst include LICENSE shadowsocks/utils/0000755000175000017500000000000012774125037013556 5ustar shellshellshadowsocks/utils/fail2ban/0000755000175000017500000000000012774125037015234 5ustar shellshellshadowsocks/utils/fail2ban/shadowsocks.conf0000644000175000017500000000017412774125037020435 0ustar shellshell[Definition] _daemon = shadowsocks failregex = ^\s+ERROR\s+can not parse header when handling connection from :\d+$ shadowsocks/utils/README.md0000644000175000017500000000027712774125037015043 0ustar shellshellUseful Tools =========== autoban.py ---------- Automatically ban IPs that try to brute force crack the server. See https://github.com/shadowsocks/shadowsocks/wiki/Ban-Brute-Force-Crackers shadowsocks/utils/autoban.py0000755000175000017500000000415412774125037015570 0ustar shellshell#!/usr/bin/python # -*- coding: utf-8 -*- # Copyright (c) 2015 clowwindy # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. from __future__ import absolute_import, division, print_function, \ with_statement import os import sys import argparse if __name__ == '__main__': parser = argparse.ArgumentParser(description='See README') parser.add_argument('-c', '--count', default=3, type=int, help='with how many failure times it should be ' 'considered as an attack') config = parser.parse_args() ips = {} banned = set() for line in sys.stdin: if 'can not parse header when' in line: ip = line.split()[-1].split(':')[0] if ip not in ips: ips[ip] = 1 print(ip) sys.stdout.flush() else: ips[ip] += 1 if ip not in banned and ips[ip] >= config.count: banned.add(ip) cmd = 'iptables -A INPUT -s %s -j DROP' % ip print(cmd, file=sys.stderr) sys.stderr.flush() os.system(cmd) shadowsocks/README.md0000644000175000017500000000270612774125037013702 0ustar shellshellshadowsocks =========== [![PyPI version]][PyPI] [![Build Status]][Travis CI] [![Coverage Status]][Coverage] A fast tunnel proxy that helps you bypass firewalls. Features: - TCP & UDP support - User management API - TCP Fast Open - Workers and graceful restart - Destination IP blacklist Server ------ ### Install Debian / Ubuntu: apt-get install python-pip pip install shadowsocks CentOS: yum install python-setuptools && easy_install pip pip install shadowsocks Windows: See [Install Server on Windows] ### Usage ssserver -p 443 -k password -m aes-256-cfb To run in the background: sudo ssserver -p 443 -k password -m aes-256-cfb --user nobody -d start To stop: sudo ssserver -d stop To check the log: sudo less /var/log/shadowsocks.log Check all the options via `-h`. You can also use a [Configuration] file instead. Documentation ------------- You can find all the documentation in the [Wiki]. License ------- Apache License [Build Status]: https://img.shields.io/travis/shadowsocks/shadowsocks/master.svg?style=flat [Coverage Status]: https://jenkins.shadowvpn.org/result/shadowsocks [Coverage]: https://jenkins.shadowvpn.org/job/Shadowsocks/ws/PYENV/py34/label/linux/htmlcov/index.html [PyPI]: https://pypi.python.org/pypi/shadowsocks [PyPI version]: https://img.shields.io/pypi/v/shadowsocks.svg?style=flat [Travis CI]: https://travis-ci.org/shadowsocks/shadowsocks shadowsocks/.travis.yml0000644000175000017500000000105212774125037014525 0ustar shellshelllanguage: python python: - 2.6 - 2.7 - 3.3 - 3.4 cache: directories: - dante-1.4.0 before_install: - sudo apt-get update -qq - sudo apt-get install -qq build-essential dnsutils iproute nginx bc - sudo dd if=/dev/urandom of=/usr/share/nginx/www/file bs=1M count=10 - sudo sh -c "echo '127.0.0.1 localhost' > /etc/hosts" - sudo service nginx restart - pip install pep8 pyflakes nose coverage PySocks - sudo tests/socksify/install.sh - sudo tests/libsodium/install.sh - sudo tests/setup_tc.sh script: - tests/jenkins.sh shadowsocks/.git/0000755000175000017500000000000012774125163013257 5ustar shellshellshadowsocks/.git/objects/0000755000175000017500000000000012774125162014707 5ustar shellshellshadowsocks/.git/objects/f3/0000755000175000017500000000000012562121324015206 5ustar shellshellshadowsocks/.git/objects/f3/0862a3917d0a6c4bc2ca8ae5fe934f08b580ed0000444000175000017500000000067612562121324022505 0ustar shellshellx+)JMU05d040031QHHKOOg𫺘GfI/OfZ9)-H,ap]vqߗJ]"/-3]/8?Ȳ3Q! (?$_ηE#ϬWRPYQPBL=Kq7-V$ U\Gm[! }u+A32KRM>c7Μ WQ\ðLM?SnEaޫGaTT4'!hə%vkjlQ_^]XS°T!A}zH[uW@ ļt?H. W眲tLN&@P_Z0qs6kKu<&0ss xtEfv{vpEũEeE8Tn"shadowsocks/.git/objects/b4/0000755000175000017500000000000012774125162015214 5ustar shellshellshadowsocks/.git/objects/b4/9d1de74310358195ae6aee60773d7bd08f9fda0000444000175000017500000000032412774125162022441 0ustar shellshellxO9n0LWsX$@4iwWKIisǶ-MY/[OYS+ؒ42ܱޔRYLaOP{G|p6D𗇑L]t#􀍒gcls)棪YPoexcpYo|lJmVB5Ow:;w.jۡFِVޑpI]shadowsocks/.git/objects/46/0000755000175000017500000000000012774125037015141 5ustar shellshellshadowsocks/.git/objects/46/1f2b3d51b3f5a41957cbfc389d46efb35951d10000444000175000017500000000056512774125037022363 0ustar shellshellxK@}_q`ֺ6̌1YT6 GLli҇Rp.=s e B].rKYٵñyb8/ Eѵ5t'xfec|Ԣ[)+- ΡJքԆ/Ӧ1 ʖ&˦\VYG.Ǐ4F;c%)˾TSWTJkٚSpǰS0B\$9:dV>i6Or%g%=+IQF~R{`x$O.vHC6:Dоƨz4*ģH}lUo|k{9?asSU\Z3Lz4cyddshadowsocks/.git/objects/27/0000755000175000017500000000000012774125037015140 5ustar shellshellshadowsocks/.git/objects/27/7ddb4a26aded520efeead740d1e8c9c6bf34f90000444000175000017500000000125512774125037023020 0ustar shellshellxTo0g|im]Uc.Q0m7-SeTĆ$;HMj$p|2ք73Ӣ砿ա"i)^[oe#eRh³QÅjwe43B_j-;Ա)BaܜD%,%G UuQ J) T V*hD AS2 N%߰,S9w\: J).\Û/eBobg"daT4M] ءgp Ua' J&+ XHPW[ahkqz #,0:<JNU_dlps{%+.6:AIQYafjqx $,/1:>EKPV^cltv{ "&-27>FLRWaipy !&+4ACJO\_egm;5%Lh\9.Wv4-,LD-<$/+1:ڑ HNsV_0 u]͠ݩlz'qKLAI$d@_x/m9sn`a|ugYEES#CY5u4Ͻ 6F4VJFGHr)?s0u%"ĺ9']I Lup_QJ C16&Jp *I/dj*|{oyqc.8ȊQWf)@A+.\*acp͛T1yMVY:? moD? [$obFk  ۙcNqh.!u9ew; YzϽ%$J}<e 2O)ì}<Ū շgRD;FUs |l~@33SHįGw}![{-0R?RӦQF°m%#4p:M9u&QH:7]Qw%зB*h򨩏pmpSU@ ,Tߐ“+S*y CvpxV~mH-F($GWf-ym ;R“D &,lnC2,wd+q಩>)O)01 ]u|To&+\ 0EݯΛ@],֙W #⎢$<0l b$xukq+!݉  )8|GA1>? ^ۍ^A] vE p> 9S$U ZA 70/ƈf 47|G :JxFfٻFӟ^ CODb TQ1(; ַB`ey oTSF'׺ CDآYwih .n}>ɪc9 (K Trw~UUX sA>,(+f = cdBqql Y dg}Bkѵψa {A{[ "q!r® q*!Žc)D | =w;mlȥs ~B /rPA+^~=! qD 1)*q 0w5es] ^f LHe a.Hdd:[? N'pzF>> a  O]jq1^ K Oy(NQ e7z bz_} #ĭ wUB\w%KhvJ al-Fi,aE 4,cAO&A; >2C@Ƚ ~_u 1w@sș4 |nn>c #y#BFwtV:9 U֢7#4E￷{haB%s9Q ] /BE"O>J$ sP}& wGiD[aߐ726-ajvUׇJQti1NwoLfkQqHu)Yi/ʶ1G;RaN:b"ϋެ??ĺ!I A,uNqCdg iD5ku2PBO@_GƧdsbٔ GtϮO(f;Nз*t$#>[QaxUjV؝SusLC.5;cfR߬_7B)kr\H%4+VB{.}וO n0&  #yB}@jk ;j[a}F74y/tVn bn*Jp,&g.D]a1#B#H}kYT)A2gglǪDOJbE,9 俫\K2UZoie\w⛊|Kg~u|h}&rSY5E*!ٱ Z1ÓȱO#!Sk  'b T]47P,k`1B yY(*CC7g.<+rg~WS8Gk+>Cu#YLq-H8fݥ :8D"Jx- lO+Rߑ(rA|M"\ٖ x?>hf)@0ei]-X@ !9vXǾX+|7Q93#9z. ҆`s0%Wjk٧tOr-?ky#!^V~# EsO\:E*f2yӟi帳۶mfg[ A y'lUR3<_{ebM sYGߐ1<nE-WAzn|z/_|cvuC"v:.:S YzޔPḾ2BW#I:Y*2 ttV?Oveм|"*k#'iG0#§X9~?"*͙n}zF#ind+g;t(5T>Q:k[ͦ$wĖKd\%'j*Rm/, n75 ׷Tt𙪪: H+X|ч[+. v/*x.eb_z@~|fGH7w2cSBH4ݮn/?,fWH)} ዜ3D ղnqpI>JKL*`˕3' B\yoB7[G}~^'3LjT_r?nF]biJ;vb^+jPLUOA^Ń C3NXNAVUO6-z?x70'_"/Rl?b)meɷ)T~&_Lj7*6I?TR*R6-r=Fˣo)|xB,ս~Crg8}{ <-TQc iH<]jb!;oSvH!}[q7dbD&Xc"# #ܱhj"L$uc"Lb"n}خwCn(AƏϼ"v$4%U+"W'# g}-"'E&}"o/(dNl "`|jGfz<#.h.Ymp9 zI& #R;#<3#̌8W5 .#."cH@'#,st:KFш$3mVQ!K[e)In} $%l!ɖ} b]H$a#B>{h+$~v\G2$$ )ƃ*ѮIdb#$4V&8iQ+xߢW5E$>%/6{ $q%y0a_G%w)_$jeF*vawc~ߠ %kYT8CUycqp%,VAviHcG]D%P1'~|m9~YDy%U+-/ 8k%o㍀;2 ^^^%温o[tۡ5$?%¬.`:dɞ\&$ޚy_5_A;(& vhl, 'Ϫ&T#$cQG"l/Wk&K¬E@_O '!BP[tSbz'3椺.1-82~ N\-(X?Uф,+sEb0(l]M >шqמq)ߋy$bK %)EV-WG%)F-eV56[_)I\Oy*ӳ%Y;)}BMxՁP)p RA]rػ綜]sJш*S|eA$)_Np}*aq%3^VEZ+ 5#،Ie+$Y'g.E9 %|+%1|Cc +L6)πENY+yB7lPC~+hY0+0~Qc+Md:!+J FMYvG<+~REq.k?+,Pf"d&6Xl f,YR/o(!~,PSwTHs]o,*/#3N -Y( R6N*" 3-JL[{7Hfc]U-ߒrOިl-^9V^ʑq&?.f_.3yO*.yϘՎ6G#jIbHrIG.\0;v*'7,.]f`(=0s.K aڜ$f|.;w|$Y/, I %=/IGM9cZ~@õ/Skt x<@ /rbf= wz//y' `70K"KrB"z}Cj0b' @$,0i@s2!Q0`zD!0`(sW0WQ˩a81PǒدAL1$5_5W2N{X81JVu@8o $'1wC?m]Bf1ӝ^Xk-z1/ic!@ou1ZVpQ=k2K.3iN7Mm2aX6&^A iQ2|pSv4KB-]* 2*aF:'?fkGb2z |i,4/m2_5gqNl" 20펠Ig4:t3< H@Y3DW~xno4drU_!QE4TZ ;y'4F^?FbgNʶz{4g4}>5v9B4𛭠@'d_^>4`{,>>6mWP4ɔf jDCGյ4Vɺ_)zk߁5!F~MIt2H9|!(5*^+Y BiX57;3_ICw_@o59q0\x֘5><2;y]Vb 9(5vl'7$Y/kVg5ðS%@V'5+8*cLŬv$69edp1̱\$ݹN6?.xCPW)w66bR_:׊(/݄ 6Q);v +,nl56a`rM]A>d6v"tzv"6A&M0CQj 7߄ ]e:y#E7(.[ã_" h 7/&5ݰ>N\St7u7W+S^.vv8Sl%1|&5aiV8 do ^&'Wf*m8t[@gE @|/1'8I<81%7yP8I\r=F59 F[vb=$E6 9˾5΅`)9q}ՖƩr9 1h9͡}9ЖD:Q9P!Vɡ4!Y97G$ ^$: PLT?-r-m: gy 0mQ:O;p0 >>²;f %HL/U ; O!+Վ@i;Hv恾̵>$#;wU^EpG{m;П0DBHɿ;ݙғ[9{^WdO{ @xr<#lވ(n<?X=,BŤAj<l3nir.<T? !8hj9<.YaCt# 1J[g w<^4\Z<,L4oOb8ׯ$[`Hz.`>/{ү`Qn WT>P;wSmѰb2kkj>2L@YC6(~>gC]o@>ܮ+xTG?t՟[NP(+\Z?z`3w7)1? 'T"m Qj)?C)c9a;%b? {pyB?i;I 9r)mhk@{rnmbW /T$g+8@~ >!pT7@+t; ʾA&FV=@<Az9E] @Q şoSdG G“=@ fz4qi3V@H*c8AG4E@Dܭ7$%ޟ8Z|@ɭhp^Hk+9((R@в~WGd(qŗfDc8@ |h)4"ۃm@^0 4*}~d٣A=+Q> hrZvAEKe?ZUu>pAVS~wetE?8AqCZ#h|C׉ArcHδ,Mh:PeAsH̀܃F";F"#Ae~F{FR9:u`A I3r rft=BH<+8LrWB=]ꑥ"gBSBU3ՄnkB_+w#nB ѽt-B7m!yUӂahwB%iwL!{QY]B [m4$յ0(CXCvei\lC<+su f&TYCT4M>[o&CeIN4永!1ubCTQdjL;' D*:b4Ծrx}D׫bd]~%D@ieADۄDOŃ{p>/?sD@O:b?U_#2 EKbD`dLêE#9K F.!E:aP+$}2QWgY!EX]R`bQqEXɨ3Dكi;EmrQ1 {f2ƩEx˒_'iEDap@][ޒEYMX``CcґF Ɯyk??#IFAb& miFE$ ݹӝFj~=qzFSZӮ?M'Fݠ\.=!A1 r|Fϥ_f0}<7iF=~O zͯC\G:_чTݦajZ G[ НQ)K9=G_XrIn?P.N/&RH4:J#d#BџJ-.SMFcmJ0& { o@2$jJ5zCwH^H2M{JF/4OdfJn3m@2JvDɓv2$?'ngPJtb;L:6\9JFAwvpJMn {3iˆaJm6Fr`oQ'`EbK %)SzEٕB#}/K$i1v>#MIgiKtUF`E}79Ky@'dK}P?M?h]lgKCO$6ɦ⅜6BK=`X1oLsZ> Ks$uU_c=>Lma +xLY1 dg-L}ze 8ݪcP:L~^D')rn05LµD%˜H)NmMX{HC{%'M]l|V-NJ`gŋKM}9KzXKuxGMB!c{<\`M ^aK'Y벟 KAN4@583v:=PdN<TU8˔jJN_ҏ=&y9s ~|J>>NgX.;/6fN R*[Lvy5}~pOV(cc|HI❨UB5w]OS~SQ mGFBOznd ]PO"{c_?5HOx@{1DeOִShǺd-pP$k'3n"IɀPF vB\ك4BL+\!PM"+M:HEP7+ -~jEPB4{AR^P #:$EQTlR;u7Z0 Q2ͦU9Bn)Q #0~շbt)Q K^㪿Bg3Q)iG5(`c-Q/4\\c j&lfQm(zՌv(N{QyK7|ȹ_LBùQ}н}yma[W%kQ/n I N9 6Q.YG݋2;8l5Z"Q&7e gaPu=Q24EO5_Q%gK SQ|ˑgr'ƚ~/RWe4@bl&nxU&SRDF{6p'FSS\ߒ`EbSS[ɮXSk}7ǎ#eh82g>SyqDySz<S䨐%j LreVSyPa[jSѿϞ/SSJNOrIyg@KT!I[ "c.&TQF&}XT%gF  9rdTu7',ozDbm8B5T.) K&g]UHy".{2EXUV -;,bQxV uhC[-x'Vr9XXZcc9Þ1V‰!~d9zB@tV` gWfdiN=yy2WAT-@%[S1ΐVMAlbt[e+l[*-+{N([3voEX٠\Fy\{XSo\G'"hYЯe\A/Dt\RA̠C@6[jzA\_R GGw#A&\\*`:Oï3`\^JkjŴ)H]!1$?pm0:c]DdM{30$)9]UblI}>]Yg|6/9_V{:][jc-L75|c,G]Ԫx!iѻ&W]򓰕!,O] k];ǗH]?ʋu*ll",,]^v796n^GhC1p;%^Na ]=Q *OcI0^]%ى6HՆ^^@>V>Pl%]2Y^<bNNή>M _ "=:';(j^ ;_Eؽ]mJ_Mg0B,>Nܛ_'njI[D;J\|R_w{.[_ e,G;4_1ԕ{-R`_Kt6 j GM`* E nOd\`Nsb#-WYa5"<`oh4T `oi|%?%r?1a•Xk5h1a:u:CXR44D"faѬsOlTkKb- Q5V-~RbQ2їU4ظwM bXl 1.I4bY"2Lnx1jNCbJM#GbvA'W)qj$@5bȫ2[Rbڒ8υ .tcHd :Lp( c#FmV;pF]ac)<*T@\41wgc<kLW^DT$5cm`̿:u9D2c>Ed.h#dS\1|M#MXHd. ^z}tı6+dC 9f4 NƺP?dP4Є=DGI9al dV([d֤>sݔw{|-eeNIXx˲Wq6keG1!s ˎ@f EwlZ r.!/f߻P?gT\/f!4^2PYMtf.Z:HaqkxحFFf}~\򘈠\׽ѫf@JfÔ;-x/fRlQ^rU& fN?B:YŽg 6c5,rJu)\_W9g!A?$߿́+@F!gka{]?={Btiv ĪWV0(jɲNWD>#m2JllO?[=9m}"/ 7btmpf!QĻmvbEҒs+"xSn1 j t'Ӹ`D*On@89pZ^ȋnFBR)ί5v/nڪA⡯rpǹn1D\C Xn=5eUj&IsCnSi 40{t'Wn=wڱSo .B4g 9+ xIQJob7w'?:T[4n\Dp{\ crҘEp iGrn p9a νh%3~9pϞ#V4GV꘴purԖ^MR!oΕcp|$- Xp.p(\/=.j1qA؛F-.qkʼn:YuNq//ό(4 T;N\qՆBd`٨9xqHrtefX(qձʽ&ç~藰 qʘ)QqLe ErHJLz9jVUЉɶ,rLG9 e Ǣe;$r^!^17f-Dܸrtǭ^j٦Iwڲ_drjqATz^prE6rSn;VGsA[<؃ Asī>ܓ=J˘ǞA"sv D{r1)sXӍսgsJ =P]tY9sg ²[nyt%Ɛ7&Lب;u@5 t64Cϼ;g{mc::nt:PH, S0Y<it]Kcϖ>g-t?ɮM,YS6w]XuWUN` vu/Ta3=S0\u^U,Br"E޾c#mu>FeMü46pc]"*muɍ J, v]u390^=)o:)[tGPuc"=6Ru^t} YAu?dE#YNv"I<·"UlXU vNUQ=Nfvb kJm9yW{V[.s:v|3=p5h+,vɘbyT22<]vo:ɆoR~f@vYb됫Rlk=Pv;4cnX޵ wc ^.%O9Kxwu{N܅K(eLw~ۀ:m'">wN;^Ւ}ef%wн- ^9R\֜ lw21tϞhgWٿif1Iw.@})xT$xLiq)7 ~㷅> x!t6diEǴ-x!տ>twp;wРx:n"ԅT[J|2Qx_#VJ\OxruOyU{ʽw3`Cy!J ' W}ȍAy='>NTwt`yR}#Y!syCg.R'7:=-z!L9HSzo4z\S{ kwv-z".ֿ{3]Ygz#A𚉩ǩӐ0wҩXz,<d1&ӌK&MMxz7iFBfVz8Og[$ @z%zFsx^ŋ T5z|3`Ҋ,wJ܀pzCI:Rq -{UFsM ~y!6r{!-:0fDy|cD{5הfFiM'1gR{8ĄȨ1:)?3{>`=!UCǻM>{\maaR{" "J|s"G~ WJ|S)?`n$ij|Tveޭ5M#5j|$4V WSʖ |![jH@taYaw|~{.T07̢a$}x d=N}]]o4]+˫}{K^$Eں:ps~0۫Ha rAii~08YynSlw~?rA 6{= AD~JN@`c_sg c~^,=7 َ0*F䦏l~g>݇_'4~jG?k,ZΥ(r~価Ep뢿@Pp }!P+Ry0HAk!Tb]%q" fƬ!qӦ9]AV5`g:C,4/8]li">}Wt݊pž|T:Ύ_&0|̿ pz(tV2jf"hwKD:fDuNƺ]_'C;̈'c^ @0E۸d%h: >( |"9Н v2+l*(o~䥃"i <>?N1z+X\ܹ0â˔Ls` BԳlB.?v@>d!٫k3".N z%{ݫ0R|iƚ/3ʓdHEO%o1ȍф gbW$~L$6DZ\At". SǏH6Gt:A'}gT" ܱGˊ%YQ>:wd9-$N oSbBuq~u0Azr\_6D11Pae_)H^UK-.^Bꞵb:p-oΰ*|Jtbˬ}Xtԏݐ&C[sbg+1 ᯓIGqI΋> ^g> 9?׋^7e7BNaŦV>i u$I}HzgӾo$%#[:&7Ro#LG鮦Dϗc 9񇚃9xwGz؇/ w!Q[{\P!PRBVD721Q=pt6R4=|\E'_goi|1dؑ.}+ zÈd'HņnQӍD VYk`5ҍ`6紦sǫŎEYDeM?%ެ/!g:WqJ=b'{YTbJnT$R:sc$\,rSŞeKmcG@{̺׈lԫK,2>S ѕoW6"; <˷03Ϗ=g3.qD^|m{*DflIE:w®M3o'ubbjAi4͹wfzA.hB֟1ّ $~1(rZ9!@`mu);QLER=* +fbZ]]oƲÙACt\ B8; HURQBqtH^ M2Y?zi5u#fڌO4C&qĮ1e[gS)䐙&N9# jtQ}xc^Rx0'jKIn,ed$x>vQ 8ҏ.,(&nRy )mQƯNFZv#S4~u!5r0tX[JsZy <'[s,gI$0eDz\ b Dn4ĢQ?ص?YKI~yo_Дea'[ɿ̊ ƋƜ]L\ֳU)b/24.ہ.(NI{RhluzlcQqDA[;d.L(-w{!Bԣ2.v1d:<8ܸ W]ń67`Ǘ%GgoYX.6r+.m!L~p+VNs3["P{fFėGʬ:KCD!嗇AvNk)qΗe3i*ryµUznb#fi|sezXqh9O b8[Do`T(nTviҤ ~ 񯗜eHr \?{jvXHy*ݾwI >D UvV(F %LBޯƶKmJ Y#9Cיapʌ=W Wh7Tt]e26:'aK6 wQyԝNZ?8Tb2Ȼ,.|x [>4a²uməhdrEa,$뚨qxɜ|7XXKѪގ^ah~Ǫ822!6[W9DT2oAzlөQR U~(?/@J1IuT ݌tnQ }3iu{%+wu۬ m:3&}-YhK>S +=/c70(}‡jQQ;Ҭ=d9rj+s ޅXDNnQ1lᖽq.Fd6!jḌyzN%kp⋆\>h3`)9mMVa"Z[_OzWJ]:|Z+\ۏ i9D?Ҟ u`qWk`K㷞%. 4 M~,}:A Tc9ܼ] ~d"Yԏ``nKDX6/uK#u}4ٱ삞jc蜯ݍ&+i4> SL,Eׂ\:;=^j`E}Oo'矴 ùh%0bߠ~r(0\KfzS}MV:xh ڍm+EV3Ftr3U dRf*\nJ/y>M؟ɕĎdcv<Eb"in&6ӎRu 1M#0%؟ywSS-ET w0BZQcm) 40E +wV&9]"eTҡ[N0Rbѳԗ n@XX+O&M2v e㠪s\ p׵(,?+A@An71#1 R n; >q㡹I ˇu~RŧJ#h~|tQ:XߴNL]Dr.b$Ģe쀦tX7uQۢnEQ!҆k> q/,`0"pǼТ‘19rX Ha7duV&ń"H֤mi=N: DX+YW"IpB+Z>o3/xeѣw?(O[ʢYB^Ps%+l}ȸ0@Ga=ˁ ;\cڥ QGOq0~Plh<.tYý t.M䋁;?߲X/Qѥ D>4 SxbX&"t~_Rv` ?u`lm0dsX)HzPbhX6E㕵ݳKʧ>rò6p¸AP( ojx< LS R\tseux'Z2;d$INн,鉰H ^7#tk%\F *G$k$E\LǶ{>sNI.y7G;y(6eQd먙k+=uFxύS;sT(@QQ7L 5OBts>ĩ 8 "eq(^loBʙ=my0nu)/]+'K1(wY* JP*Eª"h*5U@.(۶(ye$̹:CS*q.6Q z4ڸ}!vK =fe'|֭~("7HJqNjRe{^reH)t᳏T5˫)6F-Oqpj߶]SA8 JC4c/2EЪB+}s& 'mѐeh{O`K' 3ƈWSao>_+Ci'=>Y,c8fi!oҬuϵG·R LJ=7o iVror\zx9>( 2W WB^"/"ѷ/ 2N1Mԗ@ M~k"Cjvi݈k?Q9RST:scڭzٮ;,rY®WhqU!Ĵ0Wt|`JWiN-9]XH΅ϡ𮡵C,Z>m.McP ǹ؞Kð̬[\UkSFY܋ ֡8u}"67.gĢu &ؔm lo?#f٠I+V q%(+%8#`,0+R5+4svAS ʓ#s|yNo͞iԛ+G_1/(I%7Dy ,0/ߘI*9F*Lńjwp_oNO6]:Ov^b4_dDpQ >_-g)VfYH7 UWݾ{RͰKMId06 Ԣ}88GJ Е+}dWE7hj;t3KuBK_eI@0܇3vܵSQ_@rL%-4)ވA6/-ճ;!$]z_f0gQC+GBj#Jq-$Ub6 f"C/@G`&|Ŀf3n']?bֈ ˨:`! em:֪MF)1G|%}= !K~*c}=rH 厚0@A+}^g#J>9H t}4!3B&߹ddB2V@5U`ˈlZs3N9c&,M}MOF`JnL0_p; $xyFMn/ط8mQκyxBxwd>ňBnzADe*aeU@Tyx8‡ßDKC] XOp`·؅Ӑh߿Abx\>gSbh8\mSs?1cC$b4A@q[HϗHģ_ ުIv桲1LH_ĶKf=jg'ڣčZ38@,K7|BLPuL$}UL[^S%xWŦDŝ D!~iԿ\GDlŠ 6՝J헀b0bʣ7)ܺ`jaWiL\#W e1T"^` JҾ?9v(g+GI&(M k :?,7Ph/Iz2ߚ9`qI]|BY7-*/#]PUʒhݼ73so.ҪͼɑKԸGQC3^:ƚwrDv3C^s\)Ƣˏ9(Fr&+}Ƽ,I..h wW*e9^ex7LzOS;!]CǓ'iC>y9bbǵ&2WL^@160.}AK "ɋ~ r-RȖ[q&gi(w`Ȯ ˆK.'S{3ȳ`$2Q^ȷ#M&׷[ȼ02ӀWRsP˫]+>#c'"]ɦ6gǘKlXo ɊbI=ɜ!b|Btɴ&X, &$id_{;ՉJC]^s_du Ѵ,J{VDNؠVc^8068.˲Cf[)*eN UkU8L}pc-G%'Fp9Of@7pbtW8ˢ ƚxjʧ`s˥/GCt+l)K ˼D.e&G 2]yh\hX&Up[7=Kk,U5K6Z/iKn 6I'j̣:@NŪůsḤ7'D< EJ^0̷NJ3>VFA:d3UЪ?ԏeqo^?/߼-C c#eFK@UI\fĺ-+c'64Rztꚼ~(U6G>5m[1\ T~@xaW66 1?hJD50\-R/bn057f΀_ dn#_cV/ɄR.JZ| Wbը3z Gt[GyJ<4~ܚ ~쇅h+P[&UMJvsWkBxwh k*VD@Je+ZaK?kGkN%˰3a_k,D `B9#Rq$TRб!N|̓f'ZGEN:fpD*xW҄?'v֠(]'>P!n-P-DFgQ_+^ PNN|̝aё),hu9 'Ѡ)zoMj4k4Z11=H L@Iq ,(7HZd?8x 8.E-Y eF#НRPPˁmg`@!E^\ hT~xqya*N2~im qD.$SgP wDW!'9?>jiڋ#l=xJKI=Y 49naI.2vK)N`b);7_UFE>M=0?P צ'NQ\c󜑭;nO&L]s^i6@/z Bvت@R]$̓Rk!ldi1$wf^grUeb%;5By Ik5 Xc -yv9tlg -GBi_zvFX2V\M5*G䀵mea'(.> o8Ё[ N+ P[$*Iɰ3`T* )U5)_hl,ƚ-Gdu5;BWr&FyE^}TsQ'dxĊq傲)U - jFtX/ x _t圄uǑ~|הLg-d==2RnJ}_0> 83{$+Ňl y<`*jj_P(e@^m- /90o{2eƵ-Ov>AebtU?GYwV"9Mԡ=T>C ,@!kY|]_m<ȀbacJr^LsoIJ"~ӸR Ava=Xd?]m] Sx% p&;dJigڔOJA(MWyh=Dtzgizqӆי7pT^m9 hGP~xx>/YFN}'@I0Ѡ) "S׭o鉌ZZڱbw-WHN0ȑg?[>Z/ vŲ.@b;?F{lHޭFH$L]H6$2쟃tA:Ru( Hf ]B+= Pq5j˃wt!md˭b舋 CسC0?4!ҽ>`Cfyjs8~PןuVW<3貔i>8%P:mB[Í,PWMBL)es4 +(ք<;9nN&7k,2q*$-& UwV)m>/ٚiޘ/^oS\tDiA̺6Iۅ\0>9!|<8Lp[#;Ԝ`^o Rpy{poP/:nz>XWEnKϔ vhώe>-t#`Ռ;*k\ޜ]K3gԀ?)dYz*:jBȶ:H?Kw:W/†PQ2̳%i,ml"~o&b(\ Y6an딽N(u6А2Zo qd# /Ðg+x/a]Cx1/˜6!5sGǩ^؄ kzƔͅ4Tmz[!Ofvdnk~pKP&#j}-ى*` >鳩$L 0W Ogy@i7y)*#E&az*{ST3s`!/q%ⱱ ~OzPH7(bz;MBS`FBc*S݅xGy &a鎹As6ߵa~X_8;C{@iϩJ]ƌzћ5JzA]@6g`#Ao{5;Hl++4W 5ܘYReBT.12!綟Ltf9,l\|aW$0r#yw-$/-hysK[(&^b!X_ɨGw-m9QzHps03MJ@"#_HfD@H12 KY715dݗJ(4.άiyXO?'1lG8^d գ]/V5+}}FuYA8iQuuf9Cbr;y&q&6x_G o[[)ڱ #c̚\)<|tKY(aY(NeFkosxv/> 2"pDGR͹խS֘#$5 ɭh213Ҁvkf* WezM[nJ# 0/vIDo1FhGN}P%& 'R.i6#Cw7Cb,b z78H>* n"qP4^opv'ApE-iG-r)xtHf/ZŧEy7SzO>= "&GЇqExwd]<1,zJlۜ"h F"m{\B'R46omzL 7ѐKRW!aݑ<M>IVoa/wըM}#f\EwEK~'8|@696hTE)k &&T8Xu! '>-\?R=}88ݐݥG֎]tVo؉m0\Wrx'^xapu%"rQv}͓r[Rј?ͽƹB BcdJH\~H{1c˔P|'cK h͍>ұ2٫r#j>ufLh,ƙh؇"w>1Yu @,xi=,2e+K媀X8F٭yٽ]VXbTݲjfƝvYK{ͳc=:"5L9k8ւ 9/ ZŚ0krZCgV T[pP^[=>aqFZk M7G֕؟V8ujFCג/ D5.[ٷ7u @ibQ 9n%l QGZZ_UpR0XR5֟6٨0[<8=s\ou" J5"J5iD9i .2 %^γsfVG98Qpw1r5tזL դ~ð/ ٺO_n ' Md[LWwAk hݦ]Woحlu00^*Oșk#] _9I䩉00qA}!cȼF{84n˄:s'J4opl[5:h27p!qMBeuPpyɦ2\ˁϲAQB0~.VTiȻ7 w*&h-&DD)`z&F LM̃Oiq4W #O(EF+h7#]Q÷)%.=(qN5]aRJe|Z_8XC7D _z.fp\t` E꧝%sX5W̰ 3Ӵ;Clz٭gm.i2NzvӁ [ j͞z3SU'LΜX s+~pP|",< -S>{oUpPIG5so:{~H"W,.AQc\xWJX43/ 77~"qj0o%q>V̬gM5rnlQdrޤd'.#=;h/EYSy8ɟd'-I+(YkOWfwZ 37YD % 0;5ue)I:aD3l Ob萻ZC x;#KWd7o4{',_t2^>cRnMkgP䂝bg6f8 i턏~6IF; sFq>GڀU1fY LܟyϬƶm;m/S 4d߻<04*IF: >=Umx#['KuDL%=H#ۥ58@uEPx(dB=pÔk2`!#FtCْTĂA)D$vVNǝ;|%NmAVTj lW@ ^G@lqˀ,\\B"%\j~DL0#B]薧-$Cʟt |@3ZǪMw0ykV+ ˂8 vN?WY#D(?qU( M\aF욚ekFT7Ƒ[(SnN9cEq\GzQ =Pӯ1l#]n>X+wL➦4oSzxvV ? |ݔa*qzGQȄ<PZix/$v4hQY B:$ +Tp(H"L?lo} ~N up.&HXn7cz)~'DYg#TG:jPmW%&4i-(yE|LThDγRX Dƚf^w&{=8f_F?U*NEK2-]$ayo6۟W3 =j7nX 5wDp·>Yv\?4Q&ܷS(Xoe`j|78Ut a<g]ÚӄEck5Q 8٨CY2͉+LP$':#h@g-UEC6 {HbLvXCNt=rMj/\ׂBηZyuK ?ڡ7S3&^zRg±'PRhGIT:hY*8%;p!>[@z3z JZcj{IFB'i2Hk6E}fRJSP:Hs#GXd,%!DS[SyY-&Ý~ og$LT?UK\>Թ(fP;!!tD4`W?$2'n/.(Vߔ =1Yj4WK9rYo.E]LsQ8R(<7&\Oh}j(kXÑ>` !I6~=`fj@ϰ-/[g.-rUQ}ԈҘ$rxhc 5il製D?T6R/P䢢#3[-RVNډ#\2mycfiHܣrşJX+yݿM]Ya`=څWIG\y6+Q}=m7>ŕ k;A_wĉYx$b>~3=C뷝Am&ySՂ·P|Flqokft'%.KZ|0Əp`}LBB3hˇkZsx#u_EDDϰސ:b2ȁe|x@va?B}Ag;k-Mv@;zK:jXN\cl<*%;dД/m & QlͫbTV F[Z旂^9薴[˻-<a\>ڼ-r.,j˴wgSQ.W-GJʸKċ g '绕+5dv-dCtON/p20<Y8X.Q :a:9bGV'UBlM<UP^#T). tČTOyv m68U$~֟= X;94ʩ?v1|Ym43!k1wJ搆ylh ":-P}*.NK>x`O-7)`.l>hD F4@o6ke“vP1dOJߍfl?B{up>iKvuN8 zB4nLacdpnAUɹvl[=&ΓI~ j%$ѤΫ˳3T:M-7M*Uv?U#DEny_OS_l]hTCdu;u>Cy",/CbU?KZLtnZ[<Cwi*ho gGx!t&]*HAՏjH k%.J[ ,nԇ .X f&=3X +?ec8Hi'6F]Ǭ`A> S!F֐䛋;W GyLsN%{r[>h`%|zlw\7)Y;SrOUar/O]s;LD*+&ReU79Q]/H aZI tY3#ч²4 f} -=-NO|iN݃KKӂ9A#zO\6˖YPy4K{SWP_<Ψ;&v %VwH6n L_J*Xni Q Bbٰ ccu@8KMf=Pc'W)uYgދf "N:l|ʵʾztS'XK!҈?qۉ,"FM*;o'绕" Kt>~BS3Fl\rWj&J+vද)KzW4wגyc *ڢU]PiV< bu-Wx@ GO F??> rݙW6WfB{9Zݽ38Ⓛ_Z 2MJ; = 8aԠ>kؔP#.]*)߽ NoϽJJ5 et|y3V"Z\8 MF7@Q'ȪZhy,2a0~=4Dz'o]z gQA3 .w1{K+yB-im %"TB+!Mal6|*a{jdJ|Zx{xׄAY( IX W4e`<'5IlQ)|hxo8-,$lB\17<ӎ*冭>Ub+ϥҥ4pVYG)b$sa6׀ zX 9HrãBxJ f2e޴ Mj h>j^gQd8q$@9(=p*w|d KG<|;Ԟ:rP"S EImClNom*h?҄. X%_$!BZ^U5w+ˎ(ALWo}I#k2hOM^G8 tPuԅXf\D+"gc5_A>c.N1-;j7M㳔'aCw`7שRH2zS6;@z_mKRWL]џ'@#Q!*~*Bsw-c4s&nns\2 D{if^s'F#~'$t!i@Z*z0OjR{v')s Ϲ[lLIE-b{:mME:#ڴ/=mch@Q9 :Gv˴>(J{>k] =C}4ϿcTo%:Qkvhx;ղ?r9I7!\+"HCfY1}NxFZ8 e}q5h*$/!;a3n.zH`UI;5&.oE7#$]:&:nQwʵL!U`i~WFJrQد=Hf̦b )-t b'O;%?c=n9Bh..;.u.6:P$أ \k3"s=x7*=?c9EW5с!Z! xS0srkڛwhqD ~r*oP7eos4jb^Y5u+iDk2{մn6EѬ3 N;VhDMv8lֵ4'v *UAk&B8=3VHBfLxb>V3ߜ0_~'Gd! vZ?[*nHq$$8 FhMǴTw+7BI)j3Q4+/][ vA#;*\;A.gx=҆ 7\6DLlUdr3bywOED5{{'Y@֙6Z s״]Q>܆ *Y/6W&[#C %3(#qCp?ӬkZV+&^|r#syOPNOX{a\Bx-> 7BI.D#rH !F$jV0 %E3{:=tzw?ozA!f"l4ZH- (Wd!B3 Qxe<uX7Ri n:}˚ʈr%3 ">By+8:vV*p~Phݰ@6%/c7D"xx< F%PBζ؃F͸i1$Z3%| W]?2Y[L6q<KUwaT4'VWwZx)*XP|;\2b f"G8=?2V|pO!NacҰGk?y&o'wuZWI'bS=Axi%0"x(f4+:t1@7epYs3r/"{ &ҀKu:ۚe;"_f0;EYw<UxU%?Cu;?a, *" *6ļ0?8M%Ƌ;lD!:YfnlR/cs p+6AZ*[b*##(6x4qJVyF"K m8wyMJu^1.hhG5A:82t^sNK[+J<k5 a>4id7,P 9]΍-nC|le/7=[9O^f+J͝*sASb,#s<]cq+hDmyLb1t~&W6 Eqjy^F 1d>3V>5nP [{#G)D~ҶG#bLrɦ4Q֦!t%6Jl):'|{3.TJs{;/ ?`R62$^e#~zkOntG$%5"L^IՉ@qfy%s<5,/|)'׶lr:&f?,m}\YWv3a|GwHjp-@*Ö1S4:T[ڒ%90̸)V6Mܩ!\8O#U?c"1r$RL++ ~2\@d8ԖKtZfx4WX!m qak Əh![t\y1 (p&>; B.46}T(},4 4+K 'Vѿ_kC氍]*[No#5Qf shadowsocks/.git/objects/pack/pack-587e5243815e12ffef327ab5929a208c162ace9d.pack0000444000175000017500000044072112774125157025003 0ustar shellshellPACKxMj0@N1hѿ4PBnb`I{vu';3̑`eH XB.drh)'qԐI#z_/JDxu=0@ާiJq2cJQJI"ن#5NR6od(z*V&16qnBfHl$ 'ixm\"?p.mKk_l ,q_]k]VrmspV,_vumqe`)ak?QZGxuj0 `ucJā2d[iM8$X~ :O3Pﰯd[tZmˍFO[1CÆY{I5vx,H'e-&cZ3!-eR|T-JT,1DNe),Sps.޼w2| {p:[!B)3ɇ%Ƶ|y,7Agxu;n E{V1}'.@0`0.8]HGN9k?y(!fYeF<o=g ;QcA2:ESԊ3slCׁ^kƴ?| bRVxsvۜƠi|vjZNOƾZA0|hc"eCQ8zAqThxuA }MBoAzzq&31ut GN6Z-:΂+o&fd(9FV,c|\~Jk1J"" _[Rppj=oKlwH)YYGxAn0 z㊖(J@Q JSvח>,fUUHmNgdɉ('by4 Eﳤ0>*欬b{,|`<"??0k(PpC !Jldk_k"GWy殬;>z6Œl5ܴ4MM9պ!@d ݬ2C x0 D|Ev$ibKW\)0ddf:ݓ]=Tmُ$N2IDq>{.eBkJD }R!d]s:Ʌ*[ #hi-KDƗxJ0{`aͶIa $niHzQ/ ZV#jMX#oL#/8 IKl*s#neK%usLzT~84^jmL^)Em\.s#~?xp. *33: rKC`[2\_u)wbWQb_ sVιVeKqq _hŰ:>ӂxϻj1~b@eLF#{jeZ}D*.qFh`Qω=Zg R0FK˓t1.!j1s>b̅ш *g9Cv<~qUZOn 4Y|2cțRHeȴy.@{6 z?ߎ}1wUxn0 w}hS/ mHпo7*"dTfTɋ.&-xsr}[\>/C-/iVT("@{Ug\nnW9 [bc:s7_g桰}]˘Ƣy9Z{z_fvSxJ0}AMl C&ۋ 1ô*>YGÃSSo(xkF "Y銯5QIw'y57ϑfYcErMU8` G Ix&!0ul =N馥5'޽K c]!{;yZۧb(%zΥ-yKRE0nxA0 yE>J\;q%Jj;( ęf73&:VkbBLpD!Wi~ $`bV,+>]@KV,v)Af@!cݖ+^wyXjAƑx1n!{^ +EQ8Ap3HCT%K/H4(`#&N YTM#WtAJT(9IyknsDHuOo x FDs}Sy|uR =zocB=ϭԇV<F4x= @@>^3; " <;Ѡd-֖W>gc؃͙{!HkP{fEƪ} \ .kiUӢ^Vxxi*;jEPWP79suSז֊FxKJD19EvN͐ɀ^7kUT)b=悕tbT*w(p.AڦfE'FR(( rN$3j+I+^@scV" |vȱ޿nm4^'b @cǾs7o274g{#' FYȔx˱ ᝧ`71.1F\|P5-?꜒DX.́@ 9eT bc)#x9Uz)tHNNk Xic:&>Ͳ_/w?q8\˖@n'xt_*CxA b&--QZCiGgɴ#(vV;աN(dd{e]":S"!&L :iP<}pX8?Rt3tRÖZ3)o#s` ]/@Iӟx˱j1 O-C>[.AI#.N oߎ;cSLg 5D6Q,ŒF-(R}f_$cZJDBX?u}_^wn ci~!)FDնXUsS-O}ҒOBx˱ ᝧ`71Ә8wҚ޺9;UDJ$@P('L(>[z*sӀI,sf( cMnmYuy*OJXyv`1jujM䊘>nEşx0 |J UU1Em3عt.RcY] 3g "lˢB]ʃE\h;-:PeӨ~1UW^l.6 &Ds:ʟQi  f'KxM 0@}N1{ADܺ ɤM+i,x{ŕk3DT 8 %1){<$ʈ6;$*QJɤe8蘣uHG2'/ٯK^+VOƊ}OK=``'uEl W3`ΰtxPvxMJ19Evo!Joݝμyd@o\KQ*9Dt-'f],,(U-E0[u!6%6sU2Ym$qɁN{HB){*4U%#eACwOx];'6>B4N?@Pgۜϻz_q.ms׵}}}䦾_^Qx;nC!w :~Y@v1y/XJn7RJ+ F!JF.HrXOMZ18KW9/‘KN#u:h(S|Nfs9 )%JLs2mu9JtmK'Yp7fs?wSOz,bm(vhXAϽ {Rx˱ ᝧ\@b/p6Jk(}{/[:>RdE{$Ax *os}:U0DM$EtIHw ѣV?&}9ɍk>A3`|`@T1L=K06<Z儵k m2?ZJ x90ާp<^ W8A)r{耴)S$Dζru$*kQ X"ޱcғNUeN2Sr>caoS1":t>ȃbO} Č? xA0@}OѽShCܸ 3eu#}uA]]΀.,^pAު72Wݦ @`t֠"ǟg GEz_Vv})2sߨu,4i)ǹ1d12*fA}\"= x=0 @=^CbRUu 8/PA:prmb :R&Cbĩ9 t>TFCM2IEU(ivyubӸU^ǢcLa0۵Ԕ xA 0{^Pi6ـ=zdUJ~EDS Sn pdd:޼T52 ٱiY%7B}^c4mǡj\hàw@eUlڟΗ)Y}>l xK =`obU *mhܾ,UL2 /QB\AV:$d2SYADg=X4G?:C uN[J0'?g?:˴e B4x1n0 @ݧЖhAˤ%E E:ic!o]?,D=WѨsr Rf l!TcFŁ9JΚbTϫ0KqHc-$Hj`SI:׌qG-|ڶ_CV,o0"EF/ߺznÇBi5ܤ?]NOT xA ;nb $eYjUl^u髈X 1#g +9f `B!#!)dP raUXhyՏЗ&q{5יvyt!1@M˟M蹓3AS xA @=& I* V(]xzno9c,"c.CD)7&O7H%ͱ#-BW xk{?s33?eUxKn }1SUU/<{V V۷e4f3>gZM,< 2o]nMNc)s)&Ϥ|v:G (K=dmnGkƹ0Do|ozZٲNY>7u!ԼLNT[UQM_Tv_!xA 0yEl]6IhZIۣg300Z2)WWP FG ռ:,HA( cyJ*)DFutg&<]C'mCMWMDkx 0Edw@?)3D4{t\8No2A ``mtNi0.!64Y{]̑tt lm!\T{m}l+V*NSZEؠt%ľ֩wSef]&cqﹳ/PGxj09PI+!GA]WԲc=LߘQ@m9RxT4Y!˯oL< a>erHćNwmD| ])` [ zCUu_?{xe$]zID1/Uu0 R QM|V"b:kwZ(Y 4 b+^s>>Rox}yPgS˥hUZ30VDR#`VlVl^n(Vp *0が"( Zmkp;-u1֝<}\XBzo C%Fl:I[nW~@-GT wWWpdiە| 4Q> ̑v@ɼYgUc 4$gLdԚ`Z`Zϧ 'T{F,18XPJV5sS^1ɁP4 _$Ko:SJlߡK{tbXB/y|nµ%E0!PRxkm&߾n*ryc mh MRW@Pq*{9%j}[K&f+*7,9k,)_QcHTb3Ƞ:D x:|W- x[z 9m2,LzqƧnlZTJcb3J06SDik.rb!uTi|{FxKMքK'fQ;rY4!QQ^|:M$iX:%@PRuͲ Cڢ[:Nl ┧:lwN|Na CKJ0lGZ˨=نdzg_Ҽ98h#ōqBLu Mx -jn鉞;?\xr!Vޱ^|73k dz\M {)$@oi 16sQR'i"`1+FoX|?WwHo|,8yT9峀+j-+&`s4qVjHe֚ -Îr{2k@ \+Q$6cޤWEvn;bOF HsU@%Ipq: (;1 kRr[әa23+u%N8u@;pj,wTN >v ̿;ǡ΅7ΨyJRSQ2Qt#-cYd_cV>uD/\xD -ietf.json_F~5HX)QabH度`jT݇~_&~! x340031QK,L/JeȑN|-0NĈf[ J2*ssOxfAYw[ UpdݳWtƿ>'!L_HSh^n C>M0UVmEL:P.٩Ei9 NNU}a OҶ}נ|<]]f̳tt.a1P%~n!zy Mwk}=jrPeA. Gfa SF)KU~ߟUQQq ÿr*L2:{E1=&@`%E WfUgc1ũ%z ך W{o\3n@[!g$rֻ]\|4.DUIjqI1C䌅Wli_șE~y %9 JlXϲȚw{ !x340031Q,+dc;@q;^;>seŕy)y e.AE;<"|- hcl uYW)RI9,_yao%K LLJ Rs+ *أW&/"z-S+JSZ'n 9Ϻ=*^w6jxC;q;:q*Yjҵ100644 udprelay.pyA]`Ii;JN5^/ xUA 0E9\ 4JBtPSC2c%W]mĦsms&>HPLbF)YG*z@*<İ$)q8+4gWꦏt+_Fab >+x2e:ƤS 0UD%f&& %E9z Q+Qyge꩕Pe)e-eug]yS@j'Q*ҡ x340031QK,L/JeȑN|-0NĈf[ J2*ssOxfAYw[ UpdݳWtƿ>'!L_HSh^n C>M0UVmEL:P.٩Ei9 NNU}a OҶ}נ|<]]f̳tt.a1P%~n!zy Mwk}=jrPeA. Gfa SF)KU~ߟUQQq ÿr*L2:{E1=&@`%E WfUgc1ũ%z ך W{o\3n@[!g$ܢŲۚ;Ry}7DUIjqI1C䌅Wli_șE~y %9 JlXϲȚw{ h`VxkdidٰQdAmԛ]]nߺZ;䃌\ OxC;Td9O'!L_HSh^n C>M0UVmEL:P.٩Ei9 fwWӔ #Ƌ|<]]f̳tt.a1P%~n!zy Mwk}=jrPeA. Gfa SF)KU~ߟUQQq ÿr*L2:{E1=&@`%E WfUgc1ũ%z ך W{o\3n@[!g$ܢŲۚ;Ry}7DUIjqI1C䌅Wli_șE~y %9 JlXϲȚw{ "ʊ!x340031Q,+dc;@q;^;>seŕy)y e.AE;<"|- hcl Q1~W&_uv/<xL100755 install.shEŖNCITs 100644 socks.confw/у˘ŅȉwJ!Դx1n0 Ewl& S{ KƖ":AOQ"uxAk(/pz,= xJ, Ȃ1f .TQ\ p(HY)&Ys&dBOc!\f}rAQ]aQCXDCSd.R$s.}X U_۬#x340031Q,+dc;@q;^;>seŕy)y e XɰM oR*K)z'235ȜWef/xgb E% W?9;EI ,X3T$BM)kdXr~^F3?J6*J+t=M)v"+>,5$'?bљVJ9wZ5F T!'?91)t;ڒwlPrJ3RA4}uS|UZRE_ T*̚+S~QdSD<1 7̈9>]^ta箩PA ~rOBBY½ׁb8#5 OwH$qƩw US\PX rB` ⮜X! UVPj{`*NrWo[ux^.Ĕ=;8{H ߝY;d0eIrRf9u2οe100644 udprelay.pykgO!Io[pu,x340031QK,L/JeȑN|-0NĈf[ J2*ssOxfAYw[ UpdݳWtƿ>'!L_HSh^n C>M0UVmEL:P>ή~ \3ÊMYxX반u_G?O7<͞XM9~^vt WG_Wu %-fUX/q7W/5Udt ̋"c2{L @!%5)313G≵\9އNu=7ٟck[1ũ%z ϖm(k3y$ C3Sˋ󓳋nn^-9fC۷ JRKbd%ygNC5:!%9 JlXϲȚw{ jܠ!x340031Q,+dc;@q;^;>seŕy)y eG̼c5nà <˽ʒss@xOqS&M}SPEy`@vޢӼ)NrŇTUl5:cV5Nuՙ*''8.zg|`ӟW[0w-}jVNQi|rbrF*H㗚ۺnJwOrS@11|JYe/< 8 QK<;f YB*H;둆ڒF)Owy?G9nŷ@䂢ԜJ}J\My#fꌤ;TYi Bپ/Y\>=y_h3 k;' <`ax7.Ĕ=;8{H ߝ?=PiA6) FxYBZeSxm 0 {ɵJ+l}֌ 2V/w+ LNy.(ɃhZo$DpMӶE˭il >YBw='MWSDq 0 l30!տzy\R<_<8u@Π!x340031Q,+dc;@q;^;>seŕy)y eG̼c5nà <˽ʒss@Z}g_ )Slb E% W?9;EI ,X3T$BM=+(g|˲m3*TUl5:cV5Nuՙ*''8.zg|`ӟW[0w-}jVNQi|rbrF*H㗚ۺnJwOrS@11|JYe/< 8 QK<;f YB*H;! \nw[䂢ԜJ}>ˇ_jY"oߨ^&qm)ѵPe)e:E29cbW{d Kx2eBܫOY Eb~au"!(}?4iJ\ήO2Ν|Js5} LLJ Rs+ *?Ug>Ȅ*+MA(S={Zjܰ]> VEx2eg;V2ly?=T LLss *މ̌q * 2UqYY5M,6)kdXr~^F3?J6bJ>UݐX.jhqFjNL OwH$qƩw US\PX RXk+,fÆ+'VkB j~m"XSۖ>_\x2eUF6FfKZ&=j/--x4_;Q}G\!or1QJs\ )] N<pBx2eUF/9VQRiXaKFu mnxC; 8i100644 udprelay.pyoAHC̊%kXQxԹ"؄>o(? {x5g PF|~C* O(:Թ"؄>o(?UCxD8Xױ|b(3";100644 shell.py@_cӏ.zt#GN%x2eFIegؘ/;"6'W\ !x340031Q,+dc;@q;^;>seŕy)y eG̼c5nà <˽ʒss@n{[ȥ>?9/?b~21ʂ|Xם"s{ʤI }PSRSM3{eY6i 2]*JRE8;wVόou0Uey%9 u[UwqӪ1B]@u榦 9ɉ9 5NՖ3gKST R /nb+!WdL=UZRE_ T*̚+S~QũEeEb(^iA^g0[jTqFjY')]v3CBՔ$$V],~e}zĵDDB Mb#23R=Znc!/:Kx5?O҂NQg@SCnYP<ʌ4>|~Dx2eFi_YlWfFʴVm,( xOKj0'PBG[XVdWB|i;p= '4 eO|٥%_+-4pb9F1_ nn&)RߎT#m@(x~}It6amJ/јuZx340075U+.I+`sإìo+xL100755 install.sh=?\ L?EI[100644 socks.confw/у˘Ņȉwd!:xAn Eb"K4RV!z* CcqV9|];F~luqBx oA2 0z6k\TR̫ji,[~ږօQxn)xXq/Z 'ޘe$h\")2̳w(YBfĚFI"p+z)hOv*=LpLQ)?^4|wn;6+o 07d^KH9`˜&|WfN'i;ِ{.-";\|3Ry-eV RH`R v%Ys,9" ^jCR(l5 `ox~H;a{6+lbgx db} lKʊOxkgig%RvZ̞#^6Cmxrl̛ ȮbD۔ 8h%xxqBvGGM{gRsװ㑢^:́2BW#I:Y*x;{wC=}^s[Lg=# MMJRKssR3TK͜cEW2]̵ULD/%هYxgs "_Qs&NmgMaʪzӻ9!vy^jfb4 (Yn 3hdó]]ف0@z/6rAԯ"|K&/`Ͳfm~x] mn&[+OBFR?ܓ\-ota.json5f ȷh2{xziXVо`oDCpaR8uS*, qʘ)QqLe Ex>Dockerfile6ݪ)ӯ02.+[[tp*u$g100644 README.rsto/҂ 2]rF40000 debian:$ԙ~{jʻQ73s LtZUi40000 tests ANn \#R5\= ?VvNUQ=Nfx~:tp*u$g100644 README.rsto/҂ 2]rF0W4Jye۲Շ gnu 40000 tests뭱{;֛ <x[Dockerfile6ݪ)ӯ02.+𑛢:$ԙ~{jʻQ6|MA4΍_=@ti+Qjxkdidٰф;Ug:*G^1BIjqI14.G2>r(l+8!tKxkdidٰQz1i 6?j[K8|Ǫ x{Dockerfile6ݪ)ӯ02.+𑛢:$ԙ~{jʻQ64@ m\dr#>40000 tests ANn \#R5\= 7XkxkdidٰDq+^=ot:jE5 P(I-.)f7CBG 1m'?dTCaMx íhG9fK@yx{Dockerfile6ݪ)ӯ02.+𑛢:$ԙ~{jʻQ64|MA4΍_=40000 tests ANn \#R5\= w6 xkdidpQؚU.},}9!+) xwC[ۢsT*L69ksk#-jx9=:$ԙ~{jʻQ6|MA4΍_=@3 *Ƞ&6юxQ\-ͻL_lXp]򓰕!,O[|~{.T07̢a$ WZ|]_m<Ȁb40000 shadowsocksH~Sz"q440000 tests][jc-L75|c,G LEOx^:}#8&ycZA100644 README.rsto/҂ 2]rF0W'HnS10xm@S")BmxXۢvlf#eT }4Jye۲Շ gnu 40000 tests뭱{;֛ r+SxX`5t"-[v0 Ó }4Kx|Ś.!lx'{ 40000 tests뭱{;֛ Q'gx|yC;Wî7]m!p^ٌ~x8 fof)> , }ŏfMiZMmH{úg@!Gx|y7. %JuGM7=<"B rx|yC;OZ>XK"r^21b޹ZKwP\ɻ:][jc-L75|c,Gxw4&\5 mwtUL1r%zYy &+e>[qZāY_̘K9%8,.6ѤOm+^>r , }4/M**YEyJ*LM40000 tests)A;(?|,\ӓ W$-gx|yrF'JyUVɻ` ,x z}˯ !9x: X;1X|o=cuPWMBL)es4uSIj  x|yC;HcW;fm>C^4rٌͱ -x 4S7 ;; $x aP8Z瘟,^uNȓuS x z}˯ !9x Hdl;|@ |J1x! [S1ΐVMAlbt nx =8p}̚ _xR &ʺbq{3vUq@ 4xJǮJBVX5 Mf<(#'x 0muV:7< -x! )}BMxՁP5Nx ܵغ 2 $cV۫ z_x;{w*V}QJלsm&}\ bx|yrF'JyUVɻ` -x|yC;[zM%o[8y6) Yx|yC;²EKnX`5y6& =x|yC;Fu_*unIuɳt2x |}_5&x^:}#8&ycZA100644 README.rsto/҂ 2]rF0WHq Zl+@g*]mxE:|~{.T07̢a$100644 README.rst*>-$Ub6 f"C0CSx 2A#6ЦYT@NnQ1lᖽx|y-ȣ{jˏNKvb@> b} lKʊOxkgigQ540031QHHKOOg5xxq/LѸ+2oT]hLjczGߪ*s_v-...N-*K-3d`}{q*{ۗ4f,3rs-* vYb됫Rlk=Px[/q{’zĒҢb+.]5P҂XhqjBnb^bzjnj^c'T[bqAj_ZT^V4$l XY\ŵq+>DQǂTԼT.-ur# \; *>-$Ub6 f"CxU;0[dzDjё7B"HpEU3Ҽ>_24X/w"M?cS=ɢ%R56BW4Cȁ ;?FuIGrtC{&X9|liik;E\6~|]_m<Ȁbx[ɵkffK=ۊY'"&nRy )mQxW[l I)[c=hYK=HHDE)[-vlIY/Kr.8)P$ (Џ)ZT h?> _(E((\@;5}̙3s텇/ս"\^2l"cщ$)U/-b;()4MZQ-)|9+ArkdL ?, sdK/[hRT$UJ-XDHJTER+8ZDrA%+qǙ}D8b,)JъQȕ؅r<B\溦R$[T t6EJI%D,.h 1U ZҊiJh Wz]5MX,DD܌\^nFb,- K񋱕RGH4~<_ B;^` JE,t7$ۈM)匒BϴlQR7C@b/MT%Xƨ[˕1jVioQ~m)].xh ˟-@')RYn샿{=r`E۔JoCv)=M-^Ԭ NE>̚ln:*ȆIL{=hV?L 3nCr:srg~]ه&w)_W9EVqd[ۓٔU%-to,]jP]&T͈/LMzS):o=;6Vwنpo ɆÇ0 =R)e\{<[%F/I l{*.Al Fwm1M 7a *Tߌ8#N ?o&cxŖ}Aڗ\Μ "TQN%<=E;J{8)*S$6[4 ?@˫b=|?ӗK5` ‡mps vʌdR*Q:㞖zbuWwn>;f[ kvBF9 _kWf9;Z˙uD);#pUnߒdQZxn v"T!s UAgʤۺ_ p0MpZ8]HG̡S31l*P#jyt:@ ɂpN؉΄r}F.%z@R bnSy+miXJ qحLN3"8.iVXD֢K!<ĩ0 Jm2XIJԺhꛂm X-0e-*¹a7Nm2;ONt64N`a hTn^a֊,W<[$%05N0QܡɄ0 ߣ4D(;<.4|.SYMV=J>qai nGuo\46T+Sy0!7 k7&dbbUY^!FG*[Ҳ'@u"E$0QKZƪ62*A(Ikn~ݩ&=iޞd*hr CQs׶_yRZľ87㳗57'~ò AkHrpo{Oa~ < f6o_~:srf6{O‘({dA*<^ *cQ|`JWx;${Ie3&ҜO6)$($g$nfjI)''cUe&`1 ıN-:UIAad\4dEVG(}Fn1L8YfO9s<`qu+ c#CyRRJRKa.д,+Ë6h"5$1\|+TN R*[Lvy5}~pxۣqLsC0.E)DSsS+lR'O`ם|=`2;/s|fdp pc\.I( ԕYZRgPlƗȅ0y,/,x;yxC?\zj^|vje|fFAbqqy~QBnjIF~䇜 _oZ@΢((OZG! +%5M!5/$>1''>W! 3gz~YҜĂԼ2 YAL:fFד? M4e4ʹperS|dQ&qE oL^#$9(vȊjL$"3BXsrģzI !d@~ >!pT7x;Oqf/5&KpmYXPB ѽt-xUOJ@kC s7<)^=j ;Y0m$x/#W}>`3|u~:} WnԐ+(W@~eC )R6fK,9'4%p5J-T"1Ce2ȺkrXŋЎI| MH ,GHr˦f59tptނd!}v$}ou۝?jrXn vUd*7fC}Q87Ca&?v@/_{exRj1]vGU=B¶?"!dfSg%ɬgؓ>Xx/XO &3۲N/~@K~CiF{@)=ݜWf^MM`:[ڥ1b{>x"$˳ s^_0hp=QٛHeH*w^>O"g)#'=uh}wI+ZɅbV4qB}aItkcX|Gv.Mw9}mYHG~rR@}±$:6(FDZT\O,M1ܻڷl- _x?KI>4QFx_'1H"{ˆۭ0"#>-x@ ;=qnř$Sb% es0X0 L[ Y.e asM{P`sdtn "l"H 2RxZklWv=^֛z^IHZ6mS[rdI+ɉIaF49 -݄k@i 7M!12thxxgg'( i9顱lpD̹&a0?Qt(PL@9t&oLSQ7掬sW SW62fpnTfY_d.r=92p{=YZ̯N/%60?520OYd.{|v~*8* i6R*HeNyfIdyLI(1fFlSu7\O)@,S6Ym+(I ]Kh413:FIM7ahIjz)7Һ8A툙ŚDV#G \j³6Wk<ƕ{GA TRx/#Q&zieǦ0֞'7;$8o: Uɜ(4lʮurkoTvd*i khR[fЁͤ$kb׶3Jttv~vE(N1U9$a\VpVK:SuΤoK@˩s~=ٸ(]Rj[+4Zfi칐XHު+Yx #hM \ ;>Nё39Hg D "&FD$Œ2& 9L}Fpߴ3A74C;Eb4L7!&˪˞v4tOq<5OI`Ə,0B'^m=W!b\R$RZ8HM(BD! dޔ\$V Ϧ:UrԚrQ>)$PNF&7(:"ՓŶ2vT8 Z>x@@&lY~piDNq54.AF3dk^ %jTI-_MD4 9z.Nl)=geGVZv7?)Zh S-- a"K0Z3ڋMI{?Qe.sR*{x!=D$ib^ u&"6EI&gLTwZg.fo;@ᙗwr ZV~eDرmryk\=o]D9fn̼ [/G!p#A -ŝ*@^iI8-1)a@B[m9%B lL{nck| .뺪\=751h jq\Ϡpۏzpc #DzצQOl~<#LzG3pi'a! JxW _x$H^j ~ ೈOHpcp$|vË}BIN#%d$(2چl`$L(Ͳ)3W4')Cv'kX Bf~{38zd >mF*bh),/"|蝂W$Pg=*zxi.`Hj6+#ƕZUw̋Ŏmxs7ZX3> ] {ˆ@%A1$jGHsx"֎B}oS,VYJ~(_yhc7ز ˡzgӛPV qDE0.v #Ⱥ~x05|t]b"Em`0cx3D+edӡi4Ҝ Ep}0?C84^=%Ȇ;Ias%_CN+|~rxamDj/3V@\@A;]m/^575 h[hkw:q D'*'8%k!y_tK6m`JYQ:4-Bt4~~P]Wkz0cJqNT9mŅOH`bCB?sCi+k@׬ax5ZzoEWNb] zt6q S!b;qd 7^ OH@Ck;wA]=zdwtl WJb9[ۈ-?[_fct^>_A}R5GanMF5@o 9zd3 n:xG:U*IVID͹cs ~57 T2 ޭ;eJBTdfIJO&ፓ}JH#bDBYʊ:頲 &{a"Mj *n6_?\m7C :73\ʁˎ*\]׳|{pl#&y=Z 388Apt \irWdTiA]7sZ6 EfC)Ls <\K%5{ǺrG$z꿈oWNyDRFw4SP dGT9|>:Scð3q3= ZU!k-%vN>ל|~"R! o7/k~cM- Nb!@'|zœ =p6m ෳEڤ"  [-UvYZ :F<[ɡhQc>+"_Opt2v]kN*X| W5`kЖW%*q^ $^Mi馞c>ocpJ.5$䞳DM݅U}DZc`,apaS T"K+LXā:P :2f?%+ZGQ|7c[ó@hz$|K50L6}e0ZˊqZ_ҶzE5R및v)Xf ||D }Cyw{#(\DAqYLeWײٗ"a|jK%Wrzd{@=:-i;a5`~=݂Jx~#,#}MUvlEcHt.)v-m~R[w&HhNrDlԾKYΛ++Famu ni[K&KeM6_XRIh묁/9^<&k V4d# IN }Bu#N=&߾_\8omxb׽rq`v6̞ó}}\k?=8좺嗺r2XZε p~W,/-h!ouBuWr+>W#ڦuڠu#M-AyxQʪL2W^DD&C_MjQ4ۉSՖ^/V;ԩ[ NӕCl #=q֗)QsOpg7\g3FU!n4c#j蔼M4qSih$CA>nn$EJiݶ iOtq?(h?ݬ{G]iоq'ns6tmJ>+1qmd6Qg\u3Rqx&㽌>IO \#@m#1~-v۞zijV;=cxPJ+J@\ڕA7@cS'0xf#J5|sfueE ը(\O9x0O0wRwOߪ7o/tvh]% ?Xx?ZܮEO_/BC Zp'1QvUF R=K 4t}qHA-%4+ •gzkgGGԚ7F5Dce[oͽy[o^7Lal;J %R5݇--6x 0 C:o|7mv5f?piCMX&HjwJ}fD^Z9%5y<5FߖE8⹢;؎o_Z|Hp^Vd1ϟ/U,I$]i I)a'1ζu xX(V~hx.2tRأϡ)n?\Ԭ!s=9D[siA?~iYx9{ӆByy)% I߹`D׶UKt,>\_rN㛼*^& M>:YT+>9I͡-ZR.c6A&M0CQj xKl H)CRFRe.m?RNBیƥ }b]r]fw)haR =4 2@[H(ZzK~C ć"E/ͩ6}of%iAKg޼]a*d7ڎQygHٴ[-^3rNN(52 y:a[Lv(`EVϑ$u hHӥ@pI0):ea]of)i^T䦠A쒧}Ε;y\b^A@J I,١hk!B"AF(3YզVjPH:uE NLnxg 5Qq:QJk:TUQVrmU980t4*{|;~C߫.ujy=|8ȮG"[t廮ϐZeFMnd42@5"Yi54ǥj@eX+U5]E=N& f3*m_ JV1[j>{Uxs7.]{z^?*wi[qSKj&'ϓ.rDdxzWGbz [#gmb@L떫B<jni5^gYc\(R0ԬdUA\ KjT{e:[[)No/n/GSх*TAfХ`*B</?~ |Ft/{ ^N4*.jQW64mَOףG:j6ܲAg7}S 1%,浏~gOZ(^ ΓM\y쳗4ӥliz4KE_P} ;g'N}eDvH/'=e LsAu}@;sROIպd:Tp0O M&!2<8\|]NRez6(rbBy~2}|~haس3/iݠJ& ){v#3NtlfC] ~.~C:"A2jdVRK-I5=ny Pְ7#[AC.!5iy"∩0іuhڽD(fJZFN_C$gyWx`<}wiv?>®5IU߶ihS!ϡ(#R@'&fc#4byqgˑ#&O t"¾>]\`3I\dP/N.~=IrFIqޝd$">O.gcj#||q ),ٚW7gڎ3185~N+ifz~"vХB`Va898FmrI',Aɲ?'&kHT$a:5Hk>$5TpPd$F'[}21!0!oŧEu,D_'`L`Mpn,p&g qؿfep<=wc{-e0 @ːj0 J]Gp,8׼zc$!gٯ珳#ӇS@mY<:u}5Ppd`<SdȐzt1+z?|c%R2=M-ך]#7+(Ljw[HS1ϼ~:eHW1i v|=E[84e).}*.hQa@(!DŸg+زj rWrbz0yW:?:wXGA7QlJ$?ДÙ~bG/[o?n/sirx{ycsK66Yf;C<,{r.IZd!*᜿ (7{ egHgtcV5@a#CJ_BwGnI\66_o>l~:rhE܁c?&B{muHZb22}wm9j@wu,/C˿ @B8ei Ro` v|"f! ¾K,QA̲)]EjUJEhYR ?w~gy}\an^ ^X^bo,Ş){8?\8?i +֯h4xZ,1CN}Y˦gFn҆Kiav]_ A St^eS:vg,iJl]ܖCDG[㕛ѱ{ X}}i4o7f:&uͲDbD/Zx[|*eSI^iɻ$i|r*@:>5/1)'5883?OV85'M/.y _7 Ғ'ʋ $RKЍ벚/QXWP [ZYPZXY99_Ne[[S1ΐVMAlbtx'T~L,E&)%zYy\ %Eeźə y% ťE% ef@Y7/da`l<0g_}C46{^zpOZ"8CSlⲸYzCx[/FlF\y9|@^0 4*}~d٣xsgCdƷ,!z&ʺbq{x˹sF,Cz3vUq@ 4xJǮx[^?4F@ۭJ"`uDbS6ӂ< 【I/ό'N-z%e_00Pmi@{>=ƻJч7X 'Aǒgf$h2cē]h3 H4:-Hk6mx/lQ1%`xQu;)j\ACq!ʅSGfIG9Q;!`kw Jx\!-Ov9Pɧ00nP |. tVCI9XX}WVU "nLMkӾ錤"p} '̸y_#=tnyagG[h/͂sV ;wc6n;wÝS؞cB6»-ZhId8{Y=Dz ~aO0;amgN[-\i3f|'#z-tl 'A6agP&鄽!@>+~ҲR Kʪ|Rxx`m1ޡĊqĖ䟰 ]w I9K6EmйYs!_Y=e8l'@n(1Y~`w5̍nzM)h5TTK>+\Dks?).O۹6a*&-)>E">Zz%g%ܲCO2T ʁ. Co ;!;3  5I0Nwf? Z3 U t@쇽vYCq$i ;ua#= so@oX/7fȑ 6^.-%&Fse eBFfF zhAv!@J@azIbZe6Za"eMR6ٷهKx̅ $ڙl(있6A&M0CQj xX[WV%z/wgwx8ͥlN&Ql؞f<Όױ@q_mő!KUE WQxy@E'ޠ9g J>Ϯ>*{Y%F158)veXz;׌2\Sx5Jr IFװ-r&A"V/$u xHӥpI0):ea]of)i^ˑ\A쒧~֕=y\c^L`CD솝3';<}s;瑓2N ?ٍ%{hgC!pROIպd:Tp0W M&!6<4\}o]NRyzT6rpjBy~<}|~haس3/nP%p&)`v#3NtlfC] ~ .~ xv ]2whYURpͥ$k暞jq(tIk؝V^"؅7e5šgbp8&9kD|<J0hrp(@GFPAaI׉#2U!kI[y;dhAU$8$tbkpS""Yea>D{fwSWBB' >뙘 {A d}16,gٵ>,A*K쟳s28=;`㉱9 O`Lcc=)p&4ۼ> o iVf (0Iw#}kyl1>!$|ҹ'C񵐽Ka?Go]N cʒR1&T}x%\=,7DJ_kM뮊(jHj[H(Pg^f?'Fe"|@W{a+8XZC:HO,'-U‹Oa` @׳B֕pk rWrbz0y9?:_vY bINDŤ[@agWo,NpTi&'hᩧٿf^d;6w}ocgmVZ3b4!7肟 +<,>\õTfbb rNnLF0X,Ȑ׀݆ލ yƾ2Mi|<6 _9vK"D a:J${ӋXL^~{ۯD~F5;غQo'D+@fTt/[Ĭ5AEWc%9(YVvQ0e˼|HMDO-k`_J}.Nj,!MfMp%RY1^s_aF3êJJP{3{_ֲѬۢ3{/vϻ-zσ OX>**zI!Ikri 8CDG[C؂c,;|^ Ez1lR,[L$F$l)L>H4:X9K>iVxi-skZ"_G =Tou]#S{}-kֳu$|O/}/ʔw67e[\cvf H:8ni. u[g f*AF"|y(f!Ќ4%'y򫥣YR4v}CCE0`mAS Dx6 U%jy0X_PxTI]1QEfZ-&(xr'V.c[t^iHи&Dfvӆ8,^npU~>+Om2tWIRda'z̃G<3~o\ey޷ )q(2! !bF/DٓLx$%aDS1x^j**yA)|jP8_#.WtPY3iv6j*U3eCZ x: u߯V0XB9xkX Óc>x{ʁ.[xVӰ i8&FiC=ۓQ~矓'Q .ւwJDթ藜<%MZ|25 Ӭ}[ ]j!4єjPvx+?CN߰7E dk, ^fu5jMeXظq:0|u.'+#MCdx+;0 1\3#{-䮳vGd[ R5U^ajUDK]q@7Ldzy ܷ:n괔T ҉93{$b5Xʫ ~$R:фTJpr,+nו%Y=;y,{E󓘯UK!6?~Qiˉ oѡN+#I{(Q1Vί%DžWT5jd4ž_ bͅթ9p}:;*hWk_ 襮+{}>+YmVuB/}| |Vm 7Z hVPË́; ŷ,)\'2'kɂAt%ԠrB{ vFk͍4{4AirX?;c3Ib Gh ;ZS"dY[QL:tUTC2]!5{%D<Mə$ĶBD!rԗ(QM^O F\&UTnoi1UtR/4OuB!- s?TúeX}bLȢ遛eC@r=5BSw$H4:%0IΣ;䦄:i]%i&i\uFIJ, JRݞ]'e5Q!I5l/ŸA{wQ%Yؐ5D5W]g7r=oJJz7gI! UII\`Z'TCSBghYjq 딫f?T06T\W!φdzGR0=9d mMKYe+.%9\$ġvj;'L ?f/EW&xtΎ?|\%G[sWZgI> =2 ?vt~?KS^~r(3KMD1@pq=CD4 tQH7umbb!`XFZq牒#dR3v2 V̯ '<O9ye:>?X7M2 3%'JtQQxaSA1R:5[⢠"Zv%BLQp}7K)c[t^iL҄&@fv29D^npU~>+ZOzj$%HAWۣ5) ?e7/rnTI Ph1uVbI&l~Pi002c &tZU Q@r<0Hi0A(\<蠊-ˑn{]5,lfKvf;<lбS "y{_uYzV6Vp}L9?cx+\9 Œ7~ vz`qw#m|`y(9x\3w9yh=xDq^SҤ5SpYlA.⅏{`;t=t t5c`!x ,#:m0> og. mu҉ݎl&ʖ?:;njMJ35V ;Ar`a+' 3* M3(a=l󝁜!#;rجlK8 Bbb|8C[jvA)xl!wU%}^Ft8&7 iU\?;&]Cjdim޾нZeF0dĖsfSlܾՑu{Mҧl,>wUY'R^Wf%RR2Cba]aWw{L.a5l╔$.|4hy|/^|UQToyMXNnxwY]Go'LO+fFzzP-;.NxHQ#)Jk.N]kcי9W @-709̅YXc/w] Y/oZ4@4za;NKõn!l5ZB)64_Xnru,[.% I vPC)w2Jʦc *Y)6?I[`$E5Z?k%*jO 8N_1fi`iVѳ ZD IFS 5$Cq02qo4%o0[ *r_C#dG5Vz=- xTQy6jyekznJ&WOF#$ }@!CAp;j VfLkxX\=:IU VD Xֳ/!|x+ǫ ZAMZ7- ݮ ? J5)%̾&oGKHi2˞*C5ksA|J`\/YU3A4 9Nq4sm"]'זq9w6jGwS,hPHzCr(Q C{~^ɟZ[2R?SۆaIM[[ۖIc$ŨA J")%ܤ[}sd[O[$mRD$&(2QL%TERZK8f)Os GS6,+5 nmmNm@7փ hg'g'3?sCKP$V dvm()$(! eQ {2TK֖bPSMPV!NeH_dL/845wc YX.MO.2>7;14=7OId66=;')1TL4 ɚuH⺠LѨW$QNɺ~2DRH&SHBMbgD$ =Id9eFnXDY3*g?r_ex$eV$5yhj\F3-SnYT)J#lBS H-%umɀX"H)I C~$UHJBoLnqȜ\>4%^D9Ƨn^c"g&g$21t{~Rf wQ-"Iݴ4752eL4w@OƯ-rb4j*)0Cz rE=}t4>OhAGuMf)*@=DTYc F0a9*5G(~1(ђ5K@4[ttX%&5PkLqjtV9L4CIub ![̴uQǫqqP4;H_GQb1{ijl iF`/ﻉwܟ6k&9` Jb8 TёASS3oVBN F[|9L1*Pn1w00w~a8ťȕIyzvzI~dV Jlg'ǗgT֜&ǒ-*I m0MSb P2 pG敘P^h$#C+›@p6]H,υXBoe߅w3sIl)1.rK{}M6Fo {%/bK70je٩0 kksjlTft3F_XfQPf#-s]@|cXƓ{,i LtǫB-SN^K{a åfxn|wЛ·U.nշ^;7#e0n'R㭁]$52p'wGq^Nn>\t n|G(0ȄWLUh<)& QNBAL&-~^{Xe w_m1لc[wH-Mw |mPZ |*:EEy<ְڡZBCc9<nCM~;2>$]].Sw IYG+p]#FB057/ٿbFk4Yf )~yd+Ue,W??1dW.z;z^(ܗ=^ұ 186Σ2lIxa]fEkchOвeΖ㽪ͪUa*Ղl?7llX`J&a;T"ywZ)J  jB{k u `cyY.塏L7eqV'|v"(w~rգC*w-mrj_ }m Yl U؍n6鶏db/ @< 1Tt+1̫˫W~R/3B~t;y;S|4И @ A#@s= p k0X X[<1XtFL5#ڛ5Mlu(=q`_Q ThWH&vcwu'].WJexxBgٱzxG:Z,~کJMy#5G? gs>W{*m["(ZCfVhlP&x|ozaeJe_n7c< oj3e`|z(( 4Jq6-fEWǾl> t,US,~Okᶿ- c6&7<G5,Cf3(W;|9~#󕘮y,Q:AeHaaB㺍%Rj;99T݅>oby, ouXr6FQ7<fVOgfB/t?"VWdkhNTO.\C\ͦ(G3WUƉ[uotīvok v@ $4 &66N Lb\ v7#}7@|¼ʻ_[ANdlbU( G Z$2SSN6]/R:i$VӴC=cg[QFs u\GEЋ%RGXpyCz;!x(0L1OUD68Ҥ ZfQdOqY]CnCy*/Li!wA\ໄgxdQ+=L߀WuFl;(knoKٗVhhxS͔bEH>HRkCfpNTY;q\Is]0j;kj)kށZxvBH#MZ>8m`zLOE:ϸk5ŎJ) iq`lLto pl<a9h;"Ĺ?Ut"VO׻r4\9 |dm+\^'&Rw:~r BK~U)Vkv`T=cKUpTW"Ǻ"¯ ^?Tٚ(HX.7t:ȱn׉9˨ ݰ=,߷XYaH}f+|}X_(Zͧ{Ny4AٌFѶ뛴Rxjj@&àG duo7WSg۔aXPAjC$3fؔm,|hf蛬Qbj kuI(՜45X/śƖkG'le4ͯ7wIFGܹO_@Gec1I"G0KOA WoAӵaxå!Ob櫁Wkwn]/kzDj2%W8P<فhɾe70 Ir H_˝'C:\חaxcQLH <_n?rjV`ۍϲq/a ~y%D9_]նSO Y۝0o څiYcNճvFaH?+Mjb.ˀs.orA7~o^`>:vKjфnRovOuI÷c}w\M 샏55>\ :Gs:>x289x q%. zu'<1wdQBō RE`47I8XEq+PSIJ-b2W*+.P 'RXBx%STGFQQB'OL>%>d8>$F x,9sFNK(Et9 /BBc%&rAxM)W8/y /p!.L~$hGXi=S#"sJ2Wd|4쉉p=ZQ ݐ_IxܚWz͙rZQ>SK=5wXA~00e:[81➉1)E%CfGf )3|vf5T>w̧ 1ʬyds{5EdR:"1񼤬0<9z4yC^ Z͙׽b7V9c$smFDIXN';h ozwz:zaG}an{j͞Md=Y{;a k iVs3c)-́ZXƢ|Dx3CC?9\ @'ne=H7k: pyMPu,NjNa a}߃7ΐBa]Ft;LbG vx0_OuzU#ͧVFڈ.wF7*qSCњ!\qr_ݶhݸR-D1K K8,ܨۘ<8X _M*<6lyFG' '`k()jJ媦tx(<7H_;-߰5ma&҉C y2Ƀks#I϶X%%AяHxY "Ɇ)|4fviP~SPs< U19I nPRD1QRN83]*ѽy,֏Fxm 5@-ŏ;:-T< MPJ1"&PȎ?oQFB$zQB9J'E. +*>#_H'b4=J$Dbϧ +qrp~4%dW\P.ߜrUm'Qsu. a[}˂"*DؚX /zjYx]Xg"8QT&:x |<²B+aO;a}[ASP3+:;+"ic}v]F.w3$eztBmPV L3 /i($HL*{POLsL3xSMo@mJ" ڪ T"-"E*MQʁVVmٵK*̗Vc\rC/ .H8m}f߷C}yުmفM=%['T*E$&g-G\ c+wS9vt#2h>nCj3d;sX!F@Ee%'iUPvp<X2 1[2$ =vt`{Qz2h R$<>6%qxs3NJ/axf~[iȸb~b~G/RA 7+8e} hnn4g4:u -*@ xLb)#%}Xcid`1+/5; ݶ.L. tj<o;Zc_"ۋL{9N]zw)3Ԅ^J2 xBT#h6xӹw >G[k`s/s#r4pЬ8odJ(Q /uN.I+IϘ.>mEnMODHڄ8)]ov:K;,Ah8+NƈX&KZp$P[b9cm] X]s^i6xNu?d)+d)$e[)((+$+e2SRSKJ2ҋARs@&rLgjF61VlOjNqLf \+_ ( ojx< LSx;>ezqjQYjQ|A~QBfBr~^Zffm3l no feNT'.ɛ_XZ1YABeRqc[huiX[z%h: n9ũ\/HJn~+obalaYES9Q5>514C( Pޠ V.XI vYb됫Rlk=Px]=N@ U4(+PЭX"ڙ8ɐd'T+l'`•?:9ֲDhO _gX='ܖ~}=?wH:*\ƌx_Wg[xc'܂⌜$.771514#)25XVE#!iE11(o44%5M8#0dIFqjrQjBJbIEy`G奖(с9Ud^Jfzjq&ԒҒԢ̴JxJK 7iAm?2epTr9D{4Az@ p :{60)Hmň!$ S3oZ"]ɦ6xkI!S1qqiҒ X[Ɏқ3E\C<}]CC< KKks7/&5ݰ>N\StxYklWvm=,ʑ,˒EE"mzXn$RL1vhER񐼔Lfł.@u|~Y@u@]lf]vImCRR 3s|G?}ѹB` k*[6R+ZzOה,f9-Mfos5sW5nZ8 4z9t,,e3*,Krx0=iˊd79c-$m6f|DFtskLukd!2.ܲ_)&*e$ʩyL29: 7[Ѷ3v^69rI+m*ɜ]ex &k6]gAv%[n ѵh|#ήFzY4~]Ì0IR!Cts5etG")%Zٖ* nfji*YŖmzFVԊS2I%$MIKWQUyfh6nzSx'% Yp_s[rZ[zj*qZ5+ma_}O!綒rCnKW7V+6W +Ư݈Jזa]\\۸$ѪU\YVlF{µh\Z^b$-1bB'֯/\]S,fY4$ظka !:.ŕx"A:J$^:/ &f퍯縹1wIjG3KVt-K6U-۝NV79K˶9|6^sC1(5 o-ȼ$rS0QXSuU7/.IxlͱqocQ/-l/§ 7Emr9%tB9YvtbYXPקWGPj#K+uʘ \{%:A vgJe\iar\no9dc$$ic׎kAڻ:aDHj[GLᮅ˧2?ojF$C͍f=dc9-N[\ Hl*A21`h;qCt2fG-ÓmWd+3D ;i<_N.499ijrYHai%H)oW4Oh[u("`T'`fY^B͂6'T &1***PKBiRWx?no<,@YD >8z`C |J͇di$Z BZF9{}4 p+)E)-0(I@E5sFT .l \M:~pql,jPI~UG5fSEq_Z(ONvz^(]z[Go$*T('):t(Tװ; ҞD(8Ĉ9A iaRRDZƚkvl*VlrL6M*[8?<:ѭDFiʅ{,UҏH޽#;U2Vt~@ 4{ĝ*Rg?o:q:4K;nfdHe: 䆓 fdE'r=[2\ ;a.ãFlO=|c#A ` ;BuE1?Zୡcߎ$}pf[70ǟ2 |K7m <]U:Uߒ.bd?e?hn9jX2&I8;[eϊeFAۭZC=UN8)h%-ifP7cp ܏X^ܶ? S,UR'^qZFlc{{HiSJH@U,^ ' <T8Wr2PM6NAWZ৑=R!2໗ݛlߴ?({ݝ ~ |3: D$T _[7oFg'::kO”#cD-1W^.D'%7 aCA4A+(qnC}7JU$t'NN DZh ͐S;Q ,pك!L=MgjRtGx+Tˬ7oxUӶ_dW'0~@Q%3/u权9Wwy=Curl$|p MSn_pR @]3 0ggûC=ԡ?Dz=;l:%xY<AzN2ٕU9SWʝss"$8ц&ԖGX(ؖo~عN+!)킘X5hܒ ŷ/}𕋝J}[Lg\ 7m"L\=!F?l^it+m;ߜyN\J}Nwܡhl[hc=*IJ=GCd^޼Y^}|IUԢ{_o^j޵MwHtz0"بt)n+,׮f*ExG9[B5j+!G~Vb]]PYt=/Y)#"2=IߧUAQ7ok7C凫0| S4(W7o7';7{Nt p#jk{Ltÿ$ݽ=yEqzq`e`R#|OznxZ(Idno'F&y^\l.07,,> Z-ٻ1yxZĆgMeߴsR$ypF_tHw3˚0 <B ;{CX,-n{:(:܊0Bzefg3 bjb^t#G^Rpz3{ṄskM`]0}$d5-`Y$V@C ̀ MyZ3< >=̺3=HW˫W^\`յUXV˕JKPނ˕r? K*$DjM1>C-p˦WouuM eA9 ꁴtu'` 0 6b B0k`JB Pٯdd ב˜8:zLMf-ά-N<+l˘_7h,xATC"M⍡9k1LБ(a:ڒ"Z:"0jfpL? %v2!{㾽s@3E[3Ryp$̨톄-9~;盜X`6v|ox,G#3]Xߏ\WGGPrXmE&bn %ؿHGUѥ~|ā-NLEa섨%(%s{cx+vxutCތr4[*w2PK2*+^'a~"d.ZG9)N-QN :-&&2n`mu*8&!wn Qvwe6"M\c.b*&tNPrd8vg*̟dq3IYf\6zoe'`-\:b80~o9GY铋ꦵ-oicLGV^e:.wz甗 7Z;W4;/Y厝?<=E3;R#;stt9*A_#skAΚܨݰh m./L%Nߧ* $53w3Tb!xaBI}-vz?D"Jxt5ӓ#r .sxuQOOA?H ijH+/64ēiEZ.!d}۝lfHO|9.|%Tra4S\{?{u#t'eZ0~9b'/ÛnaN1TM|FAx$u} Y 3R|2SSu  fof)> ,xkf>AR&2S,83?FƩ43'E!$uJ%D60mkiOuxmTKhQIڌm6d1cI6GQK:)D)ĕEҥH5(\BՅ?;AEwnD|55mp9{wtSSTHN.++eiL$Yq[UpߪJE :M{dFR_t8X&zFtK2Gpl$9KYTK^o+n {LZYP]>]B&|2K3@MP(Ƭ*amcX⩖^~r~n+"kthYْi4CD$EJ<_ɴ3AXVI \GHqUcM-Hxk)rDFqłgeHj|X*5351d(F{.E)؈ ަGtx\-j4d`rֲӁz X0Eb_)9؊A;GԺt./e6 zd6Stulj 56rJ*< xo,)PC#ހ΅xnxaNn"&eS|&=an( Aӆ&2q'k2fcO]'\v]rB!b&IRs'rE5-dԁC 4lF+jI͹@ͭXqv*_d6p>z`)(^eƲéW-f,^_Gy[dž#<< t*:/V8lf6B}W%]_{V 2{q1Y~0\l 14`)߾iOtxTOAR!X~&RCQ`#%`Yvٝbjzx{G.=h܃?@oFgvh)g|y{ߛкA^'Jj>JKGCVNs[Żb~Sv!/sЉ_+Ĩ2ʜeӨUP 9T•X&C٭EIT Áɳb03q>]8Z-y 0GZ]9|>Bp|~K^1VAS*Eb8y*  LG >7 ,~';Z"΃;n2h6l:mkj>2jif&$Wh֕u&JJ>sZ N jT*",FX2TDYWg-\]c ''n5M5ӢK/T[cvgK8~5 [ʞ̫w _&s,)%7rD^ߚofB̾RQQ#N&60㏆`w*g6fB%RY>*rYk{2t~_‰6'zC΃n᳹(8ޙku6_"I~eeLKugn'Si"2Gݽ+ۻfp-B8\ uG\x9x܌w-x{)qCd%"HqnǸK9} JYx'i4r~^jIfnjbiIF|YjQfZXzjfI,. cZ2M~̛|Sn~q͚j#u}{:\kՃ6[IfE%yqIx +v$geǧ$$14'w,'u-%m*NIQRWV!9H#(lrABKPHdkch6XiU,\oQjIiQm` ,zyE%Ez)ld{xۓt1i>F 祖d&dħ(x:x;Eor䛬(#:ywB`@syur-L )%ѺYbh)U]ZSS2;(.c4y:?t L +kqjNr;Bt4iLݼ^ Fl5xt!iY礛E-2l<0g%!o\F *G$k$Ex{+3%8,h37+/ yy^z~~zN^r~f +Uz x4iiV5^koN 2s@ $PWMBL)es4x$IxCfMs u, L&q.<#xzs'܂⌜$.771514#)25XVE#!iE11(o44%5M8#0dIFqjrQjBJbIEy`G奖(с9Ud^Jfzjq&ԒҒԢ̴JxJK 7iAmi`70S7bJ 700rtq p 3P!4F\1,趹_MEjO>.F A&O `׮' x4iBfԒҒ<.ۙu''Kmfaw)xۓԓAK#KRK2sSKK2St\C<}]CC<"C\7pg-NIӛASns>"]ɦ6xkI^sieļԢĔbzʛU93&N-0Lm'x< .-_XZ`RT:QBzs8rk|kchu)t)tmі`+kx$ucF&_dIw,HLHULN+N֏ 2x+ynɻI s!x-e3yE))E8'rn3o|A~Q_~^., fs/xۓ0i4f@AV=L. \'5X G5̳7!AH)lAx{4ቌ(g)Y)%r\ H\_R GGw#A&\xqD 22L-I8mlVY_X Dox˴iDAC̤\]C==É-7hKr'e*)&f*fM|s|:"l"H 2RxZilWr%Rorx>gF/#!2ErIʖL͙qwH&'$g!_n0l,ENr(NtzUի^A׎~:' -+&9bIm{[Q *1<2j,c 'n(FGP2,%#/j&Y(K(IN6&STR"1ζsScs "+p1ӿML6CI[ŜjEͮ29u3)o3MgqHm]1u# -an:G.q0ue=cw&@jFR/,,S3󷗑S_ds33stE'f&pi(B [k!KhDFǔcɬnd 6{\WqC,bA 0ΒJJ1eՁm%)k)&2fF(I& -[Z=XZWT'1SXjdWMxg-Ʀ׶ -e8ܹwȕCڤ< /4̠auG7 5A PJbWECZ5<0 ng5Ȅ4BOj196X iQ<d2g d)M,.kkY9ٰ ]Rj[+4Zfi칐XH+Yx -hM \뚹 +~?;6N39Hg D "&FD$Œ2&q9D}Zpߔ3A74C;Eb4L77!&ˊKö5tOq<5OI`Ə,0B'ޘi9!b\R$RZ8HM(Bϕ}Dk! x֔\$̖ 'sԒq=HD^oNF<`4G!aI o?8̨[Q%Sd<-Q'<(J=4G!Ͽ] } pͿ\*iB\Hp!G\HU]<[r$ }_Ke=N28Z*,"C9?IJ C.04*'[ѻ"!uMIB& @Qh"NԉiR8;8p,·4l<2Svɯ9El 0mHS1̑#^<2'JQ+wnPxl3CKq R+4 3&&Hht "#/.8[({iMbӴ]Z옴 oZ]WSg'g(M7* uMm0vs>'텛G6哋;\jCǠ+Prg3?lkx ^4铥0nR9/=$/)>x 8ʏV:ZN§'쩃3q(!&=e˞$GII/8xc'9m C8IYò"m-0+5ۚRtU e+oeRMzw^@ϻ!֗[pÉ}#H*-YpP[WjWm>'f۷pL/ڛَ7j`a 0wYDn.UeI!;Jz jB|{*=Czbă`e"-C>Ϧ75,t99>Z褽 Fؕ5G5F`jx rG>Q]2Q!<4HePpL%~}[E+i ih&Q'[1B *(hm <8Xn ^]UXv>ʏ"YۚM35 .kw:seTN;%k!yotS66$\)b+2bAYoqaUӃq'=`(! O}BcSzȝvEa䪏hٛ=e9USsC WN}qG Twd 4VLKI};^AQ] nxgdl0bix`"Z_펥VU ;m꾜;P~40||wYzuʶ^=mP a>)@yi᭾B_#0n6h&jJ h`_^̷R/N;49 x[:U,, NIDkٓUc c~5;/v3 ;#"BDdeO'୓3 )H#bDB9P:頼 z`<zn6_?tʆZounft[Ul42IC/a뭩̗|{눒`jfF>J~{r-ೡ&86| 7 PtOk״`8ڮt,G#ynC%Lm G.ݑ9/ɯ/SpNpT|4 ٵ31x0Y _lz\ hue/W^+Dy);Ç!hoNgH/e۴<&[zCZ|vœ w6mޤyM>W^a!xg®`KaMŨð3}+21495X>}ķN`'8UX\8b& .FrWXzW,!2]q<׳-oF[^si+{k|uQ 35-Ƕ|+| ]Jqk(I(:g! ZzR#i)kq,ÅyHV$WQEtwȘY:;yuKMXdFK5 NBZ^~.f+6F#k E1=z-yҎtXȡ p9e+ӽ.^Qf_ My@AcN}ovo6xj~Vb 懱"zA  ;%â'{Ƣ #є^7q{rj1欫 X&96b_I,M`k}Dgx]vW겂࠰93)n EK]6Ѝݻ(dfg2I>q+kӒ̙eB"klE } +`+78FI¼ :jXK8,cd3utja .'])0ba0o.Oijoe*%y㤆ޜT}K=7L޾cܢ97nWKlLX.Ӻا,OOEB{u՝D/cY"`e:ܸp ~X*޿sqϹ+%&qm#M~Aծl:uKy̥~,z`vTËǥ|NϽ ;jBy=A>/ENO_t$R|w*>'Ao/.61n^8]kDqmf^P;7>{5CҟkuR} kg`+9,SXrd}3\VRwz;rJ+M[W#ڦuZcM-Ayx1*[ Gc-DeJo/n" Hڠk?nMzL낟M.4EFMvbT1}pNj6ubV[w쬏ұ|l+?՛[_:G"8Ǹ:0=~H0n[)y8h5H5}4?^/InpҺmc{ZӞ6_+~rY0Ҡ}kOܜ& }mWbX[l ιfL{}eIeKb@+Gb9}4aԜw}{QYFJ :Z6|Z!UԮ¯۫&{ Kpb%桷 <)nw04dwJ다j6}YVx0 C:o|7nv6fpi XHJvJ}eD^>%5x<5b8..8i.v{;C-EEԺҷ39OGo||bIj%H]`OJ Cd^??%aX:_F)Ka?pRsw[ΉR$bPm ҂?NxJ0}Bom~&6)I꽾pq/朳8 F3!iKΣo)~$orސ o1 >cU.-N u x340031QK,L/JeȑN|-0NĈf[ J2*ssOxfAYw[ UpdݳWtƿ>'!L_HSh^n C>M0UVmEL:P.٩Ei9 NNU}a OҶ}נ|<]]f̳tt.a1P%~n!zy Mwk}=jrPeA. Gfa SF)KU~ߟUQQq ÿr*L2:{E1=&@)Wj0GԘԒJ]k7|7cC ԭC3SˋPpj xOrD.>|$!rb/Yz"BҒ̜bxN[ gYkdMν{`˷ x340031QHHKOOgi[8qǗu$!TQ~nAb ߥ.3T"epyizYy n9hZ?Ԇ'BYIQ~˛)'?quk"p%E% NZȿfulJ3:gR8ȿmb9ė`%|f^f^ ;ܧ~Fݙ*Ksrgʭ(?{c3,*3$=ڝ19nM[8P33Sˋ󓳋RRKsJ*$OIPrbڿ*4haQW4biS֞)sKS&nۦsmi6߶Λg_>f`qN~rb!ݷ;1{O'\QqjQYjUlxUMO@;b/E"iLMJxHIwنYZBf{hnt%8̼ҲV~a/-EW ib8~h/xRMk0W̡lm%1mhBǡzc[,SޱwٚRl7ā,V㞣ݱڠ. ҘH.s&|Hl:^=OwV'Ljƭ%$x{ϊx?CzcR lBm gF_dZ圸ZZa;qX--r $uI˲BK\uOLiUԃ#۹,~$@ƅ[iή+~9SЛ_c[Z@GIIFUZ%+l8CB@31q 34p/|Y0ZCY!f! DN PƐigy;ǐ ;S.M2!6K 0BA{fH?G >xS]o0}ϯ86 2!>DĔJKأ&;YvtDb{ƶ/P{-dB [%I'䣨fнh\"Ml3NNyu[,--jQV.,u_ҴxEת!NL.8$]t~yMMq]]ݭq]f*2]wXffSY詳A=KTC*Uzq:j$^T"td[B+#4U^ொѹ8p[u3vyU,"Q|2Z" Љ=P8]j"#B ܞD,[%' t]c7Μ WQ\ðLM?SnEaޫGaTT4'!hə%vkjlQ_^]XS°T!A}zH[uW@ ļt?H. W眲tLN&@P_Z0qs6kKu<&0ss xtEfv{vpEũEeE8Tp ̳ x340031Q,+dp.M 羮8E!DY~Aj^qqHy#µ_ Р2dS*yFOrzM8?%4h]ۿG_nYKpĤT=/kƞTqG{ҒLVg )T_ԚR1HB}WԨlx}}PuO!0E F3ţQ^@y=X=vxx+#DD< D PfC0$IM v۽bg|Y$r `)"pGwEJrX!y79_vu~t9UVPmJFC&9v,+;oEiV^KiُTss\^f 4ڕg<7BHډmIj|WBtwIy}æpS>Ǐ&[mB "8 4qn8h +ې:CnmmHb<)v?ޙ{"P9E(PJ"MڴFy S'_Ŝ%Bqv d \PxS:j$,T כ~l|XK7?=Su]'y0Qv H3J=o[_F"y\aI6x`Ϙ V)p6L8,Ym=1sM_(E-\]sm߷){m$15`=RI\!lkEOk$(f!p˻ [G#Ӑ%M&y9׮5urWrV{xx qhc?5IS$|3B,K~Sl(֨Afg4CWo*QK$<\\wߪq(7jݝAG0_g_F(ùdw0Q;ۗ?qW*l[ ;׸(]s~.iCT!*gI\3KS7 (I Xu+Ow[~VG~vYo 5D2WeVTgAq?{,'z? ;QA z20PGQƵ'8tմdɐYWY;!@z Ni̶O!zyx340031QK,L/JeȑN|-0NĈf[ J2*ssOxfAYw[ UpdݳWtƿ>'!L_HSh^n C>M0UVmEL:P>ή~ \3ÊMYxX반u_G?O7<͞XM9~^vt WG_Wu5ɼ7" *KkeR M2N԰R=(&e&1|HZ<+Щ&slmx 58@5ݱ rm&/>ѐ$bHqFbJ~yq~rv1%ww_2>[6x/x;DUIjqI1ËYYr~vsI-[7@KK2s9n.Re51:ݷ]x340031QK,L/JeȑN|-0NĈf[ J2*ssOxfAYw[ UpdݳWtƿ>'!L_HSh^n C>M0UVmEL:P>ή~ \3ÊMYxX반u_G?O7<͞XM9~^vt WG_Wudx3׼v/N)GKkeR M2N԰R=(&e&1|HZ<+Щ&slmx 58@5ݱ rm&/>ѐ$bHqFbJ~yq~rv1ڮ)folˤZ$Al #uR^i"_ZSϩtv,kq׹W~(xx340031QK,L/JeȑN|-0NĈf[ J2*ssOxfAYw[ Ṵva嬠'XMz /$)4]/79gp\zyjROgW`Wka&,_<]duX:Tkp^fDsfOZ⦜y?/Eyy:TY+Ⱥ둋>LlzꠜUwP0ײ;ˤdƝvEaz PHIMLc̑xb-WS]OMjLqjIi^A%Cfnbf_;]0ĐĔbW̽m 1&bz\ŷU%% ww3L>_\jmrj6D$3!S+YYs~aQ6ex}}PuOLb@ 4#ţb&Wv`aoE1By2| y( 8IF(yP4iOKo|ߞ9NP9P.p1I N]W]]8ʬz[ TRxնII4s$+aiᷢf՞E(?8D̘DridG̒,Bu "8 (q\"(PElNNсZ-|qʪl+Gl>ףfb[Y:%j^JaBlXζhڽw˯^+`c5{-rQ8KG7 %WSڒdI {?.~ѐqHvq]܁o5D2eNTJmq?$~v睝 TU EwC&ztv֞]oC׾ G5M: YEHVXLJcvXMD\!x340031Q,+dc;@q;^;>seŕy)y e XɰM oR*K)n!"䤿 w* J~8rb]w)&)XfBMIILRȰ7g~ؕ&m U6d_#AZ>3*TUl5:cV5Nuՙ*''8.zg|`ӟW[0w-}jVNQi|rbrF*HֺmvBw\13T]nb^bzjH "f'mP9f$f~sNFũEeEӎ_X9#Ix?7NUv>x*l($(5'dEZ7I\[pJDt-TYi Bٴ,6+3?#ec6RFnx340031QK,L/Je0-20EA!,/DtBU%eU0^<Ǹd#7_`n*spsw feez;=5ݓxG3) t sMadSS\^6%hM P>ή~ 3q~\rbv-lKxJ|<\C2dx*Gx)& U νeۮW5L-$UQQq +Пkl%7_y_RR2>s$-X˕}T96((HLNLKg=|En^~mct5ԪԒJ}M2M2\vgW$bNqFbJ~yq~rv1C'3,jbϗWiM DUIjqI1V astt&}8=^xVQo6~篸@ ԥ2뤫"ia+-2kZHʊdIzE?ݝ媶*X2i~\% U.uVB:*3v8 c'XʂuલQw 5sR[hTF3ka% 6"$1 !Ϟ=w KJfY:'aт;ƭUIa[v2楛HSmVN)is6x V>r.hUBgiXLb6dW^݀QLt [zwD1,FUed\ R-Un\:ꭔFٚgTZr$91F< !wB2*PvWTJ3i`>VJax xv8QDc)ܽ~yo|Q%_4M5/ogH MY5Ԭ2&jk{ /G/AZ$Y)[e8etBe )!}+ަ&i6bxDK{$̂ҍً^cٛbAƽ#͐?@NS ,z?{n?BnYCJ!n=s."dj%kơn. ZJ1QVC+`=_kyueL6\HƗHZf6; #cKN V{Ny?k#(Sjjf8ɅuF,+6uF:4@U4OF)$ Iz fFnGף,Laz "% L.Ncz~/tP<†}JznKɓa5JdQYThn>nѵ؊Vd<u*Zڊ^?)Ke3hJlR !pV>2! 3/sOdx>-Z`2B {?E}1ԁ8b[Dv-m$TˆP&O߬$ ^Cio/xѸ"Fη'xZK+r #zˠqC%bGqz|qm/On^%[rTVwmev1v ~72>qQ&sc~;LO2?`ۻΰHP}o|O:,:H=mq)~t̏j>:mBBP(~k=K[Gcq21=7x_i|oFL? ^px7<{_B3<$iHDCWG)F_k!y _8+R0@[(WzG*h~j{QƃvRX̲P&,J*p-e,Ta(#KPH1GgHZ4#1L sXڡY:gƩ~]C-]_.]^NZ۠|P:ojD\oIJN+L,v1ܱ_2Zx\DoEΕQtVgO}6hۛ=;2  &,y ?_~fQ܄F"yshiC}#gBW0l< /߶m&ږ]vr]Rd U.cW rJ&7 /Ty N|,'pފe-@o&H' & eNof7s]_ekϦd6kM?ߓ)p f:$!|MM!Ã#U6aa+t p:ZAE/N;WM a\NC[ CdJG4@1Deh{wLSb.qIu)yab,{F1簻 L\%,\"tj:#(qu\I3xB+2QeP$8=[nƫ?Bx+&8TZ "$j{!zfUں=Y*ْKlK+_\oRl~. +/0璹RxTQk0~~q2aC ҷP&mQYtr=3wU-Odմy&mن!jdjʆH$urۂʾo7lC]30TF*:_e &ѣt;"IB3^Fx!_Lîi54"HI-s/.`[%GOvƃ3twGµ>U1nS6p,<蜾x[}sHߟbvS^xsV1`\OJ%@m$K^gFA^fL DHD ҳƅ E|`#ȠLғyI2 4$'$, 0i$ >i0ꎣGU3F$f\$rP:w@=e9ɋ j.i?@QLWK!bؿ}h ڢ37V%~n qsM|茮#A7((j_7p(ѹvx5Nx^$dG}1KE楸nWxvFk ue 1u@n6DhpӻOD܈U%fָR47W#qx m 5uM׍$@A4$@)pզijQ#ehtra&ΐr9_dXזtl|nBZj7)E5x}g_̋_x{oXԟ,˒$ {D"$KgN9M!!xggh^vF';;J=vܑܫ{ ͢dfzz/B]W;uE8/w(r~ tD%/"*aT"ъY\cٳőL"DeDPED2 eG]C906kבF9Bq*!΄UBRx7N(})&> V܃q/AˠAЗAjf|Ooi`6~v~}i;/7wG{Ѡk\6!%CL/``qVJs|fZZ}SW+ Rs<e'FHTIlɊ %z08;) qe(D/ =&-1^8NI5+()qgeCRDp*8xǑW&zSeO͠%̈,5\tQG5qˡT&g̝IzzqQ )+Myk )c7I=~@HUnh3TlzRӧŅP[̥+u (Kk%?I ÷;z[c(FI*tw$W֑D%Nu(2Xi}/Â1,X /zt=;ۣY+n PZpd̀uJїvuOd|񧽻C*/K2\bWs%^ l=bE%V Ge"@.EDETKDkě%P$J+Ukj^VhʬSY`#@V4Τe ;&LF1CqEqQn[KNVWF /VW.E [|2XyU_\Hu8k%]H~HLhKT4$9䢠pCeYOdXMy%&T(W$mQ{EZ#ߧJZ. )FI+q,&}q1lb{Ɔyk wn~aoY9¿UM֒oe wiu&c`}@#Q @DC Ol!$U):;'& ɦxq&Aq7ƎW!$/'%ITEDlIJgN?2]3a` ΌIl/, ,$[k)h*UqDh_ (FdfE)4 df6%B^6s*&gY5݅FA$i\\p\0d^‘Z祤b7]XdS,Spݢuy)84pToȴ-غNcf"],Co>-@r;H9qPzwpۤ*P &}鏱 (1f)l&0+S8ObI$Q)FS<7Bb&_7ڊg $K&`%!cx7DqLA-[Iƕ= X0)J5ph  β7S$C!(p9 av`!L9D$KIjUS1lVRnˡTx\dv&wpQ^~E fP 7@ <1]|ڽފB] j|Ꚇ#$bS7'3gRJ6 c贈 %'RS[`hm\M֒D:yB#.\cjq&\~EڼnF(!kLB07kPy(JUa?BߥR٫˺>184MI'1}5@\VMEeqKŮ$A^qlzɛ->Y~7oz5BEB W^|,'p ^p)ۦ_uTL*JS!cat]=H0rVP?J<i]~Eè&S5a72Yq10'DۙL2/*?Dx ^X~or_CG?DWz:g^po8-?XSsS_4/2Gǝs4ǁCǩH2zoxYsH=ĆGT$ٔץ T0~_ό^[w$LO?i2vG>&HozK`w-#`$#n>Qah<V+ϟuH3IrvtQ΁S<r*&#W V8 ;R4[4F;s8z8ZfaZC\6?S"^!hw mo,y1&&k /e·Cm'fj&Iȱ[J&UnPa1!`ytⰜͫ}2%'^kᐢx$j) HDPi5zCu}A@Chy/X(/P;ġd8p(p< O؍~[]p +4ۤ(7ݪMqK?z/X2cwQ$B8{2P=QE:/R<#C n[H@d1;u,[Vb}ޚkSqPb,[*T(ޮX:;\{QQL.58VxC`. ۉ ҫ_fNߪٖmb*;BJDK)p=1@Nɕ¡TxAplmxN`VJKa솸 Q(`ٙ/ӿQ2Z5⏂uk`9J=QQtt; b=3A+Pfsb+d\ReSx.eC岺h_:vs fi#|=^f^X %>2@]8;8ڄI^uKd"H_Q qm- 3Iʛp"OF1wi{$|+n ~1G,c%9rR2Gk\gfvG2S?+ n"P0 |YYAq( J6TKfn; gL Vx1S씢ňpNXAkCg]ޟV[5Z uCpQW_J$3\T*V xc֖f>v1[L=&)38,+b"U/+?iբ7%eަGxɺW:ţ$bG~bM]p7ߕ}SZkd2%$^C|:滌O ,eȡNVOvп\8r3>WHQ(3uc'])^ȑĦ,0}>cAjH9ԣUMw=qPXN|Gsʩ魘p(Xd6$ lĶut1hV") :+aظn᪐m$\/H]V 6| J6 ^X-!dV(jU-U( Z"b4GզJ-l촆?.ŚK 2UqɁUJEcup/']4[^h3-%'2a1H̪XQ*u"X>̣VΙ63tD)^F{:/,ډr[+\!T0F{cw.bdjg5+ BJh46Dc`~̌a=3SfҪ_%-8txM!-%= މTݐ'⻊^c}D H1L.47n$EҼ5xݡP@Ngy}9 |֗ P(Vf)޶20t`6xS% g{gg8 dǫ ~ry!A%6F@/Æ(v[܋6>o9`336Z%_ʧFb)Lx:(JPR:GFhi%#Xr-t>Jt<%)7"O XɕHk-ѰZƾulQ2Wm BpMҖҔ?V+.殁w=i{^߃DLQƣʛbL0=Z !& aCuaD/`ݚ׾Ŀ!#l|/,05oa"Ҷ Nf /vTn(Mei8HL{X_Z1X0S\l5yh4nU2wM?ͺiGiȿFHb)hkUK{L6(&dS|cJ/bgDY͗8SN*Ⳛ1A:9y.5 u[6+AB[Ǜw΂#7i@aۚOKN,e>G^l%xWmsD_$ȡvMt t)2twtk;ϞN (sbĴ;y]Cg2OȋtπFcFn{q;N(neIJcqT~ŝċ+nqk bB_zG{- r @Fβ>sUEYk#?0V1vIք Ƕ/޼?][BN[ZOm !mø5E{ʹoD=3Yf.>-O4U@kQJ&t- uB 78=Q_:2xp5CHQc&kj}SFw"g RQ|c5wW2,n&Ci;OﭾfO@YcIl7v<8}iiæure^NҦc39X1 =Ǵ#,+F[LoYJlYI*Eڀɹ~ lA'QaG1U8m%Mn.v_˛T?0K:B':, ] hhY: =">%oϯ*NvC:RP} U^;~C* w!K^~5+KVoGYJ쾒D qX̛<ӝ[-Q>ݳUTEo%,9'w+͡y+mSJ9L`+iBXyA5[5oX0f詷2w;rXoC+5|\{2oa? XxXmk#G_QfcId98,vX) AgLKyiqy^ctWW?UTu.v]z-k<].(4&8-'G#^"W":ODEz'讌b|1**%fF,MEMY]j%B*TR).2Q :H38%nUP֑n _t(0Ӻ>AdEN) ͒_T(EO-+>RTO2TTm+9]0C%̷cRFJU"=g9+6w(Ww /^wwbL͗?>>|{X=>|?_=N??@JvHZv46Rr#cؕoh+h[E*EITP*3#2 MUdZוCPT*Rx"cؾwLe%syzG*%2)Rq]*~&-[wX.J*Oʃ2@Lqu,9rf1%Rm"lLi0 2IBUl#|KhP 9}A,KI]~QuAro+6$bCYdp1ܿ"}% VOS= ?Zm:ְd]sP)ϭ{%42_;jO8*#E B`uA#Z,թK[=⢆w0@!d҂T ̰\)R(O<5k[azoH֥XЮVVQ>&(#)NLePzRxÎ+'<1ZBIg;ՂP&(95¤A3`E\G:[I6;[>XwSb%#HV(=l%uA˘l (-eju,uQ7'7Xj>?a[ .PHANj\?X;b2PRHtc x.c3ls0? n~R%61CNO&\N՞C5RxS@#+ u2jT2鸱_ XM:pc;WQUE5:J9̰p^ԣ)0WN}Řa3,\L{s ı9kغjڡ t݅ ׋=]k.MmV 7QP8+ Cp^ebesf6M)k+ʖx OK7D 5Ս]F5fιPZ<_l~oGZb ?xa.bq4 #\ś ;ZV/qEw"u OCm#\4ѢAUel:}3&rw܃ȉYm<}&p;0]e~h4hAץh6idj6id~Rpn?gkr/ {fV6q{vdv\*bC˓.- vxWo6■9ÐŌ+,hvȢ*Ruaޑ-vu?Աݏxb&MT˖AC:9>H*Sa'!,:[j`D/*ZE252"eNAE&"|..stJgApP:R4T[*24U$)%y(F>4%H@=[ϖu?Ln`|μiF>`&>33oLpCcm>}ǻ¿ Y"WAT WxmkY\ Jun@wTWo\<)UCt%z~x'*c?L}W" 5>X+wX^.{e=;ݺlW %wG&D$ֽ͐o%[: 9WGxxWmo6_qKPH9-0`ȐYm2gED\dR#ư;JnQ;{{0\Lj:F~pn:C1vOTN*KJemR} bV  4jX`k̘Y\OnJ+[u1@Ug:;z7p/`%U`y|1mDnqۚcF/ύ. Cf1v-N-ǒQG뵫M+}XyFb_OYExqİ^{bp*XX 1Ө!LXCPQ͂ Cp4jmv%RPH;W8S/Mt}kP 2APgg1oxӬ /=9ڣA x +B5"RS+T7ʓ7*~Bc.ev6HD%+9¶,$5y|+v<c: }A^R/y.2&oaׅkV9[3LGCɷ6"}&~{ n%1qqG<oǶƩnC1Ҩ[a÷w1'ҖvVD3 o-M;*Un1˲ĪgT{ -qGNhpB1+a@0 %y+}r[[w ųRqudQ/iLBkg pBxGy?}Q $tۈmyPKLJM~Sa'D""V@I0le#* U+v?=bَop g-?K;nx6Tk^z }X=nB11tYR~G^nȉʽԼ',DVMb 6LXԯ֜W~zb1/8^vyPi>cE4Xj)e+U=N1rPY$9zbVS,ߎZޫ>14J=x۪4"V{sE}pId%sW&rwFZ~b;~4{ݥ#+/ĶxM%M%IM5m?8美xZoFbt(?98 u-rR!PJbM #ñ{/sܝo Gqڞi^Z,̢8tآi3g|Ǔiga=>iqS#H#b<K4G8K١JOjҬ` A"l'!,NlArS& X6XPH~E1ۏ~ |NVDwֽt[`X|H.Ec ' F2 Y`s$d"AU"GÞm+H٫ ^wޠ~p Zܜ^ֿagm vzwudNyNɘ# 8 2 1Ms8ľ"p6ɖkk"VMhMֻc?l +j7{N7`'l38H0TWott@ i iH͍aVnC)}r9xpޞ7 IKʰ]K߆߽4^!-?E@$vV9ڶѮU~e-  bNģPU6XZ“$ ꐂ& |(EY\ЪV#}}0ϓ|a2f<\Bu} #sZkttt jy Rڎ== ٧0q<1S_yh OT E!Vi9 ⒜dyC,N#4:d=)5n ;˫,厃֚$ 8<EGDA~ D/R ,nj +Mb8(+BKQ7tq?]dXp35Ḧ)Ous;"]/^›>~T"v0`9/Iz 2Jʊ; a$w'x\,RD[cx%Dx^{7}ϳ-K[E% &xAqSZO{B&s},l>KL3Q<Ej=C€TO?)KSbM=Bѽ+2Hi0f;y)_>sU((? K0J@qw6Ox|@,H&-yIԿ;h~uvċxwE~m)d|`?}+!PiK+LXL|3&wEJfFeo#ޒ,VF[U9U~nهAw/N?\޲7Zd8ŵ)HA0HfGH+`9ԭ`QG W܂7DٲYi Coh,4eRV'"Yt5}qi8tP7j#Xe-G3%|ɓ3ӻ7pc'^]b-a{& &%D+6A94Ψ3H!ݺ O'޽",o2H}]螉z'("ܚ [ܹN(0R4逥SlBPgEabbywйGa" cW옒je,8Jdp$@Dyͻ7oAh)2fKDEZ@G%†يbM2/-՘N)ʻGLŪE$kɳYOS9a/7{9~En9r,-T }{J2FycT@6e 3*8C@1vk0 %M>[0 w* Kto>ڞ@L4\ԧOPẋ24U?F IE[<"rX@*Z&1$a?[Cdž`[襙!͖+iߌEK'd&:e}aܽ(SN\ d4:? NVݝlˀBw‹NCox ¸|A@դg~)XePB#! t=3_V: b3@TH#kD67 DPI@&El֪o+bȑ4k ֪Tw $*ÿe@ņ»Nj614\k` tv_BcWp"YyB䗛kޜK,/LYk 5@Gj;w7m(MB6dSNS5C:'Qw0oUwQ?8W?c5IqNDO $ ~-ߪ=pw'm2 ޷Ñꪳh?:?l8c oG; &=j{rBb= #rgGw'万?]瓞hG':vߑÑ%$>&ivh(p0r&jy;RL*m@hrfګx9WqNb fC ;([ӛ8ޤڃӣ^w0^_'StݾV?흎MvǓYw~{y Q!ax/ΏϦxxNHzE: :VNI.V1~fqnUT,AG癇%W{x#Ox|%H<'{roCf.ovFD0O8i }O`Q[kRP/a{fQ59:ŋ="%g>JM4鴍I H}3iNozf;挸J5""sr=l.4d=խ IBRg*Ӑ>%hr=-X?ڋk6Hq @3QzK i(!(2;=i.Z+t][jzȪ۶6hx9 6ZGyD˒<TBY4t;1l0>[nkUbc1P"+w2f7)S5x)$1{+ :k,Nw&ru%Cy[n*}a&OXinѱj$9LaT\6)S [%ND8d! xB[x{iA{EwBq^YCkRa -Rmb[8Y?eYdkclx~s=<;\7pSk3btUe>iLU%VG"V 陙q 9.IIehkl:b\R"8mTyPI]߬_)̤Lb%*8FG2Q{N 1L!j?:+cÚ-N]AHdB`LDD:T 4b,L_~+d%ɲKPx5CJH2t^gLc ;-2mݦ0.:wL@y](>52KpkL3[R'U,sGyqBd6Κ]nfP]$tVuvU4s9dVq3櫙=GKKrT%B߷ .N lmhLڹ%I*@ޞp.Cc3QF[w̯f:gv,RxqmM(ʌRRU ˏQJ5M&`#ظy S=iɽB _7Tz +cB v7l+8ޢAFcK)-ZUkYcs+,YFS0XJV\٩ʘ5Q ["q߀ဝ?6UXkg$qSmBYb1kX|3L̚.Y j,E-xvzk'4H`I-lߋ52 w}d6N IhK{ߏMMmaN;)}c2ӂ%J-؆O!.D!U+PsQkzg{]yj8 jH*\sz:{.L>CU^x[`%gU <pi27Ape kv/˶ٗ.ilÝՏm[ 1B\a.sk$c ms~ף +XQlb'] Í3z>-[6.9l5o(l KYI˗)bus(g71hܘz;nRr7H8mm:4Яwu$ ZڞPugwhVf+Mz\95Lʮ0Wpp׿ |/La0Q5@lh^!*Q(4RbRZ#`u$uΔӛVSCL Kį6.4ao&6+cx^Onٕxix%'kL{NadaK&R0v;vgjP8y}e\a1YV}I2oRiÖQH0*ASע+K;Te[NQ=uGY!.%/>޲<&8kɍݕD4]/>꧂ ۚ> '|,˧HD%Pa_1zD P^H#SNcEBWà,dn<~nٺ[6fm?PDfq Fdt,A>q &xڧ(8=p ƱS3&YIN5O<+UYmph'*XC)l 8P![, ?+s[qV[YfM!"b4#8&3sdmt|Xs[Jm5xM@қ -BJu9XQP}[lM)A*MwqE,lMyBv%^)L隧E[#X8ڎc7Ex~&HT(!7Xsm_&M{3U=o "oިê4E GYJ\1` ۈܬ XW V;xjc'\ Q*YjO9^J*u+0x6R HgB]QFE$Øc{M!^cqcM'`HiipX-t;+ӳ]>iK:&C)cִW~m7t2`lFSg ̯9"9)OWzYLPO,~7{^>"冷 ASIWuDȏtC^3W s~)SmxNE*ù^jb-p7ڡj ,$$Y CQʢI3@6 -t~m#xZ[SJ~W l UNEpcSI6I94+!f~=3d$ DL߻gilDV72ߞAtyHl5la(^$2K{u7[8UAQR$b~Ceo"yK7mbrZ$B< Sr} -A(ٵi.({+enA(RjeKA&Ѯd 7 =A$]xQ", <Yb: ̓ѥRzm|RzM~ )z"b,,N(!J(AmGM2-I0`\)GXEiG~Z}S̺*)OGq/$z*]aHs-GZA<*N$Ӻ%ĉM4Й30}zdMMӓX'5DF6?sɄ 6Fy0zO9Oi88LAv:)Xjbtj;G'm Om:LGLxEg3-ΝĆ} Fاh_/49Cfj9tpXJ:}rOt2m !nh+fPhh NԷN,Cca PHOld~9^ՙM3Y)Ɇ8 0GF*|69T塾m A iEs'ZcaS\2Qg~@p=nnɴc~8MWR.>ѽB%TyڑYE&'&3d Oñe_f;#gw`#uj#rn`.My q5ToHoɽ"AdI~ZF2AXy%Eƞ~)W40Lky%XD\řGZkBt3nV"t1pĜ dnsM/pq-A'O\q?p8, dbRgV|"aޝ&ԣ_/rT̖`(fJ'Jx]·;ʀ"yI43,[z[S$C^բx]֬P8|AO 1_Z/3X4c4DQRFg2N2T&W-"8O4mSSLWOC^ͶdMFrf5opتYT-;өBUKnM9鴟PThJQTN¨Ł^4_']D!hlā 4Ly`sJ4t˝y7 ehڭpo'ma0OG8[=!ʦ\DB/xܓ{xd h(ƙ7YzQdU M@ibXu-׵W'\\RUe5_9q-{J\'y+ӵQ|]44I*"#*PVޠ\AQ͙XXZpoo6)ɆIv%>~WvyLdϢQB7I2(xzuj3Rŕc^T5|,JWX'Y %TwmuާuHvنa 'VGhw2X:|GTջ4q$AI)9Ά&o\ vnTd6IUt p,A\6,tH ?!,p}{<*L%BWęWw>xWmo6_qUfBvHmV i CO]b- gl;Jlt!ٳht4Er7AZ)VzJKw|7xu8G1 ,^lBz?^= )rU4}_ϫA u=)a4jT9&:pޭ230'f>(y Vˤ*ae!hĆ9?DHWA1+6'#̮\.v:lEN˼+/ jH(K?G"tSDbatk g+T[+2qB"?{x};{t6| #㓌JɋlI'و3ɟ89$(R4=.W נ˾8W]@*yHk%+,IUr>h]' >NL˗gMbQA0}{ C:,J>/EЧ3T"&hEҫ=)S`J >}Nþ/`%3T]]{'N,smbcj[p7ℱb+ҏ,7t4WwĿ٦޶ qr+砎@({o^߾ Bg^#3 L_~|i >ꅤW__Fd;xjZMoneiO%r:}rJ6vv+yQ9mcwE* e21+bO)&B抜U6}SYs/pu⒟qŸs8Z գ]s^O~ F xU 0DJRLX )T{7̼ հnN5GcӈqZϔ}AbM/RDև? .[oz|Purqi;؀Ir8txXo6_MQ,9v,aYnƊ$EDDeQ#:{GIibsxg?+MeWv29 ~Xb^&cWZ ,Jr)xHdFĬb vjHAx:dpP V` ,) #! Kd*Dn@lg`Kin $dKKr>_140gnm[.!wdCgtގ^]\/vSg0iO!5\'SL)L YE|ZZDˌJkV4Via[`iph|~;]at`}8ft1fWثף%ްˏ.D08dcA&Z5ô9&LdYgg3rfЋY*rK@( =/j& P2>5*E$&seń,".ۣ]%"WᘕoYldB\r(IbkQ*k ]_x^'lnֿX$H)FJVx:W|̣4Fs=+ȉk7҉١ol?ƔF3U ꈰqVC&WnBG!Z<:tJ X6v,V8Ӷ !4wPu!NCːm1R@k=e6C]6w&DmahR!G;]sJ()P eonk^kNj 3~ ?:?:}O]}V-CKid:.CCRve$Me;kuڶsd jIػnTz̅ t٢N>_r*-SPdN܎#̀3cݦtߑ~4i؆* <Pꏫfu8ut(?__u`OgJRov}g%}-lTa i{oO_{sC u**wpvtQxZ+40ԣmn>ʄdv01@kC8>ikt6>T?n]/V3t귊xVaOA~y5 bkhshM-ؽ.S;hRk@Ayof컍TknW2VWN}Hf8X{'FߜXO'{+|zE!2of/Vjw  .}{Wjr ~o +,:Ͻ2/ NHd"zl*"ٓ".dc;؁5^@2a<3DU6Y'#EPXڡ+>auܸy]/aE7=(m%+-0FIկa@tspN(P,"֦Î{=V9,⦬I_P2%Ê8!N!V%z4mPm~gms@U X J*I OH>LLl> []VG_^BnS6T$FL&E O촷pm:^tNgDH[TSm z2u.Zm %sq,Rw<486 oPB4J׉8#b]дAJz}XYOkB1棵\STv4WHH m:+qDh7i/sGڃLָ_IF#b BUexTMO0 Wx״ ΁Д%h*qaq}I`Dn|6+֕K!iA܂0 5y4yt!cn#rN9u@NXWgk<&HoA`)kK;¬')aL6qOHm%&x7C`^"' x!6EWlR+ 6c,)FѿdBtƆD]/Į ujf,!HHY[NIAns7;~R5^Jb}74+9f_HGw-8(Kx]@Ww4MlLl%%غڦiA3Sf؏ÇS7] ȼ9sΕ&cӷe4puEG(J /*e'#Ts-5Bq4 s+0Yq>OqhE1-O$\py.WWoay*v"IPzB`@՗O62\٢sƌx.NHsY)3.,Z]&p,>o5X*ON W$>"3g4ȚZ᫗ͿwguM <‘Bᄍm]m( jb 6Jːg 8r?ǜDh\p WR"BIC(;P?an5ž[֝zI/h3atu6SoZK&fT~E/yKx46 R;$~ɢd@WII-_NץoA|xmj1v-ƵC) eBnj܄Ll-n)%|UOm~W~עp(T|6nBp#)]_&km`?H; r*Ŷܰ4TQKE`5qڻeQrVBWB;LH[NI~±!rxy%%*LcoO38ߊrhUd5eKFf\N>g T~OH{0ٲxVQo0~W\&[!Z)DIW$ΊZ MB j/-Hqw;Vi>U;N .Ak&Oqxw<%ї ēf}6/ [4O2F)О,IsJ| ðwAҜTq1cAuFћ5B S@0j;Q:̢Fp;,Id 3g&Aַ[^dY=O(&yM!-]=ȒkTB+wWVDH`(VVoǕ hz+8&(FF0RO56l-?O~{0M2r5QVRF~|½Bצ#5m5+xX٪Yf='P[;OxuMk1+m-.y)EDѢRIɴ7nB&~{Wsl{}g^emV||UUh~CP[:ȍ2^\:J8q=䌯\OޗfP'mt9<-50s2aQdxhs(bC52y@WPD}^xZkSί@Q ]\]OqJ#FK=fX6qo߾WEUL|gn|mClq[E7bbX7J w_8+=? FoFW<."hMC_L~I[kDN!4OU̦x>Mo@ 4[VXI [5)?W CXZ^I"89_ϟDI"䑚@eDаH;31i.E4V>O$" cl "5Ϫ|lgFNzV5K; zp]t*Xba;]q=|?I/WvTMia תeI4#pk; *z\Q&} 6+2VOP% u3+W?;pi2ͻo :I=x|q}xMUHVVRM28EU5{l/Ƨ@./[pkeW-$dHk$*)k(fөFZO`o/9"4"fs`yd)w?bZ8G~(7q|oEDf0s?ҡCHȅߊXԏKVm]{,C"ރv4B;j4{ص"tq+.fz+8IvlH3uXә67@GaFeGZ`P(Dd]l KIoR`k:u^Y9J?K69e~pu8D@ZaetQ8R=YJ8u,05UDᒋ5r͠h ks2XSۤ^ V ;-QqYaˉܹ)2hyuVMM :ʜh Z!1zr`S1b)auVyKʖGم iʙG%wG~E!/'>肃K 1M.uH >.)ԇx*SG#!2tj lW4 ݺ(u K)X;@L'iZ_McVhȸ  2'/{ xj2ͮeF ǘi%󄕅UZ?Trz QP5GX|pWi5Q4=CXwy[7X3n%Tp+LL蛍74L’@|Q7|Y$*?վ m ɀ#"мcՋԡ8X`2rKM5QlLUW :!:&Zjꍓ1pDr+&,ul)[dS=?m,z=Ha:eM1BBe_ \2'p3P4u {䏍IxŘ)cX 9wi'[/uuU 101UsgbX(#1;ndSA+mJW?MD(C`)VvOGG*@x+Mj]dk=]y}=OOTaabsgpdZ3::Fh%9tT!~V׹|{ s)Uui_ 亻׌ mF̻EKӁ a^@M量y vDC@~(ӣGtطˋחNap3LzM:Us劍zYYL=vt^ݱY.k*y?c%x፿L`ycgcFQncT:3e~˙M|/KV<<. wDU;?d/VަUɭJlmy}0qF(r:S@l{Ewo6Ƕ 0k3njwWwU(a!6r=_wgGf`.Kʜ <.0Q׀y$zG$Rjs{r;Ntyo tOGm"Qw4TXeSڗ^Mx-%~kX sJK W7_E%v$BH%JF*r q 8 Zbh0^!A?WnH2Gtlz9j}iJ'($FtJ𯁶SGU2 JK러7-syĄɝqA>  Fn㈇{ -ŸH O) G\oKFGnd)Ǣ^ S"*KŰ2M&a3o Ŝ;;mPZ@K&;@b=¯{}z%v~*xK%cVol1&c䧻VykAL]ӳ^jeي#mdIukR_-^ß=У$ު-kg݌YұK vV_cf&SJ #_ְ0_iXq.vOTĆέH7Yn8!;5[4 T*HMIZ8 Yh8 ) kZq x]msǑ_11G(!RSWu۬H1.XkXź}!ŗJLOMwOOhwOUx|oή_i9+7ͺdgo^ˇUqs[g_鼼/y*bL}e6Ň}o~WUQ.̳ggOf\<+)W'/G@X]2bRL> Xγ{SLv.}S}ʁլUqfY* h]|v46'̷G⇳hl˳㓋Sl|rzor 2?,WHdc>qNF-5^S82t-nMnnjr2_YwE HA,3^ɄdWU9'&{/w,WŢFŔp_v(1J}Ra._;;N]{UNVSj^܀^e*sV W٬'!/e .\Bη|O=lC},UOn 3f1 :T=|5::OkdHj+cvɯf/ׇ|.1>8ؓ7磗'c(iU\jgwG㋳7S|xve|c!0˯4,xx<@C-?ɏo&Gc?9G%em'n9&7<`ĭ"N%hz03bVco^Ns|tsL1jߕufI+} a]s\rӒUPU67790 YeJ/yaD%,4/?QHi U!)}~Cd٪_TcJI SٗN/sB,],yk u8bIc%LOa:Ƥu}$nпd?8~499=<џG2C2Qe >9磣x}p<£G_vk`*NT[/ gN1̡k(2~~Vhgh ag5MC'AL޾ru|MiEb^e3 TӁ߯v秣 sv$?Ā*äODϒluA0mSAUߛÃg;9mkկ6#sL&*_H@٤.'$W&vB,V庸@gjbDz!ْ# ':amo*}Gmz%hz䚝7X/1hMw5 a ;UU\܇EĊ.2qXje_)I6*/>iUJ*f{theǧcO_gUd -C_yՔ=UT=ya.ilV3{+ 8;b5o|N17ygwgMjBU%\xX,tG)DbgYtePqJ$rHbKHMĜBvuޖb@^L2p4%5z]'RE ?D\g&0}rzvfrct@VnGdo5jIl.Rh-KQUy'Y0&٤) 2{9Ru4 fWk؜"m Br- m榄 uJ"{JӀ֫ThpqaRmeHLu.?y  Xe< ~=xZX8ɗ'LLGB\Meb$>a"e7yJ}!?:961u?9?|4o^?}u+#z^h/&TRCݎDr!Z:2HJBs![ 9 KqBODM$O*Eu UWȾRh TEE=5Z|NVD_/-K@~[c>Aj[z08Q4wd`x-#VVcx r@"%^[M|2ih5i4ڤ:2H@I?ۭm/T61#(7T]e;׋V -墴xbKiJIPrg4#s6k)y:ȈG&=)(#$d^%¥XI(ȫeibn: ?N[ F2ԥpDjF-8%`$l/M+O LlmlԜrVlMp.$8iGCt0'? h~ϐ \̫Aj [ĘՎa%ch:=.a7A KkahY1V,g:iXvD." JV`mq|py:vWH-7zC tD!z'Sݞe=ݮcNu,ҨL4~aXYY!l=|:+6#&wHp.=*u__uΨ~ E++>`HI s!+:<{K/&->m^S9OZGׂDhԬ`eF6XAQc9/;rݰnUDcRrxWrǟPsD/L\2׈ }6VY/:,3{SYҙJP",6ܢbȹA} [ HY,K oKאrѝy1f8K 02?=Y?Ah3~[JXgGMm1KBeN#:VqLgӉ3ޣ@Yw&Fb+ rj-/Att~`vVq j)tuT;leNq;>H86)1sEI8ŶgճTJŢ*QbrHc,XA{1zKT;dw/4 -8fi,m@չab)zDEkG=ݻL5B[YEUxEX9!c3qpG jc\QBL{.K^Y)>V$="*1D*CkItʻF]l3%c+i.G=2PП$,-'~aOyZ[HAŭ9'jLnवG[^σlu>_ h n@(1HܖW= ˪mi]DD;lAb>l|eL]5r7Kq7[EE#"PtnuYʑ|q qnśKp^5A Z)FP:[Gz!mv|N--$@H oDrvpuJ%a@٪< (5U9H4ܧ TSזfP@i+tf ADaQaPb]x@eQ}UπJs3a#b\llW9.#C)Nxj|* up ETM]s8e.{Gѡ{Ȕ528fۑٸÎ3KN!!faG|).5Mr4OC|g təU' 1>n<3-pCWFʪwrQŻw8˳@;\bS# 4NK)8/m(~ַmܙjZz'X[>6Ft bظ-Xc+7o-vq7[WE#FC|頋,΄fY>$_n#F,[aɔd?<'WC,/%GmBԬ Q|kT8}]*9 `[; W^{u6]A~񊠘]%L0l.݁#n>6? r K~ (v 4Rz/%>g/LdR#H@J6_Ş RJO-Jר~`9ErFӲFLmJÔ\"wsy׸R(2:0 ۉapQ n6E:EH{*ei>sc8+Qq{_*W)PMrHy?:W͡ H$HDo\F}E+z- 0re~Hy,"s+ s"=8uO[ѣ8k5il.n5{oE O?p(3{ @\p<'J6G;֠t0x\Qʕ'ѳ '4/ϒ3RXEAI4KϛZ C؁e- $gEkp0p^7A)DՆ( c a^Mշ$ܱm#Wq9CݰpkJZ2H@Ƚ'H/ OSr>wgPR{&hFAvk7|B6 LR/q}m^9\p5y&P*GR.BiF+_bRIF"@Y5 UgCVðSɞ9X0Vx0:⩑Ηsۧ8x4y5qj t"L:-mlKF6_J%uJX=i.1FZ`Іdo6 0 ypkv`3'_ٕlj&I) qNeOc0{nj[ Ь&:e"94n+k6їU ^?~AuvT)fNo1mٕtb(a;ZX_#`fV7ޒdu 鿵"[ĥ|<Q /׹ *^&"J/a m$˚gwR*6QatƮw)lg|;)Y\bICCp_60 ô$G OFXbrzz4pQ޸tZvYrhcmmPu2譍Giڏ/?]j}Ǵ`𪞌;̤_1)6Lfq9bt2xɅXqaN:e) :T#w9!&+ N`DKxصqdt+{~cϷ[A{ifnDnO^Fk~b.h4ۺBnat 2-܏PtSBXnNk4v-,Qq!dRJvH)[ K8/znR^/듶!to!V]X%}SBߤQTO[IkϦN( !jq#.u!'b27R=ܖ [|.)^H-ʽ("~'%;jn./lpvxXmo6_1M|8nsbDldR%8E/Yg3os ۿBBn/7sWQ·E!ˣ~Ȓk;5+$)k#o HH,fj`He1MQq/-u%,8ݹm ~&@- Cjf`kgm}99y]17[<ȊjS5eVރ#Q{`#Rź`/}+`,VgjJOh뻻fwvaq]p~^,?1TRk 8`ESrL % rتg%5{a(P3Z* &V{Mc(m0NgAvSȂۄ2FY \$1GW[DFl%&jfwz6HA7+!P -ٞ'0g)Ll>ͼ7fJu0x2UN0'1VJ)c_c My9ʢ&f=LJ'2t^;6SFMf')܈-\WrW2J&`$]WbHGAHeEE&\)P OF+jeSj5oBO>B>f0@_ё{q pIc@Cjn JUTHZRuF67z Ih!%*jǑѦUr:Ua=l!g@<ܲ%]C}@u%gi69@C9EQyK^=߽.W'UoKl(C& ,|&)Si[Ԣ2tufF<co#4lدdgrhɫ;ͻc]v޽8xynN_o_)4VOD zB:«-&㊯8nQG<r^若D(d#\ҦB8wۄ}LZESB3zijVBf9PFXJNuN*·J&-3T6OL⺹{.8Eg ` )t\Ӱ#:NyĝYg):ij{r@~qJ, }OWt ݸ O'ރ汰~Abeͷ0erkz7َ#tw\OZ޹)RdЩ8'IY1?wO$.| KUmXy)<ȳP ɻUl1 $h.wFKI_9.I엤.ÁZs+,DNj{貞R*V/QSD|_f+V)ƜLoUQ"+2"uK>t.rT}T^6"e:g [|aY \| orklQ:c)mySvND`^:eC&&] **YIJTm3nH%ȞS(!lچA_qjfp!1ASK&k4j͜N뺁ƪf"E=fƛL ^{|fF _Zش C -|в&e7~kbSpQUN\9})+dDD=AU'rV­P<"!dR`0w}3|<څ 7po^j|0$]إ2bNAPq#mQ@#u-xgB@*ӷ҇x1QWobcg^,TOYXPty'8=( m: ؾK%1ޜ*&a7jNEښ% e IQΟ8xCϖKOPUm\Q`$ z$9!7raTЙĽ?A3߲'EwoahCJ~a .3p7׷wp𚇏y\t1 K^8+4YNӅG D"$U5U) c(&i#7U4\ϫPxƇ04U7E IwE[6"X^/ߵuG0Jt@ Nvm>7fvic.|6WY&;e}bԽ+UN!L /d4z4 V[lK\5[^N!7< Eb\>B_G+=&`peZ5x~cCx=Fw|e7P] +]5LGZ DyFRj$@:8\lK6z6RM ]W?r b!ޜkJUri9Ra4zAu+RC q8 4N$ & n*oao%QY *R9 /AٌT9X c4 ]&EB-_C"TeRL]oZ}2CP0r<æ~lϓ|#SB'XA(#59_JxZoFbt%?98 umrR!PJbM #+vw3ٙ}=y{%lYLӤ( dabH flGic8}zp)'/O< yΊ)gY0/=dx.4a}V'zul,- `(`QfYɈe4U`"Jlұ ǂB23-n?==l+'XmE/{gݫ~cs!X?ϣ[.YQ0qҜcHߧ<* &x rHy4.l@\A^Y?MKw]g׷w׻;Ի:o2QA'K`2"1MlƘ&刌q4¾aAF|FG1J)@} $ 1j?v(O#ػVQ!iIֽߔ5$=1G*GV9ڶQ嫨-&;zFY C1ȀxeJʆT\Kx fZR$Z<FFe~ŗ<a0z,EYVtUF,k36:a')rmq2|E^̷`2=k]aJѵ+,`@+Oa{c{$AO1(MlN} T-RWZ*Z4M6( Q0HsA$7JQR7a'}p &Z_67 aGsy&qpZA~ 68 Ez{ai{˫C$K1R23 #b5Mn9)]f`V*\o rMup8lnVaGk%KxJD,{ )Ԕ&=i소bCd-ɝ 5W)Kˌ6C:Q.u[jARA5hCo%yV7t q/(".ypTk7O(cX͇bb;8^rp@ri*gH':{HɔV "eߞ}_׶"t^@G ;ط-ŝd{!7eb*}~YTko4J{dž2-ˡ ./7}wy9=nIpx=)-򯶤+6C NAUpr-(pzY*/MczcDpJ bO1ju"KW7Ár2nT2 &7PYMudr10Let1_.cG1 o.HH _t^}#ɆI *JMP8 ;3dNܙuF\iU{bP ӌSeQSwB `t6e-x)HW'sJ&hūhYRɣF]~\5T,SEbv?)7V>dG(iE ,еw}5ǭa 9qwo}D하LՆ5hVo҅bHJɸv 3q&-%Uz\ b͓/IN޽)ZZtY) qAޗw! R$$k³Y;詜0HUf;șFY;ȹ-gQ]ljLvPڐ17 QiuфR툔J7ۭ@Rz 5bgZ:CJ0yݻ|neG. \9v֐sA5E/DH_j}`Dٺ  4WRވuϟR&2[\.qDf~zYUqX]T%-ew)b]zb:Zy;Ke/ҳw-A^Dd; /!yAMaĀm1Jg : SMa7e% 4JJ҆VzWzdV5'Uٌ( $J&a׏85Z uɠK©!apgS:aa͜NU4EE#fƛL ^{|D :^Zش C -|в&e7~kbSpQUN\Ѿ^ru"r "?wAU'rV­PP<ש[:etnu1BS}gQ$>-WgVa| ZuGZxkj/^&DKfs>8t.i͵ w3WA #r6+ͫAsMv|t|f%KXT)F!-QgxUH.sE3慠cX3n%чV'RX!$CL*ёbλ?~ O'vp ܛ廷׷. rviL&X0S9o6THp/H]j J&Pfnm軮!UgTߛXׇ%깂ڀv `NvڍanKqÃƮXo.Ā{s@v_ЫVU;et,F$,O,&( dOg(kHrızzDu]zn GͨgM{&A%U  2 =}0A}u4,,X{ GߖJV2Kp[# /r8EGK4ldorvy2XpV$VVP@&0IA]:q(8#SIœ~aCAVT%!L "Fn nU<xl̿jxsV dq6=>ьSڥeW'h2A^F>y o2v;\. ]"a :ɪ9v S 2?AaEӐ^`U|i ϟW-ain,lE]% bU,ߵuGpJt@/ Nl>wbvic.bԶP3Y.d$:e}bԽ+SN!\ \4z4 T[lˀB5{^NCox؉ ĸ|bAm=,SjF<*)6?e/DxB?Ri>Q pi x\ms_ص!ȴM]"mVU$>bȑ4k U9 1vx쪣I9PB of)9܅ñk??Z'EP< *]+ @snQG1NܲU78Wq-R{QG&kY4/g{>fګx1qNbK|'U!4Moo鮄eMlggg?A!q{:/ l O;;'wxp㝽/䳳sxr41ē}}ld~˝hѩ0zcr>l'_czyK6ݽ],dr~aoӜa7gdO5}Ȍ0I?Jw}x)N{Zr2j=հwv? =͍n >'6GpP0]fr~r~]W;,GM ў(1& ĿOY [ j`wvޜ6K63cNUóaFZvaaoΏzW#"2-V̽\#JVʐ$)u&B j< *Q&w!x s~ `".x&?JO}_ 6e #(n2gLwZlTCVE5߶m _E<]Ƌ a|U,#]1ŧ qI5륌݉ B`GqebSs1J\ad(7Ib}_$27ۅRC(øw}y"vRy08gLm#6]m;]OzݏjG.;Bܴ9/ |䇷hω#J[/a48hucE}Ey&\$3Bɡbuqr̘Bsd爲@{B/3X{;vB *$ X[([ءK, y-`2ˮ3uL!ك@_Iց]cv3q\g_-+V1x 3y0hRtM Q3GXf*AU\LAZ*.q"!!h?DCK * 0BJύX [HoQj))8[^c󳐞q܁溁?X&qGU㤫*Lcb**hXVOHl?bԑĆ&z*%%rz1FNznڤhOf&g:+Q0:s2ig WXïb,myvv B$c" ҙ<՟4YF WtfaBu/DR&R,Q*)!fE {0=05.L8 +uN?E1Oztڀ9"F\Jƻv՜% v= RDTTEFxw,dS=^J~MϘTMkך8)z4$N&aBhўjkNĂ f7S7#X]S6!3c7U|3׷`a{iA"nc@aB}Cm{ o}-Ų}_AzE#i.bcJ$8،/26Ye/ГRkrTжΈ&!Qe*o LU^cAkNA,X_=2RPS^2\#t@uKe,52xT-MJ'8XD<)x=究]gĹKU_*5ZS}L@jF~#YN`Erk` UH 5O޾ _HWy*kb:I.lB-X5h>qE"*~DGߣ6GSUMiDՒ'vN`͏"5@g/4#a ^iT5\v)@  %.xoUVq D3(mj*h9 &`Wnc 8-R6ZDqEz7S=UJ#{{?S+~=6&w=8Ar,۸&'=A$obr JU}H1a賑s>r=o*n?QcdM|n%cM GV/ǚUYneW*gxV UgU5&7_=P  l] VE*V={hM#e4ohXLƬ hج`a a,RBX3$)z!h̳Pbֆ FYs󀏧P* SĚ`*JӤ}8X i(M3aI P H١{8}|ﵶ%Bpaw |2'CB6G[NOZXXX!n#(lLG.Κ0! +^Aǔ|ՙ`7+pPzq Q4x(^UZ_oZ uIyvrs,WS0@aA闶-"/jl׏m[e20B\EXv@&TmW)u&eƞ ,BLL͝I ow9fOxIa.lXҠN'Z@$ Ct> HjI9&.%鲇s趦$4Я0$ Zڞ!i(; f+I3^1Ԧe=z8=cpObOSF~èPзyӨL5b} }D.b) #sW޴Bb%$X +Ŋv!:arTЬ[0ߢ\iY.fv_A:H7跱-ЮCɷ7=ب_cRR9:ԪdҺ]f>uᤠW{NZΆPܨY#NO-0^?c.ST]+,.L^!y㙧6dcoXwF -*y=CTY-Ũ*bbDGEU&T2.^t{~u+ò`[L$KLc5ZŹ 6oPUSNaڛf됱h 8p3ᑽc/䲲9K]tFxFMĈξ~pجE0\OsNk5| :_&r=l0Qi[Ү 4TéArX Pthr1͊-CQj(mԂ֬QWaN {1(7AzOE^A&Kʡ!Tvc`SHtÙpfYʿ,Aj-%Bnqh.ao@2ou"/AF+WX E k7I-j;1!̍ 롊}m!%ΥR aFɰGGxn o( wF]s8#^Y#f^Yx0"yz ԙ}B(ו =Wv߾mgT.H `1u5z+6|)#A(eW`f5yC'ӖC#2: 鸱 bOg clU6}K7C_410PY;@Ofa]G`{Gp8^c bA{+K/6B0M Vz$Q!"D:DW0qkm8t{9}/ĩa,IV:Sxwݡq>Bx2mg4|yf0Mqjiqmxd]leF N0_8 ա<1vRFPiPdov8yρ,O5%pէ3 Ҥ)T wsG6Ak;m-yjjڥ83y7zQlƠ/;1k#&XDfI"<+9i:B7X050WtXJE/zbo LF5b͵bCH8h_QQ^@UT:H질3ʓIoc@nV?ˁ*ǀض܅"oRTzePlZI+5է͗OyQj,7ۉt;wTXڦ- cv] c{ .?gLR1g3,=g V1E۞e#Xha![pn-7Eb+N:HtK#JHW8dPZk9غxZmsH_1'{ٻrUl%pr9oJ0mJ"U<7w۝*~O{I zf8:z* =l_9Y&2ٱxybwwA4=H& M8A*2ӭM(X$Rx!fK?-b-4Lk$l4^dw~">~ƳE1g2?#ET4Oɱb3~zAzRIq@M&fI0#fa + 7)-Kz3 tħ )g2"ty'"!E+ F*2^U (bD` ftorq/N8:=U`֟ƟRI{:3H,|$.6SC1r`08hi!?8QLڶ=1Ouܞpb:^W<%9D &\t/Πx,.pF}Qgpֿ: D+g!y.z%hw8}gRd@CWtĨN~kw4 BUo0i/D-^uK)pu..'r0:o= ;UKt;W J!PCjŻɳgg82gk 3Du4˹;4,pd9i:42TpP#NਁQԂ@ó_Ưuw$\?<åo#+\֙Oڝn5#*UXn'^/HIOC@M+JX0ˤ!-ٛ-Hd8OH%h+$Oxs IŽ$rgZz?, zجDbTaDz>m  Dl :>U}ң`~DdJgٷ0Ed_mfL(Shtʾ|~za@l?[#YZo$Rsm>y|@7OO?zOK4|'m-1EWނB>={QY֚fseoM@<&Zh܂IzhPXz*, ip\ G /:=ǽi(jPiCNlOx܋CLC5.a*$1- RmGr !](;(4t'Pɔv%+C8Q HR5t }˱i֑zșrXHk zӲsLbeg"+"c36*ss";dMyӬsЩ3L*3DV}+3"VV:*g"%Nfu/6MPCr+F eTׯIuy&~J2knWOf~$Vt:"U)y\#RlY:3l!I+oNgFkLhc[s͂ay2WISO(MOe^p0,V*;0h%RV&] IlAۃa1Y=@{qlR4nn 2dté%w{W|;ĩZڄY.T# g33ˉIT* S?˒kknL,)Ai.@/0T)&fVKg>mRH EH 1mI$kgh;h (2iBg 1)բmlES^ٶQ!moK^"oMJ{CJƐH| b6j6I9 vov84"@.uRt(V7RP8 P47Zܼ ݰ%idd k CZ[EaǕ%:3(X8ؗ_r `~FnL )T!P%۪ƩhYjKmg{UJDcSi\n-d2{hA4|l*v3k,~lJ6މwRKfz?2T˄u4F)d{MNJR~(\'¯`2" U 3v6чqz"K"~P/,VcHYmNƛ=g⛑&u M `Pk9ĿvY!(.ofgf݈p'w}(׆عq~bZt7dD̓}Ib`GSL#^t죣Gi.p;H0meoh.HkE#lq#AxWm6_10p!Cd.NOi{lɧLޕk3gWճht4Er7AZ)VzJKᄎyYQ3!jŇЊMQH@3U֫p#ENFy{h@h.|x.C]OFgVjT9&O:pެfW`N3?0{R@IUeUVC7'ʥ8B# S~2b( (&N%VPSm,^vٙ]!56F!!@H%10vYr:BQ:A_.{ J x{ ATrulb>=OV4j:2@&z ң7htG-G; (3U P|fΕ(jȍ)NT5֮S/U੦cczxBjQ35fGW35_mlP&yfDRo !raSGձ0"R| ~1#|ԇo 1uXny4?_O3T"&h%ۈ=)SJ7 >}I㾶/u`93-TæJXY[ b@ؘږ+qp{  ;_3ƅ7-OǹS=:6#Bx6P+z4 x{w/tG4݈L7s!WoWV72ƴܠ8iGɾ4VI9&;vv)yC9âx(U#dbĞR]` 69lS+ L9?q%mhoʦw@kjxMN )-*eH]\B(3__U "hpOf M1VR>'Fb]lO{[nʕ P2?|߼R4:sNw.~a#qM?9pb*6JqyKVx@ xm 1 DҮ?S6Bז-hۛdfZmڀ߈N{G %su!Ӈ[lEcsL +72S^t4S=篧Xy-D֜Pjȅ৖JZ=z;RxeN 0+Voګ~xHYM"xK0-%RvP9d9;*}U룮z >)X1u^ |BHB=޼#nwGab6UŌ{IvVʿ%5&2z87Sb11~Mrq{EԐȷ\X~RC^2z *Νshadowsocks/.git/objects/pack/pack-4c1e911654cf38ee20280dd0ee8354b639e113f1.pack0000444000175000017500000130234012774125157024701 0ustar shellshellPACK>x 0l ݍZSڔۃx60}@@BHsV,+'hKJG )D%P 13 *[E}x[_~0MWml.Xo>APٙf.]jFǑxK !} (ؚ agV9@v[Κ\Z9!FG0zrKBA AICN, A+XNӺu}::_tF.εJ}_ۜMAC xA 0@}N $WLZhH>^ji,Rq +FJ je5w[$HT1&tu( C >Zlٯfu^}=2.2G]u>&B`{;OFJ:>{C xI 1@}N(U:RI4Ѓ4B\|x}ePlI2sb$Q yՍVvG XWcAqcluYumks}/9_&j,I h"ܩc.~zcC̔xA 0@}N L2W ɌZSڔu!}>2xN ^P¬#E*5(U̒Wyv[5"id 1q4y2e/ v8KR ɱsswf_jbmjm1o ExK 0@94x1hiKP]ywתlz8fl\@U,́+&ǖ{3B29aV{8%}C;<^r4ΎEejM]U^D}GܒxK 0@9EI25ϤDbx{Ml4VhDK9&>c[mC08P̒7)ΌEd4G ,2q${AWq6{V?/X+tl498hZv{bdoߦ'JisW_;P0xA E}cJU@RCb}}!lL@shaPKZu X*SL  *Vv|7/#^ QtTJ}4fbJ }76ֺ7DExKJ1Y4yuD܃77'@IZ\&EAdvĀ喗9$sfocI=a.b9y7C[a+>C9G;u<5\m\InNǨY=먵V^DP2OЃ{>ة}_4lMxA 0E9Ŭd&"i2mi*i7^A~-"=.Cfd(nr՛ .mOVja\kԑBZltypt_1]ޡ般5UkU٪$Ss9Ky=K$xM 0F9 2$t;͏ FWPڞ39b 3B{{*dK|D P<KH |Srq5yܿ1^{Uk}'niZU7ʲɐ@Tx1n0{j'g" Ҹ='[)Ul3`m*MnJ#}D['*<&+Α{F a}1xFv}4r׾EM|GeiMӚI{繺r?$Խ?Ju<JxM 0F9Ŭ$DfoM#QXMcql=+z&K)dVGO]`+QCN[şX7>g\36L|m ,εwUȒ*/Pڹ'JmG x 0р4h)ڿm+f\ Bqs`#R#C)V^f)YA ",B8,Q'^V=NmRv}5t|h!'a;{k}6/RCxA @ѽ}:*֙D1 }<%.vtB(2 'A֓Zb hz$C^DipCco4TqkR!M8'~I8]S ;O <&j[JN ].H xA @ѽp_B)6 oV=@w":'!SBCedA!`ƀ ` Imykd\cl(8JGy=i}%ixmm2DuizfUi74B xK 0@9EL|@īd&S-4{Fx 1 }"Rv:)*iсX^qwbsԵ%,qÚ̚(d(LEԷ]d F,b1 5O;rry2̏G?4J?l<mȈ]ǾVU{0j`E1ZsH;ITa5ܛw]<:ȢL\ /n純}<SJ9s:F/62CxK 0}N I󚀈WLg4ЇYC@) 3$Ʃ'6^P2(Hre , )Ő(|4Me/pX3U[ohs'ƨC;5+oyFxA0 yHN+m&͂=m4L_ 1ɠ2kxoEHPRF1wϋ' q0.,8"S8J .K[@nsn{i("S*nԻ= }\i4׵U\LxA {+19 &et 搘3"吅Ő@ !Ֆ,]sy$`0PRAG/0RhUii㘖|5M]hlzbE{)/KND“xA 0yEl6DJnд#ۓ6 3Z$Ly$W|6tVEB"^E7 *J ].Z̅y[EF5{s}AUq shc T򆬢R%=&c<>ٯx/rɧxÄh^lkb"m{Ymůh-y]UPxM 0@}N1{A&ML@D.q Do++NLaT7'bu1`$ؚ uf^d,2D;ڒm|bT@mc|ᗶ:=>LZ Q}uȥ_c(p۽<‹Kux; 1>^s6`Lta_買w k1%>W9v',uAIx*O 8stNK޹ iqW&^FЫ= i׵_uy4gJ bcu'X,N)ڶAM j'_oPyM|Nٛ xM 0@}N ?xd-%x{]ywET9c6W0@R$  Ym24h"C޻5n)6 Q1^y^sZ[~4W^]bpjƐfUBxI 1yEtz_t'Ef"wN>[QPT_KbĊd\TLa0*I=i-sטԔ<[XeqbGM,W,q6G_~hvg^6!Duة^UmoѸExI 1yEtY@ă,:0DF|\ jFLba4)Nޑ a Sz\h1EvL9P)f,9߲ J^1͐i]1CK ]Opm3; jCZ+V{""PF6xK =`ojcH*Pj|*=tSxICЖRf`R+V<7<" i!0hu1^NgA{{,Uq92oyѷDeRIxM 0F94".<l+mz{n>_]D J.l{O\G0P*hc:M{-h[ cƢV*yL9F_8G~`Q5;ZXUֺ/̲DxK 0@9E$f&M@īLfZH?ەpxU E;Pb:¬BN} Ā1 .D͆Wuak^yփC&{q9sqhMM?|&˪۟uf gItxK !D} h8ڝ cCnW9@vEAW&kٱ)DNT!!DޠQ*ڂɌL0\$#rnT׶~] [bB 3K] JzS*hn-6c%w"!u$1J"%LgU1o0p2wYd[JzKL1nBolty0HR!vʁ:PH"(BĩjTgO-7@;#$3J2, ʘZc# Q$Ԫq-EbY2,~1ގc۷)/[]ozl$f$=i݇yu׫?5Tp;xtqFAEQRYyArayREb^C&L̍ Js A xK 0@9E LWgFޮ<{XrDDAkL8#f"U<*n'?dD%8PWQ8٤W/-ӲmQ?CmNm:eXG@ n`nֻ5mo{p }BxAK1{~ŀǂLI6"Rd'y63kl#Ļǃڬ %]2xEz $;zi YŞгpIlQPrv%QJVTg(,E`=M^d "ZH`ܙ@^v?iQU Pz;BYFum\?GkxAJ1yEGA:ޤ"<{mdͰ{Ļjf}8k,E a,'\5uNhlQjlIcUo%GNIeM;^Z?9cocy X'g8x; @~Off `JclŠx{<ۘ%Qd fhm%29RZ7LXfLLt*- YD|Dz<-8R^8uyA픕;ulm-jiExM 0@}OP$ "n*H=$BӖ)^WWVD&DYKyJ`4FRXq*2 c|`BseFwW_C)\ݗtRHx !} =BD᳄u]Zzn0*XlH$ Y,SBޱ- _PRzNIa ( rp|Da1}}k~Z1vBߓrDc[l'6:uGYxK 0@9EL'IAč7̨ەpxתu\ș#.xN\un!D.핏*I1axBß^-m,502]myݞ NCklX>U.|6Eޛ xA {U(_Yb!ͩmfji͡HD<5UYeӹTKD%UD9(8 7>(TlvzzuXâ?wB o/iػ5|1.AxM ! @ὧp_(8ƁRzMb;0۷7UW:\^Ga'!I(=7]e ADӪH>!VW$(9h H|,yN?K+oݺȡ@0_]䮶iElFxK 1 }Oѽ 4}DJdt`^וpߛ% fP(\MnL FLXX$D@t@1QUGmy;i\xu[v@!Dh/.;gL_9v᮶)ˢ]ExM 0@}N OS*dL+1Zz{ޘ5'o3;cxY08٩glt nBI,)LdH4H8LPwצcݶ]_~ivAPǭw "W_beEGxM 1 @}Oѽ M#x6M0?R+וp.bP%iM\CLP%U]aI+rJ@ e)&b  G,&}mZKmm>\,"N`nr|uic_m;9>ExK 19Et:=IDJсH YyyכDRcIE&Mne aT(\RL~֬۾Ok o%OYjHу=.S4Ӫ뫛/DΗxK 1 }Oѽ I&}Wɴce~>jsLJ՘dpȪ#p¾J fMnDaL%Fl6ߗ}osy/.Ila Nwk6lϫ˪]FWxMj0@N1f*hl(Cn߮rU!i(1) E|QUX9-jukỦK:aFGH`PL~[ K{>签Nir7Y>q`Z<~4c[p:8vWX4dMKxA E=M e(ec6T{%/n"X:fdD"QpIHD)Vd-8Yǔ4j` c %BYoe˾OK|F_3O|(v᠜R]T $s~G6ZJ~}|PxA b&fW(BIb{9oLo" ;+1I$J 8% MgGhf"pPIWqQvr[(9dP!aһ5&[} $\'GOxM 0@}N L& U&L-GBJv=|XrR|R[ HQ' `d(S8Uأ1fB 5[8u/ Onú#{ `λL_Ɠ]UFx 1|EzA6&& biq$!Ga`ڜ r>&$3p؄ku>)sDڤDf1#_1͒iY)}4Z x֡Eoy9wt/Dʟ xA !{ 8jt,1a)ȡztĻEQBѳ3mX.ϡ0&0,`&6hѺ{;Y>Cokm?Voq3h>6juCUm]V!Cϛ xA 0 ~"J,A)(m NJp}sz[mfXFʄb@>#bƎF͖O(1wHAX"}J <s׺21-~:ײֻ N_{}/vAsxK 19E tDJӣ12x{ǍpQ(^U_i'> \YK̓W$Bʔ*Ia- UW/qٶao{请$t.B!NCkWlSo>rDxK 0@9ŀKA&4IAīL&-#5Ru=UPTጢRc'c" >Dbl܀Q-ft}vBR%' /K_ m\pwxeHcn5k6{T8XrnDxK 0@9E 3ә$WI&S-#5R]yw{m5V0hs//kEC#Wd`$XR eA .cY˶ sn)Iꑡ!NCkeD CixM 0@}N *ɤFbx{]yw":84Dr&ed D)HԃC QL)g3t^޺Ǻ緾mngn-oB'ƨu kVTFەxAn0 zo9($Ѣ%(>"@l/z[,fgG7Č4-YT"AKa,}MזܝmZTQ#e)ǒjfsD ypZgBnb>~pnBD8׽sϗ۫;ɣ'ʞgѮ~17iCte;=ZxK 0}NPDҍ7L&Z苘R<ZekrЖkJIYE`!hmB+ޑ&N@F# -ɘ\qaNoyΏ e:VCg<4b[VrMyU^G1xM 0F=EBg]<$3jiKoox7"01D6%CvG2ȑm{аFHm5"cQ"L:iAl=&8OBV*iQiֵ?uA5w,xj/E:Wv3pE˖xA 0@}OP&iL@D.`IдDוpy뚒2:;] 1t(G,b-,*b ָLVl RïWyۆIKӣ0q.G uW;pWPkknpM֟/׾-w0ExA 0E9EBI'8t#xI2BӖ)޺neр^a@`!XvƇ}tD!&k̋EMb# 00Fůi]17S> Pΐ1j/E}N\DV9}Y6ExM 0@}NP&$ `nd&ZhR"u=>xmcp9d4T >E_t u)Xs!m2.&t BVg{,z3?k./ h#wW5Je*}FxK 0}OPfL `n0C M[Jx{~~ꚒL*I"*% =$C2f1cC*ظG=P pl5" S/U@xK 09E${ xVbz{si RfcYO0)&ڢxpː CNDHQA!$B&Wm2%}.u>Ƶ6 ,@+)%vX{_GVx; 1 kO𒗬w#1z{v3 Ǩ IYtPIFR({^m TwEh %#E&/q _:{[׺?4X#ͥBZ;9g = g]& ISxK @s =B @&0Yy7^Yb谱Ѡ'J #'1­ :P ry=&f9/܏Sc|`[< ]kO.U E xK 0}N "^%-4m));x>BIel BD$ "dՖw^NȂҬ$Vd@g'|׺:9-o$|<{k]]!@P_׬7ՏBxM 0@}N1{A4 B\ڴHu=>xme,-af4@Qk}gsbH1Q,qڀP");Ѱk]"C)$"0@mNb4OgTR|u*_7#WZV]|)Lݛ xA @ѽp_(3FRzδ`}<}$@$9 F$/5&Tr0Xƻ,f\ S+FGAc`t4V1|׺29-mox6kYݢ @0_mSlƣmzMBbxKj1D:E}[#!(6}((WbV $X eۚK)E^|XE4%XH[QPPhANJ QL(T+TFM=3F̈ Bv1d4V|Cq̊6zKyf#YX &v{bئCw"mWhtHx˻ @@~b{!>" G4MBX bmwpꚳdۦ2 !M k*HQ;r9)Mztlm!2 ~Ǽ86L%t& Qak > Xܖ5kw:_$ gDƖxA 0E9EL'm"^eN4`[?ZUс WQI”]q`:C9FSH 0% q#v۪Mm:.EldLoҚj'i>CVFkxM1@}NQ{aJb~@īT*ڦۏ+*qp(J sSk]65 $ui]վry~/TDxK 1 }Oѽ MDJ&:0; ^WDldșUj*C m\s%QVy&KMR Kȵ!ffyZc\^~>8y=9t|u{f?umyFxK 0@9ELM"^%L4ЏHv=jA03 cQe"p)IJbyƦkepcII8(CaAرؚy揽v_bϲ-W Dރ=0]jl MF"xA 0E9$42L`Si#n<EHbΡ&IQVvvl^hm0(U2u}:(y*;\~Hvx|<]:g 'LX5+6,|Dx 0 {"wAڤkU.dTo'řV0 b11n56OAZ45bTʕ8X)Omَc~o2꼜۶^!刘E9u#4mB(xA 0@}N q:I U&ɌFBx{]ywtF'J MVD 3&F9Mke<[~rҲK8@")jC]}1CbxK 0}N DL2B_)Nܪ (Ct.'b-,6N94(!rΤ+a`L+:ktַ_zxN4ײLwmUU ̼X8!`D2V:7Qѣ&kyNMzu~ao@0_R٬pQ{o|rEלxK 09E&/wTHooW00SKJM9g )ہbf*}cMuh@M zp6XF :w},EqYJV iAo9_r]dt[@T3bev栓W̋|7Gx8KUxK 0}NP&k " vLS-EL)^W"6ްcHF\1GIox#;Kj,sSGl}Ħv7 "Z @Ԭh+%k}t10VL'm&Z>NC)׬"^ʯ>eFxM 0@}NP& xLF 5ժ@`b*8d`X(a2.ڔ)jW X.!Jhr{y=ŧcih]nx0%9烾@P_]_c]ކvFAGxM 0@}N iI@DѕO0I'Z%E<.":P1-(1+ޔmF"y6q $J(њLd=EPOW7ocikcDˆ7WVkVr}o]}DƑxK 0}N $̀Wc(ەp7ؓ`s b" S݉B2TM殅I!#*&"#$ T|ײ<.r/=9?Psu];jrjzE0xK 0@9E 34*T Q#ەpx6U륖;)HtBACT` Dެ,SZTR T.~Y}z?&Ƌ,͢!%r vZӿfs/'$4_:9CەxKn0 :vY(!m (\ )21ہ&M{ftUoUH"9HQ["ٔ!$$tw T9js\jf!MZl|(>Z&c4P2 [lXL(qݻ|.[o|Yiʾ!֩(%ܱ~Qϝ6JGmZxA 0yER٤$_d7ZhmIWד Mbukr'fbӀr5.YCm"W!# PJ}d%3@0l}矢fcYu oGUk6l7i/itVڶ;S0q.' wV^PkknpM_-s&FxK 09E_~ UU m*!Rz{7U;9dnL44@I%A`xMkg(B|%cQS>鯭ٲl> =kkֻE@0]UZVFޔxM 0@}N N@īL3 M{|&GL23lOC8 21ĚVd H ,e G78Rꏶ<} 3|ƃAH>Cڻ5RߺгʢEdxK 0@9o)xt2@۔ޮ<ǃ&lvv!GJtȆS1bF1FVkd@٢1c!!cd1.cduꏶOm?pt6_xmHc<4i;X8M ,FxA 0@}N 4$ Uf: H>~TP(u2戀,=gN>b6wtD(JTx͌<0s$#L%z[4}_ 8l]`HK]M/[]W;f}HxM 0F9EL& UT)ޮ3e,!5"y*>AR/UCŌ1"A.c HǣoV9}7=kiYz|ٞA6/OjBjxK 0@9WLHR#7vpZ8hQ' 3% j]Ȕ]0HO_Ǹ糬rmT{;68`@TWJ۪*MV(+TKxA b(_ I 4ͩmaZOdA{-Mq9:s:^2%^YP^TPJu_BeoF xA {+ү]mI%ͩmoZ>e.G<Ĭ̙0Rr f-[}w$Dm$ss,&.BAK|k٬L˾o=ϹUn;O9cUa~KBs xK 1 }Oѽ >"^MZ-̋2u|KQbE$O9rvTg̚2w@ı-@j R c"a^lVe۬.ǔxeY$佷'S5޶b> DExA @ѽp_(NRzu6 ۷σ?V뀲"bXC[ȫ=uYF &l !SdbQl9ַ_}<[k]CΑ1Y;!K&`sExI 1yEt:"~%KGfsފET%'oGg0M3uYvS3Lx͖ LTL*c۾Ok o%MlU>.W/C xK 0@9' $h6R"ەpxXEN)fS5TD|II6fE1ȖԓWYB"#PcDۄ_W(mm>p3q,}> Qvnc_ ׾NC@xM 0@}N 3*L)%x{]ywkՑf+d%<h*d^ס!XH"S%N@} dx]g[ot1-k]`#}1_:6Q'C1xA }wY i$ra'qdEܞXTzWs0XR.H*-#sItPS{_ ;&0cd*vqLD Ir6l""I1"EoWў- ]HOA6'KVyLm_uy>ֶn?_xA 0@}N}LG(WɌUP#"}Hś xM 1 @}Oѽ I x4m0?2To+{^DA"bK"@%XP2 30MU{^MK3bI$ɱIcl9}Ƕ{ky/lr9E?Ap_]}AәxA 0yElv"~eݴJToO>000u3B$s4 S `B=Ħ'͖bX9QTۈ-Wͧeя6RW4f'`wعj.LȏgYFGixA 0@}N 3N@ąpD m#mx{]yw-#h=8R"B}K9( RAEf<1u9!,=vI8G )yG]l s~/pO2Tuv `: _]Vֵ&AMC xI 1@}N ƫTjh=Hi<σ?f][)Wj ,Vq%Cq!aVO8x5` hRCF9$ۢeN5qϳoַ_wWu6w)ƨ} kVySDxM 0F9ELI@JooWx{) )%K9lF&y/k > PAZ%5T>oe;G~h1\+omp@_:_Vt:ExK0:E%ӂrԙE`V((xKDI3bM"5RP+7;<58H4ıĈIr⭿y\Z׼Lw7 .HS]m-p|1Gڻ;/;_)z vRxK 0@9E2|LH23`hutxMv R4T.ndC QFUEMf3eQʉc9;Ȣ^ w{y=i?ÀGiZ{h/iԚ&{*4FPxA 0@}N 3$MAīL2 H>誖H3gB)%s >s̓zťH!a!8I@@1E!xnڎ_:79je!{`1t-uW4p$E%xM 1 @}Oѽ I#xMǂӑR<o^t /P T r,X!}\4jC)'r2@U?m:߷}o\ PW65!ujE}ExA @=`obM*SچRוp=D@HS4D*4QQ6zbsFBkяk18)ɒsX e9<Ƿ {\aW (T8X'OWkE/YZXnܞ6l+HxM 0F94d&Zh{UR}.T1"t8yUbl2b Rc.NXVӲS>p! \  u{׿&-]nFcxK 1D9Et:I"^%'8?87+1}.YA@ 5l"&J^S0RD,;ů\i\~i1si@ɓQ:_w!E|xI 1@}N URWP@MDBÐOd]4!]{)d|u@Ņ,!&b4e]KkΗ)qZwjө.l*ҞN+Ex 1 IjiZWI 3 gQQIEc-bSBB͜e%` !"["Ǐv/ü/a yCxA 0@}N L& UɌFjx{]ywol"6BJk! I FF6:lɬK"SՉXsA5) Ip&ƽoZ௷Ƚ] /u m6yi9lEՐxA 0E9EL:ifD4M4"ەp-% $q%l%NyiK[>݄G0 H!?jql^~۽貞c-W<'a{+6dڞ 5WCWxA "lb_Y`ƶi=o":8 `ed یHƤ>^eGNJ5G1ZyA2UB*~G:/m|nzDd1<5u{OQgEBxA {5.ү躶19 .) cJB)!@P0QdFTeē'>`]0& n d {,"TT3VR8153@"G*T9Dg1Q.V׼}}>sogmƓmSUC]}EChxK 0@9Ed&i"^%FBx{]DK%d)dCn 'fʅE $]M.l:5`A L2[Wh]y9^52 ;KD@uǐf.zojDxK @}DJUqL$`}{0UD!rD18Ɇ,ٜ4tGfLU'mZk!#&u'yUiaQ0i. QNljp|_x2DxA 0@}OP2I' `n0IдDוpy뚒ʖaDcNcL >S2Bk,ϑM`"f<}F^9yۆIKgNB\ gkӨu2Ԛ"T˵o|FB xM 0@}N}L&(ҫLDǃ")Hư+j 8p&.K@%3IX1yue^sZƏ~4m<@r7 u6.a/WB3xM 0@}N1{A&4WDi#%x{[g2 C'Kf-$wd`xF ƝXDm x RQ/ys[ `":!ͪ^֯pEQxI 1yEtLDJn "12{@.@2>!9CɸϡGlt8)p$K A8`D;SokyZ.O?D{αNǼgm0۹J[oks{/!D xK 0@9ELWL&hHv=UDNȦs,Ob|6"5kP=hQap{Ђ1a P׸-iٶ~}L}:2 &n>5zs/tCxK 1 @=E逈\x4I0U{qt{gw FDکņDIg2t֗VC2t|Huy]l]㾯)mS_xzG˛xK @}JUF|޾Y=<^o"Z\&0B)Ʋ% U&K,%@.TKl]l9D=Eקj6\uiCG$._bkc`=jyZ}\c/v8y!@)B'Hؚ,bn͖}_SfHWxK 19Et*tD2;+QPHfb)*B\]Al3V.ZRuH[]ջ`|ЂFNb HPx.}ZG^~Ө}I|.mJ4\D/OAi KV9h;'M|,Hs xK 0@9EL'πWI'-4y<Z90xcRA!XG/E#G@(.f ޡD| ^s/xK)c(aT$Xʞ'ҺNK۶zo}%yS[g&w&1_[GDxK 0}N G)^e2hmJR<ޘNMrDCZX ]r \R3!jek D&v;Y=lS}UEGxMj@ @B ٣ 4Ҭ d'8S޾Y=>xuu‰vI{ˑ2(;˹5&()\tB2u3cVv¦KqPfIc񞆠?{Yv+sGpU.tu>àpNJӹE.o Xkzjx_ J xA 0@}N}$N&fH'`T$"}]=>ZOǐ(\#P Sl,uBsCO%$Ef((QL>{ݭyNC|pܘ%W[I#b)c4>9h5֠3mN  #@`-\VN|M2-/?v-g*5 jph<8los_zDlxK 0}N 3yH*t>To+烿o"  [#Qu%`&20Gd2&ToSD\KtR~_7zmKg9ݣכf9$$C1rj&s9@O1a E81d =cie=}:~2ݴqFA NwgV+zq# gGiWta ?sPxK 19EI:.ܸ$ ̏x{gܽ*(x}e15 'Œ},\PpTgx}X'Ba(I \ VvYE<@@*%^NJU}F͑M9k-yN_z|<[+nݐ3D jzfSlC xKN0D9w@'n!.!m;(svRrV! ,b5Ib:"(J>[޺ 'ʡX΀4h `ro2)ZԴCϜW܇4c_xA 0@}OPɤI@D.`hiKוpy&$Gm%EHb3 l6GǽiVd # hSy9ꄐ{l*M5V_> SrP \kvVknn+SuN FxK 0@=EBI:i> `n0jiKooW{^YE)5\BB@b1`2p*SQD"Ft$&Blu^uwyͫJmumόX9w`[uAjy(EXDݻՙGx= 1@>H/H&ɘDlN&,k:XDFN!xqQ0YjYz+P0r I2lEѫ>Ys7.K;[4 @W&ڷ_Op=n"eExA 0@}NP&II@D. 3IдDVUmN0B$ԓDGQ!Fܹl(AvSHKjn[YcO?\g.1B r=9׹f,o*|~E@xI 1@}N U U2z6z{u}>֪SP8fg9dWD@"AŨk\5pP vl]AlE*E{,mm./}%<625wNVҞn )DŐxK 0@9E |& xdF )ޮ<㽾X,TbaC}V CT17OZѭCS Wn9pthjyZm|=0mq:2_KH%;{ `v;_×CI \_DxxI 1yEt:[DJt40V"3d"`(b>h,{WOwYU c3R >U#X,Wůq_Ӻmm)}m6:)An6Oo AD/xI 1yE$l "~h`sފ&WSmF&l6HhYvc>^s kكq $`*%A{>Ʀyޟ/?v_/gU[@4#>l:甿bGE=xK 0@9NLWdfЏH{|<'LК;uHjxA 0yMm"~%l6F^|i*:G1fO9 I%{vtq̚6]KA(JHaH:+,=śjLu%Coo9Y|r1Dc8a@4GٔlPW]dC xM 0@}N fDJf:B۔)^WwU;DT {+PZVv] )ȚRD 8j\LeS^v+s;ioLYr.`OԻ5ZmDNxA 0E9EL212I&Zh)f] )bPȶBF!>ʴǸy.eo((FkMX&NzFDVxA 0E9E &mf@ī #!Z]yw{T0id2:d&8h> EϑxK 1 }Oѽ i@īdڌ!Ce=bR"1@K yʦKN,sA$Dcp+Qkcl}oK=嗌,m:uZG9aޞ έwk6c{[xaCxM 0@}N O*d֔4x{ޘe0\p)sY%>; "f A,Ke i;1TS=k.)XMy}tNuJ3h<)8<aEk{ թG`xK 0}N I xd2ەpa 0JM(xڻjr=%$>=J֦iZ}\o9q:ߵu buyJƏڱu+FLxK 1D9E$ΧAī$ "7+(^=j".,P9/]H|>Q/94M:ŀQb4ɰGBՂ%k?,}E}㶞s߮:JOScl65Vk/s/_hCjxK 19Et:x3#Ct{TQ&@-:4Wv,hLA,]-a` @ gH$E~_7uR>ƙt|Ʀ ":zbU[:/BDxA 0E9E$m&2h)<ރwU+E3S.2;zsh^m,&r! ?`A 1DDv Vvu+{+,mZ)yў AڻҊ/XD͞ xM 0@}N 3LW@HTo+{Z1oʄx@IlTP=^HM2[*G_\ʓ )p,*>ǽ:/8VKknr}j OW6FkV^zC#xK 0@9Et2i> U&-{U"2"X=Cw_9''ˆ*f]a&8`@XTR a"Ik<ʼG[^~泬j=P\ {r9пf6C/AxA 0E9EL'iҀWL6D7n<>8B# 28DѮk(>S4APCF =r*o{EB|\mҀiў`0m]Z/ِ\f>FxA E}8FJUF[!%XBottcI9b#ۀ\.H'&z&ЙjM|vS,lB d<:oxM{[[_~v_ܗ >h:ڥ!ܾ/{CʐxK 19EvDJh`f"CdfWcрDp%WDH R@.\)gJlCLI*l.EƈJGG_7m}/!c\6%JEZDAxK 0@9Ed&I2Mf!VU+;VhHj@Dl\ei, R~` =i.1\RxM 0@}N1B8q^eLP#b}{|ڮ edMOa Ic48 f]*DކN1 rv=GϬĒGc4jS!8ʚO2s2_S]`=G샇 KiMX έBYay3/G xM @ὧp_(Ɓz86,oV=@w_;T-yD!(G>Q͑ Agv>tm6D 2 .!C1nvX_lKo!P 윹2aåQ|C xK 09EByI_t#xE M[Jx{2Koavd;S|HI:XS6B"@5Lc4!'"k^em>?K&$U[ [-nP+ǒBey/[ߔFp xK @}3 %*δ`}{`h딭.z,$" HryNK|5{Yۨ7 "lzb/ICxK 0@9|& U&i-FH*CD9FAcړLxՓl *u-Ms؜Sz̎ڽTG}.?t6<\+hDuuiMUo*Uf;ZԬ>PxxA!Eւ!Ul-;ۡbGBlȉ=q͖-sH F3tdCZhA d)D1΁I :G;|5?k q^A#Y[O&?M괵!jTz?߫{X2nۖzmz CJPÖxKn0 D:n,E/3Dȑ}<ޘeE{2\TRW dI 5>u% c&9+QS9HNMjH#9gU m6HS^Sß88=: Ү}?*X!bR`obCUJ 칠`Mx,p4U_G}n>/ O)˛6` xue]Ⱥ`~#m[kMH}޸Zi~?sPxAn ~H9'#| `Ƌd]כǗJ]}V$N46YD 618NJ5;U^bl!}"$2A)^H2$r<`(&LF]K8k_9-Xf=*Tw%/mg|yk=$?!W^a-*y3om&ixK =LbWP1? n_ڢ >(JV(vGljˢS*HD"EkG'XC3g瑥#vx9y$80J+=%ftjQby2F/ҌD^ z%/Zzh͏n/Fzeg8I'8;3>rƟpyk8T.ߠz@G0c1oXm xM 09\@4i@ĕ dB+6)mz{<>x^]!rP8P4@F:QbsB+ *R^F5m2AO XVm {pz4|Q4;OUq g)L^m>թdLȓxMj!][\xi` f~3̚D\ZaSK[Lv($c1+vI}q*MC@(@^+M!'/` D2* ΃X"P}]:/xZ-Gz}K}r<ikѿA|R^]Ğ.4f=joO͌]XxA 0yEB&n" Ei-%R=oLY'H\[NLb)2&`A(a!t({ F Wyۆ)}hs>ڒ5 -mJbXR(z몜F]xK 0=EBI^>/t#x$E M[Jx{+pI*NhYS1!˞˙Ce&k^Em& % crJn nP+7Beq/[ }E~xK 0@9g4 ULGJv=6f 9_' AB ^h㥁Mt}fh#HR۸nuRcN׼w0.:.ε5+VR?e O>`ehwGZxA@08ޅlm!βխp@_HiQ0a [4$J 6TyO1%WQ8i27o=Q xA 0@}N dAīL&VJJ>j\R*6W)`Tżd˰1#KnY]R1SsݬqLKy/]kY1dOW4Fk6y/%AxA @=@* -IK וp+3 b"+QК$):b^iʥ Dnq )r#:ԓ!ꘂg_ aݏ#/ʍY 'Rnwkkn Pm8\&>!NxM 0@}OP]<@2hiKooWWWfb Ee%.e\@51f +OUx(wA>Ap"}ڦĺ WAmÔ>K-DܹNV 7%_- FExA 0E=EB$d" t#x!hiKooxW>_EVk,VDNve&!&Y@Г'G,I ~紨8Lڏ(mAsP;MZ7-}Ur:_/mIf!DxK 0@9E3i2 ʍ'IZy<:h3=`WpB˭u!4jIU;T,2R7DX8JJ(st~ ҽG~ {mAhQoL2Fjf5x DExK 0@9E$M"+7`2j?JJvܽYD28EP&9`1g5,C6Kbc]HSN*jEKyn\v}NncA0F3hjߖ"j2їq>KE xM 0@}N dWNZ%x{]yw^<҇ RȦU%DP1HmҼ$ Ȥ%IVr(y`NZwzRK,tu]q(}u[f>ARxI0@ѽOQ@(Ie[{4J!Ԑp޾ϗ YiSHDLtcTIw4rvٚѣ7ywYkƾ=)_Kk2&;)GpA8hDdYNn_ܮ˟~J-랷oN9 xM 1 @}Oѽ i&-xZ*^W7Z-sjAEG\DEsz Ix$Bd41"qB F;lkPKsd=׍`!s9!Z"Yd/I꺎s|/ i˵$h4h_-cYeiu8/EVxA 0@}OP2IAD. LдDוpy*t@$15D 9AȀ67KXeD6:{ʔ;I E9J> WyۆKӣal\ C ^׺jjpnrQExK 0@9EdI2LkmVJ@Hb )!8$2xMfKU yGOL$G"B_nLECnu:uZ<=9\[ӿf"2ک>Fx; 1>^L2f6 he &/]Kk~>3G;0Sb"]"h 1Ic-Z#frx U׸]eQCoSrkJ0,'Jöy +)~o[X|Ht xK 1 @=Ei U6|dYyw{Z(4)F"PO0DAjJA}*Xd,N {HEC//-m}{!6Qe.և>=Uٴ*O5_m_E5 xK 19EtWi; GU蒢+9\BƲx.`BAԃ6YjP(L" (HE}4O뾷|^n3|IC @ ;寳<[DxA @ѽ}ƁRzɨk!oW=@wl9k؆25z!V+o9 1R4,=G_izHIT(~G@۽q] N&:4pQkVͪwa=֪>%EߓxKN1 }f;N,!88=iFܞa`WzWsXdX *9M4Y&+(C4^Fr-g!WF S"`3a RrRyy>q^z.r]'r[6뼼 ݏs<ٜѶwO7K9^xM 0@}NP2iQK7d&ZhR"ەpxՕYځUf ԒK`J:gbĂ+OU>1 uwL*dMt w52 }VIs9I0 ATPJ _X<_)FlxK 0@9Ed$ ʍ'dZGJx{,{&s!rf EUY8J>D@+ -6r(1(z4Oҍѻz{x 2 { qAQZY>]#eCxA 0yEliv"~%nZI#ۓ6 3Z!T10jɀ)ւDF$t敚>%1eG4©f*&cmOO=KsYu9yoOԻ5$bn@nGxK 0@=I2WI6R"n<ǃ"pQ>"L1&2a軅Vy6l!RDN~uۿf nw p~}\@^VN xA @ѽp_(3ƌ *3:`}|x}Scv3B!±R@#0 Mn%VT2F 8zR!{zR>K|k[Ni ^ w |lBlxI 1yEAt2 x&*t40Ĉ{=/EQP0C54Q9 ֥emPFqc-6iL1xd-{FУ^]?=yoX2P4AG<,R|kfQ)pOݙw.u NNKLxJ1@}b u2)n+U$)iJ۷ו]3iKK@+L<""[*6u.'hjuBBɡ8.1 }F)Cۭ-oi6uނq-9^4i~uncȿf5 sw8_|HOm` YLCxAj0 E>V#Y UlYI dp]}iޛkNr& .8"& Zݽ ۧ F1X-5Nb؈Xj%~b5  F4J]z;VU_(f$ ;߭ifc5m+_g<UxM 0@}OP̀]<@ZhR"{|*M(" !ٱ (Hb|Q LwK7K\eJc XBlс@}&Wyۆ)Ms9(A#jR;MZ7_-Cܖkw:_CDxA 0@}NP&$ `n0$ZhR"|xmY1(Mp1)2T,CME[XhSY]BLHZC4EЫ=Uq޶ayRQ)qe‚Ju4)ExA 0E=$v2"+d6)iJv}[U/ŀ*EV8 '%T <Ee{a2IGc :ԅK8}s7/8co<+p2lLwylM`=+SɯnRjKxM 0@}NP&QK7N-4m),MnrrsFA{Җ&!FF)C #B?Z3`=c$O5-4xWzJ།r@|fq[,|黚>E xM 0@}N $Wτl#%\Dt LRJr`&Jgq3ljbrU:tIpXJ< 肄BkWqst~hk[#wn~}k}p46F1M۫ y= xK 0}N1{A&t[w^!_ZMIS^-g0v`S!RI8I)T85A+'ƨ$;C} Ǵ7\B>4X+HŖrpB(~:O?ub)m CZxKN0D>EKX!qݞ|q=f3`W*ҫVxDom""IBP .qAJAGbYg.jPzA9E҃D͠O um?P v[*G G:a./a@aԊK?ଷSn5f_T^ T5xR]&oks{p'7Z9tk;PlxAN0~*!XB/Yo6E('~uf4E D9Y$ٻČH4['QU!6MCd"cG;F8ڵYJoB O)c;럼ܮoe| cК^d**< v|K Xr~7zWxA "eI+ ,JR'm2Yf E`ʔXº-K œ]G{cixxn |ޫDz-,KjI>?:4Ҙa"MD〃)LC2Or:K^cbkH ;B6ޙdBzҘp.(`@)bKm ?R4W=@w7ugŸB.'aB8h%(j `DYRbbM+0&s!OqK9Ʃ|c:cpIky ;y IxM }!{B)gHXCbac7"4X2C"eD(y^y't".P@Dp=E`xZy.|/*xS*ۃK4$"j~N6m稵s4#GxM F}!Q(W/m b !oV=@w-gi%#1[M@ iN.$Q}[+ 6ګ-ю`h~d\q[:7I=_!!QE]_쵖ty}ؤX|RjG xM }!ҫ<(ro80kO" 1x9%9"0>d,|499Q&]NjQkelJ rV߄v[zO稵k|ع dHxK 0 >8PJbGRȏ%ͪ1ĽtT"Z=B9uZC$ʼn.Kt%ns.gGddUMaݡ>蟯9Sӯ\ SBd<*Ŧʻ1zo"/JQxM 09LW&3ۛpxUl炦N۬S"콒sLI̓W+`D;jc@1=[D:t1~DzB}/s>nxNtty&֚NVkl| P0*JeNOAބÅB@k.ڠpmV_scY q"zrpRAyjMnz/UdHPxOYJ1) vLe Y*3 Nӌ7zm*3TmbK$kLEl`%HBFơ]}Оז0Kr)BmPYiiR?QȅzGҴ\Qo9%+v J$)Eg5Ys1l4AσOute{ض6}blFޟ.(5 5-ecJiԶ}ەD_ JxA Ebh;c5TҜ^{jgi& &b~Qޡ7d(jN+J(\ëa@ ZO8u59.RU>ZL뙶N6yv]ь#\Ru_[ zqk@y[iEFxK 0@9ELf42L5Џy<VUĐgee$ 2kBO̓. L|{Q܀x=j{Yc/?x\s^uEuȞ Υ5k6S}k}u1_(FWxKn0C>]7o(zb,R2ܾڴ$ x%Pr 4y% z+S!jtepxl\ Lڒ\oY* < و^#W!E4b5zߵ~O%G!g23A&Ay.Qb1wYoqN9F]@bTumk~/;}jQ[ΐ1KCU/~mU*ExK 0}N 4(إo0Z苒R]yw?u0z3` Y|L6h5"cՂ97.A|,AbmAZӢG~5Py4"ujf΅G{[mODxK 19E3逈W$ ̏onRyYlp:8iZ}DXڴ N6& tnP@xKj1D:EAjil BUZ-[0?fr7>wUxPb@,ԢhƁۅT)5sBVIVt6LA0&a- )x9VAJ+)WG/G^1m>~2}C5^S@>{N:u3}Kv]a+}ލnN;z>n/ Q+x90{b{$#> ڻ8J~Ohxh4Wf (.!)Q c&cWL p!}:c[8Iz)a:F+u}hlI) xK 1 }Oѽ i"^%f0+וp7UFbt S!dvIC̝7]e9*^GE|hL%Z ?mݬL뾷/יtu>[)AD{ `:ٌe>CxK 0}N1{Qfj "^eLj>hS+烿"b##R4|F{S 25$҇ f;5q)K}K2C,`@T5kV&KҠN[0XꢾJvxM 0@}N1{ALAīLf菴)۫2!a.RnKJsX{ l~9~P&1E)#(!>d\/xO\Ƴ,Bwc'O޻NVkv y/VYfbMI! xK 0FyV ɽy[j8;&IB2L@9#4Ki VOltb`dۈsV.Pf_`1+ct}ї_:gӹU[w}2uy] .zcCxAjC1 >"}Y %*,'`޾ٴ1[TSB֒nWCsr2Rc̄jЊP00 I%گߚأb0WX6!ڪ+u9|?f>ϣw=#q8: EǾ+v|;DSw xK 1D9Edtt03BdƍpWQ .:Y8Q6ر%{m40Z"Yd"Q?jTq,[z/v_q)gUN`38Ġ;%VKHOE*Cߖx˻ 1@>_^s' $.CZvN2if  &O!RIa!mѱ1#N}$u-zuciRX+g}[+5BD&xA 0E9EL2D4BkD+=~W/ӣ~7#E\1!?Ap]/i~}DrCOxM 0@}N 3$WTm#1Z<otr.ȄZq,gC$61ORQ Dgi*3 q*>ǭuu+o}%uu9涞5ZpkCU,E?jDxKj1D:v^Bkm0!Z-{3cbg6+^FW6Ul0JL; [;u]ǪɉTchpQ,Cim/@SQJ^(USX -߶s^eec1"8( 2i= ];cR\YvxM 09Ey|j 5RŅpV PD,:/Ĕ=ydl, NanZaɔDStm4/9))~aٴeǹ,t1]OQG׬6}l׸VZ(J8xK 09E@ī$y/6S+nYj*3Xk@@@5`*:oCb+X}ɨ1mx퉙DdzuYvFyQiMr-mK֪|Dy Nc_HDrƼM R H?xAj0E:A۲BhYJo0֌eҐYχ&ԞppCڑv~RI'"K|qեAEuɔX%$&YF _evˋ= yr agf[KnM }s/'oYyi_CPʚxA @ѽp_(:@)DHbnz>^] 4N<5)j(,&%Tyo@Tt)FCP o :RryoyǼQ^SR0:\(e[n‚b#ZJiyvHkxA 0D9 -(Ro'hZQ֍p5ZB25,5j3J+Gw'Kv-c1o=e*J#aFo٥a駼DJ+kRiN`GxrOp{eflOxKn DQl>QEN)h#clF}s,_}TU7"0v #  F"slōr}pBJ)Dގ*PƋ^ u*,tc}sey^(hn8gMmJ*1C\+|z`v8ܓ7VMop^1%(yЙ,Kg:w,fk*+߱jxK 0}N yL2*W-)iZ蒙b,ސ2X4'@ƽ 1F 4̵B :j8DxMN09EvogdV6(S  ˲ޘ˥8 œ`!z`1Xmx2yg<%UʖpRa CN;c,@=RLz-|TwA#TPJv[{'hOmt M"/z^r= bxK 0 >bYcC)K!7kb(\Q_4$!,Q;sU:=aj1%$tE{?G-+ zչ|]8,:_8hT[d P! EˑxAj!ᄁ`kBXVۍ:ˌ>sr+ jnC񉕵Uf^{z0Do l+)-%VKL*J9׺AgH֥گ>8Ͳ洽ͩMm? #ol뀶B=_do^~t APMxM 0F9EL~M@īL:hRۛp1ড়1ؓ.%R`xƭ Qagl5/vb{8JbYZoRM@`AkίQ:˛ekM|xKxAj1 ~"Ȧ+,' (9 ,j1R"^qB^̚։a ;qa6 1b,Z1F8 >u?9~_7Y:/P bxmuqtqӤo A>+ KNx=jC1{b@SOZbkIH#Џy1}T)cf""GhStQ(dw/Y!}"V3Z)l s"AvLDTϯqx~W9_[(G{7o5<meNX-rϏwȥ+ԅM~ NxM 0@}N o"^ehiKH)^W7F";eJjک:t@*@e8kD_u]xc+ERv9L+SbS)bK3GYȉ 1{l L4}ok>o%r08B'#ƨ.m׬j{CxI @ ݳ_̢#17'୨V WkbvbL,G:b.$3y2U2wXWDc.EpDJleۜ9Ii@ڒ9:z/ͪc]cCxKN1D>%ցm !Ѷa'^䚑9Y;Y[G KtBSV L:1$RBCTUjԏ]t 9yTƢ [^shi>Ie,h<v] ޚ6YG_Z[oE> =exA {lJWt][!%XBߜކ\9dg$x?s1 JȡDT642K.)T41DX,Ͼk^q|kj˕:Z}P]Wv^r/ƗDxK 0@9ŀKAL[1I&ZGڈx{ڪ 5w8)UlUs\;ȣ?6zMk{.gJ& <[3ܨ63%'X[}JaZ7υlAKR;{T/z5'j1Q{#}vlx;n1C= i%SA) g+XZ-H>gTK51++:mjPMcX[i`#l#Q12(pJ:ѷR᲍ޏ)Ni|޲KY"p~4韵%f]"nluCaoPѨRxV2A)#h<_UV xK 09E|ۀW{y@ӔZu t"N"0)cPDNM$xR 69@0ZZOPAPAĭ?j4}KzKjJei Fqؒ{b*m8=E沶xۊKxND!{Z;0lkCpaXYn168?Yf.xa&3*]1ӈxL^ &Q2qbI[TS['*đ"}k2~/kp|YBOq[^TGJ.wTq܏Zeσ]>۶~sB=\cxK 09ED{SҔfZe 6E5r`BkOQXݤK0֤xh|QTr;}~K~Hu:ι8m[bPKomT&LNx !@{ fG]UtK?vMDTlMS <@#rNma9d!!  QRR0?֦yZ./vcμW= :'s]UvwiϺ.aEݟxM 0@}N1{$OSQK7 hiTooWWf@ƪHh3 Q6jyɣ T׾#'*jmkP6lm"N->piϏ\Nvt^z8H/oɵ_Xfq}@>\)$tIxK 1D9Eɧ3Wtzt`2YywEz՛C[L}p&tZ-ԓ cLlY|{@ޘdm֊QVc.v/ng C=tZ_×@RmFZxA 0@}N"$D$@۔ޮ<σ&`Ơ-KوZu@L# XG.{") 6me?Kgtui"ڈA ];5+)ov84xG xM 1 @}Oѽ Mҩ xM0?R*wV7`iJ. RDNZf Ue"Lha3}"HC xnyHy[n<ppsKC¦m/ Cf x[ 0@"P4 ŭ$3%Zt -%' ,32QΓeXd3i*}ߥKqSyJ\kr^W=~v^o2F*i2${t8%xA 0yŞ[MJzuݬUU4~eBjƥ,}faڐ(jzTֲ't6[jrRDD^y{X=vl%<='J 0&pƈh~uJ^savPzXX^TCxKj0D:E0c[-BM-56ؖ%>+<UP2#Ij79:c fV( U>XLYRff`ARNcۚ+|﷟EN8ho!&,KR {l w}~ P W502 o^A zM!b:pE.geU% gli0pOFB#Ezd#\!juæTr8u:(1}0In#:e!&!%6N4*xL5n/4.5;T>9#qü}ql\y,1M7+`+WRݖ\+ӊ ) ^PlPRZ is}t_> SVRXYW`atcOQ[=mL[ WG_Wm$E(ۗ= =(9?/-3]/8?klM>>u?8JSԼʂJG&:g竚cWf*sSSWv/[lv1n)N-*K-)8mY _Oh443.f3wsB{䊒PcJRYy?öqgHYx~-{6SwxaCl 6[U+kor9100755 server.py矋cГ&6⁰n160000 ssloop9XЄ>1Q#ƥ9I xf[1 ^:'100755 server.py:7oؓ160000 ssloopo2Q묢+`#Q#t/uxi-gfk +_˝o*@Few w!xi-ŌuϺ60ۻdV@Fe;x340031QK,L/JessS|M>PlPRZ is}t_> SVRXYW`atcOQ[=mL[ WG_Wm$E(ۗ= =(9?/-3]/8?AwEOUMsTYj^rQeA^A%#Ɏ3?UͱZb3PBN~rbH懾r;O=v/i̾}=?jSR@~S^\k5weh K{C3 P(./`}1YWf{̪SZ vTLo+?CbR֙lXx 8 Tմuw /E/x = B‹v<&,]Q#"ix7-{6SwxaCl }9XЄ>1Q#&x340031QK,L/JessS|M>PlPRZ is}t_> SVRXYW`atcOQ[=mL[ WG_Wm$E(ۗ= =(9?/-3]/8?!ض^1^{Ůʩ,PBN~rb^A%ÿsoL(4UTMqjQYjHQjNهas9DRw(s nWD.f6{b# 5$dTLo+?Cb 09xD9 [~[G{100755 server.pysT1Db,?Aixp\Ugp]܌|KXo‘pG=nBɓ ,debianm PКQaQ:d0T0ZehԣjdF"| 2 x340031QHHKOOgpj^l%[~Gp[PE% K~ns` xRUee1Yvf>==48"0UzmWag{3\~ V+),L(a~c7Μ WQ\ðLM?SnEaޫGaTT4'{Ӝߞ)qĊG/B(HL//O.KIMK,)a-n=׶0 Ǣ<71 1h&Ҧ |Õ9=0S欓(%2LܜMlm7Ͼ|3 =Cb9z]`"\QqjQYjU7x|y-RW:_g?Ɂ}hexO}TE3kY3:S"{";Dzy_b*D 76(l[ܼk$ x|y-Bnuf XɁ} 0 xP"644 manpage.1𩗉)}BIEɓP(watch.ex|;௪KliV5"`3 rNx|y-gȢɑ*V>ljɁ}E;/x340031QrutusIMLc8ԭ71$K=x!ҢTw:UerZ,;x09#1/=5'?%F:;EzilW#n$0.]ź8K%RWWR`6+9k+<^WRPYQPpcyПi(%?&C|> VgeV0tls؊K%K]z{{&B&$]­$R)8U;y:oR<_4<;MiD6v%#!]0y %AsʾMeJcݣ̼ wBco~r?8_8jgW0\" = \n(f2ہ_x3օ$Ϗ+ b҉SKݘO9{V}ME@5榦 E9 a˒7Y_۰ebRR_^]XVػlI^-|~o&@M}7mӹ4o[ͳ/| }l5<$9dWy_YfZ'vxºED!9#1/=5'?Ⱥ_9gv#<;nVcX㐖U`zZdٙR(v\3%?(?˩yg=(±{,DOTd?{]U]+.IaX&榟)գͰx*:YAT4'{Ӝߞ)qĊG/NeeHjr~K̼Lc;{'gr/_nx|y-HUOL^g\m ,xP\Ugp]܌|KXo‘pG=nBɓ ehԣjdF"| #$_xŦ,`$ p. 8xǼyC 5ASA%>Xj`r̹ ex7\l+Nv0rQ,~{犑p=󋎝YkpLfxFvx340031QK,L/Je0-20EA!,/DtBU%eU0^<Ǹd#7_`n*spsw fx}5T6^'w#X0%~!AN!~z) ~jk֦w2ɶ!/ؕa7ُKߞwY̮m Tkp^f~Ws߱7ńʂ\]|]AօKea} 7a{W>>XayI͵f›^/Tbb ىy 6^cޯӿ|TZRZWPɠt5J;$~:ĜĔb?63u~|{ JRKO8˯3g̐x]\l+Nv0rQ,~{犑p:=󋎝YkpLf40000 shadowsocks&-!l>h϶-N (ElxŦ,`$ p. x340031Q,+d`;j^N_d?ߓlQX\W RPف?~od68wӿHƙ_9`{Fw)S=t.j/-)i.WmO{gOS5vx|y>Fqދ_}@Fd!Ive/ S x340031QK,L/Je0-20EA!,/DtBU%eU0<)0ēmk*>*spsw fhfM߼Sp޵6uÔy:x0) YyR4&ۆTROgW`WyKXgds]4=N?$dNTI|Vx_wKfX\lf+)B%PUyizYy Lyۣ[H>ܩi 3xm5x׽_] 58@aJ̋ |^ԏ,qV-m ĜĔbwܙ֎_~w~m@MMJRK@E=ٷ OףI{RtoNZRX\ R:!傜wZk/_b'He1C/nmlRo2Jn[x{;{kl^> 100644 MANIFEST.inzl'︵ O!`󑾦:+-)Luχt_40000 shadowsocks I;Y:&h(y& Mn9x̲yHsKl1bxe 6&'3)BIjqI1V astt&}8=^ɩDPxǼyBH:  X *x|yBȟ7u_;p#N4!߿3-a,x^_:uH>x7\Z'E=T-Du:p%͐dNF)x7Fxaa(k#n{$/ N벜{n<<qx|yB )* %G.IMbƙн xaa(Jd}Ҍ眻ڇ1 }8yc) YKxaa(GSpU8jgZ6yc΢ UMx|y,F@5=yD[ݾoܪUZxaaٰQT_EUe%a|F ,xaa(ܑM#/E`hs<<x340031Q,+d`;j^N_d?ߓlQX\W RPف?~od68wӿH919#NXx}kyb*O58,jJ}z nkjXIrAQjNb%HRY ]4 o=pgixɻJK`J2sqoZ!ڟ*gT}_OKlx5sv!vΌ7 {A{[xaa`)m)bn Q x340031QK,L/Je0-20EA!,/DtBU%eU0ڽy 8V\ |ṴgTzcK"/$)4]/7B\p=q-n/ؕw^+G7r>M* rutu#]Qxm}9e٫oOCUTT\°NzYsѾ/wryxͅJKL*c`ʻݺ@NDFOǭ\&@P{n㵯<Ƌܼ4j2 []+բʦ40000 shadowsocksd nOrOdޕbI\100755 test.pyZSO o[@PK5\fxaa(ܑM#/E`hs<<-xP\Z'E=T-Du:p:7U}6=Ot [%͐dNF)xU#Ukx+ꑶorts.json[ʶA\ _Wz0l#;NU+xaa(5Cu_}U+jW|znyyh0#x|y>FO}T<{z> a \x(\W+iExy4j2 []/"]<Lh6"40000 shadowsocksÔ`Ӝ#A? lv100755 test.pyZSO o[@PKUSX)fx]\ڣWB{?Fvp:+բʦ40000 shadowsocksd nOrOdޕbI\ÓnWb-lxaa.2=ò57#d8Ğ kxq\ڣWB{?FvpJs ҕjoCaKdߌZnڍi6?2>4j2 [:+բʦ40000 shadowsocks;s2M%x}Xn|@Wxaa(]_+S߽753yyc-xaa(`a▣S,dy[|{<<B Px|y9Ka*,g egFF xaa(jʘYvc?ayyW5x340031Q,+d`;j^N_d?ߓlQX\W R6IH={^d͕ 5sʒss@Y)o4 X(5/jBu\J\f=jkĜD#=ˢΜlOznRy0ey%9 u/70^/7ZyΦ@u榦 9ɉ9 5\ 2t; t{[PrJ3RA5yҦ[-dvh0{C*N-*K-)zGtU5.V\PX RBj$2ϯ*+MA( QX Y)\5SVS]N58`k]} xv:L(Y_;9N7k\SP^[;dW.?p.k100644 tcprelay.py"l"H 2RKi 6x^ b ϋaw+,WFO}T<{z> axaap^D@[PrʲW;<?ޞ&# x d {ń$#ܭ֓xa/x]\fkUtt_!_2bp:~d_:zxye40000 shadowsocks[!qpϦ~n+4kxC7w4j'ƪ iDUy100755 test.pyZSO o[@PK Qxv\W+iExy4j2 [:/"]<Lh6"40000 shadowsocksÔ`Ӝ#A? lvn?2xaa(jʘYvc?ayyW51xaa("Un~cxdlk9r<<-x7\fkUtt_!_2bp~d_:zxyex͂'_x~:T]*Ŝ{<%X100644 README.rst rr= e 7w4j'ƪ iDUy100755 test.pyZSO o[@PK/8Txaa(R'voߢΤܙkZ,Oc<<'x:L(Y_;9NJxC7{^Nbm|94gԸ100755 test.pyh }9fD<޼hXbK[RxaaٰQDTjǓ_lz bAFon ^Hxaa(u? jʺmx5sϫ_%box1-0P?گ]|(xaa(}܂ UO{ҪT9CVyyxMMx|yC1w I3pfD4O ) 8xaa("6ckG'W_KhM'x s,įMRRKX^xaa(rFLd*̑__<1< x|yC1FXMcv+ gxaaQKP߯/w[C xl97ס>!%100644 CHANGEScdmZNUJ־|p75Nz>ōk100755 test.pyѥʐiLZ|N7}嘓7J#d#BџFQxO:L(Y_;9N7k\SP^[Ǻ.2 (pƓKs)xaa(ۚL:оo<<W x s6Ͳ{QcPq?K!\xaa(/?P]w syylxx7:XNPEzхZXP}+N7k\SP^[9RFx:L(Y_;9Nʡx340031QK,L/Je0-20EA!,/DtBU%eU0~}M_ͻ_bU2gG?w`HS{>pnawPTy킧3$%WNH{ g]?3 RYR(EW;]-!48xu\d xaap^~m]JL1 X^ Kxaaِ(b5e?=q < 24xaa(r3eIv9l:doyy:ex|yYY>os:f,~- x 9ZNiqEK+ؓM/x7\Ivʒ PlQ=p _#YDС lsnq,x|yH-?ْ?\.FEjOˡ 5x7;p~j_?j*{N;GIRV|2 =snFx{yC<w]d]Xx#oNb< 7x340031Q,+d`;j^N_d?ߓlQR_&o;ݒwsԼʂS q]{P(s<ses @,:s=G[nJeT]dx^7KmƯ1@475UON`Rֵe'mỻjVNQi|rbrF*H9>%uqgxA*N-*K-)3l֋ߠx3g6rV\PX Rf{F ;Vn۟)(ù 4L5<1unx{X{!$3e*.Pͩ`p-Hpx5L]p(ڀ`F`7fjd<{lKYeKs%DxD>-0P?گ]C*x^诀 gn0ֆ ];E*!ٱ Z1100644 tcprelay.py;o zݵ! gGFD`K'JvxBεcmX̲۱);Wx]\kf t2ŌyU $x8:1.g"_)j .N%89qr)-/Kutx{yCkKx{yCx{yC<ȿ},gdzȦqos\̘g Ux[|ykbqe^rJ^^A%CMLg\-ҳWz_wMBr~nn~HQ"{;e5y\5>͒F!wL"(̓6Wfn CC{tm)"x{yC< ~ck"Zs[Hbr1cˈ 7"x|yTY83UX>߇Z x{yC<Ħg{;2=f~b< {x7:BlST|kaf&UkN@xaW66 1?hJ;5sx]\Y52P+ i)n/wIp:clB(U|WW40000 shadowsocksia|<}spycsna(1x^Yz-j&Ha\S];.5i._,A)U̳E<100644 tcprelay.py!U|xm PKn(+x{yC<ȃgӬ̿J;^efŌyyx5L!U|xm P`7D>-0P?گ][Dx[|yBbqe^rJ^^A%CtlOSb=>:,vq\FF?Sx{yC`K#xE:/`vvp ҆100644 README.rst&?8:/,oaSΌ-Tx{y)Y"d,x\K)'{̌dx7kp!a*"b^ϑ[L4#}+/KMEx\j4+kFpq4rx7\j4+kFp5ͥH]!sn-^7xO\j4+kFp4\u\m΄. V|5ͥH]!sn & ^x5_2T $?&MxwĭHsZPwi}JnQxx340031QHL-*cW84>`MN|3IK,./H̓(lZyZ5A7)G'B''@ԭUKs~!딾aRRtsKsJ2u StKrR!:X1ol>i]IuBզmǭ=rA2Y| D̷)y2)n*/N-i*lN|yw1;u7x{y5FJ>Ywa~c;4 x340031QHL-*c83f@MQ6 \_/+(rB''@IvٻaZͩή~ 2^8缑iztTI^n #O_,޻01j2Y"d,x\K)'FWC*N-)-+d׊W(U;I[@7ĜĔb5Wt| KS&I榦 %% ..]pjB)3}E.x:jHI|NbIj^r%H鄴 r{޵*sh1ÿ| g,:?[%Su 8xM9@/m .6k~tM;~OlyvLbsZqTm_S@XBuU-#"x340031Q,+d`;j^N_d?ߓlQR_&o;ݒwsԼʂS q]{P(s<ses @,:s=G[nJeT]dx^7KmƯ1@475UON`Rֵe'mỻjVNQi|rbrF*H9>%uqgxA*N-*K-)3l֋ߠx3g6rV\PX Rv}ul~\•M'M TYi Bkyb6ݎrX)CZpx[ͼyyE_Lu Wyx _~ԾmėBÔtMsn]Lx[ͼyȇCJ'L?. Ux{yC  &x[ͼyfFff$Wiufr7 Zx _6ϳf[x89&t'P+wRfZMK Aǀ2@ysnGx{yt*]Tmy;4 rx7J9k7I,x D]$Ms |!7U֩pXsnuxXT}\!_g?:ھidx7J9k7I,x D]$ak!37zr%XFsn0sx LhMê"Gͨ$`K1XxO\O3# 1MYF6cꉑp4J9k7I,x D]$"LRdM[J)7afsn]Dx LϞ2v|(p`Kj x1դmD`),.x{y ?V(߹-yj5߷;4yȠx340031QK,L/Je0-20EA!,/DtBU%eU0(|͑R,*spsw f`4nRa3t3Kz U;/s댌|KI@:0< c|6;gJԮse Q0,c`^*x-2.G.|S=5q+($&g'g3xk>"7{6OZ1jTqjIi^A%ꜤZ۳b [K=s3Sˋ󓳋+u k٘dnjPZ\2m3>Ym;V\j)Rg=\ܿko-d u H>>'$5/d҄ r{޵*sh1ÿ|w5x{yNc0t>o&q>v F. x340031Q,+d`;j^N_d?ߓlQ\TYPRVzV,tۼ嗏eH AU_ShdR}m_gIV{nS]W_RϦ22z;>TgnjR#ٯ.wY<:MԬTs+I}J 726UZTZR$P|+\[L,f&& )E9z Bir7w8kݼ{6̜buoglEe.I?4 x340031QHL-*cpe{_Mv%f,)oQSShdQ`!oU@׍ZJ4ԥd$@q_9 uUzJrR!ef8p_bHKS.ymJPƜp. cx71դmD`[oy 9|D@b` Zןsn:fJx5LQᆫ8Q 4`75y{-΅s4Ycmx71դmD`wV&_+1 ;snݨ x[ͼyH׭F13칪rUy`x71դmD`i͔VE4 gw3snu}x[ͼyHқ>>:&k^I3 sx{yC%uqgxA*N-*K-)3l֋ߠx3g6rV\PX RvOEzcg v)*+MA(z6OL1^=+~)+)9δf]sr=&۶hx{yC<_xy>6\̘̇ x7hS G&y4xEBrȄb9bsp Re.`KjsxE:!DY \د2.U@100644 README.rst>C+g{ؤibSx{yH^WlwMtfB{6z`F_OFy P(I-.ae8fA̴.Lƨ m Nx{yC<:&Z>H;j9r2+x9_PnΠ{T"5s.l1+Y(iA͜+٦x[ͼy*ӟ7z^y*-]KxlI|`CˮoUwܥNi"xC_73`*`N100755 test.pyMtMD'o(j“J L,x[ͼyBȵ %YiRخ¶绱܌p `~x _T%/]ӌsmVZx9}Cʶ .BXx{yCfg|:vb?N+^S;y ,x89 q<Ĺ]\M74"j;Y0Z#smPx5L?r+]y9%g~ʓ`7"ũTV;^ƹ7/6xQ9 q<Ĺ]\MOjbN<{`U]s.3W (@+~ߵqS+#$x[ͼy*-_|8l~CD-8 x{yC;*r%x{yC<6^ݑ~peNprי91ʷ x[82%!BO1"Yn#100755 local.py ́7sjԽ"jC'&``*U+ߓB(^f`K&erxQ9 q<Ĺ]\MX~3MY^:JmVs.3W (@+~ߵqS+$< Vxh82%!BO1"Yn#100755 local.py ́7sjԽ"jC'&`9;b@NaL"lg100644 tcprelay.py-bEk|CpiM>`7 ܱJߨ2 ]Ax{yCٓbq#І 9x]:D-lMdnC /YũEeE EοN, wr!Rm3qa%E9 e6/:̾°IqݦvC e|s]X[f{3~)+)\vƆ:8[TrZ}|Eox7D-lMd"7{6OZ1jTqjIi^A%Kjiۧ$IbNqFbJ~yq~rv1J-מp4 i@MMJRK@5v+&qgJj?{uHCfx;%6lߗ||NbIj^r%Ȥ i/tkU:_cIw5x89g̻ _ Uk|3MT?t_{km-"cCTtiz+$^i4x;8qBvw[x2KO^٦l~xO9 8oIT@ݷM}2KO^٦lޤ1yH /D? \J '$^x  M2d"mŏHJ.x{y|\_ g``7R:w2# Yx89 A֋DI&WsB[e3MT g5%CTIxV+YSx340031QHL-*cpe{_Mv%f,)oQSShdQ`!oU@׍ZJ4AՕ$&BTyp྾j &{ *6V^+4x9 ۨeҲB)wD䈱M.x{y%@F?uoHd_,x _l 貱y^smw$xtiHmOWGʪ /\, xO\jᶧ|*e(p4} rĬ>>xP4}~KHpa5 sm().xti榄sӊ~\-[j7  x{yC<w/Egؖ>g pP\̘ xF;1-1(-ge 100644 udprelay.py& ˒Cʶ 8uB;$=%x340031Q,+d`;j^N_d?ߓlQ\TYPRVzV,tۼ嗏eH AU_ShdR}m_gIV{nS]W_RϦ22z;>TgnjR#ٯ.wY<:MԬTs+I}J 726UZTZR2yú"'^M)JNMPJS Rs+An=<=m y-~?*SVS RdŦ~sm3gsg Œ"7xK;9PVBt Рx340031QK,L/Je0-20EA!,/DtBU%eU0p?Kj(rITk0 bjff\yOgW`WyKXgds]4=N?$U/7Ayۂ 'YZ!wUQQq CQɟWy_q7@U%ee10]nn] pzk"V. P(HLNLKg=|En^~mct5ԨԒJɿsO ]!dkߏˀS_^]|ϓ .FiR"$sSSA\|آh+2z@ `<˔`5wC>xVAI,IK4!傜wZk/_RR/8xu\jᶧ|*e(p4} rĬ>>x:hh}k5r[R840000 shadowsocks3y{WBӧLsm:;xQUF]8̡%100644 udprelay.py& ˒Cʶ 8uB $P+mxKԇˆ5b7ݼڑ9 Z ur5L7MgRE4C< $YxȴiBHpǏ}Do[gjpę3 x*xL9B&ueUnicQR<100644 encrypt_salsa20.py֐b: &d3LM?x340031QK,L/Je0-20EA!,/DtBU%eU0(q5cfg S:2gG?w`Y;ކo-6UgGѿOgW`WyKXgds]4=N?$U/7!vZqJ}' dvTEE% FG'^~ɟ_\UU3-l׮}s^.3CM P(HLNLKg=|En^~mct5ԨԒJѥ\\oϛ:ĜĔboYon#ڛÓ&* zc%*K!T0͸nW{BC2{u H>>'$5/d҄ r{޵*sh1ÿ|D7x{yBk2 '9uqƂFw,xu\G# +j;(,54+^p4A" o_5񈑸:}#(&9  40000 shadowsocks.pc-Ԁsm2% xU9 ۨeҲB)wD䈑MW5k8 c> l9nӇ['TEaI7 ZVuLh0h33z100755 test.py M2d"mŏH40000 test g5%CTIxV+UJ_9x{yC#jZb\ XxtiȟU7%xS{[Ӹfv쪝^Lݍ;4 cx77 %zwAi.pc-Ԁsm!)x7 %zwAi(Wxv tZ@ 1'豸(Nx{ynG7*'Ƅ]W[g/MU,ҿl FC BNx7\_ fvL8,p㏅p4l;(>+]Ʊ(@x79qwK(כw?@MWl;(>+]Ʊ(Fx{yW8avm>05; qx{yʹU_^8A,HzUZ xs9-C!W&WٴSƑM%Df?0{z[TKZ7U^ IWDx5ɞ):100755 test.pyN. ;X=S&;+i0rxȴi,<~w~=|nnԜ7|a +x;|yC<# OO)ߞ[ur1‡ 5x3Lۀw?Xa*CxĚq/NM}ε-Z8aMoxh\ѦhWˇI%p43qQԁ[vdgnDDz/9zHбS>ؗtN6CZ_oغ䡤!^sN6 x340031QK,L/Je0-20EA!,/DtBU%eU0.u~CD-|{7Z| 5A

PlUURXYWàyb ej]12gG?w`m_w?^vցI8˄*tv veuFQ>ܥOCJ\]|]rST`jwujbUޗcq+^7c*t<6> ^`wcz?_L @ 19;1=3/k_yyyךPSKJ *7L>lgvYEנs3Sˋ󓳋ˎ[_sէϞ@MMJRK@{: j{_}X壂 {xd\ѦhWˇI%p4:3qQԁ[vdgnDDz/100644 README.rst2KO^٦l[:^[u a؟n;h40000 shadowsocks` pmYH0n=֏[ds#D*x _Rd57}Ks# /xx79%/`g Ln!9՞`rt,Mn9$*L|a $c'x _p$V*r|s#~uxȴi%m,kקޜcyAE^ϼչ x4uP7Ō xddpQ$iw,돌W7 gfs[-> vXx _ E=3#G$s#; 0YxddpQͱSfOϩGħ*F,x+ OxddpQPvAtHKdox`ljOU`]Xxo xGƌ EurI/z6 c6x9e;mI;Gu\l!(r]~u r$@rxv175UONzIM >y|Ǯ΃)N-*K-)ZbO?_[ɷ\Ww^4(5'qN΂gu䞘'[ SVS R##sT%)+&62%kfUbxok\Y(GE100644 README.rst2KO^٦l[::3:T@_' `& 40000 shadowsocksr3YVD2O_ʊs#C*xO\ekJz+-m6p4ryd2Ӻ!B9=R J^%=ׇI0YKqMIM#^x _r9q Ds# x340031Q,+d`;j^N_d?ߓlQ\TYPRŹvlv}^w=,T!'?91&1ۙ, ^.9Ԣ""!lgٶ K֕d(WhP|U~4»큻7L> x340031Q,+d`;j^N_d?ߓlQ\TYPRŹvlv}^w=,T!'?91&cڻ8RWFP5ũEeE E[D_;| o0o֕d(WhP|U~4»큻7Ox340031QK,L/JessS|M>PlUURXYWàyb ej]12gG?w`m_w?^vցI8˄*tv veuFQ>ܥOCJ\]|]rST`jwujbUޗcq+^7c*tlgvYEנs3Sˋ󓳋%^uͿM275U(I-.w[xMn/~-5{{xh\Zlp]-1&WBBp4!E}Go,^kà9zHбS>ؗtN6C4^%=ׇI0YKqMIE2Rwx\\ekJz+-m6p4:ryd2Ӻ!B9=R J100644 README.rst2KO^٦l޸e(jxӗᑸ9zHбS>ؗtN6C$xŸq#Ɏ3?UͱZbD\ x7Z mqad 4L4Ig}9zHбS>ؗtN6C;)xN\Zlp]-1&WBBp5Sb+`$MIi?#R^%=ׇI0YKqMIS"Цx340031QK,L/JessS|M>PlUURXYWàyb ej]12gG?w`엺:n7"etdJ9T_+̥W329o.}'U몗`~R~kS=koCUTT\°s?k߫KTUUpqa5G՟Px($&g'g3xk>"7{6OZ1jTqjIi^A%CDѩ :kpnkĜĔbM۟[d:Cp,U dnjPZ\2(=Hޒqٹ8DQzx6\`1sg"FOfwd1p4Ŏ[50zIc"LMmpޔiEx)ıyKLqx340031QK,L/JessS|M>PlUURXYWàyb ej]12gG?w` W?/-IWVrIT_+̥W329o.}'U몗`~R~kS=koCUTT\°s?k߫KTUUpqa5G՟Px($&g'g3xk>"7{6OZ1jTqjIi^A%CDѩ :kpnkĜĔbM۟[d:Cp,U dnjPZ\2(=Hޒqٹ8DAx340031QK,L/JessS|M>PlUURXYWàyb ej]12gG?w`+Yl.x/ؕw^+G7r>M* rutuMa0?BB5Rs^***.aXǹП5|s%`*JKL*cD[ӣO]O(R 3xm5x׽_] 58@k?gI5tp8bNqFbJ~yq~rv1æ-?2dc*߅ tM275U(I-.gg$oɸwVx"/1sxu\Ǐ&QTr~/ a؋p4:V fZ`In6 PKJ100644 README.rst.;t[Qv4VIP[f߻P?gT\/MIW.x340031QK,L/JessS|M>PlUURXYWàyb ej]12gG?w`+Yl.x/ؕw^+G7r>M* rutuMaSOjݒbQ0^ӛc]%:I-+=2..:,SW=51̼ts}1^u_k>FWC*N-)-+dH{G}zȃg[c.ֿ*18#1%8?9A T?q] L%ݻ 4T$dQzj%sYqSyxPlUURXYWàyb ej]12gG?w`Ek.ѯgp)J|<]]xe.bqy#w8 WG_W g/rfcIڵgFt#o|~Sc# uK`x340031QK,L/JessS|M>PlUURXYWð1%_ؒ~|pGKwʜ=].NJYG3t?* rutuMa|^pə-4](9?/-3]/8?klM>>u?8JSԼʂJG&:g竚cWf*sSS4_8]2Ŝҏ*M/BAbrvbzf^:﹍׾/rk5 Vl/ۣs5xzUTZ vjKV:ojZIbx340031QK,L/JessS|M>PlUURXYWð1%_ؒ~|pGKwʂ\]|]rS\rf˵: z5*JKL*cD[ӣO]O(R,5/D瑉d{e-T!'?91f3ׇ*Lz1Ji&@P{n㵯<Ƌܼڤ|ijx^] {v0>ڤ|irx340031QK,L/JessS|M>PlUURXYWð1%_ؒ~|pGKwʂ\]|]rS4tTn{zb!+Svg*JKL*cD[ӣO]O(R,5/D瑉d{e-T!'?91uw^? J~X 3+-]˝Er㒠 g3}R;n**I-G*fm&߷Tƕ!1 }x31JԊT9flKy˅'ԨOPx340031Q(N-)-+dtWgΗg9v_m% f«x340031QK,L/JessS|M>PlUURXYWð1%_ؒ~|pGKwʂ\]|]rS4tTn{zb!+Svg*JKL*cD[ӣO]O(R,5/D瑉d{e-T!'?91"~Մ_/+{TMqjQYjH1^޶տd4MK, RJRvI,֟a[ڸ3$fhDyx[ʹiB[Dʋ5\~PlUURXYWð1%_ؒ~|pGKwʂ\]|]rSD%-ǹ B%ee1\\"tXzǧt'G)^{ U\TYPWPDo㌽|Us겖 TenjR`x;k>>sqEP5ũEeE EZ3Oq"a]L UTZ K*fm&߷Tƕ!1 4}x340031QK,L/JessS|M>PlUURXYWð1%_ؒ~|pGKwʂ\]|]rSX^%ʓ{fϋlZ *JKL*cD[ӣO]O(R,5/Dr_jb?Ň㥂,MMrs@jv¯~gKVnn)N-*K-)JWfMjU-|kbJRvI,֟a[ڸ3$fwxZ^&@"FTN*M&r98F4λHzzq/ז@100755 local.pyQX2J"S@&ZL}ՑHl&ix^\zߒoAr,x[ʹijG&:g竚cWsR?x6^\zߒoAr9^u@Xܲ `7\v\›l#x^\zߒoArIx[ʹiBu% kmZ4h' x340031QK,L/JessS|M>PlUURXYWð1%_ؒ~|pGKwʂ\]|]rSY$-dԘJlkˤ tPlUURXYWð1%_ؒ~|pGKwʂ\]|]rScP<%@+*JKL*cH?-lW}rj; U\TYPWPn8+ʶMkɱlLTenjRsw ,o6>vPlUURXYWð1%_ؒ~|pGKwʂ\]|]rS~E7dtZa5gsϠ2ҏm -G_쪜*''T2Ltiĝm6kaQ USZTZRrMLGN]y[g;|S9lKW~, n"x340031QK,L/JessS|M>PlUURXYWÐ#qdNؐp*wU몗+ѰtmdO& 93}{UUǐ~l[nyg=bWwT!'?91G:}k>xu7~-^Ԣ"k7w忏<{*fΏKPE%% %R1w>o3rؖ6 Yi'kxxkeje'2ia|my5F=2>h2+xC99DtcOr100644 README.md[1uY}2 iMr#IB|xubd3jg#x340031QK,L/JessS|M>PlUURXYWÐ#qdNؐp*wU몗0ia|my5F=2UUǐ~l[nyg=bWwT!'?91Ga7nAԢ"j2pw/[G@H,֟a[ڸ3$f?krx340031QK,L/JessS|M>PlUURXYWÐ#qdNؐp*wU몗0ia|my5F=2UUǐ~l[nyg=bWwT!'?91GAbּ 3*bgZԢ"j2pw/[G@H,֟a[ڸ3$fjx340031QK,L/JessS|M>PlUURXYWÐ#qdNؐp*wU몗?3ǹrvv >l*JKL*cH?-lW}rj; TfnjWP{Up+݂_=YUSZTZR1%RhjyW_Vὧ$D*fm&߷Tƕ!1 0HhQx340031QK,L/JessS|M>PlUURXYWÐ#qdNؐp*wU몗?3ǹrvv >l*JKL*cH?-lW}rj; TfnjWPɠ߻֮*BVuz<7TMqjQYjHƔHyE_}Yz;|S9lKW~,ixxkejeQ_1Zo//\ SP 5(xkejepNd[\5 &E쉖kfX7Ej#e9 JxV9 ^5`bhݤ'M7aX[`,z100755 test.py5\*qex5$/xkeje2FxRY>isE >z֨|BqjQYj^A%ߊCm2ۀcNM˿~h]!vpвs*LQ)kx9DtcOrܑMx340031QK,L/JessS|M>PlUURXYWÐW$pEnڤ5|I U몗?3ǹrvv >l*JKL*cH?-lW}rj; TfnjWP [<,y촹=~k]\8,o!? Lm1'&TQIjq H_be;^8_hٹkghʥx340031QK,L/JessS|M>PlUURXYWð=(<AWR{v,U/7rg=s씷|UUǐ~l[nyg=bWwT!'?91GOؕ|:Fnr`ٱ8,t醍t;_]UTZ\Vrׯ7DَZv.Z)mIxxC9svb0H(~ѧ100755 server.pyO@x%7 0lW#2Lx340031QK,L/JessS|M>PlUURXYWð=(<AWR{v,U/7Əuz;SjIPEyizYy Ƕ~ڣ/vUNM}gMMrs *] =.mͧ}o&jSR@LnX~oI;{PE%%`%Ѻ~Cx|eRU} nx340031QK,L/JessS|M>PlUURXYW`}PbAa /O9@:0\Rwgw^m8](9?/-3]/8?!ض^1^{Ůʩ,PBN~rb^A%C f]<Ɖ uz^|=TMqjQYjH M9w`'v$_1Zo//\ SlxxkejeRvzd'vy(V}| +xkejeROؕ|:Fnr`ٱz^- x340031QK,L/JessS|M>PlUURXYW`}PbAa /O9@:0ؙ9Vv uwn@%ee1[+kU95*375UON+dHiiw?'u*U7ءjSR@.(|Ǵn9˟Zh UTZ\Rbzׯ7DَZv.Z)i_xxkejeRsvVXsP #d=qy x340031QK,L/JessS|M>PlUURXYWðH񓿡!wȣrK{ކ* rutuMaHUeO2yUUǐxYh*+K? (| TfnjWPyN]PlUURXYWÐu#㱩ēcRIo TY^n Ô#3UDPlUURXYWðH񓿡!wȣrK{ކ* rutuMaPlUURXYWðH񓿡!wȣrK{ކ* rutuMaHUeO2yUUǐxYh*+K? (| TfnjWPyN]fnxkeje`)u#㱩ēcRIoD&x340031QK,L/JessS|M>PlQ몗0 qQhT?f2UUǐxYh*+K? (| TfnjWPyN]5/tRd ޭoJ8Xr&beƔH9Z6^x{qBȇ_ 7x^rl8%v7xܤ$x340031QK,L/JessS|M>PlQ몗0 qQhT?f2UUǐxYh*+K? (| TfnjWPp᧫  '&V{y TMqjQYjHQݏ}iԣ;}WZ\\TYPR:)2eϷv%t,L92cJ$v]X_xC9%Md3^]ķ100755 server.py5^M4qP3N񏣩?+2Gx340031QK,L/JessS|M>PlQ몗0 qQhT?f2UUǐxYh*+K? (| TfnjWPɰjɒ;ΜjBq«4{EMzUSZTZRۮ[t PlQ몗°Ӑ3 Bo=s\ UUǐxYh*+K? (| TfnjWPP93'KʗG?^-iU4 USZTZRdHQ#-.{%hOWZ\\TYPR:)2eϷv%t,L92cJ${_[x340031QK,L/JessS|M>PlQ몗 uܶy14s Ct TQr~^Zf^Vq~Ce,^(z/PBN~rb^A%Ug./!/mPn0TMqjQYjHQ֏;mSZΚxC+I-.OK.,()2w[:X1%\x340031QK,L/JessS|M>PlQ몗 >LuK涄;*JKL*cHZ,4@~۟ U>Y*375UON+dwkPÚwB}-=uI7\~iPj_IjqI|j^rQeA HȔ[?ڕq0Lʌ)Zx340031QK,L/JessS|M>PlQ몗P{5r~oTj_oUUǐxYh*+K? (| TfnjWP`+^gE@SzBjSR@֖^-oW߅~WA+I-.OK.,()}pmɶ3韙z,/ܯ F[1x340031QK,L/JessS|M>PlQ몗Xos_{~qqt5/tRd ޭoJ8Xr&beƔH_W_x67u.\6k\'K7(EeҀ8|Y jPEx{qV6D2G-nkl ?Nx{qV6D2G-nkl ?yx{qϬEJVix1,;F}l $x{qBƯ9/^ tM+x340031QK,L/JessS|M>PlQ몗P{5r~oTj_oUU<ᄺsS4X'/TfnjWPɰIDnX!^ܷ}CTMqjQYjHQ:OnkҴ ߜ}NO 4ԾԼʂw ݖlK97R cI[^xW^8bUP:9Oq$ ;100755 local.py_Rc'qePlQ몗ŭLFA tpߋ:5 PEyizYy SN;7u;_Ju?I@e榦 9ɉ9z Y=cm'^].USZTZRtGXgwsʏgnWZ\\TYPR.!ےm)g?3Yj__FX x340031QK,L/JessS|M>Plh``nj몗p*m6mo~sPE9ɉ9z _oSizsh%P5ũEeE E.+ux(|u/*$$>5/]Bu%RΤf Ծp21YNa>xϸqB^n ֊7k3- }/4L.%Dwx'nuJ.P/+8 x340031QK,L/JessS|M>Plh``nj몗p*m6mo~sPE9ɉ9z &/r/1`v"m+t{,jSR@J?I{m&t瑩Ozg 7$$>5/]Bu%RΤf Ծp2K5Nů x340031QK,L/JessS|M>Plh``nj몗p*m6mo~sPE9ɉ9z jUe|^uFB̃|Ԣ"e756[Xt䂔%7ħ%UKHd[ʙLaWNM3 x340031QK,L/JessS|M>Plh``nj몗p*m6mo~sPE9ɉ9z rNuJR 2N)N-*K-)esGy˃Plh``nj몗1`ﭵlO%f}^ ('?91GE46f~Ki#X3TMqjQYjHQf_⦠+N}KT,⦒Լʂw ݖlK97R >L x340031QK,L/JessS|M>Plh``nj몗1`ﭵlO%f}^ ('?91GE46f~Ki#X3TMqjQYjHQf_⦠+N}KT,: x340031QK,L/JessS|M>Plh``nj몗1`ﭵlO%f}^ ('?91G'ARe٫@9tWԢ"u3y]q u5 : x340031QK,L/JessS|M>Plh``nj몗1`ﭵlO%f}^ ('?91G3V@(UHG)N-*K-)Z\4 fW߈ycL9 x340031QK,L/JessS|M>Plh``nj몗9pȣ  [Nz=UWPɠ[[+"W}USZTZRhk7F+M;5x7mF5=+ΑKIC x340031QK,L/JessS|M>Plh``nj몗9pȣ  [Nz=UWPɠܸYdiUSZTZR4{lyÝ| Z<ke; x340031QK,L/JessS|M>Plh``nj몗9pȣ  [Nz=UWP0=xb}wyPt*!RԢ"?2-iyCh.;x7mF5=+ΑKIC x340031QK,L/JessS|M>Plh``nj몗9pȣ  [Nz=UWPp-[ \!9Ԣ"3)Xko < x340031QK,L/JessS|M>Plh``nj몗9pȣ  [Nz=UWPɐSQ|yt'D&E찹8,[IT;Oo}cGr:x340031QK,L/JessS|M>PlQ몗p|\}~ڟxzߝ2s !x340031QK,L/Je0-20EA!,/DtBU%eU0^<Ǹd#7_`n*spsw feez;=5ݓxG3) t sMadSS\^6%hM P>ή~ 3q~\rbv-lKxJ|<\C2dx*Gx)& U νeۮW5L-$UQQq +Пkl%7_y_RR2v]_~CXTolvTQ̼ts}1^u_k>FWC*N-)-+d$\d^*eI~vM!g$'g3.a2&|)n{@T3l{fq8_OGgϊ5 xkgY͢jh``fbWu1^brs<=Q5d䵥 j&1~̓i/,L(a~!O饸e^+M]6=@/9?/AS=^ymYK@/?Su?{=(0نQZdB %-2Kl9RKx;}Dhx3RK$9vfhI摑LKboo[Xitλ)=*^ `eJx =u_ک.}GsDQ Dx[2V$~P |5kc['lfdb _x|y-ȁg-~qߟ,xɁ}7 x|y-W\^C;ּk&2+  x]%100644 changelogD\kjc:w.W7Xڑ%~wRfMeFʔrfCGۙaxѓ<˪D)$x|y-HǕ# ~o ;_š09 xkgigP+Sȭ&}]qu&Pэ(Gx|y-ޱv5}nJ/Ɂ}Xy?x7}:D<}WӺ, `'Tgt8G$(*k=x50 DwE$J5?€bHq䘪=I[tw: p0W^v4mid( =Ԥ@`e=9kC*jc$ny7Dn !U.{ jq.e:Q$IMg>GƸ\hvH8{JM2}wPObn!"NguT{G- I3&aU,cYNǃJN}kZ/ܼpbgϔZ؂TҖrӸ32wHxezrbrFBJfQjrI~Qfj1Wkgg0ѰS!%$3xv%%|qiJBIjqI~q~rvqfZ~f^qIbN^q+XJ'0O.bfԝW}rF^*xβu #SdFmΨ zuA+d^&QDE2<bxVMs8 Wฝ{jt';m陖hԐ%99ɱ<<|,fEc[@]*(9u2t6h:"_,g,_ =+DKcjF )ݹthG ?qأۇh?nV9 F}VSֵ65M x^VTʗNr ~z5:)j荒'u5~?,G^zbTb XtC "1 MسoY,z&JН0;ܴS|V)r(̷ LIq+x5W_TvHb>Sr^^<+R G*圍J?s۱ v 4O^QHto, s(OU"Wm/Z^ID\w-{K6˯ HSFim)[أd YU;\B\L96LpfK;M-Y[hsJ^^cliz{WR;?O7,%Cŗ/(m84BV(LHj<3H}v1GwZR58*Az‰EUJ$J7 lı<_]J|>&}ՀϽ&eFccN3hoh'Ji.1g-7v!3G1qq]}ID i9vOW0І4mH,Ňؿ׻k3 >`}s*7Eۋstڎr(0)XCĭ=VnVil#:vj%g.ڕ@eFMpV_?-T?U^ xQ;OPa3:r1nvg Cޠ4LP` +Dxm;1ڨ1cپs}U8 z\ٵFIln&Sti),/b 8픚˹D/YO={9?)ԉ^&^O7T'cMrᔴ;ܱ7$K/NMK<ˁВU^R Vx^kPT^+| B7̡(l~nܥ~z'|yF{e7$)C8[crxxN{@@Q8% IsEI:EY .FYEE.!MFh0盂+;? tBx]QK0W8Ju$f1K9!F)w&V[)R^3UW|;0ut.S _?M/7WJ;]tv+zM`?Z ~MW@PW81 b7UNiK=ZnhoG;:6S,̪;b<z\\9hC]C -yx{wtwOCs3oݞvu:zZGԻsbbcBaO~`!CS~U.?~L۟%i=lReHD?l;NYn|D7 tӿ[v0u#H!]ɏ1_P)R ZMf"=K`#R قZ/CYgEUL\ "י,^aBJ$5 HN%EEd+%>\l ΅ts Z(!m!FyAUxTK$k*Z. ,U ,:\ܤ0TsJ +*&Bh6KA%Fb0 HkYBZFDHW >\G轮;!dU">_L>Ttl{x[ɱcFy.$x+JM.-*,KK)MIU+q\]|]KB>ή~\hxWn6Sy3i( uKb A0Z%-(T]cv9%b4{}$[MD|.J׊,ƆET{H}u.y_xEi.۝N)cj#"E(ROE\~X2|R(V@&erq\|8hxN<1 &|D<%Y,X+`O}שJC$sQ+M  0VJ2O2$W7SoZM6XV"„wX1 T8-0 * s!e.t4?*^3@!+&)(\]6 d?j)(~+Y]/}2n{/z],}_<J;mݡ*vWWj)տ4tYN/B9ݗ5\KF-xYS$fxnBNy"h>R1#d8E;M k8RZ^;q2*j܈}vXhȨVǛaeȨJi؋VedTHOL(cC2JحOZ˫mHbr(IPXC'qy4GS;&e؂"+:>=P`V-.KZ{Uḑ^opV( :Fضr`B-pMi ( ;PR K-}JziCtDKLI _6x`clkT6% PCDNUR^>EkP29^~z6Fګf+cvCB˱u \Wyfftbw+c?qfP1J Q(<L#ϭèav\Vq.e5s"VO0Yx-QeQ*bW mA{O29MW:L]~#HxUoEWA*-Qxw 5kR)CAEǻCfgV3v,|VBp傐8gEr‰ډ{o~__l`oTi&p=3$}EL(jchM"8VpMH )51L \ G_}Ͽ<۔x"#[dB28$c v9`)2 s#L&&ì[Mh$ -EG^ǝ:B <˄''z<0$r!rY7xg՘w:R,H1@弽6:]RR@.hg7necч*ʎ Ű4\%70L&/rwPTXfQ`QiI)}uR#s5mn mZ;'$MʑNX*cRڮB=W6^EXHg)KF}ld n ;v`c$J镵 ,|\b:KPL0D![E#aV1 $w' _l|͵0⤫Ͼ~q}|woye $+-<UZsЉo蟮=?[ZLqUV:F*x@ur:p8YE28P('4PeN/l}Rhп~xXn6S3֦i umb lZ%.(Tcv9%b4{Rio Rm|i49 =mn//w۽n{mn;z2r*"p&$QDeD/ :)AHx{! ȊU)mk< "lѢ8=QB3Qq WE%6*†&Hq8*yeCIz2(H_ւzeUa#C`jW5,ظv9=%}#T@A۱`X4f%|>ԔXbG.Aoqmura} ɵuaVKt L%=~txw߸a<>zm-l`(i {2T҅Bz*R+B[6nUN7f" {7y<*X~8H7޾1x(p5Sb*҉dfc: U?{=kUߪgO7۱[aB/Gܫܸh8 )) ?Tyh`2Q9/E4vl\LRb#|GqBmr\4+I6z/ qPfGOO7 (2x|CxUN }W,}v!8J\!52nj/ٴ00Pˬ_RŐ2H1QqF6&!xز3*5=$]*'Z [)j}7* /%Վ77x@x rutuM K@xWmOG|+&0oD*I` R[ݞVq&P*Hp/3<^Eg"dzF'0:]ӰgZ]=(̌ƨʠ9 2mYCr{4R21|,%jhOX&ZyY.5ϔn"-V(X.Z A$=\ZCa񜫘a+HvGG~t[{!p|tvRpu{Blx ,RO*|*E^8ZQpwuC׸,&&biF!$H-1':kn0 &Ѡ/ msp xVȩk/4h\nmBt˗B .h1^nAɈ&'kfҚ0asnuϥv`G}erb_\nqw0. I!m.f5 6ӒHʰ9fs!Z΢WA jjIX6oS1\~] h+k3?U[i,GyD#4 @i}FlCibkw* yčaڡr(/O)&WEr3^Jd j9!lbBZÛf(ED3∀Qq~ N,B6lI9_PBűbTRHjV Rʷ)Z҈)5p^Ǚ zٿwvFGGWykGp><8oka'A Ӝ*;~G]Hc@Q2'JLTy>)4HQ?ڴvױvc?N:a$;)ʎjG'Ik,*Xnmcu%UJ+HWc\7+A?֍a'' <]19KxvyчΨ̏u)&P/V0/I&@V* NŤ IelHQ\B~@*cjn{j[EqNI|z\p]*XDՐ!x.5C:H>܃Ip97Slt.mjI1*M[Wtz'wA]xwgsܰ7KpR|^BeBZHlf<:P^4+&4X oaiiޓɳ h!t)g+&~joN 7;l +T0ylx"r֭^Ƙ/+ud$ki !(}ߺL ?LRq>ݬǏ鄣4){'xH\ǫ@rã2=VЈ)NAv!qg"Qcj`Վ V|:f j ~AKz]~K'nJ?.Bj^mtx{@aKf)w7OW["t}?G_W= k t&.N MJLN//KrrSu 2S2sR䌔"}043EA%45M/NǖYO%LQ*.~A 0@H c Fvj`5/g|`alaN9xKIMLOKL*SH-I/HL//O. TxKIML/.ON3J  [fMuU5%tAmôݴL&&I¿߅4+TiX[ù=S1 IΈƯa,FfTДK> eU,"Q|6Z")Щ=7vN1t s{Xl,LbuY*)v iU QòRdoYN{>u)R \ҙ(&R빈Xou&XzѐG&STLjX6Ǘk(5E9 cYC8כ&gU{?*X0BlTB.Q; X׭kzvҔ=Ж9}W5 N"nu} T#7Y(TA ^{ҸXibi.4R"J`gVwµQEr|W4g"F(ŕ( c%ڍۭz٭о%;5onʿ]S~jn-Ƿr jd1N/Vd$ Jx;>}D@FۉRJFzzJ:\ @WjJI-N.,(ϳUrTHK,.Q()KQ((ʯT(H,QH)P/UHOJg嗦g(e'CMO,-/UO//KTיUv2'aO22Fo`bܕ+y :@:=PZbsMrz 3O14FP@=z(pAzq&!B>6aVym\i}`K9֌8?c "̙ :̟WtʇoSi "ȆXvEKȔJkg6&Z(CoaqBFa+|^CTk;3|N\3r] _;<^~wKx C73:'ӵ,pN"]n6PDOk-<{J\qmk/F[ހ#a&+N <뼽6s@N2HA; OYײ3Ylu+| =Kfx!71AJ}hP'6Kx)` ˜iFpiWDLd9VԺ(_y`N rkɢXfVS >eNH}@x:m6 PO11/#$ !:v- ՙtK C괔FnYd;\hrG4Ciϡ) z.n(1uA ͙tيQHMT !)L7bEfV 㧃-`YƖGԛ+dS.=5),O 7AD2!f ]y%j;)ى4C{2mb:Oړջ`.ʾOf?i鿝,jR9qae_ئ̂p 2?gJ|nby7H\Q3ٍsG)&Δ,S^Y\"S1͘Q]nI㉖'<-Z\5ԉ+vOVs>>[2ſ)ݧj~j^P S=檼Ņs?J??<. dS*[rb1!H@vK;H]XlALyxe/XU9J,0hjە}" gNX1I1 esCWȫlS ʛ43 m~SPa8όN QÛ;Xks;3U<(52E'.Km۷mj99:}_Bsz3ZQPtg1J'v&\ۤ~*N̕1Ҕ2u 53jŐ}SV[„ZBAq0+[J_`Rrsm.Tj@Z0g/}_\uq7sA[:AꩺD:M2ſv\!Ǔ9yݘi W&Ƭ<ՠP4ƨ%y ߇W ֔.G7#0.t*8,?Wδݎ,($#"{}Z=%|v!\\FWlF4V0NاV~,Z܆Teo}%L?02Rw>bH 5Ck£-Lgu6=DcPRx lsmp6+6Bǻ{tw.!}({vggVt6zds|osNb%eDD,ds}%\<6Ͳei& zoMxSMLP V dU INqu}Ҏ#5h&&cx4YhԄ=x041L6/xWݪY}BS'Sc34J"ym(+ 06='ErW`5f8v$3y"=I/>{f*-dfLo+(;XGm|MCrpaܗ  W`945aQ:#&h"ocѱ!ȒMtWyWbY5 CVRMF}ST]EPFN5E†`:J:D-nYMt>hYM{R|A*^㢉"NF(Re/C H6EQ%aN3LULeCgVtb zӧâbʁJp6͡dk=Q'pZTf<󢙟cXTt8VNFQMͯX_ĺ< B@P펕]6C_&:,eҳ`;| yU3_A!,Ҳ?!gK5@h*mwLC}Puloι~1Lqp!ƣX cb6Gà ^G\0I߹r(k' ޭUȓZ8gױӵrLpw0MAYuf$PBΒ^b6X5r{ywCۭp"Cѓ xWoHb.U:$piZʝ\pu#4"-xMmס_3y8]J>,c&+5+8y}8̄LMOޑ8YI1+&:Κ0 RD \.D8œK>^LH)LLθ* 2Ex)0 9T-Kx""BOSq*Bő 8 OD@IX 8S yJ07ӡXH ,0cSypI6E:7 > SNxDVi,!!QC s-PbU$yF#4UcrO|HB8ĢQ8 ŕy|e!b Td[r*01/3u QI*BHb;}m ѵa^wg3~r:v! s{jxV߿=;؟=!s396J~wqZ]z΍#.K0܍8>8=ǿ7{z`|}۳<zwh#~7/v^!u1xs>v}躽6>Y΍hV.PXpMBi_w>vCc3 k}:@gKBD[")Fg w(a)YS;#zM=2&Urv)FE)D_1LnѼ :LW6D?T!Fs.臨`l:w7$=l)3N{%/FyѳG ܩ܈~#7/K/Ivz!4-3)abV{y&u`rDMz|ma둣8:淊"-Tyf3 ؠ;>ϱT "/Mj < VbP[F!OmZY;ϲrϴEpֆ,|# ATmgr @KLX#*D(6HltN3jNr8lF@in[4$v#g ]s׭S61hÅq󨩆h(h.t.nDrIУ)EN$Wg_ŋsA;4w]qs{x;{ypt (i*_9~wKqTVo? $lKo[{EƂuj]+H2qzy5;=ϙz1ijGO sc=ژ}+>D-)QG#Xn0JfкTԟS v1*cMi6g!7oHؑvgJ[ Z %mnc_9ǫ(i }v5S. 7C7:Y=({Vvoۘ3¬ÕaO+nٯ>/ھlū j}ӤHg5`FLJo[-Iykqc}pWuke:`Hm5RI|4"xkPZZU9x*mq!fi&v. I{?V<̢R+N$^ޣRP3(Mho" oH}֚žp&̤|hd20,f"#{0 8ۆ kcOiP9FԹq&cnphvgo1p,ʑNmU?J8^6Uezk}9Ţnץj9 ʑIM[Qa|RPEĂ(= *y"#!&k@F\[KG\oUʣ.1u؁H)9xm-{*GwWVźin"ǥĪ3Yo bܸAS65nUɪbb6x<^+ \-;?e{7+r^K 60bv>YX]j >J1=:Fp1ag,b Ϧ!bmU4]!^@ވ%u)vP/@A9%{7Bp1T~3 tw{/'$!F4܎C:#E\ʘH{K-$Ȋ 򜽻&"[*8 * >QfSxwz{`HFCrWpF$NI@I=PL&)]ٳjDlՊhJ?Qds6x D3\>$@|h\%.K=! E[ٚPaAOHN}t3S0_NFn>Qtc Ų7{׵8VeƕdORe!tp5LK Cin ۼn]\ufɮF[V(b Z&Sj eTٵnoˮ&ȶu&gWiʠ3Q5/Ch4Wzn[]vߚ~Am;+8 h?K5<,$\b =}7!R2L'Suwѩ洿tLE `x ;}wyzFmhڎi2pg~GB;`8~lˇ>4DH3+S.# 0Wo\M zU'+jKSՅԾ\L;eACx-@f>ObNqBIjqf=)V ) I@qbuUɧy' xXmoFί&RtNQԘ(%YkNawggvfvO, /G* Z`,/!Ki0z*݅O`fs,^{Ix Xϰ en.++^2"'.R (Xh=B@MWnbXIڞvfAjd|@']18g]nax^tZCY 1Kس E@!ψ^ayC,AkK'e KV8/7ڴY@ZȥƐ0\C +ى(iv6pdOnhq-'q3;RpC/ax+gੵtqET]qq,߇+"=",YCbxQsl{c fڍq'3ڭӄ+xhKO!j Оh#T犲[#R}t-ɷis+*VkUˋV?J|UEN|>v="ML:!/e{4w8xPM˞H ӭD[zkMJK ru =w%6FwvrN؄P/dA }G2v$ɋzQ|tM|Uk$(5Xli{o-FN=Pe= E,!]bo捬n8*-w_)/ءkS6+cȣ؄_aЄ/@ pō.z,>.PK^ROLXu|kpKuc:zGdz8GaA{oB՜{pGLoA> k9b=:鼻-aq+Wxﰼ*ҭ)Fk_u=HT]{^Q>8>8 ҃6yp<<`#jNa]h2p翩͈j_T:aK{. = ,y_#MHża9m*V+r}!6Bl_@/m`7JW]4R@J++4.|#<ͩդ[ƟU}6Ľx h kĖ06{Jm[ 3 #x|k,(Eۂ}Ywk13 MwovLlQ/I;fYP{l9pUxVMk$E&KƄ쮂 C;ר#gB2Cljgtڪ| KU}"I<(oo{7:lBݶ4/V߰|߰D_/U2-xmYTJ)B>]D' şnD#Qs = 3-Kq~3ϕO7O' *~!Y7*TşKXxͭQ)֪u[ {a⇥oM C<^~QY|| USD6)M֣;33axXnn*ZfB+e ̸::ft\4+UZ[nA6r+#|0}xˍԴkiG;|Ws# @ :Da WB7sHЂs}RL(H(!r2W +Pz8U41&-iTxV Ony)P59eO7k!5PAA!f1z匵t*{=q^uhv 1厄` emcH$A&4=VF_NO1%XN $b$d S@0\KIaHD 4щ(,1(#:pM!K/]Y,7HPgXEQJS^B!yjPmbO y0:*;%>j4Ҝv]l&Y,hA@Ӂ<(Ó꟦1 Ao78轿鷴IWԣoVPڗ <+k\-xWmo6_qKPDT%a4BːfAQD\dQ 8ư;/rVw9rxr_?B*2^,aJXj>vwHs"Αa+E\I6B&f s9D. Z@RldR^" %)1כD2d QJЅ(yFIM*3 .־%0ޣ/܆aQɲeǝ? 3Ͽ?b#:>tX.$d3j+'XeqJo߫zN1d >֤\X~I) xG_N$F ;T hl/hQtrkj7_R ~x`Ÿ`ĢhvofKgmUlH1 tv+$IDDfI^ulMA95;ɳ'f%/$_M\G17RcZtL)>+e,k4#- J f$\#ou_2:ccջ9B|51=; E$/?rpBYT!M$tU?^B AJxNyE59]ǂ]x~;Ngj9 vqL'ȉczuq=u'h?1K  x(7]aC܂ʼ䔼X*T"[_pTXCss0{# 9Qp$s&_T̩:YO!9p4jxJ@m҃Je$fK Ҟm5v'{§E|zpۂ';3>wepxi֢3jFrDQB]wM0rR]+mDw (F%$< Mn4[;K;I *=o#BkGU̓t(߀ 4 dr/77ٱr],pxUM0+V iVM/v[jOQ3Ǧl;& !{TyL߭*SBWkLa1[׉PT6]|p;A .-EDnVݒ:>Ȋ_G Kf |39l/DOКL&?rạJV^"K)ScРLuJ]zN|m0L=Wp3Vffդt ,>lZ~/IFl.0\爭ju*im(QIEaqG"aÚxe XaG!QQlfNŐDn+}7 ]*ϯ>wK">n׻NuEC}Mtz.݁P#_eu?Wx*w\+˄2t"aW=4auݝ9íbx~ɂQ؄8C0Jq^`Nt,KMgax} wYxkkߐ?9QHV0ZM 9鹚9Հb@r! MZ֬ ˁΧx&/{]̀&Vv~~ݛFc~ysʟVj.H%g0)a/wWyo:]{3{aBX@SXNAVX 2kA'=!%e{r5o? JB7 G3Qft3>T޸cߠsFG6qǃlt6q{8yu>>8%Z zkڀ3Jo3 LÐaRxdZ/ۦ : #!07e ?N:??7EAf X;!MǧK2(%<?J;WV4jhOj Qa8kмLtsT@b(h,;Wh+Xe>lNIT? EK7{h"IiAi:lN,o`#Ts~χ+w Lo@G^GĒ͝L4Yad/LR \@@!I@t%$EۆYQ'ٟZQ1E+? rG j;&nO7tI#RAMVoseV&^6ԑJOHEp^tFas | Zbfu}}t| 0]#p FW#!65Ll iNJ 4:CU\n"d/a H`D0!.PJweY]-ʱĜT9d[bkÀ؂.wW`lJT&ԕUZCoMWTzޣNoMmCT*<LgN}ސ_m^mXP4BРu$d`8Q2 9 m1Uf_EY-/q!Eʑ'V P`>r?U@}YMFM~Lły+"s9,P ^ "6]vxǓ{ @ThC ^mOֵRNOEÃz۾7j:n pN*c\4~10)GX́h 뜄٘ldIvL D M9ٻq#TwKca.:η$%*f!oD@K_bQ] nq}_VPQQbpe{gcYf%FltqT(e[c".%_ rGuUCx,v#ERLd7kJiVmYvc`I]k(1&}8pԀ= |FeTtX u4'b 7.Xi+ʥwaͲ %in b~VZ-;ך§Eeݢ$؆YITb3Ntvo4JRu&ܗ̶!.u0uϣkٟu(Gw*6{fV~vfQkpy45؞GH1 yTq.Rgf4p2lvoo|uVFSM!4h. 58&lAR}%xƘz~ sؘvf*-kf8@k;d2yvޠݛvn7l, 7P )0~l#j PRO)%n kփAewp|,ɻ1[ :jCP31t9sgx|C[7'Z\ļ}do>!oa``nᎤi)&6g1g/I>,`wɒr$7>s1ȷR7 *̔#klw& Cs\?"30?I'*\o].0cu4je"}i2@NܘB˘.I`"Gj!d~΢=C4X1i̔LA6╦m$;|ܫr [ٹteoW+rB9xe2q-=^QKmA3QӐ~n Hv^y<: GzO^zl:JN? xP)}?Mh!빻0>2&` QƵKCXreR{\v,b%GJ ̇N. `®P9x37Wg 9фw#xƉNpyb Ϯ(`9{ R/)c(D#e1P,)jP9>W9H6j"0TNZg ] % &SKR̬OĖ +Y51ù=,҉=+T9>٫į[y5ks5dArOơ<>9r+{rB@oSl>0c9Ky,B +}=H!2f\dJX ϐzߑ[BY%:.`JvxҒVRʼnWl?aQCG7r(Ƒzy3>]Q9XxmP_}J;n)$eŕ}t.o]qvcQrW}.z@{-\q]",+K>!~=fR"wkNNyF/2A01B9/$Oٮq/P_ps"s" j|{ v0=ACoĦ֏ OcGx0v5߮IןM<;fT{z?!(n|Z*У)f d\?a# I+Vq}0)BYۋbk6qH6R"Aa|4,mTVav`mr KOxYKȖp^ihwN2 {e! HuAlFB3B8}t:xi:T?Jf#" yaJ bAۍI˖'M;ytru<Gք'9t7?qԅ@Rf6?L)ҔV$Z883nR76 NiV)_w<07QKg_ǿxZmsHί+(8N\R%prli0I7.߯{f.lle~ez{z ?|Uɫ"n w8ӂ(c͊퐃^ q>L([IG!. sBN=,$Zw'#1e 0D !%Hi hoF#ND""w!w8J\MWM^G\Mɭo8a4wE"7ؠr}%مMv:YǖMqfJ' ']":b$>h/,5T('FrgnWѺl:-7,TpyNHgaihv%'bf,T$w:8h,-VK s (*:$wGLZەJ\d:>}6lXS2ǟ9 {{:l.W31]91Fk4ЉωmNdlu9Z&Z}$s4uiv6"eNҴ.`h|Zsk6BM 21uv54l2' * xdmc^Y1?L/q6ب%9OmŌ\&?ahJa`а.u20.ZRGIi51ğڳ55ubrn/Lt, pLN/ jjfd`C@"44%LMc/_GS~O(n|/cv=t5[=N_f|ze{ɋlIH$9'e3ODjzάnVwTiNp'pErA]N" MN-X!}>kp_pO8 vqz%[Z)jM*N@F~z򹨺3hAw^b0jS1ZU V]aL ]j: i<ˇʪr,z H+YikNuV}c0/}EUSқh.ԑA*!B9UBպDp &? S̓eΒ97ZxP7h=* p`ĹKqkwjP~P|'E'[ Z9R's}9h."&T▕kɹQy$v B -43=vrAPTPa$T@=B ],IB;eT@+)iۜk`7|K=ΡbX(T`g)9eT,c'xoS{T _Zh='HnBb;d܁S l,Qn_H!ryOsf|oV)\]Iz]&4V%b&h}S~zw6̥Iu[;/5:EIQ ykV8MY4YqNKՊb|Q/DYk7|7%]B?X=Hxum+o ,Rxk*yD^ :9>ӥ1hATuY#/Uo'#;rO\k{Z> ?\M[[߆`^2#W_C3q_vm[8pa 5V"G)Ww>=xVoEZPuIulvwYBT0"PREq'Vݱzǝ'\9 w@B[HĉRwȉY?TCv=ޯL~wJƠ^Q) ;2D%mJOc;-4(i#$@رi]LJ^wHeEqHL -8oT$ ӊᨊ⏞k 8T!6E,uPۊC:t N,&IM!<#K0D_OE'yҿ{I{!$xԐqDOx_U0; w uysr_3dqIWTz rOXs~mKPuxx!'\nYvT|p=^=/q ]7iIxao>]LG7P!q`rL<.]9&f 2X(Frqe{Y T" |K-f:-9+4^4]m8@1. VyYZCamw}u|,huuip;%D-WY -#)y-;zl+#-i78  c`$+bG!CvA1@>| 1]v ~J: 5<fa,B~O ;buf_fOr7^psfo{b#K3FY %(%^ӢSmQv8oH).YTAȕ;m 9G"HGhhm^77Yt}Tv..JE0K/.3Sbb"=ϬPYih ]%]7\1G1s?Rga$=ő; Z4xLP橗pΓ1/GxF//HDpv1y)2 ! x;n.Ĕ͋w xEE`* VSA{y]XMxX{o_b#ǥ{NAKM, 70 "|cY>DZhQ%ݙ>$xGc.O,g'X^R@0g  E ^2 gHD^ΐ<O"B%WĐGL@X3x78 yhބGo ș(rD~!ǼAx#V=7eeZrSࢠE%ą9jQ{iVCIEr2rlQJ:p) e+HuRWB aᡑ~<>weII'izYd#ڋ"Xs(SbmUN:{di.>vX*qi>wo k3l13N˽]@ ǘ_>c~c̿s>A0j6L\ؚ^rNm&֕"kKe tFhY"ԹN vzb80vfD<1̩;Dg|10D3=X.\ړg&jgMR6֕ cʸ0%8d!:ͥI$#ײdȞ>h67Tp9ܱLr,9fCN l alDsihM>xL'}`fyŊ4+(]0X{^v0~Q@~xpJL -{!)ia{_1OODs\t +4d9O PfR ?R Jۆ,PRʾB?ؾ/=,9 RTSP)-14 *[0Qk%Z>g" FZ4(gJ\;Gmt~u=֟sc*@M?8>:*8,<_b0~Q)E˄W ۄWI`WT3^XBPZf$V =Qhi宬`/B[0^AwZAumCjb+/SWcTmx /WC띣A"'Wc,zsk\uc*^PHWr.Ӂڮ|*h!);U'LFyD1l?bm#$ ۭ椓*0{x+}3I҉ݎ{"Y@@HXf@2P Pb⻖I)f]q-haT0hj2,Ī侂WStҽJ /'Q*lۖrcfQ-iE Ϩ?ڗ=!OןֳTs9e!8d3/7 )Ȅ~x¼Y4>l^v'p,%ݿP=p}PAxYXgw=ʴFkk¹ele^Wγ6CWnzoѶ#5!fŞ9ݍLiIYB>k @3]n Iʿ/wXlZW*}Otth?s{_ՁW0&/A{p\s]P4`C{.e\ch }W iw3Q^ohtx쀖Տ3z-t-abܽ۱LmI̘olg Z W{i׺2k|ztn]ݶ;Q>z|+!_ IQN6?HS,kTklWU0&dT FұK,ju K6{.F-DDa?IAYT9{o^9&}P&#Nxϯt egh87=3jL'oy|Ч*"bvᗷO=̅{v|)iCִm7ccyh>&^w]㑷 v(q1y<GxUKoUVII؉;R al1NJ‰P']4{xB@QΪR@@dK` a[Q ' qxƱ]Dx|qYkz"}9I䓉$eqœP,bhh1ߗW}2*JY+X5U+A |- ! jeU×g!:Q?$=WwoLT$~wj*a26UH-Zd\UK8Ƌ S{$Z֢Q9ZzԨ *gfBj.=UݏKH%͏_5EmK| -3y #) F *% 8gAqp7SޚrkbڵG߸Yn<g0DdO=@"oE/ Ħλ'XN Akty9+dG,?ӯ`97?8#j%J.ZU^ʆw?mLH E& 􏙯0Vj|C/ 7+x&{@[PӰIfZ +eJU=<<~t>> !^α& SL@4bMR=7YGj7=- 4SKZ}du2sku*Iv.V.ֿ8\ xm @ D-ҟm7E%%Aw#B6o)J=24`72ghBӝ vѧ($NFvkVHkGW#J叧[vĔEӦ;қm4 xxq/($(Y)ԢxLMIfnj~iĪ 6^Z^.3DxxqBz) ٥^2Q *q!5=N00]qy QpOdh 4w@U G~H ]΄ t$JٌM↉:%B)@qЗv0tzrV0aàDc{'`WعᔪLWo6(j+j^mbLS\mkɿ)8}+7XAYxO9/'ezY@CH{BE>5-a6UFg/N> hkP.%c-:ox]s^VS)T%Ἳ8\o)Zp^_aHŠY_~~;"UZt8j?xw"K xUNK 0)HIlޥ^II⢷7iQ-Y)KiM6ht>D6w'ËŁj-˕P> m:U *,{o g,jrO4vN M||d2:i xʽ0ᝫFP''g׊ Kk8mw],wVp^nf׾q&SI"M,{40uڶɸ9v2ъ5qƾ(+w Gߥ`d3(A5t(ATr$.gx[8q"L mxT_8Szba[tll#>:mK?Hؙ hq;:4ARCLVa<5!ԚǠܭƂS- CgID3PSM"SchTtmj. m*O?U5r"my0(]8Ggtl5j[8Kߐ[Pjʒ h`L@ E.gb+K \߅M/3D/!^oB`_v"ݥagtWMQ\>gG( ~h{+Ndt"c7߻kMhxIK/MLOR(,S0xt̔Ls 8(* TZ\WP{"xYn}7"e64mA27e3E|}Ꜫ$OK<,}˩s9wsvwnխӭ;w././}׏nxߛmc8|mxXVݫ[5n_?ƺjF兓㮘k`3&(Ͱ<1%f!|);!L)ɳ ;²RƔؙ(Bd< ;:Afbe80y'ȈK^3fEH4MIg>{8AVX4̼{KVfD_*bC64tʢFVXҘ"s(DI1T4Pref-F$b($?Z;6AVQa]!q'*B"1Q1pPOa=:MBt:zZHXQŜ>DYRASm0XlX2k 5CqJdh) 42$%eJpa"بqc>89 ȀJdhWZP8Vd=Nm!kSk7RSl qn{Uݠʳ@ڹnY\ m:+ȉ8M} ;DgdBCmqiRzxڡ>*$̴W"*G eScg#1Ȝl9¤֥(<Ѻ& ݲ2@eJ@ ;L_d5s`rq_׵p2in+kܵn+3oCf)1z6[kwcf{fXbݜʯ {O^ӄ~|_M}p>;6s3mr_|_ݏv|=Kv'A ,U)Deâ8?B|T·k:=l[ydZ5GdNQLg{!C˚V6;ՔћkZ)Qv=*?R٘Lk|)py &2~g*ٝ)iJ9ӛsMʍ:>U=gyGi33*ك!KtվNt}v6ڴ!?yPGC_m@'rViL*pB,3UYԞCUt+:+xR:L~-ݼyW =!W'# &T EAw.4qx ?I) ;/>.ӟPO\g)d]A3{q&DԆ Er}ԖhD_aM#X̛d,D[5&}Vo.et7Y7(tWBarOzJe3@%% CqפM8uI9R?F(/C[H?mC K[F~,IӥhtMeN㶅b|>%*` GU X,|GDX*TH [,掛PU Ld) e2( nw&%:6e_t=9>Op st/S8L*a9ʉpw6bqX=dpX;tKZNjmAm񗇇Uӹ9QI~H%0NXsIkV\ݘ$9b~>ϤG 70@WQ+S'}}H'&5frux..MO)IUP*./P,H,PUpqy%%V%Iz9y)z@9.bxRԢ"%+%C#s= 4TA//*Q0I''@ , `E)@Ӓfd՛r1 _x8J@KrSK2SJsrxjy:xkoŹ"RMW+f%7!5c"e#al bIlq:033skE{^  ]TzB5i` /6 |IBAӣd0<)AZ>G%iDG+ҏ] ]pu?Ռ᎒zi|ڇ`etaPfCUty*5r*܇"1郧;2TS!H(aK$s4HQV; ?c#Y(,̋YKrK{ihvM{~ӪCWUUP5_׫0m4K`*R~F`hX &,T[#w `yN9E~xЎ]a bxu NR?xҵ?@U  SFoB:Y\Dw:ů[.~]kпTtBĜDe~s}Az]w6]}0w0*NsH:W;9OStU)<6,bJxx`ƨzU~a*.N+26X9خi%CBzEi/=f_jT_sS;AޢWkn'>EUar!T^98}3ņc~[XM>]VvVxy!ۦ׊o*/ֽ7t\x= EC+V~/jΩujE+ X[V[ b2]tĖ+u+챞Z)fj́368wރM.Ie c0֟jFR|J htWh`V.?@cako4`֑噏YΒ#+9VT S‘6:9 y'Ú1Svo3+{ǘ&ЇІj\OPuVC_b`53Tbw*]2.BǏ˧ (2,$$p`Sy>C^ևLy~CA >2u~|~jĮ2,]5?X|ǿsV~{ާv﷟k޺#j|{o+YبW+eϤY۪D5x>6֙ XN.cG4NǦ 5ּWDžz\i:S !M%z8D.dzIuq}SVߪˆ=jaԷ_?g.o6^};MFTZ6ͨժ^d-nIQyЕK5<#' aĹL-|&7(F>cXEЅ[Ê4eXLDCЬ!a{e]vY閾V]vC,]ח" ~h.suaH&I#L> f} /A!XQZUՖ t=olb}λ3u8KVeV9Y/v]FZĄ7'}S38$tGt4+om]6q3{^X[2 ntPLWF%B:9ӳz0)umCh~{HxȮ $+{n_Ԯ' [sK+'`˲pu*<;)QJۓL1ihfpGHWZTjXuU,*&Ħ:P"e^vZ5aPx[jzdQ8&/Y dNV) v xiNC)\m7 ZS@xiVC)\m7 &lN|ķxYmoί87Ud%.Bh4@e+16$1 mw/mJ9y37yY2M7tYXdM:mwN)( 7 *2J$-E&f[Zd~ELJ,l!Z'[ZL!~Dɂ| @/!HCLȇD `IqB/M QS C^@b#x)2Ϣ@ě(ḫ7~-Za4o[ofq$- #>䠔2 siFRldD^y\ZX0 *oM67Y4a " ?Oc $kUb՟OB#9,VȫX(Kt͒\qL3a(% nnf2GD~L4SJu.MFWӯK ݎG_%&x>jzt7%P{=7eގɄFcѿ]/w'hJM M༢w|q ٽAz߂trFcmo<_ zcߎ&.Lax5N;r&׽AZ>Jޏt=\xхuW+k^E'pL#aPH_]~:{{1폆h8_mQoܟ0,W  CWaP؀=t@ h37&Gъ3Arü[و/ IEmn)F|I5ϳMPB}&Bҗ8)vbQ[<]2QF#s’X؏bk,]9*|o7+g"To$VN-Г h{4l<e$4 <7d|&,m 41Yd/X[ӢN*D_B^Z'}:&;BIQԤmj_5e@yHlm}8ؘa1ͦ?6%wcXFEf3n Drϳњ q<a@_ YN-Ը@Q{ޑ2&ſ*Eʛ7He* T k)HIXö';nؽM] aVd( =9r(fAja:'aSTEfӤ,gT4B,13bղv@ [&%!Ts -8I+#>?u"<Qg 9Soyݖd@ͅ_}9|n=9J'XNiY㌩m\#mrL_Ef*rb֋j2 Dd+Ly\t- R"W-s-EV6|0/s3 &~h5|ЄM`IR{a(YBO>}eScr}2#Ŀ>tZ;`nUet.'a3)k}~3 e; }/쮻ݸknDZu3RJm0*N& tR | )fGqI⭕)mn8sEAPsD? Ded- Um CYAGEÕ'.tdާR? o,Twn.Ov4 Toxk7nd^V=܂Լʂ&2''g$A&gpP͹`%HK(++%f*V$di'T*祫kNf凨*M-Kb&+¼ vQu w|HI"ԐZ"?E]G/?/Usy0Բtz~nŌs&XLL,W݊K @ |KL^ M >, PJ 5/b e%]X\BfŊPJ`r^(Ld+`"ClF"%#+8c`JH0dXFg%+IR$\]9͌đĜ%'2zz),DD,.dt"RatB:$(u!X7E"څXbS⠢g$(i!zB"=94R4iA6-7Ej%NkFH`)\4r0Y,/57Y\Tt&K"/Rk$&rZdHFW٠Je>֫a6N}fp3\p4 _v;\p|_ ol)7`|>ƟJ'siҐ>?`~"e0d CNh8d H<ƗS_㹇zq fWш!}p>p5]8G놟F~ ]; k.Ͼ yHFz y03|.:3߅4QX.kr2Mc⡠!|;wpG6#zS6 rS0R&mbrrό%}y/ȖԅߜAS;?0-ei:QW"WnK9dt^%M%[$ܾ[ci g5l6ykQKX&\X88^mE_Y+ևon"*vc^4,ʶoYw-A0A8v߅{cS蟝t3v2lYO~[ m!YEfij楍3Ϡh&阿RQ<%’–81D6%U B"#J"xW{%Jrl~-$)oFC,Xt0&R&=wx7Pc[xds& qĽ&4/6+2X^/'vL>\!jZg3Ҥ^X=+Ԋ6؇C1lIE '-]G0<˄h-B>{B#<^>MR'L1k25j;^MmmoM<}O:"P~Z[: n@`D n5TɔN/+I [YvX倢nGt5aqlᩦS!AR7ӛ>Dw2jNU{6= ů ΐcz,ϩl3|PiRG1*JؖRT7jUfC5YaE}׉9WZC{^ٚLl(y.k;άO{z 'sq|,3ޞjœR YjO?{n]V<ۉou؟P)T+he4 3 Ô, JD*/ZOCY+\Ah/"A!^X9ҽVLZ޻^ZHw,f|Ϊ;%$R+t+C D` =J 83o^uٴſkS>bô:b@+)7Ks{hD iR;c'wDyFSǓ̟xS":׋`k뒗)+Ϭc)L; +%4r8r;}2%׃ft*c~f_juU~H! Nu3:ME}My<VB*#;aou2nKˈ7jtvMi։In^ޏDR.mi` .$+ +yQlݒ6)JVx;߯d^V=܂Լʂ*dSsrs3RrREz8%J3X9URf+LL5RG5EssIFuFPCr~^Zf^zjznjIF~_~^d>bĢhCXl\D[q) Eߋeeė$&"[y4#XlSx׽A_xs&3 xRԢ"%+Ĝ%%+ c X)T&^X\\_4-)(-?_nVIfnj~)P/W-/"``xk`8ZRKrSK2SJsrxjy!cxX}oHO1OF@ ]OX%>Q{7$|YGKw>;;on-w0yǓGH7J$8& L N~$$ش gq(e(%xXf,y`"˖܂\K6L",Ld |e0)21OrEq fp2'm%&,B~a4[NSsȸ̳'.htơA!D;H[ b zre\G\Y|qPҠB[މ $H5❆ ErRrl]%ii%5!Xg *:%s!0hd/ $d_ol.2t"rԸЃbBE̹dFU s̃EL ݷ.r`:}Lpp3u/ 8LĂoj|;DL/a0/7g:7CQwt>pGR3 Jf:SbwLίu; Y]O`7=&ps;OT8hf\+j006E&%o&\~rPSC·ڂೣȇ,$`#|rhdȘh6W m̶ܩc`N-5IEb#CN!~;u, ۔ CKj-2LY[u=˜2A-3#紖[zTnd+\~Ĭ|d!O0{?%AeIgG0j+oʷ(B"\VpKtC. |*vavP5,4o`!qnͮNLiKόX<<[#Mn28Sd܆ l[mvY1IL;'~IsMgZFш-XxJj Q0gPQ!&Z{yA=]!>UASqalQQ!-Ӡ 1HKV #!y7xTPzԙ|u&Ln`۩'|e?e.桫l O*;](eqGC2y "w_/Ơ@P+DBkcZPstU|EZ2${97G9c͝E!MQf_Ri=orLΫ3NhP̋/ ٦>@?/U[2}EoR^ŽoT k-w tܙNHڰԮh nI.XY-*jG"}GV>Qgϼ'|Eaxg04- u^oi~c$z?7}J02vi(lJ&6JT?Mc}]Nm5 d,gtJ2-S&qJ) ԗHuѾoX? ߶*t<ޯ:CsooZ¤HZ=acݶYQl'W=uSڢ,MiTIZA).|Wr9kWmWv>`K9`;cx=ddV4?Κc.i%)%# #}KEȱFJ5H8cYb*i5#Twfv0^yNEw!N/JAO֜V,x. g[ڒ?S$G(=J{tTxIѾGԙ89o*G",hL⪌y[i]XҰ?]"&^woO㷧^OS\cL*i& =uOԯj̬cBz5?'X3K Xͱm[!u/R3  y7E4McdقwE*&YERcb+` n,[W{Z9N/H| x;LoC"6oʂT8'o?9Kv,fTcy7WI3f(%&&%&gs)^AQf^I|jE'/ќ|NkTQ̼t=O?7;Et-6}6x}O0 W?Da6ȠSi Hѽ.9qކ~=6@ 1V;h0Pc<'-xqz_t,Q` ,̂w-t( o^$<9:;diK frc,- uR$jIYo)x[4iDk%&->xWoHŔ¨>]$8*`j;E{ u ͬm@ڪ(xwo;;~hYώX\䙦=~^[HУBogP}]]c%'a:Cx4`u s=x ziU-*fIliQ]`!u?o\\ D\#d/3KLF-TF07T}H?%ێXmT I mKabڪ*><@JЬ~tk-}{{j|R>h-QqA,VN1Ī:Ebơ CwCe, Ujrb3l;ɨAqV(uvUj̅[)KVMuR:Ju1uZe2%;8n*-̏ K%]F=O-lD qg1,eK_Y-V2{]Jrwdcm;)̤>up@E͈oNvy%WEKՎ F N˒j2&ϰg2QmaɎWO[>xJvwO^oJyA= n ]_t#]Wz*4|+MiߓNKlA`*tպ ~ɺ:c;0]g[fkS a$pH=ktqp kY2)# e ,[G^Žc*i@(l[Vn8RIp"J$m1 '}{;`ӾlڭwVB)hF7twgRɄ8P33 X)Hy!☂7j ZT i>81!4B_sDMa!')mأplyPgB }x0zl\:<kT*Ȇ]t}kԞtlIx;Si܂Ԓ͏YRu&{1N^dsS'_M*,.QH,J/VӃPŕz@hCXl+uM. H/RNQ(K)MUSd4 [[uu8m˴+ NA֘5e>_.#gIQ%Dv/kMo' (N-*K-S@y\ yuR䧧gi` {x۩ԫ],%$QV8?9[(5LLsFvQ4dCɻy&?`T+NKI(NIKIM.,()T,V/QϛKx M|]GjQQjn~I*|PlK#hG8xRj@ĤЋP@/v#hcՎbyWd赴H@_K?Jr޼7vf~: xM10E{b$'@ n$:41x" 홐&+=>0tb !a$g [ϟWB!`,[#,Ŵ=J\YIsSYcA`A Jܰ6$ե`\r<쇘nQoun1s]&GBx{?8(9J$#?Ow#G #;=1jKƿ09cgxTmoD_1Z1$*\J#&8DXx̯gf+HH}yd3} iz 8[%jz SNo+o^߼Bcܑ<}Z>nkM>yhS5zt1S?p\,KqWp2 p;yWc9X^ X ef#.3(˥/+3R͂XF?]E)^7)?=RjFMHBS?S/4u1Ѱ$=W*_t4>UjAU fr2|%3.4nч:\{wH.z~Y{dɅ Ff,e,'Y؊,8[|μ&%G$Ur:%]x|rBU#6PrrTյO\\^lbP!۔}1z9&bO<ãv+_rW符7) Le7[>. *Dz Q1ӑȩAd$`9%Y"0 `~MMd]>b K&L~>-q*a{6 ^Ф$fN@ȿ1qNՌ"ɤ"~u`K\HqC-nHS=gbM" %Pc"zHiL"⠡o0ALUSw-sܸ@wO<՗&Fb RI4܍oG ͧcbC 3@ E`Ƣq sIBE}Au<%QjbdU8`܌Rx_E$ЙKyT(Yed욻%aýCA*u^-LOJ ̦˜M)$zsa@j$tIFAh 5PMy]C#kR|6+F{o^> ̥[K3]4vѢ_C 6 *I7B_*,ݬJ20dU`oa*F4A ],1>[`C`(,@:e2f@;H'vq⦘( t Do00]^ 3Ί(MP$C< Q PFr/hjFi[=z'{ȟkYkrm Q1yɴ+JXĸ[0S@tq,m&pi-3lUGI 1_4Xm Izf8<ŲNq4tLJemM:JbX6;nm2fΰTXƼ쁢7\ڛm8vLEjFw2Ay酥 ňaèA0[!Fky;at~WW=TN+>+fj[ OA4&I$F lPl4Lns]n@_{׍}a 0=CWURڜ%~q4ѹ2S b}%+̐b`@X1mym6=ixg߭YkJrTGZ OuV@x|i.uZytv;fYnJlZNaܿ2Qظ]Bb# Sck|u3 M2e4> ws{-Xqƌd5nj0Z76:fo8Mf07hoa@Po i2=*544MUqFsF,O0F̶6 iho ܩsL.4%jnM?w`d&'DO1X,l%c6ETu#dzۦ]PűQOXy778!|rqCxD1zq&;ua *D+ !5O!mSY0@F.@Cf&50ؤݴ2YʹH#3HT+˵YǵeUMԥ/ͬhb/̸1U`=< Rx`J.OKB:B|#1jy& j&7g!SL@+MOFdjg-iB Q%%Bc唋Uۍ1-cX16B#fůhƗE;K\K_;F>Рw1|62Nw mV\3s$KuۃZ6;FJ)| `v*ܯY*kc'ﮇ={;Z̽Bl#vz:R=ޢ=oaƒ)7IJO^qbC&% j>( v}InU'R'G8@3Dor;̎3 wڜB134jx,#Rmdf,nYVK;aP>z~^]MSk Y{cg."Bon}'&1@ͥme,U\*Cx4THy%/~-b>(2蓐blz9{mo9 C(I}m%S_JuiM/4w]#V1rGP|VIXjmoZ|,QM %7y_t"!xA; }rr95@n0 2hC6xw~`lj~B)n핶4Ikd7Qu6!%$of,.(Dt\Hý taȂu&<GxUoEWHQ#0v4 Y;I *i]%$!N*0;lRW$`$n8rn7Nfv kyg3)+㰪hr>_ʢW ʘ&J QQ@`Sa)a ' 9"H=UZ| =k%BY MtHQD4HTәI.Zr?vB=*@Aٴ ވ/xQ_Aj+#gƂg HAb} wNO+;*q  D:8= ) b5emdĵBU7rHRPqre(=b\-m_,Y3k)mFN#BY+yYɈ3Q(T0>:! _oMA)R㗵~zQ]XVZy͕?5e!sȳ˥{[VÒ%xv 'WeY9:tTM@t.zxc?SHB"ΜzCK|7p3/l[6g:X̂}uv6;v2ka0vf[\JY޶1mtUZ-/ ^:>'Ó=A{wC&iUj6ՙN@'΢ 9 KT] p@who0(¶ E#7L &6Ñ Y+p5c}YM[Z&'YMaZ\rxb@;'䇣%$OMj?&[znķ/24-@L՘L]eS\[5<.c2 "&C8ݴG}{BpZD 41n PH) Z ւ4+!5 ђ ۄLqU& v?O,)Ϊa7gO xmA0D=E4Jq[SJK%^_[m^FF݇n aœ[JNj "u " V6z7,a9Aώ#`J!Mь\Pn7ڹY[uaF c|)D 6 xm 0D-='/Bqvi-E<3(φfyJneVl>ImPMQkA5{J~`_;V7P[?Ӿ;nZq X%#1ŢA ޼A?x{eB.33;*MXlӷxWmo6,l4q$Y , -6tI*/hwGJ:n sGǻ{{NhliX]' :< kpյHمc,Q7FW Lh4iGvjem؁_"c;qi8U6[.K50 yX5;`0V)JN~mZTJֽbO֟5tk~̘H[Y# (ށq%ڙ ct& 1BQT&O)$?ݶAwNUExV@^HiJ/kJ|^3 ٌ{/I ]b?Q!wa؍Gq$qi XEsgFix688khЮSfHمKmRV -!t%1G ?ߝXHk6H4\Рay Q*F._* q+ +$;D`rLi9'R3j᰾ׅVAdd0)b\8<O8o Cb*x"hKfZi V5gq.3DYlU,nЂ#H,7ڮŮe p.խ5GiPi-K4 {^eW"R^GmSڽݤ Hsc0VLce\ N{)=aC`! iQ o"ȋ#GIvB6lI9PBb[TRULRA$5H F+Tm 83TgZ?45Qw݋q{}pt~NvϽnTߏ Du .4ʎ?{Wx*Dc5h *U? @ jE5#wR>6RלD5N:'A5cJ`He _YbJ'8iq9ݭ3QW*rX]IvX?1wy $JOuCXh9c!wnazq%^K<}ĈOgT:QGz+$x + {Yڅb\2[6g.!?pi 156=5h,N:rLjd)J=]^,Iշ"$|Kn|G,`p1\am^ mtLgsXy "7h<-g P'u %X&Ouyfƣ_C~eϿ bsX|GƼoDYkh+y' k@ 52Z3kLj} 1ۊaA%~*I?@ $(BN8OHwDŽ :e ?( i4b X(wEDEqA%,+$5OD م/!"WpKH=8N2~9v\.p70\xM10 "CuE``1Q'eねNwnH+>OuJO5uYƛV)*.D<>ns,s+bI^O_2;<*t>eKn;Zg7B IawyI*_:2o]V#uZ7? HX(fF}~m]5%9;,bY?|NU&v}/ tKUI-O9gz4sDB(fX'Cˋɇf]̧6 T`v-s1BoK~Vl?~yV8ROsEAvm~b~l\\oyu@v_~ 18y22Mx;Ⱦ]HYQ?)3O8KY (wHFQBBQjn~Y:P l JE򂹥E)ꓽRu 3sRSta lsR&3yJL/*+.IA:a Xa薒YXPXZ^P)-K-*/,I-C8BY\wS'5T֠8nLLE3k+ #x;Ⱦ_YQ?)3O8KY(u@]^j.W\bsrԁP`]M~NdF1iT҂ĔTFOL/*E,T5"5y.L LE36@ x;MPYQ?)3O8KY((wH>SH(J/KU@M~NnT (1%U}B^j9\"-13'5E&5ٟQ(9?/-'3$HjBBfnZbY~iPGAbrvbz]PœW1C%uR3u3KsN~ʸbZ g$yQ3:" ȴZvf9j ̖ E#i(]+#[ *a—.; WV+kTܹ ~^]Y~w%Ő"1O]]rʩgk_e"4c?=|G$d9 aL'No v1~oJ&¯xubaZ~Q|% ?Q-f^LAYD!>% ?Tu&x%"彃45@! p<".$^X8`Zܡ\N$D V<R5h8O>sr$*]/y&)7xE1o0B%-*AR '8E@XIbCI)-[!F^w}ٔ'YBf"N(5Ml'H7M[wΡ4 hh1$M}D@FۉRJzJ:\ @WjJI-N.,(ϳUrTHK,.Q()KQ((ʯT(H,QH)P/UHOJg嗦g(e'CMO,-/UO//KY1;?dNF h$'de,8y7[xSoTWGu-*IZ;M&U?f 0VcC# g,uf;]> $H<7O :ILmҤI} 86Ys~|;f:vy8q**omn*oUAH6L"LKX޹ Kg-3^mTW*U;?uBUm0%}%B}=ޅ47ut[LI5nVN [UWNk<~Ώ| 'c4.'%Ep}8E;u;J[JIkVyN@EEB۪HCx:X,nd/ e•g+q om[,%Dg)` 쨦+-qMMC+ 2wXW@kB e&鍞ܑ۪i /ZKiٰ lے6 W`AE{]];f4gi,L Yy8e˵ؿa^x{¸x3+.Yzʋ&W>02[Btdy͟U2J%h@EխY@ғUԁLPг33QQ3P=v&#DAB^~BfBq*ɆZ⛝x7W3MVZ,_TZvvK,%: L>n%uwV%bQ$`xUQN0^Q6[J*0BH(tDn|i:vS:x>6 Xp}O.8$&LAo&m!\z#BE|),D-Q)i+J5l-!,-] R`k4 PJ2{XIhB T\ZBCʈbLqUSN":JNb">!@ $L :x>˦lsWB%T!PkZH,HZ._ l~G[Eē4L L~- zK]0 s(MYV/ԉu ~x;>}D@FۉRJFzzFJ:\ @WjJI-N.,(ϳUrTHK,.Q()KQ((ʯT(H,QH)P/UHOJg嗦g(e'CMO,-/UO//KTEv2'aO22Fo`bX Cr,#۳^,L$8ӜuCq#ij EE"_^.؅8! z̥o& +9 ,$.4J3TC o5T$'&Ǧ8<@#uX&]'~evJ#F> .3qZD&L"F)jA!Χ}Xs(ڣUDU S\C%B讵Lk ܝhOa<1>}S|gݼ6nM@Iwd~cUU1h)oC]Q}\"0a&šڔnI_P75 taܝzv؝v26G>LPv1> L! C-0!-gLka_K ^Lvݛ& ! 0>_k4H2gƈ#s*:1KTS;ѧĸ!3ɱci9] T+!u6%ЂUyE"^s7,,xkVM.!s F,}n$6lΥ u;Ab|8/Z0o(%)c߼~ȕs#NjJƟ&[r)Z'6UoeAR4 Ofq ak+p8)J\oYؖc+]}k­x[< G K1UH_#//V9j*M{I+2IUK7g`?-n9rJԝrVzZ*1)*2";sX%<{E<\g ƴ*8A!bdP; bU1Zc1Hq!Xғ;j<2)-mFů;YRkᳪ,ΨcwBC ^ 9l{ ڴyfop{&5zÞٳa9jb=YQ(L?C%(\~/(>DSl,čWvK(+}cO C;1鿂qll%۔DZJ8#W.&y \m+FPby{юmv(eNvOQBeU%R8*z U;ʫ\A V */J[KڒVUJ6&RSTh ⶾgx4X-Tb7m;YgUU+2sc9yx(sDV֫EO[u=,p=[}e%o[k2uWP(O60 aY;ȍt~ AS*MNPlIVZ}v%%/G/ .5n8+0>w*1 |(e0 x`g>?TbYK_VL^_xֺa| Z@v|o 1m!mEU&yT(+fv!lnsqTgqI5^A!!OQ_RUvv6OJ*l:XdKlbb~\*lPQlI:ovjLY3s=˛фYΡDYiۧK,3EˎZT:*ǿqRš!qU6>|r0iZ>޳|jrmgTXt,lŸ 2CuVRSѓ'2cQ|≇>:>*ILC!0Dz.CdZ.* 6A Vf=}Bvy{u{ݥGC2haqem MJ;I6.;͟hOjg+en@P_'A='퓛CE7&;sn4jۏlLvFIQ֤a8n/49L c'Ќ1Z504zݡYiAݼ/G F3>b`7qkŦ́~vW)'Dj&Ce :p}pI6V;{ȮLE)Qll]仆d'dyṞ ̡' QS-(7dm{2F!S$>"(\}Xh'uXU`]^qq` (T(شrF?ZĉQ\D gnGx>NMcB ևĽ]H Q}/d"mc |Q\6MJw̳l.ТU4Wp,; ,ڲ<_nTxqsgk/d-|/e9H*PG;D:s%ja|_]!<0;=%/"dӲb\Nea A.:Vq4ϣNc`bQ!slb "quhM"8VrMHßǿӣ/?qݐ )MQ- YŃ{2YdB1gT,Da.=qD 1+ VSg)IC6f9Bxx _N<]73v$s#s[/[ s#bS_Y]),H1XE"+.Sҿ^uqԳ-˧1joc->\2$eǕDɈӌ`6~wшx{[8݇$\ʵͯ6 5!G"yyJy T@y$S2ɡ3W)3^8DŮ ^"⾢w0pȀ#b>Ѫ"0'B 1a;)@"$ 56ʫ+ymptb=V}_k;ko5 0Xj!R zqWZ[׋N4 jtBC ._8+#t`TOԭT|י!˪6_:mSRR .dgnec1*ʖ Ű<-70L''t7p{ 5̢!6wPWq9Ġۦ]\_E:cHpj{2rj "7.o\nM_;-g dfERIi.#8׺PcД* KR[ǒ8dz̄RRCɬO&?<řDs9/_;* umeZP*\tA%KOLjxŴU~JGHESCg0.H{a o<=I4Pn;=WiAI}@BxEN@fACQD=]ew)gtI^o_G'ޝKV9.<_HPĜJ `qQyP fjP"G!GUj8Ԓ62>p[ې^6h~\wC(Zqouٛ j<`Tʌp`&za@aBR+hƠ:C ,*>qƟ\Q&`KZ*;6I !7QGK CWLv1?^ | x 0= Fұ ܡ;gL9wC#RO*5"dF9H1WVQBF\ ggLkBو#c ux;ž}D@FۉRJFzzJ:\ @WjJI-N.,(ϳUrTHK,.Q()KQ((ʯT(H,QH)P/UHOJg嗦g(e'CMO,-/UO//KTEv2'aLћ'cq6/x[>}B? 挛1^e:  xm @ D ngJfQh͒l +Bm1WavY$hUఉȒK0rwŏdr[kWMsk+a$-ӹC !տr;4G¼ q7? xxQKSR p^M°exT[o0~ϯԇ)qմ uS]o!79)VmNSw@H/5#޹gTOsҸ:([#vgW5,L (ݞr| QmԖQU* 2%7׽ʆU|t@f2alE' dEpH܋KfB .blG!s  ;/JbeVVHn@g iD籩- )8,§qR( 뺲$ҳd`Dlߕ(rf7VP~W7r]a*.x$!+jS讛5%!HJXp &G,yZ'\3\uE}J&#ߒ.% :cD♴Jbqj]A qrbϮuzҫ`Ams (ǼlüqNm[ lRm0/5NOea?>ded[&#⯘ӫ"zU9]ۣ%*";%mwh(Qp֛!^Cp|L~#j?a~V hy7p}^KЎ6Fр(^q!xwB2WfzqbNqBfBqe^bQzYaL֐ѩyE%Pz%%%gREKR2l<\uB091f5&;&$Al.9,~h'ƧۆjN`WU0BrtjEfF=9ũpYCM.`B@~AjFzq~rvqfZzJf:rC\/=??='U/9?W=V^9l0Td+(!hw^yb&,vM*1y/d{qgx{w}6Htx[`jBANjbqBQiBBbAnzjBf^qIbN:dFN)Aʒ<\ʂrKE&sʊYEkIx[`uraɜGMQx#Q~dN4Ē M+. |SvN;8Xs*,U qc?xE=N0W 1PJGhAH I WD'-BX?tFf HIryL(u PFvK-jlԨh3XIϢbI8e(ߌY^2P;D'/>w E4Ul ɸ̩u1$T;^‚FBR睷M=3zm+tAO3 DZz*EKMDb$Z%$\beg4 L7r 7s tx;ž}D@FۉRJFzzJ:\ @WjJI-N.,(ϳUrTHK,.Q()KQ((ʯT(H,QH)P/UHOJg嗦g(e'CMO,-/UO//KTיUv2'aLћ'c$6'xuCkC,dWWjM eslYɺlMS{Sy( C3gUX(44{'&Ex68&]],LAjvX⁡"Iѓm\x;g/hx6ne/J/IOLI)Q(NIӋ pM +59^Bz|vOdxToUhP5~nBB B%JH46ok>uB$Ԗ+4$$qpTĽX@fw)*?f7_JDOAͿ2y`9ߺχc;]x}D9V. l+m^f8ߥMzcƒBjsTAheD m; e\&Y;ΨX+(A5<6H&7x hr1B|i팴8>T8bqWxO;;ie(FP2ȆX͏hs:ssm'FӠ 9BIBeg۹g B+ο~#cj;%QW6]J>LЍ +[4FPj.=qץɔu$dk ; Dph&}K|0Hs?|xKQ$Qb{W:|jܩָ2#< Wԓ[_T›WK;tU'L K7tWFϖʊ=4h/z#ssumcyzjUASV.mLv/NaF  0ɀr Pi>\-Bfa`XV w=kj!!P1 !˴h¢fbJq\$EECgasHB+LV;CbD˘>,ۓXBr)DC1!=]nE|$:PdYt[k.I4螋YcT ߵJolMCSY0eB8)(<bߞ>!}B#ݙ*pY%gMjtxe/Rx¼eC#K~QIEŒO^ W #x3[+3MA818@]!3OX/(,Z0֊K&vkȃԼʂxj M3%)y:`!ǘSFgɇY4&K*m``)oxEAN0E+*a eB]9$x*Gl=t;?8]C!LγRdPynO][8qy'4ޡ@Q4Q6oM0, 0UZCDWsR n[c[X#d1iz0h2DEFG趬 b0*UUB ZM3!g?VJXsxTA#Efv@Dvaw.a@U7 cvс ftvOەݵSj "/agOlijI{˗{}wя:]Z]')Lwb2nJ)P}Wp)\]dKi_ꩮ8$Rr:f<)C*#,Z4DrfpvBFMus1Bza¹(rNo>=cAIv_߸YYd*) 6sW' !٬ nkTfq$kF DfRLih,KǭI ss!N2jz'-zxLE^$f)И1y魽[geՁnZ>#W*):ŀ RSM^zz2mky̮mkx қZ!:}V'.a^a2 m]`jI$»oRpQ;|U稀EIu/d4CWꗦ)6P)Z+lUڸM:D\} ?wűYqA?ౠml9ȧ̶?" u..k~fPX[!;v~:9_{q8kSfYBG2&{y0{*˥+ ɛ&z֯޿ah*Xx_aAfn^qFfjNJ^f~AeA~~qFbJ~yq~rv^qY}qIeNmZNbq7ĜE4%eOM,.I-g + ,x;ž}D@FۉRJFzzJ:\ @WjJI-N.,(ϳUrTHK,.Q()KQ((ʯT(H,QH)P/UHOJg嗦g(e'CMO,-/UO//KTיUv2'aLћ'c6"UxmQJQ0!5A$ QɴJ&{8l^ z-{h lQ6{{ssߗo9ys5wrNN@wṀ (DTh>\;;^=mRt{}}u0?}Exh(SRѪUlQ]1T4AՎZI@%U(E,dmA6#C\^e[e2۩͸i+B4K6 ~* r[Hh\P3aAX;e c9dfb" VEu9;hʲ F ja0+QgU1qr%K`>;>ɾ "@k0 Z~6D s9pϽ^~ygS,UҒK[gЬWjO,hq8cE;B.Eh)UZz]Ǥo&K֠QWZGtD)a;rN-7,1΂Kт+^D/c鈈$ϛ?jɊ+yi !a fÀ`c}{"Ur.q4z5!Kt!p;4 u87!5cFx<dFjLidN\xy{^QjbBtHQ~iRNjqF~~If^zBb^BIbvBBZjBnf^iIj1Hȧ/WXb}׳ikchx-۞N{“]K"/g<QbOv}>u/x:i'?7gYb.) ũ@*R71~a}6/|~=ІKv34uulzhrQ8ٜ{{pdEߙy'saJ!J_?=$4I/9?W?9'<3/R8#1%8?9X<3;SM?jX)@vC55l.ԷGxH =, 否则我们无法重现你的问题,也就帮不了你13xx$]H@LDLВKW-B9 T@U!?O!'#4(_VSŵ]? Yx=10EkSaHmCW T]A뚃uG6™0bZF4耲(pTQW, =dZzMT8؜ xҴFi{(ywh2' x;ž}D@FۉRJFzzJ:\ @WjJI-N.,(ϳUrTHK,.Q()KQ((ʯT(H,QH)P/UHOJg嗦g(e'CMO,-/UO//KTיUv2'aLћ'c6l/x[ž}B~ifY60xRkPf3bMl#F]k1ٚb;VGnV7Zjɍ IIe}S> <  &MU}[r|s<|d$^RͭūJ^.^+<"8Xn`.QnBA&[}ySOܾT6b;%\d.C:6Qg7}(Mx6,M# wV)jaYńSeGEV&Ox,f~zqMM3A;_E;]b"`[Uߴ-%At yKX]I/fP2NB)1;юLl,]볔!oP6ьz{ ,4rsop~>vPt['*,16?VY0ΣښHz/lx0$7L((/zz[6 ǚnˎyY# vy{,;z#M.yr\4HFDI4J0!ӫĤN@ 11oinR,SH>x¸q>yĜM#v jxkŷ!1~r`;85rs5's2-B& yC^YR$oɥ)9 ũ9izo0ՈIU6J1,@,@K.0Va@r +aUlYJ,k -;4!2mx}kAIVE[PD]R`@$ Da2I&C63l~`ԣ70 S}CO!zLu n#%efY"~ 15BS)=5Mڶ P6A)}Sz7DǾ.d%ך.gGL.*@ݥɱMsF`$M]xSQ^ߣחgl 7xWzK?C剣3˘ 7 ǭJ`#WK7np@gz<\̽=5M]}i%2:"ŴW/A31u="7;L>\&N0>>UآڬKӇ7*WjjF Ѣ {6}BRd!A! p&fIÍiu*H0ުTuTb*=[@43#w=O˽vNZR m)aNvG&܃<,Φh" e3g3B)Z=]@1Uʟ9Y$Qy`X?pu3a:EHF%{3*2?߻szrhX[[#ļ̼hl's)$&NጙcNM z%Wc{|ғM&+n)y;D pxoj\E) y 깕pĢ|EX+.(OOKK-*/PwQQ vUpqus Qp rQTIM,NUHHKOU,YQ_Z3nzr~^Zf^Vq~&ܪԊ v܉5*7xrq! -6eW=TxrA -6eﱚoB0vff6U\xV]k#U&K`CUPЗ˜hkȖƤXp93sieVF+BoJ|LR@}ޏsf~m|/?[yLNGgX0cLD㐌WIݮ;v-hhfWAIw- f#~p|P0~9jZVv}n[yŦ-e[E>o[E"o*ֶ,k.~qy.s\3η`ܥAH݅Y%Q8έgr'UXQճniGGUOo[,P1Nl*m {ioMڶ!ުef_^?^bSG (jd߯= ?, VZ}{QiֲԿK R8?ŒKSkAcR8.&;>&cpe/0& pnZ(6>Y}6 NC:Z߯d_=};E_-ȹk\.fXBt9$0*k. `W3sD՜?/G8`:Q{}M4q!sxظ ;;Ft:nV_&<Еq  (T]Ecn$9jF%+Bf]!{iV +22_˯*L RWgaq6M؄A~YÀW.IE~zys?Ƣ Ho솼X6AMeR/5=8`"ic@y:f#1玄`06S qE:̜&JؘTK9qDLT`J(f ȕ񾢉FeN"#2r2*#!W2ҥ ]rqxuP+)%dIZac\&#ϰHdz2nS⓶S,o%l; z3x$9ʃ#ii,l^QΠMzZC9>_-\klYlZdpxTNAND-b.UDR41Q,veSf"8&^&$^(ۂѽhw󝿙 >.rcb"7iƛU(Հj5Y0jj]M ӷ9 d7 .65[.L@CKr =c,8CP b& f> }it=-#F'2@T0D'}"L]#d a+5V7eDO$ͦz ʃ;E @N|FllmAǕčQ=!-D ֌MڝF\`~InCC0 .f$.6V5.|_=^ԡ`XC PӲ$9ʍ& 9- zJWql<$./ޛTd.Lקi ETG~xۯJ_ #:41@#++l0%mAr$,H\++K󕹕w9Yf-Ko yJki> W]\LiE9ӗcgfcvimySŷEĈ浄TÆX_~D]le0*Y4ME B76riD.Ke;m^2d|.}fQ08t,w^83`Jfa) R/)d 1zN^,L7⠖V.&n68. jx;ž}D@FۉRJFzzJ:\ @WjJI-N.,(ϳUrTHK,.Q()KQ((ʯT(H,QH)P/UHOJg嗦g(e'CMO,-/UO//KTיUv2'aLћ'c6l/x[ž}B~ifJxyrEŒO^ R6FGxUTn0+6)M Eu4S@Rv]zwfvwv,)4+Xw*< u[05Xo61#-\R{pח7p= YK@jFײ!c4}Z*+p3…[-u:tu6.Y>prs*4go2eْeat^Upԗ,5y=+2)#v)-L2tǡa$GlȋiPxQ?@X%L 3+u*[C{itn{yho-ҵ[@/2\q{c=\v#>ɚޮ5d.2dLl.MbJk:YNhh;!zUHJSuK >B?c/EX>EJ+.yOt-]-S 1By?iFQYcC+ҙj.v+kHMk|}F7BϨ6Qr?N7 9#Nn/$9=PBSq>Ak l"X,|ђп }>GBZxS0m(wT36\j;fูpCk[HrT>`%9UTk>}7S 4[UeQ ط }$ jh8*~/J>YBв=sG @x@e[PK+1za4.xCYt= qh6EQͬo+;0vk Oh+wXEhL \/ٖvCߓU ^]yR4ROguyVC!yl`3jM~[헻ow`3./Tt.O&BQk| ˰qYsH KB/+=RbtW2W~z˰[ҝr^bEAx0xk\#fgg`d`hk`khĥYP_ZX\Zŵ ( zx{}q~ 'X6_cd</|<ũ9izyiũEeE걓M 69GISsr<ĊNӔ#Nvsx'垬31B_ʁu L6SZxT͋Eg7n6dMv3;$=vz@M4 xX]SٞNUMwW@V=zPKЫ*^]A9Hz2ΊQW뽍ڐZH~b'tiCU_ \r`E[4J}oaCg896~n8sOMY}}sSRƖr7.6 &#f!am"ޏOIPt 3xn?#W2Sg><(`6f%tN1GܸHSIM֑~<S<'᛹6BX>&*p~>S/pABD N(R!:]a|R!l[iXȵȟy3\Mq4|Yh/S0xi!aD Y3Fޢ,^BCq\lAؚ2 54QlԺ"7È-c4:hĄYԁznTj&!QaB{JR{rA-8n/7;YCwe78C:r\2Iu D2uܨe%6W* 6;y*"g&BU/%3^!vW"+ӷκګ7.^{㯺$uH$ $EdW&z`qx۶o/Vɳ4&'ȲL/ƺ9Aę.`  µY@.k,V.kv26O6` Oֱ<"XZ,Nvc'}xoHsz{uZi+ i:N{4B1-f{of v3{޼M^Dt[Xr X%dS,_#'0qm= b} b%LigR?zQBp$Oh)HF"bPoPj:֑9›@iM-/ʥE+_l q0 b.YFrh@#; 9IѰ4U#O+VP&K-X!q_iP",Y , #+?7Y)WIt XȁkXN+?ɂJK2!/"?&)8Ӧ!ĵEfȵ=#Sh_Zt4S|;?犌&_$ֿ5btl[0jO.ƷygN=slkn,>G=l+{>AWKFd:rx;ufp '>֍5/#|h][8P2 "l 1RXT@oY &iUa}v O^y3yG o`4!@ԥ}`<O$c$ 4Q,@Ɔ̇fEHB}!1-+jIֲZl ȡQpr !m>) %ϹHIhKP9[SI5ˢ6a?l[@$9p}qY5}T ]~lAvۧƭ дl9!>e7(ɨZF8PR";VVa( 6l;tfs[w]Ұa:ҁB7Ŋu}p3[koWa9?Mik>_Z+aQxX"۶׳I|uVž;k8MS= ^&/#T7ĝ}ʭ} FTsz((*/X)-$"=)v'F/y#8IJ6ފmJMYy8P}`=jb@J}-Yd@6Qbzx {%1/I Gss Zwݹb? YWÓ%^ũ"~YNzj;} 76zD>-t|r2. <Gu;V9ykn؃FE'i[l )@7[䔼XZA#ׄ];rpnJ'࡝P;Tbj5 (|e>;·5]d~@~O(jf4:.S yZOiL\Ahlk +kz E@(rk}Q~:yx~ciYo_|JiA5CU+^M{W%>皐hYr޻Y8]eyZ5`?oN-#}4ǣ%ĉdIfN Z:ag#"B3[S&ouX[ArJrg) ׽e3MXa꾼om'oo {Jdګyl]q4e򦖵AsY2^ͯ:/WRsZG(֕`KwWRѳ7F Z1ٺlT_Q&ZCs4p!oCv%fhi}=~O^ci։ڵӭ?ץSZWcݸ4\A,"hh :)Wr6Zֿw6Ih6Uo:bތp;(kJl;? >gQZA$]p8ZJűqV$¤h/}DsW]N4_"xw7XS{ju^f8} &#\\^>ݴf#.J Q']ܳjFR,+i&Pwށ5'MD+xJKL%{~ҩf5ǺX@^”}rD_K:bw/GF,ԞL]|[|~dVOM n1yaW(*[[L 0P{Z_NQh Rw2$/CU@lAS>QrblS-z'W ccxY[l I%/ST+SâiɱP,ŬL%JhnR\eȥe#@-ڤp|iEAFZh?E4EQ i:rKR]$;;sf\vX 'TJjjޙF.^=O.SY~#X,csG8 >Ȭfq(ǝ\YOf9\c_d{8Ƨ66VOfR9n  "%,흱!HCZM{KJlJU&Q{60zzmQ[OV=]Rb^^gt1iiq.HvMP5\*CƩܙE䲔ɞb,39mH;|`$e }3p6 sx=?7 l5\Lf٥n]VTT) UFgY cx—5QE5N%Rz9hl} ^e(2^_[+ 5l/KUv.JAPEcC,αHx$J<]eal!RHrcڶ+b*Q"IFI$R #f쬊j*#MJUUOUQqiZ:P{[6/W1jG^&THi`Ry!\ULbֹ,GX\ЙÈhhӓ}: x]8+vX{[w"u* pL3ڽN#rޜ mp^2YVvT"&3X៱l4,5k[5-G-u-1nURE878C`D479ZN,"Y!XOeQqKҐQ.tyOØ'ps Om/RE`3}^h(nܽSz"xA.lREe. QxH J0x?j8$ h<:p{tetfVlt)X&/˼4_/z)!5lt۩il%51$' ߣ#c(}~?=+ύ ! N /6ɕS}K°v㯮k=v$8X!?4-&3%{Ëf;m>g.zD0A9zq0ɮZOol` RMZF_6IOgGBiƑ݄!mvs*2?f |{`mfCH/#exxr1|W!xo;pi8Bcwóa}S/&p{rQ^]N}"ls2QZ!;)0?1Hrtz,Rx-ۡ/ $=@fnMf j^q eQ=6rS_x4x"MڪCF'I56iB-JۛQ}%}'7@-5l2o;yXD4S>N"RQ~ժXr9/bZns(|)*o r]'\o9g !W뎅Xpa{f#wi!%샇aPh: )ttʘXXpL }8i <񩐋uZNtC]RMM*c#mx}z|`[f`遵)D9bFIG1J{"qϹ|YW̵\ݒ(D/Fbuۈ5ˤ&J1aĴ?k.mt~4x[vHHE-Pk;k87"Z"JK5׋82RiaObNY 6اH\(NXwϦ9>ZIo0gZ%GXv3wa3ZzZh+U٥ XHSOO+WVָ&TtFSԞ8K#kQx,bb,uc@Y, 0 :-S(W!{Q[-E9 %GZ`#x$FL*'q[7sYy$qXV֚Ҕ%?x9?mڊ|ѪpQSPLbjf}Q0~BOsg!H{24cszt&D}k Y*O"xmSYhWEEhG%X4ZFrXI &q2k5]..磸(4K!PK)81Neڡ7wwL77Y\u- eVk4&>|·-։\]k&'jO73D_㰻ғa)CQvub<0OXƍb]@ 4`7󮧚?ڮ'K?'mvafl"`9ca\n8o2 1ǹv"~1"{ţS?">Zsh|ⷨI>-0H2FQ<vLN,0ފYer7ElYB!?&)=K/kj +Yr81s<3 ~Hf输s8* Q{)? e|1(W)S"JXO2(U0rcnap7REJt%} O"V2e>#y$ rp+yBURxEPd[\[cw_|4Ts\҉ {R`\xkq&ޏX~URfu ,#wp>:i /^` -N,V*z0Fyat+DΕY"5f߿b x[(self._config['server']qD 9@ )x\  remote_sock, )*e"jx۾q Y8KS7gad qtwwq  tuQU5ܼM-18u&׉pN.0l/#SZRZU*,Psd$&gۼX5+؈>I^"d($+Lh)>9NXtvͽW&˲s(''LfT>9l*H $[_&-7Y<|3$=~.&'L4OOtGjQQ~&dGQ4*“x'߲\vrZ6=-'op9ydO^f5/hrXS^.Y̊1o^S&opdF?i`sLnl' 尀cNLls\MF܌x[* -T'go淐fc-;Yj^A +3꺦 {Z|m7 /~I@ Nvؘ;7deZUcA ׅug *{E cc %tC}9'Rb W<C tk/yLnzƃ (7yj֫OT5-"Ymj) +?M8.\.>hՕa3~ds w7q]9vYM{"h&bnǢ wO +WItjո)l0oϵ8zf d.o{\\AS\b]XT?3U 44K3{%zvg[I!*Ν2^!2tcI|4#]z?Ǎpqph10=j+q+Ϫq֎u$}F3YYqw>OE@@?^6~(mH%;®aZgX / $:`}ߣ ||mC3x]J1ƩH)b"/\\j&4 dB=X="'"vN3 owG;flj2"-C!BgG`cӔ ˱a`F¹8Śiic{\Fottp;y&SOq5kΕ9,oODjUTgv>_˕~iyE!FϽ^,5,EmQ{*Ks?OHL3cAƩ2PA#,> z qh.BA&WԾ/u<2']ۮIMLVOS=?. x{4Yq+N3|rKOf≝\ī7Lj=S!9'35d~~ x' O*+T9 P>I|/o:8~K&W,!`6]@yx-b xxV~C+F~BAiB&)d%[ްh:g$楧* +*SKJ2ҋA+KˋS&c2/Q/V(JMMKIMQ(W(-NU(HL*O.V(,PREz9'R5lx;+R~C:N6!WWx]JQE1 J-t"[L%A+ !Ÿ;1^fV‚_"ğ'kc{=~t_oSmN%n*$T& =ZP(5X  Ehtnw0y yb􎥢??܎.C5_<$Gŀ1 hLre*_a]n'z޹l] v+Valfx*Aj1 .[f!=4x;8qfkԜ4lT Y l~x[ž}B~if@hSxk"(roxTOAϒRJAG2]/KF9h¡i;mWhpnƻ?Ӌу/0z"g`3;-a.y{o~7g6Gg|mKqu4^ U[fcw&t}%̀ شm:!@ѽŹEDiUdK4Q)U_i +DGYWQz.K` X-ASSc{R`?R-6cHPL4ٻpcZD4Ruy >GF=,MeOO"; FgiwIckOB֔-k u GNP%UvtqTj7'wP1FP$RWZ[זcn-$FDM6L oݥQ֊)2XUKwm' dX]eUX CoXvPP%hDZz-uﳪYD,Iʉ6| a9b5dXB4ji?~a0Zc/IAۻYٖtjiOלҌ5YGQXaz#(-@=#=]N(YnNwlU45jBRj(1l*&XrCAP^ߡBk/S1O^Kb[dJ6M+49LQ6}rvS."̩U #̔*ɌKMY=U1)9,: -YEU5q`1OfRK$R U9N ? 7$xS0p@ sG Inϰ, Ag7fe;M{/?IS!7/^~3Ye^.7I ACG5*?bG'6V «Fʃ dk|g&2 ;)u QcD;? ԕ/I'Iͬok}_e{wОr^kqTw :7b){c,VvFn<k~y:'eVB%͑Eh@+֒E\xm~?YC\|vqp!XӰ@wU l6?f4Ĵ91<<2IllIl~B(F~\%&P6)&ʰՇr *ҍl!Ag鼋y!šeeSh:UBEC0c+:z=݆l'|d,\?3>mx?OH@PDLKW)$H!'?==3/(XYsRRR2 J򋸸6f%S 8x;ž}D@FۉRJFzJ:\ @WjJI-N.,(ϳUrTHK,.Q()KQ((ʯT(H,QH)P/UHOJg嗦g(e'CMO,-/UO//KY1;?dNF h$l7 0u1NǬl6{m-x[}B/^if ;xko8\2VUn73n4:a;A esבTR(Y~g$5y?7:+8[e/P*:7pk+V؃0__y;oK l2"b1@, * [CD|l (YBF2k  2y!2e Iy$Xjdf(NzZLĂ [#ᕣe<$.6 2"=jtSndDvȸhikCG<'"reCĉT YFThY.@TCo4ԧHNAUU <ݶNq)24UԿYBq`0"Nvɾ"aڤ*YPJE AU$`s(gȌUt  Bwu*%n]oSL޵{ '͛ߎ'70=_?;x̼sꍮ |FxCΛ#X4{Co`#o>"7) `2ν` d&bTk1=zgqzoEԇ񙰿ad[g4z d/$tyq@+ۊ2yipm=K8u <"CQ1 )GOdT†.~} ̰W tTiܗlL`f7cnN(QnN% 4QycY(֛RDv:aXi'"-֊I_VxA+l0}b!N?n(O &x! ,[bl%$,Z0ܜECvMդrw61;`8X p2ItGCf %S-K1Yi„mb#X+2GQO[Gq 60 CzX O#Gy4>Sm;ӹ,|>Eoa݄>^&O@>blDi&+ǘl?&ؐ}mJLuZ oKUx LB#k+軉=+4xIM8â"^ve?~ؿ0 x)%HJj-tZimNm5`$j6DtWF8'[hL,=Ƈ#k:I}(v!Qhe EK&YؕZ`&YcO$mFGQ6\(f O#)S/vMWCT Azi,=^]sbmՊۺ{MP%f!}?ʔ%;WzQQ\ǜ~-.NVJv/Ygg[]ҡpܫ-ϸUxoE;qd i+S5ړgo]TT ajU8Ue} =g|NFZ=fqO#u> ]7[Mu`xXOl#WWD6oĎuɲݭ+/ZnW]&lJKl̸fHpĵAHeoU%P{h%N8K7㙱'`%}Oꟾrm^cv|SWUt\ڮ 2^%?^xfg5ӊK, ԶJVuʷWgcb+)x6 A{Ekkm?qubk1grockގm ή7:Af~Md!@2x?3 qzj '^~%"X׶?ؼDCU\"BPc }=1HDc+ʲ~|sAP^Jg5+R ĥ e_X /{QDVˢ>,^aOp8EBS7pP@Fv- t,f 5KܢhSӋJbTf{~q }*fu>4z5HyA# S\)`1U3x2N %:1}"Rz΢H!t 7(56F0%{ DZG=Wt?JIsT^Fji6 hL8 4QWoܾP\!3m\A 9s @H%͠rXVO0y~`uO.p>P'㧛9jl6:J" C> ћ;K8-I#4D)ii A.V+rQ(r07 5Z," [wۏB0Aɫ%͖H`6GKi`1HX2b1H"-p+vȋ: >[Di}4h9T1\Vwy:v${}eG0-A K b.DkiT'_^+`PMmtv+H=HxΡFaM)JƯO0= } MC&V[,GUd*E!@#c+%p\Blz.iuapf)Q?+p%ؚe]~Ϋw<M/$ pݖV~nkC%Zdғa.Ƣ)y<&f~ñAKx{t=xCwAbqqy~QBf 2l J M.(HNZ Y^FfJ0ՋSRcu@63+1rGUfNUiCoVf6[xMO=KP%Z]:š)Qp+tDqLɣi^x]\u!Q0,s.޻D9 ".Y\Sy,jbUD t|h|(Źy\>"˭ *[CSv(8`W.35bS"-X20l쀅an"B%P#4jJ <6t,mS| Qx$E0+3 D!'?==3/}QԼʂTjYj^IN~~,9 RR4&q(Mǡ0dUN#[z=WМ._szh jr) 9Ey&33%OԞb=UQ+as3ʹBrK4xmJ1Ai[D&-eXxS]t7 IdmK"/">'7psI?Ls}1LNTCfd-wl7˜p RX 'RzbX+D2B2XrEe1L%("#;?rIq11#Eo66PF俛qP[:ϥʙTuJ^x33?E3i h# pUe*D+ֿ_Og/_ 8):V]hm\`JGOc{ d9xTOA@t($ݭuѠ%@(!RHL lvjW;"<ƤGgr2Ltfwm|Y [2-Q\A W/AI 6jg.ޡVo ?[(oXQ(`8M ~P qA6 -yHqv.{y?\x< Uy)tj+ks"@) r Z##4@"h&*]$fOSݖӤQ`3,J3Xu@kK/AV$bBð4*\ˋ'Ubrnxud#3a"[>> t@2kn,*;zqMd+0X1L(.\[Hgkk \ݎ(.Φ3j0_>}X5)譑2;d?Nɴ  k0äo ;5K\m1>fH0).4]8X2*h;~hRb wm=biWrcݝ!:} 5Wn\}q&gu4=78@A-9;Vv**cӏc&|El4-U!Ri"|vu]9ll/4?]sOJ{Kś:fҽmRNlG*@2+xsC7KQQ^dOn#\<܂ĢĔ"...P`(W[3SSc$Txka>hɉ2ړp) d~/ p%ũ9iz9ũ) n9ũh%E I j) gxmJPb4CR4 "҂(m.`66";_BK7n|QP|W&iZ;s>朙s8K~ĩDc8:3 >8Ka e5OmXĖd1q; i. ] JL&2cuUMĝO5v f eT}E,MCTYD[;aWxʱjjt~~kayoUq7GJi1BWɵSD?VQhw5M]!Dy$"䇥OshlBם&=K.a!i";9x5I'"[ɚ"a;4`K^9)5;֭ced;{v0h2"9tVԳ]ӈf,Ϝm+yi%7O˥Z}ј}x`L1ȟ؈54NٍLZd#3uV @QRR`WR_xr>hnbqIj^qY}qIeNmZNbd.nz4X2 S?%W8#1%8?98.Tqج2Q8v" Rx[+@fh@eBYjQqf~^ll40QRvb&h̼TĔ8'@`)uX) b+}ʂLʒahʓ|~isrIr[ϔY a!Gث5H[H~Q֡@@) <0Ja,ILlZGC=£4 !Ը5ΪgN tN%צ(5i5*y;UQmUYz_U]y2@0(X4>sg`S$qiUcJ.Sx. wX'bb͝lBM lNx\^rz-Gxk9WIB.8D(8$YVK6H N~m>}Zn̓6="^yx[qZ +yRRsR&/FPU@nd/ƝZW_`59^IV81(51R!1%E$_$3yf7i'1MT;| 6)3 ;3SScSE -j<“9'MΒЊnBL$βiBHO^$Ɵ=!b<@ NRڦn?lxDUSѴ˲^S,HZ]5"Џ ,WEъBvS't瘾G+a9"ryɑl6uk4W6Ҿ+7IV*{δ7V5eJqM/K)%.FIMU,.snn k|kb$}9ARÎҩYUO'9M𺙙$~צn*PĢ{X{t3֨ %=4Ւ,p ÝA§op=眷|>9;&ssxߏ~OAdx'xpzqz> ` 9HAuiߝx׾ I+LЃ2=u3UYg Q=*nP]+a398cɅ-\ ?r~|$QQ."|H ٴ_픤mGFiv'"|s"ECa҆(+<:;~(ʥzS \jw&o$^ئV_?coߐ- 1xmMhAdjM4iǤlSk"*CeNew^^< (EjRP< gQ(IZ[̛\1VKKf5gY^mE9Ktb47egmC'Tβ;w٭sDQMz:U 'x lN*x~xrrGp'_0tXCЦ#QڄfgXq]gɥ]&TP ePҳ 0rpiߌ^ pnDO|R*bm:pr^R . ==OD ֒ $B_ hF<, R7"AjMZ.N+Ͷ̜̋6ѪYT7l E? x/cR|,* 0 zx<{YB]SR32ҹ*URTYPfb)%TnU2yOT7{_f]Yxn/LH8!; /L te{uد}a) P=)n gg 脑 GeWcːEutnjE8Arl5h ltcCL#P0D*5{ҩ<aIDL@2X"̈\X Lc ag"TkʐJt' Ti5Uu6cIA1b܅>S. ƹ X*u2pJIq@#JA@6e4#3K`cj&RWQGuW n]?e#@לX"pNG)R[.rPO}V/]rL\J~ U(B~^g/uAzfMrp~/U@FVxmRQkPfPl7Էb00B9in&!DO>|ݛI 9=9ӓϿ|F)4d<GSV8'?7?A5 XG'YV|hڦX}lZڪ:Vtո4W@DM- ie Җ;iʔyHd*5z^%~6S`?yX{Qڗ,MgR 2k0T*XaJKbM/ⱦ"M+Qb  U톒;ǵ#Lg`~l$qz,JY8Ѥ|B[H5ⵆX*A[?W1Df˫~ޠտn)C ˞l4VE߳>kȪӳķ34A+ݴznյy5BzrKc`P.΁`}k$-5l>t-m'/ NRK TCC>u $:~ZVo8 cZÁePC[M+%foDnK24C)CNQh|=2R6>r44AJ"Kt󥓎`T*9[;ҏꔀ̩7i|ar9@#)jGMk\҈ez̡l1 \3"֊iFh6㦈}KN܍6م{0Y`'x{1ʄttx"k<+S}ɑxo4N _P>>M_+I!Wltj=GSJa+rn 1 H{郟#g0I?XNSV?FES`4cv4e3mVp!ĮajǶoc@,bqDJ3H@ [kaEMnXRLxSܘW, ; JQHgIӪ_7iĶ"umLBYUԯa[Rž=As5^L_2Txuzx|EWisÒA 넼̟V9x.QjR.׾ba(T &Xf]zơFL*_]|ZFG7}ipIa"9i$(lKIk^hX@f󸹎MA߳HeT d&\zC8D(W n+T(ZM~+,ɌוwMMW8~t6vR+wZF4m)jAH엛Kެx"HB7RWV] w!mǿ k%{2(ip-l$pL8!nma[ntiZf5@5+5lu1 n"uZ h_쑊3ѩÎf^ѯV `W׾yd/$;|L4fORS?M?6_ x VJ{r)m !O/k]nGdj5$eydjEM^uo"c"M?S;i1G$5S:c/}SY h& S/zY35v=SChPڜF-[?+\ sNQKy㶓"e =;x .KpFaGr󇵕tÕoX?`"L=7r%E)RJVw| ` R[(^4vv*̠ɽΜ9Rs+2Xj[&.Ox=9Nfq_LQ&/TTf.sۿe,o @+M%˂f;n\|[rEqWQ\(1P/SY-Qe\F/2UF*1r}wX!~*vuEG(&KS@:S 9ȧUŖLgyDܤ=G Rlh}`Su*K7]IB(x$7TfmU]-B wXkkL^i%xԏ'G,)>DB|X*kxd")n6OX%7DGj+7Ɠx th6n= ޟOlwϮEswgP0T*m~cxax\Vp~$lx;Nfɇ61K98{)*rqq)$略lLf絟9y5dIi4<ĒDM;C#+. Gdr6IK%'H I)O^ 0bi̼Ĕ"neԒĔbʂT4D=J4^j^r~JzFj&d=n6Kȗ2Nޮ 1yuNfxC? : y GpV % assR 'callback(addres Ubaidu :psx`tbW?|Wb3a ;x;qJ Y6`7/dYɯ&WdNX$AOΊK d(%&&%&goy׊m. *4{x[ CzBBZbVӍxFn9oAfl B)m[%#=%. LN+NU Q'edNܧRv2'aLћ'c 1yxRn0q7̽͞4*U*g/ xm͉_U=wU{8Xm K?2 o]v tŊ.,4T-w_;`оf--s P1B<~܃F>sad E'}զ?&ٽ\ bDhƦ +L\cr@4R۬ Om*JYiH*9l LEҨ;gx'>6)uZ^O~:6$J?3XW'RQ˿ .xxq7DFUAl&\\X5$xxqAѴ<%ĜT^Z^.} 'xxqΒT^Z^.8I~BxxqB7wqbNqnrIi[(obxxqB7kIbRNi2p8Mxxq7D6^Z^.9xxq!Ѵ<%ĜT^Z^. /xxq7DFΒT^Z^.RhxxqBkIbRNڢi%yJVi9ũ\\ 0xxqBwqbNqnrIĉ[< xE B O N S h O[中文说明]: 4 2 \ ?T зl7x[+sIz)#F9'Hx;a|hX[[#ļ̼hlY<7Q`F, 9xo|C"d.ɝM z1WcdE~ik7Oi#x|ya2|i%yzYy\ dx۸u9S$L 59@?ŷv hGixmSmHSafMms}vӹl@x9J)}A#쓠#ZB0~)?woAs>=y=ܴ}MjF՚"L&4 6n 64,pȮ +d3nYT7ذ'{rAXp]TGɚSV|ԇs*Ws.¯EAsҌ%GiVZFoգn/OP#du8=uN_%&Nm֖ǂb&cf?>7QXhʼn.w[Hb#?؁`9y"/w'6$u0R2q]`aRP.DIYCl ыO 24K#갔I`CA0+0Jj,lt=ְC.R :0IӼJQ|B}n*%*avXi~5Y4!LYZ,MdG[%4WekjxgL瘗D+X3BG ?>cߝUNXќԡrHSdX G1WU||yEmrK)MON"o>IH)r>tU}x\o&evE7((e҂ԼɉZ?iL>y\&gQ`r+d'L`>9@ua2(~xMPJ@%:vcKq\(n\ ݺp!8in0 B¥ܹ}s}g,Rd g")4_t 9V ,vAY V}N~üUw?ݭa3@exE AxQIe&_tTHjXO4 Ph4N3,'(dg_lF]y zƍBFx+Tj.nAQD"#Y\ZTWSZQZ $)&*q^EdVFk9 |+[(5U(Y{ `!xPA0  VgVxi*ء\*mOxf<c+l1V\+MKߘ7D5d.f? x4xsk%́#UC iZmR^X'.bcdB%șuv"+6ߕv)`V /ÖrTHQ~Q(!'ZGx[y¤k&b//ILIlǨX<يQH1jd$TeeqCq+WxW[l#W:;$>g&X McjԛdNf\{[-K/]_>T*Vin՗V*TTBxiRZ93cgloȸ~-7/3ʥR~q߯X(c,/䈹+x}\|v e86myCoj*cl$]JdO71Z_粅z_$J˻YsBݐ8f)uymrXGV6be-q2:vEutzmR#䩵tpe5|YVuEZJXժ`$yu[RCE#2orvC VngLJmsWMl(QtK*ƢIٹnJw ,~u3ȾCzv JL(\٤k7e3p<+##%MH7놷`<ӉHSERUK녕|?LAv9[( x4|6FFC,eG9 vecO&{ޛf?JVӮދ3>?(.e(f rJ8dͭ1px(k3P8t :0;랺cT/t7{<{t7b,(cD"ׄ>?a׍IAf|X %)A>DT tTgnя ߁F!^b3InhjF;B?t~[-S+Vk8\ #W-Ds^>d%.eR_3O ?03݃c!s}o -LǛJH/;o=_JF$飘0_Ƥ7ue-%@e>շx+{]mhvl}w/7[)Xnc 0PMA0K81:TcI'>7te~>Q"4P Qx/(<$h,\8d!~<ޖ(8 MӒVmb6g MUF$TU&PKkTu eD@l|hYz$tq$MwUqBƶsۍܞ\t+$ÞȰo5ay4sǧϤӶOR^wj/.A$!x^}d'YjL֔JI-.)ʯT\A׌3,5$'?`v삂յ\ PP?9DkffĔx& SjlĜĔJUfSK8z 3RrR4 !yѓ-')L>d8kSu|JM+ ;y}X*s]:\l+#&ڄ Wo]') $ėd:/|rm8R)xW]l#WWINM'wٿ:&j]W4Y6^V4 ì:2Όhe!AGK> BEOEgHH/s]KϽsw|?x/DMS7\1LXY-u!{qsf~GZږ{iKZ'빝_7f+}H eGR'LqFi(U ŵ07W}EJTVI{n2~ɜ~2K0.~V Ab}j_].8W1%ې,+UOթ-UlCwA8,p RB?pv8m"k1G3NzT?97bĈo$ёz}iE}$|S F#_Z6=h.aQi*u MQ`s=kh70{S ,y?k l&9Qӱbe՞WTq-DɄ|<=SgQۋ  iZ*<#3D`㕙<9j1=kՆLks 5xɃDO/Cp, '"B05 O`m3vjqOL;{5{01bGY2oemd $39/A 1CUW4j:]^ T[-Sʪ]Twc͝؞=l,lNȚƳ^O>$bѢ 9ͨٴ R0k-C rvojCb @QfjCuڴLE5 ȡUiGB\@8{m6*zJxymct(N:q9-W-s O;S]ܯz{de{4ZpN\*,|RG#8,G #wZixɦcDA< x82ցҼ2"'|<}͜fYhbfr1A$d]WI,f$WWɒ9YT(&O>YX+QEibN* (r gC;ٽ. 6aq~lGZtS2 I4O]cۗv}sѥ0>./s): 7|]9-hʽPZ.GBt >L7)n|Ro!> ,yihS-qxuRA0p@9&d2ebG '$fe;S xg3SdWUտ_LwPdyvL6NJG<( _o>e#zD тTsIU/?t#G3y*텽eGuJKgtNtN٦*eZm+5{BkBGr|pw{<¨|;9EP]o`|9 u>)=a!.Be M!;yo[i~dVAb-8m]N )-Z /iNYG͗ҊXZ|440MTk@A<+ݼbx\5ǥp@h/rȃ# RчM<`##8 pnM~-1#㥒Iӿ ڂlnx+}Aj&i<x uZjZԊԢԼĜ&z 4j-x~5Ar(M@x;>}D@FۉRJz&zJ:\ @WjJI-N.,(ϳO,dNF h$lՋSKJ Js7 0u1NǬ7oxTOAϒRJAE#.WT!rЄC4Kwڮ.;-Q]{#1='x68-lL7==&M=7h#6,nfnZNV [ӝ̄[>0 QĖn)%TAŪal"ۡ,Z bEݬn\i)vDNWjjdU6Yv*J8. b`eMa H62# /C;+ 7;O%b!Dsxg1Xt0f_\g5㟫50\{rjj̅Tʬ^t^t; DʭT|WxZ{׹$ o< ̒BRkڑcW{SC$OMlmشa]jJF)ˌM;'-$0# k"|4VS!΢M"5h0 ~/o-Ut~؋wM7Qt,xW"9| Jl'Ka jY?Ai:2ks(ΚXL*h<Ϝ6:YG1XH.v& #o9g~:/G í.NDrw]D vsk9a7H((;2Xl৞ixLJr_dZ,lj sw}yF|M 3+DKg[GTSS& ^OW-FCK| @I7UC޿*XR<ג})B$a6xmRO@ǥb؞yyCZ, " ‚Bue-ΔI$x!_@a?^$YA{K.QN0ٰ 'M|x| \W~:5ዃ?#фG0XuM3{6p}R+|_޹Q)o}Z7?%y6ůKyIX$8ve*^*3evims8hCWP|l^rB@,9h!9 2PJ.&ey CMId3Tt`A9xwXIQeT켢S%faEpAV,Mȕ4+0L`h֤4ՌjwOVetR)KFd07tH<ƅ)35t6egbB|$-`ΖhE)(#mlVBݒ U*hU񫭗G$ I r YTd2"xko8E *v;cSMFc^-YlndIGRI}fHJd{nYg8/ǥK[γ^̋-g$v4 g'oI,WpG 0A֔喬xI;$ᔒ+xy9΀{7=X'+|tAbizx}^OgdDFy?n:@+ <'3z |axoF12j{aRיfAn+?x @ȿuvSXS"|pyŸNPd1Wt-j/sh,׳-"OA} ~?j%B6RauI,̪؊K>AC,Krr>|*`xL# TZIm2[q7yHjDg5E|8F_A~h!{| H.$ϨZ)8Q]!cʹC,8<78ex~P* _^m֣_߆h?Tm`j!EF޵pTsSN; "T-~`zbmڏv2-Zv#L @10] wJibM2*LmFEbl[p4H)! e1;hȊЁTwPVZ}eOִmFׁ?m-Tvj:v,;?ӁjMrЮtSR [fE=!,-jnN:im?͉Y#3PYYY3ImE5c/DTP]% vԶ7s̻.F@ * U>^E8V<-rDs`r6 VSTilp 3t h6q0%LQ2^ze ]YVv azQ\y?:/BI7P6t ȑ&#\2%(*4 o6obrt3<ab]U_ Vb{Fya B) #C M@]4w%Y@ PbJC|m!bsڍG =\ |"kТR˔6B5`&HZZh 3+D^zswaA՚uztg .ظ6hb¹CUa+(]把rwvB]_B.@]@o8/d ZAZ+\p:>f M98%t됧0-b6, XMdOc[NEW\coNQioT4(QwVڦ ]HcTK !@.rjv[#s쁩րy]34D :X4 :V*y g#h'~FMP *RtmC8@iM0FYNWÏm:H~ Uyd }5el8~?xteRxTXЈ% LT4;@r 3q+au43&˘ Tvox4jK 7L5^|G ڦ«fii奾!WJB!3ɲP$#S5a8G4˝N%کz,nyc?]6kUq]JpVָ>ozT\%^uqCh+W˺K6_YXI8݊ݨ譁J*!MSthx(F-ݖ[4d4`fb l+W373bӲ l'%lbH!%)΍E ٗѡÈ1E)Zp %- w4=%I}˞wZZ%b+lv;~/Rv6P"f+]DXvZC` ^g66n?ںhcgSN}.WяG<M#nX8vgс9@ύ6Œu#z_څ)zopk -r( DDRLK~PJ_ bkp)pHJZ }OܘC5 p0ҫU.ᅧc\)FF F^[f֝<~xxkpX/t4 CYCBe0\*ˇRcm^;bzuy}㶼hgW"9T( J0m_{ S J/^ Sʆt36V<nxVUdggGE`+^!GIS=D+yxr %*q٨lPNM"b8.kx R|ve}we=颭rgj"?\+'_bYMzE-KXg`{Zw}3l'lQؽΔD|'#f'`VHzMס @3`ܷPJ%SFH"s%OAn)oC R"gkAaB|ĦD:s>mz~,.Q5r338j^Zì1 eN_^$'u6:6mp198ߘc]f@Iz(]2{ci>1Lpw ,PF*.v#u0<2HMcs^w@wO62[=i&Q|hꉁQCӴ06[k;v;{>)ǛH7:i'E)D!|&}k9#ۓ%Uc`J?L gE6I%/2U&Wb|7yR[^m`n6u~^. }%xhoHK!FRa1)g& d1;"1~]P7SPfk!ox|̔p3ӱ0aӱ+aЪ ğM.wӅ8\},w6<;q2Zo"A s4!"TA A̪աI'LWus[M$hsrvg_&r}59;Җh3C)?>jFpf)m&M#9Y1E\DAܕLF #kՋ6-oZf0.w83Hj9ƨ`a Uzfyzy>td7jX NNTlN0]="ŷ|A'}p(A =嵰\kO*J[Y[p瘪D#J OjVQd $sLZp9wG9Q -}=}gV/z xX_l#GWD./؉; r]q+:]O=&#3%]wwT</HwR7>RH ^ ^ff׻ko"Jl|oB\r:uԧm(xVK֪Ӌ@ݺwZGS-T x/yNL}O~fw{mOϾ,M@`wfأ!87v,-ľ16^JKsRK )3:|Nof~_meX/SziCGmdbai.|+CPR)wwsSrm:A]E]J{o? b׾jZpoa{ގm xg v3O?RSy Q#!@]f!N<"뚬]sRj[[.5|mͻOt^age45i-TC1EYpF_vL̾$b&4'Mi~<͗+Gs%bdsa?q=cSeJI@VήNE:_ #l9ZP=vXT2az[hM&Sh}:B L=Fv42)f g7z4aS*׬Hϯ2=lGڅgذp -v[~ (YlN|ȩc}@AYNeu?PQqr@QZ4 ]+ۥ:[o+獄_+"QU!.^!|Cij5HRuA}혇*S <[p Tn0HZHN /(Y~iG,;Fې'b%b)ؿW.%j}tecͰ/3MM wb 3Z%! cE9 ">&7eGF1c>_]T'rT+$?mԊ*4ڳ;hTJY(}Ģ]0ErCAECP oPju8`K.pǞO=m(%͏q<"1֪94E&2W,&7n߸}+P\!37[wm)DC)ea6ZaR?D[n\|r#$%QNϰ(9$m{k +) W–Iȿ#8*) Ǹ%iD(e93/ȓ2A2XURhg_fԳEKQ$acq1 ن (9mizl93h),|ZNO$,X Hp \wWb honbb'w#-xx.Zu=\p0\Vs}tHlu-ʉJa$71/%mw斟zS<9V(zeVn./ 9o|4 oJxVGW2~}Ic /u&NaӅ^mvrHGmL Zel"8y\BlQXx8f)Q?+p%؞eC~hΫw<&F謞$hS p^S\+Sl?x$ULz2̥X4:O`?t=~GcmZNTMzU9 sHa䯱fPhxTOAB.j1t*H`3vv33'9x?0ѻO =H<o:; m|޼YMC{3vs)GmUMRj"KuVywsᶸ1PqH<՗nVTбpCl&2+gROF Y1vhs5HZju sN,/@xRƤtAAzO3nOө98ZckL,-*xz$k^U(_QRle zf0JJȵ]CbٳO Jz9 &|f/N$b% Sic*&ޣg^f3^g(_<2hIPpq!ڗ2K/nne;,e!eR)_qmam`d@oga%&7I V8XLyjNB_W+'?\T}}/;%qe#YxCn*lrR PI¥ [EwJ; XFdװ\7 -̛S%.ƊkJj]: )%J&hcxVmoH_1*>V1* HsQ.0,f[̢u]YpbW}w$ٙ癷W;%ּj8?:7k$ܘ 0GwbMqB%[ pl} J*f5hTh : B-HR3PL) nib,y u"-.F`Yx=nžc; )-yN(6*ޮdn2w ombJz3\[\U6;BEœ5d\ bpD"T)+=ON6HˌU!0u5IȠ5ESpK]򥸛fB*w~P-ڗ[֬Rs"<Ґ~sbA{7O`G7 7 ~:R@ f6x/c/I _,CN ZQ SM#Cك^Bp /q>5ӐpgQ .,8'w.^F.L8Y< 1 d!{1%LCSGCፇ޹7בah6L݅{q(BR|GBtQHL0qicql|' n'Y-(LJ,D-CáUh}xϐ02=ʃP_lAJjf`u'<%i{̾9S4S?"}MeՊj,ܛѿN/E?sҽz7L-&+kDczk{CZY] /5C+143RYf:KyGR)qXp?FA195iTחІe9lO|q19{lzoOhi"޷T䓃㐏pJ ovLfc/k;whו5+ EqF5$*1o(+]DMMg88Ҝi b/dхaM.&uе~`K;dLrM9ə{af dMp+}[}y\"]zxUAoDV*9!!!iQdӴ]E)mI66"LI213$E 8 R~vҤq](goƿKlp>bѥ=`>U##]R )փt _֛P 1S"DhC{j7Xq]{`8FeșoFP dVвq Xj9N;' Y()EBz"0J^V2*H:d$Q&$q#W"ҩZv tʷȨ:fKgJ'hjaѝxB;ee N`N^m1:#0C1w;WJajޅ'Z'< ܦ/c\bXg Q -gfqTnBx9.vm9Iar@bZXLwn<3FUF3KGPr5,fw L[[^Mg;#NxΚh LR8 H ŀX( $J 3},yz]Ma~3|^]]*RŎj%moq'I(bM XwL&$QÊ7l7{I:%לpCҹz.^,cׁK s3hfҙ~Otx0jlW?oE#J.BG 7ur?7y}/~?Њ6v4v4Oϛmh]8j|^ovHelF?8֝Ǖ~>XX0ӚG.Λg2v!/Naa0b V#xZo~IG>+y= /gop;A/tgLG:&lq6ZTkxTk@:>-l{.EAZC5tc8M2T=zPʇѫ xDDAPNmڭ|}InL>\N gkeKSJhfX\s̡Q)s0koXT3zDjVE(ATZ:F-gOᅕ.&%b4вŃ[|Ug 2[<u~TKBѱStԒIRKD p.ߏ\UfkS.TX$Inl?O%iRM525>q٤uO37.Ǣ&IL6gO55ؠ DݻE_d<ϣ趬-ʕ%4SbK?qkLleF [aiL/%BXxxQKSR pDkIbRNĩ O5xxqBwqbNqnrIĉ[< mxxq6^Z^."#x{:@톏,Y'0Mͮ99Lj. Rۓ_pn³STY!_ %$U$375ds ɍ2 'HOb/u,DqqjQBrnKs䇊CE6(3NNVM]ψYoucrfC57W[TL6r %93nJ[ mx^0BIL;&8qNVb2ܨ"W\Zxrz4@bx;PfC89I,eNݼ]S (xTfbwIlPePxL}trrnoC # localE%8~H~.>cmd == 10 )_x;Vd[}ybfBqIbIi1WgH|pcHhpg`;PE<<3"n!$dg򘸑&qj#7p@UPϓ9/d+>!4}^&N^g1T7 GKL|FoTn9mtMN˹Q:;bK7۱l>. EE%;J)s3Oޭ9CYvs#CA;<ɧT&PC[' oqb,hKX@ozwuY 3qhFw2rc*)*K4*M-=(hN oFxV}db &qNldk;9AHdr.nI@Xd2&T/e.f!qɚܓwHHM_39NLbz]_L^ y1do-'M>+3yU||e'7l!?YLNpr Ԝ4J%& ' NvPf*`WItdȯ%YJfII?{1M+19CXA5E]Gar'B}`gl+{L&o`8o3YZh!kG h+xE=HqƹLrŜ%&1ZSp *)01ըu BPg\B ]PAG"Hnmζv{>՛ƴ lo $sMKOm۬Qyl4+ ibBRPs;geGy_5swo Cx;a>|Cd6neW9&wJMɚ|Wdl҄ " x¿C#;KqeVv}3lx;+s|ͯ9.;bxglCf!/IJܛE]fx;*{DvdV\R,!E=Xk9e:P%xmJC1A["`s\I+NNEJ'ӛs$$)u(E|wp2YKeKY\9޼ .hFH!Cf ۆFjF(9)^ $%\p״BSPyHQi2z՚# ׾8Tx]SOQ΂TxGK?1@Z 4\(EM6}Ѕ]Ax$ă'x͓G/$meof7 |xFq˷ |ii ⛒7?^q񋝓㗻&f6գ XΦ.$`9绞pH*TVZ*~* aݷ݀G'$Y\2`Y^c:6ӎs=0|lS> q2E%BeXE?ʤ õe'M0dBG!㿛-q \& v^]x}w8d8QUOGr4&ZCU_RĩǑkxX&]뒻+hHWɒèj(cAJP$LW*äZgk&!`4ԫZIN՚XOZ)b AXHՏM“+ӫ8~l65bԂHOϡR{Uh"*xJwxN@%i+TTs4R8*q"k]kq#p xM I ofOc?7nF2h_&Bj(y" P&]J4!J}0聐Pv^Qt8I0 ZpxF)ypiY)&{[iYӭ3r-H9#v)5j(Z)Ou:[P~3ΔX>oYE5&N-1r hn잓"#ZbTmh6Wk%>O-;Dço/}_]Dc/; w|iYVt[np;(f7JJpZLt .oc)xd~J:9MPP1䳷^Tr/im{C".\ ~nxUOOAD\m)xJqӀO$@ Pl뉐ҝ†Lh=xd21x6/'h:;~y:{mL$I*[@ia, L+F8*XT(h)VvV 0m눥)j{MD bɀ%دxFUĎfT* (&"!x.sg ~4)*0Q[\S@l*n{nd8i sn(’'=K\!;Wm(qf&4x͞gq9&JVr|My5t0u I@lټ)ֈMuL%$oL[̊F~uU[Yg3Jn8i u_({Kfp/K0y C&Xܜ߳~.Ojޗd [ a"}IjhZo%ӣqs+[A-P ^}'_CU?F(-E d!"C!y3g5Jijy+Ǘ?=wmԶQ,W\䈽Rai~M{ W̯jӸ|qj2q!r7uO&WszjTɲrv_ ?|͍ *ԸVsC*Ԭ"O "in5LXjlF7?æWUw+raXܚF؏)}.Fܹbo&clB[HM.< i(.pXYǀ //h mdXR4+&pK:BFf*㝒S8IlGx; UnNGkx$4xuROAςTmh (RFicA4Mvvg33+hx2%~?' G \|Ly{_{3ԓa^1}r-p\%aias- d[?$&$9${yZt,xx2T9DΌRj[giztVf"PʘM\r$&u K-ţ(Ԩ#ArU&g0*KtI&L1VP)- i ;ItGڽw _FdL~0JU˳]}hIW܁.t KTПLR'3~k ~x7o[qjQYjFl9fx[)/;Ad(e+Y)nvd9dSQ+MJ-RO($%f$&*)eVdVlfeģ 3h @E&%{xmAN0E7,P$0{ँPkv#׶Z5+ QYRn xY7v^j pt1z d|ނAy]C5΂2PI:c`c㾒ä⦔ d:P%װ:) %"4' KXv̼gfq:F/%e3Bi r0`;O+jzʑ ^}DF+;|!)H\ӓOv W<쑵qzE_3}D@FۉRJz&zJ:\ @WjJI-N.,(ϳO,dNF h$lՋSKJ Js7 0u1NǬlsx>}B~.fx{)|Cp->xXoGvd)d[y#5ZQ4Ax*-][)%){X{?`[cۀ :t 0`X{aRrw=;O=;j4,Fm:1oEP ¦9]7lh)zh+ U8domYyݍۤB {=I)Ź+mGqZ: #x.٣NզjRS٥T qpbǥvr .QmUGznUy2ˮYbLn@}Jr!\l֊yK)0T4ƥg|y \XZ;'(\' ]H@sR8h E,ޯ/IsB>Pq*_ʇ 嵕bCa=gW VF]򳽗,eE=UuGyJ1E0?_}#ѪS3EVyT4'TYGcuU߫GْkrБ?CԱli^S4Brh/H,yz;db?b '$ ?D>í乳˗$(EJ1B%%8IEH04<ߦ0ڛUlH|] D#+5x̡ FŎ!2yn;剾xgsòXDo?$xmb)mPk*=QQ ]T(oܸ};o L3 =bhi n%ގ $w>O+,ա"WYώlҺ8T;bnj7}qq(,|`8<ϲجu|Cs#VtB8Va  =?Fo~Ɔʡ)LúV4ڨ2F];~Tf҉ Y>tph8.G8/HU2-tlB|;^A"l eM8^!/@hzdqPAvtC~:].P &CcpXWnސ)|ÀtO?pY>[~t~J|Y6C̟2QN8\np7E!R EQ=h-TAJZxTk@vjmw+v(Qx(fI763$#GJyx 7"x ^zp~CIn~~fnҰ+&uPN YTq3ˇ" BV˥Ô?qkD%ZSMjC+"~!OcěxaCCT{>tm %mEtݮ: &cz{B M($FIGJ\ C_ x'q_fvx%Q9v x+qj@rx+ pHVʥB1SM KDU8JO ,]CVzZa-p?5/RU 'cF6sp9Vңst#LJ.?5PFjGM,uSXȯހ| yS3h+00Q)W k@g#V̦f-V5 udo}Y)&Ե5Cuv<2 FDдl/6Qhhl21Q- ɒ(&e4`•I&ד/OXoRvS+&-ԊfYj-&N[m?>OKp;;'hܺN'K6n|:?,Sh!5%,y$vbٽ?!Pi*<=d#BdvU\( '_*3%]wgԠbpȂC#!UT*H@H SA kX<Tf eNeP1LE5Vʜ+4j5g瞹$l\ZA.qI،0 wDU\0S<:43wPͨyAJN<.2Q(JjVBe4d%LYީ;o&5ASMN oN)r~ciUC5ovd.)N*.vm/BI0شp"ҭ2)#g5½F|$-,#_m-Jll5oFu71~.2ɑt9ߎ|=<<IB;x Zs – 0! .AEˡ z~SJ Hwqy٣4`8*U33Epr\7 ǙEl,f kz(y>HC{ G6ih;ޏh{scLt.+<7ϯl =}744ٴG/oGit"lt<~i>KwʒXVC8އBxGޟѯ?ƉAZȜeTŔ:$&-/~ݔD`VJ-[N[J?Lh}-{v3s[oʂ'#x-?R|+!kqK?wccy8)TXH[_ ړ5tݱڭ;ĩ`Ά胰eatY:xTuCϥ%侼 Zҙ!ݡv4d%~adb3g%5Y 8Ar\Z:zԎD e& pA<"kPDI;nӐ\Dn䛃 åA#+]rWΞ>ݩ;4"|''@ېh* g:^/\Tx>H/ӧ탣) \{YDSe]Mu_&^K_筻0oHb(nUmxnx=F93\+xX]L#,,`{cfY۰҆%h@VRg{fvzVmۤJQԧZmR-RR+5iϽ#eVxΜ3gO{hZ4,l|IĽONa u\&ta{DK+FÿôpA+{{{wv7QeOYx]g`MTԌJQUtIlIrS١8x q\>VEV/c*MjّFv9H '{'A7 wkM|!3?8!_VS F8)yf?VL#JC%d_E =,7Čr*&., muώ@&s;˽W,iJ9j:&B"bqA|EDHUH&kCICbX3giI;{łH*=ϻR2%GT3t ˨XtF{{L~1Uۦ9nNjq&E",t4 x8 㷄؅i^Z (2Gp,mY1ǖKw]Qt!g>mA bXZBc!{8~%;O+h@s= F;ŰVvSl$>:ނ3/TN.NݬC& @CMtǶ;ve25`Oy8lA+"H&͖@N5*S52| P^066:j>np=UxK:+ z?4ݷ W ]Hܪju iEf/JچQ]Ptr?YpBDI-nL8:ʃ9lI"@t2LMl <*UϘ)f+mmo<"{wWY\#4[L]ʐ#c)g8z2dDK k:d0t)`*  VLS-K /h$ׁ%Z !;\Iʪn(>p!1<0+~'o w/YRD.v|yM\*bXU⒚Ch9SDxdL$Kxi1$]IDkbcNVbr 6zaN/(&rw51 (uBwJrn&+w$׫yKKZTY-Ye:Xf /C??vXY}i5:xڗ9xloqn wF)XlpجџS493VgȠ: 랳gxͳ-jpIw@;kCq4ݎŲ!w>:LkeXWGo>V& 7f`+´T 6Iؽ~ܩv̳<>75V $̆: IqJ‰f'6쨘}fvX0lżR:!1Wmve+7zXǁ`,@J1,[29[_?ߞqk{ <M=Tn:Ev25N+aXqMNz65V-*9?[\Q<Z'g|zF_u$KC^oOљT#dAg |ba}jvHN`~0ԛk&脝O='|!GX)ܬm &&VT5,>;v.hPʖN;iVzH&)MHYCxMln'T˶d)N5NJhiT2Itj/v>OgdlkEKw졻PzC4`À ah/#)RlQ}Go*+d5=v5c5Qt05u^]{ݧޝ^MwHPO, ao'G{鶓X~@ܿ_ٝz"-DIpHn23QUݖn0e 'n_0Ia&%L|E͍-_6Dfqv6Ix>'!q)r=!U IؔWnMG Ei:*Ҏs>xءN#%yEW # . ?Fv xj‚ y͝0w"nyƍ{Z/rtQ]R@ě}p_˕:"Z2uayO.|n I1kY<5wvZl_G_s2 }\mcJ/\QC)gWŶEv}ĕzȾ6DHc'O̲Y{Cjڹ@*Xv@ZSBV@Ux gQ~NK$/\eY._;=r[t)_/ Hhy=+v|G`zn ]C @QDz!׏m+϶P)?zbixSKv߁'Y4A:R+Dx Rv!i7A q"7`0HN|$h1vYaZC_C_!NSR>o<]h E$xq1Qb A^\O`vx=6Aj5Ca#*˒K-rOBGE&1bc1@(xt?iu\Sd6g24%:Yzyi„D„,&!.?+ي}@vb@7\ƥH'FZg,ΨUC8v[6ҋLk]t%bHk+9X%G@_S'/[݃?IĚ~u768MsB$ݰfgڌtZDSrZAlK },S62$d$d$ʤÊ?!2|*);DŃLCQ[ZJ4N< GKҭǤDP9%gU[j=b~2#auN@Q{Cs#`:"`B|"ѵc#j P!WqI8-<8-}1ѠvOJuX2}ΣDEߣLlvlMJaL_2Ȗ z ͏춉V5&`+@ǰ1ZC9HZ.ZXh)kG.hG/ɻRb&.qEtW; B[u ܛ-d-4rsF@++d-/ !*5 X!;cl-z~?7bDž4 BO7MR]…#KhXu=^K}ac5U:^/t  {"^%(xUnEVQ,!qqqTdv;-nYuoS%)Eh,3S (< Agv׎oVew~;}3K,AThk}0,TZ:n p>dǰ O['YH 3C%Q7j^7I˵j#m[wkAl!=90ϑ8sXF1 /YjN'0#y(EB-!sE c05.?(e,u>nHŞlMM2ѩ:pnXcfvK$}t=SlLM8V}(*S1^t2p"IȌ Kq{:k;pb@(Ts UBi{ u^ocʣJ=qw fqTn :qm+h.C}EWQ&W kΪNbR|sTa4C4YEt3law%%g+˧yif ;7M}9:&笉AHǚ%C>{tG0$h-%c-v9O9o6Ȏ91?TUB#Xh۪OL8LՠLi!ĚJ)ҧ\l|\oLr ǜp."P ӛt\Yi[u`^븊>>[{٠6R&["x^wpdOQ'n| Iša4P5 C[~pu]ȳm޾*Y j(]!nւ} Ӄgl#u_3M^ݒeYDl`M'踗,H#? F{" ^}::Nq|upLO>lM?vRg1x[iC# xVmo6_q3a,9M4hXIbMI5I)Ra@{}c\+srF{;/>~pf#Z'.E2` pPi 5*tS+E khQp64H25CӲZZfوQܞUkƶy>́-L9J,Bg"HR!hae)etFNQ ,.ϰV-*V>~~*p*_^_/Δ\G/./G=wdlE|4ef RAc?}{Lr*W aQ촹ՆW߭A/ɝ$#:'"ow 1QX |!wGE$o=kWz#JYIM 9F)a3QWeϊ>W+^zÏXAÞ2Fʒ\GH*jP=ZLģLV(J[(M%8NRed=dCns>k$L(eb4Ł2k=("oM:<'Ȏ2"יhN:}=~H+]tA]np77>̡|% &q/}!R!Jrp Vb$x9`r}8,M!XyZ&kDTJ#,WKim1e=-Ű{x |I؇GD`)hhB9]1TטIhP3]eh—K֩8ϛAN5^)힬SǴuN5|X9?#T!*]6r<+ό u{!j:m;t'#Ӈb!hZ6+MT\dr*$ܪhrv-昂٣GN$ ?zɶPa%c(W,۞p2?e;I(t~5^jyxik!NX/(,Z0vrxf#tEx[ ҈뾰d=6ecg8Õ~\Xk (v/vP x{iBWNfRqqnJjF^ʒ<ݼ܂ʉ8s &^NPMV(I-./ILI*RPЅKTU%T5:C3XlGx;8pC F%?lNx[)RfF_dovx;!\}rƺ7N x;{mɬJxOqjQYj^vjZd旖(*%eCp) dAʪORU|^ٜksl-UdsS5'窆j+++TBSS(/N-*Q/sKR&Q5fQU0,0#5`GAxR1o@UiEZDViUUҠ( X*8_. L@`'0#NKr{z^I/: 郫'Km}TRez*9]O܈w`auݧ`t3.z\s4E`u *[!nrzз9U2C^q$%‌0k PT&ޞِq<]%MntլZC<|rq?5a>ZB)`1 y0G_'a(!IŁIsz #!5+G8\'5`q+B ;;4:{>Tǒώg΁* .jaM$Z`ܶjs ͜q3X & XvȲ2"ŢB|9|2̀2we2.g@`r;[-I1]Iē=hH=zl܀/X8!쀄cjJ;XIr;PTj{flt&e?V'e$sݓgVuk q6Ti{uoSJ$R 8qW:7c} '5h󡁢~&q#^ogէ`1-?9cs012YJJVw!Mm6gő2ͦH Zf?Σ!9 9T=̂ F"P-O/yk@p";igsyЫׇD麈(?}Y][  vblO:O?>P3#xx| wnT,˪bkxkc=<~Cs_#xu_N0_|0$a XXVu]эХ@۴e},y`ၴMο.8J![1 BOX{ 4 xFق{V[u9׏ϛחtWtCV (qʏ: X.W( *p1ATQv9?100 k3b'X9M+9CXU\ ֞r缆TB#'YGe:)0 m[BWQ6!ת%Ft jIr7o49X.p%N+WGpi-zO^ K7r1u>mж쬦`;i+۟UEx;>}D@FۉRJz&zFJ:\ @WjJI-N.,(ϳO,dNF h$lՋSKJ Js7 0u1NǬ,.$xJ18!ΔQQjEXʹiI sl|7{F|Z ⇟sr=yH e?+I"8J4yN L3^;Ҕ)tp\c(]b{VTQnTDPsVm:K3ID ABO+lcb ! 0\<`LaYH'=φsg^[N)U[к{'dK3]}C?DϾFWl\r\'n\7vwI~ S(FáVN0IBFonB\n|0OC 4jYx[;wFz60_PxWoYW6Ij;8pj'ڙN)!Ъu(mޕv`͎83ޙ4Z A .H+3{l,&s9]w~zWr-XFU3FuH}y}4gm$HTo|̚u m&X1ujmcA<{X}pYUzQs'c60yClnՕғrT*oWzk. >+m^:2tfXc͢>FNuˬ (pU*Z>a/#tM+UN携#0I jp(x*҅݀`@#zS e(2ʢL?aŵյ|; O4zjö:m9 b٧)(="m"ٓu9~tz7dRiD[j8\ .8:5@k98X!qؓ[V2UV38G~)Mc?X."}z =90/2T[ }'2G?L6C-!IpnĒbwɎ.z&>M:}!2bw0WO"q| 5 Ԣ%TQ~zId")|+/KB߷y~[ۑ@X? #}cRvD.Wʽ,si~7h \?ҟM\y^g_P G[iaIA_AE]`Ҵ#,v {`}uT?aU[6 dD,q0lS;+mq8uHɋ%c$ X"( 4Tޔ+KG/U?ט3vPX$2l'.U읥Ἇ<$TLJlٕΝs {z"2%ھ+vgpFMP D08]2I#QftzL?HAz/:Kf<*,xbw;CjS[tsrn4d ^C{20`kF똹ɫOK[HZ]?{ruS/䩄y{r&V[,"Qt@0LLmbrDص=l[%V'vG'j[e髏$W ÃIqLHW3̓Զ;s}d&LX;i=7Y~oO~8Y\Jd#3{fql0̺5эHF8/kuK6lXYk&y1k9Nn9ѿ$KR҅! SJ`yUfg` ѭn<$͆ 6\ Z&`Slq*&*x^sUNCsqmŤnZu9?M/N/u <SF f2΁7 #RqZLƐ{TyTpo11 %CD,"Ke/E7iz'>O?WX!`'k:d0{EnuL6I! ӡXf)$`άs 'яB|jo a{~3 !OɎw !H~6 3OڲtJGskxFO % kOp.olH/ˠԇƃS!FQHUĭ I=q~BH I*>(YO")_V6ʯU؈q[KT)l`5?M(4?eiȷHߙ +Mvop kۡWaLf279Ӆs?цNj*,bp(KI-4Rh D2{hSk;xTO`fclm&v!BDFH*8 Kv\ˀ4&I?@#OƄ.f~]K&M>>)K8(*5A]y hYPsP* %E咊(/Kq@ԂmFӚi(|l"Tv#nJ;z'Z&"yjD:Ijgմǁ H+O YQҾ/0"1Aʗ3ċrT.;+K g Ds>CHSԜqYm `5095b1tnkQbT;=! `{AsŮs(RpZ7c\Ίl%ʹnj4:/(wkL}`'xè ('DreeOLۨQggN NQ\ d8/;yd?q~*'(L˱Y] 7kfqIjr`-mxTMlEV$%vHiy ڋmH,%RRhkcEUK׻ά]p'q  '$@pbfN(0=8GYHa5u/ J prC\&}qΩ %Ih>1 :qnul cÉ5 s!۳lNgC6;sOO`z_cDh)xG|j&LcGk^LrSFL׮j=PVsCT(ON~ 5Xd½e|{!ift0 r\)J<ׯ +o |1 6] X/ALL&a 2M0-Bp\<*CI (o an=Z֓}\ 9X"t-2(Xvs+}=#_yfNǶq7&kQVGWpZĿ -#|(z )ڶeF1 nΰmއ* YjY/f ɛlmjyX@p)DRtAAI~csfy?||obg1=?ix߄Y<\smixaKwaA՞P=yj&A%hRVXYx^Y3Z ,eyw0.y!NL{$8QVxM;>Lc|Yi٦fBڱc<#J0Y]ɫkLUxg @7 aToM8Yc|g2[e ]m":oZERYJS*^umK fv ]-^-R L{P$~\'VkKfQ,WgAD(*\6iͮ^/+!Wاθ&q +ǟ+3\z.v'j)az)n-BxmSMo0V&MR(-%% *әve{ ?@_@=Å?$$9]r>/Vq: q\˟|rIs+7c)d (*@vva(=:nH0 ~z}DR!qDڂE}vL{k5KjдToKr|_|LѼՊ^Y4K5of #i}8L4b߹a~#P5Rr}n6Ux}1R0D !gl$cp a(RHIIPr8ORP0*4]/?j*ZȦwZ'=-ɪ?.T9;7nq[E!+O?>-.xlmg_'yY, :5 be6:RJn+G愬Ky@cX{יښ!r?6lAx =R}Ħ9LR^'nF#r.|YU,%x[PDPDTKW-B!(H!'?w ww V(,P(MU(K-*SOSHO-K+`+xVn7)&FĆve+H ۑq#Ρ0ڥvsɕ"=cї(zT}]N334Uk[C^!7n*.RV'V7QcA"zeVR\lAҚI + Wr Gprfl%%Pja'9$TBD UAƐ&תrXrTC3 iy ayU|ڂɌPftd_PWAԛ^.zǽQo2^Ύ{ދQo4'䭡#Qr}(-Silcs%a9* }e%%GL+tE^v lQПK.HZ扒K> ts@ ,Z?uߞawa{ƣQNptع*1kSzԣP *:92 ABY O$dKjIP`g"5`LPzH7gt&g_x(etjľFtٚC.ׄUY_T~j wT9'L?` |kTȲd'Ktk0nCO&ΔIW!(pchr\|\|˾O8=xSAkAf)8Dkn&mi $^!Ldawgm,DsӃ & )z8$5N77{3}pN= G yy02FUs7 j@`sc3O vBXb\.@< P*ŃBS]ߡR"?|<}קϧ^as h/$M&xP>Ka}*%OQs(JBPf35!YizR q z,kgtœ cqA-h3kcf v) dZi1w\*̚#DžuH*lNok[{Ml0zK9S~VTKelnuBfy8y` 49ZmW5D9RjՎzEi#5V}=q~"bG9tEܔu&;1AxmRkA&DЂz0౶Zd#))҃V$;6Ϟ<'9mi ,|,w ln6٧A jtnqfu/D+d n&w:M@$ Έy 2)D%XLzslD2JΈ7VFirv0e9o歷{ԤZ~mtxHq6CЀ@JW a%Vʀ96Zz( M# a6t ?T U8c%i'lޯ!цfDX-o6BxD4 ШFK6ނ31ɯOBYĽ@9_}D@FۉRJz&zJ:\ @WjJI-N.,(ϳO,dNF h$lՋSKJ Js7 0u1NǬ Ux-Ez;_fnA~QBj^rQeAFVyzI%\ @49Ytr?3''\f捬 N>Q` 8hzqjN^|A~d_W-'oelŭ sO~&ƽdrY(+6Kx: tx-3Y|iyzI%\ @49Ytr?3''\f,9$4T|=\'sī+ eҜbĂԼҢĒDM9&wpOȩ7'Lք8 mr&Ue: 6l-x,FlC5E"0x{qBWNfRqqnJjZbwxxQKSR pTkIbRN lFxdbf .!QYnxT݊@&e7Yv+]YZE%R]PDB)l2L-zCxHXQ|g2iDvnœss78!]xv . @}D@FۉRJz&zJ:\ @WjJI-N.,(ϳO,dNF h$lՋSKJ Js7 0u1NǬz]xXMlRR?E )[wbheNS;'Y%VˡFRڀz)60|j=HZ9Kўz+@k@r5V;p+_z ΤL'7-fV(L~k+oݾ~5I {} ܾ0ZYFv)8~ڲRR+|hQw= 1qG{|FtG7ЬQ# ae Q edkQ[i(嵺qjW 9LL?RrǺKEJB*-@ΟQrJp!r|PX(fzLx]\{ߵ͖%T7ܑ))]!mH9O X'/󾎑n ,14MFs}h1a,jTucRUy4hϖ\+k I0"+jáps2Ci8 lC-w& #']ߌObkoçLG%}~yM$+qdCÛsDs|3S0bYvU,@A:̘dT)s ֚Q:pnu;'`EFǐtxS x89IC"|M7$~6"?"Y\Xe|u Sv&I Ũa-qM Iz ݊ jP*eZDOݪ4QMmû:BTЩufCmj jqypPI%/rC_VGҝ9K̟IZBo\⋙;6N%;|8JvŬ'muD[]3]"X !CVIϐ0k K GwXZ\Ģ$`t ޏE2=i#S^BR 8n2J8sUR!/I "W^6D{_޷uFegGo6iUWmCsO-A]\U 27bZ ١;8dfh}nlUSoE{7ޔ=>C>.:- 87qcx!7E=I4WWIç3= ptCm4!_^ʺTѬwubq*1Gcd쫣~vnb聫32fΡGmC»vCywO)NXTMtL% xQ1uAe|U]'G=ԝ 1%[ iͰS]sU+7ͲV:8ٽ{䃁|\jڀɳOvؤLeO5"rK:j 5 -ɝ!s8/ßPX:/YQ~'~ JvraEbQ"!8_KAf!Μg> %dgc>̽I~Rx~UGK/eEHDpK]>ys֭yLr/Wy}Uzcv QnYza즬#MUeɼ&x).9A`#le4dCg,X8&+L^3y KA~QdVmNO1 v6SH]xEJ@R)x/C^lH RA-Oei }=;/}ɩuұ]q _<-nenHnC{%#X}raD# :ip^50VcCC!@Fwds5Ʈ9BSjC֬,}f=^D3-pC,.UBQ2be̓9FYJ8DbgDBňANSG:Ђ#st=Ƌ*%$/W$}Jx;&#)$C!9@9D!1/E!%@181U!(U!3 '575$5escflx{xqBvlje%niDx[4G`Ax`:8AHόKAAWH|uĵN xU @@E߷g+h1V%xZ%qWdS@A z&la+ṱ a#['J/'% e+xNF(nmxxq${^. PON̉OLI)J-.VR2423BC%<%ĜT^Z^./ lxk,8d?6'Ԣ"b|%b%ʤT̒bɪ `=걚ŕK2S 99 9%y % VœM+G J*lGxeqb+͟$3+<xSMkQ%Nj_SiFIT#q!ZIM24L2T [pFp+7ŵ q!චoulw^8ss;ۚzv%+u-ZkzdvQOqP4)ᮭ=!cƆҚ:o@ڤaMlZ}hm5EȖie\6{ lp} `߁ 1x3X OGz :?P~ =܃%4T<XE Pӈ;A D]{<a𝃌Ҙ\XwasAm|XBH!*>m&e a^nQN]V욊l }⺎hMbNX?S 5إ$ .V rq_Bݥ:<.BOACÁ춍 Fgޓ S8 s>#Iz# at6A_b\%JwpuS &x;%[rsiQQj^BYjQqf~DI>ļ Ԣ3m$Tĥ\\9s2*KˋS&gc,ޜvy .qĂĜԼݔ2)\iL7a lx![l(0يL uR ث6fad̝Y83CzU |VBxWMle˒hS&Ce);k+ ]-YRK#qvw6{Q-w,@/9AZMKIEEC7~t93}{oޛy_@3k4 K-vq5K[}z秠`5J]٣RMVra!FB ~rsKEXLʭ 5Ũ d C?-(k:dXި:ޤ|椠'h0~TnmQ5Ghnw֗WjP_)z:v[gbR}m}08t-`/ mBz~ʞ Vng`1AxA8.JDwҖh1 ?qO@6 zN KL67<_}+tCycv=l][*(DSj0A l&\ {6{^x3gT c]/,Sk!_OOn[Eϴ-Ƃ&jXxwFz~HK05۪:ݪ _-h'6)=>k ̈́Yx{\ZyЩA9J"B_D2eG]x<VxRl\yV^ ߙ ~=fn_n*^x,o&ů^8^L>UTmO=3E@X OὩ+z0ڪo. J懯JEBh{\%a;,ц(MafX6`rI^dq꿤';l6x{`wv=?*xVMlEVӤuı8'a׍4HVi4I );wqs 7zC8p EB q!~* qbfv: ֛y?{h`kS^%Ӱd]1J~=6&kغ-Z! "W,Z][Y^]?XsTꋋT[m"y,֨&ڤ<{F_69m*Qsl!E3t- L 4q .4!14tfR$Mdut $Ui.LE^ͬ'Fggg&g: u|F}QKۖQ6tҩ:=L@¤lHt-%D?7`<4;ͭ7(fO3?.XWrX[pR'mwH\Sm6)1a.$y\ :ZnYZ|)-_^^G-{kLg ڀWh2 ã&EC72ZyB(H/ 5K6"*ۘ.).2)&I3{OUFQUH򒐀ZxL^}3#p/e;apM=uYF_ 8K^[f> [Dt"= 4G?idz>rj~׉Y㤪¼֦j.M 0k[cda C  ow+Y m:n^SqzmCewXt,<21*Ȋ8`;NY4cMPp-Gbq֜Y4 7'o.@:UVy[oV{mBy;@cTKVa,HrW/Ol"ηDzN qFcۺz(EKiC(V9wTELbu|Y5ArH˂ ^]8qY{ s*u~aQ64Zv1 )YlGnN}\QnmW{upedON5Mq \W5DWAX]H۹X=̤@f+R:r2kNAx3= Om?^ xh=Vi.qQ_YgmXl> EF-l4#:*$'$hbjL }3QQZ*"wpXpJXQe!mꥨꂻxO\ݰ.'}餥'0iB 瑬{okƖ!5olt߉!{8Eٖ kŦmI2^zSi*|= ,_h W R[V$5}7!25;XRJ68|c}gxVOG`0:1؆P*Q$ DJZow7VHдsTjϭԈ[* *U!=TR̮?ֆT]v7yOESSH55"lNͳPh]2=[*$ʤҳO'9C3!l6A6mn,-[E6l h5wc9+,kk̭έVM;PX'D%!u3}TԷQ l!Ektof# ^a9+ESt4%&7DLc5RA)_Es Q-!zV\&1!YQpԃ̳3~>WOaoH-t-1-uA &#@6&m ה$[4(h~9|ղu !-CJْDl5Ew}abHOgXA,]ʘM 2M+4#%9bADkJO[<uHqI1& _ V1u-/58Te(QPc_GX݁xS^+` 2+_k7}+UT@lj<6= <>F=jլ״+ˌ*TCU0TQlnا`Q|##7u>][RX;pл0.ե }qЙϻGՆ kԸ&q~;N뜕gӞi.m"| Lzʣ\=wKrT(.v!aqMXP'&+s9TĊ;D%gS;+۝`:SCP:^/F8c# Q(}دR L 1 "4Maz ,gDu[^&x_T>7PU5W!tZ[]ΦZ;Y״X,&țklm$ 7g> ?:v kT #ﴠ`[ekwH~cϙ 𠥷ҹD7rk˗CuD'O{owҏq/%(.R̆8':M #š^+]4mmùPMmc¦B8a ߆cY4IPk3r;y8=Gƻ:?phI÷CA3&]S vYz>Gi`d^Y8c zhT F49D @4 "ȇ%2I>Wv`!o&B^of͌K#NVLqk[Rݦwu3{8&c;M;;ח/]^EH!󲜂7r˷ bD/c% 0JI4/4 $ SX.xDoB+CCCպB\> IJDkv]W!$[K3S>]Kbߩ)VΥdKp'UJ-H8lm#Q6?ײJmj^e tX!Yf>Z޻^{^-cEqp+gNt#Y&~_طDc/Wʟmazy"J&~$MD\pC,@5)wAw]a~D3'~u4dDqAQLAFq'P%-+6NK[v~[_M\1r퓽"*"x{K%_r3lBѥ8jl҆s}w?jr\LiKGx66WHdNntarH+~LR[{GxdjQ.eTԲԼJ&3ug($Vnfl/^vD'm Px{iuf}JbIBq~r^QjrFfY|Nj&LS+)($((NV-1y-d ^ [ f  1 jZ< Hps;#~^1e>'xQkAvcj~&Bv㺶XK i$$KbKY YIfIY',BO^ugwZs߼7~|kUor%}t u2F6?JI\Z"ӱī!ʳ34 >8!sMnRLL(H ŗ?.` 7f|{1_(‹1p{='Mn|n5N)_?U|ߙ-zer QN CJ}+L3:r"GIŁE!ܪ֛vUkW;3fP۫՛'YȗS$8\|Rmr.bI+g[Io S"XX_P@׮GUp`[{ˣ %EM~\g1FV*ق<άI'cN &U pg)GpϺ+/\*!fZ|蟅@N6+`?|}R 4 ^Iܪ |*h$xUoEC4ۤGɦagku`LjK6m"AR^]͎!Y=q @= H  T+W bf_$ Z3~7on}ǹb4+OydW| *:)V/!ca@1s5mBm v؁pM;IU_1=hr g^z)'N= Íifٳg E IS4-Բz$L.HEUT>H,Ck~[ U%$l ?QrZ] >{!{왻JثPWO=:{%RN*vl0%C*љ 53~>nX4{l\+rd= ,g'5,&Bx遇Jݍ,a@ FcZMEwVػ$G=8-۶X m1&ÂUxp \`*WuEIY&5g+!,2- {]@òpxy..OmTA>@@\;=BəY9f UN| /><]㥑~Za|{f:6>&?nԿʡYG}Csb;5FJƫ0+)f PYGQY0&|<nnɧcC!AXf] 6rj'|7v۠{CC[*$;. Fd$\xytd0H{*YaqSKW0,ܑqA%pgE:BR㒔 5ZX{!WVˀMi] mVBv~9y3 >_Sbyyb1M$]̣ {Ǟ:=x4~0WDB }>=uMэ`esTKe֣1aC f"lH=xޱ$7|u F{'<[]UteJѲy$7Gr~^^jr2OI|R`ǐc'QWz"d*xk[;įvY72.fH,N,))(K)MQPO/NU״Ut /X\, sr[.,5$'?@(57,U8?9[])PL/9'8U]*_U!D!(?W!919#U!58U<S*Qk*,%- x1c^mN*d/H,.R@ ũ9izey%9zEeٚJbz9ũR!.  % iE ɉ 9ũ @^:WX;Pfs 0xq}\/'oT,+`d$xavtfUVVIe+T .J-.))<˟q3'd_ɳDx;lt5& qO6Yx}\/'oT,+e&Y`Pp &xdj"ɦBe?Wx{!QvYYɅJsoV; ! xW[oX~W&Җ\ UhI 6kQ!c%ߙcmH79O}s\. S:tyHZK7J WJ)Sb2U)Ѫ < ,Z^VnF'GtWz!g#יG\TT:2jW%.Y 2shZP6|H3G4mpb2[dY01mpZH(pCcjJn߁q ~_4}:1ea"64MPS7licFXې&K0Y7ffz4NAk 0AjZ:RML͉a1ta_hnw.A:1DSI^Bߘܙ Cc4`xx;j cZjcX̤8! >!TokN 6T0V)jS@55rmc :AM8fmPv0`,R.݊wh 6mQ#̲8v8gFntKVK_hN[nC%㾓S:ccf} MWO2ٙqD"$gIXqC5g8uJV0|=t]œNI B<x/xݓ2_<Ϥ|~907XM1KQ揿j?$ "_Hkv#^R};2%~7+J1eʤgT&@uoB՜rbAZJ@x_7%9iR۪UcWnf`UkYUVM;Z V=hIՓ4S&Jj_3Jú0t翙͘fkp"7% g{>=B|{xulˤiFvE 29MSD"uW]b"X͋y 0Ehˋ}X:eIy+N>M+-UvO-y(wsj9jij )qyLw#-^'p8]pb,{9hxAj@PT”0FwӅK 1vN&矢vQQhW:\\ &12#9ƤB G8(1GeLmn[+锓8F=T:u:՞^(8ϔNaԟgmu{H_Ek:HZ}`[PՇLɐL/`31pzzRxL)0pI܏JHCS:6\K"%>DxgI+81:?"?+<(%fL,e>@5ŌK٪&- Ad&N6Xb3 W!A:55^O3A"ǼB ]g?b5fXxku?o{sw f&Lo 1 dd+d&d%U*OnN^B(L+%\TYP¥H ++ 7K! ~x;lڦuFj^rQeAI|IbRN_~^*WJ*dc6ɥ"9E7/gcbdOOJQCfs /sT*d+嗀Ozr&_><ߘSsrSK2S&,/,Q؂s:akxdzdwlrA x;oxJy:7kjYj^Hu-B%B: ))E: : )%D4'{`k/PU(NIӋL/.5ys"JLeSVw߬"4QBS$DC 0ix;ܤ!wj^FxMrx!6ClM+s'qAZ^lxuCkFm]Q Hnxk)f/ m-Y&wʗJUZq)@Afg@D`2ɗ^\Xx&;9 nm“K3jiHj7E2gx]AR0 E7, qd CDc{l)^8m F;7K?g4j˺-U]#;ņ=ݰ؋֗Dvdhh1 ɠŎ ǘ]A5]UQe{:Ru~Nla2b>#lSW{\,>CÁeY?y8$lWN) Y%MI_۫,fJg\~S (kI {x;%[rsiQQj^BYjQqf~DI>ļ Ԣ3m$Tĥ\\9s2*KˋS&gc,ޜvy .qĂĜԼݔ2)\iL77flVx;~}dFS̘ |{AqxuSkQҊ I[j]U`Z)MTDKv_6k7{/AzzV$g"xAzPݤiRt.;3ofv?]~yk^QdIJ]ߩY^&t~ވ PLBSI4<{ x&1oQ㮴KK.HMޖM" soZB Vq\_,+F+Y-_fgV%d]+S&$Yܡ>i$ZJg DhEK8;cXc~ȖV/IAGeEZl;Nl&`ɢ'$SFlNkDr/C.U$| ; &ADROLW \:W4Aa$!K7lj;os~'!Hݤ(C30:^3~bfP%z@0  K d\(|;SQ;*xUoEW"IN8Ɇtwk:mjL6K-m6 P\Vqzw5;nb.wO@DH=! 'āCU0;k^'Zk{ޛf~'SQ;[Y5%0uD] 1zہ2(o[]´ōōCUAo9>K]d[>97cNaF >GP@l^ qo3 SkE' IsJc8L)`#E2(" =+eRcCknNDw$\*H%sA~Y̴")e^/Uكs =z>YZ(;ĭ{*QˡR&'wr&։R&tcd~7OJa0^cj1Hã3w 2uw} Tcn=<~kf Z+n]__#6KI%ٛɃ;b٘tA-ZG"5Ĭ.19m^4}n2 W)7 HB3\=iZ@h||qJ<&Gh'i(GG@Q/Nk6vUotI\#sg{e^YK4%Tܹ|cue>Z*Wya=m6PgQr"س yZ*!20U,SM#YDȧnPӍ]IrMk=2|929b-\+Ua)GvA: \JFǖ"Jpͥ8) $NwIJl{L@5;[m>#Oܙ/afkyDZ\Uu_݇ j⾋AFFLvDRg~VpCwm̗]MНxtZUL8z K Xe? b+ϨSli`FyI 5vk[ Q᫱@v +gocP/Z[}6<9en+}.<'7[+BX-v]bx_O4CMRe7.^UE>4Jp4Ja`%e,=;̡2<TX;si<V!f Qt7ʮNń=uܫuʶVGwŢR~΋d+ }x;%[rsiQQj^BYjQqf~DI>ļ Ԣ3m$Tĥ\\9s2*KˋS&gc,ޜvy .qĂĜԼݔ2)\iL7glXx;~}dFS̘ |x]AN0 E7,PhiʠYp'nk&8 $Y!{ao?\Lܽ`͡Kba'\ 'r[3Z >LTZSraf {S̸L|Ss>}Gb `ŔXXQ j$ZIosqjPL*dogz SЕk(EJij'>a@ $x;%[rsiQQj^BYjQqf~DI>ļ Ԣ3m$Tĥ\\9s2*KˋS&gc,ޜvy .qĂĜԼݔ2)\iL7elx;~}dFӍS̘ wznx!6Cln{8b); _x] @E/ U@@xEXdfpْ ؕO^{y}%"gʼҼLClsГzXQi4ɳbSN(0'U7u$ըg$b:Bڣ6=wh=Fd` $yI^ /x;%[rsiQQj^BYjQqf~DI>ļ Ԣ3m$Tĥ\\9s2*KˋS&gc,ޜvy .qĂĜԼݔ2)\iL+7dl x;~}dFS̘ ry0xR[O0~Wgoك.>Br%mܿE/oBSzkk 5Z%u)T=Ijqm%u]$)JZUNIꪢe)V+[Ga⻰Φ{;"F1F#jҾ(QliQTBbQd# CNTvH_KE&"$4L6:2r  8 `Ŷ ^'5#0='v a# 0C;ڀ nCgqB?ze @z&`'3YYV5EXZh4#|ps_[%YF50xuRkA Fm&<Ԓ]خlZQS [ڝ݌̔Yc(?b@/Bz*"kO"^l {gŐb>=q9b/wQׂ@u{K_ORl3F{ޯ٣)9z7SGgzYtIzsC=wC'Q12<+>6Aѐ Pa~))"/X5 x%U5C(<*gtpZklެUk*w0 {}Jⶍ;^6PȕbQ& Pcޫ<)'WÈң ch@%~ȑ ,ZJ5w`ߌz e-˴vLnBĿ2O` _|S>@mna" 4M tg/#CcǗsd/Xq?mTұEjr0w`Fg)VJT쑦`s;`b &yY.SW.xUMhG&ڒؒ#uFbʉꊸq׎;ݑjwV ;(%kBP([shYIfJ7}{o޼4Gwofh:"_Ts 5Lv0W@SjxJ>QM+W̠ 'Te@AmFDRoKey miB* DzyafzFr| e8uWR'jTj ub# dكmpz/<'7Wٛɯ&L3+픿BѕD10KC NaCvNLHFOYB!v pfDO9hْ2 ?D$a32嶦<E-E(r5Y}N,vIX!3;2_!KoR􌊞;)=)~Y[nPNH{7$tV2DFE`j0N^U<6Pe~a6%:*Y(ӱKM(;1m k PuU?JY:''ҷLFx;%VrSUh (E!B" **(µyp fAFԜTD(CVksTͼ['QJ:,x{jlAVDVRsS 9?/-3]Vv' P(0xuRJAE4E+ ;ZhP|"՝M73afb?aRXXYZZ`klшN5s9s\N\L޾F:ec#4_}, sX3PIJh}ݵ)V}j}ֲ\.]O42ꓼL%W ^҂UF12Bn81+KW7MS5rx `3[)CDΓS-*MAX92 {P!C0ԃ/oF ,Bq%?@15ܯevf@{U~1kEa[ @h&T)>*9vx$&sQ[?l<kM[[^z1>h|۩Lrڴ&z;-Sj;1+ɷQEP::Uγ! =-Oi'IcYeu]^F4M Z'}QIy 2RzI9cPְ}"CְҬ| mHŖH4ؿ yOOΎ:(|³bF˩ Vy1\'Ql2.`K4p5LsLZC'L%B5)?Ҝ:8xCC6F1ۢ)0[Hwp{ǽ="<3m 844ATIӜ^gc=`2T mG8oEmy~L s2tS/%=as|둝ky_˝8k H. ,Iɘ>*L" >KT'Nn"U@3ۋuVFnTľ -5b@ʺ[eS =]yXVL0g]7 %;PeqO??}ۻ>7haumrj 6):c 5w6F:yj(Pt( u[U?=07FxURK0fghV|& 6# x IytwvdCǀcжxXq?׿, +w4rKm+^@#US0a#' |R0P-_|s00^v`CKwAfh/ d,V;(GKGV}т&[ftX'G%2u1`I`aAY*blA^u\ !SBqX+x݆T 6ļ|c3LFy4fq;UA'r<*˙o,w#xU2oPܤFƭ|]+;gl-6 :CO³fɚ4u`x =A4 6x<$g1mZy+@0Vf b}4~q&epy"R8O >fizUg"1*x1JPq0 ,")V"2&c013/!^AKĈ:rztY.1gYԪ,Mp׾`i˺qJQ~"v/pWI@~Cso㖜`8'=4|'3$Zcp;d;'8?عk~KM Nw?ds͖YehZx-%8᫝IFjBA~QIBb^BrNfj_ I())(O,(MKϝX(&_2Ah3M5z%hx<,8a>,,ť)߲'覧(d$(d&覤)Tddp)HY5lZx;,xXpF 8 nx;,xPpfC=Í 8(l"x[4iŠk%&";nGx;,xPpfC= 8(l_x;,xXpF 8 xWNJ律BU_C\ai&qjrBco-z N HgggΜY3^\AY_,%G!G^k=*Ly]^Ò 6[Bąd ssHX0d q ʙyĐ#C]DX0TO!21"BZ&2q3V. zAk3hw #[I'bRRx[d2P#jؚ)ӓ,҄l%QX0aYa,eD 18W?3TZ䧢6U5Ie 'N(-SViS^D eEH9UBj*]7<sۭzgX9t #&*Aj} R(Fk5$exmL}{\@p3 UۓK'7ݝ\7 G0w<J`tuN9ZNF 6u;`KፉPn8!Kʟz.xN.}㌝Ih_ ш!}1w Cz GN Clwl…=9Cp=tHH>m7`$qib~5vwJ˥)LJ,x -'NCI߭ *pp#D ȸ tniZ?Q+uRD˲E;c/t) N>>iߝڛ,zsj&ebYqlKⴣ-y6#P5-esX0x13 #Sh֪Jqd)E%Q/R* 3 GkUTqrC()s9Lk"ᬭ>Ɲ 5NjO`Gsy|bZ5gq>Kcx2a}6RRlEFd48{0McE"U*yUB-S" X MQ5Bm 0\UŦ^'W\RӣLw{PAݣ/xZj^nvd\%`8j[`m0k?O.J6 ȤY $b>¦D϶6:9^[;=VJ|FS nVovT<#T-uARnwKLI$ L**X]HބGT1c5]3~f|9/ApD!ܦc/Z-yOTGޠ, zxʷg N=)|S* z{To Qyz i,e.6g 0 >fxռ~m_t\oNŋaDڛiDSuf*I Km3<꡷+2r'Nhnvo= B߱^]oL TwZtVm=0o@iivSr/E ^u5 u(*Q>!>^DSA;XZ}`D8E~(wbG&x;/}FzC JfxzYR'QRPWV(.)H՜,ƻsn>xUo@"Iˀtu)`9 !ER|j#AFk_Μ/23ԁ vnL3V,l#V$~Gng y"U_UsV \*x]0ʆE3Qrޅt=H$`2W.p|~d-w~K73` gٟуD MUjcQKH ~Ħ.!H!e%E`cM]@`(U-"jZC`YhŹ)oאkrۂr{iQ8aF+~fJWR3!!MPj[H;~o a&ŦȑcP CS86]l@v(Ԙd^ Y:%D{jǒ*&9fpouFJO)'$Y9 9J(iTo#߲wUeq߱&/rI_a"}}-Ddz/+HUpH]e9aiJʆ\b4x]σkQ7fX-'G{+;DD)̧\uO 8!i4J$j/,.@Yd?rLIᮌ(An{$9WrO]^<\8-Y47VtvOVwViynX踐F̕W/Z-$dshQE(gm+E֛q2>?dƈ ez3,+Q4P48xkAILE0c&<'Ͻ>̤7/0ᩍP{p 9C>nN#$83 )A< ]*_Ujȓ=Y7ِGպ<[iM]\OeuvVԜe4f˓4d6YR?W` ohx{yqk_9PM9j+ ÈB8% < RQ5p~q[5mcF:N"K(ˆ4-j ZrG vcF;t u}*el#AhPյ~ڷO+?1`kzgX i`0( a"Eg\AFmH $4EL*4M}oml( ¨JJkҗ V(FKJ~Nw "F[n|T` *^n׫:nɃY2T DJ܎bj2}u| L$R-fIc*p&pڐ4GO>KqbLvA"0,6C + YвLH{mkB9qP zJeʬU^B9ߍ&#_Oֆ-'_~4vؔSB*JXN̾>x];$vxjp`wl[Ԝ4<.$RW\adf)U93l\ |Kx6 7 VxbppCK}ZQ~B||ZiIiQj|BfnA~QByfIF|qIbIjnj^ T+3 D镥gg+(h(iZq)L1I*SH,V\9ũ(jXA Y7odΧ_Sa``4w;NMgpJ_痝ylY}lTn 4o]qCD &q`4a W` gBVfmQu-z}0M2pi(' '*@"c:aאr#pǹ>3r*{F-u3RMq€de)OZ >`}=|C\߻ 3$ALl/hK93 > 1#8jm$ZWB=y}wФWJ'MǽC"?PDkIEo՜o%o._xe.^Wj߾5!۰xŘ[o+fF",%6c>_U dրhr]]ST/|z=?>=?VͪnmJm~n6m\?MP+u]K]}r]/C uOuoӖS2;W۽-t:5^sNnl[|$+VQ&ݩ*:>?Uցm)98R&Ƥz?eIg%U KCG/&GW02-z1=qoQuCH{mPbuΐ/l58W'9pL|8Ⱥ2%6)c}3p сr]nցrlk& ,#rCucU'R_W"QVrZ&,(/2xOR\D ض~ Y\^W = P h0uE}3ken ĕ`g ,hŠ \^eU-E%:*Jǀ!w\Z^ʦZ1i%P%=:~P9rK/L{{2p(*!5nNێQ<!䪄8N*B'7 t Z_:F#+, Գ!T=O;9z7y9}:5Q佚O3|)]4 @u%U3 [%EՉٸ;C":8%@6MA]ȗ`j 9&iV`LI BV>ky"1 Md͈œ? m, d^y%CDOV,{Rɍ,; =Af6ըw7 .az2d]-Di*9G e4J᣿8`ԧ@NmH:c7λښ1߷AB2 60fܧŬAlvm:APc0xnwJgsg'~qٹLryF#:>/֮X+1fX7)5vL4\ P%rDTӌ*.J.S~f0[Mؚ#HM*sQ072O@ e4Ԣ>t.]N19_Gr^Ho!dWDG]ŒIxnN9>}۝8]|yxZ=4uywc3[ʞ^<ζ'u:n]f~[o-<͗csܧ{:muz}u-;h]l^jxǻ]sۼZ7y9\5oGo<;ϯ'3Zo/z}=g/w/aqDF|Z-ZN} UI7F|8>~%_nmA?w?~~yއX|4xRJ0S|0 *^I/FW.k&唜toomUS(|?a-KꘊO5sʢ٣Ӧ(VAO-j{֨WhYJ\BUaϛ~rLf(t*:jm e1Y4C>eobH|@0rT= kb!æ郎&meQG\9KH!)k\ED k8(7d6?9a>ihvm䀝,q[c߹ dkktyhN<{^?垚nߋ٠4 9Gè:6_9x鏏8Cҭ DY>>n~_p$x;ɶ!Q./?@$#?O8,HRN!'?]Am&FXhG7xmjA9A~,BKK]˭l?v3\g+X( yK^$x$MffΣz +}a))3{\aWstÎUǎv?qz̶C^N0ț ǒRFT:`ЯHx8K^Me=xnN \;MYZۭ1DlE%mES,.d4yd[EX3*e{Op, |,݋v=,UNyGd&Ld9ϟA/[ȐE GEr:2xv*gT  ?id"8|TMY:W2_(Z$iE*1察PQ\xLlB߾ྲྀvA v~0z^g!UEVvȗP "ZdކuN2<Ƨ2h"%hpYN*;`=a@oŁdɞao \_/0m!%vG3CM&gZꥶ,g, U:aРXSI d:Yf-5)3F$wvE@XkbMnmuI "P܋]Mtd!v67KB O(& zUC~ᘤICg*\ J2L8; ,N%DYB" u_gxh`9l,LkkA`Pfo~(Y|C+ϖgN|< XGRQ$v-l6Zȋj ^ʳ@#PMcA *B1i~@M/Pr`E, P)Wr^UP+V>h{ZWmU#l*5+`9RNovP+sU={E]PC 7ㄩп*.?^.'}>'M ~Ê|ߤ1K.L.Jd"K. x}18R2r4L}]RkC:ٯQՓI'pIdJ8C"ЂAǢ=-AK8GԼxY=Jtd tVeU?tGV3m Xgx!<7憯n6^M6)}V M܃U͢-T8ym3r{n^ >'0o^Ѕ MΡ)cւy[DcM8h2L!4_>_t7]Vv/xș}?yNoxz )ܢ:*wlBh| z09ge'4,9'09g*XR^zW.,M 0ihJg=DCha)n8UZYT*/ks~BcX ߏ)O|ЌUs~<1Gj8~vQw|m j"ӹ}aH- Kg[9H*bD;J,I C7ZzZSDi@7箶3aN0DzY?`dN)܄30yZ݆ P!9ˌfXpjص]h㵒_'-UO9" u- 2J*K2R3TT34K44Ҁ&)d)WAgkr)AfXXą@:$5hob+I)NP ">ƛ3D1RTx;dhiYkM6cUm xToDWѶ:6d?LUkSmaU,FTM. @8xwdaT ĉs"$z@pB덽@di7=|Ҹʙ惫a3\ۓi1ӌ:x6y:7?*-kxR1=e'TVgii#V-xSbaĒY xA 0D9/.&" B&/GUB0NjAݑJ'Ay.`J, c8>$1fdta+N\V\jiSXlq?;Hb7ՃZ;|Xo'g cxk|e1T0+3 D83=/1g8wFbJ~yq~rv*Jb$Ĝ Z$1N!ϚZ[09[cd3II4cbT+^.((RJ'fhhB'HLvq+R+d3sr4 2St tq |]ZO Ih&E&xV]o6}篸5"9I40 mbX!bZ%)T\a!)YJ28y?Ͻ[,{3>>}*k]kz^:| 6dM1*Kws;ZJU}lѽ0VjEzD%N,J\1KGRf%e\Q):R! S%m{^UOm Jµ A[b2bLl7i`;9_y l&Q%Gi;ֈm:WjEg9ia|GMI<a-uH'&ِw'GK#w++A"uVgpz*@ UApHww 0gY;̎ "/..&{xo\Ln^7l~65d-t R-TT[Ua>|i*.w@6%EEL&H2rEϗsNf6{ G/W!Ia WZP n z=BgT1mmx16$nfx&g·^pYJŖ| A92st :.[Ekk#6kBtSd !OlW?~.ۆ `,5So+>&1+Aͻ p{˒Bfpη l }BtzKm*Q] 6u]{zqS)O0'.=k$kd.`-m۷yL;A&մ!mIM!zk=ҏFFs4Nċ="{rsQG$PZ%yxOzv>n*3P٥WБz Aa?W1v~%n 7r!m7.`?xRt 3%!V\g `O_[{‘朧LZ3Wr$,*Ӥ7SЁ--:t1N̽Xřva:1SHӴR m,W6PaW`oטGn MNxɭw*\60 9l1ToWAL9 vV؜޶NGþ>rAgsVz ilD /@d`cOȌ]PV]'s4DXFΈZ;q+SihY\HqIPpޞ BD/l={C1B:ܧ"V'd:Pr҃*z,?gC(7 >pg?4aۈLnc!ǢO77^>5%H"^Gd3#~n"zF+n"h]-o{xzU@qJ//No=3׉7hsuW4%xmR=oAՉHG"4ddi%8vgGRӥZ}+vNW ץhOt4|6ffgޛ77<$Ur$wfZmSS쓭^t/HޒVt$Km9i5IwO)4,iA+ĈJTJFR^4a_Aw&V耩t1t& ~(XIty4;GN=4p~$m +i:A<5Iۆq)ZUξXVT4Bt :0D;D "3OZg柽*lV]xYGmٛXf@p鉞rMe+6a_#A"Ң/&ئ^%ӫ)_d+1ΗyIA-2DAݔij2D: h( +wJ7CO7UӏwuT|?@X'",;e!A+F`t "~&gY={U4F7A$(B\o*ĄW#FFeT.6"m`cJQ]'8ќb9XJN;\*]u`/r=EE}p:O6, 5. DDtdkҟ{.r5sÉ5BC:=nwͻlŋ'H@3{oNfb`l{.d5aG%&pC31>iladB/uͰ(QrsE IFjQU2\y) 9y E&ޒH-J/J'Z1dpfq0 x Ulɩyũ\T^Y\\Z TL*Ԣ`bĒT=/ Gnuvk„7㾵,=V5qH̢ͭ,RAlL=XaVpHL~7\~5S Żk*nss}]]WgZ6`qˢn]y;]龒d 9&|Y[ (X&LSCy4 ٕ}Z^[OJn2Pһ~"$g}x'|Xh3' gx') hBx[̾Q $x]QN0+\R*UA(VUqCR,k2o =AnH$@PF(ҖcxYBQdNRhb{kxY\, &[.^m82-Hvf&fTK2hE:`ɦ\ݶ=`GQKGpV0*rG~L+]e:dxPC~Tԙ>Ww˪,'zzܓڈxGPPhC×xɸ2zW y|e!H^ ch(Q _-*/ED7Bf;y cAx[dn,KgGaxH/.Y ImportErrorY9ۓ1config = json.load(f){* mnړ9lWx;EoCT,# x`8AAHόKAAWH(,h;q! yx[d9btQ܂עE-7`|X># 6xjAoC'KJbIS\OrNJEpko^}m.ݬ<4xO@Cv%0v m4.8%Y=5M;Bwtf9/^<恃'g=yգ11'.kA}<鯯I>pB iFH 9sIPNl!׉$!s}j VKM#,XT0b"1rFnY֛ YP6Y|u&ޡ!a Y Ԑ}N * (9(Ou3OR;Dá2[$_-:s?"G8Np[+KO|?VX $_ )j^𹯘g/st˧X }e6D$Cb5ղiVJ=>BGJV'#Եl'#<@yܯ3!v&!H IJ +KJ ;\~e/A2S tdx:7.&ʌ C|PJA&J+`V[ Pk;̧0XFq(ۋ2P`xBI1 q)Z`i毳ߵeVԪT*$tf9$խZe-˚ xu ~g*hnC|$Dk55Y;(&jܶP1/c9\ˎK5hyۼv._An/x;u@k fcA^&}HxhxCn Bl/ r²: @99D6 '1$)*W끘цV\_ xzEefꚓ׋D7)oxlxC(ZQ32 xht~~F2N)ˡ^tbZ 4q|ߛksj >;y7c\[My_u 8Ljj"5 ~] ?V%73?̶0Zhef8t==4N6r1y:x (ؔK|56Cϻη*%f@!eQ(<7P=@Am%T t^(Ub0q@.A-U}8tgJCJ866A: ˈPoqwXEW5Pdzs@i^a j 8ƦisF )(Ub5[6 BQjͣ6+8+Ռ,c\y5,rukQ4nڵ<˷2hL)DI-y=QՋ#H#uɗɮp!?&J|@L.qE>-Fiyh؞"_QK渤_ZVfbay}׫A˅\6i90at,5e1έq'Ƒ TA<2Bw˚19y=g(x*Lt2. vQxjxm%J+. -/*QHO-K+AŕEVa5"l PyE%\_mdMIӃj'g&iXijrMv>ٞ-%$*;jI.bTTlcQ.F5n?H<0yPlasixF(xhn1P:( @Myiz%깩%): ~y53Nn?YXB9W07,14 ,sAf^fI|IbRN*&KdNTddIEF 4xUOKA "!PL]ǸLaCbw\\g_7tC_$:wL2泬ϯ)J jNd[Àl(\ii# A @0²SО͸%75%nqѤr T#WAEp(zoA .uP*lPVX?DH3kujީ܁z77g ʯ>'Bm ± OjnQmV& x0~lxe3F{' xjxm%J+. -/*QHO-K+AŕEVa5"l PyE%\_mdMIӃj'g&iXijrMv>ٞ-%$*;jI.bTTlcQ.F5n?H<0yPlasixF(xhnh4X:( @myiz%깩%): ~y53Nn?YXB9W07,14 ,sCf^fI|IbRN*#&KdNTddIEF' 6x{nbaׂE%yy%y'KLfؼSx2d/ @Pf`S:yTqe^bQzYUzUUUUbƌŤԭԐ2&WU,)D(LA5Y]XQ/1%(8>-173hHq~rvj[kS@i"Hx[uFsmXĹ 3 dW;[{&K)CR* J&( (O+JM.014%2Y;(57$UG!%$*\5UjD 6lH6sF֗_7j}tyyPlasixF(xhN5H,IE3" =LS[@1(ܬ2Np:H1@K2SK4sSK2SuR5' 3NցY?;RVA]7W3'*-0_B\/3/$$1)'㛿0j`Ux;٠CHh2y (3SUpK)N|SВl~}(HLSNTUP5SR@P!E ]م'_ -ojx-2Id܍˘60g3;x-2Id\&=ÍsK60g>!x{ix(fLU$L/"# ;nx;yFs fN&zlex-2Ad fllXx{ixf?,&<n`x;yJs fn&xox5MkWUBs^Mrjœyy}rw"w"P:a=j]vwQdOOqZg`&.8K).h-r8*RD6-s!([R򕰩(HylQq+ (!o"[OA.QPYHQ6"--.DdkAofZMGD@_B HO1<ە㐵` ]8sobme ]?M,SH綻Ek/v%8 &"e).˩ CBv#`С*6Mobƴ)"82NZ)’)%H;fiťL`tIe:J HTSBGHhEQ mK: ĭKɍm0uɛtջv`ol14;}6Mݏ<To<=\{tħwPOȇIs!yCwtx ݃+om1뽙Li@ F)?L'3xo޹c߁]/4Fl a(i8>>t;] ^@7\ޝM׃gF8 ̨0ҷ[lsCߛٙdOՆS(͛6 ތr3ܱX@r*=tcn{]!QcawZxÙP_ANʍjvai%jŏV$euEh+wa~ؖ3|EƃÊC) E[Xr^DXAP4dg}:Rm##()6N0W4ش٥ e6:TiIs y`)MK[Xm۝6u/z5^EгMKȔV@ܡwWQt줲VK!VxY*W*[`܍,fD-ʹU:o 1%6S/3RϭIz[9ےEV٨]`7uǞځ+Cy ,I(UlL.x+ς8_y-O'!e~uc0F\%6'VrUPLUr(N/~&/&KUlM j k1]ʬ e;زMsCt~Kg(t8&A-9odV|:7mxSgA)q!M:&=6\oc%#DbU2b*Cm }:c]UeKzL1cS5Y KLTSwՐw4^? SYMDSH6q`_."[#%xY#2Ҏԉ]AދFۄ&0r]Ł5l'p6_\x-BhFn6eb;l!x-SdFp!@9x-FhBĎ;M8>xVmoF_1ҌKQ tLTTN.0"W&r)¡.}9!ٙg^=뭪^/dZTuZg4,]%W뚜Cnxzyk`*TJ9IEkQŎVU"uiY AŒu\KuAqRT E\+)A m#U,맸0O)VHd v#:9RfBS::L* d%=Idd^\%6e:icq]wUȃѺ)RB'WnTkRry]TDCP[qlK4ɘ*GX6i_ER/ M"O%g.u"hE(tJyQFbZlUjg-BHXd4 UcdQYT:l=֧&4} f4 'k^ fʥOAt;`} Ɵ`|if4 "`<_tID.6PY W(>puDc{3 i@A }8|@q0 ǿǑ?hv;8 C(i8~NF>W> F ԆApn4ΐ Ft볐co1'3?]Fß f\priraq'ǾEׅ&\{k074jlm̽VKnv:'_|ukͯXXjbI+Qx u.[φdz1Ro[` m% v/+zk.-:bzۼoN~kO:l\D SNv狎f͞[ ReڧP'74gv8S;1DNQs~&١s0패cUƵ7Z-'ծq BSKQ1iYriS[cnk&K~|na>ww!#.&VD5zd*v<^;}++ÀgQ*`(fM(2GLjzYN BB ;k{ʊ R9 J}-dN'^db&EԿDQdJIdZh:ίvPQ9%v&%3[8#.c 2R٨@|':zb-laյ9Ê$Q*|GRU#^ h=M' 6BJkEzOk@qSM6B\Έoqj: O-P61Xo8z q_컃0> ƋK5uآaZ}[ 3!=k S6Q[G#FbE>mɜ֧@Xny\/\GeKeFޱrl}0U8,GMN8Z(J4-9܋ll<Ϋ9*4_=OL_Lո3=pMy\_V;8Fj7̯B>@A"_ئ )Xt(8A mm,ҐA &lŒZcq> _mO|}#Ӷg~6e@'qnwB{`2ih9cvО,mS::*x{ixl2 K9JSsR* J4RK'3rIM>y@Qjn~I*\lm)6-%Vx[}CcmXĹ 3 dW;[{&K)CR* J&"]/4RK'GOIEc"` A&Y((5$5>9?//5$3?Oc}~G'3 Tyh PUZf^zjznjIF~_~^B挹 u(@AjNfBvjn99Yp'+zy%%I9\)b.*rlgx{ixf?,&<l!xqMcT2'+r,xhxI_ HHN-(QNLO,J+I-**-(RԢ"Ғ< MLe^jEf&4x;Ikf=nfC=W2M xm0 DJ{:0ԟA1iऱSO w* $ :=SʢŤR٣mcwbmd˚^Z%1[kRɟ> xqByNfRjYj^nJjBAeIF~n:XKAAW4%_ @!3$1'G"9۝ tWlx;,xXpF 8 o=x;yXs f *s0x[ibCkjEbnl}E Txb`C/B~zLolLzƛD1Q BiHx`jfbhZnx;yXs f)&rl"x;dhiY'&joxf`C/B~zLlF3D1ʔ xXmo8_1"*jF]uFc{me{APDl"fHɖF IÙg^9տެef!7<rVE鼂aQn*\).=x QZ<=9䓜sBqsko^}y&~~VI2x۠wTg 0Nd(NKIј|s;O~rL`D<֣|x֫ oRsKRSRsr4&ƙ <5ddx-?Arc+Y$Y`!Hfk *x۠@w CX 7r1jf)旤h%Uh$$jj**XqMS|GΉ8 &OfGU¿y-nԢ"ĜĔb[sĦ 3= lxFu CX 7q1jf)旤h饤&Uh$$jj**XqM9'Ndghx;Ic͟XzRKlR4L ,4'odeLSN6НgvN ԼĜԜ4Լʂ 2MMbC$f旤0];łT<hlcgVH,_QB=D!(HA]A[H#Us}8";Y61n$8dnɦ"VEc xUY O, œy$ԋSKRK4R5'V<",nyNnKܼ?qAM@8#c&xuKoFnHB:2gcsia%ۊ$}:1,Xguu?~z9VmzXLmp11׭\T !nIni }ZNjkȟ*DqGUŨ,8T8:,b8t80KLkz RHGtH;n@ŸHJSb;yZO̩TFK8cTO)DH{o{QW` Mn2d]F1 6,:)h,UJAI,!&bA6f.SULK}4bԽs.jA5oHQP],pʌHHj4P)87dbXR \Ie;oZ,CТSʊ0!BT;m|;6>HRAICPn(G"')}ZԢ GY:(I6\ 3v,%0kGCe풆%繺FD+ɒr'Ův HO+i\q!p@|4L t 2bBe')Q|ot*N%\>@"-՘LI9EfJ .ZIbWP-佽-a5>}.x8My:MߞvvP}i\=oOŗgGȋrNE>] n>lh>ZZp X|ׯ3+=WN]_jZƧt lq2앻φQȶeC;(>H\.w^wwݻ㧧bq\?n{>!Bcrhx00Se Ő 88x]Àԇ8c  א+Š3;CȈ_wW!ObJ0j)1 80p ӈ-983GiQ!QȈ|QId]pQP&M\FjȢjq4v48.r@#ih'{3%hrP*97Y, Y8Jvuh8՜0ZФS(`tD)h ,\V9rYF!T(~nebyJq:&ՙ8Ryx܊Nn(vR"lH M&)`AH g3K2h-.jXY5 Pu)YT2+x(*fRz`>4+F+u~P)6Lj0pJT&s*\ F+ (B@,5YȈe*08&Vo,q$&]AU.8HyK3İuz,+`%jM(7TZ 1XS/cP.+}DnNݔCߴSCURhQ^vDZtBqUMZ퉋Bc+R;ee;9'M$@YnP"1nE\6xUƮwd*<>դJ q!: V*FH~gtT T'ڨ*)6tT(;q T:r1 l{.|A8Qԛi˶3Hfϣrڸ@(:PWW&)Jl2,&FL\20bLH*(UO@oV<=NR 1wWcCXM ųB(Sc VǢASP38L4sYX4YDSj)lt'gԣi1FRuGMq31=zrh'ƾi@`cf@:-`;G3y˓i 'Vg I %!z0t(Oddwt_1`U rHTvlxTxuu^]1>a^JcW7<\tъ8+Rf*鸒3uLE{hEIm& 7ܲp*ДY Vi.sJi}N 5 +t8ut\+%ko˻@Nd>h0uߺ,B|ʵgZ6JfOVL{ ESA,wCnȟj]y/oLD˼BLHooi}!9Yi5؋2Z x^;BQr|i[6<5C.'dt+5Ꞹ܈obNٗGGS5R9e{o82x,`a;~1/Ocw8__ևO_wo^nw͇׿w_6ϛ׫{|񡬮{>P;=^?l?nhy}y_;HQ}xwv7t9׻j V'hWYE h=>՗úןqZw?tUc~[޺rfeb߿> nulnnoR7V|Xu=)PbׇE?񦿽vw,؟ӑ7Yȿ*U OX3:v#=ruq7fd x['TnC?@,6f#5LyL I.PHKM.Q(WQHLI)Q(/*6ݼ >%}x;#}MzC OnBqjQYjBfTyv+N=%m xAi+BbJJQjqq|ZbnfNBq~rvj[kfO\ue:x۠Di܂YY 7p*$+n_}`4@x}SMJ@ECCD,t*EݴK c:L.!roPpx LַȐ7%'gR[ +1*ƒ RJtNpۼ;׾ov=?}u'"$8#:<ϋj\Wnj-jAT>\(U3"d5t (3Z󙨌@YѯWi=ld#p4&#>^Xg$FZ{Astu؄K~D4O?j=o"IOqk("(dPvEHEq<QOI?\HO`5=;{lk G\[jV&$0$+; c:\ a{q0Ry川/&co\?Jx{8AiCHne|qjQYjQ|fA|~Q|F~qTܬ yTTK4R5''Kx-ʻ 0ED,%TYtT6+I2 Eh8yU*6VvDsKTƆ' &{a"\Dl=6cAⰐx阷-apk0iYg+- x[5W{C krJfqbRNBHFQjbJf^zs@pjQYjBJ^BQjYqjQBN~~viBq~njIfnjBfByfNBRBqN~9Wq~rvj^zjIZaJBNbnRJBUWJjDA|2О5L&qLgy:D:&l(x]i4f%N#Ol;x=M{CT ^0xj081v%Tj66SrRU<zNa-s#k CšBZ+B圲(=}542頕-PB*4ƫZZBT, %!ĺ رgeV InFdZBEyYKqVB zn1D%e5*%sM>G \` 2k.ZN+]csK2z5ٱ\>2&酁Lڑv'i1M')z[0%C'O+N6Pk >IKTq)Arژ]B,!xCD>No۰ tZ,7Ϙ=L7  xmK.newK  3T v ) %   B_ *  $  *1 H l Hbreak kv Yρ$l}x%Mr7f%&Bxԯa3#l򓟳ILff7l.7y;Tv-vl좓O~nϱJxW| ^^j,X'r lδTfϔ Mx+HL//O.EcSl5x[8q"@Nt^x{uBnbNqmF[Lr’u3Kҁ>(MK/Hɱ4A ;1%8?9X ˩(ZdQRR@Ʌ^E.y)V )`irTs3Z@AeIF~\hYFIFL7Qx"tk¼ɿXY]+ K&Nu3|2SS",]iex{?Am:FK{n)x[δi;#Sd6FET\xzuBY_]R RRT3r2":10Mo2xzu*ƉM114j`x{;K U7̯W?[~yVɫ,֏`$Ƹ1mg!m{nv541||$ w;e*WZ#qј1wOшWj1Dw/@GgьxD,Q$;:#eK:yp.28|ѷ d*յtk?u ,RIk esRiQ5APVҚ٠&4\x ;Sp71P(71b*5=8twsՉe+Vj7Q;ƸH hi#/֣}~? iH.S.=5-ZuZc_ '[j2 Mץc:J.PxMN0>A;]@9q(vlXCp'zܟ ;HWDqu+-5Fh-9ҷ"c<c(FyitBV ~qgRjٗ1-p|;~}_G܄]y4i^qkI*JIuP ^vt} =_r\5&Bö!r@̊@UISȅ^^5=mш -YpƐxK 0"|4 B]vS^VP#1"޾znaS2(("X4m0^uhCM5cm6Cţ (hr2Cڶ~ ;;.zJa}i0բ @uԱ/?U9`!nGW GQ xI 1@}Np)H2xTR@DZo+MD("PB*5 Y@ Ar7Y%!c&;4+X<ѴM縯.Ӻ}o}m}:uh,G6>BP_׬ZC>|B xA 0yE 6_٤ VJ{{fAAz")JƔq⩄\# SV}tEpP4J`_fDbudt"@5eeZ=Ə=zM Ɛ أΙέwk6큀P1Bx; 1" /K6ED+OX,^m<0 L%gCQr!%W"ZL4P%Av)H~8yF4AR,S7k;SmBW܀ڷ_XLz]woIExA b&e)E1m1-MWNƖxK 0=EBI^$DD⦂$-GL)]yw0LDL PVh Zb&.Ҙ5:q*(4qmP4!sKjB?k7;|(~q4[R*@0r׺:9.mD?gz 8r|u{׿fSy0AxA @ѽp_(cFJUb oW=@wtmgʅ8(0sag)L3viC#HI聢L&!&&tdl2*u8jo}n5圶E:}P_]׬D=5AFxK 0FyV y[q+i55R{gN[!,āK8bĒ:bj:S';9.P0*}^umஷ1Xm:NF :׬ːxdFx 0{b4?M6 lZ0Ĕۃx6 | hP(ā;8AL%#FxM 1 @}Oѽ DJڤ:0J ^W7BKXp`PlΞlzҐ}\-cc}u|f[t&*zGl8֝nFv.] 1>0F}s_"f]>Gt2hH$xK 19E3 U:ɘ0F۫QTNB9` j_Re-Sޓ"Z[MPgd@}˯662NW,AVWn2W6y|P$j&(R*#KxM 0@}N d3 UD-5R{{]yw^_E4(e牢uPL>rtjU]5!\Bl! $;4d *~ۼ<eק_\'n1Yt >@P_Z׬j{e#>) C{xK 1D9Et xN&azz;d"S 8%-*B(`FtO݇kv}|mh6z7|4:=}O\xI!"hH+MOg1s*TƬ!:(Y$FEX$(K`` X0]/$ɳWMӴn[]Ə>лu:i!yC`1jsԷvT_LFxM 0@}N1{A&߂WI2S Tڔ{|"apK83YȒ2tNųzEZi4qCtIQ4cETc^<}>.b:zxV6u[91lBmgzjW!?O_ V@܂20WhI"K sx\ xԣja QȜr&ȧ0hɊ TbdɨlD&.^tȨX's!$$.˧5{A[8oŏvp9u+Ϗ:ձ.n; 3%J)vj//.W3n|Tx2˶@⭽T|^NymxAN!B?h_ia&{xJNRr+"u-0PBR8R.R.4e(Y (I\%5DRBXxc{[ɄO7x~pk~ĭ'Xk*㚠4 F&26.LMxA 0yElt7n`[I#߫mfzS/!I,H/dED+O0I&/,v?ma$&U!&*o31PY,fZxlRir)LM \0;_yƜe+hmi^n,ociKe:@_Yst=.E(xMj1 @O}XC)]d]JK r20?ervd jfi`-ċ@ هWw[;hcrфت*͜^yۡ6o qZt_˶Hŏ޻]-gv ׷zwc(Ix1N0E{bz$4q,!DAC ㍥^m8ӗ]e"zmYr$'q%t{OKïVf^4kom@&Ouo8JM?4PGn3h2Y  ۺ1_.Mv8Vz{||RXEjì~=TxK 09 Kڀ $MIS+nfZetg%eO cb+1S婁"G2Auڲ$d hmR!ʶ)}CԗHue ˀ#?!9@!wK33i|x\ QEzL1&dbo,&ks RbF"^|9%7h>Jf: ^\2vUg)8dz] i}<%M.kt^Mw}}g IVrEw*}m]DK=|O<ٕGUBghqm}? 9\k~ xA 0E9E2ČB^eQut߃ۮjSR EHI{LŁ\c!'EK]ёƐĹ1KNP0|<9- |U{^h]d.[ؤn }BQx; 1>H/$@DY]Kk~>,s1щÒQ7,O6X6hjHbc9D M)Ԥ-5κt㺶hϞn[~ :j*jxXCD$xAj0 E>El'aUdY $qq޾^}>Y\J ]͊ ydMB,oivtSq)ELГG?9jabfurWm[}#/˺}h@'Fۿ`gڤ4'/<|ùO(_*Q&x; 1>H/H VL&n}D=V烿"Z 8D1slRG]#wZejsې3 ȅK쓉= Z)mW͏y_KpHy5GNxK 0@9ELI"x4j?JJv=YD뒤a.bb 9 \sfp2>#5YT(4,c"tk͆U\{uumчbuziڠ5!';j}[5eʱϏUD xM 0F9E2EzLZHDzvUKY5Gk%uFՕ0tf .͂$AsO@cvQ/0" `nӼ}U4ZGq@UԚu6C*xˊ1EWwaJUE6pυpbJf-R]10KIrEWg\djckCo2Zc9H](5Kk; 0nu;|Eow밥yI{CGJښGoY |= ?'.u$Jƭ!oPxKj0D>EC!Z-5 ClчWsQj䄳KNh3Ef}Bi"y`p{dI$L1J Yh5φb w)F?iWH B3ޖ\ gK\XvoKc'VbVPëB W[/ \n G_W(۹6xQJB*ys6 iuEn2qXxA ὧp_3jB):c`t3t?fC;v3?$ vH81꾵|Ek.1v&~^HhxJ0}bMi~@Dndr[i\ۍZ!@iiڐ3V9h Yf©Br2HԞc{Gm[^4k8X`5: HUDbJ(m} "41s\W֦\xy>>/ 3ZVX!.S˙a U\>=Ǧ9m ϯ0%#icߴ3pLrl3vxKj0@:\F4B6`$-C_ HzEJz>b5zbrE P T;;'{kuNOF6~ؐULO5^hnxץ@t?|7)[;/E^zChG{xTR͙NCS."E>w*jeck>a/Jqs_>|*trx4!N4$#H;3W!xNy(YY8h Nr通pQ'8\P>XB$L3ۚ+`vOx%]mkk#QSb4q1T~|6xbRϧPy K04?rJc9wgxMj0@N1H\e42RHOlz9D RBl86!FfX3hpU' f%e,$#v6xE~|Q7ICG[1{TCZ(LS{FopRr> KxA yBX5RZhuM B~_O@oɉI$")ltA( TUDsfdcUo " -r[cba>xJih3~uӅFVpc ;AYRZebvt_9QPxYN0DsD3x#!8Ҟء0\STAY2 c#,IfIKc&i>tdhEJ.Ƭ #/ td~L:! ZjŜ8YV"[.~qTykH\*:ԯ[8Ǻ<WBSpcAwtAXy· [;1rT8O,úR;|J ǎ᛿pZ'hGMca ֕xKj0нO@_6!! [3K2gnE=(a" l ]\VhU,I5zS0>yK4sŕ.C]4}VS`x{RqxT<36'5+5m"lQX t a8Tm\BL3e0:};B]đxM 0@}N}AdH2cV0*޾]=>x(E@9[21ThTb9Ua@Q֮ );HH6P @_ۡeyo}dz Fm=Ũo&_8NbCxK 0@yVPORq+y)^G.M2BR'YHHhr)"r`֭SDJ!Q9O!PW͖e?yK ۚe(zlO.9gν_ih~ |$DQxM 1 @}Oѽ MW$f{|F/ET {!j|zHX2[:4!t>1@,H"aJ6Y!DǸ]n[[~Ix:/{^B<:zg1K5^zlw^DIx1O0 iH10߂mti !Y{2"o}@59KtfN(e+6ު`ar&+5 +gFge'K.S/xu<SJ]oTg I+852ӿ`f` { a8xA=%XR)@nT+|BoBxBU͜a 2Rd O6친k#y>xOj0+f"cn#_Ǩo"fD.費p`K}v8ӃLotdiBϑȪ8MC CDgU&7L ƺ;e-\W_hriBy}B[{ءG Q5D_euV UVr`YΜǫ*p֔#B+7\kV-^:xS]7WmxOKn s [=Dޡ'M <Ҩ/t3y>&,#Ge˰cmhX9Y=!G7ܲjG[߽Vt6^WQ;}RZA3גzS>xf &9+T8g=W.wM}g D,Ԡ,7 ce xn E|,HUO+ cqNvS;4{9 EDPBઓIr&*wK%˪ؤ"z:ki@B(!mS !va]7Wx>urY<ՍptDpys'㦺us6E?5Nd?{xaVeF.}1x#(o*S ,4-; 3%f6 L1I*P`%W4p؆ Vd7ljIrU1,]"t0װqrpa4Ǖ ʹ}#wxA "I.1~bRL6ޞ|drTG.z`4:GeLLJC$ Z@:6"%V4{C?@5D؟ّOYJi*1.#o?Dx-2 Ӷ%Wќo#C$5<8yP^)ӱO\,גLO(K xM 0@}N ɤI' ʍ'3Z%x{23lRBcj2b7!T;R< G=P\J֌Z!-=:w㺶Cч_Vpzv (-U]EIЋ0X3IP.f!H&VOqK/ 9ӵ_1x,:_ٷn CE xA 0@}N 3IfWIfF-4u}y Q#1Ik4B6b*ͽfK UR3qNAE" c"W\7/zӢoe G+|]=2S ڦսQSB*xA 0@}N L4 ƕL&6"וpy{ Ɯ ("Z41Iԋl]T): bAb,:pS,x_rVSm}Jr^q֎~ Fu]SI?丷VyQF_xI 1yEd+tGf W/>[QPWm 4J+Mlc@XF&%DPOZed! v|nbv ?Uq9a旾>02]R9>di]dꢿYwH͗xQ !@=A#DtvXW?ǃVfch!R(@2a?j ;o=aT&$N|&ŏq[7u[>u6󺜵qR@ N.mWj{ހFؚxA 0yIi_nbH'm#2ŀɏɡ U G.wA#$Em&<u1H8h \wൾK\~mhY\+}1'5ݖHR|%/cDHZ|eNxAJ1yEGAL2 Nw LY{ފ9̠(nuebJP%Bz;'%YJ ZJƒmK(Y*ͽk۩?pn+#Kw{9_ǠX@َ~1"z OݑxM 0F9ERL2^%4 4Ĕ|1ˌd( s&RQ( @/]h)ADfa&Mqi^,-/ipX֫T[t <8h-_(1s^M\^rDHxK 0FyV y?@ĝmZhmۑ pq >deb vp60g0W93-X٤bcTT}H!xcuQmTYe'GgnLt.|ZɓJJckk F!XIΙxM 0@}N1{ADJ:3@kM^WUĦab%MQ\T;&ȋ<{7*ȃ!b,1S #ۼ׻KGxy:C爢w#8`h:ٔ mϺB]MtNGЖxK 09 m"^%y4z{sYYfݘ\T(ΫC@6RP&;N 1I?D%M9h6HzeШT״;H` jⴵb,o x5\,y@m/L xA @ѽp_(:u^qVHb 4oW=@wl" [L"&R!983oM1Voѹ 'r 1 _pѫ2}o+K|.}jRB}2ե!ͪdzDxAn bV0`R+0 16={쭻Z$WgLH1ɻH7 sΌ6TTta2]pmTe@}\W|5~q> >tZtm"VJ}r@@5]=RxQRxK 19Et~t#ctf+xT]r,Sp뜥&6lCz k8B'Đ.kI+~@u-|`CKeئy܃0;DXjU ezPE}iExK 09 "nz4y)]ywF"Xi,YyPܥV轗-VP(yǨƠy Q\$BBOA%np˳<C-g(tF[nK{+\Pk@ LK7BK(xMj0>@G?R -, F(1-Wr:=Ϸx0$1{zkjM~pm*-%(ZAXKr)/{.n 9NK-xO%_i\/k{xKN!&@b&PLi@:uʍ܈M\p:a^d輵 v0q yqXc€)3R-ג,SUFCxZ!ot0勯Ԩn-!HFD`\O2 G02,ʼ`{#mb4܀Q8]Z7JAɃ'?5x1n0 Ew{Ԗ%YCl  %C:u#>?s$JtiT,j IPDhe+ل|,ъJ"G,+[F-$19!a sZnؚ0~@)89׍B[LRՃb_.a;t!Z&o! G.)SbCkr p4[/Ľ2y\0z珀m3jԢ9AKD~yw.ەo%kO?vn ;Ѫ[ Ew/xj0z7E? T譐'X+ KFBUKr/affd"pA hrB5֍ZMlL?9;QI-'7gRkKƲy%t.pVB!YR {=<[syoSG[vBtҸa^ ff붥\nw؏Xѱk:A|.})huki x˿ 0=Oq Oqq >]rѢM%onZ 6h3)dؠsp򝍜r2AUJqD3y!{->̖=hmץy-Je龍˼"i4уs5C9~J&K<5pwCvxN0DUTvۭ Bhc[9'Uhofk!{rآ1^h!%GҶWJhk;6aTApN\uCC8rp֒\]'ՎRO'=G yInᜭj)~Su&8<=R 2MԐss L RBGXj3c/0u0F<4?[|_!n!RR;8Odʹ8brC"_9 5C#nEfߋe_XPxSMo0 W N8(m%n:Xt֖ INa?~T>]#6L>=18D@!"Si1̈́LT+1--ֈsdthg 9e>V<+պYKQf`u7fwN>mZ4Mg sF_[%r1O(Y)X}Fzκ?M72hk+o}M܁a ~&zFHQD\B|NG7jJNx6 *a6~hl)F-OOULBb׶o:gZRw>~UhdN]CrQ\njOr{J<9TZ(0m p_7~M$lߗxK 19EL"^dFbtQP=g9b* 28NĖQX2=/C( C.xJ.Qs.n[][~SڸǸh&TRbEmVfFxA {!u5+үqM$19 3hGٲ02Nc8]6 ȸޱ5FH\28&L荰&(xWmz^y=}ee=hoڪnw+V;.zXJ/^/4FxM 0@}N1{A2Id@īL'Z!x{]yw^P]La9Zbc9k DfkK"aEfR&<9G{ndsZn 1.%M宍EdH_N:2.jEF{H xA @ѽp_(JU&:`}<}W1jX QTiQ9"lҭ)9ĠzT`G_n純2dymw"@$ |M_PA xA 0yE 4݀_I6 VJ{{ކajc!8sbL ੒BC°pFZF8Kꦨ1^ؼ)b~{%2 E![UVjk}J'twtȇSț xA @ѽp_(Rzq`}<}WEc)Qgdr@|2t;XBPtC\\j$hu29-moDx6櫬nzG{`ڦٔmrBO xA 0@}Np)L23I@īD ^ksI1<'@$gynz'Ƣ(M$4mh9!L~Zmoe$wy'䐀١C0;6> 7&AxK 0@yWP^^>M@D. [4t:r.gpK&bF5dB42pkerGjq|D$AQ"\ymBBJ7gy)R^iδ GK:q\X` @ձ/?U%B8Px=0F{bE$XBҥ"F3ۯ 㓕Q`Z>Z.tp9iW lم@h(4TO5Oh^^ ~piiG0 _:jv&(Vnog A0u=_/O xA 0E9E2Lb"J̴QuyCLxK 19Edғt4 ;+onjAbV~yr֠\Q+LrרHc5WR0ttce$5cXǾ>pV{Rq+H$z XmeN+9PN!kS|*~KAxM 0F9E$3+H*TMSBx{·xGLRPl 6ۜ|2 l˾Cs6^2ݵE&Q_L4Fvj_qA}uFƕxK 19E4("r :=C;+UQ̒BC> ނʘc&m,b™*)[IPr%PgIݸ|79zl=Qjg>(;ZX+] *E, xM 0@}N 3$WhiKI)^W74HD0"XL *1 -C [؆]c,E U#Ϋt׺29-o$x4ײF2(X}ڧ1_Ge@ޛxKJ1EYETy8pN\@uאNKmܽ=rsCR(ϮlDHcEr':&PTCKP^pq_ek ,d_ }?uxCOm?˾zo#L/8mu:ZIoAJ;5 $R[xu[| E絯 P!xA E}ĩPJi$c}{5v0qp>v1WH~S7-]rmI%O{ jehM@jExP/Ǖ U&,MxI 1yE$L',"9oEQ՛&vy+XkFv b- JIҵ%a.@+>0H9!E.Q?צyZm\ʮ/?p{8Ng^競ݠO&;_Oo]#O#5lԜIxKj0>EC%g!*'hZ3rd07{DN*$4gNEO)A;R~ةցlf^lMNsqʊ e 1%Lp)fLIK-9QbN4/l<Vc~?u}eipѵ.7 n,딣Ór+d/+Wj>vDnP6X,?wxQj0Du/,YPBΐUl-(N_70fZU01[O8rNQ*a"7E搪{Q;II8X3{~ fD9W[J,H O\T X,:f7 n\;EZJTU/ zoK x[ 9&f1,Ғ5[Lo"  чֈs)9B-+u&׮aBG%lB"JΓїF}Nsrُk=jt"wfk]Y,YU_x-]}?ќxKn0 D: ZG'&'%`I4]txo0R4eqhz~0aBOH';V4{GyӤID*kwDq\I*Xk Dվ)$ufn-.)^ fH2lőĒr;K-]د?ڀܬ?z_7VRXQ =ʩS$gxAN0 E=Evv'F\Cݩ (8>zz F ׉dbA5zAI~*b<ܸž(y%dfg 4i g )F D >?uoWoKYzqFS 2pк: uM7u[x;=nޔKQ> ߱XxKj0D:ECm- B Z֌e>$QUa=1Pi)y֏eB fk0jI<wVzcR%Ł,o߅N4`+xNɹ8$IY[8oǴ~fݲܦr?C Zp!.S)|Syߧ:ru#]_/ ϹG|"uxNAn0 WBR?8RsS/3[3VT|OL*4B7M4N )> iFM2! q3Fbn[մ/yYy7ha 'xU7/s/wWj 2=>$| ׊ZJ[tߊ5)ZIx[ 0sGMfHRzajf6Cք6Z,u@R湂B-}cul8I"p_~\V9ͅ-}}nI<2N<@ձ?5beq׋ RKx˻ 1@>_1 5@:QwY#].>3Fm>B)O.d[61X=\;hY;eZ39Дy">͐Ƕ,C-/2a\6mA)CV; "}mͷ ;(H:xM 0@ὧȾ 8QvQX(&X-^ s7ʖlM,5 LQ2S1 22װ@SYI$+9&v Ӷuuᰤxv@cJW.FfO^?[:SxM 0@}N dLAD.xI&B(){|Z&ewd A1[412U1B1 BSFf%-xyyOD{y^OfAD6jaLYR*&"$Fo'ܓdtmoq}Iy\dyPk<vs6Xh:p|ڑ?QxK 0=EBIڤyDDFA/ɫ-GRz{]yw,IY 0XeAJ Ui)@g@;`"I8U82%ljm"[P ђ1 ߍacw~BBjߥk6%@~{>z} .RxK 0=EBy4/хt z쇘Ra&'f,|p`7Vք-PkPI!'@ %RD:"`%rBu*) zNڏ-?//Nrwsa'QP#p}gvm[s>CR{x 0@}"{ADLj }R qrZ%fP2tp]8B =d"1 :ovemdGqURJ^= ]̞ᣍ[2o9_z|<lvSL|2VŎbͱ+b2y6FxK 0=EBy5 `n&i?Ҕەp7 D$Qֳ% A֎jgcAJ5#JY>ј;_iG`De[&V`rmwqu](-8%|weFJ-Na.gT3gs?r_0PxK 0@yWP^Ӿ&. -GL)ݽ܀ܜT (meɉb!&c1c6!ZHB q-B he'aɯ)uFᗧ]Sҹg_ < GS5j<@աY?YBVs/k9HRǐxK 0@ѹȼ /#BvRyi5#pd"bD#F )m"QP[کF;Z>)3?m맰uS4{guOq%@Te'0QǾT` gw?z _fQvxM 0@}OP2i& `nLm)וp/'f!U ѲQkDrZ`4HR/xu{gVdÚA6RIa~CyVNk9͉(}6,<^h%+gTI:)}x-2gs?rMQTxK 0"$PJ uMxI^o_fRd*'`5 4R# yLT;U]qPl hњ) O֍~^ׅ㒏Swn.B} j@qa.%fOųM>RxM 0@}OPo" vFD mSҔ {|W K^zbT[hBA2阨C2IHneTkB+u@ dXR΅pg_^օN<53Zr崕J猡{t۽kGzR(xK 0"B<Pz$ j$FU/00S23Tw.Fh &MRU4F@` 4J"xdʯ2Cڶ~x] Ry/5 N I4BTRSbv|/J{Q4xK 0@9E3K$MЏԔ{s̨QZ_ZY_vW_CYx˻ 1@>_^<& ("Zd bɲZ©3$)&0MSH+^\c$fb3UIJ^PXhIĥ>Yn\v/QGn~/(P >ok?0bL9Vv9;]EExK 0E"(:$g+w_G@'ÁsK&b-ZT&GŝA5LSa)=Ct֭Fp\DZ>)vHOByiݗ6ƕaTR5c(ĞhP= xA @ѽp_(3(ҫ:`}<}W䔄FU2)$ C1TɮK $,qXcEFGC 9X6yNKy/==Mv hG{`ڦ٤m5BxK @}?(Wul1)b}]<^o"=2sPq e'kdZ^op \<ƒrY(go6nz$FSV0iLKD06+K}>{~/a\Wl=4 4؃#s?0Ǿmu+uͼ)FxM 0@}N 3q& UdR.ĵǃ7Mr a% X+˙ɗ Y\&>D E bD o`J&V/KiZֵ^[yciO&0\{1:/VtZ(.m+G xM !@ A#DW\g,ac߷MD[B3-yv18xO%Rkt"."; %y yKhdHҳ?֦{]/?vSyڠ1O@s]@Xқl>UCBxAj0 @}N}Ȏl+P^Ei$o>^of0i+yHsOF^ 4:$L+6[Č*Q8$/a'Dyg 粕oxKUk )NqnQ_|/kr78][=x{m6O~щQxKJ1}K? \dinޘb}%*,#*MAcC*6^huQ$(t]r)tr x RrqJ$цQPd׭G~2? .,1Ϣཋ(m[ė[z vyJFӱ)qߚxK 0@yWP^M@M8Z{%8p"!)s6hLr JCB4j2  @wYAmI%<;rJPގ񱶥qNq$ _p}[}MaԖMÑxM ! @ὧp_(c@)۷襁1J 90a%!-K!ˀPZ@,X!:,䣿ʴԷһstu[ȁ=Hػ5c=|DWxA 0@}N d΀W$u}T- As$-B0@1%"M0"8&x^k"𙹠'bcm6qL_s^Ȟ9gL_ٷ"]֧n6GxM 0@}N1{A xI2@JH)^xw`*~IY+g!c2E%4x3MJר8;k1TNYGbR vm-/hީ-+(V'ROmNkdmT:7%G- xK 0@9EB^e23i""H "aryF `}Ň+ wY 0XZ2SIC5`Qi^sZ?tj8wZۨA9Ec$ceԻ5rM}dtCמ xI 1@}N X U*IE=Hm<σ?63qf 5*24QI9sVXji&&,؊Ǹ.Ӻ}o}u>:58 G>Q_׬ZgDxA 0yIM6ZhSx"P0zF"l(&qIjȊٓ"QViUTJ!2]S>%Ģ)~_VӲmc~6q:e>C1lu{f<1ށ&tyvJKxA 0@}N 3I:WdR Vbz{]ywR,gI%1!i$J8N(0G?rV0aE9BD,"ylmW}/;>b0_]jLe{gDxK }<&Q(WLA oV=@w0qF491F 4( AJ`qʚZXV(Ӳ.i>ceJV9c,dRtnc_@">`'ZgM|FHWxA 0yE&f"~%IZi#ۃx6 ̴KsϒEjafJ]՛GZʽY̠,ڇ IDEs1ly:6۞~Hr0u #!_ih;"Ʀ/V5DxM 0F9ELL@WN&6ەpMD$eC9= \8xd:q)bMr%23!rL#LމWԦyDZo}hY\Qw :.Ŋr\hC!F=xA 0@}N d4 UFڔu!}>lrx=r$BɡS1 P3tMl1\lZh(̀N<{UԎc\/D{y dcc?N m;MTogExK 0@9ɷ;qF/0N&5Џz"@$Ѱ&5PRc}j4E,3܃cMtۈg#B2dEf~Z2~{#oZgf.zO"!*Hbgל8;#AْQP*n6uߧgy/ao%N9UO&L_X+{mE}YE]xM 0F9E4 xI3Si+1R]ywރ7f-G0:7cLWjv-`828D"b0yb>z(zT}/ko6/TyږF F}@t)_֕|\+ugW_,HvxA 0yMm"~eBkFW/>00LTm@9֘`z_ٗz#Jlzk*)bP0ʨVj>7f06ȏ`fK&3a(x03&LFE.֥h&&JYVzVKPlOz^6ml3D!1x{<̀uS!2%̞C2$ +<7#3B\0!*:oXݖ i\uvppi. 4ssOfXzxIxKJAD)j/YN\l?CWVĵ#t8&"nȉ=sMKDH}'=#\Ʋ s,ORjfO3h]t_-fsUB_ٜط֥аUiڌy^q< Sh xA 0@}N1{AI$ U&Z+%R]ywoP|,9Ke.)Rqգ('Py7$(PJdF Hd5 2-_fQ.>@pZ߹a/CגxA 0E9E$342M&mSx~_EȃC΁Ѕ/"9A=y5ۘ}S &Ar$,]CBcmYum-u:e>kK6>`\{b9뻴Gm/rD{xK 09E|l*/y/LI#[\xw33:d6Ā'I<2$!Ih1x)H٠Sl]BcemBoyیS/RYN<{,:NX I\H>JdJxM 1 @}Oѽ &M "^m ^WWU_5Fc*i@ 2S&,[%šMHNIB5Zu۸0_~ }*xltb?}uz׿fWD}}uDxA @ѽp_(ΨQ^et6 ۷σ?.19:`_ Nr gpd#ک:4ke" *J,ƖTz'Exm]e;y巾h^ekw 8DcW<5cg7QEܔxM ! @ὧp_(сRzc;0۷7U+)NޕR|t$}Qʠ Mn=ϐ80T!Jhpb>kkV<= OUn1 |uz׿fs셻ڦ\5ExK 1D9Eg逈W;p&2 q\zPh3Pq9Ž:.О%t,D,mJmѺ϶u巾nr`!~OQ]򗬺斷8LU}I xA {JW\]@LB09{o"&PVNx.5Pa[Ԛ6rx /NRJ(8!)(>CQieyZc[~x4N׼h Cƨwg;+۪> UҙVJx{u=:пbc]}]&Hxmj1{}ZKZ Bp .{=^:.B niUF")ICσBPIUf q1hd99D  eVvrxܯZݲVݦ{we;Y7K $ؚx<2FFoUښ\2:T=8ȗs :FW"h(5Ra!~۲<.6mO:02-=D`v: _~ هE͟ xA 0@}N ɌM@īڦHu}bt )G zN 3+yTYVni#!%,12! AP ѤW{]_s9f0=A0_kh}~| CKxK 1D9Et/xG7n)BHniYM)g`] ʥNTynR{ c FPl3DU0FiC8pv[\ݼT^gwmK]LoR[]|QQ)m5dawh[˚Οx:tS_L1xM 0@}N N~Aīd Vjz{2k;"B 2p s)!_A=}$ɛ@JRD( bq;ɡa_㶬eڽ~v\,Yk".DfsZ[}$SDƝxAj0z ee(_VmlGC轷a``nUH%,lXR+(:$ gwɻM Ȉd1 UP}*6Eo}vvZB_%wݖO{ {eH)x{R m\;{mXg^Qtl1&kA*f^]6RZUPyiL3xM 0@}N1{A82LmmJ)<70:܆mfD%%C@HHg%&lT5Y;`qs蘝%e$}N 1`wkqLk9KB|<6Y\tZ}uzfU.{.2&z}%*\#mۿ caLImxAB!C`CbW e\i^EGg~fch BVRֹx!g&hC+ lՒE|[J>/rVRڣ Ĥuεi=_ȏG\xK 09 i> UW MI+nؠISz`N$$\ fid%K0p !Sb>0Az;x 9 Mu˒Шse:A镗!\#Υw+aXAP6v]KxM 0@}N 3I*D i#5Z<olh-"0C2TN[Y+R 삱"Ms>֧_:s.4#a4|}cfE"lC} ExA Eai2z{~{7 nr%`-ZdGa#" i# 8>gצRl/m^,T׫d8}2d:Zzj*oKϢ3PDǗxAJ1E9E-AJ%NU$.>|McĒua+WJ9{d(h)"^z~1TI!Pbe5ϹAǣ Jq^%\/6YkNڛK6% v]J>6 C/DRɐxK 09E&M"^%y FJx{R!sʚ͚fHgWJ0sX$IC KJ3KPt}1=}}oOҖ3jcr1aH vmc_YqI|EmxA 0F}N I:I*2-THu=>x}612|9 qȥHC*k&\ M> g2%»?USC_~Iv1=eڒn֒>h<.  MwٺHɛxA 0E9 e@)$cj@Mqy֑0z`O0Nw+6m׭o zEYxAj0~ al JWVU+*[1}K000}SdLbfd @0;ovpn1Ni& Y1#Rԁ6HgY7pԖ/04[2]JɵjZޤ *|A#E xM 0@}N $*D M[JJhLr-%%0F`%1j+,Cs,H`\bTRϘ#;@UZwMzo}g/|5xHA_L2F}Oc_GBxM 1 @}Oѽ M'M[*mha~d ^W7vKH5S T\̪BHJ, !P -{N#BaRP$O-mmގ_ݗsۖ=M%W>5lgn۪n>8E$xK 0 D9ȿJUdKn%(a Y=yMNRhBaf%g=EB^Z!1bmn^[PVPb]mx#7v_1cHxM 0@}N t&M@īgF6x{]ywXř)2QL1ezŕC{,YO#$ $lCvb|Pq֗_[9vՀEO׬b)ziMƦ>HQxA @ѽ}FRz!ͪ፞3(zb 5I [^9m2>Nz~(cAqX4/堑ؑuWhjxnQ_jz xA 0@}N d2WLS-4u{woZ 2<ֈB5Ph3yVnAGR!r WFd#{y=i^K{i>ڮ֡2$mؔ=hAxK 0@9E$3EDWn<$j?JJv<^EKJ: P> eD^cx2 Fǘ6!{"`נ`IV/=:u㺶CO+8zn}%gy;Sڷ_ZE~~ܮOŤDxI 1yEt"~N403;((H%(\ĜjBC$s e겠wd`4xl"h }`AWyoy!}6<^BegT^ Îoo,Yd/[4/ExIj0D:Ň,CܒdIB.Ch6xj 8}I.M( f":@@D ha$%D$& 5 R]JJc8*g-)X:>r>zn(:tRq=yÝtd ebǞ!.y[?[\mt,p룅!%v\JWn9g]ZKhJ)Ly_ v\Vjfl-\`.u  q˙xA 0yv&7lZa``j "]$g34D$: –Ąјڮ Jc`jM>xx#exr )k}'NsAkI{aT!}a*u;aُ ~Q1E+ xK @}gJUt2i1 b}{v[u 1: }[5eʩ=Na>9FNxK 0 D> +JUlYnܾɦ(bx0o* E["pGZ,s%@jLAg 6I2( )..tQS /lm-Vj ޽ SUH\Bh]TPT"G!NH}FfJ禐Hrj)q6yۼ@:Le]Q1,Yvivj?bvM7A mGoxA 0yEdMn5Z)xfl|5d$)qm> 7U7}[3Q\ x IC#$i M}Ǻ6ޟݗs[PA{r9пb3㲭 BDxM 0F9ɤ2L4ЦFn<}}QKbKMFr!pbƜ1fUZsl`-Qp4 q@%c Yѫ?i ߴvNq)x 'Vk򗬈l}?ZhoL֘xAN0y 8ccxcHU(Z꺊3VG'5h9i&a"T0`N0xcɺ`=}w 'JXr-79 XVS9߮3)3s/y*VZSt`=5q?x)6c+s7ߍmHxMn0F< ۨr"mx/PfCI' z.NkV0qX.[X4iE*23F ZP,/I,jyTEy%L)OEd l7ox/R}4sy 2gsJޤUPJȍ ۤ=E< X^[ >h(⒐ea5·gJb.P!%;R')^EFXF{ֈ+ u ؾ~:q&̣3ޭVy\N"pQX;neݾtNf8Q&ߠ8 3dDN럵h5xmt3 "J6L v:s'Ex?T??&|}?t`x~r~88Tm\]î-2qHX,#Rw keYb֣`vbk|(ء |{_߼[oL8S;hg]_ v]gAhvm ކ$&xM 0@}N1{A3I& UVjz{B fԣ.pQ{(,J8r$ęD.[L)Gnu2~K{:ڮ`xCh&q[]ª7p tyvGڕxI @ ҝ, "~eHđx+ Lԋh0Fux DTmAj5꽃'JL"%Hq(F$AS&e&mY!O˶{<\sl1/h nֻc>@DѕxKj1D:Ei㛘V+|{˛ ^QmS# %Tc(J,.o4!΃H%V#5luK~$wN'Y X; _EӹMɳBӽݤ>}w :M0nʿ\4vŴRxI 1@}N UL o"I$Dھ>"..a@r6ϵkmkKsjәѢH>APǝV},׸iR_GoxKj0D:EAtK-GfU]Ճz5O5K u rbԂ۸Fu)cEgb },ٸ]eĘ&jE|'u?^6gٷo$g]V7:Q$^;XVz-}_ +Q x]J0߻_i"\$x iӔkwoUf@7 h`Ga:L+Tym`pBԚ&Ld$CAsV RA_<qD#U[ڢ\ y2QE+y }k\ 8  ѝt[/u\?ʞTykpByiBu{n?Cwxk[-ö(s }ej~~xAj0z A+ɒ\J)qe- e #Bf.1X7eJd1`N1) zΦg-%F~9&̜U[pm}U*N~n߀' :jv_E_⺌˩J4?U/Q xK 0"|겛B^ZAĈxf`J&b=YOW mTDEQ>TX< od:"h`6ܒRcZ>)0m'uS4{g +b'aǾTfسm=Qrx˻ 0=Oq6Ar=m@D(nEDJB/Foß&"0v"QdT:#jy1HC=DCI(`APJB#D^7 {8eiZ޵Ə asٷmJbõSy!L˒xj0P_ŏ"1rΜ`Cq-A' %``\cR>so1%a)y-s)VتڡNq 'к@_;BsZhD).&o!B9NUUܚQ yqK*4g*Nl^.4G)EZHxj0TK{595ȲQ}_mrQ4eMP9q}B sP;΅}Hi 50)ȵoP_:K[]|\VYA\pGk9ҋekӮKWl EF&;^,4?N'6mNxAj0 D>vQȱۥz)i ^axTAxf\D$M)r`nZ:bpDF ;:)NU= ,mͼWd)' jֻkl|43UE %Go v^u++y./Xb xK 0}N 1 U&/-4[%ZN'V,cSD.C"B`$'f崔$fH>^Ǵ2׼6d(":oƨaV_QAxj!D~EA=I{%xQ! )ٙ$o1'˒JIyDZ"GJE/A#' XX6v";ܞؽ*73$(Q9%9*3fE֓ةq0EYeH6 C&gmU\y]~ e>7Z)Z zDqmا Gg5qSݹ<ϕZ=5]GT@xAj0zCv-6J"KYFQ:<0a`FWV"kFN BL)3JŮK=b,J).mOteu='Hػ5_ˣtD5xM 0F9EdiWd4?jvۼkζ QYFКjk7"xH.+P л>0o[dzG*ÙjOtsc5u6Z>vug~/ FxM 0@}N1{A&ӤɀWT iD@'$ M8Jl9g0NbtrjhvЄ6dQ H"eؚIF< ( ҫ.4t/a~SY6^{#.s׬\aԎ tezC})KxK 09 灈G iE4Rz{8$dэ>Jga*`c?Ƭ$b$ظtJG\V0gh!֎XʔC"~6HmSw1}NuBAydRvzbfھ ׾B-pߏF|JKxK 0@9ELi> Uf2 FJx{T@P{k׬J}뗴G] ] THxM 0@}N1{L2+xIfjo+M#Q8YW IEj֙;7];`fSRrA8 yT,;~zͫKΗP[b@ph̽_U;u]>sh.M'xK @u 3Q^eԱ#XܾY=<^D40P) q I4pjM榥dK|r!DKRı!kt}s>?ױKt׀n@N;XqgmsEx; 1@" f21 bl<$3хHޭ<ת&̹bv!xE1')LNUcdQR6H,dB 8gUa^~u~y Ņp&ޮ<ǃ*J*ޡ3 E(/!2,gԓVƆ @tB}∊^:˶ՙ?Cox4h>@PjkWJ}媾SBߒxQ !@=Q:,DtuvcWxF-8,"`-grD YL]CgɅZQY)BTzumkO^oKjE4=bt1Yֽqaq`DxK !D} !*0&}&ȢAUN`u6 !Yt!EF`;voAKm !$A23psb 2;<_[@m_RK1Lp/KxA @ѽp_(*N@Bo߮z>~o"q8Ar0H#Drڸ5 E<%aB2HiΌ⣿ji9ot,!cWܻ5cqEeQGxA 0E9E$әN "^%L46"[7T~ܡa7bugEV"Ęs"rxsD)XSf s.Zxc {-}yp%u~e:R&!WVk|Y] n.5|JxK!iUhh8 `ƹ^Ro"rS1` 3ÂF!WN(!r6֪D'd=}mk7[9vB TxvV礿bV7j}|d_yH xA 0@}N W$ H>~|PP4%,$%5%qn^82"h)(F8d Nl>O˾Gy/Yt|4?έwkvj{CdxM 0@}N $m@īL&GR]ywnZF("psD؁tYZHHN(TY-5 $w S$FJ&Α!Qt=w}-q9a.{sa2ݭw'B{: kavZjFϒxK 0 >bɎ@)?rȧW=@w0^" BI H\0Qڌ)l 2%XF))pi<-CKh: p^k:&Umnݠ K= 4?JLxK 09$/ߢWyI^lm$ooW0 LoPrF%O:-v䠘 Ebċ@CePVD& Cv!YD6Hsi4_R]2^{D gG]Y'6<{[ %/J xK 0@9L&5D M#!Zz{not9P|.g"Ř|r$EJVBu@'dyr%hm8gV0{:mۼ?e?jsjA${pBZ1Yu#P)5*t ԩJ xK 0@9E2(W'c+Ho_xm笑1j IP4cL gsY%LݑBώʴ80dz8]ew=C`N[{]SCxA 0}N1{A&if@[NgR MF?k5%cѤ(!Q0iX`{IZx4 >X17x:UR%a &k Q+.`cb^La.Cfg0.kU| g&1",=2u㺶CO:v4GYD@lok-brE^_p&D|xK 0@9EL&i> -\O[hM{`$α*zmmߧg M媍38DueժGW-~m/)HxMj0EV"=CYJ 2ƻoGY@fj*\);![ i Aus2}.۔3fV*N\#DǣuvZN}I#F(^"_y 5Kk_FK MxAn0 ~n9)Dh (>"@l /z[ ff"J2(AcG ,S #λB2$(Z: ZeB__C;HR ""_}v'W}~]xʶ9@2Et/̽ۿ*;}>k=Lg8yS~Z\!xMn0 =V@ UU{'qg/Xtݭ=FnV뭘g$X$v݈4~csǍ@7;%#ᤌ@Cg 0 4)iM׼A9ytk [DZ)$gzxT54zfGG"ż?#o ΂/aǣ%bTRWoVXAA:dLFT_ŵ+{Nx>'xɩH2rohxK 0}N 3Q*̤-!5x{]yw?mW| 2K{FϪbWy]fEJ{133*>(lmF֟ x; 1>H/+$3 Cv?}IdHx&NR\IDyk '$S 6gDnuo}ۜtu>k㍱&Ę@}un_mDxI 1@}N U U2j nb:IN)A}>c[./vᄊs\3$P^ͬ{ukoOUTGxK 0@9E 3ɤɀWgF )ޮ<㽾X-z \4 &H<*nsTA['Jc)+s-&}Ymmc?$wyNu/ !{{`v;_×`lD'xK 0@9E 3O*dF )ޮ<㽾XOF M8#eC){\.ɫ. {~Q}"g C;$DKH.[cH8-G#25yBXھ*/8ى.Z9&dD5Ғ{+iP[ZM - P9@}ps۶zZX!xA 0E9$N "­gڦHfxG_kN!-5]/=!-.:i$^-z"{)5qu~XdDG> Dsy];Ij&|En xA 0@}N 4̀BhR"ەpy*bz$k3>wyUjءpx)3910 @#jeeZ>Ə=rSe֑!D\[fmB xK 0@93I@īLVJz{ol"(p8aņx#W >I5'o (.;,VX-K΁)LfůX7m)۽syW6F{' 갽!Ū7tBݛ xI 0 ~"Y@ d+!K .oN}@o0m7hJ&FȨRbMDrt/mm!hZEE/!ZhS8yBP8'3ګ6Mu%퇎ϙ|B"@0p\8ϲԭYي HRxK 1 }Oѽ IIStוp]Ė)F@`ɖCKUYn23u },rl>d-YX'nvF8v(yEDKLM"KenK&1>r 7~voewxbU0c,I1c8u_C6e߬߯V^7M xA 0yE&4lдRRW/>0MFFёb CZ0Uʊ@̓7]SNm5 U+ef>Gfe^cZ^~Hvo"CxJd}L,'.$^} hǑK<;!/7H#ZQ\tͽƢ./ng.3ho y>%scx\oTxA 0yE lҀ_$-Vj{{ކaQ V 1cQ"WjL5%f[͍ +9Tri>(Ujy2-6>ǞzeNe/<`npv{׿f/DHxM 0@}N d:WI2){|ڮjs%T\$zH'Xrfav]P K}2C5L^.RjmesZmoD4ײ-w 12ۋΙ.Sklyie>Fxj!>EC v%!쫴t\\3C>rϭLNi/=Y9bThs؄6; &(^JQL֘0EcQYCQ kj?oxZ]oJ}M}jfqKppYm+s?`ap{nP&O+J[DŽc-|\|tAXxAj0E: edY*3w"%Msfdx hȪH VyLhdv9P;A9$HDPI F~mz8\6)gn7Ѳw >82Jx+6jg_KT*vmm9PxKj0N1eٴ\EQc ܾ]|n1yER堅0r"fbиx2cI+.XSġzJ3I!q{y_N|zmM^HE3m5;{{pRFWxA 0@}N1RL&MfPīMR m"mx{>^[S 4N8oRCL`g+4H:c8# z;uZw{Tn1.a/C]uGhYkuej-38'ئZNE}FxA "tے ֋63&I=K.e&B!Glu=F," !CHƠcssm:/u6ܧ5zxOQһ5NzeϲMQ[WMGwxAj0E:@2R4DJU(HVeLn_gtUF=!'}aog2R",z*vg'&X?13hN\sVG_!~eI/K84>#me J{ViGem=rݛ\RkxAj0 @ѽO}ae9 sR@wV=@wf"hLBRcĜ\'̕4iǀ@%Q6ϕt.^F+Oh[C/^~9r̈:kvE[_. XF%xM 0F9E tiQĝLF[菤)[7{|dUTzM̱J> :fq&gmkLT"rl+ 1`TL a޶~Jo{!s~8<^C70:_gs,XtkI6EQk>3 JvxI 0 ~bR@)eloN}@o]"H Cj(y !i'A[] ^}H#Dm% %ɉM<<ǥ|CW?qu~#w 87+֚cWlĪ6_EГx !@{ FY"z5ZzpY1A!'Ld('ȓh gMѐ K,K4E[ʎcbpb4!(C{G^~voU*Tp0<muN Y>GݦSDxA0 E>`Acfҫ(2 4II\Bo߬z}oBAzևHT;>GV/e${fK?W.J)ǀG椹vLu1-o-|y )E`At'_{&+#7HJxKj1:E7@7Z=4LdoY=(xc1 q"Z'DMeW䢝Ii6c6!f+򔉜 1b&GE)nosk+8OCK+h$c> Dӥ!O궖4.ϯR` 4먽"qO! x= 1@>H/d3;I@xIfV#KdZy6C +0H8L*̓Wucɜb!ȅ'ψ)g/-mu=m:2C:`: eCvxM 0F9E$4ōk=$j?RSەp:O&enMVRKa46Cؠz,cL$!0zD督6&%#'h>r?X>M2]pX6Dk6:hV:t_Rzr22vHJGAxA 0yE(&MPįl-VHxf"%" Y&5`b`#/258XjE!'g+ Sr@"XTl|mKHzy<^4K# ƨXq)ztX{ΟUGxKj0нO1BJUFĖ-'$ow39S*ĠT0z?hh,s,ÝvkJ1$8́8NZ&lٳ~ve{>k|lyR]._fi|`Bt?@ƕUKɒxM 0@}N iI@DѕOL3菔H: gE/((EsIsۡeLѰqmr6G>͚iYؽw!~ӰB0z@}u(f%t\(D x; 1>H/䱓Dl D%z{<DPqx!`SC)DيA7@5ԃ6Yȉ1!؀%Xhu],dgi>m6yxH)zs]Um/=^Ǩ>CCx; 1>^c' baɌ!kTV烿-̐ z_lD%/Z< m--<5޳[mKGb ]c-%Mң]0^u*oҙyLuXy܂vBtVW5T  ug>:FJ xM 0@}N1{At"^ehiFko+M= c0f)29՝VY:Ml49 :xǜ5H'=meNrTcj C0nFWk]*@.<HxKj0D: @KB.C[3ye>"9@MQ"A,'Q5MO^m6tP Ts,*р= ] $gġ'Ǹ]S[_qYpn/.K6Gl1Ly Y}Jގt!O}]~֊PYc'ڊ, ex]j0 } C _  >(C&$O\Ȗ,F\'6dg)8!]ĖSb$n]He2Vl ˀNXɍ3)tY}^OKyy)[} "P?4F Z_e!"z-nu'HNVqȅ^+cC)<Ӫw*4c cfMx340031QK,L/JeȑN|-0NĈf[ J2*ssOxfAYw[ UpdݳWtƿ>'!L_HSh^n C>M0UVmEL:P>ή~ \3ÊMYxX반u_G?O7<͞XM9~^vt WG_WuӖuD^?U(_***.aدewXI%4Ɍ;RRK &@#iZCϱ-ԘԒJgt6_˵DC!) ̞k\/Vkjb'JyUVc|iIfN1C<-V곬5&]^= oxTn0|+V}IPU ^v68IGP8;kaI 9v. aYm:jUL Q)HF4qs^  j]-f-\1#)BJD3WX9 mF!1Z0e6| g5gPSԆG °X.oΈ1X) {/Gֻ&ҩaU^U!$[e7[o^jX //by8f.*AWIo( @W?yIT1ԿFJYK8p0ٷ7yg-S4YћC!28?9xrc`I*P\?+5/;3X8 aHMZX\bjԻsrب }/mXF]R` `yYLv36RY*19HĆ&\Y>"K)]%Fv^$"&Av( Z:<؄Z$M4qJ 㙁|"Ҏ 9*MKQvIr ": AguKG 2O{?UNTF,|PJO49z2oB?6+HI$\*^ұ qw}{ws-~]SW j.T;=rnk3' M#Z%;1Ie['dWtbtVTc_^>[i7X{!pKUAUB֌۝N>hxΔcX/cO+Mzw P  8s+lv[z!S@me#Ic$핐%I ZY/^Ao i ! RcWҴ$arxùxg,я71ɪG3/eFGqB_RWY*;w!#J N,`E+;U<׍+VN$ٹe \hЄvGI%/i;aA:d AFu`R+'3=6L\Z]^&Qy|x[<'$ְ[ )GZoUkM[p4IY3htqw3r!8#A^ ?Pv;Q|lpcl(?jkZ Q9|RoRyH\1=qtLH^cBRs g' NPn*-pc4 (KҘp#-1bZYdąn`x8[ dV9 X[BA[/eΰœⓋW#$Sc Wh7; $AP|#:Tp~*܊܅r8kiՃ&Wbi|66|y6yaX唃H!K4LouNՓ/ı0HVRT)h:Fj'2㤓 ND%"Ѩ'Ju"9S6/'\Q6 pHd6 ~J"KQMm7n;h#ZLjDe}5ie^f^˰H5腍l(uD>[_`FWPhd!R+K:"7@)AZV"r75wTXBJ v?V>f+kF/2DAfmprtTiǖȏx4`YC ʾo48U+lv8" ɭquNZMY[@(j_`)_DVOˎq-$obn.5?B c::e[VAn%L T"ƹd0)Y"(Ifb<2Aŗ5sgJ2%S/I 6}ԔAddITgu>Iy=@ ]'MTũezٔgTe Y V/s0#Pwa_fM[8"5P":LflȪ[w̤ս$ Gg~ UjlmDL;1 `D*虘80O[5Q*Ұ +s UƑF:ag|흹2b1]hSY<<ъӹJ$ΦyI۪IgD1&cةu|K͎ ^5@7:aRcK 88l]%;rmӚyEjf"Vׯ̀ ՗ vKR͍P_ad.1)X1D[(>C#S 7Ī|t{?3]B΁)wv#jL_5lqn N}:CC6ժFo; tr)~4jVQ+bӁړlȦ7_ ΔԟJ;jҶ]1 7yc`HKa>]Rušq?ˉs/q?[r=?,u07bu^ZX~_h~K'ф+U6&MDsRpM."{ `z\[z?]߽\|B~u^N~Y_so@6t@73NOB˝1<I䲝fjExPGʮT|ǠwՒ4c6Awa6Boy̗ZcsmhJЮ `ՙѹ-!Q ъ)Gkm&CW*QӹF:-l>ƌ6F]8WWXWϽG/no?ߠ iZz/o>%.(kiBB>F:Zr $;o)D_gh2!Nz..L@A.uԦ: @;vv7"zVp6/i?' (Nr@!c嶋hfqZݨ ݐM.r4F a|_PM<½kϤ!o9e/UBzG>HgO*.("#\޽{wG♪Jז><~nFJUuTh⸫,֧o(|*8|V hɭ#W(H#VЖvNski)yQؘ0dQx;==Qi2v)ݢ*]uEp$3;Red{(x҂ުU)UXzG| ^iOY5*5M>; h4hMZ d6UAzh9OPH|*i6TRxA[ЪBa!/acj^ ._Z6NT6$ 7e8yj7{k#.%j.m-{'SQZ!wF+G/ qno{#ԂчЋ9 NO'jvwT.$ĭ |HXQp[iR>qT^P?~cNAuE`ʹNj6'&_8zeH&ȿyta}Dԣ6o۟^{ Q*'=I@ķ kݲf\ 5$FA4c1Lx&)=!7ɎϦXٌjI iE99űz\\n%EV\ ! j . ťE%@"ļԼOJ< ?<(;X!1/E!(1954GhjI" +S8/$3?O3@!)'19;'d"EFb]#S3䴤ɧ]Ř&0N>Ȗ%z9t33RK2R7k&g$pP{N \`M)ź&N.Nn檖&nN&f\aSxxVQo6~8d@Ե鋷npt5A4SMKĚ"9"oߑ9mѦâx;u:8!ew9-Nh >h, 7S/a͜(%o;PqitUgsLJq@ƇrgȿC9_ U|3"d?OKAKtҊa4I2ϳPAZKgpPa0 qXA_*ۜPY ТqD3CkӅXBi6aimҥYvA-&[*c? v[6 䒳2L"+-9 /Ty N},'pފU㏂g 0Lޓq^ivJnW܌Ƴ"Lb:%g87HPq,75 7 cgx."GTل^F0¹X=P)jK}jESFC:pw}[`gJ{7 i^Xl`H!"2C8aBS5D%֥9~I?I.V(FuJpYDtFۣ%2$(gtq Bw aUe#x[Ph."E~Qh/ܚWz#ڗx|yG6u[ӳTX TsVަXmF?0璪x340031Q,+dc;@q;^;>seŕy)y eG̼c5nà <˽ʒss@n{[ȥ>?9/?b~21ʂ|Xם"s{ʤI }PSRSM3{eY6i 2]*JRE8;wVόou0Uey%9 ug:㞰OZuN;TgnjRyO^m;}iY9Eɉ u[q )ܽrE|PSRRXV¯g-k7ƻs+,͏)I.(JI)(r_ X?p:{ATYi BYks O=Ug_I]͛ ,x{*231Q(Hٻ+'C& O>1H1TMIrAQjNb%HEZ7I\YpJDt-T]i Bݴ,6+3?#ec6RL/x9e%I_: {:vy5"]ɦ6NHx2eC* "f'mP9f$f~sNɕN ,xD8ϖSFoeq#u100644 shell.py( ojx< LSNRx2eRF%e ?î4iCύ;z+x8:%温o[tۡ5$?N<Xױ|b(3";re*xeAk@S҂"^ғT4`9 XI#y@wVviJuX17ߛYK'Қtj|2:ZGk{vԟ677r|f0L=/jP{la-:BfU#M ?y26-j3/Іa(䡣_ 1Ha&>-m& <_,ԬHAJݽՁ8|'f{<'jM"CF'z@ᯉDϠ4A`ޡܱ #&Mdzr(.-yvTOϰIҰJ|ʼ)?~?);J`/c/ Y >QI|. $1b@awЙ PGz޼,|XZ DQUM<9`$hucB7H< /(l,l GuxZwԕaY5v9ͱ4h키Ji3GNӲfwsg/讳; n/%~uH8K|v8֗y'i8_9G82l(x߆Se"u򅠳ğ⏞GfaQm=5|(i 3KA~*ڭeGSA0_H1M?+Or?d{|'tRakn6ۗq:.)YC(,-EQ*S:y ?>S-y*0Ǭ& siQ hYuK[ANgW4j_ήW4p5xt.?ˋw;O}P2dE`ӕ`YB9Y",®hH#CHWa̠^@p~TEiZ4^: iN$@Sl EIF9DSk/-{ KDZOO?||Z9nZs/N3븒gxH^0K(tAm.R3Mr17z<%yv)_RJRL cOqbK M"BQ!KѩUBKDJ @<+4DEy3., hQyA K7{Jvi+8lK aT$-v8L8op ;t% iOТO\j~u:J&4\aA/JM 9SZ "X唒h%y~`k@DNHXBHW|SyOfdk]"th5?7aPzE{ADCjy'YU(6د\IӽK*88;WCD&߶#>nap[5ʢ2G7[FiNTdi$R N.,!!|Ǯz%RvbBUƈ7-$pw9J?Lc,E:[ qPbˬUʜ!}**TPW\T;jR8.`Rxȱc$lST"C4^Ji~723}Bcuu S.]a <}hb \흫C*vmmn<0kP%nAk4 r]|҃KfYx#(uv>EK#1:]U9l/M0j4L\[Ҁ';+wTg}soݏ;!Fȇ˫kO?{셭PҎ-ԵMK؆A&+Ҭ*@erH̴ ,&i&ENs0b)n*w-Ww҄eG$:S.CQ4B8':Mg(2P0yGQT|=0zETO9jRW1 _Z‰uD8GϦZ.i{rہ6䤜 }ıqŒLCdǔ-pҥPvK{ĬmAjb'lzLdpJ}Xu\%}FD~w@1_ڼ]muGCĮxKĴ^q/D)*pw^7}SV'[PG:/u^"dSolphn̓⫩ Ҙo?oPЮWR\DRr,j`a'fT(%ԣw"xILs]c}{~jb:‰96t, KO}Fayf&3KUt N謄ĝ U>#~FNP] +X#U02[0ZDzM>nIy /*FSˌبlͮZX v\%6XZݚZ<=qC-ה^aof`TԮ(KV]^m&7 iqYm_eyTZE \X,=".VvE{3Ss_pСs 76wfM6eukL6NV W(/u8&^^M,jSR.ÜrPḛ{0\i*'nIskYqQ@^Luk8 KGn>hk+I3W-"Q`"X= NUǧq?dZ^yu{pRQ'zPpdUrbdQwhd.'E5>pnaAQX nla*/4G7J##{` ,J~s+컁r>Zx*Rj?An@J$&FQzcwyhiˋ䃶T`įus151p3p"q<_ `1~V?#H48Mzn5Th !G;B?p?ГǙ҈z`c-BH$/,p/ðÀU|ŵ .ɢN^|.WQRf7곥oL0yTVTT/aRt.?M=,ם\8}|u,uv#۱u߫*Z WŕM"1d{8!˟3V|^jxzu$ARL E 9ES* J2rSK2ST7G G x340031Q,+dp.M 羮8E!DY~Aj^qqHy#µ_ Р2dS*yFOrzM8?%4h]ۿG_nYKpĤT=/kƞTqG{ҒLVg )T_ԚR1HB}WԿxWmo6_qsH\9IiF]DdR#8#i[HsOT!wPB : U/,yV+![9P˂k Vk#腥^7X mTjф00%~ʂeU &s+aM0go2!C dz0l8\V)sJχ4ëxrv*dɍTk`Ɠ)FY( l9YE񮴰B`̮hj1m MtsSbzMz|2 rzzt38p JS y„|W@)x.f"Ǽfssuǵtz) `xb),4FK(i,ն<(-Q%&sdwҢ̭bT̠/FQT9EQgHYdjיdK?s` LAvv]qVa16 _LEC 0`k+*aQaY+7>F[*zK=0+杈gZ?,D_%}&2RĂt]/;ρ9 FU]|Iz*V?) U̹AfQKjdz49m6n&8c9w[{y7>}vc_P*;וUiL.?.\>ơ̆>1J{u.8C6v=/Clk1v T3r7# ňԊlʲسhugCxۯuZ& xXmo6_qMPH'q_eˇ,MQcERi+JlQoQ,o' $>w|?;-rysȖj*R9k-%L _AłѲ\|C,"5ep̹Ha?OQgXfuA*9C<' c2_ƣG>>WW1mtmc&5$ɵYԇ1ӎfu!PAL)ͩRkTk(* *^f; JUUkjAYFg~NHCwrGh0sOt~B<$Tԇ   P}אu{]/ɰE]'L(MצE' uv!"^ΒoLJl Fh5OBXujНꢕVfeSs []A]2\wv[dZ!nn'eM;U|}{[C {V$2 g eV Eأrkjto_z.7L(z6M3vö`[ݳᆽJ4уĆ*ʣFjlfmBehMzڦyHV6F~b[nlF tۦXsXMds ~pY@u;`1E-$ hྤi_hoݟӤ`ߜF{Xbzrg6/֠Eԑ^MNM!<aATR'aA 9iPa/^/OE``8` 8?4O$s3y%5CW]G F.d8{YAv@rƢ|eSSy;]{mϛǂG;2p-wl-?5,w)$;6f>*av7|bN屏)v\2Ζf y M>:H[_(O qf(?GxWmo6_1r+8tQEAP d۽dyEA/q}>CXv5'8E<3pfHE]+]CUal+21]]yKq{kWܛ~.:ak#s1PY9yU'2+v$ XDšC9JsԀ ?=tG | L ?fsE$KA/yёS8WgQc]9M(#Ygڃ0ThNa&_G(D:C^)vi_TQŦ$56I}xErce}:%8e0{nhGu>5ڜ8ѲITҶne&@M hsϓQJ>[AAO&X;'}d gɆyUDj214><'o ]_jVm =H?fKY:aw1{>kx3e{Q^UnvN^}9f ~Fh7.#= Vd1>QkG R\`-ḤHp\EOBQEiSo .jSi?s6[ø>޸57]=//!NHn|ӸQ"aX8`%xE90xuRAk@ZV**]Kv!fAZm`jR_[W\ Ψpu姆@@햱mf >-$):WZWſk%6W6W/rkxuJ0I=X\P=D%mmۄ$={ɜ?oxʅVAlQʴ&Ң-b̉$&`eNQ)$a6INU%(XV6?72PЌsY$#̂ף86@M:d ̅u#Ty) ݵYkV 7fBBH"%5OOO!\RhJBJ^Yk?y8nkWJ/m8VډxYko_12ߏfS.!Pms#Zc{Ϲ3m~h"9s;skWU}^os?}oϏz<m-}ļV/z\ϜZL&m3?r 7ŪkR rfVu/uM1d}ىrWdb `}od2Y.V4utӛdo=ÿ*rovf+>}[9ސMjqcO &+?z_')ɦ5we>:Ym}_6L.lBށbSݕ]osR%C-a6Ou atS5~~ SU7d]9ۖKnsn|/OGɋNR ^njSOg5fLUggjM[JպՆc&i BfX'z>fd:]TlM9pHKhu"pnH)&ӹ*Å< sx"XɅ2?UOb܊ 1>DJs]_C TGx>ŰAF sȏ`u_!rȎ$7@&C)A@ ƃELy 1"+F/ȋa<Dڃ2amh#Bux(.nD hOFqLA4 GГB9pD(7.Z84?Q!L_b Vgw!~.'C 4lK9l˰NCKF!( -(vX V1| MHr: =Jý&1u݃QO>˺$~RTJCvP'n‚$a{\.?h,cCU曊Xs)j둷N, , z ?DBJ3/~2j*62l&" !7t2$&/T?wmz2Kp04"bhf4>vIhQI`HuT DbŌD>2 !,P(lv+,,"}ZDFw\#hmߥej,RR1wDZ#ʳi(pIŭP[T#e<<#P)" 11bG7vBO2J,*$Ǯ'DEbAbˆ eEqFyXJ$3H(b j0=xJajܨ [r$/d)M CY6uy8 mO+);2Ց?Ǣ\ݾI-gz RMr۰( kpĬS';rV=2uC89R0sAgk"FpxH<9'u<;j9|h,eY#e~ߢlb:KIgv4LTh6c|}tܛNP:xaͺQģ09^"1þېKcllؠrnQ @W/tU\Nթ/| p?< xXoJb^Rڻ'=Ez'p#iZݝװcv%H }U|8?/x⠶yֻw?(yR%~%Jyq|U0q/~ϳл@%;.%3L6"-Hc'mCa yJ!D"CB)󈇈q;PƄL@měV0E<ևq@0B(-8;ntD8.%AZÈ%ʹsENZs_ H }y ,%㣅XeB%滮7lJJZCE($)&,䗼 4\ߘvt+rQSl6LSX39TͩX{%xB ʈ[|:xx68>,=3gf ֽ9" 5L_ᓳY`Yz!s;6Rt~?s7p 7sZslloz+g_-v^L`9gz?xo 3^8kw"^ &GV]~nF╍Mv ]'ΝR.␇X6IM]3Swxh^?8ms| ˵ޑXq5 J. o70'sDIrfz]RVwT Xq2O=V3u7.u/g 2ӛ~/WXMQz'/yh~fޜM<)cUXq(k|qH}Nu]d|ȵ>/ GQ׋YbWElox@:<Ϊ#sQ\>"䒁20pd/[aē A yFڠ9}LPp IƔc =%0$^FԈ٠?pPf$ihvl$UՍ\*a\@K ^C\VӹkTUtT4TI.v8bqT/m!Tn8J,S 7M@F,zLX*'R5Sˋ;`~Zϋ+ &ٷOdE'gsvDUT35D)@7|r[~IbZ'h*蒡* Y%UduiѸA190vh4cӧJ^LBwE4N(-asGԈY>N2'NqQ35,>4s7`|4p](6e.qQ]s\vijIʨtTf-e+=i=)w"Юw-SC}l+!WWv*8hA9'kSWx4Fz]⽹e)jzkbw.G/gW8_QoxeSn@Ԃ(8 JRi(p)!""P*5BU'Jvv]7OzB|߀&M>؞7o~ɗ lk3" l4xʯ:ϥG #TcTn2"$ROHVj&<`yZ^{#Pp-PAfKH }9N,B@*ФR!nP3ҀPt `a•3ply%ۆd= @3tw22JZ <$qÄ"cAcN{9I'UR.\%֑eˀ1+&,.VݭA{}.vku;]݃Λ~{[hu}b9xf7,tkB_F`$eĝ$ BO7i(e~1r(pRu.WϗVb|kh-/va7/ows ō{7Ͽ.rqc,c^ C\۬>L=^V!tJ&&/ v4噜0-n-޳cv^ &qrL `xq ~z!Â!pea2Y ntmG{pCCy*.{rS>BwQ#,܌,xhفx3f|G@&p7ޘH6ѻ,ahغf|?dJ9ܙD$c|FL3{Kc]ڕke0^Z+Jr~OaRbQf.ՠ,P۵AZ?J%ܘ)j[phnz[qvyq q"p "Ȩ;ep? )Yzmɘk^g;@d!Z}vdX|j陱Dj3eQ{ 1QO%XRq:ꉅ~UzwvE II-n jGLaFEc |QKhzSWR %ShسL:ė>67~(0ဧ?m}[#- WД#] D6HD;/45sܠA}5K][ 7N5/#ڠJ5AHۈO2b=R<TEuӰR-?P4kLG,*4q4thNO:3w\0SK{SFG%; n@t6Aw(&bㅁ7'A[Qɣ]$k%r4DS JOJK% 'N/7cƶ[5W zKȃ'oyltCAԳ?y]"zeNGEuDusX{P̄4<8r$5Չ9Hf \&ञMbs ^j~D#IJo.\!6SbsKs*$O/|9!rbPh?GЦaˮ[R{5UԱ4z Z7ZYh7U!I|yf!Q'YC^[<4g?PLiy*v> ֝UB$BgC[:Z6j]l.5ypߠ45UË6ӎ<7]ok'9#uy7װ\Qh_My_,o8-|UxٞGntjL>X wmCR em=aV. ǡS"ny zO>W=wlseSĶ2q~9mz6 _x/hZ{~6 MV{ê +ET/?./_EtDNpu9ʫΓF'jʭmO> ie(OU)CjҀQbnfe"+%LvD́0K yMBLm!zqBq?INԭŵ1axeRMAE1ATV$LxY\$.{NOLLq6 ]'x?‹|0z꽪j~{j0PR$TY -kq)8J,dlg_i{F( = MGKggT iTIB*C!6٫xp5LHb/<`v=ūN,KmzJ'lG4`0\a,odƀO )| CfJPXjV9åVȤFŶdI%j1_uG +PC: lU0};MIʟL40`<:xD5 F-@BRAbAnxCΑ)XpJ&K@P΅q 5/L20Ik=*ms%kV9E44mZW+uZy~Tn~V}(1xV}/-桴KuzдO{/3.<ާZX_EbtOi”"Tp @Aʄn$\{s0G= P"rE0V)hJ&K2[LGVVerw7f%Yܑwl5[aL?G ذL $G3'KfI,@*c!yznوG&SPdLBg*/" 8R~RR Lъ~R ,Pj!sBJ$`=0#GaO4t CWѨg٘edeJvf}Ǘv9/ގ@=#b;nhYcG=2v PπP9JƮE @q@_@0 qOB0A0a;JaZ#91Qd婋kQđ#Dĺ%@5arP8 ]# E8Wb]I?TuɿFA߽_5b 3_4Hah"ͥH4nÇa&aOU,iNTLKj7ݬwtr]r゙r7[M|p#`&~i{k/ɨ _N\H!ztͶB).됪errPAF0[Gt\W(We5]}:l0y],a'Uo.InÕ>,=V\-s05_Ooi҈%MowtX.SP2mG gyOM>5'_QydWkZw}2ü6U*qUM {20Ë)_>nFZ#f/mc^ZUe%@sҟˀJBB_ t)9%EbLR/ֺΰ_Y@Lw[WŵŪ>N8V#ڨ'tjt9M~Ǩ)=l 2a:F䳳[)ydT hԪ7oU?&iFS!{p6{p^${F"1)\ŕDFX}$I?Ep3I \I\ $/D'Ka?>S#е\";^I(A5z֯VX#*YZX߾f\aejA\m)RdIa?(|AZx?@Eg w+T𬻸31\^ś9ŅP>X=3~扒VmxTkAi&M4Z@R*J-Ђ Ruw]Yv6-EJz/;)ыc )ĝn>V9Ǽy~|y=<8dku &BKh#y 56Iæock/^_.^[(P.hES֝ȇ75jc އ0:[Hr7K: ٮIPE}˳X4On$ &{BŲ]&u92޺4ro^"[rXu"1W=CD[Q4Y%]%5ʌPfl: N1vh#]pT"NT }(8]>B MO""h!k6{pE*K`4gW?-K Et-\'_m8|L4<s87fJ,D\+"/6ҌπnsU7KVo L.C>R-i+l# /rM1T^\W );X l RgJm$T'u^NZ7_(kx[mbC)$N^*îfjleQD(NIӴRU|lL յ i: y)9EW p0reRb &,UNR'$>y>3PG@~% _y"` U ɽ|@ c&rNͺK"ԜkX%x2s r]r {QxUmo4_q45EY; C Dڎ+\$5K`;ʯ8Nt\."?s^rŴfjjŗ t.Uy +.+`dupu^_~/U~h-@e1Fhmf5vZUz 7u[7p 84ɅP _"t\ tI  ǥɾy1Z:W_O>-TrZC;nGUւ?i&niRJHByƓ9xld[ns&&f _F62lX4x˗(05⧉v@S S_18_ $Q ŖNuG.)dI. K4xD}gG|])G- ^Qù>Gp~BBp۸g<}?&p<8 ed+* Ӈ3[r|2Q>K?P$'N.(u.j\*MǓg+|qIts*7-& R;e;A'!-˟tH;*Oݿ8^-Hu,#|ML<_ ݦiT8Oz~o[#Pco1 *nn`̘*bˡxWmo6_qsIaȖYbZ{EE9DdRް;J%emޞ{x&R ҥ};ӓS:j~ O%7:]fr`|xxBho$ʈr 샀q$}MdFjЩD9,-F i ԂTl&).t:LR* S\u=`r0(g )x;w*@&>2T%p"ʄ3`Lj[d"}0:z s ks+ ]LAz i~}x?4y7C_oodzѫ)Lnf2~9&c\y4~Ta9?D| "Zl .TpKyyP1 ‹ i5zJ8 8y& N0Ѡ\1O!ͤhu=U=0K,W:I/T[jiBxsmݍkNS?lJk,/eJMyٔ<c5֙U@9X).1&(%Np.,| ?դ{+Lc@AQ\W.YK>AU% |EqDHl: ,H=ciX| Zs֡wtf.bۇL =E*ikDWi]};1",IBZaj'ǂ~U!!5 q%j57ʁ=*WK@!W1''6v<佖))rc]j趝,KrA_m<@u6=jl650*aW X\ :^/WpBEܓ=TKҪU!8T.b==^{@(t!0 4#<ٶpwnEVEBn-Lo"^C+[ˊ[lSS>x&V&=@;-ݻ}C9!8,~jSzBm[5zipn{!l;ZA߶5 U< /!ƚ FiG7&`[N6,vlT믂O--9_y\g+8vAZM*kZ]E񳨺>Ǚ@`E 4^g_TczmJ=ڥmIh %,W7%ڭ"[^l;>?x鼵;tX荴D6DxӯFB覂J=d5KB]cV8!Tβ ζ.+'몘Z#mJzm=Iuot W%Qxmoۼ :m-&n5Yץ@KF4k#w9l6Ex;ޛz :N.ZGċ ZZ.Nqu+qN^9x "EdyyB=1+]7EGf3k@D$kD "aGT s'e28>l6U:1_P_.V(7QȄ sp8|Khxt\tCbN3X1IvrC9*~ $kYViOh&Χi|Nnf@x6N\LƗh2kr>DލƗ]@T p PwȔY@5C"a^<8W\%#CW@e `'a $8JC9ւ+⺋\s@%spPWpvIƒHBI5B]{de0Σ8HN=6}:!bt%"~`݋ÐyeqGxɀV+d=a']"=lH]7*Gt°jyNG3{њgt8tFG3 )h=@܎_Π1麶` D` <8zʪbRuS|vjgoWfWA԰hPRI8鵙~ǡXmiwZ+'139 %x+<]leosPxRZK /Xk`/c9\]6P~gta'iAK30odghp_]p"Pfts+1 zaTXP+Ҫyfvoƣʆs ckBF} {}gu_) y5Y8&ړ5%z&u:,Z5&KTVEN}tb=؇Օ;w]]vC]ȲɂO&71 4_> `0ց1#  )Viw]$l}t"8 ngJ|@N1;yvD1k5'\ʭb:7[={n`Z86 5nCLQ!b\v=[a4pn.-T"cj/DѨnQh6պ`͜ ;4hm,ß6%̮R٫@5(o҅F^.<yТe`.0u7BPeHΚ3,BVY>hfDμ,i )=5tVlܢ  7@_y*,Ml4 ,Wy33kTVh84ӰL*М?)Ms@jӁdλSh% }t o5+>? Us+oRsZH;}L]oW:UI5HoKMT aG&ʘRŎ\LVj'fA's.X{@N{^ fڋ8SQ@h."*TH^ĠNsQ Yd+ 9)PgCq=#Uh-^DuH@)/n[οY,ꈙK9Ѿ隁@\\ wHL,RS U( {y٣8û"}J=͖@5|K=I:YA趱%WfvdF9zMPsqf[]U0Nn<5v<*z>*헦\*)@Kl rT,rF*-ʺrT8$|{} ӧXKLxGT rFjȗ'˪+tĐ`sE7KVv1sYU^È  9F'oKaP>Nn._]M.uZRwAsU#cs[ " }7)_GUOW*RR9d ܏LonA"X{ 0 fI5B?Tޅb^³绕uhS![A5ZDattׁ,d'%̎+$putI$D,.r;'73b4GUT?i~e+!b}@~eyTvP 8:9 'V Ge{Y/żwB^MWYZP!8a,6T4 'BYl'}6*vzEpJ+ԛ-)_2y_فBKfp0~q\x8j*ԟQP̷ʊ+|84lvAށ!*[2$fFq @2_ނ}:y9v̯ i;Z@AMƆg 79?G/UM_Za/}.FEj ZS2jZN3bI֭m_;GJچJBBm3 = kgJ~aYy7&l+58ls6;WV 0;`8* xpzp2%!]!q kW`̮ia/ZqxWnSL,,ZeE c|B%f#I1џ%!Errnr+yK_!;H!1O&";Ji0@Áqp &\).R vL2L5MH@l څrL Zx R"!"B,|Rj S`eq3*,L@"8FkLi#B1Q(Jr YNW6HȀB8Aޚnjme:jgB |kT40;!A\C <,NFUvbߍO\hZV"M3 n4/p-^YRөqEvjI$529"xx@&da5³Kp=s3Yg>+|A͹yv|dK{_7z0j6`Ffh9\n7JaBϖ'{5:Q\.ZքS:\'苚ƙrG`QUӟĪ Wq$k:_zմQbRrktT0WBf{U!=a\bQCg"_d;4ru]t#VإI Ao3oDoi QsO4`f'&tskS VIrs eVhݠhǓ8a'HMFQd1ԯ~~T,HOܚXGz*tKttYQj]jmGCDgB~VyӻŘGov((?l>wD>!I*rkSsCc&|jpLne㷸H<7!OʇCXn{%۵Y/ 1a\L@lUkE~xenFÁS:]4)qEL!,% $hSq6 Xr9vݥ)  !a>G{(9T$.73_?epm#ݝ;iȦs>) "CfЫXJSTKa|ZZ05ij$5D,qUr&RA0D1Y@/~aH͢<8+(k$f!!rA+LyS(gL5+ yJPAPs 0a$^YJ!I He ,daT1wT Cč^xnjnd8FaX=T3S2enry?52Ok%I;0l >=blL_SRñccJZJY`Rjgɦu [LT'ߞrv۟uJS;ov+Ü~+cwO5bڿ7x82ڞgol\l}Lwά%FSK԰@ob)m߭O[i//ߜ9gXtaYݶyiվ^W湕Bt# xUQJAF;jEj!]B8B$.؈q]/FM//ko`aON7}373/!>>GX'&G8B(Pg^zLiehH")tLBk6f彥-'i[p7a\Z]|(44h;V*pԴjPWhٽ%a!O,^pBO)("4r mu:XAQvڹ ǜ"/|' Za^k4IXZY,WNJFj^Wfh=;"WX@oNlֳZz@7f<̕  N;KB3fRٗ9.o_Mm 7>$ߨZmcjв:x340031QHL-MNK2*cpI.]e +£\- QZ@.FLwݢ4GVXRQ';sD6:q5|͝PQfWtT^cUDF!R_ ̼M"ǥ"C%A~t+sBJfm3*,(3ML+-LIhȱAC:͟Nn*>xF#ŅĪpRr2S2Ks>h xz$ivY5(/85 4=3OayF)v?u .2}̍E&)[v*x{LNi:\Bϯ+N)"cj|^-Kj! ,nDe^93aRRtsKsJ2u S0uJM* >ĤEVpL[bb*aOZf(n=Y^;0NkmSzJI*m17rw܍2Q ̴J?8Ye930T$YFmEjo2v]i=TenjPZ\`k9\$zDU=*Pw ~$>%157?O8aC=MK+sZ0"DdENҍrOux]oCx[9a\bqqjQ^qÆc~[v޻3֞>qzr~YjQbzj5ZʅpB[ԱXs)+f଴}yzΜO"g$aJ{I= m 1k,\,a{?L_FΚp~^|M%VEZΒ({\ubdD>>zKzR-;tN>6 #MYyIwP̮z86ՅsK$"vr2s.}LQB"k%&I:GZĺsexD{ӂ" t@Y uJد S;Y6 OdRjU*_ \.UFvo2S Wh&-W>¡;g!Y T^,Jc<` 8)V~*4N,,1n+Ȑ7Q שя 抳#| qӝaL:y*0 +*?(kJ&zսO7jkT%4ײ"oܨrZM'x-kP)8)?pB)zq!<ܩjv b&)yb {Mx1 .t+ ,RR%fE8PˈCOi$'1= "OخVZ poy#"r .aAKFdw[ą >x-$$7ksiB(S%6 mUcZ&ߡ]>6"C{ܖQ_jF[siQWYیzMogӗnp6ͯ/of~zm&535/ShȎʻǹ5%2lTz2,6k? v2 ϶.ݑgF"؛kNPyaxza؆4Ԭŭ^j*pV#Ahd$Mu[Źe8qMt  W>4T_D*e({2ĘM%C^O Je^0=Ӓ撂:mN:!tDJiU䝺#it(ŏgI~XS`@NbFY*ʘ& ߌ]EgGχ̱[ݼP&^ke|ԭ8(ϢRp+%[X%K' 7F +M#?GgV@ =RϴYsfn\B^^ι 53e^!&ÐdZlU;ݓjLN$/Y+\3vT.t!bp;u3&C+I7gtw2f/A]] vfPs=_Cl5G@iث$Ta6/uQ:;, z719 )0U89yDi3l2h>"\+ o܄_翟`ȷgxTmo6_qs`Hd : ^"BS{]Wt9ФJRQ_,7J>=|82FynR{ͫ/ ն\xs hdaQ^% W.aܛoW aT \ k \BvL-$Pe(#ˡ0vgkm:۶XG6R7r}5%])Rj⓳X ւ*dm5\V!Uږi$ybQCI/֐bClW6iq{Xn5nr|lՒb%7! IEZ;D;`Nh/ @Ԙ甗V!TtFqˬ&'IE/!M%a|^FiB-%+TĕP>ei1n<ur({MjRu*AQPk/v`wt j]O4w TLH!x:`O1:}̡4"ȥq7rvSan]K7 ٣pIM4D}ύ9*2[0qƊ wcJUUϋؽy)"Mz.(?\JkʦwnЧכ_b"8tvd|Cަ-Ϧ_p6h<Sm(tB`E;5s݋pdu^\xL[OYxMPj0 ېϲ]ORFIbeHl#; cg;ZӝN~|GUte?,S5E͙C@*e򪰝s,,hhe$3 |,_kva Mh 4ü,w2*vƞ%;Ũ梋 :Pu/!_4QW5P%lHl[bۭqJJ{NbYM;;4NUHɢpJ2§d<ӋWvBH;yy*W a=^ ,:iydmt4R䀗Fk,}i_o`cX`_5_qX^W+iGx[4iDx= @>D7u%(`ۆK+J֫`}p2>VqD۩ހVōc' ʪ"[9Ol&knF:C@]N0OoEzLZ!.v~hÐn{#0NYkp(OK@cE xUA! E$tH D0]fU[]+`,O,`Z tJkt!ʵ2_TB7vG3MV0a!dn;z<Tsu6(G/r8t xxQKSR&j7xWmF_1Ph[l]DKk?Y1`vPw60)Fwv^ٗg\HMyMiyq!C+]șEcok!m ?m&T =bB.B?TYez\Ikz[.c-̴c91~E&xlѨFCUH1:x3#3M ~oN,ʔ-M( PJ* zl 6˽&O9 4N_]cf7qʗhڴF'Q_*<-B U[C ͙H{q̔:1Z؄50XX3p4>]VwGP2D,^taxj8#L8;*|b7WPe-˕sZ~ DH%,QƬG8X Ĉ[J/W739X,i,zFr\M@}OIaLhZN玍wt| h-\Ѱ=fUs/ N{7JiJE1m.ooGa#{{G~jVkP\mFÅR :T(Il\P*iBz@J17aiSw̜ sd9kZ~"W䂻g`Mane}4ϵ }";J}hscUNy>s _!XUjĵR.`](2tCRHORPQw =}&zT]-gWF>V) ԯʹJ[_swЃgS r)9m%Fpop˸Y~e;#f)rR#ȧו"o!E:rmJk3ý5]bMЈH(签]}ESH yj<1$6KId;tMQ}RBCP#ԸwX{4Z[u%, ÿh~~ Fx340075U+.I+`8~LEdd4< Axe 0D[֣~xHm&"~ifv 'lc3l Um 4P2hI!rDYCilgiO'}SU7'Нb½،EhcͩL FP] %g]3cy'L]HxSMo0 Wp! ]]:%)fK:]Q X#4I_v׏`/2GR<D{!#[wP28 `tkDqppq3dj!y9E"Zr4 2: ~BIa5~VP1BXE !!S.B#ܡK3pS;&H20k8`쿃s2 Y'6Thx$$ %Z P&=ۓʒ5 z# ]  ݫf=_]Lh@"Żoq-nn]N`{f톬+Xl{YUx$R6"!Ah| d5f"%z@#h*a0-PJ8ML'EA@ q4[AnT !mg +]Qs?eJV!a5sP5X3X4@0|}P3]d.bfxQĩ9mäUHVHeFv_8xbE6sʴONP~GAԏ&Ma>qVi: |xo=3 ֠z xmM 1 FAVi-sZS.Ļ[ &Ǘժ;[z|Rap{纈}ğ}O?^-|ߟ~oKsY_~|=gF//f׭'V[?:M?vٷ?6Qϭ?./ϬY?V>~1ۣ}1N|/=vpf~ֿUn3/<_r}/vS?Yg>?Zmm-Yߏ~[}?7{ExjQ}uW|^:ӴoG/>{|׬=|~?[A{;^ܥq{qKOcz}n?n߄j~}_&Y?f}?O/B|V߿E|kwQϿߌS2/!>u[?Y/9o^ۀ Bk~SS߈Ot, Y_1ݯHZB%_?܏d D|eG🣶Y/~D*k݁/-Z}iʏ;qz׋?5_gu矵 ! ׬N]{ɬG:{VI_L׳~T~Q_@}?1U]/C] ?għ_Yj|Ox%'7ixg6g{,7K |5dOAP~6_*磾ط^A}_ <_H~?| ?">8Y׿BPC#V8:ǂ*?_!?_K~Ƨշ\OU >aߢ>?/~ݑ_v6ZE|:J>> )}_Hg/@|$6oKtϮ_a.BKPG~/B0!)~ /P?_E}bΟwQWH_j857~&ώ y._ ]:D~8G>W:m Q~~C m¾&)-|F-~?m?'z}@ yk@@TQ9^_?-?l?z'@?WȿBD_߯㿗?;^o"{!~U5 Wi~7WAw:5D~^~ΩMw/ %%|MPꯉF4;껁ۀ3@pcAݿUg?"TO ?G|u> ?lį@g ߣ?M=cO]?[?P_?TA-} S?huj_`};k?-U~_, g@Ho?LSߤKW7?_`o?ӕ~!χ/>_ }#,[և ꠾П߫~~դo;!(ꇻ~Pk-G^Ub o } o8O[GQ\/~'o9 ~mO}/{~/ ~)}}N߀~[Oܯ $~ߒ~  U^ZCx>_#ǚm9#Io%CП/ߪ߫Kԯב @TȿCBg/M[k}ߑh~ ίQGO O8Ч>>wo.}sԿP84H">/y}msS Eʾ_>jjb}߉V^pq>Q~ >k~ʿ/҇?*)oa} _wߎ毩OX?/OG~W7p4_iOC ~;3Ϳ~~~5#L?./o7g>[}P>stş}C A|$&̏}5?Mˤ9.N7OlH D~ur,aP~uG h Q?`ܩFH:ó? mSc~_W_HoǠo'#}̟>~\>_s~@} 7Jq4B)|q/q ~F}40,49_GA0Og8khcJ|į+4U#>E,5 ?~'3_o!CowGy +&"\k ܟ}X o_~/7"8Q߁g\y&}o?o۔A|DI_J_4{/KOJ? w8?/З~Էѿ''P?O*]O]+矠%^ğwGϨy?wT=oC~%}?M`] D6mWޚo/`~ Obz'k䯡%7 ~3O&K~۪j-z!jB\ER7t7 [OH9Op^|>OBc7`J^ͯgp~_;-,|[SOd'Oe!a׋?}::?)] R[w?5?twNc~~>YFߟ#K0?u|E%BЗ ~I?!)}uV ԏOΗSWK|hş/?I?AKod|No?"ȟc#>^ҷC,~. }/LL׎-Y9[!/ 3g?Aޔ>[Ra}EׁRbj> ~GˏB߼ }g }Rԧ)Z_xA}zJCO_x?ei%ڑ4\|p^_o)| KOo}l';> I/K-s~BCuBm?c曠Uҗm χG ~󿲏O>I;O'K59_ښxG>Ep4!d%~?k?O S?Nk'⟆OOP}d o?RP+?w}|bk#>?Ho[e_ϘПPϵOj~EҐ߽G|l@$!oW>gh> RU|wO,#g!>@}#0?=ďi)ޏw|ȯcݚ}(?~^W'&vrk7?I%.}O'ꟗ|@x?? Go814@`?dA%A ~Y6Cu?ߌVm_h>!?Ώ}7H_Ϗ%ͿX?KEc?5D}g??)Gb~zbw?5"߼w5_W2"%BM/n@'3+,~~||"gx>v@<9{I_Z8E]oC!7_1~"+_t7k%?Q?ELJ~,)95җE~OOʿG^3ˁ~뚿SWo_|d/Iߢ#o5꿘OwzSPsB$yP>Q_ ̿ʉ$4T1'K7DSі~_ |[󥡯Sk,6Oр?\;ӡ!?+i>N?I8/_ ~;ķ)RRoBD&OP_? {ac?1o&g8O"}-鯊?U61æ9?G8q |;Ϡ O>0+4'BCWgo SH 珃>?]1)W;/mܿ^ǟ?˱ϗ/|ćOzgf"xAK0O\=5R ED&) MLf{jqWPK&y}!LNOE+aq=<6sSr'=hDuBb9g lJ!Xe#4 jt"CsQ4fѪܖSQFշ!/yHmʹ zYG:_x;ذknDy!;Mm*􂤙6*HXMSr O'gz}ܬxL100755 install.shrSŞeKm100644 socks.confw/у˘ŅȉwG!VxXmo6_($o;VdM7c銢 Zl2ɑTݑ-%o]Ȼ{x<>;vat{E[-L%i"Lf8Ogt;$bEtL 6 P2NiFd0ls$!X3ĴSFi!97xKIRc@Ts2g-4-#s؏[M4 DbO O}l`-6gAcf(OO#ĮFꩢ0)&JUʯb"|>&R"B KZ2LW ]ir(e&\feƒьradՄ i:eIV+H]*A8c }ydI͋gA9M|4@: |"O[7Dȗ ڦbױbx| ,1<#^!v KJ6TBT?p̆>cbtf`WU.őwH,iѮMÙlJ6h8bU"ܰ']ܮjlQ6h|U#>\ڸ.>܃V ք)-hBڸ;A9FwϲӺ@ 9]U|6 a~:g 6!>%|$ĉsnfnuZ8uI'^P|kFډ `wu:BHVx = ̆9|Wi/7M^cmg>~ Sd)vfs eiQԨ)46([2|}8 `xV'wM\ː ثxd yz״<"|KC {ieNu'F8(tLnѱ(l_x5!xtʒup;u[l c3n#\bk{?Y`➶-teS| νsZ[Rȇ: p󮩭À0+ ^Xw oS 5vV$]bE:i?JmCq;}-(V k2dR4[}80œ6B;>v_WV3ךA__Z!Cz|*4g1wn#{۽ۧgď{uK؝ n\Ь~GbkEO](,4_140أl]7E4W瑊O h`xsFqrt*v/t귊xVO@gg/a0Eg=FkhTc6u( MJ}߽{Fp!Up*p:pkqy^KaPL|j7OxlTʶ{Mڽ1N;͓c5^QaL<tbFV[6bSMXF$_>.#_B6h^]+hs!D(&j iK9.y*խqg\fdU BUexTN05 ]A <Bk_!ޝ?UVd゚/Q&ºbB-D;-9G >uDSYVq cn U΀0ң}(] @5-]pm0)l 㬕ߨV1މOnz~{{!ǪT~6`RNݡ4 ypE)~xp4WR"7BIMQvwB[8𷩥sԂjHObDso'#uif ٲxS]o0}W$؜#L}HA(`b_3s[rzνT+k5 2`feiNڠ (Up.]v+e{]sVn(5&Ĺ"ٷ `x_w)WOKk 5̲N6%# 8TxՄ#G 1s(|C״!}ۄ"}^x340031QrutuMab0re? k MMKK *wܮJ*N-~ϷYZ&@cTP+8!+ײ2:-Zot+% xUA 0Es@ ;A=4NMhڑnݕ&?t45Zd)P <_-M+{)1 ú2*7ʌ;b HU yNC-MݴiqrQ:&@׼xuUaoF_1MtisiUJ&gT, FidaEV7kk. dvgy;nϷ:ofWWS8U0xgìnzfgNj_)+GU)ֲ+U]ҴKE+%e;>HLM:P#[zk@J . fK/X4V'FEax̑n>o2, ̢0t5NowɋrG+ɅELdaG.˳ 澷ZGOhqe73]+7R{ q.;ҶVUUߛ Hnǩӛ>GN sV5I0bߛ|c QFYU,DW/JFN!εo=;Y6SҮ~=B#h+ U|λ@qZٙPz[i&?*spsw ft{_ˏ԰ͦJFυ) t sMa}{&n*x/ؕkfX,q${ϧ42^]Z^;&fT=)ox|yBȴ~c=ӧvhV_.=cW|KVn9M @8#1%8?9jE[ Uںq5;QUZ\R=%+΃>[v2Iy>y74x|yC"sSEI !alb ) jf3lxÃ]D;llF/Rxu\g$FS[AAMmp]򓰕!,O:2RnJ}_0>40000 shadowsocks%GgoYX.6r@z%2rx|y7[uzd^L}j~fۆD\,x]\-ͻL_lXp:|]_m<Ȁb40000 shadowsocksbڒ8υ .t@PZ*kx|yC;%ww_2>[6x/x(3%WlxoW:bu݌ Lx|yC;YzDO>\8ɳ`,x|y7e]z|k/[rUmdQ{0" +x|yC; ڮ)folˤZJRK60r _ǿ+ŞVZ-'fT-VxVQo6~篸%@ ԥ<뤫"i`+-kHʊɒ_w}w'[\VeKK~L^5WCX3cYXRG]eqb[7hη;3BցdQ :(UZXpj* IA$ ?Ba(SB.؜S +!?]T05ݸRHsv@LqqT,svJ ^kg_o􋞏t1XLY ZE@ZPfӷFbND$"2lYU|ru? mAr@ƅgS߽,e%˖PEZ0$9YSAITk$"wv(A kNkT~!TX(x x&QDܝ~6(8/3ٗQ<|fzK ! άg 5k0 $Ul ]חOe{,2 W2PY`1/.5yƖv mg#Ϙ| n /JyhT]fgIn"99m+5 6GG?jwE" i_X22BH b3 J ZA )6qYU WSHέ3|^mQa]LtOa~:LOv80u4^0xt1 #\.NazvǎOcc5g,*߁ x%6Ed,y]UCk+f 6̠- 'Bd&|\xe[b=xy>-Z`)Jdj``_f.y0 U~֡Tv]+LOHsƃQԱs}0{a+>jF__3ǹqT!Xx1t;(1lm\Ǐ/h~ZG3/FL_ǹr {_CKA$LA kiwh FW"ox[/Nr’zĒҢb+.]5P҂XhqjBnb^bzjnj^c'T[bqAj_ZT^V4$l XY\ŵqI77). x['_rDʂb̢Ĝ؍  aZMN+OJM.,K<]- x js8~P쓻 xS /lient-multi-server-ip.json#§X9~?"*͙npOZ"8CSlⲸYzCy6"/cxL &100755 jenkins.shqձʽ&ç~藰 *)}BMxՁP`"ZxϹk#FW1b;&{dgXccqJo'KRKKS ⋋ *Zӓ~:Yb'TEiqo7M.ͦӷY4%0}xx PWMBL)es4SP.xb +gen_multiple_passwd.pybXl 1.I4z%performance.json{VDNؠVc^5x+ px[}gfԴ<)bc]55('dT2t^8H )"+bĹ.rW9Ƣquf LpRKJ3nJTqAh]-I L67YEx0 empty.json5N]mFozUv. xWߓ6~_0Ӊ] >OifXE| e] 0>B&9Lv?}/ܖQd6͓(*9F-Z#OmrwjZW0UUß]Ju5v>)D`S  D?EP .뚷Ce}gOW)D zJZ6h,-GiW$:\UG:XO@68!3+$_Z$ gc-.j٬;`\Xw"Xi5:7>)l+\Z,;(p-e}=˜Xp2da|򑕜~=8/4$bmKjmubz!!{y[ς^` V*fMH Dy KmceT}CtzEGx.& x, EIoGX ǂӦr.VrwEf2|C)SD+D Xn|+-+ b#ʅ1e(u⼇ F >d}sk-B7N'mEJh`a<Exn1ĪO~A/h_I_-7wFě~9fnpArR6 ZU^)L69ms:[TL$۷g  J =|O?BLq[(ukQ?ҝd x;*Xf.\Qi^|Ijq()Ezuy%t( 2x%A @Ei+xHUh*B&I1]޷)Np8؄;? ׍.aTXh6 K!^?AT2O\5# #s^6a6?e[;Zy8S$iUĪ1L3+^~;NxWmo6_qKPH9-0`Yn2gED\dR#ư;Q%N;~%x|9~at&dȷvd.DB.Pw4;ǕoX,-|-$ZLH4m{a-ïllCꎟ :{ h< JY=1w->m73$bi[~ @-qhzMGW :ad3k"܆!sX8`N׌ݕr>NFTu#<S?V#; E} EsgfRhRwjtlSä́EyxUJet <}HGvpFCQחnso+˓8GOug] Fn67Ti޳!inp){[^ =%gi`+׺x0^ʯoG)6;!tx}Jk?)JlķqL_fq\QL8*xۯ4AeCx $W%(&%mb>TZ//*QQ0дk̼t̼| Լ" fBn~J&\5TX4ObB(( ğ, <(Ev6 GI/RQ+S@ѻ[:3~O8x2YeC-{bJJQjqF~nN;` xrReC^zjzqjQYjQ|A~Q_~^&dM^*5Uk< Xu&`a|e-^) -ي&79xXmo۶_5|(nmd`;놮hȤFRq zslw،6Çy'sEŒbgRI"S.VW4pw+7)Zr9|9$nHwV'LhRLf亠 |ĔRhHx^ Kv$ XDHCJk.ݦ9 #[n_KC9CAq֖#XYS\]\lۈZT h2aALko%WrGh|9])kF"߭-3JʵQ|Y*vs[Eyu='+|<ɧaXgbB~Z49 9N3R0/ ꓺDRP,&c` ()4 ykWG1B`x) zk)E)>*uFXX\:~U(K=;aԮa$A˂LaGa 5|GJa'6 lG4-;*K7v&Jg`d4Lfh {6~Uu{ءZgd!ISe}&e`J'8M :9re=qڦC.CXFV. ~j'߇dhnUefhŖĠ^y &[lkWNwV siY\1$~$+W.Pt 5(gMHAoiGhC_*s=fN+hƓEئ28)|||t}Zmv鴅)䭆[)&*spN Qt .P]3pdبVRnwyZ (9cEv][ u!\3^1O3]TlNvift}16LJ=A`TQTϒӵJi?v (Cv9۾t?-K쓭&Ă޽f +wqWQ-ihYh2M]*{F}+-6੖RzAg6X:Z6:^O":y:jḿռ,g52qZwO슼NUub[7oýjwHtr8pdjW3\Bf?6hO w.f`*_%V? ڥ9+v(bh*Q<Da;XlpbX ¶-n9]n.g$e*%K7jM})*.[lsya$/UAtR V'pK1wOU ܽɽvTMV)?˗'xڊM᜕er3gp3M'7d_hI*Tۗ=X3xՎ^wUq2#еBۗ8!z崇xZmoF_I`PJ_P[N! (r%H#7/.Eq;M̳33|bY{tI\{EZj? x!+>k+9OM@(y| `#Bƌd4#|AYK4{0ɱ{HHR lD6Ɋ,="qɊQ%OSN[Q>%!_iK~$r/DUҎRn6˒%Lf+d$'ޔ%(:M}"nYs`}.?pp' KZM$L/VMzNyr%9!b /HY?0k &WduTIaI#'^eS(&ar(|ҿ7ju~:3%_K8{rx ?':Xr. 셈 F=y%!lQϿhyJbLދGgLnG=rѻ<`x%p,ouPb]Ş :Po.D&N^Xp ]qkbY|N.Tyt8T KBUʏB5lSdF]=ҿ4+LNXzH.4R:䠾-N 4-v">ưf\֙vC',;~w֟y"spŤ2o%)2Ià_W&(UQŭs+9Dl< ƭ05)Jn'*s74(<ܦl@Ӎ!=%DŽ'ؓ:kN}nNoHπ>>S<u]].9|LkəvLם%\Hȧ#ߣxi[mi&qيCT;F ~sg/mEbFF!bVnqN}YCg*HgJgW6fh) |gDHAX*¬!"Cʷ՗R,o/k<~cemTkɸ[op;]3VPn!lrmfry6nzMy #WaLNјf؋&CKHmbH=¸6ݷa&| B_uG rӿ\z–a  e,ܻ^Vs;[pIGPnkv&B >}*RA)4My+"X[lb}Vv/R¥6EP;gu9j{E$·;fJE*7sRȮ^7Ix=QM⭽0ꎰ-F jܫhLڃ)d"|#>M 9Zט럜e. BO%l=BNHbO8ѐ WWlr J q:u㤨 \"D,SPk/R^Uٺ`C^6EςEeI%b*j<ˬ^eZah4l}ϯjmEO*&xВ nb^bzjnbJJQjq˂ S㳊3K&7Kl%]bҒPxzBYbNiR2[$tuѴ*8)d%()@)(@R337.gJIMSpFJbI(C@ y) y@KRdeIFf^BZQ~Bi^fr~JBIޢԒҢuf xX]w8}ϯ˜cy$#iu轢7N=D[HJJv=~sξ4|f)l$JCF)3+xQ x(R VAUo"ހqf;LZ ,UOnSd)8mզcM_waEϢBuRl, }J߄OGVGצ ;YB%Q%,޶0VY-mG!Ov,g;1J_˺=w7EGNF"p#C5YَCL)ԸuG>Bm.e8R )􉝴yx Di1AׇP,2CIFjѰVE\ge%V_pY#(NF@ / ޲VhFY0a5*QrIe1ʍ{/-ei`d;$D!ۃܪ.Y]X?;hUt8!vDwo?3慏d 5,Eїs-&T$]~!=K1>u -$UQ?.40K F$R")qbTMn`6CX@{P2zcK@* jHGgFU†0'-s()<ˮR)l05t6Lm|^. IVȶB>dä4"R_<>vi6;/ r::q!f$G'IacKch;}>Z_Xwn5Iflk{ ũ: Den`"%B,S_2,0RJǮEjög;M+o N_ř\7 5^A70"ힱEfN郄4^(P u6EN1w[$?7p -ۊB(&^@Aq0N(זt5KGgh!٤-^iIA{n%K_ءdHfxĉ޾M^B囖9ghˢPsYUa8a'TH !؎.(z08aZV&bW6^[6flO\n*#$`3v jx?g ,T'K b@ppI@w\īvL٥)d`j GX2Cf'؁=N7ͮF[t\Ft 'j8}5q8M}^+ٷ$}ow:)E'.a0Ќ4]@nE\౺.;G`m a56uJw'9BVab\wE1x{PHLPT\ЀKW-B!Q!9? $3)3'R!4U!3O!%@!(5'kSAPx[rUEH\TBKW$37*U 55erF&y! Q7x_EHBTBKW1%E!8#1%8?9X!71/1=kCq=xSHBPTBKW!( ?/E!?[$_!1%E!+J/KUHr6 vx  >2C@Ƚ ~_u@Ƚxko6AayPذ[> NVtY!I%N&H7Ǚs!ӍWs/} \ is'*h{^ o᥈4^sJ/_G%2Pne̄FQ`)9r5( l9YEIZ5X-m(epY g7?Ooopr3`z f<- 'kTȤ 58'EarL#%[rX%)+aȘً!+a5R*tZ 4Cb@i lnTG!BZDu?:d1zh.v:Tj9>FE-WZ.QrɠJr,{50PV@RlMƇ,.ߘ(mϓ鼹}ƿ ׸% +^'?8Ic@ )lz' o D(|/Sǎӿ8 /%ymP/@g J)sp1]ۏ,Cܕ6 fJܐxQ^ Ǔэ_Φ翄ﮇg=zz3 o/ b8W^XXDC=$Hчލғ&J ͠>c띾!8i""W^(wUy!ucbV1OŠ0֑t 0(k灀 t3\?TGr Z߲b](Wb٬:;\v=k8h˺Yib%e]DmŢx 9 DsoȗfZ|>~ebyƛ*KJ\(*[r(km27WR{rΐ@Y3L_M>gw$!&j {tkS:e ]ͣ{s=ɿ糖!rU?2֮ƷR]8gT({lK^{qѹ|LpvߠNYh* fV{"h=PMaS)4KeH'Mp h@*#%oՏz[WW֩Yr,{4ι ? ‚|b$2ݛw}!ٻfP˓*̫~=@+CW(۬34TLAXl}-Gv_?r+Siəa5a;lnL{v=x| 17'=![=SJ>($x>-=glrtJ*JK;P9`4|7X'8fOW%NVj_^zsnzg3Cf픵iNSB6NY5hxVjFIAS;u⵪87vu i1+ͮKU3vjYޢ`uhߦPH6;ss|}og5oYNwk?XjZ%7m1 `W$xOCc?^6F^*v &Vp&|O`xصpEso'3 s`%/ւ7!6=Gmt)ʳ\P"GE2;=~nvZKV/ܜ l^vu+B7V%L4NiE&s=GOItyt8 <31DqϴLp$((N_j.!ғi\ AlFQ^T+{h3'?^2~~2`iiK`(tm0UD$>{ZXP?,4 { `1踁ahO.'S36h!=(<4Бx5T4zx`;*.ҬF;$;s8֚Sd&}l:>%nhOk?/r汦:@"Ej"ޏ^8d||E|M%:q$q> @9wA\ (5 upG:bpTWjqElc@j}X.o׷lʀ;P= ;> mN#TMARB6J^M]bA2pjZ+F.%vD8b 'ʈWn4AHč7BZs0R93b0|ukypTnn6˖U C沕OYDC#>]Xq HP$l8nBsV 5M*:E "YLS-S5n:WɫsMp;"0qd2̱`VoeG= xNM־ f=UkךK<OfT*ۦS?3%7kPPی}r*AI ݇xVaAc?*18=`lS(D j߹XrJdf6\}`EQ^x&Lav.I$y.qD}%[r[1eCLr;v\SH_X\b-j5ZVe;(?@oLNf$Xu}gWl) $_Kr)ߡ3dg`0( 肊[<٣Ӭ(˾4˧D'&w辙_8fI'%`fzPoD* H22aM\2ۖO F¶/m^y >`xkta͒^L:%'H(+AjYj^IN~~^hH|@gRLl\ %H0n>*iyaJ[6_TaRMKLO-ҋS\_ Ѣ19\Y m* xa)+cd9a;XM'`eq,VU(ON-KO-ILI)K1 bu XM.4+ (6ُ"&e%d[)(&%CE5' rVdhjrM.P:}d9v[V:'xkጀBNjBIFBr~nnb^B~YjQQfJ*T0/-3($3?O!-3'u6u2N2OL)?{!ɏф653k*+m(HL.Q SH/M,Q(,/-Q(Jjn&h dBXWPWR jLg)(ufo>'v}DԢ$lu"\dEn- `lx{y%ԜĢ̼ɅJb_+g R18x2eC*M5'#fNHzɕ E>x07i Aļ"݂͗7L^(& 'jYZBAAWYBPd%()@)(n]+ex.iAĔOw8J( B e9JIo$.lRptq R/(KQ(N-*K-RMKLҡ. P:@Tͻ1nnћ0kx7\r#j>ufLh,p CODb TQ1(;ufЏGx u?dE#YN@5x2eC*Hw/wIhɕ`x8\r#j>ufLh,pu?dE#YN@*Hx|yC;テٌE1۟5`W5< \[x|yC;テٌE1۟5`W5< \.x|yC;D}~,oz&3Yٌh1xexUEᨷ-V,xԻl{xkt붡Mfsw6'> x  0EݯΛ@],֙W@~&x ep iGrn yox 9VId*7z=*RǑ@x2eC*^tF7Vs{mK>:q:4 ngFxhC$mnx|yC;H͎+=$JV$> |lF mxo3/xeѾ{Ex|yC;HZ/NXVحٌHKx\ev|3=p5h+,y\;W҄?'v֠100644 udprelay.pyo3/xeц:'*Hx` 2 NfUdԙ((9l<A!.7TO.bsKKP7423BCu&~̼hļԢXMʓٻY@? })?x|yC;HT5iW}r'~(k;y6mx|yC;?K!AGsW:3-<U ThxEe9ݮn/?,fWH)100755 server.py=g3.qD^|m{*Dr9xgox{FkC(_Fxҩ!M Z=71/1=( D=vs[7` p+x|yC;[݋sl+& y^i)k2y6n x340031Q,+dc;@q;^;>seŕy)y eu^~ Wlqw:W2TYr~nn~Hd+Lf[! PH.,(gȉuI.2Lj`ǚ 5%%1jJф^A9[_m)u!pT7ȓS5i>x_G o[[NvGx{yBaw˯Xb_䅲+x4_K !cb ]Q:sc68"Fh=xIBxs: e1T"^` JNz0rѯ{n %Y`;(e@^m- /9100644 udprelay.pywf^grUeb%2*x{ygFgb W[*i쌏DNxTkPZkkҵ b*LG.ECY܃0ӗG!Nr r"Ϗ"q,Ͻ'N7Gz^ŢcCWUX' n[0j!89MR9EPb5av2}MgTtI'5m覠 dz5Y׊!>;~r Fmĸ&xb*eܔ)JۀlWh)rj 5B"a㳸O1$O8 E-_dcU[*h2rPh Kp_E8;<ÕdNn"<<0?! p;f:(|Kp΃Q!L!H;gJf/Ym̒ G7%8 E<oibsV? ԺAgs<佉ދ x|yC"d.=2}^[U&M.eL 8.x|yC;ěu}-\vEhlF#x8/@G`&|ēpD*x'cx{o>b\ɯ6VCx|yBڅz |cU|4yꭍٌ,x t.M䋁; x! 20펠Ig4:tqxݠ;+@ 7Ubr'.x@4 |nn>c40000 tests՝g-m?S; ڐݓ #x: KCO$6ɦ⅜6BɄR.JZϓ V)^x˹s6=B&31?yavfNnB;PXA%5(5KsRS  Ԋ 3- Zx340031QK,L/JeȑN|-0NĈf[ J2*ssOxfAYw[ Ṵva嬠'XMz /$)4]/79gp\zyjROgW`Wka&,_<]duX:Tkp^fDsfOZ⦜y?/Eyy:TY+Ⱥ둋>LlzꠜUwP0ײ;ˤdƝvEaz PHIMLc̑xb-WS]OMjLqjIi^A%d.=2}^[U&A )HL//O.fڃ y̳K޴6bGSqxqFKlFd %9 JlXϲȚw{ .Mx a鎹As6ߵ]bx 'zǯį@r@xlxs:1ꤼfv@ N}<e 2O)ì};Qm(zՌv(N{100644 udprelay.py4a²um\6)ex|yC;Ԭ!j2b{^7<ϻ xs:Ә;Pt/*fnbN vE p>;3< H@Y100644 udprelay.pywp_oNO6]:O!4'x[:1ꤼfv@ Na;81%7yP100644 udprelay.py8mQκyxBxwdk"(JRxTkPgZkìY[R9񣰁ɬ"# MsCn {E9O B}>){OM6Ns/Ko'H8Z.- ,7=$-Fx[ۨt}aVMpu L f94Siߏ~ ,\l[!a?JD _E L -jٳ܉x>O  NDW:׾~8o2ѵ Ptl d;"5ҭLH(ĖFMeIJr>gi!uuQm '8ZBhG`=(&Q0p;bx~"B)3V=D Mn"Fq 1pcL|rWtt, V(}^¥|Y- q9 ҳ [#ӰKr dqJ,dQB9Y5{8]f&*U@JJ56|'zH]'|r#B\dDJM4͊'ͪ.t4ivx|yC;HyG V_rgn?G]olFnx{yȫhM˯iO`jTo# Px|yC;Oө7k/\^/JRKa[EⷜyroOͨ<x x4: 83{$+ŇN~^,=7 َ0*F䦏lb?x[ν{ Fj}'ɷڧ0#5kM=x|yC;U~ϭ]@aY|Wx{y5F|f3D[(Ifܱ=ys53 Pxzu0B~dENQ1Լʂ<ԒuTRtxS]o0}W$؜#m12=7eL[+"(ܖmд{ν[ :˘€<b Hh-G<D(P @EF %Vg)&aaD7EDsOWwppR}Or_#")DoI's v!+Uy JO݊cqTE Լ$&z*5@I5J Sޱ@hA׭MS^8ѬZU۰j{XEH VQs|kLa <[d4"1%Ԛ'i &ҔdJcwW3Z&,}eƆ榦 (J3UTXm߹MY4!,/`Jx{,Cf|F̼Ĝs̩ uyx*>oc/P i`tlmx̴iB,+ iUx|yC;clׂ-`ZzqlF *"x}n0 E^xjC f$_B1m+^ٲnHrU*VۻJI5b&b Ri 1miUx0XZ;Rdz@d|fW%cuDH Qbc L>7zh tڟ>Q4ʈnU"to@x.94B aѮ2W[n^I;z@V4ËbvA8}`?[yD 3(fՑL5ymBN R~3wt-lLx340031QrutuMab0re? k MMKK *wܮJ*N-~ϷYZFdx8\MB!c{<\`pEES#CY5uѓ@Hx|yBH^ nwGʾٌWx|yC;˦y<{lgoolFE x ?t3KuBKS%fx;Rqcl.e99ũ) 9% `BfBrFjbAjBIBrQjbIf'k(&rLfm-"XP29[days.#Yx|yBۛX~5h6U2Z<~ƂlFe Wx7\)F-eV56[_pQ/4\\c j&lfuf Zx{yCȏu_3ULA4ޝ[ai~t9~V+xWOF?b 8*T*sXM1GEcv5f8 ZH3o/<;8}R$nI 3*TxK&S&g~NO~K~,2Pl.\&1ɜf"'ϼXMa&%!3/mR y"aL'c8%S(OB2Zh|){4\4xN;W]ϟPN Ѭ 2gt92*><'&du+ 1ksV 3J ` LZ0RP|*qEN cRQdOB%:g$%$4R͡ee؋a(}r7 !f Xy9ȧa'\CgP(oCLoooվ][2{}C+"Dॠ&&e^:\L|,?0ǯÇU:˴r^CB.+Ot=QDwzgv+"u B6LلMqv˪6(DsH KSOh_c嫁Х67'!dz^ 4 ]yiߌj-$wlJ:o]$ɮ_NRk-Ù׋=˷ы |N@D^E(olr7$+U.׼UU暛Z_4 vڰbrgrqx|>'b5_k)nOt쀟H['w5Eljਲ񼶦L%6vjRFoC۶ uw: ? G*;r׳#Arkf--#&i$Blm~Fl^ᗕ_ }6vcHJd *?B̓7A:7c< 5]},?N:瞧x]!X2#'" hvzPN8w?t!w;" X|OvɉZO(yޜ7dIe<$=xe0E7FҥTR BQ*5u^'2]?Kzz7^zŏ7ˋK̝n 0{bX^!Bg+ H[BBdg1˦x5FG]/XE %O` vem =svp$VSt:6%a2>G̅fҞqr拢\R a7{h/@Fo=\n.6cDW^c ?u=I)LFy U)/U9ƝZYެ._b%+̗ŕZe!g=j za <IUv'pmmи8w&]R\BAձ,@J1+rH>Ƶ@zJRe"c RZ&A:̘\(뽠UWquchR(T k0$or.r8o|ZX1W5\Mdm8嶬ICBqUbV)ҍdMYSEsha,֟96 &eJvEXa,;]M^%wKj9mE9PK>E,Y0>P<ݖ s[4q#+ );V#=\2q>~Ն0z+~VMN譸-0XMn,jTnM7zpְ~Cי wF^/qd7M-6> 8qq=6;ߘ/gMU- ?&-zNOISŵ]fl7uo@MVM#:W zg˒~*TRˊOZa3Yʇqn` ll Tdq/JJ`6o/jdWڗG:bwAa~)_>@]W2D Lqw'}ۆNT'+5,۸(3zQ˂C1B2?o% h)qcLq|SSCUD/ٺn^>^x ET/zE%֗Uk#z78?uYG(x{yCԃԅ,~,;aol9~f ]xZo۶"fNu7!MXqbHCh[,";~IY%}x<Gz^= v$"a<%NM%: gsN:??J8XЧ1YSrz>|&yO3&19r;/UOd,,',iQB?4$AE^SFw A B)O) cEZn##v#|7 Ų& \,)Myуm ,6F̢^`4D8W9-/rQi ,1fG |toJ7l!E5p~Rt1Oq$Զ<{ z"e"e.*Ar7Qa-(+|Ӭ.;$A VO$x?L!ʇD#Q׭ɜ<\dANA~&^  c 1{.<,6ewh|lo%[ijo%Zm/S|xѹ%w>9_]ޒSa[*F1 V;҂`CY(##38ayagfKć D(n5FX p!;KFAf4~a+x,$[DW4ŰYr=@r-%,liy669<vQw齃/x+I)QN-z268!tJn_at(޷ B|I4n9vN=qAUlͳ+hа?삹hcaHM%EOUж -A2 F{6Z:;x1s| @pm(8@Dn ki{{0 D. S7^PoBQWO2t&co,A`G1\Bؚ&KH!lM>)Bju%SW~)q1 +Ͽj^W ˘~6Vpy&-mHpMWCF; K{1k1 WgMVoN*A&]n5BCp p_$O%8oHȧ!1^}Զ6U5*Ҍ fK Q-m;4ŗK)j@m뮑k1mu44 ԝVKdJ$#kҔEd 6Lyxԙ<;*)~e'PgͳvYM,` >wZeqg_QZ7߉AցiSp )bݫ~5۔v/ƉmT^(:)BHD[q$`ّڴ4Ʌf4Cɦ7aaX 2np@Xصř/,,xv@L1RuU;+d .OʶAD9YWUD:](qGUD+}r㗕K]U_BnLKvUa]nlDU.n~Zlug13i4щ)@xdVzvY窍ȶFE4P]O 4ܹ89,:0K\u WłnozX :Դjyͮ;�{.Dz޿ޔm mqs{`}5;%:t4 w'*U#B:XrKPIcZ*nck,5{3%:w`7<[;%/a,&|q@L MD>yQZ //ae/6D\FVo^JqWpb%ދAkq"bC[>^LTxb"1# 8&'6b?wZԝ:@<r9<;$ENuap+#BD UAzYC{2Bjze^g`pr;?) 5 ?Cs۳vxݿj5\39vV{Gcɞ7NZy$/։&\d ^xk =W Tbg"׃/t.9`C܁yT"sB!Ү`)| 'H \4yP:(cmNfԺ KnMm DMwxאur7,pkȌQUH9f,2\Jeq_q~ߌ${\L@ɔ&V^t-F] rȹSDxqup-.EXkL}OX  VPy! u$syhH++VEwO|BNs;)r0}Qr0Kr|JBTr80ޫ7[t(؋:\_--hTPVT/V,ѪƳZ(nV(&TS@VV?Rl+x{4qq*x x|y7_m48M{t,\= jx&\bJ6FJY9t3 fx|yC"Ȕs ]zLZ,hc_K.x|yBH M;r#j6 o+x9ʣ7)ܺ`ٱM,Mx{yUFbԼ̼b .H Sx "n}خwCn(AƏϼ ex! ,*/#3N TxW_6rLD.W m_ԇ~4C*d(w%G$i1V緫wZxmEm#2QZiʡuWP!yXMRÈTP ga3S NitҲ.?(2` !3Bb~`}nV&=+-~!=HP~º飽rVSjsg+YeG;R۳̙>uz 'ANL Kg Y?ЉkRAC"VѶ]+zyJʵh%fn>? zA@ȇUl͖Azxًc\ÈUж8mЧ~&tjx{3&svM<{7ףؐvH_eB>tIE Fg=A2Z:]Sq>Bh{`2f饵;ĕ"EO%40F Ă`x 20S@*I&g՝?EiRz4{֐z>ɓG)z3E'A 0nx Ky@'d F6x3 &100755 jenkins.sh,*/#3N UxXoHOQ;Q$V$Z8;7E -wo6I鎌vwWU]ex㙌ӭ^&q=uѡ ew>HWIbI(ldn!0J*%lK̏4τdNM:!?R*2L2R= %T2?W* D `5kH(j饠wbŻ#&~<OP9I ך2t&FiC(ln:+Y pVٶi*qzIlS(|֐T<W$#%" =C#z#p(\xdLVuk$sjȄ \g!#D460HPlY< cRqxaoq1~LjQăU0s=Sq $3J[k$nmn}&gBcwsm_ӻnGA/4 d{ړ \pƨ3_;O+#Νcc -}i{3rO9WK{w<ؠp 3qǾ#wCڔf2Xi;E4ih8jdw"F""B"OZDy)3%r4KTIrn4zoK(-463P )~qdW<*,? 0+[NlS " [;96=+HI,AD6ﱘX ;`M\J'(yG\Q83e_3^ͥf7F }>m~V6x1e.-Yj,!.MTbfI>rj5XA_q~d[ UPuYtM)WZa!Oʊ#c=#VV"R"CuJ{:[WwRi$uq,]nb_=J0cFܣ?,+9*1!oqv*z3Pl绻-`n|l*&j}]83t?y^8fz-j-*y'nmg&S%^NWBC!Z1 y5pp9Ǽ`.y-ڴ9EQK(i#u֗B0W 6 ~sG^OD2fEb O?n6M&hL]o:8c`po uVx^VYs*^nEl78>O? [xNM5c?gA"5;Vt넸߲T$D:E* k%MN6ԕ'Sivm]]i.:D_q3:_{+#aq#-:LfNտЫrUhw=N!^ʕ pZsj*9G7Tne請}f{&3Bw+2/s 7>u)ki#ĀjưUSKc REL]*C.>pןU~.Awx0]"Iy?Y(L=܋6,ym_ߌw(G (] /'--ũ;G.ޓ~c ƼʣNѺpOУnq]{KUFQ+R 5q>9C䔆X)|j‡,KPv^O)5xeOo@U?EEO(Nĥ ¢r8=vFػnNqFʧGܐG${F~;b 熲~sUU$yYRbLЀ!Zl:%%`7S ^ "[rZĨX:'!cluŃ$J^^ׁp+̜GnUUXzd|-`0 aVK2v:(SEʀ Ω2Hf*u0. YghZǩ 0!#6 y0y9:ٹ?$F0``t~xe=xM))"l?oZY1C "C%Ɂ@)6j0 r53[?ou>T2/~V?srW}{~!k6sŻxfۦx|yC;7ad5,]KyqN>y6Ǣ x340031Q,+dc;@q;^;>seŕy)y eS=U R/S/0~V<";W>7z%`B&&@\TYPpÑ뺓\dnO0I5CjJJb*ԔCvG;t=jrlos9@ (5lH_#AZ>3*Tԕ@IҶ.* TgnjRD#KōnrrxMO5+4>919#N@q뒙wu<ҧ$58,(0:@2y-oBKK-hV\PX R*-~3|6ĺ\,;$r4[ɥv\z$37\fJ*寲+rDx{H{*3kiIfNf-'Pd^>7٠2|H2sNϾ9SzxiujC53kiIfNf51(s:f[ [xVnF}WL n>@KMDTkA+ic+.m_3HJ(aXpng.g˕,/ELݪ2rsE]%=A֒]Ї_JY^^dzo0z'$ih+XhҊ|Hk-5eToĐ<^h,RD!-/P)5Fe2GUVDiSײ_:L.d "Zfeu!wu !g;*_QWBrWaa&JKɈSkħ k-!T%/[֕.ŁNP:WYpkUi 0Se.mRϢtTו{QgҴ}eiQJChS`V+c12-hth&{| 4f?sHA|?[ Gݒ> c"$L4G8,I0 bg#d,ayKS?÷wLqWAYDͽ(Fˉ|g )8 q.BF'<ޛL8yK`8KQpwl2!w3`6xtHcoqb#=,Fq0 hG`ɋ6M&67 .Ա7P-ˇƾ774*lvn$YW"IHx0qFXyy!CkYZn#\ ^^cUǻBm6TЃO֕Em_ZW%K{ȥ.ӝp5%I@'׽\\4h0z!=Neea"; L7HPjFZ)ȢۻYjebM;sqUݺVdOIE~`UmjRkCQo1CȯM\*_N¦hDXoOzu%Jvre9 /YeU!P06 Vξ kFؤ9Dm~8im30g]Զdr5v'$sX5]ۑ謕@mmާGltak$s>"@qӉm3JEʧ\A?Q1v8oޛٟn;mz-8=seŕy)y eſv{vOWJC%I߹y+߬?o;011ʂ|ssoZyoF*}Ѹ?>@MIILnR•OdVpmPEy`@&l^GU[bSUW_R<6'=Ro375UONp؜bX#'ϵ͡PrJ3RA.)PpyW*}I PSR/WC]gMyݻ͡$$V1rݐoXʍV0_ I~7m;{.gxPL$37^n&WOOy[7˄*xKȮbD۔ 8h%7N R*[Lvy5}~pd.L(-w{!B  Zx{y8t`v{|&k3Z֛ڴdSړ잾5-v240031Q(I.(JI+d/ cSH5ͫ`ړ>2H6=y{&dC~0e%9 5nz6=7O2XFMl x#4Wh!YY#+xkbib`)sAK1gG\ FDƐiA3-fi׳+?0BIjqI1bv {-[W1-"_ZSc%׳>sH3Q*xkbib`)BpuT{qa/}CNPtgN=&@PZ\R`nJO ~ w~QjSȗd3tطc ϡߜaE3lx/Qz5Oos&9Qxu ƋƜ]L\ֳU+9;_z@~|fGH7100644 tcprelay.py[(&^b!X_ɨG7d.L(-w{!B/<2Sxɹs*vwƚG%ڸ}f\8`%Kp xU]o0}ϯ8dh4$vCL&!@TĎl3 фkaʃ㫛s9#/J55Q ˪BSKRW7ɧ dN!SIl?lv9ZPʍD@jq{(5s*^p ?mD JhfO&[6j-C= ]ى!S',z+ZM3qIxh@(M 6e||4WNojoMSd\cZyy̡"4.bsDRE J޶vY!qyEJD$P;]LSB S9(GRgX"~LNf-ES$dA剙%E;vgvÑZ"^'i%dxaEV%3  .]tEQk<F0py;M ^:$ xaIxj9  2R<4DŽO{ 'x{,Udvf?oKrNM/JLII,P0423BC}D\dSlU~% e9) Ξ.A y%%yV(' pDƧ($&p*mWxnf 9NY X!-(<1'xLY 3R|2SSҭ/x|y7m2{Ҏk^} Σ\ tRx|yC;ț].|K~S9Cٌ -x|yC;Hj4 nycGkɳѢ x340031QK,L/Je=M]OɅ.*eegg0~zh}v PHIMLc̑xb-WS]OMjLqjIi^A%4jfù7 bHqFbJ~yq~rv1Cp+.}O_(f,CU%%  Ls7e?Ғ̜b,῞935ѐ]xv.!u9ew[:{5הfFiM'1gR100644 README.rstQ #0~շbt)WW?i;I 9r)mhk@ll2^x_9;z%zFsx^ŋ T5100644 .travis.ymlz".ֿ{3]Ygt:<.YaCt# 1J[g w@ $Anxkbib`);S[g:H{S6&27u/yyZ4G*M @$Ayn^Λm3BKK2s{zo0D5 ~xkbib,$fk$ם3·: nM(b?۾<3Sˋ󓳋neܠnŔܖ JRKtgE>ۨVVeJӌ!%9 =mqX={ks7gk0n@xkbibٰQ$If|} xU_k0קe;]3=t#(9"KF''+c}&VN#d7])3] sH3+kuf~򃟓hJcy[C18||?YMxEvۋu*Rs21i!q)Zl J 0wĆL\KluVf>|xۏQȟ,6LBOE4E$.ZH"q#o$,K␵O"HxҘ]H&Z[z. ] .B92m2;6frJo7>r>4o+pzGosoߤ/v Q8/0EQT M?$a]UPFȉO\15o~W0.gk:LǛE58h3$c))G_yw0&t"6TBy/9)\܀p/"R?]W aa M'Hc%3ZJ^+- bk^ޯwjZ[d~3lQՓVK#sIDԶՈYi3IqwsuopLU ^؁-!͟?"XOC˅.D]5dǩcϪxk/}&}5Ҝݴ]Ң[+}}C#s= 4W4𕜓-O_N{&mThmAy\a!2AyDQ걨R] on { L~X=ƓLLq'105".$ (C[8} 3FB!B.koNuVԩ^k\KknkS*X,K|ٲ,T.)s)C >"9SگR'TyG FůzH ~߅،&C z3l\1V]Gg7mvZ>o"v(~M'3P H;nWL75z[ |T /›9\K\TfHt5/d)m˸)YLUgUs:SC'e\VCL:$ ´ԩA:N *ӏ.YFE vN-8%E>s\31W0)'kIbgv0J ?g tmjWr2"][`NJU8lR'Qs)%Q{iRu>DzsqAbE&N`% ?;toW^]fFo-Zz ,> .I(25M`1Ri3`3LÁKrm%ݒͪɋ12I`~'"tQ:VySSzmx[⼫8y%F*z4JPٷwjW |-.D]1rj+3vN׀l6sJ78UkaspFRch#Վ=RDM$A>ge{qqч]p}g2жۿc 4Q]ϿUzA‰F|pǫ?|?z?:_x?z> 6k27R9k7+ B-}P/2ʏ/yP ov(}_"VȾ~pZ݃;x5Ck C~`uepS@#\/U_ƳFu.kT?x.me|s i'_w:Dvk)V۾_ x'"ȒhBx+NnD6|G]mYւ\bΔ baGU0ޮfLίy*KbJ啤Ig%kDPcΩH7xSNA h,(Ԑh2C)` l²;ݝ̶rHoॏ`&J&Mwf97pǍ)tpi9wtRg'fpͤHL=Gˏa04NhDaIT(# մ=i|( C84U1-JI㫨!,@8F'吋p  Bo8?BG Qм9.O B}z\DR$ 8<{@$TLui/2`4"(˕xe$#jB/GkSk=C{ ~~#Nx* ˖QiA&szs}cgx@Lb.I|y}Sqil}Yfdg}ڧΈkYg4П+k[eAy.V/?ˑ=42 'x+m T*M>&odG6HEDCL*K)zmƁ*Z=On8f'D PH.,(gphǝ|Qӗˠ$BMvZ[k>߾)_x(5lȮ]Lr}<#wFY=0Uey%9 uw6nPi=ZMRm:sSS޹^2E*ߔsyuY9Eɉ uʖ+nqS\8oPSR@zݶM>:BH׬󡆕$$VU SKrbיwl{i BvПIN 9?9еȹjZiIf8nܣ?2p̗07PsV&7烿*xLdC 9f4 NƺP?_0K"KrB"z}CjGHr)?s0X[x7Fݠ\.=!A1 r|ߑ7=&IAQb{\' ?Ex{yC7cAZ"lm3D4(5'RAYOB SVS RTfZ9f,<9)mx8z>; <˷03ϱc˔P|'cK $FEFx{yB*Yȍݟ*)a vkx5J@rM %D [_JXdnvIT3쭄` bae~aӟ7ܮkAU]RuOt#|@V⬑IXh맔*DK:p~%6`U&Jey,tGݚ\H_hHU|}jA5dz/y], Kz>dGDZ'VubNf͞&:L6plx{zKuC$=_!#$rDaH0e&X ?CL VWSh^'r:Zg4`|8O I7lbJ\dkHaF<3]EQu]kbP{;F/q/(x$SPYQH?)3O$#?o,v /x340031Q,+dH 48}QɍzW}`QkRu}JC?>*U_W\R[0Zer| +N*J6M1*jUqbbUq oBUdlrN`-_F**ILI8[ܳӺj3cCՔd]t%-k/`wT#UFaggx!.O13ԁ׸PF$}S"lb0xxqi ֹ5'r.KV G'xxqiZ%7,ywN1_#yos kxVmoH_1H.i6EL 4U1k;5;C)MNwV"yyy}egS\dF.Di/-M z؄Wo!z͓F{#-ysa26< fDc "A6gHAe9* x“9#4rru1A"Z%Kd cc. .ƕES F{<nš#BBr(ŌplcRW.rAh X)ri1y0`bB." mpD*)R`eV ֈy"o|ӴXTD94m"E_:y7o5g)S)o`NlJvǾi)DO,M"7e0c8O|dO(bI:((Þ &Ś 㭧 (_? U^Yʖ1o$z"FP:}7#COgZ?g/s:$h"'pPmO_R&R ߪTrgNAPDK=O%vPlgMVUo$Ԅ1 "=Tt#E}D5rwl{+^VX cJ@[Ym+ǺPe5^h xLGHUէ6=_ JѹX9= mG6  WϷ^CQtqRz~ H ٯk<ʑS!T@rB=OeCmj#le?TUdU6Sa \ ȃq3f7}l`h \$3W鐅pʀ.\ ==z ]Ϋ/]Nr4AYEWK.H"A .ZE$S~ntlա}S|O Eف"Wa$:{purxA|e/Y"'NAhJB3>~iwdݝD#88JzH&-S?" w?ܿG~zuo;;撄j:5q+X37s K9B9e7}&e`Y ^'&"&TLL_rҟ`>z:x=s{YWlÓ^pc/fvV/׮)^JTi^BFT3vouEZ>8jN\%"q dg+BCS?P`0_mQZ-q{:n|YB\ЈjbQ{{tx~{4L#!rWoCp\*y;(YKJ i?՟ )/bZp( sc !ƀH{QG\nxn-n xh[`I.dnrΰi^*h\˿`BBF t9ZxSAk@LnBVKgMad'4,3'q^({I KLtq˼7o&߷_|x/!Y*Ay1BJ>#A49/4y L;ֳ\ VncqQQLpF{I%nYYHR&C•xp©} atf.x 7?_GlFq*_?l_>f4>y;|kK;Mm^Yf Ë4+` xAKT%)LKgzo{5VwW{tӊRȪ@D(Q*|]˵ Lusx2CC2#9q)`37gVd|ZxvQ~JQ> qC>a6 %CM"g $n/z

ZxA8Va`юXv,n~x8HL`>ҏ0H4>?bxHG>< Kh2.h*YN03MXRA#`G #eP[݀#>C1 aGF>K (="-ES29A]K"i:dnuv9CV8!*ҔJ*ug,jTq4Փ%'t&v:q͹ n\5Dȷ3woxmw/3fRǶ2@uuoe^E2ZM~ Vj1਴75G_h0f{m3Y5>w!ϖ=q>{XZP %v ;Y } 'Ǚ wxub R.~HD)$ub^7aqH=fk])ȕddfNZ* /LMWd],0cgj$s-"/ŽR p"J! WcGOKclj HA|HVJLAOTcGU/< \G69VI:;HO )ي’9HlY5 +kf\V +".""p2s$fѫ)Kx}RJ1]hU>*u-3tb *t7Lblg$-"Kw;3Issν7~s ]_t{,@Eh}S_R/dIru0b}|½@܇8ߓf`cnC¢[-uJVIf3H*Vj+164!^{ W9HX 4&yZՑmGqB#!z r#GZw &2K[x*!}#LBHh\iqOv: c_zeIQZR-[kuvFI eӻEkUu7ie>5HiPX*ʜ8?/}ycLux/poY'`;lO Z-x;|YykYG x|Yq\ʂb܂Ģ +3d{T'knL*O,UU(-KK%UjCu'p0OfPQQkRR49 ~y،&O䐝<s DGxU7sg(`9Bȓ"QA7xxFqbN+9X!7,&~}(_sr0W eY h![ 94xYko_1͢I!V6B++!AH RsD:ih?t}s??ܗ|2|1ۧشZ?b+^CX_SpyYyvL&_}2^]to͍Ep ëë9y5DNFTi 7~0>'_oɧz;\Au<f &\۱\MDܼ_^BHưҜ??wˋ,u7U&_;〧F"bh>`:|2]d,_;xr8qx3xxMVΌ(FN^ T̍l7Hs1_VGV~'%;.NMF%HŕJc1_򒽸Jlloe?T6<Ծ8+WjMR=Y[Z4j66Mܬvm1'@+ON_јÂ]g%n৕{pXje2V#FZ{w ‡׫z_EjM-ۿTeRw=jC&|m$ q4 ,vO[{)9997fNY1f Q(aͭhCxIhq b%j&X;gC 42RӶսM7h)B_:ggHG͏w",9XJS'h^_C TxFA1scY䇰:.r$7qM&C)A@ ƃ.ZbDV^XyQZ}h kSXE#6>Guqp#b@{0gEdD a8'ݫ =lD gE`BEc:LF`%=Y`@zcՏ`B~zp 1m=DЃ%LϘYٔB;`!b>Z-&#b7{&1u݃QiMZB/ct籆>&$jxPDxZc!c&q,m%pu| B#O=,d܄1jI~!β]G`2TĚKHPX7EubCX`IX 2P|FS1?`3H %0 =?#wGQ6y4Фk@\OiCKgAcČv*YOpNaPOg<4t{(F<VXس^mk5߱su5-}X%HI j(j)š#B CoQXLB 8@$CJ, ƈވ[zTfQ$(r=0$* bT_6) (mVohNB0!DzWE P'/C>Ll"KgT: *! 4k{Wu@"2iu7g" C2$2N'~vaеy@KځE418n %#kIzXKJ-M CY1u8 mO+)9<cŝ:SۖPbA yqeNf(0~ĊDıWe-$ТYCR7Bzgٺ;qgQ&BYu 锌T7cdl:J:9Da;V|yF;k"#K)Qrs^j\9W0ss#:M8܀wXCL1p#bGPIFٹ3PXNP. :k)6Ump*2vK%6U FC0bF髧N|:8'*Uu`ܸmkn^`g>IlZ9@;˓V#x(m } {N0Mlq0K!h&sY9kͳ@r!Zյ9^ S<T'挮/rHLcQ.qnߎ${z R^MR۰(^ knYLI[nX‰ΡD> 3gt&b$׈yZR͛sX+(;6Ǒa>y[Ml@g 1̎& tJ8 kc{ JYuDSƽ `t?B߇1&DΟFCB[o2`@!d4?ۈngk 40pX!6Ao)ͦQ!X`i gw, D <~Iڭ L8qMB;aPqM]8&J@ic{;{ȀJE7>/cT{'W^AŹ\VIuK]"]!*vTZS;`XٖBk#!Kf4LzvLZyhj|SI.sraݧ*t BwaxjH CU.-}eVw0)KQd.OwXxK6 Na&gWV5IضsA;*hR09:Aj%ShyI ok!RV-7#*8NrYÝG[dZ6:9ߛ6_FT-*ODZ'n$?G%gzΡ34;k4:> -X#8CDž fS5φ 5-uKaC4vƒPMږngO_'"*lNq; eR4.s*JC}#(qh-*D}SY6tu|;l $C%1S A{=~},?SCDaCwty-s\,1pQe]ޅ`[sM8^Xp{epTi~?Z-¿)kiOF8ˋ_?)̚ 2áq~޺Ut?cm(oKdI:O^*ӗk $]$] }[,ع9fI&*[jr"ms1ć'.p p4~ 喿aN))fwkuFp!B;i-by%goNr@LGI{uۄ~=`?=gyE_ +\r+.ʼn O;M|dz0x$FnPfnA~QBrIeAj^iIfdS ,  ~ d޼~{Z?FZQiK Q,Ԗ3#鈦8FRDTiPWh3f,PNoXq( hGT_%`!RԂx =D~Ðx&㩼220 bn<b"1aRDi$e:լu1gkHD/j',A4r46p|;3 'ڐi0,w@j3mp]:D<˸Hs!!nxd>z5*pݶ0~W>J]v^ ^b8xZmoHίQd;q˜8#Cfn؎ېV߯6ncHfwN꩗nݛ5g>`/Z D7#wjG;$hr>,bgXD31`/h`#C0-G`6^"1$w<]  Ĺ1xXr 1}Ba[U x8kڍ2*ľq4c*L>)oY!Kgb{%$M0OݫKϩ??o^]1Q''/k#mIK/ ^xtTDN^l$XQUiz` x0{o`02ؼ-{W{or{_"˧"eJYܵ 6k3=hem(\kUWXmȥ e[VzhyUnŭͣ󢿐wq#=j@L%\ \MJ$3D IqAILM50ӵ)BstFI[zgJԕvJY`U*9ܼʜuSYtdҟZy♖1-kf4Jm`Q҂>uc8+1Bb d+>V,7y/Z*V`d'ً֥-k6%hiІӝwĴрnxZYfn+LͽIDDv;:4ٯwt\C?RWk,+ݐ䔛ya*TYf@ 5饨\⫬'GeVmRJXUgJQ/?%Zt!ݹ\F|*WŠ“Gqq+U~l]Ub?|j并3u0jU|B: 3Rv[i &iv1|rqrw[ KyC(CU {u{ I>j#\QUlvySw]_\l35WvG'k&sJYVoM^ sr_t]c{| Cv_s+'F&IF7n'aG}۲ӆ~GKhzO>o9 \Λ?@ͦgi DbARǃďbc啊{DHeu|pzִq+ǹw*ʛ|KQd"Gp|.vC/_us_\ɶOvVp AX'ҡݷX^zLbyKf^ٶutlE+C$iliq+*`wApZM= j&ֻq#>ْ$ UhNc/A+PDQ6M+rr㲥6 #zLMQAץ |S%fWS<ŭ+=h%- ТzDݺZxQMkQ%-IZ4[z;&F3I[P%i (N2/̼qKk\7F\VT"n/ď7I&ڍ 3{;{vNWOPXE&,YI-M:8]/8a qqqj<|5i`XA'R`?VVI/ʌ8đq ,)\-&|nO|}]??W!-DʸBmbkJI7ȴ[*;tƥbBk\}{3 ̓@ ,V@E/[0&+W^QDv}^ j*KŁX@ hE`ķG0 &˄u&t6T'T9xxixZhi 7ueUêr'LrU"[^Q9`PU(l1(T %.mrZ 6t+iw-MSS`)WMbqWqy3]x",/eCR4Z&w#[O_C DdFۨipR$׃"jٔXSS;fJLP'uXήe2nlSBcXPz( iF;~>UN)#؊^8$X?hxyOK Cxk=\iEI))yg/ʫ,<\ >@=VV$?H,14US 'DC]G}awD]E\tQQ QPHMT(N-H-J,IM+d(*KM.\θ9]{&A3x[9a\bqqjQ^qÆc~[v޻3֞>qzr~YjQbzjĶXY2^Ǘe!DBi !YA=/slBӈ)8HbT$_cHT]@: Qx^pECTn+ ;Λ;3S GhdL($RQd DoC' ɨZU|/=?ylSe-ҧuom@ EEl0"MǓƞ mZMk5=81"e73fLW< ~xI6&D/xwqxc^EM+.$PRT x@FLX79,(1=U]AcG ,u@lBf^L^qIQf&BF4<; +_B,9?'K=(3=$(55O-58J25''`5NF^& Uc ^(''3I4$$Mi@!{6"9Dߵ(5 @(18U$(/1%_<5I#$$XD # '39$3?OaFtnnen|@)Xs1^a#cϓnjˉ:7? S:>'( ϶ &Fy U>ʢ確Eh\سMRP:hTC>9wvE̩-9Rh2ͻnl:M!v50x=\'B]\Rkf zLHSVMbT6# ZgyoU 2}P{z0LjD`+#!V) n42"ﭷiv%]0%.uE/ei7ۢRx/~\\M!uܣ/Q>]-BZ8h٧'";])x̭X1Q}di染X x340031QK,L/Je=M]OɅ.*eegg0T[Hi1͉ Xi_3VRXYW࿯5o[r%u72gG?w`mAV׻Oov/$)4]/7`QO~M= [Ow,*tv vecu]ka[358D/3Aȉr9bPeA. dugr{3#Un2AKM{WUlۖ,~BJjRfbgkrzo?ֆPcSKJ *|6P|3ە|_R_^]`-f(\1=zUU%% bRk; J(k`<`>xT9LµD%˜H)NmMa4ݣ_:U^?_ 40000 testsEX]R`bQqހ(cx7h"/ۖ2}0ۀ,;DD*:b4Ծrx}FPEx_:CeIN4永!1ub100644 README.rstAe~F{FR9:u`W1·؅Ӑh߿AbxF)mx{y:FW< %} I P(I-.)fpZglP¿DY Q ^xϿHpB;N%F"܂ͫgse)D+)'W祖g$ħ%)*X+dq)XnjBBrb ! A4/$xuf 2|L. \U[rScCBx[$xTpbQi^|Ijq(9Ei9z8zx 4x;*GhCn 6 ݲؒxtuS ' ۈ)(*&)d_wEy%% XD'&L6hϡPPgduu4~In~qFbJ~yq~rvnr~YjQbz*WjEfJQjqiN 9; 8x#tRd'zeTIJT|<T+.(PV(HUH,*Je概E y ŕy ٙhʋSR+dcQ=#w}j'.!x}on ſ@Bi&;CEI4Gڬ6igN>!2_a׼z}_Pm\,%4!/[msh6U]Hx"Ϣs9:Jݣ@V B}֩ń652̮x_Τ9J} sr Se=Z UaPI[IuZ>n?<9JfC?͎yddX61gdal)4V̙ kxݲLz%Ǔb(4j>џ|ôn2xDze_f*T@xAk@I+TGv[GXt[** nA.n6ݤ̌IӽX27GoOFbbt 4 ^_}FsOж6VXH͡y(&pU=>POl&M^"z1j302(GLGE\Uo_lzHkjVz VqmŲ̇>6^>`Y\8LbNU F<ֆb=>I")It6|)-[["CuRs3 cub>ڣ?A ax[rTeCdu2O0wqFbJ~yq~rvzo<`|` TrI-A{E`=v0y y.-Q(x340031Q,+d^:r;Cr]#\`QX\W R&ݳBTztk >L*K)zmƁ*Z=On8f'D PH.,(g`>ƯsXkʧs D? 5ۙkm=q<|'|]ұ2٫(+x7A=+Q> hrZvVQTqUF;>EXUK^x340031Q,+dH 48}QɍzW}`Q\RYZTY R_XK^ss ʨ Rs@~{BtV:ZԊ$[ Owvx|]yk͟Yys2S2Ks7K ;xXmoF_1MjVB?(2%Ab %bGw wId'$;3ޕy;C-62106MVЃ{b pkF9D a3oayICs/[s ^g9*HD"5x!Cb@/(2"B('WH<pxz{1hބd%- _v(MW_avW͝^>_8%'t>wF+w5%ܫF0-Vv2Zv1-pSwz@;΍3].`y=Lnчlu~^lrGٍ>Ne ]OF 'Қ!yH#|vhlxΦx6]-F_Ftl-%j1!7)3`Ps( z77(BϷKKg4A%)+GkaD,cQYg UV\.clcE^b@D %j*85ahXXLPlS<5LOM/ĥX&km#[G`F=_FH^6?@8rOÈd[2F,=j "\0G@RL8}cc(dYFF%r_"p3TȼlR{@LLmTe4Xdƴ^#(=}|j9{Sʩe6 \Nz4Xy23I$QCk*orc[B;l oh#BS {W?9TqQ0* 2;~j{1ݨxJQ1#Q>(~ng7=! ˰;B}ub]W,39cS%OYQ.c $AA,A`2v牄1S<Έ@xWmoF _&(d/bˉ02dY WY:۷ȒvwJj #OS7}I -,ȇ|x$rRx.cAѫ"CFJC+iC5$Yq/tc”˵PJ9+.|K皧,$P, YrJ.s\K!AGz@XXrTO!VHDI湎5y\+hYcq6nRg'r" dVi\i)BqP)ɪ.gb-dn2+<(ZE* gBH+BE„d\ gb0~hT)ܯ>A1-*[nSgM2XnL<Kp5wPw:/4F\A{Q>lqVq7C"G0nYIAigP8m҃Y00x3>pڏ.P#t' Cp'7?8: t{('\9ZNF؏6 f7%~ȏnфpA.L0W#7U8 f0@?{~Q{٥;3DsCHQB?ބehW;Cjc3VCRcK&DL?F;k92 1ѤĢM``r8Ay;Hxfd\ݪw,k!d[T1k8Udb)E ozw dXMS[V6j%e1ez𛝈'UغHVrsfYc-{M m /5f͓eg[rnc`v֊ǂs(CFs;AIh3ݼީc?eXꝶ,ܐFO\rLp'wt$/8-vfv{?¯x{) A!_{!:t0IW%d=#qKUVmh5N7=nx&݆8mcn~bTK\SX:혫d1ϠuWQmK[t߼`-u:IJȬ0r `zkO@;IWl0)W'5!U`S&YὶՐ;u+r3FlM1Wqxe4w= wH_;3t3B/#/Tef~&G-zxR=N0)IHK;T1@BQjX[!=R/8؎,~~;g[Y<@I,IR6%܉ )%K()%9\9A L6G Z>cLIc!i,M9: 6z执1!$/zU*KFDT0 mD.xkK& 'Z>4ǔ099+~S]hUq7lv IB&m3, ~23M>!{o^\d=B=GҤaW0jKvf) H_p{{`2xWmoF_fѳjػ.Q6B'+nT؞Fz8?rF$li|ȇ!W_yv%!z`*]כp[cēh{ mysa2`I"Vc Vnlt(R OCe bU<C<!"[~AWRFbHG6il7u-{NduUGWc-),W}C4)cKԜ =ۥKӘ!ڒZ|-<|geXoX1/1Wg̠ \q^kb =[Z?6z^de)\?X5^ 鐔[,?$W{i!7'ܬd"5B` >9di3Ld]*CF[Z? KCWx9'~!;R"(@ZC$+JX|N՞VX]VKC m4@% CP5d JôTr?*v) Ha+XD5JɓXn6]O~ymPVL(U&[y H '^C -SM{u&>vf/% 1a1< [ ;tu|ܣD'6Ed)c'm?c2jESÚ"a+Lyj2yLSB"fۺ@Dfxp}$TzX&>j'ڃT(~vÞ oL:I> \UqVyA* M8r_Thy\CoWO U~؄L#Gf,/"on-}68RXl:ʶ:;ayd \)?0 ziB9ցﭟ7 mkQhPza1KY|jL`UwОHc5,4A+ն"XwW,oE=WQ4V%HlUTKՊL"llVʪJuOQJ ڈ7㩬CBK7zBg7UuG7c|4zH>/Kz}otYk7uڏuⵗ9/{q&'w^ԥvF8(볟}-QWuMTY#dyת1Fg7߽on8ްj%àu:!lv,w4(#F>֧W ~jy}T)d}]t8^SHBSLàtboҝ@$#v*.yT=Tcxr4vxvZmĜD#[T܂JgZE%`9ul'.Eٞ)B֓Uj7/eCH &hxQ=N0UJ!j>$%6,PďeHv@=% r68 4tO~??vܻ0Y Ņ*EXgB&2K EQ}+&Y}4HM\35FRaESU9wE^B=oJH!,](*! A*78q_PCB=Dwm<|v@LYoGO+A͖x.sEʗn}`o^m8ߏ݊p| Υ= Q߶`ŝ ) xz`>O*"#9Hx{ѥsFNќre+HL//O.K.,(W-/*Q(-̙\/إƥ ^Qi^|rfAFjQHI4'ۋh1#lcxRa;,ǹ%-yxR=O0]26c┒-*UE4vU#ljlG);k?Rh_=߻gi0(4ł6``^sgKY H83{TCۈ,pq{y3}~"/+ݨ%km[)DLQsXPT U"X:˔V2b%΁l&Bn; uZ\²"NhGFd|lT7&ՙ/9n}2kV:9=nhEs 59jl~PVCPuOA[mӌ,y]Q#:KaYH'b."t5πmtR9eBq{B߃a̬,-*(|a=7;[|;q8#?%r|(J)jCG."S95( R,A58D7.̮-,>ާ/+#0WیaGR rEjtfW(™aL7`;q3dOS|:2 FxJI> cdBqql Y100755 test_daemon.sh@^0 4*}~d٣(t Zx[±#BqjIiA|I^qT"E>eh/v^[fj$Ƨe椂ԿXs}~_m[{iX*mxkh✰T.8D8añg-?;WfkOv8@=9,(1=5+d ]ARv9ƲWu7?$2c+ abr s4xVQoF~=*cB.UHsi"d5lx%3k ܵ}8wvfgfC{d{vKQZK Rrq kHbFWT[K KH 2ZQa+E \I6B&fd D2 [Th :%:WHz@JzH$J'H+VDǜLAC/MvgM&cIxo†#ɔ<%bM_27Pk<(ZV~!WWK2NF"aJB.m!ABC Ư-SQb.U$XS%e*:ojA. <4"2K]q7f('] qYTGRˤ(`vCל{VbP'TBoٺu}&]E>Gᗠ̛́ 1F'=`ss  Q^0[1 a#l;Џ}\z  ޅx08> 8BG.B?.E_p73DCDQB7?E}?~8(1:vΐZwCzлU8Đ|z׍pDd(p (>?/ &(MJ,ڄ-G~CI?=T?@B6!^ݵ\bfZ%̀(=f:+ӋFrכYVfQ['%~ lJꬤHRƢbp}BdJعR7ݶD9uq<>MVj_8ӂc|3천/H35 .+N/~xqd[*q^dALt-c$x>; T6j<bczp(dbjFH9m@vqPz`Rx(63u5kZFQ4)8O 1%,-uzיdIͻ~|:7i|$qˤK#& bmǴ/:QLoC.f*!ڽ.~c{PAn |A~t#|2eڞYm{Qkۋ–S\炕[z# 4 jRJXj_Y`$S":*A)6V| "b)XOR@WLh2OrKLowTWIUI54Ez#Jdu {BL>~"i9Y Jr:o3SdzypFrr.'KX"8-O2)S:DXSKYE ˛ Њ:šEWŘGjE@na  1}߁^@5 (:$B_=#D-Y+vX媜/a$`@\#x(apG=1NIWg `9Qt/X;綆"\.vx1v bCQ(/꧲R^QbOZPJ"_ s,Da6ƲOaqw ;>eXow5i7ʧƝ wo AyV/Feē?k\z2j#cZkKƽ5ŭY֚Z crA_[y#ѱnRF fcƻsğ@+#dH: 僥q_o)xv@uCf!ɷ0ϫx340031QK,L/Je0-20EA!,/DtBU%eU0?q:Li}cPe~ 'W?`|fsfbaJBt[B)N-)-+dqn֗ئ|:mY18#1%8?9a;ׅڵ)/u]T8sۤ}#mɬ xJ97ldi1$100644 CHANGESH>* n"qÑp(9+%dt:P WZ+?qRT#1m(3Ӵ*ICC:=e)^wtcvl!ċTD7)[HgL''x;6}FL3 0N$ţW[ l \YxkR٤ 2T!91O!-3/E!1'G$#U!%?475$$3?O!3,Xi5yf33lǥx340031Q,+d`;j^N_d?ߓlQX\W R0Gs*'6 ~UR^cn +ܽeb E% 5ĪHTl}{ jJjX EKo&a9Ŀֶ[DyLUYj^IN~~H=G¡oJ{T!'?91&zJ}(5+4>919#NXx}kyb*O58,JV_nozTu}԰䂢ԜJ2s}95ӻ{JSR-[^Su)+w=dY3'{Νͭ*2U xvH6Gt:A'}g𖑔:8J5zCwH^H2M{100755 local.pyMfR^GMU"j98ݐݥG֎]tVoS^dJH\~H{1< x340031Q,+dk5):w:޿dQ\RYZ_W\RnB^&>槃s@ .-T/6ƇPE&) Ui))Xg[z~%TUqbNqA|rIH}ѻ6uWǿcL8x@5S,OATq۱gux[.wcC8 ax]N0UXHDba`@‰@bԩbELqNQ#!TFf }Xy hˑ'GU)d%E(~М=b0uywJHa1>9#!JNVsL\- #re!\{HQ1 ,OR$%RF[.Ϙ0o +yu^f6 |{M?9p1<;o) \0hj9Ts,)V5{ c[k y}Mo4cX.xTˎ0g\FNfLB*X0YeaŮ| !~$6myHx:son~O:ϣl IsZM^UjIMʆzhQb^x|dm4BdeGx+ Z&Ϡ⎵c;/,#$N.(t4$;nv ! {ѺgkL$]I4G}Y$)UY +AbZ3 7{'1/HI3Ex}Д*뼇g7.B2. 4^Ƿpkv`͞AdEfҌګE>,ME6E^g3[ Ž _K0[P~^UQR_=#1+L0C"ӆI Eey,bތSBz`¸gSrsݍE<}Nԇ< ujZ*ޢL~A,zVۆݎ]9.&q-ܧZ2"enhD#vԋq~'&: LxgC WfnA~QBFbqFNfW||bNN|BzrfAFjQz,P<%5M!(5$5"1Ymr1XXn)P9= OCK,҂J 2PQI8>$`r"$ng%\ SR2m 5zhm5 t.PR04Qakpr_BDx6Om B֛UfL!OMlx;Jef nv"xUJ@AImAD`YBl lMb6nԇE7M|}NR:ݝ̟ӊvS!h@0E]ң*%95budC(@ď9EBB21][M¥Ra$zƜf{}E;1s_ RN Umy-:5J PЉP+먣yħa(qO\(G}^*y %Lntkv|U~@gDo! #ZfiO}+\jcS';P iE0iļ̼Ĝ=< 670urD*$')*(d*'$d33&l} di. xM1N@Ee(IȈ6Bx+wVuV H95=b_Ki|φʟG6ƂP½@[PFᡄ f{ᡵ7vMnP=`~sS/ĜD#"Jwm:뮀5iD]P:x;xqȜM= 4uPiC 'xUnDVO-(/P캻$,Q.P EUkfĭ׶ff \+R^f|Jon7ʥVggk#)HIQvD?!SZ4%Ƹ/>M؂1,&̮ 7Zu B0@vgiB 7Z$iY-4PIC' qzq:&1T [ֽ'ibDb%J)p ܚYzϨQ̯U|߅A@C!H R thHPΥ7/N{^1G` WNȲ.s޶"El?_I7К X8HW(;@Uy6j[( o3C+Ⱔ +BOZҰ[0d l'nN!M 1T&hJ E{=/p[75.I 9 .2b-h*uE;{j`:CIˋfxSj@}>lKp-I`-BR* Mn$hC)?A_q6٭7<͝srϹ_ k>e2ysQD52@ "*,;Urbxbq ~K%a @0y1Ea4+ -h`W8JB?3 YWM޾gVk VϚwٵwJX,D8 έ]~n Ptm "%nIk{~J.0]{'uDeF7ƬPN x&KS(*53gM1aeQ!xΕ5u&<^is:?vkٴv! 9aunϏ{}_us:-3X*#@lv [mGwf!Xޏx?|%x340031QK,L/Je=M]OɅ.*eegg0~ή~ 3q~\rbv-lKxJ|<\C2dx*Gx)& U 9sD?i6P6/MZq:j+nAw&nXRR2>s$-X˕}T96SZRZWPph//O`1is߷T@ )HL//O.fpxC+yRO,ݷ*I-.)f(N`)38YT䞾f>x[9a\bqqjQ^qÆc~[v޻3֞>qzr~YjQbzj׺y%R&@#iZCϱ-ԘԒJ&?5m7.^| 18#1%8?9aƓ"1=YeZw{rAT3Ί|Q 5~Z˔CKK2s{zo0ZxO9(X?Uф,+sEb0Maۜ"h F"m{6}zF#ind+g ~?$^xu9Ii@9d<3Zb`M6n1 j t'Ӹ`D*O:3D1,LФ l40000 shadowsocksgSv-Z#@53xkbib (zƅV4SvCzdCƋw -Vxj1qxA|(m ,oR![/Pv6zWZKu Kn z̭-zi>L58uB%14?ٽ޾ʹ͔JkF(I^|ARLMӃۏSw7u躝gGɖ1Sz@:G@-<<zQg5򄦱Ƚ(̬-ݑ,BGJ_$AIE9hLo#Dp4Vjř&2QO8U%Jxf( )O|ިx 3,]ILp!^ƇDVcπT`Rp\datW%Jb1<֗8NE}(b4q^]iA)#b'WsBz^c6u!-ucr&aAӂ#2I3;pS0(e(]LDW&FxٍLD@=7 )PiA&ubk}sw x;G敨&5&0>{G;KΆ`б)q <۳4N=;wʗBo 6oq JŲF1e]%<~,.:DPD䇒{]yiy4.8@W$>Z%ۢB@"ɍXN/$`4w~;38 $y6UuC#ށ(ꬩ-JuC7cBK9Z;Gyʠ>ɯ{ʕtcJ)sB||W_| 'x{yH~\8ijCDD?#F\?kLL)ysۛj&ݪ>h+uC3ԲԼJoIbENJU7{dOfgl Zqߙv*sߵ)6?ԀҔԜJI;=E4`g鳓9aJ2sAjL x< ]rbG[:xx6.O13ԁ׸PF$}S"XB}@jk ;j)?+xSjAF-(0D<),;5Lf=C17A<$AH_ꫯӯz-˱d_ }p1d*0ب hÜ)mK)M0 8-A΍n6OX2j&9a.$Ò 3*"J'Cmn,db!L'p?!!#x<\Iˎ 딵 Gp: 2)/KN Q(yVľshEt/;gxH5 jh)E?n;v5*C5ʨtI*K9FvN0JAG]J2IPGOn"&ie``|Ͻqwe,[*ʰn5,j myz݄ۘ+sLɇb;5kMZܬ2_v"*^mxgc{SЬ<}oNoOoH'h>H0zA{R5;]xmToH篘KHiK%?WN.Ok-f̀^"Kc_5e5[u68WwZ}:>{XJsT*݁H#3蜬})Aj9Hѝb.P B"Z {wFby Z])Pj8 G{J sH/7w#M-Ex^pRlp`uFUcQ5鸦[uTj'`>HG]=}\?"rpdG]^%iP±xzRG74!jYQK#jE ̊RtӝvxAwK6m!WW4X%ZIuDlɺx 2<4K&| /6ɮȂxd A x7XC!ߦgqV<~G쌓"Hy,'- GG5/b]'Y]d4JX!pu$PlbPZ\*+nn")ts , &c·XZkdj XH e?Ux9kfbb̂23<d$!Լ̔&?`x340031Q,+d^:r;Cr]#\`QX\W Rc&|͵}!_ ,9?77?ɷVh<4!M @!$aMѪ|߬MBMI |zЦKrokl*K+/ =̽qOxm/jՙ*''7j٢=Vɱ-cW5*N)N42O.)[hb#=MG ŴEP%`7YM|3.=~ CY@UxW@i$'K>iDT30b' @$,1table.py ]u|To&+\#G&x5J@ V-l} +aY92.;g Bm_,].S3?N]tJ-Zn=(%qֳзdAmX;$F p(|0KJk &|ir4 )6h JF7 D&Rض9"_/ _xKk"Z~C~I-N<GՃSY(dm!d3 wS&|4Qߋ`[ƿG˜| 0iyLn\|k4hp;]禮GMަ V`\[eM=-M'ox,zIt 6ͧ8X5o7x^uCSQTn.5x[9hFƤ9 P]G!iY$Ĥ&q0&muHM!KxU=(?W8#1%8?9X/9?77?O!3 D$?>$x3#k /79ODirP9:@]Z+ bxS\-ctr.json튌wܜB &mRT"nose_plugin.py2N1Mԗ@ l%client-side.json"ɋ~ r-RZ@ ݒqi~*5rv| Wbը'(K;x6fAnrNfj^nqfJ^Vq~CͯW lwrUCC3?TO֯K73ߔPe;ܣpLc&1{xTjA%Ո/" d6,BPJ-It3LyZ  /dwݤm%{=sNƗ'?j& bCot*F$=hO&Je8ld#qT,sT$sߍO>rqOPimlA@mDŔ}<@P$8xʡ*8V@%9NK2Zf0T~fdɏV3VDI+Q?= BNcbR<0U`gt@u0϶'#:JT帙tNŌ.rCYSe=8[X8 a5-Wno"z͇*ŝw :'c} ~@RCn 1}߅ބD'M }usD7~P!VZ *1; SsQÁi'QmI|;Wa+atoؽk;s <ĘZz_nZH;@$'ښPJJOr4kldz`s,lDAs p*nnRZWЀNaݝnڑWp/3(7pp>ܚg2kZ^k{5ˬP7/|Pd?eɟ[uG 8xҭu?FVuݲɿ !Z2 x340031QK,L/JeȑN|-0NĈf[ MMR33>zf~=z %eU0T)魕XIlH/S%2gG?w`s&-!?xSkA&" xzlG%,/Bt;;l 97a _;R2YhHY^{hSFڶ=@1!;v`T[{Dr$?o8!3eX dpa9( ! ц+ e5|&A.,t5sB#$KfAss4%.dx4LB7!,}kA(2- Nڊe;@p V5zlI7m+X`Z>߄89ą>&Břx0vU@#ە.ZcNˍXƹL]ǥ~eFa42p:EvgIQ7D#=(^x*X s{E[E4XAy`6xυU"%0]N?}Lv<8_@7 ӫч) Ÿ7~%ៃ nFc^8:_ ;p=Lv:"cABp7> 2B]C½tp7Ѥ*\ p0M8UP.A#>w}Mmp><]u?_72\nzk8d!F:§> ?FC2|4QF[Ӕ`җ7L- IEAa?!c$aO!߻F 1G&J1eu} 7>u֔ qkУgZ1Vע[N N64?.u̦o4b, X>f>=f|0 wHǴ0^:ilX\ 'd0/E ?s*dH)b!?J`g~J0֬/6?0^a4%Xn(,HEJDbq)奙sp?UBw$ N/oQ_.#t=.g)#G$F7)vicW{G.laeFH*՞ ̋ 8G@b<|;HF8FF)/R*Oe4Z^Kw]|/uJ95<:.L%*ϤlD#ld-㌶4Q.FGB\rT4~3LmӲZ_>JvOz ]e F:ppXA!g MugpR[^JUTu%ơWrqcd&β!'Y+qE1=_"$HV24wMkɼBl)$w웒.Q4ՙbu CdJR}>N"9Oȋ9w|y1EVgNoi_P[P ju'P%mo#FGbj$ޣ9hGѫ| {4}-`m *Wc 7j^jԟp+1o©rtGK/8Fy,EpT: ^f~!l'x?c)&ڔ[ /JRasaҐ=lx>YWOSϫT %a\syA. L/RMtd @"mL26oyqOlC %E/d^ylM3가f*&RNKq1;2"Wܷt=39d>⟽8 *h]Id#::5RQH|btgFK!Ň8ᙉ݈hi&dx_WJl.p!TřyQr!d.-@iK;tCshxھK;Naf N<'Z =TςlI ~߅e:\]L[oo667 oe!/]K/Yd7p)5=ۺK064 ADW7k-k;e"G/_F΍+N[R[ٗ x;{97qy=߭^ R>A\zF卢*H]$7N'+_L @ dx;=~d'ʺJ*AjErjA+SH,VH,( 69Uk~AQv#M.E7/ʾ{qx[9a\bqqjQ^qÆc~[v޻3֞>qzr~YjQbzj?q x;yTk;GIrn~^NlX7adƣy-YjAj@RQjb\XfKWx{,Qd?8xuu2SRRt3  P$QA7W(D77TA7(el2y{_~BBYbNfKB^~IbIf~Ѽy) y)\$^xkbibٰQ\&&2qw| Z.x7 BE=xsPzSyqDySz<“@)gEx].!u9ew[:5*^+Y BiX100644 README.rstQ #0~շbt)WV(NkxkbibNطrFg6ny獇@+x7.!u9ewJ<4~ܚ ~쇅h+@Exkbib (Rm*yn| _]4ِ"o ,xkbibٰQdM)ekbo| <cxLkA`I8kPnkQחKyR}#Y!s7G[ НQ)K9=wH#\x{y5F& lwE4  MxʹiSs%k3غzmfC3ʂԼJyV&4? (PŹF QW74Dc)L<.F xMek͟YD' jr)AZ~BBfzq~JfizNf3Y->3 D!='? , $dHP/-.ЇR״`4 Ê@n\ '=.xVEfa7YF]l%Q=qfvw6b ^! JuwL=]MWud|AGQy/sWH:uss˧n*nS W24CP(!NRkāv7Ofx*Dqݍ7_WEREFyEQ%\|(c"B)u_rnv7 Cfm<2 1Hn40ltԶp'N|qm~+4aR]O9;s&wEHeYY]U.=;yԥ.B+++ͤ!}0ԇ)Sn !08O!ȎUT<_L^B>K)#X1 *gwc饔3Xk6R 8 !ș*p9 '1'"!Ԏh0T̙a9>3!|0` @{ЋH:2MDtcjmkʞnCP"c Hx'M23*n '/77v6,VrAMj3-ܗJ}Nl=3Nɒ!{ xF\A: C|C-3OZ{Fq9&#CC.M؞"ߞ!HL9l`tdG6̘E*D{(y0,ey9⇤{AFD*M>$& )vzy?e[7hs ܖB lɡB'1CKu4EcfyFH(|N^ko~Ag~4~]ڸTqԨΐ[ON2 yG xRn@U+hڦA*@^T QE]BUR]ggqBWTc{~!:{f9sW?&ѽ%ҾnnAK:Qsrmbwfj \i7 c?x6VuD(/8UL'"Tl^Mڣ*v! yU| p }5R9ưRՀ!v Ш7dh{R$|ԩ_HhМ'ϼ>.D gHs9BD1p'A/F d$͕ %C/Fc*+m/Qi~" eÎqLYI^{#s& S(WDxt4vwőt9K2>ي^7fϲgZz9(`b4?iPl_Xm>&i)5%dϖL%C%:Uj_@ۭS {l_G'6FY,4י$kv4won̥IԠ9b7 x@̸&M_1C鹆-xkyR:;&E,y7~NʦhMƟ770 EtK޾ڞU|y3 fe">S.>QfiE7>K.&}ϸ9Ѡxq0_Қ8lEF)YTńo"0&uZK%kcsLZ&$Gox{ygm?v|zjyRAUʱ쌏y,TxkbibٰQdsNI.y7_+$Y'g.E9 %|KkxʹiBH^J sM^)Y'fb .Y`xQMkQeRZih)t$mBئ%E$ {i *.܈ˊJ6R/`dB8sv 6КnMhm;`.& ^/5IGiI;}R ^9UMoLvG}>QRg.i5 %~9tUQhjß,cbV *Ed{c%% =Y)Tjʟ$l(#Yx| Y'Vt4"GihBs"pYAֺw毇N7zXWRt`RjB^#$ݕ ~=26`;2_4vK/_a:gMU&z7t&u'}b@M=~ߴz _:Z]1P[s#CV0P c;%AXMg APj:P1 -duhuFw:љ d5Dsmq,AjFk . abn xX)oe뙅<[3D<_98Q|QQrѭ8Ω@NX2 jE=a-[ #)¨Sc+vox'SF[O'^~GmxkAI+T͏BU ݵz2VJI+m RNά;b ,s&={T=y*3za'}ߛ{ŷrhef-UifCdC";/'~$vClq/@`Z]UTZ k}P 1`8A MRG,*C {4O^<͝Y# !T(K!,XFNH#bW}FyUKR 4~n\C&XuGʀmolo*\Lxr $ȭore @Y/MJ_hPMi9$JhZZ}1U]z$vQO&Ɋ|I"mx!$jh50]V1 =MsiqZ*KkxP,~ =Da1<>\T`]ef3gў!'8WD"H~)|9&Bya0/i[hCn̐;7=]aY<9-sb6G)qY/ǩ |2xLA=+Q> hrZvyR}#Y!s7h͍>ұ2٫O'jRxT`JvDɓv2$?'ngPt:4XjY ۉޯL(40000 testsEX]R`bQqz$wdx{yHAȹs9l-w'N (bzM tVx:uEnA~QBI~Q^bJ^f~N~~W&hyjL(''3kbčOgԘl5r1F_%' 1LvbR`⚜$?y"L(x340031QK,L/Je0-20EA!,/DtBU%eU0ȼ:6wjڏ(|vF2gG?w`mAV׻Oov/$)4]/7`QO~M= [Ow,*tv vecu]ka[358D/3Aȉr9bPeA. 7e6ֆ1؋ڴq_K>1˶mR(&e&1|HZ<+Щ&slmx 58@Ag K/}>]'iu!) B:=j?:ežȞfU%% _αMxnoUx xDA/=$3=/(45wQ>{'W\TenjWWwF'rw17 +)J,,֫aWi}ny!TFS{|YξIʘ)sih>!xT9QQ7LMa4XjY ۉޯL(40000 tests'ubu|(cx[9;@,KH100644 .travis.ymlJvDɓv2$?'ngPtZ/~ҟES)ix4`/tZ,hPbqEP"%kux̲%d&)yw!x$-H8f(7 x{y9F~;\`ȷYSL,/c >~x$fN?B:YŽ(<>^xckfngG̜\,9ix{y9FIl>x5i_ xk˾#d "igƽ/ .Φgw5 ]xƱmfEy% V y)9 V y% )9 *.>g00IɦL2ƛ_112r;;pegLbvxǼOO_/+5/;3X8 XR_jxJ@"EZYq *?<{$M4Y3J7.nj2{o~|' yYO(yA\fJUR4c*Quxrլ[_ˬܑ5b!*ȔRֺbԏl?xF8֗q;Zo~c{na +$eKO=EřsC&&cqe̒ ]׌BbLBLFBBK15^bfhl.Ƭ.YbjftBf, m`iF2d-QPU@ZjA~Qnf^rNiJmqFbJ~yq~rv,]!x;K!9,(1'x)c%+Wr~nRf^%li%EťɩV\  \nHx;rkX,gx]1K@i\$vq ]jRDBA.BsM.Lr]((Y\~/i q{;d>>H2VΌ򳕕Cct\0c.ac$>\ '1iӆqH[pR^~6`ΈI,ZL0f<43DsUB#YJ=ڼċ .e(T|2$5z%M4D5 +Bp$;hUOhtP}rECc79cph%sʠWusJ Ƕe,R~mˍ[Js XJx340031Q,+d^:r;Cr]#\`QX\W R&ݳBTztk >L*K)zmƁ*Z=On8f'D PH.,(g`>ƯsXkʧs D?V2fp\1pV@LUYj^IN~~H]a}~Oo}TT!'?91yū a;Kn~/>P]5+4>919#Ur} "nz mOjVqjQYjHѬ?^\%^ qK5$(5'L$]dɺׅ E}2n?r& ~:r6ksLYIf8+8n,IӜ\v<մUx;|yCH/~cF]3Ua3x5J@9IN -xSX KLhNrW8`g`a+g~̏FsOck#P)F5rdJrh( ]Ad`OӚDX$ M(J֐i#)'8)\Ό̮گF( %\dUN7k)3y!%u\ixe Q>#{s ׆Wmuv}3[={6۝;Ilv{w7W4kBx;>!FN7H/8?AmWOow4ltTk;ybRrF"@TH~(0{7_ߋX>̠>L79'35D83%:׏ 6;ᡡHDэПG'uߋ U|ጥ(d&d2ыj rAv;\_/[SWPɰ<úՆ|_Ɓg;d!@HE@glrUXllC9L͔^X6 ,A,Ę[|fVSiN[=V:3GԵV^nZ`5l>F+4Vu,t\7h)_^UgBqqx3JNqO~9A3,Pq//+*/GyM{Ѹƽ|4FSϤMn諶|H?bf@Vm_nNjh|nxۭzPu ;cfsn(*xxMOJ@傅Dke@ڈgwp`qN̒d&d7(( k+op;i7篞V HFSd/?o٬?:E=tF'[vBR\w%%,$eHB"mDxp!՟)ky@h+*<8 $ӮȮa(40x ȕ*$%/\Yd"-^/42?L4&ט0w4h!4m>L1қ;O kmOh 4"E2(&[=*V~_ߛ;u;SuڇixE:q.Fd100644 encrypt.pyjvUׇJQt 2"Ax340075U+.I+`9h}d| wy]?l[xe 0D-BofU?E<$MڬInh?^R0̼]ZA) Danr >)xi@ؓbuzGJ2N>zÞ9l8൘IwxvPO' {B&s1GquvѷsˍE,3Sˋ󓳋܎_v` ڃlr67 JRKJTM0yύ֥7rJCxT=F⣺:[m2 }4_Mg0B,>Nܛ40000 testsT‹T<`ƹ,!$cxͼyC;Hs {ga f6y6d Yx;}#B^~qd>Fkq$X8#1%8?9X_kr!tXL3 0N$ţW[ l vax~}?#GAeZNbvjd>F-GAKAAW$#?O$X?/85 4=3Or^FL~Mx~}16٨Qø"#E)x;Ⱦ<(;X/8? T) xkd6Ay#nLʛ0e`)#x6}FԒJ6b<) 8x340031Q,+d^:r;Cr]#\`QX\W Rc&|͵}!_ ,9?77?)R6":Uxm2* Jb>"+;͖i'M_ ɾT TgnjRÓTZi}+YjVNQi|rbrF*H] âc *n``58,Hĥ?>ߚ޻Yg@ +I.(JI)+ns;{ERU=*+MA(S9ɼ!g#g9d怃}v,S!DۿcõUx7ɜ!b|Btґl){BjNfyzKEFx7Ҿ?9v(g+GI&J0& { o@2$jzKroox{qBHAKe䭿LsY=q/ *@x``.QĔbʂ|܂ҒA,Ҽ̂"  ain~"DT #!xuQJ1ElЍ.|Mb. ].d:$& on/4}{s~ݚFraC^je$Ur /0+6\: @oS lqdS[0&BxS fl|@yT%3O[cR"O4_-;~a9So@ӍZ1A LcFyhݘX֎)jޢ5;$˸zɺ{LMǹYT,Ai[LMۥNbV S,0aU%_x BI]}]"8?0ix Cbx@p&v^.4 Mɬ*%9\\ @YZ`\Xk$''&($g+h) &؈TR C3l MzEy0JnxyW@KgD8Sw/d#38 o`K}\r:X]f Zښ2k U4NR! VW|Ͽó x340031QK,L/JeȑN|-0NĈf[ MMR33>zf~=z %eU0T)魕XIlH/S%2gG?w`140000 shadowsocksx8gH2wBq.f}@53 xkbibpQkfXպG{O2?eu]x!5 LL\]|]KkeR M2N԰R=pFê)fY$<7ǿL @8#1%8?9!e-=[i]V+DUIjqI1^ɾɊkYf>< /-)fo[_C߿9XHZvbxkbibٰQD|\=[B"M ; PtxKȮbD۔ 8h%7N R*[Lvy5}~p$jeF*vawc~ߠ ,# %}xQ=K+A%D BT>Ə؈"Ag%!f0;wS8 a B+k VwwG,pa9DKq_bJ=l(t D W6CmW3'"pUKk{( P"l`3P*QC @#ouI5G>Jh ALJRؕ}4ϙ>CzKu'WNOW*GЀϨ?"o b:T>sPԚ;"53ë莖͊*ӭwIHjHXt#Īl$v2v&xa$QRҾSVn^ th^NXgx k/`1~lj֯?[eqz|2ohLEPeɿ䩔HGʎ͟_$#xen@E7WqB$62iZTT]t1?Orf1nVAIEf{ 6b>{_[dUME%dNi9Λ_tף`r^M|)} ;=46v:VFK6*6bDdxtTiSiwmXΎܙBo={ C9j+`=TIvюȦIlI\*OR?Ha0J2/盛F:+6jŪ7Y/yq,%ERk(8\F)!4;y#8B;*X_{x;0vd-E&?r*n)眬%:d6)ɒb zsX "($kN~'-U_\RZZZkdjXK|@:d*-xkbibٰQdC|qMXV4| SKx{y5FC"!3+;bU0 vx;{2vBZOjMfR,)f7I .xkbibٰQdnbfV:%jnɇp Lx4z!L9HSzo4BaeU@Tyx8d x340031Q,+dp.M 羮8E!DY~Aj^qqH%Ŝ#+Zcq|PUE&) U+32 ?62!F+.TUq~Jfi.HѺ,&aħPE%I9 5{2_ %l׌=cz#P5%`=tR5bґMWzKxuRo@JKPMܒVxMU)T!0TTD8$g (,Rl؉s:/޽}kWLo12lq(.aQ#vбoa(9ȐLajC1 >OK;FR lʡb)A\0 p 6XVs< 49"B ckq Qmf®]ַ{~;ma_vֻi@uBPɰqn&RA\HGuaOv&ȁ!G%]sPӪ+U)V+Um[lV[ZUe<[9rX|0č<؟5L:p: &1*!AM M 3[6fm uXM8~,jK=O]q}lGPU u6É7z!ObLF$uWj6P+ugeH٘hbP]NLm'Wg}`W'ѣH`[wŧx\R]LnVl*%~NNԭBl 5jqTmvHSa.Pv:q=T4'>$ ՐxjƬlQ2%jHn$/i,(kBe>B֞(K%Fl~~t{.  bxy]s d[>Y@O?Dk5wq]dSY]5Qyz^{-wG@UdH_+ ˒#qu0 KrRAjB/gJ;p>Q#TMiI&EO+]jﳅ/jMtkb![Tbx}PJ1* ,dFb. r+R$dNBVH?bCw­wE` {N9䝼5.@.|^fƪEQp)Ӊr>B)oX3j@/\x9ޚR1iEN RtK`'|-cTe G%jRSp*,\ ]͵[`b+euvQQjAA=qBom#A7xMɥ Y蚼 ; @YR0k8ʑ[ǁuՇ7eh#q)&SHʒs޺.PrW$2꺦wK%U*󅜖@ W5Y[<{z}:y{~:o;(˚LvxSNA DԄXDhjH}" Pbӄ]̶/W5Eq^s=ߩWDK͡FMto}%e vs4jKx2!gO uGTqGZ@ʊy6F-5Ρ1B: DN:;ڒJXV `"̐"Tx"NzBr4{VnúgPt~7raExJ^'Г۳57o~N=ϻ K.ͤ8ba\(Mį?> $֑*3v.ZLGaQ6\ŁŶgͿiE.8@í,X4y?OXGWO,TzϪl%Ԏ IFӴ=Y:>oC+}\DÁ6y#?/C-.(\IrVgǃ6ؗxVQo6~8`@(=4}1 n٨}iXSׯ`m̫ц2vB (j:vP{ƊKD 1qݡ[7 ܂lS{Uƶh+uԼ:oIbENJU7{dՙ*''mش)RܜۯC)*ONLHsU}_Aty۷5UZTZRmYՑBf公5$(5'Z]e %e6D*+MA(;ٛ$37KeZa^ɂ{*xX;8kgH6)9100644 common.py N'pzF>> a scnڪA⡯rpǹj 'gx4_g8}{ <ݱscܬnv޽ u Bxeapʌ=W Wh7^鳩$L ٓx^AsH̀܃F";F"#5\sx9OF`JnL+9A I3r rft=xrU,+xUQN0 A p*I"*u``B ,؜B~'H OXsM߻ww?YJ;6QW~Ymgvw?^6P CGz`CWp'rF wsRY&%5.:Y"ȑg)Ӳ̘p7Sx8 B\y2  +a1WMGx. J@W<+pJTVeq“qeF5iUgtyZLrbe8htwYF!5C+ɑ%pUH\ <*C. sRT{5Av}ܺ@nn, ˯3dd ,:.ְZEBRvNn ~l3كlxnCL! !sxMϊ1ƙa ]dE4vO0B5$&ճ;o^= wA|tOX%UK}}Kg**IJځTU87e 6\WFsj t>%4ƹBxh zkZES;l+r崬E UFy>' |!ssMojTTt6b*N/afri5o*Mpˌ^·!ApTYH[cg郶V%'Qn!m䰤qYtˀ ( ℷ:/%; ''/'K:N3@6o9 !i~O usW%Tgmt*M D)eG]ƶH"-yXz`␷wٚ x,yD{3 ĥS<ȉL\T$C)FO.uvw6wJI*S)x@"x*fNOI *s\F 9vN8B/BFЈtAZ`(emNS7?n2pc:}3&#|[flFKcVbpCNgèU5֢6[ˆgkޭ|ALg7g}Yx: R(N▜uZS+hY0 Y2xc^EM+.$PRT x@FLX79,(1=U]AcG ,u@lBf^L^qIQf&BF4<;[ +Xr~N~PzRQfzFIzQjj:X-[jNq*D \UejNN~9DdkF?Lœ2AtFiQNNf^ai~I*M: `Ӏ.BmjErjAkQQ~jH@QbfqBI~Q^bJ^yjGHHX&XGbAANfrbIf~d9& AD*G(]XmɁLDnxkbib,l7A  . o ,xkbib(ȭl?úgZ4DSjr8jE ,xkbib(b|!|.,*y9i( &mx1KA9ۻCANSfqPHR$JJewg֙ef.z6&Z$.`ac/h'z޼[9'<&yY*#S;gې'B*!b않C#}d#d:e3іuZ"⇂&-EoA&MqU4};_ae3aLw:RuTu8 1 &?Tvve&Ibȵq}tQq<GͭB$F8η!FkpSkZ52'r:ʴiA>Bۀs kμP[Tz f'lԗLOQlVTaV-׃.g,x[(~UlC|VY7kU;x[qW}C|VY2m>̑ `Bxkbibp%FCŊYykm:sbl11Ғ̜b,῞935'xkl(r=wo~$~4mγ7Q3d,wx /Iz2ߚ9`qI@D?px{y5F;d\Z"ar`F+! rxaa g Z"5$ ~.|xkbibٰQ9Ҝ;r/v<\,vCX tx4=+D^6o&E YP}& wGox^/T܅ͨ;MH停"Wx[p>~-X;/nۨg.uxkbibp%FCŊYykm:sbl11Ғ̜b,῞935'=xkbib`)˶ba_ϯr9iwyVFͿ 6x;#uNjC/;wN~rbNF~qlfx'f&n< 6L?m: =Cx;'uFjA1;{Hxkbib`)nxe{_iwVhF߭r ,txkbib`)r잓^ٱqq\1[|l7x;'uZjC.{#tCxT9Ii@9d<3Zb`M4A\w""C740000 utils?^W9U|w(Fx 0'jKIn,Oxkbibpķ[jYҊ柺nb %9 =mqX={ks7gk+vlxkbibٰ1霖ɭOJO|RUSL @$[jYҊ柺/-)fo[_C߿9X+(fxkbibpDwV䳍\/okZ=JK2s{zo0ؚ}Hx iFEK΅ʶ߄Г@YQx{yBȕˊ{&߭vvߍ{7xssod6sCQx m Cuҳ@UJx{yBH);lOsv%굡rF 0xcsod&sko`,PPS0TU0 Kgx4_u)Yi/ʶ1Gsc wUB\w%KhvJll~xc$1<bM+<[[;;  7e!xkbibٰQdm]SRJYe/혚>p!F'(Wx4_Ղ3?U+[pXsc wUB\w%KhvJpxkbibٰQ؅e[ft.2Oɇox{y5F2^-y0FdAWU+DxkbibٰQ$K#ά{߱iCfDx4_+~REq.k?scPlh<.tYý @"x @iϩJ1a o#x&CxyV&YY6tKx89Ii@9d<3Zb`MagSv-Z#@8 x{yH~\8ijCDD?#F\?kLL)ysۛj&ݪ>h+uC3ԲԼJoIbENJU7{dOfgl?URk2WQ_w@ (M)(JI;ٛ$3f̴Ws<̰+Yyx/PXIxkbibN9gp\zyꍇ-xkbibCDno'V-qSμݼ<}27K x340031QK,L/Je=M]OɅ.*eegg0xN&.^Ca%Eez9 UJzk%6z)˔~I5AD_r>?#OfN 0%~!AN!~z) ,aS.L}iP>ή~ eN?ڗ?#.AmTkp^f~Ws߱7ńʂ\]|]AWe?T8o***.aV6~a3~KW)eb )Iy 9O>t[B)N-)-+d8~|bgHpF&@ )HL//O.fnL}uVYG}\U%% "mzy+l_2%iҒ̜b,῞935 {% x340031QK,L/Je=M]OɅ.*eegg0xN&.^Ca%Eez9 UJzk%6z)˔~I5AD_r>?#OfN 0%~!AN!~z) ,aS.L}iP>ή~ eN?ڗ?#.AmTkp^f~Ws߱7ńʂ\]|]AWe?T8o***.aV6~a3~KW)eb )Iy 9O>t[B)N-)-+d8~|bgHpF&@ )HL//O.f8W}{^bY6jpdƯUk4c|iIfN1Cw}[?_ZNURx340031Q,+d^:r;Cr]#\`QX\W R&ݳBTztk >L*K)zmƁ*Z=On8f'D PH.,(g`ϵzĚ$BMvZ[k>߾)_x(5lHM5ǎnULL:LUYj^IN~~H$vo"'ڛ=YMMrs@jfzzJlZ|Sn]Kסf''&gԹ*[N AMOqI@*N-*K-){u6i !I^BVχV\PX RvCdGcjL*+MA(;ٛ$37KeZa^ɂ{S;xkbib (Rm*yn| _]4ِ"o -xkbibٰQ$If|} xkbibٰQ!tCVx c˔P|'cK $zmxkbibٰQ似q_{ɻӢ9?V8x7)Y F0F^ڑr^!^17f-Dܸf`xkbib(Rw\F1mt]1yc+ x fR߬_7B@Yx A:d3UЪ?ԏe$)`xkbibpdKʊĬۿoBDYL @$3Ǿ-Kgo-}} c xklpYcYfϗ^ cNμ ]l0x;IsG٘%jx >gC]o@@s8 x5jLeDkv+ܟU7Plh<.tYý k_xkbib`)VՇL=Ulڍ[ -x8`Ox@{1Det:iFTUX]MOV'||'?dSb(,+x Uj&|F5@ x{yBmdV} ̏d*qJ# x`BA~jG?k,ZΥ(r100644 ctypes_openssl.py;ݙғ[9{^WdO{ @xrhϫӳV?4/%Ƒg *^xkbibٰQċeLE߱F%bO-'| C8xkbibٰQ=@ &kU3 #R z7xךsDfىnzo![qV ) xʹiBHqY ˚lA ,X(t(E$d8rzrU{# F7hW3*) cq#57"\V+8Nb-E' i~ƃi,kaB-0tm9AK|iw)x }wp[ gL9 0FrXVK3R x$'O?oW%[^uM8Hvm) |x{."1 FuFfC=LrL\F0I1ǘ¸SR&k3otHMVHəbW\2Y568U=S!9'35X!?O2H!'?91G!Y #?/XObFIFBB~D%D'WZ~Bn~QBfXy avٰ9.xk+6TpjQYj.pq)+++x$L:QYAMm>F;ThDB~Bxf^J~yq,Dohqbz9Ll9y%P'a?H6jr#*T^78#$] Q U; "N3&9&sN^%nM3x+6Kt>|싘63sY1:^Ix -ߒrOިl1yxkbib ({t'2^ xkbib (w~K訚 a3ِ" > x340031QK,L/Je=M]OɅ.*eegg0~ή~ eN?ڗ?#.AmTkp^f~Ws߱7ńʂ\]|]A9xΛg:ن҆IP08?ZV-|-Մ +~BJjRfbgkrzo?ֆPcSKJ *)U3pνiC3Sˋ󓳋arib8Q.wb &k2NE|iIfN1Cw}[?_Ze[x]bȫ2[Rȑ:P3G`(<[T100644 README.rstڛ"z{Ës;C|SW<,lxkbib (b+y nZh!Eޯsxkbib,?F--.~&tٌxkbibQdkWшF< VR尖 ѫxK100644 README.mdAt". SǏ100755 autoban.pyN%˰3a_k,D * xu1k1 w7uڭ@n=OM., t(j^$z1TUNͯ icC7@=)472d˰W2 +tMM$W+mxe.bkcq2Llkzxq(Ě.\K#N@R #gA vFE(xX{YRe̤ևt^B.D~'uظGηdk-AҀU¸^_Iͅfn x ·؅Ӑh߿Abxf /xkbibQC?sgNd͛У~xK100644 README.mde_PD:tG*100755 autoban.pyhK>S +=/i:x[4Hgxkbyļ# UxS{kl^> 4A|M"\ٖ40000 tests+0~Qc+Md:!$nx  $~1(rKyfx{y9F0KMIã8Fm\ZXS= Pxkl(r`d79EkjNY1 >Zx/b#_brightgreen.svgP&2k?xm%ɗ"x{y9F5uON̿h9M ~xkl(sIeTn;i ]3]mx{y9FӺoU׬v_`r9Z Wxkl(5i]Io>z{qc3s bxmF[&e4ܬ_Tx{yC7HX}`Hҡ\#BL  H x{y3i/ʿ|2bmޏ.x D*:b4Ծrx}Fnx{y:Fo$,^e{L @$5BLjm۟A e ,6(x{yC7m;mmZM委lFrx{y9FBۍ{YV/. xklYrZk9 NWg>թZrl2K mx{,tFp L28T&fi _qY2$1Y֡Ϻ߁Ė7C*yrȖ),Y0x{y[{JN: }C٩SA(k3x#tGhC*V 1sx9V` gM^xx#tGh6$C#s= 4TarɭV Lx3Ftr3Us@x$1$5_5W2N{X8(Cx[ömBʛRɥE9 %%) *A>\˘b&_f LTxT9`lm0dsMa4"/"ѷ/ 40000 testsvŲ.@b;?F{GV%4kux[$xCd .dxodaemon.pyfvdnk~pKP&#^KmJ Y#9Cד9J=b'{YTbJnTS^|$4V WSʖ 1IxJI>rHJLz9jVUЉɶ,100755 test_daemon.shu%"lړ(hP ϲixTN0+W7 ΁@1$@1NK*B*rwfvwFIfrc#D=xÎ<0FuVrq5i0x*K@:-"v 5'j9@y L`VMb">S]k'^I7mM=?</S0#;CKF1bx CW)P=(Җ"XʱǼ/29XjW6IIzgUВ4OH[Z}' :G썇Jprc.z w,yO'!8 9x{wKQi^FF0c&.0N>Ql5LbgV0Nt_7A Gx;ŻwC#OnvJfnBIn*0M~"?t&A([d✓5P09E:,br߲jLcİc {w:2x49%o㍀;2 ^^^M.yϘՎ6G#jIbHrIGfLdxB;l;Lvx sQv}͓r[R(x{y:FWz_iX2^1E2J\JRK*ϸg6]9s$Ex dŠ 6՝J헀b0bxrEl]x[}12*8?xodaemon.pyfvdnk~pKP&#^jw]MzYH)l);9鉌ZZڱbw-WS^|$4V WSʖ /4$x sQv}͓r[R(Yx{y<5f#r?O\yoTF (xͼyC;k5ޝ˭f\f[q \P[@ٌ H a x{yRyzMN^QgƝۣ Yx[H{C>6 Vvx m@u۠kE Ax֔K?UM4]Ng1lYx[@kC>Y$ovxE:?YKI~yo_100644 README.rst?߲X/Qѓ0uIxE:_w{.[100644 README.rstIDo1FhG0, `Tx^:~価Ep뢿100644 README.rstղnqpI>0WF=~O zͯC\ U+ax.;w|$Y1 ai2x[@k#V<Ҽ uD7snj Zx340031QK,L/Je0-20EA!,/DtBU%eU0̭co^O\UΖ{"w@Va.6T|) t sMa8dtSOh9`x:2Ʊ:rs.ٵ-*uts c=ru;p3TY+ȺA=Ÿgd3(n IBUTT\ yuw ZZ ω{\RR2>s$-X˕}T96SZRZWP|#D}A֛/02PR_^]أ7;nw59Q'*AT3pY}Uvs :x~価Ep뢿“  V.xT9Ɲf񑢼2W2M:4F=~O zͯC\40000 tests_7 ۵ 'xͼyC;bڑJ'y93nlF  x2b6@×EXD1E ,x/*(  kINTout) '3>x Agi&[!{7! 0mxͼyC;HX؜37De};y6 x;|yC쓬 ĽVU- CxͼyҙO}7>lD5-Db"έ\l{8cT qrYoP<@3Sˋ󓳋l˺c_⥳ﵮp9$;'-v'zy/KXux;|y2] ܎ϕ7e*SÍ 2xͼyC;H!{SmuX7ɳL+Nx;|y2#_p/*":!?qq]܌n txͼyC;HRo^f3=4y6} Yxq.Fd1 -PNx W[`d=ҶpH \x 'ϤV8*&;x *x Սͨk!<r|ܓ Cl8x|S)?`n$ij  ~x wн- ^9R\֜ l CxjvUׇJQt y]xͼyIsj>=a0muAg8yG 'jx ~îo(Myһ]ɓ x ?Ѫގ^ahSr yx j+s ޅXDᓛ /xIR_镺F$ oxkeoe,]lo'DDtZ؄'2k kxۭ:KuCYBw;xͼyrF3{s؜Ynpd3f Bxkeoe,]lo'DDtZ؄'2k xͼyBA-d-؊шqמqMZ: PLT?-r-mj6x a8I<uF fx7\಩>)O)01p8I<uFHIxT9Y*뇠nG;M|ӫQ= M:4JFAwvp40000 testsԥ6eiѳTnCTQ&OdxP\಩>)O)01pղnqpI>018I<uF}#"^xͼyC;H?kgv]ȹӛ}ٌ zbaxt:Ѡ)zoMj4k4Z11100644 encrypt.py CC˯ og(+8xx>/YFN}'@9dV([S^!i44^--[2;xL_$*Iɰ3`Ts9P!Vɡ4!Yz7xLiq)7 ~㷅> &0[x f\c󜑭;nO&LzK.x a CDآYwihuFb/xͼy +Пkl%7_y_dc7% .mx ZZGWUckӽ' 3T.x4_LY1 dg-s>xLiq)7 ~㷅> -=wx89d'HņnQf ̬zYyE7700nxͼyrF20C>}[ ] >bxƺuCHL3 3mr0;}%:j>& 6x z$/-hysK(=[xkTx lNNiC+.$PWZa E Vlx Rbѳԗ n@ +I x;|yC;ʊsUgtj50 Hx б!N|̓f'Z hx7+E5on8eDJ0& { o@2$jzK xaapU$_RWϗK[ulɞR3 ix I ˇu~R B x7 #y#BFwtV:9J0& { o@2$jzK~?x$~v\G2$#)#xͼyC;H^GZ9owsO96G>5m[1\ T~Sr#1/xͼyC;ȯ^l]V::zlF  xa•Xk5h1 jxͼyC;cX'CSKޜt_n0lFLsx]:>[QaxUj100644 encrypt.pyҾ?9v(g+GI&J0& { o@2$jzK $\Dx6@i$'K>iDT3{!-:0fDy|cDM4x7s |l~@33S  HݗM2/.oGx4l y<`*jj_P豔/ w!Q[{\P.BxL wϚ〙d2%~dS\1|M#MXH.lөQR U~^.$Zx7ɜ!b|BtґJ0& { o@2$jzK CEx;|yBs4[=[Uf})P ,xJ97FAb& mi100644 CHANGES[$obFkp=F⣺:[m2 WZztꚼ~(U40000 shadowsocksu]͠ݩl40000 tests.gyLQc#wnN ExͼyyI^ \_מwܸD5N#ذI$-5&|J~ńgZj˨3Sˋ󓳋pvoZѲj-o!JRKY/jx_)-oc z<'xͼyC;ɮ'y ohf L @$#Rw߲~y-IN=>HxͼyBK:*%L޲~ތT +x^97߄ ]e:y#EM: x?>hf)@0ei]40000 shadowsocksnJ# 0/v r'W lxͼyM !fU\ńZb9 LL=]f=g\59c]g};Xm̌ oL @8#1%8?9!j\NZJ2Z1 R JRKr{Y&kv<8x"FLA'xͼyrFcoscuM )xͼyC;K[̾^{M<ٌ |x Y`;oњ  fx;|yC֕$Vt=yUfF*FodXxͼyC;OY/ kzE7LaHclFI xɜ!b|Btұ1 xͼyeQD2D'x!C3gG?w`S;{6g+c&ShԘX1*}{VٿNk. P(HL//O.fY3TɇUGe=C"U%% ܬ5q1F@(xͼyC"U_V[*B P(HL//O.fV2aM) ɼ~Lͨ9Sx49@<Az9E] MZT‹T<`ƹ,!-kx{ȺuC?=..rf.sN& kxͼyC;OY/ kzE7LaHclFI xͼyC;HŜ5Y[(J*DɳY xµUzn1#Nx{qB;'d׹KlT8l x 5z [損 Bxu{%+wu۬ m1vWx{qBH7WjzVh}K&>(x ݥ :8D"Jx i"x;|yBH9.55Ȼ~gK8Őw ^xa59q0\x֘us~x;"uPj]<<sO6౅Ңx<`'7KSbx89y!J ' W}ȍAM:$o"8`9gIϦ B jxkd6A3|x;|yB0%w})ذFxaŧJ#h~|tQus#S"xA@Xƃ!I4-&ZiTPNvش3Sٲ, 877\b~^2;<$f ХMeg>w0GS]P_kDZ 2~ ? $ 1T!4v+J wyC &J$lG9UԃX<] v"|K;F(-\>娚AiF>}(H"5GwN@^M@0 ?*mǘ$KbUH;W:Wzʄb[R Z#?2 ϡݡݼ>*,e?&(I9Gmkn*F|U}=(m.A*5oQif[FaֱSW[xڟ^ .bXd 1j7ބ~u`x ج[L 8{4쓛 r9x;|yBH⒕%Hɼx|S x340031Q,+dH 48}QɍzW}`Q\RYZ_W\Rl}^̻!bx+/^\#tK%q4K*KK2n^#ԅgD]95{>Y/F2xSj@Q]֖$PK]"e^(""^&f83FOw+'l\|ߙ3|'{FGdBc$x:e4bF7w&ވW+g4iZ9RϒrScfhBo.3/M4|ʁ;0Zٮ-ڣ7/:GQOټIH}ԉEL 1׭Qm$YZ+mQU:r!gPT  E"U[FxsHkX$$ CH29#k%91f|R}:6^0ؤS+Tsv`ԈX%8&5xXdL;G& Mt!:x4,I ݍƧޢ]NzNZTP }g}_ђ2p{ կim>Ng'kTM$WxuQ1K1]D4(gD a:KC."!wI`z IN<uqps_9y*~{{Kw?Zo+)SRBs`)Uڿ`C0h,8nn1ņz8C0/8".^#.4xTHⴂ[Z] 9II&TPql YޘuuͤPFDWՍ5ʗ_o mm!QZw܄$#[OIJ/eT#!i5 ɗ_2n`OctC8?͏Z~ͭ~z"z x340031Q,+dH 48}QɍzW}`Q\RYZ_W\RWYeվ.I!OXlT8@5`)=u5]u.BA%禘T=!TLʖ[TUqbNqA|rIHeɴ鱲g>L}ivuXN>xSj@}i_FZׅ2 $Yl) TAA|nv03i(eAg⛯_?8nIЁ̜;{vYJgy&$Y4ͧL!JH(G 6L|x*\e"xbY |% !N !ϧ(L6Ά,@? hCRAD-?U_zFar*^*Dq{hR@jmMT]n͛Pt nrEg߳0c,p_\`XH܁ dA)9s+'F<% 䥚f359dCw+ӳt(| #ujWyƔtNtwlb/YiF+ >ځA;mtI2ĆVn!y7 :9nĸW7= 0-x{qRc/䍜97_YJx;xqHͤEkR[n*lM(kbH!ʪ xx z] k];ǗH(s kx;!.0A{sv9[xͼyC; TN1㟫_YDٌ x;|yFF"R}crnݽ8^I Fx[4!hɛXӘS7PSxYxh T( ty&lLx `1l[&_hxͼyC;Hl|ƚfg7[Ɵ{_m5ulF !x;xqH9{^Kq.ebbH!Z ,x[/`%l&: i9)\E%'K lGUz9(.UlAx>`fUH.'x .A"rO(}&ۓ SC1x;|yBVhϕGն\=$~чAKrx89Q}н}yma[W%kM: b$xukq+!݉ ړ 3sx;|yFF^VyWvl#{M>?j oxͼyC;HR9W:'kٌ Tx7Ct\ B8; HURk dwxF}V$R `xͼyC;Hz49_I1Ǯ{dlF@ Orx̬[\UkS1@`x;xqBȭeB6;6rYbZ!#xοMC(D]GHgV(9: @N|bq|ReIjD6lR ))@uʼn9%~y: :OM@7or!# LxͼyC;Ƚ5/ym[mAIٌ * ^x;|yBHtrیZ󴟽~bCF̟ x;xqBn)bo2i,m ,&/xmN02ݒH&e!6ˉ"-۩CEXXx^'<{{>}fUw1ɥ%sY "8!hN-'P }yA0H.e1٨z "aP1("p+dL3FX# ]P̱OOږNN݈Zd"kc݈Fspn=Ӗ^V9TR[t n{yOgmLp sPyU iocl;肣jbK dWYSjCuՍzlŎ\)z~H10xͼyC;Ȫ[;kw(NRvқkmZɳ dxIޔi;Pђ)# [xͼyC;ob'w|ǬY%}uчɳBZx;|yBHiG7Nryxټ؍S E=x;xqFgG&{}S{MבMZxͼyC;O8O(Ιyٌ  xZx;|yBH7i68Őp N>x3@|T:Ύ_&0|̿ T][aߐ726-ay(x{C}"L<ļT y6`3Zx4yCg.R'7:=->ܮ+xTG_ ,x[5VY!3M!/DA#3/-? VVH!1/E,``g`iť B(3DC=$#?OHL!H+fkBToNfseQHIOIUOM,'2>T䢸-^'xͼyC;ȮOzاlV_ٌ Qx340031Q,+d^:r;Cr]#\`QX\W Rc&|͵}!_ ,9?77?wf14:¼b PH.,(g೼t@XNކ__=w5%5dtSkZaBOaRJr @Bslܠ{~K@u榦 9ɉ9 5x;!qJ`i ʼn9ʼnF y ŕzEeѺV\ @VP_^]\TYP[_T\RV+I-. ehug)$ SS6۲1m1fM4xU 0 DwJ N c"6J!_m)A^Xm{\Vܶa53"yr$M@l %Q78Obۆ?OY+P}ۃ̡Y=m<6OA.fҥ.H. ]5 wEX,x aztꚼ~(UܓuF=/x9+\ۏ i9D?ұMnJ-xͼyC;I 'uP}l&/vڷJBIjqI1J֋̶k>aˣv]+7x340031Q,+d`;j^N_d?ߓlQX\W Rش|X-;mBV3TYr~nn~HQ2za)\|~;Vp($U3رf sVMQIw ݤՀqe{uk5^SUW_Re:,*r8mF2@u榦 9ɉ9 5*U$ƻV-gP38ԬT: Q#%J?^S58,HqLɥ[ho԰䂢ԜJ7Y_ѽy`rΫo^܅*+MA(c->[%(Ýʲx~p{T6V[ۥ ilOx3@/IGM9cZ~@õT] ַB`eyDx$]dC,ƛX93 A  O = x >:xT9+\ۏ i9D?ұM:4!=+v]J 40000 testsy7SzO>= "U]%ix340031Q,+d`;j^N_d?ߓlQX\W R0Gs*'6 ~UR^cn +ܽeb E% bS>V񨕫VeFPSRj@襉Og||'TyNe/?Kʹ#cLG5PBN~rbH>ߴAw?dU:(oԬT:w!.K\Uu{NYũEeE E-NtwMEbwɇV\PX Rf/fzwÛ?vbW|ؿTYi BYʵ%vˋ7ݝR^]_UwS0e%9`dQ/1umK9^x7ظ|T*|r~FN2 ttV?Oveм|.7x890@GU[rLct Mx u]͠ݩl /xͼyrF#y:_&l&CW bx{u]mo_HZ#ByR Ə gx49ldi1$MZʙ=my0n nxJ97ldi1$100644 CHANGES[$obFkp=F⣺:[m2 WZztꚼ~(U40000 shadowsocksC<+su f&TY40000 testsʙ=my0n 5NExizqӆי7pT^ 9n axJ97ldi1$100644 CHANGESH>* n"qÑpizqӆי7pT^ WZsp2q[>` 40000 shadowsockssA c2X40000 testsʙ=my0nfPExͼyBHoܧU}kKzlL_a)-xMMfR^GMU"j98ݐݥG֎]tVoS^dJH\~H{1$s 4xͼyF\rڏZ_P{k0÷?{q䛃ĂQmB_\x( {N P(HL//O.fȽVN>Ҥs-V*I-.)fp|}9u,T]$e:A)xT9pϞ#V4GV꘴M:4f!4^2PYMt40000 tests-TQc ir1?g(,(+f =S^%,VAviHcG]DGx;ҧ;\!:-9fhx lHޭFH$L] Fx lHޭFH$L] FCx;mFL362OZJx;|yBY|io iQ۳?)XxͼyC;\ƮU_lQةoٌ M Z$x;|yBnc,W\m#o廍S m x340031Q,+dk5):w:޿dQ\RYZ_W\Rd{>]ܬfy*5)6˭_ш6L\suB%禘T˧|_ cmFPUʼn9ʼnF%E %WGtp]j,Ҏ=Ng?x;Ow<1 ?^xъ@A++"(GdK-j;AD&43s}o}7piܭ69?ί1 C*U,rB8JqcxKSYP0|WFbbD=}N% 7< !$)Et\{7ݗk#~;hk]@1~E|Hc)4}.wם]~T":$\EL{ r/}oX{. hPK6 uAEn/)F9Z>CvVќVg4CD} VBYci#)F M2J: 9'e` ˎOZ1;n^bJIqn 6˿].3K-[Lf() Z fу-q~&'rx $d@_x tx<Ӗŝ\AX%_%L1 ux;xqB ^78J};4ę };*xj0oD/J2mHB/v׋Aj8IJïP'eַTlt Y9[,UtI(ID"91Lh *M2ϙ{HG⼮O/*LJwf.3RUME,: Ǿ[ݮL5Ψ<~`-ﻓ| ʗyC\ԠB* @(V-J•Ȍhcs,74,Z]Q@đSM4}!)$iX+ A^hój4 ak:?paU;)[xN+bq,R[&植|hhTdM;v CooC+9x;|yBH)~H|floCFҾ x340031Q,+dk5):w:޿dQ\RYZ_W\Rܳw^\Ef<3r8kUkRpslM,b.RB%禘T˧|_ cmFPUʼn9ʼnF%E J+>3lVW~+}~6݆K~8x;xqHMK5ޣ b2yp41/ (x;|yB6\7O8Ő x;xqȶ$x/).< =1ǖ lcxۨIqC.5|L$yxͼyF\rڏZ_P{FYxͼyC;-. wWt 0Iٌ xu]}k4φA 7kH <\xͼylaϭs9Δ'?fW1ʍ؜׻7J-yiKy&@P_^]`MQ߂9* 0]Ĕ QUZ\R̠}߇ g :xk`i`h+(fnk q+ԣ&*''T2D{3|V_/@ibµo:&;2Z&q]M귮j631Q(I.(JI7חS3~1K> 4,śN)ٯ;YwUH,xk`i`(rpz>&},% -xk`i``%0Gs*'6 ~o#ÿ rxͼyC"]Evl׸};&@P_^]`tJ%ϼbj/S*8y6A 2Tx \fĺ-+c'64R %d.xͼyBHq۪3>9F/}g:ߍf.O '+xͼyC"U 󁟜a˲4% P(HL//O.f&}oi}_urv$OͨRx8\#_HfD@H1prlA$y͢c xͼyC;ȃ5E} 8W6\xvSٌ ]-x Bj#Jq A9:O;p0 >>²דrkx xc^Rx ~x`-䀵mea'(.> A9;:O;p0 >>²100644 tcprelay.py̷NJ3>VFK(Z/x  1w@sș4ѓ xk`i`ٰQNKV4zk•K/=0y+7 P xͼyC;Hk܍EcŅszkɳۘ vxk`i`(⭒'revʾ %?f,V xͼyBȩ7 Z<[UeCǗތo-xͼyC;Ⱦ݆7 _zqia8y6 Xxk`i`YZ#H ܝk֟-xT9$4V&8iQ+xߢW5EDZM:4<^4\Z40000 testsƺ]_'C;̈'c^%tmxxqD#S7xHzp .xͼyC;HzE 2a+jٌ Saxkfif*"vcnpiq[cj}"y,FDXxͼyGvۛWk.)=co# J#d#Bџx2!D(D8#L/8?PIӎv[sJ2D߹9CE>1VU93M @8?983ᕵ\-EoKyQtV9tcMosSSJ_6ag]fogƶ,f&&`%9%yɕ jCUn%+ /˞dɜ?O_xk`$(K/3%5 g]?sO!8WCxmUn6)"CRlYIԹqh%QTHʎWF~AD9̜9so?Sgh1~FlRC4ʋr8{²ĸF#<뀣 F$0&P2]ԇDs 3$BpC4lbfe 8u 'CJDH~S|kI$^ៅ, (<JXƹ5rJd 2~'8B)Sq~n+qdk<"1AALƉ̢"*'>@䡩PB  ? #ۼѐ7Eq}6\O?M>6'>QiX]>RSImCRHhALHC &~"io}[] ɅI OBk|P Im ov+p]sn*×E[R'!q.-îގ{Ea~DiJ2Owߝs`$USjVc׭iו$/ϸ!'H,r PEIR7WE11-HCG$V_$xZS<52a3Ew2-/d8+6ϒSo՚JR +rM Q ގ̽vj.|7v7'Ӑۼ"gZҜJtdf0 r#9ޖgXT"}S,?۩8ǚw)!E?5uyޯw!pz%f픃w37-aWp9?WLw3s& ,9 s&GJsA=Jq8 G4IQ垉9e3nzQlj~m~>6uF/γy2xUN@x:1m@; ۝MwACx5|3_)7! $$WiSH;Ѐ`C_bNXz ^d$gg1Uc[+aM8]^Fg+m=p]o4ŋTB\CE\ ='wH#-RAtëdzI Du>MPbǮKrR.t'-7T" Q7rM_Tv:|3XXB!io*R[grr%P}o~i?f߻P?gT\/xeJ@IzsP/ ZQh7ҪhaE+T=l0]w7Ĝ|ŋGP<^} S 8a{@(F4yyb,ABR_t;g]@yc?3Q!jۇb[\k}tP{PNk}flAH2i{>6hQDDp\@DqNSJ`1h*ĴLj3EszfA2ē yGBq8Dȵ9MGU%y,YWXŢ#J6u4UvQ~GzlJ*syxe7%j00RWOn .*9j)Tt"<ԣfT\[O\O^3V"F]TZpLH^m~q2:7p\rgSk+ˉXW{GW΍H7 d^GHZ]`"]}'1٢4dakֶ+fC-U,Y\"Ux  REe /-]v7i/7(ބ0y cDF7Gt+ջЮc<&!R!`*#tm[޶'SݧxOQ%E4NĖa7M˙:BgeŲdܜns<   #B  ?S?pߏQ`Nܱ֙(D|{v˩ w]EfR%9J^$Sd'VWݦϼ$$"TwA#9]ZQ*)L- E[֗llLZoڗ+`M-lf6#8"{ M`x1zKf Y\^݅2)qENV2ptde ;UI`;tR GDxkt _D6Ɂȼ4/H3(q^لdO6Z;5v44 NFIP~щS}#Z_=MҲLk1e.cŖb7?vR;h:G#F;:{aI}A?`k"3SVhC~6>ڔ5|g{\j?73' յ<X\8c$2rFg'%Sǖh#[/ld@:x(;U[Oں7&6p6n7Q6}Fn&f!?;4"6ʊuU篜̌/;|Q͓2 919#U<5@CsBG5ғsQ4&ٖmUgNvCNpPlff6  {A{[xXMl[I4q&$$mތ'I^p_Hۤ^3g&sxeBHĆHOH,Ć +@ؠBGBBcɊsg<8iA Es=;=7_Ѻl*-L0, XPtXqT W4qa[΂,fKдPSQX6:% P6L䨥afP-@`UN[K>u]ba*r2c22FV=oӶ[ɘ <[-lZ鬷g2 aKMPtHSK觩6vAט-n3.ԢFκ `T+[ߚ+[-l'++o½v~5X)|  ,CW4D -"bMNre:D3ʆfK*uBbCܚAEB):i 21FUgFˮ]b\guemQXBkX 7X yO"k"EHX>UUiRеm0Xj2B c@~@Xv{M/ lf`y z{pgy,m4Y[EJvhɑyFBVf_ff1{/|(viZwDh vד``[w."-\4mM5V٨+*4I l$%lG:qGXl<@lluB͊W^_tTJ ~ۨ*19P>2{Ʊ6JOtktVku" RTdB䳦S0? Tᝆ5"ll/ 3X\]sQߣDJ[=0%ٴH`O%Ǟ/Dlf~%ʁ=tAa`UgʥҹTk_0zoq'p;PB0lKM#@%vZP"k6X(i"fQ3=ҽxGuR>?x] u%ʇgфI)Oh8rb)fU͕rNn?gj9-rRiӶ*(,î$q*e)!$S]Ӯ D`WgKa4ߣw}cX%C׉2HKT]Nu::+/II/V3{<0x7|^l ָ?$JǿFGofK zB^˩BJL '$-f$[dL}Z YR`> 2!|SJW&EPu=1yTRvg9 ].۽ 1irzR1o3X]6}%%/, cr=QV?݋];?\ l&)Hgc A'._'.7y[W777ѓ~߾:s^C'?Gٸz%K/19rv7b/NGW@;e>jb2:+y5ҁKiR|'cE'i(jR}>)~fXs+u e[ ~Iu(検6l RV&1Q<Ο߈?גLdj6VoIGB|fjNL-fmuVf|JVuYF4|m ;OS@7_\?Z(pΎTc֮|ln+& q8D=TLON>N+~kEvI,4R~cT7z'L/&溱7 ^\ƿ}mP<55iu55H['*%z~ 0`H,諠`*?º2pRg0R+V7Ǝ3=kTNv=f ^ڱD >4xRMkAfӔ! )ikw! M H]&m63̤^zQ2g %aHBs9Els^IPͤ2j25AI8#% K0]#cg}V_ gIZBYD-5)PLTTJ|f,h$3"i JrϱSB-IP\'tDoò2ù\.$qmCV9<,,Gγ4A*M *QOU RʠgLᜡX SOZ9ɠ(EVLPֳVNtI_xDLx9$+WWPRxa%Y&Kdvqa.]\Y^x\. Eg9V` s$Cd2_r IRPJyIKe%)}D2H+& DUҊ%Yl2+v' =Md4gEuSWԸX- h2h fQcxMS͂4/L=iS-algP*BZU3A \JC!( #&oP re9O% EҺixjYJY$34tL<4I$mΊQǖ"e1iBd֌{}dyq2דyXIES#z<?IP=z>}j|׺]W9?,rPe˜b9$6>+,'hK{ ;,XRP=R&ܐ9|c׼:Ƭ+LTRٟId($UAZ5tuw}ۓ Ù)ETXmGS϶Tef(&cu"cܕ6pBE!Ra(n',D4+ʬv.Dl@$RTv隺]~VB֪Q ~fY`*#υz1Nee>kٍ)!ddd"Wllpt5 #okz஻Lu VG߹t(>bO%dMP؀ \ûÅw~f Չ**,ޥ=Xj-轿SÑg}~q3LZ h^'bVĎk#kARvl mm;G1ϋIKD0_d9H΢N`7nPnkB-Pd 44P3܆0pȠ8k<\Ϗ> c&A}J[ڠ)8 :OlZxxeV^VT>R3>nY-N( II̸"6˸zm㴬hur56 N݊t$ A^gzjast{CBcY c]NG߃Ot0iS.g _'ZV} 4@9FȌd%%cZl28psCS9\ĘL;q3[={T5 wwOx&LA ý2G' 'I%v\3gx ϹJX[u.rj\=%BJJ7 ]S^tSi*\a"Zڳ#↞pL=&uC02s0H@<_t(q\u{{̽a&hi;XpA F+w̿>YlhrN|J &Y;`_ޢH@?3X`bk1/&4Ls2&0-f}VCv>?3M,a4xS3R66є]lE*\2 eIz#\^R5\ɫ_6H;YrR7p>?< qB 4BNA-(Qp`7ԇoYBS$+fa,+g 9_ c-D$\qx}$,&:]J1ESie@?IDbZʷw}I %[s| 1ՒKmkeo{rڒVˆv7cx|} 8'|Ok\7 \1Y?mB/^rN~q&6CF?x}} ̹s{'+Nf̋dq>Y!C 3/-_C$ 3/]]sEYr@BO>?'?7PBrN~q/y#hxFl& J:ET;H T#Sڒ.T)m>!UmTxuq 'g)d$)d)dhLh,©WSZ9Y^x}WJjqIQ~&!WOxC +xtRKsRl &Z)|[v]T6zlcqIe8J4@j557ڧ0O63R{Z;Nl 'O$(P\Xm뗟\hţREյ>ŚV\0ݙipQļlM6Fр,.I͋//*A2k3< +n6A&M0CQj xVo(ǎ(Qg$ͬF[2؊T Jbwɍ;뙡(E^{h̡EA/=M{S7;+Rݝ{|ӷ?_ˬ]l -QmNN\.a ZSG,);qpZC)ƢU6h p.< '@u v{NP'D+{}hM8^1_Kpnk9Zu_+ۥ[ݭWnA΁'a8!;5;] &#(T2OxA6Da̫uPx Z܅*^-ޛ{bZ,vR^RƯ7X~~\*+bar2T!k.Q&=ՈxH^ë_tfih}LBW k{]u=aĶ85N},\ d^ aFMI 2؏$y˧ͦHkbX@ei;pҮ 0Y/D@dYǮ+4z$t'v8XdgmuYF>}[u4<pC}qۧu77ՏaZ6ARhaFmrzQ>GpHWu2EK\"!cInV/-(gco3OÏi@Ґbt uCO|6 :w)sϲ/$m"ZT-~LhGeryj6ڮ>^Xis%%P3[k͸}zw_ L|cd$ b1p|~R;\R Au8RYGDs]^'13d7/i%yʝg2.i$vS/ϞJ3:8bq.c@j&O3~L:=(z8N]Ӵ\R4Xdtfk1JCT;b.$y6\>5Y,z~LjnJ^ܹ؉,?;mTF G򏗲z@g՝xNyI2RR)5C~|>|;Rhs͑(x.7:d"5>X6.LP$xTkPfs[׸UukεM2Kݜ(N/ڃ0g$*.{VU$AEA&j =9||9y4sa _ [OS]hԩRʴ@5Fl%^t D5rSסޢc)N. [Nq^EDUrzEMP8lZ{!DGef=VcxpotG7u6 c d6J-q +xW?ec ^Ln 9_qL^ ]h3é}#N8roi1VL7z6 /Y |rs$þvLgr"x<|љl/d;ȟTLX4pKb>kfu$Ȃ@/RS=y6,isNN8N|8>R{S{Ҋ$BAIiy?rki!2󇷼w!ܖ>+GL;ɆM"S(?+ٮOִShǺd-pxxq/($(Y)%ù0%+UL%Ek%)Y%rry\_R GGw#A&\xxqXXo&xxq䌉33:F\_R GGw#A&\xQKSR PIG;Qڅ91xb7525MNK8:B7m!yUӂahwxxq/($(Y)%ù0%+CӉ1Q:\_R GGw#A&\x4!91xb7525MNK8Z_KRSR,PI23QiU7Ao{5;Hl+x[f?P{29|Crlig %&ڰO~Mn0)^1Rcnr?PXw!ظc[`e/OIMS@s&؁@<J|rbrF^qyjj&k4'q-皓艣DiM-g8,./no -n_x[ɵkff =ÍۊY'"jxx[ɵk[KX*n x[ɵkffs=ÍۊY'!exW /-3=Z <(E=vs$ T2xx?pCKfBIeAFqjQYjBNfqH**%%gg&pM+'>[dK+D 4Qx.psNvԜ9DDL̼ԊԂyr\7x{x9xW}q~iQrj|bJJBqjQYjQ|b(+d&*dd+DBbHF!%-J-)-SPW-uU $ӣ b A|k33OUa160МAEbs.N_b[9iz@5ɉz%0' v d)@tir% '̩, F#X&*!Φ&d=)1 eHjO~->yd;)RZIO>2R6&f/JL^(-=y!f><Bx=h~^V6Ԝ͉"/8`lOOMWmir)@AN~~^bJJ|AjQf~JfH^/#1/%'.֐I-K+մT[?@Mzrչ'_USNmulꂓ 䵡r" 8hd e&iNYerUΓhO6 6V]s- %* Y'iN,/$xr:ddE^"wE5'7*+N 'x; t]“4:&g L~nyF/d{ "Լ<Ԝ4TĜb MM+. l(" 3{)x3TT/!J;*E(M('6(c)#!O* lrx[ɵkfFۊYIx0SH T#Sڒ.T)m>!Um=!kCxxq1D Gx;xq%x&joPc\hPɥ9z))E) yļTf&ml`): i): ey%V\hO>f?P{29|CrlCm,*2d_&7ɀˍzALJN76cl F쥱5)i h;.'^ONLH+.OM-ܼD6igMٱ:8>M|el'v%Y;v"x;Ƹq ғYqM0bl`6yKVbPwl+lad:K&x49xC,N[42'(L֗g,):yLL6W l[x:hC,N^(-x;xq%&ͧ>X(نjrqM|Fq+Fn"9$3?os,YXLŌ%h*MdddkY) etQM9YEr[|mzx[ɵkV&CÍۊY#};x5SQ*%  %>m.return ,?X{* x'pC8lJjqI|bJJ)[O^̥"sZmx[ɵkV&CۊY#x{x]IHLBTHЀKW!xifB~BrNfj^BqfJ*H DAW,83?(曙_YZŵA\2`xFHLRTTВKW-B!Q$1)3'R!4U!?O!<3/%kC $lDx[ɵkVFˍۊYDx;xq/3kiIfN fw)(s5 Tx{q} A̬%9śÙωCZ\\`^AQf^ YM~g<J)NR|Nur-$6Krp@̟%0y8'Pɤ2߸@NOc2_/aF3Yi/d߳12N=rx{.pKNҒ̜8D\F.] &nRy )mQxW[lYM^6qnI=mnRwn4Lc{wf7"^+.H+x@ vG@HjV !iwi+ıs9{#M>!ˬkjŒMfgc@Tj rJ IS%JEŇG jZ3Ȭ4M0쑆%˪.b0T-*4N }ҊM4\5P)iv";rJA |D|lj⠕Y]Fkzjyά#sЩeޯj&%JJaJ0(E"fpl(F vM1)jkmj.ZPG)NfH*3L.'3LNeʢd:Z͐u^IeSki]!J*%(5HHr_ӽsYjeF))jhPY<]+kb9z,),LdP&e6QrTٝG덒QPmgnGG^p3Z FRYg5ۖPͪGµԊ|u-M'?JdgS!g 1q3{n>ŗpmt8YSN.'3b_;7Ve CB0 ߇uHjtQ!tENGDB 1ݯR˖nKB 8C\XB^& /ONYC#p94jh "{0s:%7ݧOS*S%aGNaLәAWŴb<03 }/w!NڀҩBxxsv.'XApL"g>,(K̲ LK5#J^& 0'"Wݢϼ"E|c7$đҚ݊ U'[- D=ӗ,lWb|8xoϦWFCG`EMPc<*{ -xtij51.Am)yENWh|w+vj9P"›p6"r=^|xXozP#Ҽ4?-MEncCOGs PcG3h_p|4N#qx'>PXeЮ w'᭗S(ϓ2 Z2D./.O=O;/ҿ&gGAX<15q2fEXs.*;9w;(p)y]{^!}`bAc KחR'/LŬ~ݲM]8|&dk OemIxKxqcwQ;x ژE=lJөouqu/&Jm͋rO"cEݹ,bާMxO }v*;3?EK*(*1{mw _%/ag{ gld=3۲ʁ_w8Iߢ^1uKtUF`E}79xW_oQ`q2R4.촮M VRU%w{ޞ(~-(؇C?B~>}c;{GLჴ3;3ٙמ}ٶ d|Xí~^(g3gI G !|@shDž'\%BFpu*X[L0e "!M8 " 9SDơ`a&ShigVȱf"BU ce9`xLc֍٬ɌM&7B+dAtٜyqcOޮ?<)'{*fl-Ǭā{AstCRGNxJ~iS,TQ MI&]~5f]kwLjwV{0\[p(U"߾,ͥ73gF ;7Z/Av#^ЋKn-(lc+d|)6A1$ZIjWlyA-AƇkKjrVpyB^ N?fK_ja* 7pv,߭z\ VgdT TAG)EXj^u=ź5;{ݽ  )+0["YAÆ 6#֓o_QRQ=.0wpH$b!nm7nM K"'Kl8//e/xZoœS&eyOijf aD_~ب+"7HSݰ?3Įi6+O!G?.+I x[ aTVXsM.P/K-*ϛ!KG.X (" ngeMD{30'q 5m2(}QNkZ M#cڻߎ ! mm>L\C2~󂬣 ݰjpmP.8֘< L+j9iG'-Z>G#fNIK٥ (oyl fXοF E9n팧?~][^.SPx'xMUv<߲~;j&rwA? %*M]_ p-=dPHj+S4_m{N× n^K6 vx10հxئ@&F8LK_BEIBND4$3#)=`)eLP1N jK[Fu Mosb<6Y&4U2tGSi"Ѥ,pHvq*F"nUJ(0-!*Dc? T odr) W?[3Tp(ZF선&%"gQs15ڬR'EigDURGbPV[2 Q`!z2Ne K8jP%C{MmȤ1 dJ1"6IZl5*if~hY4mhV}"IͅZ3 'e2N1YE㹬rL2WŢs=i.5"_}ObjȫѥY S)5Mz7Pjwm~pe`b$EdchlNmLc4o c(ޮ:'ܹ o# _ +p_8XV@q[%nx; PU'jݡZxs~-wBXx5<6[L40j ?!ISp2U3S&k^^\%r{W F~HoEl+ 5XZ/r)_ߡ75ܟt&:ǑcmC;xyp%tʮL[LZa{ `Cp5\9#X 7T yqwGƍ!QX=X;`< Ml6 7;ʉ&+Y``LBpt=Czq@@~Be:"հѷ3}!i}-& UU08 OCJVp]ƥ>~g9̷DIS{M[/X6cu0:~=;| j]|憫-/Tq\2<9>ZJ]yBGNJwBe[ |p!{ d7;pg-|iV<NV R*}%gbD=Y S?x9[ n~[;y:ZfቆnC֩j[2C;򊟾^cHN^"@j|Kx3ͷFQQlm,ʋ 7ٜWa 9+"(ؾ\ۢ0cC'h0k\3KgǗU]`Ӛ]*-b cfełT*eT7g̊A+e2a]ҝ7`{. iVˑR;7_$,"}Pe]֌B)EbpAB>)CϝPg)3_J-wVX͊W9;|a[fV>BPWEI|JptlMo<3D;Gy.QtaLNCxo3_]dr}}j4UPqEkvũ i4C(7,:^n]b}IQ&|7Q'`s]sknňuӘ_˞% J;Xa_[kL<5?T(.9Hf\}ELf}?M˄3p7Lx;3VzʳK =*?fG"ExQJA&-P!Le(*€&CJֻMeؽ3ب`![ة` &j盻R]s L.D`;Y\]oكB]lӘ4i`8=> K+)6oZ û.Ό1i_aT*! 0 H-NuP*{ϸt5%v%(d"ѭKITz ]h xJ z\9&F vTGvOK',Eء Hs&/ *&SH[AGz#q J4+Q0ELϹ}_BϦX\~`}γ\@O ۶+%!2gOJch1ť "ϼX[i#uz׆fR0 E!SAsͥ"_iХ,5א4ZF',"^OS:A*kQF'ZvUyKuU⇲R2Sf Jε4]7ߢ׍gA}"V"wFY /n~ NImuj-El_xsVFX%#&nRy )mQxV[l +v^;l$mݎR5qUN]#0ţ+a/ko^j.= aÀl})V؀9ȖfIQssn:,n-RB8 2Keb9HĨ8XI{3ʖn:Tw|Cםl;Ktl=0{3HsWFmr*)/êȪq~*\Zr+(,,Qղn`!g)q{9U-trat.1d٧W׮<" wl~e}E^ݠf eC9!V@R`"|EWxэ4E&ծt &ھ{aK˾F6m줽D6 Nq~LT w` -r_lo*bEÖ)"9 X,w"v$E3…h |7޷( ۲u{: *J*t>~1bzBw`.h,+c奾V6^ [ ?L qNڂA|5 n_`; EW,иOc% n{kr؎Pv0G%,zϧdxJ1l۩ɠ/𽙾 M%ؖRIqԢp <XKvy=صt0 Ö L ;e&q{>N$ oߡ8GLw`GZ~JήlxPϺ^*m(I$ȔIh SCuX$Is|\"?]³$[něq`gԶo& _H"ʞY%&nܡ|u:}p{uޛ#fܵqb8JNj #A1&/`Fvhtb?x6ul-'-n"=v֥ӽ = nV6D#HH6I 0mL/0䃈YXbᜅڮÖpYa=µK?hh 2053 CUcc$~=|*DX _O"I4?+¯\,mmmᵙHο{m8mr{R[Qw+DMtprT7]ai4fh>i3{[: PV:?I[!nw%ql9ei-+gcpl`JON6ٴ*X\ӂAr܍l:J.. ֽU݀ߖǬ?Bp͵ki_TǍb}9נ~KyT4hAMft0M8Y$ ={S3{<ޤ]pР‘R*Mx|)yr 4TmI~ =l(ì[>^Pq_۴gki׶lL 趃w{H㣉'Kq{9r_<=7,A=6u|XV%8ęOdx{1q -Nۜ633roAOznd ]PxV݊6t6dܐ@JI:ړaBMK.^d&d6fLAg>Fw냔Ȓglgf;4H?⾝ Mi>GOlA (9e(|`˹4-/Bs^M&pY|(2TjګiZBH'HVx#@+U5n +A WBI*~M--PKϭ :u3,I 1+_Y;m`MfVf]+<~Mf塑@jP%|o+f`!- Mb{r: DhI]."C}B\@E&ٯenVxJeL}|e"0TCJ9svx>(޾*~x@F|5 K1)tv~?}td|dыiBh_<3$Վd%mG;=%#tW7[yL #(Gp@٢-",˦Lg$[j{~TRT8@6::PG jM9x, *Nn0֒yvڔGZzNٞ^[#$Fq=R~țeh.Jk2;QMws`4vs?C \uT0o^ߩ"šʸiI BծΒ9;;_1s|s7 ;+;r<.qˁk/z=}.;;_A+_t.J\Ux~̉i 9ޞ<X(K`o;6㘓 a~(˾S'I]$f2^0?ϼuWWjBuEtf/n-I컛kJrӾa!Z/'Fi!e^;6sPK $n׮W3eمM>rN5c*3z")^`K*p'>n-, #Y|Ad?lUh!ML3,hM1/Tɱk/ڳǫ-/ q8qC \"9(e#BPS_%XOky/.> cWN4V-  KN DO.SE=!%S>DĈǡѨ61ʅ\[8SOv'ϜS4ׂ*oBIMTʃ2<5FȎaItꅗ#"riUV^lBS􀽵j22ґhz &H{@fk>mɁ4ŰxԗԆrS/͍^gTw]7rB*SNEߖtt FCxc QiEI))y y yid(BeQ&_ޔM]fwi ũ9izV\ H,9?77?O$?H81 V$'g(+y(+d(uRRK&M~&t͖&'7 O\6yd ,70a k6A&M0CQj xVoEW*P_qbDZzܒncVAQj(m%&ֻx;N pHs@ĉ "q+9(3ĕn {3ۭC% dYVآزh"ʈ +<摠 BN(S~^XXh0^8wqds 9kSxځKml ÁCw;>! irl+! ЦZ4mʰUǶisײ]Ľ j&0bŖ1LKE^]^!(ۚ aƴ )˿ Z"t12LL"iڌmꂋs'D,~HKD]%^$7zCb?BOY U_ʧ}(egϯ'c?҅H#.$MgBK}0?R@cW\1Uuq`yM yATNQcl"t@ }i¡kġeGgr'D4ޱkE$lovDE5>LN<[:QϦjkS@)4f\}͕+lCGhy5k0H]JuOAȸЙ0ګ M4!tWLd G8 b{ɳF1"N;-huD?Oɑa=˫~؊3ڡ F3a5M~~GSUL :6TZUp<*4?B̟$# gI!~$?eBG^73܆!:ipH\N; &̅hLLd(}q>O\f*qpyTzdu5k:(<2C~𯏧y/tG_,Ҏ;%J E6d{t`*{rX8-;Y90H.ͥk+W֖nܨk\g%{a,\1*`a>-f3D套nϲS՝Ѫ~nNTiWKσF*^U1#I xꤩ> ǎhҌ~:&d,5M-1 %-Օ(v;Ut2=*"z-K[tz?l`UP7s%Qi! 0:Ltʴ*,[4!4zx"KEz¨(£Xk@8|`/nd7+g_O:= tj5]Z?Ub!G;:Ͱ, 8uf+O9ݤ-ܝ0 n!l>x?tMI-Ahg]?sO!8WCxmTn6z*|s-2DM;u7ǀFTHJ^K :$%@y͛??wt>el$JWPk+eY k0cCI \f؅Φ}0X<"AӠ>ڂ]O]滼_0H+DzT(thlrA*56 yyp?ivyyC{U4 ˓݂]c-b=,?i+Ыeϋ<ΠnQe#q֢Ԛ|0T,pٮ 9&񼂝Xt!?% 'E9fIdZ ^-`?V![kHzmk,T5DiyE{;^b43i+&A]?Dmd޾?qUWɑA% W Y;Y죪V#3SS0nDe8.JES5 Hوzq F IQ"y)_Vcy{eméO,",cN. 0pJ?\D' E>xkk_O_>FqPXV}C45XuP Y^ac/X=n0İF3!sOeTG4W^ͺ3Ve}~R=c RoJ?\ݶa"nZ imˀЗ6b@";[RVHI~瓣ISR)*#57Vx#/vwH[%{ʲt2;ax}^wfw1': 7t>9f߻P?gT\/xeJ@Ed!BtTxab@R (ZB)&f03bVe?ݛbx{<{[lyLؾ6[%*pG%0- +$aRj,RJC} 62PfV,Th^<7봴\UI&")6MTe5mt]X,vh#ӗ "ᅨ޽ĿzԝKK׃qݔKqyNxsC)#wqFbJ~yq~rv:2f~d } 4,cAO&A;xUoEV؎4P!nٚĤ H ĩ,g{jf6!Kw@H7^7zqB8XNٵN=7}{{o|]gv|Jp$281㒸GħTP$4* d~ 9rJ!07*[ 4FN\ mcɊa&uBMx:'1 {@[&M{a!)|G>| ~;}Es= Dӝt''3Hz-.vS:r+f9={ֻ~[Z|:w*x*LR Lk3ӇHiN,4rd)a<܂В9:l9"4H 7å` t@Fpf qĸoDeuѯs=Yr3xu?-xXK}5-A JYC 6ijO):/W+&~S#`vr-h4` %)e3ޫ5W9+o\=:U;88M-wgN9sלb{˵ ůW?B4Z y|Q_6%1 onoM6›zAoAI1+\E" Ȍ3'-K:^pz//J56Wۜ,@sIyM締 7+2ba2)I{Ʃ8g]}/2'bfEkcF#SY#Y҄ :Tx=K0qR298r'"$&6})IEnpʹ)p!C^ށO.a@yLu>aG4:W%}Avx>e=CRĸ?` ˡˁx)꾞T>_%1e d%|$X֤$\C9U8hJT,'sC tV"gL^ܐ OV9R^g4ꬍtUO/CuD*!`&m)Ij#BX_) zUf&pϕd:0d c^ۄY %UkxۧWT5MKtUF`E}79xVoEW4u%JCVV 0j`G"BXcgzg͇ٙP!8̍ 8r3ޛ]{c{3ʯx2#>$ӏe1!0$+K& 6 #/`?<I%@ZVꇋK9|!Y<|0~dWlRZ+l͊3I}Fz44[~scYyB4 +eYYMA}\n /˅CRcnx橝o v5bk6yHR};:|<_>m3seOJ= ^ZC2r߯'^.>YPp]͗oc+jM~٥HUELHCϊZ,]֍J,lf̤ / hj,=*^ݮ}MwQ`Q:c셄nd ҉bVkRI! jJqc|F9e,J"1x6C"$ExZeJtא9{BHyjՃ]gS2..C]~:YިaT[(pkmQ#TV֪op_XPe5DeF&)l"jan+.#=V\0a8<~zTyJL ӈC( >..' y! ^<1sPCnJd )*&#c]C敜jVٔFp *x'>j-`~ ÆG ov>bMDmB?ZHcS_K $'n㜜ڽ={okQ@]n,2?&dqqq#6Nh@O`6ۣfzRF^v2O偶P$ ^j"sN$$s]+.-3CRtY4"Z&kZWlS94%QjFd-pP&ԜPÁ[4/qP, Hf6JrQi<Yٲij*$)L6)Qt*[DvHƴ4{q-C͜c*+k}Y:)lPk&RɅ Z[ƵCJ u1$?̣cI@OP2keAfьб]Tbxozʙ\Va\\!K\ CᦤwN6- UR쌂\!t]B(scT.a3TnM3PچWi !ר3]PrK9mhF?NdUnrL/rK^KBvDMH_M׋edFBZ#)US,RZ<{roe<§;I)psqiLjv~v!o91=oV HS*֎jbdSBx% (\MȰ|8XN`  6ay: ۔h:caD@)ʞAJL6ӱ t6$І\cĠH\0\tk"9[*.pZK{G,R4p$<+k^Fɓ*LrsaW2CY9,{1Y38J.F+bQbw$WM_dWefl^tJ P(Z5M3Ͱ=Xz>ﴽucgsaea݃lklL1SmZ4^8pzP1 D0U`njVo&DD}ƾ:BJ7 Oվm ^F{$WAw3CrcdްH זּA\ÜrbۡA_*rbވ]F~BMžc;ݿ+Dc;Qjr=ۇ>No#$ޯyZLk8?sk (' 4 @W5c[8X ^> ǚ|3,֋ P9؊c0P[{8L~W;b!jw/Bctp>_`p ?zެeuU;7D+A\|SM@T~5 %Ǹ"(xj _ {$tyNwUz|Qz!q#oÅ K8 wJs򛟡Κre.4pda_3nDO>,˳'+xxi"?8-8&NTI%O 'UQwNx/s`ǟj$Uex4Ͻ(b'KϏV܎J_WӿR7>x>! ½wOpBYk89]/jo:w]M]q^Hw8)[>?l.w9Xߞ_L|oa-)^Ӧr]YL,Τf.E_+"T8*<,޺2 Ж:S5.ZoɠpK>xM^_w΍?g 'nPwvPlHiyχu51E7m)l4V; |mmS6#}Xλ&Q{XQ,YS%p7>+A_vRa~gw ,QBfn'j 6A&M0CQj xVoDW#PoIMvIv6.VPT[R5PREMHS מu3PWiH 8QqR$n#'CN8'vֻIXJy;di۴i LU#kShs8K\W@]ro캴ijQ؂>UHu[0&ކ4>yp}fd0QLƖ~]#cз~;܎PPne7aبB~ڐXI`a&+@ ,{۴+l+3>;waĐbGHmyz5Y<zuÔ`ȏ;*ُ#cEɺBsu+e?@Z"Xh8[\1w阓+v@g_ ȇK&!'3o\Nfc3E.w܂HL"/@%)~MEB 'Sj Q$syK$;:=[ЈÓngj /^]R.C '+}l@jZK,*ڕP`ax.| *DNT0Xk74)ZIVsR16VBw@4X^KD1?Iʄ)ꬲ&Dž,y3MXbM*@ q0F4]ŽϦ%T{EЎ:= >E n tCd=>;EY}m;4L;}e,4屟ϓ\ Xb+RW@Vu`/r ad8\NO<˾7uӸ7Ygw')ޗEcW y{6 (X^]a`qOA,Q: (V))|i0]@ ōkחnݪ_ٴT]% dOfEL˼tMgG"y>YU_wtp}771j湌I)Z^|^vr`CCc)Q+J ApU=7&.Ȕ,eXh͠q,7';@;RSv.ȖqayjGnO0_YCW<77213م08N}#9uz޻ǸS~iz-w)-q]zr՛*0:uq٧wX,.{ć{u \н0@lbè@g]?sO!8WCxUr@w)mb$L06sH+N; SR)S '=̨v|l3($uUJ[]]F9&Sm`RbMsRYTqP2cJ(J 98.E:]z#ހped8_O?wJX^ 5p.`EZ=씢Rt%ULQY2ƨ T pJi wQp3 (}(-WSԗN:'7rE#ϫkMH"u4/rh-j@rt zy0-x m_rysFVPcv&<@[-;=Em^ _dw l\l!+i'|qꜪC~ѳθyX,vӕpP)_hD^/82 Dʒ-q)Bq!ԅC=kQ 1ܥga1eUm//M,L!rmݡ˶AMXCrs^&? ߾`oSuYU bĪ:G?R:zjrVUЉu@#zUhtb\_(Xx[xqsaJD)ɶr%yt6I1#DlU6k*>2AmHLh 6>_~^BpcHhpg@bP, u c)x;qRZ~BaijqIf~BfBQjqA~^qLxrdv4hX[[xG +*\`6y6BU9bl~ )Shnx{8~{&Oznd ]Px#IydN4Ē M+. |SvN;8Xs*󡪞,XR"RF)%fT*d)h@t9{(͠@"[̼Ԓ< : )[Z&og-ןZRZSa`P5R=!D!"9DA# յ(HG!,12< MT$2rR``dj Wʊ*UPPVwBs1ȑEȆjŠ\Y&?_3o 4,cAO&A;xTMk@feZuPIݵ~`+b/ĘLwI&$mZ He޸@gM5ٞBo`å0ǑY^B/{9UVjպ,_@>=Io\/]"nMΏtNyFna2(+)Y=?jd5Л +CF>JN G e>qˉ+,:Ki΁TR":N_;y߾6߃ &'M 15\k#]!kɬO hz>7FȉK{z_'v?XdEݺSd{HU?Q:l:xnp4f%2KtUF`E}79xVOoEW4uW7 ZC(P5jiQޱdƉP!z8! r# +H\`k;_<{y{*>Gv O(NBwiL8׳ݞipӪK(Zr7suo/_2wڃ-Zkj[U#HBMT>-( iy͈ciFOFHk=Sʆa/TIJ*s$ۮU±GKeDfU$ί2X 2J "L`R|5JA|+3hO2ǗI~K}80>Y ϟ/VLK}!E[,°T& [ }x}+)eo?~}Iqe>gsc.G!v%:q$7O<8ywD6ܷ͋a\uVC|&'gcYS;'$͂iv+$': zɦVggWnaA{Z{صJkѥ#\eKWBlYqfS ET ɂ6~@ *1*D.Wga;(!C'Ha$CS-ҍ|.j[p ОLԞg͓ۗ/|"ivy8;FEDvþو!=,֊)-r!GzTv]3DZou}:hikR JfVww%۵/WV=]uZPFPו(݋r^ St-{a잋]Yn\9@-R=ʘv<1sPE $/.dnI+}!m9rBo+(PV'[% 3}|T`F7>j-Y, #Y;G4D6eލ'I"VRRؤ{`L?abb{BkS#m]E0(S5`/oۊ@ik'Egr6L"vǬ18ACy%.7А /pCO~!i :Ne񜔛`3m|Fɔk'cbQyQD * u=͠ 8S_ UK-/Sԓ㮼ʉ]L*Y%7:J<5Fj3@P>>8LcR1b"MFTj= m+:PCrA[zKR mm6;Ff %,x"t'G)Dh\eyB2/EŢ/'A"l"H 2Rx}SKLQMK(ZN?(*bP# 4-2-ŰҘW.\2.$D Ѹ`hqƅ 67~;/oE$%d$w%/U`i9.R`w61){TN 2(nj$0LIQ&&,z4سIīw9^(-x:S[~\{Dd$Ru$&ZuQ$La-j nqȃ*flȰY]%g( Sc82 (`!|[|!&ӂU hVVb k,QеОa٥r]x)ÂNJ_FȎuꮜsHƕ2+6/n:j}mg>EZ}f=Y=;`0NҤz`?$ov( V S a@[U:[D"wgR-xʷ.e˭GiWNڐ~BȖ*4>3RH0 h`d  n9j95c/W Yq61=0EW%d'2?gfdd4Z<K0WYf\%"o&}o @`x| y8Sss2KR Jlx}WN3YA]9'85*Vl 9_"&Yx{q I=d'sN.N\?y_25Ij?ȲO yU&O䘬>%lr].T*J=6A&M0CQj xVoEIM;xz75VQSWh($ fή '*.TĭpTrٍN*ͼ<}6%BKvCZ d8‰%mdvH*;†i}[aY4,|~U YF{憶;4@aQх9!i\~ ՍR!H=iT04WPaJ:Ԥ}@9^1,{YQ(9 ōY~‡ʴCJH:o.JNBOס.GW/4 :=^Etc!l2k>!tl\MͿs3K ~Wr# X W:<GQ>+[}R0pM`ZlWGYC ɋ"O |Lg*Q~yZC-7ؽp 97<6La8|n7ed4|MK"2X0~G8P1ćuq<8)z*#kҊIyWܚ^ . wL""UZ)6ҩ`7ttkWqFp7Ej`^Y\ZY^/^V*d\bƳE;sT 9 L+*miK?UkLTyrk|F@W*%ál 1C> JڠD"d[=KRUxsD9-ZqEMЇm7H,b*ų.7DHQMKP"ƙ@ U̯cZHmX|lb#?Jc2P0Kv,W6n.n"za`a~L2?}V>X`x͌yG^- mDI%oàſ=y>{b&\|ʖ}xw :8`~-]*fx D}< ɕ/Lޡ. M>'5J)e {A{[xTO`" 60y1n8 !(0,#,۷k~eɻ/ģfb?ī7O&xhbbmP]=nu[)D4:3 Ԉ$ a) T(eP%RQ $܌LmNv8pyNjU,=n6lfOvFR rcĬg_W<b~\^ٕu`07}C[(2԰Hs$ SW`)EUI^,Dszdt< `8W@7#]bm>8q i0Vh:D,=l7Ea:*3b%ZhǺ"9CO00P(h/|x BDHV2=VgbϤ'ZLxi0A.->.ƄF<=- <86%-9bf~<_'rSņ?z6v!rXl}1pE`,Huc&* &:!a.mpg2x]&Z`ǽ~]11iwt|q=n,1(Ǎ fsi~+۾vVVs $5Rl |ҰU`-N|OBв{&O("h'F$8?aiK:{ ˰l}C[)~ӌewl7WΟPϜt'ѩ3oO(Ֆ  5qkxw‰̵* J2s Js KQi"MfRx{bĢh]X[[udu+. HL+OKLWU@4+(N-*K-¦(+5'3 Edn28bPQbfqkErjAIf~ziqbzBIjq^An2I HU䚸t*E:`S$%363Ug2-j(Sf,rvflIE:w®M3ox;xqq Cg]?sO!8WCxMSr0v^z(I 6SHh1#쵭"$GM8I}~~a?A( ^Sa1Ca0y`HUYJ[FyE L nf+~]C+@d3(4\f_ 6ϳpi,_Ϡ$pq)F ae5&83rjNTLRKKeƨˬvhMd,ߠFln,{]p^]>h1ʉEkQj4~tL2{Ay ހA";6\]!9-]EB-5 $6HE!WJFZ. A9ʤ&kШxkxzW U!iE.]BL4SP8nf/v8y~-1gWhsB0*3 UK?nr~F@[p.O zw@/o4*#}PE2׋‚׿Qy)q$>Izx+uBJHXHD@АKW-B 5/8G!?O!<3/%k,/S f߻P?gT\/x;ž}D@FۉRJFzzJ:\ @WjJI-N.,(ϳUrTHK,.Q()KQ((ʯT(H,QH)P/UHOJg嗦g(e'CMO,-/UO//KTיUv2'aPV/HL//O.VQ@%UO.at|Q6zSy:fpEjl^xȾ}B~%f'q 4,cAO&A;xTk@fev]jM%nP j/ĘLwI&L.UzA2Wxbd/қAo_@g2I6ޛ|~Wݜ}@=pa l )v`{/FΉ&)S]q@]Ls)Wكj Οb;%#|C8 C Ia $tc `hy^ Q0@Q PnAvƐF8mj|e7cR\mľ'%=]-(WbQae @^piuisثqv~pYq iKw8Ϭ|D-BV#T;7.7 "$޷Grp)w/{ rO+I2lC*(pBe=nb">GB [>#?_|X;ԬQa ~pqLF7fVպ*_ 2@!:tY^bfb]9r%00%O^W-JJ Eq2Lߕ vh ĢVSF@F[*Īƞ-r KC!o\^p`rxUR2zD͢v]lw[A}GO!JU352\k#_!7h٬O p;32FIKLD: -YɃ<[ײWwjJ@~H"ũTV;^ƹ7/xUKoUV II؉;R al1NJ‰$]4{xB@cE%:JEђ , +mE%ĎĽǞ8&Rs=;'\Oe.S:J%7͡D-"Q)!I)مxXX1߄yd/q}2*JYD*X5U+! |- # jeU g+XT-'ӛ7Bյ}#IЖEQqOT*I: ۀi~t͢ß=vD(<&kP2\ J$/EQ<1lVmpQ*KQxvp{"&EX.GMwYNsj:Oǡ;TaEY7r'XiG7IZ.H,4g`xY22wFގF?w6O.b!ƚE1leaBVҶ1!4ޥ&%mM&`bZxPYJ x2(J^wOU_O5 L훿|ЛrY2txْ޿37OrzUyxGg)gNehtf'ƬP@+kd2߲m#ad6R;oNؘ;3Ԧ_. Y8dN 6l <^vu\F2hiP&^w$RoHX7]|ȞzDME^7]|i%Mw7O:!X]YAݹ5(#Rmi䬴[Lrr8E,h fЦζZV5z}*bfr1%")D"20j(C u/0?a"X) ,:o^ 7ZWL<(va1fDZ +eJUMw'nȠkt"Sc$:Xө7TEMV{ En` yR<}*[ GlBB=V™dbe)9; G^8h~g]?sO!8WCxmUKr6ݦ :lRdKvޯyŌ=Pr'~GkCI/;"z~X2Om盋ĝ(18.ݳOkj׵$'\3h%wSؽf)ոVym1W{awBqv\P.SԇN|&*BV>ҷx{"w kZ w] Q<3n]=m~؞\!9/*yA޲E=;Kw\hK`Y13<*:k7C+3,;Q8J)sne|m@CQOn4pR4uS*3~ҏS[.節-؉9Q2}gEGav`ڙ(P,83bN,V+Vt( uixcħNj6ɮ_f߻P?gT\/xeJ@ AV q VPBRM솘`ٻ>}_BϦX\~`}γ\@O ۶+%!2gOJch1ť "ϼG꜐>; ͤ<`B1ǣBKADҠK!X y!jЉ!ai,!fN Y D`jy/u" TVa&(NΕM2edp^AMՕEki46ohߢ GrP|X#yȝQ,cBzyp9nzR:3-J&nRy )mQxVIlRHKlJȉvT[XN#ɖpH4g6^!=6z(4)E,(o6S@{~Jܺ7|ŮTZ*MehJ9Irj$eSmT9_ \],[i6譋~uɥX0im MA$CpJ5AOBQY'8C,\ O_FZЦaSsFrUTQYmV[,ŗ/ k'Ӂ~U';WO2{q9c ow\js(z;^.>B{[ ɶ~xzd9? |3aX@ww ޤBgѶiS1r)FENtcʺtpMphuB{dTY6-*58Wz[&'{௡o!`z@1.PP< wg hwϝMָ"jطʔs94f $T]b2N$ o_n *LVVptό]O v[+<6|"ʺ(0 ̎n(E v멞:,nA\g.I-q0X_]zcaC}4?GI ̊0qP^<'g BP+,$4zN{` O|<Ϗ0'ar)mHJ;Ά`kq?iqy!9uTSLR.0byZznSZ؞L "6)EEhXYvt.@D,L,}`֤^mOyKĮº,#9Hû~نPo׭fk^>όÛ;Ӿ$ 1) vfMlի~")sZޟ nЬa=ݺ5uW;c/ć#_M\0q+|prٰ*zc ?<M߲H4u"l"H 2RxX[lMn 8ILb;8udI s xg u򫕪DЇiжZV}}ݶ}BU93e*5|CǃG/?Sv!k)'3fF8SiM7lhJƤq".HZUԄϗ7LѤ)pn \*Jچ%֌p&4 HhZ:D2!R)MgzuW(Q]|dBE&IiIG]:`)eLP1J \C6*M:79kta>LLMEgA*]>X#sщssd$hRVE\~dk~"Ff"neJ(0-!*Dc_ T odr) [?3T)ZB:%"objYv2#ψyWq(BMcOѶafK@OP2ȘeL)ͤۨĎkTLfy/Kk m|~6&JĊ; 'FXRԜ\K- lۄnPۍ\.aZFX`j*%Z [ij ?%}vREa'|yC-!fXy3rD$bj5r +︀535OFH}=Dtf&21?5s>лvTINL/ W f*2+lUnEfY#WTW HvVM%SG˲$Q5.yW9 $bREDċRy'nזXD 2 :zM d#yc|*e!sEB6aDRxA(ڐIcRvZA$*M!i_qtǾ_R*9Hb<'\6o W+yLY$ -12IΘDL!#[$Y,*Q=͝fcQDWpXKU-y%0=9>Ȕv `A qdVAkh/;޾R: I0ٸ,2,-)A>m(Z;ܹ1OL n _S Op.~cgv? Pgm\ 넟z*2 ;y[L5Uo?~ A%峒W TdNlH`Z~(c nUZ R>j{M U=\#xNpiLZ0dR xka^*Ŏž)^/al.lv8?e?|zi^rF~['8S\WwΝn׏k"}ð2}:w 1t=lnU{M`|"Q4(~YRvf&jAWTt&G<a$,X SPQ0up;\gg.F:5]%Eс\ -O^J?/j0=d>8t^fk?语G^X-iߴ!r mf (,bƵ'XӻӒFf|w 6]\;51nu6v NUZ =[KCYmȶu?><{ \m¯WCu N GhK*&,Ń||iuãc 8p>o VT{6vё2:T\@ 6BdG,c O3çu{7-yVX%Ó#lH-Oh/~[G=8騻ٻs ; 97fE#pd 57ލEOq`Wvf!^ukxu/fkM;Ÿ'cn׭1Țn b&o#|l"fpWx.rM^ 8A7&)ޛ m7'QTiT."Rx΋ט_wW b yKEv[QP; [Һcw Kff,6]mMn{iI9kkl`qkf/pGZxOj J^(ŏ9^3з5/z=٭4Y7Hw9Ԟ/wxtA^^<jr C):e~'ܛL_EO-|u?^xkƝrcg[|mٛcDxt.\LHm#~I x4VBSsAܹ{V+8ul\[<Ąf?4PP ehMޒ4@W ^4!I-%;| ?En_.Q؍0Ȭ;1_Dqz-`Pu3nʉS"H\xL5J(!z 7ջs f߻P?gT\/x;>}D@FۉRJFzFzJ:\ @WjJI-N.,(ϳUrTHK,.Q()KQ((ʯT(H,QH)P/UHOJg嗦g(e'CMO,-/UO//KTיUv2'aO22Fo`bcbXTpy;]np4̿i_PU?wu|0BϱwWj4*jȄ[0y +״'ݑ1,k&9 2C>$kLvHHGx+aYDLc*A<8 b1 *m%[.Qgěp9#E,MP GS&b&a:4aD$#B|uX~,I il!$لA:r`7N!j?֏A b&& ل]v,EeƃIs*(@444QaZd<&EF Prp4` g`q ޷Qgl|vOO/ _>?KҺ|%̷Xp g/Ϻ%GqxϲXb Ux5K 0EA} "IUT{BH# =݀cJ-;^6/* 6N+hC,3|.bV-3 (*Q(^z،f>葉`_),9?v gCp5~}-^9+|i_r޻ϋkaݔ߅R;Q>>!ܰTϹ#i^ D3]Q-gaA(Y͖'G;Z$q~ro7__G7ł%N&nRy )mQxSML`)V ? lBW0 L?7f7i,h!FOjboƣLzbFMyуMD@Ѧy߯А*(xQRYMK [>9@J@_<`VsTh,$txXŞfM,KV~]⠠tقYTg ՛Lb\$xZd]k8^fr/KH qwg~(yM$jA(~mh v €0Ń{oWm8Mftvf]ƺw!>Fu>bcc7Jk\'F<ۇb#p<^-N3҄ok~`-KSN={76ilWR'|Zd:uVF^ TU+|#4&JDK0l#z; 4,cAO&A;xUoT,NhMLv82~M?lW.L\Μn $S ڻ87O׾{h}+wqݺ m VhyըcbjoŽxsͽ~.=CF*<) 6"QJP"Dy=Fm">ݷG1 ZCvdY-Vdpvѽ/h!=!('I|%ߟ=Abbkbt)Ic29nYATk~PЋ:įuIȭ..fBGKM'3!b2cdܥeh ք3mRd_}(w1V1sD\E6^"DŽ: Z"ʤueQM: X#H?;.x*T{̚\S\ ѬѬHlTƶVMlWBx8R9с֕7s[<|{s,{z,w E' tʙVG\>*xyQvZit͍f39LG#_KEw :ZEi^hݸ}4uq5-?\pCA= :tH&~tER^OM|Pɔe!\ CF+4c0i6P*=rʪ58)M`vKݑz9c_--˘)^=,aE|4ᾢne˛̿{8;;- VVqTq?"H ;L^[XLV60k y@&Ox.PFL#%(Ֆ  5qkxw6+2d<[g]?sO!8WCxmTr0v:s7Ō2fJ ,;–m5H +Iߖ/ts=HQB7vvi)J_"1Թ\`غ wp O^nA+2$F9]Ϳm]W.H؟@sS$vPecE)08XqCﺝ7a{柀j˥DI=ɮx!|UԥM:y^-3)`Ja35i~\{j| 63.xZ1ȣ5$ai^-t)5~[[YWr<Lk}羖{tIn4M4xJx0-)OդM3\jX2UTé$7\OIuRti̴Vb/:y$Jo~h [/y\gNM|-پysm'/]ZYDsaZ0GvV^s3cޖA6Hӗ&_ -'hON=T;OUfCOAC`3cE#Lm hFd͂F11۬vM P8Զ_QPscb\\ʘ2C* ut\^v:=w8]2EC,Nn;}tzgTݽ0:,4A (x29g%!8䀶!-6.{q"+7v򎻄һKs(mi%r􍹻k ,UKpv}s#kTYiBaT0r^oNR䘸mh3KNyykt 4\֗‘j0:L캺@&nśE=yX?gg2E(4?8(ۇ3۳ǁ8f߻P?gT\/xeJ@Ed!BtTxabB-̢h. jH&t&LH,еG+Ż{qgk/ -$*e ۗAT$V'x:\6Gdø\쬇O[MۈHxwNЌ <(e&Ѽ\I Ƃ-d 5؜Zș(V%Ysy׬BuZ\i˴kB 2*3m躰Yt^ёGf/;E Qǽ{߉փѢlդnJ5O'v̿pO~ yt&nRy )mQxToTW .m)$=-vxt #KaitaF4V;ui'@0 o@@ &!؎n(MR3i*9wF;|Z($dIKn(B QU"";'u‰-cwNP,.oMw%9-A%WB>`PQ"7]Y2h*SO60b&=M:C 䀯9Xx^On׏[0o6E>JlXgu)$M^8;$]36AaƪI ܾ;΁:"rٯə#ػfKeŘM4H[͌TC#e`j| ^[4Ɔ}ֹ·eS36f|jOgɹv|[]!9ש~rbבuT|dςo5,욻܇d&? .Sg 9soYxF̶k!NpqĢ=lm!cu*݊höǢZY47Ø]kMוA8?|XШAu!}FT1bAB'аүԮ3kNe,M ?^;4n>?(&Hl <OOj!]^K'a)d 8 ϒGksp$_'AטTzQjA_y7v;!u7h6f* feF9[IrM5^FL5Lfl<휹嗏9'#oWz0|A04Mϱy\t@i=8Ϩ<80GI$F(37y&8;< U^PQ*B7MS ͣgµ俕 Ɖfԇsj|А/2[E6fV;cߘ* RQ[k=%ٲ8Vwh2-;xeQ=o@UK$ݤ*pr*(J ,21Dėؖ}i b@  ?/Ā10pJw{y\U~ao;.ōxd&Z lF?R+FL}:eo|Vtuq9@ p!58{ͅ8Ȓ M ^ٶ6]6*fS7԰YXx}YlJ:H1Ngcv9Kk0+fЪ&CCMz}f uxmɈE%̦1XNH_47NhVteAC2'x{{? KP 8%@.jR&,yi׵8Smm⧶+t4ݛj2"N </-2گR߲Cez\ e48V+Ϡz\ %<]5m c1'ͅe9;I)𥔕1x'a'䌦fy pK\J)k&Tb0%="s j Lrr p63QbW];U{Ik!|HB<@ . B T'OxUJ@ZrE)^{G!V[x IMZ| >oЫOlJ23y~:X> Na/ec rYUe Dwr3 Ȓd\9 N0]˝orQ6R*Y.EZ u )Gh 44VvI(,* Fi9B$IxF<64R:nX:[0s8 &ꥴ# #4j(#{, dn+gPa?ou߷_q,[6V}ًT&n[gNG^sV"Jdx]T͎0=Nw/jQO0Ր ' C\"NyIշcu& y<כ?oab'w>})N5,ki@;UlxUPZWݩ9AYnt rB:9ScYdΙ\gH ۽j|IԵrp+W Aqu*P7@M8j_փU[KMyd] B~u7.W֮ ľm=s ü7rhgg"CGi9*+G V^/C*(MFs/ m͓3  1{બaCm /,pj8۫np1ijI":1Sb x<^-Eh _E4 [J$Kde(8VE4 WSQB("E45d'Dr2%P:@H#",Ld2 ˕\ GSdD4(7fGwϿaJ٢ uU"U'+RZE" mH,YS%Yr^7碤_4}Yˢuu[ 墦WjpQΫhPqbKƒu]*i,+"?;6`VbTUV̙Lv,͍Ng ;Po'#dm8lͫ"IPŲB/3A| 7Sn^v%L8l+q|`v Xwzޫ}BKEHif78=੊,g#{]~dfo$L3 }Hs.lMSF8FӬt"d~>tȋXm~,纂tw?2Q>̔9a_.^NHЎEX۱ So->OorNtt?ǣQaaLV a[CFȧchd`4nZ^:peI`mitS £['&Ǿue"+glNQqkM42TY4]kFQmؚ95snŸ `x'7 kt:w:#d3,K3~BZfl gC|И!6_ǰh\Gs/ů!ߜkK@Ŷqt ]<]ô7Vyw98bR&;EIvZ%EU>"@`TJ"n Ͳ6 qhUT$7qV&-ERyxIt):rbtEܹ6\y*&nRy )mQxVKlђzİ$Ҳ) %+-SalVb$[XVP\hC.%mJ HrmQ!= $ Al1ZuKAhfAzݙ1fny-o"|.XV,FJ"zƲ;OY1djM vW8DǎfdVl\Ć FlĜM'qnVAɑ[JEK7˲ks,-.pe%Zt,dd,%ϥ._ɥ6~%Mȑ0&YYVm[;}<Va:ۖjZ =âN  x|d vao?Qvwh\[u lc-.,! FQ}8% HAK;**^2[:˶%_3ݻwS*aO%a'&T WL ndbZX .t79u?`z@i]HБ5(yb;?GZSǒVt-'eJ jZUzo=Ƨ0"O)}_y=52%^^ TR݊ "]G=}k*-02Wb66-XDw`/.{ 4MY<(2ڲNx-њWWdّmi)yaq~v}kZ1kL7[F?G*0+ / ̏Al%멮T~F&I>G7`2?xv"ϒCOllk&1hu6!)S:Aw^!ٖD4Y$NRiMob7 q Uq,`l89 Sqx<7|i/6,tW쁿L:꺆mxɕV/|$`Y:ֵXRN85d5[Y[}vE^X^U`Mw CYS"%Ѣj( a]*y "A&Vh0kbe%{}t)g-\VQXNvա`B vF' ?58$hώG7#=p5xDXS&=Ca(1r6g$:6&DxoDi=vFް^? }VO5i1|31t|")ƣp;Ӈ5ֺ&, " ]ʲٙ@m#T MI3DӭNz~B=Ôдw Kgpe6Va/DgdVr9ּ:!%,Z5XMd92=ْL<}W̪f@ucmw@ Z]:F;~(HhS'-wJm ? kΠoX$6}Cs.x~Yb[UXXæԒJ?])qS cCQ4yUn=7&!HO}6^J(;jiVc#g z kvl+ėNC/$$&8B{<={e׉[>УDJp7^"l"H 2RxXKli2de8Ks9]ʛ5G%̼Lj(IފOYgf(NmexGm%ֲg_yW#6I4D>Ku;x`@cٵ`ҙEb0_[G#|B]\O.q2d=N,utb~>>4;>9!$HG }ł`m:hbg'#XsRni2ڙ (e&'P2hh\m)N3-ɖ(4[u%r,T# t Z*g^ 8bKՐjY)}N3`c͡'g,YIa^m)}m]Q3uM1FS@y Pz8{y9ɒD\YaxcGL4qKx*|:ѺN ә#)6b61TH锱ז S5ͪ!Bu  xT[E D[B^Yf;‚Ki<TrJn6?̕Vk ~̲c%<7y,a\4 ʺ}`eΰLlTer%X<-~c; Z FZV_;\wlF>0Y xB.w#~$86< p~smY9|y$Y/d)<589(&O75:j;n #zJɇ^85^Ǫ''SJcpTP!YISd­Ӄ*.Pl>\ ys@)3βi3A-k-ý3㮵Rx,h_-)~h<q nOɪ0*li͖S'ֹ8K G`h8(<;}@$F= ?j%⃮?X.ʹIzq6[OaU"4Jy'Eࡰ\ڜM !q8ދDomӝ(޶u6 mDQKSn.Wym7R(LX"Dukw50ll+hV_3LSXMKamd3([ЧҴRWKll@dE™` 8#ctSiH]bJ= /ry9^0 l~ɛFy+0<{{ۏb37ӋM+r=|2NO\ wsWlr : t^O|>F$ 6ytsar_;B4^/L%㩹\[[M| $B7 M׮Bg[=Tۅ?=+-|ד]8z`#s6A|eϒլJw?ؔVx*^O ~6i1kVS aDSޒT@ OͼPpOJF dO QႵEHm̛:x9(|_2y$֨s%sTPz{m^-hcG:(pz!"1ь ߠP.t,'syh.QjbVepNVh!Xibv ( {I"&ЃkH ]26QCTGYQZ^:S0wH^imL{~p;䛼.J0q/I*6ih?Sv?8$ K ֣PZE\qr'4Dd!͞V- 0Ypa; -$QZ''JI |]xw൰lFnÎ6^w\Yۧ:9ҧWC_i/Q%US:YӸ}_BϦX\~`}γ\@O ۶+%!2gOJch1ť "ϼX[i#uN; ͤ<`B1ǣBKADҠK!X y!jЉ!ai,!fN Y D`jy/u" TVa&(NΕM2edp^AMՕEki46ohEg-ϖzE"wFY /n~ NImuj-HLl_xsVFӍX%%$3mVQ!K[e)In} xVoEW mwW $*IARHm%xwxwfٙc5H2A8!q@pčS/pABfNvZޛ{Ɵ\gۃcR;9ChjsUBC* :Őfrg:" 2 JAgOX=%P d A̙ =A,!TS4S,l%R3R\BV a!paC: gRyտF>ܵs]5+¶̜]=g_a&y_SuZ*+ѱ5A6R&ln䥺De?Ӆ1i81x|1wv!Ii3}E5T\NURt& +[Wy@GRTI?Q( \i\[6bn4O d_ĒeM@ɨepbda@&>yVN"ӨDlELW08FpL9PM. LH(Ų}OKÉ` q8{VAqrD"8,Ӹ3A0r"ҁm&0lc*U(Gbٷ#Ewj\N/B6Fc98sz+/,O }>_Z|`E{6Ⱦ|~VYdVpiZr4uQo:Au"fԽ!l*\xʴ֢nzwpcb޾?#y\AȖ,\fL"DUA̧_6.a 9!ppQjdXJd$h&4:b*(0$E|]XX%x[7,>HtrIlUR F"情YYETNyJIyytVKw~1!k2L~%fyX4xsK vYook ګ5YW*g"ʰ,j1bSQ\ S9Op40N'WEšr,Ko\Szhcm: 'NOZ}u*hOW9_Hfd}EӿKff-2) 8m٪^^_yb dC!KJ6x;kwnC|ye6eX^lxmToE-iI m_p"$hVPj$ZQNvjg6 qq8 Nr RTq"N]ґV޼KW>?oV+{]8f­Vm pSQH>=](ЃCn\T}_ϐkpIh)|dp*BP-Z yLx\܎@^2#1wvڍ`F lN]4~ pU`6umMsס-hcCt9L9~Spۢ:,Lm SJE's{; H1Q+Lgr`OP Bף*$/HQ;Rv%Oyap·9wbDn&Ӌ^?!^4Lg mBYta&{6aQFmgRWNGμ:B%|[^śLJ$TCܚUq-V!^IJU]$ҦR.ծ_3˥[Pc+9a^is~ U'I z{ALl4 YKu~+zAj坍|˾&B(F+%&}d1rrYpTX_Pj-MLіö ~)x"/.|nг󐸬Kk^ki2R=NMC7(sk/Yo\dL^CBtv<# пNҤ?4t pOy8NSdty6RuhCt, &@?[Oa*[˩V ?Ԏ`g]?sO!8WCxeTn8=v~s-2Ducb'۠NF"U~il/IY[ p͛7oM"D EpeqԵv4J; / Ob2:`w;@ ro w㳝/iIxӤ\RHMҚ_HWA6X)kH$ϳ%qcN|_֗%mS=JT2jl~ Jy7`'}BMD4I!֪E7Im񴆔 E`[= FI*dv&@:W$S* 5B#<$3=TJ UU9ag/{DYӟܘ %s]#*AX|B4ֲp{zt*pq,g3H\kE@p~yuɭv&_:!n/'1C3^tszN܄ow^ -%t%!?7$ju7߰mFJKKEA͖k`q?NNTwhߏ?~x$3mVQ!K[e)In} xUoDW>6 m>ZUGshcU) MT"JFj+!ųzX{xe !$p+ Np {l63=Vok,S\={/q MuYUt.!jX**-Ʊ:/1DˀBs&4Ha3e@cP%e/.-EXeY70{^jycj5\aP˷Fq#!-l-UY;QUkf|Q&`ЮPy(5 84)UR8rLhqq@GP4aN[2UbVVY Ē 0s<& 2NPE먳>d(]˅cukG5}rGBv2zi>?mdHf{~x;W$Ĕb̔|BsD&F"z `7x۫YC"ғX' #6ba Sf߻P?gT\/xeJ@ A(( BhaE+P([OKiݸ!W]|B>ū Voku(2Ȕ%:x^APsXLpp5J bNpes|TCwrEdy@,h <+e:Q4\  ڀ`J[095++JV2XMBRHm{b hz 뜦2Mc([ vh#M"ᅨ޽ſzhQlmrb7DKӉXSG]y"l"H 2RxW[lWn֗Lֱ{c{};c{Wm|$nŗ4Ϝ'1x\ Txy*@E< Q@#-oq^g=6eqXg2 4E3*U iYզz.;iX1*%W&,Hі|Ok9'KhQ 3m Q~p&-?/WFXFF{UÇǎݡa‑C~>R?nj` E 0O.ϗ_I&pO;w#{;LI;`^]հ>2_ƒAqtGO;2v`4`՗y6?m^fdk>yB(RE95DvD%JɩO?? '}1Ͻ(C1VWpɑc*U= ~}'8# o8"{3wEpt-Hj S`x(VU36/T'tn9QOwDsVk OQ넿ήbQ)2ʼnE.bŇPWD4 ww#2&?fyy! } KֶUS{ildw,/'0ml3y[ -w1GWr2Yaw1(W1g6ξhU-*T91N'ņƶn&" >I z*0.ϴ_Ka_B×K.=fcS$|jymow^KEܯ?6>锋4|(ro/Li&.&Ӌ|br>NSt;lx8t@k <~>.\id•({8_k.7ׯ5x2p g'OKpJ'O{<>M(iXEC(hFΌϪv5I'Ou$"xX[79vE6-'hZ:%{'`E7"p;[ @9 {A{[xWMlْ)٢~(&i?fwp)R] *d %cXrF]jgHY'=עIA 9$-m HA @riR8#H̼ޏWſ}VZiCTzvh%jMFTNn jV a1`K VS)}\Ӵ6˛4]u]0[-0BnaUbfyùE,׿,76>8di8D)C#Q./s=^vnf.=n𻁒ĴI$|Ǐ:r/0T; m]dѣvjXZ*#Sd0j1-N ABJ*IR~̐thk6sf+X%u"bVn0 y(J5b6yFb7%+$yAv#CT׶ zG:[(+ihLlD2/% L# 3T:m2H?{{xg9pdI({C١~98{cQ>_c1\ dj( Ei%(}Fvw `Ku,VK-M,6B\cJF&)pc(228NlP#gLF˶U1^4H٨=vY8I\7F&QI#T={N)WJNc Btlϴ4giZ3 ;yVg÷1ΐ~k_L5d3Z%^o(qxE`P#ďE&h4uLKQs?cǻ.G%RBMAׁ(3~0x/DOS,NSnǙ8Sχ~N$y;#x?tA2ȇ6۰1 &a:Aǀ:#x&DhY:yK7.aS\fͅª{f]Ba&?ĕ11Uhϋ逌lgҀkKW ZZRTJpybafvAلkn^,] >`<6 JQF6 j=e?}kXMc ManBpb9d[3M_fihbڡ24 |ir1hI"9զu3oDș#exymuy"?O19 m]5MsߍD~d N}.t RB8OR|,ޥ7qՔNsxv7xXnSOE>9l21 yot-WKn ~ d׿i$^}J+[xD<8S0W#m1t'ۡ| &r$IM1kqI#(QsT&4[O;OOã]j{K$쏀ay|/So4QӨƘ#-k%&R Փ{:E*|f6I&|^X^xmToG!!  ~&+LP[첆 V;;ljjJUC8Tꥧ @Cxv 氻o{9U#NYk,\L]Ո؊Hb5.!߿ou|L2ŨWg_cP $ $$B,P̂OK)p׍W/K`'BKJnN,\c+J"pІʭ%_LUƇ B"Qas y[#K%jmdgCVQ~.1h} U?$&*²gFI4Zolh n:ӯ.OH rZ7!F:4wX{zrCJya2B2Iߐs{dwšr]oxPD $י O},P3%U*UY`]ۑ$}/?b śXF }5G[{R-lWA;y/ Z'Sb[9QAͧS/rgKV|&kB(&!%iIs}DkIVB]N}|2leOÍeu?ɐ~w/!o-L7cpwJXlGh0Wkk)})3@qfvG,?*Ҿ w4/S3H\Z0&&[3 {'po;>::y *^g]?sO!8WCxmTn0 쥷MAƍXeH_g{]>iٙ!K $"ID(Y&1PAZP%h'PL"cEnH˽)юԣ$JOCm*+`@ն0誩k )7~+ Ldсfr@H5&?Rdce?1@IʀW-~5' +he,HMvja)Cg9ř3{v-JÇ˕?;0R| un4[s\kw76f?}]_߇~)IWMixvϿ['.H_AsS$Q De,oJEcpΎѲBfC^$&R-nJ$ 'j:INZ)t\ǤW}Lv aƹ/rLrg )XY h$aU˙h)l3\N\ W WsZ{AmkF#$KkS/|]/S;WTΙWk=Y[[RajEׯ?7s|NdxM冦^{iKyis#B)[닻`Q7ʔ%<FHubzG7G6aѯ?vSf߻P?gT\/xeJ@ A(( BZ=Cod,nw`ٻ>}W 86>;|Y(m!Q)KL=6_;*5L I˲Tڒx"EqHDL4RVoפ' r!Jvi]A yp^ EAx 9Lr@pXuXRH ls̀ #Jü \*{! U:B."Sđ?jyOT"nQ`E)EM"nti "QFaK3R3! E'خ֬ZM cSmiЕ#,ɅI+&)±ܗZ{(mG^ 9 [b6ە^vBhOX u)9vnr+MIl`}s~Wx)}'E/\|[~Q=߃b'Hl+-RpDOvM%hT98" RGڭq qߛM.h˄tvYB}WTԨNO% 5@ T)Z^pP 'xπPm/L 23d4/at^PI cM1dBiN˹$QjPIdoC#0u#%y3Y:kl٨ۇf:_O 8L.]^P:k^mjI a7t)j-x;+*5ƫc|ωpI~'y%SwWZIMXn(s+B.Ҕ&moWxJ##K:&&9[FQ0rƋ >NfGW62ϻbf߻P?gT\/xeJ@Ed!BtTxabmZE ]JqՐLL,еG+Ż{qgk/ -$*e AT$V'x6^MF6Gdø\\쬏O[ڈH؉{q'hFIoO2h^X$ QcR2V5؜Zș(V%,XsE׬BuZ\i˴kB2*5m躰Yt^ёG/;E Q׽{ߍփlɤ0nJ5Ov?wO~ yX"l"H 2Rx}TKlU88vm'Ix8(։8Ւ44ib?ChfkĂXV ] MS !"JH+x'Pyw9Ͽ6K٢(+zEHdyESJ5'i]$Eɚ*: )/8 ;$:-SYǛVq咦WTΫWXR|KƓ.4rYD me0iV/ yTUVLf,ɎN 6?h%#d8io˫$xírOB#<-6Nzp? #Il{kwiZq~ }_inpǭ@JƢYAxF.rVGlY^0؄ ~u4Z*DbTqA׮ȓ~?NxۉP=UW҈5"%| 6Nke$\2eW8{^x>t؍7xe~aw?"`WK}Q527#>( ٱ:0w#~ 6ϩ&|4nJʅZlt*{&-fҳ O3^zl;ߍs~5rsr8;܏fito54dդ8tւ۴7fwrήĬXyT8N;q=vخcVd X檐H!ʓ=͟kHE"+:>yj5Z5 Hj֖RuQ#%ݼ7Z&u56~8|xxqmWL+ɏ/.)(J/IOLI)|Q-c3xpq) '&:(LNeE t> "Kg]?sO!8WCxMSv@lR&œd'~@ĥ!ҝ|wҟmIQݙK z&AE!P%RLDc<#F 6 &i}*HᐢRsKrSV#l= Bd_O{Y}04y^d4+x\UCώ ) TŲ{"L tZ,-s/Nu7cXObZޖfRaG$r`UKt w-{4RRAZ}cNWa}.?{b:kHYnRRGttAhê0AI.8V4DRbRHU!HZĴZCeyrlR#)U!<tedIJ5@Ёf|z?_N~\f1ɚbGjan{Eƌ}v9avk9F =fw{;iO6vAU lǢ>NL֗yUEߨy)$x*v4Ym!vr>]Qiq }|`o9x'@HDPDPKW-B8@R!-H!/?O$B!'?91'X!?O!$Hsqm f߻P?gT\/x;sD@FۉRJFzzFJ:\ @WjJI-N.,(ϳUrTHK,.Q()KQ((ʯT(H,QH)P/UHOJg嗦g(e'CMO,-/UO//KTיUv2'aPV/HL//O.VQ@%UO.at|Q6zS"LJƓ01}a|-[W򇂕s@%1y Y1Lـʀɩ̦1clxsB|%1x/3 D!9?%5k&_WT\KU/-IӵhRɼ#mNxs&=Í[X)E6Oznd ]Px]R]kA%IiiDɥdV1b 1"iXcn|C3|'w#ýw=s|j] #,!A0.vR/Ҁ&$<6ĮcJ-hDc!Oˢ㞞 F :@8A )I^BG}({S=g$hRBΞ7P"QT I^Oyi[,uݑ{'j?GPlo+ 7(=B/n(5ʫƒXՊ!5֖ٲIe{д4g|; :zޱ:|q3a>hLM|4M2фTX`K`{+EkJ.޹NN D~[XַzB/]{m8g܄#;quv8Ӵ(!'<- _HAKnNTkVUo_!5{X91 U"l"H 2Rx}TKlU88vm'&$qP(։8Ւ44ib?Ckf!TT(G@uAXV@lJ !EBXҤӽ~Ϲ=m}msyU)Q̗JEHŒdeUS e5'9"i"JnʋNEI jNT񶕦flJN)5m'8 J+̶(%u$S0n[,#qzٍLȣ"$ϤgSTz|8ۑF+#x.{{V&QE]`Tǣnŝ p;>|oT5k}$V%V G% G8Ų>.* 3҄IZ]^-y"x|jkGCb;5wB$Z}& }VE4,{zB'n,:p4d@'{⽥@:5q<1l6>qHlƠA Fզ:FP`, ݸ}jn18•F.Wur6ۇ;Lnݘ4~Ά8m <8Hi1?/#T i:Es3OE,ؘy96|lMd0=iQseDtRL%)g6/6wgƩg4p<- f߻P?gT\/xeJ@FIf!PP+\0 1o`E+tQ(]W1d83!f+Xf/Okе)V(x7}廽BH I΅8tA|Q&hK7R'BI`^٤c#vSh&c`4ޠ_IVh&8vJ.9'R<ԠiZFS)ʔB$,SaE*yu պPA6[?yW0ѝ2CkgOj*.~$B kfuZZ=EFru8A;ǵ!yKxz9t KybQd#u2|a&xc QriEI))y y ũ9izyi",.QEQbכ .[9"3 ]ڊK %i'Fj"}rgjBf1H\HZG(5+5d2|lLliqrd?+ljM} Xp1qxuR=@+Zh[@ Hv"kb?챙+*؞ pm8G= nXv ܾCI?zzQaI#WAQz7@VugR Ps*a-3/_Guowef ]@Mgj]Az /9Uǹ  *+39NmW'u8.֧K|qnqhcEݚ}/Oa'Swē0kfKxy*65/2YwO!0gy03(F6Ɯ' vn;x v& 3px[|q= *&|:`rK*^§ rDE*!ٱ Z1xuRMo@UD6nlPVh J9TPj^ $^[4v%8CN q6`ޝ7ޟ'#yT <(@xa*+bK8FP:"qD@cN3&Xt\B90a=pP<ĄZ ,ņ uL,yC> rECS,Ql a'~ ę`x*(cQ?\^ nyc"mL?NUK" #yQoi!%`alTp~W+f{wkTAs&˓X_*K7_U142'I1z(AX1>~-ߘ~QC癍匭B~'?Ԑ:;s|L>.֎EFm}h/"(\IYNGF|qc;,ۙSsӧJ8+=g CfAU0׆MgT#KhiOW߫⏃?!*V-lT}ս,!4[JvүϞdzKzRkvf}ICχDMbrppTI9ݔUg"?1wr7_'ml&WxRj1kRb5ZI 6Z!JHOmX]6s-~C>! BK/fv]):vy^wH*OI>Npɔ jG6$~jP~@JBl 1YJ衍PGfՙ47';D[s7`ۉ4 :xϖ{Y!/.e"lLȢ9L?kbrJeߗϤJ5ap3Sԭ'vC2k㺇RK켪0Fd||/X#$ CŬ"#X$P/7}Qݞ 2l'r:ʴiAqpA{ θك:]n*> dwnV?]`g᤹ Ͷc¹KG7 }ԕ: M#i¨li>}XU-{ΠI2'R1W>!F Rv+v}J̀=h@j icۤ mkcq0LW6{Wүc@Ti@}?bRWݝ}4Y 5"q(`"Vg7 _h՝ Q;̒jA`];H[)޻TJX F$7 1B[wM=nta3yBߞ" XgɔؒϦU)};|bJ$⥀ɺˉ7JA`oTFylb",YO?XCn,3;^߾,tqO_ RZt3REB*"H6ŖYw}B^D+v\DWO>ڎA0beI_WFz5Rd؛Dh ,xG8x hJEy *VUBl߬9}+Ka$P_߉a5H(KuJhL.70k.qSl } 4!>.>PVV,xbzd>Ztwe<ìH)]!֢tQ"ҫ) 5䱈bo([#9HŪyLiQUe̛!Dp']gf ' 6i>өA^Pa8]Ú<8nfFz# O\\Ҙ]׉ETx.,d?s5!:<Ɯ$kSKMe{SQ7{x0&U]H]+W/]j UT]}<2aO<%2٫a<}/Ue>Uj;Ƃ˃&5Nl2SGl7<_@ǞSԸ9g5vGXHT3HѺOǣMh>|ÝOC))F _5:Ӊ$?(#1= V@Uy4k'g5`7zG5T)}3*QrB k*x{p= 9يRsKR7;r-tc*K8V *xۧ_oCC"E)p3"x\:kc1x_oC bJM|Mt%# !$xwToQg;]@x7Io="q%)ťE%)z٩V\ PWX^Z\)+*@4륤&秤jZknv5aeb7p, xgRmslwL^ÙWYP\2y/hYbJJB^V~fFZv e&b7-J-)-S(ȡ2#l@&p@H` $&aL\uir!oǼl)%`CD7~8 4,cAO&A;xUMDfw~3=:ꖳb'1t ,,?XTO$PUiO]'^\DYOxGO< /t;3oW~ݻ{ewW_>r~*RFQB@i ⨳`&JX 0]|@XB ;ƹc9uQ"[1s989W0bЄĜEDsxdC7Ї-H4 [nq㑚3^VFU_F!MŎcGxƣpN}c`:#5#|L1oyڧȃҲ\!z2FBNz#A2FO%`#$Ԟ' Wi'\t;/-(S] ]bHI|$| We.Ddaiz4A2 Fs<\mb*Л4&t-kH5`fe3V4l0k;+=ZK>\۱cLM|fU(y{r/D,|8*ʳ[_is>̃#5ҫ8ɥuDČr1`-7^l ?i@VOR>f{͜djz>eNЭ` -#5 A)r-jͣZpJAX!ccȓgs f8d˧A IF5@nɯ/@p#.tuDEMD)?PvB7y4f@Pd+֍W^t`fW# [ QEwTJy3E*pqnM/Q[+S'0lk}ĺ5yZxO}NNJ2\98 xɷxe&_&U&nxpKj2*l.xysZ&klx;.9A{sK e`xMu yL&_Yg9Cx;c|xnIuu<ҜM.vlx{.pf?l)ix;c|hCx˓MRUVwW(JMɩT(.)KWH/MPS+~](ZRW˥iE y 8<'/4PБ\TYP_5*v3oceJo.`sdq&/wK<(QZ\SOhUolFx;lth /٣(l:xUu&ٜ͛y){Y xxI 'ϷdW00` X}r 4 m gx{8~C,67cUPSRĤԜb[Ĕbₜܝ/s[@U)lyδ?qr@/r1VL.HlUw62mȬ49Bt:E_{,gq1Nf۬1 98: Zx;lpC ,I%EV\ @06X R+S J\Tf~BbB*D 䧧gijHWVdhjNvZ'^X\\_`P\RNΘvSy0sMfجwq  86oa8Yx6laZ!ѓ,"N{"'uu9F^>0 ?$ZYx{{rwU\ZbHux/CtC4d=e,⛝9jMhKtUF`E}79xVOoDWWm g'sRgEy"Ʈ~sBy~^ V|Y|Eo>ՋGZ*s3B A&b[SPZ~\Ngحoœg?Ve p(1 fíGw_&8rͬ^Դlf;;Fbʄ陱G˶l&L/puNbj2}гkk{.'{g^Vή+7/L dӧ n9l8\M*3`c CWdI fB.gI -8WV]vAZ^T2v[ZKԫ< =i,9q%Q{Lx56Z VrcfC)E 1LݠOLܒjv,ȅnHބjLO1 @t֐(gCkw=lY[r!y%xV׳7j'%U=ohhx.wKɎiqYJ"7LeG)}+<\FHIV\q$IfTؘFF# {qHE3V:S|!FoEH9w9  0ED>)8 CdfNc@t@xJB32$bz# .R J|,J{_D(49$U"Bm8&"KOa &gBS ]A(*(|Y TP$u0 oeҜ.( G 9eK_ Wl]9 ̒RQ2la-IMfLJ'ޑz! <lNe (xk!Tpr/`fIjQbIf^[bNqfAyɕb|\%Eece'/ R4Ԝ4xɂ"8M+*9TBhPJrG19D&es pRYCY/$J# 5X<#5O(595,5E!Q83=/1k BFb^JNjBIFjBbBq~~./.LI/1DBhuH ),"8deIY`\(bIɅ"a& nZax/WHHPDtK JҋSJs3JKRrn I\\s(7Qx+~\"H Mt ,u Mt2+3RrKsJ2 rR\SKt<r*3KRRS@&"L2(6Ix;07`RB Mf'r}+E*!ٱ Z1xmQn1VIJdCv)B9Qe *^K9V+vclM R)O[9pBx$vl7?}ܥ\H HMxjX>Glz|"|m7 =IXD$ҝj=!ZC.ą%>$[4X5;7~T%ZMO/J:kjͪ|o-gIe85`>_;DmI2B{}Kވ1X8nGKq=h8^qn^?| }1&  !d,sP;F_p凄`+5Ps s GgՒezdh Lžp:oӳc#z]4fy1#hRh*p[njH2 kmg'AIXnmp\V˂7x, lw>|4]#" rDaD0!_e !{!JȀ++sW/1^'q:Ztc#ah=N*>vpw9rFjv'Ǣ2 ~yہMV}^}Wպ puOu)V {A{[xTMoQ % B;@kb3PJDLP[-j)<`af7 ']4.ݺӍ1qeR7.]9W)5q3=y7ޮ;@sJE*V&dINݶ%X2E& C,&pA8hJ#VaYEVc:TN7lBtSVJbo^O-4kC8僼s~+%.?-1PZ-JQI+TR"/O*/ޭ, d Kt' 㧂Xigpt$~ ?L)EA[!*@+W1 &I#cnN|O$ݸMG1ڋg.aj(<$3Ԉò3J7Dm{~y9W!011@XDќdCupc1u#ׇ֐y,'T&jd\'dXOsB!=[z/_|)c] G'Rwe7z$^5O[KW,lx[>}C=橌RLlx>}B~fl5x>}B~fPxzn8kg ~!AV y y Eɩe) řy9\D2RrRJ2Rs@tA~qqfRN*X~ &*K%&Tx[WyCsxY9 %xJ@hc+d1 hKAv%L 83?3eܺ%t!zւ@2w Y|Z}NH=%&i1ŴTM M)<*XE>3n "chD*Ytz"R"IiژTPNt)=k>heM(Z1l7SUف o DeB81G31|_r̺Mb!YQ abWq%B胎6#"W( 1v" 82v0~rg@ adC;{y1xPF]x|=Kk9|e8ȭC x)xˁo@xx[WyCsx 6gb%#xJ@hc+d1 hKAv%L 83?3eܺ%t!zւ@2w Y|Z}NH=%&i1ŴTM M)<*XE>3n "chD*Ytz"R"IiژTPNt)=k>heM(Z1l7SUف o DeB81G31|_r̺Mb!YQ abWq%B胎6#"W( 1v" 82v0~rg@ adC;{y1xPF]x|=Kk9|e8ȭC x)xˁo@x벺eAGb2B,3t4"l"H 2Rx}RKLQMk[ h mtSTa?JN ʯIҒMJcN\pƷ4QIpѸae\8m1n޽{rZVl(JTTff b&7GU?`|!8hIDD8FF.qϯS1'ql6IcKE1-3b,jAxqkkmO695'殰Lfeݽ۩OEnj7=*U3!qv΄E +\ܯkk/<e⼔gZM]',G̠Y/>uq+hqŊkX~[߳%6ْd.@4ӂ¸} n;X43nM 2n%BOv)hPjagkQW<0 u)\TIA9!.ӚX{5F>9n I*vJhF ~[ALOw~?S^k_7v3#H T" FZB o++ m%&^>fyv&)6РCʵJd@mZglWLqxNAiv@^b:6t+ N<Vxk3fgE']F]:"xms{C%3=hXZ$3 Dȹ$_5,k:PL:_Q|bq|ReIj)):߈`U#R;#<3xUoDVA*îD ]tۊHm7th"=d{|>w"6TS| 6ACGdL1>gT,E~\0+ VS5)KCKl6qb]Fho3ȉ`=|gD$ u{M}kwP@,^)zs9aI1wfq§x$ R/ld9u!#e iS̙6n۱H1baiꖌE?KoܻtӘHu*7xS?,e=8wHahzDŽq24tOC:afhHPT-^@.LK5p+$CMʐb^!&^Uԑz|̡:1V 3~4ED%D}E"Ma"a'hy$~T^!&#ɹ$"*LcPc#kYlFYfۥ;8E 4o=o}mw ~k5 08j!Q)zqck5[+WO4 ުr )$AFi O _AKAs֠q>ăӐ弽6OzNiR@.hw}7BO_GRJ!:֑r`kfUՓ}޻MR8r+"c ,8tu(ˤg^]9҃ %mn819u^ٓ4t$R72eUzD Y߸q"/9NTj7AT@C>^25^m j, C:w7a{=zLv-z]X9sfA"$ZgVDv%8Exi܂Dl׏?M\}Ĉ-?ngk[՛ss DuUV 艑j蟬3LB:۪8w='_[+4 !e1za܌?rc1YeqN"a ۩(✃;#  <qOK0^m yi Vki-̀%\Y(9zA+.kCn mc,w3nxQ/kCboJ:QO]QBa\Ea -j H;^jdO(@kjW&U=cl6W[1,jp䆂e|:^)."'/D*Oߞ.)U: =Qϕ7Q,Ϣ~.lk_h4> &h9C;V'*>offeogOw ;x  9 )tf~PҎJ;72%_J%_r%Ywhhiȧ؉\# !S>eqǫ[G3"?0ydhk]* hήs0J?"4H`dƦ&}k+%سĵdi\oc^mp^Gđ M' Ir |kz~=ږ3@ SsK&8ta\<85' 彑$u=GctiF?,H-֐b: &d3Lx-3OvK6FɌNd͎'18@$Da\Fq+J~Ӽʓ1rgx340031QHL-*cX|3zv|ǫ q?Jw7IK,./H̓(<;Wr&f UXShdQH|P[nwreGEo\K-*K--)-H,..O-ILI\t`Ǵ%&Vumn& NOW3֨?mHmMܮ+S ?'+Rwn{猿~j3x!x340031QK,L/Je0-20EA!,/DtBU%eU0^<Ǹd#7_`n*spsw feez;=5ݓxG3) t sMadSS\^6%hM P>ή~ 3q~\rbv-lKxJ|<\C2dx*Gx)& U νeۮW5L-$UQQq +Пkl%7_y_RR2>s$-X˕}T96((HLNLKg=|En^~mct5ԪԒJ}M2M2\vgW$bNqFbJ~yq~rv1C'3,jbϗWiM DUIjqI1V astt&}8=^x50 DwE$J5?€bHq䘪=I[tw: p0W^v4mid( =Ԥ@`e=9kC*jc$ny7Dn !U.{ jqjcNaG2wӁU߹.<'el!Oa[ 1l҄aȘ]V+`@VbTdKPGOEy)E<9 VFb!pT ~Hs'~J Q0¸`r<኎!8jew_B~{EʵW$}5ybq6/;kڜ| OX2V1 5qMLsaI"V_4C‹*!jeCMS(݊rp>1+2[|C'*0/yz^俠UX)?o81lu;q8Ee!s_sVX21@I>=77Y-|Ax,/ynBua0Fr+ܩ*Y n,Rp$WEo AGaqbˬd |n0\ r;i Q1B,; ;\-/wҠ-"验#AMˑEjҕv̲IWʚSA(u!HYcL(QߟYeU*H7 V \XQtmF}x.DUo-nϼ%ۭI@o8 ՓU'ʿ]^~|\Z0w,7pdZ3v/V_V2$óx[}sHߟbvS^xsV1`\OJ%@m$K^gFA^fL DHD ҳƅ E|`#ȠLғyI2 4$'$, 0i$ >i0ꎣGU3F$f\$rP:w@=e9ɋ j.i?@QLWK!bؿ}h ڢ37V%~n qsM|茮#A7((j_7p(ѹvx5Nx^$dG}1KE楸nWxvFk ue 1u@n6DhpӻOD܈U%fָR47W#qx m 5uM׍$@A4$@)pզijQ#ehtra&ΐr9_dXזtl|nBZj7)E5x}g_̋_x{oXԟ,˒$ {D"$KgN9M!!xggh^vF';;J=vܑܫ{ ͢dfzz/B]W;uE8/w(r~ tD%/"*aT"ъY\cٳőL"DeDPED2 eG]C906kבF9Bq*!΄UBRx7N(})&> V܃q/AˠAЗAjf|Ooi`6~v~}i;/7wG{Ѡk\6!%CL/``qVJs|fZZ}SW+ Rs<e'FHTIlɊ %z08;) qe(D/ =&-1^8NI5+()qgeCRDp*8xǑW&zSeO͠%̈,5\tQG5qˡT&g̝IzzqQ )+Myk )c7I=~@HUnh3TlzRӧŅP[̥+u (Kk%?I ÷;z[c(FI*tw$W֑D%Nu(2Xi}/Â1,X /zt=;ۣY+n PZpd̀uJїvuOd|񧽻C*/K2\bWs%^ l=bE%V Ge"@.EDETKDkě%P$J+Ukj^VhʬSY`#@V4Τe ;&LF1CqEqQn[KNVWF /VW.E [|2XyU_\Hu8k%]H~HLhKT4$9䢠pCeYOdXMy%&T(W$mQ{EZ#ߧJZ. )FI+q,&}q1lb{Ɔyk wn~aoY9¿UM֒oe wiu&c`}@#Q @DC Ol!$U):;'& ɦxq&Aq7ƎW!$/'%ITEDlIJgN?2]3a` ΌIl/, ,$[k)h*UqDh_ (FdfE)4 df6%B^6s*&gY5݅FA$i\\p\0d^‘Z祤b7]XdS,Spݢuy)84pToȴ-غNcf"],Co>-@r;H9qPzwpۤ*P &}鏱 (1f)l&0+S8ObI$Q)FS<7Bb&_7ڊg $K&`%!cx7DqLA-[Iƕ= X0)J5ph  β7S$C!(p9 av`!L9D$KIjUS1lVRnˡTx\dv&wpQ^~E fP 7@ <1]|ڽފB] j|Ꚇ#$bS7'3gRJ6 c贈 %'RS[`hm\M֒D:yB#.\cjq&\~EڼnF(!kLB07kPy(JUa?BߥR٫˺>184MI'1}5@\VMEeqKŮ$A^qlzɛ->Y~7oz5BEB W^|,'p ^p)ۦ_uTL*JS!cat]=H0rVP?J<i]~Eè&S5a72Yq10'DۙL2/*?Dx ^X~or_CG?DWz:g^po8-?XSsS_4/2Gǝs4ǁCǩH2zoxYmsHί$\l6ֹ b'(! XHFฮӣݻ#)fziyu7* +omE'`mcJAtw} F"^RQH&«"+'^:%9=mD, 'bSrL$Er9RFݮE8 !kjO8x$xP,d.A[>Jp+!s[54ol/Wu|oPJtEȫ a +s*#wh]g8ĶPhS~n#" `4ЍBgeKoYg)t%Xi^BqXOɕ4Zsg/A#e?6Q6}(m3e¦|=7x׵=:}M/WSŸ=~9_ޠ['=p &z~ho_u{Ot!MXyNsYߛ~70pLm^j<Nl78cLcdM.>od3{.t1wm }ַ Z]֩۾lb4KȄ)A޳io8`a:t:dO_zNqoj9/YLV,``NqXJQm@Š>`Ԑ7+͖H_poy /Em3D%R|gPu~Ę'8vjU!|p ||C܂T:=j>{XF*>I=ܞ4? ncY Iy?O5͜Z<;[i8lI+]) u]m /-7Yn r*kՌ&MBmVh t -: p?C(YK#[48ɊKlTT/h4kK&ZXQ|,3SWp3 ҷYlia6CC _Enj wD(yd%UIƪZA:<Y2sV KQSnrD&e/E҈H9I#Ks1;t$.!E ?>88A* Is [ )>"/p$|G+\pe0#3#M-EHUHꞖ*m"߉ZnYęfL@8RpGuz7(pRX+mO'?otrKxy)(j3BaJ:bE ʓ)O@-l^M o-Ի(^g#/վ%8Vw85UkST ɗFsۄ#RY _,g.&z13^y[rėykӺmum%] U][ G&h#BF#H$$Zo[^SL*e8I,TZpL3=&v-L:q*_X D[ \&%e2d!Pp gSYaU2f0_6N9ݤ且@<$,B}ޠxv$-񒒶y|Uu\2[E} T2nR1tUi` >co#>Dhǐ3!eF&-VB=g[4R< YXjʹ6nsEzJG@ntqV.Y֊^} `Q%cV JKDx)c|/T9dCTS$Io#DGqOUPgUFƖ|O0*InS*Zp*ll/|9ZVI%vtaV<,>Q(6wjB9^2ėT?fU C Wp,Ⱥc[gЗ\ZO9-{kqU>Ss5Sya-xО`s[\`],Fh3LG4muZ:؉`R/9d mi&% -յϮ>`*230wvƉ">U.BNrjTnZ$T"nv?)O+g<k8X7p';h\&qDŽΜ걥ZU6cGSjzCT>Q-P-RucuC I{ {8ucNaWg O#ӊqݏF;.0.m8or1u#O'LTPM5~Ms:V:pP3"w,^WV/ޙ2G)*FSp὎*5"F pEH(iπfJ 9FRތpg]|w \ :$b:Hr.q7=Of+R\U#TL@ݜig4;oOÑ=noy(Y**0CW^E?4}Xh]=Cp HsԔ/?v=Gua9~(Br=UAn(Żbȑ4k ֪Tw $*ÿe@ņ»Nj614\k` tv_BcWp"YyB䗛kޜK,/LYk 5@Gj;w7m(MB6dSNS5C:'Qw0oUwQ?8W?c5IqNDO $ ~-ߪ=pw'm2 ޷Ñꪳh?:?l8c oG; &=j{rBb= #rgGw'万?]瓞hG':vߑÑ%$>&ivh(p0r&jy;RL*m@hrfګx9WqNb fC ;([ӛ8ޤڃӣ^w0^_'StݾV?흎MvǓYw~{y Q!ax/ΏϦxxNHzE: :VNI.V1~fqnUT,AG癇%W{x#Ox|%H<'{roCf.ovFD0O8i }O`Q[kRP/a{fQ59:ŋ="%g>JM4鴍I H}3iNozf;挸J5""sr=l.4d=խ IBRg*Ӑ>%hr=-X?ڋk6Hq @3QzK i(!(2;=i.Z+t][jzȪ۶6hx9 6ZGyD˒<TBY4t;1l0>[nkUbc1P"+w2f7)S5x)$1{+ :k,Nw&ru%Cy[n*}a&OXinѱj$9LaT\6)S [%ND8d! xB[x{iA{EwBq^YCkRa -Rmb[8Y?eYdkclx~s=<;\7pSk3btUe>iLU%VG"V 陙q 9.IIehkl:b\R"8mTyPI]߬_)̤Lb%*8FG2Q{N 1L!j?:+cÚ-N]AHdB`LDD:T 4b,L_~+d%ɲKPx5CJH2t^gLc ;-2mݦ0.:wL@y](>52KpkL3[R'U,sGyqBd6Κ]nfP]$tVuvU4s9dVq3櫙=GKKrT%B߷ .N lmhLڹ%I*@ޞp.Cc3QF[w̯f:gv,RxqmM(ʌRRU ˏQJ5M&`#ظy S=iɽB _7Tz +cB v7l+8ޢAFcK)-ZUkYcs+,YFS0XJV\٩ʘ5Q ["q߀ဝ?6UXkg$qSmBYb1kX|3L̚.Y j,E-xvzk'4H`I-lߋ52 w}d6N IhK{ߏMMmaN;)}c2ӂ%J-؆O!.D!U+PsQkzg{]yj8 jH*\sz:{.L>CU^x[`%gU <pi27Ape kv/˶ٗ.ilÝՏm[ 1B\a.sk$c ms~ף +XQlb'] Í3z>-[6.9l5o(l KYI˗)bus(g71hܘz;nRr7H8mm:4Яwu$ ZڞPugwhVf+Mz\95Lʮ0Wpp׿ |/La0Q5@lh^!*Q(4RbRZ#`u$uΔӛVSCL Kį6.4ao&6+cx^Onٕxix%'kL{NadaK&R0v;vgjP8y}e\a1YV}I2oRiÖQH0*ASע+K;Te[NQ=uGY!.%/>޲<&8kɍݕD4]/>꧂ ۚ> '|,˧HD%Pa_1zD P^H#SNcEBWà,dn<~nٺ[6fm?PDfq Fdt,A>q &xڧ(8=p ƱS3&YIN5O<+UYmph'*XC)l 8P![, ?+s[qV[YfM!"b4#8&3sdmt|Xs[Jm5xM@қ -BJu9XQP}[lM)A*MwqE,lMyBv%^)L隧E[#X8ڎc7Ex~&HT(!7Xsm_&M{3U=o "oިê4E GYJ\1` ۈܬ XW V;xjc'\ Q*YjO9^J*u+0x6R HgB]QFE$Øc{M!^cqcM'`HiipX-t;+ӳ]>iK:&C)cִW~m7t2`lFSg ̯9"9)OWzYLPO,~7{^>"冷 ASIWuDȏtC^3W s~)SmxNE*ù^jb-p7ڡj ,$$Y CQʢI3@6 -t~m#xZ[SJ~W l UNEpcSI6I94+!f~=3d$ DL߻gilDV72ߞAtyHl5la(^$2K{u7[8UAQR$b~Ceo"yK7mbrZ$B< Sr} -A(ٵi.({+enA(RjeKA&Ѯd 7 =A$]xQ", <Yb: ̓ѥRzm|RzM~ )z"b,,N(!J(AmGM2-I0`\)GXEiG~Z}S̺*)OGq/$z*]aHs-GZA<*N$Ӻ%ĉM4Й30}zdMMӓX'5DF6?sɄ 6Fy0zO9Oi88LAv:)Xjbtj;G'm Om:LGLxEg3-ΝĆ} Fاh_/49Cfj9tpXJ:}rOt2m !nh+fPhh NԷN,Cca PHOld~9^ՙM3Y)Ɇ8 0GF*|69T塾m A iEs'ZcaS\2Qg~@p=nnɴc~8MWR.>ѽB%TyڑYE&'&3d Oñe_f;#gw`#uj#rn`.My q5ToHoɽ"AdI~ZF2AXy%Eƞ~)W40Lky%XD\řGZkBt3nV"t1pĜ dnsM/pq-A'O\q?p8, dbRgV|"aޝ&ԣ_/rT̖`(fJ'Jx]·;ʀ"yI43,[z[S$C^բx]֬P8|AO 1_Z/3X4c4DQRFg2N2T&W-"8O4mSSLWOC^ͶdMFrf5opتYT-;өBUKnM9鴟PThJQTN¨Ł^4_']D!hlā 4Ly`sJ4t˝y7 ehڭpo'ma0OG8[=!ʦ\DB/xܓ{xd h(ƙ7YzQdU M@ibXu-׵W'\\RUe5_9q-{J\'y+ӵQ|]44I*"#*PVޠ\AQ͙XXZpoo6)ɆIv%>~WvyLdϢQB7I2(xzuj3Rŕc^T5|,JWX'Y %TwmuާuHvنa 'VGhw2X:|GTջ4q$AI)9Ά&o\ vnTd6IUt p,A\6,tH ?!,p}{<*L%BWęWw> xRԢ"%+%C#s= 4TA//*Q0I''@ , `E)@Ӓfd16+M-)NL-525MNKkؑRZ\y@Sr F\\4Կ xm 1 DҮ?S6Bז-hۛdfZmڀ߈N{G %su!Ӈ[lEcsL +72S^t4S=篧Xy-D֜Pjȅ৖JZ=z;R xm 0Dl%iQC~l [7 ffCMŘnS=uYv?V?SՈ4BF[30)B me˄Nk||wpl0ԃOx{84UQ/q7?x] Oa8EP2fK45ඃ݇KJ,9cƲGθh勵ݮԯ`7RuF=c}imYgH=<&:u$A$bRET%T5I$ DmBH%u,ދϹWYbi bpqbxeNK0CLёĕŸ(0mpxb|y!Ê=V&92(h*J}G]@y ƖH<#ٓhpգ7 hbr Y0}ǿβCr?K:x s{'1}!6 $a u>7?A$5opTxXnH}W&H0a`H Ħ EjH*1I^#ݗ:Uuntdjg7̣${8mwz87Eh<ówL${qa&uRIQRJbLEU"2(.<*,AUNaLQUdPJ!ow<BzDaY$"ErYV1NRQҠZ z5NH) xCzLBU,ee4Y'ZKJm ?Z`,B:.Ҥ\% VYRd,_NJiH`Pb=6hJy\]o)Ԃ܉rP'K,+axl%]Ng=õO{YǶR.ǖ31hdMlGSఇ|QH6oN .}g3S47·69rM'& h $][0钨&6h@I[ioZUզ% '*nwv%c$ʹilO`D(ao ]Rc#ܤM|S% MإZ SօP>6%cqlvnlǚ]eXU pwgE<^Nm_mrQvvhģhvm+n0)OK)2-=¯aȷYaF>7K 8 IuәK?Pq'b!Ӑ3ڃA{n{t{in;l<1vhW|LM CDe/,M z(-V=I5$/D¢:{յSYB蒧ʴťx!25bwU !L@q<\-xMQUq;\pUӻ9雒_ ^&7N;|w\)Us77fkDnZW0F/YIk;Fʌ^"4"'X>JfrN3 ;*#D\%2r>ip%B VچeK dڼaBVqXTN3uGgm7O(vlou\ʦ#crpxI 4KŅv<٤rƵT$j#-GV?06J#pHjt%`nMx[5|VtcaݴVf-z+~&-S=Z8lr.)۬ImD{oLiN!yv!_=(:кv %p{-?U_˾TŔfxDJ{`'Vfe_h-O'qG7FuB7izXݤ7o-2%F?E4Zۺ+B`8|t7<=>ݵZwc4R$6ZU%y<-M\F|*W,W/e_Tw=T,b }kxYsVËJ(Cb,rnmyUعF}t 06z;[UE#[P9@P Vj Lrmq=;!R\D@p {)0]!lђrZ1vF#\/ D!<8:9zbF<h]DnǽwEzgl[9-\y$\w4B"Pv\J!wʵN$/kL4^!0H_eۇ~?d< 1"$UMIo/XPxWaOH_1G!B;bB9!xC:eoH_oQK3o޼ݵL g5;{GȗCjgjX8D>hD ;Di*dJs3=$^ߤY"E3νA4IE$C4Q x08T)ϬѢdNe",āA,꣘*a(@8iN;Y\zId)#ƙY-2&yR:&B+В'r*$ 2VNgxx^EFݵc1iҵW.1 /_$ȱc: a_Y{p޿ڃ/tХ}iu"-x^Хm}۽iv{1tȤUtht匆c ؃ qKksd}ŀ=`@3,|8q/=z~vYʃ!i_6k^_CCplsœĿs8u0l"W-$ӱ,˅34YX `9r= LX+^eB tyV >TQl̼ d9|NO5h˼Q"vD\zF_POǞ'tJN0vɈߐ8phdLb3ΗMzDs:̓ HNbSXEa3Ey! @OG٨"ӑnO+"~еAݹ{!oVVČeUչ_xxя2qu~4P"2\*~(V;%p,G^k%R)_G'*E{Ī~…-!$#ƁTn'.q_&; vҍRt'*b6cp+AxjRx͏Dm?ؤvX^E"H՜ cAhM~X:ITY]t1j>͆ \ԜoF3!d*Y\+Iع{Jd4!nV{Tb]N,ۥFYpbC5/`7ݮތ{{k1f3$s"1|Oy9zLy; :DZli X$ mSw 1{Ν< wJ򀦸Ma )K,j `@!k2dԦF)`54AOR6h&^z'7) /Qm!Z~so ~JsfGd4V` M4,7$ g v<.!# x$d<u8ʦL,e(\}26SeS06lknCzZ?n5Onw/[g'7kwQ+ht)iU뵋:jy*x-|KX Y? 5eԐ;ȮV?*=[q~k?- >x=셕%v 8Xy7tw|ey!,φ<(wVd0?U ` 6晬x|G.řzQ.aE:VͲj.5j>4ZP&(.Fsi_U^xXmoZίmtenVM*\ VQ}k$h}9/؆vE 3g^yuNz[2{-GUu:'tov\*r.SOO2Kv0܉b-RɒV-(DѢūX lGQϫHf2[RD1Axz cA"%y]*ָ(ɭV^L̍]&Q y2Fg w(a)YS;#zM=2&Urv)FE)D_1LnѼ :LW6D?T!Fs.臨`l:w7$=l)3N{%/FyѳG ܩ܈~#7/K/Ivz!4-3)abV{y&u`rDMz|ma둣8:淊"-Tyf3 ؠ;>ϱT "/Mj < VbP[F!OmZY;ϲrϴEpֆ,|# ATmgr @KLX#*D(6HltN3jNr8lF@in[4$v#g ]s׭S61hÅq󨩆h(h.t.nDrIУ)EN$Wg_ŋsA;4w]qs{x;{ypt (i*_9~wKqTVo? $lKo[{EƂuj]+H2qzy5;=ϙz1ijGO sc=ژ}+>D-)QG#Xn0JfкTԟS v1*cMi6g!7oHؑvgJ[ Z %mnc_9ǫ(i }v5S. 7C7:Y=({Vvoۘ3¬ÕaO+nٯ>/ھlū j}ӤHg5`FLJo[-Iykqc}pWuke:`Hm5RI|4"xkPZZU9x*mq!fi&v. I{?V<̢R+N$^ޣRP3(Mho" oH}֚žp&̤|hd20,f"#{0 8ۆ kcOiP9FԹq&cnphvgo1p,ʑNmU?J8^6Uezk}9Ţnץj9 ʑIM[Qa|RPEĂ(= *y"#!&k@F\[KG\oUʣ.1˺oxUKo0 WhqaE tC=(T[N* )uGJ~$ٺ]6H$J$?~|Msx0{*9#ۜTj ;(I5zaZ1ɋ-OwtnjJno,S lJRJt:&R"̮WyyH`j:]= N;=Qϝ&XD{G.1iaX|[*hj;>I 7xx9N,g.?Ax02 {x2%O z)lv#$'FvJ8GOL ۘhԀ:G#:L gG#BMM1rXO8 xUN; 0 uWJpZ; q} $'ɌͺiDNI_rJp7Rw~s&dB#B8cc}gxF'X9Mi\8SNG4KXyJ;v8oM@:!㞎\ҸN&6Dx O]/ # ^hr кe)7s)}'6 l ]IE%ti֐ A Yh8uڄt3u ]lX`8lteހ w syow@F 9yV ׼w}]>솗"K6Y>%%V-t7:5AB-r yCz. )y#⎏H c}>7igdUFGQ20 K3)saV?lb!U\N#D,}0f9C>J/K2߆fVpĽ/6 r"1z0hOZG0@Ÿ!y2M6^bk7X6Od&%˧"Cp+>Gq=YiE}6B0![4 1RXTR32 Ufխ(h-dY 80]YmϺ.Ÿ~;R(*d"&+ Ӹ,)蓒U"7ɳ';{ E!"op$e|c ve#3NucYM( &m‰`RCe6 n<ϫaE፠=icwzR'ȜkB|php~/+PX4%A{ ^+@_^2KR4J}汤4J%.Lr|0 $;ΦsӉ::ņT _:At~hR+U=M {2saϟ9d@7P,6JDzO.T6{D #E, ̭UryH)T,1n%7qLg o\+dl#;K$'5~lH|yZN&q˭퓯*9z>] K_^X}c޻[]xkg1ӤS]FUŲ[M7\O^Y8+/ǟ4K(y' ĭ`3%t^W*2_ V >+8sV WO >*c ^he^ݓ\ZgF~kkz `PZ{zEgo.ǖ.ņ6id]+GC9ghKem;萔ZkjI۝u}ZuBW9 F@jCOO+2ӊu+Sk2\gԹqt/N`W"3uD㪮uq+Ijř.?a5cvDe *kgLV5BSӔ c(ApqU^x(.BbDclJ& PLbit*>(/t[#Q| :1vTȏhG.:h}eJȃn7S+3m%j>;O{iw2a3?4=--}5Ɋ/q20M!t׷5 wmL|)h!jJqEO_/<0~:h˔ZB9n𛍙Eza#e+Gy<xWmOF~bj ;(E(WEDBMKZk{|z w37%Ecyf晗]_6:L qXIҠ Z&LR>&[` oXY{M_^\_s{d5F$hN&m)SVyWDvFXp#LZ:NI|JåB)Jӧ0Șa"hj ^_daP QkV0lG :?$g-[O$|-:B+IE}dF v$`YZ KwG Z7\l 1,0*M!`񲯶dbX:Vr657>KKkK dɬL X2ijXK-t*8SfI Սq3f[bY\>^UyݩPcƑ4u>CɐNfI-ѽy b{ݷL? qBi5s@{u.7md#r*9lqlvVS{!877Sw ou2_&:hhV?&ApP 4}U\w}Ϲ;3K7=nR9 kSRSՐ(V2(Lfu\{G- Y mӒXlx (EV]r;7(J}2O!c [plSc|32wpxUMo@W !q B•Eǫl;nT!;-!Nv|y;zsۙv'*]GW/!ׅQ|oOH[œx~g9 y(r%~|y$}H> }f4ZPբ(9`%d%eYlP )uGwkY.ډk\\{ïd )mZ a=Fr&sQA6[d̯͑dl3)w$:E)VPz2=J#:nk A;6+ 2e=Hs=$\,ݙy}vPW+]rgw6Tq?*ٖdŗǟ~8%;0,ɢyFPbuR$#Z+!(_SF)ʎ@*#A)Eо [WZkoڈ[-i&.%#;oș}߽dD ].in1\z~;gHM;/l0*0υ ݹgoF}rh7:>-|„ gƇΝ6b?329g+i<_|/Χ]X|26:݈&Ν-ik˛gx;3|VtGޒrM,d05] X8ppCי 5v{0;<_i٠$ *eD44O|o6xDͺJ`50VѸvSX;r)腵Чe#ʰ޲n W-W2+C}0 "14Ð] V\%Z=)z*d#aoȱl%0]juQ&ĄJ$aΞappLM+ /j8vqh}= 2?azH gb>9n 1SeJE ұq 6:^v~]qm4UeM/ձ ?l'̙bfTw.qUf?ю$,5Yʸ ܎?FznXq]Wy5=כJjD8%._kadreaNy_((~:!v=OaH, ;/>6ʴF.P~ 6fNЧOQ\ȗaGfx+DkeG&f΋tRǺ s KO~<0֎nvV9Jax&J4m,z: M\MwW1Wn-ƩPV!7YQF0Y'c/٪=dF~'Jp#ȧl7,[d7[9u=y(%p}72~L<PDa7^8&ꍉh} F]݀an]䎥E~7hRr^[{4#EϑLǒ3r5Y\R80uƩ2k C8aGN3 S_A1K xWMoFﯘd+[ *i!\I.]F{(z?3v bDr7#@.o{y.RMD"huI 5ׅ'ބ1H8Zz)E\_2|R(VMb<ŒDZj1v"uH//.4Wt<^ώG⹠(b Z`?~!Ti@2]Fһ[A"]t(SI8"2ʔ[Vw㇆d`׸赘ErgEC#`ˢLs/*6VZK},~VE10*L%tH+*ZM+XWCt4LZgnIXZLx\Fijwv-g=7E?R pb,V|!` /ybA7mv V􆞀 Y2JH)pua_m/ %rk$>L>vkbxʃ J5z_GpV`WȸRKfD%7P^gusTf"EPs+a C\C+HqR*dM<&+ZSݺz50>;/! QyZ0, +8RZ2|n1l|iʰq05>˶[I_Ũ]Ԏ6T(US.I۵9!JT"]z]^FIP¬h1==.qgK:/dؒrV0CҍR%K<>HF--IʱɃ 4إ D R24 :Fص8t!,s\_(](S,"B.RK_=}JSN4Jb1ܳyX[1s!uc6%GfW9UF|.A29RJPl97Wݲ>kMK:. WÐcI PlP~T`SAcd6)yUL0nSFUdՋK9pwC%4.*^~ Vgr/cCH9UI7mdwgeK}Fg%h)U$aW88XAaAC9LiTk!"v4O+ @4ql&s'CcvxfȂKQKڜU&è,]<×  rB<8ڼ!)V{VPyyr5_4Ay|<9h/Jȋ bC!BIlvjne#uVBfb(#ƵGw0> "DJNPTZcjp}$(025>EKS[`dlqx  $+18> wˌ#۝tP ]oOzTonϪv7&`W$nsN/%L B>.S:˺BPKf Q>9n9ݏm#讶x7.d+N*{~{0w>K~.lsWaS[kj貊Amj]Q&&1[G837Kf{ k2BL !ERg'roeKM|bfCGۙax\e_MS"1.g"_)j .7DHqFNq"ZgB=&]K 1Nߵ}clB(U|WWnӇ['TEaI7 Cx)=i'I4-ndѭUF햔N\/gb  dr. Q9IZ0]h1_">$3e<]q%TS/ol sy+IF.1 dw6$dH|? C 2_L Xv,͞\w-Ѻ% m̼*C[ bQTtgn,2nGB]lrGrv[]=1b sɌd0HC~ΕGd;cb_ fvL8,p㏅クLs0o +[HLE+´qds5?: QO#:!|8[Cڵ{U='!鄵a'?9X1GD@%t4Vć[T͑އnO+ĩJmxsϟR[K٥z{z7 ?m&-!l>h϶-N]3)32/s݀M/spw`vyklǾB(&Wљ5&xb& ܡ P1C6viWC2FU$M߀BӁ[]_/6g}k]Hv;Z5m;Q]V!l Zq0/Zx,Ho_Z T7cYx3-V; $JҐ'g3)\x \|:Q}iqi͌ sˍYTIv<2e k#0JI{ܢY^ Vy+>Z 3Ō=V֌Cⰳ `igCۨ8 *i9R/g0WM,| B+CO& "N7S9Jz-[_ R|BvR<¿2 䗻 q] X# 0!ɹB=]V? F:+,> ҇|t] K4}6֦=߼ݰ _#YDС l b ϋaw+,W ۅ9Fhѯ UY,\q ndV=h_ ۨeҲB)wD [J௳J24^[ pfK7[R ,A {BO ,YkomlNƊ% Gj4H=?dH+ ?ř*5`S sl\k&z ́7sjԽ"jC'&` 4,cAO&A; V&Yr$dv`e :k/ T% EcӅgh ^OUZw=ٖ mdMg f6[G:M㬨 l9 s{Ew$ 4R i;hhC ug^T P{]=:Hh, f)%2't'! αo 3FJ|[{ ;W>[ \K${ղ5LC [J4]3K㟺KA(`4 ^ Fc2)} uf.@vCwll+Nv0rQ,~{#V_`l-D.pc-Ԁ(EeҀ8|Y j++xqx#ՈHf5TQ:u׼g1S=dHW5Rhh}k5r[R8^04_;BkmdoquqZO<#z2>UZjwp[oy 9|D@b` Zן=ih:sǝ$ hX1N&!W|d_Z3e o~!@6qި9LA,ch.bJrv(Y ²\I|j &Ȳ_:Xzr9q DAYԞ44>T g5%CTIxV:fќWF@kE3$}ХWpH]|Ф/#1CxQl&1B0Y=g\7S9(f:'k>zUB.a@nvh M2d"mŏH 52~4x?)S9'w \xZfCk"N.'XCkp!a*"b^uF\]'r?7j4+kFE*!ٱ Z1w/у˘Ņȉw~(,D;#"{";DzyPnΠ{T"5PZ~y=7O5 : cLQ0X[y[3ږ 0t'[  YZAtQ@s^O.;t[Qv4VIPѦhWˇI%.ؒ4sf쮻-yJH:O#_2]'GMs |!7U֩pXMPk3CV"ɲC *XsGZ`TAƷ8hH|EUMMZ y.{eS,vT@ <&x5n5?&(o9;v tZ@ 1'/}0!%Ai_H\珆4#V ohw4j'ƪ iDUyJҬ*2L\/jyh4쉉މBM`sŁ`,waȐd3qRO-UVd{.QÂW8F||8cYdG7ƭ Y9GL ]uHqqqɾ&ܝ3!Iƈ<[UΊQ"|ϖlw<|_7mzXЦ(fNoF&Ó-be&Cn3+ji>QUF]8̡%svb0H(~ѧ}\{cagaĦAע#u"__.e1( wPd8zOzl'︵ O!`"ǪčjP.h&r9~ߩƍxkKItBE~("(W8qu%rt,Mn9$*L|aL9U/]%^Ij)ξC t_aulcIh{ ;U[056q %R @8F=%)0ekJz+-m6 %Jc@`b@6!̞2Zo2$l$bj[P2!#+BPY=JF~I5!& ^ۆLĘ53~!DY \د2.U@!|{lg1@}!R+{;-&;PGy!o(GP 7N"I!M"x9ѽW`Xo>m"$f\'jXtz.heF"LRdM[J)7af"_qPӗR@K"r"rāE[F:H' P",UaW["_L(r44#\i&BB#sC hW/TcXJ#Zd!(4\7 lG6#z؃x!wuXKJFG<#@$h,/U#R;#<3$3mVQ!K[e)In} $&QpyY؉pEs($3Kviu盿KG$ÑX]"XO9ΰgࡐf($d^߯'//qiٍ$BQU4dL+P!$߻_ƗNA%Md3^]ķ%n[RoYklH3%o {Vz pc%Df?0{z[TK%0P钰@r%Cj hy/s%b{*9μ]Ҍ%k'@ 秸!&9tn.Z>tK&$$,tvj&@"FTN*M&&r7er?d?&t'P+wRfZ&ueUnicQR<&wLFQeB\$&U[<70'nuJ.P/'C?ݠpv+q(,%Ȱ QԔOs\(\o<[9C^tJU(}!AB&;H;0i(g;:cmLv))㶳N{֦|Db)AFRWgP,)P-Ўڽ]b)}u2n6hcz(o)1%w9Ρo)}1hT$GCz)͙qiZ 0Mi)qi_&dG)Sׅ 3k)w@zb*+j/Xï.[i6)U*0]f^` ^b*HћeLD9D *kvv%ӃmW7@*Ǒ]? D\*U+ߓB(^f*[~0b*'9e;mI;G,EaI';V-%!֫P(оr->O$ Ip2-C!W&WٴS-{6SwxaCl -z՗ T`RF-8G &]n'-ފe`P_%S5'-+*Z0饘BYy.TX!d+l.bqҁj,!|J@f.5i._,A)U̳E<.;8lGJiPD&.:~QIm,λ/"CRdii@/"]<Lh6"/.I%d9gn/O5!JG\؃ݙ/Zet<ӗ3Y͘y)* Q 3ӗoX>vkOA3:zA4P&:"40We^ө^jF4z7-,0_6>74 ZuC7B]]d4V)o:Ž4#t7/ 4֥ k&s4\N+G4 48fbe-95ԡ0nˁ*45S0Ⱦ;N\(5X! ĄDs|+z5k8 c> l5r2 P Vgվ-eq5І7Z-#045sgޗߟ>5nmf?#R6Yv5̳7!AH)lA5ͥH]!5\*qex55^M4qP3N񏣩?5+$ōk6l'|`K%oX:&L6t1vJ"696ϳf"YM^89qr)-/87,/Nf+KMG82ؼrfZՀ8Kˊq+x9RE@8tS.'"~8fCװs/`{ 49=>ʛgcN=˖9`I^]kܳ4X9`{u HC(Y9 !ڃJ}~19ƊC_*2J}8.- 9%/`g Ln!9՞:WgPގǤ٫9iŶ:v2-e+_E:S%xUQ5.vo.;"hS `Yb;$+^Y 1'n;$<@ˤGx"";prn?ldt?x;.N1$]L;ܪ‹|p0Y.*<$8aA-4$5n@=yQݵP >S[wK->WĨi >a>6P7lM/i >ljigJ@ f?>r[ F[c_X#EM>c͜Vm{S&R>j We,m2PO?R>BlwKENDvs?r+]y9%g~?+~6Ֆpwb$y?u9=U&L K@*KAh5w}:@cȨ'@Cx LbC@ a)>x)q:Z X@%˶ظoG*A @B.ֈA'!^x8e$BySAV޺B¼ĺڦ>f0*AH\gT>(uBlST|kaf&UkBBP$HpKOiBdY| %OB7m!yUӂahwC:CtWzHC|_W&J CҜ^8LuC$Y_WNɡP+6DÈ@ߙۚkCSOD-lMdDS,zҭ)% OE ȮCP[ZE58vqGм9_5_ EVfQvc;ְæ'Egj遼{6jnEnK󎀜 j~P) %Euۆ@dME WnY5{[!tIEHku <~V7E-| 4'9F.^nK#F3=L#..{6F"u{]Y[ F;Կi-{B\lF$Lf!nsHJ009G# +j;(,54+^G*+b3Q,G>x&]:шGg8s)V5nG=nBGMfEfG;Vɞݤ̐GǴGpb?ȫ>-WGGnbR:}!^H |jޜ+HUBMx+mOLrHx$"yJp$`dhHBo}@:ZqI/5w$x%Mb/I|`CˮoUwܥJ#d#BџJs ҕjoCaKdߌJyCx{,@JA94I&ayJ.5bxkY "Jv%0uݑ6ZxsJ9k7I,x D]$J5gn;>n},#K@ ׹:4q!{K<pdtV$@)ToyKGP'B,9x@);KK: r"Me=Kc * r~B!zVirKtUF`E}79KgҊ%7:į$wK r/wK83:5KOS Fw(Tsk g1LX4UA L|/{L)K}fJ,Ļ Np75L7 *,3dgxLFb9uL`,ղ#b`LoUB׽(,g>QL~L[ u}P^zv LXlؘ6*=LyeV#ƹ0yL@X7tw3oLۀw?Xa*CxĚqL۔Pxls?|&@Ьb$Ml2 [tWZAIݯ:MtMD'o(jMgRE4C< M j@ W kUMe^͎%0.8N. ;X=S&;N2geN29: s YNFM$EPNX+Sćp0݈HNzciabj:FANJe rhzbLNO3# 1MYF6cO=UkM jdj<ԜIO@x%7 0lWOF@E"N|OHj} ^-OJ9O{_XGb#Oznd ]PO\9w.MfOߘH]ŭ ی#WOњw޳kJvt<[+OִShǺd-pO- [-P B 32Tl$4 PP_LŧKNPZ%"ˍCd4Ħ#EPd8<AdPk~<# j"yPefAZ$F(#PP7܉b;%jl::lQPڸ%2BÂ_Q "V=M] ?QIK Y r mzQX2J"S@&ZL}QYg0!<̾IOQᆫ8Q 4Q̴~(q.+(R ysjj M2RQv`SOj1$~l$R6U`c-SOwAgWuy0vII?-SMl)áh7SdܾD-QmwT?hb KT]*Ŝ{<%XU%nYҿZ~U) w!:!1\MU^ IWDx5ɞ):Ugp]܌|KXoVJTg`I]VKɫ9}ɈSRQVf,[wZV8}VW -wZ.ZX$nȻW|/@@,JW1XԶd*q?gWG GM3 >)5Wj96271;;KbW;i<B4IXnsM.4XNa|AA0XpL0CjXNPEzхZXP}+YD^ UY2;7x% Y52P+ i)n/wIYLɎYL#d-٫f8YPhy'>;YhOղFY ʰ ajc&ƠZ @)lz\PW lZ mqad 4L4Ig}Z'E=T-Du:Znڤ|i]4/$Qҁ0]hFUk]'0(JAPs]p(ڀ`F] I&s~oUL] Bw xM]Q'zv $)bل^k*Ja^%=ׇI0YKq^{w4kEy8rdo^}YbF2s%^[u a؟n;h^R\O(o2&;3=H)y^u@Xܲ `7\v\›_ ]Q8Wg7G6d G_)oE?XuT_8b[3@nUo-Q_f/:aVDVl>_oغ䡤!^_=cci_T_c,B@ K~y_ޔu|.dr_4D:'geDL[lѦO;NgehԣjdF"|eh ^IՏPf tbԚZx2f߻P?gT\/fEI 53U"oH4,ݤv!f>&I.&Ж5fse*叇') U'^fjd<{lKYeKf/rn함@f ,PBH7,ag mb͡}./0Sg&~,O5qgƶVK>zBgߵPAL$6  6]h SX,'hh+h4XLH ʪC u~hAN̓p1c%Z{h& ޵x6h Ō`\ohyL:{7h }9fD<޼hXbhckv1Fu?+i)kާ^U꺧0 1lt]TW*ewDl52|dP)͂hwdl>::]"WmK`ljYB7+]m PКQaQ:d0Tm ͅ& _Zt̫mV6kA>NӛӇ#ZFmH ϠbB8T5mp rEOQLm!͌VJdǺelm}#jn<cnPODW.ZR}mnZu=AFhʘI[ о:ndrTw[X<֭nrP(M`|n~h$$9m#K7GSIn]|[f)`Gh + .'Qfnե\Al`inpjS8oo~Z0jU<5oNI٧YCGUoնCkﴤ-sL @qpeٜ0r!NOqaz$kqZR/Ad1!}qVCdQ~GHqLjltxqunt?LdtqTm_S@XBuqxðks)Q\ hϪzwsUxUQ77go"5s}jH[=f2SIsyTN-fOdz_t=<ݵL] tVcݐuM V taQ1KN&8t'ՔsyHume. ҡGuH>VS:1hy^KVZ;c1 y݅Ɲ)2-]]yes f_R^8jy߸oBXj]7V'yG N2"C.c]yX\;kSϲTA7hya3akY9rzG'(w SO ZzKjҲ5ӄ'zZ1 ;uzr,͙XxrVYzw U0 \rDsz3U6~s|ZwzHбS>ؗtN6C{^Nbm|94gԸ{G%{wRfMeFʔ{%^߱2]r{ulkc7(+| Tl{tIn& a|&8’PS5s0|;}sj,6hj|RiC U!q|lb_t-"R|ЋmsssNS q}/̠\aXKDi}#(&9  }kKBv`Tj}ⱵR;V}'UJcBȥJ|!z}ąQ9_I"4~$" *C-FE%~39E'y7POs7~M! :Ϟi0lIBK]~Tk 7;ԘژC~p) 1aSdBesb/- ׹{u&ee/.4Ns`NSϋ"8_:z l!(r]~u rw./~n;~d$p un&Ui͆&A4A.Mdϱ/ֽk3ҕ+J$N&<} q"SUlK5nI;QK끐9VN]{_L]VCK{u*/t4Xܱ4GwE8<ߍ3nf\zw&eN)6_qM!3 etgCYkm͜#x>nxݡs,h\bX N ?vT QGb 0uFp\-`7b|k"l"H 2RϲXb UMĝWkCٶWG0\wy.%Q :MdrAk˵X "W(& fGGH 3'c{o ~rG醓:ݹhi}eTwE/&I [~[G{MRE=t-YL2SC{0{Nrlpt@} rĬ>>xզ.&QXsp6^+7IhfkUtt_!_2bb(M(6!ד3t2hND_[$n|[84/Xٰ=+@ҷ/z`ܛ*])Kנ\UNĺ;f?jDR#j}^sc朼ЄF0ӹhj7]HO6NanPr'p` ^5`bhݤ'{(YO s#MԹޭ>jnIGGqOj9thPS׉F჆zoٜ"GPCoĚ`DL 焞0KKhLaIm:b@&UL;P&ZD\Ɨ=MYӯ%I.0A[: Djm? ˽ :DC?ݹVZi?Q^P~iljtd꤅!0qׇf]1@@εxuF6̺'s{0Z+w/&+x5NË2KO^٦lGy\V&?%YOv]rJb_B(*:U7<1nRH='VM=Leۉ'\@^*je5LM[CiU.[?W%RKUd1I4?H;ˍ%}V%mi|7eYv#c0n3xx4@K%1yH /D? \K۩ۻ3cOxZt'nO =㏕q|NtKG&6ʧ`q0N%GFSSv 3W (@+~ߵqSsT1Db,z>nHZys%Z(ޑ`CO7?AA?Mn,֥kU4\<XcɀFD6TiYi%N3B|oݺCNw]+ѵ3BCÕٟA asR2|̒ɺ sy0廒o\\lt0/X*՟#i&nRy )mQ̍05$îNUX.m*scLς^<_faVM= Z2ה"/ee\ܑdn_ (/%RWvֳ6+ɔAoNm h;-T7KN;ű6pHӗvLB'hcC(?g\pmJ'ĤDV{rX'h$!({4ң<~=u;b ](9f̝2r*y:6'}vk?Éq oVˆxwh?T}vҕ-⼷ݲgg>C+g{ؤibӸ[/шz55kh"Ȣ$˻7W~ԾmėBÔtM䩾M17F 4}ʷr,MxOuGx m pw-MEc,W)=\zCRjH~ CA{STɾor`kǥhMê"Gͨ$h0Iʓ8C?WPo KâҘ!ak!37zr%XF|ËuHP6 d&ș+$)fT>UxvI{x-x^,Yq8KT tk&?8:/,oaSΌ-GHA;yY$q;ySR1e3,qRY|jBaRNr"hyku߫bhKDFJtn_bJFٰ*EX> U쟙鿛-'ŇE*zIy 1&L?`bHWФ?fjXwxd1ت@`+)\JK=o{)4St9jpe#b#DɬDk0#u )~6• 94s9 vzG_@l"TYg1^אiT!zFǜZdӐn4|'a.*醑FGp@O>-qwSSDDIUh6Y?)(۶Dpmh> Y{TÅ杔~ q77JL4#}+/KӒ!)r3w~/rqGG E? /NM}ε-Z8aMCudt!t'{cTČҖ,C Oc`‘b/(y$54LwNd)Ӟs/cX @Q59}Cʶ .!U}j&/05fäʟ=ٞZ_-ًFܟ\u\m΄. V|H}co&xvu  ="0 A֋DI&WsB[e30X 7\F<,\1dwCؠ Տp] S2xfB^ZSO o[@Pv"Ӯ9 ڗŜ* -$P7:t+xF>>H;j,ƝH vM qya!Qaɉs5KJqDx9-k^ KN_ϠaSHW[E=a$υGbgR!HyVev[?x 2页+s5IATN%桼#a"'.UHχjᶧ|*e(!O11 TEMuIۢ3y{WBӧL:'AЀJS}eVk ?t_{km-"cCTtizf-qԙ(K3`?$WGu` ̛4:%0-%ÚGU_xk2L+*vN@Z.YÔ`Ӝ#A? lv[_e-G^%A?(EvWȽL?[ubd3jg rr= eJP[`R5QrڑtU%&z#F=N.{;:{d]$It?^&Gࢹ:s_#p _*6xqV6_oľ8K@UۢL+Y5g"AٴZOMJ/*C)F9 r+E|*4"Nf*8ULf }~J>̙-VSp_ũuHPb*Y+%O k+c3+#Q~/[gpe{Y,įMRR7X.VkҥB1 lBF4λHzzq/ז@5x P$o,+`*TF le-2gTXJs\ď|x( V͍hDx0OV]#+Di&Ke4l[81>8YҊ2sv6qǎJݝ1Ňvigƭmn) .{;P7:3:T@_' `& q+,!sZ≋zR!Npf2E;~OlyvLb8KZ Xf/qSUp9Ll7z+xFF&fEM'č;dӯFb0ttH:Hc`|ϦfW͐%Ag±e>ok\Y(GEOjbN<{`U]67B?Vy錏 )R8C\)k{+`L7lQ-@nim~f]BPsѾv;GIRV|2 =Pl#*s팲8o"1MX'=jF%9bW d%b2<'ƶ{dMV dY{Nvf-bͳn. gxz4 %@ܿoyy-CE]80X'ɳ ,~8E(H@bQb΁aVJV+[{n(!E}Go,^kà2%!BO1"Yn#9c$ !7<@qĶt9ͥl̴,y}n#l p ͢q|ֳ1r^x^9 1ٸ̬N"`V8m.,,!_/}XN2-l÷DodӠ?⽺=󋎝YkpLfBεcmX̲۶FTه쉭Qa-S ;Y7Nv@E`BG,UlBrh8;9뮶c~NE)!/aX[`,zRnpRmb!.fԶXT}\!_g?:Ru4BSb+`$MIi?#RA:'v34˚1"*QG_v=W㭆v .i &OC>* VI9Ԥ`!)nѷ9aqTz-i+~QbTl/j~HJ @%NFu-bEk|CpiM>l1+Y(iAۙ͜ R9L۝$Ŏ[50zIc"LMmpv%X:[::"4PbT{j˸ ]P;U6_ӆM4+ (S'ոp$V*r|#IUec> ||9^AԬvIÎ /9.nFf2'&uM6B^}-!ZN(m2-zd7iH=1-1(-ge dC"ު;xo %5Z$`v1e@5tIj_oIu<b^v {ń$#ܭּ#5_ҸYY)*pt? զ7!]?G&OFcj\f"ũTV;^ƹ7/q LwO/g]?sO!8WCq`3=FS񈵊LU 3qQԁ[vdgnDDz/@)x9bu$閽StP؋r،VR+kWo(RQn ܝ{ct\g:D<}WӺ,4eDEN>y4oM4$鸹^,`!؈΃]Y&' V͵gb@NaL"lg "o_8J_LhUF$&IΌ '%BJU 29miqS5y{-΅s45N^p$҃Ǻ.2 (p{9*#9[HUdLRhV%U%Kh 9wD0$Cނ岂1*ҞiGM6ڸ]9Lj^U?̝TQ˾%;'M9*JB߉rJu )_e[!qpϦ~rn-.$cu`?= 2W%f6d,XSW! TبBj%=QyqÑHDo%fہVqP_aS91rRcLjY%&V+6>Ǐ&QTr~/ a؋gg5zNGY q9]U+kor9Ȟ%2e ZFTE3kY3:;o zݵ! gGFDMa'oY\,rxDխ/WfF>PɊb>N l+h6tn3Lo{ӏ&k-Lh$xyCQ+B{72 r(k$_K$pRyV$20ꙙ@Pɍ~_k* #GmF5=+or+8ɍ2u_ک.}GsD|;LY-;ʞz1H Ж=-G&0joa"eW 6T= Ηq~QphN]y &3 C9۱E$.,rK^@TI [[X*ҰC͞d$N9Dm#qwK(כw?@jS B<%}j=28b(:9bh(,~T^oH!1Lw1l 3l(;[E×$!-l' ̟ rQZ<` 7 "̣7'D< EJ^0̦'0@&mԅD Z&qTߟ6o(vSzw"tgDA/O`t+`1sg"FOfwd1͕5tT{A3:3'{:"La2!|E.h;`fi!Q] a>EηfXIJ=({!s9ThdW.?p.kpC^_)w>vՐ +"}$i cN5/ct}c%9l9u*-)ZK=EY9Vs3˖[mK)IKd]֍ P:Ґ VjO֐b: &d3L֒rv-5`Dؼ֓ ]":3֢1oBj"܎5Cq]/C OK~ؖF9vaI5Y I;Y:&h(y& M& ˒Cʶ 8uB@3.UW|yxE&a;;XI(qSz IG~5ٌ&:dӄف2G/mp(BY59<3@hXV1;,(Ֆ  5qk.K~[' `K9#Z@Y# L.s" 7FY#A'ڄ)` )Q)ڻ'ϏY>NQ9.fOi%ӇSJvz"47%~}Ou!&j\:Lզ(x;@`n+Sz|T~҉یeWfU@M]Sۯ{.J$W \ǩ;FTg2T $?&MxwĭHph#JjYYn޸7qk f*j8#-áK)0Ivʒ PlQ=݌on[(0ݪ#'Nzaw*xg^AcV[.pvTa~_S=ZxKcdmZNUJ־|g3T!yed/U~W>At4a>~&N# hgǦyvl:tOR_*cv|;௪KliV5"`߃kwgڙlҺ+ߚws8lpP4}~KHpa5 [N y<w @Cpc͏(@ąirDL0FB4pzDuCWVOCI5f˟X~3MY^:JmVa\XQ{!5s%}Pr61;Q PuT 3q`1P) ?2ݙč3Y&X;(;h7 %zwAi<)zR|ѕiUu7矋cГ&6⁰n&vGQ7e( F+`-ʰyi!(EL\Ð >W.\l;uu/ f?N-{诀 gn0ֆ όsCZɻ 4w+ohl&rg>"}89HM1դmD`&9V}TwE"jN;Q(fJuY5! K#Tڅ+ifرC鎒2ii!_kKf)j+gwa &BC6YcL;0P̼?" ?T4S]M;z1rr 2UED$ƥoa)yf1EmҠsI 黏]K_$Ma{zzѸˇus:G/nS<]Ë^BYzmCDVF\gq)Hs&fq`YY'ܐ m& ̭yc}jܪ!7d I1:&]1ʒ}Hugּc|j yò'%,䚄9EoۺMcm$t,g(nЫ. S[6ës{Ҟ(D9P],e۫F,4V-^K& ˸0iX8{ lLM.%[D>-0P?گ]~/:?=׍_DPqLٕ-VM35QuSUg=DIV^#8Ӥ m4j2wEկ+`D9N"ămj7PoZӼhNz1 Gxp^]J"BQ D3wilYdK6*F;9PVBtʥhQ9^k{V2;s2M%x}X+oˠ^I:@2y*hȳ5LlE7xwi$$tZ11/Btք +^z^&5i}a-p10KCEy{ԩ(5W[|2IEuoW:x9hs?QL(Y_;9pzqI"yچQ Bc d_}s[[3%!쵍#j+Biַ}(1T2bh,PKraMti胶UuLh0h33zUjN>P3X*:W r|:!j1EG^L{Y$<7ס>!%)\x2 v!vΌ[1uY}2 iM~d_:zxye4-sOMpT|ìE3Ա ԛgvm&f4h  p%V'KwgLkR[➐ʔ,VahE[6kBֺq-9es,~Sn)-| K Aǀ2@y~:wtS* yUh!$RhG2@9ĐdE JȔscKdBErR;\uұr|U{vUf<Et8oVU?LZ%@kkqƓ)$= zɫk\SP^[ٖ`tO=p3nF4;4}\LHNŦ,`$ p.5g< b?Nےw1ú4b6~T%/]ӌj <{!e4Y\)7l" 8!GR"fچaFqB[y KِeD-,NcEtR!Q=3`*`NX;q6]%[homNԀ' 0Rmhێ5rOimJ<f A#%+s׳B_m^bL P<v# -cIZC#.gɱhICހ'֔u,4QXiQa^ BߛBYʜo;?xp7{g+-ۼ #}ĶdS%%.N/tCYƬS;r܀1h^ѝPzFKa+'q瀓f[/ѺP\Ө#wC]TCX-`WApQ/V3-6izk0قMMs(LsYZ?Q!LeepY|ECĒ xirBȤ6rq\mv`1 GO ՠ(Z326z^i…W1y{i:Qyn~XfߡXD~ix3֘0Z-3{gʘT1ƃ1LE( ~"a"lk"@u7!$`Lw-ب Aec{x34UNO=JT@D3=ַ%1}i!q=j`Cy3G<Iq+jҙ.p߮rsKRv-=Vtue穻uRK ip1P 85TwN/Jd1$* @Ȉʄ߁|(pZ͖}nj 5x?8"s6f3 * p"^  s ^ҹ& )^;]|<4uVh&RiU]Rp˱~hV' 6Re%\ì:j+^Sԭ~'#3/* ];GGBzᒷ0N Pߍku}i.q37l\Ƃ}=~QE:~8ʁOx@d{s/7?6Jyf0m#hy(Ci|.;w\xgRމm hh)7񛒡WS78oE )#yhBl:' D; H#[Z{ 9HyE+itF-M)AWƲx֬ONle0@u(;k|| 6s=gn6va.'Z,ګ9,kBW({bPYы8ScY5?ۨHQ Qm1nj U^J/@ajL-j|ٮ!fɑ; ;X?F$5x(.Y!g=C?CfYή^|`/#^J݀Xn&Nk?#}õs]԰w>="׻_g+b-GGsA>"JI||VQ$0iS9&U^wPu=V-ix֊YD,W]ƖG!֟'<&NpghQyoN/W^? Nn۷K?Ƭ $I(\Hl3?mWɛ 0 SF>d%{8@D>LIPeSav7/ cg& "6#sx_~ʦ;: opp(Lm0vhq{~T9㵧)l~J[5K;OA$V#P7W-|'`TJ1wlo\_PrY^Y2KQ`quY8j|?1"St(}ݙgiPtv*S6#'=?NiZr&lzaWM(egGOQ|`Dc*ۑ j>AS>ZF2zH;SrT{,we8?vbͿ'BJiy{zbU7 ?Cغ)%~;SX/Xk|6Ij5:m's2gdGQZ3!D ] w/5H:UCeJV3PwEW;uX&+KJZ8AЁQdG)O0{`L|lrQi%z@EU.Ʒsr-0{fHÅ>8W28wx5[0?ߐp BC*N6oԠ6ZlgrA&OAn`91G4 麌g[FaR) ]YqXLxPW4,Ԩn'I&%w'b0c2 *-!b5IԃJ{:1uW'!f>҃Vڂ .,,;ܥxcn-ߍM Xq a|!~EG/ՖAro W3@29 (Y [EA@^mõ5 [ܒrqIlML{0xuC:q&؉QהywNzFB0!MJ@nbB/p 2}x'"Dlr քm̴#vLYh@6c\T37pQRֻJ۟]{c6=]jݶ9^~>%_msQX:)a=j(?qbqg?6u!Y`urA_Ck!S06l;a@!tDHm2/ďBw.WR|{d'&8WI͸H"̅6ZXr0ARGOѣl#9RP4/tFrҐsgnbPBUK.Q[{|vW)n)xa3Է MǀR4OОYBk&5 dP/'ڄWƖY4;/N4/+TBX%s^Db}q+Yѽk'H=8í}uMwS6po+~cB"<(*b#8ER &2J%a34P,[$ԈVRKVYG4{h/sk :oRPSۅD}4w؄c 2Sƫ}~x].A-EoA<ՎZ~5yMnz_kQTe/y J $iwn+(.fo%45!~Mk{A^/e}^lbQ>:ɞP STmv`9[r'>$QKC Nwwi7I(]d+R-]g$vB_X,QN-~z$]w%,6f !mj)- 9yb٧2_fŔmI7|k+wl"vA&p(v<"2$ޢ6mJ%G>z99BND͑+ Vvhoa1 8O"<:a/G~h&s5fF1Ю9\o0/ #II p,:8i{70"*rC_V5%HIɣ%L]YI8:7'|`Cy}/|(,qJ<86 Rg9Pm=tFhGpfɲ{iSZ+UbgdhAKTR&k#O'2}V6l%x!g o>s}J%)WGC1l4"9}‹`WgBCD/JkSMB:h*Os>B~x} @IaF&o"#޲=+[$*5f1^DW]i&}!f0sG0ա](BZLOJRt}[8$ {iLOV PoIfyK̇8g]/jdCZeU))x]y[B|  pbp{<.H5;Dgc83V@A:@0'v);kW-Xr1'ÒjWQWXK60+LzwbsL1'^Do\lDHJDw$|a;iCa@ H4Ah{nȆ9#<M]a3 G2t Ej- s. G^OzBҰHmm(GG[~~7G^)k&if,]ݩgx57]()q!/^KI4RhPndv|="Q4D?yo ?hJe:Wv'(EV(z[zB9w2{K< '& Hl{iw~8<]zOP!Fg[6|E})BIA$rU4uMDEjՙJF/|Dɽj)Ej1WIGCAl<K;Vmcʷ%EI"!Y$|"X:h3fP0q!QK!.A5d[EA6\xd=_@v{~ynYg\L0У  a}|&;-2AJz1b;]o}ڷ) _S_XSMNEd 3.|ҟBO7M^JI6}?EYƧ[9lÞ:Hxat5Vuˡܐ4nRAtoS=pC{y6ZMDRlD:|p-+Q\x -=S H#vnWL#5?gS^Uۡ  8|{0\U!.I%A%PS-8ct|w=E8h7U 0/ տhiokYj!(^+"Vj<Қ6nWR=g$@:y.qB*"*2NrΟϙ[gT2'B6]jE %Mݼj@Ft397[8B"WknfNt - ,}!- ~*G{\8**\zs@3w\dјYJ8(9oh S%Vd~͛`gmgP?4{D7(q^ y\y8#~`+uhH8[Zq[H_*Z88hj/8"Kl 3GM*"?O>,^*bu]L itFzLn!\{G 4j?\U*}Zm; z0I))!Jo-=@wP)wTs58f~'8?[-= xW6cnbX<$T(P4 AKp&Ce\ 'H y/3,-n=cAR]+jk:DR ,ӿN%cAH a!K1So ?#rLjx\ZE*rsk}w 4M6?(wqlΈ1uXk ng ˜**87>-@W/o8%էUҟsK߂}[tIa+5|6ely<Xm04!\(ߧS| K"f2':N;_i* lQV$]%MFw=+u@   o])JVd|Q,TZCR_v:g5PNS1XNVLT8 ( T9XcMٕgPǸ'shadowsocks/.git/objects/pack/pack-587e5243815e12ffef327ab5929a208c162ace9d.idx0000444000175000017500000002101412774122446024635 0ustar shellshelltOc !##$%)*+,,---...02468::<<<<<=@ACCEGGHKKMNNPSSTVVVXXZZ]^^`bdeehiiijjknnooptvwxxyyz||     }#8&ycZA/+:y(&zNue! ~txpV$0э,\Vd.fQ7q]h2A'I/dj*|{Q ѕ[(<45G~~lZPx|nY * y ;s>0'u׌Ze  #v &d  IշHϓUT Cd~"8s{Ռ.Ja=^$͡!؈a0Y3d8E+꣜11` ܽ&b|.r /\NN堀_<\Ǘ*qP3#g!e68y<_{é2BW#I:Y*-c?`f?WܮC``vu.yqjPg8}{ <$#|yI.( w Q| -='찰^ȫ(- ؟, @U#Ht!]Is&L!JI؉@ Ū&!/ű HLtE6{"E4 X$X:L#g-p8!e#i䅖]ZY $2;ڐa1ż$e|\O.)B%4&=-pbM:o`ְ@'HnS10xm(])JASBY(g}q@9!s#(Z&r{(K#8.Uns1)}BMxՁP*Ƞ&6ю+.us pԌQ}@<P-@aO۶TrH'0muV:7<3mECW6$Fcn3vUq@ 4xJǮ4KnЭo@:\|4rYW^-35f ȷh2{xz5̳7!AH)lA6A&M0CQj 6ݪ)ӯ02.+7/&5ݰ>N\St7Y)O8Xx'j8 Q욤aZ%۹8?a wrqݒ:$ԙ~{jʻ:7t!M>dpy?=PiA6@~ >!pT7@\ݝ{f·Ȯ`Te@^0 4*}~d٣A]`Ii;JN5^B ѽt-B KZ}xͽDRrHY@[1TD8d2nW4EO2=7bEO9EGǃ h_ Gí+fJ SI;H4:HM\R~^; 4'mKP\_R GGw#A&\][jc-L75|c,G]~KፉTsȁpK<^HLHXM( é`hWL6d`5t"-[v0 ` e^?*W\GN9aN+ȿ Pc1ݘkd0eIrRf9u2οefӻa/wPUÕk?g~lLV3(fWC%ئgX*󠄾c_@!>)g PF|~C* O(iK6+x6:e@kgO!Io[pl<0grWV4x 8E+ 'nyxF#̼JQ&@4/.f/q\vq;:q*YjҵnzOcW"l"H 2R)A;(?|,\ӂ%t;urhmKY j&nRy )mQ,ΥN}l;D+pB SeWUA ANn \#R5\=Kx|Ś.!lx'{ "UZJtg $YBZeS\L@ͼ5ɕ.@Ɨ@ m\dr#>DP(Kx/M**YEyJ*LMz4 raNnQ1lᖽkQ~gr;Q}G\!or1QJEŖNCITs Þu%U&!TS֟6ATa! 2qfcOeDE;+avs?2_ f@8ZV%ū{ ~eפ~'hH/ae( ojx< LS\F *G$k$E=8p}̚ @/4;EQ(鐢npD,)CnYP<ʌ4>| Ej ӘAAE֥B%uԔj\ %//*TKԭf|`JWv'5΄!lUC?C^M[R+絆[l$ygk4 J/a`7$yܚiŶ fof)> ,ⶩT&8C]lXD5RîN9_$|1!Hvl' uɺa7W&3y ^@QSːگq;.nq5Ao"xͯ޼h ?ʙ2#09V sy8޷pOZ"8CSlⲸYzCjDr8ֹT *>-$Ub6 f"C_F~5HX)QM+b5}l%7231u mJV5íhG9fKŏfMiZMmH{úg 8iƬDMnAB`,D}Cc:"]ɦ6ʙQZE;|m+ܵغ 2 $cV۫o(?ȮbD۔ 8h%׆wH<}o,@= l&!HV,&ʺbq{ٴ)&coD<7@{3Fm77e&EZ!6ہ/~y-~) f ѠOw4_YSX;1X|o=cuxG 3"< '|MA4΍_=|#?Cb관Vt(Mt2d^Q]s^i6G&/1ŗfg0Kam|]_m<ȀbH6$2쟃tPWMBL)es4$NX`MBuM4S7 ;;MѴa:`] l"i殧3fXj z 8o:v!*y6,K./I"nB+'T" , !ۯ0*c"UV*UQ=~T+=Mg^1uabH度`jT݇~_z}˯kViK\ NVcEK4tp*u$go/҂ 2]rF2A#6ЦYTO҂NQg@ gYE oBM\A B_gArgnP&ʠ)7u#_kk8o~XDl8GfQ70I?B'ī1#۱Q[붗dP?8~8)zaT>UXlp+o_RMi^8IN)&SX|Q]V|We+FZ0VjupÔk0 prlk{Bȹխ!gZiU7 e^?;[_ 5?QwډȆ4LH5v&<{ު 0IP4~ *G?&սtU\ D6&vB9μ7dXo ?􅭨rēYn}g`c9b}cuĹE!19atxBF`TXaE+;O>`J-D'B\r;k왺˷E#BR>v,2 cPE*8=~DUt2$GS݂>kX$ܗip֣`Rr= AaRy٤R G=|Dz)9*& y|hN{k;a#s4Y(S4w@'I] KfASBn\rɘݎKoq ^֋tjGԽ4y,Ȟ9jbMe"6ow)yօ37$ąa)rq. `9bAYĸCad'0cIh5 ^a/Li<Ԟ4 "D./2P\F<\z"iNTNZ<P4zDBAM6 \v<QE@+1[XX i?-RTJ9RnRYt[^WO @vCW8X< mfM!pkNS.(Dq l @,/UVX/|!Q\SAZAnS*'OW8m)~15@7XLAZw3JB؜E.YyF,8J'PjApU,N #5;SYP2/?[NT3g W;5-Vc0@0YW;W} *Va X4<9(k ^r QED:_[YJ4<2P<ObXkӯX@d-O"4L-x: Jw@,8*m 9ے;\??V6VZjA#Klq[h)B R  PteEU.] ]Dm]X~RC^2z *Ν)("İSwht;Xshadowsocks/.git/objects/info/0000755000175000017500000000000012562121324015631 5ustar shellshellshadowsocks/.git/objects/8c/0000755000175000017500000000000012774125157015225 5ustar shellshellshadowsocks/.git/objects/8c/2443296f11886bb166346f7375b5003fbd31a50000444000175000017500000000067712774125157022005 0ustar shellshellx+)JMU05d040031QHHKOOgi[8qǗu$#LQ~nAb ߥ.3T"epyizYy n9hZ?Ԇ'BYIQ~˛)'?quk"p%E% NZȿfulJ3:gR8ȿmb9ė`%|f^f^ ;ܧ~Fݙ*Ksrgʭ(?{c3,*3$=ڝ19nM[8P33Sˋ󓳋RRKsJ*$OIPrbڿ*4haQW4biS֞)sKS&nۦsmi6߶Λg_>f`qN~rb!@ދS٣߾1fɌ SRpshadowsocks/.git/objects/9c/0000755000175000017500000000000012562121324015211 5ustar shellshellshadowsocks/.git/objects/9c/e19dcd4e1d6eef51319c6ccf031ca8e196bdb30000444000175000017500000000067512562121324022727 0ustar shellshellx+)JMU01d040031QK,L/Je0-20EA!,/DtT%eU0^<Ǹd#7_`n*spsw feez;=5ݓxG3) t sMadSS\^6%hM P>ή~ 3q~\rbv-lKxJ|<\C2dx*Gx)& U νeۮW5L-$UQQq +Пkl%7_y_RR2>s$-X˕}T96((HLNLKg=|En^~mct5ԪԒJ}M2M2\vgW$bNqFbJ~yq~rv1C'3,jbϗWiM DUIjqI1V astt&}8=^ashadowsocks/.git/objects/d5/0000755000175000017500000000000012774125157015223 5ustar shellshellshadowsocks/.git/objects/d5/35bc5c1b1530139b64cb7e06b994f123f81c2f0000444000175000017500000000073312774125157022265 0ustar shellshellx+)JMU054f040031QK,L/JeȑN|-0NĈf[aJ2*ssOxfAYw[ UpdݳWtƿ>'!L_HSh^n C>M0UVmEL:P.٩Ei9 NNU}a OҶ}נ|<]]f̳tt.a1P%~n!zy Mwk}=jrPeA. Gfa SF)KU~ߟUQQq ÿr*L2:{E1=&@У⬙/ؑ1$t+^åPcSKJ *v%5?޸ g܌9,SB )HL//B1&w?hp?]b &ÿd3 AKK2s9n.Re51:ʙshadowsocks/.git/objects/7a/0000755000175000017500000000000012562121324015205 5ustar shellshellshadowsocks/.git/objects/7a/c2967d2917ad78aed0e621237222bd4973af3b0000444000175000017500000000024712562121324022261 0ustar shellshellxA 0E]VL'nN'S[+|q ] aʚafGIY Ur;rO-s,XeQU5p{Y) ג/G `1 GFqڗ[H(shadowsocks/.git/objects/da/0000755000175000017500000000000012774125037015274 5ustar shellshellshadowsocks/.git/objects/da/0092004d4989edc2426b147387598f7bcca8fa0000444000175000017500000000067312562121324022276 0ustar shellshellxRKk0Yb94`k4 M(} -!W<^%1#wcB3m.2أy|ubܚ:95b AݐPg2q!ˋTE]xx7>q^] CԸo/?yHiBzWܧdلP-O^odB9qXl]n͈aa}]ŜH3& -j&Qj$?RnMȶ.= rQ@ƙVi49'Kz([ata=ldq{ ~vgy(+gvۀ58Fc!#1dY@1F`^5qAde /kA](Hqhv; <shadowsocks/.git/objects/da/c8665d8895b17d59e2bb403e5c172841b674830000444000175000017500000000125412774125037022154 0ustar shellshellxTo0g|im]Uc.Q0m7-SeTĆ$;HMj`r|2ք73Ӣ砿ա"i)^[oe#eRh³QÅjwe43B_j-;Ա)BaܜD%,%G UuQ J) T V*hD AS2 N%߰,S9w\: J).\Û/eBob_DȲèhlS˛ԙKCU 2@"NLV" yJTuFW|^艆?xã 4$Fh9W-y |VȰG)wg{x ( 1,@=mQg޻5)w1qI!^4O1P6][PxȸO8A+3۹\i(_h8Bj`z.:-=Vq-ʤs $_h57iQoad||wTE_%:S۽`AAp[ۣGn;^;.rjE)TYu"-K)BZ42m0oәG,-%ǒC$:E# S|= n6;&-.eϻ|\؞v%U|/shadowsocks/.git/ORIG_HEAD0000644000175000017500000000005112774125037014517 0ustar shellshell21efeace2fc5b10a15484c74459ea1ace4367ba6 shadowsocks/.git/index0000644000175000017500000002075112774125157014321 0ustar shellshellDIRCXW(“W(“ la+kOVX6aeG .gitignoreW(“W(“ *S[ɮX .travis.ymlW(“W(“ -ͻL_lXCHANGESW(“W(“ ]򓰕!,OCONTRIBUTING.mdW(“W(“YQ B/z1IKu DockerfileW(“W(“ ,^EiVs49GB3- LLICENSEW(W( F}zF#ind+g MANIFEST.inW(W(>tp*u$g README.mdW(W(? o/҂ 2]rF README.rstWG)~GWG)~GAfNHȳJƎ Adebian/changelogUȢUȢ8Euۆ@dM debian/compatW(W(BxF#̼JQitests/nose_plugin.pyW(W(C5f ȷh2{xztests/rc4-md5-ota.jsonW(W(C& vhl, 'Ϫtests/rc4-md5.jsonW(W(C\_R GGw#A&\tests/salsa20-ctr.jsonW(W(J~08YynSlwtests/salsa20.jsonW(W(C]UblI}>tests/server-dnsserver.jsonW(W(C"ɋ~ r-R*tests/server-multi-passwd-client-side.jsonW(W(C5N]mFozUv$tests/server-multi-passwd-empty.jsonW(W(C{VDNؠVc^*tests/server-multi-passwd-performance.jsonUȢ2UȢ284:%0-XUȢ5>X8[ʶA\ _Wz0l#;tests/server-multi-ports.jsonW(W(C+_r?nF]tests/setup_tc.shW(W(L݆=?\ L?EI[tests/socksify/install.shUȢ3"UȢ3"8w/у˘Ņȉwtests/socksify/socks.confUȢ6oUȢ6o8̦'0@&mԅtests/table.jsonW(W(Mt|δ5-ϴ tests/test.pyW(W(C ,%t;urhm<tests/test_command.shW(W(CM-c?`f?WܮCtests/test_daemon.shW(W(CKWpLa-| B=tests/test_graceful_restart.shW(W(Czj썱"t"ntests/test_large_file.shW(W(C XVо`oDCpaR8tests/test_udp_src.pyW(W(C0J;6yrAo yo~tests/test_udp_src.shUȢ5jUȢ5j8 ljY--ZGjIN&Whtests/workers.jsonW(W(C$0r#yw-utils/README.mdW(W(Cleɷ)T~&_Lj7*utils/autoban.pyW(W(C|~Ǫ822!6[Wutils/fail2ban/shadowsocks.confTREE>88 4 5\0d~#/tests42 2 Y\̢Nnsocksify2 0 h ?ʙlibsodium1 0 abH度`jT݇~_utils3 1 _ "=:';(j^ ;fail2ban1 0 vb kJm9yW{V[.s:debian14 1 $C)okf4osu?1source1 0 n,֥kU4shadowsocks19 1 Ow4_YScrypto6 0 77e&EZ!6REUCkdebian/changelog100644100644100644Nzciabj:FAˍ0ǁ+Li^y?dMNHȳJƎ Adebian/sslocal.1100644100644100644 ,YkomlNƊ%AgNz 5_}p`OB>K./Idebian/ssserver.1100644100644100644 ,YkomlNƊ%Q ѕ[(<4`OB>K./Ipackaging/py2exe/setup.py100644100644004 %Ș)A04 %Ș)Ashadowsocks/encrypt_salsa20.py1006441006440bZɇbΧiSnbZɇbΧiSnshadowsocks/utils.py1006441006440m*scLς^<_m*scLς^<_tests/test_latency.py1006441006440flIE:w®M3oflIE:w®M3o}(GZ8~*6tzshadowsocks/.git/packed-refs0000644000175000017500000000046112562121324015355 0ustar shellshell# pack-refs with: peeled fully-peeled 538c4d6cbadc29cddfca191b8fc3a11e6837f8d1 refs/remotes/origin/1.4 c7d2d76767d419e0b7e6c8e0b2357a4e91f28514 refs/remotes/origin/dev 6d161756366b413e4ed39bd38723a2895a468cca refs/remotes/origin/master 7f3405de4e8f73b9604eee5383cf8b1022b8c81c refs/remotes/origin/old2.0 shadowsocks/.git/info/0000755000175000017500000000000012562121324014200 5ustar shellshellshadowsocks/.git/info/exclude0000644000175000017500000000036012562121324015553 0ustar shellshell# git ls-files --others --exclude-from=.git/info/exclude # Lines that start with '#' are comments. # For a project mostly in C, the following would be a good set of # exclude patterns (uncomment them if you want to use them): # *.[oa] # *~ shadowsocks/.git/COMMIT_EDITMSG0000644000175000017500000000663512774125157015363 0ustar shellshellMerge branch 'master' into deb-stable-package # Conflicts: # debian/changelog # debian/sslocal.1 # debian/ssserver.1 # # 似乎您正在做一个合并提交。如果不对,请删除文件 # .git/MERGE_HEAD # 然后重试。 # 请为您的变更输入提交说明。以 '#' 开始的行将被忽略,而一个空的提交 # 说明将会终止提交。 # 位于分支 deb-stable-package # 您的分支与上游分支 'origin/deb-stable-package' 一致。 # # 所有冲突已解决但您仍处于合并中。 # # 要提交的变更: # 修改: .gitignore # 修改: .travis.yml # 修改: CHANGES # 修改: CONTRIBUTING.md # 新文件: Dockerfile # 修改: LICENSE # 修改: MANIFEST.in # 修改: README.md # 修改: README.rst # 修改: debian/changelog # 修改: debian/config.json # 修改: debian/control # 修改: debian/copyright # 修改: debian/sslocal.1 # 删除: packaging/py2exe/setup.py # 修改: setup.py # 修改: shadowsocks/__init__.py # 修改: shadowsocks/asyncdns.py # 修改: shadowsocks/common.py # 新文件: shadowsocks/crypto/__init__.py # 新文件: shadowsocks/crypto/openssl.py # 新文件: shadowsocks/crypto/rc4_md5.py # 新文件: shadowsocks/crypto/sodium.py # 新文件: shadowsocks/crypto/table.py # 新文件: shadowsocks/crypto/util.py # 新文件: shadowsocks/daemon.py # 修改: shadowsocks/encrypt.py # 删除: shadowsocks/encrypt_salsa20.py # 修改: shadowsocks/eventloop.py # 修改: shadowsocks/local.py # 修改: shadowsocks/lru_cache.py # 新文件: shadowsocks/manager.py # 修改: shadowsocks/server.py # 新文件: shadowsocks/shell.py # 修改: shadowsocks/tcprelay.py # 修改: shadowsocks/udprelay.py # 删除: shadowsocks/utils.py # 新文件: tests/aes-cfb1.json # 新文件: tests/aes-cfb8.json # 新文件: tests/aes-ctr.json # 新文件: tests/assert.sh # 新文件: tests/chacha20-ietf.json # 新文件: tests/chacha20.json # 新文件: tests/client-multi-server-ip.json # 新文件: tests/coverage_server.py # 新文件: tests/gen_multiple_passwd.py # 新文件: tests/graceful.json # 新文件: tests/graceful_cli.py # 新文件: tests/graceful_server.py # 新文件: tests/ipv6-client-side.json # 新文件: tests/ipv6.json # 新文件: tests/jenkins.sh # 新文件: tests/libsodium/install.sh # 新文件: tests/nose_plugin.py # 新文件: tests/rc4-md5-ota.json # 新文件: tests/rc4-md5.json # 新文件: tests/salsa20-ctr.json # 修改: tests/salsa20.json # 新文件: tests/server-dnsserver.json # 新文件: tests/server-multi-passwd-client-side.json # 新文件: tests/server-multi-passwd-empty.json # 新文件: tests/server-multi-passwd-performance.json # 修改: tests/server-multi-passwd.json # 新文件: tests/setup_tc.sh # 修改: tests/socksify/install.sh # 修改: tests/test.py # 新文件: tests/test_command.sh # 新文件: tests/test_daemon.sh # 新文件: tests/test_graceful_restart.sh # 新文件: tests/test_large_file.sh # 删除: tests/test_latency.py # 新文件: tests/test_udp_src.py # 新文件: tests/test_udp_src.sh # 新文件: utils/README.md # 新文件: utils/autoban.py # 新文件: utils/fail2ban/shadowsocks.conf # shadowsocks/.git/refs/0000755000175000017500000000000012562121324014204 5ustar shellshellshadowsocks/.git/refs/remotes/0000755000175000017500000000000012562121324015662 5ustar shellshellshadowsocks/.git/refs/remotes/origin/0000755000175000017500000000000012774122446017164 5ustar shellshellshadowsocks/.git/refs/remotes/origin/master0000644000175000017500000000005112774122446020376 0ustar shellshell0db2f94364d0ea137e98c922381fa97386bb00e4 shadowsocks/.git/refs/remotes/origin/HEAD0000644000175000017500000000004012562121324017567 0ustar shellshellref: refs/remotes/origin/master shadowsocks/.git/refs/remotes/origin/deb-stable-package0000644000175000017500000000005112774122446022476 0ustar shellshell21efeace2fc5b10a15484c74459ea1ace4367ba6 shadowsocks/.git/refs/tags/0000755000175000017500000000000012562121324015142 5ustar shellshellshadowsocks/.git/refs/heads/0000755000175000017500000000000012774125162015301 5ustar shellshellshadowsocks/.git/refs/heads/master0000644000175000017500000000005112774122446016515 0ustar shellshell0db2f94364d0ea137e98c922381fa97386bb00e4 shadowsocks/.git/refs/heads/deb-stable-package0000644000175000017500000000005112774125162020613 0ustar shellshellb49d1de74310358195ae6aee60773d7bd08f9fda shadowsocks/.git/branches/0000755000175000017500000000000012562121324015032 5ustar shellshellshadowsocks/.git/HEAD0000644000175000017500000000004312774122507013677 0ustar shellshellref: refs/heads/deb-stable-package shadowsocks/.git/hooks/0000755000175000017500000000000012562121324014370 5ustar shellshellshadowsocks/.git/hooks/pre-rebase.sample0000755000175000017500000001144212562121324017625 0ustar shellshell#!/bin/sh # # Copyright (c) 2006, 2008 Junio C Hamano # # The "pre-rebase" hook is run just before "git rebase" starts doing # its job, and can prevent the command from running by exiting with # non-zero status. # # The hook is called with the following parameters: # # $1 -- the upstream the series was forked from. # $2 -- the branch being rebased (or empty when rebasing the current branch). # # This sample shows how to prevent topic branches that are already # merged to 'next' branch from getting rebased, because allowing it # would result in rebasing already published history. publish=next basebranch="$1" if test "$#" = 2 then topic="refs/heads/$2" else topic=`git symbolic-ref HEAD` || exit 0 ;# we do not interrupt rebasing detached HEAD fi case "$topic" in refs/heads/??/*) ;; *) exit 0 ;# we do not interrupt others. ;; esac # Now we are dealing with a topic branch being rebased # on top of master. Is it OK to rebase it? # Does the topic really exist? git show-ref -q "$topic" || { echo >&2 "No such branch $topic" exit 1 } # Is topic fully merged to master? not_in_master=`git rev-list --pretty=oneline ^master "$topic"` if test -z "$not_in_master" then echo >&2 "$topic is fully merged to master; better remove it." exit 1 ;# we could allow it, but there is no point. fi # Is topic ever merged to next? If so you should not be rebasing it. only_next_1=`git rev-list ^master "^$topic" ${publish} | sort` only_next_2=`git rev-list ^master ${publish} | sort` if test "$only_next_1" = "$only_next_2" then not_in_topic=`git rev-list "^$topic" master` if test -z "$not_in_topic" then echo >&2 "$topic is already up-to-date with master" exit 1 ;# we could allow it, but there is no point. else exit 0 fi else not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"` /usr/bin/perl -e ' my $topic = $ARGV[0]; my $msg = "* $topic has commits already merged to public branch:\n"; my (%not_in_next) = map { /^([0-9a-f]+) /; ($1 => 1); } split(/\n/, $ARGV[1]); for my $elem (map { /^([0-9a-f]+) (.*)$/; [$1 => $2]; } split(/\n/, $ARGV[2])) { if (!exists $not_in_next{$elem->[0]}) { if ($msg) { print STDERR $msg; undef $msg; } print STDERR " $elem->[1]\n"; } } ' "$topic" "$not_in_next" "$not_in_master" exit 1 fi <<\DOC_END This sample hook safeguards topic branches that have been published from being rewound. The workflow assumed here is: * Once a topic branch forks from "master", "master" is never merged into it again (either directly or indirectly). * Once a topic branch is fully cooked and merged into "master", it is deleted. If you need to build on top of it to correct earlier mistakes, a new topic branch is created by forking at the tip of the "master". This is not strictly necessary, but it makes it easier to keep your history simple. * Whenever you need to test or publish your changes to topic branches, merge them into "next" branch. The script, being an example, hardcodes the publish branch name to be "next", but it is trivial to make it configurable via $GIT_DIR/config mechanism. With this workflow, you would want to know: (1) ... if a topic branch has ever been merged to "next". Young topic branches can have stupid mistakes you would rather clean up before publishing, and things that have not been merged into other branches can be easily rebased without affecting other people. But once it is published, you would not want to rewind it. (2) ... if a topic branch has been fully merged to "master". Then you can delete it. More importantly, you should not build on top of it -- other people may already want to change things related to the topic as patches against your "master", so if you need further changes, it is better to fork the topic (perhaps with the same name) afresh from the tip of "master". Let's look at this example: o---o---o---o---o---o---o---o---o---o "next" / / / / / a---a---b A / / / / / / / / c---c---c---c B / / / / \ / / / / b---b C \ / / / / / \ / ---o---o---o---o---o---o---o---o---o---o---o "master" A, B and C are topic branches. * A has one fix since it was merged up to "next". * B has finished. It has been fully merged up to "master" and "next", and is ready to be deleted. * C has not merged to "next" at all. We would want to allow C to be rebased, refuse A, and encourage B to be deleted. To compute (1): git rev-list ^master ^topic next git rev-list ^master next if these match, topic has not merged in next at all. To compute (2): git rev-list master..topic if this is empty, it is fully merged to "master". DOC_END shadowsocks/.git/hooks/commit-msg.sample0000755000175000017500000000160012562121324017647 0ustar shellshell#!/bin/sh # # An example hook script to check the commit log message. # Called by "git commit" with one argument, the name of the file # that has the commit message. The hook should exit with non-zero # status after issuing an appropriate message if it wants to stop the # commit. The hook is allowed to edit the commit message file. # # To enable this hook, rename this file to "commit-msg". # Uncomment the below to add a Signed-off-by line to the message. # Doing this in a hook is a bad idea in general, but the prepare-commit-msg # hook is more suited to it. # # SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') # grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" # This example catches duplicate Signed-off-by lines. test "" = "$(grep '^Signed-off-by: ' "$1" | sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || { echo >&2 Duplicate Signed-off-by lines. exit 1 } shadowsocks/.git/hooks/pre-applypatch.sample0000755000175000017500000000061612562121324020532 0ustar shellshell#!/bin/sh # # An example hook script to verify what is about to be committed # by applypatch from an e-mail message. # # The hook should exit with non-zero status after issuing an # appropriate message if it wants to stop the commit. # # To enable this hook, rename this file to "pre-applypatch". . git-sh-setup test -x "$GIT_DIR/hooks/pre-commit" && exec "$GIT_DIR/hooks/pre-commit" ${1+"$@"} : shadowsocks/.git/hooks/applypatch-msg.sample0000755000175000017500000000070412562121324020530 0ustar shellshell#!/bin/sh # # An example hook script to check the commit log message taken by # applypatch from an e-mail message. # # The hook should exit with non-zero status after issuing an # appropriate message if it wants to stop the commit. The hook is # allowed to edit the commit message file. # # To enable this hook, rename this file to "applypatch-msg". . git-sh-setup test -x "$GIT_DIR/hooks/commit-msg" && exec "$GIT_DIR/hooks/commit-msg" ${1+"$@"} : shadowsocks/.git/hooks/post-update.sample0000755000175000017500000000027512562121324020047 0ustar shellshell#!/bin/sh # # An example hook script to prepare a packed repository for use over # dumb transports. # # To enable this hook, rename this file to "post-update". exec git update-server-info shadowsocks/.git/hooks/update.sample0000755000175000017500000000703312562121324017063 0ustar shellshell#!/bin/sh # # An example hook script to blocks unannotated tags from entering. # Called by "git receive-pack" with arguments: refname sha1-old sha1-new # # To enable this hook, rename this file to "update". # # Config # ------ # hooks.allowunannotated # This boolean sets whether unannotated tags will be allowed into the # repository. By default they won't be. # hooks.allowdeletetag # This boolean sets whether deleting tags will be allowed in the # repository. By default they won't be. # hooks.allowmodifytag # This boolean sets whether a tag may be modified after creation. By default # it won't be. # hooks.allowdeletebranch # This boolean sets whether deleting branches will be allowed in the # repository. By default they won't be. # hooks.denycreatebranch # This boolean sets whether remotely creating branches will be denied # in the repository. By default this is allowed. # # --- Command line refname="$1" oldrev="$2" newrev="$3" # --- Safety check if [ -z "$GIT_DIR" ]; then echo "Don't run this script from the command line." >&2 echo " (if you want, you could supply GIT_DIR then run" >&2 echo " $0 )" >&2 exit 1 fi if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then echo "usage: $0 " >&2 exit 1 fi # --- Config allowunannotated=$(git config --bool hooks.allowunannotated) allowdeletebranch=$(git config --bool hooks.allowdeletebranch) denycreatebranch=$(git config --bool hooks.denycreatebranch) allowdeletetag=$(git config --bool hooks.allowdeletetag) allowmodifytag=$(git config --bool hooks.allowmodifytag) # check for no description projectdesc=$(sed -e '1q' "$GIT_DIR/description") case "$projectdesc" in "Unnamed repository"* | "") echo "*** Project description file hasn't been set" >&2 exit 1 ;; esac # --- Check types # if $newrev is 0000...0000, it's a commit to delete a ref. zero="0000000000000000000000000000000000000000" if [ "$newrev" = "$zero" ]; then newrev_type=delete else newrev_type=$(git cat-file -t $newrev) fi case "$refname","$newrev_type" in refs/tags/*,commit) # un-annotated tag short_refname=${refname##refs/tags/} if [ "$allowunannotated" != "true" ]; then echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2 echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2 exit 1 fi ;; refs/tags/*,delete) # delete tag if [ "$allowdeletetag" != "true" ]; then echo "*** Deleting a tag is not allowed in this repository" >&2 exit 1 fi ;; refs/tags/*,tag) # annotated tag if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1 then echo "*** Tag '$refname' already exists." >&2 echo "*** Modifying a tag is not allowed in this repository." >&2 exit 1 fi ;; refs/heads/*,commit) # branch if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then echo "*** Creating a branch is not allowed in this repository" >&2 exit 1 fi ;; refs/heads/*,delete) # delete branch if [ "$allowdeletebranch" != "true" ]; then echo "*** Deleting a branch is not allowed in this repository" >&2 exit 1 fi ;; refs/remotes/*,commit) # tracking branch ;; refs/remotes/*,delete) # delete tracking branch if [ "$allowdeletebranch" != "true" ]; then echo "*** Deleting a tracking branch is not allowed in this repository" >&2 exit 1 fi ;; *) # Anything else (is there anything else?) echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2 exit 1 ;; esac # --- Finished exit 0 shadowsocks/.git/hooks/prepare-commit-msg.sample0000755000175000017500000000232712562121324021312 0ustar shellshell#!/bin/sh # # An example hook script to prepare the commit log message. # Called by "git commit" with the name of the file that has the # commit message, followed by the description of the commit # message's source. The hook's purpose is to edit the commit # message file. If the hook fails with a non-zero status, # the commit is aborted. # # To enable this hook, rename this file to "prepare-commit-msg". # This hook includes three examples. The first comments out the # "Conflicts:" part of a merge commit. # # The second includes the output of "git diff --name-status -r" # into the message, just before the "git status" output. It is # commented because it doesn't cope with --amend or with squashed # commits. # # The third example adds a Signed-off-by line to the message, that can # still be edited. This is rarely a good idea. case "$2,$3" in merge,) /usr/bin/perl -i.bak -ne 's/^/# /, s/^# #/#/ if /^Conflicts/ .. /#/; print' "$1" ;; # ,|template,) # /usr/bin/perl -i.bak -pe ' # print "\n" . `git diff --cached --name-status -r` # if /^#/ && $first++ == 0' "$1" ;; *) ;; esac # SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') # grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" shadowsocks/.git/hooks/pre-push.sample0000755000175000017500000000251012562121324017337 0ustar shellshell#!/bin/sh # An example hook script to verify what is about to be pushed. Called by "git # push" after it has checked the remote status, but before anything has been # pushed. If this script exits with a non-zero status nothing will be pushed. # # This hook is called with the following parameters: # # $1 -- Name of the remote to which the push is being done # $2 -- URL to which the push is being done # # If pushing without using a named remote those arguments will be equal. # # Information about the commits which are being pushed is supplied as lines to # the standard input in the form: # # # # This sample shows how to prevent push of commits where the log message starts # with "WIP" (work in progress). remote="$1" url="$2" z40=0000000000000000000000000000000000000000 IFS=' ' while read local_ref local_sha remote_ref remote_sha do if [ "$local_sha" = $z40 ] then # Handle delete : else if [ "$remote_sha" = $z40 ] then # New branch, examine all commits range="$local_sha" else # Update to existing branch, examine new commits range="$remote_sha..$local_sha" fi # Check for WIP commit commit=`git rev-list -n 1 --grep '^WIP' "$range"` if [ -n "$commit" ] then echo "Found WIP commit in $local_ref, not pushing" exit 1 fi fi done exit 0 shadowsocks/.git/hooks/pre-commit.sample0000755000175000017500000000315212562121324017653 0ustar shellshell#!/bin/sh # # An example hook script to verify what is about to be committed. # Called by "git commit" with no arguments. The hook should # exit with non-zero status after issuing an appropriate message if # it wants to stop the commit. # # To enable this hook, rename this file to "pre-commit". if git rev-parse --verify HEAD >/dev/null 2>&1 then against=HEAD else # Initial commit: diff against an empty tree object against=4b825dc642cb6eb9a060e54bf8d69288fbee4904 fi # If you want to allow non-ASCII filenames set this variable to true. allownonascii=$(git config --bool hooks.allownonascii) # Redirect output to stderr. exec 1>&2 # Cross platform projects tend to avoid non-ASCII filenames; prevent # them from being added to the repository. We exploit the fact that the # printable range starts at the space character and ends with tilde. if [ "$allownonascii" != "true" ] && # Note that the use of brackets around a tr range is ok here, (it's # even required, for portability to Solaris 10's /usr/bin/tr), since # the square bracket bytes happen to fall in the designated range. test $(git diff --cached --name-only --diff-filter=A -z $against | LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0 then cat <<\EOF Error: Attempt to add a non-ASCII file name. This can cause problems if you want to work with people on other platforms. To be portable it is advisable to rename the file. If you know what you are doing you can disable this check using: git config hooks.allownonascii true EOF exit 1 fi # If there are whitespace errors, print the offending file names and fail. exec git diff-index --check --cached $against -- shadowsocks/.git/config0000644000175000017500000000054112774122507014446 0ustar shellshell[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "origin"] url = git@github.com:shell909090/shadowsocks.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = origin merge = refs/heads/master [branch "deb-stable-package"] remote = origin merge = refs/heads/deb-stable-package shadowsocks/.git/description0000644000175000017500000000011112562121324015504 0ustar shellshellUnnamed repository; edit this file 'description' to name the repository. shadowsocks/.git/FETCH_HEAD0000644000175000017500000000103212774122516014607 0ustar shellshell21efeace2fc5b10a15484c74459ea1ace4367ba6 branch 'deb-stable-package' of github.com:shell909090/shadowsocks 538c4d6cbadc29cddfca191b8fc3a11e6837f8d1 not-for-merge branch '1.4' of github.com:shell909090/shadowsocks c7d2d76767d419e0b7e6c8e0b2357a4e91f28514 not-for-merge branch 'dev' of github.com:shell909090/shadowsocks 0db2f94364d0ea137e98c922381fa97386bb00e4 not-for-merge branch 'master' of github.com:shell909090/shadowsocks 7f3405de4e8f73b9604eee5383cf8b1022b8c81c not-for-merge branch 'old2.0' of github.com:shell909090/shadowsocks shadowsocks/.git/logs/0000755000175000017500000000000012562121324014211 5ustar shellshellshadowsocks/.git/logs/refs/0000755000175000017500000000000012562121324015150 5ustar shellshellshadowsocks/.git/logs/refs/remotes/0000755000175000017500000000000012562121324016626 5ustar shellshellshadowsocks/.git/logs/refs/remotes/origin/0000755000175000017500000000000012774122446020130 5ustar shellshellshadowsocks/.git/logs/refs/remotes/origin/master0000644000175000017500000000070112774122446021344 0ustar shellshell6d161756366b413e4ed39bd38723a2895a468cca 7ac2967d2917ad78aed0e621237222bd4973af3b Shell.Xu 1408941262 +0800 update by push 7ac2967d2917ad78aed0e621237222bd4973af3b 5b450acfaa15cd6c2d3e8ab99f9297542df74025 Shell.Xu 1440169375 +0800 pull: fast-forward 5b450acfaa15cd6c2d3e8ab99f9297542df74025 0db2f94364d0ea137e98c922381fa97386bb00e4 Shell.Xu 1475388710 +0800 pull: fast-forward shadowsocks/.git/logs/refs/remotes/origin/HEAD0000644000175000017500000000027312562121324020543 0ustar shellshell0000000000000000000000000000000000000000 6d161756366b413e4ed39bd38723a2895a468cca Shell.Xu 1408940790 +0800 clone: from git@github.com:shell909090/shadowsocks.git shadowsocks/.git/logs/refs/remotes/origin/deb-stable-package0000644000175000017500000000022712774122446023447 0ustar shellshell0000000000000000000000000000000000000000 21efeace2fc5b10a15484c74459ea1ace4367ba6 Shell.Xu 1475388710 +0800 pull: storing head shadowsocks/.git/logs/refs/heads/0000755000175000017500000000000012774122507016245 5ustar shellshellshadowsocks/.git/logs/refs/heads/master0000644000175000017500000000121312774122446017462 0ustar shellshell0000000000000000000000000000000000000000 6d161756366b413e4ed39bd38723a2895a468cca Shell.Xu 1408940790 +0800 clone: from git@github.com:shell909090/shadowsocks.git 6d161756366b413e4ed39bd38723a2895a468cca 7ac2967d2917ad78aed0e621237222bd4973af3b Shell.Xu 1408941023 +0800 commit: * still package issue 7ac2967d2917ad78aed0e621237222bd4973af3b 5b450acfaa15cd6c2d3e8ab99f9297542df74025 Shell.Xu 1440169375 +0800 pull: Fast-forward 5b450acfaa15cd6c2d3e8ab99f9297542df74025 0db2f94364d0ea137e98c922381fa97386bb00e4 Shell.Xu 1475388710 +0800 pull: Fast-forward shadowsocks/.git/logs/refs/heads/deb-stable-package0000644000175000017500000000060212774125162021561 0ustar shellshell0000000000000000000000000000000000000000 21efeace2fc5b10a15484c74459ea1ace4367ba6 Shell.Xu 1475388743 +0800 branch: Created from refs/remotes/origin/deb-stable-package 21efeace2fc5b10a15484c74459ea1ace4367ba6 b49d1de74310358195ae6aee60773d7bd08f9fda Shell.Xu 1475390063 +0800 commit (merge): Merge branch 'master' into deb-stable-package shadowsocks/.git/logs/HEAD0000644000175000017500000000200412774125162014642 0ustar shellshell0000000000000000000000000000000000000000 6d161756366b413e4ed39bd38723a2895a468cca Shell.Xu 1408940790 +0800 clone: from git@github.com:shell909090/shadowsocks.git 6d161756366b413e4ed39bd38723a2895a468cca 7ac2967d2917ad78aed0e621237222bd4973af3b Shell.Xu 1408941023 +0800 commit: * still package issue 7ac2967d2917ad78aed0e621237222bd4973af3b 5b450acfaa15cd6c2d3e8ab99f9297542df74025 Shell.Xu 1440169375 +0800 pull: Fast-forward 5b450acfaa15cd6c2d3e8ab99f9297542df74025 0db2f94364d0ea137e98c922381fa97386bb00e4 Shell.Xu 1475388710 +0800 pull: Fast-forward 0db2f94364d0ea137e98c922381fa97386bb00e4 21efeace2fc5b10a15484c74459ea1ace4367ba6 Shell.Xu 1475388743 +0800 checkout: moving from master to deb-stable-package 21efeace2fc5b10a15484c74459ea1ace4367ba6 b49d1de74310358195ae6aee60773d7bd08f9fda Shell.Xu 1475390063 +0800 commit (merge): Merge branch 'master' into deb-stable-package shadowsocks/LICENSE0000644000175000017500000002613612774125037013433 0ustar shellshell Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. shadowsocks/setup.py0000644000175000017500000000245112774125037014132 0ustar shellshellimport codecs from setuptools import setup with codecs.open('README.rst', encoding='utf-8') as f: long_description = f.read() setup( name="shadowsocks", version="2.9.0", license='http://www.apache.org/licenses/LICENSE-2.0', description="A fast tunnel proxy that help you get through firewalls", author='clowwindy', author_email='clowwindy42@gmail.com', url='https://github.com/shadowsocks/shadowsocks', packages=['shadowsocks', 'shadowsocks.crypto'], package_data={ 'shadowsocks': ['README.rst', 'LICENSE'] }, install_requires=[], entry_points=""" [console_scripts] sslocal = shadowsocks.local:main ssserver = shadowsocks.server:main """, classifiers=[ 'License :: OSI Approved :: Apache Software License', 'Programming Language :: Python :: 2', 'Programming Language :: Python :: 2.6', 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3.3', 'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: Implementation :: CPython', 'Programming Language :: Python :: Implementation :: PyPy', 'Topic :: Internet :: Proxy Servers', ], long_description=long_description, ) shadowsocks/.gitignore0000644000175000017500000000040212774125037014402 0ustar shellshell*.py[co] # Packages *.egg *.egg-info dist build eggs parts bin var sdist develop-eggs .installed.cfg # Installer logs pip-log.txt # Unit test / coverage reports htmlcov .coverage* .tox #Translations *.mo #Mr Developer .mr.developer.cfg .DS_Store .idea shadowsocks/debian/0000755000175000017500000000000012774125444013642 5ustar shellshellshadowsocks/debian/source/0000755000175000017500000000000012562121324015126 5ustar shellshellshadowsocks/debian/source/format0000644000175000017500000000001412562121324016334 0ustar shellshell3.0 (quilt) shadowsocks/debian/config.json0000644000175000017500000000040012774125037015772 0ustar shellshell{ "server":"my_server_ip", "server_port":8388, "local_address": "127.0.0.1", "local_port":1080, "password":"mypassword", "timeout":300, "method":"aes-256-cfb", "fast_open": false, "workers": 1, "prefer_ipv6": false }shadowsocks/debian/copyright0000644000175000017500000000174712774125037015604 0ustar shellshellFormat: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: shadowsocks Source: https://github.com/shadowsocks/shadowsocks Files: debian/* Copyright: 2016 Shell.Xu License: Apache-2.0 Files: * Copyright: 2014 clowwindy License: Apache-2.0 License: Apache-2.0 Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at . http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. . On Debian systems, the complete text of the Apache License 2.0 can be found in "/usr/share/common-licenses/Apache-2.0"shadowsocks/debian/ssserver.10000644000175000017500000000221312774125145015574 0ustar shellshell.\" Hey, EMACS: -*- nroff -*- .\" (C) Copyright 2014 Shell.Xu , .\" .TH SHADOWSOCKS 1 "August 23, 2014" .SH NAME shadowsocks \- Fast tunnel proxy that helps you bypass firewalls .SH SYNOPSIS .B ssserver .RI [ options ] .br .B sslocal .RI [ options ] .SH DESCRIPTION shadowsocks is a tunnel proxy helps you bypass firewall. .B ssserver is the server part, and .B sslocal is the local part. .SH OPTIONS .TP .B \-h, \-\-help Show this help message and exit. .TP .B \-s SERVER_ADDR Server address, default: 0.0.0.0. .TP .B \-p SERVER_PORT Server port, default: 8388. .TP .B \-k PASSWORD Password. .TP .B \-m METHOD Encryption method, default: aes-256-cfb. .TP .B \-t TIMEOUT Timeout in seconds, default: 300. .TP .B \-c CONFIG Path to config file. .TP .B \-\-fast-open Use TCP_FASTOPEN, requires Linux 3.7+. .TP .B \-\-workers WORKERS Number of workers, available on Unix/Linux. .TP .B \-v, \-vv Verbose mode. .TP .B \-q, \-qq Quiet mode, only show warnings/errors. .SH SEE ALSO .br The programs are documented fully by .IR "Shell Xu " and .IR "Clowwindy " . shadowsocks/debian/docs0000644000175000017500000000002512562121324014476 0ustar shellshellREADME.md README.rst shadowsocks/debian/install0000644000175000017500000000004312562121324015214 0ustar shellshelldebian/config.json etc/shadowsocks/shadowsocks/debian/rules0000755000175000017500000000013712562121324014707 0ustar shellshell#!/usr/bin/make -f # -*- makefile -*- %: dh $@ --with python2 --buildsystem=python_distutils shadowsocks/debian/init.d0000644000175000017500000001014012562121324014732 0ustar shellshell#!/bin/sh ### BEGIN INIT INFO # Provides: shadowsocks # Required-Start: $network $local_fs $remote_fs # Required-Stop: $network $local_fs $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Fast tunnel proxy that helps you bypass firewalls # Description: A secure socks5 proxy, designed to protect your Internet traffic. # This package contain local and server part of shadowsocks, a fast, # powerful tunnel proxy to bypass firewalls. ### END INIT INFO # Author: Shell.Xu # PATH should only include /usr/* if it runs after the mountnfs.sh script PATH=/sbin:/usr/sbin:/bin:/usr/bin DESC=shadowsocks # Introduce a short description here NAME=shadowsocks # Introduce the short server's name here DAEMON=/usr/bin/ssserver # Introduce the server's location here DAEMON_ARGS="" # Arguments to run the daemon with PIDFILE=/var/run/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME LOGFILE=/var/log/$NAME.log # Exit if the package is not installed [ -x $DAEMON ] || exit 0 # Read configuration variable file if it is present [ -r /etc/default/$NAME ] && . /etc/default/$NAME # Load the VERBOSE setting and other rcS variables . /lib/init/vars.sh # Define LSB log_* functions. # Depend on lsb-base (>= 3.0-6) to ensure that this file is present. . /lib/lsb/init-functions # # Function that starts the daemon/service # do_start() { # Return # 0 if daemon has been started # 1 if daemon was already running # 2 if daemon could not be started start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON \ --background --make-pidfile --chdir / --chuid $USERID --no-close --test > /dev/null \ || return 1 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON \ --background --make-pidfile --chdir / --chuid $USERID --no-close -- \ $DAEMON_ARGS $DAEMON_OPTS >> $LOGFILE 2>&1 \ || return 2 # Add code here, if necessary, that waits for the process to be ready # to handle requests from services started subsequently which depend # on this one. As a last resort, sleep for some time. } # # Function that stops the daemon/service # do_stop() { # Return # 0 if daemon has been stopped # 1 if daemon was already stopped # 2 if daemon could not be stopped # other if a failure occurred start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE RETVAL="$?" [ "$RETVAL" = 2 ] && return 2 # Many daemons don't delete their pidfiles when they exit. rm -f $PIDFILE return "$RETVAL" } # # Function that sends a SIGHUP to the daemon/service # do_reload() { # # If the daemon can reload its configuration without # restarting (for example, when it is sent a SIGHUP), # then implement that here. # start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME return 0 } case "$1" in start) [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC " "$NAME" do_start case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; stop) [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" do_stop case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; status) status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? ;; #reload|force-reload) # # If do_reload() is not implemented then leave this commented out # and leave 'force-reload' as an alias for 'restart'. # #log_daemon_msg "Reloading $DESC" "$NAME" #do_reload #log_end_msg $? #;; restart|force-reload) # # If the "reload" option is implemented then remove the # 'force-reload' alias # log_daemon_msg "Restarting $DESC" "$NAME" do_stop case "$?" in 0|1) do_start case "$?" in 0) log_end_msg 0 ;; 1) log_end_msg 1 ;; # Old process is still running *) log_end_msg 1 ;; # Failed to start esac ;; *) # Failed to stop log_end_msg 1 ;; esac ;; *) #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2 echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 exit 3 ;; esac : shadowsocks/debian/shadowsocks.default0000644000175000017500000000045212562121324017525 0ustar shellshell# Defaults for shadowsocks initscript # sourced by /etc/init.d/shadowsocks # installed at /etc/default/shadowsocks by the maintainer scripts USERID="nobody" # # This is a POSIX shell fragment # # Additional options that are passed to the Daemon. DAEMON_OPTS="-q -c /etc/shadowsocks/config.json" shadowsocks/debian/control0000644000175000017500000000136712774125037015252 0ustar shellshellSource: shadowsocks Section: python Priority: extra Maintainer: Shell.Xu Build-Depends: debhelper (>= 8), python-all (>= 2.6.6-3~), python-setuptools Standards-Version: 3.9.8 Homepage: https://github.com/shadowsocks/shadowsocks Vcs-Git: git://github.com/shell909090/shadowsocks.git Vcs-Browser: http://github.com/shell909090/shadowsocks Package: shadowsocks Architecture: all Pre-Depends: dpkg (>= 1.15.6~) Depends: ${misc:Depends}, ${python:Depends}, python-pkg-resources, python-m2crypto Description: Fast tunnel proxy that helps you bypass firewalls A secure socks5 proxy, designed to protect your Internet traffic. . This package contain local and server part of shadowsocks, a fast, powerful tunnel proxy to bypass firewalls.shadowsocks/debian/changelog0000644000175000017500000000054612774125107015515 0ustar shellshellshadowsocks (2.9.0-1) UNRELEASED; urgency=medium * Upstream update (Closes: #824640) * Remove reference not exists (Closes: #810688) -- shell Sat, 01 Oct 2016 16:14:47 +0800 shadowsocks (2.1.0-1) unstable; urgency=low * Initial release (Closes: #758900) -- Shell.Xu Sat, 23 Aug 2014 00:56:04 +0800 shadowsocks/debian/sslocal.10000644000175000017500000000221312774125133015355 0ustar shellshell.\" Hey, EMACS: -*- nroff -*- .\" (C) Copyright 2014 Shell.Xu , .\" .TH SHADOWSOCKS 1 "August 23, 2014" .SH NAME shadowsocks \- Fast tunnel proxy that helps you bypass firewalls .SH SYNOPSIS .B ssserver .RI [ options ] .br .B sslocal .RI [ options ] .SH DESCRIPTION shadowsocks is a tunnel proxy helps you bypass firewall. .B ssserver is the server part, and .B sslocal is the local part. .SH OPTIONS .TP .B \-h, \-\-help Show this help message and exit. .TP .B \-s SERVER_ADDR Server address, default: 0.0.0.0. .TP .B \-p SERVER_PORT Server port, default: 8388. .TP .B \-k PASSWORD Password. .TP .B \-m METHOD Encryption method, default: aes-256-cfb. .TP .B \-t TIMEOUT Timeout in seconds, default: 300. .TP .B \-c CONFIG Path to config file. .TP .B \-\-fast-open Use TCP_FASTOPEN, requires Linux 3.7+. .TP .B \-\-workers WORKERS Number of workers, available on Unix/Linux. .TP .B \-v, \-vv Verbose mode. .TP .B \-q, \-qq Quiet mode, only show warnings/errors. .SH SEE ALSO .br The programs are documented fully by .IR "Shell Xu " and .IR "Clowwindy " . shadowsocks/debian/shadowsocks.manpages0000644000175000017500000000004212562121324017667 0ustar shellshelldebian/sslocal.1 debian/ssserver.1shadowsocks/debian/compat0000644000175000017500000000000212562121324015024 0ustar shellshell8 shadowsocks/CONTRIBUTING.md0000644000175000017500000000232712774125037014653 0ustar shellshellHow to Contribute ================= Notice this is the repository for Shadowsocks Python version. If you have problems with Android / iOS / Windows etc clients, please post your questions in their issue trackers. Pull Requests ------------- 1. Pull requests are welcome. If you would like to add a large feature or make a significant change, make sure to open an issue to discuss with people first. 2. Follow PEP8. 3. Make sure to pass the unit tests. Write unit tests for new modules if needed. Issues ------ 1. Only bugs and feature requests are accepted here. 2. We'll only work on important features. If the feature you're asking only benefits a few people, you'd better implement the feature yourself and send us a pull request, or ask some of your friends to do so. 3. We don't answer questions of any other types here. Since very few people are watching the issue tracker here, you'll probably get no help from here. Read [Troubleshooting] and get help from forums or [mailing lists]. 4. Issues in languages other than English will be Google translated into English later. [Troubleshooting]: https://github.com/clowwindy/shadowsocks/wiki/Troubleshooting [mailing lists]: https://groups.google.com/forum/#!forum/shadowsocks shadowsocks/shadowsocks/0000755000175000017500000000000012774125037014746 5ustar shellshellshadowsocks/shadowsocks/asyncdns.py0000644000175000017500000004234212774125037017147 0ustar shellshell#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright 2014-2015 clowwindy # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from __future__ import absolute_import, division, print_function, \ with_statement import os import socket import struct import re import logging from shadowsocks import common, lru_cache, eventloop, shell CACHE_SWEEP_INTERVAL = 30 VALID_HOSTNAME = re.compile(br"(?!-)[A-Z\d-]{1,63}(? 63: return None results.append(common.chr(l)) results.append(label) results.append(b'\0') return b''.join(results) def build_request(address, qtype): request_id = os.urandom(2) header = struct.pack('!BBHHHH', 1, 0, 1, 0, 0, 0) addr = build_address(address) qtype_qclass = struct.pack('!HH', qtype, QCLASS_IN) return request_id + header + addr + qtype_qclass def parse_ip(addrtype, data, length, offset): if addrtype == QTYPE_A: return socket.inet_ntop(socket.AF_INET, data[offset:offset + length]) elif addrtype == QTYPE_AAAA: return socket.inet_ntop(socket.AF_INET6, data[offset:offset + length]) elif addrtype in [QTYPE_CNAME, QTYPE_NS]: return parse_name(data, offset)[1] else: return data[offset:offset + length] def parse_name(data, offset): p = offset labels = [] l = common.ord(data[p]) while l > 0: if (l & (128 + 64)) == (128 + 64): # pointer pointer = struct.unpack('!H', data[p:p + 2])[0] pointer &= 0x3FFF r = parse_name(data, pointer) labels.append(r[1]) p += 2 # pointer is the end return p - offset, b'.'.join(labels) else: labels.append(data[p + 1:p + 1 + l]) p += 1 + l l = common.ord(data[p]) return p - offset + 1, b'.'.join(labels) # rfc1035 # record # 1 1 1 1 1 1 # 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 # +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ # | | # / / # / NAME / # | | # +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ # | TYPE | # +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ # | CLASS | # +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ # | TTL | # | | # +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ # | RDLENGTH | # +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--| # / RDATA / # / / # +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ def parse_record(data, offset, question=False): nlen, name = parse_name(data, offset) if not question: record_type, record_class, record_ttl, record_rdlength = struct.unpack( '!HHiH', data[offset + nlen:offset + nlen + 10] ) ip = parse_ip(record_type, data, record_rdlength, offset + nlen + 10) return nlen + 10 + record_rdlength, \ (name, ip, record_type, record_class, record_ttl) else: record_type, record_class = struct.unpack( '!HH', data[offset + nlen:offset + nlen + 4] ) return nlen + 4, (name, None, record_type, record_class, None, None) def parse_header(data): if len(data) >= 12: header = struct.unpack('!HBBHHHH', data[:12]) res_id = header[0] res_qr = header[1] & 128 res_tc = header[1] & 2 res_ra = header[2] & 128 res_rcode = header[2] & 15 # assert res_tc == 0 # assert res_rcode in [0, 3] res_qdcount = header[3] res_ancount = header[4] res_nscount = header[5] res_arcount = header[6] return (res_id, res_qr, res_tc, res_ra, res_rcode, res_qdcount, res_ancount, res_nscount, res_arcount) return None def parse_response(data): try: if len(data) >= 12: header = parse_header(data) if not header: return None res_id, res_qr, res_tc, res_ra, res_rcode, res_qdcount, \ res_ancount, res_nscount, res_arcount = header qds = [] ans = [] offset = 12 for i in range(0, res_qdcount): l, r = parse_record(data, offset, True) offset += l if r: qds.append(r) for i in range(0, res_ancount): l, r = parse_record(data, offset) offset += l if r: ans.append(r) for i in range(0, res_nscount): l, r = parse_record(data, offset) offset += l for i in range(0, res_arcount): l, r = parse_record(data, offset) offset += l response = DNSResponse() if qds: response.hostname = qds[0][0] for an in qds: response.questions.append((an[1], an[2], an[3])) for an in ans: response.answers.append((an[1], an[2], an[3])) return response except Exception as e: shell.print_exception(e) return None def is_valid_hostname(hostname): if len(hostname) > 255: return False if hostname[-1] == b'.': hostname = hostname[:-1] return all(VALID_HOSTNAME.match(x) for x in hostname.split(b'.')) class DNSResponse(object): def __init__(self): self.hostname = None self.questions = [] # each: (addr, type, class) self.answers = [] # each: (addr, type, class) def __str__(self): return '%s: %s' % (self.hostname, str(self.answers)) STATUS_FIRST = 0 STATUS_SECOND = 1 class DNSResolver(object): def __init__(self, server_list=None, prefer_ipv6=False): self._loop = None self._hosts = {} self._hostname_status = {} self._hostname_to_cb = {} self._cb_to_hostname = {} self._cache = lru_cache.LRUCache(timeout=300) self._sock = None if server_list is None: self._servers = None self._parse_resolv() else: self._servers = server_list if prefer_ipv6: self._QTYPES = [QTYPE_AAAA, QTYPE_A] else: self._QTYPES = [QTYPE_A, QTYPE_AAAA] self._parse_hosts() # TODO monitor hosts change and reload hosts # TODO parse /etc/gai.conf and follow its rules def _parse_resolv(self): self._servers = [] try: with open('/etc/resolv.conf', 'rb') as f: content = f.readlines() for line in content: line = line.strip() if line: if line.startswith(b'nameserver'): parts = line.split() if len(parts) >= 2: server = parts[1] if common.is_ip(server) == socket.AF_INET: if type(server) != str: server = server.decode('utf8') self._servers.append(server) except IOError: pass if not self._servers: self._servers = ['8.8.4.4', '8.8.8.8'] def _parse_hosts(self): etc_path = '/etc/hosts' if 'WINDIR' in os.environ: etc_path = os.environ['WINDIR'] + '/system32/drivers/etc/hosts' try: with open(etc_path, 'rb') as f: for line in f.readlines(): line = line.strip() parts = line.split() if len(parts) >= 2: ip = parts[0] if common.is_ip(ip): for i in range(1, len(parts)): hostname = parts[i] if hostname: self._hosts[hostname] = ip except IOError: self._hosts['localhost'] = '127.0.0.1' def add_to_loop(self, loop): if self._loop: raise Exception('already add to loop') self._loop = loop # TODO when dns server is IPv6 self._sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.SOL_UDP) self._sock.setblocking(False) loop.add(self._sock, eventloop.POLL_IN, self) loop.add_periodic(self.handle_periodic) def _call_callback(self, hostname, ip, error=None): callbacks = self._hostname_to_cb.get(hostname, []) for callback in callbacks: if callback in self._cb_to_hostname: del self._cb_to_hostname[callback] if ip or error: callback((hostname, ip), error) else: callback((hostname, None), Exception('unknown hostname %s' % hostname)) if hostname in self._hostname_to_cb: del self._hostname_to_cb[hostname] if hostname in self._hostname_status: del self._hostname_status[hostname] def _handle_data(self, data): response = parse_response(data) if response and response.hostname: hostname = response.hostname ip = None for answer in response.answers: if answer[1] in (QTYPE_A, QTYPE_AAAA) and \ answer[2] == QCLASS_IN: ip = answer[0] break if not ip and self._hostname_status.get(hostname, STATUS_SECOND) \ == STATUS_FIRST: self._hostname_status[hostname] = STATUS_SECOND self._send_req(hostname, self._QTYPES[1]) else: if ip: self._cache[hostname] = ip self._call_callback(hostname, ip) elif self._hostname_status.get(hostname, None) \ == STATUS_SECOND: for question in response.questions: if question[1] == self._QTYPES[1]: self._call_callback(hostname, None) break def handle_event(self, sock, fd, event): if sock != self._sock: return if event & eventloop.POLL_ERR: logging.error('dns socket err') self._loop.remove(self._sock) self._sock.close() # TODO when dns server is IPv6 self._sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.SOL_UDP) self._sock.setblocking(False) self._loop.add(self._sock, eventloop.POLL_IN, self) else: data, addr = sock.recvfrom(1024) if addr[0] not in self._servers: logging.warn('received a packet other than our dns') return self._handle_data(data) def handle_periodic(self): self._cache.sweep() def remove_callback(self, callback): hostname = self._cb_to_hostname.get(callback) if hostname: del self._cb_to_hostname[callback] arr = self._hostname_to_cb.get(hostname, None) if arr: arr.remove(callback) if not arr: del self._hostname_to_cb[hostname] if hostname in self._hostname_status: del self._hostname_status[hostname] def _send_req(self, hostname, qtype): req = build_request(hostname, qtype) for server in self._servers: logging.debug('resolving %s with type %d using server %s', hostname, qtype, server) self._sock.sendto(req, (server, 53)) def resolve(self, hostname, callback): if type(hostname) != bytes: hostname = hostname.encode('utf8') if not hostname: callback(None, Exception('empty hostname')) elif common.is_ip(hostname): callback((hostname, hostname), None) elif hostname in self._hosts: logging.debug('hit hosts: %s', hostname) ip = self._hosts[hostname] callback((hostname, ip), None) elif hostname in self._cache: logging.debug('hit cache: %s', hostname) ip = self._cache[hostname] callback((hostname, ip), None) else: if not is_valid_hostname(hostname): callback(None, Exception('invalid hostname: %s' % hostname)) return arr = self._hostname_to_cb.get(hostname, None) if not arr: self._hostname_status[hostname] = STATUS_FIRST self._send_req(hostname, self._QTYPES[0]) self._hostname_to_cb[hostname] = [callback] self._cb_to_hostname[callback] = hostname else: arr.append(callback) # TODO send again only if waited too long self._send_req(hostname, self._QTYPES[0]) def close(self): if self._sock: if self._loop: self._loop.remove_periodic(self.handle_periodic) self._loop.remove(self._sock) self._sock.close() self._sock = None def test(): dns_resolver = DNSResolver() loop = eventloop.EventLoop() dns_resolver.add_to_loop(loop) global counter counter = 0 def make_callback(): global counter def callback(result, error): global counter # TODO: what can we assert? print(result, error) counter += 1 if counter == 9: dns_resolver.close() loop.stop() a_callback = callback return a_callback assert(make_callback() != make_callback()) dns_resolver.resolve(b'google.com', make_callback()) dns_resolver.resolve('google.com', make_callback()) dns_resolver.resolve('example.com', make_callback()) dns_resolver.resolve('ipv6.google.com', make_callback()) dns_resolver.resolve('www.facebook.com', make_callback()) dns_resolver.resolve('ns2.google.com', make_callback()) dns_resolver.resolve('invalid.@!#$%^&$@.hostname', make_callback()) dns_resolver.resolve('toooooooooooooooooooooooooooooooooooooooooooooooooo' 'ooooooooooooooooooooooooooooooooooooooooooooooooooo' 'long.hostname', make_callback()) dns_resolver.resolve('toooooooooooooooooooooooooooooooooooooooooooooooooo' 'ooooooooooooooooooooooooooooooooooooooooooooooooooo' 'ooooooooooooooooooooooooooooooooooooooooooooooooooo' 'ooooooooooooooooooooooooooooooooooooooooooooooooooo' 'ooooooooooooooooooooooooooooooooooooooooooooooooooo' 'ooooooooooooooooooooooooooooooooooooooooooooooooooo' 'long.hostname', make_callback()) loop.run() if __name__ == '__main__': test() shadowsocks/shadowsocks/manager.py0000644000175000017500000002301412774125037016732 0ustar shellshell#!/usr/bin/python # -*- coding: utf-8 -*- # # Copyright 2015 clowwindy # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from __future__ import absolute_import, division, print_function, \ with_statement import errno import traceback import socket import logging import json import collections from shadowsocks import common, eventloop, tcprelay, udprelay, asyncdns, shell BUF_SIZE = 1506 STAT_SEND_LIMIT = 50 class Manager(object): def __init__(self, config): self._config = config self._relays = {} # (tcprelay, udprelay) self._loop = eventloop.EventLoop() self._dns_resolver = asyncdns.DNSResolver() self._dns_resolver.add_to_loop(self._loop) self._statistics = collections.defaultdict(int) self._control_client_addr = None try: manager_address = config['manager_address'] if ':' in manager_address: addr = manager_address.rsplit(':', 1) addr = addr[0], int(addr[1]) addrs = socket.getaddrinfo(addr[0], addr[1]) if addrs: family = addrs[0][0] else: logging.error('invalid address: %s', manager_address) exit(1) else: addr = manager_address family = socket.AF_UNIX self._control_socket = socket.socket(family, socket.SOCK_DGRAM) self._control_socket.bind(addr) self._control_socket.setblocking(False) except (OSError, IOError) as e: logging.error(e) logging.error('can not bind to manager address') exit(1) self._loop.add(self._control_socket, eventloop.POLL_IN, self) self._loop.add_periodic(self.handle_periodic) port_password = config['port_password'] del config['port_password'] for port, password in port_password.items(): a_config = config.copy() a_config['server_port'] = int(port) a_config['password'] = password self.add_port(a_config) def add_port(self, config): port = int(config['server_port']) servers = self._relays.get(port, None) if servers: logging.error("server already exists at %s:%d" % (config['server'], port)) return logging.info("adding server at %s:%d" % (config['server'], port)) t = tcprelay.TCPRelay(config, self._dns_resolver, False, self.stat_callback) u = udprelay.UDPRelay(config, self._dns_resolver, False, self.stat_callback) t.add_to_loop(self._loop) u.add_to_loop(self._loop) self._relays[port] = (t, u) def remove_port(self, config): port = int(config['server_port']) servers = self._relays.get(port, None) if servers: logging.info("removing server at %s:%d" % (config['server'], port)) t, u = servers t.close(next_tick=False) u.close(next_tick=False) del self._relays[port] else: logging.error("server not exist at %s:%d" % (config['server'], port)) def handle_event(self, sock, fd, event): if sock == self._control_socket and event == eventloop.POLL_IN: data, self._control_client_addr = sock.recvfrom(BUF_SIZE) parsed = self._parse_command(data) if parsed: command, config = parsed a_config = self._config.copy() if config: # let the command override the configuration file a_config.update(config) if 'server_port' not in a_config: logging.error('can not find server_port in config') else: if command == 'add': self.add_port(a_config) self._send_control_data(b'ok') elif command == 'remove': self.remove_port(a_config) self._send_control_data(b'ok') elif command == 'ping': self._send_control_data(b'pong') else: logging.error('unknown command %s', command) def _parse_command(self, data): # commands: # add: {"server_port": 8000, "password": "foobar"} # remove: {"server_port": 8000"} data = common.to_str(data) parts = data.split(':', 1) if len(parts) < 2: return data, None command, config_json = parts try: config = shell.parse_json_in_str(config_json) return command, config except Exception as e: logging.error(e) return None def stat_callback(self, port, data_len): self._statistics[port] += data_len def handle_periodic(self): r = {} i = 0 def send_data(data_dict): if data_dict: # use compact JSON format (without space) data = common.to_bytes(json.dumps(data_dict, separators=(',', ':'))) self._send_control_data(b'stat: ' + data) for k, v in self._statistics.items(): r[k] = v i += 1 # split the data into segments that fit in UDP packets if i >= STAT_SEND_LIMIT: send_data(r) r.clear() i = 0 if len(r) > 0: send_data(r) self._statistics.clear() def _send_control_data(self, data): if self._control_client_addr: try: self._control_socket.sendto(data, self._control_client_addr) except (socket.error, OSError, IOError) as e: error_no = eventloop.errno_from_exception(e) if error_no in (errno.EAGAIN, errno.EINPROGRESS, errno.EWOULDBLOCK): return else: shell.print_exception(e) if self._config['verbose']: traceback.print_exc() def run(self): self._loop.run() def run(config): Manager(config).run() def test(): import time import threading import struct from shadowsocks import encrypt logging.basicConfig(level=5, format='%(asctime)s %(levelname)-8s %(message)s', datefmt='%Y-%m-%d %H:%M:%S') enc = [] eventloop.TIMEOUT_PRECISION = 1 def run_server(): config = { 'server': '127.0.0.1', 'local_port': 1081, 'port_password': { '8381': 'foobar1', '8382': 'foobar2' }, 'method': 'aes-256-cfb', 'manager_address': '127.0.0.1:6001', 'timeout': 60, 'fast_open': False, 'verbose': 2 } manager = Manager(config) enc.append(manager) manager.run() t = threading.Thread(target=run_server) t.start() time.sleep(1) manager = enc[0] cli = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) cli.connect(('127.0.0.1', 6001)) # test add and remove time.sleep(1) cli.send(b'add: {"server_port":7001, "password":"asdfadsfasdf"}') time.sleep(1) assert 7001 in manager._relays data, addr = cli.recvfrom(1506) assert b'ok' in data cli.send(b'remove: {"server_port":8381}') time.sleep(1) assert 8381 not in manager._relays data, addr = cli.recvfrom(1506) assert b'ok' in data logging.info('add and remove test passed') # test statistics for TCP header = common.pack_addr(b'google.com') + struct.pack('>H', 80) data = encrypt.encrypt_all(b'asdfadsfasdf', 'aes-256-cfb', 1, header + b'GET /\r\n\r\n') tcp_cli = socket.socket() tcp_cli.connect(('127.0.0.1', 7001)) tcp_cli.send(data) tcp_cli.recv(4096) tcp_cli.close() data, addr = cli.recvfrom(1506) data = common.to_str(data) assert data.startswith('stat: ') data = data.split('stat:')[1] stats = shell.parse_json_in_str(data) assert '7001' in stats logging.info('TCP statistics test passed') # test statistics for UDP header = common.pack_addr(b'127.0.0.1') + struct.pack('>H', 80) data = encrypt.encrypt_all(b'foobar2', 'aes-256-cfb', 1, header + b'test') udp_cli = socket.socket(type=socket.SOCK_DGRAM) udp_cli.sendto(data, ('127.0.0.1', 8382)) tcp_cli.close() data, addr = cli.recvfrom(1506) data = common.to_str(data) assert data.startswith('stat: ') data = data.split('stat:')[1] stats = json.loads(data) assert '8382' in stats logging.info('UDP statistics test passed') manager._loop.stop() t.join() if __name__ == '__main__': test() shadowsocks/shadowsocks/eventloop.py0000644000175000017500000001617012774125037017340 0ustar shellshell#!/usr/bin/python # -*- coding: utf-8 -*- # # Copyright 2013-2015 clowwindy # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. # from ssloop # https://github.com/clowwindy/ssloop from __future__ import absolute_import, division, print_function, \ with_statement import os import time import socket import select import errno import logging from collections import defaultdict from shadowsocks import shell __all__ = ['EventLoop', 'POLL_NULL', 'POLL_IN', 'POLL_OUT', 'POLL_ERR', 'POLL_HUP', 'POLL_NVAL', 'EVENT_NAMES'] POLL_NULL = 0x00 POLL_IN = 0x01 POLL_OUT = 0x04 POLL_ERR = 0x08 POLL_HUP = 0x10 POLL_NVAL = 0x20 EVENT_NAMES = { POLL_NULL: 'POLL_NULL', POLL_IN: 'POLL_IN', POLL_OUT: 'POLL_OUT', POLL_ERR: 'POLL_ERR', POLL_HUP: 'POLL_HUP', POLL_NVAL: 'POLL_NVAL', } # we check timeouts every TIMEOUT_PRECISION seconds TIMEOUT_PRECISION = 10 class KqueueLoop(object): MAX_EVENTS = 1024 def __init__(self): self._kqueue = select.kqueue() self._fds = {} def _control(self, fd, mode, flags): events = [] if mode & POLL_IN: events.append(select.kevent(fd, select.KQ_FILTER_READ, flags)) if mode & POLL_OUT: events.append(select.kevent(fd, select.KQ_FILTER_WRITE, flags)) for e in events: self._kqueue.control([e], 0) def poll(self, timeout): if timeout < 0: timeout = None # kqueue behaviour events = self._kqueue.control(None, KqueueLoop.MAX_EVENTS, timeout) results = defaultdict(lambda: POLL_NULL) for e in events: fd = e.ident if e.filter == select.KQ_FILTER_READ: results[fd] |= POLL_IN elif e.filter == select.KQ_FILTER_WRITE: results[fd] |= POLL_OUT return results.items() def register(self, fd, mode): self._fds[fd] = mode self._control(fd, mode, select.KQ_EV_ADD) def unregister(self, fd): self._control(fd, self._fds[fd], select.KQ_EV_DELETE) del self._fds[fd] def modify(self, fd, mode): self.unregister(fd) self.register(fd, mode) def close(self): self._kqueue.close() class SelectLoop(object): def __init__(self): self._r_list = set() self._w_list = set() self._x_list = set() def poll(self, timeout): r, w, x = select.select(self._r_list, self._w_list, self._x_list, timeout) results = defaultdict(lambda: POLL_NULL) for p in [(r, POLL_IN), (w, POLL_OUT), (x, POLL_ERR)]: for fd in p[0]: results[fd] |= p[1] return results.items() def register(self, fd, mode): if mode & POLL_IN: self._r_list.add(fd) if mode & POLL_OUT: self._w_list.add(fd) if mode & POLL_ERR: self._x_list.add(fd) def unregister(self, fd): if fd in self._r_list: self._r_list.remove(fd) if fd in self._w_list: self._w_list.remove(fd) if fd in self._x_list: self._x_list.remove(fd) def modify(self, fd, mode): self.unregister(fd) self.register(fd, mode) def close(self): pass class EventLoop(object): def __init__(self): if hasattr(select, 'epoll'): self._impl = select.epoll() model = 'epoll' elif hasattr(select, 'kqueue'): self._impl = KqueueLoop() model = 'kqueue' elif hasattr(select, 'select'): self._impl = SelectLoop() model = 'select' else: raise Exception('can not find any available functions in select ' 'package') self._fdmap = {} # (f, handler) self._last_time = time.time() self._periodic_callbacks = [] self._stopping = False logging.debug('using event model: %s', model) def poll(self, timeout=None): events = self._impl.poll(timeout) return [(self._fdmap[fd][0], fd, event) for fd, event in events] def add(self, f, mode, handler): fd = f.fileno() self._fdmap[fd] = (f, handler) self._impl.register(fd, mode) def remove(self, f): fd = f.fileno() del self._fdmap[fd] self._impl.unregister(fd) def add_periodic(self, callback): self._periodic_callbacks.append(callback) def remove_periodic(self, callback): self._periodic_callbacks.remove(callback) def modify(self, f, mode): fd = f.fileno() self._impl.modify(fd, mode) def stop(self): self._stopping = True def run(self): events = [] while not self._stopping: asap = False try: events = self.poll(TIMEOUT_PRECISION) except (OSError, IOError) as e: if errno_from_exception(e) in (errno.EPIPE, errno.EINTR): # EPIPE: Happens when the client closes the connection # EINTR: Happens when received a signal # handles them as soon as possible asap = True logging.debug('poll:%s', e) else: logging.error('poll:%s', e) import traceback traceback.print_exc() continue for sock, fd, event in events: handler = self._fdmap.get(fd, None) if handler is not None: handler = handler[1] try: handler.handle_event(sock, fd, event) except (OSError, IOError) as e: shell.print_exception(e) now = time.time() if asap or now - self._last_time >= TIMEOUT_PRECISION: for callback in self._periodic_callbacks: callback() self._last_time = now def __del__(self): self._impl.close() # from tornado def errno_from_exception(e): """Provides the errno from an Exception object. There are cases that the errno attribute was not set so we pull the errno out of the args but if someone instatiates an Exception without any args you will get a tuple error. So this function abstracts all that behavior to give you a safe way to get the errno. """ if hasattr(e, 'errno'): return e.errno elif e.args: return e.args[0] else: return None # from tornado def get_sock_error(sock): error_number = sock.getsockopt(socket.SOL_SOCKET, socket.SO_ERROR) return socket.error(error_number, os.strerror(error_number)) shadowsocks/shadowsocks/local.py0000755000175000017500000000431012774125037016413 0ustar shellshell#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright 2012-2015 clowwindy # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from __future__ import absolute_import, division, print_function, \ with_statement import sys import os import logging import signal sys.path.insert(0, os.path.join(os.path.dirname(__file__), '../')) from shadowsocks import shell, daemon, eventloop, tcprelay, udprelay, asyncdns def main(): shell.check_python() # fix py2exe if hasattr(sys, "frozen") and sys.frozen in \ ("windows_exe", "console_exe"): p = os.path.dirname(os.path.abspath(sys.executable)) os.chdir(p) config = shell.get_config(True) daemon.daemon_exec(config) try: logging.info("starting local at %s:%d" % (config['local_address'], config['local_port'])) dns_resolver = asyncdns.DNSResolver() tcp_server = tcprelay.TCPRelay(config, dns_resolver, True) udp_server = udprelay.UDPRelay(config, dns_resolver, True) loop = eventloop.EventLoop() dns_resolver.add_to_loop(loop) tcp_server.add_to_loop(loop) udp_server.add_to_loop(loop) def handler(signum, _): logging.warn('received SIGQUIT, doing graceful shutting down..') tcp_server.close(next_tick=True) udp_server.close(next_tick=True) signal.signal(getattr(signal, 'SIGQUIT', signal.SIGTERM), handler) def int_handler(signum, _): sys.exit(1) signal.signal(signal.SIGINT, int_handler) daemon.set_user(config.get('user', None)) loop.run() except Exception as e: shell.print_exception(e) sys.exit(1) if __name__ == '__main__': main() shadowsocks/shadowsocks/shell.py0000644000175000017500000003160012774125037016427 0ustar shellshell#!/usr/bin/python # -*- coding: utf-8 -*- # # Copyright 2015 clowwindy # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from __future__ import absolute_import, division, print_function, \ with_statement import os import json import sys import getopt import logging from shadowsocks.common import to_bytes, to_str, IPNetwork from shadowsocks import encrypt VERBOSE_LEVEL = 5 verbose = 0 def check_python(): info = sys.version_info if info[0] == 2 and not info[1] >= 6: print('Python 2.6+ required') sys.exit(1) elif info[0] == 3 and not info[1] >= 3: print('Python 3.3+ required') sys.exit(1) elif info[0] not in [2, 3]: print('Python version not supported') sys.exit(1) def print_exception(e): global verbose logging.error(e) if verbose > 0: import traceback traceback.print_exc() def print_shadowsocks(): version = '' try: import pkg_resources version = pkg_resources.get_distribution('shadowsocks').version except Exception: pass print('Shadowsocks %s' % version) def find_config(): config_path = 'config.json' if os.path.exists(config_path): return config_path config_path = os.path.join(os.path.dirname(__file__), '../', 'config.json') if os.path.exists(config_path): return config_path return None def check_config(config, is_local): if config.get('daemon', None) == 'stop': # no need to specify configuration for daemon stop return if is_local and not config.get('password', None): logging.error('password not specified') print_help(is_local) sys.exit(2) if not is_local and not config.get('password', None) \ and not config.get('port_password', None) \ and not config.get('manager_address'): logging.error('password or port_password not specified') print_help(is_local) sys.exit(2) if 'local_port' in config: config['local_port'] = int(config['local_port']) if 'server_port' in config and type(config['server_port']) != list: config['server_port'] = int(config['server_port']) if config.get('local_address', '') in [b'0.0.0.0']: logging.warn('warning: local set to listen on 0.0.0.0, it\'s not safe') if config.get('server', '') in ['127.0.0.1', 'localhost']: logging.warn('warning: server set to listen on %s:%s, are you sure?' % (to_str(config['server']), config['server_port'])) if (config.get('method', '') or '').lower() == 'table': logging.warn('warning: table is not safe; please use a safer cipher, ' 'like AES-256-CFB') if (config.get('method', '') or '').lower() == 'rc4': logging.warn('warning: RC4 is not safe; please use a safer cipher, ' 'like AES-256-CFB') if config.get('timeout', 300) < 100: logging.warn('warning: your timeout %d seems too short' % int(config.get('timeout'))) if config.get('timeout', 300) > 600: logging.warn('warning: your timeout %d seems too long' % int(config.get('timeout'))) if config.get('password') in [b'mypassword']: logging.error('DON\'T USE DEFAULT PASSWORD! Please change it in your ' 'config.json!') sys.exit(1) if config.get('user', None) is not None: if os.name != 'posix': logging.error('user can be used only on Unix') sys.exit(1) encrypt.try_cipher(config['password'], config['method']) def get_config(is_local): global verbose logging.basicConfig(level=logging.INFO, format='%(levelname)-s: %(message)s') if is_local: shortopts = 'hd:s:b:p:k:l:m:c:t:vqa' longopts = ['help', 'fast-open', 'pid-file=', 'log-file=', 'user=', 'version'] else: shortopts = 'hd:s:p:k:m:c:t:vqa' longopts = ['help', 'fast-open', 'pid-file=', 'log-file=', 'workers=', 'forbidden-ip=', 'user=', 'manager-address=', 'version', 'prefer-ipv6'] try: config_path = find_config() optlist, args = getopt.getopt(sys.argv[1:], shortopts, longopts) for key, value in optlist: if key == '-c': config_path = value if config_path: logging.info('loading config from %s' % config_path) with open(config_path, 'rb') as f: try: config = parse_json_in_str(f.read().decode('utf8')) except ValueError as e: logging.error('found an error in config.json: %s', e.message) sys.exit(1) else: config = {} v_count = 0 for key, value in optlist: if key == '-p': config['server_port'] = int(value) elif key == '-k': config['password'] = to_bytes(value) elif key == '-l': config['local_port'] = int(value) elif key == '-s': config['server'] = to_str(value) elif key == '-m': config['method'] = to_str(value) elif key == '-b': config['local_address'] = to_str(value) elif key == '-v': v_count += 1 # '-vv' turns on more verbose mode config['verbose'] = v_count elif key == '-a': config['one_time_auth'] = True elif key == '-t': config['timeout'] = int(value) elif key == '--fast-open': config['fast_open'] = True elif key == '--workers': config['workers'] = int(value) elif key == '--manager-address': config['manager_address'] = value elif key == '--user': config['user'] = to_str(value) elif key == '--forbidden-ip': config['forbidden_ip'] = to_str(value).split(',') elif key in ('-h', '--help'): if is_local: print_local_help() else: print_server_help() sys.exit(0) elif key == '--version': print_shadowsocks() sys.exit(0) elif key == '-d': config['daemon'] = to_str(value) elif key == '--pid-file': config['pid-file'] = to_str(value) elif key == '--log-file': config['log-file'] = to_str(value) elif key == '-q': v_count -= 1 config['verbose'] = v_count elif key == '--prefer-ipv6': config['prefer_ipv6'] = True except getopt.GetoptError as e: print(e, file=sys.stderr) print_help(is_local) sys.exit(2) if not config: logging.error('config not specified') print_help(is_local) sys.exit(2) config['password'] = to_bytes(config.get('password', b'')) config['method'] = to_str(config.get('method', 'aes-256-cfb')) config['port_password'] = config.get('port_password', None) config['timeout'] = int(config.get('timeout', 300)) config['fast_open'] = config.get('fast_open', False) config['workers'] = config.get('workers', 1) config['pid-file'] = config.get('pid-file', '/var/run/shadowsocks.pid') config['log-file'] = config.get('log-file', '/var/log/shadowsocks.log') config['verbose'] = config.get('verbose', False) config['local_address'] = to_str(config.get('local_address', '127.0.0.1')) config['local_port'] = config.get('local_port', 1080) config['one_time_auth'] = config.get('one_time_auth', False) config['prefer_ipv6'] = config.get('prefer_ipv6', False) if is_local: if config.get('server', None) is None: logging.error('server addr not specified') print_local_help() sys.exit(2) else: config['server'] = to_str(config['server']) else: config['server'] = to_str(config.get('server', '0.0.0.0')) try: config['forbidden_ip'] = \ IPNetwork(config.get('forbidden_ip', '127.0.0.0/8,::1/128')) except Exception as e: logging.error(e) sys.exit(2) config['server_port'] = config.get('server_port', 8388) logging.getLogger('').handlers = [] logging.addLevelName(VERBOSE_LEVEL, 'VERBOSE') if config['verbose'] >= 2: level = VERBOSE_LEVEL elif config['verbose'] == 1: level = logging.DEBUG elif config['verbose'] == -1: level = logging.WARN elif config['verbose'] <= -2: level = logging.ERROR else: level = logging.INFO verbose = config['verbose'] logging.basicConfig(level=level, format='%(asctime)s %(levelname)-8s %(message)s', datefmt='%Y-%m-%d %H:%M:%S') check_config(config, is_local) return config def print_help(is_local): if is_local: print_local_help() else: print_server_help() def print_local_help(): print('''usage: sslocal [OPTION]... A fast tunnel proxy that helps you bypass firewalls. You can supply configurations via either config file or command line arguments. Proxy options: -c CONFIG path to config file -s SERVER_ADDR server address -p SERVER_PORT server port, default: 8388 -b LOCAL_ADDR local binding address, default: 127.0.0.1 -l LOCAL_PORT local port, default: 1080 -k PASSWORD password -m METHOD encryption method, default: aes-256-cfb -t TIMEOUT timeout in seconds, default: 300 -a ONE_TIME_AUTH one time auth --fast-open use TCP_FASTOPEN, requires Linux 3.7+ General options: -h, --help show this help message and exit -d start/stop/restart daemon mode --pid-file PID_FILE pid file for daemon mode --log-file LOG_FILE log file for daemon mode --user USER username to run as -v, -vv verbose mode -q, -qq quiet mode, only show warnings/errors --version show version information Online help: ''') def print_server_help(): print('''usage: ssserver [OPTION]... A fast tunnel proxy that helps you bypass firewalls. You can supply configurations via either config file or command line arguments. Proxy options: -c CONFIG path to config file -s SERVER_ADDR server address, default: 0.0.0.0 -p SERVER_PORT server port, default: 8388 -k PASSWORD password -m METHOD encryption method, default: aes-256-cfb -t TIMEOUT timeout in seconds, default: 300 -a ONE_TIME_AUTH one time auth --fast-open use TCP_FASTOPEN, requires Linux 3.7+ --workers WORKERS number of workers, available on Unix/Linux --forbidden-ip IPLIST comma seperated IP list forbidden to connect --manager-address ADDR optional server manager UDP address, see wiki --prefer-ipv6 resolve ipv6 address first General options: -h, --help show this help message and exit -d start/stop/restart daemon mode --pid-file PID_FILE pid file for daemon mode --log-file LOG_FILE log file for daemon mode --user USER username to run as -v, -vv verbose mode -q, -qq quiet mode, only show warnings/errors --version show version information Online help: ''') def _decode_list(data): rv = [] for item in data: if hasattr(item, 'encode'): item = item.encode('utf-8') elif isinstance(item, list): item = _decode_list(item) elif isinstance(item, dict): item = _decode_dict(item) rv.append(item) return rv def _decode_dict(data): rv = {} for key, value in data.items(): if hasattr(value, 'encode'): value = value.encode('utf-8') elif isinstance(value, list): value = _decode_list(value) elif isinstance(value, dict): value = _decode_dict(value) rv[key] = value return rv def parse_json_in_str(data): # parse json and convert everything from unicode to str return json.loads(data, object_hook=_decode_dict) shadowsocks/shadowsocks/lru_cache.py0000644000175000017500000001027612774125037017253 0ustar shellshell#!/usr/bin/python # -*- coding: utf-8 -*- # # Copyright 2015 clowwindy # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from __future__ import absolute_import, division, print_function, \ with_statement import collections import logging import time # this LRUCache is optimized for concurrency, not QPS # n: concurrency, keys stored in the cache # m: visits not timed out, proportional to QPS * timeout # get & set is O(1), not O(n). thus we can support very large n # TODO: if timeout or QPS is too large, then this cache is not very efficient, # as sweep() causes long pause class LRUCache(collections.MutableMapping): """This class is not thread safe""" def __init__(self, timeout=60, close_callback=None, *args, **kwargs): self.timeout = timeout self.close_callback = close_callback self._store = {} self._time_to_keys = collections.defaultdict(list) self._keys_to_last_time = {} self._last_visits = collections.deque() self._closed_values = set() self.update(dict(*args, **kwargs)) # use the free update to set keys def __getitem__(self, key): # O(1) t = time.time() self._keys_to_last_time[key] = t self._time_to_keys[t].append(key) self._last_visits.append(t) return self._store[key] def __setitem__(self, key, value): # O(1) t = time.time() self._keys_to_last_time[key] = t self._store[key] = value self._time_to_keys[t].append(key) self._last_visits.append(t) def __delitem__(self, key): # O(1) del self._store[key] del self._keys_to_last_time[key] def __iter__(self): return iter(self._store) def __len__(self): return len(self._store) def sweep(self): # O(m) now = time.time() c = 0 while len(self._last_visits) > 0: least = self._last_visits[0] if now - least <= self.timeout: break if self.close_callback is not None: for key in self._time_to_keys[least]: if key in self._store: if now - self._keys_to_last_time[key] > self.timeout: value = self._store[key] if value not in self._closed_values: self.close_callback(value) self._closed_values.add(value) self._last_visits.popleft() for key in self._time_to_keys[least]: if key in self._store: if now - self._keys_to_last_time[key] > self.timeout: del self._store[key] del self._keys_to_last_time[key] c += 1 del self._time_to_keys[least] if c: self._closed_values.clear() logging.debug('%d keys swept' % c) def test(): c = LRUCache(timeout=0.3) c['a'] = 1 assert c['a'] == 1 time.sleep(0.5) c.sweep() assert 'a' not in c c['a'] = 2 c['b'] = 3 time.sleep(0.2) c.sweep() assert c['a'] == 2 assert c['b'] == 3 time.sleep(0.2) c.sweep() c['b'] time.sleep(0.2) c.sweep() assert 'a' not in c assert c['b'] == 3 time.sleep(0.5) c.sweep() assert 'a' not in c assert 'b' not in c global close_cb_called close_cb_called = False def close_cb(t): global close_cb_called assert not close_cb_called close_cb_called = True c = LRUCache(timeout=0.1, close_callback=close_cb) c['s'] = 1 c['s'] time.sleep(0.1) c['s'] time.sleep(0.3) c.sweep() if __name__ == '__main__': test() shadowsocks/shadowsocks/__init__.py0000644000175000017500000000125612774125037017063 0ustar shellshell#!/usr/bin/python # # Copyright 2012-2015 clowwindy # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from __future__ import absolute_import, division, print_function, \ with_statement shadowsocks/shadowsocks/udprelay.py0000644000175000017500000003111212774125037017143 0ustar shellshell#!/usr/bin/python # -*- coding: utf-8 -*- # # Copyright 2015 clowwindy # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. # SOCKS5 UDP Request # +----+------+------+----------+----------+----------+ # |RSV | FRAG | ATYP | DST.ADDR | DST.PORT | DATA | # +----+------+------+----------+----------+----------+ # | 2 | 1 | 1 | Variable | 2 | Variable | # +----+------+------+----------+----------+----------+ # SOCKS5 UDP Response # +----+------+------+----------+----------+----------+ # |RSV | FRAG | ATYP | DST.ADDR | DST.PORT | DATA | # +----+------+------+----------+----------+----------+ # | 2 | 1 | 1 | Variable | 2 | Variable | # +----+------+------+----------+----------+----------+ # shadowsocks UDP Request (before encrypted) # +------+----------+----------+----------+ # | ATYP | DST.ADDR | DST.PORT | DATA | # +------+----------+----------+----------+ # | 1 | Variable | 2 | Variable | # +------+----------+----------+----------+ # shadowsocks UDP Response (before encrypted) # +------+----------+----------+----------+ # | ATYP | DST.ADDR | DST.PORT | DATA | # +------+----------+----------+----------+ # | 1 | Variable | 2 | Variable | # +------+----------+----------+----------+ # shadowsocks UDP Request and Response (after encrypted) # +-------+--------------+ # | IV | PAYLOAD | # +-------+--------------+ # | Fixed | Variable | # +-------+--------------+ # HOW TO NAME THINGS # ------------------ # `dest` means destination server, which is from DST fields in the SOCKS5 # request # `local` means local server of shadowsocks # `remote` means remote server of shadowsocks # `client` means UDP clients that connects to other servers # `server` means the UDP server that handles user requests from __future__ import absolute_import, division, print_function, \ with_statement import socket import logging import struct import errno import random from shadowsocks import encrypt, eventloop, lru_cache, common, shell from shadowsocks.common import parse_header, pack_addr, onetimeauth_verify, \ onetimeauth_gen, ONETIMEAUTH_BYTES, ADDRTYPE_AUTH BUF_SIZE = 65536 def client_key(source_addr, server_af): # notice this is server af, not dest af return '%s:%s:%d' % (source_addr[0], source_addr[1], server_af) class UDPRelay(object): def __init__(self, config, dns_resolver, is_local, stat_callback=None): self._config = config if is_local: self._listen_addr = config['local_address'] self._listen_port = config['local_port'] self._remote_addr = config['server'] self._remote_port = config['server_port'] else: self._listen_addr = config['server'] self._listen_port = config['server_port'] self._remote_addr = None self._remote_port = None self._dns_resolver = dns_resolver self._password = common.to_bytes(config['password']) self._method = config['method'] self._timeout = config['timeout'] if 'one_time_auth' in config and config['one_time_auth']: self._ota_enable = True else: self._ota_enable = False self._ota_enable_session = self._ota_enable self._is_local = is_local self._cache = lru_cache.LRUCache(timeout=config['timeout'], close_callback=self._close_client) self._client_fd_to_server_addr = \ lru_cache.LRUCache(timeout=config['timeout']) self._dns_cache = lru_cache.LRUCache(timeout=300) self._eventloop = None self._closed = False self._sockets = set() if 'forbidden_ip' in config: self._forbidden_iplist = config['forbidden_ip'] else: self._forbidden_iplist = None addrs = socket.getaddrinfo(self._listen_addr, self._listen_port, 0, socket.SOCK_DGRAM, socket.SOL_UDP) if len(addrs) == 0: raise Exception("UDP can't get addrinfo for %s:%d" % (self._listen_addr, self._listen_port)) af, socktype, proto, canonname, sa = addrs[0] server_socket = socket.socket(af, socktype, proto) server_socket.bind((self._listen_addr, self._listen_port)) server_socket.setblocking(False) self._server_socket = server_socket self._stat_callback = stat_callback def _get_a_server(self): server = self._config['server'] server_port = self._config['server_port'] if type(server_port) == list: server_port = random.choice(server_port) if type(server) == list: server = random.choice(server) logging.debug('chosen server: %s:%d', server, server_port) return server, server_port def _close_client(self, client): if hasattr(client, 'close'): self._sockets.remove(client.fileno()) self._eventloop.remove(client) client.close() else: # just an address pass def _handle_server(self): server = self._server_socket data, r_addr = server.recvfrom(BUF_SIZE) key = None iv = None if not data: logging.debug('UDP handle_server: data is empty') if self._stat_callback: self._stat_callback(self._listen_port, len(data)) if self._is_local: frag = common.ord(data[2]) if frag != 0: logging.warn('UDP drop a message since frag is not 0') return else: data = data[3:] else: data, key, iv = encrypt.dencrypt_all(self._password, self._method, data) # decrypt data if not data: logging.debug( 'UDP handle_server: data is empty after decrypt' ) return header_result = parse_header(data) if header_result is None: return addrtype, dest_addr, dest_port, header_length = header_result if self._is_local: server_addr, server_port = self._get_a_server() else: server_addr, server_port = dest_addr, dest_port # spec https://shadowsocks.org/en/spec/one-time-auth.html self._ota_enable_session = addrtype & ADDRTYPE_AUTH if self._ota_enable and not self._ota_enable_session: logging.warn('client one time auth is required') return if self._ota_enable_session: if len(data) < header_length + ONETIMEAUTH_BYTES: logging.warn('UDP one time auth header is too short') return _hash = data[-ONETIMEAUTH_BYTES:] data = data[: -ONETIMEAUTH_BYTES] _key = iv + key if onetimeauth_verify(_hash, data, _key) is False: logging.warn('UDP one time auth fail') return addrs = self._dns_cache.get(server_addr, None) if addrs is None: addrs = socket.getaddrinfo(server_addr, server_port, 0, socket.SOCK_DGRAM, socket.SOL_UDP) if not addrs: # drop return else: self._dns_cache[server_addr] = addrs af, socktype, proto, canonname, sa = addrs[0] key = client_key(r_addr, af) client = self._cache.get(key, None) if not client: # TODO async getaddrinfo if self._forbidden_iplist: if common.to_str(sa[0]) in self._forbidden_iplist: logging.debug('IP %s is in forbidden list, drop' % common.to_str(sa[0])) # drop return client = socket.socket(af, socktype, proto) client.setblocking(False) self._cache[key] = client self._client_fd_to_server_addr[client.fileno()] = r_addr self._sockets.add(client.fileno()) self._eventloop.add(client, eventloop.POLL_IN, self) if self._is_local: key, iv, m = encrypt.gen_key_iv(self._password, self._method) # spec https://shadowsocks.org/en/spec/one-time-auth.html if self._ota_enable_session: data = self._ota_chunk_data_gen(key, iv, data) data = encrypt.encrypt_all_m(key, iv, m, self._method, data) if not data: return else: data = data[header_length:] if not data: return try: client.sendto(data, (server_addr, server_port)) except IOError as e: err = eventloop.errno_from_exception(e) if err in (errno.EINPROGRESS, errno.EAGAIN): pass else: shell.print_exception(e) def _handle_client(self, sock): data, r_addr = sock.recvfrom(BUF_SIZE) if not data: logging.debug('UDP handle_client: data is empty') return if self._stat_callback: self._stat_callback(self._listen_port, len(data)) if not self._is_local: addrlen = len(r_addr[0]) if addrlen > 255: # drop return data = pack_addr(r_addr[0]) + struct.pack('>H', r_addr[1]) + data response = encrypt.encrypt_all(self._password, self._method, 1, data) if not response: return else: data = encrypt.encrypt_all(self._password, self._method, 0, data) if not data: return header_result = parse_header(data) if header_result is None: return addrtype, dest_addr, dest_port, header_length = header_result response = b'\x00\x00\x00' + data client_addr = self._client_fd_to_server_addr.get(sock.fileno()) if client_addr: self._server_socket.sendto(response, client_addr) else: # this packet is from somewhere else we know # simply drop that packet pass def _ota_chunk_data_gen(self, key, iv, data): data = common.chr(common.ord(data[0]) | ADDRTYPE_AUTH) + data[1:] key = iv + key return data + onetimeauth_gen(data, key) def add_to_loop(self, loop): if self._eventloop: raise Exception('already add to loop') if self._closed: raise Exception('already closed') self._eventloop = loop server_socket = self._server_socket self._eventloop.add(server_socket, eventloop.POLL_IN | eventloop.POLL_ERR, self) loop.add_periodic(self.handle_periodic) def handle_event(self, sock, fd, event): if sock == self._server_socket: if event & eventloop.POLL_ERR: logging.error('UDP server_socket err') self._handle_server() elif sock and (fd in self._sockets): if event & eventloop.POLL_ERR: logging.error('UDP client_socket err') self._handle_client(sock) def handle_periodic(self): if self._closed: if self._server_socket: self._server_socket.close() self._server_socket = None for sock in self._sockets: sock.close() logging.info('closed UDP port %d', self._listen_port) self._cache.sweep() self._client_fd_to_server_addr.sweep() self._dns_cache.sweep() def close(self, next_tick=False): logging.debug('UDP close') self._closed = True if not next_tick: if self._eventloop: self._eventloop.remove_periodic(self.handle_periodic) self._eventloop.remove(self._server_socket) self._server_socket.close() for client in list(self._cache.values()): client.close() shadowsocks/shadowsocks/common.py0000644000175000017500000002230212774125037016607 0ustar shellshell#!/usr/bin/python # -*- coding: utf-8 -*- # # Copyright 2013-2015 clowwindy # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from __future__ import absolute_import, division, print_function, \ with_statement import socket import struct import logging import hashlib import hmac ONETIMEAUTH_BYTES = 10 ONETIMEAUTH_CHUNK_BYTES = 12 ONETIMEAUTH_CHUNK_DATA_LEN = 2 def sha1_hmac(secret, data): return hmac.new(secret, data, hashlib.sha1).digest() def onetimeauth_verify(_hash, data, key): return _hash == sha1_hmac(key, data)[:ONETIMEAUTH_BYTES] def onetimeauth_gen(data, key): return sha1_hmac(key, data)[:ONETIMEAUTH_BYTES] def compat_ord(s): if type(s) == int: return s return _ord(s) def compat_chr(d): if bytes == str: return _chr(d) return bytes([d]) _ord = ord _chr = chr ord = compat_ord chr = compat_chr def to_bytes(s): if bytes != str: if type(s) == str: return s.encode('utf-8') return s def to_str(s): if bytes != str: if type(s) == bytes: return s.decode('utf-8') return s def inet_ntop(family, ipstr): if family == socket.AF_INET: return to_bytes(socket.inet_ntoa(ipstr)) elif family == socket.AF_INET6: import re v6addr = ':'.join(('%02X%02X' % (ord(i), ord(j))).lstrip('0') for i, j in zip(ipstr[::2], ipstr[1::2])) v6addr = re.sub('::+', '::', v6addr, count=1) return to_bytes(v6addr) def inet_pton(family, addr): addr = to_str(addr) if family == socket.AF_INET: return socket.inet_aton(addr) elif family == socket.AF_INET6: if '.' in addr: # a v4 addr v4addr = addr[addr.rindex(':') + 1:] v4addr = socket.inet_aton(v4addr) v4addr = map(lambda x: ('%02X' % ord(x)), v4addr) v4addr.insert(2, ':') newaddr = addr[:addr.rindex(':') + 1] + ''.join(v4addr) return inet_pton(family, newaddr) dbyts = [0] * 8 # 8 groups grps = addr.split(':') for i, v in enumerate(grps): if v: dbyts[i] = int(v, 16) else: for j, w in enumerate(grps[::-1]): if w: dbyts[7 - j] = int(w, 16) else: break break return b''.join((chr(i // 256) + chr(i % 256)) for i in dbyts) else: raise RuntimeError("What family?") def is_ip(address): for family in (socket.AF_INET, socket.AF_INET6): try: if type(address) != str: address = address.decode('utf8') inet_pton(family, address) return family except (TypeError, ValueError, OSError, IOError): pass return False def patch_socket(): if not hasattr(socket, 'inet_pton'): socket.inet_pton = inet_pton if not hasattr(socket, 'inet_ntop'): socket.inet_ntop = inet_ntop patch_socket() ADDRTYPE_IPV4 = 0x01 ADDRTYPE_IPV6 = 0x04 ADDRTYPE_HOST = 0x03 ADDRTYPE_AUTH = 0x10 ADDRTYPE_MASK = 0xF def pack_addr(address): address_str = to_str(address) for family in (socket.AF_INET, socket.AF_INET6): try: r = socket.inet_pton(family, address_str) if family == socket.AF_INET6: return b'\x04' + r else: return b'\x01' + r except (TypeError, ValueError, OSError, IOError): pass if len(address) > 255: address = address[:255] # TODO return b'\x03' + chr(len(address)) + address def parse_header(data): addrtype = ord(data[0]) dest_addr = None dest_port = None header_length = 0 if addrtype & ADDRTYPE_MASK == ADDRTYPE_IPV4: if len(data) >= 7: dest_addr = socket.inet_ntoa(data[1:5]) dest_port = struct.unpack('>H', data[5:7])[0] header_length = 7 else: logging.warn('header is too short') elif addrtype & ADDRTYPE_MASK == ADDRTYPE_HOST: if len(data) > 2: addrlen = ord(data[1]) if len(data) >= 4 + addrlen: dest_addr = data[2:2 + addrlen] dest_port = struct.unpack('>H', data[2 + addrlen:4 + addrlen])[0] header_length = 4 + addrlen else: logging.warn('header is too short') else: logging.warn('header is too short') elif addrtype & ADDRTYPE_MASK == ADDRTYPE_IPV6: if len(data) >= 19: dest_addr = socket.inet_ntop(socket.AF_INET6, data[1:17]) dest_port = struct.unpack('>H', data[17:19])[0] header_length = 19 else: logging.warn('header is too short') else: logging.warn('unsupported addrtype %d, maybe wrong password or ' 'encryption method' % addrtype) if dest_addr is None: return None return addrtype, to_bytes(dest_addr), dest_port, header_length class IPNetwork(object): ADDRLENGTH = {socket.AF_INET: 32, socket.AF_INET6: 128, False: 0} def __init__(self, addrs): self._network_list_v4 = [] self._network_list_v6 = [] if type(addrs) == str: addrs = addrs.split(',') list(map(self.add_network, addrs)) def add_network(self, addr): if addr is "": return block = addr.split('/') addr_family = is_ip(block[0]) addr_len = IPNetwork.ADDRLENGTH[addr_family] if addr_family is socket.AF_INET: ip, = struct.unpack("!I", socket.inet_aton(block[0])) elif addr_family is socket.AF_INET6: hi, lo = struct.unpack("!QQ", inet_pton(addr_family, block[0])) ip = (hi << 64) | lo else: raise Exception("Not a valid CIDR notation: %s" % addr) if len(block) is 1: prefix_size = 0 while (ip & 1) == 0 and ip is not 0: ip >>= 1 prefix_size += 1 logging.warn("You did't specify CIDR routing prefix size for %s, " "implicit treated as %s/%d" % (addr, addr, addr_len)) elif block[1].isdigit() and int(block[1]) <= addr_len: prefix_size = addr_len - int(block[1]) ip >>= prefix_size else: raise Exception("Not a valid CIDR notation: %s" % addr) if addr_family is socket.AF_INET: self._network_list_v4.append((ip, prefix_size)) else: self._network_list_v6.append((ip, prefix_size)) def __contains__(self, addr): addr_family = is_ip(addr) if addr_family is socket.AF_INET: ip, = struct.unpack("!I", socket.inet_aton(addr)) return any(map(lambda n_ps: n_ps[0] == ip >> n_ps[1], self._network_list_v4)) elif addr_family is socket.AF_INET6: hi, lo = struct.unpack("!QQ", inet_pton(addr_family, addr)) ip = (hi << 64) | lo return any(map(lambda n_ps: n_ps[0] == ip >> n_ps[1], self._network_list_v6)) else: return False def test_inet_conv(): ipv4 = b'8.8.4.4' b = inet_pton(socket.AF_INET, ipv4) assert inet_ntop(socket.AF_INET, b) == ipv4 ipv6 = b'2404:6800:4005:805::1011' b = inet_pton(socket.AF_INET6, ipv6) assert inet_ntop(socket.AF_INET6, b) == ipv6 def test_parse_header(): assert parse_header(b'\x03\x0ewww.google.com\x00\x50') == \ (3, b'www.google.com', 80, 18) assert parse_header(b'\x01\x08\x08\x08\x08\x00\x35') == \ (1, b'8.8.8.8', 53, 7) assert parse_header((b'\x04$\x04h\x00@\x05\x08\x05\x00\x00\x00\x00\x00' b'\x00\x10\x11\x00\x50')) == \ (4, b'2404:6800:4005:805::1011', 80, 19) def test_pack_header(): assert pack_addr(b'8.8.8.8') == b'\x01\x08\x08\x08\x08' assert pack_addr(b'2404:6800:4005:805::1011') == \ b'\x04$\x04h\x00@\x05\x08\x05\x00\x00\x00\x00\x00\x00\x10\x11' assert pack_addr(b'www.google.com') == b'\x03\x0ewww.google.com' def test_ip_network(): ip_network = IPNetwork('127.0.0.0/24,::ff:1/112,::1,192.168.1.1,192.0.2.0') assert '127.0.0.1' in ip_network assert '127.0.1.1' not in ip_network assert ':ff:ffff' in ip_network assert '::ffff:1' not in ip_network assert '::1' in ip_network assert '::2' not in ip_network assert '192.168.1.1' in ip_network assert '192.168.1.2' not in ip_network assert '192.0.2.1' in ip_network assert '192.0.3.1' in ip_network # 192.0.2.0 is treated as 192.0.2.0/23 assert 'www.google.com' not in ip_network if __name__ == '__main__': test_inet_conv() test_parse_header() test_pack_header() test_ip_network() shadowsocks/shadowsocks/tcprelay.py0000644000175000017500000010441312774125037017146 0ustar shellshell#!/usr/bin/python # -*- coding: utf-8 -*- # # Copyright 2015 clowwindy # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from __future__ import absolute_import, division, print_function, \ with_statement import time import socket import errno import struct import logging import traceback import random from shadowsocks import encrypt, eventloop, shell, common from shadowsocks.common import parse_header, onetimeauth_verify, \ onetimeauth_gen, ONETIMEAUTH_BYTES, ONETIMEAUTH_CHUNK_BYTES, \ ONETIMEAUTH_CHUNK_DATA_LEN, ADDRTYPE_AUTH # we clear at most TIMEOUTS_CLEAN_SIZE timeouts each time TIMEOUTS_CLEAN_SIZE = 512 MSG_FASTOPEN = 0x20000000 # SOCKS METHOD definition METHOD_NOAUTH = 0 # SOCKS command definition CMD_CONNECT = 1 CMD_BIND = 2 CMD_UDP_ASSOCIATE = 3 # for each opening port, we have a TCP Relay # for each connection, we have a TCP Relay Handler to handle the connection # for each handler, we have 2 sockets: # local: connected to the client # remote: connected to remote server # for each handler, it could be at one of several stages: # as sslocal: # stage 0 auth METHOD received from local, reply with selection message # stage 1 addr received from local, query DNS for remote # stage 2 UDP assoc # stage 3 DNS resolved, connect to remote # stage 4 still connecting, more data from local received # stage 5 remote connected, piping local and remote # as ssserver: # stage 0 just jump to stage 1 # stage 1 addr received from local, query DNS for remote # stage 3 DNS resolved, connect to remote # stage 4 still connecting, more data from local received # stage 5 remote connected, piping local and remote STAGE_INIT = 0 STAGE_ADDR = 1 STAGE_UDP_ASSOC = 2 STAGE_DNS = 3 STAGE_CONNECTING = 4 STAGE_STREAM = 5 STAGE_DESTROYED = -1 # for each handler, we have 2 stream directions: # upstream: from client to server direction # read local and write to remote # downstream: from server to client direction # read remote and write to local STREAM_UP = 0 STREAM_DOWN = 1 # for each stream, it's waiting for reading, or writing, or both WAIT_STATUS_INIT = 0 WAIT_STATUS_READING = 1 WAIT_STATUS_WRITING = 2 WAIT_STATUS_READWRITING = WAIT_STATUS_READING | WAIT_STATUS_WRITING BUF_SIZE = 32 * 1024 # helper exceptions for TCPRelayHandler class BadSocksHeader(Exception): pass class NoAcceptableMethods(Exception): pass class TCPRelayHandler(object): def __init__(self, server, fd_to_handlers, loop, local_sock, config, dns_resolver, is_local): self._server = server self._fd_to_handlers = fd_to_handlers self._loop = loop self._local_sock = local_sock self._remote_sock = None self._config = config self._dns_resolver = dns_resolver # TCP Relay works as either sslocal or ssserver # if is_local, this is sslocal self._is_local = is_local self._stage = STAGE_INIT self._encryptor = encrypt.Encryptor(config['password'], config['method']) if 'one_time_auth' in config and config['one_time_auth']: self._ota_enable = True else: self._ota_enable = False self._ota_enable_session = self._ota_enable self._ota_buff_head = b'' self._ota_buff_data = b'' self._ota_len = 0 self._ota_chunk_idx = 0 self._fastopen_connected = False self._data_to_write_to_local = [] self._data_to_write_to_remote = [] self._upstream_status = WAIT_STATUS_READING self._downstream_status = WAIT_STATUS_INIT self._client_address = local_sock.getpeername()[:2] self._remote_address = None if 'forbidden_ip' in config: self._forbidden_iplist = config['forbidden_ip'] else: self._forbidden_iplist = None if is_local: self._chosen_server = self._get_a_server() fd_to_handlers[local_sock.fileno()] = self local_sock.setblocking(False) local_sock.setsockopt(socket.SOL_TCP, socket.TCP_NODELAY, 1) loop.add(local_sock, eventloop.POLL_IN | eventloop.POLL_ERR, self._server) self.last_activity = 0 self._update_activity() def __hash__(self): # default __hash__ is id / 16 # we want to eliminate collisions return id(self) @property def remote_address(self): return self._remote_address def _get_a_server(self): server = self._config['server'] server_port = self._config['server_port'] if type(server_port) == list: server_port = random.choice(server_port) if type(server) == list: server = random.choice(server) logging.debug('chosen server: %s:%d', server, server_port) return server, server_port def _update_activity(self, data_len=0): # tell the TCP Relay we have activities recently # else it will think we are inactive and timed out self._server.update_activity(self, data_len) def _update_stream(self, stream, status): # update a stream to a new waiting status # check if status is changed # only update if dirty dirty = False if stream == STREAM_DOWN: if self._downstream_status != status: self._downstream_status = status dirty = True elif stream == STREAM_UP: if self._upstream_status != status: self._upstream_status = status dirty = True if dirty: if self._local_sock: event = eventloop.POLL_ERR if self._downstream_status & WAIT_STATUS_WRITING: event |= eventloop.POLL_OUT if self._upstream_status & WAIT_STATUS_READING: event |= eventloop.POLL_IN self._loop.modify(self._local_sock, event) if self._remote_sock: event = eventloop.POLL_ERR if self._downstream_status & WAIT_STATUS_READING: event |= eventloop.POLL_IN if self._upstream_status & WAIT_STATUS_WRITING: event |= eventloop.POLL_OUT self._loop.modify(self._remote_sock, event) def _write_to_sock(self, data, sock): # write data to sock # if only some of the data are written, put remaining in the buffer # and update the stream to wait for writing if not data or not sock: return False uncomplete = False try: l = len(data) s = sock.send(data) if s < l: data = data[s:] uncomplete = True except (OSError, IOError) as e: error_no = eventloop.errno_from_exception(e) if error_no in (errno.EAGAIN, errno.EINPROGRESS, errno.EWOULDBLOCK): uncomplete = True else: shell.print_exception(e) self.destroy() return False if uncomplete: if sock == self._local_sock: self._data_to_write_to_local.append(data) self._update_stream(STREAM_DOWN, WAIT_STATUS_WRITING) elif sock == self._remote_sock: self._data_to_write_to_remote.append(data) self._update_stream(STREAM_UP, WAIT_STATUS_WRITING) else: logging.error('write_all_to_sock:unknown socket') else: if sock == self._local_sock: self._update_stream(STREAM_DOWN, WAIT_STATUS_READING) elif sock == self._remote_sock: self._update_stream(STREAM_UP, WAIT_STATUS_READING) else: logging.error('write_all_to_sock:unknown socket') return True def _handle_stage_connecting(self, data): if self._is_local: if self._ota_enable_session: data = self._ota_chunk_data_gen(data) data = self._encryptor.encrypt(data) self._data_to_write_to_remote.append(data) else: if self._ota_enable_session: self._ota_chunk_data(data, self._data_to_write_to_remote.append) else: self._data_to_write_to_remote.append(data) if self._is_local and not self._fastopen_connected and \ self._config['fast_open']: # for sslocal and fastopen, we basically wait for data and use # sendto to connect try: # only connect once self._fastopen_connected = True remote_sock = \ self._create_remote_socket(self._chosen_server[0], self._chosen_server[1]) self._loop.add(remote_sock, eventloop.POLL_ERR, self._server) data = b''.join(self._data_to_write_to_remote) l = len(data) s = remote_sock.sendto(data, MSG_FASTOPEN, self._chosen_server) if s < l: data = data[s:] self._data_to_write_to_remote = [data] else: self._data_to_write_to_remote = [] self._update_stream(STREAM_UP, WAIT_STATUS_READWRITING) except (OSError, IOError) as e: if eventloop.errno_from_exception(e) == errno.EINPROGRESS: # in this case data is not sent at all self._update_stream(STREAM_UP, WAIT_STATUS_READWRITING) elif eventloop.errno_from_exception(e) == errno.ENOTCONN: logging.error('fast open not supported on this OS') self._config['fast_open'] = False self.destroy() else: shell.print_exception(e) if self._config['verbose']: traceback.print_exc() self.destroy() def _handle_stage_addr(self, data): try: if self._is_local: cmd = common.ord(data[1]) if cmd == CMD_UDP_ASSOCIATE: logging.debug('UDP associate') if self._local_sock.family == socket.AF_INET6: header = b'\x05\x00\x00\x04' else: header = b'\x05\x00\x00\x01' addr, port = self._local_sock.getsockname()[:2] addr_to_send = socket.inet_pton(self._local_sock.family, addr) port_to_send = struct.pack('>H', port) self._write_to_sock(header + addr_to_send + port_to_send, self._local_sock) self._stage = STAGE_UDP_ASSOC # just wait for the client to disconnect return elif cmd == CMD_CONNECT: # just trim VER CMD RSV data = data[3:] else: logging.error('unknown command %d', cmd) self.destroy() return header_result = parse_header(data) if header_result is None: raise Exception('can not parse header') addrtype, remote_addr, remote_port, header_length = header_result logging.info('connecting %s:%d from %s:%d' % (common.to_str(remote_addr), remote_port, self._client_address[0], self._client_address[1])) if self._is_local is False: # spec https://shadowsocks.org/en/spec/one-time-auth.html self._ota_enable_session = addrtype & ADDRTYPE_AUTH if self._ota_enable and not self._ota_enable_session: logging.warn('client one time auth is required') return if self._ota_enable_session: if len(data) < header_length + ONETIMEAUTH_BYTES: logging.warn('one time auth header is too short') return None offset = header_length + ONETIMEAUTH_BYTES _hash = data[header_length: offset] _data = data[:header_length] key = self._encryptor.decipher_iv + self._encryptor.key if onetimeauth_verify(_hash, _data, key) is False: logging.warn('one time auth fail') self.destroy() return header_length += ONETIMEAUTH_BYTES self._remote_address = (common.to_str(remote_addr), remote_port) # pause reading self._update_stream(STREAM_UP, WAIT_STATUS_WRITING) self._stage = STAGE_DNS if self._is_local: # forward address to remote self._write_to_sock((b'\x05\x00\x00\x01' b'\x00\x00\x00\x00\x10\x10'), self._local_sock) # spec https://shadowsocks.org/en/spec/one-time-auth.html # ATYP & 0x10 == 1, then OTA is enabled. if self._ota_enable_session: data = common.chr(addrtype | ADDRTYPE_AUTH) + data[1:] key = self._encryptor.cipher_iv + self._encryptor.key data += onetimeauth_gen(data, key) data_to_send = self._encryptor.encrypt(data) self._data_to_write_to_remote.append(data_to_send) # notice here may go into _handle_dns_resolved directly self._dns_resolver.resolve(self._chosen_server[0], self._handle_dns_resolved) else: if self._ota_enable_session: data = data[header_length:] self._ota_chunk_data(data, self._data_to_write_to_remote.append) elif len(data) > header_length: self._data_to_write_to_remote.append(data[header_length:]) # notice here may go into _handle_dns_resolved directly self._dns_resolver.resolve(remote_addr, self._handle_dns_resolved) except Exception as e: self._log_error(e) if self._config['verbose']: traceback.print_exc() self.destroy() def _create_remote_socket(self, ip, port): addrs = socket.getaddrinfo(ip, port, 0, socket.SOCK_STREAM, socket.SOL_TCP) if len(addrs) == 0: raise Exception("getaddrinfo failed for %s:%d" % (ip, port)) af, socktype, proto, canonname, sa = addrs[0] if self._forbidden_iplist: if common.to_str(sa[0]) in self._forbidden_iplist: raise Exception('IP %s is in forbidden list, reject' % common.to_str(sa[0])) remote_sock = socket.socket(af, socktype, proto) self._remote_sock = remote_sock self._fd_to_handlers[remote_sock.fileno()] = self remote_sock.setblocking(False) remote_sock.setsockopt(socket.SOL_TCP, socket.TCP_NODELAY, 1) return remote_sock def _handle_dns_resolved(self, result, error): if error: self._log_error(error) self.destroy() return if result and result[1]: ip = result[1] try: self._stage = STAGE_CONNECTING remote_addr = ip if self._is_local: remote_port = self._chosen_server[1] else: remote_port = self._remote_address[1] if self._is_local and self._config['fast_open']: # for fastopen: # wait for more data arrive and send them in one SYN self._stage = STAGE_CONNECTING # we don't have to wait for remote since it's not # created self._update_stream(STREAM_UP, WAIT_STATUS_READING) # TODO when there is already data in this packet else: # else do connect remote_sock = self._create_remote_socket(remote_addr, remote_port) try: remote_sock.connect((remote_addr, remote_port)) except (OSError, IOError) as e: if eventloop.errno_from_exception(e) == \ errno.EINPROGRESS: pass self._loop.add(remote_sock, eventloop.POLL_ERR | eventloop.POLL_OUT, self._server) self._stage = STAGE_CONNECTING self._update_stream(STREAM_UP, WAIT_STATUS_READWRITING) self._update_stream(STREAM_DOWN, WAIT_STATUS_READING) return except Exception as e: shell.print_exception(e) if self._config['verbose']: traceback.print_exc() self.destroy() def _write_to_sock_remote(self, data): self._write_to_sock(data, self._remote_sock) def _ota_chunk_data(self, data, data_cb): # spec https://shadowsocks.org/en/spec/one-time-auth.html unchunk_data = b'' while len(data) > 0: if self._ota_len == 0: # get DATA.LEN + HMAC-SHA1 length = ONETIMEAUTH_CHUNK_BYTES - len(self._ota_buff_head) self._ota_buff_head += data[:length] data = data[length:] if len(self._ota_buff_head) < ONETIMEAUTH_CHUNK_BYTES: # wait more data return data_len = self._ota_buff_head[:ONETIMEAUTH_CHUNK_DATA_LEN] self._ota_len = struct.unpack('>H', data_len)[0] length = min(self._ota_len, len(data)) self._ota_buff_data += data[:length] data = data[length:] if len(self._ota_buff_data) == self._ota_len: # get a chunk data _hash = self._ota_buff_head[ONETIMEAUTH_CHUNK_DATA_LEN:] _data = self._ota_buff_data index = struct.pack('>I', self._ota_chunk_idx) key = self._encryptor.decipher_iv + index if onetimeauth_verify(_hash, _data, key) is False: logging.warn('one time auth fail, drop chunk !') else: unchunk_data += _data self._ota_chunk_idx += 1 self._ota_buff_head = b'' self._ota_buff_data = b'' self._ota_len = 0 data_cb(unchunk_data) return def _ota_chunk_data_gen(self, data): data_len = struct.pack(">H", len(data)) index = struct.pack('>I', self._ota_chunk_idx) key = self._encryptor.cipher_iv + index sha110 = onetimeauth_gen(data, key) self._ota_chunk_idx += 1 return data_len + sha110 + data def _handle_stage_stream(self, data): if self._is_local: if self._ota_enable_session: data = self._ota_chunk_data_gen(data) data = self._encryptor.encrypt(data) self._write_to_sock(data, self._remote_sock) else: if self._ota_enable_session: self._ota_chunk_data(data, self._write_to_sock_remote) else: self._write_to_sock(data, self._remote_sock) return def _check_auth_method(self, data): # VER, NMETHODS, and at least 1 METHODS if len(data) < 3: logging.warning('method selection header too short') raise BadSocksHeader socks_version = common.ord(data[0]) nmethods = common.ord(data[1]) if socks_version != 5: logging.warning('unsupported SOCKS protocol version ' + str(socks_version)) raise BadSocksHeader if nmethods < 1 or len(data) != nmethods + 2: logging.warning('NMETHODS and number of METHODS mismatch') raise BadSocksHeader noauth_exist = False for method in data[2:]: if common.ord(method) == METHOD_NOAUTH: noauth_exist = True break if not noauth_exist: logging.warning('none of SOCKS METHOD\'s ' 'requested by client is supported') raise NoAcceptableMethods def _handle_stage_init(self, data): try: self._check_auth_method(data) except BadSocksHeader: self.destroy() return except NoAcceptableMethods: self._write_to_sock(b'\x05\xff', self._local_sock) self.destroy() return self._write_to_sock(b'\x05\00', self._local_sock) self._stage = STAGE_ADDR def _on_local_read(self): # handle all local read events and dispatch them to methods for # each stage if not self._local_sock: return is_local = self._is_local data = None try: data = self._local_sock.recv(BUF_SIZE) except (OSError, IOError) as e: if eventloop.errno_from_exception(e) in \ (errno.ETIMEDOUT, errno.EAGAIN, errno.EWOULDBLOCK): return if not data: self.destroy() return self._update_activity(len(data)) if not is_local: data = self._encryptor.decrypt(data) if not data: return if self._stage == STAGE_STREAM: self._handle_stage_stream(data) return elif is_local and self._stage == STAGE_INIT: self._handle_stage_init(data) elif self._stage == STAGE_CONNECTING: self._handle_stage_connecting(data) elif (is_local and self._stage == STAGE_ADDR) or \ (not is_local and self._stage == STAGE_INIT): self._handle_stage_addr(data) def _on_remote_read(self): # handle all remote read events data = None try: data = self._remote_sock.recv(BUF_SIZE) except (OSError, IOError) as e: if eventloop.errno_from_exception(e) in \ (errno.ETIMEDOUT, errno.EAGAIN, errno.EWOULDBLOCK): return if not data: self.destroy() return self._update_activity(len(data)) if self._is_local: data = self._encryptor.decrypt(data) else: data = self._encryptor.encrypt(data) try: self._write_to_sock(data, self._local_sock) except Exception as e: shell.print_exception(e) if self._config['verbose']: traceback.print_exc() # TODO use logging when debug completed self.destroy() def _on_local_write(self): # handle local writable event if self._data_to_write_to_local: data = b''.join(self._data_to_write_to_local) self._data_to_write_to_local = [] self._write_to_sock(data, self._local_sock) else: self._update_stream(STREAM_DOWN, WAIT_STATUS_READING) def _on_remote_write(self): # handle remote writable event self._stage = STAGE_STREAM if self._data_to_write_to_remote: data = b''.join(self._data_to_write_to_remote) self._data_to_write_to_remote = [] self._write_to_sock(data, self._remote_sock) else: self._update_stream(STREAM_UP, WAIT_STATUS_READING) def _on_local_error(self): logging.debug('got local error') if self._local_sock: logging.error(eventloop.get_sock_error(self._local_sock)) self.destroy() def _on_remote_error(self): logging.debug('got remote error') if self._remote_sock: logging.error(eventloop.get_sock_error(self._remote_sock)) self.destroy() def handle_event(self, sock, event): # handle all events in this handler and dispatch them to methods if self._stage == STAGE_DESTROYED: logging.debug('ignore handle_event: destroyed') return # order is important if sock == self._remote_sock: if event & eventloop.POLL_ERR: self._on_remote_error() if self._stage == STAGE_DESTROYED: return if event & (eventloop.POLL_IN | eventloop.POLL_HUP): self._on_remote_read() if self._stage == STAGE_DESTROYED: return if event & eventloop.POLL_OUT: self._on_remote_write() elif sock == self._local_sock: if event & eventloop.POLL_ERR: self._on_local_error() if self._stage == STAGE_DESTROYED: return if event & (eventloop.POLL_IN | eventloop.POLL_HUP): self._on_local_read() if self._stage == STAGE_DESTROYED: return if event & eventloop.POLL_OUT: self._on_local_write() else: logging.warn('unknown socket') def _log_error(self, e): logging.error('%s when handling connection from %s:%d' % (e, self._client_address[0], self._client_address[1])) def destroy(self): # destroy the handler and release any resources # promises: # 1. destroy won't make another destroy() call inside # 2. destroy releases resources so it prevents future call to destroy # 3. destroy won't raise any exceptions # if any of the promises are broken, it indicates a bug has been # introduced! mostly likely memory leaks, etc if self._stage == STAGE_DESTROYED: # this couldn't happen logging.debug('already destroyed') return self._stage = STAGE_DESTROYED if self._remote_address: logging.debug('destroy: %s:%d' % self._remote_address) else: logging.debug('destroy') if self._remote_sock: logging.debug('destroying remote') self._loop.remove(self._remote_sock) del self._fd_to_handlers[self._remote_sock.fileno()] self._remote_sock.close() self._remote_sock = None if self._local_sock: logging.debug('destroying local') self._loop.remove(self._local_sock) del self._fd_to_handlers[self._local_sock.fileno()] self._local_sock.close() self._local_sock = None self._dns_resolver.remove_callback(self._handle_dns_resolved) self._server.remove_handler(self) class TCPRelay(object): def __init__(self, config, dns_resolver, is_local, stat_callback=None): self._config = config self._is_local = is_local self._dns_resolver = dns_resolver self._closed = False self._eventloop = None self._fd_to_handlers = {} self._timeout = config['timeout'] self._timeouts = [] # a list for all the handlers # we trim the timeouts once a while self._timeout_offset = 0 # last checked position for timeout self._handler_to_timeouts = {} # key: handler value: index in timeouts if is_local: listen_addr = config['local_address'] listen_port = config['local_port'] else: listen_addr = config['server'] listen_port = config['server_port'] self._listen_port = listen_port addrs = socket.getaddrinfo(listen_addr, listen_port, 0, socket.SOCK_STREAM, socket.SOL_TCP) if len(addrs) == 0: raise Exception("can't get addrinfo for %s:%d" % (listen_addr, listen_port)) af, socktype, proto, canonname, sa = addrs[0] server_socket = socket.socket(af, socktype, proto) server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) server_socket.bind(sa) server_socket.setblocking(False) if config['fast_open']: try: server_socket.setsockopt(socket.SOL_TCP, 23, 5) except socket.error: logging.error('warning: fast open is not available') self._config['fast_open'] = False server_socket.listen(1024) self._server_socket = server_socket self._stat_callback = stat_callback def add_to_loop(self, loop): if self._eventloop: raise Exception('already add to loop') if self._closed: raise Exception('already closed') self._eventloop = loop self._eventloop.add(self._server_socket, eventloop.POLL_IN | eventloop.POLL_ERR, self) self._eventloop.add_periodic(self.handle_periodic) def remove_handler(self, handler): index = self._handler_to_timeouts.get(hash(handler), -1) if index >= 0: # delete is O(n), so we just set it to None self._timeouts[index] = None del self._handler_to_timeouts[hash(handler)] def update_activity(self, handler, data_len): if data_len and self._stat_callback: self._stat_callback(self._listen_port, data_len) # set handler to active now = int(time.time()) if now - handler.last_activity < eventloop.TIMEOUT_PRECISION: # thus we can lower timeout modification frequency return handler.last_activity = now index = self._handler_to_timeouts.get(hash(handler), -1) if index >= 0: # delete is O(n), so we just set it to None self._timeouts[index] = None length = len(self._timeouts) self._timeouts.append(handler) self._handler_to_timeouts[hash(handler)] = length def _sweep_timeout(self): # tornado's timeout memory management is more flexible than we need # we just need a sorted last_activity queue and it's faster than heapq # in fact we can do O(1) insertion/remove so we invent our own if self._timeouts: logging.log(shell.VERBOSE_LEVEL, 'sweeping timeouts') now = time.time() length = len(self._timeouts) pos = self._timeout_offset while pos < length: handler = self._timeouts[pos] if handler: if now - handler.last_activity < self._timeout: break else: if handler.remote_address: logging.warn('timed out: %s:%d' % handler.remote_address) else: logging.warn('timed out') handler.destroy() self._timeouts[pos] = None # free memory pos += 1 else: pos += 1 if pos > TIMEOUTS_CLEAN_SIZE and pos > length >> 1: # clean up the timeout queue when it gets larger than half # of the queue self._timeouts = self._timeouts[pos:] for key in self._handler_to_timeouts: self._handler_to_timeouts[key] -= pos pos = 0 self._timeout_offset = pos def handle_event(self, sock, fd, event): # handle events and dispatch to handlers if sock: logging.log(shell.VERBOSE_LEVEL, 'fd %d %s', fd, eventloop.EVENT_NAMES.get(event, event)) if sock == self._server_socket: if event & eventloop.POLL_ERR: # TODO raise Exception('server_socket error') try: logging.debug('accept') conn = self._server_socket.accept() TCPRelayHandler(self, self._fd_to_handlers, self._eventloop, conn[0], self._config, self._dns_resolver, self._is_local) except (OSError, IOError) as e: error_no = eventloop.errno_from_exception(e) if error_no in (errno.EAGAIN, errno.EINPROGRESS, errno.EWOULDBLOCK): return else: shell.print_exception(e) if self._config['verbose']: traceback.print_exc() else: if sock: handler = self._fd_to_handlers.get(fd, None) if handler: handler.handle_event(sock, event) else: logging.warn('poll removed fd') def handle_periodic(self): if self._closed: if self._server_socket: self._eventloop.remove(self._server_socket) self._server_socket.close() self._server_socket = None logging.info('closed TCP port %d', self._listen_port) if not self._fd_to_handlers: logging.info('stopping') self._eventloop.stop() self._sweep_timeout() def close(self, next_tick=False): logging.debug('TCP close') self._closed = True if not next_tick: if self._eventloop: self._eventloop.remove_periodic(self.handle_periodic) self._eventloop.remove(self._server_socket) self._server_socket.close() for handler in list(self._fd_to_handlers.values()): handler.destroy() shadowsocks/shadowsocks/encrypt.py0000644000175000017500000001470612774125037017014 0ustar shellshell#!/usr/bin/env python # # Copyright 2012-2015 clowwindy # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from __future__ import absolute_import, division, print_function, \ with_statement import os import sys import hashlib import logging from shadowsocks import common from shadowsocks.crypto import rc4_md5, openssl, sodium, table method_supported = {} method_supported.update(rc4_md5.ciphers) method_supported.update(openssl.ciphers) method_supported.update(sodium.ciphers) method_supported.update(table.ciphers) def random_string(length): return os.urandom(length) cached_keys = {} def try_cipher(key, method=None): Encryptor(key, method) def EVP_BytesToKey(password, key_len, iv_len): # equivalent to OpenSSL's EVP_BytesToKey() with count 1 # so that we make the same key and iv as nodejs version cached_key = '%s-%d-%d' % (password, key_len, iv_len) r = cached_keys.get(cached_key, None) if r: return r m = [] i = 0 while len(b''.join(m)) < (key_len + iv_len): md5 = hashlib.md5() data = password if i > 0: data = m[i - 1] + password md5.update(data) m.append(md5.digest()) i += 1 ms = b''.join(m) key = ms[:key_len] iv = ms[key_len:key_len + iv_len] cached_keys[cached_key] = (key, iv) return key, iv class Encryptor(object): def __init__(self, password, method): self.password = password self.key = None self.method = method self.iv_sent = False self.cipher_iv = b'' self.decipher = None self.decipher_iv = None method = method.lower() self._method_info = self.get_method_info(method) if self._method_info: self.cipher = self.get_cipher(password, method, 1, random_string(self._method_info[1])) else: logging.error('method %s not supported' % method) sys.exit(1) def get_method_info(self, method): method = method.lower() m = method_supported.get(method) return m def iv_len(self): return len(self.cipher_iv) def get_cipher(self, password, method, op, iv): password = common.to_bytes(password) m = self._method_info if m[0] > 0: key, iv_ = EVP_BytesToKey(password, m[0], m[1]) else: # key_length == 0 indicates we should use the key directly key, iv = password, b'' self.key = key iv = iv[:m[1]] if op == 1: # this iv is for cipher not decipher self.cipher_iv = iv[:m[1]] return m[2](method, key, iv, op) def encrypt(self, buf): if len(buf) == 0: return buf if self.iv_sent: return self.cipher.update(buf) else: self.iv_sent = True return self.cipher_iv + self.cipher.update(buf) def decrypt(self, buf): if len(buf) == 0: return buf if self.decipher is None: decipher_iv_len = self._method_info[1] decipher_iv = buf[:decipher_iv_len] self.decipher_iv = decipher_iv self.decipher = self.get_cipher(self.password, self.method, 0, iv=decipher_iv) buf = buf[decipher_iv_len:] if len(buf) == 0: return buf return self.decipher.update(buf) def gen_key_iv(password, method): method = method.lower() (key_len, iv_len, m) = method_supported[method] key = None if key_len > 0: key, _ = EVP_BytesToKey(password, key_len, iv_len) else: key = password iv = random_string(iv_len) return key, iv, m def encrypt_all_m(key, iv, m, method, data): result = [] result.append(iv) cipher = m(method, key, iv, 1) result.append(cipher.update(data)) return b''.join(result) def dencrypt_all(password, method, data): result = [] method = method.lower() (key_len, iv_len, m) = method_supported[method] key = None if key_len > 0: key, _ = EVP_BytesToKey(password, key_len, iv_len) else: key = password iv = data[:iv_len] data = data[iv_len:] cipher = m(method, key, iv, 0) result.append(cipher.update(data)) return b''.join(result), key, iv def encrypt_all(password, method, op, data): result = [] method = method.lower() (key_len, iv_len, m) = method_supported[method] key = None if key_len > 0: key, _ = EVP_BytesToKey(password, key_len, iv_len) else: key = password if op: iv = random_string(iv_len) result.append(iv) else: iv = data[:iv_len] data = data[iv_len:] cipher = m(method, key, iv, op) result.append(cipher.update(data)) return b''.join(result) CIPHERS_TO_TEST = [ 'aes-128-cfb', 'aes-256-cfb', 'rc4-md5', 'salsa20', 'chacha20', 'table', ] def test_encryptor(): from os import urandom plain = urandom(10240) for method in CIPHERS_TO_TEST: logging.warn(method) encryptor = Encryptor(b'key', method) decryptor = Encryptor(b'key', method) cipher = encryptor.encrypt(plain) plain2 = decryptor.decrypt(cipher) assert plain == plain2 def test_encrypt_all(): from os import urandom plain = urandom(10240) for method in CIPHERS_TO_TEST: logging.warn(method) cipher = encrypt_all(b'key', method, 1, plain) plain2 = encrypt_all(b'key', method, 0, cipher) assert plain == plain2 def test_encrypt_all_m(): from os import urandom plain = urandom(10240) for method in CIPHERS_TO_TEST: logging.warn(method) key, iv, m = gen_key_iv(b'key', method) cipher = encrypt_all_m(key, iv, m, method, plain) plain2, key, iv = dencrypt_all(b'key', method, cipher) assert plain == plain2 if __name__ == '__main__': test_encrypt_all() test_encryptor() test_encrypt_all_m() shadowsocks/shadowsocks/daemon.py0000644000175000017500000001274212774125037016571 0ustar shellshell#!/usr/bin/python # -*- coding: utf-8 -*- # # Copyright 2014-2015 clowwindy # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from __future__ import absolute_import, division, print_function, \ with_statement import os import sys import logging import signal import time from shadowsocks import common, shell # this module is ported from ShadowVPN daemon.c def daemon_exec(config): if 'daemon' in config: if os.name != 'posix': raise Exception('daemon mode is only supported on Unix') command = config['daemon'] if not command: command = 'start' pid_file = config['pid-file'] log_file = config['log-file'] if command == 'start': daemon_start(pid_file, log_file) elif command == 'stop': daemon_stop(pid_file) # always exit after daemon_stop sys.exit(0) elif command == 'restart': daemon_stop(pid_file) daemon_start(pid_file, log_file) else: raise Exception('unsupported daemon command %s' % command) def write_pid_file(pid_file, pid): import fcntl import stat try: fd = os.open(pid_file, os.O_RDWR | os.O_CREAT, stat.S_IRUSR | stat.S_IWUSR) except OSError as e: shell.print_exception(e) return -1 flags = fcntl.fcntl(fd, fcntl.F_GETFD) assert flags != -1 flags |= fcntl.FD_CLOEXEC r = fcntl.fcntl(fd, fcntl.F_SETFD, flags) assert r != -1 # There is no platform independent way to implement fcntl(fd, F_SETLK, &fl) # via fcntl.fcntl. So use lockf instead try: fcntl.lockf(fd, fcntl.LOCK_EX | fcntl.LOCK_NB, 0, 0, os.SEEK_SET) except IOError: r = os.read(fd, 32) if r: logging.error('already started at pid %s' % common.to_str(r)) else: logging.error('already started') os.close(fd) return -1 os.ftruncate(fd, 0) os.write(fd, common.to_bytes(str(pid))) return 0 def freopen(f, mode, stream): oldf = open(f, mode) oldfd = oldf.fileno() newfd = stream.fileno() os.close(newfd) os.dup2(oldfd, newfd) def daemon_start(pid_file, log_file): def handle_exit(signum, _): if signum == signal.SIGTERM: sys.exit(0) sys.exit(1) signal.signal(signal.SIGINT, handle_exit) signal.signal(signal.SIGTERM, handle_exit) # fork only once because we are sure parent will exit pid = os.fork() assert pid != -1 if pid > 0: # parent waits for its child time.sleep(5) sys.exit(0) # child signals its parent to exit ppid = os.getppid() pid = os.getpid() if write_pid_file(pid_file, pid) != 0: os.kill(ppid, signal.SIGINT) sys.exit(1) os.setsid() signal.signal(signal.SIGHUP, signal.SIG_IGN) print('started') os.kill(ppid, signal.SIGTERM) sys.stdin.close() try: freopen(log_file, 'a', sys.stdout) freopen(log_file, 'a', sys.stderr) except IOError as e: shell.print_exception(e) sys.exit(1) def daemon_stop(pid_file): import errno try: with open(pid_file) as f: buf = f.read() pid = common.to_str(buf) if not buf: logging.error('not running') except IOError as e: shell.print_exception(e) if e.errno == errno.ENOENT: # always exit 0 if we are sure daemon is not running logging.error('not running') return sys.exit(1) pid = int(pid) if pid > 0: try: os.kill(pid, signal.SIGTERM) except OSError as e: if e.errno == errno.ESRCH: logging.error('not running') # always exit 0 if we are sure daemon is not running return shell.print_exception(e) sys.exit(1) else: logging.error('pid is not positive: %d', pid) # sleep for maximum 10s for i in range(0, 200): try: # query for the pid os.kill(pid, 0) except OSError as e: if e.errno == errno.ESRCH: break time.sleep(0.05) else: logging.error('timed out when stopping pid %d', pid) sys.exit(1) print('stopped') os.unlink(pid_file) def set_user(username): if username is None: return import pwd import grp try: pwrec = pwd.getpwnam(username) except KeyError: logging.error('user not found: %s' % username) raise user = pwrec[0] uid = pwrec[2] gid = pwrec[3] cur_uid = os.getuid() if uid == cur_uid: return if cur_uid != 0: logging.error('can not set user as nonroot user') # will raise later # inspired by supervisor if hasattr(os, 'setgroups'): groups = [grprec[2] for grprec in grp.getgrall() if user in grprec[3]] groups.insert(0, gid) os.setgroups(groups) os.setgid(gid) os.setuid(uid) shadowsocks/shadowsocks/server.py0000755000175000017500000001142212774125037016631 0ustar shellshell#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright 2015 clowwindy # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from __future__ import absolute_import, division, print_function, \ with_statement import sys import os import logging import signal sys.path.insert(0, os.path.join(os.path.dirname(__file__), '../')) from shadowsocks import shell, daemon, eventloop, tcprelay, udprelay, \ asyncdns, manager def main(): shell.check_python() config = shell.get_config(False) daemon.daemon_exec(config) if config['port_password']: if config['password']: logging.warn('warning: port_password should not be used with ' 'server_port and password. server_port and password ' 'will be ignored') else: config['port_password'] = {} server_port = config['server_port'] if type(server_port) == list: for a_server_port in server_port: config['port_password'][a_server_port] = config['password'] else: config['port_password'][str(server_port)] = config['password'] if config.get('manager_address', 0): logging.info('entering manager mode') manager.run(config) return tcp_servers = [] udp_servers = [] if 'dns_server' in config: # allow override settings in resolv.conf dns_resolver = asyncdns.DNSResolver(config['dns_server'], config['prefer_ipv6']) else: dns_resolver = asyncdns.DNSResolver(prefer_ipv6=config['prefer_ipv6']) port_password = config['port_password'] del config['port_password'] for port, password in port_password.items(): a_config = config.copy() a_config['server_port'] = int(port) a_config['password'] = password logging.info("starting server at %s:%d" % (a_config['server'], int(port))) tcp_servers.append(tcprelay.TCPRelay(a_config, dns_resolver, False)) udp_servers.append(udprelay.UDPRelay(a_config, dns_resolver, False)) def run_server(): def child_handler(signum, _): logging.warn('received SIGQUIT, doing graceful shutting down..') list(map(lambda s: s.close(next_tick=True), tcp_servers + udp_servers)) signal.signal(getattr(signal, 'SIGQUIT', signal.SIGTERM), child_handler) def int_handler(signum, _): sys.exit(1) signal.signal(signal.SIGINT, int_handler) try: loop = eventloop.EventLoop() dns_resolver.add_to_loop(loop) list(map(lambda s: s.add_to_loop(loop), tcp_servers + udp_servers)) daemon.set_user(config.get('user', None)) loop.run() except Exception as e: shell.print_exception(e) sys.exit(1) if int(config['workers']) > 1: if os.name == 'posix': children = [] is_child = False for i in range(0, int(config['workers'])): r = os.fork() if r == 0: logging.info('worker started') is_child = True run_server() break else: children.append(r) if not is_child: def handler(signum, _): for pid in children: try: os.kill(pid, signum) os.waitpid(pid, 0) except OSError: # child may already exited pass sys.exit() signal.signal(signal.SIGTERM, handler) signal.signal(signal.SIGQUIT, handler) signal.signal(signal.SIGINT, handler) # master for a_tcp_server in tcp_servers: a_tcp_server.close() for a_udp_server in udp_servers: a_udp_server.close() dns_resolver.close() for child in children: os.waitpid(child, 0) else: logging.warn('worker is only available on Unix/Linux') run_server() else: run_server() if __name__ == '__main__': main() shadowsocks/shadowsocks/crypto/0000755000175000017500000000000012774125037016266 5ustar shellshellshadowsocks/shadowsocks/crypto/table.py0000644000175000017500000001765412774125037017744 0ustar shellshell# !/usr/bin/env python # # Copyright 2015 clowwindy # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from __future__ import absolute_import, division, print_function, \ with_statement import string import struct import hashlib __all__ = ['ciphers'] cached_tables = {} if hasattr(string, 'maketrans'): maketrans = string.maketrans translate = string.translate else: maketrans = bytes.maketrans translate = bytes.translate def get_table(key): m = hashlib.md5() m.update(key) s = m.digest() a, b = struct.unpack('> /etc/apt/sources.list \ && echo "deb-src http://ppa.launchpad.net/chris-lea/libsodium/ubuntu trusty main" >> /etc/apt/sources.list \ && apt-get update \ && apt-get install -y libsodium-dev python-pip RUN pip install shadowsocks ENTRYPOINT ["/usr/local/bin/ssserver"] # usage: # docker run -d --restart=always -p 1314:1314 ficapy/shadowsocks -s 0.0.0.0 -p 1314 -k $PD -m chacha20 shadowsocks/tests/0000755000175000017500000000000012774125037013560 5ustar shellshellshadowsocks/tests/gen_multiple_passwd.py0000644000175000017500000000063012774125037020176 0ustar shellshell#!/usr/bin/python import json with open('server-multi-passwd-performance.json', 'wb') as f: r = { 'server': '127.0.0.1', 'local_port': 1081, 'timeout': 60, 'method': 'aes-256-cfb' } ports = {} for i in range(7000, 9000): ports[str(i)] = 'aes_password' r['port_password'] = ports print(r) f.write(json.dumps(r, indent=4).encode('utf-8')) shadowsocks/tests/test_large_file.sh0000755000175000017500000000063612774125037017254 0ustar shellshell#!/bin/bash PYTHON="coverage run -a" URL=http://127.0.0.1/file mkdir -p tmp $PYTHON shadowsocks/local.py -c tests/aes.json & LOCAL=$! $PYTHON shadowsocks/server.py -c tests/aes.json --forbidden-ip "" & SERVER=$! sleep 3 time curl -o tmp/expected $URL time curl -o tmp/result --socks5-hostname 127.0.0.1:1081 $URL kill -s SIGINT $LOCAL kill -s SIGINT $SERVER sleep 2 diff tmp/expected tmp/result || exit 1 shadowsocks/tests/table.json0000644000175000017500000000032712562121324015532 0ustar shellshell{ "server":"127.0.0.1", "server_port":8388, "local_port":1081, "password":"table_password", "timeout":60, "method":"table", "local_address":"127.0.0.1", "fast_open":false } shadowsocks/tests/rc4-md5-ota.json0000644000175000017500000000036212774125037016410 0ustar shellshell{ "server":"127.0.0.1", "server_port":8388, "local_port":1081, "password":"aes_password", "timeout":60, "method":"rc4-md5", "local_address":"127.0.0.1", "fast_open":false, "one_time_auth":true } shadowsocks/tests/ipv6.json0000644000175000017500000000032412774125037015336 0ustar shellshell{ "server":"::", "server_port":8388, "local_port":1081, "password":"aes_password", "timeout":60, "method":"aes-256-cfb", "local_address":"127.0.0.1", "fast_open":false } shadowsocks/tests/graceful_cli.py0000644000175000017500000000043512774125037016553 0ustar shellshell#!/usr/bin/python import socks import time SERVER_IP = '127.0.0.1' SERVER_PORT = 8001 if __name__ == '__main__': s = socks.socksocket() s.set_proxy(socks.SOCKS5, SERVER_IP, 1081) s.connect((SERVER_IP, SERVER_PORT)) s.send(b'test') time.sleep(30) s.close() shadowsocks/tests/chacha20.json0000644000175000017500000000033412774125037016024 0ustar shellshell{ "server":"127.0.0.1", "server_port":8388, "local_port":1081, "password":"salsa20_password", "timeout":60, "method":"chacha20", "local_address":"127.0.0.1", "fast_open":false } shadowsocks/tests/aes.json0000644000175000017500000000033312562121324015210 0ustar shellshell{ "server":"127.0.0.1", "server_port":8388, "local_port":1081, "password":"aes_password", "timeout":60, "method":"aes-256-cfb", "local_address":"127.0.0.1", "fast_open":false } shadowsocks/tests/salsa20.json0000644000175000017500000000033312774125037015717 0ustar shellshell{ "server":"127.0.0.1", "server_port":8388, "local_port":1081, "password":"salsa20_password", "timeout":60, "method":"salsa20", "local_address":"127.0.0.1", "fast_open":false } shadowsocks/tests/coverage_server.py0000644000175000017500000000316712774125037017322 0ustar shellshell#!/usr/bin/env python # # Copyright 2015 clowwindy # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. if __name__ == '__main__': import tornado.ioloop import tornado.web import urllib class MainHandler(tornado.web.RequestHandler): def get(self, project): try: with open('/tmp/%s-coverage' % project, 'rb') as f: coverage = f.read().strip() n = int(coverage.strip('%')) if n >= 80: color = 'brightgreen' else: color = 'yellow' self.redirect(('https://img.shields.io/badge/' 'coverage-%s-%s.svg' '?style=flat') % (urllib.quote(coverage), color)) except IOError: raise tornado.web.HTTPError(404) application = tornado.web.Application([ (r"/([a-zA-Z0-9\-_]+)", MainHandler), ]) if __name__ == "__main__": application.listen(8888, address='127.0.0.1') tornado.ioloop.IOLoop.instance().start() shadowsocks/tests/graceful.json0000644000175000017500000000033312774125037016242 0ustar shellshell{ "server":"127.0.0.1", "server_port":8388, "local_port":1081, "password":"aes_password", "timeout":15, "method":"aes-256-cfb", "local_address":"127.0.0.1", "fast_open":false } shadowsocks/tests/rc4-md5.json0000644000175000017500000000032712774125037015630 0ustar shellshell{ "server":"127.0.0.1", "server_port":8388, "local_port":1081, "password":"aes_password", "timeout":60, "method":"rc4-md5", "local_address":"127.0.0.1", "fast_open":false } shadowsocks/tests/graceful_server.py0000644000175000017500000000037112774125037017311 0ustar shellshell#!/usr/bin/python import socket if __name__ == '__main__': s = socket.socket() s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.bind(('127.0.0.1', 8001)) s.listen(1024) c = None while True: c = s.accept() shadowsocks/tests/test_udp_src.sh0000755000175000017500000000046012774125037016615 0ustar shellshell#!/bin/bash PYTHON="coverage run -a" mkdir -p tmp $PYTHON shadowsocks/local.py -c tests/aes.json -v & LOCAL=$! $PYTHON shadowsocks/server.py -c tests/aes.json --forbidden-ip "" -v & SERVER=$! sleep 3 python tests/test_udp_src.py r=$? kill -s SIGINT $LOCAL kill -s SIGINT $SERVER sleep 2 exit $r shadowsocks/tests/test_graceful_restart.sh0000755000175000017500000000227212774125037020515 0ustar shellshell#!/bin/bash PYTHON="coverage run -a" URL=http://127.0.0.1/file # setup processes $PYTHON shadowsocks/local.py -c tests/graceful.json & LOCAL=$! $PYTHON shadowsocks/server.py -c tests/graceful.json --forbidden-ip "" & SERVER=$! python tests/graceful_server.py & GSERVER=$! sleep 1 python tests/graceful_cli.py & GCLI=$! sleep 1 # graceful restart server: send SIGQUIT to old process and start a new one kill -s SIGQUIT $SERVER sleep 0.5 $PYTHON shadowsocks/server.py -c tests/graceful.json --forbidden-ip "" & NEWSERVER=$! sleep 1 # check old server ps x | grep -v grep | grep $SERVER OLD_SERVER_RUNNING1=$? # old server should not quit at this moment echo old server running: $OLD_SERVER_RUNNING1 sleep 1 # close connections on old server kill -s SIGKILL $GCLI kill -s SIGKILL $GSERVER kill -s SIGINT $LOCAL sleep 11 # check old server ps x | grep -v grep | grep $SERVER OLD_SERVER_RUNNING2=$? # old server should quit at this moment echo old server running: $OLD_SERVER_RUNNING2 kill -s SIGINT $SERVER # new server is expected running kill -s SIGINT $NEWSERVER || exit 1 if [ $OLD_SERVER_RUNNING1 -ne 0 ]; then exit 1 fi if [ $OLD_SERVER_RUNNING2 -ne 1 ]; then sleep 1 exit 1 fi shadowsocks/tests/assert.sh0000644000175000017500000001150312774125037015415 0ustar shellshell#!/bin/bash # assert.sh 1.0 - bash unit testing framework # Copyright (C) 2009, 2010, 2011, 2012 Robert Lehmann # # http://github.com/lehmannro/assert.sh # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published # by the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with this program. If not, see . export DISCOVERONLY=${DISCOVERONLY:-} export DEBUG=${DEBUG:-} export STOP=${STOP:-} export INVARIANT=${INVARIANT:-} export CONTINUE=${CONTINUE:-} args="$(getopt -n "$0" -l \ verbose,help,stop,discover,invariant,continue vhxdic $*)" \ || exit -1 for arg in $args; do case "$arg" in -h) echo "$0 [-vxidc]" \ "[--verbose] [--stop] [--invariant] [--discover] [--continue]" echo "`sed 's/./ /g' <<< "$0"` [-h] [--help]" exit 0;; --help) cat < [stdin] (( tests_ran++ )) || : [[ -n "$DISCOVERONLY" ]] && return || true # printf required for formatting printf -v expected "x${2:-}" # x required to overwrite older results result="$(eval 2>/dev/null $1 <<< ${3:-})" || true # Note: $expected is already decorated if [[ "x$result" == "$expected" ]]; then [[ -n "$DEBUG" ]] && echo -n . || true return fi result="$(sed -e :a -e '$!N;s/\n/\\n/;ta' <<< "$result")" [[ -z "$result" ]] && result="nothing" || result="\"$result\"" [[ -z "$2" ]] && expected="nothing" || expected="\"$2\"" _assert_fail "expected $expected${_indent}got $result" "$1" "$3" } assert_raises() { # assert_raises [stdin] (( tests_ran++ )) || : [[ -n "$DISCOVERONLY" ]] && return || true status=0 (eval $1 <<< ${3:-}) > /dev/null 2>&1 || status=$? expected=${2:-0} if [[ "$status" -eq "$expected" ]]; then [[ -n "$DEBUG" ]] && echo -n . || true return fi _assert_fail "program terminated with code $status instead of $expected" "$1" "$3" } _assert_fail() { # _assert_fail [[ -n "$DEBUG" ]] && echo -n X report="test #$tests_ran \"$2${3:+ <<< $3}\" failed:${_indent}$1" if [[ -n "$STOP" ]]; then [[ -n "$DEBUG" ]] && echo echo "$report" exit 1 fi tests_errors[$tests_failed]="$report" (( tests_failed++ )) || : } _assert_reset : ${tests_suite_status:=0} # remember if any of the tests failed so far _assert_cleanup() { local status=$? # modify exit code if it's not already non-zero [[ $status -eq 0 && -z $CONTINUE ]] && exit $tests_suite_status } trap _assert_cleanup EXIT shadowsocks/tests/test_command.sh0000755000175000017500000000545412774125037016604 0ustar shellshell#!/bin/bash . tests/assert.sh PYTHON="coverage run -a" LOCAL="$PYTHON shadowsocks/local.py" SERVER="$PYTHON shadowsocks/server.py" assert "$LOCAL --version 2>&1 | grep Shadowsocks | awk -F\" \" '{print \$1}'" "Shadowsocks" assert "$SERVER --version 2>&1 | grep Shadowsocks | awk -F\" \" '{print \$1}'" "Shadowsocks" assert "$LOCAL 2>&1 | grep ERROR" "ERROR: config not specified" assert "$LOCAL 2>&1 | grep usage | cut -d: -f1" "usage" assert "$SERVER 2>&1 | grep ERROR" "ERROR: config not specified" assert "$SERVER 2>&1 | grep usage | cut -d: -f1" "usage" assert "$LOCAL 2>&1 -m rc4-md5 -k testrc4 -s 127.0.0.1 -p 8388 -d start | grep WARNING | awk -F\"WARNING\" '{print \$2}'" " warning: server set to listen on 127.0.0.1:8388, are you sure?" $LOCAL 2>/dev/null 1>/dev/null -m rc4-md5 -k testrc4 -s 127.0.0.1 -p 8388 -d stop assert "$LOCAL 2>&1 -m rc4-md5 -k testrc4 -s 0.0.0.0 -p 8388 -t10 -d start | grep WARNING | awk -F\"WARNING\" '{print \$2}'" " warning: your timeout 10 seems too short" $LOCAL 2>/dev/null 1>/dev/null -m rc4-md5 -k testrc4 -s 127.0.0.1 -p 8388 -d stop assert "$LOCAL 2>&1 -m rc4-md5 -k testrc4 -s 0.0.0.0 -p 8388 -t1000 -d start | grep WARNING | awk -F\"WARNING\" '{print \$2}'" " warning: your timeout 1000 seems too long" $LOCAL 2>/dev/null 1>/dev/null -m rc4-md5 -k testrc4 -s 127.0.0.1 -p 8388 -d stop assert "$LOCAL 2>&1 -m rc4 -k testrc4 -s 0.0.0.0 -p 8388 -d start | grep WARNING | awk -F\"WARNING\" '{print \$2}'" " warning: RC4 is not safe; please use a safer cipher, like AES-256-CFB" $LOCAL 2>/dev/null 1>/dev/null -m rc4-md5 -k testrc4 -s 127.0.0.1 -p 8388 -d stop assert "$LOCAL 2>&1 -m rc4-md5 -k mypassword -s 0.0.0.0 -p 8388 -d start | grep ERROR | awk -F\"ERROR\" '{print \$2}'" " DON'T USE DEFAULT PASSWORD! Please change it in your config.json!" $LOCAL 2>/dev/null 1>/dev/null -m rc4-md5 -k testrc4 -s 127.0.0.1 -p 8388 -d stop assert "$LOCAL 2>&1 -m rc4-md5 -p 8388 -k testrc4 -d start | grep ERROR | awk -F\"ERROR\" '{print \$2}'" ": server addr not specified" $LOCAL 2>/dev/null 1>/dev/null -m rc4-md5 -k testrc4 -s 127.0.0.1 -p 8388 -d stop assert "$LOCAL 2>&1 -m rc4-md5 -p 8388 -s 0.0.0.0 -d start | grep ERROR | awk -F\"ERROR\" '{print \$2}'" " password not specified" $LOCAL 2>/dev/null 1>/dev/null -m rc4-md5 -k testrc4 -s 127.0.0.1 -p 8388 -d stop assert "$SERVER 2>&1 -m rc4-md5 -p 8388 -s 0.0.0.0 -d start | grep ERROR | awk -F\"ERROR\" '{print \$2}'" " password or port_password not specified" $LOCAL 2>/dev/null 1>/dev/null -m rc4-md5 -k testrc4 -s 127.0.0.1 -p 8388 -d stop assert "$SERVER 2>&1 --forbidden-ip 127.0.0.1/4a -m rc4-md5 -k 12345 -p 8388 -s 0.0.0.0 -d start | grep ERROR | awk -F\"ERROR\" '{print \$2}'" ": Not a valid CIDR notation: 127.0.0.1/4a" $LOCAL 2>/dev/null 1>/dev/null -m rc4-md5 -k testrc4 -s 127.0.0.1 -p 8388 -d stop assert_end command shadowsocks/tests/client-multi-server-ip.json0000644000175000017500000000035212774125037020773 0ustar shellshell{ "server":["127.0.0.1", "127.0.0.1"], "server_port":8388, "local_port":1081, "password":"aes_password", "timeout":60, "method":"aes-256-cfb", "local_address":"127.0.0.1", "fast_open":false } shadowsocks/tests/jenkins.sh0000755000175000017500000000774512774125037015575 0ustar shellshell#!/bin/bash result=0 function run_test { printf '\e[0;36m' echo "running test: $command $@" printf '\e[0m' $command "$@" status=$? if [ $status -ne 0 ]; then printf '\e[0;31m' echo "test failed: $command $@" printf '\e[0m' echo result=1 else printf '\e[0;32m' echo OK printf '\e[0m' echo fi return 0 } python --version coverage erase mkdir tmp run_test pep8 --ignore=E402 . run_test pyflakes . run_test coverage run tests/nose_plugin.py -v run_test python setup.py sdist run_test tests/test_daemon.sh run_test python tests/test.py --with-coverage -c tests/aes.json run_test python tests/test.py --with-coverage -c tests/aes-ctr.json run_test python tests/test.py --with-coverage -c tests/aes-cfb1.json run_test python tests/test.py --with-coverage -c tests/aes-cfb8.json run_test python tests/test.py --with-coverage -c tests/rc4-md5.json run_test python tests/test.py --with-coverage -c tests/salsa20.json run_test python tests/test.py --with-coverage -c tests/chacha20.json run_test python tests/test.py --with-coverage -c tests/table.json run_test python tests/test.py --with-coverage -c tests/server-multi-ports.json run_test python tests/test.py --with-coverage -s tests/aes.json -c tests/client-multi-server-ip.json run_test python tests/test.py --with-coverage -s tests/server-dnsserver.json -c tests/client-multi-server-ip.json run_test python tests/test.py --with-coverage -s tests/server-multi-passwd.json -c tests/server-multi-passwd-client-side.json run_test python tests/test.py --with-coverage -c tests/workers.json run_test python tests/test.py --with-coverage -c tests/rc4-md5-ota.json # travis-ci not support IPv6 # run_test python tests/test.py --with-coverage -s tests/ipv6.json -c tests/ipv6-client-side.json run_test python tests/test.py --with-coverage -b "-m rc4-md5 -k testrc4 -s 127.0.0.1 -p 8388 -q" -a "-m rc4-md5 -k testrc4 -s 127.0.0.1 -p 8388 -l 1081 -vv" run_test python tests/test.py --with-coverage -b "-m aes-256-cfb -k testrc4 -s 127.0.0.1 -p 8388 --workers 1" -a "-m aes-256-cfb -k testrc4 -s 127.0.0.1 -p 8388 -l 1081 -t 30 -qq -b 127.0.0.1" run_test python tests/test.py --with-coverage --should-fail --url="http://127.0.0.1/" -b "-m aes-256-cfb -k testrc4 -s 127.0.0.1 -p 8388 --forbidden-ip=127.0.0.1,::1,8.8.8.8" -a "-m aes-256-cfb -k testrc4 -s 127.0.0.1 -p 8388 -l 1081 -t 30 -b 127.0.0.1" # test if DNS works run_test python tests/test.py --with-coverage -c tests/aes.json --url="https://clients1.google.com/generate_204" # test localhost is in the forbidden list by default run_test python tests/test.py --with-coverage --should-fail --tcp-only --url="http://127.0.0.1/" -b "-m aes-256-cfb -k testrc4 -s 127.0.0.1 -p 8388" -a "-m aes-256-cfb -k testrc4 -s 127.0.0.1 -p 8388 -l 1081 -t 30 -b 127.0.0.1" # test localhost is available when forbidden list is empty run_test python tests/test.py --with-coverage --tcp-only --url="http://127.0.0.1/" -b "-m aes-256-cfb -k testrc4 -s 127.0.0.1 -p 8388 --forbidden-ip=" -a "-m aes-256-cfb -k testrc4 -s 127.0.0.1 -p 8388 -l 1081 -t 30 -b 127.0.0.1" if [ -f /proc/sys/net/ipv4/tcp_fastopen ] ; then if [ 3 -eq `cat /proc/sys/net/ipv4/tcp_fastopen` ] ; then # we have to run it twice: # the first time there's no syn cookie # the second time there is syn cookie run_test python tests/test.py --with-coverage -c tests/fastopen.json run_test python tests/test.py --with-coverage -c tests/fastopen.json fi fi run_test tests/test_large_file.sh if [ "a$JENKINS" != "a1" ] ; then # jenkins blocked SIGQUIT with sigprocmask(), we have to skip this test on Jenkins run_test tests/test_graceful_restart.sh fi run_test tests/test_udp_src.sh run_test tests/test_command.sh coverage combine && coverage report --include=shadowsocks/* rm -rf htmlcov rm -rf tmp coverage html --include=shadowsocks/* coverage report --include=shadowsocks/* | tail -n1 | rev | cut -d' ' -f 1 | rev > /tmp/shadowsocks-coverage exit $result shadowsocks/tests/test.py0000755000175000017500000001163712774125037015124 0ustar shellshell#!/usr/bin/python # -*- coding: utf-8 -*- # # Copyright 2015 clowwindy # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from __future__ import absolute_import, division, print_function, \ with_statement import sys import os import signal import select import time import argparse from subprocess import Popen, PIPE python = ['python'] default_url = 'http://localhost/' parser = argparse.ArgumentParser(description='test Shadowsocks') parser.add_argument('-c', '--client-conf', type=str, default=None) parser.add_argument('-s', '--server-conf', type=str, default=None) parser.add_argument('-a', '--client-args', type=str, default=None) parser.add_argument('-b', '--server-args', type=str, default=None) parser.add_argument('--with-coverage', action='store_true', default=None) parser.add_argument('--should-fail', action='store_true', default=None) parser.add_argument('--tcp-only', action='store_true', default=None) parser.add_argument('--url', type=str, default=default_url) parser.add_argument('--dns', type=str, default='8.8.8.8') config = parser.parse_args() if config.with_coverage: python = ['coverage', 'run', '-a'] client_args = python + ['shadowsocks/local.py', '-v'] server_args = python + ['shadowsocks/server.py', '-v'] if config.client_conf: client_args.extend(['-c', config.client_conf]) if config.server_conf: server_args.extend(['-c', config.server_conf]) else: server_args.extend(['-c', config.client_conf]) if config.client_args: client_args.extend(config.client_args.split()) if config.server_args: server_args.extend(config.server_args.split()) else: server_args.extend(config.client_args.split()) if config.url == default_url: server_args.extend(['--forbidden-ip', '']) p1 = Popen(server_args, stdin=PIPE, stdout=PIPE, stderr=PIPE, close_fds=True) p2 = Popen(client_args, stdin=PIPE, stdout=PIPE, stderr=PIPE, close_fds=True) p3 = None p4 = None p3_fin = False p4_fin = False # 1 shadowsocks started # 2 curl started # 3 curl finished # 4 dig started # 5 dig finished stage = 1 try: local_ready = False server_ready = False fdset = [p1.stdout, p2.stdout, p1.stderr, p2.stderr] while True: r, w, e = select.select(fdset, [], fdset) if e: break for fd in r: line = fd.readline() if not line: if stage == 2 and fd == p3.stdout: stage = 3 if stage == 4 and fd == p4.stdout: stage = 5 if bytes != str: line = str(line, 'utf8') sys.stderr.write(line) if line.find('starting local') >= 0: local_ready = True if line.find('starting server') >= 0: server_ready = True if stage == 1: time.sleep(2) p3 = Popen(['curl', config.url, '-v', '-L', '--socks5-hostname', '127.0.0.1:1081', '-m', '15', '--connect-timeout', '10'], stdin=PIPE, stdout=PIPE, stderr=PIPE, close_fds=True) if p3 is not None: fdset.append(p3.stdout) fdset.append(p3.stderr) stage = 2 else: sys.exit(1) if stage == 3 and p3 is not None: fdset.remove(p3.stdout) fdset.remove(p3.stderr) r = p3.wait() if config.should_fail: if r == 0: sys.exit(1) else: if r != 0: sys.exit(1) if config.tcp_only: break p4 = Popen(['socksify', 'dig', '@%s' % config.dns, 'www.google.com'], stdin=PIPE, stdout=PIPE, stderr=PIPE, close_fds=True) if p4 is not None: fdset.append(p4.stdout) fdset.append(p4.stderr) stage = 4 else: sys.exit(1) if stage == 5: r = p4.wait() if config.should_fail: if r == 0: sys.exit(1) print('test passed (expecting failure)') else: if r != 0: sys.exit(1) print('test passed') break finally: for p in [p1, p2]: try: os.kill(p.pid, signal.SIGINT) os.waitpid(p.pid, 0) except OSError: pass shadowsocks/tests/aes-cfb8.json0000644000175000017500000000033412774125037016043 0ustar shellshell{ "server":"127.0.0.1", "server_port":8388, "local_port":1081, "password":"aes_password", "timeout":60, "method":"aes-256-cfb8", "local_address":"127.0.0.1", "fast_open":false } shadowsocks/tests/workers.json0000644000175000017500000000033212562121324016133 0ustar shellshell{ "server":"127.0.0.1", "server_port":8388, "local_port":1081, "password":"workers_password", "timeout":60, "method":"aes-256-cfb", "local_address":"127.0.0.1", "workers": 4 } shadowsocks/tests/aes-ctr.json0000644000175000017500000000033312774125037016010 0ustar shellshell{ "server":"127.0.0.1", "server_port":8388, "local_port":1081, "password":"aes_password", "timeout":60, "method":"aes-256-ctr", "local_address":"127.0.0.1", "fast_open":false } shadowsocks/tests/chacha20-ietf.json0000644000175000017500000000034112774125037016747 0ustar shellshell{ "server":"127.0.0.1", "server_port":8388, "local_port":1081, "password":"salsa20_password", "timeout":60, "method":"chacha20-ietf", "local_address":"127.0.0.1", "fast_open":false } shadowsocks/tests/aes-cfb1.json0000644000175000017500000000033412774125037016034 0ustar shellshell{ "server":"127.0.0.1", "server_port":8388, "local_port":1081, "password":"aes_password", "timeout":60, "method":"aes-256-cfb1", "local_address":"127.0.0.1", "fast_open":false } shadowsocks/tests/test_udp_src.py0000644000175000017500000000470212774125037016633 0ustar shellshell#!/usr/bin/python import socket import socks SERVER_IP = '127.0.0.1' SERVER_PORT = 1081 if __name__ == '__main__': # Test 1: same source port IPv4 sock_out = socks.socksocket(socket.AF_INET, socket.SOCK_DGRAM, socket.SOL_UDP) sock_out.set_proxy(socks.SOCKS5, SERVER_IP, SERVER_PORT) sock_out.bind(('127.0.0.1', 9000)) sock_in1 = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.SOL_UDP) sock_in2 = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.SOL_UDP) sock_in1.bind(('127.0.0.1', 9001)) sock_in2.bind(('127.0.0.1', 9002)) sock_out.sendto(b'data', ('127.0.0.1', 9001)) result1 = sock_in1.recvfrom(8) sock_out.sendto(b'data', ('127.0.0.1', 9002)) result2 = sock_in2.recvfrom(8) sock_out.close() sock_in1.close() sock_in2.close() # make sure they're from the same source port assert result1 == result2 """ # Test 2: same source port IPv6 # try again from the same port but IPv6 sock_out = socks.socksocket(socket.AF_INET, socket.SOCK_DGRAM, socket.SOL_UDP) sock_out.set_proxy(socks.SOCKS5, SERVER_IP, SERVER_PORT) sock_out.bind(('127.0.0.1', 9000)) sock_in1 = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM, socket.SOL_UDP) sock_in2 = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM, socket.SOL_UDP) sock_in1.bind(('::1', 9001)) sock_in2.bind(('::1', 9002)) sock_out.sendto(b'data', ('::1', 9001)) result1 = sock_in1.recvfrom(8) sock_out.sendto(b'data', ('::1', 9002)) result2 = sock_in2.recvfrom(8) sock_out.close() sock_in1.close() sock_in2.close() # make sure they're from the same source port assert result1 == result2 # Test 3: different source ports IPv6 sock_out = socks.socksocket(socket.AF_INET, socket.SOCK_DGRAM, socket.SOL_UDP) sock_out.set_proxy(socks.SOCKS5, SERVER_IP, SERVER_PORT) sock_out.bind(('127.0.0.1', 9003)) sock_in1 = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM, socket.SOL_UDP) sock_in1.bind(('::1', 9001)) sock_out.sendto(b'data', ('::1', 9001)) result3 = sock_in1.recvfrom(8) # make sure they're from different source ports assert result1 != result3 sock_out.close() sock_in1.close() """ shadowsocks/tests/ipv6-client-side.json0000644000175000017500000000032512774125037017535 0ustar shellshell{ "server":"::1", "server_port":8388, "local_port":1081, "password":"aes_password", "timeout":60, "method":"aes-256-cfb", "local_address":"127.0.0.1", "fast_open":false } shadowsocks/tests/socksify/0000755000175000017500000000000012774125037015412 5ustar shellshellshadowsocks/tests/socksify/install.sh0000755000175000017500000000073512774125037017424 0ustar shellshell#!/bin/bash if [ ! -d dante-1.4.0 ] || [ ! -d dante-1.4.0/configure ]; then rm dante-1.4.0 -rf #wget http://www.inet.no/dante/files/dante-1.4.0.tar.gz || exit 1 wget https://codeload.github.com/notpeter/dante/tar.gz/dante-1.4.0 -O dante-1.4.0.tar.gz || exit 1 tar xf dante-1.4.0.tar.gz || exit 1 # mv dante-dante-1.4.0 dante-1.4.0 fi pushd dante-1.4.0 ./configure && make -j4 && make install || exit 1 popd cp tests/socksify/socks.conf /etc/ || exit 1 shadowsocks/tests/socksify/socks.conf0000644000175000017500000000017712562121324017376 0ustar shellshellroute { from: 0.0.0.0/0 to: 0.0.0.0/0 via: 127.0.0.1 port = 1081 proxyprotocol: socks_v5 method: none }shadowsocks/tests/server-multi-passwd-performance.json0000644000175000017500000017520212774125037022716 0ustar shellshell{ "server": "127.0.0.1", "local_port": 1081, "port_password": { "7582": "aes_password", "7672": "aes_password", "8923": "aes_password", "8502": "aes_password", "8282": "aes_password", "8871": "aes_password", "7732": "aes_password", "8671": "aes_password", "7018": "aes_password", "8492": "aes_password", "7748": "aes_password", "8992": "aes_password", "8246": "aes_password", "7127": "aes_password", "7775": "aes_password", "8542": "aes_password", "8488": "aes_password", "7515": "aes_password", "7659": "aes_password", "8892": "aes_password", "8028": "aes_password", "7276": "aes_password", "7959": "aes_password", "7457": "aes_password", "8635": "aes_password", "7592": "aes_password", "8764": "aes_password", "8861": "aes_password", "8842": "aes_password", "8135": "aes_password", "8140": "aes_password", "8376": "aes_password", "7733": "aes_password", "8174": "aes_password", "7265": "aes_password", "8314": "aes_password", "8772": "aes_password", "8991": "aes_password", "7183": "aes_password", "7067": "aes_password", "7730": "aes_password", "8694": "aes_password", "7629": "aes_password", "7041": "aes_password", "8507": "aes_password", "8112": "aes_password", "8491": "aes_password", "7273": "aes_password", "8811": "aes_password", "8947": "aes_password", "8612": "aes_password", "8134": "aes_password", "8422": "aes_password", "8970": "aes_password", "7051": "aes_password", "8158": "aes_password", "8934": "aes_password", "7579": "aes_password", "7140": "aes_password", "8448": "aes_password", "8536": "aes_password", "7554": "aes_password", "8168": "aes_password", "8307": "aes_password", "8946": "aes_password", "7872": "aes_password", "7330": "aes_password", "8208": "aes_password", "7955": "aes_password", "8597": "aes_password", "7025": "aes_password", "7086": "aes_password", "7534": "aes_password", "7311": "aes_password", "7758": "aes_password", "7103": "aes_password", "8408": "aes_password", "7688": "aes_password", "7073": "aes_password", "8963": "aes_password", "8578": "aes_password", "7735": "aes_password", "7657": "aes_password", "7763": "aes_password", "7680": "aes_password", "8627": "aes_password", "8205": "aes_password", "7188": "aes_password", "8743": "aes_password", "8472": "aes_password", "8823": "aes_password", "7167": "aes_password", "7008": "aes_password", "7601": "aes_password", "8603": "aes_password", "8467": "aes_password", "8803": "aes_password", "7014": "aes_password", "7233": "aes_password", "7199": "aes_password", "7192": "aes_password", "7329": "aes_password", "8031": "aes_password", "8584": "aes_password", "8041": "aes_password", "8962": "aes_password", "8824": "aes_password", "8079": "aes_password", "8049": "aes_password", "7743": "aes_password", "8035": "aes_password", "8212": "aes_password", "8452": "aes_password", "8484": "aes_password", "8232": "aes_password", "8444": "aes_password", "8410": "aes_password", "7110": "aes_password", "7505": "aes_password", "8856": "aes_password", "8293": "aes_password", "7967": "aes_password", "8267": "aes_password", "7772": "aes_password", "8864": "aes_password", "8518": "aes_password", "7520": "aes_password", "7976": "aes_password", "8407": "aes_password", "8971": "aes_password", "7389": "aes_password", "7510": "aes_password", "7373": "aes_password", "8013": "aes_password", "8310": "aes_password", "7028": "aes_password", "7874": "aes_password", "7356": "aes_password", "7729": "aes_password", "7427": "aes_password", "8312": "aes_password", "7721": "aes_password", "7020": "aes_password", "8231": "aes_password", "8188": "aes_password", "8869": "aes_password", "8595": "aes_password", "8022": "aes_password", "8911": "aes_password", "7957": "aes_password", "7141": "aes_password", "7157": "aes_password", "8471": "aes_password", "8157": "aes_password", "8795": "aes_password", "7087": "aes_password", "7470": "aes_password", "7266": "aes_password", "8072": "aes_password", "8346": "aes_password", "7163": "aes_password", "8954": "aes_password", "7046": "aes_password", "7856": "aes_password", "7883": "aes_password", "8198": "aes_password", "8443": "aes_password", "8496": "aes_password", "8900": "aes_password", "8354": "aes_password", "8758": "aes_password", "8287": "aes_password", "7574": "aes_password", "8316": "aes_password", "7539": "aes_password", "8460": "aes_password", "7616": "aes_password", "8599": "aes_password", "7795": "aes_password", "7079": "aes_password", "8468": "aes_password", "8462": "aes_password", "8645": "aes_password", "8347": "aes_password", "8776": "aes_password", "7072": "aes_password", "8781": "aes_password", "7765": "aes_password", "8048": "aes_password", "7401": "aes_password", "8718": "aes_password", "8712": "aes_password", "7801": "aes_password", "8673": "aes_password", "8791": "aes_password", "7567": "aes_password", "7003": "aes_password", "7358": "aes_password", "8916": "aes_password", "7021": "aes_password", "7487": "aes_password", "7499": "aes_password", "7108": "aes_password", "7501": "aes_password", "7313": "aes_password", "8887": "aes_password", "8724": "aes_password", "7376": "aes_password", "7153": "aes_password", "7377": "aes_password", "8426": "aes_password", "8831": "aes_password", "7380": "aes_password", "7958": "aes_password", "8250": "aes_password", "8155": "aes_password", "8435": "aes_password", "7630": "aes_password", "8026": "aes_password", "7533": "aes_password", "8704": "aes_password", "8411": "aes_password", "7645": "aes_password", "7937": "aes_password", "7488": "aes_password", "8750": "aes_password", "7196": "aes_password", "8714": "aes_password", "8677": "aes_password", "7475": "aes_password", "7625": "aes_password", "8234": "aes_password", "8870": "aes_password", "7147": "aes_password", "8417": "aes_password", "7362": "aes_password", "7341": "aes_password", "8896": "aes_password", "8423": "aes_password", "8884": "aes_password", "7220": "aes_password", "8615": "aes_password", "8719": "aes_password", "8575": "aes_password", "8891": "aes_password", "8210": "aes_password", "8289": "aes_password", "7406": "aes_password", "7692": "aes_password", "7518": "aes_password", "7244": "aes_password", "8561": "aes_password", "7325": "aes_password", "7306": "aes_password", "8266": "aes_password", "8136": "aes_password", "7991": "aes_password", "8844": "aes_password", "8259": "aes_password", "7749": "aes_password", "7238": "aes_password", "7952": "aes_password", "8528": "aes_password", "8477": "aes_password", "7555": "aes_password", "7544": "aes_password", "7478": "aes_password", "7112": "aes_password", "8931": "aes_password", "8082": "aes_password", "8189": "aes_password", "8461": "aes_password", "7740": "aes_password", "8633": "aes_password", "8322": "aes_password", "7093": "aes_password", "8415": "aes_password", "8093": "aes_password", "8682": "aes_password", "7860": "aes_password", "8580": "aes_password", "8503": "aes_password", "7794": "aes_password", "8394": "aes_password", "8487": "aes_password", "8053": "aes_password", "7277": "aes_password", "7241": "aes_password", "8430": "aes_password", "8428": "aes_password", "7805": "aes_password", "8393": "aes_password", "7711": "aes_password", "7807": "aes_password", "7600": "aes_password", "8403": "aes_password", "8141": "aes_password", "8937": "aes_password", "7559": "aes_password", "7834": "aes_password", "8837": "aes_password", "7823": "aes_password", "8928": "aes_password", "7083": "aes_password", "7590": "aes_password", "8806": "aes_password", "7130": "aes_password", "7929": "aes_password", "8684": "aes_password", "8195": "aes_password", "8706": "aes_password", "7044": "aes_password", "7403": "aes_password", "8890": "aes_password", "8364": "aes_password", "8206": "aes_password", "7882": "aes_password", "8522": "aes_password", "8958": "aes_password", "7429": "aes_password", "8586": "aes_password", "8330": "aes_password", "8922": "aes_password", "7940": "aes_password", "7379": "aes_password", "8955": "aes_password", "7168": "aes_password", "7294": "aes_password", "7949": "aes_password", "7384": "aes_password", "8832": "aes_password", "7423": "aes_password", "8763": "aes_password", "7148": "aes_password", "7029": "aes_password", "7969": "aes_password", "8190": "aes_password", "8807": "aes_password", "8889": "aes_password", "7750": "aes_password", "7348": "aes_password", "7193": "aes_password", "7459": "aes_password", "7507": "aes_password", "7536": "aes_password", "8734": "aes_password", "7174": "aes_password", "8400": "aes_password", "8630": "aes_password", "7128": "aes_password", "7261": "aes_password", "7527": "aes_password", "7232": "aes_password", "7843": "aes_password", "7326": "aes_password", "8639": "aes_password", "7830": "aes_password", "7981": "aes_password", "8404": "aes_password", "8888": "aes_password", "7920": "aes_password", "7410": "aes_password", "7204": "aes_password", "8382": "aes_password", "8355": "aes_password", "7700": "aes_password", "7606": "aes_password", "7372": "aes_password", "8106": "aes_password", "8160": "aes_password", "7511": "aes_password", "8204": "aes_password", "8732": "aes_password", "8751": "aes_password", "7727": "aes_password", "7137": "aes_password", "8311": "aes_password", "8587": "aes_password", "7336": "aes_password", "7674": "aes_password", "8009": "aes_password", "7230": "aes_password", "7383": "aes_password", "8867": "aes_password", "7260": "aes_password", "7497": "aes_password", "7390": "aes_password", "8821": "aes_password", "7274": "aes_password", "7285": "aes_password", "7857": "aes_password", "8137": "aes_password", "7114": "aes_password", "7979": "aes_password", "8726": "aes_password", "7227": "aes_password", "7714": "aes_password", "8012": "aes_password", "7613": "aes_password", "8876": "aes_password", "7622": "aes_password", "8582": "aes_password", "7120": "aes_password", "7104": "aes_password", "8785": "aes_password", "8096": "aes_password", "8129": "aes_password", "8481": "aes_password", "8695": "aes_password", "7473": "aes_password", "8163": "aes_password", "8357": "aes_password", "8501": "aes_password", "7177": "aes_password", "7931": "aes_password", "8220": "aes_password", "7399": "aes_password", "7956": "aes_password", "8801": "aes_password", "7719": "aes_password", "8042": "aes_password", "7433": "aes_password", "7827": "aes_password", "8377": "aes_password", "7745": "aes_password", "7302": "aes_password", "8399": "aes_password", "7766": "aes_password", "8720": "aes_password", "8685": "aes_password", "8558": "aes_password", "7796": "aes_password", "7319": "aes_password", "7170": "aes_password", "7342": "aes_password", "7191": "aes_password", "8747": "aes_password", "7231": "aes_password", "7817": "aes_password", "7352": "aes_password", "7057": "aes_password", "8177": "aes_password", "7221": "aes_password", "7297": "aes_password", "7686": "aes_password", "7082": "aes_password", "8414": "aes_password", "8529": "aes_password", "7257": "aes_password", "7300": "aes_password", "7159": "aes_password", "8901": "aes_password", "7578": "aes_password", "8479": "aes_password", "7225": "aes_password", "8286": "aes_password", "7182": "aes_password", "8194": "aes_password", "8850": "aes_password", "7847": "aes_password", "7665": "aes_password", "8011": "aes_password", "7702": "aes_password", "8638": "aes_password", "7116": "aes_password", "7301": "aes_password", "8936": "aes_password", "8661": "aes_password", "8333": "aes_password", "8025": "aes_password", "7368": "aes_password", "8634": "aes_password", "7154": "aes_password", "8365": "aes_password", "8736": "aes_password", "8478": "aes_password", "7436": "aes_password", "7411": "aes_password", "7913": "aes_password", "8236": "aes_password", "8854": "aes_password", "8722": "aes_password", "8227": "aes_password", "7757": "aes_password", "8835": "aes_password", "8651": "aes_password", "7417": "aes_password", "7877": "aes_password", "7200": "aes_password", "8622": "aes_password", "7004": "aes_password", "8845": "aes_password", "8159": "aes_password", "8741": "aes_password", "7106": "aes_password", "8897": "aes_password", "7968": "aes_password", "7047": "aes_password", "8860": "aes_password", "8777": "aes_password", "7597": "aes_password", "8859": "aes_password", "7117": "aes_password", "8178": "aes_password", "8642": "aes_password", "7246": "aes_password", "7557": "aes_password", "7965": "aes_password", "7699": "aes_password", "8658": "aes_password", "7442": "aes_password", "8272": "aes_password", "7821": "aes_password", "7893": "aes_password", "8665": "aes_password", "8499": "aes_password", "7897": "aes_password", "7173": "aes_password", "7007": "aes_password", "8219": "aes_password", "8040": "aes_password", "7571": "aes_password", "7526": "aes_password", "8203": "aes_password", "7810": "aes_password", "8974": "aes_password", "8200": "aes_password", "7778": "aes_password", "7987": "aes_password", "7701": "aes_password", "7443": "aes_password", "7798": "aes_password", "8995": "aes_password", "8473": "aes_password", "7132": "aes_password", "7262": "aes_password", "7720": "aes_password", "7282": "aes_password", "8066": "aes_password", "7006": "aes_password", "7197": "aes_password", "7815": "aes_password", "7933": "aes_password", "8138": "aes_password", "8418": "aes_password", "7365": "aes_password", "7786": "aes_password", "7891": "aes_password", "8317": "aes_password", "8207": "aes_password", "8416": "aes_password", "7448": "aes_password", "8843": "aes_password", "7371": "aes_password", "8780": "aes_password", "7989": "aes_password", "8043": "aes_password", "7363": "aes_password", "7550": "aes_password", "8678": "aes_password", "7837": "aes_password", "8302": "aes_password", "7907": "aes_password", "8865": "aes_password", "8153": "aes_password", "8090": "aes_password", "7268": "aes_password", "8292": "aes_password", "7919": "aes_password", "8131": "aes_password", "8815": "aes_password", "8154": "aes_password", "7777": "aes_password", "8369": "aes_password", "8929": "aes_password", "7670": "aes_password", "7484": "aes_password", "8353": "aes_password", "8017": "aes_password", "8833": "aes_password", "8001": "aes_password", "8058": "aes_password", "7918": "aes_password", "7694": "aes_password", "7485": "aes_password", "8592": "aes_password", "7584": "aes_password", "8527": "aes_password", "8285": "aes_password", "8264": "aes_password", "8879": "aes_password", "7944": "aes_password", "7000": "aes_password", "7187": "aes_password", "7039": "aes_password", "7769": "aes_password", "8063": "aes_password", "8701": "aes_password", "7432": "aes_password", "8594": "aes_password", "7052": "aes_password", "7369": "aes_password", "8474": "aes_password", "7709": "aes_password", "8296": "aes_password", "8278": "aes_password", "8395": "aes_password", "8674": "aes_password", "8733": "aes_password", "7890": "aes_password", "7080": "aes_password", "7528": "aes_password", "7782": "aes_password", "7466": "aes_password", "7903": "aes_password", "8105": "aes_password", "7144": "aes_password", "8069": "aes_password", "8254": "aes_password", "8573": "aes_password", "7787": "aes_password", "7577": "aes_password", "8918": "aes_password", "8767": "aes_password", "7611": "aes_password", "8233": "aes_password", "7802": "aes_password", "7129": "aes_password", "8968": "aes_password", "8217": "aes_password", "8176": "aes_password", "8027": "aes_password", "7941": "aes_password", "8070": "aes_password", "8697": "aes_password", "8798": "aes_password", "8553": "aes_password", "8510": "aes_password", "7254": "aes_password", "7386": "aes_password", "8800": "aes_password", "7712": "aes_password", "7844": "aes_password", "7535": "aes_password", "8273": "aes_password", "8875": "aes_password", "8675": "aes_password", "7396": "aes_password", "7649": "aes_password", "8623": "aes_password", "7186": "aes_password", "8125": "aes_password", "7734": "aes_password", "8275": "aes_password", "7521": "aes_password", "7135": "aes_password", "8546": "aes_password", "7867": "aes_password", "8989": "aes_password", "8787": "aes_password", "8225": "aes_password", "8457": "aes_password", "7405": "aes_password", "7588": "aes_password", "7854": "aes_password", "7789": "aes_password", "8133": "aes_password", "7641": "aes_password", "8535": "aes_password", "7849": "aes_password", "7594": "aes_password", "8313": "aes_password", "8097": "aes_password", "8030": "aes_password", "8737": "aes_password", "8260": "aes_password", "8950": "aes_password", "7249": "aes_password", "7644": "aes_password", "7912": "aes_password", "8979": "aes_password", "8998": "aes_password", "8731": "aes_password", "8662": "aes_password", "7983": "aes_password", "7035": "aes_password", "7841": "aes_password", "8600": "aes_password", "7228": "aes_password", "7071": "aes_password", "8080": "aes_password", "8713": "aes_password", "7210": "aes_password", "7935": "aes_password", "8057": "aes_password", "8242": "aes_password", "7084": "aes_password", "7070": "aes_password", "7494": "aes_password", "8451": "aes_password", "8626": "aes_password", "8618": "aes_password", "7741": "aes_password", "7118": "aes_password", "7387": "aes_password", "7715": "aes_password", "8143": "aes_password", "7668": "aes_password", "7716": "aes_password", "8101": "aes_password", "7234": "aes_password", "8021": "aes_password", "7156": "aes_password", "8392": "aes_password", "7900": "aes_password", "7055": "aes_password", "8566": "aes_password", "7869": "aes_password", "7864": "aes_password", "8265": "aes_password", "8216": "aes_password", "7738": "aes_password", "7467": "aes_password", "8447": "aes_password", "8564": "aes_password", "7767": "aes_password", "7811": "aes_password", "7898": "aes_password", "8182": "aes_password", "8065": "aes_password", "7561": "aes_password", "8545": "aes_password", "7253": "aes_password", "8173": "aes_password", "7922": "aes_password", "7951": "aes_password", "7612": "aes_password", "7324": "aes_password", "7549": "aes_password", "7858": "aes_password", "8655": "aes_password", "8211": "aes_password", "8469": "aes_password", "7298": "aes_password", "8380": "aes_password", "7394": "aes_password", "7089": "aes_password", "8060": "aes_password", "7591": "aes_password", "7542": "aes_password", "7540": "aes_password", "7456": "aes_password", "7768": "aes_password", "8489": "aes_password", "8089": "aes_password", "7838": "aes_password", "8644": "aes_password", "8344": "aes_password", "7739": "aes_password", "7984": "aes_password", "7909": "aes_password", "8517": "aes_password", "8056": "aes_password", "8297": "aes_password", "8647": "aes_password", "8334": "aes_password", "7056": "aes_password", "7164": "aes_password", "8878": "aes_password", "7816": "aes_password", "7444": "aes_password", "8996": "aes_password", "8359": "aes_password", "7901": "aes_password", "8127": "aes_password", "7424": "aes_password", "8116": "aes_password", "7354": "aes_password", "8919": "aes_password", "7214": "aes_password", "7589": "aes_password", "8982": "aes_password", "8244": "aes_password", "8295": "aes_password", "7669": "aes_password", "7562": "aes_password", "8470": "aes_password", "7474": "aes_password", "7345": "aes_password", "7799": "aes_password", "8269": "aes_password", "8213": "aes_password", "8786": "aes_password", "7482": "aes_password", "8261": "aes_password", "8755": "aes_password", "8882": "aes_password", "7166": "aes_password", "7428": "aes_password", "8766": "aes_password", "7458": "aes_password", "8372": "aes_password", "8045": "aes_password", "8185": "aes_password", "7602": "aes_password", "8373": "aes_password", "7826": "aes_password", "8249": "aes_password", "8881": "aes_password", "8830": "aes_password", "8044": "aes_password", "7563": "aes_password", "7509": "aes_password", "7290": "aes_password", "7019": "aes_password", "8454": "aes_password", "8637": "aes_password", "7876": "aes_password", "8500": "aes_password", "8226": "aes_password", "7744": "aes_password", "7753": "aes_password", "7017": "aes_password", "8362": "aes_password", "7642": "aes_password", "8091": "aes_password", "7512": "aes_password", "7708": "aes_password", "8335": "aes_password", "7292": "aes_password", "8281": "aes_password", "8132": "aes_password", "7683": "aes_password", "7048": "aes_password", "7316": "aes_password", "7011": "aes_password", "8299": "aes_password", "8440": "aes_password", "8147": "aes_password", "8280": "aes_password", "8130": "aes_password", "8303": "aes_password", "8610": "aes_password", "8361": "aes_password", "8339": "aes_password", "8037": "aes_password", "8102": "aes_password", "7845": "aes_password", "7307": "aes_password", "8607": "aes_password", "8523": "aes_password", "7839": "aes_password", "7279": "aes_password", "7321": "aes_password", "8032": "aes_password", "8894": "aes_password", "8166": "aes_password", "7381": "aes_password", "8113": "aes_password", "8139": "aes_password", "8290": "aes_password", "7990": "aes_password", "7388": "aes_password", "8571": "aes_password", "8730": "aes_password", "8441": "aes_password", "8074": "aes_password", "7813": "aes_password", "8555": "aes_password", "8978": "aes_password", "7835": "aes_password", "7323": "aes_password", "7293": "aes_password", "8550": "aes_password", "7617": "aes_password", "8071": "aes_password", "7998": "aes_password", "8115": "aes_password", "7419": "aes_password", "8825": "aes_password", "8412": "aes_password", "8019": "aes_password", "8142": "aes_password", "8186": "aes_password", "8909": "aes_password", "8078": "aes_password", "8952": "aes_password", "8360": "aes_password", "8336": "aes_password", "7953": "aes_password", "7005": "aes_password", "8663": "aes_password", "8866": "aes_password", "7950": "aes_password", "7248": "aes_password", "8519": "aes_password", "8099": "aes_password", "8151": "aes_password", "8959": "aes_password", "7042": "aes_password", "7939": "aes_password", "8064": "aes_password", "8165": "aes_password", "8836": "aes_password", "8965": "aes_password", "7431": "aes_password", "7223": "aes_password", "7999": "aes_password", "8913": "aes_password", "7921": "aes_password", "8883": "aes_password", "8169": "aes_password", "7441": "aes_password", "7469": "aes_password", "7666": "aes_password", "8547": "aes_password", "7993": "aes_password", "7705": "aes_password", "8103": "aes_password", "8524": "aes_password", "8240": "aes_password", "7779": "aes_password", "7344": "aes_password", "7395": "aes_password", "8420": "aes_password", "7287": "aes_password", "7926": "aes_password", "8100": "aes_password", "8874": "aes_password", "7496": "aes_password", "7626": "aes_password", "7784": "aes_password", "7880": "aes_password", "7226": "aes_password", "8405": "aes_password", "7910": "aes_password", "8693": "aes_password", "7997": "aes_password", "8585": "aes_password", "8383": "aes_password", "8429": "aes_password", "7878": "aes_password", "8098": "aes_password", "7288": "aes_password", "8509": "aes_password", "8809": "aes_password", "7973": "aes_password", "7620": "aes_password", "7115": "aes_password", "8445": "aes_password", "8977": "aes_password", "8341": "aes_password", "7859": "aes_password", "8256": "aes_password", "7119": "aes_password", "8442": "aes_password", "8606": "aes_password", "7992": "aes_password", "7270": "aes_password", "8988": "aes_password", "7375": "aes_password", "7747": "aes_password", "7100": "aes_password", "7639": "aes_password", "7296": "aes_password", "7435": "aes_password", "7889": "aes_password", "7636": "aes_password", "7946": "aes_password", "7819": "aes_password", "7978": "aes_password", "7728": "aes_password", "8152": "aes_password", "7660": "aes_password", "7464": "aes_password", "8398": "aes_password", "8804": "aes_password", "7450": "aes_password", "8020": "aes_password", "7988": "aes_password", "7398": "aes_password", "7171": "aes_password", "8315": "aes_password", "7871": "aes_password", "8513": "aes_password", "7250": "aes_password", "8181": "aes_password", "7793": "aes_password", "7414": "aes_password", "7179": "aes_password", "7445": "aes_password", "7259": "aes_password", "8779": "aes_password", "7695": "aes_password", "7149": "aes_password", "8973": "aes_password", "8258": "aes_password", "7291": "aes_password", "8301": "aes_password", "7447": "aes_password", "8276": "aes_password", "8279": "aes_password", "7572": "aes_password", "7146": "aes_password", "7764": "aes_password", "7504": "aes_password", "7604": "aes_password", "7465": "aes_password", "7565": "aes_password", "8976": "aes_password", "8016": "aes_password", "7707": "aes_password", "7627": "aes_password", "8379": "aes_password", "7523": "aes_password", "7145": "aes_password", "7971": "aes_password", "8790": "aes_password", "8475": "aes_password", "7718": "aes_password", "7481": "aes_password", "7650": "aes_password", "7808": "aes_password", "7142": "aes_password", "8816": "aes_password", "7676": "aes_password", "7873": "aes_password", "7885": "aes_password", "7049": "aes_password", "8994": "aes_password", "8863": "aes_password", "7178": "aes_password", "8625": "aes_password", "7237": "aes_password", "7936": "aes_password", "7575": "aes_password", "7673": "aes_password", "7689": "aes_password", "7455": "aes_password", "7780": "aes_password", "8687": "aes_password", "7675": "aes_password", "8431": "aes_password", "7030": "aes_password", "8756": "aes_password", "8318": "aes_password", "7088": "aes_password", "8792": "aes_password", "7454": "aes_password", "7776": "aes_password", "8531": "aes_password", "8829": "aes_password", "8350": "aes_password", "7198": "aes_password", "7438": "aes_password", "8543": "aes_password", "8981": "aes_password", "8915": "aes_password", "8446": "aes_password", "7812": "aes_password", "7570": "aes_password", "7054": "aes_password", "8903": "aes_password", "7213": "aes_password", "8670": "aes_password", "7211": "aes_password", "7327": "aes_password", "7121": "aes_password", "8926": "aes_password", "7430": "aes_password", "8413": "aes_password", "7337": "aes_password", "7771": "aes_password", "7350": "aes_password", "7284": "aes_password", "8252": "aes_password", "7138": "aes_password", "7491": "aes_password", "8774": "aes_password", "8828": "aes_password", "7069": "aes_password", "7545": "aes_password", "7360": "aes_password", "8771": "aes_password", "7915": "aes_password", "8485": "aes_password", "7002": "aes_password", "8838": "aes_password", "7040": "aes_password", "8820": "aes_password", "8033": "aes_password", "7053": "aes_password", "8640": "aes_password", "8552": "aes_password", "8180": "aes_password", "7361": "aes_password", "7560": "aes_password", "8277": "aes_password", "7243": "aes_password", "8999": "aes_password", "7391": "aes_password", "8930": "aes_password", "8957": "aes_password", "8504": "aes_password", "7122": "aes_password", "7139": "aes_password", "8789": "aes_password", "8245": "aes_password", "7493": "aes_password", "8810": "aes_password", "8521": "aes_password", "7317": "aes_password", "7476": "aes_password", "8562": "aes_password", "7724": "aes_password", "8652": "aes_password", "7434": "aes_password", "8110": "aes_password", "8533": "aes_password", "7970": "aes_password", "8745": "aes_password", "7585": "aes_password", "7085": "aes_password", "8421": "aes_password", "8370": "aes_password", "7289": "aes_password", "7996": "aes_password", "8840": "aes_password", "7194": "aes_password", "7256": "aes_password", "8609": "aes_password", "8604": "aes_password", "7062": "aes_password", "7252": "aes_password", "8076": "aes_password", "7647": "aes_password", "8271": "aes_password", "7684": "aes_password", "8539": "aes_password", "8588": "aes_password", "8611": "aes_password", "8654": "aes_password", "7836": "aes_password", "8351": "aes_password", "7962": "aes_password", "8230": "aes_password", "7332": "aes_password", "7573": "aes_password", "7825": "aes_password", "7934": "aes_password", "8572": "aes_password", "8700": "aes_password", "8328": "aes_password", "8046": "aes_password", "7425": "aes_password", "8729": "aes_password", "8886": "aes_password", "7806": "aes_password", "7239": "aes_password", "8601": "aes_password", "8717": "aes_password", "7697": "aes_password", "8352": "aes_password", "8123": "aes_password", "7205": "aes_password", "8298": "aes_password", "7490": "aes_password", "7023": "aes_password", "7964": "aes_password", "8986": "aes_password", "7101": "aes_password", "7634": "aes_password", "7269": "aes_password", "8000": "aes_password", "8172": "aes_password", "7172": "aes_password", "8107": "aes_password", "8486": "aes_password", "8716": "aes_password", "8961": "aes_password", "7685": "aes_password", "7667": "aes_password", "7359": "aes_password", "7804": "aes_password", "7012": "aes_password", "8975": "aes_password", "7598": "aes_password", "7662": "aes_password", "7043": "aes_password", "8331": "aes_password", "8617": "aes_password", "7015": "aes_password", "8390": "aes_password", "8608": "aes_password", "7346": "aes_password", "7331": "aes_password", "8984": "aes_password", "7339": "aes_password", "8465": "aes_password", "7184": "aes_password", "7851": "aes_password", "7868": "aes_password", "7663": "aes_password", "8849": "aes_password", "8667": "aes_password", "7506": "aes_password", "7351": "aes_password", "7109": "aes_password", "7426": "aes_password", "7453": "aes_password", "7737": "aes_password", "7870": "aes_password", "8308": "aes_password", "7543": "aes_password", "7299": "aes_password", "8340": "aes_password", "8243": "aes_password", "7357": "aes_password", "8641": "aes_password", "7553": "aes_password", "8464": "aes_password", "7966": "aes_password", "8581": "aes_password", "7343": "aes_password", "8759": "aes_password", "7631": "aes_password", "7181": "aes_password", "7415": "aes_password", "8187": "aes_password", "8924": "aes_password", "7452": "aes_password", "8797": "aes_password", "8525": "aes_password", "7026": "aes_password", "7322": "aes_password", "7982": "aes_password", "8906": "aes_password", "8342": "aes_password", "7977": "aes_password", "7059": "aes_password", "7986": "aes_password", "7513": "aes_password", "7134": "aes_password", "7462": "aes_password", "7800": "aes_password", "8966": "aes_password", "8453": "aes_password", "7760": "aes_password", "7155": "aes_password", "8632": "aes_password", "7679": "aes_password", "8808": "aes_password", "8508": "aes_password", "7479": "aes_password", "7263": "aes_password", "8648": "aes_password", "7972": "aes_password", "8215": "aes_password", "8948": "aes_password", "7894": "aes_password", "7364": "aes_password", "8520": "aes_password", "8754": "aes_password", "7773": "aes_password", "7255": "aes_password", "7413": "aes_password", "7524": "aes_password", "8511": "aes_password", "8914": "aes_password", "8557": "aes_password", "8085": "aes_password", "7938": "aes_password", "8549": "aes_password", "8839": "aes_password", "7628": "aes_password", "7852": "aes_password", "8788": "aes_password", "8680": "aes_password", "8371": "aes_password", "8378": "aes_password", "7525": "aes_password", "7338": "aes_password", "8969": "aes_password", "8895": "aes_password", "7280": "aes_password", "8827": "aes_password", "7502": "aes_password", "8126": "aes_password", "7208": "aes_password", "8643": "aes_password", "7175": "aes_password", "8183": "aes_password", "7314": "aes_password", "8818": "aes_password", "8039": "aes_password", "7392": "aes_password", "7902": "aes_password", "7576": "aes_password", "8537": "aes_password", "7618": "aes_password", "7203": "aes_password", "8306": "aes_password", "7855": "aes_password", "8778": "aes_password", "7928": "aes_password", "7866": "aes_password", "8483": "aes_password", "7152": "aes_password", "7309": "aes_password", "7222": "aes_password", "8023": "aes_password", "7619": "aes_password", "8985": "aes_password", "7643": "aes_password", "7440": "aes_password", "7646": "aes_password", "7892": "aes_password", "7061": "aes_password", "8941": "aes_password", "7846": "aes_password", "8683": "aes_password", "7829": "aes_password", "8711": "aes_password", "8235": "aes_password", "8463": "aes_password", "7899": "aes_password", "8602": "aes_password", "8114": "aes_password", "7593": "aes_password", "7385": "aes_password", "7624": "aes_password", "8659": "aes_password", "7460": "aes_password", "7917": "aes_password", "8705": "aes_password", "7713": "aes_password", "7875": "aes_password", "7788": "aes_password", "7548": "aes_password", "7076": "aes_password", "8770": "aes_password", "8506": "aes_password", "8769": "aes_password", "8197": "aes_password", "7655": "aes_password", "7247": "aes_password", "8432": "aes_password", "7783": "aes_password", "8327": "aes_password", "8120": "aes_password", "7131": "aes_password", "8268": "aes_password", "7696": "aes_password", "8783": "aes_password", "8406": "aes_password", "8433": "aes_password", "8024": "aes_password", "8005": "aes_password", "7097": "aes_password", "8554": "aes_password", "8967": "aes_password", "8943": "aes_password", "7792": "aes_password", "8003": "aes_password", "8698": "aes_password", "7229": "aes_password", "7687": "aes_password", "8532": "aes_password", "7304": "aes_password", "8122": "aes_password", "8202": "aes_password", "7833": "aes_password", "8679": "aes_password", "7580": "aes_password", "8498": "aes_password", "8345": "aes_password", "8696": "aes_password", "7422": "aes_password", "8650": "aes_password", "8905": "aes_password", "7495": "aes_password", "7075": "aes_password", "8912": "aes_password", "8570": "aes_password", "8847": "aes_password", "8613": "aes_password", "7551": "aes_password", "7150": "aes_password", "7218": "aes_password", "7514": "aes_password", "7195": "aes_password", "8775": "aes_password", "8757": "aes_password", "8251": "aes_password", "7209": "aes_password", "7162": "aes_password", "7564": "aes_password", "8121": "aes_password", "7960": "aes_password", "7656": "aes_password", "7397": "aes_password", "8699": "aes_password", "7421": "aes_password", "8263": "aes_password", "8598": "aes_password", "7009": "aes_password", "7861": "aes_password", "7001": "aes_password", "8744": "aes_password", "8368": "aes_password", "7975": "aes_password", "7165": "aes_password", "8530": "aes_password", "8614": "aes_password", "7258": "aes_password", "8034": "aes_password", "7449": "aes_password", "7932": "aes_password", "7906": "aes_password", "8124": "aes_password", "8526": "aes_password", "8568": "aes_password", "7754": "aes_password", "8228": "aes_password", "8904": "aes_password", "8161": "aes_password", "7547": "aes_password", "7310": "aes_password", "7558": "aes_password", "8338": "aes_password", "8799": "aes_password", "8224": "aes_password", "8563": "aes_password", "7863": "aes_password", "7682": "aes_password", "8944": "aes_password", "7914": "aes_password", "7541": "aes_password", "8953": "aes_password", "7318": "aes_password", "8560": "aes_password", "8972": "aes_password", "7608": "aes_password", "8455": "aes_password", "7468": "aes_password", "7037": "aes_password", "7690": "aes_password", "8814": "aes_password", "8664": "aes_password", "7756": "aes_password", "7569": "aes_password", "7102": "aes_password", "8119": "aes_password", "7161": "aes_password", "7378": "aes_password", "7790": "aes_password", "7638": "aes_password", "7678": "aes_password", "7483": "aes_password", "7063": "aes_password", "8348": "aes_password", "7974": "aes_password", "8596": "aes_password", "8653": "aes_password", "8319": "aes_password", "8933": "aes_password", "8877": "aes_password", "7886": "aes_password", "8459": "aes_password", "8008": "aes_password", "8631": "aes_password", "8482": "aes_password", "8868": "aes_password", "7031": "aes_password", "8036": "aes_password", "7530": "aes_password", "7498": "aes_password", "8497": "aes_password", "8505": "aes_password", "8323": "aes_password", "7566": "aes_password", "7038": "aes_password", "7640": "aes_password", "8690": "aes_password", "8150": "aes_password", "7235": "aes_password", "8921": "aes_password", "8196": "aes_password", "8938": "aes_password", "7531": "aes_password", "8002": "aes_password", "7439": "aes_password", "7451": "aes_password", "7583": "aes_password", "7400": "aes_password", "7242": "aes_password", "8589": "aes_password", "8826": "aes_password", "8050": "aes_password", "8960": "aes_password", "7409": "aes_password", "8873": "aes_password", "8710": "aes_password", "8932": "aes_password", "7751": "aes_password", "8846": "aes_password", "7420": "aes_password", "8817": "aes_password", "7884": "aes_password", "7124": "aes_password", "8047": "aes_password", "8081": "aes_password", "8144": "aes_password", "7477": "aes_password", "7066": "aes_password", "7862": "aes_password", "8389": "aes_password", "8321": "aes_password", "8239": "aes_password", "8987": "aes_password", "7032": "aes_password", "7522": "aes_password", "7691": "aes_password", "8567": "aes_password", "8425": "aes_password", "8128": "aes_password", "8853": "aes_password", "7092": "aes_password", "8624": "aes_password", "7416": "aes_password", "7461": "aes_password", "7283": "aes_password", "7463": "aes_password", "8956": "aes_password", "8574": "aes_password", "8872": "aes_password", "8480": "aes_password", "8384": "aes_password", "8540": "aes_password", "8381": "aes_password", "7064": "aes_password", "8095": "aes_password", "8349": "aes_password", "8855": "aes_password", "7881": "aes_password", "7519": "aes_password", "7961": "aes_password", "8728": "aes_password", "8222": "aes_password", "8326": "aes_password", "8218": "aes_password", "8723": "aes_password", "7068": "aes_password", "7202": "aes_password", "7923": "aes_password", "7347": "aes_password", "8794": "aes_password", "7264": "aes_password", "7437": "aes_password", "8494": "aes_password", "7335": "aes_password", "7717": "aes_password", "7295": "aes_password", "8061": "aes_password", "8702": "aes_password", "7824": "aes_password", "8111": "aes_password", "7176": "aes_password", "8332": "aes_password", "8556": "aes_password", "7818": "aes_password", "8583": "aes_password", "8920": "aes_password", "8006": "aes_password", "8108": "aes_password", "7308": "aes_password", "8708": "aes_password", "7587": "aes_password", "7219": "aes_password", "7367": "aes_password", "8681": "aes_password", "8945": "aes_password", "8337": "aes_password", "7586": "aes_password", "7095": "aes_password", "8880": "aes_password", "8388": "aes_password", "7065": "aes_password", "7045": "aes_password", "7111": "aes_password", "8762": "aes_password", "7703": "aes_password", "8686": "aes_password", "8367": "aes_password", "8796": "aes_password", "7840": "aes_password", "7945": "aes_password", "8329": "aes_password", "7107": "aes_password", "8167": "aes_password", "8862": "aes_password", "8951": "aes_password", "7963": "aes_password", "8073": "aes_password", "8068": "aes_password", "7759": "aes_password", "8175": "aes_password", "7704": "aes_password", "8083": "aes_password", "7206": "aes_password", "8054": "aes_password", "7160": "aes_password", "8727": "aes_password", "7333": "aes_password", "7094": "aes_password", "8753": "aes_password", "7755": "aes_password", "8577": "aes_password", "7099": "aes_password", "7334": "aes_password", "8055": "aes_password", "8397": "aes_password", "8214": "aes_password", "8366": "aes_password", "8541": "aes_password", "7312": "aes_password", "8283": "aes_password", "8052": "aes_password", "7653": "aes_password", "7402": "aes_password", "7224": "aes_password", "7217": "aes_password", "7126": "aes_password", "7710": "aes_password", "8668": "aes_password", "8401": "aes_password", "8628": "aes_password", "8424": "aes_password", "7658": "aes_password", "7471": "aes_password", "8813": "aes_password", "7374": "aes_password", "8067": "aes_password", "8703": "aes_password", "7681": "aes_password", "7382": "aes_password", "8538": "aes_password", "8676": "aes_password", "7033": "aes_password", "7480": "aes_password", "8841": "aes_password", "8834": "aes_password", "8666": "aes_password", "8084": "aes_password", "7925": "aes_password", "7742": "aes_password", "8669": "aes_password", "7532": "aes_password", "8657": "aes_password", "8358": "aes_password", "8590": "aes_password", "7746": "aes_password", "7605": "aes_password", "7905": "aes_password", "8294": "aes_password", "8980": "aes_password", "8735": "aes_password", "8179": "aes_password", "8760": "aes_password", "7036": "aes_password", "7404": "aes_password", "8062": "aes_password", "8201": "aes_password", "7320": "aes_password", "8964": "aes_password", "8402": "aes_password", "7303": "aes_password", "8765": "aes_password", "7803": "aes_password", "8247": "aes_password", "8449": "aes_password", "7278": "aes_password", "7189": "aes_password", "8284": "aes_password", "8848": "aes_password", "7809": "aes_password", "7503": "aes_password", "8419": "aes_password", "7723": "aes_password", "7446": "aes_password", "7556": "aes_password", "8739": "aes_password", "8514": "aes_password", "7486": "aes_password", "7143": "aes_password", "8709": "aes_password", "7105": "aes_password", "7654": "aes_password", "8436": "aes_password", "8761": "aes_password", "7595": "aes_password", "8209": "aes_password", "8029": "aes_password", "7603": "aes_password", "8257": "aes_password", "8649": "aes_password", "7370": "aes_password", "8534": "aes_password", "7267": "aes_password", "8565": "aes_password", "7664": "aes_password", "8551": "aes_password", "7888": "aes_password", "8576": "aes_password", "8893": "aes_password", "8857": "aes_password", "7599": "aes_password", "7568": "aes_password", "7791": "aes_password", "7916": "aes_password", "8885": "aes_password", "7418": "aes_password", "7245": "aes_password", "8170": "aes_password", "8466": "aes_password", "7098": "aes_password", "7489": "aes_password", "8997": "aes_password", "8014": "aes_password", "8805": "aes_password", "7774": "aes_password", "8325": "aes_password", "8262": "aes_password", "8038": "aes_password", "8512": "aes_password", "7546": "aes_password", "7614": "aes_password", "8309": "aes_password", "7123": "aes_password", "8324": "aes_password", "8591": "aes_password", "8255": "aes_password", "7623": "aes_password", "8270": "aes_password", "8715": "aes_password", "8515": "aes_password", "8088": "aes_password", "8375": "aes_password", "7693": "aes_password", "8752": "aes_password", "8059": "aes_password", "7271": "aes_password", "8917": "aes_password", "7500": "aes_password", "8656": "aes_password", "7022": "aes_password", "8812": "aes_password", "8858": "aes_password", "7980": "aes_password", "7090": "aes_password", "7637": "aes_password", "7671": "aes_password", "7904": "aes_password", "8629": "aes_password", "7034": "aes_password", "7207": "aes_password", "7096": "aes_password", "7621": "aes_password", "7770": "aes_password", "8221": "aes_password", "7077": "aes_password", "7661": "aes_password", "7994": "aes_password", "7632": "aes_password", "7848": "aes_password", "8822": "aes_password", "7328": "aes_password", "8438": "aes_password", "8939": "aes_password", "8636": "aes_password", "7995": "aes_password", "8363": "aes_password", "7010": "aes_password", "7212": "aes_password", "8559": "aes_password", "8548": "aes_password", "7275": "aes_password", "8819": "aes_password", "7927": "aes_password", "8291": "aes_password", "7652": "aes_password", "7954": "aes_password", "7832": "aes_password", "8087": "aes_password", "8646": "aes_password", "7736": "aes_password", "7581": "aes_password", "7216": "aes_password", "7190": "aes_password", "7180": "aes_password", "7412": "aes_password", "8569": "aes_password", "8010": "aes_password", "7529": "aes_password", "8118": "aes_password", "8162": "aes_password", "8925": "aes_password", "8490": "aes_password", "7762": "aes_password", "7610": "aes_password", "8439": "aes_password", "7698": "aes_password", "7648": "aes_password", "8742": "aes_password", "8993": "aes_password", "7785": "aes_password", "7609": "aes_password", "7896": "aes_password", "8851": "aes_password", "7731": "aes_password", "8248": "aes_password", "8386": "aes_password", "8621": "aes_password", "7349": "aes_password", "7366": "aes_password", "7169": "aes_password", "7942": "aes_password", "7633": "aes_password", "7781": "aes_password", "8387": "aes_password", "8117": "aes_password", "8782": "aes_password", "8192": "aes_password", "8104": "aes_password", "7615": "aes_password", "7050": "aes_password", "7315": "aes_password", "7725": "aes_password", "7058": "aes_password", "7865": "aes_password", "7133": "aes_password", "8458": "aes_password", "7552": "aes_password", "7761": "aes_password", "8229": "aes_password", "7677": "aes_password", "8619": "aes_password", "8193": "aes_password", "8164": "aes_password", "8493": "aes_password", "7943": "aes_password", "8476": "aes_password", "8427": "aes_password", "7240": "aes_password", "8773": "aes_password", "8749": "aes_password", "8983": "aes_password", "8910": "aes_password", "7722": "aes_password", "8092": "aes_password", "8086": "aes_password", "7911": "aes_password", "8793": "aes_password", "8725": "aes_password", "7201": "aes_password", "7538": "aes_password", "7016": "aes_password", "8396": "aes_password", "7726": "aes_password", "8495": "aes_password", "8300": "aes_password", "7948": "aes_password", "8237": "aes_password", "8802": "aes_password", "7074": "aes_password", "8077": "aes_password", "7516": "aes_password", "8908": "aes_password", "8616": "aes_password", "7814": "aes_password", "8688": "aes_password", "7236": "aes_password", "7537": "aes_password", "8691": "aes_password", "8109": "aes_password", "8223": "aes_password", "7895": "aes_password", "8018": "aes_password", "7820": "aes_password", "7407": "aes_password", "8544": "aes_password", "7651": "aes_password", "8288": "aes_password", "7930": "aes_password", "8004": "aes_password", "8935": "aes_password", "7272": "aes_password", "8707": "aes_password", "8907": "aes_password", "8146": "aes_password", "7850": "aes_password", "8579": "aes_password", "7125": "aes_password", "8692": "aes_password", "7828": "aes_password", "7113": "aes_password", "7027": "aes_password", "8148": "aes_password", "7078": "aes_password", "7508": "aes_password", "8434": "aes_password", "8374": "aes_password", "8356": "aes_password", "8942": "aes_password", "8437": "aes_password", "8902": "aes_password", "7887": "aes_password", "7281": "aes_password", "8593": "aes_password", "7853": "aes_password", "8898": "aes_password", "8927": "aes_password", "8184": "aes_password", "7879": "aes_password", "8409": "aes_password", "8241": "aes_password", "7013": "aes_password", "8145": "aes_password", "8094": "aes_password", "8450": "aes_password", "7353": "aes_password", "7286": "aes_password", "7393": "aes_password", "8852": "aes_password", "8456": "aes_password", "8660": "aes_password", "7908": "aes_password", "7408": "aes_password", "8784": "aes_password", "8990": "aes_password", "8899": "aes_password", "8748": "aes_password", "8385": "aes_password", "7151": "aes_password", "7355": "aes_password", "8051": "aes_password", "7842": "aes_password", "7985": "aes_password", "7081": "aes_password", "8620": "aes_password", "7924": "aes_password", "7305": "aes_password", "8949": "aes_password", "7091": "aes_password", "7947": "aes_password", "8075": "aes_password", "8721": "aes_password", "8605": "aes_password", "8305": "aes_password", "7185": "aes_password", "7831": "aes_password", "8672": "aes_password", "8253": "aes_password", "8274": "aes_password", "8746": "aes_password", "8738": "aes_password", "8015": "aes_password", "8007": "aes_password", "8768": "aes_password", "7492": "aes_password", "7752": "aes_password", "8391": "aes_password", "7596": "aes_password", "7797": "aes_password", "8940": "aes_password", "8304": "aes_password", "7706": "aes_password", "7060": "aes_password", "7251": "aes_password", "7472": "aes_password", "7340": "aes_password", "7607": "aes_password", "7215": "aes_password", "7136": "aes_password", "8171": "aes_password", "8740": "aes_password", "8343": "aes_password", "7024": "aes_password", "7635": "aes_password", "8689": "aes_password", "7158": "aes_password", "8320": "aes_password", "8516": "aes_password", "8238": "aes_password", "8156": "aes_password", "8149": "aes_password", "8199": "aes_password", "7822": "aes_password", "7517": "aes_password", "8191": "aes_password" }, "method": "aes-256-cfb", "timeout": 60 }shadowsocks/tests/test_daemon.sh0000755000175000017500000000311512774125037016421 0ustar shellshell#!/bin/bash function run_test { expected=$1 shift echo "running test: $command $@" $command $@ status=$? if [ $status -ne $expected ]; then echo "exit $status != $expected" exit 1 fi echo "exit status $status == $expected" echo OK return } for module in local server do command="coverage run -a shadowsocks/$module.py" mkdir -p tmp run_test 0 -c tests/aes.json -d stop --pid-file tmp/shadowsocks.pid --log-file tmp/shadowsocks.log run_test 0 -c tests/aes.json -d start --pid-file tmp/shadowsocks.pid --log-file tmp/shadowsocks.log run_test 0 -c tests/aes.json -d stop --pid-file tmp/shadowsocks.pid --log-file tmp/shadowsocks.log run_test 0 -c tests/aes.json -d start --pid-file tmp/shadowsocks.pid --log-file tmp/shadowsocks.log run_test 1 -c tests/aes.json -d start --pid-file tmp/shadowsocks.pid --log-file tmp/shadowsocks.log run_test 0 -c tests/aes.json -d stop --pid-file tmp/shadowsocks.pid --log-file tmp/shadowsocks.log run_test 0 -c tests/aes.json -d start --pid-file tmp/shadowsocks.pid --log-file tmp/shadowsocks.log run_test 0 -c tests/aes.json -d restart --pid-file tmp/shadowsocks.pid --log-file tmp/shadowsocks.log run_test 0 -c tests/aes.json -d stop --pid-file tmp/shadowsocks.pid --log-file tmp/shadowsocks.log run_test 0 -c tests/aes.json -d restart --pid-file tmp/shadowsocks.pid --log-file tmp/shadowsocks.log run_test 0 -c tests/aes.json -d stop --pid-file tmp/shadowsocks.pid --log-file tmp/shadowsocks.log run_test 1 -c tests/aes.json -d start --pid-file tmp/not_exist/shadowsocks.pid --log-file tmp/shadowsocks.log done shadowsocks/tests/server-multi-passwd-table.json0000644000175000017500000000064412562121324021467 0ustar shellshell{ "server": "127.0.0.1", "server_port": 8384, "local_port": 1081, "password": "foobar4", "port_password": { "8381": "foobar1", "8382": "foobar2", "8383": "foobar3", "8384": "foobar4", "8385": "foobar5", "8386": "foobar6", "8387": "foobar7", "8388": "foobar8", "8389": "foobar9" }, "timeout": 60, "method": "table" } shadowsocks/tests/libsodium/0000755000175000017500000000000012774125037015547 5ustar shellshellshadowsocks/tests/libsodium/install.sh0000755000175000017500000000044612774125037017560 0ustar shellshell#!/bin/bash if [ ! -d libsodium-1.0.11 ]; then wget https://github.com/jedisct1/libsodium/releases/download/1.0.11/libsodium-1.0.11.tar.gz || exit 1 tar xf libsodium-1.0.11.tar.gz || exit 1 fi pushd libsodium-1.0.11 ./configure && make -j2 && make install || exit 1 sudo ldconfig popd shadowsocks/tests/fastopen.json0000644000175000017500000000033712562121324016263 0ustar shellshell{ "server":"127.0.0.1", "server_port":8388, "local_port":1081, "password":"fastopen_password", "timeout":60, "method":"aes-256-cfb", "local_address":"127.0.0.1", "fast_open":true } shadowsocks/tests/server-multi-passwd-client-side.json0000644000175000017500000000023412774125037022605 0ustar shellshell{ "server": "127.0.0.1", "server_port": "8385", "local_port": 1081, "password": "foobar5", "timeout": 60, "method": "aes-256-cfb" } shadowsocks/tests/setup_tc.sh0000755000175000017500000000105312774125037015744 0ustar shellshell#!/bin/bash DEV=lo PORT=8388 DELAY=100ms type tc 2> /dev/null && ( tc qdisc add dev $DEV root handle 1: htb tc class add dev $DEV parent 1: classid 1:1 htb rate 2mbps tc class add dev $DEV parent 1:1 classid 1:6 htb rate 2mbps ceil 1mbps prio 0 tc filter add dev $DEV parent 1:0 prio 0 protocol ip handle 6 fw flowid 1:6 tc filter add dev $DEV parent 1:0 protocol ip u32 match ip dport $PORT 0xffff flowid 1:6 tc filter add dev $DEV parent 1:0 protocol ip u32 match ip sport $PORT 0xffff flowid 1:6 tc qdisc show dev lo ) shadowsocks/tests/server-multi-ports.json0000644000175000017500000000025612562121324020247 0ustar shellshell{ "server": "127.0.0.1", "server_port": [8384, 8345, 8346, 8347], "local_port": 1081, "password": "foobar4", "timeout": 60, "method": "aes-256-cfb" } shadowsocks/tests/server-dnsserver.json0000644000175000017500000000040512774125037017771 0ustar shellshell{ "server":"127.0.0.1", "server_port":8388, "local_port":1081, "password":"aes_password", "timeout":60, "method":"aes-256-cfb", "local_address":"127.0.0.1", "fast_open":false, "dns_server": ["8.8.8.8","8.8.4.4"] } shadowsocks/tests/server-multi-passwd-empty.json0000644000175000017500000000020412774125037021540 0ustar shellshell{ "server": "127.0.0.1", "local_port": 1081, "port_password": { }, "timeout": 60, "method": "aes-256-cfb" } shadowsocks/tests/salsa20-ctr.json0000644000175000017500000000033712774125037016511 0ustar shellshell{ "server":"127.0.0.1", "server_port":8388, "local_port":1081, "password":"salsa20_password", "timeout":60, "method":"salsa20-ctr", "local_address":"127.0.0.1", "fast_open":false } shadowsocks/tests/nose_plugin.py0000644000175000017500000000221412774125037016453 0ustar shellshell#!/usr/bin/env python # # Copyright 2015 clowwindy # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import nose from nose.plugins.base import Plugin class ExtensionPlugin(Plugin): name = "ExtensionPlugin" def options(self, parser, env): Plugin.options(self, parser, env) def configure(self, options, config): Plugin.configure(self, options, config) self.enabled = True def wantFile(self, file): return file.endswith('.py') def wantDirectory(self, directory): return True def wantModule(self, file): return True if __name__ == '__main__': nose.main(addplugins=[ExtensionPlugin()]) shadowsocks/tests/server-multi-passwd.json0000644000175000017500000000056612774125037020417 0ustar shellshell{ "server": "127.0.0.1", "local_port": 1081, "port_password": { "8381": "foobar1", "8382": "foobar2", "8383": "foobar3", "8384": "foobar4", "8385": "foobar5", "8386": "foobar6", "8387": "foobar7", "8388": "foobar8", "8389": "foobar9" }, "timeout": 60, "method": "aes-256-cfb" } shadowsocks/README.rst0000644000175000017500000000601612774125037014110 0ustar shellshellAbout shadowsocks-rm --------------- This project is https://github.com/shadowsocks/shadowsocks clone. I JUST fix bug on the original code. Unless it is necessary to have additional features. shadowsocks =========== |PyPI version| |Build Status| |Coverage Status| A fast tunnel proxy that helps you bypass firewalls. Server ------ Install ~~~~~~~ Debian / Ubuntu: :: apt-get install python-pip pip install shadowsocks CentOS: :: yum install python-setuptools && easy_install pip pip install shadowsocks Windows: See `Install Server on Windows `__ Usage ~~~~~ :: ssserver -p 443 -k password -m rc4-md5 To run in the background: :: sudo ssserver -p 443 -k password -m rc4-md5 --user nobody -d start To stop: :: sudo ssserver -d stop To check the log: :: sudo less /var/log/shadowsocks.log Check all the options via ``-h``. You can also use a `Configuration `__ file instead. Client ------ - `Windows `__ / `OS X `__ - `Android `__ / `iOS `__ - `OpenWRT `__ Use GUI clients on your local PC/phones. Check the README of your client for more information. Documentation ------------- You can find all the documentation in the `Wiki `__. License ------- Copyright 2015 clowwindy Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at :: http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Bugs and Issues --------------- - `Troubleshooting `__ - `Issue Tracker `__ - `Mailing list `__ .. |PyPI version| image:: https://img.shields.io/pypi/v/shadowsocks.svg?style=flat :target: https://pypi.python.org/pypi/shadowsocks .. |Build Status| image:: https://img.shields.io/travis/shadowsocks/shadowsocks/master.svg?style=flat :target: https://travis-ci.org/shadowsocks/shadowsocks .. |Coverage Status| image:: https://jenkins.shadowvpn.org/result/shadowsocks :target: https://jenkins.shadowvpn.org/job/Shadowsocks/ws/PYENV/py34/label/linux/htmlcov/index.html shadowsocks/shadowsocks.egg-info/0000755000175000017500000000000012774124740016440 5ustar shellshellshadowsocks/shadowsocks.egg-info/dependency_links.txt0000644000175000017500000000000112774125221022501 0ustar shellshell shadowsocks/shadowsocks.egg-info/top_level.txt0000644000175000017500000000001412774125221021160 0ustar shellshellshadowsocks shadowsocks/shadowsocks.egg-info/SOURCES.txt0000644000175000017500000000126412774125221020322 0ustar shellshellLICENSE MANIFEST.in README.rst setup.py shadowsocks/__init__.py shadowsocks/asyncdns.py shadowsocks/common.py shadowsocks/daemon.py shadowsocks/encrypt.py shadowsocks/eventloop.py shadowsocks/local.py shadowsocks/lru_cache.py shadowsocks/manager.py shadowsocks/server.py shadowsocks/shell.py shadowsocks/tcprelay.py shadowsocks/udprelay.py shadowsocks.egg-info/PKG-INFO shadowsocks.egg-info/SOURCES.txt shadowsocks.egg-info/dependency_links.txt shadowsocks.egg-info/entry_points.txt shadowsocks.egg-info/top_level.txt shadowsocks/crypto/__init__.py shadowsocks/crypto/openssl.py shadowsocks/crypto/rc4_md5.py shadowsocks/crypto/sodium.py shadowsocks/crypto/table.py shadowsocks/crypto/util.pyshadowsocks/shadowsocks.egg-info/PKG-INFO0000644000175000017500000001143112774125221017530 0ustar shellshellMetadata-Version: 1.1 Name: shadowsocks Version: 2.9.0 Summary: A fast tunnel proxy that help you get through firewalls Home-page: https://github.com/shadowsocks/shadowsocks Author: clowwindy Author-email: clowwindy42@gmail.com License: http://www.apache.org/licenses/LICENSE-2.0 Description: About shadowsocks-rm --------------- This project is https://github.com/shadowsocks/shadowsocks clone. I JUST fix bug on the original code. Unless it is necessary to have additional features. shadowsocks =========== |PyPI version| |Build Status| |Coverage Status| A fast tunnel proxy that helps you bypass firewalls. Server ------ Install ~~~~~~~ Debian / Ubuntu: :: apt-get install python-pip pip install shadowsocks CentOS: :: yum install python-setuptools && easy_install pip pip install shadowsocks Windows: See `Install Server on Windows `__ Usage ~~~~~ :: ssserver -p 443 -k password -m rc4-md5 To run in the background: :: sudo ssserver -p 443 -k password -m rc4-md5 --user nobody -d start To stop: :: sudo ssserver -d stop To check the log: :: sudo less /var/log/shadowsocks.log Check all the options via ``-h``. You can also use a `Configuration `__ file instead. Client ------ - `Windows `__ / `OS X `__ - `Android `__ / `iOS `__ - `OpenWRT `__ Use GUI clients on your local PC/phones. Check the README of your client for more information. Documentation ------------- You can find all the documentation in the `Wiki `__. License ------- Copyright 2015 clowwindy Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at :: http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Bugs and Issues --------------- - `Troubleshooting `__ - `Issue Tracker `__ - `Mailing list `__ .. |PyPI version| image:: https://img.shields.io/pypi/v/shadowsocks.svg?style=flat :target: https://pypi.python.org/pypi/shadowsocks .. |Build Status| image:: https://img.shields.io/travis/shadowsocks/shadowsocks/master.svg?style=flat :target: https://travis-ci.org/shadowsocks/shadowsocks .. |Coverage Status| image:: https://jenkins.shadowvpn.org/result/shadowsocks :target: https://jenkins.shadowvpn.org/job/Shadowsocks/ws/PYENV/py34/label/linux/htmlcov/index.html Platform: UNKNOWN Classifier: License :: OSI Approved :: Apache Software License Classifier: Programming Language :: Python :: 2 Classifier: Programming Language :: Python :: 2.6 Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.3 Classifier: Programming Language :: Python :: 3.4 Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Programming Language :: Python :: Implementation :: PyPy Classifier: Topic :: Internet :: Proxy Servers shadowsocks/shadowsocks.egg-info/entry_points.txt0000644000175000017500000000014712774125221021733 0ustar shellshell [console_scripts] sslocal = shadowsocks.local:main ssserver = shadowsocks.server:main shadowsocks/CHANGES0000644000175000017500000001135712774125037013420 0ustar shellshell2.8.2 2015-08-10 - Fix a encoding problem in manager 2.8.1 2015-08-06 - Respond ok to add and remove commands 2.8 2015-08-06 - Add Shadowsocks manager 2.7 2015-08-02 - Optimize speed for multiple ports 2.6.11 2015-07-10 - Fix a compatibility issue in UDP Relay 2.6.10 2015-06-08 - Optimize LRU cache - Refine logging 2.6.9 2015-05-19 - Fix a stability issue on Windows 2.6.8 2015-02-10 - Support multiple server ip on client side - Support --version - Minor fixes 2.6.7 2015-02-02 - Support --user - Support CIDR format in --forbidden-ip - Minor fixes 2.6.6 2015-01-23 - Fix a crash in forbidden list 2.6.5 2015-01-18 - Try both 32 bit and 64 bit dll on Windows 2.6.4 2015-01-14 - Also search lib* when searching libraries 2.6.3 2015-01-12 - Support --forbidden-ip to ban some IP, i.e. localhost - Search OpenSSL and libsodium harder - Now works on OpenWRT 2.6.2 2015-01-03 - Log client IP 2.6.1 2014-12-26 - Fix a problem with TCP Fast Open on local side - Fix sometimes daemon_start returns wrong exit status 2.6 2014-12-21 - Add daemon support 2.5 2014-12-11 - Add salsa20 and chacha20 2.4.3 2014-11-10 - Fix an issue on Python 3 - Fix an issue with IPv6 2.4.2 2014-11-06 - Fix command line arguments on Python 3 - Support table on Python 3 - Fix TCP Fast Open on Python 3 2.4.1 2014-11-01 - Fix setup.py for non-utf8 locales on Python 3 2.4 2014-11-01 - Python 3 support - Performance improvement - Fix LRU cache behavior 2.3.2 2014-10-11 - Fix OpenSSL on Windows 2.3.1 2014-10-09 - Does not require M2Crypto any more 2.3 2014-09-23 - Support CFB1, CFB8 and CTR mode of AES - Do not require password config when using port_password - Use SIGTERM instead of SIGQUIT on Windows 2.2.2 2014-09-14 - Fix when multiple DNS set, IPv6 only sites are broken 2.2.1 2014-09-10 - Support graceful shutdown - Fix some bugs 2.2.0 2014-09-09 - Add RC4-MD5 encryption 2.1.0 2014-08-10 - Use only IPv4 DNS server - Does not ship config.json - Better error message 2.0.12 2014-07-26 - Support -q quiet mode - Exit 0 when showing help with -h 2.0.11 2014-07-12 - Prefers IP addresses over hostnames, more friendly with socksify and openvpn 2.0.10 2014-07-11 - Fix UDP on local 2.0.9 2014-07-06 - Fix EWOULDBLOCK on Windows - Fix Unicode config problem on some platforms 2.0.8 2014-06-23 - Use multiple DNS to query hostnames 2.0.7 2014-06-21 - Fix fastopen on local - Fallback when fastopen is not available - Add verbose logging mode -vv - Verify if hostname is valid 2.0.6 2014-06-19 - Fix CPU 100% on POLL_HUP - More friendly logging 2.0.5 2014-06-18 - Support a simple config format for multiple ports 2.0.4 2014-06-12 - Fix worker master 2.0.3 2014-06-11 - Fix table encryption with UDP 2.0.2 2014-06-11 - Add asynchronous DNS in TCP relay 2.0.1 2014-06-05 - Better logging - Maybe fix bad file descriptor 2.0 2014-06-05 - Use a new event model - Remove gevent - Refuse to use default password - Fix a problem when using multiple passwords with table encryption 1.4.5 2014-05-24 - Add timeout in TCP server - Close sockets in master process 1.4.4 2014-05-17 - Support multiple workers 1.4.3 2014-05-13 - Fix Windows 1.4.2 2014-05-10 - Add salsa20-ctr cipher 1.4.1 2014-05-03 - Fix error log - Fix EINPROGESS with some version of gevent 1.4.0 2014-05-02 - Adds UDP relay - TCP fast open support on Linux 3.7+ 1.3.7 2014-04-10 - Fix a typo in help 1.3.6 2014-04-10 - Fix a typo in help 1.3.5 2014-04-07 - Add help - Change default local binding address into 127.0.0.1 1.3.4 2014-02-17 - Fix a bug when no config file exists - Client now support multiple server ports and multiple server/port pairs - Better error message with bad config.json format and wrong password 1.3.3 2013-07-09 - Fix default key length of rc2 1.3.2 2013-07-04 - Server will listen at server IP specified in config - Check config file and show some warning messages 1.3.1 2013-06-29 - Fix -c arg 1.3.0 2013-06-22 - Move to pypi 1.2.3 2013-06-14 - add bind address 1.2.2 2013-05-31 - local can listen at ::0 with -6 arg; bump 1.2.2 1.2.1 2013-05-23 - Fix an OpenSSL crash 1.2 2013-05-22 - Use random iv, we finally have strong encryption 1.1.1 2013-05-21 - Add encryption, AES, blowfish, etc. 1.1 2013-05-16 - Support IPv6 addresses (type 4) - Drop Python 2.5 support 1.0 2013-04-03 - Fix -6 IPv6 0.9.4 2013-03-04 - Support Python 2.5 0.9.3 2013-01-14 - Fix conn termination null data 0.9.2 2013-01-05 - Change default timeout 0.9.1 2013-01-05 - Add Travis-CI test 0.9 2012-12-30 - Replace send with sendall, fix FreeBSD 0.6 2012-12-06 - Support args 0.5 2012-11-08 - Fix encryption with negative md5sum 0.4 2012-11-02 - Move config into a JSON file - Auto-detect config path 0.3 2012-06-06 - Move socks5 negotiation to local 0.2 2012-05-11 - Add -6 arg for IPv6 - Fix socket.error 0.1 2012-04-20 - Initial version