diff --git a/.gitignore b/.gitignore index 1e526df..72b42a6 100644 --- a/.gitignore +++ b/.gitignore @@ -104,5 +104,6 @@ $RECYCLE.BIN/ # Custom rules (everything added below won't be overriden by 'Generate .gitignore File' if you use 'Update' option) /libs/ -output/ -/distribution \ No newline at end of file +/output/ +/distribution/ +/bin/stitch/output.png \ No newline at end of file diff --git a/AREAS.md b/AREAS.md new file mode 100644 index 0000000..2736376 --- /dev/null +++ b/AREAS.md @@ -0,0 +1,66 @@ +# Capture areas + +A list of available capture areas. +Coordinates are in in-game "virtual" pixels. +`Right` and `Bottom` coordinates are not included in the rectangle. + +The dimensions of the capture rectangle are exactly: + +``` lua +Width = Right - Left +Height = Bottom - Top +``` + +Depending on the virtual resolution you use, the resulting capture may be a bit larger. +If you need the output to have exact dimensions, supply your needed coordinates to the stitcher tool. + +Coordinate system: + +![Coordinate system](images/coordinates.png) + +## `Base layout` + +This area features only the "base layout". +Everything around this area uses a similar layout, but with different materials and a different seed. + +``` lua +Left = -17920 +Top = -7168 +Right = 17920 +Bottom = 17408 +``` + +The end result will have a size of `35840 x 24576 pixels ~= 880 megapixels`. + +![Base layout](images/scale32_base-layout.png) + +## `Main world` + +This area features only the "base layout" plus the area above (sky) and below (hell). +It totals to a height of exactly 3 times the base layout's height. + +``` lua +Left = -17920 +Top = -31744 +Right = 17920 +Bottom = 41984 +``` + +The end result will have a size of `35840 x 73728 pixels ~= 2642 megapixels`. + +![Base layout](images/scale32_main-world.png) + +## `Extended` + +This area consists of `Main world` plus fractions of the left and right parallel worlds. + +``` lua +Left = -25600 +Top = -31744 +Right = 25600 +Bottom = 41984 +``` + +The end result will have a size of `51200 x 73728 pixels ~= 3775 megapixels`. + +![Base layout](images/scale32_extended.png) diff --git a/README.md b/README.md index a7918c2..5f48ff2 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Addon that captures a Noita world and saves it as image. -![missing image](images/example1.png) +![missing image](images/example2.png) A resulting image with nearly 3.8 gigapixels can be [seen here](https://easyzoom.com/image/223556) (Warning: Spoilers). @@ -14,7 +14,7 @@ A resulting image with nearly 3.8 gigapixels can be [seen here](https://easyzoom - A processor. - Optionally a monitor, keyboard and mouse to interact with the mod/software. - A sound card to listen to music while it's grabbing screenshots. - Capturing and stitching will take about 180 minutes (160 + 20). + Capturing and stitching the "extended" map will take about 180 minutes (160 + 20). ## Usage @@ -25,7 +25,7 @@ A resulting image with nearly 3.8 gigapixels can be [seen here](https://easyzoom 5. Enable the mod and restart Noita. 6. In the game you should see text on screen. - Either press `>> Start capturing map around view <<` to capture in a spiral around your current view. - - Or press `>> Start capturing full map <<` to capture the whole map. + - Or press any other option to capture [specific areas](AREAS.md). 7. The screen will jump around, and the game will take screenshots automatically. - Screenshots are saved in `.../Noita/mods/noita-mapcap/output/`. - Don't move the game window outside of screen space. You can cover it with other windows, and continue using your PC. @@ -82,7 +82,7 @@ Here is a step by step explanation how to do so: 6. When the game is loaded (When you can control your character): - Press `F5`, `F8` and `F12` (In that order). -7. Press the `>> Start capturing full map <<` button. +7. Press the `>> Start capturing extended map <<` button. 8. Wait a few hours until it's complete. @@ -104,7 +104,7 @@ The following two equations have to be true: You can also change how much the tiles overlap by adjusting the `CAPTURE_GRID_SIZE` in `.../Noita/mods/noita-mapcap/files/capture.lua`. If you increase the grid size, you can capture more area per time. But on the other hand the stitcher may not be able to remove artifacts if the tiles don't overlap enough. -The rectangle for the full map capture mode is defined in `.../Noita/mods/noita-mapcap/files/capture.lua`. +The rectangles for the different capture modes are defined in `.../Noita/mods/noita-mapcap/files/capture.lua`. ## License diff --git a/files/capture.lua b/files/capture.lua index 0df011f..a92d016 100644 --- a/files/capture.lua +++ b/files/capture.lua @@ -7,10 +7,29 @@ CAPTURE_PIXEL_SIZE = 1 -- Screen to virtual pixel ratio CAPTURE_GRID_SIZE = 512 -- in ingame pixels. There will always be exactly 4 images overlapping if the virtual resolution is 1024x1024 CAPTURE_FORCE_HP = 4 -- * 25HP -CAPTURE_LEFT = -25000 -- in ingame pixels. Left edge of the full map capture rectangle -CAPTURE_TOP = -36000 -- in ingame pixels. Top edge of the full map capture rectangle -CAPTURE_RIGHT = 25000 -- in ingame pixels. Right edge of the full map capture rectangle (Pixels are not included in the rectangle) -CAPTURE_BOTTOM = 36000 -- in ingame pixels. Bottom edge of the full map capture rectangle (Pixels are not included in the rectangle) +-- "Base layout" (Base layout. Every part outside this is based on a similar layout, but uses different materials/seeds) +CAPTURE_AREA_BASE_LAYOUT = { + Left = -17920, -- in ingame pixels. + Top = -7168, -- in ingame pixels. + Right = 17920, -- in ingame pixels. (Coordinate is not included in the rectangle) + Bottom = 17408 -- in ingame pixels. (Coordinate is not included in the rectangle) +} + +-- "Main world" (The main world with 3 parts: sky, normal and hell) +CAPTURE_AREA_MAIN_WORLD = { + Left = -17920, -- in ingame pixels. + Top = -31744, -- in ingame pixels. + Right = 17920, -- in ingame pixels. (Coordinate is not included in the rectangle) + Bottom = 41984 -- in ingame pixels. (Coordinate is not included in the rectangle) +} + +-- "Extended" (Main world + a fraction of the parallel worlds to the left and right) +CAPTURE_AREA_EXTENDED = { + Left = -25600, -- in ingame pixels. + Top = -31744, -- in ingame pixels. + Right = 25600, -- in ingame pixels. (Coordinate is not included in the rectangle) + Bottom = 41984 -- in ingame pixels. (Coordinate is not included in the rectangle) +} local function preparePlayer() local playerEntity = getPlayer() @@ -117,7 +136,7 @@ function startCapturingSpiral() ) end -function startCapturingHilbert() +function startCapturingHilbert(area) local ox, oy = GameGetCameraPos() local virtualWidth, virtualHeight = @@ -127,10 +146,18 @@ function startCapturingHilbert() local virtualHalfWidth, virtualHalfHeight = math.floor(virtualWidth / 2), math.floor(virtualHeight / 2) -- Get size of the rectangle in grid/chunk coordinates - local gridLeft = math.floor(CAPTURE_LEFT / CAPTURE_GRID_SIZE) - local gridTop = math.floor(CAPTURE_TOP / CAPTURE_GRID_SIZE) - local gridRight = math.ceil(CAPTURE_RIGHT / CAPTURE_GRID_SIZE) + 1 - local gridBottom = math.ceil(CAPTURE_BOTTOM / CAPTURE_GRID_SIZE) + 1 + local gridLeft = math.floor(area.Left / CAPTURE_GRID_SIZE) + local gridTop = math.floor(area.Top / CAPTURE_GRID_SIZE) + local gridRight = math.ceil(area.Right / CAPTURE_GRID_SIZE) -- This grid coordinate is not included + local gridBottom = math.ceil(area.Bottom / CAPTURE_GRID_SIZE) -- This grid coordinate is not included + + -- Edge case + if area.Left == area.Right then + gridRight = gridLeft + end + if area.Top == area.Bottom then + gridBottom = gridTop + end -- Size of the grid in chunks local gridWidth = gridRight - gridLeft diff --git a/files/ui.lua b/files/ui.lua index 365c660..7d95592 100644 --- a/files/ui.lua +++ b/files/ui.lua @@ -11,7 +11,7 @@ function DrawUI() if modGUI ~= nil then GuiStartFrame(modGUI) - GuiLayoutBeginVertical(modGUI, 50, 50) + GuiLayoutBeginVertical(modGUI, 50, 20) if not UiProgress then -- Show informations local problem @@ -108,9 +108,18 @@ function DrawUI() UiProgress = {} startCapturingSpiral() end - if GuiButton(modGUI, 0, 0, ">> Start capturing full map <<", 1) then + GuiTextCentered(modGUI, 0, 0, " ") + if GuiButton(modGUI, 0, 0, ">> Start capturing base layout <<", 1) then UiProgress = {} - startCapturingHilbert() + startCapturingHilbert(CAPTURE_AREA_BASE_LAYOUT) + end + if GuiButton(modGUI, 0, 0, ">> Start capturing main world <<", 1) then + UiProgress = {} + startCapturingHilbert(CAPTURE_AREA_MAIN_WORLD) + end + if GuiButton(modGUI, 0, 0, ">> Start capturing extended map <<", 1) then + UiProgress = {} + startCapturingHilbert(CAPTURE_AREA_EXTENDED) end GuiTextCentered(modGUI, 0, 0, " ") elseif not UiProgress.Done then diff --git a/images/coordinates.pdn b/images/coordinates.pdn new file mode 100644 index 0000000..fd16192 --- /dev/null +++ b/images/coordinates.pdn @@ -0,0 +1,113 @@ +PDN3 PPaintDotNet.Data, Version=4.214.7574.42160, Culture=neutral, PublicKeyToken=nullPaintDotNet.Document +isDisposedlayerswidthheight savedWithuserMetadataItemsPaintDotNet.LayerListSystem.VersionSystem.Collections.Generic.KeyValuePair`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]][] F  PaintDotNet.LayerListparentArrayList+_itemsArrayList+_sizeArrayList+_versionPaintDotNet.Document  System.Version_Major_Minor_Build _RevisionSystem.Collections.Generic.KeyValuePair`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]System.Collections.Generic.KeyValuePair`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]keyvalue $exif.tag3[0] +D $exif.tag4[0] / $exif.tag5[0]7 $exif.tag6[0]7     PPaintDotNet.Core, Version=4.214.7574.42160, Culture=neutral, PublicKeyToken=nullPaintDotNet.BitmapLayer +propertiessurfaceLayer+isDisposed Layer+width Layer+heightLayer+properties-PaintDotNet.BitmapLayer+BitmapLayerPropertiesPaintDotNet.Surface!PaintDotNet.Layer+LayerProperties  F   F   F ! " #F $-PaintDotNet.BitmapLayer+BitmapLayerPropertiesblendOp&PaintDotNet.UserBlendOps+NormalBlendOp %PaintDotNet.Surfacewidthheightstridescan0PaintDotNet.MemoryBlockF &!PaintDotNet.Layer+LayerPropertiesnameuserMetadataItemsvisible isBackgroundopacity blendModeSystem.Collections.Generic.KeyValuePair`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]][]PaintDotNet.LayerBlendMode'Ebene 3 (PaintDotNet.LayerBlendModevalue__ *F +,output: Hintergrund ( / F 0!1Ebene 2 (" 4#F 5$6Ebene 4 (%&PaintDotNet.UserBlendOps+NormalBlendOp&PaintDotNet.MemoryBlocklength64 hasParentdeferred #(System.Collections.Generic.KeyValuePair`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]*%+&#/%0&#4%5&# !1 mxI !1 mxI !1 mxI !1 mxI !1 mxI !1 mxI !1 mxI !1 mxI   +Ui3ݽKa. m 2"@"B;8<)\Z{ yLwuuozj/~OGwvV(yfg,d rgejL.,Ji|gXOgE6"w6I9]x}&jܶ2gQ.Od:r*݇b27>_Ӯ}^[ I' IY^OO/wo{yNzxFeTdkeYzI Fɍ̵EVSdsѵw_+ϩֺ +ѵ}ة~mmzA +<ǺCf>A `8w6ͳ|D.S6#}! + zwo? s?]f iPr=A2ۓQ8vGf(\DGGD;Μfk3Y(}L.vW?)kLtF6ʮ0G,F.֫țkLTZ1GO_hF.m4Guf̽EֹhhE.~\3k{9;\w`e!mfY(so܊L|+f:.3{>Ee>AWWλx/nj"k݁m3'EN֞VfE"c݁+eѹ{H(afHnf'U~h\Q$iYH[?A 1;kon}]Gu/w>~YK{tR}lD.3/'XwnJ栯>}n+MfGM.@U~N6iGOyǿ]A 4;pVf"x.٧UPѾ3#ڻ~5(Optږ\hnư-k8muy쫷O=We i6Vt(e x<L;O\%#cKw.}FymtlVq܌')S&{"F5qYMEs엝w]C\3ǫVf2עeUݎ-^@$5(IۏƙKÛFmQ*}Oc;3w{Gr@4D{03yݓaEwQsQooத35vYьxz/ZdoƒzL3S$yie^^xc+ e ;֚~5S/\=v4;پҬ~ho&J"y\9u]=+ul_țYlS'ks/F{w2hߕZ;l_{1^}\eo.03Sy[3߯E.ȓ4kLiEAl=E-x2O9&GdQ +-zBG_K̘w ;TCwJdg6Z۠>e6۴chrSno"yHoeEjx~{zB"$}f?W^݇3('h-oY*Q~(wCE3r,5V"EkX9hu&}>.9HH>'[Xy{ m\@s1}G7d施o{ +YqVe">%#վTӏ2M4{X"59$Q;jdLe}>m\GuZp|>&;2h4iZ#۞TuTGgMU+2Q!-CXYb;Z2Kym] @#[5'u߾6Uom׼^mh9ODER}ָ:'SϘv$ds~ъ~_/V)7DGӶHQΰE5g\#oͭnӑ״s3sê\0k;k;~~,BoeyI5V[dGchJ5w;&]FѮVzA:ףu'X̌1u6DNjpB#~ϩ}Gk#Zrukk3M,QR}_5ݛY?sB]u]W\YC7wػ3ikQ6mc=_uL5QmG4"7}E,Rn9>س;;u|c} 6R)$x b8V=wwg֔WYW7ke=/TjWel{Ol +iOțw{Fuh;j{C}vҕjDȿ{gϬM1͘'o~?"ag&Eqzz@6 D}p1/!1bhFNy}f>*g۶m÷~>G_?!ly)qU_K$z.k<{}FΙk\Wȭo1䵉.*Ws{5Gs(ϗz)7^;vĿ6~hEֱZwZ+yВEy_H;n׿z,}9g_SGo;5<'?YГ(9br gn?odU>vZ)TiN.'\iQ4XV_wOPohD?ͩ7򘟷zYڃo3~K]T]\jjZi]GX;T?_%~Mf"pK\/::Ig͕W; ]k$#YBt.[׻{"k/Ysk[ړܓ=_*\*u'_[̈AE.,k%&_W]$~Yյ?i\Bk~.D8r|oX/'o7-5%~yoZnhԋ롣&J}޾u34ǤYgjW?L*lկ7J\#'~&pk"ќ[JkkRq,svxsL=Ф{ xLiefO鼽yya9pC{1hri|j K?4QW̌ǣ$_]*fEt4\ǚv_imlqoj9yߋCHrME6Ͼ|ۣ癙{;KJF?YCSIb^u^=}b{_l呿K׈x8F{_sj痎5O̭O] Fs6{]oS/M <_o?(4Ӎg_w>mF8OWtsRM43X[]sJad]GH{},ɱ8/>V;ݿJ>=/{c#̉k7\t߻ ="OIj˿\.S0;~i]y}>E?cn?ޟ[T LeYcؿ3~K+ٲu-^tϭy/~K̎5w\.E1gd=>z׿^wFzEGo+؏[̳X_VHjH 3 pv={wQO)OGg-`Vݷvk,_f_֘k3;DgFYs_7[XmM4iz=_}aps~ jr14&~M =ve#ޘڊ@n8R{TڇZZ}3!ru4K޻Wg^ yq{ګELk+w6G޷?Ή䖣k{kxь;f}H;+>ǽoG]ݞ"M5lx~hMqFeψgϗ;S?Ē_h֞WVW){ q9w}5kΕ˦o֪Fa+P&3/qZhFtkQr|wqoF1,kGS3yW ՗`\-A׮UAxīs-uQ1)\K/~9v-~zkNJǞ5ʽJ3EI/׫EVk*uVOϊǞEEXu<#?E!<7?$~f)Z53m-vߟڽW)Q{}{ĵ:~ܱG/hV~VZIǎ)4C3ꊈ}^K"}C]pjwYrΙFs3kŵޅ*\Ϝ'-{ _;=Y{Zo{ܫF{Kѷc=u)͝^vYz>uh(5Y{V ?[JέjxS՟̣Ӟڳ:OZ9=W]#koe4uH6͵~peV`;amd9392OPH$q Vo|& A&~~ۯ??_=~B*G=/?gWT}ݮ.ugV=z +֘'e][!+>Y')uys~~,vefHݑ>ƪ2!~>GYzS9#?wϱxR&-x? +3_u(Yﹳf,<5ҧg䑾Oޮ~KY]˵:z;ԯ䭻vrQF*ze~{YsN?QXzDqVI{e}˚~y +fy3gz7ul2~~y{䫞G7~٫.#KkNϨ?zߖ5>{VEVֳFu'1xwf^ۻո+z;_)}ޙe _h׺Uew4ed!5gYS|TkVcڎs~5{ ޽{h 3k>U$x{)g }Iuf.Xd9 G߲?TKmdhLY}w"\jWkָkQQO{'WxeȘ~CAQWCڭSOf5;vx4 ];O$+x_?;gE"ϳF_bN/%<~5ϨY`KR=ٽz9gh;٣}g-(gԟ~;~{d]#r%RviolUnOyr"{~2આe(B 㳨Dyd#s'_BZxAyvQJny~g)ѵe[N;^h󮣊dE?KfonY33w̬5?fԟ16Q}v\՚ܓ"Y{}\/\r.+5T99gj~aX3Kf獎/?%+cjז[ϙ){<ٸ+0[>~5wrվ\uR=lF:Tٚ8}}.d#8*=ye|<לsz5eoǰwkmO?#ErڼEWeAߓվq"X=s,bXϙ]CQ+{znོ֔N''}~ .jH7:w!cEP%xMj.WjgEOm}ރX=~F?GZ;,|M$yW3Z7*pTW{jf[ރj_ښS==;,2,,ez>}WߨzH uw|Z?+E {6{a\{kkqt~7)I+kxkYk~}eqG2'ﶽꯞGxl}%Rh?, ꍩ_N]ˎk =EAsͬ_p-֞Ynt]\e1jo̾_wcV=^hxiVdfav޻:"reH'y5OO$;yXW>~h._=9FkϻU{<,qzŲ{g9WT{_E5ԟ3\JYR=oY2񚑩<%F{ x߭=PRﮣ >˵nbrqdjO|ysk|p2e뽒>"ϡe]Ϫ쳍ꯞ3Lzie'[eybl^ߛV >S"u9s/ʺ?R91q=K^\:zsktu PV.[YZev׵535X3Io'T.۝U#wפ'KڭW!Sw7WkiwNk >[|:KYo,b1e7OP|]I^Fʺ7>(WGY{D7#X[JviS<'O.SeyN,s>ZW{>;\3jsD/YQ2h1/P}kwEwwg- u9'ߒExv kyhZm= f{3S=~l4zn{k5})F=Wo6e]sCwUՒ2ʮ SjչzZwieW[Y}Ⱦ Jjg,o,d}~4O.=sb\Q꾷^ +}ƒGwoiTZby;ܯѐuO>w:r$Wˊ?z_9o<껈v{r=H:"?ŭ]zN̞/z \Ԯk^Ov.wGʒfY='鲲[՗\.xQ\4z>{֣ } 9z._\"0Ú2U"gd=ڏ~5k}ug\'gMg=~VS+5mul4ꏾ?zໍwzY=]:FgFF4dW,69LKbs4?U?{՟93칯|s?'?z|o5o֩kVsL+ќާޮkӒZ\ӿ\tlNY[d<g339Fo}ټW[+R4O[Y]c6C2j2H 9Z"Y󿣆k螑vZ|niH*^k\t?52k2Hߋ|op-EjOv}uuyo>2Z.گ7FG]?R_.S,Qy׻|z"5Dj4w{$ezuޢw묬3F+}&+="nێ_EtV]7榌>u蹣5=ecf4:">M-sߝ.X5r\ԺVDrBv>/z~d,ՎujGC?75p-̮#Roli^:M\#f}gѓc>qgjprMvus1[uo^ZS{vy먧@=V~5f|vLHrIVv4W嵖}ek.sGmh9f{"ԆfAO">UAOwY*rJm(VZOm}(9idͻl\l<#1ֱ͌t}w3IײJƲZi՘jlZɂ F3; +u磹1rl/r[+<#4}gO?}@q=E kOfg=k4f̾rٵ;2yf{gNP׵#kܬ[-Kjwܵ43%v+xN}Gυ]Y'z}ve> 5"dcNPd?4N\?cLf?h&{2k|tȺ_NP֧NT{oʳ7ʹfrjgg{zeZOӻNPD>w}om6x"w3{Os2׬ߵ7,+=2Z֊N~wn5dwٵhƨ-PfkP|?9"5ȳ_.𣹮cz9vm?L.z-\T۳m%=u\o\b6Dڟ]d^Ⱥ^j[\΢ϓd{Z2s農P#7.hYoo3}(x(S-Ej\ZC|WԎ1EFZy>ul'#e<;5/[HCE}ԞF;a{==獢^6sh/׍EEd CwK+G\94{-)c+=">u\d?g5yF۳kiej狜J嬵|vF_n|>;{v+!/WLsum?V~quj3E'ƿ~>C>s+5wwu{:}@Z^a;s:4ќ=V_7O}(rQ֞\;n杬3iGJkEw*iwx^edݽZvg~_{77}(F׵=frH}ngGW39p8}@qǽڛ;3EϳR|f/3r;{{ќ/.E2F+_[̀zE$DSV߉a2r5D.̎?;]shݰ}(Zygs7cF:GDz:T-㴞]ҧ+l4.]ϷH=et;@Y1E|5j^zWϺF3ۑf0q=}(kkhv?ʚ9CT4wd?{OP\3Qf(;;~^s~wsOP5S.ڱkQ\E_5v{j=fkB3)+/ͼ6/=+טFig{4E{]W\h6{DrH.<:;}\Y~s梕VC4:3u%Ou}wQFOgٙd$sF<!j䟒ޱd2ˎ\Իu >fRS%|Vuh֙2sF?}@QֱO#[WG~^);doFrY/h5ϟ7(OZޟ/ʪeuP[xEH9}=ErgfVjwfJ-5ur&N+dh吙G3HN@uќxz/|B#SƟU?n"F9}}yQ4D{Ggǟz?[?ڛ]^[f{u|nju2{v(6;khy+kko;H<1O-Ez߽\g|nՒVtd^>;/1Wy{C}"nUu{MCj +APl] m6Q641hG&{zz#$[G=w͵zv{;߹|2O}>_bz%ݯ|{OB2R{sϰQ>$*yQkoxq%>t95m]޽_Fy4o{ytky6=.-o[R<ÖьNj`<:H7zh|cԍֈ͊MәS?bVGw2N4T`u=3ZsɼImܴKh0׉"8 +7yMLf񌞘,\8z:^{}tX]{[ͯGS/W{suZjIJf3?z[_/c[7’̒Zq#z~x83ډf-ɹ AXsz(iYc4+ox83֋tM%"JH;Z^Ժ'N3gc~[ɋZsf{QOx83K(]l/#ŋzaoGjkͺV]E#=Ίȝ7_Ջr>4EǢƇfx[3(ҾQjq^{pVռHΕ|h4_~MtxX'gYGX8+֋člG|h '‹`=֚ƎJ##rDX8+։ټ8ͫr}ƜruJ15{[zmߖ7=r#n:Y(c9%O7_Ëbh}BGؽZpme?=qZmX8+9/q#ω4EI^"Kiy}Ѭ: 6_m>ǰu=Jɋ9'J!AܦEvW}"g{k5j:Y" KI\/!닼陵nCޑ:/ՋHNjċlE`mQ."Govool88+uER[#MH#5t,/k Čr6_+WlV NjDBh"?'.$k"tMtGK9E_88#5'%MT:睗oB'9 Ϋj|~F]oڏ$^WڟhyWkAEs{􊽱Gs3s"Ec?:fGx;WԪ}Zcf9,ݿf=?z/q#=^\z#Epٺtq{Gjq[Co3,񂭼䦶?zܚ"ϋtmuŕ9Mv#nEoܻtMkV"qGs32E6cJsEp9yQx˗xM'GrmgDڍgxޣI6ή=J%^5Gvݐ`H5Cn}Q-t%3E=zҺ"E6OU$~-yv<^7/F9)&IWʋ;YōU5Fr.U8[A]g]]V}PB;u?uEiݏ"9W(}}"ޛ7q#/]/mI[Jq xI=^>K[-^t=!sI>8Qyb5R{p5pl"YGb<8kgqR(D>wW5<ǽxl}T{:W_k8ђ +\ /|fxԙ ^cFk9!iG/.d={H^۬ ^ӲgH\]nmQ͋ȩ= .聧>+ ɏj]TK/W<^\~_ec}ܺs,]$/>HHr5DڛJ5p#; |Ꚗk^,b6X=WO{K/,u,kwYpl"V'JHg=;&u#j1H|W.-FƇfݛmY繒}#ړ<$f'^<^ʼnĉ_},S䞚3Ea86xϨ {ǵYiu辅sۗ'K˵w&!Ց+ʼnJϔ~={ҊxjhǑqkr1&/_ORc:7^dǮa|Ȯq_8#^;6ܒ-xQﻼ9o߱1ynۼ;Ͻ1 /‹jV/$},|/Ks{-9gt]i}~&Cn]kd\yG_86xψ"FHs[W~KڒKc##Ssvyqg^ߚzQOZ +z͐͗9R5MBct{ٵPۻȋynAWyz˝];E[;c$^ӓgyuyWlϙ9plċp#ɡ^d]*rN;.+5 /~WܾԮk"}OΏ.$j`{~Mqֵ^ O{]Ⱥ~=1=a/ּ(WS"zLhEpfZ|(Ev^m]4%yVˢʼnq,7ڒ_<./ZI-ٗEs GGpVFHh-ͱE-^d~FѽE͇}GL/cE%y$|:i͝+.ͻ--5um9+G:r(Y'kfxIԾ-5% <և^ĉ`j^ԛUsj͋+&EtTrF#F(ZjJD#8E֍#8^Hc$iIx^{޷NJJ;\5e Gz˝wߺfIyQiJ#8ng‹i7'^Ԓ/ljh;zo:0Vs5Hyfx-/MmTcPs"K#ɱ]zF%/jݿ2J9u9o͒ޛ6NTZsdH}a9K$Œ</yq!g"CrЍ_ ϑrE^cbmgxѱ؃}/mǿotZbD-'EF5y˵d"omQY/::y9uRZxq/ޗvS8?{Ƌ` +5J#j(HXW_[ȫ 9%ď497ҵc7KaV==RS"z͠Μ\Gѿ`&=^$n/nE^FhWdž~ƋG^Rj5% Jyst^\X(x\ڢE-q{$Ugp#oV.Ngcuɋt] DG8Q͋n*=Ώ/O'x Q jvqrjtvPPܜs]}=j뱒?Bm+#;cظN<\~ҽl__ŋ` +-u"<=]kytv=ۍJuK'JG\cd`~FD>B"iGt@Gܳ_f_Ց=rElGFpV&E%7*kjrZ(C=x/ʭH@֋Z1oEvE'z_c{ HNr"؂Z:LɉrnZ'54yQÑ yR"!s!q/ItA?;QZ(uWU B,iJ1@B U +5 +j"Vbqҙ j1N45|a8p@":3F"cgou[kso g{箵^凖Եc_jjvST\z3?h>s|??pu ] 5VQߗk~~;UQO)[o^.]-ѝI]Z((J]'Y\lE%LT"bEx5.>c1InMٶw~]챚ڿzy((J]i#qmsDxa"E|F\D=<}/qv_nQh6p؋i8I[&lJ +5E8<x惺T.r3| iW8y?٨Eh&7]f~!d!ddT*u$qFiqYq`ܒumj1R_|Fׁ2Jd>ٶ~u5.;+}s r.;T*),6 #0EAb=qg 4иHHטTGe#:ov?oI3h&'Ԗ%1g!M1!J]!kpg.!^7g+|I8:@h{a?풟H*gvoERͷ)ho\)[j,$ʓ)(J]8Ivp"!n;[&Ͷ/򲅵gZ ijvoADb#G{uy=Ta{grQ"G[⢞u$f3%<k"RRԥx\W0^_іIsj$.Ay<ڋld5hEb␋Y$&8 5pnNmW^Qs"uRԖO*kpQ/Y\ϵhK\<_)g\xt4X8Rù(ZU>n2Hs4{l+"WkKRsʊ\T>#yhi\ˑ$v>o_c0{x8uc_ګLlJ.U^&B CrQ8aYYe.*m)^,DI?Eҽ:q ?p]dKi~oyן<c= )i{~fy{PyL*'(|E7JREj:^.cy]9CO"enM/X垫CRR_$S7:ST**i$^Ȗ9R7?i(.<$1ZspQy{YslW$v֘H#Xvg8ݿZv^Kkctf^#8Gc#RޥܑX:qE|R[}} v[kF>k:xܜG'zBB >gh[l$.*||v?-[+C㔚EbXO霽HmOoH8oi4RTKeE}EQ.yH|R y%'Ş00Z2ܨX#qF-TmH˵m\ķ25ivRz$qƸ/ani#Oq&*EÊ?lo;iloF߯R&N(v8I94.m-gB;HF9#zIsϏԶɫm_/ET*rQZ}EB:_Cz叞{y/_$q~H8.}Gmq_ё!'W7OZ^v욶p^˃FeG|CV]myJ\g#-Y>w;J]W愮ȞvcZyE +ѶW+˯_G\|!6E(EtN1w̱M:G +=vj5r^_Zc~9~f??R(%RKh.9568W$?#&¼u#O٥H>עU3~n_9?k\r$G&ivg[΍y6r/\?[?Ϗ娅Rԥ,&_VIdvb".ESW)\[y5HodC؈>keCm;W˟@v}-{[EZ[?/zܿ4ƏtGr\JRr̖CV:,fws_-SLw4T sYH?هst"cW[#Ui֓"_qN;Y9&jѵx1WM|/=2" 4G\VG2dqOlW^gQۙ$qV%.ly$;3'E+*BѨ"?Z /?P4,Z^h̭H#T~7>.S;,П}w#I"-3+؈ Y\TqBAx~\~Mo^nܼu?vrayXyw q?6n[Yk֘ʣUlё6}^i介j_G̱ӿظQǿώ~TY(UTXT f=t.BnѶDr/5`=L6_՘pѝzρnwu/ozu|a䗒x~X y6?H5[o+F z1zcPf+ܨ{\kO?5ّڏ,1?K㒍RI$E<ߛg~&>.CGyI:lIιַB> b*mW{C=?D^~v!N(haA쏖_XV~*5[E6jkJ"}(h=xo~oq{y-mIpckקOzW$\g/jkxb$L-N:N[_FZf܏IHe؎6_:f/S<O'҆y~3ّڮ,2XZ((Fc[c]oUs8~VI[]~kiR%4_Qć1Mq_r6?s?h~^dSR{%{I<Ϗx1jE]{n /3?s iOjs>gGjBA3Q䤸cӾ +h{:f}G?Ф=Rssdc#E2 Ia)$Fϣ1gZF_G+zH]ԮؿH޼e2[GsOG q̞1;{HmSG1Tof,qơmvB$$XA~v)PK7{֓/#i|4O6 Ϸ q| W")N6G,kiLEp_Tj{q5Sesx!jk4^L-Vݽh_FC/O%rgGjM|7 ϼ"aY}8]!C?|\& _챙#˧÷Iquu]k\e#:GʸbWEj6^ihD#ڜ;5ږh:Qcs_E4Dzƚ뎎YZ,z2~f?;Rs$۶ryߐy0OfJ5M< {[̿ϫLQ-M#>*B6q~%i$R +_B{edn;WaD9-Q+SQdkE~{m}viZm*H@EFFu=Z-P'9~rc3y +;~2Ҷ2ۡ~_^Z'3ّ:jqh=\0_iq'qT>.Olh8| eLֿgT_cŮ|8-L$尓>q/tnIl{hDkEGߣ8s -_{HU/񲒋^h?C Gow9W+q?Rh~Q-WCF~_zb!+>5, <{AZ{?^,wzn~ku7=ّr89ʿ?Y' #paܕʧ˫O'axΆꜤDka;Ie?ŸcDR&;^.Fԏ`tG?ّ icG.*y k>Hd[FKKDŮrר_e<H[4\76"+QbC3;Icρ_)]\Z~:jĒ5?YYlm-T)4v9.BKJ6+Z嗢\Go{H[p&Z3?ݹ}1^/m렲w"%+EVg;#2_x̜9gT}#˓}n"H#kZVLFaA=_#?ّگjE[b#i}\o`8}Y֏gWRWEZlg"+c9R^kq;Gk*{f={V_^\Ck{=K#OQ/JHN]cE<<~ +mUpW??;:4g29Y~5skHrj\4}'ҦeD룿ώTS$qnYl]LXo ض`kgYߟkj"m3x|n[$;2r=-6cl]{S+C;O<=uFno֌ s/Z57mώ~eqvʷ qM$/)i???Gr֟u׉b,E#-{4joZm#lT;>zh5ھձs9Wߌs4ّڟ!59;oB{vtl֟ouDE_^k29Qj?ﱇy.V;{tzfQf9g}}ZCcjxB~q]eE#Gr}yjfq^2Ƴvo7D<>6{w8*cl"1hs{ۨcnmج?Qߏ.zo=Ikm+I׮ۆ~.ڦ-S6H#Yǵ}ѽ6}ƼǎhUwuj3HC5yeV>B+ٗX&Iq?]ߐp-![qqҳ?ט'bw;vUo-{Y߸/4J#轰t=3FrQKaF^KgHj'"akq֛?ߵwmXk??hfY;r B摶ע #BMˡ(ajuZ-?j{h_l`<}cF1Tָw\xY͟Vk[Iff?gRە#so{l@.x9+c9يwח)v}Yֿg]9H!H\ğ#r&"ɇm"j[okqoZ#}=Q_mw_c/O>-?߉ߟ5?9ڞ4ۚϨ_c"j>(xb;U/[|~8دg[o,ycyF8)koxkiUՖ=FLo/8o=/Ϟogޱ[V#?f?sRۑ+9ķQ9,.$m3>!OEgmӸ6}ݮ5Mq^n9@Jp/&/$ + +X#pr'#ƂȒ$GIg|Ǿ8_ ԪlZ=U]]3<7 _zg^go]K}/kKL &W~&{߾n⹖|޼Q={*H/~{SrhzWگvyo㕞f'Nf*HOUym`=?+'K%2|ǝh72?yNo$~^T~_|l_~!o9^wxOX6Z~[oṚHC_w ~_TB)o2W3~Fyǩ,/Ë_ !?G*|V˅tdyuΕq4rvUOVG.a?q]^*ovAQGG\_U̗;0'G Y|H?qT 8ifQ=9=\#r +lS{gďeepό +^4E1>^{ߋ3%/^tɑE8Gbɷ!;x[֏JkMߝeq_8Bp(3).9DEG_ymEY}3/?+})kDoUs3y^ٹY.y^"΍$>H ;'t=CoU?yږ~+gb?3Rgz̈MV[5>WZ{ Cq/՟?(qh`+,S_2=bcJYYy_(g<3~PxƿWV_V|(75~9@sD^AE'; 6Oi[*3K}FI/8XK֟s/,us'l?{?~Ꟊ[zkO#s*⒬ yAZKxьɈ+⿪\K?~=^{r]]G5~95[kXm"|`z#K܈LsB|^E;DeG/XmV?G͒pVR^[[%_I0?}Y\5*.K^\21"WF/_"sgc0‹Fmϯ~}hQd~371%'ċZ|ݍr@KGC㼻525[:KQ!d&򍶿Y?~/%>cBvbݛ#zpI4n8cFmh5;*_OF}9iK5J0i2$>Fks&G܋"rh+MKYrAOH9EK2_X̛#dĨXG3rhe"'^.R~o={*Tef,;G_<5㳸΅bVǗƌl^Q9/kd_m"xyVn捿|Jhyȃszg,D'cg`RI3ƌ_?$O=·8ᾩwZ<عK_؂ o 1K6[kF[e?&gxю)[lwQWw8OM+{qQ\^Q'l1u*wxE[Tce{yhθGi{!X7)#Mj\} +7G8y!kZvcN-?ҿød[YZY׸L!7oq/28\]m0Vn#=VE?Hg]KGԫg]2"- k8v|xe3U9[G8_͇JGqh$,!Ϣ_J';ӿ YcG""kf)kiGg_50]Q#,u<{Hky3j|}c +u/-81]\|Wt~~ʗE%N=|atHϚ||YGO{X@PTuvzpt<4h|#nUkk~+cwպq[=Sh_yw׈]/y,8ƀq͌ή_=oeٵPIOhzeH{~$y_3Q&<,fҚHQL_.,*i8,~a<^{"H[OEZWvV{ǣgO_/9裟E<q|>[R7Wя$V^dGFSHWKվٲG9(3 +QߨG*l++eGѲ3ϟ x5Bg* +ڸ.@¼s9i<؆yz,W/sOϑ:E#xpCպ`wG6ZYW)$Gm^lV܊3F4#_oWcK)x6k1H5/E EϘNu<}y +~Ϡߝ),D_}杷#6sc{A|nH=%'jq˅1[+cKW{^/BV9^,3+Mzψ3GuF?ѳzsp#oոu|ߦ9/KcwǙox-BwsQ\.t^4o' ODƟ? p1C?3s0ڤ?2(*yl1sVJoEFb&M#>CԞYgi8[eQ^4%빑tݸ˯79Bw)?yGLKy1d/H땃oOGG~o}V~~,/ -,S9"uGo ng`,f䐏zIsWQ۳g*{u/+ιx\L|XO$5B|oq#)길#ԯDOTc(/_$u=i##_fW?}F=s~ªI~.uUZk:tDqeTWdi񃾴b*G*:9z_V۟9cq!)MEތYճHDj|~:^c 9c5[KsAg4_k0vN&Σ~?;+?x~ Ө?DNoRGiOÝ$M5Vlˏtoָ(jIz{[fch${0:eO칒5Y{y&zoEUk׾/b}lLψtA?fK?a{1d(?zdmF;+G?||6$S'}w/i/k0<+Uȿi~"5cZ,Z|LIg ms*lڙh>~XǦYfVݯ>iߵWv|?%7"dwo.Ëq*j~ɱ4[n9/p7Fm{K5ߋk͖YkrS]Gٿ"|ǵUy?b쇑 Q~K!_p@Z#Jx'ro_wm- nt1nm;e8 Igu|=+Z_KjH=9k^ ~h<]Y>&$ݓAQSY_xg{x_o[kz:vnchK*I6Mwng=c^N#ߝ۟ +o +;fGwKߢ~ #~QGy_בM s3>E=lpWz>OuX% X/B,%'UK8ۉƴ0z/[¨=gnsb˒o>v8^.MYӞ?5ÙfſDt†k1؉Yq{m-\@4f.; 8b91]/0(0#ǚV'mk2Fo?E1,S֎lp~G9pLya#0kb_,K…j8_i\׉0+#۟$IcZj%#Ňy.u<8f$]sys^z~Ba=I?7T_)4bVĮاa.SľHB < Ier[< om_ssy֯iOo`=Igp >cc|l_'a:/F0 R=n@N'K?#o'_bJ~IB9"M0VkgN6{ex0v<̜7>qorVQ[_R^j^d{ė<͈#o~G1%y󷛴1;}t@qk[?NF}uHltih/ ]+7|r//A#؏yTL]_:o8B'~۵zW__1=ydWۜP{ҤcY?kC{ʼG`:}\H#]8L^#{V׫%9y"\wsw9L񚴆H:GKL/ҟGYkrԚY2~'?l=?[//;3iYP-&:zNf?Ch+Xu>ij|Iakc㝒W._?>ɣ gʨ<+oGCG?bZ<zeDk3 ZkǛ{=LYg?Se:x`vkesǺgh̊~uzˣ%9Nt7>@c8Ӥmל_d^|^(F=üN֎3ڏs2 +_F>o8F\{ ꯰ʎY#3?C.~Tq:+CK%]'H{g?$zΝ#,ks5k#|\NϯDfh~߉F?=g\Ф:Ig9#~} >gb#u쯵ӫO/- <ڧKӤH_q軉gŏXt7X!#ڍ9U8}Wqx7%!#sF<*YlV_߫?$QhyQ^T-d_ߩHUST3ɣQaσ#>07K>dҤ &iKzkr=YcaG_3̺HG镑d Z]5dhn]E|+v wDt_+epW߫?+!(2Gl'g.6Gp +y0kǍIƋg`?kGURVןp.HV.[Fdwvhs)|4Ry4_##{4>K'˃Pn13Ft UΘk9/<*cܸ_LK嗮o9 ?wWG/흫:3LϽO=GlHTFZ}Fu4H4k~UB~AFZ$ѣ-Һ!mwoEg96d!_%\XQ=#qI|ښܣ70{@ 7F>CR[}ET|H /¾z5^p?w_n\ZJG~t'hj^R7??f?;rj3?[ OyĉlSO18^c-2w$|T^JLz:4e…X)Gqd}g>!k?[->dU~ "V{eI_NVimT}5|Xfj֥śĉ|\c0Y\ rW<ߋ5G5G4*>,ϊџ՗f'vG+?׎-=sl?9WzGp_O>Dnz'j_GA'q#1GZٖyG||Qio,5ͩFFC 3>D;W͹{ V.tglAw4.`8, /?G9‘,/Ȥ9h;YgGǃue#vf(]?_YWK-hȋ2k=Ѩ4[{R,I[WDyƈxM&goܤ}^\8cߙyxvvڥqh,Ig\hC^t$o|cRG+x՟F'}˖wF +MfYFmqvy¬ +>_+kt}Gdo5Μ#-790.=/<3MYe[Qněvq?O{G9 #֧oQsǠ1qXK>xG{pW=ćngM՟;b,/^a\/8(g"GuڟWyp#\1%ێԇ_T /gCo=̋fşWx|m6v]/8¾Eo||٧yy˧o1%q +G|hvQ[\cuxq@|G4y뿳r?aCXc}ozxWfn4O>l|7ʇP7F?KÛг[|Gsq OJuHװLD8 +~GtKt@QGx+⿚̨oJ?VkH׶#ܠ7fq#tF4^5>D"=o[ޢlƢx؃%O)]w4Qsd?CgeM07i\W6zfoMh}ol=ݸ˯s+wg(0R?/1E{IQgTۯysU:+W?1 WIPeXE~Yt83iitpx]NCfHѳD<-8nW)}J:.H~ܓ"F2*V_-ǽD:GW_ÿZq /q6압=ϟ??!\ciaUуeO; /q&\uWvN7_$q*yzc{cfߏyk"HEB7}-}_ނlg{6[8]M{%Gc;k?_kD:GW? [[#1j*G; ZuFFyoKX7f껛3/H[|?;p,Ni]Clzzay={5uuh ??͎q:{x[]}qna4[1xĬW~o +n(m஌?fʈz {"R/RΈ^rzhzݴX7Cys)a3Iף^;K֘8֣}"oHLϑQa"]/u30sLoAGyLfgq i!U~:o.YcV]hrm#:$Kul|W?}lz)p#󧷎M[_qO+#;uIJ8q .IE; + 㯲l^u]}ook̟W>~oGE/_Ǧ~GϚ9^ۛfhr"Α;֑yƋڟ]BYb#HxZ֛'B9Yℑnˋޒxw-!g] +wkz&؄=W^>:?Id,g=~NgTx"X33͋#|&=#q| Dts=y?G01xM[Cou_?L:2X$~"q7EŶ|ExΖϤvVX85bkqݺs8n8&&xxoY0sfWZqnwlO4iT~w<9gp(ޜٟ?&?R}_U^^~Uaer& c]rnX9G2Zz5CvtU|{ۏE8ŋx+oQIaL+🥟۞~ ˷<@DbGx<8}ϯeq^dr HH!&䐒(Jt(Er"EmZH$ZD VD y^DB@EldLyuwVuWUw;Om ;D$G#~)h^=GЗOLÿ}0+n\K]t'<ҝ}9/&ʋh__wIFFݏ?-JHC()zWz=}ͻo(+'S>چ~:F+tLwKuIiK87.䑭c#[.NGLgnubĸ1Lk~ o+o},X辇IYwFj[+.:>DW%9|~@gs:_+EON&]2[fK(aJ95~WϽݵW ,\DԫָHku,ٗZZ(FwvߖQ>=ggoxiNi .ߪt7[=gi>㈺Lm^#xmlkb|Tm{2'x.DFFFۏzDfD+.㡝Q}9@z>Ӿٍ,*o3T9g~m͖,w%姗.݋cWk~גӖr\ޘ(¿%^˾V:&[yX>t(jd733.V\D[;~>1=~_W|0}iݭS/;?a!%o0Rd<4⭷_y+3oDF"پ̌\V[i4j_FF]:qWw5Zqqوmu1߽o9>ގ k%Z~^|on !'}Op]i#kEm/;J~z/Dt=Jw[icV<.+3Mԣ+.Osb~# 3߽c a>o[t}7pɸ`{&ZHN=nko^[?S*'{qQ[7-m'*;RgZi%)_V.FlD+.*7k!}ķs)Y1}V?7x#ZiF%oIK"m(Rg|OGOv>7s St-njЁqf$F-gKڥ@hEI;hoO>tWb!/Yo98xQ]R_\{-mh/[B3yF~eZA*[3B%micڗ_a7{Omt2hA+eGr9C^tlzEZHC='kzz|&%5%!+W}?#}jc,%O; ?+V;Jso˼{"ɿeJm_=G+_\}-K[b\thJԺoţ[(A02FC7M0eE!}{Jϵ>Br:܋}S>b1_+;k7(?Zgf`[t%oKQ d=O}֭[;wާM,ӛV{~6͞OdȲ7l\kEs1V߲Q~JCMQmѿKϥo +ҞDjsҮ?Lۊ"(j-Y,т}JvS޷/=b .oB^vDyAzǾl~}wf>1b{a$OkehY>ޏ_G׊N\lъ'D[]MO|m<ϵ|.S2SFO̗_-q[{߃Zl#^I~<F^푷7~Aٞ#lBLFb܌uV~o}˧lJj*cguҞ8HS/Nx)=ۿ&'>IϘ ឡ!Cz~FC"D?ꫯocWϽ~on?|9Xcu.)Y=Qx.5ځ2=2-?=!g.{E:tYqVSW):4=拏,6,"-Q[U~Z{2!a8QO]f.Fz~Dg[kO+{|^6Cu(z}=cE_GKOnK{3݊7<]Tk:bM_l7G۹({'?M[{I[4Jx&xȃx(AzH%o4Q\Dm|W~KDkn>g؈`4S&0}Gk}K!+ΊxcHhQ. mZY{Έ><_˹)G.?sQ-K-}mQD} E1BW%Vt)\Ҋ=Nx,D!=ۿCDqJ*:Ɠ[$wGR{t1glda + k wO v@<؈ue LDk,7!-q8/SͿr,?c[Y-[%{A&}ngTF٬crCXu%#][Sʎ( G饬c'$az@5=v|*xD2}dS/"mny@y"*QλX_iCl3E"KX1 ʱex_TƨƏŷVN}Aʉ_yٔ4p,PNJ$pFk:/#1}ja-VlK$(?Ӡuo],RE⿧ιtsiy&/2%?\Hy2&u,oLnˏ'w&^yNu\m~( ;340Gi"m&A* (QO 5[%s ˏ.ݧ,"qyT5#ry0^Wg3ǜ.,,5kEyazOtAY=,/؜jgu/+]r#e_dx-Kgnc??޼o}gF}th'pP 4sy'pydO{.1%CYE-X=GM-*ҎTv+ax隟`h4?K`"H'm8g^!oiBhxQ2,@^[{]$rgf/i9%W =o'-u0)BMƖ5_:o:kq=ز k6nD|h8t>}@"EbAk_ҿO7D~ɏvba O^"klm1r#sh L$mErOeC{ڼ<Ӵ!xqv*v#-QE|^6FXmO gwFNj_cu1ITklY:E%#mR~kDў8 Z󝓿$Fk/W۰7I12XDY{Sol68cj2_i.Sux &Ce"xrrϐ?iC_V-9{#]dkcx%#_vV]2z:$,,~_V3>*q"EIrϐvu>NMHñQy#ioasq8[VK睭qsYҸϨ4O8-h3] #q^`"+?R,EoegQS_Q<?keKkt9)gzܻKcsh{&]gH9.뻑Ǟ!cеvIkdZ qe;ˌgɱÑ}S@/*ZY.gȶU<$S2eD:m>cB#iI\$񑵧w6iEd sa4kp)ޜ,߫w{rKguiZ_H;_BwD</R$ )"i[IVʽXCg$ 10ނM% ?yIFoɗ˒0.^aKَ9Huvo'muNx X$${l|]|≯۷:a %zDjIqT?e?'  ڿ[Wk?EvԭZz,!q k3N hH\KC|:-;~c+5FoQjrЛF|ZZ󌼏+IKc"NT$eR_8YLܴoCG'𑕿G{y51<{uoեy=O9d6~Y_Z~,>=}XCsZcH=%sLBheEanrXHƈZY/Y/5ma--@+ʛ=Y.gl=81/l=X5qKxH{.1cˊE5Ss$15vg}x'RڋiP8?h;V* Y)mdLY=pm^ћ.:y,AgS~zoHZje˽:PJ_uuE9 Z$b$]Yvf^}3Yc4:޽ԯ^5>( h,.؁J f6`"^"I< /`|Y "coK🥥ow2kqmog*?=xϨQcG\?':~5>Y?vOE.a}W|툤|.Pڈ]TRlG4wI# /xn/QeM>ZF_ eyA"o\n¸ lS#;W<HDELWHk?T[5 21[V[i1g#d,hRZӖQHYyXu-VE+F w7 ͐Ib<-=?dJYVg^,~Y%1\S'<)"DT8-?Z;H(?2-YڍF<~=H_øV_d۷o[Hg̟ODV:1p?k'3^Gȿwb2@@: V;ȲY59{ONdDKiXi_w޹TwN̦ݧDQѹg9luBu KW|ºǦj{E̸Zٹ$OѾhӭs^KBY9Pt26B\bqx{,?%\=hM +{oZzoY_j{4een-uIZ|"[T?D{O}#_W~WT%P6_\^ю(3domͣTR;=miTo{$+_wjGʿG OhC&}l69&꽗Cېqb?OdO$i{dz }d!Rg^souLh-3HJ~[**Iַlk{f?H鱾dϣ>=eP)yMby?fc17qq=H>؈-D"v|#-v?EBorkCGuy{ڿ߫?i5?N说ċ4^G^iwOw{T+{_"-!G=md֖RjlgeLt+]mMUYYԾ}XJn.bϼȊFE'd>|k[>o͙KLzwν:>Ԫx'Oyz=F7Mvt*MhoixEYBt՟ߵ>oc_O,3z̟V{Eʧx]%jYGuh {ɋj' /"׊鬸 ^Lysf"B-;"M l7d&_h2mịt{c뺩hZ0^~.ٺâyR7H_yOkivT[Qֱ-u^~Yudz qז%9b섥6*[CK[攕{6ʮ#%Y;k.$.ZlCOJMg0P:sHDs_F1mkh(g +Փh}Fl[fȳ{udfɣMwj)=z"ZzH-=6{ϟ ɘ~-%h~ XnL^Q8@R-m3!q8,\8Ka""g$.نxc.X8|cq#6O>hs^/tk51-c-֯|۲6foLGTm[ˑFOR9/m#F򻛕G."`ʥwQ'Ӓ$va%[Yv,~Cd̶v5<+eG1RSx,5X'^"/NyjqZIb\%lC +ɢ|"ox.ˏM{>wږx~Z_ڵ2]z\>b|լW)mk5M;-ejWkc^lmNXi6鉇Ep1I-CCz>Q-U52$w^[|/ID{뻡\,?(/CQ-eG[NZ۵3R +CL}w3.gj~L5{ DۼbYq}KG%DHY"~%rhclzNg8C9 ]3=HO˭s +x}6wnsN&"5"ߵf9hIFkX$h#."96;/?.ju|c2)(' \kQ70Iˉ $D4og ky߲!Huni#B>9ZF,9dWϣlsi/~H_v|96ʞ9z!E"Kd|x Zz\Y~tZ,ԛ>v{ͳVMKߣq^PwT~222~u(j'"!IpA4;I!??+ˎ{D5=t={KVIb#+^hPxh;W9mCgZ9p^rdd+j:d{+t{ Y],od?ÿGhOw"=rG"N$1A,QVT(ӵ{% y!&k&$.{[|p~3:SzYDK~ZqǮ&#Y[AH|vy0\7J͋Js"=S7JwG=ܒI&~u sHw4u0ok~<ʃåګwi1jXH>nb"{C5B=DlDJL8FًؖP=iksR54+֪,8R_z_YۃZeF:IZp45;զYe񋲄u{uݹ qn(%j6Lc=kg_ |f)7NW,>xY1g%RNjvt%ZFmX~ϲɹ\7%]fi{K`^+cy|ϮȲYZhqj ]О0f-m +A#m'K4y%oFLC6 ĿO궨K H~O ލO?Ӿ=ƙeÐC\Ęg?Äa̛6 }9<3/Molgl#: E/jQDnI9:dT_ais-֡$VRn&7鈣尵=8HW<$q'C.EDv"-Λfp!c$.߫D#GXϽa-6 hdZ6K~Sv.͡v|DqlYre=z֩Q>DdكnCFGu/o.±}D==23dӫ|7_dȲ +D-"ʖewc,Fb;%`Z^u}峗\{0 CWxtyJH_`΃'^lLLX˞R_:c;yz(ךjҼko yְ+W#Z)9޴ Nkmyc0^򩑅w8V&z*.sYM䍻t䞥c>;s a5&b{Yw=,o?+ӻ{ދaWW=X:{̘pHKj >eݲGS*norJn>*ٌ4]Qʦƌ/giԃYxڒ@ +5޻xj'w~sCGp>2+L`ilcm\pcHOOrxtfˤʯ8GHnj>rd!CX]<7vv77~hKߧw9.EɹS}V, +e (h4xK +Y>VWGŊk{-]hh~y[8<>Wlb|tԙdKn>%GڻZ:[;f|Z,B90$ J?A'c]T0c< ux{b+=vi9' ឣY,_97Ǿs$'t>b[6&;A毭wt!4hבw'}nF|KIb3XE߃Zo%ڿW{dUi?=ڑmjfe"Gc%1/ec+ň'"`"E}ߘ!64b,t`6}F^\6@{1 +1)gdi#k=ːmw4/ᕑ1- .g/)z)~xHxn.#!.BlTD7Hۃo[En0|yh,ND(%qىd@:KGeW?cDZ0E;ig?k3<4~.gV|hWћmv~⑫{gjI8B}".ɸI9b-E 1-e/"+_3Yi뚟BDd'b\$H;1 !=yoیaf"`wj1^ _h-^t +=VWWϛ,%k3[i1w}l(=i;mW?JARo/X@[ƁQp]3mB[l __]396#i/Ft`Q|Xix͔צ})P(uoLl=0J(ꉗeSD^cGK>sb[Z}.ϺwkJILGۇ' Gs&6궶*4_h|!᳆xv>;lL=ʏ-%kg[__?Kc約,`Gַ2:)i0j'Gd'o>͏n#5[m4ͬ1]G["vp bK9Vf\Clt4\$^,slٌJ~K࢝r?d 7bEu#VWWOX\b"yzu.UJ߫VϽu6,(n%yJ8͓e+ڣhKx}Fy홭+zw-B2F>.|[rt-F|MэZ=::~G&<1B +7^|C$aB+I"<_bc"zHwzn+wq;"D0NƧó^h2.q>|^Ko_[1?C[җgx/مhi3XC,$c+ c4R:69686<&^2H{葇"Fqu_:N6B 8CpFq'?{Gw|!6{[$iϹ,|E$!Wؓ>K!____ +-^]rzs96ˬ4zP,~n_oK"@[|tac!H Nc +&{&gg֋y]U̪vryqB>}VU(T'ZXƪyӽko'`ʭqO> WOl]]z2ą]0"ZvIBKIqQʹkl]Ux-,=R_u弐4*izܣ'^߻u6G/~ւLV?GbkN sFEg{\{C8%]k1E(c#J揣od/ZtwqK3"!w-%BʝgA+4{۸eJ?QTce^m\r;R2h⢳*ԖV$ q+x-C;fK> )h7:>V6YԮsZw]cHlZTH\Th| 1 v+#sT~uG}C3ϫ@[^C5Ƌ~Hh<;ާ}$~N~"?eA~iw;X COeihG^ h>O|NZSvseoxqN~ ga٦g)mZ?"|o!{V>Ȭ\S5]Z.nmyޚZr|bl7'YۀD/~17}93VP׿OZAVJ({P'GGk#d-$Z>\MgZ%\1 *EKbCҵ $cԥY=I^qqϝO)"#Zcs|'@:]Y8↋-X: \.MWzt]?Ds9(dFH8/kV/]ShkE #)ԋB&ly䤩crW+%m&>=i|&5_5x }c㱗_}e"dcv|B%^~jqze%BJ笹4_^ +vs9I/sjk]_c߂5ר_$q>vY*ws>cȲ#6V/'K5^Z>gԎYca?-. +=Dγj-8X.RN*^HN/_b].}F).1w6w; ikls [)W9w߳l:oޫ[]Ã$U+B.U8)JC3w|W S̽sf~}'c Hc"Qz_Z1Ѩ\ѕ-<df-I.*kk\zK}Ks;ǭ>Arڸ\[]8}w-Hm-}S܂x:Vkb,.JW j9 um.QkmE:kEV۩m9i=~wD=I>觃Ԭۚ<ݣ̣ ㊘Xy*dZpcrmy&Nm̸Mr望;.F׿Nla3{?_#n]0L[ʀ÷/͝wROo)u^hzuK$c4IYϨ4Խ'N?=C<ƈ8!6eܦ20 LDT/`Aiׯ^{n9*WDV?Ա_\QZm5!\̃BB?QhBd@\%Nsjn:i‹1l{#r^w[6j%>-g3K|?{hZr6~r(8^Ѷb~<>/r.ֻӗ[S`2[.ڼNqRI;dl13""f\C;> mXh }2([6wTu,rG1uZ(W(T_r9V-EQ[oY4/)5u2Fr/-]p99m_ϣ2[FSH-ʩmzb"y.Kc)BL/mry( QoOE*xC{rRRL Eyh\=s0䰑572=m}"]"4jҿt]i/ე~*N׋ԗU'"s%R9ufNFaĮZrҷ䖩dJZ"\FykN8oj]!EP1o?Rl[cVc3T\ 94.BvEf [rynQeL2]t[i KR1~Pﵟ?m൓К"y)|TSHmǺƊi.}3k[[{lE[q7'КM +Ω!b),0qF"kN:1ib>9m=|EcfSZc׿뿯I [pEcNujO{-7[ٷ9i ;ssQ-.OϴԳ߈4CEW$>KA +vYh߷dp $cpU͚EbU>E}sGJ3nJi]qo}#K/[əf/c߻ƐV[9Ak?9ek)%z)e{)CCוSyh/f""{$ІncS ; 0VnJ㑬5ڛn.EqD2Nմ.;Tǡkw]߲%;EƿG)$\sLX[DZ=&e\w\'sIZr܂e>ܱf3vJTL<sb#`BZ<6!"\طj\~ҜbYu~+2]a}_IR'5sD`_ X[OBc,{?~rh׻S˃M/~|残FcJ)YϣJ|I|Bk_P$ng!2y(rnd|\ +pFn0}\ˀco5m1[tO4.x:Gl+f"C|rE=M}>!gek\Gs]_5BKInV+z Ë0ъbk\mԺ87[e]?JRZܔPZ9z*ʳ/,.;_ ykmfڎd#OOdnΩ_60gK]/K]DbFJV1+~isE)Ϻ86ۻ&?wۏY+1]_|Af.ӊȘ$lCLRJ#{ +-h6~}st8;=&t]k'9[J JI(K1M3w_;j,smyV2Ov[)>+OmӴ__Q_u-Vw]O[*߳%񻯥#&¸+&cx߂њbv8F~"qt^h[Y}ܒ[1iyktr,ZIy=ᢈM=&tj['޼|e_?:_xxwwRdgOD?ܹvu8,[.b,]FP iy HB9m<&B.vv|~]zgʱ#RH߽?o<;zJcs4v<~jiC"ǚKm<?Ycͽ mE]y:W4n0m\j?gעeےq{@k6`Y>梁"/h\p MvNXh+-E׾Qd +ۨ$׿hH߳K"Q-N*7iWD#z/zQm)kL"ښ7I χq^LuJi_'O}Q嚱uݦV>!H{s6uٌ13b<&Py\ӷO1K +ws7zFV9Zw-5Ɔv% )\ ߊAl{Ydop] \9F[~E:O[>T>jxHy6볋]? 5svSgkR\-+RiUBJ)cy]KW-kh\s͑SV%F$#yqm3hH{vmZ;|EGhٌ)QmZxjq#V)rNt]Jr;y֞eZfl\`{\sŕpή^^Kb-L2B{2ϻׯ~__>[?p+oR]]Ilf:p'%> -c}kزƊ20- +()ˇeWZ91ځ L1NjVm?~7{ҹ(J+9Kzr|hlgۻCqaEs2mxfZ*)法8#YcVcVJ0-xK;Jb]׿5ܐ',Gˉ˩_}A_,Br*ġb~t.}|xٶQ]Nbls/?i.?XK9]3Yz>ַ@Y8d%"\D"֏#~{ݵs/Ϲ\2\b$LO1r^Mc#ev><8.\avH29bCydrLk.QR|7NB<]ҿ9"k9$Xؚ3$4$-q+Ǒ\hmuaݽyJmcCc_ +R>m㭶1W?~]"xyx#nnE1^gϷ%C'b.zo:(jEl9R:x}Ysp]}-[|eS:԰Ld踩Tɹ߰^NRsQB.gy6ٴZqcQ)j1sU:wgdEޠM0WWs\c6liWoar=:FVj+=%0v݋{][GOI|ZZqұVώk_$pQgqK\2aV`Z~&'`d"dhHߗÙ_dFVq5] Sa/`>yekPց凪YSm.CezfLMɱMSǤk ^¶E}QwL+QdmPmZN46SFzFI1y͝4٬U1f +.:w]֢Frv፷>KoUsx.JicAI]FڌrV+e>c1kzP~6R__$csj"M_-Kn/Npъ{bLdqFLnߟ9wKKϻ]׿To5~:5 .JߚxXb۴"r~P2_Ǐy,С';7C{=OyY۟E/\X\||%NzCc1yy(bڲ3QlPLƝ[|6Qin|]?%0wxzh1`L9DJg$<^֒~}LeKƶ`Ri`ۭuyL D)7q(C8#kV+?Hh.m md1A-X`o ZOyt]X풼Q?x:o'Us\dwtZ^ǑJY)"|mmzNM-vRsoPt987?ò7?’)O+&$&/5uYxmweKhECK6}c-E׿N/Fg$OSzkb/C~du59㱟/Ҹ{$+k|,}TX?{9t:Dpll>aNj|dK~[>:FNZ( z<a)Q+ϸUy]׿BܾL+EQn?gkyLc!K1"tOxNc#i[_Fu*9\`a_xmKXu bXTczciLؖp h:F.e"Ze>aYUq ?ֵJhJֿĖ9$]I9GV-~-dlc.V'OGE?^Go(?0_W{.ۘNZ$dFwvYD\ -c<yk~!m !mUC +;hqrX8<''vnjFlRx2]eSit);R+ߖ?wZ֓ \1CpL,YkcTG'j,$jl2+F~g.b)t5U/ޭFCr?R3nc"[,ț3a'VDg"ZL08(Esj.]t9oH[0r~ĶLۥُ5w= 4EXΕW=6(}mD[ߋ~ ȱh]X䡔K!&I[0MaCk(G#d"/}lb7tҟ,~cL4eo?+H|'g ioñM)I]o_+Ժ3%NRjWuǢ?۩z OQ'LݗsTobM1ONjP2OCx\v*sjʲS}qۿ6W=Wj˟7zX0ޑ~?=2|q­ar|H6o|k̐(CRrYǹooZ-PN[?QO)ֻy1*R#7}Ꜯco׷kJ2(v^ګQ5~O\Wj1|?syTh9k=b}-ۿF=m1kZ6>[s 3i>0+B_;2kBɞ5*o.~4dqrxHc#C3Z1t +zj{qҧIq9,RSV$M4ͷd5_`|{[:]׿ϳ,W|ChhK9s)eS^X|Xcfȵ.giςJh+5X6q8nH;eX:_?X|Rv)/ogK:Ky-˃HG~ObRҊJ|E{5LdqXN+j*O~o,3ei~M.&yBY7Dk9sTo(cS$M=<]qU?o5d>/<C8[|yo=#DDZLf!kKxk/˟7iVKky,NA6G>,ţ98F/8/&g$AWvE/}]2џ-lEx[{0Ѿ(S9<䥓۟c<T)]Oyypv ` XG2' }X`"E~"]#}GZisfk5,>8EJO>p` ُe{o<40?|E$HoOۿx`Ί򐥏JG]TwES԰KMLZY/wHvPΜk`BSꯕ[NTA(>{)D^to}g+~ uВZLZmWSE+˦|bq}77rQs_=3jm|4_ B\^aśygҗ/m'Vl]vy(껱XF#}C^^16uR,n kk77C]}<+cGEY<ٲ8юsXwb>DXw[ďZN-8ˋ範$g|n}$#M3{W|CYε#,+ +'{o%./ڷ3_x]siGLx8ZSq,CtHFlZ&m$}׿k6Дr[v_r&V+s +%ekF;"k4Fl9={2Xm.$Y݋iKV4Jtar?gɉ}K=yYs|GAֻ2r?n5 !f :;'7?`ɸa'4y.>?YHcZqѡT1C]!J kmܲ1tich}ߞ6%qLgo7Ҧz\qa.VRdUO?+vmɎEd{l݆RHsD5pԜu`SLqQ )}{9C;jlD7sT#װF[ҙ^aZD;cqA-`}G&k!-.ݑjѵ?Qΐ2[F)_ןa0T<~-WZW?K| "+wdw.E. '^"NTČ%(c}"̫MEmCwzQ%}ݒ7ڍ܇f%k3Yc#>%sb8N`8_cO*R.[Z|xM,^Z-j9v(R kl3r܌6[&tQkN|hkr/HߣlG^6|xI)Ex#仈OrOTq\e^5\D /{ĖQn6P/KzI 4LئdR3磕l7v?ߢ~9~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~V^?_2>D2g?@Uy:ʝbn@ R^ts/޿E܋V5}7dkeEg\} }w= 2d}VA^~^q ։gOdnאiLlhkWgfݟD%@Q!3zϮ,#C/mV~ #gL'h z> ^4; +אiL^4k׈;re gazњh=ӋصEF˔Ùfazz{=y":g-2͓i݋gx +3{c;cEcX#ce),A/Zs<0?+W hkg=GYC^=^tn4c\>?~nصtgzљNs|̑9X`'z3Ȕ}fagYz,:I3Y^DE9 w=dEj{=윟+ܷO{>zًYr6jYzFΐq#ӣgƣq+?{ +d =ǯ|~_ԕD{D_sވN3O^?xd~ҋF}/O^W9ew/">;5CόQ?[1 1 L}MwmXvh?G]="~e@,z`EУ.Xvh?G]="~e@,z`EУ.Xvh?G]="~e@,z`EУ.Xvh?G]="~e@,z`EУ.Xvh?G]="~e@,z`EУ.Xvh?G]="~e@,z`EУ.Xvh?G]="~e@,z`EУ.Xvh?G]="~e@,z`EУ.Xvh?G]="~e@,z`EУ.Xvh?G]="~eQLxױ 1A!+x;&Wt s> o&6@,z`EУ.Xvh?G]="~e@,z`EУ.Xvh?G]="~e@,z`EУ.Xvh?G]="~e@,z`EУ.Xvh?G]="~e@,z`EУ.Xvh?G]="~e@,z`EУ.Xvh?G]="~e@,z`EУ.Xvh?G]="~e@,z`EУ.Xvh?G]="~e@,z`EУ.Xvh?G]="~e@,z`EУ.Xvh?_)5{ױ 0ArC`rFs}wFh~e@,z`EУ.Xvh?G]="~e@,z`EУ.Xvh?G]="~e@,z`EУ.Xvh?G]="~e@,z`EУ.Xvh?G]="~e@,z`EУ.Xvh?G]="~e@,z`EУ.Xvh?G]="~e@,z`EУ.Xvh?G]="~e@,z`EУ.Xvh?G]="~e@,z`EУ.Xvh?G]="~e@,z`EУ.Xvu׺lwױ AAB#GXWJךsX_56f\VŢft:Fާp|atpbCCv.t߬V2kkGOJ^`?8V1߅wW[]9Zҟ؝.Q}h.g>W׎~,"ؤs9Sa.JsssSͳ~.tpL_޻4d2|؎.޹E~~0*.E1Hw!eƴEtE96..~@N]4XEƴE]tQ̋ѨjcZ"bN?3VUD|Rz.*mjiZܥyֽt-vѫܥy>h( K]sjrZ|.,p8c>WMMMYN]W?gtzzZTML ׊& ..I#xyJ~`7oX|͒uXT̞] M8f1'aR_;JFQuuuUVd,n,]A̳p qiR#]\\TrYU_~`k."O}eG#CUx^E@_irg½rpt@x8 t@N@"\/~.t 9]c"{?@N@rB P1y1 +@A?;H0uPE9s?.E.=Pv~`]{"أe(h?@EG.=Pv~`]{"أe(h?@EG.=Pv~`]{"أe(h?@EG.=Pv~`]{"أe(h?@EG.=Pv~`]{"أe(h?@EG.=Pv~`]{"أe(h?@EG.=Pv~`]{"أe(h?@EG.=Pv~`]{"أe(h?@EG.=Pv~`]{"أe(h?@EG.=Pv~`]{"i'׍y/6l6I$ˌZfm3Do#E`=j?@N_Qr"Xz~֣E /9}G`=j?@N_Qr"Xdo;;.5a9'`=t|~&cy'`=k:J/,whuƽ1qlx`Rk:j3w(5=$}Q:~>[?1<L*hOݽwghuƳxބIQ`}iFao̘-|_bQpg,7û0}Q:j3wW =rOڟ'1⏾g7}g,]@о(wޝA;q9HXOc}o4=X+0}QObG%yG>x,xu+fx IYz䩹nT>`/ͱ[޳u%q֔rlνb/?D_4^w([9Jߙy8=eXiZ㝢{9cTO磜׷+ݙ܏E%9r~{$њ3[ҘWrt/ywhphj~x# m75:V[^]7*=6_c/Yoqj%kZow>ֽ"E/鸺$n3 +jٞ9(0Qg [3"8pg`q":M_D([3^g /-G` pj?@N_Qr"Xz~֣E /9}G`=j?@N_Qr"Xz~֣E /9}G`=j?@N_Qr"Xz~֣E /9}G`=j?@N_Qr"Xz~֣E /9}U++#A 7}V$T|rt#A 7}V$T|rt#A 7}V$T|rt#A 7}V$T|rt#A 7}V$T|rt#A 7}V$T|rt +ю0EQkH0(UJς,Tno;R'忣C@W5li,fi"`vJ~h"`?+]tѧ}T_~.w_ +PK̳{G;ot]iì\E.j5k뵋_)>F]=5fuѫ5|c_F"tNtNtNtNtNtNtNtNtNtNtNtN޹УSE@w5.FU7ϕx$8ݻ +0EOo EpVa)(ܞ«zs]^Lt]tME@E@n]Ft{~w