diff --git a/PixelComposer.yyp b/PixelComposer.yyp index d2c7176d3..9d52d60c6 100644 --- a/PixelComposer.yyp +++ b/PixelComposer.yyp @@ -26,7 +26,6 @@ {"id":{"name":"node_3d_obj","path":"scripts/node_3d_obj/node_3d_obj.yy",},"order":8,}, {"id":{"name":"s_node_grid_tri_noise","path":"sprites/s_node_grid_tri_noise/s_node_grid_tri_noise.yy",},"order":22,}, {"id":{"name":"o_dialog_menubox","path":"objects/o_dialog_menubox/o_dialog_menubox.yy",},"order":1,}, - {"id":{"name":"WindowMaximize","path":"extensions/WindowMaximize/WindowMaximize.yy",},"order":6,}, {"id":{"name":"s_node_blend","path":"sprites/s_node_blend/s_node_blend.yy",},"order":5,}, {"id":{"name":"s_node_rigidSim_object_spawner","path":"sprites/s_node_rigidSim_object_spawner/s_node_rigidSim_object_spawner.yy",},"order":5,}, {"id":{"name":"draw_text_function","path":"scripts/draw_text_function/draw_text_function.yy",},"order":11,}, @@ -235,6 +234,7 @@ {"id":{"name":"s_node_curve_edit","path":"sprites/s_node_curve_edit/s_node_curve_edit.yy",},"order":0,}, {"id":{"name":"node_gradient","path":"scripts/node_gradient/node_gradient.yy",},"order":0,}, {"id":{"name":"textBox","path":"scripts/textBox/textBox.yy",},"order":17,}, + {"id":{"name":"pathArrayBox","path":"scripts/pathArrayBox/pathArrayBox.yy",},"order":27,}, {"id":{"name":"node_statistic","path":"scripts/node_statistic/node_statistic.yy",},"order":7,}, {"id":{"name":"sh_draw_surface_part_tiled","path":"shaders/sh_draw_surface_part_tiled/sh_draw_surface_part_tiled.yy",},"order":1,}, {"id":{"name":"o_dialog_add_node","path":"objects/o_dialog_add_node/o_dialog_add_node.yy",},"order":1,}, @@ -402,7 +402,6 @@ {"id":{"name":"s_node_image_copy","path":"sprites/s_node_image_copy/s_node_image_copy.yy",},"order":6,}, {"id":{"name":"node_boolean","path":"scripts/node_boolean/node_boolean.yy",},"order":17,}, {"id":{"name":"node_grid_tri","path":"scripts/node_grid_tri/node_grid_tri.yy",},"order":21,}, - {"id":{"name":"window_command_hook","path":"extensions/window_command_hook/window_command_hook.yy",},"order":3,}, {"id":{"name":"node_average","path":"scripts/node_average/node_average.yy",},"order":5,}, {"id":{"name":"node_fluid_turbulence","path":"scripts/node_fluid_turbulence/node_fluid_turbulence.yy",},"order":10,}, {"id":{"name":"sh_sdf","path":"shaders/sh_sdf/sh_sdf.yy",},"order":1,}, @@ -469,7 +468,7 @@ {"id":{"name":"node_VFX_spawner","path":"scripts/node_VFX_spawner/node_VFX_spawner.yy",},"order":1,}, {"id":{"name":"s_node_equation","path":"sprites/s_node_equation/s_node_equation.yy",},"order":0,}, {"id":{"name":"sh_color_replace","path":"shaders/sh_color_replace/sh_color_replace.yy",},"order":8,}, - {"id":{"name":"Apollo","path":"extensions/Apollo/Apollo.yy",},"order":5,}, + {"id":{"name":"Apollo","path":"extensions/Apollo/Apollo.yy",},"order":2,}, {"id":{"name":"rotator","path":"scripts/rotator/rotator.yy",},"order":11,}, {"id":{"name":"s_node_edge_detect","path":"sprites/s_node_edge_detect/s_node_edge_detect.yy",},"order":20,}, {"id":{"name":"node_fluid_add_collider","path":"scripts/node_fluid_add_collider/node_fluid_add_collider.yy",},"order":6,}, @@ -566,6 +565,7 @@ {"id":{"name":"safe_operation","path":"scripts/safe_operation/safe_operation.yy",},"order":6,}, {"id":{"name":"s_node_rigid_override","path":"sprites/s_node_rigid_override/s_node_rigid_override.yy",},"order":9,}, {"id":{"name":"s_node_array_get","path":"sprites/s_node_array_get/s_node_array_get.yy",},"order":3,}, + {"id":{"name":"o_dialog_load","path":"objects/o_dialog_load/o_dialog_load.yy",},"order":12,}, {"id":{"name":"s_node_BW","path":"sprites/s_node_BW/s_node_BW.yy",},"order":11,}, {"id":{"name":"sh_fd_turbulence","path":"shaders/sh_fd_turbulence/sh_fd_turbulence.yy",},"order":22,}, {"id":{"name":"s_node_compare","path":"sprites/s_node_compare/s_node_compare.yy",},"order":1,}, @@ -694,6 +694,7 @@ {"id":{"name":"s_node_sampler","path":"sprites/s_node_sampler/s_node_sampler.yy",},"order":11,}, {"id":{"name":"__background_get_element","path":"scripts/__background_get_element/__background_get_element.yy",},"order":1,}, {"id":{"name":"node_animate_curve","path":"scripts/node_animate_curve/node_animate_curve.yy",},"order":0,}, + {"id":{"name":"window_functions","path":"scripts/window_functions/window_functions.yy",},"order":27,}, {"id":{"name":"sh_fd_calculate_pressure_srj_glsl","path":"shaders/sh_fd_calculate_pressure_srj_glsl/sh_fd_calculate_pressure_srj_glsl.yy",},"order":9,}, {"id":{"name":"curve_bounce_function","path":"scripts/curve_bounce_function/curve_bounce_function.yy",},"order":1,}, {"id":{"name":"fd_rectangle_replace_material_surface","path":"scripts/fd_rectangle_replace_material_surface/fd_rectangle_replace_material_surface.yy",},"order":23,}, @@ -826,7 +827,7 @@ {"id":{"name":"__view_get","path":"scripts/__view_get/__view_get.yy",},"order":1,}, {"id":{"name":"s_node_texture_map","path":"sprites/s_node_texture_map/s_node_texture_map.yy",},"order":36,}, {"id":{"name":"fd_rectangle_create","path":"scripts/fd_rectangle_create/fd_rectangle_create.yy",},"order":7,}, - {"id":{"name":"libfilesystem","path":"extensions/libfilesystem/libfilesystem.yy",},"order":8,}, + {"id":{"name":"libfilesystem","path":"extensions/libfilesystem/libfilesystem.yy",},"order":4,}, {"id":{"name":"s_node_level_selector","path":"sprites/s_node_level_selector/s_node_level_selector.yy",},"order":27,}, {"id":{"name":"random_function","path":"scripts/random_function/random_function.yy",},"order":3,}, {"id":{"name":"s_node_input","path":"sprites/s_node_input/s_node_input.yy",},"order":6,}, @@ -923,7 +924,7 @@ {"id":{"name":"regex","path":"scripts/regex/regex.yy",},"order":0,}, {"id":{"name":"node_invert","path":"scripts/node_invert/node_invert.yy",},"order":6,}, {"id":{"name":"o_dialog_history","path":"objects/o_dialog_history/o_dialog_history.yy",},"order":3,}, - {"id":{"name":"libdlgmodule","path":"extensions/libdlgmodule/libdlgmodule.yy",},"order":7,}, + {"id":{"name":"libdlgmodule","path":"extensions/libdlgmodule/libdlgmodule.yy",},"order":3,}, {"id":{"name":"draw_background_stretched","path":"scripts/draw_background_stretched/draw_background_stretched.yy",},"order":5,}, {"id":{"name":"s_node_path","path":"sprites/s_node_path/s_node_path.yy",},"order":0,}, {"id":{"name":"node_tunnel_out","path":"scripts/node_tunnel_out/node_tunnel_out.yy",},"order":7,}, @@ -961,7 +962,7 @@ {"id":{"name":"node_bw","path":"scripts/node_bw/node_bw.yy",},"order":0,}, {"id":{"name":"sh_de_corner","path":"shaders/sh_de_corner/sh_de_corner.yy",},"order":15,}, {"id":{"name":"node_rigid_object_spawner","path":"scripts/node_rigid_object_spawner/node_rigid_object_spawner.yy",},"order":6,}, - {"id":{"name":"file_dropper","path":"extensions/file_dropper/file_dropper.yy",},"order":4,}, + {"id":{"name":"file_dropper","path":"extensions/file_dropper/file_dropper.yy",},"order":1,}, {"id":{"name":"sh_fd_advect_velocity_0_glsl","path":"shaders/sh_fd_advect_velocity_0_glsl/sh_fd_advect_velocity_0_glsl.yy",},"order":6,}, {"id":{"name":"sprite_loader","path":"scripts/sprite_loader/sprite_loader.yy",},"order":10,}, {"id":{"name":"fd_rectangle_get_material_surface","path":"scripts/fd_rectangle_get_material_surface/fd_rectangle_get_material_surface.yy",},"order":12,}, @@ -1056,6 +1057,7 @@ {"resourceType":"GMFolder","resourceVersion":"1.0","name":"preview","folderPath":"folders/dialog/preview.yy","order":12,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"widget","folderPath":"folders/dialog/widget.yy","order":14,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"Extensions","folderPath":"folders/Extensions.yy","order":9,}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"Gameframe","folderPath":"folders/Extensions/Gameframe.yy","order":5,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"font","folderPath":"folders/font.yy","order":7,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"functions","folderPath":"folders/functions.yy","order":6,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"3d","folderPath":"folders/functions/3d.yy","order":0,}, @@ -1171,12 +1173,11 @@ {"resourceType":"GMFolder","resourceVersion":"1.0","name":"sprites","folderPath":"folders/shader/sprites.yy","order":20,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"warp","folderPath":"folders/shader/warp.yy","order":41,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"sprites","folderPath":"folders/sprites.yy","order":12,}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"gameframe","folderPath":"folders/sprites/gameframe.yy","order":2,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"texture","folderPath":"folders/sprites/texture.yy","order":0,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"Steamworks","folderPath":"folders/Steamworks.yy","order":0,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"UGC","folderPath":"folders/Steamworks/UGC.yy","order":0,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"widgets","folderPath":"folders/widgets.yy","order":5,}, - {"resourceType":"GMFolder","resourceVersion":"1.0","name":"Gameframe","folderPath":"folders/Extensions/Gameframe.yy","order":9,}, - {"resourceType":"GMFolder","resourceVersion":"1.0","name":"gameframe","folderPath":"folders/sprites/gameframe.yy","order":2,}, ], "AudioGroups": [ {"resourceType":"GMAudioGroup","resourceVersion":"1.3","name":"audiogroup_default","targets":-1,}, @@ -1488,9 +1489,9 @@ {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_paste.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_copy.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Shiny gem.pxc","CopyToMask":-1,"filePath":"datafiles/Sample Projects",}, - {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_window_minimize.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, - {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_window_maximize.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_window_fullscreen.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, + {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_window_maximize.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, + {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_window_minimize.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphics x2.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_window_exit.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"default.zip","CopyToMask":-1,"filePath":"datafiles/data/themes",}, diff --git a/datafiles/data/themes/default.zip b/datafiles/data/themes/default.zip index 4752a153b..cabf80ad7 100644 Binary files a/datafiles/data/themes/default.zip and b/datafiles/data/themes/default.zip differ diff --git a/datafiles/data/themes/default/graphics/icon/graphics x2.ai b/datafiles/data/themes/default/graphics/icon/graphics x2.ai index 2dfcc5c50..a68b02552 100644 --- a/datafiles/data/themes/default/graphics/icon/graphics x2.ai +++ b/datafiles/data/themes/default/graphics/icon/graphics x2.ai @@ -24,8 +24,8 @@ Adobe Illustrator 27.0 (Windows) 2022-11-26T09:16:08+07:00 - 2023-02-21T12:47:04+07:00 - 2023-02-21T12:47:04+07:00 + 2023-02-21T14:16:41+07:00 + 2023-02-21T14:16:41+07:00 @@ -39,7 +39,7 @@ default uuid:65E6390686CF11DBA6E2D887CEACB407 xmp.did:7647d1b0-ea83-ca49-b85e-bbc9513ca4bb - uuid:e577048d-91c6-4b51-81ad-ceb94fe5ef88 + uuid:9f3930e6-ba0b-42de-a437-8812bb04d767 uuid:673f9e21-4d80-48ad-ba53-812ef9241a78 xmp.did:efa7ff44-b17d-d449-8cbc-4cf525bcc8d1 @@ -309,20 +309,20 @@ -endstream endobj 3 0 obj <> endobj 35 0 obj <> endobj 37 0 obj <> endobj 5 0 obj <>>>/Thumb 2713 0 R/TrimBox[0.0 0.0 16.0 16.0]/Type/Page/PieceInfo<>>> endobj 2710 0 obj <>stream +endstream endobj 3 0 obj <> endobj 35 0 obj <> endobj 37 0 obj <> endobj 5 0 obj <>>>/Thumb 2751 0 R/TrimBox[0.0 0.0 16.0 16.0]/Type/Page/PieceInfo<>>> endobj 2748 0 obj <>stream H10 ݧjqvR  Ƃ–* N[t-Z ZYŁzloZSP7E6H(6^\SftHfsF33Ü Y -endstream endobj 2711 0 obj <> endobj 2713 0 obj <>stream +endstream endobj 2749 0 obj <> endobj 2751 0 obj <>stream 8;Xp,rVCYe!!<3,C'.`~> -endstream endobj 2714 0 obj <> endobj 2716 0 obj <> endobj 2717 0 obj <>stream +endstream endobj 2752 0 obj <> endobj 2754 0 obj <> endobj 2755 0 obj <>stream %!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 24.0 %%AI8_CreatorVersion: 27.2.0 %%For: (Makham) () %%Title: (graphics x2.ai) -%%CreationDate: 2/21/2023 12:47 PM +%%CreationDate: 2/21/2023 2:16 PM %%Canvassize: 16383 -%%BoundingBox: -48 -242 574 0 -%%HiResBoundingBox: -47.3922855564306 -241.550567626953 574 0 +%%BoundingBox: -48 -240 574 0 +%%HiResBoundingBox: -47.3922855564306 -240 574 0 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 14.0 %AI12_BuildNumber: 339 @@ -348,9 +348,9 @@ endstream endobj 2714 0 obj <>stream -%AI24_ZStandard_Data(/XN.+֌ djIK Y}!͕h$ Vzs C3ޫ$Ex'|z`飼AӦ3;j *zʒr%M5vra98s85S#3nN1 -? 4x - BE - *&, fQ#0;͏~ f\k`p]4`X)鹧$[uRw71EYۘeXėБUϡ@\葷S-%>@1<'=k ᰱ=氕%t%18 8z9'o\RVX[b/ҩQSKOF#l>uI"OF3U/*pdvTAc^%d4΃b7N6hErVJ6\8fEgwݝ'&c4l'u/chdur1tTfwWE^d'=E㲮7ˬCd:]4,-iϾrS;~TMnDKM\òJj#dr040Փ^"A4RhP6VFu;Ѩ[ꗭl5o=%?ϻl6(? ,M K K.AEkO2I#Os*D\  -GNt$eît\ҸL@ɤ'qjt+qRW"(K2iXwnx'=OQ2z)Idj ' ?2c4@^<`xP.ńÃ h`D  -,&0q!D Pp,0d0&aL800cL1=`ada܌v'\i8*T1Qw&._ʻ 3EaԜjFc%*ATopxOajUU'f8FU(!1 8"4Y(F ^kec|]1.JILJyl25i77LhDCDA  >dDDCC6`5ijF\-0ăFIg$fQ%jCl  ( ".!1@a\`X`|L SgI0 %[`锪U^Xl6ԡg`~"npḧy g& \`8D,F\E,0Uhem !FbA"b! a A{puq nzxC/piI9iV2)Pdbfj33Rį]Ԍf(҅n!MeѶ-Zjo-:kIFV(3׌hhɌϑQ9DJDEFN:5=EMu{y:ء kj?|$"zK3n!,^p'q B#'ikK4ԡ02O9GBı髇 *EC5HD@8~JD,0UF`DC]I}6˵I!Yje /0$.0 p۪ KURV%0!Yp琎0\s(Z`h> -0|!lE 7>stream +%AI24_ZStandard_Data(/XlnF(+֌ djIK Y}!͕h$} 7ҽ"tA\;Ќ3fI%8:X{(/zдi$ 'uJީqI%svAm壤]L枾̸9#@F*&`(,`B&*4 +  +, IGHlZ4?YO2Dr9qvȂ-cp瞒lQIyfncTzKVժPoTd.[թGTA̓RֵpXIs{jsϜJ.G)x],-?Ԩ%o'6QQS$Hn;SR:MGٸnG4VI805YBF<(vdci[$qk*Ol#ɅcV4zqݙ\(k|^Yh2FvRl_72nNV'WLGj~w%X4Eh|}#Y4.J 0}:DSޥLґ+7]ܝ#GzMh$F5,6J:+7 C Y=镹,AC).hieT jٸu~ϦN^3]#mqkbͰİQ-4dI9Bհ,ѯpDGR6H'%D KzL*i||BHG'zN+҉$.qgwu/!_MVFښpb OylN*c::F#U(X`0 +0,* PL8`a ,*PX@T px@Cc tc:H0:@0f0Ca +6h A͈lwRʕN3ug8L5z0=S&Mͩf4V$Au 9 QOLVU5LNVmX`*;|CH,0Ӏfed ̾66z5ynYctp$&V<6wdVԚ&DCCDCF`E4"b W|p2!LNC +#n.Aag#\`$Q3 3\`hhiݡ wYRZ^f6 Aa opxxX` 0_.0,0Paa&{$|x-0HtJժuW,6P3|0B?stvwy p7pNKePSf<3.0"#."*aFܲ6 Q# x0 N=p7T=Ȉ|4+q(o2ST3δZfT.mjF3xVBW7_ hۖd]|$_#|+{YIFkzdd4d(PFTC%"#'ȁ"HZTUVN=MuWazN7p·s8by4P5\%PvC#1 mh6X]E8 FArNw3Y6j3mɌ26˳̰Ɍ,#/O1J!"%ZwH BCb" +qw?!Fx@CA ăCÃC{CC`s(rqJ\`pB,0A " }<1I(EE[2niv.nxV,0Pp<:[˺_-߱ +Of$5Cx5ӡ|ab""aшxph8DBD.0   !PDx*G){b5VzOGuܘ̠NeFTX5 ^wS̓x˚#!!Ro 4*s]VVVC5<DETDIDjTVfgghhiikx00 5mvÃ!a KxGWgg5<E  t@ l3ِ)nħ ` nlhhp:A q FT#0( K%$ $$$h" $$89xDpq,D!$$J`QoP 5 xPWFr-aiHևZ`pCDCsa g4HD@<,04@CC>3i@ @cb-0<9# ;/) ʡH"rpt _`[CA"a O<[5Pa$.?ܡ>?^DJdDBC:dC6d&&iY@Iٜ@|@l#ѐ8(qqp?;;Na` f x$p@ P@AEӳǒvyN"Ɍ:YaA+ (Ѱ 0u r0;: "$P{|CÃCă@ + ! pE`DF987M Mg `@` *\TX@ ΠP"E ȀE (@@A +*Lh„."@ + &0p 2PQb + .,>A D $HEPq1A.,&0ab"X8 +$ , D *LXTЀ„ + h !B."2  $ńT0pĄ + +F*PT*N`1AB T  ` paq$ 5@ Lp +q\X@@qQl@`GT`L l` * X $HpA + ,,*,0T8pP111111`p1 \LAh`@a"80A ,*D 8@" pA,`!A .`"L`Pq! +&6AŅ60 .$8X`BEdࠢ0` l@A *8E6 .,&80b"*&TLppQ&A &(,.aGŅŅE0Hp &vRrBS*XL@IPaqCx"0q1B)u Uv}LX91O `aQJ=, +\ThSFT|A +\X\PKaB & +D@b*.0QD$<;,0AA &L8 (TL`ƌ&4 4``zpРq83̘aT28wm,3YyB .&&H`l1A;4-蛓. ^eќ̸i *6Oڕ̸Ù2L PT0̲ʷˌLk\QN3ϥWBȠIFd47أ{*Dp_es~I/JvE#3Ań n2=LiRՈCir Q˷U|+qfƛuiίМ3QLs?ec">6Nryc"דwM93޿b'HD"ElҚR+K^CF/&za5hNeXau~TUjFoPhG%(jshA+Y4~ڨb$aϐndyR6z{ULtF*Tf坆n[B"Jt.}n8FKY5mJ4\璂kZLݛdr&]Tw*3J+Me>j?~qcKK6h!!7v댘(ҵՐS++ -EټSΕRdQ<1ȧRtT*#c(붚Qa}E͜d鞫R&t]$:QJXj^h. Du6u L7wr]$=RRa&5 q4bH<]ZYftVJm,!{,ʹ_K4!&VD,#TFIX"}:e)gvĖѠwXjwG~'LcÒ'Lr:{VP7a))wYצ4g3+9o毴Ć^ ufQmW+S(cШvPQ;&C;,y8fАogq*Q婗HWBl6AxU3*M-]υYv|3˹3d5vw>BhTg.򃖒5qs HUO q:2Umf(jݲ&DhWٝ]M]΋n·chQ e؋sfz.-}kW/|W8MFA񇆓35׺{u!'JLν;nsޥ}Hj,~R{7ôTy8t3"I*iòٯYډ>bTlA"Ucwgwi+cDش;ޱTtSDͣu,k/tXc֓ŋ.d7]DdfwNҐ]-.n)5K<<*;T6>l_+ݏZi{1˙OmN4곮ʩ|ݽԑёSw4WzXg ŕI(Ta%e}6$}Yd;BCF\0ݫdFt7A#Q -RlxTJR} je]X; -}w̖PQ3`o\DLϱ-玿$<3Ye"z]H:vu?i|6k+{Y:iw7 IբA\wy#σw5Cɳ EJ:R|vYZo3#"M3_ޞd&4{)U7&~z{ %ٔl~=>#r=]VD n”xT6BDrC3!>.l#%}*}7)>L}OݑZ5{/Sj5%j{eQOd)M9oؤslOY$#,ʒk6VE<`5Z}WWؚoF'͞Jf:5߳3J~{#[8?6A\9ߤ9.e')%KvA"]>=wM@)ǩ.exWWzJM&OL*խ,+&VAKLjҸ]VNϒd~xy,Τe˄~Ia/g,|Zk-GWߍvϻSɷW[]clL2_#M!gA:[-XrԲيlMɓ4(3_JNy)XX$K9OeWd"|f|Z罖(D= Q 4w-~jM3}KoybMgWDZLo*od^XeZVݱbVڽlFJ]*'Ii׽$f,hEإt%ws#E^k,3))v$m|H6YbG~\VHm};IjPZk򚴼*aɯ&~[O2ˌbz| "P]:򎲮{!ąEw +@ s1CDYNwnKʒA4m|R9rҤ"@o=Jѫl-lXW7I/rYӌ_O 9gso~mT D*}lc)e'ډ)E{'E5esfҽN:Eh!٤5TWM^4ՙM$? )k2EumќdÊٓV43! +$5>Ռ;*ߠҏJ9Q1ЂV>R9iQHG!,9>m,>h +U&; ݊2EN]Z2qJEcjJh`;%:7M(VU2H9{#ygV +$<|^ +\;tfzyU;!lNCBn1YQk-!]VD5>!M--2Vy+hyED5 L󋷔}+1 yjc.EO#GB,UXG"Dé2eQm5)32o9t1=WOLdItuUQEsYXF&)L3}^%feM"Q +3ISǤCL22۴Jm,!{,ʹ_K4!&VD,#TFIX"}:e)gvĖѠwXjwG~'Lc$͑ΞU$TDmmXJ +]))J+#Dk%GTՊ+'o"<4-TԎɐ6;5K^2'84Yx)lZ}>%I4HvL)MړҤuT9BiL*Q婗HWBl6AxU3*M-]υYv|3˹3d5vw>BhTg.򃖒5qs HUO q:2Umf(jݲ&DhWٝ]M]΋n·chQ e؋sfz.-}kW/|W8MFA񇆓35׺{u!'JLν;nsޥ}Hj,~R{7ôTy8t3"I*iòٯYډ>bTlA"Ucwgwi+cDش;ޱTtSDͣu,k/tXc֓ŋ.d7]DdfwNҐ]-.n)5K<<*;T6>l_+ݏZi{1˙Om +N/Qu|VN=T5|Xr:h(HJDzȐ&g ()&ɰce|"2$^%4Q RzfûR;L]nW+zzoqVcb{"jg~]n9=w5%n*+:4FrQyNyV^[<ݓrAD!I:hI;o)3Uo ohuX:'o} kf?F鷦HLuYj4~eZJ1u奲J&VLۍ >BH7m˞tY^*_9Ϧ4KcÑ5uGP;x/؎ˣsy%JT6k|K%|T9{S<>*aɯ&~[O2ˌbz| "P]:򎲮{!ąEw =% 0UuL}qt'yG*;kZ,eI:4^%hyc\Kg|H\ ^ɤ8x5LB[U^7V#/4Xa(ϧl*/Dy!O*[-[IuD9]v -wKJ(3$fGt%Nor64\ixBI+InΦcuU4S6Y#e쬥qK海lgLtDd66̆j`ղL![)ѪpD71fvqjg'VbE6.UIyd1f_cǰW11J/_35+ \452<&cfIP*)V;J5nÔO5y$B:| jt,#XhҨ1bAd!#M/X_Ø:_[IKjկn]ٳZR&/CRxP"yfRvH/[8uPlSLlh#\ֽ8K z]ϙ)5j9a<3fXeX3IN[:ǑяIB2&ƴ7{U=!5GN !Ѳ|$Kʳ;"Jm&/QLss"ZKCIl fe#gF%~dZQ"mcEl92*C]Ʋ:c~9G(iJrYXhWגKhO:˖<ݝc -ˬx5Va}Jx%Bs 2)^][}PƄJ)2mNFY7sta>*2*5YaGfu - 5QSwaJӴZ~F:\VZ/uVYI&>ȒN^4 WeݤEcEWt ُ-i)Ff$ tK,oBB1gLt-2A %n_Y}KóV1>x65Я0Cvnsl:l OVte eM/,Knխù%?ʈ۲E?ާШ}lfJ8gRU07:d2иc^lƹ|0OstvE(' ˈzu_fz7[FC39kw*g_Ns:?wh_/og9ߡ9}qN2wj>M[R4wO2X#»7Ғ,;iu Ѥ54֦%!iaDF\dITvcx':BYޔH2q ˊ~]6cuiزHΌO:dhx322ˆshT#e녔c$2DtZ]YXbUՑQFRԞ ag榫F;aFYڜdGf#xdW;Qe3ڬ. vvti}P.Gpe"ەLt̯ʧ04 "IjI!+C֜BzdbqӫD)^u1#u5/w5*E*=sI42E'I5l25lgWӝUR0MDf8 sU(9W4^Ȇ젉pߩBl+]3x٨Mۧt%9zNc_NbՉrazծvf¾e]Ǒ?tǗh5_V;*;J{c2ײϡ;&{|m6FΘSBo7ʙ)tdi:L::tyĪj`shRn: ٠\ɒZfnݤjMkt%T婏vѰ=r4fhuf^/V^UKkz2kr*-V%CEUtFY9meY4t:KۡIiƃrA1C#މxY4֝X#懝r31V6Yem.iVz& ODw*eݧ/yon̡qPYrR9^uߣs` TѲL^^"ј Mz6j -;6U{Pa* ޸եᨧtPꃃI4BC,|l6=vC eIf*a˺{V#I8ɲ;2,V|ېdˇc1ɦFI,%g:7A+E(9wTG~*kK3yj>4 qLnÖDccsѬ5xH͎R<,~3~f>KxL(3v&EWɴtLjO<)bJN$~p&}WXB=itI1,'.̄W:5 nMK}c+͘%ugdD>z콾n圷VHitiU>ևe?]QL*n,IS~\êE}L(XgMKnE";he$$atIWhkz{q 3}̘QS3ΡMN=1eۛ{SLSp*@x6]IV+\TPL , H $L -,00Q1"Hxx` -Hxx *B*"x` - p0B*|(^KžUl1K4L(˫8%Ob:M2uiXUr}t%C-V l)Ó)ak[Bf$IL3]*e(H\wJbGw<PIxc,(MJw?)Nnכmx) ew4r+i3D-9wʜ"XMifQh˙$WwObΙ-s̭O?'暹.펓(Ygs=8XRΡMTCQ54}p.E=m 뫽kgtO"u^fsZ{%$hjR}:e^gVQPޜTd9XȽ'f-Oq0N ;M2~,,y^*/?4cD2³)YNB"X-wd-OQ+618.K`KSyGgxBOv,C<4ow3F7mAt?Al>1kg<6r)6!9YnYY;vbĢ;O J]N~FH(E4Ho$F̒ nѵVCy]4(x|oš^4^V\+*X,6ˉN~')={3phea #i!*Ɋ֎\^iaT7-_7jvTSN=O.X(4 +]dr_ Xe78x8X?R,Y2H'R$N  ga~X݈ٔԈ]ae7s$N&MMj܃x›q-VgQMS龩]S^Ss]:[iX&d:$$t5t/kf󪬇.R+u-'Ѝzv:w奏^Ժ)ʅ'b22|g>D2!!M WO퉬z\m _ӧ9tEծ9iB2RG[N':ڥϒ}K2rrH*++.+UL:T%3j|?|5;*U/Ykhrϡhh$LBj&IX -ɔ#3UbPjb RV|ZT(C(3 -)2Fi(IFjdΈF2Ys$c2eDF%xyѵ24d#C8u\FRfAq^Ƚ%#Y\JzRJ9%UNSN525UEVIMȬnbclNd\6:;Jll$iB69lohƊL&,T9WVI/]YLjc1;#2нai1ܩ$m?Q3);vF^c ~NB=G0 |mΆ3/ذm2YGS9$UΩ ͊ IrI\^o])G|{93r,4WI2r\);NA[a#*eRٝ6Fk#9aINF ~R(rT -<|olqxH'J^m0s,{6x1݌9)MeӜi͡eַhwizWQfeJ3XB͹ttZLJs ͯHҡ孨҆/وEU^xY٬58Oi4ySZ-ݬY<~xHH Rfi6aG4*̱vP:T:ռrǛBf~%'R͸>DTӏTeR)CwUT5d\!y+\qsڢre4c|?j|/}Bos;E>CM]E"+Cig?GT7^&&;":3aNxUohj*ER5cUxuKIDJ"&%ESr`, -Iy'+uZqoRW"zy3EQ&{NmcUd9f1ɹQy̱{󪨇V43锉|#7hW -tNCiVCU*'zs9\L ,r)gJ$N笕̙ߕnYQpx~>Ix::.[hl9w6*wvhw2VOh7dϔ srh9ʬ٘2!L.$XT al@APbB -8|SSܴcɝFKz3 DŽ]%uCѕ*Ex򊈮YQi ȽiJ!l<ԴMn,k6͈5ۙ"g64F3}wΣzw6yBtn*#1-eҘuGF"a~ -p6ZinVLc2Amt6纩();sUW})ciFRs`@<ɌvÞ@F@őc`A8t̥OYR6>~dHsˏS m -S yږpMAǘWpRV~_dȈr<.QX!y\0y3Uy{h

'M=HgAب[Dhlł;ve.ͪU8b;n3q*(َ. C3eqfND@Cf_揝]O(`(x+98ojc^0)Թ-QS \qw`"=X1a .1`Ncq&`b̑ c2GߑV L m -2~ '*}(7Y'{1G b^sylEF>Aw !!  :^g?v -<"!o/1 VȈ۽?ӗA|BezЎ3zf2k78 n-+dLU[!mdrbY @" %z5l?Bl Y)w)p 9 -N5dWO'KQ|7<0ujm7i ȥҐCk  ~4dBu%eȾNeȢLl r!Dd1bï0wn&! I9" U%B%2^}rBA*%+p{#yFmf -Vhxy"C6uE@3YY1#++cyxj䡼 XG ꧓j֛r۱ -Gr͉ sQВypYT/MƳe-S&Q~i~'R;8w0<\2EςdH5+N2`6MO"Nve"gěX\3d odoVo!rj49OLy=1u:'uay;r,?|$X -AΆX9S: +yT`1jcaztP_/u-sw v§1:zv|zޅZ+#(i'. -y XnZ)(dhOuKko -CS$dǭ-6+'Pޕnp-)kv1fv -_e.*R,꿿TRff 9%5HutVbjfa//HjYߕJІˮm,QӼJIuZ=$ŕ\[ULvшz ШQݪᥜF`Q b$):iduBըRDdfQtS˫QkuwIxlk%XBZ݌ҨH.OnixԮ 055G>5SՐB ϪZM[%,S|zRk-aݪ+Ⱥ3\$oW#Ѻ#F$O۝Ğyfv-cTʧg|#@k<`3î $+YK|Uhքz"1+qEH+Kcj߫3Gyh٨)ΓWϗ_AR.[Ҿ6"f`]-I Pꬳf\P{mM0r+vRNbo\YW.-)9qD[0U.nt3$,$F|{mrFvt? npwKE;t(o 5a7*}>HzNn}R|Oؤ>_T$&$4!7?& k8atʿOPZi9#OQY >AT*L_B2j C߹`. *QIg>Ȳf4dRɴA(0 Ԑh&hP3Ŷ[#b5gP$ȹL -l+p@<< -  RJ8l9*q7/*ӧ5 a۔lDj9/ZkN ^La -Q)"& Q(Gȥ>i= &Fخ3C7KjߖHxmWMoYiU mkc䫖d#df -lt1`82E# njDw;MiJoPnD)љ)P#|;p=W)4_ Z#5aZ -xTAB}5Q52Eo]¿W@\Xm;B^Vb2g/MN<\ӷQ~O 8Ha ~ -ї{F~OR~/ -CL65½r)"rذwU9QܳUl)[-rU"xszS-Wy -žti k};\uo ,"gs6_&.9cw݆#;<2qڿHL\W({@weyA ,Ur_Ohe[N?Ը]c4MDM=LKN)?`HKxq\ Y&I:9JxxPE^%k̫hK>Ta5wxF|hFjqQV0Z)b~@_3*2okAo=BoY]JR⹀cV $Ļ>\)'+aĩo *,úwAKQ*͇M8Y.J)>)~#[qƯxkq! C$0$qň|3MoB7^ /yaU#g ,ܡ6QߒRo>8ʍP9(r܋垫N"/A5Cbb<:%><4fn0Aʡ! ͕TsFoǛt루΃ynz^U8Q>goπ%Zt9Ł#>)( JdVt2@GyIoh~\N /FwRmLG}^w\&"ا<=**[7 -$NSc6քu舫cɌ:emh%J!liq&imx]xJj ec'fɬdG7U-w|›{6SwR9;$w-ch)ֱZ)uwh3aJ a=b-v<}G{-hً|o} ,}MEψ*]q +F1~tZ<;CL2'FWP)T^klׄ 9?.xrBEBJȹ l'ZS)W".!}|g>2B<rU׊jyx@Rޢ [9V}gmG8V%Uɸ7㿾2qDz~8GHȮ^ޔZlq?CIG{/@kX{㣶gπߏCG pHD߷M_)q?0v/$ Ph׉xb#5aɟvb77(r#WIu>%2<o O5ԏ_j֮~Ee`:O;kd}WyJ} _9FS0~! 9G )p;ø摩l&jhbuRR;c1'sF5㋺0AOo"{D rB 5O/`~\p+3fE'q 7 :NH# ~ ;KЏfMsß/~{^5"sֿ~+Y4zQGUUG/mlLTYSS(` qdDaesZI}j[K` HC +O@/ w;[?h՗PFZ׍d2R yKDOWe h'0QcXq3@?\=E80rX/tvG6oNpX*9wNbQDiK$p`Ws| qnGdWǷf Ӱr7` r ~D UY׊hQRE\ -Ayd ԺZzj^|Qj>Ri$?2#5-$QEby$ [;', ׶*DzIa 3USF*u,QEY7O0ȔCԭe%<}sk6μ0ʭ֎f|Uxt :6W53!(BԿ=SZ/[l&mP'^yIsŸ́$ --m=4³1#7ZadVjN6Qy;,0LX,a5>y'6rt(L vVӏOeJI5aM/2W$Lz$bܜ9k:7\/=d>!2ǹ'!ʓڞF*X)""͞ -@7|UU v& RT$}WtB)Urٮqp4Ci`S-:(y/ Bj pM0N V@ZhYŽ*>={\6x>>+̧([x7nGX]2{n -ʶJpLkk"8[YvK.hW4sOg-n@P :;].QMz@"CDzfQv2UhMecSt, 2Ѡ}{_1f80z|! yHrDȦlM|@JV+~9[C98}< x(A ߚ[%n:KpgRJx30ֆUmkzHW: P .bj.22 %Yt@SyKd\v?:Y -r~v&"\%QxxB\@l~6awa8}~_|;de DHթfajq9Ax?0)PsXeʁKxOMM38.r,ZVu5A1/ >|vSQ) -Xo,4j]nf]Q"L y.m'xKKhKܼC FgcklZ}ZF4ݠ -Qb=@CZH%љ-m\{. *}uPXfp q4N$jf;<A71ޮ߽&Dv|8h9d5/WJ]6е '77~է#Qa,e,ǁx- ¬ S7uH*YDY? )2:HW` G_ЦE(N-A93Dj* {H=| -ur vr;'t&q=[zU3vqv:EPQze -)A(*Šr3x8#DrQ3Qԙjot^A.;x{xC1g&,DʢPǍ(,q -јF~}Aˡsa(umBHؤ|PFrW1}U jj%SptQj=$ -zebu)ޯU0VVЫYD"oFo6 sES^bxШ1mf>t$2Ĺs0cmگxD{a#?p@ oJEmԏs2ui-?S "'@ϳZaexvzwgS1525k -amBWQҧN^!wH(2yyF'I*GH&Z٠nbulrP&ْÑW}Cd*ۋKavQc.tCՉЬ<:?U:Ξ~CR0Fm"c'ԋ{D3!>xNjC~[+7e[%b7eIzcnlQ"io_#g,@)t#n,!K - ~&h3UƒP6)msS'Rz-b#g -1![ u.7{ZpTSfݡw 􋥊*X$:BtF`p%J$Ssʇ?).5DwB7)uΏ?"+[O)w oO r<gJBkKxFThn9F!achn@gScIFZh P/GK'Sm,)XmZA*{chu~"V@|a]^cB5T{\sa1hS5~=3ᄉcnyN{]3@g8hѬPF/ܹl!jE4*/\ڃlU( KqO1R}5o:;+if7@Vƞ B'&T< -QWBs*եYWkK.ezOTѭ2HioN-U梙jga6ix"*C^CVB7bD!na{۽cG4̃}2 /JZtQ1L;Ԉ`1g1>g=p -c2ʿHRDMa/j>2NPTA~X*4eGX&k@O$ԙ -AQ>?ln{#}tId+z̮^>z- V֞*H&!8=-J ) =g.~rDk<F%5 Z,:4s"z!-K 5Zʌ{t 9\b'"K=AXvngIC! m~>E\u&tJFt$lunq\6+.g.k$uRDj&XJ8"Q@wr{'U[m h3օCƵ|v<,*ipc:&?AxXG3^k*Y;4 %\ߤҗ[BI N<|ucED a8fHlNzYyiBzKVmQZ+[Lam7YF}pe2'Rj6E2bGr@r1 -sĽ4J=dx(NuvQ/t^!8f'ǃ]5yL z7Yzέ:'F{LI}Z9/K3 lyo]IiBuRӹLƟ҂qKМ2a -! -RGv!M8HL&B cٟ!,+̍0 t"6yz])  R"WeX$Ηs%0:XF3: uX=I:5FǵwD/aG26EVbX!E1^ZZ@o-ɛ:Ƭdo̯cǭsfutK`)Zuigbp˧U`^p$= 9v3KأGVܤPFuMd@^ lk%d? 6vڧeYlEEDLIaĀ$?GFE-|gMF=FKSh Q7}PYAbխ@ {yc,qqfVfa]\RvUoWB9m_ (7L4(6^44ۼ9_-%-oHcn-pVX;I;h)-0hb>  -K{iiB*Qd{M@:k4 >ax"KoxB.!6{U$V;ŵybhlV|]yaQ G`6%V#.K!>3/Q%Y'Bɏ  sHe%̖s>}|`HĽlUBvIV#aaKE!";A+C/*(6q> CWr m5z#ܗnH]kY"B v -qb}yY"TM8LXS3=jggX!V$P7hgs,~p?0w!/ey҅=r/ Ph0֔\IeΉCz3c>eO12adת,H{faz$T ѦģIIۃ5 #M/+936o}o++N/e3 @7&NVSΚĊa>RC̶)<$hN7F2Ƭ(:nU+J C 6TZW?L1rkPX&%Ix 6EWNzrW A"Cv)Ԭm>xM0QOD'$aSpS.umiWʔ)u:O>i" d&C߄CpePPDiGww6G0vd\Cv0WRhF$kn?Eد%ӏ=tZ"ց~ͬd՘+q[+t &t8I':D#rO{e}}oTj$lm*DS݊kSQ- -W=4@t>P?ihΦpZi6HeZ}}Q&NJA[t1C"7?DtsOJ 2Te(C]`c&0^VcG8+.1ybpn16nɄBW^5ŰVoX2M-WGpCˆQ]cϸ;Y[ ]f%kIMOF34fq>o0gpd CD 7!PA+0rֱϚ\ oA|Ȉ{l# Ƕh:%>6*848}Vap,Qx%x:kGe7p)N}U;,EY/~'߈ o,1 -ݵH+g.ЅeCI;ͥz?.|َERFZw_؊͇[ӳhc9=k3wz|AuPbk$,rFU((e4WV{?u2dG""ΎX΢m9XpzDrWCk3"E0PW4ĵڀS(-ep jˇ3YKr*Uw_X:kaG9RvK)6Ql`#?L a7XlugLE(>\`VE#n)OlO 3ƣ3/8g {L+nz6 $P]/\+Sji[+N6'_Si}7O `h|l?"jJb^r[[8j QHmL XIy.`*37ugl)'>D"q"Ū@gęmS()JHDBr*@lQu)A-߾hd.&'_Nox!R7|RQ^r4nx3@s17#)B6C5+m>1 -S GVFcSҙ:ZԼG/جFc{~wAoX(iBm3{I6_Ɣ$.X\mir  z7cL]v); UE`}<2Db$Rw_E\M ^1iiĊVco$ִLpڨem1P8:R TePCJfY4:F,9d ~' 51%Z ڬa]vdl[UFƛ@%@ -" >x\C6=m"ʾc#y㩛,ZIAk,;:;xhZ)RtDL)vZT]j@zF5?ţ-׊Ld.͈ .ƂGXg`0䶬]d*u^zw9xuM?O Ul.zGNT(]Z=}8т#_%6[=/gCǔNS͔1 ܼ_dH:LY;sۉ5p;r!JGMwK`|!V -Lsx-MoVTZRQr#iB(~1B@WVv +#Ygt`kj MSgAX%FG'Zª> - bO| Ŷ *(s3E= &`ax^:g]DJ JEëS`* -An38<Q7W s&<>_>1Ybb:X -&WCd H=- ~dBE!)!fM8"ޙw3974F>-ҞC'aws`F!ʚw[=c^W 6 )To58V@Dc]k AjG6 -=g*}#zf[Xhr+RWQclv qEVm4SR/ޑA@tt -G5Q@c_V8-^FNxɩ~c9|'SӸDsըu:GG0P*-Nc:I9s֊gx]Zαҝ -X[I]$%MC&hJ Ş; *3C/xRn`ˢz–jODZwO%st눗{\(mv%`%`]#}Ny80;A&2ATV @lk9/2O-cuhL@߯~P>9v}NI3E§.XI *wԥҡVo0UgKdA[2QGmiizbhl.WQe+PYR -h 6pUZ*㉯ihM25Ud!@ū66~ -ᅱ^jb(Yr]|s(5;ӨYJC( -"+Ƕlȃ' n]|ZJyl,!Myc0>U9GUm=]J;7Xz BC5 DWdGVQ l5KSj(2K1'7 %ǎ)oxF*VDqOrYK08EP]MJ?Fb$H1.M.O0 -,jv2ꆀ5YkYdNYο;iT'rH TUK-KtL:*LK[BXmb )8jECx6&gt9 5-ly -d؂6DbUS)y -*nyp-F~;lXxzya!{.ebZ3J?q[n:7VzrA$r&Ҵib_<яK'PphikC7XVE&@{R )oUah%E -%@qŤ:Pz8ǀV&A%FL|' 1d?S< F >=C PxV ֑6}Ez(m&HO*u] X/C<zxf%*oJO (b#dr)ȑ#{j'tNh]kj8沍Tg%j1\9k|7N2T&nyl$D N/d{%(U DRȊ /:,b.=ْ@2_"IbIN Z<&_1 1Y||P`R%d.2'%L .RQJ)hl_,}l+`C~D\9(uJZ)z|kE)npj쁒.sœZe&:I}CZ;LR!$y@qlH؃D ;U~RP_*ƿ0 /"#C0zT?0>,sїGEŞQVe3ct|-EPESEzU3[E(\EVvU&*X<$){/V ."%y׋0ZNǙ9 -^nWy]I -0A[h'[CRmď~1j7rCXY:^(DV(gD rWӈi؅̨gxU w kg @/sMAiźPC^.("nfr^bܯ6B@+.i1C%T'Y%_;= ds@p\hVҭl1,TvS(KP yBN!WI-)iQ|Rb. :^=!mĤgKD MlƲ'DJG`f1]O(Hq.8 92W,7e$|9"*DR.nQ3ЌtA%b3ⲢfPD+DAC`X(?iĻ-Ju0WЦ?,aO 2_,"쁖HZJJ2tudcͳq "Bx xR]T?u:ߠWq2Z8ph=8^[Zh\Boinlp)p/ۅ ž37,J\zSZO^L٠Zjd4a<`ul38+z0# #NԔNAp8uYi68N^O5ʋSt: Ff1~5N)1j`=T ݧy@ug)B1|.2j`9[vaQ W `.w@Ԙ o(Op P,"*Ȏ^ l^ҶQ[d)J#v^ MȫnAdP _bd 7T2Fɤv,ì[ -BĻV8rE#i cZ_pX+(DbQV:#iyGlzZ77cZ#>f+>}1AxLx ǷAXN{C ςThb֭P`VsCq霼v_bTٚh\Oϱ-քtQcrCDpHHʽeӉ~#"/@C}ud]TcXekZ( Ì@K'6"$^ʉ -+%E duw\@u[c=í2ia  ydb+v}&hԲŝ0t!> -8+#=`25I㢠"J*ΛN;hw$X6m!7PnZsY3'X Ms9r&bP ΋/ߺ$ugS!(xv#w%~Xd~ńVA哆L_]Q{ieV$፻ŗT< Q%˯\~ 9 {jh %YLu-c<\DQesP)w1d9/w@}?GDgh<0]xA5"s,vaD8"#Hh1m$>TUCxnH}`&Ǎ~Wv8&JT%x3~+ZsaT<(yЇ2ؐT7ێЅWyC[/,JeܟЄ+$I%8U-U<"Moo%,᷁He}d -L M~nn2o75B@mp2l &10?zu]Pbo^g"~raap6G7b"8W^ zO9 -l1qrȦXNQŴ A^SQQ9K - ֕+܎)A։27 QYVeKV_ḏu+0{XUXMFѡu03W\IRH]!ɴe\;<]w+Wh2 ?U;MV=ɷo߼uMՈ^(m:&M* {jp[G9*t26.(:🩣n4$@/U)r0ORˋ'&Q *&pԻ,R#T~Q,ukzrA!kO=Y牕N' 3U#*q,&RɿE7cEMm1c$Im!qf&ik\ϗ fQ 5ϜZ̲d(0(EG&K'G^0-'SɈAB<c)oP G|]gVL(2[נMG$,^')&,"+*"53!Ptiyak߉0b8VtwȬXVd8VgYG_sz}0aGjj.]!?㇚ 6&0h#);{tc0P׬V)lgn3K`qωXVpҶG7QEM,"]a%apAΉ +`ܭa7i,WI#m0=EgĐ0K cXrQ c3O! YZ -iQX4>D4&.WغAc%miθc8Xvߒe`c^#w~ }H 8*j*<5~K$ԡwZ[]Y1(p/_I0廴݂v' -WzFޝe"Q -eT? szl.&jY\XV?sRgHO[2(i,yNpVT7GY3<8雇{8ŰGTV}[$IKԂ4(dHɯn%cNJXtL{Ȝ4]#gκ-DžPRc[1S{KXGou4נ۔qb^b  '5P1|ZI;f/d޸W`[ﯝ4GpbKlJ"- -1' WYd^<[mT8s4tqoAU{\~$(Y@A{E{h% $HY;ɉ47_OC>.Zw|LC*"-uq??z$,# [BQ"KdTu(tSN֨2gc+bx`1t]z1 aK= }Ju|9x[ Z$JĘ`00`FeL8 I WPE~0đV)6'x8 D0JX VGQ+x_Ka@!R/$KB{Mz "͚3r(Du,P dN ؖ ՘'MN[af̆!D-/y UD++bp.@#%h -:06F[ELzyúpTs+.nXC 4M÷SGT?q+_F4'` -Vb[᳿ -keMY으NA~Ap}M" -N%?PB"'фVB⒓C{iIVCpńi -wGBF2kFߺLP~#߮`{O%>I7Rr_Rԫ³0Cq:iq ߎVBz" |pZ ϋUDٜƞc1S7_z[;f: _ET?ԖK-B:[=ؤM t9Q{UJqxkI#ؔRQ vDz{Uf>:1**2wgʛAsem9@cv~O\U˲-xi\w=ź>bļb">Dn,4cgsk~;Ǿ#%iW:GIܝٜYD?Ng ˗Ia{s H<ڛG/t굶7U&jZ&*sۗGByL*tm _yLyT,fFZexc_SNe}%/|s`{ڪcDBpS4t*s4y]ElKY|,;:Q]щxHpCUU D:\1QnxKY>O$75角GIRKխ"^WY5S~bw׀3X].&©ޢ򾦺=z)[E!ۅ&k~P rN))g R#-Ӷ({&vό̂e=Cbt:3H'@@LKu^L4?Dف(~y>aĒػi%9lɣO%x0%ҩmC7e1s(H#țK߾s߭DL\<{O #Xw8{֊x!-/2dcpbNoUEƉ!*Ca $?A;T!ؽQS K?uA?Gsv5jB##.?3ws;dXG܀wzsI>$t=fX/9LMd) ci ^#ÉԋmӞ-4o XJUFUа_XhCkڐ;GU~FncV;k٢|j 7Â&5C$?Zk]|? u@LPރlY̰*V1a"Џ5Jb*\UlMuaf]5ڌV'vj۰ /a㬛£418^@t5C*WrlWP#|:tn # IgT|Dx7)8Sg]y2T'N( "]N,;[]aA37C3GhkxCt%8ptĥC=Cl7p>x^7czB:nxv/Eb\=9nvWl̟4 c()Y~G,A,UfkAo7!ODQ¤Tu!<&#UcMi⺙Ɓo/5 i3bVwy#ڷ;Ck~w VC,ڌWW*}(q6s /AsϡRlc$ԁ0c -zyxqЪ*FªpZ'QܪppEZQTVJKP)åeI2n@h:ᬝ{&TE26ϺcXB^p?(j;4GES PJPBnX<>E=t9(s0l-jLUU}$T%gOWvwoN["0SUUU)l ora)E]YT<_5*c͢Y,hQL>zTk5Ԏ)s4˼;>WR17k s?{o[c{cj{3;{[sf{c~>Uzk֯ZJoߛ}vg]i?V=_ŷNӉtZ\=~nן9S5sS;wNkTOw:o75zϯ-wSmtK֫һTSj[i^\)}vW8WMu9kwƙS{5X۟_-ub}~3뛳Z߻sߔ~\ob?cku~ms_若g,ck\ix^]w}\-R{uκ⍟o|O͘f3}q8cL?ΖM|'Yݶҍg15ןtK|jR<-imNKͿ1xR[i~)_kc1::}m5S7Y}x_ʙ+~ufN;ןt˗Z~uRcjMy[J_ߕViWWi߾5ZqSK\_Uwv;YZk>Wn}_x/>_{̻Zj[u~tV/;c花=wKS?yֻs-t}wSMIvӭUӚk˺)~M^nUϯy箖K7;eҼ1tV:gތ-3SzZoz禺s]5zﮙj]n+޺^MҜsŚ;qIkMRZ鵛M?=)^Kvg+qUb_)ck樂cKtJ5_i՗Ҭ)wcbMV6׽m+tnשsN,zޝ'Mjjj5k/6:iyާb|qŏigIw?/xc;1K~j+κj֯VkiQk[L\-bzb\3k+ug3Ig;}ic;]|K1_6㟻fJ__>ֶ^]_KmN/f;3K~<'sjNf-_[Wj-Vwyoz֝1~g-}=/YW]q_w4ߪfwR}7rogݔKX[6Fުl:1n|ڝ?Zf/7nKʻiƗ:_̸ZM4zwλ4|坟5wڽ/wkޟoV})5ҧwgK=?/6O/ׯcZ3淚>n;[yVtIiu^\w:-n:[t߭3}3ZktޝݷncJޭi;WMJ}nLWL+Wc};k3YSLb[qxS-Vn,z;ON;-vNyi=sVjoRk'8Vӫ+4+W+޲>ŏ_;o=<Ҫg:g4[[uVi5yb{KO޷Yj{śZ;=7˭)ӚVZ)~vR\zO{j7lԴS߿ct魙㬵Ě+ZS|VLi9Jkݔ޼u_+y_KI^fyM1͘Z\km-ߺx~͹s{j%Δ_LĕKwoƚ9_kc\m])1}]-[Y}gź{?XjzӯڍRwjMsvk]L/n[Z~zWlmufW:+WMnKZS;jxnkY۷۷o'ƴ|Zm-^k3lv+g捱T}U߬~ZNiwu뻯fy7-\V]ZkMWW}9Uޜ˩%Yk_jM[-[ҽ5՟ލng(9_N[|S^kJ:_R*5Vk2kZUS,㗚J=ROf-U<}yWRy_Zi9%~gL%VZwT*sMTZV[K/w[RZRLb+}{mZkc1},?绷g%kwb+'uZ9tjkM;]봲zZ_*kUO[e,oYrkiJ\}e~lL1,GDl4rSP9EJ|.uQvb -|+uSx$ecW?rYc!9cUgj=iޣՇ;E o -*i._ϙ& PiB5,1njۀ=q2)Fw̬F2QJPqƦݗE5_&i +mυ5_ #f!`cWAp[F|4!.$dk g+jvҪ:Um 8Q$Rz ܸЏ/Iѓ! -q%|5[NW oʚ: x25"ݠ5u-EjDiG4^|F̩Ӏ)2.s05\*QM'HX]ģ=x>xh\%!٠98jP`LJ EhIw$գWD%!}ȁT%\ .MU* ʼn#Lq0Y#%F $Т&4n̠LĘ'm8N$a&|иzTh%eqF|(LzO[ -]#&ՇWB*pk)uM7syԬEqE^BX"Ifm›0(.4D'iAQ{~]MC#i];؍DE|5]N}(kbh=;fU> -#_>8.Po oDȯ4%!!EBt^]Ypyy/V#2XC4>(՘2hCp N{q!qƦN(#y -ECta=iZmCBv]"ؔ"K͘nK=sW(.L<1ŬPq=mU>S4|-!!]Spʠz Xf)4dh%gB,#H:hSc͗cգsT`1xجxϏ*)Epē!`1q*a pGqI=(`Î-|ᢃ - )0lRmr4 UhEY4¢YHcZFEhu¢DbՃlrNh 69U=rظZS]UEV]k=www{EsZi+iZ;/Tn}-VL_IN+VY_nYme~޲ڋR,~־vnScljo[l9[mcնZϬm>yL[#/YjiJ5S;5/ջJ|%UѤS껿҉F11)}1b,'2ckRr1-7no14lv׻fLykJ[#;6KOysxFS8Koq95y߯RkkyW+uUl?-Wm:׉/u#'h8cS'N8NTYpVI@sZ*Nd )<RPQA!C bAHlʚ$*+k=tdn4dPH7hOa!a ?@b(W!EE^'^(9hQJW؂pW ;H3Y>Ę*OR RSsv5hr&vC\Gz:GzO8I0`kqe'iDwa q*lYuΫ11O49qu+>X7l$:"g Q6hb+bb!Ӗ5]Aq\A| ~t#|~~a0V;dr4bJ R HL<TzI 8p7$DLy8bT|],MT),CB|8bQ6_.=G4"<kĖMJBҁTŅd>rX">HWY*mƜęR(DDðK[Ȱ›(fIzyܲt7PF8k{زOܯym݄AӍ^M # s4]LbDR<( GtG&%f2 ](eC@zNڔxS%6Dp`I$G];lX XSg.+<EMC -Mx!a$^'b E@,pCW3hŋ L49_&`BqĪD4mӦD ] ,p"Xғ5(u0uY13U>nW&e"6΂ -W9:jT|HטSfg|ܰzb -m:ٕOE6 +mM҈|Cu^NZUBx3^J=i"( SZ -2@+M;fW}]X'Ql96`P5* ߨsVqȢvЬz8ceӶ5@2DT$WldQEWԄ7N-XH8Y -=8 4!!]|t-IG3^pΤ¡ a@;z ! %V9cUM֯w!b%f%%xx Xs`z3]JLS - R/G^:egÅIs'ՃW#I4`K!LarFˈTejр-3`=&P7Č;lV.Ke)'CqmƜD%EGx;rH/U-H.KQ -&dX6dQNU"Li;mTEJ8 -(hcQgyD:,'jkF(2F@@rM,1AAzד(3Y4\L!qGm0_c@JF ^QPAP6wЮx)i,@DTDAqȢFu_AA~e@sZ(kI)%PjIj˦D1p,[æI8_SZI$%CԅΤ:NI7`Re5.XdSy! xUٲlJ% +4U_]RF!1;2 -p*}CxJÛLZIvs6}NJQq(Kgg-]zO-|e>c#"׌d6DV eWJVEc'1cUc>;X+"av1J#Yg5{U:D5<5ɌWzjXamࢩ1"beR"JʢՎRD$avMe0eSi|m+I(_x6ڨ>DCVceh6y˿Xb} c||m%Z/qTλug֧k!J_K$;p|IAXHy6۝#lԩBAN1q vģsYbH/5u=gԨІa̘bUc%&}G8m;:GF?gj~& s<NUl:5hGBv,y+(PFs3I͉dj- %3Desy"LMtiE$a95Wk^d˨ bv0scVZVuպޖ {wEb:Xj:΄>xٙpvu-ɺlC~9 JWcMaΨW2-4-#UѵهeLDx|o.$hu3G"Rvj{Wh,ׯ➚ 4XUMP֊3¬&98]OBW[$JY#Q:zN4)A4u/\ݿ(X6&/,+bk~ToQOd5hM1*d7#ٜfd[dyF Vf3SR9j9i'Ʉd3oy~s+B9հlXFԫҍ3;׻ɟD2I'YTq>CRug/C38|x?i5|uYS9o:RY{Ǫ޽Le6I[n&6e. I kwo%ʌ62"K;ՈdͲD[d^ϵ$U_V2KÖuEzvf|1$#D3IQjw(ia8ղIJt&cUuh SwR~ΤʂdvS5ѤojbkN}WBD21 BָUl/:ߺd;"|VE9$6XIU3*F&"3z݄9*+ a/dÇOJ;6(?4x2`Q,qw+9ٕju)uhuQF&}Вhν$辚$e^bIR$Dۜ\nXh]1Q̆9G/KvlsT! J'iIeNg|l kJ92%fs&qj:J$A3, w}&a{U^wndbU$ 3%!i,떦Y$-O&ˆ \X56mC/M$&%d?9ryUG&he»%JrȯWoS~mif4Oͧ“6n͘}hlw.1CBW+g8}^dseQfL6i~͙8f;yRZ>kI&MV'{bF験 cVYqyO]#[ә Mtf Mk=ݚ*^W؛1;cKfɈ0Q}{}9ou/9uTҪ|~`T V*-Xʑ5ȇU98P*qϚ4D$wr9I~w1I莓$Nv<f\%1,fC{dcZ'4˴97̧/"AU(l|/VP!X@5PH X``b)D*,4  T4TDD .`؅ .,T@P,=1ش1ci"P+WuqK0o1.cu) +d\= $K(Z:)ES'SLBK'2HRg43" UQ>3U2rfŎ*)xj3œ$$bY&Q(#si~TsSx72S<9^$h)W|v(s8hc5zE.gn\>9g1>k[K;Ndun`{H96~;R}FGM;Dù4q1b~J<=ي{%͙kqܣݫI{ZECys"SU`"l?;f8%34l6vT7ҲyN3<ÏL ϦgUJ,?k8 x8fcUtHvhu7(u:}#M4x#PK0K&fFZ iuP>* kzIzEjך[r8ct,':A'1ΤAm3|ߎ0Hh$+V[[;_sYzSYS*Rݴ~ݴe_R9NqZ:{QnX*lˬ˼oуɄ4I^<'msŷMZ4|M›^VLS SvpJnuR?;v)CjĒ̢J/ +SH$>H&ك;l;֪ٲ4s#*O-N;UL滪Z,='_NvKVڵs2I-*+SP$ d,dә\1Y^s5P)+K>-D!NTTRN$CGr#52gD#S912"SIwAZ!\.#)V Ɍ8Kl|endޒ\ɑ,REw%Wt=r*')"k$&dV_l711l6}2Ivms%Mkh4!B674cVF&tRlAb++gэSBUb&ɘI^On^հܴkT(陔Rn;yR?'tDxFr~l +>6gÙqrlifSה<B}%HtrNdhVgH#H*/(=7~CL4LL9ѝcJ +l|+J)v + ++g4%e$eT)2υD1B] Kr2:^|%G)GXUxc {{/#t ?c٫ fuq%s81' Ccs s9tҞ6#M:,LRi+_H9NK2xќItnI:;U%(tݾk213+?I>&wJB#E5! tS],&}3쨞FeY9nJ[aSxTڬODʣׇ>jqJL3~(ۺꞪ&cV9>+=ds0r%+;.1szC"[[Tκlf,QZ"OagV累C_ou~bg߹Hdev7^]H۫ۄu#^d`RxYZ6b&U _MehXWw,W +.Xz)3UI;$¡DhjSW̓Q!>)dwV$ l!IѤIښGaHiH9(eQ&˰̓eu)DvbrUba sb3̻ˤ:ΜNhe֓)x&ԪWMvw6,]fTrΪlsU}Ms:Lt|*AVS,7Rg52]ȧNJwTlshw4J{)NS},ﰃYK, ;0]hޕvÚ`'yCt!&ѬDVhe5aj*J*~&$⧿vs/SSM2Msj-kx%wG?}+Hc呭+S$ʢҽ9DsO"Dߋ(bc>W }9fjEΪQV-άR.5~*:!1V}N0Є“9*:DmWŴgWe9Uuӝѵƪ'>> ˼SrL<ዢM̬TYM$3òK4sm,Iye]e*1MH'6@n0O;We\w*讲D.2UJz)u)2םG9SdIhTv9VEcVα7zhE3̞1N7Rjn}.v!z!N=D!j?T}Ҩg.lLgsXϝc+$ǂ➔6m՚㎛9QcBxleyK8Df+q<7hc}ҜZqcwѨMX~ ~q~Y rhH9m -m\Hy&5 +;#%TN KJD&%*Y8 W'X <.O+SMٚLqc/QԸJ?6OmNC8 'URr]-MG @&(C NVd?aӂ#8 C"qL$zUu_Ye5zќ r9qzgYX +\WaaZ{\MW qj"5Ff9Sqf#1co]A +ucFn_s9TdSg=&!@k +Q詰%d:DX +a*0|3#TȜSVfYm]¦cۭթBP*r6"P!XM_ +j!WDL}D +Eʐr +̐4OCh i)Zjș?rzCsyhYl. 643!o3>XCV/T`KfPoFDn͊ -6` +sfC #r >#r[Z"~k,N!,W@$zY"H᪒$|F | f>ȆtH,rB쉷=XYYߩ/c 02ު'F~u fj&;|`:FJZMz;婑$m8>(Y0ų1ůl2INF0Un'({2~-I/Ûwf\/a@;<(}KQyX7P)V})R&d'+RvJ#e! f Hבڝ/ϔSQ,dʢcEXaiR +2v(mAGD^2HB0e B2WWn/rd,o_[ǖע˸T2Ue?}Y)YI0y;  z+$ǑVLsn MŊD7f"0mz4cj!7zټl89A%=V1 +}Lٟ2\M459u#]s6ـz$\JO4Lf :@f\̩br.C-whe񎈦%DJSd6OThLiG4h޳1!n5Vi {iW4})_GK{˧?̅.Ӫ>CH}iO]Lq,PzΌd?qL"d0o-0:.8$oV+i]Lԡ0 4[V{3\$(eHԹHv"a&w?jmqF1<]b|A$J6RKs59,֒zldnH͵үUGZ_b}}I};= uC}dcXΜZRwV,| pW*AE.β@UZ!y(Z]xW QGG)QQuM {Z6|ꋨCD4޸FPClDFҨB]F/EH %jP/ }&8uz:]D"?Wd(ATq0<3:Lmߚ:`*t-,uj.F8C8uʐ0!#%DvzOwA͠7ZQ%%E@F,lG5'}=Τ o<"s˿?ר~BQ됖kn hJ OTqFPM]S1Q]W U_uzc5^Vs-j 2=^ZosXzYi ۺq%p$I^{kld;M:za]x`QC9l:dZi1Y +lvOcxѴFڹb׾FK[ƋP{$ue0[JIO>7):~ - +bF|6B -h#<Ѣ9~i; T/5~%RT[o*FڵEؒFخlY9 ڞ 5o{դiۭ{&.K$o}[R⮰4t2A{#ǭFٕxfrqnVa)Iãu4: l˝d|Wo^'Q[) +ﺀS渼gj7TmLfw"}ۙ+r-VG1nB*F#|c^\\U ywH~? [p 4Ά f`b/O+6Z7>Ud밙j)-a I#|&XTF3aX<,V](CJ$EFNyR֜n_4y.n{׫KIh +AD+q81pQV9Z)l8pX(Ɓc&g#ÁSͩB*9E'CRf*3I+.~@C; D.(y`&mtP4z*(pitm8 U B6ƺ!I̦zSz#N,3{"ڇFwfA\@dεv +8!%;sKǧ~05̷#yŹB]* 𬥷1"Ѥ/I 7D^z!FTr xUY@N3.i׃-Ь(qso[#hwJouSuhÕP{a \ߌ#)^-n ƙG4 Nj0}Q=K*No5UFX1yQgy ){ .B ]}KVݷ)Ήc +;qWoqi|${ܷ7lpn/7@°A\m<~ ĺy=2hzШoǺ`l~:gFH-!D * W2n{]eQ]X xs\Op?j\@$KxQ?Đ;bά@&/ff #mlBh;[3?6Y $0yW/6杲s&󣊌UxޒfgzD33MGR>w'$^txXLMpS3S==W8}qL\lE3q?x +[$Q\S;}Y'my0&POY7qOx_m4K&O"vp5{*A6q0&^; oUVr&dU<&ɯcp)qVj6_sd%3c73IJě ߽}3AxQňOKy.C1#Tb@gi5gh4`9i+[E=#.~!Dne$QW> 'q%8U3xŘ*RRE M|VW%xXxx$GvDx40n<6vzho >Cݸ")4rc&&,yKnXWM'竾f0VYsVPy~8jY򝫲Z3vttΓs@ +1o3G5$ɡɪyU#-7n_ DGC(7uBZ3p)hUC7tFVtht4mZZ g ;mQ3kkzdc[Mr:"蓧uU^ΐŢRu4S5:f,QVd\.ׄb[:v}2p ^WxCS-ly~jDecZfWau[S77hny "I~ q7b HjY)!"}+jg8z縤y*޻]4Oꯧ# hT?P:#"ϥxk^2닒h~Dҟ=$dh_`jk@x$|q?gB`tr{Ce.}Ol TV&Nsc!*>`"Q"0?>?2,٢N9* /@iC_0}pkBaUg}J){m&{"Zq~P|g}p ~ÿD' e9Rca +APAn&wǚ0cziΏr۾Ncu߈ ttp}:5\U!3كYa~ +ZkPW:){=huЯ-^?ƍ!kWvtW븋*GVߙ~L}5z!sz*% +e࿬Gx%o_fZZg'Ч*7N-w{?:lLH G?n=!z4u]"kLE(qTњ  PG/O-S0A2 0QtuT_Ci^ L@#~UP[^>Qz@c %A/Rc5b sPDBgl*]g&09@;!lת\xJ(@8 T`s(O2W(@{S HJØW.U( ۊHdT IC Tcv4.7N VU p\=S/Z/;qA?7KU:MɃCZN?2%g@Z! }3fڧ% ùI +βZػj-)EMvkH\D`Jj(S҅c1vyUYMaZ([[@8)V` +:duC ky Ӧ-{LKqp>&ڂwCEhjj*;b *MfA +!$p`85/\go wGp˽ɸ ,6*Ӣx;( )eZr`]|> +Ӯ%?R#5J.S $x̓4"tt+eNx )'eNaf`#D({/+XVEEq4"oaV5̏OS@5%\6ξ$ʭ[; +t<6VLYOM5#<((տt^&ۮl"mLJIA^[m.^jgW#*J{sƏnT v)yWg#l`,Ӎt]iRފG2y,.wWOez[{JOh.(fG_'telVk;4 0%PZ>~|$mk\I8o HJ3G4ݒpKza15żfXw ӠY r9ۥ!()jK>= zD4hA{AT,XS-nCf :mk=jQA^|bC>GƧd=69*%rB%vYMw +!|!].qzJ@xfR (o%ֳ=rc3Exqb#ժ69=# M8Վ4x HG-:QTyNd0暻CY.B?*8Adsdz6I3`. +ۺ(J.iΞMHeɰvI!_q~3&R< `<8*5|S$Tx(,wOT%2p9aB0[bsp\rÿQ=Э]6*c:U[hr [7hT}HDdXIH)(a,h57"Q 5"amQ j3UFhbұc +$m"2կNZnQ]/nChs5 £5[>8eV|3:|:xei9MJ$^\݆ZF6;ta、eYi2z%MBY=Bn%m]@?*n`D6Q2Ӡ@8Hj ӡFO)n9Uz϶pUi+c;A5 _'*6 VD>Fއ,<:Qy\1 +:ɞn8y],"m2C&l#{ZbiXtx9j̆(yjѶWdZeJzK*w9{(F z8h݈΅#:!/axruJu[&JW &-N#;ZY $#Z+G|ۧeUyʅ(c#tA6S̛+hA7ЕԽ/0jc̆+rA_qxm/Q>^e=prBᛚx&+rf7iLWdA󙨕i?HiP+B $G/EldLDFB+v0 Na\I(B1ޏȢ!h$Qy8mPEݫZKId Xa%A/Q*&!W7 }`weg@ ucLu|C!V+j+x/pU 3ъ s4!J{nkJG3oJy:IE/͸+;ç!^[!_ +6cvispJ'!+ɢ Hek+HzRj Q/!8<V@6u ߞx[x zI}z5<?*8L4;r˻ KRߜ)=d`Tξo[)k[@kNfIE1 َxf"RxEغ&LF!oP=Ak؄ {+ Leyp@) +".SFj0`ъ׀uw1VS1'{7͔ytǺ%psp1q6wG`Uza2U'lSdXfROō8K J/Se]]X(-HNg,VNC4d%B+1O޲|嘂"io;z?O1!.(jpͼ}VuC "w5G'̤ {0 +yߙv-xX +l4w%h G4ș \M +9hW)vT]d"ੇzWQmڧۭ̇7Rnkl_ ⵅܧih-aS!Gؼ'k"euL6L>omO#q0wI…hq[4.?C(V|JDe>c(x,>hͤ l;H1InDJjj=t R^XzswźxظN$>@/%"cڭyjl`ȏ+7u |]38>OrnuDKYKz3K_:}9hm䑿nX+QxfƼ2륓"v-Eh MNV r͖}!`-c .gyٶ1ݤ{ +AfL8ؑ>ܨ [>9@BC}0W4[T_?hcdE#1.ʎao?|_kg|/4liR Ms"ou`aBZZK4M?Jd~R[1l=ˬ:)H}[rTrbWS3Z*[Yi5,cr.6 c @ys8:N0O[#ZKɂ:ߎ0}s2ZkT7e$dg([#kn&qL3vdcӌoEL 8}j ;\߲L61g&p~KqL zԃ[0U-k.L#'VxRg& WZ@.bbdl|ƳgS7P!Me/LsW3M9>3B|UFE2?5 +0\H\H)nq'7Tī1m=O,dw|}밉beQ1J3"7s3tSVIpooਦ_4EGEIQ6.&@mg&f(tnXU0Dž cwees B=:֮x̼JՔbDTh=^@qaYEݿ_1C߶oh#,ȱ?r) 0ukn k4ߩG$̇ Vl7mHpP\]m"ܝU"lR{d-u@l3~EY;u֓ +"'NHXSqfc:*\z ^hfaЂCh'.H`uX,aKS8Dtg-HY+iC,峋<4Q9-ݡIs%ұeVEpx%jN 'cC;AD W3*yvJiU~x+˞p)򢯮N\DyL!Nz @l O +t5R{eˢ|s%Fuh1-, ??`9%'95> jvq9jml^u#P U@dwCy y}KrnpF Dzs{;Y`Rp^1M5+]-R(BZ_0VnmeԬ* oc9f-t!|%3 G'2&m硺m+YwAN=ah1 3jK'OQ ˯[ pO!`i55NdX#=l1l4/ٯP/yX֍Va2Qh^#iBZ)ʙY9Dzl1* " f KD#WGÁZ|O͑fLb!hO[~@Ƥ2d7Rdž=!ZwPbE撕˨;^aP'3jnf}nPH7,C3xJՆ:Q`YgtT$C)^نgHۤ2D{³7k@͹{ 7ў_/SȺ*K@O˷ gV2/5~ІJ`,4VZYn +YN+dcZ23AI;\*O_"vEiFz;Lڃ򍌱PXYccZz`jJgeXA}Pbdv 1kE00XN#?47Gtm XlYbs/vj 04H]J_`Ja_`|K5)6^&`FVfL26yLE-حSMؤ"EƝMkzϫ cM4_8/ KAWCkasZ'H8R[h[S>\44PM6r1&~o#%GH +] +Q1@`# [J"E_rUo [8NWU[ӳ7$,ZF!ByA`uRN>mAV)HR 0Ed"$tma`g1$~Bv Jf6)> Nl)AbwA-ھNh$LNMow!gBQU_>%^GFXEs-9#X9PZ!1& ?t`ιAS"?/4-&黔P7{-0ZHgجVy  zbߗdLj;G~VNL0LHm'|O3 |Q7Skђ}x'lO~9C)#nqVM]I5BPjJQ)D?KlUzL3+l5NMƌ[x+9;} &who}6kjvk|;,w}p"qtj -`3{^)h Vg0d" +gSo0fc48ހ9#fifw~;ys<ӽeO@g&p?Jca@H94?)ƞCC]r>(OUyO{M共6Jv/gU32~ +DY0U;gs-Pcފ1XP9!5^4ZB J_RcZnVHIeIEce>ײ&h:ף'"/ dEZcOi2eҰAeBlsr'*O+)5[20E=K{y|>L.d]dS.PT/Y X5P{u;dY:[\;706bt!O :Jt@G,$Z`g:m'SPr~ &z\ +Y AMC{mnɍTI7%,)_$GBgZ=kW:o E%!ki9: e}o%eLe=YP$:J`SGޟ': H O5O.f=a +h<6Av4M X0:׎hQfg<\._Bv}Ɉ^x6!aW4(AmAJpR00/!G1aHf|U`Gr#+h;UQWe$Dgx-YE:ESE?hU-"[^"Qv"9R&}=2%)z{/?$kS8t%cG}QwԮN^I4P擻I`-{Ty!,_F"BQ\itw +3b](6]U*>gB%Ṗ(vshs[-څM/QB" +K{'HBOP2xh]!̐)3d*'o3$"Q15~.4mz88 IɹB5ؕ'~ +dk%Oz 4uB6Jt;BNL=9KfyBZ(pxB|LT>L \ # ]ZK%)t%#]7PDD'I+*ә"+y~CPB񋶱X}B!T6wT-fsk9Z+83tʙYQD%r܂mAö(z~Sg9"}sNPg|,$^@F%3R ~kA FX|d+#@8Ej!PptMC6 9XC +R$CzARmWC0+b1+wAǁ8wyHjp曃r8)1Fzdo5.*Gt76 "wEb + %)toΧE8_yl@L-7'rX4ü-6OtBdpSm +G O&dȱq +C)B| v8]SiPpV?ƚpՌVF5J4&22i]*V"{qU~a25r!-z[ V--&śWnAw j!1eU<+ }:X&n`ZpEC{ qM5.C`qe Krd,4GRzHuEӇ_Q>P mn|_,PiU1Xvy*G!LvóFU'74d6GVWBhy~4Jy*g9}wwEnJP/ b;Bj\7j 56 ,MCi c!ѨhBV~P,V8\#82Ϛ̌+OtqclC<:F$o⹥m|Lǘ~GtG@Ĺ:Xg%ytKs+KL* Q +˓%!"X[Dˉ +0W1EƉ4ew^i]eVum k%_ծ>Ϩr81@&o|ֲ184C* ȵ*[#m3uqėeā*1w X d ++)Tv1d1ߟmnȰbk_f#(?¥v*<}UY- q +hAfHYfKb;JS@hՈG.X䙒)iZvcPMИeMm4>ԣ,9%COESI/Uznl>&Nϲ)u2f T "}S$PQd:-](Y{b]:zײ^ + /HJͱ!WAz1fRB9cl B!>b*7ÊƦ`ٙ0%6zt'mN%ǥGӦGJA[8XT+;5 5w4 )Tb:䫗%VF5fUB/h2D/GgX2UЃ,I:9A)>`?hNqP`CzO64VM!:i-egHସ"sRTϯ5RamAnqQØ;#ᨪGRRı6FG X(,;a"pMŕީ (MP<˫ÍTlH UmgT# Lw+KQn@'4}I|<}&A*Lƅ gZg mVY"C+v+/+lK +j0?ՠW,H&,%[LY066[ '.עgU@l}9j p@1FmN X@sbHB/llyaZHC@]34W~ƷxPEa\YUaަfRǺy9|GR`c=}|Mhrےw_`m85:hTܮ9]_v![Yh@blф +k5vKô_R6& dNDo  +ؚ.i /~/xX]8#V۶3q)/ˆG]c^ҸDLxIejZ M_NoB9KR +˕U CnGRK CPo0,+eEL%/ X]:(EM,(1P:+.=)$rWm]rOLC1jզeu&O*tjS5K/$NIJZ5E*F + éӹj 8 .gm K~JF AxdIa&uaQEzEEJLʀKCvmPWXPzB;P< p~bs';<{t=nm8ԒM|WbSj3_6eRE>TR"{H$|%y%C,j!gR #v + rA`1*fD7֫x$#?p' +*2TzOr(-V~+/yH%Kɭ娹5D6drK0'uI=IF9RRa +n0OAPڤ?B'}XĹ %t 顏He `lvH?yZ^c2Zb;2N(2-vYG^jۀ Eb`9=LPm5mK/׫+ސN. i@RmJ=0GH6UxQ`(A @dL2?+lƊZ[g1q YC3oY001k/c;ߓҸe$Bvl}U~g !j +_,>yU ;AUfp5SzШ|*$/D$-T80ށIUpo0c$5޵RF 긕(T^b"gtò wLèvj +]B:{^tf!M?v?ʪz<ԸXoNŐ8iu B1NBV cRq^J (YenZ(sƢ1a"sp ʔŅ.56iǦkiS4XZw O%fƠDR#s߱||@Ky)^}!Q]ZxnN@*%DM'ah]ZOɃі[A3GCgTUNʋze:zG0.4Bq]$B.ףaCB{ׯF31*ؑGt5{S=O*K#f!G&:%ᰉAG]/ ^8@QCED +aॖB>\r7uE` 5(*fP X8>;I6ruqXm@6p6͛ C܇_[VX@v4WW:|G\hx@8bhzi=DUę ap=Qe SrW]Ǧb`RZ aHW RVB$UP'0y>ܸh죩oϤ,`1T}BHj$ъI\Er`n2MR/U0`zN &OpD d,x C3A*+Eřq\o~RwLZ֓\#v=!AfK)hA; +C{WW^F2$:'@oj C̸EDY͉o91mUo樗UIɤ,Iθp cʣѻ +lO.a72O4]SNjlRm0:ɇ=KXHT6Xy!qãarRבw&;g.0KEDQm?sZmA sÉmS7QsD}(v_>\/+Ewh\T"v)8Yc0)@ H#*|5/;a@BSEx,Bdl>PD}DȔ&3#`W +?L9ozo?0:)8=/|hڪ·ZS irԓΒ`uvz\uK@XYԞd:Y=|F.萘Ä$8l@: @1n^ïH>O$7AGʁrRKAWATYR~"v)׀3b s.=z_\h[?!e-OtSRq֧Νgۿ8"Ƙ[=4HƜN>{#K@Q%D! OO]=|@o[Rݾ[p6̎a t6“a KGe.FD ۇ4 x'y={ͨ:4{ΐ`R &;؋nPQ&A7}:i FғR:C"98O|o''^}ycހB=RVm`sKz1`ߏWm\дn)i-$Ce"Cڜ{nV_a݅,@S5PSfѳj6WbCy A!hCkʒs5`p[{Td:$<Ǹ%_`t4TR1V^!>u.dve$Tŝ8ʪNP&fqp[+*Tp~3DW'츴(@Й`8(TSzJ:Tjw-e/<m-x[wtΐ?k?J{2 }Ƃ0zf_+ FړKFMR:+,i8ը 1̽Qk5Cm?H;Hd1$m= + 4ÒW4.rMb$&{^Dޝvli3~7)i`"BzucLH]kop=r=ڽRް2S!fF,Z+Q8j -+UPt`"} [2*Yk^?i^WpnBz^51օy7vݰl*2ZݟPgG~l9omÇ'Tn Ҩg +^tp`ay1nՖ_Q +]A9N2u2-7wKx_'nzwmRqO @p8hgm%UeOd3B@Z:6%&3'~*_f5)2fϟ@ +ҹw7bT2<D#HJfx6J7P:+Tx@/Nd +B!7)^y0*)4IJ^=._>Ǵ!_>o sh5Gwd𯩋D J`p#Eh.RU~H-bo-w؄v4L:y>)5/$W=I }.cAH r{zRf!Wa 8|?[3/rk6kyR21,S<}Aep.oPH ]/\^QY0\+Д*1n=\dE3suaanOi + +R/I Kr)T 0BB{}C_׶8pʵ+_q*M[QO:ADɩ42Y{S2LuHz4>1 + +mQ0mZXze FprCE8=X)S|reVSO,LM"D \\w`NwiikxfupMi:2M#HrF\ިB7ٻĦ4Bdg>wm![vŒuB&<;9y9{$8K9Fݬ~(s_ @; V1u9UaUx8-KnY~81]"u(ZNH g;Hyu\xb3CS#4l}-0{ÀE@8.bȉ],'7%v7"Ypjw(!u?`>K:[6mC 8+10c&R9kpF^ez}WQ=~G!p#qH5`m%?/ï8rFB;i„bRtH4\-D@Vzذx{ ?5/&P4{*`(^"P V[1;eP ֈ:+ٞ4keZ0Y4צCĩ+k8Uצz6?2&X$z qp5&"OMhj=jq\QѕۨX축5X m2;λȞWk}JWQ!0x#+[y?@^V/5-$wQ}b7h ,+ZMG>JnYxL i| nP>I\?*[{1>IES PJPBnX<>Eu:z^9}YLUUUfj>DMRBI}ߎ3QWvwoN["0SUUU)l tqf9Δ"ڌ,glfj,MVX4s^(&=`i jǔfeX+a⛵ڹ֋=뎭1_{Y뽭xֹk31IOڪuN[Wj-VuiW4uzyϯ[]}j:-??iޏO|tҩ[ӹ;Ltn㧻V_L_SI7wl鼛j{^zwշ^]/ޖM連RKLOӝǹjSϙ^3Mګij{[}Yߜޝ++zk[ksz/UO|?c۽XZOM+JOj1ګso7Tۜ??W}:o413c'qToz/w{;)zߜﶕnL?ˌTWM֯Oo__:㧏vW{oƖiͷNk+vZZmēJcL8ϟR\38c19oj|ϼi+T\33ӧt7޹[bM'[ύwSun/ORJ{mJvY֊3ZsoZ׼k}mmۉZk޿rӷv?}Se7O7;}u׿wzo}ն^mj4_wcK׭I{=聯b~+ޭwY[連M?ޓjM[;5<3uS~8mTK_)M]-ŗnwʜycjtμ[gRMu9I缻j]3պZvWuy79U5wlom'͓^m1k7՛{^SJxk*1_kwwZl}w񿱥[g:uښƴKi֔1ob|+nZMo:9kk'vS=Γyy{5o5now[<\14W3JvΟVfkKxz~g]mVy-V_kg[l1Vk1TҺw3Wי3olV[LYmo]3mk[vj}'͗N{]s?W{s9M'a3͖-+Wm{fҼ7xg|?׏3Ζެү;ctJVoXW||K3mO5O|jΟ?I/RzζI<'gz}_J륗nZwnJZk{snZm_t_)tS[wM)iet}7޹TӭRjw{Ӻ_it[LK)?w{bb<͙k}7SJn3L;ggzκfuޯ['ͶR뿘bKN;_\I[jm1uI;}oowksųnJruo#k{oiu~Zom7wiSkNzŗ֛|Kqy4Keqvtf\\USkjwkzvoCMkߚ;җ?zw̻w~T7yҚkjӻOW՗kb׌1XjS|[Mj_jY-ڍ<+O~-?͖>Iuu[y]Jj]%Viw}նNvW:9k1RKWNzם-\M?S|u{Ϸ֚oUUWoΏm~fj3-t{S-Jo{뭟2g8S?[;g\L'JsfMuV{1T_Z?Ɩ;_kL)^K5T]ίo{-ҜsfJw]++_Ӌ+_:V⫿f;+xoM_9j_:4:/;_LoS{7V_c֙b{ルީ;coǔ;[Zw]3Օݘ}VzRwV_)vۻg⧘ŶZVKsxXVKwVKmvZlx[-J{ͿRMo8oʩi-8Ӊ-?[3Yk5UW,NmܙZsޕֺ)y:vWZVM:Sb1֚+^i[<}'ug=sl:KlL1,GDl4rSP9EJ|.uQvb|+uSx$ecW?rYc!9cUgj=iޣՇ;E o +*i._ϙ& PiB5,1njۀ=q2)Fw̬F2QJPqƦݗE5_&i +mυ5_ #f!`cWAp[F|T!.$dk g+jvҪ:Um 8Q$RzܸЏ/Iѓ! +q%|5[NW oʚ: x25"ݠ5u-EjDiG4^|F̩Ӏ)2.s05\*QM'HX]ģ=x>xh\%!٠98jP`LJ EhIw$գWD%!}ȁT%dB .MU* ʼn#Lq0Y#%F %в'4n̠LĘ'm8N$a&|иzTh%eqF|(LzO[ +]#&ՇW*p SLI&=nXYu!![#*j(lD͊ۀI7aP\hO ;ף5/Gvyخ8MW(cڀ=q XboĐQGm׀)u+"ȗX ^#NXUh#kxLFe)3Ńc)@n[>!8/w|Q%QtWd,DM|'%Q4YOb/J!h=!|Vyj;Q](ԫzw̪|@n[F|Bq\>8-"acQ2߈$`#_wiJBrC)輺$ta7x԰:fi)0S>&Ƒ @#/<-3b[P*S""A=?(.#F -3P@ oa5zBȅ\l4%!1 'n#fgҌ1>8"ZD2\#H/PeIт - +-t-|$^|G0Vce‡6h|P1e‡ >.J tC5M4QGv(2ƇzҴa'6(ƅD)E*(_ 1 ݖC{B5,P]xbY'${ڪ|8dQiZCB|+AVShɘ n#цKd92Y<:HG.J7tЦƚ/'1ƪG/J ѓbYUS^ȳ#'SCb2T>* V#tyzHxdz:jTl +i>oXYO-*IJƠ1>k4߄MnkD0(SF5-!@F%nC;fVJGiM9ݕ%68B#Ql쁳qĢ3d13ZLa!bb$r]IAq\>QfKIC+̗ŇX ) -G'⫱,pؘ9sȥh16X1& ɦ 2FU.K>- ZhBK Jh W8 $>8\hOP%DhA .T#,6ddf”z2b=>,!h,bZ8 )|P‡5\7EoHHZThi! - +)بh-@%"Mh-ҳh.Eqƴ7f,69.E,-豃)G Ѣ.lrz\Yq-S$ѫ4xD`ÛU־Ju}-qU~-)K[nj{3ڽw?]m7}-?W6-B)izUN zn([޻3TVCI|VZgMuV;kzYuNx֊gջoro*{j?FFRӉnx9g;LtJ{ˬR]z+u2뼷}^3zK1/oTnik6u_=:S׽g{+Χ<7wn=sϽi~*+5}k$K5g<%ozzl5j]uJRM˩rYuUf-qoo6׼5'e~#\'"R6֍r'M838eP]gM]qS&5U_qyԬ&R5^:/Kt$P +<`4:P&|E6㦕BwiTPQ*@qf,uЦF"c# +(d7FUanĜ:Vד?!PR;K:҇H5v~H7t<KH!~hqBȅ  +BTlĞ>HOE`R6-9: ohNk5[NˉE%Y%ivҪB8A$Nw{ KAEMq q3`H`; K ))k/R8`pvЮ Pē2ţB5"ݠ=!u4uw)k"c\^el,aEu*H2^=x:rS`]$<"=Kndc|NTTu_n/N7z5]N2\:B`&̩t1 $i9Q@LK8) eP@LJ),J1l=؉^H~`=Iwذ@\Vx!p$fBH8PO,,&`YD9,Jf ѤQ1 %?D1hr&M,UއFˍ#-#RG΀g@!"[3>NY,u$VQmJs]D$ (&E#Tbp ,G-,BLF"$bAt['.ېE;iWa0Q)Q(EQFJƟ火}Ğ8U(˩bH7Ĭ5_OϜVcfp14^>.H1A)%ALAQBCNTA)UPi~\mj!A}u 8޳5iB@F8hNˇ#&c@%I,mĠ,ޓ?l]'5|M~h%RDTD7Nl Q;8aT' ߀I**<9,D wުXR.E *i>#p +.&a#T P @+`P;GDYu%>iě1G-ėH0W9x9jgD.O YH3^S5҈$q +kĚB*H0SJ< ^XSwުD(  ˜^\{ڮz#^}D3ei4H|6\|G0V7އpj|D Y7dS ODqΤ™,V^ C6%ր15^NbZUöՃO!T7x8hPa;&PfkWh1^nX@I8&cx0W9tڤR8ݏM&>#R +qȨXz t` (j6\PY?$69dSXŇPWi:gU]r +kMSz6\P#wŇ|Bu`a#^<,jZ5]Nr_DH'mĚ'q͊g K;iV/D1ߔE2Z=z=qV OHDXB=H$`Ix+p10%!.4oĢ:Ofqʦ'Y8hRLR”tk6\ll-r֨:-$}X ih@qXD,D, -u CFUp W\Y??|D:-ӆY.f`B H# ΚTD@z^|6\.M qKShRX# Qv_=nh)!H8coȞĜ)S%a tu"$c@-۔ +u CFUr W\Y??|D:-ӆY.h`B H# ΚTD@z^|6\.M qKShRX# Qv_=nh)!H8coȞĜ)S%a tu"$c@-۔  -uڤD*|-q0[UH${eN4Ĭ|91TJ< )(\@Q9eT\J -+-dxC }~%i!dkEL|+ ` M0!8{1V=@+%H7xօ~t?o[Dŕ7ntCPo7dO\gMaus&yܪzЏ8d}ڴzx3o̠D5*DU'SFŃtq!:/>4!&N<90fx*X{yԬFPzU]gPmj,dlT!,IDa|ְ|7cPkThpQи 'h\0?0ׅGjI1CGJm]&Ձ~luY" 8:._YVqƦě0?8WQeU6bN=g,*#5U>c48sΤЏ ։q0ƪGOk]=lYMeq*M+a9eS<*a tqUx -DBĜF)Q?qX=oYXY_! DMƟI{8 'd -غ ܸ 'h|ȗ8X"%]~`FDXD0Oz"`ǯ!,`X(А>dE %'OE8Poy;mTLUu!:/^l<糶s̨81l$Ql1l>oUCFQFPA|?nY#mkÁCA|8cSb͗F5E|A?~#ٔC5 -iBA!`#a](WG !~GJ(ȏx#5 oq/ bp7eM쉻\F@@PTʼnEKnxrE 5`Mb0(VwAZo1Ch -YYc~=x1X;x4]LbV8dC8jS/)ZkxWx#6%d9.L#υףb4\J\Ksuѳ k4]LIDgxズ{Yy0S9x8eSOVi5_OMTXQqv[:iVΚ3?s?Q'mhiBA 'eI$|VTQ}QEZWAe"qƦD22ne.\Z'Dl,rrK! Յ"'g}@Xw"!{@\GmAs\-  -AkQwЮܯ0֋VYPaC}65]q!!1nY1Jb8bQ#UzcB.(æ+dltqm4ufW@aII!󩀢6X8ldq%md1%-iDk54^>D7N8ˆXQde6aN?x3-V}ް%=DNV!%^!АXP-<1ŬxA_ -ԅ"I*xC!%-&SS%Iz4@`EQ'P'vP^Dp!  _& 0  @IL[ 57{Gz ` (p҃A\xbZB )/dx+\`$"WPiaРy,Ai0`=9GzUu! ?G7d,In˧&uu0Mz/șh&V@+}BL@Io43DB -]`aWp -ULYK,!3Ĭ8"A qē3AP/܃(BJxYz.,#|tΪw|;P .D0>"I1*A91đ0QǗ3_Tq5"`(f t!&d"NT(ē hH8@tIFK)䉳mȘD.&̉ FQD;T[Qe6 }%_݅ l|H%vzXP= I,!dTϛ8ld8K왻 -hF7w& q@ ,nbQ4HNj&Hx1H@G E@Nx -)k8у!HCtNad2. !Mx!I@7o*BBv_@tY]0SA. $}ڲƛ0g.aM AOx*JH<陸3Á14_$e-  o>p8HXO1%Ømr#5)AA/S8+i pfaXy|u,TD.J(hZG܁e8+ɗc&EZ ET W .LK9kT9hW*0xCĻ|1V@"_!PBЄd/P8bz _!r<(XhVHoaNoЃC& *i]VXB7!R"xp&!Z ,&d@,PRWTIƯE@#,@x -*g?/Qm$L!C r| i!Qfgs+rg -!z0M(A !L#=WrФ -"HW"z -*i m D L6%,OFQFEh|-H*SŃDB.nH"ATx*qVDd1 y;dT8@8,)D/8"I!LB>$ 3%eq;ށ q!VB]p `daZ8{Ix,bHDK*gALx!l (1*D%$WLYqƤ̕Xo :6Zq`‹љd s -'m>5.l!H@<6欉'4)*"@ -T( -t`Iua-,vN;_6m9fT< -lqNTUB6@D$L TP;!# bHt4\N YRn@Pp;8eS(h>V'gcIGxYJ|@qn7OmH0#%j|q0Uofh5L.:8& {`PS8Q`+z&(2Ƈ쾀H !/A*d @=qV WLYD3 e,u B4$hqB --'eF '06nʞB W=:-F G$%LoĦD-)&)4^>D"cR'Poʤ™&, - BBF*WSjINz& -8" OaŬ`Ix#IOHI8AĐ.0uWުA "b*pT!Eri& M(qB,j+A,I5&i $i>.^?HDEr`|G"tI)p: qx,@? *g )8S|(`IWфmJsP%$!DbD$6Iѻ@9s I AEM$qGC yҬĢ|޴:w0'B"fqĤYUABr^#%h0jU\Qu57cQ"#55E5`Nדh%ڄ9j,G8hP"А+ċD _Yz^M`dȣf}hubWz8bT-kiF7,!H%brnʞB&PO@e$L&g%i(˜Xq"HR6X@.$ Ntt\-s6+Rb -Ո/pD @Ѐ:ݏ 04$4!&N<90hx*X{yԬFPzM]gPmj,dlT!,IDa|ְ|7cPkThpQи 'h\0?0ׅGjI1CGJFm]&Ձ~luY" e8:._YVqƦě0?0WQeU6bN=g,*#5U>c48sΤЏ ։q0ƪGOk]=lYMeq*M+a9eS<*a tqUxDBĜF)Q?qX=oYXY! DMƟI{8 'dغܸ 'h|ȗ8X"%]~PDXD1Oz"`ǯ!,bX(А>dE %'OE8Poy;mTLUu!:/^l<糶s̨81l$Ql1l>oUCFQFPA|?nY#mkÁCA|8cSb͗F5E|A?~#ٔC5 +iBA!`#a](WG !~GJ(ȏx#5 oq/ bp7eM쉻\F@@PTʼnEKnxrE 5`Mb0(VwQZoACh +YYc~=x1X;x4]LbV8dC8jS/)ZkxWx#6%d9.L#υףb4\J\Ksuѳ k4]LIDgxズ{Yy0S9x8eSOVi5_OMTXQqv[:iVΚ3?s?Q'mhiBA 'eI$|VTQ}QEZWAe"qƦD22ne.\Z'Dl,rrK! Յ"'g}@Xy"˜!{P\GmAs\-  +AkQwЮܯ0֋VYPaC}65]q!!1nY1Jb8bQ#UzcB.(æ+dltqm5uhW@aII!󩀢6X8ldq%md1%-iDk54^>D7N8ˆXQde6aN8SXQx@C~`}@]袆~)P'ILNYbJ $1F |CLzⅴn\h' |QÛ"6G (%?B^ +,@)|k oPף=3B$PĔPDAJ!S^WI$9{qE&¨A77 B܃pWy ԅ!`.$!-( 4齰"gIK[%:A h = @\wm\v&NT1em,>X6O@CApBD,oܺ +)-d`diIFLn09CBF @iE$a< YGD_J|9dS +ǑKԈuW-P|Ѕ$8eR O&,'գ"u( FjG $-'J!cexҚě3'"$/^pQDQ:PݯlE5 8$k#|u3%"c둻JT`A0$Q>oZ;E lx/g*%CH!Lxu"pXĢ(h9-/p3!A9MHA b +D&R ,p6̉"=C& 8Ș]](BDHo@ULYl!쾀貺a(<He7aR\gAÚ(V@Apx3qgd6u "gc +'hIZPa'@8 |~=k?qbJZAC1G.kqSŃx+`P)qWF:27°6>mY*,^`%Qx7ȵ9aAq\W˓/L o-&6\z(6r֨rЮz1TLG3]K="&a4'wcxtܦIx6U@ +A +~~!m1`g D,j֩u*l9gR=L!)@muF|#HBl??x &%F@wy0{Aowa/l "jWİ& sܤzAC1Hx.<̉Y7$Yh-`hDF!/j0fcq%mlqem\1e^e$7eO܆Ep(H`+hJY u0$|Ar?P7,/A' 8cS3.bp/dp Aī٘X$5!3]Ja aKhtC\W1ף5pA3*!:/>$!18$ Y\93X>Ę LT TF*H$=q!R Q8 !& (hH;rAAz@Cz$(DJx +p" +# }:YTȁ~dq$a=ŕ4F r!5@J8" "7Š9>݇F,0 OPI ¢ ) |4}*@K~B"L Ib[ %e|E4+oP4rF KEFID3ĉ W̐E o֞x6gPx s܄4"=B8sq.M* t(N_q" h& Xy  \" +(ibxHPCAJ(l܅>YLiBp^@~7N8)K +F5HI0$I 0q=lY莬wpC\!`#OV +6xWtVF !X&l׀53QhZ۸bZafw԰D!.1Hx" +,ox pȢ~lq g=WgB+pl*,j~mf(a+c GBU ,m"]9 +A, +e~`$0ࡁ|R +!G2:BVΚh"J=Ё(IGanB Kd +Ex$DMD:w=鱘- Ё$ "hb$d@$9qQFLzQѧ 45u8"݅7Uܸ $g# *l)q?r\"qp ~  (&.@&H$@ ++ #p"}CPM:jTF *C} &q ;L Gf +]@_ p"[F4Zd D +C;8`%|Üأ%q|nxP|0f`CuvЮ # H]x A2D FDS|?pZ9dS |,t<8↵pPIx,dHDK*g7 Dp 4cTJxH6Iu+%߄Aum!1#3IN|&̔f j]tpMT ! +*p(b4W$MQd}q@B6 Q@ +{D%N6>s&g>*a;rYHAv?1 (鉰& )hIRZPAB Ppamܔ=<@z>uZHJx' D!%߈M6[R|MGSi|DEƙN,ߔI3[MMYTՅl^ēv5NHpD0ŠYH +,"p&a ,i#!].bh.ED*pT!Eri& M(qB,j+A,I5&i $i>/^?@DEr`|G"DtI)p; 1x,@? *g )8S|)`IWфmJstI +ez0T:z4YN!QAmMTC%v@/ARz;jX"!_"U@HB +# :nR*b@#:RQDQ[YTQ`B&S#AJiDTq¤F)_90'Q76mvȰ|"|UH.@4@UCMt`#WU1qʦD,!OD 鱀Aa8cS'7D0&8cRNj0hxz +U8Q󱈲@rE6ߋ: +)h!sĮ Tb3YKaڔ\֨SfųvЪ| 1͗J":26`l5.sxA7bN& eAWCPT IQ>j%)jbcxnĠ>aN|BHPDQIܑCD4$(7j ljtEu1)~Vyд׈#bh  DWD#c]MXȳ%eu9eQc Sh$xE6aN=Ʌ.K4#"Q,H7A^-a 0'!Yu8,C4m:y}ڲƟ 'Dgz/RI -~OƢ'eY;rYkIF;ȅ,--bp-bp +  'bPK~əhIZ72'%8"A](DyWuΦ|EJ̒X\AA @Jp^PcC[q8&p5qLκVR +e~;PCK8 @M4dapz'c<ŔN⎬tM =P[x3f4j2&Ɛ GHxDF˨d 40 bX69h2JQXX`@b'ƾ9oT>z@ k ƿ+ 76]Pkc{ml۽Xb{J1ѧPd^(?r5ݘQ7ӳxLvGc賓tQrC[? uu~{)S^ [[7 -$ZKD ]B@ռ+soO$6~a5 }<_|"q907fAZ;4#'%/ 0:]HV?{CC}TBoH3}5O:^FFZizm/8Av8J]]z_^p>xҍ?|_BXcR>`CϷZvCdlק:+W|sٸ_Kl~z4~i {!5=J/Gg/$߸(Sh˽ưe~{JKOꯇ􎺁/v<[NRꆳ:,D%^*[fJIR{h{ҷ@WB&*͞kˍgE(1HuV gp~ Gz fIggc ;t4.rÂJJTTΝ8N~HH"ByNRKvnYIMY6]bn Ѻ,<$v$\cSֽQɍPo7W;"5~سD,ܽ]{̚:,ZMGϟ*vnyKU&J>s'y>gΫ\= B(hU 1z_ |:6ýJ7jm06LfKH#cp@bdI +$ZKD ]B@ռ+soO$6~a5 }<_|"q907fAZ;4#'%/ 0:]HV?{CC}TBoH3}5O:^FFZizm/8Av8J]]z_^p>xҍ?|_BXcR>`CϷZvCdlק:+W|sٸ_Kl~z4~i {!5=J/Gg/$߸(Sh˽ưe~{JKOꯇ􎺁/v<[NRꆳ:,D%^*[fJIRg{ҷ@WB&*͞kˍgE(1HuV gp~ Gz fIggc ;t4.rÂJJTTΝ8N~HH"ByNRKvnYIMY6]bn Ѻ,<$v$\cSֽQɍPo7W;"5~سD,ܽ]{̚:,ZMGϟ*vnyKU&J>s'y>gΫ\= B(hU 1z_ |:6ýJ7jm06LfKH#cp@bdI l8C=h7–(.ړPɴ{Vx 䳯=w|;;J%m]cc3gQu1U`R|\.B"^5obյ yzfx1E&IttBm?:$ ? 1-sPNFW=2MC Oێv* 6sX4}7 ^>&F$2a!J4:v[btQ TǨ{6LA}WMLARzE-~sH"_y*QQkۊJK="hNSk0|=\$g~q<t|Ht6 Q)E:B,>/o}.)svp:Wƍana\Tu閪|MSr [mY sB==pp;/Aq `{"R(z%\8h&{T8`|'a8G,?èu?ɩj Fe64a bsɉ %d^a9M˹/+UA I2NGh*Xi{ہ)-GXeVL> Hk,fE*6XdGQ(mK'kz [Zj/{{KvNDeoE!!7B:|j90deJdmDoDw4)YjV\KDeT_ E:i/KM. mLsp5'Y !~gAdJmԢL^huX+[6_~7T3M~w-j[j;_0U9faUxcgȄzCE}V݌؆H{];Q4(9W(4^Ő+]8U`Uԇ~_3 -Q҄,\e~HxLzH^`_mkUtOЄOދa^duk{, -3,ȏ낆ΐOF[К^9cmÀ_Y`h +;^B !x!N]UdF*y4EޠaQ -1~Ec l D]`$Z|0BD>N!SrPD<.|t7Bjx O&QA%-"%ˉR -qO-slG%/?=MՅ7P;}nA? ZܼJ3 wWAٍSˏ<:܇4l$*dj;" -?\|i?ts ޿dJwA@Spf+\OGWxwy'ȉ~3A E =M撲pr4P3$Ʊ9IL1952 Ke&e~xڸPNQ0m87žóW1r2Ae&b13VR3},fBVCptski3G+{iؠSwa}ϲ.߿ 0&U68}D{[^ЇJ{s P]δFd71BB ȽgEƀ^kN gA#B0W%!*u^&;ÄQЦ'8˜^-cGQ=2y,^t(PK 4*  I?ъ81> <]:>Lo4hF:ϛR@SD3nsoAtvY4cC$<6h.H;MdߑT}zv>t,m3vH(,xiIq܊W;%Y$[yRzDWW 4=&н&Xz@R2h̲z0@zvʺaq\IഡYMhGE]NLʿة헶^ t} Y;mɬVr7VЀr#@<6bSغO{My5]&(VGhP&mHOޙ -&<# ÔcuH&FЧVd͐ *>攄!l'07QR11~XQ9r œ ƒ3r=.$e)~mBi: /DM!g*ú>j&A'6t]."6Sroj#z=ut1bFLP[}G N̐[Mim"t4+ }-CLxuFJ`^lh@;Wٸjjv#QKF(kw>]n4{ ye,``8"(x7@sl)8~"hދ m ﳮAbcb_2 ?QÁwHw0x,@n!heɊVFR -"ďY2z"+tl“,4cO׽4WMUc/%oǔC7hsK'ёH~X=b4>QYk@F"upN0]rtgd~_ ]&jx^<~"4i8DeE [Ito2GTH*JIօKbN0CTa;!,hsMdY0b.5\N - - QԈ2:Zl,@hFPhtc$@v #RoP EYy`!RھY֤fqn!8v(4NHac|z><* - %n*Vr8҈wZ.sO׻O$U. C#ׇqf73z4ʧ{O -:[ YD9ws~VpvWEpnnHHB;9̮Qa̽J[qs(Dh@K%֔f޹ -W$Cic3 eڠ |sb ?a - i2*H][Ml+02heƑ|,i6iɫpNtkBƗaDN2)C)%9A*p8'(Go~5}tԃy ̣I ) 3 .Bͻ\^878Tt"ehQ(6BӝgvRgA/DȆF ﲑet [s1%1K[{6vS -ݫU=wEqmŕbHry/#D;=₶d@y2>b4~Gȋ@efuɜ|̎|ق3C2O?'i: -r[8kb붧2p7&  QxGmDG BDO(!9  IwSo1ZLU% ].=[uP_Rd.]sޮ"{Nz~iFHP|n/s4Dhw}7PVׯӮ P5W^ 6#LEԸ6ɵCgDU ZrEY簭LāO~U!p3Hh@ T| 0V>7.NJ ϒg\R ػH |50})=י_BOnOq,e6&_!溰k{in0c6Ap33|1*g #㸧E+1A1%:2A!0IN" Zf3n *;@ETW5{j/jl,;RnD6TYYЪALK.aLԌz=1ۧ=mLÛC{#ڠPq$ -endstream endobj 2719 0 obj <>stream -hpI dCehog͊*ާ=4^8[pNղr$$02^ 㜱JX1O%_׳w#Vv-}Ś /OQlgT'E`LEgG*BCe*g^H5G-n~E{Ԗo+e>HTWUe -XtRK:(h1iP2|dsS'~$݂Wbri؏?gu vK/YCD?Pw iKIbV+s94Gqp}c%"l T$eѤ% m}25g}--dnπv`,ap?̐sܟHٵhPI'MAL". B||IH<sD9E3.q]iA1 rڗ-p..-Yc7W&v@C#Dqj\qRITH.ВE+U ܙt jPM&l棡_D,SV^Mm,"N5ai<eC|d: -!AUƺ> [jJ(|޾'RmE'xj|95^'l@Vcn@EŜk<lcւCUR`I< {eyt|V<*̉( -m{2 # AI -X <brTB)dkSAa)V0 23L X9-(c@v (?%w H|E3` z@u ?-xin?E: -S8ںk3fєמmxè(%4f ]Z|W ,C0|Ca)CBYxOLKQڝ_S>`.h4ڿ - ] -ck3ylF^Z%l5$*KIPKk#ԫx alI@j+dI 1_%VF }U1D23SP4IBK*5Pfpݿ"/^ԥmM,ZMʥ`ÒlqucE?5pXTk۹JZ -!Ze:]\ @nmpa%Zۯn-6[4zLj,^VqoմEߎȦuT&;PHA@`/bRS#G-Qn;p}MnY9AB 22{eOj$9a(=ğW9^µX"mmM*E^GL#GJEz|/#]['Pt1;n^bIh]9'cf{INQ\1\ ۰'ȿ.Pi`ۋ+(j!LT+k{»peʤB l0NIya d}B?+Bos6/K0b6y F6 -^oLUH@|.b Cƽؽm#ׯ#OAߦ:/RRR~mX -@LiT}fpENǺ7*UDFd"ل2uXs)ܵ׍=i]]8\,H}s(j_:dMD -X.p3cb0V}.d;ͳh*5܈ H|LoZB(~\|ndL%$NkYzRdmk<8[I_a]xƨ~w- ^D\C9+0}|#f. -ݯn\14HO&[(`DeH ?JѦ7ZlQC^WH@2>k ﮚ5BG#89[_Lg`_N%?}RwphI' w])t/k@@ c֊ݯPJ?)%Jb]p!`yM Yn 0?MePIҊ]~.L8Sir0obcXMGV[%a% -r LċO&qH - -E0ЍjDњ",J+ 3f^%>SwfXؖE(Mg7Dk9R@(.oNCKrQ& a똯"'!wN8 wd]о$"&A8ӘH3λõ(w"<3#A#+$)PO{,5CEG j䞉KA?"`fFgMYcO! pegY[Pj>%OiV '4:yDJn@Mm4l-.I AO%#,0q*\MBK!VW&W3RKƣۯ]EAg@s ᬥ߈GorwBܠm}e07o -wc!&~$\|qgt 8"KFhV{{jE>2_V]31h2(PٶQGB zvA f -*-a 'y𔾭*BRJ &tdz YwO 4w86G"7?4&iFX1Uc[_vZg)]"{\j)TQA-]FD&>B=]/dKIx"8H9;͸7)@bV(T(MNxvZ`ۆXAOT)2ɜl$ó}l߇$ -Kp96e@c.j664ۆmŷqCVWJ[L{n*0}cJ-m*%l/s=9S\ Դ:ߜю%%Ƌ uT8?۪fl .%LSk׽#^)+!ON%Mh[2 =ꦒCr;XNPtT"BFXEKw65 lA-`ԡiH1#͝-h֎h' uz)1LF2$ze&^*HE&&sKpBP~:)HYh#5DsԞ C+!|MhTe@#~^f8'w&D=:GE=7iAerQ sV %u6ĆM5x4"nĔFԆuFgtp-$?PAAnRY"be[`#pU>\p!1|9OHwC|2aTҚ-ޅ!rTT4\\͚&FЩ&\[u ;?zH,mrX~%UP39P 7eI(ߜ7ͿBb1Ө@*XND6&H 2XJmǎߤ -[l6C0x|:yA;ӎ-Q\Ӛ|;axCi.H_ E\iQ٩ina|(6Fh0͔_c -%qSkx1 XR &z浼g42VwR4.m9e!aNp5eqBudaA#;Jy%|3oR7yp-:n6Ѯ]`(%?EzH?߁win_ѣ=Rȶ.__:8BƑ#z̛@K?:[L=`3[v•o<=UOBq c,zTYAO49(|U' )ˁT2dpv uY+vN&I0ئ!j<S/R:aԤpAͽ{ UfN'!Ҟ -nt2GpV?^@h@{ &;'DD!1 HH!$d /-gQ @dNKԂfrRD\i18a"Bj]Pc '@ЈQY:b.#( -87<$2&؋A+sdJ"uIȨMnNb]6"ЅMS1W" %֫I-A&%q`bi%&pP ,&ݢ9h3z& &3%I@x&INV&Ʉ#2ˎ y1A }"X4%R&`]K#3, -(%ژa0>P%Ldž) -ma -m 6s23(9KPCE$Y<*% LX UCS -A8 -DsV еB%+Wn|+UR8O-XDmJBR2qX$%OVRD!SaY/*CnhA P'Yb۝Mj^NrZD&a"v&l!L2-@[Nv\hNI˅I2 xM]H+I.TIw0H2qŻIݼHڿ^Xi$ H#Y"~@+58*؈!(wxV!x0A2H\04ɣ|È -6~}R|M1\z{!KL7F y# oNȥ$#a6A# eȬqte|痑F> 3RF)H2ی5rCew¡ưTH{ƹ4XFNF3h$0# ddi<#,_XWhF> X`d0j|^dj$"PX#-BTk(Er,Ҋט"F^V)6"&*Rx~iC]PQm"OȍsOhDXlq4 IQA#"?8 4" Dz"88u#eqd܎Ck r9~LUV9r#:s8Ǩs`Aȋ~C ԆttXC>PGhTgdM4u!;C̎DNC2 ofRpvLw -YwBLB&H8_B |20yd]#{.B>?"c!QdE-pQڃdx |j O4HɒOd| s{\^.k >S1WG4#-.A=h!@>폕RcrS$_+]oMQBRri"6:~0|DT81@v 2MDCqz_n< u(bC!?  ɴ"egk? ?P&9l'3{Kp&d]}31D'DS8HOGRBeGS83O.BK"1E ~A?x8ӿdICǏ%q Iؗa`W(1Y }ȺA>8w^k!ajeaq|nca4=p=veܣ\^iDp8$=&(SB+G_P[Ny@u<m#hu{/{IȷcnBLMG&D4<`<,'R ۿ\M\Xb$rM2.[:.Nw[O"8 =)f'&> -'-HDlOE@[Ej!(`$H qYѢ~g(E}yƢPVTa0XT(BLƢE#^~ITRKI--eXRB) -3EsxElV{nSY6H< -pW)ϷKAVjE+ߏV\ YUTr -1Uu*ϮC6nS"?K*z[`@2lMNZ%I(@O4N_^* V.rtTJس,T K+@rSVfx9p%=x+Qv)Yؒ0EZRWRGPQ S _W? -4@"Q,I" =V@X(+|D4KFC1Y* -՜+#x! ?PRZd:ľhOܔ>#+|vZ'0%cƀNei -dL-;5PhItԂcؘD p3 1{O=&G~,UÔ są-EF:20j dd!J,PNH2"CFyeP48FY eS e 'w6=$8lyyPdfvpCJf4Z3م9o;܈s[șÅtv(ŝy1;<~y&͔=u(wÀ S2OKh,~ 1؋1FE`br%FH39PˡULjii zɵ8|4@"j R8 yTtp fqլ &oXqvu:kZ#nxߚ\7\uކ$&mTf mpasZ]5SaÅlQlaàc5lu 셭}:(c pa#Wz.<<@ MC6Bͨhmɻ,n @pr3gmg78ۮ6fOf( y|BQƱeX?[J:)Ctd $$7R"É#p.Ep;l0p2b Wù3kb# - PH8 'yB1aqg_8j_(l #'^B9B'_Ŝu欝 ^s6IGT ]_?pax mpӡ7[`tt-PC ZU頫aZtcQ'yY@:šXgu,t.?•svur ^aW:vB^pvj'V@h#$OVis#f\` W*4?U@*~ -˝Rبoj¼q -4/J=0)#{yR;tyB 0̅vP؟w2 -ԽO`辣'PAw::x S'.ǛxB @e~Ghy>R2ѥ>Ls({)n (/~ 0'0~O%˟Y%G0̪geJC G'I@)2zGQ.Na+8@#aP U$]@,C+Hx}hG @~@DvE=@H\4G.\huH[J,y ywG4ٽFpHִu7b_#jQ.cy }nP2F(&>PaWT] (0֕AH]̸ /^6T9"(du|*^TyYpW $/MyGsU})^"PFil}(]5`x>zE`b&w] !I] 9n+4 v]DXLQMVo*µ5jIjW>R" W`é: 0⬩c͢L<!1<Ez&ҽ~Un#zt]%9L]qCw 1[*_+hM n4hT/ -y+J~a=* `:O;,hN5;To{qcO&fS ׿TT@Cx>h$l> ,r$iPf`5s u򷀢κܼ[ЃUPy\UTF776<@cWgYoW&(v4`#aA .sآ38|Fʕ2@ nFElr /9h.q@_6 ):q;p/CCIODo{I,w9E/4ȅ<:j#2'7P?COxmۀ#]å poWKl 5)`Bf|%`'n5C9Ej0{0HצAJ(Ŗ,-PC?4s]"Q;c+x u|i)dv3Ⱥ{JIp^D@5MVEul i3F7~!ku] [ӝ(=06+t0M% -O^`n7*cDƀh0{@]}Dnlź" ` ͵:z1& )g}6@,pѹ`O¹@z*ASP\ {,>|/Di вii1Y:g,) 7D|zz]b<pq`>dVy2vg`mod^Z06&ncWu mЍO*1PYf -Dn -JsRdi^*)u=#nm|Ed iMeURE?Eks{OSw戻T;N0w5W6'03<u͐# kV.奀'B0 Qޡ&t]5gJB"N8ϐ'<%8$UE<$Jt c[$ F+A,|;5:HrBG -#8G gxloy# -0j|:rBrn4$:Q1.Cb0EdpZc*S]N -e\_Qppf!Z(Yse dtJ,JzR.Pa\QF[ڌ݄/Ôuj=C$e8rT҆F!'H~{YBڱT q͹جI>f]HEĂB$1(0.D+xj](p@㟉MbK%?FImm&<"`Xo&XWd)l Tlҋ D 2LH{D E`:`+0@LY.RKBOPJSƐmns4W@:Pj ܄9 ſyB~@ ﳝMoUQ\ 8&}$tO?݆Hj_s@KDfG䩇lNG -hmެѯt/8?Ք(O@l|?' 湆YOFI0ZZ|(O*OY2^ Zb -.B| :}mbk - -r׏E #֭l%_ 1 |_*v=g7hIuѿ 6a),ǭoR!Osk >z)槫1RX,q8^V@ZʿpqyGV[>~*f9!@Ep YS hr,pq_#ғvĪ%WI]-tI7p.yg Y9E}U\/IχY)0գ%,~6,{**mHJx =J`'KlQTko;2i<*w#)/J4(*:0~8ۆ*\k@~ݮʫF6xv$߳Cݷè}*$w E?.BRomKt k/lPqЮL [@xG!oXRw4wua]*:Zu']|UC_2_ֻ·^}86oMT֟evr܏>?wsկ6BЛ_|ƣ-ӁBBN9)r.P ~㥯ytEm]'a/rb1%l%~2` Ŧi|3b=auʈ(v o~>N[5-J5SkYgW]6?V>1?0z+X+~] g%eaIRKS0wP~Z&t>UUxil@EmSVv$P]1! k3$0]T{KS~!q&ˍϥ) Ƶ,mҒ}mx?XԤS{1`=DnZ shjQx|=Qa٧o@u-8vIvio~[ӸȨ"9؊L }T~Kx=}*y/ :4m"( ^5K}cr_/9 ;dSod0j wpբw"Mrn8/՘NCY7ŰEjD 7[zŒ9mޢ`L)*{W,XZ*HJąRlF m -N.ń8,Sz_I8#vЮu+iNO_rz軧} L3vRyiώ.~\GSWzCpGI*Ey#B1ć̍zBУkQ$^ؗ5`E-:GvLJCߗo=蓸zX~?4LYQzN-6ʼz^.W\n>/l#zn!v^,u0"olK1#]KcLשϿ6H_zR*mH:a<4c.@k!2e5G0(* ea+E{Wu -kR>AI3?ןS+N5xVyėll{U=PgЛw -lxȎ8ی᫉Q")PY>_ih AP8KuU?|/B=_ XE]PESFNEOo=f9K| -m:521/F7.[v,mƽRpW.;L>D K"!Z `~NHMPW~HtZ OJ=1ɘ򭽫E<\}(BV;Ҵ4ʘ/dKv%2A;/*2γ9Ԋ1'fWWIcUˆ8DEBх+g?rR)_>ƔCi<?²UM}PlڴS{d0yDtK@D`̋t=FerJOϥ-f[y0][/?~ :PWWB'iU)zMXW|  zIht{T*\n'̅Na"8%46Y*4P ^F"Hyz6hW0hJu-8ҕ&H%#I L^ϓP2[ , NTvH_3e; Dz-m*kQ"55 5O0-)guX -ܩYƒzyK](n@Tiuiӹ;3t~z:$BD> 郢oXgMd(|OadI*tQh:Vy7{Ln1tNth=Uk/̾Y#Y_#%cwM: `4{ -#NNoU!g9W}wFvtR - B]́~qO2:dբd\Q(=}F&/ 臾cC}_|VhlB~zmhB53_j3!nC#$Y[Ay%ר;8 3ާ>GZIa9P=lR - UE߻A-y4wLvjC{y`t.Z`лw ykޓWsu1sl&qf? -~ߜ"!#Q\p*9 9J}j2_~[Ѝ`򓧺=XoU9"0Z@'i98P#̏F -x0bfgF;cߐ}:G*sN \:9޿Sއ1fRlܸ5d=`| 4 sp~Q;؀_ρ>yPeJ$. ,U򖆘!s[Dc 1Oa=Ĝ/2\ 1_=(1bjϘIxaq g3q_a\vRk=cƭ$2z1Bϒ' bgḵB0Ob{N 11j9anGkGY`:[7ye1"\͛~#χʂ|~ohNFC9EuH/q[R#>SFO\DN@=,r6~* -̍IDAF% ĩqaRn(. h x"{n콂"xan4/i^5Q֎7D?w]YTAaj[H+pW0I*!@C=o57##L}ys?,}+ay߂&˰;Q8躐Iq{+5?j&7*xNf{ȧ1ImmA=ekGsI7%ؚ2 n,0Up-Նk! ,% x'kw&8n|SIJ#akK`w"z&*oyMWoG@{pd ڽ(ocHv{U8Vf魻$R\݊Xٜ^N|w=0W,(y}$݉9#]Zc(P+~*!t' b2,-wyt;xgP4'} &kId%Ŝk{j&qz˯lG=)pՒ@ Il.fF!Ү2q0XkmmVމA"7y} YAemg@؈[8x!]a,!^b\ӷQMzi$T/4iaP9^J:jEDQ->>b#0Ƞ"(>:t[-=Gi +؜=GUi1PlLCϫl}-.lyv:S7MŒr)v]6,r(ًXᥝ-QمT2d -+'DOݣF;n4 RʴNxlĝ{?+t3)!e-~!\ƼT=NN)icQb!Έ)$}\Lby83s!Z^Y܄=x ;AvSZEwĹcB/:Ҝݽ} ^[eBL {:~m,ro=U"rt5O*{MeEO[sj4\sy]]mE65SSݵF:d]'L.yn_] -&zp[:jp\wvP.\of4 -|YF2'Y#ybpBcaY~9:r^ ,5cM!/ʸXcri ֖$1(8l{ WRЇW%S"ԏF/+Y֍O{E;nѮ2OWk*RVG}[Ze4YtPƕauy&Bj4v:c2aɆejCni]~Q he.pmeWrP>ը/F5bI:ռO=OO - g,%}hU,Y^hj:UdR#{+%kE\$:UPMBI JۺQn/]FκG}Q$u?FIfh9Hl 7.~|(_Um얄BDXLB@ 6-,㙒^^&AqН &}T0V Z5m |(TQܸ4^8& ogIivTctCkZ -5(d8pA?yJ=J(^Op3 B"@r(݂q%gPxˋPG`QO<"XO Q xQ-8aH(Ie״ԣTa;[)cs?,j*By81E-SG:PtR^Zdz̘*š aL*rCӪ:$VEoz ]4֕yª)?7K@a#x3Zc- Eoa첰b_(7M_"pOZK$Zo8Z[&Xl݆i[  -^ltm$f)tļ +RUj+i@e9`rQ5xxg_=EH0pD*Xy!ΰ˜UcGP6>)*Y[ĦB.870vFhj fkB%2~|[ _m,(;Ke6'd^ON[nV\2s-k`&sNG(쉓oY fjIgІY^c2|r1QFt -lSZav#;Sܷ+[rjjj_^ޛ׆CT.l T:[F?+P%nT#eNt5unb%>wk0v= 6(85y.uq%끮Z\;` - -۟H{6:ra^uqζrhv$Ct_K! OخzDUG|j|u{WE@J)=U䙱]1ŶqsWSwO?.x+ +J:J^hy۷47 #EA8z}f\Q&`eP~d}﯆oWR&/)kx/j}wJUCx )lOM0~miK7-%v$Z@gX~_{Z[.ouO|r0 -,5sE:O)U Z3bMHBRiBoh;h:xy qV=Jx3NXsJaVXji K//6 m& o{p?#@|  CxB؈hdčx28 E3{;Xac:ԼUYRoY5>K'YLesq _QY*ǥw1>}l> Ə@6~1aߍ߰c' QcM_LjhDK[L rQT"d.-o=q=AְMcSD|||7+#>UY^y@S+q' -D0Cfa"S&k٥vSօ]YL@ fm[V٧1y d \Fg:.Յ:"q{9AYfUUU'q#LнRJ)3`!b&jLF)DuS/Gp!lt (䟬')?g.{5TJQǤѴnKdKEQS]a&r6:>&} vp ;- Le"yXJB) '0H ||o'&&/_|_N-?ϗaGGc>UwkBZ!ii;sGN;v=`JU@KADlXgzc9χYsyoB"W mpMk_ETS@pd_|'U>o,'|e~cX]wm;ls<:޶ p@(D% $d\K-5ߙ(OCx9b0y(y0Xai#l#=|8y8y̓5ee=">4ww ~]>O'o|Q~G(M?,?|S/I T'MQ>?!8Ì%G}-uK9.wIn_fk ٷjnrXJxG|ףF9tsUG4F#)y4Dy411 |oVmX9M7Yo/?wP0||10O#ԆF.,QUn*FJD -g PG&"վ>*Э3zP|@LQJUn6po~K|55lMbV/SGnj`E"XC|dJgLQJCz2ҡ({4t݋ "fK!!ŽȁO~1j֖1LQP3y$ NOv@nΉRGHXDQT\=,X]{Nɮ-h;.9wΓ}GߎXOFY3 ]09W!7۫}2"\*t [ x{q8$i2z&ikvYfN:Ev0tA\[q!1"-q/a"㲧혣lR:g34|d%<30u7u[oEz"Vx؏`uos+ɪu(Xq$͒&͒r&QTgs!_)p@ ] A [/Ci -SuhSt;RTwp5vmK׸ggz b"7l{Wd"CAUǽSsb+(*8JwZ.LϹo,: &͠A{FS9 8Rc0ұ.ҵXkEQ&Be$ k"EubusDT#۳I=3Vr6q QH.F,dky+oZINpC/j]].W `_\KpjBHy6b\<]/Ѭxh;iB,Yi=x]-#. = GhU<?5V6lc4ek#.vGl7ope{p)v Ewkzk U%<|+Bl5"Ck!4pje,FƂAyD܉F{B}Ct^1n~|LXVI>-] 2h e\GvF1g΁fTNƺTs?~(±*Ƶ""P[%Uk5=lMM|HZ&r22ҙ]eZLڵcfA Csufǯ-v)!U&/fKG '1#r7j<%ņcߐdӊh1e՗VCx[UW\¶r6-Զo9\$,Hd=߶+rY|k,1, ֑"9 "[nfATFA?ު$*źW]+c#e,^ه-V|Ywk,ݣ,囜ecLE*d/LG!$L/V\#Q[@-zNi%tZDdvU2\SO[Gêd[)c9[{{B߲طأx=:)b>Et$嫖jkx1FFPܱHK]섹膸Jx%_jzzyg۲1ԂT `Aut*fFR]FCovcw^5U nҠ#5)]{}nfo^HA k~ jZP pb2j3D,ټdv'i'X@ 0$8#X#Εilkg)rG8b,"hyVk޷zql1$ln٤1F]-@1v[]pq8ȋzњ+H] WO"o6cő49 jjm1ƚ{πW5m 9 uU |̋Nz?Jl@8DK"[JJGXk?rBpoBZ^жH##`EL~` g WX0r4VRq ~kKGF?-`qlQw?Yu?p{}67vcl4fd@'GD~ރAąD2*oֹ"<9Ga~@! U1mʞcG"G"䂳聻B  Q\V^!i9^j~23CfN7-~skU^mr?vd@3Mł31k]UvT - k}Ȩq%8TNSq7FnjS!K0rU'0lCfٞN`o 4@m^x,Φd_g-m8_D5W;D_Żjyܺ- .^6 w]v.+&d7EKx}^En.:dԮsSSIDk(PZ4t-O隸vUm>ȌqY`0U.g,rZ<E~< M瀰AĀ] UKRGq{ sE`^->62㦗 JسjGymCjLA0&{ˋU9ܩn;u(ͼm}zyثqx }$ʹNahUąVkX|+ɞc;-t|6kXFnXȐCY0"ŵH)1^En$E%ْpzD_ V {( |d$NZ^⽼`PA2w<.P'ڱwX5o+8|B 3ܡl1[Slz )q﨎Żb?S1~I'}FY:)/RY&>FMF.s1.NrþQװÌgX̑j/'"'>f1#G9T~ 7U Qg dG~+QS0JO"T$ o_[/ [{8 ;uqoFbUIB$)l#. hXg Bf}$QKiErHvӫ&ۯcYN*4ԛlHA.m i7Nͬ;ZMA2,{Y].ļ-}wWwꈨ}NEh]udEi+rp9MtӶؿro`3 4rv4sG+#( 'TH+m&a5Xpa93bW17Rvf֕&KSh[xsXCZ"b)LbuV1 7Bޏȸzmu|^긄ӝiFd«-zPxZQ aРzVBV \ ->nN}CÉP'^*s|h 5* B'h#hCZY{kCw64z-t7lie=BLw,^xHC/fg[`8[I.qP uI{d [Y+^RzU.VŴhPo 3' D=H*sz#RO7SND-fm!a~ -i>j/i&]-fU+Vʭę`QD o3d uK -!-v38wZFBo9>ƃZy[| \AaEzCLL4oȻgp[Ys8.yf`3 -/ u,jK:fPFQ4ֽ'fܥ*m]EEJ_ubuurErg63P*QWQ=އT/ 5#qz#NzMC ) 8!u(U~USJ/fU`UJpZȉe82GVR8a%3> -8A߹zn`̓G;)A\Y1QCJPns5c%cug$%A‡?d @4?Q qxiq -S&aߪBu{2G^Do[0\@Xpր\z$+ G2ΐֱ̣jHЕ/%+H;FJ6w7=\!1vrAfVDo 5QމԻ?}uDp~3o&T3!M.|$n40-a"F]@Y%'^F$Kl'e!KUS`$5 -'}\pn6%ԃjcaߝ"ԡʅ5:CtDAjyn |&!Igh cq >u ֘joD wN<&J|;#0 o Y5Y@%ՂOīM<*f5zM?D.2->;>:z&$ŭ?Fj\.ҀA BF0~F MUFVծgJVo2aB^]hCZfiAH3Ea0tXnʹd 3Gו.$::~ԡȶ|^1-dZ]}ѷ#Tt<|;"SČ <&nM+#R<:xdԯ6uCzeo/$6+A9jMV\"q8s}U GEn7ꇗD,:/ P1տZTLIӄEgY$G){bVbb0L\YqAu>ȨNƘ45 Gۉ!` -=| MHxv<>|A7VNa5 I|< O?*)2揸lSz< $8Wv[{H-Az sB=>KzI9H&cOAnvIOA'C8 ~Ts U˟etFcLU lcIcNNҰ3mSB",j< [0~f,ZaнsT!0xtFUH UxG؍.z*ϵohw>hw-RΨБd3)o`Z}VoD*Wr5D!!`n%G@ߠxۈZ"CgJi/vL?jKElMsyYm~B7]Sg&0aEwS-mGCR \4J໫RY+QfVecIzzGCHƑ'SśR6-R.D!г. Eտ"dEnd>OseާVk]zEx$:!Y9S bއuŭdMFb-1#qPiJ}F4$*5Id"En/x/xDrV"zTyr%zYUP=FyPXXm) 1kK5u"|S|+ V -l: RNJ:m#.(x \I;rP6B}W2$}G`Q!/, ] 8B`"bTh{^!J<HvFCWr9ox  `eI*P^=R]=^Uɦp QJA?Ȧ)serhL+wn˂B6] 2V y"wو}տߘ2JIT XˢvxwvzĽQ^SUo@X/pKP+U%V& }|,Lqt߫~נh~G[WH( WRW'[pcv& doıH UHNKUSQv+(SDF!~+%" _v,ީ>jomb@L%qG+1ԌLk _@7}& -=4yDP|Ɋ >اc -ȠB7O{Gu-%3r-^W͓IS%+ƮCJ` dhTkA(ByLlHgD0ac!1i6ÁTeG&-ti@KȁAQϪDԳ&7@'_M>od|od[h rTUKFm.JSOzTd3zJc4F2>Hz_+Rt/:AAjl (@taJ/{Vvi(࣎E6v>uPdY(PUJi` : -_ ‡>SЏW@uVl̟AaAA[]RCڡRޭ1ӡ.HeQL|WѮ F0Sˑi0h.zzIT=v|`hg 1@Xy$4@(MxHP$ D>)2&E۠'Fhi1/*hRBv_Dy42nb d)-Zg@gO2C;cS؂!{z$TJ%n"aC|WT~Z/,7 -‚o3 -2:?HFW0>Wу$ =!vt>s紨/63HMeUn|R[D -Qe@j1O ;RLe:^b*]' =Rz & -"·+|<&/!*;ɆpvFB_R'?Gp2ߙ#USYdݪ+/\J^J!uwx/X='48ߙOe~?Y~KmbEQ$+J9[#r$µ -a1cnǏFF=*̅91]lE%-}E__Ajgr<8dB W 45_B _B-7ͯ?# -Vh>ߠiIoPf˷EÑd/U9.Υ#i΁@d6;vd鈭: "v=vHU^ nWg}9@(Gdhk -?4-| .5|i>>?s3ͷ9Q1})c]gsc]jncij]iF;;ST=+IN{o>D vvGT~҂gaTp~׀S1$\+3 oWpByNfw| i=b .rN6Ү56ko]j.|CyF `sg,XJCԏ"!=<:Y5"2 >`g|fl~!^ -26_ ТqTj>/_>|e>^5@L3%~N9˽y[=hCHT9/G<z:d!j0Ґ,T=[Ar0u` "rr>M_?7fw :50Ao2o >)o{8h/@lδ|Æ9Gh9ӱwWY&0p4p4X!З"qQA$L:67V x>a_%3H~ Ko`_,HHs|gv>p8a&Xq&q#q*CL&rҏ ^_2R'21 ZC| .4?eSX@( _e[>6(Oˇ)FCt;1i*IjkiڛIf5枏K<A4xfm#4X㜸ZVK׭ACxb. ~RMR /2B̷B/|"_ 49?Á W78b(?B0zm`Q0ږNIz=SN3ifYԒѮ 3)gY,$c*Gz6˂v/S`AP`u̟/$7&~o*?(' LSUvXyf<3jQGji&8֠;MDG9O G*mPLL& )§!,C27?|_嫰2A{$Q}x2Jg8Ks8yCQ+I63u$Jx5_Κ3YYztP)E؆?HSrS\~.?|wT'78<+nI|o$zk#DҮ0P TÿabJ/ݻl$X:w^.a[zjxޚ׆\V'3Ś?>R'wB7dAlӭ^;64'1"o`D歰)g\J9q)h^2܁XB@~.3d2)j[ `x7RH|0=b7Dp 5µY`D{I *#3rI'?ȍ9wQi#.PKx2kE7y=>8 Gh+o<ވO B|:L*Yd[H=v7X܅~+q8j-z[*R,Uk)vʵԑn% -5 u,I:|'x; ĕn+qW-iTEl$0OPvSں*r`>1܁HN͌z;qÝdxFmG!ۢt`WOҦP :(J/ub -,ca]>a?2uoDncR܁42p"PgSִjeLಿ[zIظji32YNcӇ*">bG"\#ti~8*{&ZدXcu ߈VT)Y/׉|G'$whvb0Y\s r5n^%7xsHl(A, 9eɵrzV1u .qK=~<%yItgnw`Z1l`9/f.9=gci$ .}g1, |c6VlV($pG:f-OaSֺ薾f~KOʰO7i*V}6t+y8,pe: nĊo8\5p☿4.lO@Qqz^ n](-.wgy.37ۃD x].vi:ʈ=CrG"G!W־tvfv9\L_nON*r``uL&P `+,@=hg7W3l,z [A÷S`Q߶&:, -1ѩމӁR R 4ozJ- fSԸlB7'2o<Ɵ&Z~WPJW=)n]?A8RLhdQ>f;wb}2Ehe4p9+75շlkU'!gz'gx;rUXo4lx騱E3(`A,^,HXM2zi; mrYbEG9Aڭ"EtUJ2WfvwB>qD:e݊SQ+r_6ew,$ * -aY8:q._Mn7 U4mѪ$@sOg+ɲ,/;]WIqgx/yh)A>qx!coxIwk%D^Gg8&-Qw @&#R/g}YTqNW}zj* 9;u`[ޒW,v$1k5M~+Qm($h@>Ŏ6f 4oP»g77,ٴ -/Yqrk=6}em~!b>XgR^aipxM#>sȦ JǹˇoWy?窊BQ۲Lh)=*~F:||c`5iD0EPi@Lk0C  *l8qGߏ\,)׶ȏR#k 1 u_b|R/zhO~Y79A{! gǶ粮pjHQO 3xw0ɷ>d3¸Ÿ1pV̝t?G;BhA⽔y2>y܃%tV嬝/% Hu(<IT&]ޙ]`ނGie]^.sv}+s`5D6 -zf6Ww pD7ܦQQor*rĸ[LA 3%| -2q 3m=E,k=bNA: E\MOWnNMra+/U(TII3n4~aI; -AzȇQ$`䲖al,1:yOHRV$7wx?i3\{%"1l%%(Iapm~='bd(@&7ԭ'jyŬx6u=śC*$o&v; V70fm E`>aP c0a|Sں#`403,OI\|az"8G:J(oYW9vv%8CW}**% vWZV:I i%#a:;yt̢Z؆.D(+[+Τ䓎։$P+"vXlX<;wcWԏ~TA0f%)4Ym>f=x8 uҐMZc 4Tl/SQ)pYGEo8F1%n^ZY[TDDa*}w:PZ¨s!l]pȸ2h7%9R(@&xA558jKpJDO_$t27>xVmYtP_4*J"WEVR i `wЯzUC>$ 6mDzz-2נU&Ye)f\9~@/mo3ap7Č[AUM"M+?DTRO?D߂π&_kQ9ɜ 8a|G~" %5i%$uґNŠΌ{7Z9 *e{@qٚ.(8#ݡ֒=yYT*!4]%{V9'ƹAhsI]j;h uf*yWaxt=b K2VD5;'ΎAL oX^aW葅y< {7qi\n -(ձ^wIC:i8XʚCd]amcan{cͰM$4R"b ` 7UKC9YcZF(#i0Y9z(V`[X/$c}/"wb(@3G9&]/bC_s24Z BNdb3oD:=E!yo ;}ћ f?u9K[bƕ-rfoLWi벿_ZZiQчϤ6y(h\W*qca81ǥ ew`CჅVQ0M޸RQxXc3OJW^Hx i "2! B!! C_GGG4lqua - -UuC . i}}e2+hBQPPW/" ]F[EE2TP$df+B# 0 Ii(`DC53$! ]C[FZ0a:: -€h(H+VPQZZ$ >.`l TKMB<յV6-Vٓ$.3.1_FD.`@a((PЅ.- ]FZH0 hi"Ao>sNtÌ?@ePQϜJ CO0 \rvS[bżw 4nxv@b`O%왼:v=y;~,w##@dqC E@w}{֒3hy(<4o;:3~!-T`nAXk]eaƅ`$@|7u8= Lo15pO>aTP v2k{6܅l\84o5t] x(O@a`' ̑_ʼAZG"+AC}(=EluꃣRξnH:~B -BǹLߙ`3mx CI}*☽5]>3ضOHAh -*v$v7L7P73?YXJ|hc\oAY@}2rG3y4]xB>{[Xm2Wq0~%)%.䢬Sx>|MbnS 2x{:W}RBLq: 1o(#c;Ӂ!<D7 8ʶ$ N ?ާ,$L^9uz_Ǻ}F!S`Q8 -"x -+|T7g=MFA,ubYNi'(-0lꥐ)j_7K\g}:;j]A!NAfoD\Wpy;QǛcs} 0ǢNA5\fmev;6,pu .}{;\HF!p0癬y B1$J\I5Z:kV5sV ot -ikxoH;Kg!~SaJDd?}?=Hb0B#v3"1IЍy{.l6 L<~^1OIh5nJ\ElII[Espw+yY[YҿQH`JxUTˊ!p1q -+J~' cɷߔrv;QEc/OD 4Ǽq:s.4Cw4 0 8Ѿ}qm/0祫u/x$`T?~/xhn Tk*n( 8ts]Cy?L;:9 ][~RE}qVW_FI5qVXK?*s6|_ o(ǫi(lckZ' :-d2 <"kzusm*x -C=yWx!//!'F<$m6J}@ڍgQǜH#W`//&C3ۈG#!E N| (n0@&<Hrp-Ysi3}0( ?,i$\M7^Nmnf0~%t{/USUxT\gԊzf3s9I H3T-PăT 7u{xGfh[Upۅl$}*vO?AP:!I1Pԇd(XZLZ}X=ybH;`~c/`L#RǻB ĻA_Nؖ#(dmp{%߁: Y^N GYêaVL\8.]~87O=q? 8 ?W&VMWo)+]X ȍ}.u-By P\>xc<2D5 'I$?F7,%^48։UԾnRg&!P|ap 4ލovȾ^qJEn,G!uX]ĺhx>b7Iu?H:l] ONq}.܁4Y;l?(]MMd+^NǺ1 ->׆EDSn`0Zh-k6S'4Ce!cfZ;ćl$@q cOsl,r 61 6&Zt8OW@1fYs VJnI5~) { px OAG_iMO?E})lw v , -sG:%aqn!\SҺ엽40Nnÿ:!+t^ ]`\~B6O XV svA <6^m _Yk+s87aP0J¶vڤˮOƲ60]ekao{< A=B#y敟7 Oİ63 ᜸1oOO O xF"γyx?:9mqy@?&tE4mu˹&ƴjSQa|j!)׍R-q&Uptw$ -?=B(G㝴jy3,шh̝dV<K](sy7at}*N#9P@|CAf:@-u$.\Kgyea3k╷/OR~y($ߴ ~rOAQ"a|bDDTY P' ӁR 8fts͠l|0ԿՋ>T Ho5a.WnKz=U($<2%gpq1(>^<9(^ESo*yiq5s~XK:(G:2k *xKL|u5mXVt7M"nSg&F!˲Syd1 >a5rWL]MWYQ̸j.Í2sbG) ܭ^;Agv?~9Rnf]E 7n - $܃TE2ʼB>'i1p8f,؝,pfxL_[HsV\y/}ekgyȁ yYF/`&?ڡܴ E0I}: - Ȥ63\l/j!h1o +ø61] W+;luUl=毄c)̍( L)h]I]eUS}xp-cč߱+70ZA&yߑWv{k,ք݊I*J (F禷absIG<@n$ -,-zbK|rN#ybA6FP.R/'<@C6Jq9ne9} |"xQ8b˜R܍ñĕ8=a~|8r5 bzqpg[U<e§`nQs쭉c̰hx6>эF;%,Gard-1li)e\}&ƿ]S&[4 u"4G<|DF=*)[݈Ҧ1t]eZnόWA />u_9̫b1H7"ym p7BE6[ _xU,'vT4$SGFANJ.fD3RC3 .vigФ pӏoµCBl+s^9XsX -*qzNَoɷ_1/;mB6OYӺ,=w=x73Nm9j)mճIΗ|9)m]2 -q&!yXvˊTw̗p/!h;;[:1ˢoy],01Ngp |# FqwBiL1}my ~H;t!Qʴr-i;Or:E͋Fa - jIC mZ:swj|:)0d5>W2'H̾ygYTC1=!p1q#ZGno#qM [xM #jz}6v/e 9TG \ʚme_xKNE D;9fr{0t-K"or +l:w;~ Ly^~bEq]7IsOu 0Tܼ3(1mӐN~)nJŴ>Tғ鍱j -6E4jX?}|QAqYn|M9H5U/*]؝.vfE71cXNl&86oY~R6QJܗSUqgX.vi(#lRE\D%u91g;go|aP8'.7EH}p?4`{Ly-WYMU'e[W-zfYvDv X,x/q.h{y7s c2Yg cCaDdc -W AXx|2#H )(JIak *4A*iلm<t`˪ȎI\795p94<璚n8;u+4YΙzmN_R!2;mNZ(aA-:LN `DjW(0tN;#3L65Һ.'&4.:}?jT~O4+bVUQ;צm0w.;UV,òl59MVU|O{e30p-2-X),S|]]:ר)^u cMRsG"^R ->st/;QgeU8 ukۯ~}f:ߘ!+`=Zq{ͣ b/ba~z$3:k{ؕ˂qѾ*&wiwAsNڭye{Jjia0NDw\Y#\Wh>?k:qnYObjS6}eP?7&&a/̸74c=\<sDyܡ?kĝ'(a'?x\w!S * ^V8᚛Cj_~c?k~V?Mgmc'?DB~ G"$7 -Ӝ,>nkIltRi\w~ח">u+j볳{'gG=m"#\k8wwy3x濈Wz$8@jDg;65xуaF"v%Yx.`\]n"7RB1xm ȚΙ*\.,,AǼ]q?l -3F.ڍ@D'4S7͍ n!*|ZK-p趣{mVrʵΨΦپԀ*%\336d1063-e4b3-4c2c-bf11-1cab41a000d99172551d9-9ef3-4ed2-bbc1-3f2ea79f1f84 670.25284f846b4-97b6-42d5-897a-4f6e51d87d6483fe3bec4-4b95-4332-9b12-a4179f8af2da5546125237-dd9630ac-5672-464b-bdb9-a8e30fa3deb5e287865f-b4ad-42d4-ac77-1898149a59c43.ml10SVGFilter +Q҄,\e~HxLzHmϯ"a-?'$4a'E0'wD2 |]=&`vA3G}h -pMCߘA,%WN.CQ Cb "h| )aLv b:sT5uD`Mąu(ݠNw +D)G8§Eǖ9ڣBY>?۟J-pHn{?Ļn Ϋ BƩVCSW^Cw62`uKw4BqC +c9GFd_oaY=qXaWp7JYJ,9L+}BmΞV# Q9(fh˻ i֩Wx |.'Dn[{+}DW ۇApdZ&sI^E9Q|ݎTQj؜$I\ +Eۥ2]2?ndm\@u(ҶMdjub+t?Su2R+\>VV3!\!lrm5FҴ#Mƕ=ȴYl);܊0@p>kgqwɄ{*n> e =v-M/ L[H.gZ#CA!!l3|"c}53pԠ?E! pb[:/a(hӓveHԱ#(</:{(%Uh~f񆍄uDO hǁË`Pt.7UduNtsNeiM) q"xipMAuQu(%`gJstUu71$X3Eb":Dt/0y,Q< UM5\HVl.)inhbRѡ#ǾsE7-&QbL-m@q]lw h:cԿHUמ-OR9hGo s-ځr_ 3ų-~C$$[ҩ]?2XWYxHYTځU VF >) 'K6\ Vq!b _m|M]H/hu&qL(M5ʹ%)~~c-8?~`^D e^]VqLC9.},'Gw'TCK\H{a!tJ/dkmX nhwLe Ph%sň1Ec@mE!4m6k&;1CRoi7ŊѬ, 1#X\*1zkp]gAA'ۍD}/t-䱗ЂhD#a[ĎvsH{/MϺM*΋=L~ˀ#[D%}"%Ƴ fE(\22ɗr$+[ASIU&+k;?f3sˠ?ʗO뉼Ȇ.n7]zQ +ONXBЌ!Dr<]^D _u4U(bmGS]ޠe/,`FG"Gb=fOEZQli8'seK3p2ѩEС4Afy l)+nM?dj:C<sҤS댁s.P/ F>5U4H(eγiWn p Ѣ1QXHBxdE2:Lɘ%ݴIjUGϿǝEظVq%\E +'l|NqK[,}X;P.Zs04߁E?JPYfg#cbe̸reG ϙ!Bh \SMB(*ݑnk(2%E|um n`u쪷SiBeV](b)mK Vr.BWj|"H=er=B?Ļrw9? $B,9i4;Vi+Ktl|W]8ӈ59ar/!ͳ)aQ9l+'?q(_Ur $<>aJa˳qO1ߠ~5VFѠ9:C췖6#"{ͼbFko x.|Q7.ڟ>Mx#4:򨫲ԧQHIfYjL \%#Iƀ<4}s%*U  +E@.G2j;4j.TU*P$yCS9&n+ K@Cr%»$}~W._ fJmuiS'vrzNWHqts]e:}%(MfS8Lpv _bm ~l8iftnLXLO’pLULL'@2/[ +f>stream +4 ĭg-4;8\Er0X|wkAl3EV \N{Sl93WqNNSi)/s[爕|@Cu_bvB$gT4 LډR?5=R.h;5E"HX[7PĤJ-YFRqCW~Uc9H_s!u LD@4J 0ciGgK`f-uib9K~xr$([7GEdDXp,3r6{mO*b6V vnt幯V}W-Fz\Xɣk[ V&<%)^#9Z)$׮p0āb Us5m6ujdi%<(w(XKԈbKG6܆fdS~?CFP`< ^ٓINJ#ph|AUpm[[J@ȑRiQ2 xHWI+]01;rL༛XZ~e,4Cea`ST8} C(rx6 5,"T4:> +Zc4 +u䉋sD.Pl=({$'RS)fU)Fv$YJzc@nVݩ6fufYk.d<3AgS3h"ǧBH}c^U# jt2Nl2"l"z_9rxZQWQR.E. +xw>\ +/ADFe&"p]8߱{z+Pg>tY HXv4LnDP$>7-!?hu\>7\an2bGc̵X=T@)Xj250.SDMeZ]_^PC$`-0U2Rteeha-!GF+$|eT5wW͚\a#mf /3f/B'뒟>;[zn84;؉.5 mkWQPl%gx%.<,D7xϟH&2}P(ͤE iE.?K 4aIf\Ci7~t,َ#v쭒0’ 9&EM'8Q"hFfxhdmɿW3)S;3,lKآg3k\5k{)P 7Y FG%Oa U`PuAr';pbyi2Zh_Sw 7Bi 4$egmf +f +B50ɷPz3l W5U0>rxČiLFr_{;ge'Y=bW"|#T5ۍMrĥnS3&E\ӱL3- (5'o+yA {q"urͦ6Oqk6r ħzxO8&b%] +v++gsWR%azт@ZXOˁ@3 +j9p po뇣7;!nж>2y v;?n ZzXl>n,/#@yZ}H.8$GG$eq:R}71FHt+tSWf-c%vŠ͗ӜWHkN9(}҂ +ӓi6dݹ>-@E< +Ѐ ،.cYxVyo}H؝k%t.W$YMpMF=`{wM]2ěZ~vYf#$L*ui/%uXenhjM;X7K( Y𙣶49iro5 aıA+/yظADsGs,@Sl^ķW ])n1mny칙_m)0\hWsgN-F 2Q~,vsD;Sz—R# +DtThR blF/50NS^zCS~P!Ō4ד6wh X;b.fUO0땙y AL-~ AEDCW\ Mf5S{68Al7iG*,Q^yXܙ&|#SlDٖEՂ{ZEVf76M Ј$KSBǏ;bHrPr9a8d$BsCKeY&nUpuL>#ݽ qʄQrHkxQiRPsq5k +wg@ANpmI1v[D8#saB;("VC`~C%N"ߌ%s4 +]:O +;[d8c9٘ !:&L`);~*l  a.uL;^Gr9NkO "*~a&@AsaDgR E.&fo^lu6S~MF+ĽNQv G70D8bI3\CsuZ jܢZxZIѸ唅9ՔH +U˓5(țJ=HH:̺PGvM"!||޽5ZhV3F?Hq ۺCtAD~ +eGC4=3o/V.o3lͿ +W bVA?Q +i'=Re9N%?|zU',ZsPNP}ʴýfNI6!fA@;P;_'0Fw`NpL惐W}9PއH{~(t?aYB{MbPpPvN$#!N-HnvNE5C9/Q ! I)qYf"$QŊ%Et/BGF-A#bZlD#dEꈹ8'<~p$ҋ[ +$ȼ`/IM)mT&!69u٤JLRB6QJ\N\0TX&=vǁ IQ&CI&L@w&w&X:Τh&0&9[ N&N,;& VdjO)& x`iHR:җ\HAIt/ُ(Πdz(`s_XjcK@'0R( )%pZ")Ғ0,A d &,0`I'TbM*WJ+ԶY@ +\U+TIbJ+b?%`)a aKbT@?[IY%Ouag 1@dqJmw4z9-jYiT2ɠ!8lnKb[X;q9%!/'06u!$*Pa$]2 +#| t> %K>>A=pAz\ ,HOA&ۇ^ rь GP#A~*@Gn!D?VHMP|@vBN 6E UbK ȝ@<Ѳ>8QճNہ"H6A? V }ANHt,֡ M``ƒD~ 4R&ӊ`@Q?䲝D- }uRBtL#=FPJ ~IMA ~<A/Ag!zA&L&?r@HD..{$b_ڇĂ}\eVoDhd1!p>AxwˇɇU^@|Aă?‡?=arrQx=vjA`8"dLzI6z`{eA=neX;A=/J83<<%!* 3y4CQ`nBxH0'cfmBc~Gw| j(9!:5*᎓ٯcJ4R1lBB GϲcmG +&ؙB`I)D hH~u[uܦSc{*$oW2,D딎E&V!+s?/bnq3As*DpaBp_Bre}xߘ3 5FQL$`x"2܍{(:E㿊|;7d+7𰈈qcEփEnƾI6愑HXF9g8O#i6mPFĝ KTfc:P6#\ ,6@HaG1Gξ>|kGt e5 H[g ADkTWýCjU IлHNHFjIV?#IiJIb-Lc'mF8I=?JKHI`J%3T2ph4H*u"@Wg8%|n@nt"[s6ra|6ɸ(o!.d8@\;!KIToxkLL#&:%/6iD h9%f-kKL+2J%O Kl؍hqZ,U Δ0WHڡ8rXn'aaI --xŖ/%aT#I$z!EsnDYr4$\7QMGĽY=b@sێx,+\:"p,8l%WtY]y,Nw?U +ZLKcF3#r~͂s #6]%I Ȝԅl܌" W, jmϒ\T e8h^8>%&t;z DPX/^!bCk/vKrkx~zG_d 1뼵,RBB0V6nH!,&Db``"ľ z8a.;}IA0)4~ b"Q3%A\!&΂31d7118 čIY1{F1 +RU2@< 2Ɯ*?cc,p +s??4l>T>TcS21OèI& Qp2+ك@|8M#w AV&Yf5,Ж O=4`3ܕj2ڠ0 .At54C`/B=C9|4#̀Bi/2K#T9# x˦1%N |1SH PRS#/QMU?V7|aűP鬡hk}k熒sRpyt(_#Sm5ÅiŭN G M׀g5esg5h6j^i%8f57  6A7&6DN&@Mzɶ( ln vfX= Eǖale8+ %ҍv~dH ':)ip< Nz0^ q>^8փ(Z0Cq*#M 6XkPY AtA C}!k.t{&^x +, L^rn^N~]s> יv.tx$:N_St}9}- :MNlaIӵ@ %kVZg:iE: fH' kbձ WUX,x^aؙ +.;{WtL|ZَMs=5}"5 šH {)SH1GL ?2gT~=4x~w :&>O/2g W3J矕)%\'THFI8:A%Ww d ?MDsZ !qpy!6nY+)Y d~òI{ IZt}׫E35BBpk*sCbBf jºr_b:LJ&S"/kw1WڳT[W^!gt16zHR]ϋxgS-EXg_ւl4UUyv^xA̋@R|^nvԀmpe!EPt'v.中`X2H$~@.v[`a2Ey4"X +ڿRh'"\EKV'\ "lꔂR?&(„"ţ,Gz4ϾDNӛ +TXSUDluR3ŏU 8c,|mAeaear7-рR4몼.|Θl +^+oZЃ F. ;2PM$Dݸ<+[%'A.qAȍ_HN+b.Vh{&t= *3x+ǓUS(O +08`99`0 +0pW[~{5bV?w uLwqG]l.% m8Lӟp.H%03^oy *ljA?Zz 8byVNKw +,3 ^\\0g(aa'+`}1U]88XE["2[2YIp{ؕ>D] HzE@'6t +xT~Ye2g07Y,J +"~]?GF=D,_(HZbDYaTQ(8dx (@Fvԝ9.L@ f`v j{Fy3$HmUky)?? L qwh >cwj.HlSľ%83:O Fs@#4[^8% "@f#%="\1 0=A~x 9>a)|wV32z\o $W/ru + +L#7FlVG>ؽ<}DDGS9mmWT:ܭYHg!ʹ-m14Oɕ#;&eɘ72Ri5VՁl':pp,p*8t9fд0N--듆M=,_od3..;̄+qqcxsvH GU 7<+qs^!jiZ]DeWgQKXd3FkczZ6 P/7 ^v,05"6xfpnEd\-o$]_dWIB $l`5\ Qu @qz0eM-g(@{J+xr +RH[; +$976~Ǭ RXP<0$fRЅh{oP-_ h3QI|ɱg\ڈcؘ\9?)M̈́'S 13d􊬓2ř-ʝXzd(XƝ)io$9ܜȖ?]lef`#Hւ!+E@P*5oIJiscjrmBCJ ^0gu#oP}->* @oÙNV;½pӱu@M^~y׺^X`os C"D_I]hpg#1v;N ֎^R6m-z&G @`ߎ. oq~E:c6FJtqnHVxS&cE$*yifQ+9?5I( +i g숀#"r/Z'qb$?d隵RSKtbcOB)¦cQ?%t>u+wIwĉ3_]+A @Rpx nbF +.qT@He܁{EZ_B$yj ./V4b,4P~V.w/\b^)呿{b_YN/(5~\BT>Zb9i׈d+/"jU~e >$=wER獀-4ǽwqx@N=xug?K(}>~=Lh cj?R2oCϻ$sɒ*ۆfj@?MG%j p|[0W-F?14J0@EPh>_kJHz $[ID-yt*5v?Eԟ~shQ:a<5wIvöZa-ƴ";>.ڕ)Qt| (6T2^`^jF]DMXEMG`K E`#ؗ .i+濾ξ}M>wS#ga&*ݢ,u }#3<nbKt`#PӹxAxa8}6로 {x+ffzEQ{@IXtDL #E9Bt@EbGcp>cl<ߌXOnX2?!)m(›,hhͧAbaif~8 U +ϭbȌ3; +:JǡDYIYX/}RT$? d;)OU^Z,#PQ۔] /Oco#=~1(FvCcٮ$QeNS&2ʠ +syȉW|fr^-uFZBO"sLZ ? L/rG9R:4_Hhyrsi| +Hq-Kd!bn&5i~L7w~O$<۟VmB=!+Z1gOkX{9d] N]]AǛ4.("2jxow"ӂp;R{2^u߄wJl^KM +ȹW͒qq&KN2#Z?D*~]uHnܾ[)K5椃 0`9c]`N5=piay޴'x$(i . @mׄ'nf5 +$SP*M1lZ0e&"0ca}[EG9X/|Gz +28Ҏ_?]P^/mz '%k׃y y/Ja}X*i}t(6z|Ƞ* \/S7U/# +q!T/|Cg}:fBSK1!&~?Hݠ>aJWc#AŌ@^>zKD>43Qԕ琠5QtңJQDވq !)4s/f!eZs$A XkQqΑC1|$.o`" DVT޴k2.%ۈ$a @< R#h ggWRu ׷o5oR=EmF@X3>ͅت |LY|)JFBYA؊f-1GU]>$hBTqPOS$f wF&9*ORXY"a0 ,r56y1 :w`ܒwGIykEX<6J#1&$yOra$${t:%RQIJ=~Iw&ey#s|q`i%zg/@[g<7S*־;c̩J83fnRxܼLgYaN@v_E{([X(oXL>LR\=5mwË9C9[nUOxqB9#6cjbH:T;h#BP.<:k]Տ(xv_@ nP|x@.~ԅa+/k`_(|TDAtwK +]*g]UJΉP~'0`<*1 ~~RECA {!e# (s ]{YZc}{i2\.!e+seL6XFw»+ˀ]YuF[w/}U +I(@__0a H6Cl {Խ=ӁuS[鮧nEAΒ ¯{[`ͽ,w{K"A#Kqc\ ?(Ө;%4OѱnwX'DF "]QܠғsiFK?4=0%y 3v֋3r/$@D_zjxZ} +^>*_}:ྺ^Z+>*](p&x'W s!SXȀ0N 5w֡8M,|w_szRx38 D]e t~A(RjH{0e>d?ԧ̖¦s0Kv:ULN:}#ѣ^KwotyH i?}McwSv4 k yʙA֬;zQ4ԷQw/ QF\/:=][:rPqf-5AQvwZwA}ĀC۫>ۢ,T΃zE<(WA覺̬';Vwj`zR׬'J=?UA]!t!30nL=_; Ch=Y_EaD#SYj6cԪUsMӳ[)%i d@/z-ZO0 oVGVEsGG#Mxf޽ˆSS[UYΥU~~ĝ%iEBPeWs;q\x5jl&ٿ%x=jOoQ$d mXe?P+DGkGW+::ګ,_^x& ƗZ oЈ:>DV}Vc^I5Œ>ooRX+wyN<xl{ȩc!=gDnPK7 <o/iӺڐvK9bֹ)]yt՜go]vzۿ|@ُ«7HvsTăm>miu͑jEbxk~#uAJwפڐE&  4$^ޱ +#ZJD-Gʬω$\\35j#=f7:$< f(M(# Eޘ/EyvqQslqfO +9f&&cٿ ? wck?XÕTʿ$kҕ/OHαRL) t#nq[U_-mH#̣V$~yZN"'N3㻑̹7dΑ.))20䨩,Daax 7n~;Y+M%_6 0W1s bTپ2I#<<={!rrsBSd1ˁ.{ WCWd=XZ3`^X wFW1}ZϘq~=Ɂ9@=A@̯eI?'Y8n?̓nym޹ȡfLLa>ZtN~Z3t2δ`^Ynjka`?¸QF6|gv)K2 Jx`^Imyh9e0P-ks9 [TH$!v69<s߇e=r27wm4%Ɯߤ1gA̽gJ b/M`+f# oLYki"T%U.c]1/oQSrDHX׮5+o]WuMq %]ۇ.\u<8hTʒ2?*K)?L;D&;(j~z?oy7^H} +r;q SyeqKg47U <*NsVjOPfv7r]>KTēF"u%P' # 1> sc7QcI0q\{JK#Z{<Ȟ{ <^o(WM 2]Aץ`1vUPaZr<R/f +-lMX q+qFx\Aշ'}*vgI&[TR8?ŀnF0/LZBi3t0.Nf[wQmczjVt]UFOq$ њwsO9Ҙ@踓&~DXio=[I48uKty7%^(l#.wHn'}i"8מ)-`Y]q{87R;zjF9|\Ʌ.-Po!$ 7gK.B". O9Sl+EWx綁Ը)\ͩWw44%Dq5I,s`DyN5\ e^n ~a*#eNkRbWmq}ClEsZCGt4 +<;!+`~Uq.l3ZNSt , LgTi7bb/g{!| axz{Ќo]K**G-tr@LROޓR]F>F ^@D|(:jم " 2NlG (6 +XI#-B {|ʙ'#cϫPnw[?pT[M[[,3sP=nrCMVO~bxfލ5 `;xRw_*[pt]Zm1&ɓIcwB򽷨^~!vvLEw$mdvOJmLߺK(%[S<Ԉ6] :7b ѭCkn*?mBN}1)s‰rKIGhwE;ȫ\P1#& 74Ðs-޸&H8W(T č 7JpLSwx,i %oC^,fL[]JljI[ A$Frb[uJ^YTC۷oHDVR̹l'i[avԓg[->$ W(m +kd~b!*ce9fHXd-{G\mYv6 +ƒB%VN0}AND1wzvANHvկ}8v PIոXhW8@#=Fn^* +/nxS;{2g4*Yh3zˊ-ŵ1Nc:5tIp_Ŏˆ^?{~']p~R'@@a%iC{hu"{Q2\.qKGJօ,Tuvo=H@CR> +Zm 0([r`?sNsD 9Ց Ӣ5>E+$HYV=vj(*km3Y-0|4K@B iꪌ4֍弶SWdc-zh=;kp%XZ"O(QUP1fu?ùb # +E@y{8E:X꤁x-x9X_ϯt2:XZ.p`a<04?¢믾"-m4us01[ezZXډXK&xp$bP AQ"'$k$oR Nh;,+u1/GG+`uiX;E7kwm,{#5$-J~L|`F`= %hk-)aVfkcEx,k#s~ h"_Wa~P꺅[hWյO{sMVw ,;j=y}X <_4~OiX]Xa:[AZjZw ;x[}Yw5yQ1pXk҆A5SO/'-“~5KIkAKD'JIZ9{cPhҶn+ۋ'v(kעQ_IݏQY;4Z2@MH:Mg xoaIPt'} 93CICa#)! Ui㱸}VA[- +-Um7.M맗&dYR8cZ/݅2{3ݾ&Bimz7 +YN%eO^jya;דA>LGHx"2(d`q\Y$TEu"T@XlFOw'lh3}T NX5R))R5m8,,UN}VX*}*KaJ66Pt+jLnQT_8<**3fʿ&dʪ* UQ([^q}W/߫`, uej +}MPXL.X9B[ ,Xj6@棭 ܓV* +֪I~1"[!aVny/oy I>CJjC;0]#p41o)zTxsawY`o#X\T} WO|_+, !џ +Vx#F30f~XQ*ͰOm*o *N `,7Z={CcZn}`9V×j< ξRø ٯ5?V[@bӑ21{gBg~8k7!?{of/h "\dLvi5z:۔+eX;mbm!fy^?[껭οymT=b퉒âHck+?jsm1L#,D^[Sgӭ*sTѽۋb#,P!\*a{,nTjŵnmrвxdAIg-VU\]l*vno>)ޟJR9D౤.4݁GݞH4Y]utḩ^wUDޚbڳ[I۵:.\l7wE@z9%zwQsW +؁NL/pRuZN}+m^9Asϻ0Rt8zTWgeR ^VhNju/e2Yqh/Vwt_宙9ઙb~~LזtbQnG t+wҾq/`VG>-`-!`0'KF܈*3+àQ$1SAnϸ7x=M{Y[%__ÿtd*^6Wujr\zCxa61nϞ1Ðh(\J d ;q9PބuN|ޱ̧.'SP> +g+ߏY>Wc8? +_90~MzNl`G>F<eUf2k#ᣠ*""k^YG9OG<vx"42r:ޘD6Cmqߜ( ??48Pq=ᲾUNGQu?vPi0x2x,x7pvp:8J5J;pt;aCqiv#UMr~ O)_G993?W'w^~T <9AjĻeDd X{7X+܇z.mg"Gb "[CVESu7z=>{x;J|:>%pEX]v돀m\@|" +|ߕo',|?|G[o/_G,|?u~PN'Pxij}Ttաw-OI]pw\5NԌwʢLF-y6HѢLQìCoTlhXQ68 mNzQ_B{/X`|)_Y~_~O*??(|S~W,7eO(rcM5{Q6}Pߴ$4=LN49z Db-+$Q8]&hamQ&]j)#^i2;f=TNƺ;T}fSef?SHC?HA + {HjuB=SoԃDR[ʢeT4P~~Ϳ0?|6?΂_'BFi]DШR6*d6fL؅P@h6J^"l-,b-]^oݺ,0GdYD94idbea+OQoѮ9vv|ZhKLuf;@T!.}OijS@xO +|i~<AKC}i;ЩuD6|OyOmR b)Y) +5 g"+W;C1N#UsQG, *}fPGTͳ)椠$,yTW7KH~=4\{,ܡX+tqv,e48xCqQ۩u0Ϧ1N*Aw 2\KH D?j5-(hbO1uUI= 6 y zUJnB*NGw1W[n]CΫ"L+UojEFzXZ<`KP]%[J[4K[5[3@!q=`mD~ߪhgn"HDG?sE-k#c")g"3o&Qxh:DzZEpp+./zdQ+1fAOy[m؝˽BZ#.j*F. 0Y FΨAb |u4˕8vTJ:Facܶz# nkJRk+H-.V&ZV LUXN$=Ƅ+Gu|ޅC"z`-Zdw79z/X5nbeZK4;f6d6x.!9nZ-tG!fMvjٹǵIf9t[UW 6ye6w:.ݏR-Z#98o*{˩C,!8b;iy{V%CT=9 U Q@*]MPZFt'a|C̛d hOwnsmS`ks>thH;U͊;1&sUUzXP3BJ GbT(^ Nb70VyŻ:J^~;Q6q%8n9ŒJI՛۝ۖ`=,iFll[]E^t[w_8o ?RVmׂg89ڐ:q!k]9U:j }T%n,7+!cLՆV닱UδYK~9|˶q߻+\4dkYC!i"V8ݏ]08PUWRRjLnYMr_(ǖhxx8  =/xui<7E=%Qڌֆ,ƮeKʃqEM<*w3oy;rY_)W^G 9JHgE5RML< +> \f?ZliŸ퍱,*O6D5@ORkO+8;& 2d?=C%+ ⅈDפȽ>c[ +1 BmuM4HF$i%&a!7T= +^C܇nE:sw@E`n(K1G ̫xQ= *s?;TbG[1#i (mNaB13VZ%;#[%T'n"7$%" 5mbHfbHdi;n:뉱 :ԭ|PB:MIΐx[ȑwx5k%^͚C%Dju@B߮wyW}ͱXINUVGTԸ8"1' ٤7RNG `1K<V,*'B*ÑM+ X(dQA2֙ԫ{4Iw_!N:~)< ;EViêRM`}0zIxO$ +Do$S,}.6߇A P<tBfUHW;8x7!)f{!CUc+U5Uc+ ԁаs]8Sog]c&1* D߭1 +(C1!q󘘻{J8q9 d9WCq@Ԋ(6ӪAƫB,X6yUkO4(`6aY8&[؛HbX#[t@{Dyg&5t8&>mc;(2_%(jT^jS3pX.g$a7ұ[mqUZɻ璜𵡔OcIei jXEV8v^\`YUJ_P3JY$[zYm0=qz!zY`U! )TN!ib5ab{v*72/IV16NsOWqRf +\>IHkHq1as7%ᴙv=&%hG>TSӼKFnf߅Џdq9.! e@J\qU 3wU[QSVHXYݘ*"^q "Vmq TL75Btoe6L>@e(Eя"(E6:_C@_0V? on- +< q#VF|KH p1ߣŎ`PCΑC,b'?W$a2"XDC0zFtW!Uyê5+>uT}J}Jzg|="zQScG* `vՅ ,`R7sa(%v֑>o-#x͹}TYB,oaorG"zTA䇯Mxi=/xr ]<7~H% ${+znZn@iP.=Q_S^=~Iu馿` +3B@|*oͩHI+gC/S]UQaYv 4+ld]qJ]ZGS+`O-fR<; ChT|Jp~)qO_dD +pܫhk5Y +@Fʲ F|7{08vv~@afYI%!+_*+e_̀VZܧޅ@7xgzbk#V +{VW*QoBjex{\9pMz,O#IRaQLd.8CbvtRXgz )(7Mxm" b 8'_fkIP?>ŒW@`&ԠIXi\\ w? +c,%շȷpc 4W&]u@ +[ }mviUyGa"w$oCbX/@*DBJ4 ;0C:1>^s, ֥U)` _q ߯Ӗߔ'txMϊfBj&8w_Wb+yg +TG{۩םY>Ads{Ġ?C$Xa.vE/E/E~ذS> -VLRZM`~Ӟrg>MJ N + M*S-:..Ֆ·j]Re],\ 9vVTOÊհ^x}:Vˇ6s͚]B[O%2904U"C·XISyMA‚?V x~M9 99?7H86Cϔ '5P? +χg4,G? z\^I;K!tK,d{+`Lڹ>❦>I.CT0zV =뇜T mbʨ  7ӐkYN +n͏j"|܂_U tTsS!|i~͟.o.*_]mX{>*)^XU· F<>:fpj0PD|=DlJi)<}S ( )`~Ϗb125_KWB|-7[i> '` Rn>7I0BN^4FL^l1HZze; @,wp$СٗCֲ+e: -QIz#VI1H, |\SϏ<$lv>Mίr#1/5|+7fubr6MkxZuAW5J<9?CͿOxA|o 3?JA;_2s3)_( :L;USKY;WLX ww:W3Yȼg>4̄4΂aa} =RPOt E*,<てsfr>/tCA)/9߁Ẏ1ߏWb̟1'U@e;՜KY{<k䝏 eg=8&vN嘍L8csOEmW_{?+M7U_|{#|D >т? 9pv~9?@"1RW/$T )3X]jjG Ѳj棟ieTL.ahh>xW#_7M>C)@vnUf&;O'D4;_r|K (U2Rw>VzxLLW|cu2\㜧GߌC Ձ!zщe~9I{_xB-4 JA;_? |c>̿I9Tn`~W-(1ե3 ;Uɺ;^MrͼD8zbٷVsG#`餹 +GAgENW3`cUP +3{]hlt>?T[\f~o|#7&k |n| +Gm +@x X{\Zj34vJ5{w͇6'199]_>OA@T׫XK4W̍vK39F%ގy;Lz9l@':?+|_aH#r;t+g*l$^Il$ީ#4uRO,д٪ B 'TRi"" 26-(_|e~/ _`QNâFʤEypprг^9Tw +HCwz~$1xV\sĤEsa-sD wQ܃.fݤd +K !qt&r +.s!y)#i7Vg֕'Ċy&-oe;ظV!ѕʍ=NL8 7Ԭ-͠.Sf( H;j~X<@NNLi{Xėn1%])Ri+cn;0;f khd5w*tq^+)(e"Fd +B$G =}2t3.&60{mUGjP-&UʽG1k+XO͋pP)P\ +=z,md +Zם,z7x0{gJڗ] o'BWɧ'Z9N=8* >D-j%N)DglOݽAvvP0!%aH8w7K42wkt# + +8˿<anfRԗP/ "'Ro0o!KnVM-Lqn"HՌGh1ho{Q*ih`5pa򞒽O^t/$ɜÝ;\Ëx8OA:%\KA( VFHuQ@+i 0r7/\X]N^o oP/GZl5zA^O|Cl%-q_0'Sʸh$'!6G*'0'# +,Ex +ĜC}T +ishKPA@đNqF:^e vWx/s([t -;)#/|"6[c:l˅\*DO?=܍SH3j;grm,n]AWޕzk:- ]ÏJNBŜ2 q>݁g`*+4ᚎX߯<;60lgl.O)5 BH3mWV;V vq;9;wP@2 vZY#RV5lNd]6ܭ|XG: PE\h.1 ;ZWk^E#$5o: H!TW3nL]猗0<ǒ3}.xE7D.Gi .V*eW`X0*m^ +gv00}j7YV2b\dG="m\6Ncӊb'G%L[+`Z3q ̾ݦ0N,ƿv ' u$3ro_9 ȉmx|C-WAgv~(n#މcp6NMOu=l%ˢi +\F)e_6 ^FH9 ۯ>ie. v1Dӎ\?jJeM99tXN(V^ ;+.[N Vm {B\jy$ w!Ba.(#}5c1VԿ +VP(hʛS}hG.zy 1j7%Nve([Zwa\>F!pOu[ (Ǚ$p4OD܌_l9hpѰ%x 6x +!y"vo?b 8F|u_ye.>`vy'^W~"7fЙ_1E<&N7q_8݃%:ï̼fYW1mvqYñfUͣ~:I+[2eL~SqUVDPn40}h9^~Ty{ͤM 5mx:~j?0!ە1$r·FPNsovHrPdY#J@&W޾VRq qq;O>3薻.zgv݈![]S~aI)j\tE7:Tgpo+Ox,6 ;H$ Fn L8LT#7:fMga[He5^]!ܻYE8yz䞮Uk?yh]WUTIB:>y6;rErZF Jn1L7"7V3@чYo{$fLk3]۔nf9GԻw,ɷ4ea˃Pr0F5l*RFRer0;nâz/^4o),u_@~.2gWjjj汍n@*H`kJ'$~!4#~j KpS&nTHf)-r8: *p>1!*xU#Anjݼ~hXPq릾A>qƇ`8|Xj3J#HBdray]pװ:Yk`,(#)lYaueE-qh覫y,newg~M~'[9 {j$ 3o&z{K\X0ކm`.P0iUܼ"0p94%-WQ]|!6H8|)K)pZX:wQ%[}KJE-n_b^:I%#&aM=Zq-|SiV $ǽ;CoZJCxHHq 4Q[L6~jc,%սZ[\S|H>,iH4|8LM.gfLc +n<ZI'!"w,pybnq*)8 d\Vt׌rQib #xf3PX31٬UDFk)m~7):s)t_H&Rh;% 7V={MˁOo4BG6Vq]xQ4J* "XFWT {бzSD=& 8 <݁i71񬟘|MIm 'p]Ge-w8DL§VܕFq#wS̛Žs$I8mrf$:uLMS>Sѧ l^tgsXPIL@ZDo 7? |/H'ջpk5W8C$y$ +n - '^[fx<(E X[%nlw;gngO2x<qxNIZ# ȍ?>yn&0~ ?,Ъv*镸m:3]"!Zixo4ʥϬ^ nDd@ +pH: \-qyqWFXIFJ`V|JtMY>pf$3GiXJIgom2Koc(N8= +^!:M5d~Zr搋waJG8k5 4 +"T4IPu5xtEv 6{Q;&xw|LCBbcwI'b!X3u 3¶q +'Z8IV^Hx2mGW4(}쫔7-Ze M㫀dzR,ʷoǪnZQM(XϨm\ +']sԸf)<@m`p^"D,W{D\KL@x`yZ;j&#% B uݍ#Iw\F?X`F e(*:)0t# D`HHH2pu y]""ںe$ ,  ma:pLȂבАP ^G\FF0P`4tVK .Me0pTSEt-12". ^D\G[.]CBpHh QVQWКR!( ?,dhUOQ@@-Wؖ(/u`GE,\P$H! ^G[F4 lmA_N^dÌ;8eNR9Uм* +PpM\Scjͼy"5o86N9΢΀O- ;w>z{ "n ,Hly;(AB~۽!1p{*@5p{ "zQ3nF=DPfQ`s_aaƇ^(H8v# A9]Ə m'p16q.tPw w3l;|`<5p6uN]@w)8K8qh%( ЍarJ +7"#QS*x=eu냥T:^H%Ld4n?KSI,b>6 NCK@Qm ,x&G8%L/`G/#ј;[Zp˾Hc\kQYH4GC8YxF?|ʛX}B[u1$r#j%>ԢS| +?}:~S$ +4|B +XBBLu :u "^ g0TDu~{Љ=Cߋn/̀6;v;;4o#GB PQT)d`7|nTژ8e*$3-QlUξn9mW!ѕ|mi(uԕN)w ,N lwxP@ 2x"QE=ӱ&%ZK cQ9Nn񲱾_98o$t_נp`0 21u +COPWanm P=ܞX N9Eɖ Ì/wɻt0&o(*wH-6qY}M!5`mWQ[tZNayD9sb9 =qb ?ǒ,$J\:v GȆAOXa< $ *R8]nNI-vc8yNq%0+8p*k`ww<{QM!Fξ pD\Yz{ǻFcā pTϢNt5|mg2K60n +- +w ~;|(! q1{"C0wYK|iUbBVG!igxkPmWWLA!ScH@h@~|M@](Eb +Aэ3.B1Yρ}0p5 q<^A%_ROIl6oFps$WJJ{ȅs`3ӁacaӿSFdKuTώ r3 *sK'!sٷtw|{Ec!8/ D_T 6xG=rs>$co)8 2vQ&m'@y0y#dR@0yi ^^ \c.l, :]S;J,A7q8 @^8ǯm)mco\)s . ;$$[͚ +s WuɽA B@!Z̓y/2r'q >.M ;bP!!^n1$|_0VTV%\oܒh5TJ;釤DX+XąR$8v^ HficW5|(‰,:/aP21 M/Xԉb,\XJX~Y>z;1 ێc-hN%k#Ǜě_^0lo|Oe>4J;KZN n Oa˪b W +L\r.@HGKEs@:NX% 7g&^OXw1-^Y ̉0pu=ByX` +?y㼲5'Q$@GwRl%n$<ډW1bwA4PlԐw8qI?"\Je,Ou`_vE}¨.Db7Qwx!K:M@oVy ؁/d矞DY?nAwM]tʘ/bP!sGq9qJYNU4Wr^4Xj/ 9 c7$ceЃnb9ĉj( Bvr:N\ |4 '[tXo'S81na{ TNrJQ{('(}"rA>ggqOlOCI}I +ly"+ :=Eͫ8:n)dUԼl>5PNrÿB),u_I ;JזM͌R6Q5JVoxCq ;v$N gas3kH'P@ZƅvˮQȴn0} iqx||A3W QƲn3M!QoOO@Oh"É?B9iqwD@%xFt}۹%8sYir!)ۍT/3p|y&9Љ? +zy/ 4p̟~hW|ӏK}7i|,P%s=<øJD.v#v3/|Koie4lb80PS +{ )#I~rSEU}&!b|cEDdYX%(ӃP :h %l|pԿߙNdPqr*7/ X~0KzMV)#l2pAcރYGDہBl( ..{c;߈'N36fpN'r' 7#DBD5w˺1/of|݈- !|Rx b&ǵș9e]Ea| 9s6e9 c ߈iYVe`~Q ueβjD7[ ǝGlm*f]9 +W֍"&ƿ^iT'\4إ w$ 6u<HG<,i4Ү9|_fʚ^ &_I_0Fuc5 ̭d3Iw c }o""RÙ6;A'l'wT$DsgN?RKSnfU7VD2s /wj9Ч. p0\wʽAFp,t_y]Xs\ ,vrNgٷ1`90ĭbVWaۺ0>x>y|3nmAꩪ/}IΙҼ9*n^1 yx36T̙r1l UK9nz}26.;"#q*p;x +Jwz; َrEu_l WJG Oy +2V޾n2C 0/5 5,玵)vRʹ~+*E4 5kY@~<Aynl/M9I=U2 v72eŹܡ/wgv7qϣxN|&<7p: Zb6SH6c%낿MqcX/wj<)"nx"E<%92hBolPI'& GCL}p4D |:M-_aOrV(f\X.{g Z-vHt$Y+UұUnhΔy3u"c"Yg cCaDdc 4 AXx|2#H )(JIak ě*@(iYm,! <ΗR9] D5 񒔹^O5orH k4p`Ka/[MrDklsrd%%sshsF׎Ѧ4FFN{ C9994Xv\#3ccQU +o6"-lUQPߔ]sgL\bE mR,Kgzƞ{!dUMOWF?g)c/݂{bbv;Iz@0< +\?E,ObqF'x %Y0}6F=ίJ*8/՜5`Oߞ?\Xi/-\D=|p.i.<+N~ܿ+k +muևgM>?)P]L<_ rj0l6"0l ɌxcsO;Q7WO&J7 zʏ|óK +~VaQ5p*[u +2<N~}仗}bcXzRLFTa2gxR ,'8d*U떶 +1\ss\gJ>HYLsg-˃Mk ˅]kȽ>M?orzma5 >Y *7mp3Uͳ-}-?0h&s~q"Gqp?Kp#ߟ>kfɃ 2ȏ`_ks`O\3?} 3cn(;T̙| ц.f ȩK%&a)VMy_`\Y~ jpsˎbgpaƏ3{s./ˈ ~nTjϪ5G>d1k$}_ Wrғ-eLc {-~YN}>A'suoJ|] ||aK|w&k#/EHn9Y|ܬג謥|\/E|:WTggoNώ{DG>֚qx${`T)y{^wqrӉyrԞ=㻬)nvs慂J%0В #ӕJBNמ +<;SAҬʠ oS-l+ _Iq\[Ooz&b~!~~~ÒVsg!hתv~6u(-b +l}!>5kqqDSV[nhLq5hmiNc7x kA?(>PnwՠpP|Fp.,n+twAGTH @@DG;G_dp9w-&˒H'Lww/og0rhT%Ϯ>ٸin0.X@zu QzcKR^C^7kD%T5pF%sOEu6ٳR*%Z336d1063-e4b3-4c2c-bf11-1cab41a000d99172551d9-9ef3-4ed2-bbc1-3f2ea79f1f84 670.25284f846b4-97b6-42d5-897a-4f6e51d87d6483fe3bec4-4b95-4332-9b12-a4179f8af2da5546125237-dd9630ac-5672-464b-bdb9-a8e30fa3deb5e287865f-b4ad-42d4-ac77-1898149a59c43.ml10SVGFilter / : -/XMLNode(fxmlnode-nodenamvalu1typ/(o2;attribute/Arrachildre; ,w(100%wheightyyid)AI_Alpha_idxxfeTurbulence1numOctaves(22stitchTilnoSbaseFrequenc.05(tresulturb,feCompositoperator(ininSourceGraphic/Def ;44fractalNois44-2yBevelShadowxfeGaussianBlustdDevibOffseddxodyySpecularLightsExponent(10Constaurface5tyll-color:whspecOuPointLz-2000a$ɰ0)$v@@C1 P !Ì!DfJ15h:KL9Ǹ%Js{Hx;1$F^ڰ':zp)3{]`FdHP_)6{4 [vLB!L|!$@mWRazKB%[=<0@綖}0tq+ -9KXȍR|&XZ^춬V)眚6+];09+ǎ+) ıg[rOUBe%QW홅~ip%>R-l_NQг%-& _.Zj5-Q?TB(夕>@A=^rMuZ QZ݇ϾdGY '7!&ێo}fWI#p9.ѥFc*16v"}MbIekZ`o*I·{v/z+?Bd# n#i.d`5QH, : -|_c&e 38r-Z3̋ McPEF?s4'8%TSatSjNd\T$˗NiMzp ݏפ]79ϳ>@BFwuNOyv -N%++YxbcyN?f]N?ykw6@֤NDz@*J:`g0 0 0 ;RK*G'#טx;=f2%RAL"rA&,@Df2`bЫYEnc>Ql'mW HMn9e%E۵ɀAa!DTC@ &$Adz}PUD jL@wnPLpf"RT@9͂"R`7XNLa"T= - <'z_pj!Da Zx*ÜA!7Q%.qK\%.qK\%.qK\EKDq RSPy!SgLӽ-d|vʌ6^H^Ϋzʶ˛7s9q|ӿo4ڋXsv8s+tki3ȉh+S|s6G4Yc׍5_n&JڶBe͛Dqxcz̙d͛aͻS *S^̻֘rcʶdsm{"PEA`qZb1{9*E`\Y3+QБ( L[x-/s}+@9Tnsݺ]ٻ*d[[̟v#ww"+2¶UD6w6+?+w6[ݻ {W?g{߯|++Z=~YCgm%|rW_+]yVV/~;C};e=~ݘ>ׇםӐBXp7y'3'7s>d~ٮ}2(3;mU_}+sϑ(Ǻo=sp=t]kGT- " PPX$GDc&qPH,V4.( -!q8  8 @0(c'蛺͖INܴBh)1nvAOS?[9TYPtB5( (f0#ORߨ0&C(T|'rkFL҂jhڗL}H =N"+SIj2:0nX o:JX%JѣBAML,ȭ -|3ЖhF""z hSa}%V*e0}hV;0ݩh'!U_oIgI9gndEuz-_?K![,}o׷/R{sY y .6a"`)j&] G$@pa>]Y;(yy-wD2!xE-0+tv_SP8 NyDmB9Гy˛A"xO֭a|Bq][ݦY@@iW{:GƨCt 1MU(?KmO"$[nQátA`I!2 -_R@oZ<7?\) Ww1ږ  =5XJ`O6=w5/ K{ 8IVZq8?K({L%ZUVG:Ϡi9.ߩ TRU40w7SڊMGj#VZ -=/8Ẹ!<icGKԯ\E/}Sݎ0ӵVJT$h #W k -S/ Ӄ+@Y4S?ujj#BbJ)[4b[ai]xqov .m~{1jU0 %IryK3Ij =5m4lYH ݄SywVWk^rSeGzAe:^/2m. ĈWN:j)X%%x[£r5\aR/Sڔr%U`"֘-D\ӵk2^8 M-FkS`u -u'vYl18,mxUl^ CQyGNdycCإ)rvW0%lH;_["n~^oEpFErlEה1)B}GA/1Db='hPfGoDT#MA$1/(d}8{"(}J^ࢵ'[A)9\WO Lx>izҥ(}h&T=2I -c'[,]̗"Azj)]Wo^Zа>%žWsv,SEh P]jLJY4!`:2! 2@lӄYbN|-T a@'5#TkZ-|@ajcC$6Q"[Ȥ&)!5{<8 з$x7WFEp`[o<8 3dFkk&>*|_>41e-يr8|׈W695:RD-g`:]j>-&H/[GÇATNlua-^~9AED/9d8F x(UNW~*aŤ@6{[z~VRS7`l9Q儡JX1jY%wW: #eJ-;CH^l,ryN"P)z"r-`D}I4Qp|6KJj]5Hm)c^ YpQV$`%p㉞"5n AwghuݡcG6:b3G'sҏ]nFͭ=˵J=,C.Ww?тoAw.HeLXg_Av*}G07D%S%ʂ˚/N< ;Y2`BɈco8THAA2Kd(}zO-DdF&ҰF*,Bp|>VKpC)[ `U~AHO+ kP`8qk)݅6ʼJŌ[,3O)_=&T a1~65 0zĴoIY򭿀ڻw@lXó -,@+V~B bAxHk#S$3Z{3߂LWP'XI?ZФϱK;6chSa1O%ֹF#4*B]O]}CkdoQ!|.:^<ibdzI1&Z_KtNP%_x<F>g6~ ؝1KFѧPQ65n:NTHodB(N4i~ G7Z𞱜*\O_{UNZBbl7!t* ʐi8"YS&Y -8$Ӫ$j',SϪ>"uR -?ͯ cЙJ -\{-ꌵipact vL!fW!:$cp(=7m>D?L'  -_y,ft;뤾Y9 -aN=Ҧ}ʋxJВ wIzM@R,oBF>'m L6 ]'\vqͯPGq4CNz5DigI9CA9ߗ_wB S4MR/45>$uKk,VDΩL/r8"tX5Z-_=Ib ny:gҞr=,+G(Tn$4eWaMN:N%kaZeʇoV/r0lawAG_Hd'I+\]gkV\'OiV4> -ӗ$J嚸I/҉ 'brf ¾סim^̋Ɠ}cqJqSҳC -%zG&qTĨ:]6Ū>TdDk9lڼ&-r=@؊IE[>e(Šށ,fN r$cey)&5MkmvrX :,ʈ[+ƐA]0et6(V| :L=p<>5.3+V֤F{,ACY~;ѐw ,QBbe) 0Pʸ;Թ ^ NҔ#iROď0uPSn]X'2K}߭:8􈌡P^gX2yU[o'(ȶ܅'A: vQ&&\]hkp!sW# -B.usc5HFKAs-h3 ۸LI N&TL" XF^nCD /ߞWAאMKLzb̯~8HS@l#ݐqE|^/Ǭ4&x#3wʧ ,ɇU^gVLObǫ*I<,e܄cG]~a̢0}m]2q!d)D" pߕ ޴b)ۗXK %c,"^^pC 5ғ%R-%Jș:-~&9oJm]u%`w1mYBM?xY2J>h4fE4tӡ}5ͮ\h+&n\z^rYgbIp)&BxF"ߏ(L\A/ X`A}/F؄"fdMjs󈄏E0adQ[F/(cG("w4]ޜH]R?d4h"` ʕ2UYg0YF06E鬦sK[4B z{ -s5(}GQM%L_Z %z@-`slJZYR@;Y/i\m)&Js'k24l6:;>^QmKA{}2>^^]47o2ok{9+&8VM =;f㍒&&I&e_<RD^ ʆBq+0޹=,#oz+2X>A;$86?n٥CVPt,, eΛoxQ[Pgĸe\(](O[HrGf7@ t%%%5H$q uD/#.s2"GR=А0A&KACvl+#Hq 9? d[ J MCTm;.ZQ^ wPOܡx̧nfCQ"=Xǹ$P;* t{Zls3y O!@6|(FXTRR} O'Su8cGB [5hb]T[SJ(b8$eK/{K>2;]'[9=^ެZWúV?w`%E٣of@*vB`#cV%mD@|Qsj)(dĀ 2qw8*e2j}uP&cˌ,շY0|ZsgA`It0 0 0 0 ';{[[Rckul }{"!)nh-c] R[תԊ4KAYXL(́D:8x` +/XMLNode(fxmlnode-nodenamvalu1typ/(o2;attribute/Arrachildre; ,w(100%wheightyyid)AI_Alpha_idxxfeTurbulence1numOctaves(22stitchTilnoSbaseFrequenc.05(tresulturb,feCompositoperator(ininSourceGraphic/Def ;44fractalNois44-2yBevelShadowxfeGaussianBlustdDevibOffseddxodyySpecularLightsExponent(10Constaurface5tyll-color:whspecOuPointLz-2000q&$ɰ01$v@@C1 P !Ì!DfJ1 Zfa}798Hys#=:b%d&xPKj#g>Gܥ(Hf`` +ŕb73Qcb0 I( D/pWpVdS'+?n$>ד { xnk/C嘂.~qY½4{Ktڵx߀PHQC_C{.'A@t@ruׂ&|%[?=78yg6J6I'=k=3*o`b//EtW_ u"2Km.\Ӂs%ٽ/ȣ$-8;8SQl'mW HMn9e%E۵ɀAa!DTC@ &$Adz}PUD jL@wnPLpf"RT@9͂"R`7XNLa"T= + <'z_pj!Da Zx*Alݱ6(f==gas$J۝5vk~X冬m4άm+TۼK7;ޮǜy1A޼ּ+?eͰ2ż o9/7+_lHfغ{:ֹ~>'U!EN/.B1AP%Qu:cNoߕ( Hz̭DilCrD jhnݮ]wN] ڭ-\OnDԕYYUa[ *sH ww٭~Vn+ϟ=xW ~ʕmv_Kzᬡ]+}寕AJ陝idr6mV_ܤZoc^@< HMe4+Y%T+W&J#.HǧZKwcgo~%+dϠjB~Pt$J#=we!Ƌ<J*R `8%.qK\Z{0FSP@ PP 8G{m8}S>a]iywZ +!/$HpH 8p`֍OS;@\. +A\(@员 0CCЕg0u}!dnsӕxsթo}7]kp]cۿ sPik{5m?;ks~sʭ5c]Ǭw%[Au'Pyݩ{{g޿Nakg1o3C~ۘrh8QMOtq"LipGԆ +,f ; knƎ37kqQq6IZ~ѲZ~cJ=ÓsC VЍ .YXc1Jˑۛco记b`14>gY:]$(:iMs:Ě +lje_ q+&[Htə Og.9 ~r1 `(_5^KX-pdA?zrI$84^0-b$t{_(nN~4*K/(D-IɂՉ]5Q7NǼ1dpǸv+*9} DXN׸P5Aeq}ʙ١ X F:EceJpz4h~K߯3oD$3S-  + i qZMܘ+K~RHex ")qUeAEm`\nΕL6~qЋzmOoSI񼴑^PWBczk-` tW +8*,V%EXSMC+DW{:P.W%5oLfZ~&(7%ځCih(XCuFk>8{k6>9m)rH  Jhq]]TF˭#%^H6q[\:{og*Q6r/P(#=P ^`g ˼Cׁ\㹆L9 %Kp .˵ft_g֧Ey88dEr}Ӛ#ה1TB21GB{hwG?KDG A(en(4H3e9\h8{"(>r%pѹ'A?yYWN`L4xjs"z&h4<XdH(g2R̀NjU~(7>q׍LFn%AJ0X/F Nfj_ NB"qPN43m[ހE-2r=ej1zAl[b1a<t%6%v>OYȐ"Mmp )킈ƢAQl~og}Ť9 hSVWX@{k>9:ڄFG+!c> fArG̰-Cr|QQGņu0xBubo'*~3ޝ@L&R:E"{TG)w&y/+T8:z||JЂ&;MPl퍊u?,&{b=-n$=" `1z5 | +bsQي-1#3E1Ѻ\ڠ6"~k@89뭵5cw}]OD7- M#0:7n鈎6x;'~oPُG>?y 6csoN\Ua{rt9C4}푁ViTؔ"i~ߜ`=!Dm$Md emHFkN[0YN659ghi~!Vf_Ui쵨fN#TOD{ȯ9#%ôj A0$G , m"Bf*Z@,Z[`y΋HM]] +j`=q9 f#oɒ4&Mt.IqyoVmE{'"Jlr Vaȴ|(n}pJqP)!B#/*bCBat HTpbh*.[Dk׶} v3m$-rAZwX;}P'iבfRdvbebc#Ɠ**7:9;d>Q!bDS͛(wP0!],G;NW"GY~ L_=pHws5RI+ىVF~,A8B~; MqUA5J٣(bS{z<,cCd=ܙMΦ +&TVWfe*FM=~%V&col0D'XaEFrÕX>21||3X]IZ/p+\(5Ά,$hwŞ;!⎪ćb[5mMy_'] 5rD;Qɟ9fbv2D=)?)X js/6DFx3WmB@>@/|\3ZSV-xU? 4ۋrE!zj@X>߰pA`tD[[9[~9t)pYD>ߕ +Ҿb93yčTI 3 tGf5 -UT({ I.wtd"Hr9\gyDeg,?;^~PG C%qƬkgₕYflEn@T'3BY:~H#~'_~ X(hI=(FLpPJ'>Y*ju=6, D;CuQxDƧ>gNAtr9j${bTɧaZDNn*?3$ .dzYJ|92@{cern E>0uЫoN9zZvT OwI|+ +I 7c0/KvWFq+r' iɕ LJgq +0Br5kW*ͱ$utd,U:W%#K8!sӡ eV%p,z%b@(Ӭ/˽A6Dp )NH{w;de;K֒%X8 ۴/vT:ǩ"h$d! )ę:&f?~&D[J? +\gv%`ܘ6~BD1dxǻ2J>hH=<̻hd ktӡ՗5ͪ\h &`H{Y>2h_'*&),sԜ`g`͙"/D"~t8Q@䄹;:`aY I;o\ E/UA>FQ/ghYK^s"7#lx|s>xGL E}q@QVC$dbSj5]yNĶECG|B>:h/ie +`?k=\I%] :&%ymK$T`JhâHJY)2aՉ Sd×՗U&k(H0pJSo;8SsQe\D_h.א7@Ss{U&yFItǀf$ Y|,<ZA^eCA 0C=s,Qtz*(2P[- a፛Nw\G;6$}R +P9=+Pxy:{ Aeo("䚍UoqҲWIb>dQ':8ݗ(!rjPb +Y(I %!n&{a˃FKZk@H/w1 +h&JXO?AYI210TBc)Fj^7t@;kݐQK^R!ڹHqlX9CWe^e#ƮRHʧxfz_#X$ (|4D4/ddprDcp@`!GаjX9;+cHrp Ih+쬾x&2t P.UNHBi,)U\1b}`b5Xi:̝]}SmoLMċhҞtZI vZ _H[R} q"M;HW֌p@P $%ԯQvehX0f+^ĔJb8Zdu0MMGvY-Z_E3YkwDQ&Mi!N{@ 2X3FV#l5<\d) 243B -=Z,%C1ĐB,Y&b -Y,/) -R,2-vbiNܔk6-KxQi-[f^lUzD2SF<'haPxX K\-kDX?03E~_l9-_L+My NpJ4Kyשb9ϔzܙtU+5X7/5-[RYNqRbz8AFӫ0ǔ|s&TTUWՒVʨ82Oݝ{PmILc -a0K%bL{c׵LyKߩ\ -d%q_$ͻZ̜%y8\8m%O7kT;Z*ƽѱmUMF#0@X_um)~nZ] -t"tOkThF#i]&+暅k<J,@ ,Y`(@Ba"p -4X1 F@HDP45hzogwh$D!8` -(NIJFyZH8 Rhtֲò}$aBBҺ`gt̓QXOZ @ei FaMYR)p<j -ki&T$hOkT4DI&- aTh( -OJ8sݧ| ._֤듏-.\Ŗ l-sJS*2KKn|mc+I1l0u&FP-W0:sju{yjZu[-dOkR%޹-&TKq&8rj0svS1[I=33UTǔo'䂬řJە`~bQ՟&㋩ZIkɭ''6.4 MO -JTŸP_'wK\\Lq.ΦRlɺl &UPg= 0kIBZMʺrN}oUR;AU iUH2zdӟJRL>rͼqzZw>>6)_fZuϔD)LcTXVˊ&t^;㊞.=LV?poYWx6Ln?\|S)nך72S5wK%nYd,W+kV+MS;k;b-ØVWPJMebS=\q9'9ORLe2iw:];|MT(0D9d<~.s'jEGOhj[c//~>Oq\=t0FY 52ISAsMb~,,Qt}:VD[Sɋq:-ԤR$_7X^kUUߗ׹crT!c(#mW]1c&u\>(Y'f0׫$bꫳ-|zc0^s&Tb0j/!k,!O]t5Q*=jvv09ۦKcR^c;sMl9J5U]տ*ثLlcJrvL^Je<2?.b$-˸ߙUm~P#v{9\O9k]O)1e|UY&)u&6!c}kii(^Kc%~0}BbeI✗25 -fbrl)z&a,U=UTstq;Z7QI?~ -\+'4lvMt`0ʯGwJ$ɤN&ۦ9F'lIz@ՠƧtI>,1eO͟t1)I_ObZIʑsߕ:Cmy$b)See0&w*C'ύGYW;XjOM1Av53콠ONO8Rp#.ym2,iX@=^A(H24q8]G@QXGap@*j@ǃŠXiPQh#f aM]C,cD%rVET>R=vbhx=(d{] +T+!6F"'z_H7>yZdm/>#i)vpÁpq^Ti+c9 RHKHD`LaqdMUKbX*|/> ]fR QWk!^W*-U'ZNVV9˪ `2k\h'e+`H5HiZͼت.+/Zex"N\<Â`QxX,8ł`PX, ̂BiGMےR]LnO4ƕ'?dv*$YMpuĈ-ObX<04,Y]HRERUUQ6-"`hx@L#аHH34<+ƈ?o7X ]>cDSߗ&D x244"@Gxi8Bе>(h>#,K=8Өh|)(K{0M0 +phҐ0M)C@8DUP]{L㠄.7("ACxZyx H>(APQR$  +Ɖp +E| ÄmZpPL( (iKP8I4ǁC@lb<.K$phCYk @[MÁNr HA<A<.*i *Y )Kx8 +p4piT4T'1J@ Qp͢ˀiF ‚pI4 +ڞ+00   +AÂ}ʢAĄκQLb~RnWN}-'0J?1?RJ)˫ YWWz^k{UI񪫲# 3mluJi'"+bgf׺~bl)mW31rb)ժ]]ʼnKޤ^iZl-[ˊ^HeͼRj_zuğB,%+1봘1SlBjyWh\CC$I AA gyD`rTY@|t)W~}u+W41/cϘSZ RP 46@i q85\k$N{s@ +p +fI,$"wW*HLP,OxZeRzj*oƚ)v$1H-0h2Nx l@iq`V4brNRE굫ʗu+V+$5K&8-?+g$!ɑ+1{rU*JԛZ_Ex$+Vw_ȲJ5mkbX%^̗R):[W}uUbK]UZVά+_R$՛bE|, V7@ p q0Apw`T, g@@+8x$ ubʪsRڟ^XVn DcxfUޚl=g| ìUd4yɛםٮVs)z*IIŜXZc3E]]#v)iglb\SU]WbbU؝>>Kb^g^-{|֙$%Ե"pQm:g]:crVri +±ÓR5N$;t)>5c ke[\R}JE R_ۘJRzL,L c*#|箼*F`˕*\ZݞcVݿV SZTwnI=R NܪL<5s}䷝TLVR g1ۉ=f{' |jq&vei8XTpbbn9{rfg/|l=m : )*0tӺ¨'%Rn'Sq誋#T:[.Ic|iԙbO-=LZ)߽,iSߛsչNvsG5Cyf'RL#'/YƠT:Ӷϴv3s-~ﱏM7zf׹ٱV3%3QJǘ4Vղⶉ1]j}θK\[*^ [F.j-mTmJ[MTdRɴ[F:Y!ՊjUJSn.Z*δX0&0U#ԥxakl*Tvg{SٶLڝN$w_S + &-cY6\'d ZQ=D0V-+Kߩϓtܠ'W Q`$lMLTPf.j,K"KT;]lU'Ti;N 50r;v6t0u?:ךeUU&unUFHJiyUWla؟ s=m,JtV~&~9*IXl _$ל 3KKȾSd.aMԫr,aZƅLNŶ)ҘTXN\S*hN'Rvc{&>ys,*eo3䘒ܸ%/RFY`0O#K3I2wgjx,u%GlN}6;SNZ`LlUIJɺMXkZaǀj%JR0Xj_:LygtXY8+r͟ض:[Fⶅ&a,K8jU!d?]eVM`1(FO/:I*-ۃ{D%,]45+]7I2iS:=i}QlId;[gR榞,'P5)*q~'Ksٓnk qJRWrd;wePcpIEDTY. }:ŝPsAs,gVN;SdD(ht P V lhH&m4#8a*4Jlt<fBq@ r4D4J\h jQУ l&WT3SFKTI2juT1Yp9pmԿ>>T7ƅ4Lo_/K\Tgy_%*#K_pW%_ƍEݨgRuO)מx i*DkGI}ҭ3iL;Ym5֢R֯mn)I|t*fºw|l)USKk7esb:uKb뮬Mەl_*t;LcV)ǚjt Ju lIZWk%^?I9^_&;S*6QvSjIN-I諓LbzS&3$^&IjKf4"Bҽ |u~/ Yb,l(7l%5)h4rR0H%`*)BPiey`9|Vِkq_Y}$]-"^ -P(UQN,,/ ʶdA3ܣBf|^G;OI(5i0Dz+{>455jn -k*Wv!?m,7z>#JUMF#ß%PcM fɘ*EN8illϏBRJpA+N*~ l -s.@34qZ.;p7  M}HL+13+' SPsYbW 5,zƘTSw rC-|0B$?q;zVؙKR/9eg{LXRӋGeW0n¢ɹ 6dcln:HDKNE/z\5g_ e^sWeXj1\2s7iX"Δ!0͕0&z+\HI˿N t)&Ab~=b-_TST0R7UR D9o,/] vx839݈.LD\FzHotT'DFzZHvn⛂OlԱ|czHM'(I77 QZGx C'>`6{S(Ŀ%w,v6`䰫 Rʜ@8{uCiu4\!UmU/R}V-u ApD;z7\$Wk,OX Yfhl"T0=Dd[AزzuZ1S4MxAi&adШf1mj6]KHbDݻl~6y)ʕ=zqq?[Q΁^=ώځ6 T\- wRw3T)K}`cC~Ť 1(-<|!AJv6NGwN ~LgC+%,$ueF6AGtϞT={8($qܜi2J}צe-%QbhZQJ.qe6[jY+C[ G۪ۘf ԚҩȜ ,cid-Eǖ=1Y=7U));B4)ܕQ-/}P>stream -%sj -ظi,L_O)8UQ2v QMEtsnlW4"32#ug›â+*'LڏgpT:kՑ91RE$ˈ[o ?ON;VVJ23d *d>/g>9\-,6u*,J'T 1c T`ue.[QVqFpL FS !O [܎s;o"g1Xim'м-M4mX)Se}"$_YKD.dn,2 91I0p"^XU҄D; jj3M?oA6!)\&$]j+) -"OΚzF?P|(-e*WCh<B<~I~7\F!J(J i N-BuVI -aQbѼ[D'%r -,G3}EHǥO| ٝ[1PbwQA-̫!Hh >R/V}Vh -y( sYB5Φ%#I(:ʵ)X1 ‡:<~&{>*U;`ʵ-ÃchօL*n(UF[G%Vk ALkJK/hSMeGh7I@("ZGpy( sDYQoD}4Ё -n 7m wJAJz\u =Jo^Vu34%rjO2qr$)?h0^k=R2.O9 ?CR 3 N'% A?h\)G*2ӏq8x+~ndcJNVv诗g{9a6='% 7 Cm;_x37w֙۶g(8W&ev,C2׺E%VYc֤aGF1MY7=4,3vn1y9i#rZa7wHڭ}ҐpYyeZ:-ѳ=R b, 6򤗙E}kZs%m.Vtg^Ek#ia&M 4ِ f2a@1[*3\HK!;)RR 1LUFCƓDptMy]j,G3nZ( gwҔcᲉwyfbr:mhfqšujyy%NsώKPq;{O9<4i^Atα jMOR+NWMÛJqʌ9n9h}<, ''wF?]=3O4 @?_M+(lp%^=],)->e&h[xD<үo֢fG ;2-q&#'_ǹ~39F28s~JodVE<[c,n72j23\94SS3n1KV{`QK+kKU6 ><> m -gXcpx.לN.1 1w&V`&tl1mMp0-XX: ,{B? ,\.$<7񥺿6X -)V٧丅 gg|zΟY"DNrΔ,V@.YRUi?!!q?ձrIe_$`g>?emB*< GFI/?V5͏TR.xyMV(:J/:!fkL :_ kp<ҫ#5& 0,QXgC3MW)7B7& sV/Lq`Ÿ["3+fg٭"TR7zy~iP8JȜ*`n {LzB@MWDUF:u+nJ;ӳJ;JD`EzCx0^R hcNlS,?P) GO?fѿg5+c@ o |YvóFm醤'+,Tx'=V<+\K%׆u<烷G(KؿUW/} Uj1q,$!BuH[D φF 5Hpusb'퐣rcv#kkNJߢIռ* L )ѮcAdmN1H =kҥUx`@ͧНyvĞt!>LܭkMSpf33K`BE9[ae̕vA>Z!Cb.6.Mēԧ\w72x.1(>Hd}]!sg3αYy'O4=;ߺUKXm3Cb3+2/7,[QAԱԊoS le0eBE.yrC"G]_2@s|7Ren쁰3QaQ&`?/=*ɵ\fpYAvybPїD#?[\`nSZD~p@B)d`N'`0i!f΂jmG &1&rP֮;DI\ǩ`,K*O!Jga߁>ӽ- -(H V^ ЃϢAŸgGg 1[^Q36ֲ aZ;:I' BӽR.`v/.Uʒ 91qD1nJ`2b <+lɛXt,3bd(IVnBb@ Q -:6أz4_bDs.;q)عPƜ)e*R(Uk+Zueà8O?m50]n.Ut{ +*ʾdQqXg {WG9z>m -(_D F'$^-lZˉRɟ{nE!p@Ko)DcpDG#EB$XGW\ ye}"c{LhVW'VX?wE V D`rh4"սz|QsKRfN 4Ɠ\U#$Bc l -&/( yIg<$^rM.}޾wvnD"4HBɪ^-2s-O5nOJ b/%6Y7uDjK=/,v ,T}mqVh]B<%٨ -] -fH=kzU=58FR|huK@2럓I2y䇔t|jxh^9DvqDJVչt$r G7J׋IJ@ -|E.і 8yWL?Zb(tv<:~%%~"&#+$&ԕF@CωXJ)oO-;o "&z5WVYY|[y&M!rϢ.ܟQn=٬| &kـHȇ/91D=]bfÔ{*LdeH7{4,cy -Q&% xt&# =u:_=R5#-`?n1p7·q7,SC˧o}{yAT@_dvmV=QZq]jY*w5 ^-a.rڤ`aXŦl+1>6@ h]sd1]ϋBVu}¿Y֭t GKBޖ-meWXK9>L vazEj ),\N( bzYE>H K -f1iA N* 7@af*t Hu: NZ_B!1pP"i|Tg"JWPXҵLXy["!6p!I-j1śIc`d2fDbHʩex 9CD*z\#6)n|L9#+k-޹\QifI/E &Ą -qMSTd-FA nC[u, -uEua[$3Vr=n&ViwP >L̳^f]"{R"·ٝoxnp VeJHL -=5k j԰o*xPݐ]ăoeۡ cye[bZ?! ˼d -vT;_©? -$7G,LÔ9WqN+]f,G/8Ϛd.[D w j K9{ `` -{R .*UO0E2ӞT*e]^!u.x^*ҞVɫT-;!<" -zv$G(oK+2!+"- ïEϜMgܺ4EK2t)n \0l}8"S#L_XwqwGߘj %[O`/̗luTm[oV(iC`Dx#{Xn;/(#2^o3!2I j8w 3Pbjv0`,[uw7l[ ^KzIF0*^b!#:Er;95zk앣%@wU3{35@*0 RGo`eiYG!V$҇K#.Q P.)r|Uwr^sœc FQDԀ[(v6[Uk۾ۜ\OvBy7F& DBG=IG:ћ?9oQtjFG #N-MW{)n5X 'Tklo̚\g9t 09*bQs!/m|4,*$eKB-X":.b [-8)&D*p3S0q5QWvϜZ}y>Dhn_CG6Pq`#$toS( [Cw%RM-gl3d9݊E<4|SN Ay2!X]!,[m}Q"nISQRơm;%WPؕ:J2Fn@W㴑D \@ @9 C)g? 8|PLe5r<.?_Jw/-:?>zTElM:7[V`jjY;X7V焒.zTδhDLBk˄] ޑd+KM2^ |oD~|>Ϯobe}V݅!N݊.~Y\9y޷χXs/MBg|%/\sQĨ푞D?QI.L{DA a+v#x3:%~$8 3Ra@cXp%G2` Zr4x{='1@ajۊڬW:Ը];ez2cqW=~/AE-H%]2A1vF[(齥]m!yfN[rNM[MU%z0q}+Gw(.x,#`!4;҉J1JN9xUƷڌi~.%֎C7H/9F7=\ Wa;sћ/BLC^)NX0XiXY6'}BY~bgmYս|8£Fϲ%vOok7~mܲrHKd4\Mng˺b^%pe07F"bۿf-s - Vr)\V*MIF+6up#5T# -^\xɷ]ʊ &-̓j]͂P4JufV- AR8BvGFq/hs;둡4yPfo[vk6Z#:N zt;; -c #g7` j" g"ܩR{DT"RjT qr(l2rmmH% u0vEsK(!HHiju?nsQ8ڕ^hPq[̻NXLDGƎx,[җ#a&Di>~ȀbLUr@y"J] ;2 &-B=S/λl.,QQa/ޚlkB 8;(k9(k뀅 + FaY8A"D"iFaN-IChqHL)RA8 %V$O[2G35@Oq&Z4A a BR PBD@p=&phqh4óRz=XJ7V6z&cYQf5k$0d'ߖK:y2'uFV-]RƚLVr[)JYCmىw2cǖl\˸3T +{) + KŒʅK< [sx]WS+Y5N};Op׿7+@fW[klZd:KJL)].ғ'ٞ\[+ͩ +-ה$dl6 Vm*Bb:l-w+[>R{-_I&V[#9[$չ=Œyƃh(:rlUrL\1\u'/Oz;fq-ۗR-?; tWbJw6ܕ};GgfɗqcwQ7ř}*kSʶy4G`,ZQRt+q9LZ?N-f[話Tkۻ[Jn:z)sJխM9pXN]ҹ+lv%$W,vr13ĘUʱ]R&:[V2Z9qOm$ʄM}d],Z$ScKd,S뺘" L:i0o}bR)9TrLn+vZ\fiX (qK\Ӗ7ǝ6W:Gy{坤ƣ0U~.m& :+L&<&IzT>ζ3i3%IrTC= +B23"3 $ 2ELdX*F4.p8a a0  O40in6|p3Es.jmUp\H TȁIMg _ YrpY +n}_>ZެvEvM""P#9S7n +B9)f>ƽQnd! IKCMa&ިP$+1p9㱬I1hΔ+$gDyW-NZR7 D$s`Iu>yO փ%f WOu +l +7X6BIKR{\sw GhPjA3DF{-foN5P'QT3myYS$fErh>',*D(2>.Vf([~k]Y).X8)wfal {mM] + ˵MU6lm 3j9ͣ 0F+ކ<IY`8#im)'8"49[0dǑr#3Vc;^.hY=b?gSIQM>|Pl hQfK"vHZ#c>τDR$gcB֌a{V0/MX)TFPېf+"-r.u/7v:޿"Wj~X_.a{q]7Q:xX9# |3'9W]_Hx4VL䃼;Z(q] +R 9 +,#o GAG\.HG GHWw;E&`j|:ۊx +pë Fg% :1m.[uOWN3ʧ=>AG777K27;lxRˢn}R]iEKx `HN}; L6eC]QTz-E+_~a"C5>''7P\aKUq/YkltPoCYdQSJ뵃]~lYAݡYx9e|3vt/+O8Wթ(m+a=x̟TǹǗsKn^x` +Ќ'jתaV3jptW" w".kR`UBe,4݌O]o|$魜;,0#3z?.r/SU)A4#ͽ& h) \}`esfTSJ@5`DnUVjo?AeA wB܄mNS@mQM% T\l.jI,PqotV.iMu"xN +xI;hPP{xB^ˍל71";7#cr,SJ1II843xW߁$aL j݊֔Bq`#nyAKGK8:l!oG6]̸OI1UZj+DD:LlC3]f ];҅_A&3Or(1v?kr$a׀=srX6άRgMZ6 #Ϭ+ch' g>#_ةbHsl.])zF;LCGha1bb[ŷ8HZ .9 +endstream endobj 2758 0 obj <>stream +P;븛3Vꀠ OMiT]G$&8*=7[rJAdN)%cZUP $}z4 $j%ܘ>mvWfIEdKgL$z$`PB0Y2615~_U2WlRNxB i1{:{_6k1hJ/ܓvty%sarB$P85̇I?BNsIyp#^H2z?VEř6zx< +uCk)S2ϡwGGQs7Jk4;yTUD.4 )ihYLLSp֌iQ<RpefԀdU"G_JSXVD\ +d=Cursht,[kpӚnkri@u;]L$EۛY +txsdFQ=EQq:&)4ڏ,,T:յ-Ai2,4`o(As" +%EiK}k@зW8d Zq_(M>6 +Vtb4~>:h7! +.蜜ANFӝ\C` +T?",Ag! +Q׃V:{nA[+!+t:-X^R- Lsws8bS"Y UQMYTl*DRrj#=&RtZB /Јa ul$)9}v_/l,%Ҧ&/ķ "08؞=U_hX9dj^3-K}ִښKSS۪z9Rk-’M|:;$zD,Z}3dIq@~ʱ)aD4ˆ8|dEۗFY@:%+䤉{ w9 +؍Ti5m.bI#w dYU{Gw6-TVil%mli6Po]a7m3*Xn)3\έ%5JS8oMzҰ|-~Ў&ޕ^@| (9NxlAYUI xd9fCͱ#8 ;7&et-q,FtOU3`[?fb\dvB8AߟqTP>J}8*'o y=Ռʜ!tsGi3tKیg"*/G2<0ƒK`lRL" FǜSRg#qM :gT98=6aibD`:-`'aa +>wçDdGJ3=*1 ,*)$Υqk[r y [9)>_s!+)st"k=[h`jdʌBĆ6Rp:焌O@E/%!),<-sxSD `"qŇ}e]1L&wf\brM}nA(y3L@ٔi*iohr R4ٙT~hY.^Mgqf`jQ;O-Tz.cZoWmrNy[h +df-nfQa2g5_rڪњvSq+m^ Xx5TT\3:bc:b)et] +^mrSuw$l: {9WdD˂.}Znyi .ms\ +pa^`s-?xƎ&d V4+"Tx,d:vϢG7ua:ϦKn,X{P|T +  zK{[gw+7S䐱IQ&nįfHd!Dӯ$̮u"ii4WX845 +g˿xbf sL)"B@uHEm\Dutp@yt߳P^ +d 5ʺ)t3IYh~~xl7"JdV@2qBA[{(^ ^Jw68& YsK} +8ZP#` _X i h\`ȝLzQtZvL]FYDCF`Hevh$-7s=Ko 0ʕLM{A('2 N[pH[WX`[b\E%rtX:U*K'L EH= /#t痸8Vzoe<҄Mbv# +M#'H->`SLNpI49-=&|,#O748׬12& E{x.v0/@@ǙUmHCcUxފ5ZZ?:iYMZtSE~g),K2Č醙.蔵彡wdZ "_yc eyMk<*O*!34 KbYs@Vexs +H vlgqFG=@3 51@I#fQbiOpoGA`M? i>`` ۣ߽KMjs|=!| #%s ]GY >Ϥ>p' szͿ [&HsA#uH{Yxw'Q>KOTvVcA6#5 0giW@\I[LaEeRۄWYjtҠSv4#"r[pMjԋԝo^uIOeO'SAV^)`I߂*šO"]zT&ɵzJ)~@o.XZQ?` O^s4} 8K^ u+`O]!9T3Y CC6 V:$,X5'5'rk7^&wYSY2+ïCh[ο¾CMA2h~G"%ʼCD?_*jy]@Cؠ +`?y6Sg)ؒϛ9@4G1]\8`$i@w=oTkV A/=E\g휛u\'RNr) +ϧcIy=%e^\k!sbB8C:(q*uw]a37ethN1ɐ;ȧsd[v+V` l ȧJ=']/ sl)YjpbQ̖H?xidX!uӄEPf-L$krs#)UU,ws {Ibxwf!}c}Hl/ժKsY{pUb񠶋8:8FC>LEM!^@zAW v"z4_X(ky..mFo +v%'qJJ'giivMfH]it +A$%+"@S?Thl$ĸ Jdс p ޞ 0+0/Ε.L@U`i ߲jd\ɔgZ:E1%wCZj "8_N#ŅQ|ݼ52WVpzk<տ$Be7¥r^*\̰C4ZsS7 髃]M +ETpc6z^v ?Rkr-JҖ,P7Ԧ:q1v@aWɘЏqZo(WeJKW): AUs1hq~ǹ~gP})=e%ڀ^X`ReݿJmdX;KcLJo]XdF~b$W#B}Gg._'QwT*3J~ pج+TdZy +13|}9]LƊa‹Ea. XtEx'޷E5"4qPXL,H=K"~]xCfMh(KsxvYrBdw"?鈗VzBS{s y(/q&8^R-Ii Ix18wW%U0yَ]h 2/FL4-8B0%ui:*+Ֆ2E}d̃Ս-] 8C1x񮖰*9&*"C#:03p(i.$>:r +\wT պIR[͠xǾ-&Q=ϧbX:#mO,rgaT֥βn{"ȍ֋vg_V u/G1 ,1[/V,iT!mj*oKGv Y0Dc ZP/Rr'6K&ᰟ@ݍ洌[qz#E +$u"2{s{Z*Z;$VƑ=u((=@niTb\<q[AxvZE"Q.P(i-N9 += CFrs lF;?*˷ݸ)A)$] yn.Т=nQ]Qyuxd4IV#n宺E#XJ% oO-;!HP)b"z$+㮌o5}策& g1LUHlJ=I|d WPl{~1nC@=Eb&%#xS1-(3ĕ6 I}K%&#WK= 9?97#)lPn&q`7,SCzA]vmAZ9]lY ~Gw51A8.r}ڦ`a(M++}>63i7]1:ZŌÇGC}uCPXֳtG+Cv}ːNeǜ2Y.\|!}v`t +51^)Hd ||@ (WEA$l]z"v4bxQَ +*Ah_3l ~M| !'![˷ hF?bLo!1ҭ][89uPC-j6 Sh2fxbxkz B] YM] ʵGm4qC%LZ"9ksDT0UoN nь]O +hJXB~A ĆO-ö+uաuΰ,hsoVV<_M,'w1f +%͏>f٘< UqIjZ6o;`}<@͎o~c?"_VGV@F߳}_"m Ph& +6q 9%MO>7Y3Sy%0ލTK1a2v:N^vU_™UƷt +YezL{zxW=?4GA3{re(^:2]@{T!q&Q9ľR'ܺSZ=Jml6؎xui{8ȕ"^@#> V=ᲈJ +RL +5k zo*R]׽]q]XqDX8@NtiKY> k|dp vT6^?R +7cCzY +iJ9;h8e.)nN Lx@1s"\)-Dۅb Kw@V6R0x|^XW'>+)M̌jJq8u.l| ^{ӞV\īTc<8LLQX|~KD,ok +h k" äEϜMg1EݥA?tĩ.Y \?'o\"f#|)JjnW#g'[rhV˗h;p7,' rwayH Q`L!;p8yfT:!38b1 E$ՠ,v l[McK +/>ebAGX:'߂.۠s;XO`Tv+'q];$Dn  !xdÿi,`룐a$bN'ythCG(*9*z91P($"@|ud`(upK!$ j7 ll+VJQ edI&&HoMHX 'R/>`1jq | U50&WVI +]\.QhbՎ 򰪻M,c5 FZ.&T׫:ۯne5?||ﺙlPYd޳=ڔcg mI-58z=#d*E7=wc{^ʱREVps +IC'BbY? c + F9=!L^t K[)gGh 4$Ѣω꧃rNYSΑ^f6.x  dfjP +~GZE,`8C^ؒHz2iSƟWYg>o^&jVFxwGYsWYH>ǚiDZ=?NY^ZaY.{ݺ ºľ&[̔fSY WxmO=287-ߡCf&]C!O8?[ `;)7`QnliB@:x%S->|=ny4ăc+/E˙ʫۙ9iDSФQW"b{ߦ_5aW[vS`6=yyO_U(rfGq 0y :Y&qfEv߷K)u̶[#]%REmf2sA}16Eց8$*hf'$o0 +=mwÁIOY#m :h&@A0,K*U3FPTC&9? +g.0_hb,k2:Yg~|Dٸ.;cˎ,oAr^ \/s{K 67>OE DklΞ%XA6k##mu@ ޭ)#Ksԝ}Ճ`63Y厏Nrki!-_ުf[mz>)(1p!ݖl3Tpֻ<-hBŏ@ۖJsus?R g3 +aHi&ukd"assP+C&,V'4eɽEP͔Wwfi7N{M>PPix־ Ӥ=t9_֋fp<~hu-!9 1P|Dj +A;rB, !6rl.)2hDlEd{氖\sJ^ap#~e_r!f?όoqN[`U"z6%#BԚ4aDXۥ|:pb ! ;Ob|{f^ZGf$ODh{^:L21D칛)`m>;.T{Rfv|bɔMr]$;t<ȟD~qNФL i<jv"tI%st,#, b%'4K38eattaQ-ς$O쁩t5*6! +dy>lnNׁF )Ipjd?݆2FU-QjJBZ!}߄`Eųh!ɧKʹɗR2^1LDҋ 8| l-WdK RXC)Q˟o(ZHC ˘4:r1O \nSծǘ9DE2(CdD0t(UUze|ϪZژ7ii:qS-n,CQ 5W)A>D{va +#D6Y`XТIyTx>|x'n#FbR>\,GPҘvbq'V<9- NmK\:Q>|}Q헽Շ^_j;P\<Yx?aopKPNz􏬆}b >\ćj)p| 8I=A'.Vd>r^C)"8V2Ty`П_'g @ËV#'X;Q +3u<@"jU'PP{I5r,Pʔ,Xl\gc׆,aI 9+[+Lۏ;qNHs`ΈfnRJm J_n\7r@ +8fr2N>nfdt4hIjѳ*Іo&[*e>;Qi(r㈿ۛ̍CV#6Rױ$6_s|9?$4\SRѭ'nhx +@7 ݢo髬yIxInPFQ53$N~\Z!I$뻰B\'Ѡ(5 U%g IVvCVǪ0"aE6ֆaj: *%6UR}tʡpl=Zh1?YJUTi0l.mNa7zIGzDG=g S`q eˢH)fy)nn#b"p v 5 D{ox9#&0;o */`t +nA,N)1ʯ]F/~\! GZsPM|E4ڨAGֈ0ã0Rx5+=rs7riy~HBA'm9%g 2Gm9IGb *yIQο-1&stO ]'dx7 ..2~  a k tV ҩveLEş,nsVDvhӵUIUhl_E[~(NK3G*5p)^ +^(}jP@Zb۹nk +*4 s0H@d P/O:_WFO#tEz;^m98΍orx1XӎeL3*Ve,3F[w;Ua$i@lEa W`5 +s8#״PRFOc Az5 )L:M2HGp~B+8B׍q Rtl=3W$L 7&Di>~ȀbLUr@!JRy"J] ;2 &-B=S/λl.,QQa/ޚlkB 8;(k9(k뀅 L:`L:`"aZT6YqlEg ߾24;6b dZ:@=hy:@--5,Di,[F@2F#-NN+}L@2geQ⛢/*Á5*t`Xm_jĎuCŏ66eȾ`R|_pX5I 7=m괍7;R ".H}RX@A71+vc9e۟]\t{QѬ!Vքfazpv3YFrpDv02Guﴭ8ꝶ84bD @@ -946,401 +1002,380 @@ w@ Isjm.z~F6rgg~8?j(3"9Byq4;H#k1^L EeXcm4E"/ګk1Q[ d: -@&5Or/4&_itFUY}їF2c rGVv.8:!<3 bCƷˋP i5CtF5œR͈Ϊs rd8qgؠQAm4O)!̩Eco2wbF4>:N:8yk槹Uvl2C.Bu#zr0Ɉ~s;m&MFo p^%!{g9ۊ^чS]ZAAWJ",Վ'dz =n):;Gq^73l~-?*ufwnDV  ԰@C|U|E?lf;r,܇*9 -Pi(9r!<%kD$7sE~%&9*\1jހCu_ċZч IpfVn=cZl_$ R}(箿JxTNhǮAx3G'D !\<6,gZu@c'pV旫_*)^i;,g.X2Ap,gQ"mD_fWQңj51݃].˹ 3n$&MIRFWb yUkЖI`! ɦDe!RKjdeA43.?O22uZ& C `",YS*qb驛%SEƣwV(t^s)eY2r*x P\}+Ol0uF4lӑ&SQ߸,VfT"[r B`YjH: &|2Q|.l6 .ل$ -S'C،?w0NU.<\wLBƲ[D tE9;L:`iQ:`#EҢV#vo÷c\÷ 3A0>`QG?>GڅvI $)bK9˲:vatp*NN#=*#Є-ő& mP`{/W'KLt4 -Ja @>wf&L9xekÄ6bMg36&bҸq.`/Ze63*fD]8q;m,I @Lށ䠏/rRNI(RV+ñ3#{8ǡcyEWWf"D0aZs!emL.*6emsVot4Z ph5kVSg6_г_ff726}t#{9Tr~d=b{X {@|6TFWkj:pXr^*' ~2WfxzZ[,T5@(( ifi܀]R$iА oɡ ɉ(C_DQ?|zJiTsRBmvC1F4a4SI 3&17ހ멃S߇73ˀaơL= $9zfI И|~Ec2. mYe3sGu/*Ⱦ[(k;s 5|h5~0@g 6>oFZ4o6AdeMRsVƎlB d5*gex]ڥ@$iS#tږV>lϳM9+0#a$G.9rHaGvDcc@›D&,XgJ49$p $Y{9@r A Tؤ̹j;jN -5F0,3U\!q N*G8(CpU@k-6gWEWML"D$g eHNSI#"'* %X#g H\aPN6q翗! y UjEEWi' =!dW48ɄO5f9b,~Fͦ(OSEE4dMp%ˀ!$$`?u|hV#>HlQ2Pf&̀ }.q!JR7/`T6O!W4edyS>L\9@Je&Oo]͈ʎ\JN'Ҍjfn&n՜z }'(<!B'8M7S'C fi::FɥUv<$q!#dӢXe/BDQE#O-|B' IA NA\dvk dsudQPg%) .U HqQr#cmK't%:u_$8x~R(# ]:SӪѻd-7D%}$PZue`L99L|DnfR\EwriѐQ\a -b)d$ipMjי;" -+R`TaA -X HE2b+:=Fu&| WD* ,.mN$6& Er$rOPø׃Y^w+#'D@3q;G*;\ T -RhvTA*nڄ{ɻS̪[aJ8$.-=7I9j>&gIO2CKA(h9dM=\,ӢV"=ag EA;Hq[dي9A|GYX멏ʎc;ZeGEO]: P3:gNn"5QYh>; 1@H΄% PF%i\bG.%F!C;N7z)A%%V|`85NX;m5BX)GF%z\s'q/(. 40#^ȋyit1TGb~)mm*(Ɲɻ/'r3{nF~ 6F!t?ZL>rCa}M(Ӌݼp5|L -SȡQr*\/V[{?jU^jʕsfB" -MJGsNZssr+gd@?E{d,{ ef]':rVX*uQ#:'o+0OX3ƛR3a= Dih -m^v( l $gz W) %;@}j㿉ɮ6A#gjI??/tڶʢ~4lLinP!füIˌ\P6mPJa,4K3ѺR&~AN2zXIIN0ޢĿ,ԞD4 -9Ii(9D2R$uڦɔFT7_o0#BةWAVW,NNmT;m UFvNŝVlm~?dQ3D-h`SepYUp;$s%3wbiۃgqBV&} l!??tOyPkțBǓhШqA̓xumUzL4kMm`m.Nbh|yW -?贍aU4=j~6ͺDh 2Y27@0Ωhe,4T !"~]~ (jutف#r]&_Y\*rI̘} -vڦzX4˱ d?uhmgmʗqGg-0);m0MuT /Qdmq<%!d" #ޙM1S@pPVkme!9,\m;r,,Fr 'FOr 4rN$2r~czd_/V@PO]h f'x/@ahz / BuྲྀLPo( -&=mcj0|)|WS=a:*Nԉ:Q97-sfJww"W`Uzh_&U!6ng\uoez걮*ۖʺl;j8<`@H OU 7jm%4M}*@詁@@.QB!U ,7T}E!@ UPk~ ~\ri%#Bm tC%4jճ/BoJw+AaZ_ _i~st^ ŕԥіNPR%_HGw&v!O`LYZB\+eI34wxTB!3}wG5=cPN: 3x$>v0Eف+ӶNʒY N -S7}m)V爌:$2JNêNfb8!?Ms?LI8䕹% @S*汷ǽ(3#g`V=kZȜYWwYr-9Ċ %8@Ift4iT]Kk3- pPMΊ #3UuF?ɑ(V -|(.f7]EVSw R(9jXl߱@Ȝ%rC]* ʈ>tD#]V˕ބ#)ZCPse0`]xA[{Dg7>L.xt }wڶz(G"nhPٱu~2Xe5S Uքճ5POr`-n˚+2xKxg ^0-Z"TvTG Cd4Ce`Cq4@V&o=$+bB}'VynVg/+Ԅڤ>CybHd6G b_sv#ܟ;ӆ?tި|p ;ѕrLΎK7<~H -չ?EBr?IMiQAKس(Az[v CGm`~N4a xq`T5}:oߜ -h,oM.I/<0ſA=tthWw넇 -3x}%<,Й`־< Sāz(!<ż:2a(첑3L}_x6?VL -ju?ZZ3 ~&fݐ)Wsdy3L$ $<5)jsvN`{mWC0"$$`{_T'+zS*\QUg 9q!zɁ "\< ^83&rATe 2"" H $J.VD2(H>R(,"&*E0 EaQE$$j&ֽI)} d򱟯?DCbz,9H4A'7/L@OuUa Sa{5[wa߁Rf0<~8ΙE S\H9$Xܹ9 י>!59 ;Ҕ&5s|އ]&xQ9 7X*KG<a}A|0& >M*i}.WKZ\@/ -xfTHH -E|]Z{ _dVbA\(GnKo\GjTjJ,jztT$| ᛁ~ M(RNCS!鼳£ex&6+DX@ ßkֆ+jn6z;nZg-xoܣQq$+$]e5%l_{;Lq QoLSٞgj0/mLH uo ¿ bDb vӺa3ZICٕnqp=0`9@"j}1_@sޯ۫|q -wm|+kw݋kSt0qW}R^HI|'&[q&kvn"wFb{r>e7P -ZVn$ۊ҈vV*^S@v6V[sꏺ4 *j.v'p)SX;V(f.Psa7w:np՝ j Vk_h?y(3MgB/AVCyDо4茴C -ht\Ht@2ݽn"a@ATjhlq7Hru ԋOaE>;G -x,ˇ`L?lUJ腛Ve~F;_JtaAN"!M$J`|ڰ; bǥg^pddR$!Җ1Ui6~dA $YfF7(4َ;07gr]j>`vb^D&lSg=dPW`AjXp]QYTm75Q6URI6g= )6>Em{'@AS5 Uɾ_NHUIU#^["˪VzJZXxW -VZ$VzV*s#L$cW.œsM"~G8M?Ɣ K` #ۍ xu1AY'^`;BRD+M&M]4}CkO퐯5sovX{wƎ]vk2Q$B-ѻҋU#v -Yu2]L&]?3d8Q/'1vmHuA][s=n+%׭Q˪Z|VSX'Xv}Ǡ>}vH-6kckOUkmQR[d|u\MQBe Eth 3@^ 尺.xKȰ dMr;C ΅2ٽ[ܮeiWΩ# /| Έ'2Tv!YZ -"RͰD2 >!`Q<<ޮČ, lI^c#&@KgXzx/ Q^ -,EP51$:>*@$D( O26UR >;5($e? GJl3&1"<ɮ{/}&)[?.UblڟcfՌ5XY&*pfpVSB'L{ =Ǯ5&Б8JYŗi[WGPxbUf< a z% 6S3~*-G5@_H@%.|3dy9'*-ΡW(Xb}V~&RNZ$CbW4DLzwmU/K!TqH]D`FeFiB(䥌%EoL@0 756ζ1WB$Zs+>WS@mMr -K[=lIr!P$nHa=@e -+}Pm % P 쑸Vt<.M~P'Rqz5&pBT=R?)iP|]qSy^]jaHBV@ <]a9^#q 5F+p2-%R'o.IeKna6햪M} G6è < CAW :s.o?`"?*xmd`R֝+[ 0@Qc)__| Q{ ]aWCbx>*9{ -Jt'm2Dh6U dRc)UlA]]Ho/:YV0{Cn#irqG0~  sV'߸H%Y(s^F> -T\:] [ZQjVn5i - temΠ'~͖iyzKBx'˨(Wh:ys iDng>oweu=r>/PG[,soEi"Ao*P1Տyhٖ29avavmR|:ry2?Stoy5zרxD^NBZơӑM nW*A'ֿ -pQ.7L;]9f85^ڍ|˰Z0 -M19h -w?/l`W1[%KfzmUC[ܚZ3O^n6B.4m7#Ohi.Hr#R"ky^.yVu8PFӰK&;̔vOXr!fKn<[q  uY4wW|y -䋓kJht6b-h4Jv%jOdc) Lvjp?^V1Z~uA@15,.?aX;-Qm{7ƧDK֜A*s6'*I'gtF!SU_]YEën*!i1XUhee 6S824zDfsw[4NiMI -8&W)k/?j?#Yca*cp[LOܪ~9shG*(FW~~jep -4v -۳<<ו3w 9Q6?$3Hٙt}U;?/jELNifL^ ]! tF( 8h= QDhKFh΁->l~ 7 s|;Sw\ijxDӸxddȍ.(TOS Wjf>PjJRGdǖuz_O*u|_774/H - bU'RQCMnҲ1˵ښu:|2NT:8nt5qñ1jQmk7‚`!pMvHFԮrp_t߁3l2΄ Z?oS{,+ VFpZ8f:aREG:hnQ!)0r+v@Q$G:#*Ϭۦ~F"PAYVZ(q6'_- -QgvBnJ O4aM6nbO{ = TT6e , -͗/km."T@/p{c$AL%LD,) K% 21R&(.k՞^(3[Oh1p'ƽEIpGCl0wInm34=jLV67_bUG+o[, H zei*HKgIwGi<Ph+fiLp&)M>#e-D9߇Y#]V9\V8p4kHDo:PLN'$S;-aep`ﲀȁa|_?2zJH];YR{~EzPj19־sV%uGOJhreɢ}!VR#'aF-J (,ejH^-mSYw)IquuyPn3r⧇xT_9&.;A¢6%!X ʀ`Hb"47q1ы2%o=f鋚d8IEa۞erBg)U| P`g QA#;7qz"Kw7N2`Dox) Pʉ`qB}f佘6[@ N~(!'KoNlbR+o#]r iyF#@gi ->E@ BK4!MWq(-1&39g)pvG!Kv QuLSf} ?e&"bkU9Bvc78Rs?\ 5lZ仄[PLI(Zk5 $[{DP~˶w p5\ҹact OFYP.1 \7nۙb&WЭn'w@TGcb/" *6QH2#ƿ\E£%9[%'#y [G&aG}>y-@\Ib2WݗDZme91ˌQ"r)!| - jDzg>tKD}J:G(48sn+ )K2GZA0 XMޒLr -5 $)??Zmٵ!ur頥ib? Jhkÿ% ~VuT8hoDT8[NQJ:(*\b誏*ېe7[=&u^<|*FnI.8u/Q:HX,t[g1V:HD@f&Y; 3C&ey[|~l#wruT(9f4N#}#qAIpW[.mOI%)U*kX%*QAC.kUy,EOQ -V4ë~;Fi(%=A Lop%(O90A]C]k#.-z;CۅL^!3<.89ZVWHH -ѫIS9{&mN)x(^zE#bϓ-U|*?&oh6G- 7ԥ6hIq5]q` ~Z4;vX)uTqG5hK"7˩s]] -c5te?G -rbpkd_zz? ->plZl,CVszyפ%ו - X8yUWk[hn^H0mAixKaWp*S]J$pnw!D\zNt炪dլ'*S%JNNm.EjDͻ4˽RyrH(4 #(heˋbk}e%FbUrh;7DQJrW56Y"ё@RR=8(>ԞC ["#L~+%xoM0SRLAŎ^Rs헬#(NB6 db\C xFL:f)DP*7Dx*ݟVZo=iܿ0Cb/Ouy{]V.NʼK.dUG/{it3qǕOkS$_afP|q┼9Xp ">r5o+0٭7vD7΍!g) NX4Ih]*1{remo3H NA^5݈CL:ωv[/C_cIYǡq N%$ުQj(H|H7KK*KDO 暜XJz gZɪhO域ti8b+VSȸZkEM+Ki*; -K%"m@?,>o ]I2lWi:Ķבd -b\; PSNdO*mK[Hc[1CjY4FBu{6ɱo ?l/90czĺD-)H[  4Q* } h Hf]5]qzXF:A]zPwWT, ,RRd%>.v]GQOXפeOVb/ήn٢ݿrl JQ8i:IA" z^{Ȓ41 &ժrrˆ S2ft`HimْAkPʿr:w:^d43M-iB-̈́u3bCp$uJ9pVɌP9JU@$v)vhFiNq(c76ix` ʏ+|'6Td^$"2=xXKRNռ1 NFXw|@2^ >NhtZ\pyf,ۚ_5Q̤bb[.~d˔q#(JOIU5'Gp`_0'"_DH/\vQ -\U=HDn;6Ň; >H_ӹTy92%]ލ`rz&8+.t`YR߯YBޭ4q1<P, JkzH%SWA399^ ,=TE{fXMN*?">ؚp_h;ǯPkwi^`.T8cqf(CUs.S/5 z18RM~ ą/إQ'Qݩak)+W:۰g~`O e'p"Ĕ@8lFt=MUcBBJHPLHƱC # \u+AT"*ŕg#!VZ6`1-LG,I黛$E^WCbw_do拖E|`.D +!)܆@,!T;kC˖@fM!Z͍s0GAU!!N#w8=\wUs_Ȅ%"yc{!8KdS?e }:MLd)fBiBaۅe:R j J'\sۏ&tFVbLjTHF{+!N  Mم.,.BBַXm -DĘr2#BI^Uq&5 $k_6qeh˦O 1OUs-SF("Pp8&AEPN`0] @&7AjpZ^|Ke>*^7vr[$ -r>qk`q]צ_Ȇ)}`g \0`R -SUʽIh֠@9|kJ1M 51h+F;~i„~νhr9jv> 24M(8! p\pnZkmA1 |MhAt7OInj$;7/Z[XPG 5X/^ +4{Ï)]xS!? F 6Ap 3Opjƒ6KrV}RNnO,%FA&MSgƯVClÅ:L#JMm$!TyWmC3n)!x夢5|(&t%G+pSj]zՏ=- linvش;jyJnfkn]znUzCbjad ]:F!$"?(OI|]@\o&8>\|TY6:E6wmG+cӀ d:Iぜ_a Cۡ/`/A2ycwzYj6n+ ,=HY'N -g?`{BGԗJ2F4_Exiql 8+E|OTpY@ -A`4|C `\If_dHb $.xodMJaWbs `YXAn*Sw7ś\ ݶ;oЎ뚞k1 -T.M@S%y2'}=PF.+m[4KMUq͙GC~~Mvv:M,41:يoϽ1Ek ŇE|=mVqE/\Ra֫\FL{&T$' h~#'Cz_~i)`͈}gE >Vwʐ l?/,M%M?RE@xbƁ@+8=9S{!ËTh{>~hPzs7͕@RY2y=QS_(>uOLqy]{J ?uv>8n1*͊~X+Ud=;v'e, ~bP4\4/b̂28y;E;1"_ „v#%lg]KVUn}IA$> د`u6=f?,avCZ fS5~Bh%ȉ( %Kװ7_<4:`?Sho@B= p+zDO e&(⑾*f|8T73ѠOd]d8IqR'e3v' DҥdJߡvpX k?B/B4ؾhh7W+}ɿ]ԓљ\=k`hHm& K&lUJOLᓥvΰ\YYv$#R{͘Q6(hA!8/3TDRBndSœWT(? Z I)ٱǬ[@c㜧6)a||Z5Q+Tp'K[Z.~by辀>Knt&}6R5Z ]~ة`10dJdq!FR֓<򾁓"9n)Xπm1.6_J1c+`cY!o[-)Ll?wO8H\ -mζ_#|nI^8{_47RS\+K5D\chp;xRT+a׷nXFY`35R r#bחOZb2o*OIE=ymtg8{Jͯ+ɩ$1`<8f_S -]逡 DmRT6`wR!xkK;r .A z78"$4o/1:J8QIn0K:,\ .{Hu&>х,!}*LjZٜw Ԙ@eoWJ_`W&wqerV߉b?-$IeZL)p#YA^kK8TQ!HĘ񄣜\6zQ|yG&3lt+Ʂ; _3]j!ɩ"XPp!1j8y`짚ʰe'3"$cωHfH߱tnS^0 -hYe6Y7@D IR$? -mgJw~L@c,Fsp/Fc.>2NoM~X$b xTZ -&;bt0"Hl ,1 B*zHީՐ9'EJ7/ըׯ THjHQd#:7P,ͧf#Vk 'Nhk8 N/((xFYV` Lqq,` ->SDdIt5v% +z&1vzpm#y5l%zw]V6XhMrί;C'dg+SZjq\)XOâch%(H=W _jVn"9 j/V. PԪo2/.p²&B -K^$ۀltg49r5ں1ѤDEaoLc KGiPCxj4yCA͂an19)hm3D,@[2J!+67WdLCrE;@UZLTbF=18^zo+6UT*fjx( 4rKҹG]/qoz_]b8DSN?*Er6S;eXud42\40UY, -5شn.үa8V( -dC7Cpzk4DY|Xi(D@apA>zG@kxW|]/xඟ'&QVtIxz蕨1Qӻ۩WtP,J4 OL1x^,*Q7ER -+g"U^ޯelP\w~נ23F/?xU|=,6^\qWwt+p&& C2TrP J+L8VG' X)sP0N]sքQ6ԓ?D9٬1 - u}+G͛O qNQDRljm+MYJR .SìKWBv8hXd=3]|q T~A֝i7@DF^J! 6 y p -~XCKX{>NXWh4g" - *g2|ȰjrhA-<&#VE+lL% -d wd +6]g^c]YV4ƳmTiz~s E'τ -VO; a߂"ڙXU%7pQhmU|&\NHآCwĈ5|Dy(hZy@"U=LZ+!!Re5CeL,tW}-%DP?\ˉ_G֨gfuс`;jJ\!s՝B7>Sa휛:P7L iR$'ܙO7;45SNQh@TVFFt$IvOٺRn{YV[Үܶ0w-!,?lU;;pw6wu GP| ї7p~D82S MFU(!یr<ﱴ!X hy'Cjdá{~O -;mD.ZŠQibա;vfUg*JDN]+L\_IlC(-FϾ5f8\^4yuQ<j,Ɛ¥N=RUYa*5GöbZ&tЪ:Gcg->ōh?#b}_zd0&m<5 Qj+)ѹ,@{q/f%̑Pv,kvvQg)s'gR]DtV3'2% :[ 1=?vXvOH3[N1H%ӆq 37 (C8Hr7z洡\XFf AX/}Z `_agD@rR؞kȻ(12W 4W#Aqiu`A3NJ+ta5@Bm'-m4{~lMl?+w}K[о!rfsZٛC)$KL{z&|<eT R$ģ6o$zQFovҖ<-7+Iɸ<ҕM>y5Od*eQλQQ0=w콉ӵOܰqt)o2.#晘o}'+鹡mlz>xw0rg@:^Ǫ{!$MzPf%MSp`s[MpɶPe?kU3D s쐥R|32iNŸOֵ_t/r$G؄нs VF[9fU ?'s8S+!h^{`rP<&+B3- +lӇډ8SCJ0=3ԋ+{+~|7tdYjӿhR+?ͬP> -|1푌NS9^PHyNL\^2&#.IcEћqw{Q^DӛAJTjv<0Fkb &FqY<;xfJazF Vzlx t,,JW{LU)zR(.'*}ߚF3!gPXxV"+p..s>#U +,LłM.v" 62'r*Y%Jj`0%a*4%ӄnR8LE2Id9H;7sRNIul؝p6I^8+_vKfNl~(6@dd.ۄ pT&lWc@tT;M-Ѽ? 1(7͜mbayEԤ-:mcCoox^h>,0=*674ESS/<+sUsjR˟|yE1 P0Bȩ>J#[&0 +`)_/72.*}Lnzaa*Ahg\~#^?e) dԿ :2"M(%L3E(YT(S7KQ֣"Gﴭ[UB}L {{I Srgeu촭T3(?3F{1TjCG@ Z4#i' L۠i +_N !@$Ƈh@@}~Mr<ֆ '#+mfBmLG/2q bM\~_mfT̈&.9?pv&/Y7?9A?>_䤜ā )o6f#?80C#{I>r;̘^1=^^wLjeD]Bfww_Tl}&Qvb:kjam|6Z8|;hm*># (ۑ` _笌;f[مdGyAkTM,KIӦF+cG-7h}`ٞg-s4;k1V`$GH\r䐌"9#!1$7qMX"IԻhs +IHLH1s _;Isՠw9&j\`XgCUqZ aQ>2 9W/[Xmή%ؑD$7 = w1HʐG8DNTJbG" rm/C<(x? +N9{B$ "h>;,'qF/1 :j©sĒYMQ|php=#%,SPZL\_:lPIՌX(p)ͨf{f\ͩ {Wzƒ(tsq܄q>u2\mFSJsh\*8?ZeI2Bq|<0-*U"DEQ?b(OqN'HJ0|II`'Vk BFCR;)t}ixEMnTREhg!Z'#{B:{L&FxMF6D?O5q!kH]AÕ^2-`(3&!ILz:P4o4UISw*}ʎ%X8ƾSUvPd4e5{fQ( __#<<~ L[r!peYrx+v2Yri$r:zcoTnY !Qn^#^]c괍)^6X-BJp;qdD_BK_]5wb1@3Rꅼ87FO0CUxĪ;-2vVyjܙ{rr+77&kblc Hsč8-g=Lׄ"=X PÇ{ͤ0%`BlV啹\ 9g&/ߤt4~Q -;'0'rFF cXGfwi[f{(uR#gPE1sB5cn)e^;v, +IDiܦemY9BrgrPr!ڷ6z;mѿ:rvFˑ#n/krMm,ZѴz, O,S"p*ʘ}:m Y,V5IyMqͪ8 `.GLƔfR|a8̛8E ulNFB#n.`N:qK)(eo$CE>/xM Z-s-JBXA9IDNC(#( Er_mLiD5_}qL(C1.kA9-qhu4NFӶNPeodwﴭi[ilviH3xj.H5CԂ6UULx_:wZ2s'61=h{'de"~p+C9ANGqWz؊ 5f)Tpz<+N<* [wVY5D&atvr--ƗwNN^VE)X~ݣgaѬA.%|p//,qZVvB#[L "hH%귀VGKY0"gNەmmBeʅIo--ČgimiہEPOYvvvƩ|wt\Jٲ ^Ӷ +C\TG5ʹ/ +O%NSH.2P82WX4pތ#9W -nv!Y6uX#Β{b$|bd$0K#wDB #7Va-})׶p8vo~?hjGS`0;|)@/-+EӃ'o@`(|7ﵭ`VG/~GQP0 %LhKMUKP໚z DQ6uNԉ:Do6S7-*ҋG0\f +q=lLb+~L.^f,7TuUٶtWUeQBZ(~z4n t}Wsm+iKV)BO wЏ +j`K/]B/m] +P^[䒻NL.:mi4 8-qVK}bS +[ +; + J*N𛃅b(.t„, Dz8H6 |cڟ,+j^a/SMоӶeB]L} 0} =@wau0|lNkl)n.#X- r6t2M# ij$S?MF¸uØ_";`F__m .BsC87$9NJ9" 뵨 KN +gͮw_&R`T^ +ܳxX~%6%Lԍ8oTV1 r7HuW5犾Gu_Ұ}6M)Ío FqIQJރYjA-9&BC3uUmN:mCeMʞ{<xhm׃x0"Zއ 98VXmHyc%$N`uMm~=!K@]Nnm ܉5p+($VE:Sw_a^ `G@I@Nf͹@UV;rXاHsȩ3B/uQ+i`~^4gyQm> +>u`NSg0Ȭ6gFɑ8[r\; ɭDH;.ZZmyKU̍> }l +HDڠ3rIDqVChu!4#92.ꍄ 9MEP pĚdg "D/Ra PF') +_4&\Il/qūN #:era+(ĠKԾӶ+E>tD#0 ʎ. g7vg:荄>&Izk}w[ִhW_ї[rv;=Shi:ҍ^Ez (3sF7y[vv!YUD(BM>)s:{YY&&HRߐC*%$;9+7ܙ6(Fxx|F#Hq숮,LDdrv\@R8O.z~,Hzn2L +ZžE!(,۲::mSs d?[ !~T@SWe}{kraL}Gߎ) 졫_(]F2Sg]'R&,"&*E0 EaQE$$h֫Zºa8͖۴|LmtP q4jxq lQ:jna.;Mкf)6(/:+h#;P?䴌RnV8adq^o}vLOX9%ηs&y\|q-E0C$T>RI<* s?wn+cu5uw΂4%m*j4_uaz E{TCkMs; +ƒNpQGD?7_u2X)i +nJaf<3lo>]2/.&Y\&?YӛwI3"w3Vgh&My=_֮B?> " +Wi^䷹%BkhŜSErW)$;.TM ~dd:4?y#}/gFo ǖN(ǖTE^πs"FX 㾵'_2uWyκVj;p9fKw4?v?qϝn] 5/zT=n&?ѽEZ:{CН7<b_־#Xʑ#-;&%4<+]f_B/Ӿ5TH:Y(k?^-9n6v>/zi$P&kˡ{߃^5un4[;h.Bm4ӕd3 niW(SSHgLt5vKav$8/Ng1h??1[uvϺ㾟uAK;.$jnjVjlve瀟Ac\ǬW4ES%|n*7pztT:[/U 濟k)zn1BwN_94&JrW.{ym"+:S8}6 uu]Q: /+vd;t)͏ۮ5Q"xWhBly6P§p[awV0P+ +2" dc[Q^Yk +Ȯjc`k.Z"\Q7b!yBBEv =eQb 5^sg&Wݩ@ͅpmeLIYl=t=-[bd54GdIθ;KǥDa.: +G -7|SD^c;#sy|D„GctF̄^Vա^HiUF\{J +- /ݏhĞ_tOO { )R{j.x~+wQC07fJ6Eme_;^M%>ħ Gޥ՘eNպWzPzS*.Ulʂv^@]`2H{5Zֺ1% +@X;=uT][R^+k,jFOx%3`neAOOcg}W]D:úu,=$wI CiL;Np0R݈8HW3 n t ?Bh)E4tl"TJSطkY<ڮ{]3wf(yg5n׻-3b*2ڮi+X5bP].5\kE:C3freb׆D]\ص]/?_Yv~r݊ܮ`5u^nw ޷kmd®i i\<6{Q0TV`U_ƎŋWheoZ-̀\?@G.D<2zdq]$Rڈ] ˒{a<qnuv,K+qN>n]mxqfpF<ɤXu&RnR*nu$" ňv^($fdh`M1z]>{9/R`)$Qfg"!F,oXt~ٌN𨒖RHUq<ީ%!)H]I8vPeI%)Ѹԗmphwk |0M4+28j}%6Vw#SZfaKWnŧdQ넱`Hu IӺMHgC~ QbaI#/u]"0 6GS˽!8R'Ols\5Pmű/-$5ڇ6U7'nm`JŁ'Y}YشF'nW7)m8B +tNq8pcx w59Ĩf7Q3 6:gzMEC6Gi=vE1đ$T*N:ec?i& q+ɼSi9BGj|P]t%pd`MM|QYo:^]6CĒ..b..6);i&Ia2e=V A]`-i!V'b7+Q +!@$/- :1=H8/qMX "љ\j3!5Vm$ pF@ڛ#ud]t}-ANq:nKP*漌|/^u<[ ԬFjڜAOl*k($NQ%BdѮuwcS=*z688}(B>z$]X*uBE5(ӖE: 9@yڔ^IF +Ǣ\Ը +h1P\{_sF:4K 4?{ⴟ^M}"x2J.VJ A3Mwlo+>Ხ96+b QӮ]!<ؾ?"r4@!i*eR 6nv}(2$e" u?*ۍkPg(Q'`]0C #7 U7N*J1 +Jozv<ǻsbKje.aba\cr^,C7^n`ףG JC65g֟m4\h۞oGZ4]-FPL7)]E,ν\qۍa*MF+=w)ힰC Ηx{u-ycx<^KgPmZg@x15?jCU~lwr$`g4&ݷpTym8M%Uq`p],Uah||;X#[1EEpV`a&ZN?q6ĩ|cZpLf,y}d`J]1eoF)r6yr34zE43K1'I}\*B= +ǒ,0;mxYX|jqt׉8aNʂr D9pFݼĺO5JvZX2?%ܺx*3BY +LU&:9fW݈hb&beDW헽3\|NLXQm;ߝo:;5e&~dN3[_˨b gaҫo]X3u4 Đ%pMoMBe'@n8. l9mN0Q ÍO&XMjl<'ČyنdD;hqL?>ob%~t*6cw7cy tTo!M@!'6~ Cu,X~jl@;\pX1_A=<:"s|> Ud@ hhs2FDȖZUDMp߉E%~,B՜LZOD!0PnmB xEN[GE!PiVF"O?2+= CNZ^%kd|`j·M5F!p?;q YYӳ4`<0*& ip(e+S?R* yrU&%aԛV@U)1{щ%5seܦ݋u0Qz]>?h7$$:iIr)+kRI頦 H}U؅I)(|\ThYM"E4>BȵTpeo9ĝDX;P?FckmtU *у6١/TΓKY"0/-/^xs|@@dfkvgoD>afK0NWΧ{χ0JRd;8Q_uQ]> hmLbN%? һ3`Οy%%9,g8z[glk2go({|-0CamJ +l oS+'U.x@VhE!D+6 P}|F0Ak=r|ftYpLh8@"4տfvO?U1a633?;Y9vR[xSx Z/UJ2<=U9 f\$'E|h1LZ'ӏFN,Ibq͛ +oxS5*x#{UZ>RV +顴2|kRJj˨W$DBZ$i +BH#Oʩ|we0ye)~gt#H*vx*>{Gcr}V^#VPB ) "S*qCo̤LFམ:$ \m}BN͚6 BagŤaW߼ |OGl G΁TAw/9[F?c>׻1xX; +[| P8oK6X30iޯ?:G?P[bM6@O%fߥs΢펟CuUKحb|{|!jME(֪2r̅n@p~[k*t !bP@%.6 jr!sIQ$msw09+F-kӥås*a("&]b N%hC1*UM[ynO` +M5!^DjU(q m$T[=eFsCKlN>%/lLÎVqwHbLTZ_HA0+{3mdV!^Q_wRvH&PRb3jvpDHRN +*g:6]9`G~@&ZKy<46V*!q@-]Np6LޣuZ5uU !h|zL?W z]DC)]kU\p-:^#bwx-O!Y&j^gt$2Mu/w@f }Od|Y<j3ȤV`<@Bk'{TIԃPb܎7kP D]ŵJ?tu}y +Z$Bx:7XCNkjH;\.ʡ5ߤB =s""8ARRx3yG7;(wt2?YS#_%|$J@;:KJU)YU,)ю T%{~ +jSW +;rѲC X%j'+?ХpzmLZ "mZcTvz+e.j 5Ph'7X!1]*~(m/#,(ql3@MmnW08ɶ9>~# -oYk#m̏ g]@0XIMv>$Ǿ-.Hڦ t0ФG)ׄ6 ueGt& Shpvg^^QyG[$/ON0*HIÿؕ+v=NF=Y`]Bɺ*?Y9 +8ڻugvM5lL*ٓF8 + &UW80Ty#Kva% cjTJuBocCN6Lɘ ҁu ?_p]fK-?B)iRivL*:w7߶<= +t4Bψ"`}z.ʮ/w?ԡ+#r1'賏/~6!d\+"8QU*:9 vQ>a:2M'⢔M۴Dq^_҇;| I OZ& 5dpzhda3XOzPN !nZ9F R^jn{ѨLW^և8ʐ!⌈Hq B[!9CL8gÎNmD_B%+0*~^C6F<M0X( 9f +.,4@㲐JU !U>RgOr=&: [iz[ +1M!9fo"`F:'TLH$D20jV*Vn [V'"ƈH&4'ZB#KjB\}UdǕ1/<5r̨#2mV!E ](pXyʟ\X*b L5͂1\:_쭎hg uF +&9kMI4s!gdCΘ&;SBXfIEkQMޡKWպ[{0[<0iwԂ.%̘F7 ?D!yLt|q]8T#6uO \^;3-VOEllb6x-czP KZ96XM*`^9j6xm-,lp0x^ylԳyo 5=(opm\Ub(n@h1Li7ŪZs'|`FT<($!6ls$C?5a+YJ5MfgҦИ^o)+T/Gr[dHPPxɑsZ$wH\ ū%t=kH0e$z{td7q]!5IQ蕍`JJ)Z]7Hv\\Qruy-h* n>854p\i\jrl<[eh -AVV|~)5Xo(/>,ri/.v~ a@ϵ^2bw6 &`%a;L'ݸY8M]b 2K+OdF;epe,ou vz}i j'}$Z9B":Ϸ~;3H 2h,=I+O^"/W~)]"{U"&e(?"W{FJ&`=w{A˺S{/aσpZC֮ĚRރ,\x~R/>7 碙F"J-(ÏԵΓ=!فN׉)р La7 +\z=|d [Ugui]gj;( Zh olr8s .hSV7]];V Xpռɺ D3f/HX_AP^GtM~#}/HL0QaB".;$¡|#^g C%VKߥo,Y '])Pw2>_& K>]gKND`X;~(DӊK&vCZj[l=)$dޓ^^JQF3.H!E8iHf>gTV]OSS=NYϜ(}("{n79cbg]^魩DluTJk^dG?QsAG`nOF$d%9dVBE3d·Hg͇ͭn\^SI 2*ށl|D'Csy֌s +~-AvA8Tg˗5BSD5,|%5 0(,9WcH {|e"fԎ] AY#OFXpyUV v`H/%k[iV}rey{_>St +Mc4p1usG2^UJ^'6 i} /0 oNynEt- O +x2Gʄ*~ߋ:^,(G3ayAE+kN;bfB[~ũ -8[O{n"EbȦC7wkc#VCe[_SNMzT.I0ݑzjMG8(،qPmcl{^r#ybv 8lU4X.]Tj6UEphI5\BǙc@̈́b+zCM75L퉇"F}\:a06Ur(# |q\?Hh¢4Yp<ʟk/""*\ Z& l;0*2N+Ijf6g'4ŪC@&PTa5*Dr9EdM#5e)%*h]Ħ4 +1CpI(byHL >_9ys{u"ugZ;M-ѺeȀM~q0o^!\?a尅:w4gԵjOEUe̙B!pu@чTVVP;OtQF 1GiD_+LÔń{L@#˟&~m\ߑ* @.@?Væ]iӚ6a[P[;3> +XO2 I[t讂0|PCC[w(E]+oH^D&*+B ~%6$DfV|?\a?Q^@.@eKr;˗u׬\toG[_#oBy,w +^ csSRP"'Q|#)z}6]JtzˬZ>#;if'~p0)*`J +h߈d64sHV{ՙm.LcH -zQnN~9IjHr򟆣Vs8]G&1$}*aڈr7HQP=6TЧ!-y E>uZaL=DɅ~LdX'[(x[^=Ϭ*LE k% 5me4[ٲVlgv]Kvrۋ:Ϡ<_XCCmRߩG +2K"l8 C߈sVlQؤ=ZGhlQqgqD g,渄#j$~7p|4E:n D +1,:1 Bh;[j>= ۧBsJbV'F  acWV*0uO1.ܓ4\T0k+,RIA9,0=Uf<:m)zk+ӨBp,(,yc<-$+?& w +Ԃ? +v<onKp)y +Ad("8I5ZvlIyͮ~ =-f(/?@Tb\6>:85J n_@ŞNvr-p-MI,qh +ĿAY]^_G=1',dyhbQ[=OgZ"t o[KF0`.0RwDC#G@N'T8C1)gT'lS2y9*CX6zGv&>26w}:Nx5Ӣe<w9x%=7ڄ\#x, ȕ_+WrKS/zzu=B)WOʬHI:n.`ѩTyorMܰ?z_aT3R1BoBl*w:Z8@nD;HyscL1*sQ2ddnqVc{<~- Xn"mG-(d2-x&rw~A`\0Q;arHN&}gzrqoEo<"mV,KmMVcx%U?P8W_§[U;=Q -*"""JV)Rt)9XVdd9KUC;J@>p2z:u5*==%K R'wє.1qM +C$15f#S:pVbAjpow0ހGjD +hYYu3ʓ{6h]< +%ΠIIe*#/g#YGԀ +^oGo_|rEI!=[h$jr&L "9[[T_KB:>#U -mjx pC)M/$*wbJI,Tv u5=1LZ< btf1a) - ЀP@yRxufUY n{{&hALK >+Y/8L % z\T.kk@(7N@@"P 8p - 0 lתKtNS: (d%0۷LhElLVs8'~2KYgr~,Lna,sbMe$&5!I -%L-h&ʷeMӘiT{2'h&ejˋě&%!]<$yVZ4;EogG~H|mVPN6u Yjғ({d4uQ6f/ Q|f[W$6DYM]SVuB= iv?OÚbfmH"c;s[p% B>h(W%iuEK"@pH94;,4 ,Jd% 'e&8?83G̛ lYXWeʖda8:C‚  ƦaA;Az™I1({U8e!`"be؈n)&b8Sg3R>gՙ3r&64 ,f8SA JJ&Dza2V!mpi4wq bDt̓1|\@ABt&M?р`nI^I$= .3煵,x&dQHLY33/FD@teY=h(t#Ktk6ט$oe B9 , d2N~z- sO+.hXVfGҀGĒb̻L qm4Zu&QJn8oJi__M8w&I `zy$XVxgXб$CsQek}H^9dTm#~ߍj.y`٥g%cX.!!p4,73A˖0lJ#3ϻ̹#2ZsT|$.˫tX[6h -l8S8vc;!5I/޵^ ]BfKҮT؏p(۩ Bb9ނ94aX?mxw"!4dK*w^0-ib0 -Ƀhq4IrLrHBmMrIJ,`4D)3r@e De颺ޝ~v6C.%ud[pr㲅S7uSb -g漓q)8mJLH#Rg@:R7.PZܱ+Ý"62>ccJlRfFUFVۯ߆*1u|9QZf> (dh5Ǘ3O2x<ξv;ϢNLϠD>M{b~aGAiJ&V ; X:7Ɯ܉]7Z&ihe'hiG܀p*#c#!_19:uf۩ pl0!rəϏ\'RSQ -D0< -8'i@8aр`(H -r\ -L 7Iu12 < Z 5*QO M䪂%Xq[QYYYiyT7mq̖SC7kjX4x@8Dq(Oxs*ͤI1QDa (Of&>UNG|ygu’h&sr!2*9D^op>ѐ!zjeRRR$MbFT"aمݪ4 TJf>VJCYS4]9}^yrm~+edl:oSNw:^n[ӥ"=.ըUts&U ZT@v-9$fr5U iJ/TB8)4f99 S,)]Q͜N>:.'yLIr7<̏2$ٚ8ɲu$9 ߠ`KR$*F8(놸q(h!\8eofϸ -!#q *)6`&f -' R(-,RʨM!2.SXUɣxP+yGrFDؤ4~(!0Rѐi*_Įjn@8܌;XIhp8XʉJh3BpDEed($zP27k0`HnN<ל?YtohlQLn:9v)nIv;\#Y%kWKht<1Yf /fԴrO#l+ - {)5j17}˹+{>Df^>Hbæɓ!&{ac6Ҷui:}n|{ Iǀ ,ޔ9",;L)ďݞws%"Y*eyvDI*$.yRl6ظXS!҇V—H,r:DhV$J̌.q&qoOD37{)=͐nug}.G76|tQ,< u5 +7Gwx:S9,݈ty c]cKzP |JCZ<B0r*1g 5)78'6]R)אL*Tש`ͶmmS21erRgL053sUd -Et"*RUUH2J&4QRQM9rdyr99rȑŴ(9 OI$|qqC5C*#<K"!DYӏP SGa;L" UM249ɼu٢vVRrK.~xi &ʐqQo -?% ;RpQE@u;H`@8AN @d7 ,%|He6{_N9'١UNÚw?~oΪQogw=#TNPAEAm/ː~UMVus$vӕScadǩR@d~)rIR<)*%VIS9DY\!G&YCΐd$hPXzGy' DݨTe5A0x<$4$>f6B:.*1C11 @526FiB!, ltVjUl׶Q*\HNȕ25KUKqvdNB̈Stoς -'$G}'Vk lff4p@0;uW(gZrQ9GB}6hz<;h3XP>wV oU={t9~ש3a~k!|N'@ѽW]PР9+`W[;QLpe42 vuEi59-l/i <c)3Nf^чf*p)\᠉]\K<Rl@,V&kXă0 md/)Gl.1#Uka! `ٮhSaeg %qgՙ3r&64 ,f8SA J7W2A&3(`(̲Uf.`H!3{~f aw\|p8d yg>PhIO4 ,3sW`IªLya-Kr?yId4YbRpq}j3S̋: tٯdV +h>ݫn-(M5&eP F.;d2LS)^ u9)܅FƓ# +E2 Zy$ّ4Q~#d:0(dCjfryIϤV%Fn72C0K;+l5A梲M$ iipz +$gg07Ȇ[܇mCL=<mw*ۍ=9,J}k3:Ua"M57tw]R%!m,1=7j]P]ٍQLҮ؏v5]ywq +̿zfX! +6a:;o]eUUNtS5ڢ, -M_5K-DP?bVWht͵*aQĚfkH;{OWxΝ i3}prrr6Xs^e .VjY/t,I\TA>R6Wd)8G847DN+29եGlwCK9EsvYKn2*$"3KLвe%L:.s'ȫ)ˆj(]2֖ NHMjҋw->)T¡LX2WU^} @w  +@` +0;GGX ,`lw+9ɲ~>:tVKMCmr~Or͝>X=/Mv,}A.[W&i#C zutd4lb +lI'+h^ d4jH +[,% T$ o|"DqB?3]!PP14QS> +BrshBð9H`E2ChUܽ6`[ /($a:+ђhj); ݛeY@i +$ySf7 #w!v**'2QY>yw'ynq͐ 1rI\\czlaMݔ"9$~\E +dq~.R/NcDsԍca3V&<:;wzpg6ȪؘdQ뭾ᷡ J`r_j/XvGiQ]|@\^H5*d,_<38ZOyYԩcqֻiOO3H#(MĊaKǹޘ;됒F]$ m4v]edl05+&G|;uͦ! +C"și=?v\4sHDOE)*ĞpE )!r)(3-$50ؓs0hACFD?5 .6X +`  m /Geee%f"CdfRYܴ1[fN ݬecTp8š8<xHͩZ4&Q2ºJnN\TVUЭZε Trnksj!SAiY, Tu.WĦ)UP V"⌎4jrjZ?И%t@0La> tE5s:mLB1'Bʵ>?22?ʐdkV$ˊ4-K]#@ơLʢ p ┽uC=*65tĺ6hTa@("Z.HlR8hJ)&6кLcU$jABB5c +b8H+GCr?qN|p3b%y.b)'J*mQ8PGOBDEed($zP27k0`HnN<ל?YtohlQLn:9v)nIv;\#Y%kWKht<1Yf /fԴrO#l+ + {)5j17}˹+{>Df^>Hbæɓ!&{ac6Ҷui:}n|{ Iǀ ,ޔ9",;L)ďݞws%"Y*eyvDI*$.yRl6ظXS!҇V—H,r:DhV$J̌.q&qoOD37{)=͐nug}.G76|tQ,< u5 +7Gwx:S9,݈t`]r[[.6[҃qVP ԒХ +S9cI9骔RHdbWnN 6@mmn) ?;_f騙C`^&S(Q*x5P\ET2jʑ#snȳȑ#G.pGY}JJ%qC %p3bR䰈AX!LL/'g@8+Qd؎$SiB|g}Ld3f}Edw2eE]vƤT%g(^>l<ǂ 2E!b\BwR0 H.GG?# ;E0f17hH.z$vZPv!ɖX;~F8xHgV9k~)&7A9wCDݩγSOP.;AC=كkG',CU7[ ֙sϑ:f6B:.*1C11 @526AFIB!, mtiVlԶQn*LHNH2b1Sq,vFk拙P7Yt&L 1q8QC܏=F?B/OHP%HX^[T۫) #LOj 5ՠ6/A8FEu}#eΊ4űNΖEÕAT)cW~,p)c!U@<dhh>;!US7krGEZw?y16ja#0g$V]Hq)6(ð".^ 3+*-1nyz=@,VU >^̲Jz*-kܰ]hu1jlO>,$r+FCCw@JX'z֣е#KZdb>h, qA'{ y]y2C¯]Ѓ](L#45aBSMdy`&&0Y}ʫ0uML +s]51-E#wZgPnm')ZtIΒjF?.S|ØHLqMq^uu<10FB]xd ~1_DsX@H'鵵N׽`Q:",rKi/r><^*2bYb-lNYm+'oHD0q$H|Y[~&m7' Ko^Em^yL'7 +\|6cDa''1^ .:m5my$b7CIRzQPN+(?56jXeKw98}=xčPMl}N?_{GW@RuCtl+t{87Xqw%P-.tLD&'[kt60ƨTza|}궲Nq%⪵։rFsA4{[Y׍j@CW +v`;o`ހ/Z6U.rsS8fS7ۏĞ +fTf_yW9rRX_H c| F%&ȝq0T9a5VSgeL +'s8b͋,Iv9zL¼23gBx! G輸@mPF!rVլKmtUe".VW$S#Hy#M P +L;6ޢeˢS?rdN2}x\-)JO vK=x3+*1vtAT!guO9`1t㿏kr 8&;U +?K'KݔGQՍT20mRq.H$4BSh`2И.{qv\/ul=t16n;Le<.j2K`ۘ:^U8^C>M]E:(Њ0C0ġ\>dWKUgm[3,BTa~MAG:0.avpRQ|Tú_Oʊ+ٴϔ}I\XNv1M^muhӌ{R*A$T_vʛ{QNNz^hd[Y;KR n&4w``|q +mnEf;rVT!7x541FQ3"f9\퓓?`:ẏE$ߨDw %-!V#ݬ|V8ȿwZ9 V~bt s7{ϱL=?l7k`/bPNsZ _ES@&x=sI#R HW|&=§Z'D mi9HJ j*)Bg*ѡг!5cSM!>R`t -Єd kr@0ϛFD0CbIhιPb5[nbI;o8Ӷ5?J*WWڶLLW2n$ۻ}ze eY37N"]Nl̴|1жI%l;IJjB_AUe1',ѥ#n(QBy!47ۘo ԯ"`q6c +ґKኮ&ǝ7.흞FGS#ڴJZbHǎ +"4e.gFi|~QJfORu>(@A4鞕t.M$<%67ve:d؅O~9*7gvkAAcQ\ "o=Őͫ*= /_bC.JOnaɺ\J16^˞1o""uôaMOs)nSX.bL֋2Gk>M5Z(Wq[{9]`7m.od75ѭxG [O悜 <^ +XٽPb>b *)I|'}b4~/.zlA(9Q=^ XQ%l ++O*6cL"Ry)+ʭH kZH=.iT$M>-\s@yC ^ pIgD ˌBa_aHo~ 2,c5>HbGg;>NÑ~4ic7c.V6[ .ƹ9r5̏ЦRV15 gi:V&l!qVUG +Xwnz5w6iPwczwwNΓ3<p% )eC]dy}1 Nz{hp1^IA"bwhviF6v4ҎfaSLeOYA)4ЦY a'=CrqyL ٴO~XŒ\hI+]?[o!ZS(? + *d*#ѣH +l &`Bss S>xd~zgG(kUmNwl σLxQ$) ++wՋy +'H$OA䓖}yT[7r8p1h(=N%Ya}GfMIWbu9I];G@U`Pۼ!n!lT婅!dy󐸈r, ˬBTpn/uCugdO,(JeaȖ(ܲ< ܃ލ\:<_.N;I$amܥt ֧mZVL#渐n UQ}uQnV~|9y"9$`|w2b0* V-ȯOMw*q*}X ?@{eC6t+XO=w/!JЉP-WH>$:Gu fmul +ү;g&@~ܙR&X;"bOLw_phJ(5z1qDZ2F#`T, P_w+H)%q59}լ`E.`4˶!Ody8CiHȿM_$O ⤣ޖȐC/O] +ސ =Noc#ጟnQS۞L.j? +7)y1?CZBSx#zwI}Xh#yL[^('X_ (cnj-K+7-㛀t>i2˩RFlbC^sh\k" +RyUy4T65&^E  5v6sYH-K=ؙL 68lL>״jb (c#HnWolN>t3ܗ7[w/aE؋Lc88^@,s\e<> MCBvÕ-KN)6H|9!#x"\B I\̢oymv|"gW:n#W6dE7~vaUM0lϘ 8ualXj˵M +GM'Bc5ހ;wO.2&F8/ƙXx!v%[y堹rHA_޺ -PUsԩ"C.Y/3}`ldNrM-$&s0[s, "P$hwpB=~%X(;=*p1Q9jqLJClpg{Nv8S_`s}PyGӭXUtװ(cN+xb +"$a#Ga!Y;;VC|v*Ƃo??#QRy_! 7^28cyd9%ɹpGRbcv \skf8/ӣl9x}J";Ψ&9M0D 'h`E3%2M1IQvMf; :ЄZ3렽( >ȜCS~vƃ!Cm^ddgVS0`vR3UdnR%"! +V(QTyET^nὓ=(•KN ,<."O%:?W:Odh ǿ~XVDid>2_y]>i URo[&B^1Oޞs|@%g L6 +cxMwWq;lQ΢76 9YA{DT^Wa[ +Fsیz}ׅV_Pk[ s'qg|k) S59pXK[[˦AyS~zRgkf2u%BhUSpWf2( {}1'%=c~_cWv$ Fmr$Xk~F35=I H^"32C^0;3'lARM02o $bt4m?}~ѯ S<mk(@ + 2"*%316R`Ī)%P@#H;ؼЕ5L80},ˠ7Q$4S({pACJW[XVT*0G_hK]VQ v {x#8@8>w`ǁc`  *unv#Mx?ң殀!:̼"]CJ&k*(e,N׭( a-C{m1obIm#'|"Ud(5f `&~RcU~!|R|*@t2ҿp*; O؜o͖ (61ZBAA[($wg=RPJMweMNK`%4-&TKB`J@۴Y4/A אpS߁P"3+ ԄAJ;j+!=hB队Q;ϫtZ"A[h{W#êu@s +}(M4!;xN$jJ41*@NSWk <-s$usCawi%dx9:LdBæi>ɲ,N>}@5HEi~l9H;zQ钧 X'W[GcBӱ9oV]&3zUi2Or-,0X)zP' Zx:ɘ8Rԓ˸ Muj8'`鷼 . ήQ ()gYZlEPD~2߰~83N}fиxN{P%4Q>(-D0ك_B!˷cjQ aS|޶I V؃#L+2dL,C m[«a1bJ{w/i-rf^t"WXrJT93=S1jP0?"I[:bR e*5 2IqS#JA1!S^pgVD?@ yDbK.ghQ d +jFq-@Uz#3Q%xA}bӆ Ӣ^B0)ԕƗ;nQĨ%_,$NJZ?2[cj-cct>27XٰkK]3MvKe0`c[wD$Up9Zn^7]Τei^+:rB$A9W94 l(ąsZv̟س}9->g J}t8[ґ4iOsaIiK_>p(,F 90:1I&G.U`m +o4 +ƍNd8- +ֵ*;"i7;;8BC=ì0zWR@3-RjB"%8%Lj$ר0 >G wMibTl8B*@oQQr 2l hR_Ag:{%mh* ;:7J i/T\܇`0j # + J@iܪ.&* H_|X-/lکW"]I Ԛ6KeZvݳ5NSNuD5*x=$$?cO F"h= %]@em&Qݭ :A8D+P|dJxCɭmwuo31ykhJb l8bH}+ێQgc*}ġ)8N"ENi^A*s֧=X^sӊ( -->},?x Jd'G/"02rG<,4ի͗9Õ05$1A}FeXB9` /mbi}MFaNu_36Q'. $+njk( ++VbfUZtDm 9*C%2<˅0A/r@!r븣 +r0kM6(RyԙCh͕’y{J16=WWkF|z8 +a$}5{ƀvc`Eioi}J Jpknv( bemF#ys"11I`ʈv{H> {BJ{vs"`q LC"x\+=Ӷ6>Vhjc1g$Y>rsst\r}`ٌ΋ɬNzmOE A|@l"ׄ\vg?>]Nĺ?u?w"PcMɠ&8CɡԐUG1d6ڦ~6^,M꺇DY(%o~w+CD bv 6S .g6H̖4 -glCaCH<]׈\OP<K2ٹmE;`bnIr'19p5i ޔ@tK\3ws6cI~% ھ`}hy^s{f;Ɛv4ZXTA0G ]>.i _كG7&As{6̪1 ӣ wcڵc$~f&ݞemG7hº\m\7"~dB%Wz\ 3>/V^NߴXv֣0uOwћ "5( TS =D$0$gBrN{"tbGx&ygLzݎ"A˒u + jc|_ɴY ʒrkY˿{ы3a&B_") +T?YC؞S s$/MVyd5E#D Ḱhmrnj4Q}Ֆ01+>}TqFe-dhI!QyuKettV k# P>n2Ńgo9R]e|r2F9^J:?hv{r l˛L@5C7z7lς(+N9ޠ,%ty qK +NH7thH@*F&3~PT)1]3>_D/ԧr &-Kc:)ᢘ]^ץp<*pfH0֝M]%\ٽ=cd!i8IMĵjOb8NZERn C0]n(:#.?w 71}1"`MP^;]jGBPY%]P- +"#ЩBݓiM%Eڗa"O\(YQggT 㥄 ٠{Qph mHRт=ww ]gLon#?kpRZ-|:o0b3wbI0F!PwBsuHrԡh \ +*)ҥ9tsC4%=iUɏ7XW#NAZ>$w xPPo]jNŸFHq:ӥHka61kJ®@=jdyDxPl:oBܣF(|ݖs;H#"TѾOӵ9҅ Zn۪$)6aCyF(((SG8H9=ЌqT5ŠXe%%C^IHMҲ,L=`*OOɶfd6](p2bBAt DAJ``kH =0qFZ(tVrVo.c0Kˑ]1>@'ks"sZ|qC)ԃ?N]j;l"Е;}HQdPV;q:6xVlw[s|jwXr w=rExV eIDw},z?88M 7}$ml G,CLV,↚MKuC sN8W 4E ?皊{:ToJ`s:AyCB8\Z-nr8,/C]ɌOp +3x#pLyl8؇+\XN3ma~^#Y ϲ"%n͝#Ɂ 'OL"vsBorXKe. PqPk BezqbqTülS%].$ BCm~ve\Nd; P3@g0MYM2~*")?:## JSD=b_:i~EV y{:I,&)쓩HEݪH0@%QO+y|Jkf"¥a`Ը~c<(M%+7*yRzku47</68aL~3pS~P7CGĿ+a(@.rIʘ'Y1=y%4̓[j.Mn3e +SY ϓÁx㢡O4,9${]yK{U& ~+VD]F*\h$aIQ!|yEܳ}E"Dn|Kˠoe1[Le]dț ݮ-n+{mtt> ['8@;$h gv:o薋\ƨ;_u-| g[0N1ggtĆhPDNؖO^øaюh,쮓cOC$?LO,+(Z#uV*Vtr9e.,zd"Ij +#uOB\j珆YDa_8Pf1XBw6difDQ94toXr~_VIKU)e[e4פ 9TbSXp;dieRҬ=3)*B%¸pr$\dw_V}Vas6 OajBfj0vZvEb0̚6XŇ[Pm>z@o3 +5-#`C#6rSo˃raH;gsQo ^݌Ow w*SdxQhi1x @׼FSloC+׺:xM@[JP\&*gpN[=m+b[]W,b#rE!_a2P;RxN W[5hסIk3G"ghI"~i8UNfK&ţ61f4YKϨ*~mF.S>4JʔceN#C*c+YU0z/1kYc 'sy8`A+iN9wR_ u5QrXΡARuӱ-4fO|';NA?rM*S +9K&1V9 dS;e* յQ.>`Z@*2i[U +`~m6_xAwR/l@e=[ +@:_v7JHJCr^_!Qi5B~_˚+FLy`ܟ..@.Q1tqN0n!6/ 3T&ıf`!->6A.#P5ZYNc `vt{k Xg6 +SPzτ?v{fRi@L$., )uϠkjH<1-thp쐙%[on}2M_Eb4 ICVu8bkP}" eض-%(_ĉ=üZ{Q3#{fO|vǁvO%Zα8#hV4Q -ʝW.kԄy8O•p<<ʫL'$aovh e78JD.Hp7@}|]> x# ٌ< t zWn4edL:&I}>)3LesƨM::$~˔eQD'5Qy> 4"zC _ u?CI80?PL&9,-hl ߷(E=fK3 ?ˬ}l=rS/xG<^g+ǿuf*D? v[S EɼS`cxlY΅_ԣ@h>XqSmu'˩LXIDZkWJL<{ˮ8ÕAPxGi IMl /qJ: ~ O\2͉X8u;B0011쉡6C?zTv +f-&ћ$'ψfNjT)Bp[7\e~~ )@d*rR,v7mΒRjDM6 vLL}pkn fԵt<8=ϴ>Z<(Xڔplʷ$^)\ؽHKI@k_ {{>Gdx:co6fyBk +xUXˤ>* +A3Ap@˩e'hqWJ9=L.%طhY`@?Zg~oA]j/V *B#83d~eVbw5#uϕ}{.D֏'l7_z}rVeryTtPf.m~9Ƒ #"Bn5qǢ3JJU4],56JeX0nMJ+xn=st*3u] 5JDxT L;mz\w@pD}45Ŧ61U.l˸6k?oDE4 K +i:$D!DajNwi6 |6%ᶇ`F hCT;]$fVn#AP1('"40n<U Nr"=q"|ɾ.ޠ-ߕ=-tE0MHðdoFun-4`yuգCW\E +pJ͢ ,xʭm%VD2rw%n@]8&q {{ŊB00>\Mv& ?Vu}ĥ xX,3Dx8"h1Q/ CjI䛼sϸζzl׀ȼp:ZniFcwcCQQ$A7Zj-sGݭU 232B,,^AeDDA!ㆵl1uh ֹVaw{FG0?rQ_> + ԄNF,t'ٔ "e-L[5Cc?t& {] +B>3ߐ!3'B6LbO,j¨p5^0L*l-u }A'༖.+(#AzE/ ì^n SWkwTA!U;qK(4,9R zSНď Ꮼ,қqR/H>`[a0U"ڍd::Nx!jʏԭ<²eG +tB eCe jXv"47!@J <; ƪFf˭fmriR}dMv~">pdu^i %t-Aϟִ[_{73Ԁ:8VM[K&ۮy@Fk,"Ks0K\t%u-C8Vvf +8P BXε)9%!2~PZQکɋb~g{V.Ul< +Yu)dVhr\> \0wf&4LWN8.&MWKR=2zrdMEnE@|Rgu$Mc:P5pS:Ҋ +\UrM|3xIMYT|A֖#6\?n2/PSZ9bĶm5E9#BEnd< qCh)^e߼%ƀl<3V=_ߠB{9Uqy)3qV".zZJ'sR4I`"2izR' ͠)GGN!5u;gN-ʙ4, +]ؚpOЈNCNcˤu;J@\$]Lv5֬0eYW.̘Zd hX~JY0JXXC9CG7NiξqSP<&RΜq})2ǟ,&lsbnr>)WtI53pog(Rعk6@'Vhya+oLٝWq33Y;sYA(K 1kW?m7įݕb]͢-;5n2GJ :nR]"VܷPHF&֟OxFXB4=B hMޘ79/v|O3MdW w{?KͅϱuO՜dN>Eؔ{0^ 7myZkdPԙ,_(RlMc +Vf2ܲfyhrX^*di!\(w=\G +8VϜ۷Ys$sƖ/6Com/ᵩΎ"NQ" ou#ՙM{YLyX!G|Fz\JN:ˤQ_3GCp N%y9]]Y1Q rT=‡|Y4,aБI &4?f9O̱cBunt]P BOws)#sz9z,l#b*(aZ($m9Y7AzzWkYR)N[B(.`.g*x`o^΃kɞM$]g8Cl- +h*'rH4unEmȞ$XpzHx U +q"mɘPZ+ق{445W5Pl}Svɐ> w$DmeQ+I~k"g+O_6o-R+LXV%Ps!/ÎOt0M`sZ"">ӃDiw((t)|n ` h'\!Ok #1? ,1AmpEk}swvD%@sv8^zG קN ;uۗ""Qe)g PЁ3E/3h^ȡ.B";Bn\QWB l'Qkh.%G,D XNaIʬSq2 9X+zd,bU|3"_tOp!3&!i4mN]^*) =dq4@4GiY)lHuEO "ŞyyaCl +dzvn6R=?m6N/Q nDEOT!Z&6bU%Xt=vv{`ZШ]1}U+}wLX;zxNloh ;F+ /ָNj<|jOr :j]p[&"{+}<1nXcWe} )P8Uvᦊ +>|b`岊kHH.v0VU~RD#6\LxM,+ĒM4Pܣ-[`_`+gPB1$]N]IZ˒ 8"ry6Y#b|( hzu~S  ׿0GFf燸2Q>]-lA$a[<gss +v_ +;TW,CD$)n(Ҙ۠hLH4b/#eUZUKwr +endstream endobj 2759 0 obj <>stream +{Gj"sR:\rg2~n5#XOU:pNW0髩f/\Gzh8ԮTBM3beu=3έs=[\Wᨚ(ٙAkѵWrUqe99E X+$֐*F#_H%@ +F+: V {nt{.ל @*1@h"cY͚%=DIkXXWdi[Mr=Yr_M&*8F@q@OFASje^In_<$al ^GPmK5_8gY:BH Q~-8EkASO&SUT\$ȦL5oOf4 i .C |VڣO ~ II߉2t[z&r/$*TјNyl9WFg΢6viw* .WNcɺ<ݾȻt_q+JwRsf^W-$)KP2R_W+xOځ:~'TqH$k]1@s4dރNSpٓd3C1;t] E +Ydr äa{B#Y B7&gS!BҬpY&0xf)6ŠTh/`fD!rs漇BEǷ!ERs}m;meSs= +N ,E1WekA&YR]\$.K0ns\O)Z=_32{Tn%-CEԜG9U) !v+ұL7rȫ=ƭs?gZ%6ذz$}=ǰytÁn [-p%oR1;nDVq -ܙX͡ߕY6=]=i9ƾz~jʯ,Yރ+#spx]){+sg,bNgUu;E`)ؐf?P⋮F=G2{VՍ'JY d2ALZGHj\PXJztxFݣ1bs1[NW;)gpA26q9@\ud ި#)s%r0[$DcWs}Hw̼nɬbS澣%VjĻ`cF.m妮iQxoVl8wZZܣ#ؽ06@r \,C'feL!cڣ@?\xnXG[p|CL8&t#Y=* 'lq H'}?σ<2`emO-59raOT&NhoT>NΎ[5%=Ժ>IŪ_gjdP;#"$=ڭF'<֭Z-XSm:S.)-M#@o`* 7 {ߙApiE:(Ǐ/y8>l!VzBW,$jURz0k8ӒZwnXEaE: `bWtM_ڵIuya + Z͠p>*u{/}-|nf|O4aG.BBPtӸQ-7EeAUJe+f0HmrIKԠ0 +N~t+݂ÏsU 4hf9rw,uZI''cJV4'߷5c:l +?з >ntɇH&_:KNP nq6wF=~qpI|Trv:C'[8}Esb:&mzUq,0V5\YB^d -53ji,K+BͧxVafA4ץPO޽DZӹQ>jD) x]P +6#eLVÚߥǁnߡo޷}{8kyQ ;,3g7q_^b~Ɵ~7s=VGyEiW&1wƉ~ݛz=υ>B)')_WGz_ 'W~HZ;8(_5 kJ?Ęlf{^Li[8hņuvgnF )9;tp&fҺ;yN!pcdKn9l+V2eG EiGBe*)_EV" I1y:%T^gEn!O7^5[[~- 40]b HC&+t)-eb01E.e[j'Z hktv3%)X&fo[JB#dllW1a֒6\/MOa>xbBo@SpXE)ΊU +`F/Bm4L}vf!9 U;#=yCcGM$ Kh[MT|s\:q +@iHMt?CA&\hm"ӦtL&›&C(|Yn\G#);5HqxuQWbG4XB+wP 9:T9YwSF`hk\hIۜeuXUӚ}xFjVnR>mߋȸ}-XXL") fwyc!Qo50ҭgJ"؅$KE pEd -#"9IVrg,[^2r0A6GI -/͉7Ϛ Vx|c R'cr2yFN#v!&f_X1MOlW#߀9Zp< #R(jHo GÒ* -u/Nj`|YHڿp& -g6ζ!7B~Cq d٢TQ֌+IkU?uG(Qե^d/-Z C/Z]LHvZqk3r#Nv,"~`ǐBlX뉬+ر}MRM7 ۉɾkӓnnK_v?͸*}DNueҩtFޖiuL&-Hm-CakS'Jt2E~dLShbذLv(r&SD|sf*i]}S@0w4)ڥ9Zn+*mdO8/@U8l4\Wb?P1b>!హw54V'%af OA~GuvYE<> JRbݒƢ$%|sAЄ㳛k04 -vgGK.mg;heI))g -d-Mf0o5 M3 =3c"K07AP:pRI~7x>#Pa@6aOdF7+t>&o'RY,g肒Eݛs`gqXdLOqү,8P^ExS뜤VCq*u}t% 4wu5dRqnEi~=}k4O:*uzY® eL1NFTnJ4TZ)lg`: 306) KDs*h'-dY Bnnp NA|xQ4LrWuά yVfT&N-E0c,lzt#YUy*@AQB -n6d\X)}^BU@w#Nнa>]wZi&=Ib7*&}Z뎢՜)mr努S-|^'RA $lu`'T twHλqdG1dӃҷuq9F+ 8=PXf}Ns6W~E3lcl* -G+t$24_KٴkJ G;;ѤwVҽ(J4  s!d0=1X`'.'q!%mԁK+cF+ Z#flQf5]I'zNu#*VT"NaAUMO^/`WvhsVj^`FY=)7WQGײϘTHs0-𩧹1z_Ao!,o'EyJl5t}fxU=.,.6T_zWx`Hs{2g7O5v3ڬD))فx5GC-T@ -`p.0@ku,^cN>$$eYY\hIEW:>['Z1H~sR~0@+dGӣ8 -lOv5f8A=xd-8;ug'Q+ `ۜjl2q q 1@) -Uۋy0~'H -Hk6t:O]>:p8bByPk%Gf2JIW9Iw;폀"`P+ۼTB\")ؖX%FpΘs׸RTMcB V곮gdO.Y*& -1b{i62Q u=\y5>W.eD *AIڐt lM;֧쿃zZVv渐2vCJlG=yd$|wr`4 ZOMw'+U`Kwvze7/‡%W0.]c_CЉ挡[WH>Iu 6N %p{5LT_'1`E;bSN=phX(uz1sDb-1O#fTP+_H͕gDf(}je`A.`Oaےwdm\C%DM_G!oKA0C)o -o ­P7c#}nD ?7`)ޘXSa<òzm XhfYJ[/ h' بA_ (c猞-K)7-]bt.42ݩFl"asGT\+" -y"jy4T6nzdGEK 5؎avs,,-K]Ù#ֻ7 +-6oux62V5ma5/H7l%t3S闽7[w-Awe쉱P"c{|67Yg0Ax8|I!"EKB-7銘A, *n*3!C E\BJ] I\e'yoxGδ[A% -F6ffIEDBUM`&Xqpj4kY1Nt1"ѭnck|;wIO.[/e&F;qVaw1Xr(O;]!TQ9]5Ӎ!綯lv^v9 8PS`3}Py|#ѭYT0(T`N;xBX3$CR-db;NXЄC~i?sh:`Ou¾pB'2]ʚi@OopsQ4̱c:0Ƞ\kfheɢbTo'9 -x}Ƒ"TnsG|bm9E|I2}H.1a8ᏻU W]MRws?^)[]uD:;sy) |8TW]MPMs -vf'p&: >Tq]$T -%FiH7J Aw>;+B0wmn]w{v!;;$d|/<~`o&rmYbx|8ɔAnti>E):PDF3]E50{ #ZfVc-td9u-^5\A=>ZFKi^F`f3V|J&Mst /bw̌G I -u= ''ejƲ] 7@ntX;߫x)t4mtmGEuR?t;\U0No7Йw͈-,0t Z3|X&4/p:7Le|A G? y+3H VV ]\Rj5$)泺u2;Y0;̋H )x>m:(Y]Ulf˗M^?"Q -Fpjz;3g)( "z\!qX@Fه&iKWՒPmGiY9tuYWe)f;'֋2 Ʋ3sg@̒D|C -ǂ %x飪V!B; qȝwPz,n}cQRߐR`KuS9}D\KДlMQqA`$] 5%.*JiE5ձ9}﹡XiSod%9!6&`BJaӶ9!<: Kf=h\(jB$R -RB~d`.VMh"( -4k?6Ea+9H؝W0\!Qbi/!izxIl҃^6C*LoFJvs  } V+{^?c -CE0&.=Dq2B^-\{*Ξgږ(p@ז1mJO`B]Ɏq"}b.1I 1gr-FKs5A"kha0=[lѧL4>!7,~Ì :romGYe/47bk MJ57 wUMwS~8Re|gp9~-lv0;/,DI Lnmx) eηMJZSM48apӅ E0O#mv0Υ7 Rlj-YJ@XFl% mc|!v9[5JT2dy&jѴ/@3볏Y|oTW -fg|P.@ #3HƂ4~򸐏nT.Y{V߼/نq@)I_Iʐ@i/TL#GZhT'r<&ȥݠ \-AiapBpH ѐ WEv׉W%#c~Bh3WF=\D -H`KMw[}I$ߠ+|@;Viz4 FrƧRVH]P^3-j4#ʈ)aGo;MZ+֡7}Wc^%mmSmGȘLf#X)!5Nʋ;_ 0t3F DAN HB??2WrDOϷ FAJ*+ "a&x%ٲ3e#^NKT+cO4-gtJ $4(|zSYyAw q%}*Lχ,U 4XZ΁MМ~&Q<%b^H)B܁$w~TĨp%dveW8I8? P "͋t VX8>{: r ];r+%SP<h,UFFBhu{27v>zMnIP> #R(z;Y -m/(}̩09j&r@8d]cOdME6G79U6e,4 .vwrVN8tm@r;_q2Ⱥ:{2@X`O/&Bg~gj+Q ;_{8dP<݇Bn<;#m^sOs@ãlҥS\^̾$O眑l=_`֙ Gbc,Aa]}9̔QC0dKBgux~ҡyAel7['A,d(!0,ԫ9;S)"aҡ #;sԯ`:s 7JcI~@_~g/R$S/p.'=!|e3'c<F81~c,ZD />::TC&p Z`ikاz -5ƌ{E+#~BVQΗ̠Ku?Rg1׍pɺopתj.zM8%lKH*ߧjDD65uSԤƔb \%/raChgjƽIݦGHh # ycw~;dN҄ɑ(a7ٽ!v1SN)ӒsI&t'|$f©;cKxD=w,{W:awJ@+\eP)u-_70[*zq -ʲ7E<ۍZi27NaZV*&0_J/Dv:vt-H۫}L%? λ2W*Bx_ -:5*W4QZIG:;-\pYt6ZЯPj$c@mʙTcwHeSq Xdp]f4Kw3b{FY v - 6(4ߌ*NiR04 -{C\lI\(hj2K,mqu -$R|\?o>0imBt^zl }ҡL e.b2VF*'}&R(kK:9_à|dS@Aj"U׷ı8*rP钴G`_FvYi.苀׊ 7IʖpB}D}Q4U -^ȃbSgwqW6^:rD]yl*Z̯@i&#B E\sRUQHQrё};T$CtvZVhQ?`e^8A:h -AA}qaLj9rxA#VGEzE(3QDz)ACDpđe 7d`M 1(GMbQHQtXz,w6cE\(E|9,GcO[,dZru+KʢL6i~LJ~d"Cـ<آnL=by|;$vCs C-=*0 pPו &yfM4ePF_٦b1YrnԶ>d> 9*bd2nD4,OimWAXv j=dm3.o٦haohhdrZdhr$/TTkiR|CRSZz"(.3ƙN.p { -|gR>=Փ:f?Aya`y@ XfAUN; -WeQ(^g`0Jro[mStcVwu^#3Y%/kc20RPnAfzS 0@QƧzcJ} L~pתa XSSwM5 ODa1,gf|o^bq1EKg#BavY -0%c;alMS z ɺhxÊ:ԝ6$.>|W~39V}u.Yo $u6.gj#ӆj-C=/L\uTDjӃF%S "g[\ncl?&'w.+*D[hZ.EEVkLQo&4K-`eSiOAboY nzIL[,Jؕ:fHWOb4IaLE2VE*z⵬4\ GRX. 08-'OfDFiZ(Y?Wiȓ\Sy 8q6,Ex! ckSԾ">%_Cώo -vK?d34)y=C4qE޹f7OS -&ËX ai'&._Z0$®Xwpt[ -F5+pO5}E5/(3&"Ds1җ C@3o7oJr@oKpRc{ T(YeĬlOcel ,&m Bրa}^ӻdlLK].OaW&Rʹ7|Ս5m͆gV^`gt(*AY.eqdYWP x0.`>Ph3A=QP_lh*iH}gzoWW' A<=qf":,,j }PAoEO3;=٦>_Keᣱc~uE>t:~즟o`0M!(9%B&Y<CPbƋ4- Bgyϒ--Jf+pfPqH lƞ(ܖX -݅IAHGmscsX~9Y?DJ<P:ze93:5jZZm!f9,pjpqşhWʅL^ᵈ baDf#%w`j0#Gmhܖ)/AC% %i >X/ʑC]no ɛ!۔S%3m GbsZ"w]w@kCozO]$Ba!BzfKrIe( #O95 -~olC{Džq=ʠy9Bܻ,aJËX! u, -oaz(D\ɳl9mxӋ - 2%$Pu -lTԊ!vg])@.7Zok+QYzF #F&` >"&Q)*:ڵJſr%Sc9d n^ܙSZ;O).G6g[%6vǴD $:9㻭rax.4ݚ|p@`XE_;2n5֍T?y+Ld8Kt%螏JgtQEҟM.#jO㎨29HQ?QCgr;΋rc lT:c}Ӂ܎:tqscx*`\F5h{G94jJ%]ъ~SEdab`pfTהh -L#ۉ1ihJV9Lx-Q|Dm׌ D|K]IF ֪>X2}݁"xv봦^#pe2<-iRL 6R$x #/`J -Giq5fptԒ5xSND{ SXuipıxT<I`XwLU7pFą{IMp; ^t"k>M/} >0smYfV٩&"vcq2gYt4xCBE@P jIw96*Z7 -nw4Nt/`_2ٜ¬O:wcspMLw+E0'^~WL{5Daff$7Y,& Mpj/H* eTV޳|s%`w4Y+H<9:xo=f!?#'+պjt ͔ω pVuɈ*ÙxOk愡 -߽Fv1V bJ5!Gn.~ ╂aM2/nPmA1[vNA;EYq#z<n-EΕJB|r20ʐϋ_ ,Cg-7/ &ɤO9X$BkA0(D aYi 'bB[&^m{TXEͫ5$0C0 -:F`wA= r-Uϯhbk:A־}-0BRd:駓R>.owENCx>R-?^ut8jk) JELaVLbL.~P]Ւ3~X'Rw +Օ಴RG֘'w|n6 x)?_ͤi 88pvYC*B$ɼ|b憼?y\5.{:jiT6Mh{{[g9DSk4aĨ8%6%o6dFڼT"XGUAcM tM7ЖwND+f,Җyi)@.5l6=ƌIABn'PuRrHXUc_K)P+#Z%Ҽ~:Q,riBYFyx΍eฌN"2az6|M -5R۾JIwhya $?AT%3sާ}r=n0]̧ԖlS A¢Z:V^sQf<-T eV^=>V.{աűO(V"]j6u`1੏$d3L؝YWEW&tCpJ/, K2jrNo:נOt29a-Gm -胬U x,SLwR=RMh߳r]Ċ?*jc{-FzlMolb,7Q(2SSk6)5]$T:, ,p5]k#MN Kz&8jporY{.& }1@}EG:G_C*Iy,jۣ褘&>*!ϧvFD:@p(SKq4noz(r 8' 騠%*@QE[zz)z0QYreBϏ gn -ユ5 ݳ()Lr -񇞧{c/!p2w{zwrwm~- оҋ2h1&K|fV곭~<FbTb8`ÛNk`=`ѽYRJmȡÆ]=0.QC"Nsm 6vU{'g'_+ĜVOVM۫G%S7nIǙi`m\"ۛ眀)Dv36I=Q 46L?΋+` ؆-h=q᥹R"gbX:W A~:8ᏺ@XIzUQ,^ٝ!6 (;Ssj|[֛"۵~ݸC<~qh7[.F&S @#K=$;>AG/#;bΔ+RVY 5w'X+'4Rs Fҩ\u.@J?b߷£߯f"q#T/_p\v3y"&EXϗ){|'*i^^X QNgЙ\( !"ESl _ =$I/=93%ةQ%t zD{r.BYQaN#)Z{\3jρe1('VɉX{.a$C&}%{}C[R~WN04# Yu%|Ԏ!KB -b/foq-AMv7X)L˥$KÁM'' tQ8'o S/- -@/޴igjpT"v|%6q)-gd;;^vv7GK(\(\hkjj)*1je,V - -=PRHaт;t叟0 caP>^?1>jgUȶ;^zzRuwwpߧq#UU<6Nf.U

&5;MOy%3Xա3StIY:in{JR6ܷ4LߗyJ4iaDNUCd4dH4g ArlQ B! QVRr)f)1"MӴn| _YQ(33)3!Da~5TLDTT2nXvSG֨k`kXaUvGo˘} S/#U哫0/@Md|?BwM B_yo]3?635@gR P!s ; "yE{Vp  tuW=Þ!g8ϲ!B 'iwI fv{8O 9%+@'uS6,M( Oiv61 G"/\>*KeZe^=BYUKoBOm2{{n;=jsCLW^U)T(!es:\Ѹ0Wnc":vF3iƊwV$=qKzX9K:R!D -<?uR!sJG(C)e өkN VL6md_g"!8hR4J\yJ-#c'ỴD[BʙcFxlRrW,#1))u.bl Os=#\5ng 1=pBϩtu?X0هQ@A2զ1D'VթEGȭ!gAD褐Ug܏9p=c+`ѫJAȞpJ'8ӇY۔N`c 4.6)S.EC frA4Ԥ)#AtɈ<Y:*bPppǩN$^%VVT""B6]ޞ8uQVS,hU$/4"UH<'S%,R!vM]qص_qb#$ aIgLeX0<G⁏ "xD8(004 -`H@P `d(pv@de!|D69taـR]|4>NymZ.z`FqZ*: rǩH$"k <"b͈i p(8׃ x M6 xM[s@vt>2!;n?@2\%i-UU^h';rVdH$uL93+޾sATܕ% GÐdi# uA$cQVgpl9Vvau)UKGs!J΍ٛ.rZQl$I>dHf|[jieG5o",ɺYkkowse"˘ѷɝ_d$ifDt9*RUu&6Z*q$WlXYxt"~*SH$$׋nAaPW 紐o/IzF+M:͑Xy94SDuf{Ot$%chf -C0p< ¡(#Yzp8F6$4R1 1 -@n|ɛyaЙ ֪.0v'g,PK1 1I= -*lYUe)PmЉe -q>Se%rP9ҧG_osŊb,onCzOqbEBO-%ц;a~V0UK:L ɚ>˩ϖƱF[u._'B|36 nC,"^-]ME:Gtľp^wۄSWPQ` -U=Ң/ C񎎍yBg$uYr{/z2sv);SYNrA!];1"L(4 9R`*N)N ! -,^MrRG>`[a0Ŗ2 Gq2:R!jӆʏԮe&=Qz\t(4`S:V`d,&r^zYuTp9*?Dxzdk7GS|SZ9zĶ w#rE2c\Y Ky!4& -Y)l0%зzasVqHy$.ݠB{g?yU ᑽy;QV.fƥ_-eSͥ.)d>"2٩|R' H͐+GgG6;>\[ LΡn]PÚp E'JcaѶw[@ ..Y n~5l>s1e)W.F[d4ށY25HF,ol`HyCn N=cSVȐ<'β><7ǟ,NlBsy7 A?R>)niÜj-h.Rر 2~@+Vؼhrp@a+@oE`(`Es -r3[dqe!܋(BO Cdk9ů]b.\-%lnEheޗ:nRSֺ_)3`A y^ޔ n3k52 XPf~jN]cMf]u3LnjCTb|;,[< j!dzYŵ'$fPdDY?eqBv\K;` BTN,R_LbW"cUv]M(~8=B&8P!ЈOKB6v2&-V>l j#.)?Y -n5ƒ ~{-8 ,41nS[j1D$۟H+@9g"uOmŘ`KWeq%-hI?x daQb$_z+QPTgE(vE_Ճhax_|lyVXuZ$˅c(gA(&w 7ݢ:$~xNǴƩa^i۸\l>_.:#Y4DrƄ$ B -:Ss߄jDH.ÏCw[I(M*ޤ&_(IDsݍU -gR㐁.Дf.>?w#GxC(E_ \MnJrknv+?"R^J@@/=E9+"Æ䩤/rZH,[3Qx5 JiN8ҩ~}6@nzz؝3-h  ]|*]$M/i殺Q=Ez -Tk/RuU[4|};oAYI RM4xYv%T7.&2):)%0t8 -pbLP2@wp;2(>bdn|  c Xu]T~6>;FLSb -)JS 3N ܿ)(4ȡ-QDpo`9V{U m.C 2Nab-bsʀ 2q.3"FLC>gjҞmlA 3pǻ,F9~eSbpGn\ˢq0Jm?J mO??6=kGq"…qAMG?"v?(ګ$XLgj:XX^cKN>stream -[E$lW0ͣm5q>fw͓y6_]1zMi6jJ j}սRXZ'أMȼA,-yA%0/C!ו[%31#zm*O,Ffd~ڱ,aJ qpWM|R?D3h# qbVhE,?aC[ߘ5BJ<HF죨3.8 '5b1]nCͤߦ=T(G_Z7d;m1t0ǒwNvgOP 6sA=rm ńX?PL8`_YJ>YwfH6jN8йy-r^ᩊ)Dt-myL4a_6SGjt%RT(ly.\Z*qxW4Jp!RB%b۬pWոn -Lmh:dֿs\5+}$KKR>r MAbDk~FoOi!!^ȳ;ĖtiW #.7PoN~$-ۢ?͖joV,@趤9X6N셦c%ee#7Q¨K2pB"$3]RŘ%0,4\>ĦUS=CMM=&X&*>Ɋ9B9-(CGkZi1p,q0+G)~,JgG3+nyFpp`}6@D}nǼr HeaGaJ[Ts+3Q8oFr3@~bjҙcQZ xUR>02]^uAkCSfT\~IH)~AHCpoOj0?GmEXpv -µ{9)F#러L~ad3$S{9>cmu>`H8ܺK ?WWVbE?6x`<X(^*vP0 ibOY#03[FdXmAFYTМH/XU7/L>==kZ ˱ˎu9f$08$Hd!!7"kPrgJ犄Fj 'cEu -ظ]r1ͤPݎIb0Q?]HQ:b|;"sQyʰݤ =O8 r m/ئmy[N[4g <ȳ3hmY%u}g> A揽kD\h* 4><›2UlX|cHQoރ %Dvh -jJ' 1#bz,懈öB`O#7\ - ?@<0w̻;l!d`B*B%N'*$vF>6gT^%p@ ׁgz䫛5{3~TN31-iĐ>.[JJ/j!5I$dI?Jzu|ܛ -xuo& ;? PR5{^UE";yFOb>Yi!6]y,KVSY uX5)F-]FmT[.$kh=O.gKwB2b QR> VTl;F]?!bh?'w*~sDX@Ґ_|S<3E9PbjCXJǐ1/x$Bx7zݑs.^/ Vz6KP.lS -&Qח[ h#>nw! _,E1߁<$*C~A+V)ӆlBzZIXAH#S~[!.j1Ug V^z4"M<4u꠫r6{+DPQ#ۀZ]T c|Po嬄8DI˱by߳vD\Seb -T{Mm4v8Sљ0LV7 -eQC&;W1egy[BR_ }Gؓ^(T#N.D@\ZzU񀚠EI+澲)=w&A -9$+^{S a:MD92Љ-A)xxo!FH;-kcsno^ItθClJ'pAX%Di:`F)"qn]@j/Zs9tU&,RQ#A|v?~C- ɂ3YvwUxa|B>xe0>))2]? -[M_J2dyD]JkIxVhDNDM1ܚKtq -@;Ӊ+rZ M䯓|W{V%{<bSk '.م8jmǐ[t_zsfArUVBÄ<`qL!t\azܝ hc>?0T&%!oZFRcp9ZRix!(F(>7!)"1cZ)8}|לٵ*dXw,{>OQK{T=pmʧe,kZ}uy -i6XAJ6YuX2E ~- 1y`oW_V֨5`[3Gų =ZrWy9;ny8E&GG0.6тkzpH t>ETs`qӢ2Uͪ;$R.Hq(>V+ ZyS9dAE?PD ;x2k Ć1 -p|_]_ 67D 1śEvy;%O% ACKG>=S~NE2v51XЀߡ(<mZnxvj-ԫU 9CyvmWUT7Wi ncyk"Ttd`QY` s X<% э"TufzkxǥMמRG@$dQ $-*6ZD4f$3|g5lzMS"Dǖa)$;a:d8AÏ3OYkH+fB/ֽ7ʘg!*ϐ -l6EA^"q/$}4+]uX i0}iup1Co,ri_ -yM'XG DBJRS6TInCW@ - -N/Շ.JϭޣxWp{KؼNe -ʡ͑a!yKIJ -EjF7t?rSTKļ\[ێl1gR A?X :xwuPa.bcN"K&4"9ٟa^BZ@0[(cv@ICA~g:Ѫnz)Acp%<ۓJ>}`E{CuwmAdk1aDzjV4dQ2eT{vDekT'-%Ku,Q -c`#ЅA>l:~7-mD1=RkUdmOĻSV47Ws@X(%vf7V+N=LfY$*?@i驠6?<{@+~MlW& Ge/eAʅOdZto 3v5+Gn`9d -ï$sٰ2rS-{@KzOs׬F6Ͼ(3QkFgaݽE~^)CfĆ'lgHe|pi;U@rU%"@D F&B Bo"Шͽu/E"*Pn ½zBd5_T-TqQ5eQƼRJ#aϕ$ bU)YVƍ`9%}O?hgF!nLji`IMﺞg{|g sp|B\/>( Ψ -[fakډwnR!;XXa.* ʘPR<9]M8Hk3Nhݨ2sK\*aIqj*טUy@fLj9aL n`ь^Aߢp'fe+ _AZ+M$ꍾ=|H+뜴*:6靂 o4i)eƱg_ks} -$0 qCdl!gfքXaK`yp.mT[TspdT[TF:RMS)^}^V!}k*XXSJI@oA֐u,pXOاఞDX)2HB-X25bYXLf٠ -*?2TbOM ,aQ^kAND^ 8E3 --_Y6լLiioʖݙ1X탶EI62zA<| r)˖zH Iږ,',:nI8i'_]!4}ȧD.=J(;a1d5h_8rpnB6փJ%3E[1[v<#b$+!42!tINN~kފ(wOV `(CЈ٥* Ơܮ~;r"-Y`xLw |vCܑ>|(QX]%*H>p忁TZ 2$c -) 脳D1t6ݝ_=!D|:nN$.R#1TNDI*WX%pNQT,PF܃3*$qjNg>pQ"+VHcAXēp#J Db:S w^!'osqyM5!BWŁ<<ܦTj>6ssox\a{twQ5u`92?ԑܽʘY]6ct8k`鶖w8NEöuS\E,l \;w#$>2!̘~=VO`z5 {t0ݙv;N)YIWmzV-hB#Vy_dܼlf;{10tË# -k/vwHRĤ/GD< ղJݗ*lx4obB>΍!v>)}|,zTIe% C3*:2:2tLpEsqnw`+8`^:YixS$_&KufRːW*0CN\[^Uk"t$E5)W mHv=Vvȃsg6Ȫ/8%4ephyPe]E{Iq6V"c2d=}f O8nđtߐ90=&gbvp(]kx=]2J l[Kx q,(b(]Ɲ&dU+"ufThǖe䝏+-LѴsLT;s"f8nI9`? ݠi$_+!P:s#,[dǤt:߇ -/@z&Xg]#:Tiq/|LM =hu6jDyǽ>d4+)_0VH6GxVa>y!,f|$ f>|%' %c}l,wdAeKsuŔ᭡ƔB󃎵 8n#|!X$[gN#6dcWEZU>d/.c3_ܐo |y/ߨD405,֚ *PobS2/gqJdxJ, l/H ]!Tpn@wc:O>yΤ%Nn¿ܰo9҂"C]Iih^EsV@!{p+d[hY]6*P_.OUhIFsQ,&RD˄@D pfU"bi":TAE g!DMQc(OC?B uJ=wQp ܉iѼ[s/'q{YLB1*E/z1֮䃔`hvvSтjd_`=&)؟g zMҟ{%Кl~sn-u\|ulɜyMޚz6N6J홸*(=P-+WWgksjؠjP79~L7#K L?Fǹz'JDjڱlXw}{Fօ^* P:0*: dB*C8oNۿN 6dD%ˇ0(R6YnsWsӶ4ZHO1c7&XUgaM8PX K=DQ@>Q@a#x3b{ë7(1+ghbF..]Htt/U! - nmc%jw4*b^* F:3B}=MI =pZTNHpI?M3"\ |QGae3@ RE q`뒨2Z)櫹CY.[pPNoW,&KGm>[!e|) I:I(\S+ܑ3(hTjHY12j8"׌S8S+F,%jA ɝ2`JF >A"uP'!\.hO4..VHXxWѽl2l"љҏ$֥rO* rprSXt?cgz)ɼLAo. -A`دxc\,AAT@]epP8{nki /c b9սj=۪bLl*nwF!(4+% C[*)1^`%>6.XL?%SiֆCDZOu^Q,#ָlǢj$U(xG'? &r_M0qi4kŌt^ʎ?tKF A/ J=f A٩rkU}k#J)9|j@!LŽ#WYyVO|uJ4s7ԄrWYiۏdgwY9s^)MM/m蛃Hi6U1y$cux[*(u.\_7"[:+ߏ9?1Dj -5uX3{SgN ->:Ƒ$tIm) "Hs FԂr9#_e^AEzf$FD~J(mIEMy?r+eX3Ò6gr1g$֯Ǹ6 J9-?R3ӫPh¶"b>OIn'mϼ<3VRPvP/LN/" 7) ^P`x^$ѳ|}F.=s.ϳ6]WmG(gmG\b5^vIѶUrpˤEw7 #Dcp%vWWP>k"1HU3W 1xAɺV4nr[ϝvY#5!F{7Ƴ H,wQՋFZ[wfC[IwMc~d~7+]U 9!M^#zE\![?jY}X%,:GWhTap<&d,=H@UFN/}>=e9{C,Y{F^ A `};Ô,z}_8H4C @q"LZ3D`LYV(;NZꙶ/EDfIN,5םQ]QwH#;3 N_O>;vH }tC8 }xRVsz`>x7F$&؝&w>ᬧΪgި#&r޿XQ0P,"hT1EgՉԪsJ eKh'm87M$Xm\vcQs- "9"eK4(ײNad0܅#c{@@냦e!ss",all*:qTո!s%7Q'LjF/m'Y;6)q5Se,۰L;Ʌ%KtTp^ѿ5s&,n 4>08a$m}u[?!H -3&㸪APpVUeR!SUQHэGdPۀ : -9E*"K*@:تlcdiBЈ] 5qhP\2M0`#T4tPA- "}r׊0c"y*LPH@DdE9u^S"W}}.jՀͱCȃqb#䀟׎I\UUpW3|±( CLPSRɈKsȁɟ!OB"^Yӂ.iT&:]agU ,4ڌbөGsPK?6g1t Ef.h8C,XɉYha ^¹DE3EԢATžҴ+`e&]zЪ$NpI~#"(L`tȽ# xk_"a<5D!O"H @0AH -(@A(3ٚP)r3 TJXI4BXbCB̄a | -e9 l`^gTP%Vb~RzJ)`U -ZK  9J[A3(^5ejBr4(TҨZ€`h]aQ C#5AL9)J2*ceF~V ))dH{M$4DJz?S2j*%ȟAGGJIh$%C-r6舜dAՆFH-Q@<$!CCѯࡓ:@"OA62⠊bPPPPPPPPPPPTTTTPH0JȻprE = @h#KT汬^>_閐1pMT(>CƠ'UyH=Tţ7 nWS2HԢCxk]΃p3k+؆VĘP@+JNPF"ޕ4&3?餙W7Q({Uv+U5a Kv3UE6`~xⳘkrD,jf*|BzX*x*C! [!&ߡ |PQSRT)~deL= 9rXA_b+{BP-<\RlDN4c Y&̌K *#al:M条ސE k؇Y"GخF_%aVRsL####3CCC㙙5!L'&&x< LXd8 <*89K --LGP$YTTDXD~ ;k;S9ф|j+ -S|آ/:hbN$ /& b -)9 -/HOJbHA2:ϖxJJgΖ%MR -*EK} GLbSyQPH1t)/nE%)#AC逦T* -ǺY*k?Se8l%֢fd05.LLefUWM2>HG `PC$K p~ - -AI֤ [FV,|2$d5/J;$ -ӀjZNNԕ  ^H`w( -5R%EԙQP T -4$RATET}/U-V&Y\MzTUH K 5 ;RXH`\U &" 811KF5,

(QCQ7QD) -t> jh3AUKhU51ŐJilP_7R(6E( B3v&x%t#S"eSߧ-I<RCGZE &q*^T "cDvhc"GC=' y?Bl?Nww JhU(KUWWVMZpVdDKGУ"oOюRˮze2Ҹ x! O K]>. զ .IEzl -^P؋|:#%x"8Z?jW Sý(f')qǶ 1F 4czY cѱ㦕>oW wĹJb-2.@7u heQC,N4hР 3>;\؀ V717ZQj6eH06`cwKɁRAo_5" zx(BO%,rFN9<*r^*^$-K:Fi ?%!mW6 ū0d;ߍGwՎk# R裼X):\ȥq!q؎='fWu1+.p8f~HZ9@lMތۇ +qM BXG!“K 9D{z%RI!I1p_/Nf*P1mab'e䪆bqshȢ +FIr'[[O$ `7SK:ĕGRZiztv%zv&eH&FU_+EF[YA϶V|XܓC>3hDN<_z!6pokƌ&6o``zu+SsA4\z1΅v(a#ý9[b!Ź#p<֪1c)BLCZт"U 4XJx Y)mŸ_D\_6@J)0>-+FO<=z̔DMﻲ<6$daӣj%C" ϛӟ}vQXBkppFS,hjYKswv!*#vt `e(\;@ä5QxQdΏ&J*oS5ڽR  "|Ah /:F! X?{qwNNx&' nRbȌ@>xU"{ `:#FpjpfŜ;PaFısc^`A9pW +,P׸F|:`T&)&K_#} \on"P&D0>֌2IH7|~yxx'ְ.ڄ6M!釆s~i\yesI{){nzJ Vt>"ۢ<{.B!s23.Qm=Uk/H:)i^!561fU;֜&^0g ZЌvڑ޿H NƩs4`A%4X 6Ճ5YMST` <\s憈j pARӱZ. )5ȚR4urMopoD!TXݑkd]ZCAaySsRg|CD@^Yt +`.N.,~*7-@]Ff @s*d#i94,kqӖi3ۗ͠hNKK95EHI[(h]*yz{YM K V5A28jf Q6['<7݊tw}fW`e#8E6.ʉ{ +9$NHf&WcVh/rƃx[Өpr5s!za3?.<Agù (-Qh:H梜zSVJmCܔ&vh_aGi +:;H#'OQ Ń"틉6wΑJWbL:6V]/kÕwWAMy.˭Fps{ ͗jN^mNu3x(Ww#Òԉ{ F7=Q͙y9谶ib^3Σ*nG-WXIX TrؗJzy60/;?TstMriZՇ!>i3sa c&9oΧ:CI'5Hgxm=ܣ9~Ʋ #yr{,-K=}$`Ud˹8SE|lB:珀]nti 2f0"m"rc|1DАrN ULћ cc e,>jd7EI-;%kUd OPG!h5x)U喗f7t*N=zgYE0(@Y驠7?RC+;~M ^V!Om@JOTІX?ji#(d <XϩO% 嵯,*e(:Ĺ̀!KxosׯF6OYfRVF6=K{ +B~3x]ri;UL jГ&ތH1 2xT ]UC}U%00։ +n&No#Ј /Fu/*Q(n Z`dr_T-T#qu5F?'c`U2Bbok${P̎]wI +/a77#w4f67n5dIw @3k X >exoatgڭK~f!-gÎ2Kv|+` (.vؖ+RX! IRMhjW3ذ̋i2c7W(YGQ: H(1yZ'w]N#'qW5];m Y,|re)ׇ2Uot"V.Y9iaO u +F ߼f=1sƆĽ^UHR'ƵM)x arDc)]icMPMQ^R%RƦX ݬ粆 [L YMɮI rz]ljT!#-W_ &=@!hn (فwb#QT#Wo2\##BYduS{@;qH;==&*Xxe +Hֵ/W]BGL)HP@`ơd3 fe-3pca GؒZV 3qAr %[;'z > Oi-S|oDhz'&&I? :"qhܡƌYx^D^<,=i]z( T[ttxS8;w(ƌTzZ@IBg# [{y+"Ex +{+l6BΖcT^21:dQ\5;_C_[7NjEq DYp 쥿JழpCǖهOc鷯XH8} z3#A.73$$Eq[>%ӂFz .upܶԽ&ǐ&u*ȷ)N" ,1\Es#a/~#0y@}qL3k'T!*)/of҄+s>n*oXR]a?ǰ8P-hA&_ s{=xkS +e`zJ͘]8JyF*NK 5 Vn9i>s\$ ۉjIkDXz4tMOt4$y#z]pV": gXm*Q%`cRqD]b],I$ts76F&6ÅiCכgcvAFZ9?1pV9vuD/wI#0[Fm\ػ># 3~n%k@ZNi ylus\ieS<םTaU(C tzjݟi cb zA<Ӕ6SLXḆ7t#x$N12pOr0aTC_S˥̟Ӕ.ؼauΰ_, ӞQm9q5G|%-ZQ *xjOa_!rz,&A f \&LZ^ed-Cw:U6&3_"pUgtCf񇗆{g[zM|U~Gledk͛=w3,oI\0u/-ӱHft 7ϻԢvs_MCWX I1%/evM1ptx$n+ 3`wQGVGKjyt*&r2vj@PNPPi%_zK^e0!}ei{)|h&(ٓ5fS8Wno㻱 Ìm 1Ju!Y^TIFO_cabvS3˜MM]eCKu8&_{BH KA9|!$KSM bw(-bԕ>doywCEykH~~]y +@/Dw䃁cCW;aj,5 7@Ϫ )O2@'żo+T`7q?wht9ǞĤO/oB,UŬUن;#C<4tC1;4N@37h/!مtx3il.?^.d9*E#{pӦH9 Of'l +/9E]򉈯 +ہfi͖3Uq9lKbAj;E=`V)# G5$R2w&Rj_ 4s"r{d SuMn d-WV?40Tb=|C~Kyi;$i8vn5;maU 瑒P.pVrqAH đo P5R6upG;5EE]`|7fc +LBoC@ϰIS'P>La)4u6(N1.[H6XM G2nwC&LWLZ;etatk59`(D;FO`C|Ga< L+cÜyZ1u 5w XI/u[hEJ7t77D )pwב9vgpJwɀW.6{=3'sЮxMTsUŞ#*"df/N*DF*!nf,zwz$ ֯j%/02|x`' oyU*LM3ۂr@uresrAdT3(O K43JT7PbPۚ]~MטjHV@(.`Wqa WXW/= "-^P~:gh'0?nL//"_BUB˪kPmQb s?iI ՗2aBUZOv*onrI "jRjcR⠥ObBʭ-׀1`6֘*WmS p_g3+X`S]S1uvɔ%A+&,o v6,* :}>Z$9$ãH-^Єr!h *P"^"ڄ|{Sv(dD ~)Z3B&T9Q3dJTA`p"eUH÷܊XdptXaE!&%mS.cj yO2 ɱW.ktITIU&dAX9ser /r\0^*Z(m)q4pUߙCK)cy(Z$w Y46dᬫk"/j[4A[N/xm6zާ KsAp]d局qJj+WM&8b.;&ZN0 a'0(_㠟$-E-q, 9*8V z",ā@lηhY kڦcdݣZf&ΔxoM/T\IYq<慣?\Kuh./1R Ip8JrfQ. " 뷊(M. +Ogn NW~%37EC ]fS駹F04a'AwNd|c /r!+8x]d/B,D ,3Ob3bkf}t0`yW1G1}P X !%R?UJAGU9h} +8F- +iUD0?9hDGĥyA/kE  @($ƋfUXK%zQ gETxQ\ʰw쳬{Kߜi=nӦo{x{bT Yޤi>L' ϗh3Vձ6~:'¡WTп3t$wH: i,lXʨir[:IќU"]n>HAٖtHgiQ:J];q@ ʶdz&ռ$Y\Lj9}ؘ?[{$NKLj2[-k>K/viXv納Od"2)trYC߸=wt'EgK) +XF}YԽ@k)dKGc&f$lȇB&{G;B8Ƀ)h5TO&5Eic DJ/x!3I)l}ubkR[1C.i:kZIV dMhE69l6  +D8} \U*P1 B26Y)`S 2 +<#;FKRT>DpP!ҥNh+-4J7^wdqzr˻RZ̈́@熟E$Ax=G`bM:E.']1cμ7l { -|[0|~"2M.;l^,5/|~y lwc{ Ǵ֨l$.E'}y( * pphڋ}2Wݾ˒!9t ˪3 +毂b'Y`)qo b؋#Bo=X S7=ӥHJYe<S+hVՋWE +:~P@u(JBޏlǟ lngDXb + \̀QGMH~DV" <-BDttpgjDYg2oظw"?ٟl"lA6<̅9r/kұ#/@/\(ƸGE7d|CL<$F| 5̧l@4:1E=?0* ?$+o"3.iў I2kL!g>3lxsJ]<\WvsI[VR:SzɩL@N, c<} +xMH?EhSTɫ$MEtϮi/P7Np1ښSnṘn-K&oN2肫XSFxU Cr +z,BGk@ +:t"^&tRw l40 `_oAY5gZ|<mf lыTH2(HK\reA(6E9B\c`)a& +ׂPRAP &hhS/-L"R< +Cu:(}ɐL t @@oaF +(@"9k e\%Qlq+&# `z 8@ '@I*xWrDvWLgyMl*0 +ܕnH >9d< 6KW(3k(UoZmNi*f3zFOѣ*xy^w?̆D|\j 2 +΁ԑ1eq̱+Fǧvg& O| `(C. +{Ip_Tz7Kj"s\.r\JJJJ.L_ 8bKCx9rЦX f]GC̩J"J( S"[K- ϔCX -g{3raBHL)@.̀FV22` +lED'*FnF %ACމH42kY2Ō}q&Q&v-0q1L@j{Q =N.Sij@؍IJ^J?O.ˁMDud*>m4Q"w9LdEKKķ3ЈZcOFz!Zhx ڄ!u@X a䌎HᩥjrbLxx t:NS(h!PT*JA-*ySF*m Ռ;U?:NQHI(+Yd'hy؏p_Uu^|!lĨ+cjbhƋ@%4wPVr|E1Kg|KbdB@f̦+xTM(i{F/ej:KURcED UVτ}V KBj009Ta% Fe;gà !pE4TQCf KEbuz/"78L߁smA`@6grs/;)JjP;NPéTpȴń(v(!٢SNU9:!a/҄/aGZy:@NP'd' P:p$bs@]Mh*Px؞)g 2&S?ڈpc&z]H*P=sl{^U!D:zTInvM7 v&67z̆f3S#aN1FXǞ'0h^HY,Gcg*L$mfJbBrIZ[H+ ðM-Tځtm9aRI(ٖQՄUPJ +j@P" E*u8,"xVz#N}F!c;OC#ʯFĠE/fڬS +gi>Mә)I",]Ph^ &].T혎hA-*dתBD2lRR"ƭaDDD*b2 "6tX=Q40!>MҬ.?Ԕ. !S43։Z'K-Ba$(,N ak*Y2 ~(̪8͋ +E"afyWtxrY*E35E:f/ +Ig|b\n1"4!m= 6 ktS+-O\+ʢī`헳+1{L/z)s+#xʟaf{%HZ(TE~bbȂL'[(eQO%:}B>=ᙠOHEȽ a'LCyMԆ< Ø)Jw$ &d"%K$N) .ic8|_zCIWP,(rMg6*t#W5š-UR=]ࡘ*HMPki~kj GX-9j&Dbi9iNש ^1@iQL͚$F!Sie ѪxA%B*bzA!]g˰J>ŔPJgQ~)\= 䵦DDʘTpDJ2 e],KL߉1bH. dĔS n@U}LIk5 uI)>[R[`(,h˾h3Y™У>N cM#JGDyDLI:AY@ PWQ%yDV#0LTD#=jdA&yԋfj@hyV* ZEs |QZVeB,2.(D\~F\РA +0RMD'08H f:{n +K 08FЄK $0ê |q&NbX 78-XQVTCG1Q&?PH)5Lт U؂PȓP +PJG +fڠk(J݂p%F{HbE Obh29yJ"sfEEtb.Lp (@ . x`.. x!@:T"0 @ T* -*\qT<-@ 0he@>#8XcVP/K0,uV -,~qSb)3I`R/+.LKdiRU 6.eyf^A)La ɤ `*D h!RANCsF~4f$:GT 1#ܛ+fQ2U. -DNDvߖQ34|`㮁LS( -IIbRϿYo<>EWK=Ѓ/yƖwcE)&'=sCӽτMT;F|Tn ƭC-8脳c]XkK¾W+7.\zQgkDfHǡ31BuuJE_HEƄS}vT#%J_:U8̅'^G]ԶN#_A=~nXN ,M7MmSbjq,0գ5c'Y8e1+x@(A34̂r8<+i)hQtɄFcE dbX@&E"t,4bP0&#) 00&Fh@U7{pLkD|X4$*'sہ%k}l-Å$9c4xRNBJ Tz@;otpn8Z!IO?M-K[4[G{r.W} =lqrs(yi?O= ze )JPWm31b\">oE@&SoƓ2F RV&sD)asOPGcUHߊк99jM|!~[>SZDpi5rXo@(1 eBx)uqB[M TĐe=1<^xȼ^D޴/毹fV,{vT"_o6҈݊k˺XAm:o!,(Ü:Z0cȸtm]ӧoG}43C#wfdq\LeY.K׎-Lo5=2;̈́́ 1pQyYN"' p?L֔NO`ަ 9q %+Y/_K5&t:x(:͍/F !F$A=˄OYIq0X>(PӈjҚ*Q]|I$mLߎ -i H(JɈtedot4HpD w ?*VS}b/)N²%U_@&> c*mo'oo'`ٗ u"3h0|F -㓹BEzZHR4iHtvkFC}!I1&UQ+";UdJDm}ωhͥSz zRj%Qˀ:?A2nDʋʤ Y_K椦Gy>4nY苣,nA,|.'O0E!轩_:^*B0Tx%e"Sg]FOƀ(k8 $R% -Mo*O͔ 2P^Tg.q,ȃn_GaGU]\WhA 6r_u9NrK -I 0964.mJinohN){h X}BYf? ^Rh(l ->1t7i; pݾs_gc99cs~S"C@0KД;1 ܀QG {.@ 3\LΚ']&ffy_&|9~[UA<%Fr6xm%Z9cx.A]񎣿 -Q9NJxH@+q~:Mǣ*<ؚ,AJj[ zn'f[{_a$@ ōk/Cp+|uC-=X;@񑦅gMdQp hZAHU@&BV%8Kh|b{S}։m £*[VN"yckP(%Om[BHRo?"Fv̵&_RU4*q׍/!o 4{A "'uStޥD>2iSu+"PT"L(RPgf0#ȚvuѕKBTyeQ1jzmlI=5qWOdm'(arKI'mE9e(ӹ\@yDUUpdw6T(-{$8V.uQ>3."9T;c埒sUe#gELn蚬GhnSluA"Ҩ, O2@o -{7}G3>5mp~njț+KTy-9rO.5 sgg AN0OO;a0PABYzl{մj$≏]WhA*j vpT5xslͥagA+I#+cF݃6QESp(2Q^ 7)'de= L Zddr|-Ls .@OY -0eaxbyք; b7}219ʁ$oܠ%z{86PNB0 P!:XanÅ{.!fEfo| .\Se0hQ\7J-#o7]BnrVȇ"Jų(ݖX1 8~ݟj-o -TKǘJ>uNvGHqVխbID -ѝ q;hp9 ~5'V7vx←S? fZ*qА|Рr"z3Uk~>j8d!IR?^D_=&A^Pďce8D1JF X\U3[HK@4T0b \MON}U cǩc\#fm -Qa}g!峤MV%ums‘VRAsk>Ut7VPo|!h!ܚkUJϨBF[AۣC=-4v0~v(b*0 zzE -(zp`[dQ{S{#jofXZoFĨ:83wf,"?InՙöB0W - Ep3$Ş۵\1"*S있w p|9V^,[Lv %$cAo7:է7v)h( H͖G|Cg92m`7ό:bQ6gLHܘrE4|D*C\Pb*Œ(w%wN5 q^گqJ7bq'Ow q@uK"}`tYiֻ-x7) !{Rɢz12lRNʨẗ́V/RԔ?_u\~ДBGFEzU=YoeziSNF zZ'z]g;} ?*g9!U߉r) CҴ8xt|j7/Qy" U/xg_JAFB ?KjI~^~,,G1Y2zJR`[GaN+ c7hL5C1B.%P\];jTN+sa2ޗhKiANGXdD)Qm69ai0W5.ĺ.md>VYO4 \n*䉜1&T^q$r5{?i߈"+k0y.}*]aHrJMc6K5Q j=4=F5Ӂ%m0N5^@Lx2;P\䌳9`5.ƭ u+'ڪ*|ׂ,4Mu~.%! MB~Z>o9qZI|AcB|`>(7ɸn$lֽSl_#d$& >^L -Jc:i ^@Vjk拏 o6cʧ 6Wԁ7:PKæ\L+i.*gՕWswgE@fDCtL:=€0%J&wu^FUڦ%AioBw]vэ.ṑ"zȅiPɧ8Pq9#qePdI=x@<"6LN* d dNʮ09Bc"ESg!QZx+TY]aƵ`n{yRi;--Sn{=pY -zE):$T`u81;gNΆ|$ѡ{= ;!n&XEk* 'u65V]q1) 2OF%5&C m o6V­O!-]X8mqۿ66`񻢻%C" VPwܗxGdhIWDBj ĄN? =d➄/N֧3Ns5^/HNbT9?d -eJ\=wqGG?|8 -Mg3Ĝ,XyCʫ -c d*)pYmī:}gXcka(<@1GhzjGJٗ"zޤz9Cׁ ZRs+ -:p1ocU;aO1\&(JBDAyFNvqr\SSˌ鯥HxH=Wԛ!\ŁmGЉrHymPH&z9}MΞ@aTz%FtK&ԉ$ʠ197ֱ3b!&J0&W*k /GV}N~Q˳8).*D5BXw'>PIYpŇV 2}bU"1'4_ުM4s;T> bdj:BJ0L7j=t=i~^U<$2PG<5>?u*ԸQ2]DM :OnpO=c . )mffs\H$/3Q~d4 [ 7;dLUJb{ jc->v,)HEa!/NqSEAC'"bZŒti 3@MI3rAoѥc񦾭 =fW c߽`83- &KTxGv(P[ȉ?K鬁slizIL< ︪SKar2<}꒕]ؙwrŭ錠 - O/cRЛ7[fqW*r֟DW,^ ּJ/!?XY Bs, LjB & -F& i\3UI#qt5a@'91QQ~jnbnhuPx}U_2 _ v.&`x膉Lx«n)vɫpnNjB -+LO|L] ] Jnf W#Msm5̽6ौm yV#ZmC$۳ b@ti564j u!-%}WȶnPհs!VK'Ql@j4] Fi f,Ks5">)qvT_Bo6T;VC*]9n]V+6 R V;\5QܥX`ۤ ,҆ (c5ѥAfR%Rnr88a8kІgVC6ؐՐ FejH4 Su5#5p ,^MNǮf^|54e՘iݠaM[8MRg杴j뮞}? 0QXq 4sY$>BjmbBZFsJIh0K+(q\h'eXmV"Aul#-3ɜق #>薇?${J~;bL`bٛFԣXԂ^sp[~f1F=462hY2#\X֍n+[,<]}y -#Oj< #c 0(Ip*l48Dfhmh.8}쑃4'eeď|݆ښc8K+zċ Um9ph$h-69a!jVodsJ9ys D0!M`PItAPj~a3-L.(k꒾B>@֊вRhk7\F -e镢j-qV<@zgzlYHTHɲZ\^sTYp -ЪG*h?@;`8L>r;ԅOℾiތJDCpEC:Eރ,Kr6!+)0zvIP̒ -W܉YZi0J~ͶRK}I! -]6tT8L aGЬ4ϐHHpQi}tJxυIM-^=]T>:nqrPv&`?8"m)ףӘ6Aw׊YYbN P8PfAVRv@:I2e>;|Hq- )C@s+$ %r^_pY/Nj@]XUNq(]{)b?LS2>׉ѧDdHp R$tvg}ͨ` :9yC͡-$|`L- -y^s\ pM4k  гbnE}?|J-Tt8 -Œ+>Df@8nĽXR"FˌG'4Qz>5d^ dDcOJȕI=r|+*֜*z Les]̥wk&jSl,1 '(Z aU)8!l{(~?v=4?r#)=cdrYXFݑXJDgW]I}+Wk i+m b!:dosc{żʴEשHx΀!.u6_spnѣA9hVVZ}H4E?seECd -Z'ˤHPO|H}TfnK$6ȵ3_iWdjG'.|X#O\oJI$4" m,NV*6KW@\␤Ŵ`|%)Iam0m1lUY73z~% fp9zQ]M/aXB5:Hp.8~ݧIb$.+ ip3\e>'g}oBڛ( mov[0M=H zSWRŤ\535=m'XJwc]IQ{\|u4ӛ_y#8?.Brj"lX -)g@h -$d$GL9mfRbi )0 -3=۶ .zA>w!ie[wS:RkJeu<7;o@ՍSwIq{1 >9R5qxt!8:gnF_a -;<%Y -3fia;HWjf[<`zNՂ -YYc.k=ҐhWjһ8!H@Is -TFqXӱV9 -u4z WL*P3"[\ĩwcGD8?yb (+Ac#uA$?2P ҇r`8i NҨC /}@U/њ"┗~#to3 f#G`c]rDh)] h~!-LҨ`/gD`p3E kQ"vd@LM*XԩO7'vĶݔ+^s ߥ 9x!K}zOa/vyQ8ī6T%Y4#5l_ ylt[.Rj|6s嵡;PԨ-˥f':uK-=:HîNT -cz&1UzwLD1 -5RIFz2W8o I&g A6RA٣j`vO|E7/k7{?A *eAw;`D 0Dn'&pA. rƀʑ㣤:S4FI1l nYkf= NzMg`ƙmˉgMf - щu;!)`Eu: -SeV5P0)" *r &K6FҘn:RcKX gGr.vd:%6Ie5Dڜ -}!ehjL`J![5CAVԩ6@ͨG.ТUo -zd+1CB(47Wy 4|/0X/Ki `澐gժRJ )See^\󛹷[Hæf⋦68ͰZ ; ه ДuR 鄎 ./4Bڲʢ.=$fKDJeΊ4+grƢIp׳$TdpCbi|Y[{T=]E-c)TP&!3bi^o۵!OHyy-1$Zc\? rT7OvH7p|<. iY?݁q؟ ;U#nZ/ʗ7Y\Eڠ_/V%Na|ᷬe{IT8llr}E-.6Ro3gZՅc%; KhX ѡG{^9 W1ݢm0$%aE|\v4;FcSZVk9-UX8zL*Jb: k -nGr-1 F;܈x_A߿$*4HQM \J( /q!cSM@ -bD(}*+s'E>YHcMȦ)V+ -pig&Rg1:,sdBI`6$3B%/z' LL1h4S>VaUc-]S`.ۨف#\ (7.|U9[㼽\0"FN9/;R83Ȼ{})Hc$m`labӵr5B)20ɩu e0+EhA @73Sc4ncޛ p̀t՞0i 1O-#TgXeOGesN{sdf 2JvVvޝ| c-;21!+H @Tefr cAAhl,A -zC}W&u ({l96fk?BN׃dLIuΓQ[d*/9[ZTwUAN~ɭLg&+ 4$jldk0SņgIi4IMn)K~S-S/vVlU}Z7LN5! , k~,cKvPA/.ҰfWJћ0)ە]V@} U"VK޲ixlnfIBCWTRk%5Ŭ ,K3*.}*Hp1#6`זNL2*Xv+v58qs3:RL&b\p:׺؆h(,=S 0)8a[ -As*۬W^X •^"L Wg -rv -?ލ@E\ ڀ&! 7a.2Au!co2^<YvVtF_b,H~`K}Xlj xiKl"oϓh -ˋٗaCˣ=daD +FԵ^9PL%F gtmQ +ׅU@&in 㣳퇣Ђ -CYο"m`c0>r0?8 <߃Ww"o!ܣPxr_JDZ\\$|o2:"0 "{-2`<$=0ӖOP04 ',T֤r҆*7'HYHXIpH8SK N-a#K&$?;Ի&Nb -LH 4u׳Qt n\usgt67~j(*lg`A sUWf|UO,/t+^Ml=HuGII9_ -vY~G$fiz5d[ x҅B-0vH/ -R -9y@%Bn4fdGDxhu̼XDZ<ӄvP -b@5pIE -LqLu8I0D6@+`\W0LfDs"<gߞEKE>3QW($ɫ@EDπۜ6&C4EI63F22fĥN>O4\$aQq{B)FhPD1VH@efw4PwA9_DvY& N]ELϷr_?ŻMls-._!Jińa'͛ -ismTWEp7Л+tQA C̃Db֥dڊ'f0ˉ#*]fG,mYGh Jt$Y d6xOlXU NB8P1ھI% E6L $na ̠s;w5w.Af![AnydG?AniNp*׆[ew# -ouH-pQawSq#,CB>q֌V{yX! ̀]GjD2/h[WG{l؈1^{ +mS鱂s@s xeaR%[N(J&oLJjӧi[:ڮ Eg6C0i!M+2)B{ktIq̐O;'FS,"hhx鴤p[j. _&WڪD 1[Js)Z@7PsiS@of-54 +J"b8)a K?eL*nB3ؠ̞GbmU v AZ>ܼ `i:iruQ)'+p(yWs;-*m m x3thyhU` -aA[ -!c)B(A4gN{K3!zOtVtRDJܜ`0貴=Zg]\f;Ӽ 2O`"h`ȷX{f2 O7 HeIM% ar  -endstream endobj 2715 0 obj [/Indexed/DeviceRGB 255 2722 0 R] endobj 2722 0 obj <>stream +*pDA/+F>b &@g' % UPK0:>^>BBNn^" EDE &@iwMڢD!xqtbP{0[Ҳ~df]S=)ǻCT;*ZCĹdl*0]*8-Pإ J 6 "4(% :!-\dRrAbOT6%#1Q#?LTLQK\ÁDYE%@ "VK$a`E+Q;'VED2V]MBD2'h/%둭aϫ- pQCTɸb[JJ3QFք$lXI%#%H-$*G$ט!E= yHF *-Ԕ XqZhU8hx4CRcr4ԭD0y4%"?rdѨbFRȸn#3~ɘ:ġnhFAڌ2j 1{b3B* Y^c(i%U,\2Sa|:]׋p:MC._BaYl]^AA7%DDpyeUkN4{33nFT'B'4- @2l*ujpkx젨tP>YhT'pe}]X 7}&J$D/pBPLc a1Ȳʒj#ُQ6SlJM]0[w%3%3c$Fìd;8Ij +⨀ꍌW + t^(t!ipGQEDT6)+6clϡ:1tOM1m{ NqUAEXT]%eZE? BdCuq\\#5:v@ ^oֱd.O=8G]V&LEss24N9D2Ʉ FcE `b`D&E"v*4bX,$) 00&F@Uup|8`>/]qÔRtgW*eN]'\C<0gmϢ:9=e:g6EQ}@Juur *b `kTT8Z[Kz-~ꋘN-Gz3W +O'FY'ܿ-$' +>-~Tz$GS&P)&o?'ަk(fMI0uX&Vαד"ΏG= f0U=C0Ra5qp"SMk簟*dS2RJ?q%2xiY5̅&F;xTN刡 +|ÓaigSû@gQִ+ Dtȸ-Bi&Fg9mDp'0zS"=1vr{_@;b)OP2h+k +KIåǴ,V),jĢ,JP*.<9X/JvWҖ/M0i |mL,v+Q "p'\AIs%(z+ O @1Ť1.X_ n_d=6jT2qg*EKڒO:q4_$7naX +}ꄻ|X2c<7##*J J/H묨#H[Saw^[Y!UY6&)Zy2A zZ낂LBxԐxп3S>H=DY!SEeBbe΄hEk/+o#]!.yKXPM5up m*ZW 1 n@#a?1#g1(2QxJdO[nӣ "U4HT r,v*Nˏ.QS3*|(`("+blVRVLN(Ӛa%bI07&MVM)>͙͞;mH˞A2VPzf5Е 6fQNkw-_1 \KCF l<-8cpz,N?σ(vXKv Sƭ4BAaZgQ-ZؤLeB`Г͒Dl]CZ@|/).aгhz;kj@ [O.U4Փ/TDWU3O`uS_K9{;/K7CUxG; A,V 橼ɩ Nau pżBt0c,qXR1Z]৊'GM82YmW)чp wTۑ}*>ؓFN | V' I/ILnƚC/܄GskbP?,DXd"F +X+?(L +p=ynYu7}n;Ex5秉%D^Z/)8hՃ2|؋H\S9D%*Rn)fU8fy;=N·OP?t\bq7b-S47sz( j1YMl 72syƵZ~`'J + r _%ck r:" dF.8,a-$~3Y5 d糪BDbP +Ó7؈XA(mIR7ڃs aM q$61t5A&e +k'2".kx g +NwZ1 +v{2>hDU\gΐ7J UQn]P{TAQݐjrH7p5LEk0iݖ 8N.d7mRʘ?'N@XdVeH?{BЀ q9%4g :9pv5Gߖ7;?aXhCX89Q:t÷rp`9xȘ_;Ϳ]1Tx)sY%ُs.| A*:XtCQxF\jf3$'%aH |K5M8- +DQ2Y MF*,L|%sc4'vx9!E >?hrn鬪#'ARH5{u&wdaMOeӳ ba]*hmƆ׵0[a|vQb*Ua և"{;zPOpU9᮵Gl6+̰nNNt̳8GJ3fY"(?5OՙBY\v 5TpBϼAžHk1=wEŀn_VG\,[BL]$bsߕC3SQ IGgInj6);o:Ls"s 烋-ތU0&B"'(P~p~Ju;i}"F hg'U(Ai7Rw/Fi0B|lgr`dqn`Z ̏!Е0xn'NP7nzAůF:Qkңt;; 03Ja{JLϚ[ND<LxDᴎ#eK5<}P g +wIe}1 OӬ[[B+Qxg?\MKӓXWȰLMS;X1냚 #j"+๵7T.Kx/E1"`5"􅗀v6exh>Q*7#>pL"qkE]2AUfֽ%X߉+l=~#坽q4> "BrD 4y' x_;^#_N #? / +-{Qi Gu0p]Uĺ)aϮ`4:Ac*7щJۉч:35CA\3vHw~Uυy_ NKhC^2q4^E뎪@"WmA%RJrDl:: +%u"h`lܜT,1? +T(d4sP:y E!h ouI &``PߪQ:2{$ǢJBDޖ[~mP2ώz-;-jbLp + RMa;((NDm£\SesW 3_dͻ'O$R^_yQ,ByM +!ġ9=1pp6SV%q| o}$x 1+6*Z9R(z,JʮkeDh瘟G^:W(2iP!@YjhZPe +tl_r=0Za| lȍ~7nIlHJ$(N.GNE/ + G|@/#['T<7F+ 2* :&A>_`{B!ӆ˗$wa7>u#u$ { +t ħS /CNUW %Ka٢BC$`4w6cEIW⹽!QY"h[L9ex#QP$Uspmz<;X`نwM( HI}G+ayYYmS)eqJ}:0mZE :$Ww%P9Y~A m~N&O78dU[k[ )'a$Dsi<2̞K)W{brk#*頓 ԉz6da&*,xk&-TPe<s/|Hhe$<H^t(8>ȻxWqod;1j:7DBDr3jSw&\Ċ^AxMoV2EZˑ^fƎş}X7I~ ʈ+[X=_Xݍ>8~qүsyiP.u%e# 'rRJoY +Ѩ:)$q8F;,jCjQEa㲃{iFHFژӭ!B%lF( ۭVa#-F1Է ^hI$^ET-cn鈶Z(HAiT$nVB|r/l=n_' >&۾o " +H-p$l7eg2ת,dDοIGk8?)Q)q5u&5Eu«ŇbU 7 KN ժozPZk'X}/d#Ȯe7J={ 8eBDQm^`t KzPE~܎'0WGeܪDr6ܮ\б +'%%(#oI<9![E^ٹ^Jc[?NSO (z(WK[6%*RoR?#y(a莛\h#Mk43\@oMa=\k*j%_CA1h:Z]"$vx 1S'~W +fh Wd|8d.bñD-G%z! p4d_e$Ԉ @$ArDo񱒔Ш3N!Aj"Zpvy!`TRTud呅6S; 8-u.=1 d`\h OU d_lb9|iiKGY+S:C \o0 ?_#Ұ[{ϧ݃U%Dq0֒gl9Sq N_xݚlS=Kc.cP0Ar5Dϔ˻徙!"΋(`X^sXs B`ƨ04JS ?MsGD1rLv a FmC /d7]#DLX3?e +y'k%F7EIxR]s~#"Z$!2D8fʥACsd$+-B4h kD55)=n" #s&b!I%ӭS¥X;ϵQ+Vl=:l4P74]f(ǚg";a%ӸkR։^杉5{15&K2$(PvB͝;,_]50k4os̃XCFTX'ooPUɒa>Sq}Cnİ4"=:*LqsĚ5,Ě?~BYk2Y 7!D` +oOz xc_ƚ%#SXչjbo,(b)G7XkُҮ@>xRÙE|u-Fo(lWTOd.@i5o\7(T^Mt%d >F ̘UJfW4}r5XPg OД1~v5[Ruc#2Wc"jn0&j 1_;QC7he"n]MG_Mu^MuCcWC)V aj/Jv5,3l] 7.STYoېV#alC^v6P.[ I`ո m0x!^lVmٮ'{nxp4#VNd%m@Xd]# t`W~gk{Kɮ)ځU +`Q6 s-:Wʨ XD?jg56KYQt fQf5KsrmʚXݐѪdOpa VVCMi۠iyRoq5#uQFWI +׼;A"\ |5sY`ݐ.M_FV2oW«q&]9a~@b'ؽoҌc#ׅtj`҅@@{,/GL9Ra BO_fY/CD*m$,ӳ;ĮT0-p|G@US ʙՀi?PeޢV)KYphhV`ckvJ9 C0L͚GؐO#!YF,TG\p`7ܸnP)Ҩ +6bgD :"8D<';4r;D9o|xYPOLp(q!_5Ɂ;n[1=tu[p:0VĀ+l9d75x5a0 и&U!L^1˕p#O*'Fyu~vpq +><^iX 3{}׫{`O?qF`ky c0f-Bd"!jbx,N9_2R43llJy|K(Blo7myUINPn!c(8ss]R($ny |]CS +񕠑j]72fX&p<#*TTT{,%;/ qr߬8SEשX̔ipB}lN"ԇ󎟌r? ?<: bD吊Pds*)*+H5e +B + #T>7v>7tF"K(_NӶ0a3Q9Q< +Q pLcG΋]Z;yEz}=H_RV +..< =fP\0"DqF΄gfLۨzKȥD)lxJH*^i'ȆԚ |5eH%*􈁒 +6ζCCTQVU4<|"az p0US\UǓg|. ()GI$N:=w&Y8@=v) :n![Dk'DTNҜ\?Xeي1 ܑwnDPjI-@2_IRe.Ưp.]WNrĘC`͠]:uty:%=o8,*~pCK>ٌyP >( 9N\fړ`Ap3jG[ F?tP䣚l),'6 vo@@!_O3=g+ƧSaaBřTfLViscp{6^@Mf$@yte)+!O xdGE܌>gBR(f͵ë-d>eo+=3e~A\cW)HhÈ} Uv4/=1FE3U8#s[9+G4Sz5O&pwD𛍺YKFop$&@ZQNYV6p5@LuS?bG爲{ieE4COh +N | :i{wQV FhX~nFKOG4Fl)WbOZƌ#7Y#B$⮀nz_J4yS3ӷʪF-GFܸ9ʌ*DmD>ڴRh2xlvCey94I"C-%{ET`cL75COz5ƀJfv=MzY]Mγq.YL+۩W`d`%*A/Iƒ[+ `Hlȟᕤћ +5M.wAhFHEge]iEƔ8FN2\ Y/luH{y>)pbg^FsoIeeEL|S ގP/쩍R8D˷!u$ }acq8xF;iGMRg\^l?#6QxF0!,vrl$w7JxbN/NA{v# +-C>?H +9t="wii{n`vtL(3 U~E3n)xy]|F8wz3%0i(sa~B1fӘٲAyZR|Ӵ~d手m[BLQm?Dt\\ST]0?kl$J7!QJکyeg?;0W`b@@',RUOlxA!x;tvS*O`;QWرD;7'l0(i&B +ٳ\W p%(Vl%H@x)st9X1]9h`j=` ))<;LyaI{Up`H v;x9P*G>WZvqqZ9:ik,Ar=>j^!rXh}/=SRv/tݤ +f>Femf]ϊ1 0!8:-9FđBFZ ![:v=2)LC_)4N|Olm(^I/p  *G-}z`/V{|}  + ӫZ5YL<kT/F6Q&{יsG4BkCxN@j˽U3/Hu庑ȥ/W[ 7Z}CKKfBu[D.njV^^-<\=ƹ8d0YIפy6BLOvX>70M1S5}[ #XY8nOj1?h*ES*'[2!"Did.@1i-kctW2C;ehեmҵW0oҥNGHCt"ܰ@~[!"4U (Y-703[qX[.RscPԤjMe4ѭEnolY I--JD[Fs?pE[>Yd4%^m_%) ,$v8fG2P/Z +)|)EEN }o&"x[I(q̴7ę'g[UE@)]qPV$wBis0/cѴHH!fziH6jf]~ZUjp7H5d^YYܨ qlp^@iE! b%]h2Ua{z* 'n8P{>͇5 పwņQ¾]Kʙ9#}|n9͈@MLus/9)6ob[+sAdL0'a|RFz wl?$FWE6i܌S~9ܹuS~QȂb/2H*Jw9q ;e-I¨ʦ+` Qo(uf+蝑[??SJZHw ;=BÑ- 8(4'M/Hh%~-2IThRߠ[TBq tÖFʸif:\Ӳ J_ 0.K* 3i)qC#1u7%r#}Qxm##;q#jKjWąC"MHJ> bYTs(U@6`|0pM+El,<]*ɩ u%&Z"QßDlۙ)bfeeCbטO /:h45`\OBeLJ5-P*f$L. nU$K֡r-Y&>f0R +bPV*vFbh3˷0`OP2xCmj2"HWU^(bvd\gnAThM s$ Igyy-Dc\-Z L=&3s,%gtaՐy<4m$ԽlґZr LZI[hf3I?7*DKວoS/B5X.FΣ5~#%~UD<ח7iQwPV8ߕHKVhܲǬz יwlHt +T~p%WlYق&jrnE|P1 Ԗ I2XC,+e(:*MLA"G.JBa +V & L Nh^ZyR|_% h4*Zb/|, +a:^"? Bg9Cg~;mqE@e#m֐K|1۠Vqo2BY>E3J:F! c +, dGxHャkbϫi4\7` ؜UD#* 8'!]B(GSc].,ۯ\V3AGJMJxˏd/unُON,^Κ뒎֓"W +H-}Lʿ\~3ZH-~ĺ\]nV3-l@f"Γi#'v>|c(+r1&\kP0ǩ7Hfq2_Z}@{਻@K9x%pJ|e{wbbeFmK8lE +i7Ԯydj";wr'67O xƔQy 2_UB;cГȐ@&iDe'#nm1QMIe+o_4h@Pn ^'TR1z~`wK< +Dyxq*H.zXL76%=RNVXm3[Ҡ +lk)a^:/.`qn;$ut'1W +ǫZ۬Zs2oYS<{51 HX^,:u)H#AF)*hMg%uf ܸ +HLE +b*DWm';%>bUXL+-M[ج%] + ׯUt}8Uz|(S|KW]؄ٯ :0 ~DeT}ж0E㕠 jZ֤̬[aXHz8upxFXfor;2(pԢ]/^V|tabk.by^*8|2Hoŵ>HV<,|qNWMyG鴎3bhG\ S;D@KtñѽVkbPmV3kw LFs|{e"Ewन? +pL<4:ѭ1jojF=P7?-a~5ai +L}410ʇ^XA "r:kOގAK?E1^~[8p'R,xkd)WAr~`zfTsc N} FK@܏KeN&>F℟lsZ`i`Mmd"x#3{Hyua!cD!F2BgbH]AR#q}&ᗇalIg'Pv{7d~ߞ.?wZ&뎏e0% +y⧑ȜcOwjy[1ܺnhkd QLPrf6@ .{ &Ajl]خ^ذ +kc?8A– +lCvJG|U0qƦMzכ`Z-z@:?,l@B +oP&2$)tjI됮C;BR,5$(6{Iu 3tDA$Bv@jW&L&-\kI_ +Jn$P /"~(jy.8$~r:ɔ)S9zC܅t୍'3|YwKi]y8H!Yϩ\~ɗ<$TYIZ~0(E,>Y^FDQz$8'bF3éHݿQϣ AcJXY-"nzu';Ɩi!J6Pswy +'C}: +0rfBX.S7|3ջI'R/~ æjMi +Ђ?̧GVB5a zw) ζT&Dg.m*ie/:ȇ# _nKzzL5fwG1kIi c*zi_l)i|wȭ l8HmZE: +endstream endobj 2753 0 obj [/Indexed/DeviceRGB 255 2760 0 R] endobj 2760 0 obj <>stream 8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn @@ -1348,7 +1383,7 @@ E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn VNWFKf>nDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> -endstream endobj 2712 0 obj <>/Font<>/ProcSet[/PDF/Text]>>/Subtype/Form>>stream +endstream endobj 2750 0 obj <>/Font<>/ProcSet[/PDF/Text]>>/Subtype/Form>>stream BT 0 0 0 rg /GS0 gs @@ -1375,24 +1410,16 @@ BT [(S)-3 (a)8 (v)10 (e A)6.1 (s c)5.9 (ommand)10.1 (.)]TJ ET -endstream endobj 2709 0 obj <> endobj 2724 0 obj <> endobj 2725 0 obj <> endobj 2726 0 obj <>stream -H|TiPYA2횩jAEgTNQaEWAECWQDYdD@PQ<QNe`˓ql5gm̗}_^$L0gYuUa -_U̷! *c"4Z?#i/[`2&V/_jokVnpI(P)~(+:8F -W*I\T+UUreX|R%!a}R!W*Qy1?C% Xr0c/lъJ$KpLBt*L[yRXP0\Xa20l6`sı:Gb0(b0_vn0q79a2JۈGedјx8Nn!3$ݒ"SsSr138)vSE7`g$2E|D: ޒHn` &K&ݓ>#!&&!cDz --7a"n{y-Oi`Cf?q_S -mCE$.B 2%,&0'їϕV]V_ U )(4]/2Y[/eJPDҸ؊Ds]*.VS'kL I{-3^ _xM'0h/ - [us0HMM*rIvχxs})!_\Ƶ=6ڗ錧O߶pCs9 EZ;I`Bz W&[=8уN@N̪i!:lYv5-{Up,RS{=x0DuhuUwb;/F]UPyZeֆ})lI8?j{'pt& -uhUl֝6(X*HÏ=!`a~ N@5 -TE0jyW˴K:xIB>y7&40O R%hC72IW&6ҧb}һǺ.w낈}CP5,Kiclһ% A&h*Ā@ߡg_C}&;p}RRywsל/VךOOQSx !xN~p;N}z0čK"Cuz+ GσrqT[;W@ٰA:JJM8d3:)e B9.>2RFU? qȡ3RSXi/c7vuYZҧv6në_©W:3@=$h.;2濸wնÕ:ύ`WF%~B?tCYN`]<GNI#=#¹ vjY5N); w&E8?$t - !ClpL}TPIDy\a{AaFwQ=Luz]q2H*م꓎hYa@}9t|t5p[uP+~ -/n2?\F^C]_e^n*,Ycc *S=4;X@I?,} N|DD~܅WGF+K.fp嚒pBa5pीGPw!rPk9(tpiLM}3ϝCWI^={MώCP-eu޻"R}D6TOlbɪiꊣiw jgڷlfea6պ)nb uBݲes|*^[[`t"E:8'%::aVG6b[=3{{ι  8T6XZV|<Gv3">|'7w˾,uG}^e?Ѝ$z) _ nHH`96r64AeZ6ͽ_qR  -W" x̿PrH`/PX,p;<__#Cٯ!neq,ncΘecLv8rp5[H3M6P>Be~Wb+ Pt{hnؽ<+yI[[H -"'jT_}WZW1!1LA8I,p%Ir"?OVtӅOY_o>Lw S&Q -$y]˔;qY&2ğPJe>vd <.a3GfP?b>%xjl@96tTVW%WKyx!ه_ W_a΂XN G2{"J8 `&؉L\qc:3hF%(rO׳ AHlUL4Ȁ$Ȋ-1Zgr_Ɋ_G7`i8:, zr -iuB~!74zHh :S8N -S4npS-Ivީ/&OCy5$zxt4Md7iƻ҇b}i,ptb1 +xyVNth"qG'@[B%h-Y_]7> endobj 33 0 obj <> endobj 115 0 obj [/View/Design] endobj 116 0 obj <>>> endobj 34 0 obj [33 0 R] endobj 2727 0 obj <> endobj xref -0 2728 +endstream endobj 2747 0 obj <> endobj 2762 0 obj <> endobj 2763 0 obj <> endobj 2764 0 obj <>stream +H|TiPYjP (FfZPST\EDXnCWuADQQNe`Ûq‡1[_/"#{ߗcf[!h7ko7*C*SWh4e|W)U_N7kG8~hF6d]ƭiܹETUkjwLH*.V%(QQqLT+UZU2e&LɅdhp_T4*B-WEbM?,b$$D:إMb<8v(v +(s2'Gj1o4"bӒ9>-XIéSRjSR'uUo֫"2,zAX۲0i&ldf]:Q-._ajJ$hj KK4s=Xޭy5 +fzɔ |y,>J+3鷛?zxu_6O饔!m+^N `0H!'4,4kx6~v#/յD(_aKo[_f>r +#XЅiͻ#dyVOIfEbw5+\-G0ڡ̠'ВDZN/Gҁ0ISe9O"{ul*KaZsv P.5^2VsQ3;czq0ey@~P'~/ ~z2?=X{56RoO VJftThvPg>{H\cݨ;QGE*KΧreڒB +2HGx.,Xseu9ụr<M⼌,rטr?G*1,r%huq6ڛY}8LV}LSWMӽ[P,<վυe3( sMtk‡-S0m)) !8)9 ʹ:srcߛsw=ffm)ҲӬ,qxD$<ʈl;[׈-g+8?(x.n Ki-uL]pCcDԷG'".3F=ibP}vPu(fsF24{bqR~ q (SSeq{D|3uƜw,>cr QwF9>nol|r.#V[\_o`{KgGtEMe%e^хESNO|eB"Uuoh9Q<|P˼‿Ya +INb(I{y`.Lt~za{^2R _ǔZ܉CMՌ2 ̔Q'R*-7#]m04t 9jg6="k<.+= =Uci5 _J** ^? |/8>b +suz vb=ʔ[/QY37Nd亏 י~@;T7*Fv~j=o jG`zfB7F$AVl?@[_:;*OV8¿Lai`TUM3TH \ <sp=?GPF[X juRZƠtjINx5yZŭǴCDeŬ!Qv l[mDˠo%@!HH36ޕ>|%Kciņ;{wl/M܈S `X`͋uwC=:M88(Fkɪ"X.qw5w(K$[׬\_ Uki_E10 +endstream endobj 2761 0 obj <> endobj 33 0 obj <> endobj 115 0 obj [/View/Design] endobj 116 0 obj <>>> endobj 34 0 obj [33 0 R] endobj 2765 0 obj <> endobj xref +0 2766 0000000004 65535 f 0000000016 00000 n 0000000147 00000 n @@ -1426,8 +1453,8 @@ endstream endobj 2723 0 obj <<204171C72E07284C880F6957FEA92C98>]>> +<<05F36A373459934FB5DC061F11FAC5A4>]>> startxref -264256 +264170 %%EOF diff --git a/datafiles/data/themes/default/graphics/icon/s_window_exit.png b/datafiles/data/themes/default/graphics/icon/s_window_exit.png index 091dcd547..188e50ae1 100644 Binary files a/datafiles/data/themes/default/graphics/icon/s_window_exit.png and b/datafiles/data/themes/default/graphics/icon/s_window_exit.png differ diff --git a/datafiles/data/themes/default/graphics/icon/s_window_fullscreen.png b/datafiles/data/themes/default/graphics/icon/s_window_fullscreen.png index 14a533570..b021f9218 100644 Binary files a/datafiles/data/themes/default/graphics/icon/s_window_fullscreen.png and b/datafiles/data/themes/default/graphics/icon/s_window_fullscreen.png differ diff --git a/datafiles/data/themes/default/graphics/icon/s_window_maximize.png b/datafiles/data/themes/default/graphics/icon/s_window_maximize.png index 9fa7bce36..18cc37b34 100644 Binary files a/datafiles/data/themes/default/graphics/icon/s_window_maximize.png and b/datafiles/data/themes/default/graphics/icon/s_window_maximize.png differ diff --git a/datafiles/data/themes/default/graphics/icon/s_window_minimize.png b/datafiles/data/themes/default/graphics/icon/s_window_minimize.png index cd8b100ba..d8f7325b1 100644 Binary files a/datafiles/data/themes/default/graphics/icon/s_window_minimize.png and b/datafiles/data/themes/default/graphics/icon/s_window_minimize.png differ diff --git a/objects/o_dialog_add_node/Create_0.gml b/objects/o_dialog_add_node/Create_0.gml index ee153c1ad..4604e3cc7 100644 --- a/objects/o_dialog_add_node/Create_0.gml +++ b/objects/o_dialog_add_node/Create_0.gml @@ -9,13 +9,8 @@ event_inherited(); node_called = noone; junction_hovering = noone; - if(ADD_NODE_W == -1 || ADD_NODE_H == -1) { - ADD_NODE_W = ui(532); - ADD_NODE_H = ui(400); - } - - dialog_w = ADD_NODE_W; - dialog_h = ADD_NODE_H; + dialog_w = PREF_MAP[? "dialog_add_node_w"]; + dialog_h = PREF_MAP[? "dialog_add_node_h"]; destroy_on_click_out = true; @@ -409,8 +404,8 @@ event_inherited(); content_pane.resize(dialog_w - ui(136), dialog_h - ui(66)); search_pane.resize(dialog_w - ui(32), dialog_h - ui(66)); - ADD_NODE_W = dialog_w; - ADD_NODE_H = dialog_h; + PREF_MAP[? "dialog_add_node_w"] = dialog_w; + PREF_MAP[? "dialog_add_node_h"] = dialog_h; } #endregion diff --git a/objects/o_dialog_exit/Draw_64.gml b/objects/o_dialog_exit/Draw_64.gml index 7adda9823..0b87454a5 100644 --- a/objects/o_dialog_exit/Draw_64.gml +++ b/objects/o_dialog_exit/Draw_64.gml @@ -1,5 +1,6 @@ /// @description init if !ready exit; + draw_set_color(c_black); draw_set_alpha(0.5); draw_rectangle(0, 0, WIN_W, WIN_H, false); diff --git a/objects/o_dialog_gradient/Create_0.gml b/objects/o_dialog_gradient/Create_0.gml index 14e636cc4..10dc09e87 100644 --- a/objects/o_dialog_gradient/Create_0.gml +++ b/objects/o_dialog_gradient/Create_0.gml @@ -155,7 +155,7 @@ event_inherited(); draw_sprite_stretched_ext(THEME.node_active, 1, ui(4), yy, sp_preset_w - ui(16), hg, COLORS._main_accent, 1); draw_set_text(f_p2, fa_left, fa_top, COLORS._main_text_sub); - draw_text(ui(16), yy + ui(8), preset_name[| i]); + draw_text(ui(16), yy + ui(8), filename_name_only(preset_name[| i])); draw_gradient(ui(16), yy + ui(28), ww, ui(16), presets[| i]); if(_hover && isHover && mouse_press(mb_left, sFOCUS)) { @@ -223,7 +223,7 @@ event_inherited(); draw_sprite_stretched_ext(THEME.node_active, 1, ui(4), yy, sp_palette_w - ui(16), _height, COLORS._main_accent, 1); draw_set_text(f_p2, fa_left, fa_top, COLORS._main_text_sub); - draw_text(ui(16), yy + ui(8), palette_name[| i]); + draw_text(ui(16), yy + ui(8), filename_name_only(palette_name[| i])); if(palette_selecting == i) drawPaletteGrid(palettes[| i], ui(16), yy + ui(28), ww, _gs); else diff --git a/objects/o_dialog_load/Create_0.gml b/objects/o_dialog_load/Create_0.gml new file mode 100644 index 000000000..4dd7ea350 --- /dev/null +++ b/objects/o_dialog_load/Create_0.gml @@ -0,0 +1,12 @@ +/// @description init +event_inherited(); + +#region data + newFile = false; + path = ""; + readonly = false; + safe_mode = false; + + dialog_w = ui(400); + dialog_h = ui(140); +#endregion \ No newline at end of file diff --git a/objects/o_dialog_load/Draw_64.gml b/objects/o_dialog_load/Draw_64.gml new file mode 100644 index 000000000..248ec86cd --- /dev/null +++ b/objects/o_dialog_load/Draw_64.gml @@ -0,0 +1,55 @@ +/// @description init +if !ready exit; + +draw_set_color(c_black); +draw_set_alpha(0.5); +draw_rectangle(0, 0, WIN_W, WIN_H, false); +draw_set_alpha(1); + +#region base UI + draw_sprite_stretched(THEME.dialog_bg, 0, dialog_x, dialog_y, dialog_w, dialog_h); + if(sFOCUS) + draw_sprite_stretched_ext(THEME.dialog_active, 0, dialog_x, dialog_y, dialog_w, dialog_h, COLORS._main_accent, 1); +#endregion + +#region text + var py = dialog_y + ui(16); + draw_set_text(f_h5, fa_left, fa_top, COLORS._main_text_title); + draw_text(dialog_x + ui(24), py, "Project modified"); + py += line_height(, 4); + + draw_set_text(f_p0, fa_left, fa_top, COLORS._main_text); + draw_text(dialog_x + ui(24), py, "Do you want to save progress?"); + + var bw = ui(96), bh = TEXTBOX_HEIGHT; + var bx1 = dialog_x + dialog_w - ui(16); + var by1 = dialog_y + dialog_h - ui(16); + var bx0 = bx1 - bw; + var by0 = by1 - bh; + + draw_set_text(f_p1, fa_center, fa_center, COLORS._main_text); + var b = buttonInstant(THEME.button, bx0, by0, bw, bh, mouse_ui, sFOCUS, sHOVER); + draw_text(bx0 + bw / 2, by0 + bh / 2, "Cancel"); + if(b == 2) + instance_destroy(); + + bx0 -= bw + ui(12); + var b = buttonInstant(THEME.button, bx0, by0, bw, bh, mouse_ui, sFOCUS, sHOVER); + draw_text(bx0 + bw / 2, by0 + bh / 2, "Don't save"); + if(b == 2) { + if(newFile) __NEW(); + else __LOAD_PATH(path, readonly, safe_mode); + instance_destroy(); + } + + bx0 -= bw + ui(12); + var b = buttonInstant(THEME.button, bx0, by0, bw, bh, mouse_ui, sFOCUS, sHOVER); + draw_text(bx0 + bw / 2, by0 + bh / 2, "Save"); + if(b == 2) { + SAVE(); + + if(newFile) __NEW(); + else __LOAD_PATH(path, readonly, safe_mode); + instance_destroy(); + } +#endregion \ No newline at end of file diff --git a/objects/o_dialog_load/o_dialog_load.yy b/objects/o_dialog_load/o_dialog_load.yy new file mode 100644 index 000000000..de304241b --- /dev/null +++ b/objects/o_dialog_load/o_dialog_load.yy @@ -0,0 +1,37 @@ +{ + "resourceType": "GMObject", + "resourceVersion": "1.0", + "name": "o_dialog_load", + "spriteId": null, + "solid": false, + "visible": true, + "managed": true, + "spriteMaskId": null, + "persistent": false, + "parentObjectId": { + "name": "_p_dialog", + "path": "objects/_p_dialog/_p_dialog.yy", + }, + "physicsObject": false, + "physicsSensor": false, + "physicsShape": 1, + "physicsGroup": 1, + "physicsDensity": 0.5, + "physicsRestitution": 0.1, + "physicsLinearDamping": 0.1, + "physicsAngularDamping": 0.1, + "physicsFriction": 0.2, + "physicsStartAwake": true, + "physicsKinematic": false, + "physicsShapePoints": [], + "eventList": [ + {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":64,"eventType":8,"collisionObjectId":null,}, + {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":0,"eventType":0,"collisionObjectId":null,}, + ], + "properties": [], + "overriddenProperties": [], + "parent": { + "name": "menu", + "path": "folders/dialog/menu.yy", + }, +} \ No newline at end of file diff --git a/objects/o_dialog_menubox/Create_0.gml b/objects/o_dialog_menubox/Create_0.gml index 3bbe318f1..edf13972f 100644 --- a/objects/o_dialog_menubox/Create_0.gml +++ b/objects/o_dialog_menubox/Create_0.gml @@ -14,7 +14,7 @@ event_inherited(); show_icon = false; - function setMenu(_menu) { + function setMenu(_menu, align = fa_left) { menu = _menu; dialog_x = x; dialog_y = y; @@ -67,10 +67,12 @@ event_inherited(); if(show_icon) dialog_w += ui(32); - if(dialog_x + dialog_w > WIN_W - ui(16)) - dialog_x = WIN_W - ui(16) - dialog_w; - if(dialog_y + dialog_h > WIN_H - ui(16)) - dialog_y = WIN_H - ui(16) - dialog_h; + dialog_y = min(dialog_y, WIN_H - dialog_h); + + switch(align) { + case fa_left: dialog_x = round(min(dialog_x, WIN_W - dialog_w)); break; + case fa_center: dialog_x = round(min(dialog_x - dialog_w / 2, WIN_W - dialog_w)); break; + } ready = true; } diff --git a/objects/o_dialog_notifications/Create_0.gml b/objects/o_dialog_notifications/Create_0.gml index 6c8c151f1..985c89c0c 100644 --- a/objects/o_dialog_notifications/Create_0.gml +++ b/objects/o_dialog_notifications/Create_0.gml @@ -55,7 +55,7 @@ event_inherited(); if(noti.type & filter == 0) continue; draw_set_font(f_p2); - var _w = sp_noti.w - ui(12); + var _w = sp_noti.surface_w; var _h = ui(8) + string_height_ext(noti.txt, -1, txw) + ui(8); if(yy >= -_h && yy <= sp_noti.h) { @@ -63,7 +63,7 @@ event_inherited(); if(sHOVER && sp_noti.hover && point_in_rectangle(_m[0], _m[1], 0, yy, _w, yy + _h - ui(4))) { draw_sprite_stretched_ext(THEME.group_label, 0, 0, yy + ui(2), _w, _h - ui(4), COLORS.dialog_notification_bg_hover, 1); - + if(noti.tooltip != "") TOOLTIP = noti.tooltip; @@ -131,8 +131,6 @@ event_inherited(); yy += _h; hh += _h; - - if(yy > sp_noti.h) break; } return hh; diff --git a/objects/o_dialog_palette/Create_0.gml b/objects/o_dialog_palette/Create_0.gml index 3adc6392e..d31d5510b 100644 --- a/objects/o_dialog_palette/Create_0.gml +++ b/objects/o_dialog_palette/Create_0.gml @@ -83,9 +83,9 @@ event_inherited(); draw_sprite_stretched(THEME.ui_panel_bg, 1, ui(4), yy, sp_preset_w - ui(16), hg); if(isHover) draw_sprite_stretched_ext(THEME.node_active, 1, ui(4), yy, sp_preset_w - ui(16), hg, COLORS._main_accent, 1); - + draw_set_text(f_p2, fa_left, fa_top, COLORS._main_text_sub); - draw_text(ui(16), yy + ui(8), preset_name[| i]); + draw_text(ui(16), yy + ui(8), filename_name_only(preset_name[| i])); drawPalette(presets[| i], ui(16), yy + ui(28), ww, ui(16)); if(isHover && mouse_press(mb_left, sFOCUS)) { diff --git a/objects/o_dialog_palette/Draw_64.gml b/objects/o_dialog_palette/Draw_64.gml index e1c1777db..f1e9817cf 100644 --- a/objects/o_dialog_palette/Draw_64.gml +++ b/objects/o_dialog_palette/Draw_64.gml @@ -34,7 +34,7 @@ if palette == 0 exit; sp_presets.draw(presets_x + ui(24), dialog_y + ui(44)); var bx = presets_x + presets_w - ui(44); - var by = dialog_y + ui(10); + var by = dialog_y + ui(12); if(buttonInstant(THEME.button_hide, bx, by, ui(28), ui(28), mouse_ui, sFOCUS, sHOVER, get_text("add_preset", "Add to preset"), THEME.add) == 2) { var dia = dialogCall(o_dialog_file_name, mouse_mx + ui(8), mouse_my + ui(8)); diff --git a/objects/o_main/Create_0.gml b/objects/o_main/Create_0.gml index 8b3b6bd88..24e4ed8e8 100644 --- a/objects/o_main/Create_0.gml +++ b/objects/o_main/Create_0.gml @@ -15,7 +15,11 @@ #region window gameframe_init(); //gameframe_can_input = false; - gameframe_button_array = []; + gameframe_set_cursor = false; + gameframe_caption_height_normal = ui(40); + gameframe_button_array = [ game_frame_button_create("", s_kenney, 0, function() {}), + game_frame_button_create("", s_kenney, 0, function() {}), + ]; depth = 0; win_wp = WIN_W; @@ -54,6 +58,13 @@ addHotkey("", "Full panel", "`", MOD_KEY.none, set_focus_fullscreen); addHotkey("", "Open notification", vk_f12, MOD_KEY.none, function() { dialogCall(o_dialog_notifications); }); + addHotkey("", "Fullscreen", vk_f11, MOD_KEY.none, function() { + if(gameframe_is_fullscreen_window()) + gameframe_set_fullscreen(0); + else + gameframe_set_fullscreen(2); + }); + addHotkey("", "Render all", vk_f5, MOD_KEY.none, function() { UPDATE |= RENDER_TYPE.full; }); @@ -171,8 +182,6 @@ #region parameter file_open_parameter = ""; - window_command_hook(window_command_close); - _modified = false; #endregion diff --git a/objects/o_main/Draw_64.gml b/objects/o_main/Draw_64.gml index 8c5513efc..2e0519fda 100644 --- a/objects/o_main/Draw_64.gml +++ b/objects/o_main/Draw_64.gml @@ -1,4 +1,9 @@ /// @description init +if(gameframe_is_minimized()) { + gameframe_update(); + exit; +} + #region widget scroll if(keyboard_check_pressed(vk_tab) && key_mod_press(SHIFT)) widget_previous(); @@ -27,4 +32,30 @@ surface_reset_target(); noti_warning(exception_print(e)); } + + gameframe_update(); +#endregion + +#region window + var pd = gameframe_resize_padding; + + if(mouse_mx > 0 && mouse_mx < pd && mouse_my > 0 && mouse_my < WIN_H) + CURSOR = cr_size_we; + if(mouse_mx > WIN_W - pd && mouse_mx < WIN_W && mouse_my > 0 && mouse_my < WIN_H) + CURSOR = cr_size_we; + + if(mouse_mx > 0 && mouse_mx < WIN_W && mouse_my > 0 && mouse_my < pd) + CURSOR = cr_size_ns; + if(mouse_mx > 0 && mouse_mx < WIN_W && mouse_my > WIN_H - pd && mouse_my < WIN_H) + CURSOR = cr_size_ns; + + if(mouse_mx > 0 && mouse_mx < pd && mouse_my > 0 && mouse_my < pd) + CURSOR = cr_size_nwse; + if(mouse_mx > WIN_W - pd && mouse_mx < WIN_W && mouse_my > WIN_H - pd && mouse_my < WIN_H) + CURSOR = cr_size_nwse; + + if(mouse_mx > 0 && mouse_mx < pd && mouse_my > WIN_H - pd && mouse_my < WIN_H) + CURSOR = cr_size_nesw; + if(mouse_mx > WIN_W - pd && mouse_mx < WIN_W && mouse_my > 0 && mouse_my < pd) + CURSOR = cr_size_nesw; #endregion \ No newline at end of file diff --git a/objects/o_main/Draw_75.gml b/objects/o_main/Draw_75.gml index 1888613fe..d51b8d7c7 100644 --- a/objects/o_main/Draw_75.gml +++ b/objects/o_main/Draw_75.gml @@ -59,4 +59,9 @@ draw_text(WIN_W - ui(16), WIN_H - ui(8), get_text("safe_mode", "SAFE MODE")); draw_set_alpha(1); } +#endregion + +#region frame + draw_set_color(COLORS._main_icon_dark); + draw_rectangle(1, 1, WIN_W - 2, WIN_H - 2, true); #endregion \ No newline at end of file diff --git a/objects/o_main/Step_0.gml b/objects/o_main/Step_0.gml index 339ebfe11..ef9bf2493 100644 --- a/objects/o_main/Step_0.gml +++ b/objects/o_main/Step_0.gml @@ -93,15 +93,6 @@ #endregion #region window - if (window_command_check(window_command_close)) { - if(MODIFIED && !READONLY) { - dialogCall(o_dialog_exit); - } else { - PREF_SAVE(); - game_end(); - } - } - if(_modified != MODIFIED) { _modified = MODIFIED; diff --git a/objects/o_main/Step_1.gml b/objects/o_main/Step_1.gml index 6e7c166a7..5bd3a99c0 100644 --- a/objects/o_main/Step_1.gml +++ b/objects/o_main/Step_1.gml @@ -1,7 +1,6 @@ /// @description init #region window //if(keyboard_check_pressed(vk_f12)) DEBUG = !DEBUG; - gameframe_update(); if(_cursor != CURSOR) { window_set_cursor(CURSOR); @@ -9,7 +8,7 @@ } CURSOR = cr_default; - if((win_wp != WIN_W || win_hp != WIN_H) && (WIN_W > 1 && WIN_H > 1)) + if(!gameframe_is_minimized() && (win_wp != WIN_W || win_hp != WIN_H) && (WIN_W > 1 && WIN_H > 1)) display_refresh(); #endregion diff --git a/options/windows/options_windows.yy b/options/windows/options_windows.yy index 9c8271468..10204fd97 100644 --- a/options/windows/options_windows.yy +++ b/options/windows/options_windows.yy @@ -19,7 +19,7 @@ "option_windows_splash_screen": "${base_options_dir}/windows/splash/splash.png", "option_windows_use_splash": false, "option_windows_start_fullscreen": false, - "option_windows_allow_fullscreen_switching": true, + "option_windows_allow_fullscreen_switching": false, "option_windows_interpolate_pixels": false, "option_windows_vsync": false, "option_windows_resize_window": true, diff --git a/scripts/_3D/_3D.gml b/scripts/_3D/_3D.gml index 6ebe73650..c57b5458d 100644 --- a/scripts/_3D/_3D.gml +++ b/scripts/_3D/_3D.gml @@ -253,9 +253,14 @@ enum CAMERA_PROJ { matrix_stack_pop(); } - function _3d_pre_setup(_outSurf, _dim, _pos, _sca, _ldir, _lhgt, _lint, _lclr, _aclr, _lpos, _lrot, _lsca, _proj = CAMERA_PROJ.perspective, _fov = 60, _pass = "diff", _applyLocal = true) { + function _3d_pre_setup(_outSurf, _dim, _pos, _sca, _ldir, _lhgt, _lint, _lclr, _aclr, _lpos, _lrot, _lsca, _cam, _pass = "diff", _scale = noone) { _outSurf = surface_verify(_outSurf, _dim[0], _dim[1]); + var _proj = _cam.projection; + var _fov = _cam.fov; + var _applyLocal = _scale == noone? true : _scale.local; + var scaleDimension = _scale == noone? true : _scale.dimension; + var lightFor = [ -cos(degtorad(_ldir)), -_lhgt, -sin(degtorad(_ldir)) ]; gpu_set_ztestenable(true); @@ -301,9 +306,9 @@ enum CAMERA_PROJ { camera_apply(cam); if(_proj == CAMERA_PROJ.ortho) - matrix_stack_push(matrix_build(dw / 2 - _pos[0], _pos[1] - dh / 2, 0, 0, 0, 0, dw * _sca[0], dh * _sca[1], 1)); + matrix_stack_push(matrix_build(dw / 2 - _pos[0], _pos[1] - dh / 2, 0, 0, 0, 0, (scaleDimension? dw : 1) * _sca[0], (scaleDimension? dh : 1) * _sca[1], 1)); else - matrix_stack_push(matrix_build(dw / 2 - _pos[0], _pos[1] - dh / 2, 0, 0, 0, 0, dw * _sca[0], dh * _sca[1], 1)); + matrix_stack_push(matrix_build(dw / 2 - _pos[0], _pos[1] - dh / 2, 0, 0, 0, 0, (scaleDimension? dw : 1) * _sca[0], (scaleDimension? dh : 1) * _sca[1], 1)); //matrix_stack_push(matrix_build(0, 0, 0, 0, 0, 0, 1, 1, 1)); if(_applyLocal) _3d_local_transform(_lpos, _lrot, _lsca); diff --git a/scripts/__VFX/__VFX.gml b/scripts/__VFX/__VFX.gml index 8c32e73f6..6597124f7 100644 --- a/scripts/__VFX/__VFX.gml +++ b/scripts/__VFX/__VFX.gml @@ -49,7 +49,7 @@ function __part(_node) constructor { anim_speed = 1; anim_end = ANIM_END_ACTION.loop; - function create(_surf, _x, _y, _life) { + static create = function(_surf, _x, _y, _life) { active = true; surf = _surf; x = _x; @@ -61,7 +61,7 @@ function __part(_node) constructor { node.onPartCreate(self); } - function setPhysic(_sx, _sy, _ac, _g, _wig) { + static setPhysic = function(_sx, _sy, _ac, _g, _wig) { sx = _sx; sy = _sy; ac = _ac; @@ -69,7 +69,8 @@ function __part(_node) constructor { wig = _wig; } - function setTransform(_scx, _scy, _sct, _rot, _rots, _follow) { + + static setTransform = function(_scx, _scy, _sct, _rot, _rots, _follow) { sc_sx = _scx; sc_sy = _scy; sct = _sct; @@ -78,7 +79,8 @@ function __part(_node) constructor { rot_s = _rots; follow = _follow; } - function setDraw(_col, _blend, _alp, _fade) { + + static setDraw = function(_col, _blend, _alp, _fade) { col = _col; blend = _blend; alp = _alp; @@ -86,12 +88,12 @@ function __part(_node) constructor { alp_fade = _fade; } - function kill() { + static kill = function() { active = false; node.onPartDestroy(self); } - static step = function() { + static step = function() { if(!active) return; var xp = x, yp = y; x += sx; @@ -119,7 +121,7 @@ function __part(_node) constructor { if(life-- < 0) kill(); } - function draw(exact, surf_w, surf_h) { + static draw = function(exact, surf_w, surf_h) { if(!active) return; var ss = surf; if(is_array(surf)) { @@ -142,8 +144,10 @@ function __part(_node) constructor { } if(!is_surface(ss)) return; - scx = sc_sx * eval_curve_x(sct, 1 - life / life_total); - scy = sc_sy * eval_curve_x(sct, 1 - life / life_total); + var lifeRat = 1 - life / life_total; + var scCurve = eval_curve_x(sct, lifeRat); + scx = sc_sx * scCurve; + scy = sc_sy * scCurve; var _xx, _yy; var s_w = surface_get_width(ss) * scx; @@ -176,15 +180,15 @@ function __part(_node) constructor { var x1 = _xx + s_w * 1.5; var y1 = _yy + s_h * 1.5; - if(x0 > surf_w || y0 > surf_h || x1 < 0 || y1 < 0) return; + if(x0 > surf_w || y0 > surf_h || x1 < 0 || y1 < 0) return; //culling - var cc = (col == -1)? c_white : gradient_eval(col, 1 - life / life_total); - cc = colorMultiply(blend, cc); - alp_draw = alp * eval_curve_x(alp_fade, 1 - life / life_total); - draw_surface_ext_safe(ss, _xx, _yy, scx, scy, rot, cc, alp_draw); + var cc = (col == -1)? c_white : gradient_eval(col, lifeRat); + if(blend != c_white) cc = colorMultiply(blend, cc); + alp_draw = alp * eval_curve_x(alp_fade, lifeRat); + draw_surface_ext(ss, _xx, _yy, scx, scy, rot, cc, alp_draw); } - function getPivot() { + static getPivot = function() { if(boundary_data == -1) return [x, y]; diff --git a/scripts/_node_VFX_spawner/_node_VFX_spawner.gml b/scripts/_node_VFX_spawner/_node_VFX_spawner.gml index 6407b612e..c47270aee 100644 --- a/scripts/_node_VFX_spawner/_node_VFX_spawner.gml +++ b/scripts/_node_VFX_spawner/_node_VFX_spawner.gml @@ -359,13 +359,7 @@ function Node_VFX_Spawner_Base(_x, _y, _group = -1) : Node(_x, _y, _group) const onStep(); } - static onStep = function() { - RETURN_ON_REST - - if(ANIMATOR.current_frame == 0) - reset(); - runVFX(ANIMATOR.current_frame); - } + static onStep = function() {} static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) { inputs[| 3].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny); diff --git a/scripts/button/button.gml b/scripts/button/button.gml index 39dd93e17..b739da0d3 100644 --- a/scripts/button/button.gml +++ b/scripts/button/button.gml @@ -75,8 +75,12 @@ function buttonClass(_onClick, _icon = noone) : widget() constructor { function buttonInstant(spr, _x, _y, _w, _h, _m, _act, _hvr, _tip = "", _icon = noone, _icon_index = 0, _icon_blend = COLORS._main_icon, _icon_alpha = 1) { var res = 0; + var cc = is_array(_icon_blend)? _icon_blend[0] : _icon_blend; if(_hvr && point_in_rectangle(_m[0], _m[1], _x, _y, _x + _w, _y + _h)) { + if(is_array(_icon_blend)) + cc = _icon_blend[1]; + res = 1; draw_sprite_stretched(spr, 1, _x, _y, _w, _h); if(_tip != "") @@ -87,13 +91,18 @@ function buttonInstant(spr, _x, _y, _w, _h, _m, _act, _hvr, _tip = "", _icon = n if(mouse_press(mb_right, _act)) res = 3; + if(mouse_release(mb_left, _act)) + res = -2; + if(mouse_release(mb_right, _act)) + res = -3; + if(mouse_click(mb_left, _act)) draw_sprite_stretched(spr, 2, _x, _y, _w, _h); } else draw_sprite_stretched(spr, 0, _x, _y, _w, _h); if(_icon) - draw_sprite_ui_uniform(_icon, _icon_index, _x + _w / 2, _y + _h / 2, 1, _icon_blend, _icon_alpha); + draw_sprite_ui_uniform(_icon, _icon_index, _x + _w / 2, _y + _h / 2, 1, cc, _icon_alpha); return res; } \ No newline at end of file diff --git a/scripts/color_function/color_function.gml b/scripts/color_function/color_function.gml index a819cbccd..52eb07d6d 100644 --- a/scripts/color_function/color_function.gml +++ b/scripts/color_function/color_function.gml @@ -17,15 +17,19 @@ function colorBrightness(clr) { } function colorMultiply(c1, c2) { - var r1 = color_get_red(c1) / 255; - var g1 = color_get_green(c1) / 255; - var b1 = color_get_blue(c1) / 255; + if(c1 * c2 == 0) return 0; + if(c1 == c_white) return c2; + if(c2 == c_white) return c1; - var r2 = color_get_red(c2) / 255; - var g2 = color_get_green(c2) / 255; - var b2 = color_get_blue(c2) / 255; + var r1 = color_get_red(c1); + var g1 = color_get_green(c1); + var b1 = color_get_blue(c1); - return make_color_rgb((r1 * r2) * 255, (g1 * g2) * 255, (b1 * b2) * 255); + var r2 = color_get_red(c2); + var g2 = color_get_green(c2); + var b2 = color_get_blue(c2); + + return make_color_rgb((r1 * r2) / 255, (g1 * g2) / 255, (b1 * b2) / 255); } function color_diff(c1, c2) { diff --git a/scripts/curve_bezier_function/curve_bezier_function.gml b/scripts/curve_bezier_function/curve_bezier_function.gml index 588b80112..908315ff2 100644 --- a/scripts/curve_bezier_function/curve_bezier_function.gml +++ b/scripts/curve_bezier_function/curve_bezier_function.gml @@ -72,7 +72,15 @@ function eval_curve_segment_t(_bz, t) { + power(t, 3) * _bz[5]; } -function eval_curve_x(_bz, _x, _prec = 0.00001) { +function eval_curve_x(_bz, _x, _prec = 0.00001) { + static _CURVE_DEF_01 = [0, 0, 0, 0, 1/3, 1/3, /**/ -1/3, -1/3, 1, 1, 0, 0]; + static _CURVE_DEF_10 = [0, 0, 0, 1, 1/3, -1/3, /**/ -1/3, 1/3, 1, 0, 0, 0]; + static _CURVE_DEF_11 = [0, 0, 0, 1, 1/3, 0, /**/ -1/3, 0, 1, 1, 0, 0]; + + if(array_equals(_bz, _CURVE_DEF_11)) return 1; + if(array_equals(_bz, _CURVE_DEF_01)) return _x; + if(array_equals(_bz, _CURVE_DEF_10)) return 1 - _x; + var segments = array_length(_bz) / 6 - 1; _x = clamp(_x, 0, 1); diff --git a/scripts/dialog_management/dialog_management.gml b/scripts/dialog_management/dialog_management.gml index 09e6e6d90..aa6c1362f 100644 --- a/scripts/dialog_management/dialog_management.gml +++ b/scripts/dialog_management/dialog_management.gml @@ -19,9 +19,9 @@ function dialogCall(_dia, _x = noone, _y = noone, param = {}) { return dia; } -function menuCall(_x = mouse_mx + ui(4), _y = mouse_my + ui(4), menu = []) { +function menuCall(_x = mouse_mx + ui(4), _y = mouse_my + ui(4), menu = [], align = fa_left) { var dia = dialogCall(o_dialog_menubox, _x, _y); - dia.setMenu(menu); + dia.setMenu(menu, align); return dia; } diff --git a/scripts/directory_object/directory_object.gml b/scripts/directory_object/directory_object.gml index e2b5791c6..824d4cb1a 100644 --- a/scripts/directory_object/directory_object.gml +++ b/scripts/directory_object/directory_object.gml @@ -5,7 +5,7 @@ function FileObject(_name, _path) constructor { spr = -1; content = -1; surface = noone; - meta = noone; + meta = noone; static getSurface = function() { if(is_surface(surface)) return surface; @@ -45,6 +45,12 @@ function FileObject(_name, _path) constructor { meta.version = m[? "version"]; meta.name = name; + switch(filename_ext(path)) { + case ".pxc" : meta.type = FILE_TYPE.project; break; + case ".pxcc" : meta.type = FILE_TYPE.collection; break; + default : meta.type = FILE_TYPE.assets; break; + } + ds_map_destroy(m); return meta; diff --git a/scripts/display_refresh/display_refresh.gml b/scripts/display_refresh/display_refresh.gml index a690dfb20..4aa3f04d8 100644 --- a/scripts/display_refresh/display_refresh.gml +++ b/scripts/display_refresh/display_refresh.gml @@ -13,8 +13,5 @@ function display_refresh() { PANEL_PREVIEW.fullView(); o_main.alarm[0] = 10; - - PREF_MAP[? "window_width"] = WIN_W; - PREF_MAP[? "window_height"] = WIN_H; PREF_SAVE(); } \ No newline at end of file diff --git a/scripts/gameframe/gameframe.gml b/scripts/gameframe/gameframe.gml index b67e0b460..d31765196 100644 --- a/scripts/gameframe/gameframe.gml +++ b/scripts/gameframe/gameframe.gml @@ -83,10 +83,14 @@ function gameframe_update() { if (__titleHit) { var __now = current_time; if (__now < gameframe_last_title_click_at + gameframe_double_click_time) { - if (gameframe_isMaximized_hx) gameframe_restore(); else gameframe_maximize(); + //if (gameframe_isMaximized_hx) gameframe_restore(); else gameframe_maximize(); } else { gameframe_last_title_click_at = __now; - if (gameframe_isMaximized_hx) gameframe_drag_start(32); else gameframe_drag_start(16); + if (gameframe_isMaximized_hx) { + gameframe_drag_start(32); + } else { + gameframe_drag_start(16); + } } } else if (__flags != 0 && gameframe_can_resize) { gameframe_drag_start(__flags); @@ -586,6 +590,7 @@ function gameframe_tools_rect_set_to(_this1, _o) { #region gameframe function gameframe_minimize() { + gameframe_drag_flags = 0; /// gameframe_minimize() /// @returns {void} if (gameframe_is_natively_minimized()) exit; @@ -931,6 +936,7 @@ function gameframe_delayed_item_create() { function gameframe_drag_start(__flags) { // gameframe_drag_start(_flags:int) + gameframe_drag_init = 0; gameframe_drag_flags = __flags; gameframe_drag_mx = (display_mouse_get_x() | 0); gameframe_drag_my = (display_mouse_get_y() | 0); @@ -942,6 +948,12 @@ function gameframe_drag_start(__flags) { function gameframe_drag_stop() { // gameframe_drag_stop() + + if(gameframe_drag_flags == 16) { + if(display_mouse_get_y() <= gameframe_resize_padding) + gameframe_maximize(); + } + gameframe_drag_flags = 0; } @@ -956,7 +968,17 @@ function gameframe_drag_update() { var __mx = (display_mouse_get_x() | 0); var __my = (display_mouse_get_y() | 0); switch (gameframe_drag_flags) { - case 16: window_set_position(__mx - (gameframe_drag_mx - gameframe_drag_left), __my - (gameframe_drag_my - gameframe_drag_top)); break; + case 16: + if(gameframe_drag_init == 0) { + var dist = point_distance(gameframe_drag_mx, gameframe_drag_my, __mx, __my); + if(dist > 8) { + gameframe_drag_init = 1; + //gameframe_drag_mx = __mx; + //gameframe_drag_my = __my; + } + } else + window_set_position(__mx - (gameframe_drag_mx - gameframe_drag_left), __my - (gameframe_drag_my - gameframe_drag_top)); + break; case 32: if (point_distance(__mx, __my, gameframe_drag_mx, gameframe_drag_my) > 5) { var __x; @@ -1029,6 +1051,7 @@ function gameframe_tools_keyctl_update() { for (var __g1 = array_length(gameframe_tools_keyctl_keys); _i < __g1; _i++) { gameframe_tools_keyctl_update_key(gameframe_tools_keyctl_keys[_i]); } + if (gameframe_tools_keyctl_up[2/* pressed */]) { if (gameframe_can_resize) gameframe_maximize(); } else if (gameframe_tools_keyctl_down[2/* pressed */]) { @@ -1278,6 +1301,8 @@ gameframe_delayed_frame_index = 0; // gameframe_drag: globalvar gameframe_drag_flags; /// @is {int} gameframe_drag_flags = 0; +globalvar gameframe_drag_init; /// @is {int} +gameframe_drag_init = 0; globalvar gameframe_drag_mx; /// @is {int} gameframe_drag_mx = 0; globalvar gameframe_drag_my; /// @is {int} diff --git a/scripts/globals/globals.gml b/scripts/globals/globals.gml index a64e09a98..3a0d1e6dc 100644 --- a/scripts/globals/globals.gml +++ b/scripts/globals/globals.gml @@ -30,7 +30,7 @@ globalvar VERSION, SAVEFILE_VERSION, VERSION_STRING; VERSION = 1130; SAVEFILE_VERSION = 1300; - VERSION_STRING = "1.13.pr14"; + VERSION_STRING = "1.13"; globalvar NODES, NODE_MAP, APPEND_MAP, HOTKEYS, HOTKEY_CONTEXT; @@ -56,10 +56,8 @@ HOVER = noone; DIALOG_CLICK = true; - globalvar ADD_NODE_PAGE, ADD_NODE_W, ADD_NODE_H; + globalvar ADD_NODE_PAGE; ADD_NODE_PAGE = 0; - ADD_NODE_W = -1; - ADD_NODE_H = -1; #endregion #region macro diff --git a/scripts/gradients_function/gradients_function.gml b/scripts/gradients_function/gradients_function.gml index b79b942bc..055cb4784 100644 --- a/scripts/gradients_function/gradients_function.gml +++ b/scripts/gradients_function/gradients_function.gml @@ -32,6 +32,8 @@ function draw_gradient(_x, _y, _w, _h, _grad, _int = GRADIENT_INTER.smooth) { var _grad_time = []; for(var i = 0; i < array_length(_grad); i++) { + if(_grad[i].value == undefined) return; + _grad_color[i * 4 + 0] = color_get_red(_grad[i].value) / 255; _grad_color[i * 4 + 1] = color_get_green(_grad[i].value) / 255; _grad_color[i * 4 + 2] = color_get_blue(_grad[i].value) / 255; @@ -104,6 +106,8 @@ function gradient_to_array(_gradient) { var _grad_color = [], _grad_time = []; for(var i = 0; i < array_length(_gradient); i++) { + if(is_undefined(_gradient[i].value)) continue; + _grad_color[i * 4 + 0] = color_get_red(_gradient[i].value) / 255; _grad_color[i * 4 + 1] = color_get_green(_gradient[i].value) / 255; _grad_color[i * 4 + 2] = color_get_blue(_gradient[i].value) / 255; diff --git a/scripts/load_function/load_function.gml b/scripts/load_function/load_function.gml index c27937c14..eca2065d8 100644 --- a/scripts/load_function/load_function.gml +++ b/scripts/load_function/load_function.gml @@ -14,6 +14,16 @@ function LOAD() { } function LOAD_PATH(path, readonly = false, safe_mode = false) { + if(MODIFIED && !READONLY) { + var dia = dialogCall(o_dialog_load); + dia.path = path; + dia.readonly = readonly; + dia.safe_mode = safe_mode; + } else + __LOAD_PATH(path, readonly, safe_mode); +} + +function __LOAD_PATH(path, readonly = false, safe_mode = false) { SAFE_MODE = safe_mode; if(DEMO) return false; @@ -28,18 +38,19 @@ function LOAD_PATH(path, readonly = false, safe_mode = false) { return false; } + LOADING = true; + nodeCleanUp(); clearPanel(); setPanel(); instance_destroy(_p_dialog); - room_restart(); + //room_restart(); var temp_path = DIRECTORY + "\_temp"; if(file_exists(temp_path)) file_delete(temp_path); file_copy(path, temp_path); ALWAYS_FULL = false; - LOADING = true; READONLY = readonly; SET_PATH(path); diff --git a/scripts/meta_data/meta_data.gml b/scripts/meta_data/meta_data.gml index 5f4916283..75cff6f4b 100644 --- a/scripts/meta_data/meta_data.gml +++ b/scripts/meta_data/meta_data.gml @@ -1,6 +1,12 @@ #region tags globalvar META_TAGS; META_TAGS = [ "3D", "Disappear", "Effect", "Filter", "Generator", "Transform", "Transition", "Utility" ]; + + enum FILE_TYPE { + project, + collection, + assets + } #endregion function MetaDataManager() constructor { @@ -9,6 +15,7 @@ function MetaDataManager() constructor { author = ""; contact = ""; alias = ""; + type = FILE_TYPE.collection; author_steam_id = 0; file_id = 0; tags = []; @@ -66,6 +73,22 @@ function MetaDataManager() constructor { var ww = ui(320), _w = 0; var _h = 0; + if(type == FILE_TYPE.assets) { + draw_set_font(f_p0); + _h = string_height(name); + _w = string_width(name); + + var mx = min(mouse_mx + ui(16), WIN_W - (_w + ui(16))); + var my = min(mouse_my + ui(16), WIN_H - (_h + ui(16))); + + draw_sprite_stretched(THEME.textbox, 3, mx, my, _w + ui(16), _h + ui(16)); + draw_sprite_stretched(THEME.textbox, 0, mx, my, _w + ui(16), _h + ui(16)); + + draw_set_text(f_p0, fa_left, fa_top, COLORS._main_text); + draw_text(mx + ui(8), my + ui(8), name); + return; + } + var _aut = "By " + author; var _ver = get_text("meta_old_version", "Created on an older version"); diff --git a/scripts/node_3d_combine/node_3d_combine.gml b/scripts/node_3d_combine/node_3d_combine.gml index 0f4728b46..6d0f81adf 100644 --- a/scripts/node_3d_combine/node_3d_combine.gml +++ b/scripts/node_3d_combine/node_3d_combine.gml @@ -52,7 +52,10 @@ function Node_3D_Combine(_x, _y, _group = -1) : Node(_x, _y, _group) constructor .setDisplay(VALUE_DISPLAY.slider, [ 0, 90, 1 ]) .rejectArray(); - input_display_list = [ 0, + inputs[| 13] = nodeValue("Scale view with dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true) + + input_display_list = [ + ["Surface", false], 0, 13, ["Object transform", false], 1, 2, 3, ["Camera", false], 11, 12, 4, 5, ["Light", false], 6, 7, 8, 9, 10, @@ -161,6 +164,7 @@ function Node_3D_Combine(_x, _y, _group = -1) : Node(_x, _y, _group) constructor var _proj = inputs[| 11].getValue(); var _fov = inputs[| 12].getValue(); + var _dimS = inputs[| 13].getValue(); inputs[| 12].setVisible(_proj); @@ -175,7 +179,10 @@ function Node_3D_Combine(_x, _y, _group = -1) : Node(_x, _y, _group) constructor case 2 : pass = "norm" break; } - _3d_pre_setup(_outSurf, _dim, _pos, _sca, _ldir, _lhgt, _lint, _lclr, _aclr, _lpos, _lrot, _lsca, _proj, _fov, pass, false); + var _cam = { projection: _proj, fov: _fov }; + var _scale = { local: false, dimension: _dimS }; + + _3d_pre_setup(_outSurf, _dim, _pos, _sca, _ldir, _lhgt, _lint, _lclr, _aclr, _lpos, _lrot, _lsca, _cam, pass, _scale); submit_vertex(); _3d_post_setup(); } diff --git a/scripts/node_3d_extrude/node_3d_extrude.gml b/scripts/node_3d_extrude/node_3d_extrude.gml index 78d402242..7127e0a0f 100644 --- a/scripts/node_3d_extrude/node_3d_extrude.gml +++ b/scripts/node_3d_extrude/node_3d_extrude.gml @@ -54,7 +54,10 @@ function Node_3D_Extrude(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) c inputs[| 17] = nodeValue("Field of view", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 60) .setDisplay(VALUE_DISPLAY.slider, [ 0, 90, 1 ]); - input_display_list = [1, + inputs[| 18] = nodeValue("Scale view with dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true) + + input_display_list = [ + ["Surface", false], 1, 18, ["Geometry", false], 0, 8, 14, ["Object transform", false], 2, 3, 4, ["Camera", false], 16, 17, 5, 7, 15, @@ -264,6 +267,7 @@ function Node_3D_Extrude(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) c var _proj = _data[16]; var _fov = _data[17]; + var _dimS = _data[18]; inputs[| 17].setVisible(_proj); @@ -279,7 +283,10 @@ function Node_3D_Extrude(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) c if(_upda && ANIMATOR.frame_progress) generateMesh(); - _3d_pre_setup(_outSurf, _dim, _pos, _sca, _ldir, _lhgt, _lint, _lclr, _aclr, _lpos, _lrot, _lsca, _proj, _fov, pass, false); + var _cam = { projection: _proj, fov: _fov }; + var _scale = { local: false, dimension: _dimS }; + + _3d_pre_setup(_outSurf, _dim, _pos, _sca, _ldir, _lhgt, _lint, _lclr, _aclr, _lpos, _lrot, _lsca, _cam, pass, _scale); submit_vertex(_array_index); _3d_post_setup(); diff --git a/scripts/node_3d_obj/node_3D_obj.gml b/scripts/node_3d_obj/node_3D_obj.gml index 28e22c2f5..6516c4eee 100644 --- a/scripts/node_3d_obj/node_3D_obj.gml +++ b/scripts/node_3d_obj/node_3D_obj.gml @@ -70,7 +70,10 @@ function Node_3D_Obj(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { .setDisplay(VALUE_DISPLAY.slider, [ 0, 90, 1 ]) .rejectArray(); - input_display_list = [ 2, + inputs[| 17] = nodeValue("Scale view with dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true) + + input_display_list = [ + ["Surface", false], 2, 17, ["Geometry", false], 0, 1, ["Object transform", false], 14, 13, 11, ["Camera", false], 15, 16, 3, 5, @@ -92,8 +95,10 @@ function Node_3D_Obj(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { _3d_node_init(2, /*Transform*/ 3, 13, 5); + tex_surface = surface_create(1, 1); + function reset_tex() { - tex_surface = surface_create(1, 1); + tex_surface = surface_verify(tex_surface, 1, 1); surface_set_target(tex_surface); draw_clear(c_black); surface_reset_target(); @@ -226,6 +231,7 @@ function Node_3D_Obj(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { var _proj = inputs[| 15].getValue(); var _fov = inputs[| 16].getValue(); + var _dimS = inputs[| 17].getValue(); inputs[| 16].setVisible(_proj == 1); @@ -239,10 +245,17 @@ function Node_3D_Obj(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { case 0 : pass = "diff" break; case 2 : pass = "norm" break; } - - _3d_pre_setup(_outSurf, _dim, _pos, _sca, _ldir, _lhgt, _lint, _lclr, _aclr, _lpos, _lrot, _lsca, _proj, _fov, pass, false); + + var _cam = { projection: _proj, fov: _fov }; + var _scale = { local: false, dimension: _dimS }; + + _3d_pre_setup(_outSurf, _dim, _pos, _sca, _ldir, _lhgt, _lint, _lclr, _aclr, _lpos, _lrot, _lsca, _cam, pass, _scale); submit_vertex(); _3d_post_setup(); } } + + static onCleanUp = function() { + surface_free(tex_surface); + } } \ No newline at end of file diff --git a/scripts/node_3d_object_transform/node_3d_object_transform.gml b/scripts/node_3d_object_transform/node_3d_object_transform.gml index 31849db48..1e8e66d04 100644 --- a/scripts/node_3d_object_transform/node_3d_object_transform.gml +++ b/scripts/node_3d_object_transform/node_3d_object_transform.gml @@ -43,7 +43,10 @@ function Node_3D_Transform(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) inputs[| 13] = nodeValue("Field of view", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 60) .setDisplay(VALUE_DISPLAY.slider, [ 0, 90, 1 ]); - input_display_list = [ 0, 11, + inputs[| 14] = nodeValue("Scale view with dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true) + + input_display_list = [ 11, + ["Surface", false], 0, 14, ["Object transform", false], 1, 2, 3, ["Camera", false], 12, 13, 4, 5, ["Light", true], 6, 7, 8, 9, 10, @@ -106,6 +109,7 @@ function Node_3D_Transform(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) var _proj = _data[12]; var _fov = _data[13]; + var _dimS = _data[14]; var pass = "diff"; switch(_output_index) { @@ -113,7 +117,10 @@ function Node_3D_Transform(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) case 2 : pass = "norm" break; } - _3d_pre_setup(_outSurf, _dim, _pos, _sca, _ldir, _lhgt, _lint, _lclr, _aclr, _lpos, _lrot, _lsca, _proj, _fov, pass, false); + var _cam = { projection: _proj, fov: _fov }; + var _scale = { local: false, dimension: _dimS }; + + _3d_pre_setup(_outSurf, _dim, _pos, _sca, _ldir, _lhgt, _lint, _lclr, _aclr, _lpos, _lrot, _lsca, _cam, pass, _scale); submit_vertex(); _3d_post_setup(); diff --git a/scripts/node_3d_prim_cone/node_3d_prim_cone.gml b/scripts/node_3d_prim_cone/node_3d_prim_cone.gml index 182c5e751..a0a9404a8 100644 --- a/scripts/node_3d_prim_cone/node_3d_prim_cone.gml +++ b/scripts/node_3d_prim_cone/node_3d_prim_cone.gml @@ -48,7 +48,10 @@ function Node_3D_Cone(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) cons inputs[| 16] = nodeValue("Textures side", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); - input_display_list = [0, + inputs[| 17] = nodeValue("Scale view with dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true) + + input_display_list = [ + ["Surface", false], 0, 17, ["Geometry", false], 14, ["Object transform", false], 11, 10, 4, ["Camera", false], 12, 13, 1, 3, @@ -160,6 +163,7 @@ function Node_3D_Cone(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) cons var _proj = _data[12]; var _fov = _data[13]; + var _dimS = _data[17]; inputs[| 13].setVisible(_proj); @@ -169,7 +173,10 @@ function Node_3D_Cone(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) cons case 2 : pass = "norm" break; } - _3d_pre_setup(_outSurf, _dim, _pos, _sca, _ldir, _lhgt, _lint, _lclr, _aclr, _lpos, _lrot, _lsca, _proj, _fov, pass); + var _cam = { projection: _proj, fov: _fov }; + var _scale = { local: true, dimension: _dimS }; + + _3d_pre_setup(_outSurf, _dim, _pos, _sca, _ldir, _lhgt, _lint, _lclr, _aclr, _lpos, _lrot, _lsca, _cam, pass, _scale); matrix_set(matrix_world, matrix_stack_top()); vertex_submit(VB_top, pr_trianglelist, surface_get_texture(face_bas)); diff --git a/scripts/node_3d_prim_cube/node_3d_prim_cube.gml b/scripts/node_3d_prim_cube/node_3d_prim_cube.gml index 79e3be4e8..9fc20c6bb 100644 --- a/scripts/node_3d_prim_cube/node_3d_prim_cube.gml +++ b/scripts/node_3d_prim_cube/node_3d_prim_cube.gml @@ -55,11 +55,14 @@ function Node_3D_Cube(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) cons inputs[| 21] = nodeValue("Field of view", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 60) .setDisplay(VALUE_DISPLAY.slider, [ 0, 90, 1 ]); - input_display_list = [1, - ["Object transform",false], 19, 18, 12, - ["Camera", false], 20, 21, 2, 4, - ["Texture", true], 0, 5, 6, 7, 8, 9, 10, 11, - ["Light", false], 13, 14, 15, 16, 17, + inputs[| 22] = nodeValue("Scale view with dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true) + + input_display_list = [ + ["Surface", false], 1, 22, + ["Object transform", false], 19, 18, 12, + ["Camera", false], 20, 21, 2, 4, + ["Texture", true], 0, 5, 6, 7, 8, 9, 10, 11, + ["Light", false], 13, 14, 15, 16, 17, ]; outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone); @@ -131,6 +134,7 @@ function Node_3D_Cube(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) cons var _proj = _data[20]; var _fov = _data[21]; + var _dimS = _data[22]; inputs[| 21].setVisible(_proj); @@ -143,7 +147,10 @@ function Node_3D_Cube(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) cons case 2 : pass = "norm" break; } - _3d_pre_setup(_outSurf, _dim, _pos, _sca, _ldir, _lhgt, _lint, _lclr, _aclr, _lpos, _lrot, _lsca, _proj, _fov, pass); + var _cam = { projection: _proj, fov: _fov }; + var _scale = { local: true, dimension: _dimS }; + + _3d_pre_setup(_outSurf, _dim, _pos, _sca, _ldir, _lhgt, _lint, _lclr, _aclr, _lpos, _lrot, _lsca, _cam, pass, _scale); if(_usetex) { for(var i = 0; i < 6; i++) { diff --git a/scripts/node_3d_prim_cylinder/node_3d_prim_cylinder.gml b/scripts/node_3d_prim_cylinder/node_3d_prim_cylinder.gml index 5723ab574..585ca6cd0 100644 --- a/scripts/node_3d_prim_cylinder/node_3d_prim_cylinder.gml +++ b/scripts/node_3d_prim_cylinder/node_3d_prim_cylinder.gml @@ -54,7 +54,10 @@ function Node_3D_Cylinder(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) inputs[| 19] = nodeValue("Taper", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1) .setDisplay(VALUE_DISPLAY.slider, [ 0, 1, 0.01 ]); - input_display_list = [2, + inputs[| 20] = nodeValue("Scale view with dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true) + + input_display_list = [ + ["Surface", false], 2, 20, ["Geometry", false], 0, 1, 19, ["Object transform", false], 16, 15, 9, ["Camera", false], 17, 18, 3, 5, @@ -187,6 +190,7 @@ function Node_3D_Cylinder(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) var _proj = _data[17]; var _fov = _data[18]; + var _dimS = _data[20]; inputs[| 18].setVisible(_proj); @@ -196,7 +200,10 @@ function Node_3D_Cylinder(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) case 2 : pass = "norm" break; } - _3d_pre_setup(_outSurf, _dim, _pos, _sca, _ldir, _lhgt, _lint, _lclr, _aclr, _lpos, _lrot, _lsca, _proj, _fov, pass); + var _cam = { projection: _proj, fov: _fov }; + var _scale = { local: true, dimension: _dimS }; + + _3d_pre_setup(_outSurf, _dim, _pos, _sca, _ldir, _lhgt, _lint, _lclr, _aclr, _lpos, _lrot, _lsca, _cam, pass, _scale); matrix_set(matrix_world, matrix_stack_top()); vertex_submit(VB_top, pr_trianglelist, surface_get_texture(face_top)); diff --git a/scripts/node_3d_prim_sphere/node_3d_prim_sphere.gml b/scripts/node_3d_prim_sphere/node_3d_prim_sphere.gml index 5314ce00b..d6339ab2c 100644 --- a/scripts/node_3d_prim_sphere/node_3d_prim_sphere.gml +++ b/scripts/node_3d_prim_sphere/node_3d_prim_sphere.gml @@ -48,7 +48,10 @@ function Node_3D_Sphere(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) co inputs[| 15] = nodeValue("Field of view", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 60) .setDisplay(VALUE_DISPLAY.slider, [ 0, 90, 1 ]); - input_display_list = [1, + inputs[| 16] = nodeValue("Scale view with dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true) + + input_display_list = [ + ["Surface", false], 1, 16, ["Geometry", false], 0, ["Object transform", false], 13, 12, 6, ["Camera", false], 14, 15, 2, 4, @@ -174,6 +177,7 @@ function Node_3D_Sphere(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) co var _proj = _data[14]; var _fov = _data[15]; + var _dimS = _data[16]; inputs[| 15].setVisible(_proj); @@ -183,7 +187,10 @@ function Node_3D_Sphere(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) co case 2 : pass = "norm" break; } - _3d_pre_setup(_outSurf, _dim, _pos, _sca, _ldir, _lhgt, _lint, _lclr, _aclr, _lpos, _lrot, _lsca, _proj, _fov, pass); + var _cam = { projection: _proj, fov: _fov }; + var _scale = { local: true, dimension: _dimS }; + + _3d_pre_setup(_outSurf, _dim, _pos, _sca, _ldir, _lhgt, _lint, _lclr, _aclr, _lpos, _lrot, _lsca, _cam, pass, _scale); vertex_submit(VB, pr_trianglelist, surface_get_texture(texture)); _3d_post_setup(); diff --git a/scripts/node_3d_repeat/node_3d_repeat.gml b/scripts/node_3d_repeat/node_3d_repeat.gml index 03197745e..3913d64a9 100644 --- a/scripts/node_3d_repeat/node_3d_repeat.gml +++ b/scripts/node_3d_repeat/node_3d_repeat.gml @@ -66,7 +66,10 @@ function Node_3D_Repeat(_x, _y, _group = -1) : Node(_x, _y, _group) constructor inputs[| 21] = nodeValue("Field of view", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 60) .setDisplay(VALUE_DISPLAY.slider, [ 0, 90, 1 ]); - input_display_list = [ 0, 11, + inputs[| 22] = nodeValue("Scale view with dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true) + + input_display_list = [ 11, + ["Surface", false], 0, 22, ["Object transform", true], 1, 2, 3, ["Camera", true], 20, 21, 4, 5, ["Light", true], 6, 7, 8, 9, 10, @@ -183,6 +186,7 @@ function Node_3D_Repeat(_x, _y, _group = -1) : Node(_x, _y, _group) constructor var _proj = inputs[| 20].getValue(); var _fov = inputs[| 21].getValue(); + var _dimS = inputs[| 22].getValue(); var _patt = inputs[| 16].getValue(); @@ -197,7 +201,10 @@ function Node_3D_Repeat(_x, _y, _group = -1) : Node(_x, _y, _group) constructor case 2 : pass = "norm" break; } - _3d_pre_setup(_outSurf, _dim, _pos, _sca, _ldir, _lhgt, _lint, _lclr, _aclr, _lpos, _lrot, _lsca, _proj, _fov, pass, false); + var _cam = { projection: _proj, fov: _fov }; + var _scale = { local: false, dimension: _dimS }; + + _3d_pre_setup(_outSurf, _dim, _pos, _sca, _ldir, _lhgt, _lint, _lclr, _aclr, _lpos, _lrot, _lsca, _cam, pass, _scale); submit_vertex(); _3d_post_setup(); } diff --git a/scripts/node_VFX_renderer/node_VFX_renderer.gml b/scripts/node_VFX_renderer/node_VFX_renderer.gml index b735ca886..0d512bf20 100644 --- a/scripts/node_VFX_renderer/node_VFX_renderer.gml +++ b/scripts/node_VFX_renderer/node_VFX_renderer.gml @@ -3,6 +3,8 @@ function Node_VFX_Renderer(_x, _y, _group = -1) : Node(_x, _y, _group) construct color = COLORS.node_blend_vfx; icon = THEME.vfx; + use_cache = true; + inputs[| 0] = nodeValue("Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2) .setDisplay(VALUE_DISPLAY.vector); @@ -25,6 +27,11 @@ function Node_VFX_Renderer(_x, _y, _group = -1) : Node(_x, _y, _group) construct outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone); + insp2UpdateTooltip = "Clear cache"; + insp2UpdateIcon = [ THEME.cache, 0, COLORS._main_icon ]; + + static onInspector2Update = function() { clearCache(); } + static refreshDynamicInput = function() { var _l = ds_list_create(); for( var i = 0; i < ds_list_size(inputs); i++ ) { @@ -51,6 +58,11 @@ function Node_VFX_Renderer(_x, _y, _group = -1) : Node(_x, _y, _group) construct } function update(_time = ANIMATOR.current_frame) { + if(!ANIMATOR.is_playing) { + recoverCache(); + return; + } + var _dim = inputs[| 0].getValue(_time); var _exact = inputs[| 1].getValue(_time); var _blend = inputs[| 2].getValue(_time); diff --git a/scripts/node_VFX_spawner/node_VFX_spawner.gml b/scripts/node_VFX_spawner/node_VFX_spawner.gml index a809c39f3..43f184eea 100644 --- a/scripts/node_VFX_spawner/node_VFX_spawner.gml +++ b/scripts/node_VFX_spawner/node_VFX_spawner.gml @@ -26,6 +26,14 @@ function Node_VFX_Spawner(_x, _y, _group = -1) : Node_VFX_Spawner_Base(_x, _y, _ } } + static onStep = function() { + RETURN_ON_REST + + if(ANIMATOR.current_frame == 0) + reset(); + runVFX(ANIMATOR.current_frame); + } + static onSpawn = function(_time, part) { part.step_int = inputs[| input_len + 1].getValue(_time); } diff --git a/scripts/node_blend/node_blend.gml b/scripts/node_blend/node_blend.gml index b56b7814d..c6714285b 100644 --- a/scripts/node_blend/node_blend.gml +++ b/scripts/node_blend/node_blend.gml @@ -46,7 +46,7 @@ function Node_Blend(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constr ["Transform", false], 5, 10, 11, ] - temp = surface_create(1, 1); + temp_surface = [ surface_create(1, 1) ]; static process_data = function(_outSurf, _data, _output_index, _array_index) { var _back = _data[0]; @@ -77,8 +77,8 @@ function Node_Blend(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constr var fw = surface_get_width(_fore); var fh = surface_get_height(_fore); - temp = surface_verify(temp, ww, hh); - _foreDraw = temp; + temp_surface[0] = surface_verify(temp_surface[0], ww, hh); + _foreDraw = temp_surface[0]; var sx = 0; var sy = 0; @@ -95,7 +95,7 @@ function Node_Blend(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constr case 2 : sy = hh - fh; break; } - surface_set_target(temp); + surface_set_target(temp_surface[0]); draw_clear_alpha(0, 0); BLEND_ALPHA draw_surface(_fore, sx, sy); diff --git a/scripts/node_blur_contrast/node_blur_contrast.gml b/scripts/node_blur_contrast/node_blur_contrast.gml index 7565f9ad7..220aea6a1 100644 --- a/scripts/node_blur_contrast/node_blur_contrast.gml +++ b/scripts/node_blur_contrast/node_blur_contrast.gml @@ -30,7 +30,7 @@ function Node_Blur_Contrast(_x, _y, _group = -1) : Node_Processor(_x, _y, _group outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone); - pass = surface_create(1, 1); + temp_surface = [ surface_create(1, 1) ]; static process_data = function(_outSurf, _data, _output_index, _array_index) { var _surf = _data[0]; @@ -42,9 +42,9 @@ function Node_Blur_Contrast(_x, _y, _group = -1) : Node_Processor(_x, _y, _group var ww = surface_get_width(_surf); var hh = surface_get_height(_surf); - pass = surface_verify(pass, ww, hh); + temp_surface[0] = surface_verify(temp_surface[0], ww, hh); - surface_set_target(pass); + surface_set_target(temp_surface[0]); draw_clear_alpha(0, 0); BLEND_OVERRIDE; shader_set(shader); @@ -62,7 +62,7 @@ function Node_Blur_Contrast(_x, _y, _group = -1) : Node_Processor(_x, _y, _group BLEND_OVERRIDE; shader_set(shader); shader_set_uniform_i(uniform_dir, 1); - draw_surface_safe(pass, 0, 0); + draw_surface_safe(temp_surface[0], 0, 0); shader_reset(); BLEND_NORMAL; surface_reset_target(); diff --git a/scripts/node_blur_radial/node_blur_radial.gml b/scripts/node_blur_radial/node_blur_radial.gml index 5fdce40f1..9ac43a95d 100644 --- a/scripts/node_blur_radial/node_blur_radial.gml +++ b/scripts/node_blur_radial/node_blur_radial.gml @@ -9,7 +9,7 @@ function Node_Blur_Radial(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) inputs[| 0] = nodeValue("Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); - inputs[| 1] = nodeValue("Strength", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1) + inputs[| 1] = nodeValue("Strength", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 45) .setDisplay(VALUE_DISPLAY.rotation); inputs[| 2] = nodeValue("Center", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ]) @@ -47,8 +47,8 @@ function Node_Blur_Radial(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) var _str = _data[1]; var _cen = _data[2]; var _sam = _data[3]; - var _mask = _data[3]; - var _mix = _data[4]; + var _mask = _data[4]; + var _mix = _data[5]; _cen[0] /= surface_get_width(_outSurf); _cen[1] /= surface_get_height(_outSurf); diff --git a/scripts/node_canvas/node_canvas.gml b/scripts/node_canvas/node_canvas.gml index 9d00cb30b..dc73542df 100644 --- a/scripts/node_canvas/node_canvas.gml +++ b/scripts/node_canvas/node_canvas.gml @@ -580,4 +580,8 @@ function Node_Canvas(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { buffer_set_surface(surface_buffer, canvas_surface, 0); surface_update(); } + + static onCleanUp = function() { + surface_free(canvas_surface); + } } \ No newline at end of file diff --git a/scripts/node_chromatic_aberration/node_chromatic_aberration.gml b/scripts/node_chromatic_aberration/node_chromatic_aberration.gml index aa37d54f7..4cdd8b337 100644 --- a/scripts/node_chromatic_aberration/node_chromatic_aberration.gml +++ b/scripts/node_chromatic_aberration/node_chromatic_aberration.gml @@ -8,9 +8,9 @@ function Node_Chromatic_Aberration(_x, _y, _group = -1) : Node_Processor(_x, _y, inputs[| 0] = nodeValue("Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); - inputs[| 1] = nodeValue("Center", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ]) + inputs[| 1] = nodeValue("Center", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0.5, 0.5 ]) .setDisplay(VALUE_DISPLAY.vector) - .setUnitRef(function(index) { return getDimension(index); }); + .setUnitRef(function(index) { return getDimension(index); }, VALUE_UNIT.reference); inputs[| 2] = nodeValue("Strength", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1) .setDisplay(VALUE_DISPLAY.slider, [-16, 16, 0.01]); diff --git a/scripts/node_composite/node_composite.gml b/scripts/node_composite/node_composite.gml index 077af9db2..67d9a2b50 100644 --- a/scripts/node_composite/node_composite.gml +++ b/scripts/node_composite/node_composite.gml @@ -236,7 +236,7 @@ function Node_Composite(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) co outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone); - temp_surf = [ surface_create(1, 1), surface_create(1, 1) ]; + temp_surface = [ surface_create(1, 1), surface_create(1, 1) ]; surf_dragging = -1; input_dragging = -1; @@ -554,9 +554,9 @@ function Node_Composite(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) co surface_size_to(_outSurf, ww, hh); for(var i = 0; i < 2; i++) { - temp_surf[i] = surface_verify(temp_surf[i], surface_get_width(_outSurf), surface_get_height(_outSurf)); + temp_surface[i] = surface_verify(temp_surface[i], surface_get_width(_outSurf), surface_get_height(_outSurf)); - surface_set_target(temp_surf[i]); + surface_set_target(temp_surface[i]); draw_clear_alpha(0, 0); surface_reset_target(); } diff --git a/scripts/node_data/node_data.gml b/scripts/node_data/node_data.gml index c0ce84037..4c6d4ab0e 100644 --- a/scripts/node_data/node_data.gml +++ b/scripts/node_data/node_data.gml @@ -17,8 +17,8 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) constructor { if(!LOADING && !APPENDING) { recordAction(ACTION_TYPE.node_added, self); NODE_MAP[? node_id] = self; + MODIFIED = true; } - MODIFIED = true; name = ""; display_name = ""; @@ -65,6 +65,7 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) constructor { use_cache = false; cached_output = []; cache_result = []; + temp_surface = []; tools = -1; @@ -173,9 +174,11 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) constructor { } static move = function(_x, _y) { + if(x == _x && y == _y) return; + x = _x; y = _y; - MODIFIED = true; + if(!LOADING) MODIFIED = true; } inspUpdateTooltip = get_text("panel_inspector_execute", "Execute node"); @@ -194,9 +197,7 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) constructor { insp2UpdateTooltip = get_text("panel_inspector_execute", "Execute node"); insp2UpdateIcon = [ THEME.sequence_control, 1, COLORS._main_value_positive ]; - static inspector2Update = function() { - onInspectorSecondaryUpdate(); - } + static inspector2Update = function() { onInspector2Update(); } static onInspector2Update = noone; static hasInspector2Update = function() { return onInspector2Update != noone; } @@ -297,7 +298,6 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) constructor { static triggerRender = function() { setRenderStatus(false); UPDATE |= RENDER_TYPE.partial; - cache_result[0] = false; //ds_queue_enqueue(RENDER_QUEUE, self); for(var i = 0; i < ds_list_size(outputs); i++) { @@ -450,8 +450,8 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) constructor { var xx = x * _s + _x; var yy = y * _s + _y; - show_input_name = point_in_rectangle(_mx, _my, xx - 8 * _s, yy + 20 * _s, xx + 8 * _s, yy + h * _s); - show_output_name = point_in_rectangle(_mx, _my, xx + (w - 8) * _s, yy + 20 * _s, xx + (w + 8) * _s, yy + h * _s); + show_input_name = PANEL_GRAPH.pHOVER && point_in_rectangle(_mx, _my, xx - 8 * _s, yy + 20 * _s, xx + 8 * _s, yy + h * _s); + show_output_name = PANEL_GRAPH.pHOVER && point_in_rectangle(_mx, _my, xx + (w - 8) * _s, yy + 20 * _s, xx + (w + 8) * _s, yy + h * _s); if(show_input_name) { for(var i = 0; i < amo; i++) { @@ -468,13 +468,11 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) constructor { } if(show_output_name) { - for(var i = 0; i < ds_list_size(outputs); i++) { + for(var i = 0; i < ds_list_size(outputs); i++) outputs[| i].drawNameBG(_s); - } - for(var i = 0; i < ds_list_size(outputs); i++) { + for(var i = 0; i < ds_list_size(outputs); i++) outputs[| i].drawName(_s, _mx, _my); - } } } @@ -498,7 +496,8 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) constructor { var c1 = value_color(jun.type); var hover = false; var th = max(1, PREF_MAP[? "connection_line_width"] * _s); - + + if(PANEL_GRAPH.pHOVER) switch(PREF_MAP[? "curve_connection_line"]) { case 0 : hover = distance_to_line(mx, my, jx, jy, frx, fry) < 6; @@ -719,6 +718,12 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) constructor { ds_list_clear(jun.value_to); } + for( var i = 0; i < ds_list_size(inputs); i++ ) + inputs[| i].destroy(); + + for( var i = 0; i < ds_list_size(outputs); i++ ) + outputs[| i].destroy(); + onDestroy(); } @@ -807,7 +812,7 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) constructor { static cacheExist = function(frame = ANIMATOR.current_frame) { if(frame >= array_length(cached_output)) return false; if(frame >= array_length(cache_result)) return false; - //if(!array_safe_get(cache_result, frame)) return false; + if(!array_safe_get(cache_result, frame, false)) return false; return true; } @@ -834,7 +839,7 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) constructor { return true; } static clearCache = function() { - return; + if(!use_cache) return; if(array_length(cached_output) != ANIMATOR.frames_total + 1) array_resize(cached_output, ANIMATOR.frames_total + 1); @@ -846,6 +851,12 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) constructor { cache_result[i] = false; } } + static clearCacheForward = function() { + clearCache(); + for( var i = 0; i < ds_list_size(outputs); i++ ) + for( var j = 0; j < ds_list_size(outputs[| i].value_to); j++ ) + outputs[| i].value_to[| j].node.clearCacheForward(); + } static checkConnectGroup = function(_type = "group") { var _y = y; @@ -1039,15 +1050,18 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) constructor { static postConnect = function() {} static cleanUp = function() { - for( var i = 0; i < ds_list_size(inputs); i++ ) { + for( var i = 0; i < ds_list_size(inputs); i++ ) inputs[| i].cleanUp(); - } - for( var i = 0; i < ds_list_size(outputs); i++ ) { + for( var i = 0; i < ds_list_size(outputs); i++ ) outputs[| i].cleanUp(); - } ds_list_destroy(inputs); ds_list_destroy(outputs); ds_map_destroy(attributes); + + for( var i = 0; i < array_length(temp_surface); i++ ) + surface_free(temp_surface[i]); } + + static onCleanUp = function() {} } \ No newline at end of file diff --git a/scripts/node_find_pixel/node_find_pixel.gml b/scripts/node_find_pixel/node_find_pixel.gml index 20ea137ea..e26abf152 100644 --- a/scripts/node_find_pixel/node_find_pixel.gml +++ b/scripts/node_find_pixel/node_find_pixel.gml @@ -15,7 +15,7 @@ function Node_Find_Pixel(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) c static getPreviewValue = function() { return inputs[| 0]; } - surf = surface_create(1, 1); + temp_surface = [ surface_create(1, 1) ]; function process_data(_output, _data, _output_index, _array_index = 0) { var _surf = _data[0]; @@ -23,9 +23,9 @@ function Node_Find_Pixel(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) c if(!is_surface(_surf)) return [0, 0]; - surf = surface_verify(surf, 1, 1); + temp_surface[0] = surface_verify(temp_surface[0], 1, 1); - surface_set_target(surf); + surface_set_target(temp_surface[0]); draw_clear_alpha(0, 0); shader_set(shader); texture_set_stage(shader_tex, surface_get_texture(_surf)); @@ -34,7 +34,7 @@ function Node_Find_Pixel(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) c shader_reset(); surface_reset_target(); - var pos = surface_getpixel(surf, 0, 0); + var pos = surface_getpixel(temp_surface[0], 0, 0); var _x = round(color_get_red(pos) / 255 * surface_get_width(_surf)); var _y = round(color_get_green(pos) / 255 * surface_get_height(_surf)); diff --git a/scripts/node_image_sequence/node_image_sequence.gml b/scripts/node_image_sequence/node_image_sequence.gml index 8dedfecd2..434f502f1 100644 --- a/scripts/node_image_sequence/node_image_sequence.gml +++ b/scripts/node_image_sequence/node_image_sequence.gml @@ -51,14 +51,8 @@ function Node_Image_Sequence(_x, _y, _group = -1) : Node(_x, _y, _group) constru .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Padding / Crop", "Scale" ]) .rejectArray(); - inputs[| 4] = nodeValue("Edit", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) - .setDisplay(VALUE_DISPLAY.button, [ function() { - with(dialogCall(o_dialog_image_array_edit, WIN_W / 2, WIN_H / 2)) - target = other; - }, "Edit array" ]); - input_display_list = [ - ["Sequence settings", false], 4, 0, 1, 2, 3 + ["Array settings", false], 0, 1, 2, 3 ]; outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, []); diff --git a/scripts/node_keyframe/node_keyframe.gml b/scripts/node_keyframe/node_keyframe.gml index 8a9500566..32db11863 100644 --- a/scripts/node_keyframe/node_keyframe.gml +++ b/scripts/node_keyframe/node_keyframe.gml @@ -197,7 +197,7 @@ function valueAnimator(_val, _prop) constructor { static setKeyTime = function(_key, _time, _replace = true) { if(!ds_list_exist(values, _key)) return 0; - MODIFIED = true; + if(!LOADING) MODIFIED = true; _time = max(_time, 0); _key.setTime(_time); @@ -224,8 +224,6 @@ function valueAnimator(_val, _prop) constructor { } static setValue = function(_val = 0, _record = true, _time = ANIMATOR.current_frame, ease_in = 0, ease_out = 0) { - MODIFIED = true; - if(!is_anim) { if(isEqual(values[| 0].value, _val)) return false; diff --git a/scripts/node_particle/node_particle.gml b/scripts/node_particle/node_particle.gml index fea8ce5e1..6020e9266 100644 --- a/scripts/node_particle/node_particle.gml +++ b/scripts/node_particle/node_particle.gml @@ -19,6 +19,11 @@ function Node_Particle(_x, _y, _group = -1) : Node_VFX_Spawner_Base(_x, _y, _gro def_surface = -1; + insp2UpdateTooltip = "Clear cache"; + insp2UpdateIcon = [ THEME.cache, 0, COLORS._main_icon ]; + + static onInspector2Update = function() { clearCache(); } + static onValueUpdate = function(index = 0) { if(index == input_len + 0) { var _dim = inputs[| input_len + 0].getValue(); @@ -27,13 +32,15 @@ function Node_Particle(_x, _y, _group = -1) : Node_VFX_Spawner_Base(_x, _y, _gro _outSurf = surface_verify(_outSurf, _dim[0], _dim[1]); outputs[| 0].setValue(_outSurf); } + + if(ANIMATOR.is_playing) + ANIMATOR.setFrame(-1); } static onStep = function() { - if(!ANIMATOR.frame_progress) return; + if(recoverCache() || !ANIMATOR.is_playing) + return; - RETURN_ON_REST - if(ANIMATOR.current_frame == 0) reset(); @@ -67,6 +74,7 @@ function Node_Particle(_x, _y, _group = -1) : Node_VFX_Spawner_Base(_x, _y, _gro BLEND_NORMAL; surface_reset_target(); - cacheCurrentFrame(_outSurf); + if(ANIMATOR.is_playing) + cacheCurrentFrame(_outSurf); } } \ No newline at end of file diff --git a/scripts/node_registry/node_registry.gml b/scripts/node_registry/node_registry.gml index bddaf0c2b..369b455a6 100644 --- a/scripts/node_registry/node_registry.gml +++ b/scripts/node_registry/node_registry.gml @@ -226,7 +226,7 @@ function NodeObject(_name, _spr, _node, _create, tags = []) constructor { addNodeObject(filter, "Corner", s_node_corner, "Node_Corner", [1, Node_Corner], ["round corner"]).set_version(1110); addNodeObject(filter, "2D Light", s_node_2d_light, "Node_2D_light", [1, Node_2D_light]); addNodeObject(filter, "Cast Shadow", s_node_shadow_cast, "Node_Shadow_Cast", [1, Node_Shadow_Cast]).set_version(1100); - addNodeObject(filter, "Pixel Expand", s_node_atlas, "Node_Atlas", [1, Node_Atlas]); + addNodeObject(filter, "Pixel Expand", s_node_atlas, "Node_Atlas", [1, Node_Atlas], ["atlas"]); addNodeObject(filter, "Pixel Cloud", s_node_pixel_cloud, "Node_Pixel_Cloud", [1, Node_Pixel_Cloud]); addNodeObject(filter, "Pixel Sort", s_node_pixel_sort, "Node_Pixel_Sort", [1, Node_Pixel_Sort]); addNodeObject(filter, "Edge Detect", s_node_edge_detect, "Node_Edge_Detect", [1, Node_Edge_Detect]); @@ -497,6 +497,8 @@ function NodeObject(_name, _spr, _node, _create, tags = []) constructor { } key = ds_map_find_next(NODE_MAP, key); } + + ds_map_clear(APPEND_MAP); ds_map_clear(NODE_MAP); ds_list_clear(NODES); } diff --git a/scripts/node_scatter/node_scatter.gml b/scripts/node_scatter/node_scatter.gml index 169b0a675..113c3829f 100644 --- a/scripts/node_scatter/node_scatter.gml +++ b/scripts/node_scatter/node_scatter.gml @@ -61,8 +61,6 @@ function Node_Scatter(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) cons ["Render", false], 11, 12, 16, ]; - temp_surf = [ surface_create(1, 1), surface_create(1, 1) ]; - static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) { if(process_amount > 1) return; @@ -127,7 +125,7 @@ function Node_Scatter(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) cons var _posDist = []; if(_dist == 2 && is_surface(_distMap)) - _posDist = get_points_from_dist(_distMap, _amount); + _posDist = get_points_from_dist(_distMap, _amount, seed); surface_set_target(_outSurf); draw_clear_alpha(0, 0); diff --git a/scripts/node_sdf/node_sdf.gml b/scripts/node_sdf/node_sdf.gml index dae215da2..91115245c 100644 --- a/scripts/node_sdf/node_sdf.gml +++ b/scripts/node_sdf/node_sdf.gml @@ -26,7 +26,7 @@ function Node_SDF(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) construc ["SDF", false], 2, 3, ] - pass = [ surface_create(1, 1), surface_create(1, 1) ]; + temp_surface = [ surface_create(1, 1), surface_create(1, 1) ]; static process_data = function(_outSurf, _data, _output_index, _array_index) { var inSurf = _data[0]; @@ -36,11 +36,11 @@ function Node_SDF(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) construc var sh = surface_get_height(inSurf); var n = max(sw, sh); - pass[0] = surface_verify(pass[0], n, n); - pass[1] = surface_verify(pass[1], n, n); + temp_surface[0] = surface_verify(temp_surface[0], n, n); + temp_surface[1] = surface_verify(temp_surface[1], n, n); _outSurf = surface_verify(_outSurf, sw, sh); - surface_set_target(pass[0]); + surface_set_target(temp_surface[0]); draw_clear_alpha(0, 0); BLEND_OVERRIDE; @@ -60,7 +60,7 @@ function Node_SDF(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) construc stepSize /= 2; bg = !bg; - surface_set_target(pass[bg]); + surface_set_target(temp_surface[bg]); draw_clear_alpha(0, 0); BLEND_OVERRIDE; @@ -68,7 +68,7 @@ function Node_SDF(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) construc shader_set_uniform_f(uniform_sdf_dim, n, n ); shader_set_uniform_f(uniform_sdf_stp, stepSize); shader_set_uniform_i(uniform_sdf_sid, _side); - draw_surface_safe(pass[!bg], 0, 0); + draw_surface_safe(temp_surface[!bg], 0, 0); shader_reset(); BLEND_NORMAL; @@ -82,7 +82,7 @@ function Node_SDF(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) construc shader_set(sh_sdf_dist); shader_set_uniform_i(uniform_dst_sid, _side); shader_set_uniform_f(uniform_dst_dst, _dist); - draw_surface_safe(pass[bg], 0, 0); + draw_surface_safe(temp_surface[bg], 0, 0); shader_reset(); BLEND_NORMAL; diff --git a/scripts/node_seperate_shapes/node_seperate_shapes.gml b/scripts/node_seperate_shapes/node_seperate_shapes.gml index 301394f35..f8a8f341f 100644 --- a/scripts/node_seperate_shapes/node_seperate_shapes.gml +++ b/scripts/node_seperate_shapes/node_seperate_shapes.gml @@ -34,7 +34,7 @@ function Node_Seperate_Shape(_x, _y, _group = -1) : Node(_x, _y, _group) constru ["Render", false], 2, 3, ] - temp_surf = [ surface_create(1, 1), surface_create(1, 1) ]; + temp_surface = [ surface_create(1, 1), surface_create(1, 1) ]; surface_buffer = buffer_create(1 * 1 * 4, buffer_fixed, 2); surface_w = 1; surface_h = 1; @@ -63,16 +63,16 @@ function Node_Seperate_Shape(_x, _y, _group = -1) : Node(_x, _y, _group) constru surface_h = hh; for(var i = 0; i < 2; i++) { - temp_surf[i] = surface_verify(temp_surf[i], ww, hh); + temp_surface[i] = surface_verify(temp_surface[i], ww, hh); - surface_set_target(temp_surf[i]); + surface_set_target(temp_surface[i]); draw_clear_alpha(0, 0); surface_reset_target(); } shader_set(sh_seperate_shape_index); shader_set_uniform_i(shader_get_uniform(sh_seperate_shape_index, "ignore"), _ignore); - surface_set_target(temp_surf[1]); + surface_set_target(temp_surface[1]); draw_sprite_stretched(s_fx_pixel, 0, 0, 0, ww, hh); surface_reset_target(); shader_reset(); @@ -89,10 +89,10 @@ function Node_Seperate_Shape(_x, _y, _group = -1) : Node(_x, _y, _group) constru var bg = i % 2; var fg = !bg; - surface_set_target(temp_surf[bg]); + surface_set_target(temp_surface[bg]); draw_clear_alpha(0, 0); BLEND_OVERRIDE; - draw_surface_safe(temp_surf[fg], 0, 0); + draw_surface_safe(temp_surface[fg], 0, 0); BLEND_NORMAL; surface_reset_target(); @@ -106,7 +106,7 @@ function Node_Seperate_Shape(_x, _y, _group = -1) : Node(_x, _y, _group) constru draw_clear_alpha(0, 0); BLEND_OVERRIDE; shader_set(sh_seperate_shape_counter); - texture_set_stage(shader_get_sampler_index(sh_seperate_shape_counter, "surface"), surface_get_texture(temp_surf[res_index])); + texture_set_stage(shader_get_sampler_index(sh_seperate_shape_counter, "surface"), surface_get_texture(temp_surface[res_index])); shader_set_uniform_f_array_safe(shader_get_uniform(sh_seperate_shape_counter, "dimension"), [ ww, hh ]); shader_set_uniform_i(shader_get_uniform(sh_seperate_shape_counter, "maxShape"), PREF_MAP[? "shape_separation_max"]); shader_set_uniform_i(shader_get_uniform(sh_seperate_shape_counter, "ignore"), _ignore); @@ -127,7 +127,7 @@ function Node_Seperate_Shape(_x, _y, _group = -1) : Node(_x, _y, _group) constru buffer_delete(surface_buffer); surface_buffer = buffer_create(ww * hh * 4, buffer_fixed, 2); - buffer_get_surface(surface_buffer, temp_surf[res_index], 0); + buffer_get_surface(surface_buffer, temp_surface[res_index], 0); for(var i = 0; i < px; i++) { _outSurf = surface_create_valid(ww, hh); @@ -170,7 +170,7 @@ function Node_Seperate_Shape(_x, _y, _group = -1) : Node(_x, _y, _group) constru shader_set_uniform_f(shader_get_uniform(sh_seperate_shape_sep, "color"), red, green, blue, alpha); shader_set_uniform_i(shader_get_uniform(sh_seperate_shape_sep, "override"), _ovr); shader_set_uniform_f_array_safe(shader_get_uniform(sh_seperate_shape_sep, "overColor"), colToVec4(_ovrclr)); - draw_surface_safe(temp_surf[res_index], 0, 0); + draw_surface_safe(temp_surface[res_index], 0, 0); shader_reset(); BLEND_NORMAL; surface_reset_target(); diff --git a/scripts/node_shadow_cast/node_shadow_cast.gml b/scripts/node_shadow_cast/node_shadow_cast.gml index 472125403..e335a26fd 100644 --- a/scripts/node_shadow_cast/node_shadow_cast.gml +++ b/scripts/node_shadow_cast/node_shadow_cast.gml @@ -81,7 +81,7 @@ function Node_Shadow_Cast(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) .setDisplay(VALUE_DISPLAY.slider, [0, 16, 1]); inputs[| 16] = nodeValue("Ambient occlusion strength", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.1) - .setDisplay(VALUE_DISPLAY.slider, [0, 0.2, 0.01]); + .setDisplay(VALUE_DISPLAY.slider, [0, 0.5, 0.01]); inputs[| 17] = nodeValue("Active", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true); active_index = 17; diff --git a/scripts/node_trail/node_trail.gml b/scripts/node_trail/node_trail.gml index 05160db3a..b984e10f8 100644 --- a/scripts/node_trail/node_trail.gml +++ b/scripts/node_trail/node_trail.gml @@ -6,8 +6,10 @@ function Node_Trail(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { uni_dimension = shader_get_uniform(shader1, "dimension"); uni_mode = shader_get_uniform(shader1, "mode"); uni_range = shader_get_uniform(shader1, "range"); + uni_colr = shader_get_uniform(shader1, "matchColor"); + uni_blend = shader_get_uniform(shader1, "blendColor"); uni_seg_st = shader_get_uniform(shader1, "segmentStart"); - uni_seg_sz = shader_get_uniform(shader1, "segmentSize"); + uni_seg_sz = shader_get_uniform(shader1, "segmentSize"); uni_sam_prev = shader_get_sampler_index(shader1, "prevFrame"); shader2 = sh_trail_filler_pass2; @@ -15,11 +17,17 @@ function Node_Trail(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { inputs[| 0] = nodeValue("Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); - inputs[| 1] = nodeValue("Max life", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 5); + inputs[| 1] = nodeValue("Max life", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 5); - inputs[| 2] = nodeValue("Loop", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false); + inputs[| 2] = nodeValue("Loop", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false); - inputs[| 3] = nodeValue("Max distance", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, -1); + inputs[| 3] = nodeValue("Max distance", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, -1, "Maximum distance to search for movement, set to -1 to search the entire image."); + + inputs[| 4] = nodeValue("Match color", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true, "Make trail track pixels of the same color, instead of the closet pixels."); + + inputs[| 5] = nodeValue("Blend color", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true, "Blend color between two pixel smoothly."); + + inputs[| 6] = nodeValue("Alpha over life", self, JUNCTION_CONNECT.input, VALUE_TYPE.curve, CURVE_DEF_11); outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone); @@ -27,10 +35,18 @@ function Node_Trail(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { input_display_list = [ ["Surface", true], 0, - ["Trail settings", false], 1, 3, 2 + ["Trail settings", false], 1, 2, + ["Tracking", false], 3, 4, 5, + ["Modification", false], 6, ]; - temp = [ surface_create(1, 1), surface_create(1, 1), surface_create(1, 1) ]; + temp_surface = [ surface_create(1, 1), surface_create(1, 1), surface_create(1, 1) ]; + + static step = function() { + var _colr = inputs[| 4].getValue(); + + inputs[| 5].setVisible(!_colr); + } static update = function() { if(!inputs[| 0].value_from) return; @@ -40,13 +56,16 @@ function Node_Trail(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { var _life = inputs[| 1].getValue(); var _loop = inputs[| 2].getValue(); var _rang = inputs[| 3].getValue(); + var _colr = inputs[| 4].getValue(); + var _blend = inputs[| 5].getValue(); + var _alpha = inputs[| 6].getValue(); if(!is_surface(_surf)) return; cacheCurrentFrame(_surf); - for( var i = 0; i < array_length(temp); i++ ) { - temp[i] = surface_verify(temp[i], surface_get_width(_surf), surface_get_height(_surf)); - surface_set_target(temp[i]); + for( var i = 0; i < array_length(temp_surface); i++ ) { + temp_surface[i] = surface_verify(temp_surface[i], surface_get_width(_surf), surface_get_height(_surf)); + surface_set_target(temp_surface[i]); draw_clear_alpha(0, 0); surface_reset_target(); } @@ -70,58 +89,64 @@ function Node_Trail(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { if(_loop && frame_idx < 0) frame_idx = ANIMATOR.frames_total + frame_idx; var prev = _loop? safe_mod(frame_idx - 1 + ANIMATOR.frames_total, ANIMATOR.frames_total) : frame_idx - 1; - if(!is_surface(getCacheFrame(frame_idx))) continue; + var _prevFrame = getCacheFrame(prev); + var _currFrame = getCacheFrame(frame_idx); - if(!is_surface(getCacheFrame(prev))) { - surface_set_target(temp[0]); - draw_surface(getCacheFrame(frame_idx), 0, 0); + if(!is_surface(_currFrame)) continue; + + if(!is_surface(_prevFrame)) { + surface_set_target(temp_surface[0]); + draw_surface(_currFrame, 0, 0); surface_reset_target(); - surface_set_target(temp[2]); - draw_surface(getCacheFrame(frame_idx), 0, 0); + surface_set_target(temp_surface[2]); + draw_surface(_currFrame, 0, 0); surface_reset_target(); continue; } shader_set(shader1); shader_set_uniform_f(uni_dimension, surface_get_width(_surf), surface_get_height(_surf)); - shader_set_uniform_f(uni_range, _rang? _rang : surface_get_width(_surf) / 2); + shader_set_uniform_f(uni_range, _rang? _rang : surface_get_width(_surf) * 1.5); + shader_set_uniform_i(uni_colr, _colr); + shader_set_uniform_i(uni_blend, _blend); shader_set_uniform_f(uni_seg_st, (frame_amo - i) / frame_amo); shader_set_uniform_f(uni_seg_sz, 1 / frame_amo); - texture_set_stage(uni_sam_prev, surface_get_texture(getCacheFrame(prev))); + texture_set_stage(uni_sam_prev, surface_get_texture(_prevFrame)); shader_set_uniform_i(uni_mode, 1); - surface_set_target(temp[0]); - draw_surface(getCacheFrame(frame_idx), 0, 0); + surface_set_target(temp_surface[0]); + draw_surface(_currFrame, 0, 0); surface_reset_target(); shader_set_uniform_i(uni_mode, 0); - surface_set_target(temp[2]); - draw_surface(getCacheFrame(frame_idx), 0, 0); + surface_set_target(temp_surface[2]); + draw_surface(_currFrame, 0, 0); surface_reset_target(); shader_reset(); } - surface_set_target(temp[1]); + surface_set_target(temp_surface[1]); shader_set(shader2); shader_set_uniform_f(uni2_dimension, surface_get_width(_surf), surface_get_height(_surf)); - draw_surface(temp[0], 0, 0); + draw_surface(temp_surface[0], 0, 0); shader_reset(); surface_reset_target(); surface_set_target(_outUV); draw_clear_alpha(0, 0); BLEND_ALPHA; - draw_surface_safe(temp[1], 0, 0); + draw_surface_safe(temp_surface[1], 0, 0); BLEND_NORMAL; surface_reset_target(); surface_set_target(_outSurf); draw_clear_alpha(0, 0); BLEND_ALPHA; - draw_surface_safe(temp[2], 0, 0); + draw_surface_safe(temp_surface[2], 0, 0); BLEND_NORMAL; surface_reset_target(); } + } \ No newline at end of file diff --git a/scripts/node_value/node_value.gml b/scripts/node_value/node_value.gml index a706f5084..ed1f72e83 100644 --- a/scripts/node_value/node_value.gml +++ b/scripts/node_value/node_value.gml @@ -419,6 +419,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru switch(display_type) { case VALUE_DISPLAY._default : editWidget = new textBox(_txt, function(val) { + MODIFIED = true; return setValueDirect(val); } ); editWidget.slidable = true; @@ -429,6 +430,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru break; case VALUE_DISPLAY.range : editWidget = new rangeBox(_txt, function(index, val) { + MODIFIED = true; var _val = animator.getValue(); _val[index] = val; return setValueDirect(_val); @@ -442,6 +444,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru var val = animator.getValue(); if(array_length(val) <= 4) { editWidget = new vectorBox(array_length(animator.getValue()), _txt, function(index, val) { + MODIFIED = true; var _val = animator.getValue(); _val[index] = val; return setValueDirect(_val); @@ -461,6 +464,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru var val = animator.getValue(); editWidget = new vectorRangeBox(array_length(val), _txt, function(index, val) { + MODIFIED = true; var _val = animator.getValue(); _val[index] = val; return setValueDirect(_val); @@ -477,6 +481,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru break; case VALUE_DISPLAY.rotation : editWidget = new rotator(function(val, _save) { + MODIFIED = true; return setValueDirect(val, _save); }, display_data ); @@ -484,6 +489,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru break; case VALUE_DISPLAY.rotation_range : editWidget = new rotatorRange(function(index, val) { + MODIFIED = true; var _val = animator.getValue(); _val[index] = round(val); return setValueDirect(_val); @@ -493,6 +499,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru break; case VALUE_DISPLAY.slider : editWidget = new slider(display_data[0], display_data[1], display_data[2], function(val) { + MODIFIED = true; return setValueDirect(toNumber(val)); } ); if(type == VALUE_TYPE.integer) editWidget.setSlideSpeed(1); @@ -500,7 +507,8 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru extract_node = "Node_Number"; break; case VALUE_DISPLAY.slider_range : - editWidget = new sliderRange(display_data[0], display_data[1], display_data[2], function(index, val) { + editWidget = new sliderRange(display_data[0], display_data[1], display_data[2], function(index, val) { + MODIFIED = true; var _val = animator.getValue(); _val[index] = val; return setValueDirect(_val); @@ -511,6 +519,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru break; case VALUE_DISPLAY.area : editWidget = new areaBox(function(index, val) { + MODIFIED = true; var _val = animator.getValue(); _val[index] = val; return setValueDirect(_val); @@ -522,6 +531,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru break; case VALUE_DISPLAY.padding : editWidget = new paddingBox(function(index, val) { + MODIFIED = true; var _val = animator.getValue(); _val[index] = val; return setValueDirect(_val); @@ -533,6 +543,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru break; case VALUE_DISPLAY.puppet_control : editWidget = new controlPointBox(function(index, val) { + MODIFIED = true; var _val = animator.getValue(); _val[index] = val; return setValueDirect(_val); @@ -542,6 +553,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru break; case VALUE_DISPLAY.enum_scroll : editWidget = new scrollBox(display_data, function(val) { + MODIFIED = true; if(val == -1) return; return setValueDirect(toNumber(val)); } ); @@ -551,6 +563,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru break; case VALUE_DISPLAY.enum_button : editWidget = buttonGroup(display_data, function(val) { + MODIFIED = true; return setValueDirect(val); } ); @@ -558,7 +571,8 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru extract_node = ""; break; case VALUE_DISPLAY.kernel : - editWidget = new matrixGrid(_txt, function(index, val) { + editWidget = new matrixGrid(_txt, function(index, val) { + MODIFIED = true; var _val = animator.getValue(); _val[index] = val; return setValueDirect(_val); @@ -572,6 +586,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru break; case VALUE_TYPE.boolean : editWidget = new checkBox(function() { + MODIFIED = true; return setValueDirect(!animator.getValue()); } ); @@ -581,6 +596,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru switch(display_type) { case VALUE_DISPLAY._default : editWidget = buttonColor(function(color) { + MODIFIED = true; return setValueDirect(color); } ); @@ -588,6 +604,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru break; case VALUE_DISPLAY.gradient : editWidget = buttonGradient(function(gradient) { + MODIFIED = true; return setValueDirect(gradient); } ); @@ -597,6 +614,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru break; case VALUE_DISPLAY.palette : editWidget = buttonPalette(function(color) { + MODIFIED = true; return setValueDirect(color); } ); @@ -607,17 +625,12 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru case VALUE_TYPE.path : switch(display_type) { case VALUE_DISPLAY.path_array : - editWidget = button(function() { - var path = get_open_filenames(display_data[0], display_data[1]); - if(path == "") return noone; - var paths = string_splice(path, "\n"); - return setValueDirect(paths); - }); + editWidget = new pathArrayBox(node, display_data, function(path) { setValueDirect(path); } ); break; - case VALUE_DISPLAY.path_load : editWidget = new textBox(TEXTBOX_INPUT.text, function(str) { setValueDirect(str); }, button(function() { + MODIFIED = true; var path = get_open_filename(display_data[0], display_data[1]); if(path == "") return noone; return setValueDirect(path); @@ -630,6 +643,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru case VALUE_DISPLAY.path_save : editWidget = new textBox(TEXTBOX_INPUT.text, function(str) { setValueDirect(str); }, button(function() { + MODIFIED = true; var path = get_save_filename(display_data[0], display_data[1]); if(path == "") return noone; return setValueDirect(path); @@ -643,6 +657,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru case VALUE_DISPLAY.path_font : editWidget = new fontScrollBox( function(val) { + MODIFIED = true; return setValueDirect(DIRECTORY + "Fonts\\" + FONT_INTERNAL[val]); } ); @@ -652,6 +667,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru case VALUE_TYPE.curve : display_type = VALUE_DISPLAY.curve; editWidget = new curveBox(function(_modified) { + MODIFIED = true; return setValueDirect(_modified); }); break; @@ -659,6 +675,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru switch(display_type) { case VALUE_DISPLAY._default : editWidget = new textArea(TEXTBOX_INPUT.text, function(str) { + MODIFIED = true; return setValueDirect(str); }); extract_node = "Node_String"; @@ -666,6 +683,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru case VALUE_DISPLAY.code : editWidget = new textArea(TEXTBOX_INPUT.text, function(str) { + MODIFIED = true; return setValueDirect(str); }); @@ -676,12 +694,16 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru break; case VALUE_DISPLAY.text_array : - editWidget = new textArrayBox(function() { return animator.values[| 0].value; }, display_data, function() { node.update(); }); + editWidget = new textArrayBox(function() { + MODIFIED = true; + return animator.values[| 0].value; }, display_data, function() { node.update(); + }); break; } break; case VALUE_TYPE.surface : editWidget = new surfaceBox(function(ind) { + MODIFIED = true; return setValueDirect(ind); }, display_data ); show_in_inspector = true; @@ -982,9 +1004,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru node.valueUpdate(index); } - if(node.use_cache) - node.clearCache(); - MODIFIED = true; + node.clearCacheForward(); cache_array[0] = false; cache_value[0] = false; } @@ -1073,13 +1093,13 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru if(_update && connect_type == JUNCTION_CONNECT.input) { node.onValueFromUpdate(index); node.triggerRender(); - if(node.use_cache) node.clearCache(); + node.clearCacheForward(); } cache_array[0] = false; cache_value[0] = false; - MODIFIED = true; + if(!LOADING) MODIFIED = true; return true; } @@ -1186,7 +1206,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru case VALUE_DISPLAY.vector : var _spr = argument_count > 8? argument[8] : THEME.anchor_selector; var _sca = argument_count > 9? argument[9] : 1; - return preview_overlay_vector(active, _x, _y, _s, _mx, _my, _snx, _sny, _spr, _sca); + return preview_overlay_vector(active, _x, _y, _s, _mx, _my, _snx, _sny, _spr); case VALUE_DISPLAY.area : return preview_overlay_area(active, _x, _y, _s, _mx, _my, _snx, _sny, display_data); @@ -1205,7 +1225,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru var ss = max(0.25, _s / 2); var is_hover = false; - if(point_in_circle(_mx, _my, x, y, 10 * _s)) { + if(PANEL_GRAPH.pHOVER && point_in_circle(_mx, _my, x, y, 10 * _s)) { is_hover = true; draw_sprite_ext(isArray()? THEME.node_junctions_array_hover : THEME.node_junctions_single_hover, type, x, y, ss, ss, 0, c_white, 1); } else { @@ -1234,7 +1254,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru static drawName = function(_s, _mx, _my) { if(!isVisible()) return false; - var _hover = point_in_circle(_mx, _my, x, y, 10 * _s); + var _hover = PANEL_GRAPH.pHOVER && point_in_circle(_mx, _my, x, y, 10 * _s); var _draw_cc = _hover? COLORS._main_text : COLORS._main_text_sub; draw_set_text(f_p1, fa_left, fa_center, _draw_cc); @@ -1389,6 +1409,13 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru return false; } + static destroy = function() { + if(error_notification != noone) { + noti_remove(error_notification); + error_notification = noone; + } + } + static cleanUp = function() { ds_list_destroy(value_to); ds_list_destroy(extra_data); diff --git a/scripts/panel_collection/panel_collection.gml b/scripts/panel_collection/panel_collection.gml index 03f47245b..371a9c239 100644 --- a/scripts/panel_collection/panel_collection.gml +++ b/scripts/panel_collection/panel_collection.gml @@ -141,9 +141,9 @@ function Panel_Collection() : PanelContent() constructor { var row = ceil(node_count / col); var yy = _y + grid_space; var name_height = 0; - + hh += grid_space; - + for(var i = 0; i < row; i++) { name_height = 0; for(var j = 0; j < col; j++) { @@ -212,10 +212,11 @@ function Panel_Collection() : PanelContent() constructor { } draw_set_text(f_p2, fa_center, fa_top, COLORS._main_text); - name_height = max(name_height, string_height_ext(_node.name, -1, grid_size) + 8); + name_height = max(name_height, string_height_ext(_node.name, -1, grid_width) + 8); draw_text_ext_over(_boxx + grid_size / 2, yy + grid_size + ui(4), _node.name, -1, grid_width); } - var hght = grid_size + grid_space + name_height; + + var hght = grid_size + name_height + ui(8); hh += hght; yy += hght; } diff --git a/scripts/panel_data/panel_data.gml b/scripts/panel_data/panel_data.gml index 11dc604aa..e12a7ffda 100644 --- a/scripts/panel_data/panel_data.gml +++ b/scripts/panel_data/panel_data.gml @@ -10,6 +10,7 @@ function Panel(_parent, _x, _y, _w, _h) constructor { parent = _parent; if(parent) ds_list_add(parent.childs, self); + padding = ui(2); content = noone; childs = ds_list_create(); anchor = ANCHOR.none; @@ -33,12 +34,17 @@ function Panel(_parent, _x, _y, _w, _h) constructor { surface_set_target(mask_surface); draw_clear(c_black); gpu_set_blendmode(bm_subtract); - draw_sprite_stretched(THEME.ui_panel_bg, 0, ui(2), ui(2), w - ui(4), h - ui(4)); + draw_sprite_stretched(THEME.ui_panel_bg, 0, padding, padding, w - padding * 2, h - padding * 2); gpu_set_blendmode(bm_normal); surface_reset_target(); } resetMask(); + function setPadding(padding) { + self.padding = padding; + resetMask(); + } + function refresh() { if(is_surface(content_surface) && surface_exists(content_surface)) surface_size_to(content_surface, w, h); @@ -354,7 +360,7 @@ function Panel(_parent, _x, _y, _w, _h) constructor { function drawPanel() { if(w <= ui(16)) return; - draw_sprite_stretched(THEME.ui_panel_bg, 0, x + ui(2), y + ui(2), w - ui(4), h - ui(4)); + draw_sprite_stretched(THEME.ui_panel_bg, 0, x + padding, y + padding, w - padding * 2, h - padding * 2); if(!is_surface(mask_surface)) { mask_surface = surface_create_valid(w, h); @@ -379,7 +385,7 @@ function Panel(_parent, _x, _y, _w, _h) constructor { draw_surface_safe(content_surface, x, y); if(FOCUS == self) - draw_sprite_stretched_ext(THEME.ui_panel_active, 0, x + ui(2), y + ui(2), w - ui(4), h - ui(4), COLORS._main_accent, 1); + draw_sprite_stretched_ext(THEME.ui_panel_active, 0, x + padding, y + padding, w - padding * 2, h - padding * 2, COLORS._main_accent, 1); } function remove() { diff --git a/scripts/panel_function/panel_function.gml b/scripts/panel_function/panel_function.gml index b77943105..966c5747d 100644 --- a/scripts/panel_function/panel_function.gml +++ b/scripts/panel_function/panel_function.gml @@ -38,7 +38,7 @@ } function setPanel() { - PANEL_MAIN = new Panel(noone, 0, 0, WIN_SW, WIN_SH); + PANEL_MAIN = new Panel(noone, ui(2), ui(2), WIN_SW - ui(4), WIN_SH - ui(4)); PANEL_MENU = new Panel_Menu(); PANEL_INSPECTOR = new Panel_Inspector(); diff --git a/scripts/panel_inspector/panel_inspector.gml b/scripts/panel_inspector/panel_inspector.gml index 220789304..e8e2002b4 100644 --- a/scripts/panel_inspector/panel_inspector.gml +++ b/scripts/panel_inspector/panel_inspector.gml @@ -420,27 +420,8 @@ function Panel_Inspector() : PanelContent() constructor { switch(jun.display_type) { case VALUE_DISPLAY.path_load : case VALUE_DISPLAY.path_save : - jun.editWidget.draw(editBoxX, editBoxY, editBoxW, editBoxH, jun.showValue(), _m); - break; - case VALUE_DISPLAY.path_array : - var val = jun.showValue(), txt = ""; - var pathExist = jun.value_validation == VALIDATION.pass; - - if(is_array(val) && array_length(val)) - txt = "[" + string(array_length(val)) + "] " + val[0]; - else - txt = string(val); - - jun.editWidget.draw(editBoxX, editBoxY, editBoxW, editBoxH, _m,, pathExist? COLORS._main_text : COLORS._main_value_negative); - var icx = editBoxX + editBoxW - ui(16); - var icy = editBoxY + editBoxH / 2; - draw_sprite_ui_uniform(pathExist? THEME.button_path_icon : THEME.button_path_not_found_icon, 0, icx, icy, 1,, 1); - draw_set_text(f_p0, fa_left, fa_center, COLORS._main_text); - draw_text_cut(editBoxX + ui(8), editBoxY + editBoxH / 2, txt, editBoxW - ui(60)); - - if(!pathExist && _hover && point_in_rectangle(_m[0], _m[1], icx - ui(17), icy - ui(17), icx + ui(17), icy + ui(17))) - TOOLTIP = get_text("panel_inspector_file_not_exist", "File not exist"); + jun.editWidget.draw(editBoxX, editBoxY, editBoxW, editBoxH, jun.showValue(), _m); break; case VALUE_DISPLAY.path_font : var val = jun.showValue(); diff --git a/scripts/panel_menu/panel_menu.gml b/scripts/panel_menu/panel_menu.gml index 2bdc08e46..0595cb446 100644 --- a/scripts/panel_menu/panel_menu.gml +++ b/scripts/panel_menu/panel_menu.gml @@ -37,6 +37,14 @@ function Panel_Menu() : PanelContent() constructor { }) ]); }, THEME.addon ).setIsShelf(), + -1, + menuItem(get_text("fullscreen", "Toggle fullscreen"), function() { + if(gameframe_is_fullscreen_window()) + gameframe_set_fullscreen(0); + else + gameframe_set_fullscreen(2); + },, ["", "Fullscreen"]), + menuItem(get_text("exit", "Close program"), function() { window_close(); }), ]; if(DEMO) array_delete(menu_file, 1, 4); @@ -242,12 +250,12 @@ function Panel_Menu() : PanelContent() constructor { draw_sprite_stretched(THEME.menu_button, 0, xc - ww / 2, ui(6), ww, h - ui(12)); if((mouse_press(mb_left, pFOCUS)) || instance_exists(o_dialog_menubox)) { - menuCall( x + xx, y + h, menus[i][1]); + menuCall( xx, h, menus[i][1]); } } draw_set_text(f_p1, fa_center, fa_center, COLORS._main_text); - draw_text_over(xx + ww / 2, y + h / 2, menus[i][0]); + draw_text_over(xx + ww / 2, h / 2, menus[i][0]); xx += ww + 8; } @@ -257,7 +265,7 @@ function Panel_Menu() : PanelContent() constructor { var error_amo = ds_list_size(ERRORS); var nx0 = xx + ui(24); - var ny0 = y + h / 2; + var ny0 = h / 2; draw_set_text(f_p0, fa_left, fa_center); var wr_w = ui(20) + ui(8) + string_width(string(warning_amo)); @@ -331,34 +339,42 @@ function Panel_Menu() : PanelContent() constructor { var bs = ui(28); if(buttonInstant(THEME.button_hide_fill, x1 - bs, ui(6), bs, bs, [mx, my], pFOCUS, pHOVER,, THEME.window_exit, 0, COLORS._main_accent) == 2) { - game_end(); + window_close(); } - x1 -= bs + ui(8); + x1 -= bs + ui(4); - if(buttonInstant(THEME.button_hide_fill, x1 - bs, ui(6), bs, bs, [mx, my], pFOCUS, pHOVER,, THEME.window_maximize, window_is_maximize(), COLORS._main_icon) == 2) { - if(window_is_maximize()) - window_restore(); + var win_max = gameframe_is_maximized() || gameframe_is_fullscreen_window(); + if(buttonInstant(THEME.button_hide_fill, x1 - bs, ui(6), bs, bs, [mx, my], pFOCUS, pHOVER,, THEME.window_maximize, win_max, [ COLORS._main_icon, CDEF.lime ]) == 2) { + if(gameframe_is_fullscreen_window()) { + gameframe_set_fullscreen(0); + gameframe_restore(); + } else if(gameframe_is_maximized()) + gameframe_restore(); else - maximize_window(); + gameframe_maximize(); } - x1 -= bs + ui(8); + x1 -= bs + ui(4); + + if(buttonInstant(THEME.button_hide_fill, x1 - bs, ui(6), bs, bs, [mx, my], pFOCUS, pHOVER,, THEME.window_minimize, 0, [ COLORS._main_icon, CDEF.yellow ]) == -2) { + gameframe_minimize(); + } + x1 -= bs + ui(4); - if(buttonInstant(THEME.button_hide_fill, x1 - bs, ui(6), bs, bs, [mx, my], pFOCUS, pHOVER,, THEME.window_minimize, 0, COLORS._main_icon) == 2) { - //minimize_window(); - - - window_set_position(0, 0); + if(buttonInstant(THEME.button_hide_fill, x1 - bs, ui(6), bs, bs, [mx, my], pFOCUS, pHOVER,, THEME.window_fullscreen, gameframe_is_fullscreen_window(), [ COLORS._main_icon, CDEF.cyan ]) == 2) { + if(gameframe_is_fullscreen_window()) + gameframe_set_fullscreen(0); + else + gameframe_set_fullscreen(2); } - x1 -= bs + ui(8); + x1 -= bs + ui(4); #endregion #region version draw_set_text(f_p0, fa_right, fa_center, COLORS._main_text_sub); var txt = "v. " + string(VERSION_STRING); - if(DEMO) txt += " DEMO"; var ww = string_width(txt) + ui(12); if(pHOVER && point_in_rectangle(mx, my, x1 - ww, 0, x1, h)) { - draw_sprite_stretched(THEME.menu_button, 0, x1 - ww, ui(6), ww, h - ui(12)); + draw_sprite_stretched(THEME.button_hide_fill, 1, x1 - ww, ui(6), ww, h - ui(12)); if(mouse_press(mb_left, pFOCUS)) { dialogCall(o_dialog_release_note); @@ -369,6 +385,40 @@ function Panel_Menu() : PanelContent() constructor { if(o_main.version_latest > VERSION) displayNewVersion(); #endregion + + #region title + var txt = ""; + if(CURRENT_PATH == "") + txt = "Untitled"; + else + txt = filename_name(CURRENT_PATH); + if(MODIFIED) + txt += "*"; + txt += " - Pixel Composer"; + if(DEMO) txt += " DEMO"; + + var tx0 = nx0; + var tx1 = x1 - ww; + var maxW = abs(tx0 - tx1); + var tcx = (tx0 + tx1) / 2; + + draw_set_font(f_p0b); + var tc = string_cut(txt, maxW); + var tw = string_width(tc) + ui(16); + + if(buttonInstant(THEME.button_hide_fill, tcx - tw / 2, h / 2 - ui(14), tw, ui(28), [mx, my], pFOCUS, pHOVER) == 2) { + var arr = []; + for(var i = 0; i < min(10, ds_list_size(RECENT_FILES)); i++) { + var _rec = RECENT_FILES[| i]; + array_push(arr, menuItem(_rec, function(_x, _y, _depth, _path) { LOAD_PATH(_path); })); + } + + var dia = menuCall(tcx, h, arr, fa_center); + } + + draw_set_text(f_p0b, fa_center, fa_center, COLORS._main_text_sub); + draw_text(tcx, h / 2, tc); + #endregion undoUpdate(); } diff --git a/scripts/pathArrayBox/pathArrayBox.gml b/scripts/pathArrayBox/pathArrayBox.gml new file mode 100644 index 000000000..6f9d1fa3d --- /dev/null +++ b/scripts/pathArrayBox/pathArrayBox.gml @@ -0,0 +1,67 @@ +function pathArrayBox(_target, _data, _onClick) : widget() constructor { + target = _target; + data = _data; + onClick = _onClick; + + openPath = button(function() { + var path = get_open_filenames(data[0], data[1]); + if(path == "") return noone; + var paths = string_splice(path, "\n"); + onClick(paths); + }, THEME.button_path_icon); + + static trigger = function() { + with(dialogCall(o_dialog_image_array_edit, WIN_W / 2, WIN_H / 2)) + target = other.target; + } + + static draw = function(_x, _y, _w, _h, _files, _m) { + x = _x; + y = _y; + w = _w; + h = _h; + + openPath.hover = hover; + openPath.active = active; + openPath.draw(_x + _w - ui(32), _y + _h / 2 - ui(32 / 2), ui(32), ui(32), _m, THEME.button_hide); + _w -= ui(40); + + var click = false; + draw_sprite_stretched(THEME.textbox, 3, _x, _y, _w, _h); + + if(hover && point_in_rectangle(_m[0], _m[1], _x, _y, _x + _w, _y + _h)) { + draw_sprite_stretched(THEME.textbox, 1, _x, _y, _w, _h); + + if(mouse_press(mb_left, active)) { + trigger(); + click = true; + } + + if(mouse_click(mb_left, active)) + draw_sprite_stretched(THEME.textbox, 2, _x, _y, _w, _h); + } else { + draw_sprite_stretched(THEME.textbox, 0, _x, _y, _w, _h); + if(mouse_press(mb_left)) deactivate(); + } + + var aa = interactable * 0.25 + 0.75; + if(!is_array(_files)) _files = [ _files ]; + var len = array_length(_files); + var txt = "(" + string(len) + ") " + "["; + for( var i = 0; i < array_length(_files); i++ ) + txt += (i? ", " : "") + filename_name_only(_files[i]); + txt += "]"; + + draw_set_alpha(aa); + draw_set_text(f_p0, fa_left, fa_center, COLORS._main_text); + draw_text_cut(_x + ui(8), _y + _h / 2, txt, _w - ui(16)); + draw_set_alpha(1); + + if(WIDGET_CURRENT == self) + draw_sprite_stretched(THEME.widget_selecting, 0, _x - ui(3), _y - ui(3), _w + ui(6), _h + ui(6)); + + resetFocus(); + + return click; + } +} \ No newline at end of file diff --git a/scripts/pathArrayBox/pathArrayBox.yy b/scripts/pathArrayBox/pathArrayBox.yy new file mode 100644 index 000000000..cea717640 --- /dev/null +++ b/scripts/pathArrayBox/pathArrayBox.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "pathArrayBox", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "widgets", + "path": "folders/widgets.yy", + }, +} \ No newline at end of file diff --git a/scripts/point_rotate/point_rotate.gml b/scripts/point_rotate/point_rotate.gml index 5be0d3c9f..eea42a8d5 100644 --- a/scripts/point_rotate/point_rotate.gml +++ b/scripts/point_rotate/point_rotate.gml @@ -1,4 +1,10 @@ function point_rotate(px, py, ox, oy, a) { + a = angle_difference(a, 0); + if(a == 0) return [ px, py ]; + if(a == 180) return [ ox + (ox - px), oy + (oy - py) ]; + if(a == 90) return [ ox + (oy - py), oy + (ox - px) ]; + if(a == -90) return [ ox + (py - oy), oy + (px - ox) ]; + var cx = px - ox; var cy = py - oy; var d = -degtorad(a); diff --git a/scripts/preferences/preferences.gml b/scripts/preferences/preferences.gml index c33fe610b..b7dd5c827 100644 --- a/scripts/preferences/preferences.gml +++ b/scripts/preferences/preferences.gml @@ -56,6 +56,9 @@ PREF_MAP[? "auto_save_time"] = 300; PREF_MAP[? "use_legacy_exception"] = false; + + PREF_MAP[? "dialog_add_node_w"] = 532; + PREF_MAP[? "dialog_add_node_h"] = 400; #endregion #region hotkeys @@ -172,7 +175,9 @@ ds_map_add_list(map, "key", save_l); - PREF_MAP[? "window_maximize"] = window_is_maximize(); + PREF_MAP[? "window_maximize"] = gameframe_is_maximized(); + PREF_MAP[? "window_width"] = gameframe_restoreRect_hx[2]; + PREF_MAP[? "window_height"] = gameframe_restoreRect_hx[3]; var _pref = ds_map_create(); ds_map_override(_pref, PREF_MAP); @@ -234,17 +239,16 @@ setException(); } - if(PREF_MAP[? "window_maximize"]) { - run_in(1, function() { - window_set_size(PREF_MAP[? "window_width"], PREF_MAP[? "window_height"]); - run_in(15, function() { maximize_window(); }); - }); - } else { - var ww = PREF_MAP[? "window_width"]; - var hh = PREF_MAP[? "window_height"]; + if(!LOADING) { + if(PREF_MAP[? "window_maximize"]) { + gameframe_maximize(); + } else { + var ww = PREF_MAP[? "window_width"]; + var hh = PREF_MAP[? "window_height"]; - window_set_position(display_get_width() / 2 - ww / 2, display_get_height() / 2 - hh / 2); - window_set_size(ww, hh); + window_set_position(display_get_width() / 2 - ww / 2, display_get_height() / 2 - hh / 2); + window_set_size(ww, hh); + } } game_set_speed(PREF_MAP[? "ui_framerate"], gamespeed_fps); diff --git a/scripts/save_function/save_function.gml b/scripts/save_function/save_function.gml index 426788236..a5f598682 100644 --- a/scripts/save_function/save_function.gml +++ b/scripts/save_function/save_function.gml @@ -1,12 +1,21 @@ function NEW() { + if(MODIFIED && !READONLY) { + var dia = dialogCall(o_dialog_load); + dia.newFile = true; + } else + __NEW(); +} + +function __NEW() { nodeCleanUp(); setPanel(); instance_destroy(_p_dialog); - room_restart(); + //room_restart(); gc_collect(); SET_PATH(""); + MODIFIED = false; SAFE_MODE = false; } diff --git a/scripts/string_function/string_function.gml b/scripts/string_function/string_function.gml index 260180320..262c86fdd 100644 --- a/scripts/string_function/string_function.gml +++ b/scripts/string_function/string_function.gml @@ -49,4 +49,9 @@ function string_real(val) { } return string_format(val, -1, pres); +} + +function filename_name_only(name) { + name = filename_name(name); + return string_replace(name, filename_ext(name), "") } \ No newline at end of file diff --git a/scripts/window_functions/window_functions.gml b/scripts/window_functions/window_functions.gml new file mode 100644 index 000000000..5f914cdd3 --- /dev/null +++ b/scripts/window_functions/window_functions.gml @@ -0,0 +1,8 @@ +function window_close() { + if(MODIFIED && !READONLY) { + dialogCall(o_dialog_exit); + } else { + PREF_SAVE(); + game_end(); + } +} \ No newline at end of file diff --git a/scripts/window_functions/window_functions.yy b/scripts/window_functions/window_functions.yy new file mode 100644 index 000000000..2ebc3077b --- /dev/null +++ b/scripts/window_functions/window_functions.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "window_functions", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "functions", + "path": "folders/functions.yy", + }, +} \ No newline at end of file diff --git a/shaders/sh_atlas/sh_atlas.fsh b/shaders/sh_atlas/sh_atlas.fsh index d251f8700..a3ebdf0f3 100644 --- a/shaders/sh_atlas/sh_atlas.fsh +++ b/shaders/sh_atlas/sh_atlas.fsh @@ -20,16 +20,24 @@ void main() { if(col.a == 1.) return; - float tauDiv = TAU / angle_sample; - for(float i = 1.; i <= distance_sample; i++) - for(float j = 0.; j < angle_sample; j++) { - float ang = j * tauDiv; - vec2 pxs = (pixelPosition + vec2( cos(ang), sin(ang)) * scale * i) / dimension; - vec4 sam = texture2D( gm_BaseTexture, pxs ); - - if(sam.a < 1.) continue; + for(float i = 1.; i <= distance_sample; i++) { + float base = 1.; + float top = 0.; + for(float j = 0.; j <= 64.; j++) { + float ang = top / base * TAU; + top += 2.; + if(top >= base) { + top = 1.; + base *= 2.; + } - gl_FragColor = sam; - return; + vec2 pxs = (pixelPosition + vec2( cos(ang), sin(ang)) * scale * i) / dimension; + vec4 sam = texture2D( gm_BaseTexture, pxs ); + + if(sam.a < 1.) continue; + + gl_FragColor = sam; + return; + } } } diff --git a/shaders/sh_bevel/sh_bevel.fsh b/shaders/sh_bevel/sh_bevel.fsh index dd0931355..ea75beef0 100644 --- a/shaders/sh_bevel/sh_bevel.fsh +++ b/shaders/sh_bevel/sh_bevel.fsh @@ -4,22 +4,21 @@ varying vec2 v_vTexcoord; varying vec4 v_vColour; +#define TAU 6.283185307179586 + uniform vec2 dimension; uniform vec2 scale; uniform vec2 shift; uniform float height; uniform int slope; -#define TAU 6.28318 - float bright(in vec4 col) { return (col.r + col.g + col.b) / 3. * col.a; } void main() { vec2 pixelStep = 1. / dimension; - float tauDiv = TAU / 32.; - + vec4 col = texture2D(gm_BaseTexture, v_vTexcoord); vec4 col1; gl_FragColor = col; @@ -34,12 +33,20 @@ void main() { if(b0 == 0.) return; float b1 = b0; - float ang, added_distance, _b1; + float added_distance, _b1; vec2 shf, pxs; for(float i = 1.; i < height; i++) { - for(float j = 0.; j < 32.; j++) { - ang = j * tauDiv; + float base = 1.; + float top = 0.; + for(float j = 0.; j <= 64.; j++) { + float ang = top / base * TAU; + top += 2.; + if(top >= base) { + top = 1.; + base *= 2.; + } + added_distance = 1. + cos(abs(shift_angle - ang)) * shift_distance; shf = vec2( cos(ang), sin(ang)) * (i * added_distance) / scale; diff --git a/shaders/sh_cell_noise/sh_cell_noise.fsh b/shaders/sh_cell_noise/sh_cell_noise.fsh index 590fb4500..d5bab2c16 100644 --- a/shaders/sh_cell_noise/sh_cell_noise.fsh +++ b/shaders/sh_cell_noise/sh_cell_noise.fsh @@ -17,7 +17,7 @@ uniform float radiusScale; uniform float radiusShatter; #define PI 3.14159265359 -#define TAU 6.28318 +#define TAU 6.283185307179586 vec2 random2( vec2 p ) { return fract(sin(vec2(dot(p, vec2(127.1, 311.7)), dot(p, vec2(269.5, 183.3)))) * 43758.5453); diff --git a/shaders/sh_cell_noise_edge/sh_cell_noise_edge.fsh b/shaders/sh_cell_noise_edge/sh_cell_noise_edge.fsh index d26812a22..57bdbfe92 100644 --- a/shaders/sh_cell_noise_edge/sh_cell_noise_edge.fsh +++ b/shaders/sh_cell_noise_edge/sh_cell_noise_edge.fsh @@ -14,7 +14,7 @@ uniform float radiusScale; uniform float radiusShatter; uniform int pattern; -#define TAU 6.28318 +#define TAU 6.283185307179586 vec2 random2( vec2 p ) { return fract(sin(vec2(dot(p, vec2(127.1, 311.7)), dot(p, vec2(269.5, 183.3)))) * 43758.5453); diff --git a/shaders/sh_cell_noise_random/sh_cell_noise_random.fsh b/shaders/sh_cell_noise_random/sh_cell_noise_random.fsh index 950b5db9f..326cee0a8 100644 --- a/shaders/sh_cell_noise_random/sh_cell_noise_random.fsh +++ b/shaders/sh_cell_noise_random/sh_cell_noise_random.fsh @@ -14,7 +14,7 @@ uniform float radiusScale; uniform float radiusShatter; uniform int pattern; -#define TAU 6.28318 +#define TAU 6.283185307179586 vec2 random2( vec2 p ) { return fract(sin(vec2(dot(p, vec2(127.1, 311.7)), dot(p, vec2(269.5, 183.3)))) * 43758.5453); diff --git a/shaders/sh_corner/sh_corner.fsh b/shaders/sh_corner/sh_corner.fsh index 1b9c8fd7c..51a5392c0 100644 --- a/shaders/sh_corner/sh_corner.fsh +++ b/shaders/sh_corner/sh_corner.fsh @@ -7,11 +7,10 @@ varying vec4 v_vColour; uniform vec2 dimension; uniform float rad; -#define TAU 6.28318 +#define TAU 6.283185307179586 void main() { vec2 pixelPosition = v_vTexcoord * dimension; - float tau_div = TAU / 64.; gl_FragColor = texture2D( gm_BaseTexture, v_vTexcoord ); if(length(gl_FragColor.rgb) * gl_FragColor.a <= 0.) { @@ -22,19 +21,28 @@ void main() { float maxCorner = 0.; float minDistance = rad; - for(float i = rad; i >= 1.; i--) - for(float j = 0.; j < 80.; j++) { - float ang = j * tau_div; - vec2 pxs = (pixelPosition + vec2( cos(ang) * i, sin(ang) * i)) / dimension; + for(float i = rad; i >= 1.; i--) { + float base = 1.; + float top = 0.; + for(float j = 0.; j <= 64.; j++) { + float ang = top / base * TAU; + top += 2.; + if(top >= base) { + top = 1.; + base *= 2.; + } + + vec2 pxs = (pixelPosition + vec2( cos(ang) * i, sin(ang) * i)) / dimension; - if(pxs.x < 0. || pxs.x > 1. || pxs.y < 0. || pxs.y > 1.) - continue; + if(pxs.x < 0. || pxs.x > 1. || pxs.y < 0. || pxs.y > 1.) + continue; - float corn = floor(texture2D( gm_BaseTexture, pxs).r * rad); + float corn = floor(texture2D( gm_BaseTexture, pxs).r * rad); - if(corn >= maxCorner) { - maxCorner = corn; - minDistance = i; + if(corn >= maxCorner) { + maxCorner = corn; + minDistance = i; + } } } diff --git a/shaders/sh_corner_erode/sh_corner_erode.fsh b/shaders/sh_corner_erode/sh_corner_erode.fsh index ebcc40fa5..2482e2935 100644 --- a/shaders/sh_corner_erode/sh_corner_erode.fsh +++ b/shaders/sh_corner_erode/sh_corner_erode.fsh @@ -7,31 +7,39 @@ varying vec4 v_vColour; uniform vec2 dimension; uniform float size; -#define TAU 6.28318 +#define TAU 6.283185307179586 void main() { vec2 pixelPosition = v_vTexcoord * dimension; - float tau_div = TAU / 64.; gl_FragColor = texture2D( gm_BaseTexture, v_vTexcoord ); if(length(gl_FragColor.rgb) * gl_FragColor.a <= 0.) return; - for(float i = 1.; i <= size; i++) - for(float j = 0.; j < 80.; j++) { - float ang = j * tau_div; - vec2 pxs = (pixelPosition + vec2( cos(ang) * i, sin(ang) * i)) / dimension; + for(float i = 1.; i <= size; i++) { + float base = 1.; + float top = 0.; + for(float j = 0.; j <= 64.; j++) { + float ang = top / base * TAU; + top += 2.; + if(top >= base) { + top = 1.; + base *= 2.; + } + + vec2 pxs = (pixelPosition + vec2( cos(ang) * i, sin(ang) * i)) / dimension; - if(pxs.x < 0. || pxs.x > 1. || pxs.y < 0. || pxs.y > 1.) { - gl_FragColor = vec4(i / size, 0., 0., 1.); - return; - } + if(pxs.x < 0. || pxs.x > 1. || pxs.y < 0. || pxs.y > 1.) { + gl_FragColor = vec4(i / size, 0., 0., 1.); + return; + } - vec4 sam = texture2D( gm_BaseTexture, pxs ); - if(length(sam.rgb) == 0.) { - gl_FragColor = vec4(i / size, 0., 0., 1.); - return; + vec4 sam = texture2D( gm_BaseTexture, pxs ); + if(length(sam.rgb) == 0.) { + gl_FragColor = vec4(i / size, 0., 0., 1.); + return; + } } } } diff --git a/shaders/sh_edge_detect/sh_edge_detect.fsh b/shaders/sh_edge_detect/sh_edge_detect.fsh index aa7e2dec8..7ead96b6e 100644 --- a/shaders/sh_edge_detect/sh_edge_detect.fsh +++ b/shaders/sh_edge_detect/sh_edge_detect.fsh @@ -34,7 +34,7 @@ const mat3 laplac = mat3( 1., 1., 1., 1., -8., 1., 1., 1., 1); -#define TAU 6.28318 +#define TAU 6.283185307179586 float bright(in vec4 col) { return dot(col.rgb, vec3(0.2126, 0.7152, 0.0722)) * col.a; diff --git a/shaders/sh_erode/sh_erode.fsh b/shaders/sh_erode/sh_erode.fsh index 147b74d35..d7c57242b 100644 --- a/shaders/sh_erode/sh_erode.fsh +++ b/shaders/sh_erode/sh_erode.fsh @@ -9,7 +9,7 @@ uniform float size; uniform int border; uniform int alpha; -#define TAU 6.28318 +#define TAU 6.283185307179586 float bright(in vec4 col) { return dot(col.rgb, vec3(0.2126, 0.7152, 0.0722)) * col.a; @@ -20,7 +20,6 @@ void main() { vec4 point = texture2D( gm_BaseTexture, v_vTexcoord ); vec4 fill = vec4(0.); if(alpha == 0) fill.a = 1.; - float tau_div = TAU / 64.; gl_FragColor = point; if(alpha == 0 && length(point.rgb) <= 0.) @@ -28,22 +27,31 @@ void main() { if(alpha == 1 && point.a <= 0.) return; - for(float i = 1.; i < size; i++) - for(float j = 0.; j < 64.; j++) { - float ang = j * tau_div; - vec2 pxs = (pixelPosition + vec2( cos(ang) * i, sin(ang) * i)) / dimension; - if(border == 1) - pxs = clamp(pxs, vec2(0.), vec2(1.)); + for(float i = 1.; i < size; i++) { + float base = 1.; + float top = 0.; + for(float j = 0.; j <= 64.; j++) { + float ang = top / base * TAU; + top += 2.; + if(top >= base) { + top = 1.; + base *= 2.; + } + + vec2 pxs = (pixelPosition + vec2( cos(ang) * i, sin(ang) * i)) / dimension; + if(border == 1) + pxs = clamp(pxs, vec2(0.), vec2(1.)); - if(pxs.x < 0. || pxs.x > 1. || pxs.y < 0. || pxs.y > 1.) { - gl_FragColor = fill; - break; - } - - vec4 sam = texture2D( gm_BaseTexture, pxs ); - if((alpha == 0 && length(sam.rgb) * sam.a == 0.) || (alpha == 1 && sam.a == 0.)) { - gl_FragColor = fill; - break; + if(pxs.x < 0. || pxs.x > 1. || pxs.y < 0. || pxs.y > 1.) { + gl_FragColor = fill; + break; + } + + vec4 sam = texture2D( gm_BaseTexture, pxs ); + if((alpha == 0 && length(sam.rgb) * sam.a == 0.) || (alpha == 1 && sam.a == 0.)) { + gl_FragColor = fill; + break; + } } } } diff --git a/shaders/sh_gradient/sh_gradient.fsh b/shaders/sh_gradient/sh_gradient.fsh index 9c6dbf49e..dcf445bf9 100644 --- a/shaders/sh_gradient/sh_gradient.fsh +++ b/shaders/sh_gradient/sh_gradient.fsh @@ -4,7 +4,7 @@ varying vec2 v_vTexcoord; varying vec4 v_vColour; -#define TAU 6.28318 +#define TAU 6.283185307179586 uniform int gradient_blend; uniform vec4 gradient_color[16]; diff --git a/shaders/sh_gradient_display/sh_gradient_display.fsh b/shaders/sh_gradient_display/sh_gradient_display.fsh index 319267dba..67ab377bf 100644 --- a/shaders/sh_gradient_display/sh_gradient_display.fsh +++ b/shaders/sh_gradient_display/sh_gradient_display.fsh @@ -4,7 +4,7 @@ varying vec2 v_vTexcoord; varying vec4 v_vColour; -#define TAU 6.28318 +#define TAU 6.283185307179586 uniform int gradient_blend; uniform vec4 gradient_color[16]; diff --git a/shaders/sh_gradient_points/sh_gradient_points.fsh b/shaders/sh_gradient_points/sh_gradient_points.fsh index ae9a068df..e8845e984 100644 --- a/shaders/sh_gradient_points/sh_gradient_points.fsh +++ b/shaders/sh_gradient_points/sh_gradient_points.fsh @@ -4,7 +4,7 @@ varying vec2 v_vTexcoord; varying vec4 v_vColour; -#define TAU 6.28318 +#define TAU 6.283185307179586 uniform vec2 dimension; uniform vec2 center[4]; diff --git a/shaders/sh_mirror/sh_mirror.fsh b/shaders/sh_mirror/sh_mirror.fsh index bba66bb1d..140aa1f74 100644 --- a/shaders/sh_mirror/sh_mirror.fsh +++ b/shaders/sh_mirror/sh_mirror.fsh @@ -1,7 +1,7 @@ varying vec2 v_vTexcoord; varying vec4 v_vColour; -#define TAU 6.28318 +#define TAU 6.283185307179586 #define pi1 3.14159 #define pi2 1.57079 diff --git a/shaders/sh_mirror_mask/sh_mirror_mask.fsh b/shaders/sh_mirror_mask/sh_mirror_mask.fsh index 54b1338d9..bcfa341b3 100644 --- a/shaders/sh_mirror_mask/sh_mirror_mask.fsh +++ b/shaders/sh_mirror_mask/sh_mirror_mask.fsh @@ -1,7 +1,7 @@ varying vec2 v_vTexcoord; varying vec4 v_vColour; -#define TAU 6.28318 +#define TAU 6.283185307179586 #define pi1 3.14159 #define pi2 1.57079 diff --git a/shaders/sh_outline/sh_outline.fsh b/shaders/sh_outline/sh_outline.fsh index 36377dd0c..58c88bda4 100644 --- a/shaders/sh_outline/sh_outline.fsh +++ b/shaders/sh_outline/sh_outline.fsh @@ -18,7 +18,7 @@ uniform int sampleMode; uniform int outline_only; -#define TAU 6.28318 +#define TAU 6.283185307179586 vec2 round(in vec2 v) { v.x = fract(v.x) > 0.5? ceil(v.x) : floor(v.x); @@ -67,12 +67,19 @@ void main() { if(borderSize + borderStart > 0.) { outline_alpha = 0.; - float tauDiv = TAU / 64.; for(float i = 1.; i <= 32.; i++) { if(i > borderStart + borderSize) break; - for(float j = 0.; j < 64.; j++) { - float ang = j * tauDiv; + float base = 1.; + float top = 0.; + for(float j = 0.; j <= 64.; j++) { + float ang = top / base * TAU; + top += 2.; + if(top >= base) { + top = 1.; + base *= 2.; + } + vec2 pxs = (pixelPosition + vec2( cos(ang), sin(ang)) * i) / dimension; vec4 sam = sampleTexture( pxs ); diff --git a/shaders/sh_outline_only/sh_outline_only.fsh b/shaders/sh_outline_only/sh_outline_only.fsh index b3def017a..e7f07d38b 100644 --- a/shaders/sh_outline_only/sh_outline_only.fsh +++ b/shaders/sh_outline_only/sh_outline_only.fsh @@ -8,12 +8,11 @@ uniform vec2 dimension; uniform float borderSize; uniform vec4 borderColor; -#define TAU 6.28318 +#define TAU 6.283185307179586 void main() { vec2 pixelPosition = v_vTexcoord * dimension; vec4 point = v_vColour * texture2D( gm_BaseTexture, v_vTexcoord ); - float tauDiv = TAU / 64.; gl_FragColor = vec4(0.); @@ -23,8 +22,16 @@ void main() { break; } - for(float j = 0.; j < 64.; j++) { - float ang = j * tauDiv; + float base = 1.; + float top = 0.; + for(float j = 0.; j <= 64.; j++) { + float ang = top / base * TAU; + top += 2.; + if(top >= base) { + top = 1.; + base *= 2.; + } + vec2 pxs = (pixelPosition + vec2( cos(ang) * i, sin(ang) * i)) / dimension; if(pxs.x < 0. || pxs.y < 0. || pxs.x > 1. || pxs.y > 1.) continue; diff --git a/shaders/sh_shadow_cast/sh_shadow_cast.fsh b/shaders/sh_shadow_cast/sh_shadow_cast.fsh index 74e434f99..ea5a7ad9c 100644 --- a/shaders/sh_shadow_cast/sh_shadow_cast.fsh +++ b/shaders/sh_shadow_cast/sh_shadow_cast.fsh @@ -106,31 +106,39 @@ void main() { } if(ao > 0.) { - float tauDiv = TAU / 32.; float ambient = 0.; - for(float i = 0.; i < ao; i++) - for(float j = 0.; j < 32.; j++) { - float ang = j * tauDiv; - vec2 _pos = v_vTexcoord + vec2(cos(ang), sin(ang)) * i * tx; + for(float i = 0.; i < ao; i++) { + float base = 1.; + float top = 0.; + for(float j = 0.; j <= 64.; j++) { + float ang = top / base * TAU; + top += 2.; + if(top >= base) { + top = 1.; + base *= 2.; + } + + vec2 _pos = v_vTexcoord + vec2(cos(ang), sin(ang)) * i * tx; - if(_pos.x < 0. || _pos.y < 0. || _pos.x > 1. || _pos.y > 1.) - continue; + if(_pos.x < 0. || _pos.y < 0. || _pos.x > 1. || _pos.y > 1.) + continue; - if(useSolid == 1) { - vec4 _sl = texture2D( solid, _pos ); - if(_sl.a == 1.) - ambient++; - } + if(useSolid == 1) { + vec4 _sl = texture2D( solid, _pos ); + if(_sl.a == 1.) + ambient++; + } - if(bgUse == 1) { - vec4 hg = texture2D( gm_BaseTexture, _pos ); - if(distance(bg, hg) >= bgThres) - ambient++; + if(bgUse == 1) { + vec4 hg = texture2D( gm_BaseTexture, _pos ); + if(distance(bg, hg) >= bgThres) + ambient++; + } } } - lightAmo += ambient * aoStr; + lightAmo += ambient * aoStr * aoStr; } int lightCatched = 0; diff --git a/shaders/sh_shape/sh_shape.fsh b/shaders/sh_shape/sh_shape.fsh index 230bf8b74..e9ad2c054 100644 --- a/shaders/sh_shape/sh_shape.fsh +++ b/shaders/sh_shape/sh_shape.fsh @@ -27,7 +27,7 @@ uniform vec2 scale; uniform vec4 bgColor; #define PI 3.14159265359 -#define TAU 6.28318530718 +#define TAU 6.283185307179586 float sdRegularPolygon(in vec2 p, in float r, in int n, in float ang ) { // these 4 lines can be precomputed for a given shape diff --git a/shaders/sh_texture_atlas/sh_texture_atlas.fsh b/shaders/sh_texture_atlas/sh_texture_atlas.fsh index 6c79c547a..6f0411451 100644 --- a/shaders/sh_texture_atlas/sh_texture_atlas.fsh +++ b/shaders/sh_texture_atlas/sh_texture_atlas.fsh @@ -6,7 +6,7 @@ varying vec4 v_vColour; uniform vec2 dimension; uniform float size; -#define TAU 6.28318 +#define TAU 6.283185307179586 void main() { vec2 pixelPosition = v_vTexcoord * dimension; diff --git a/shaders/sh_trail_filler_pass1/sh_trail_filler_pass1.fsh b/shaders/sh_trail_filler_pass1/sh_trail_filler_pass1.fsh index 776d4377c..44bb9ff36 100644 --- a/shaders/sh_trail_filler_pass1/sh_trail_filler_pass1.fsh +++ b/shaders/sh_trail_filler_pass1/sh_trail_filler_pass1.fsh @@ -13,6 +13,8 @@ uniform float segmentStart; uniform float segmentSize; uniform int mode; +uniform int matchColor; +uniform int blendColor; void main() { gl_FragColor = vec4(0.); @@ -44,22 +46,28 @@ void main() { if(col0.a <= 0.5) continue; vec2 norm = normalize(shift) * texel; + vec4 _colS = vec4(0.); int searchStage = 0; + for(float k = 0.; k <= range; k++) { vec2 posS = v_vTexcoord - norm * k; if(searchStage == 0 && (posS.x < 0. || posS.y < 0. || posS.x > 1. || posS.y > 1.)) continue; vec4 colS = texture2D( prevFrame, posS ); - if(mode == 0) { - if(distance(colS, col0) > 0.1) continue; - gl_FragColor = colS; + if(mode == 0 && matchColor == 1) { + if(matchColor == 1 && distance(colS, col0) > 0.1) continue; + gl_FragColor = col0; return; } else { - if(searchStage == 0 && distance(colS, col0) < 0.1) { + if(searchStage == 0 && ((matchColor == 0 && colS.a > 0.5) || (matchColor == 1 && distance(colS, col0) < 0.1))) { searchStage = 1; - continue; - } else if(searchStage == 1 && distance(colS, col0) > 0.1) { - gl_FragColor = vec4(norm.x, norm.y, segmentStart + segmentSize * (1. - k / (k + i)), 1.); + _colS = colS; + gl_FragColor = col0; + } else if(searchStage == 1 && ((matchColor == 0 && colS.a < 0.5) || (matchColor == 1 && distance(colS, col0) > 0.1))) { + if(matchColor == 0) + gl_FragColor = mix(_colS, col0, blendColor == 0? 1. : k / (k + i)); + else + gl_FragColor = vec4(norm.x, norm.y, segmentStart + segmentSize * (1. - k / (k + i)), 1.); return; } }