From 8c643edf8f9d4a49b93a9cc5620a79de645c0a28 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Thu, 27 May 2021 21:02:03 +1000 Subject: [PATCH] Import Company Test --- app/Jobs/Company/CompanyExport.php | 7 +- app/Jobs/Company/CompanyImport.php | 10 ++- tests/Feature/Import/ImportCompanyTest.php | 76 ++++++++++++++++++++- tests/Feature/Import/backup.zip | Bin 15475 -> 15479 bytes 4 files changed, 87 insertions(+), 6 deletions(-) diff --git a/app/Jobs/Company/CompanyExport.php b/app/Jobs/Company/CompanyExport.php index 6a411cb5908d..0467eeb67025 100644 --- a/app/Jobs/Company/CompanyExport.php +++ b/app/Jobs/Company/CompanyExport.php @@ -144,14 +144,15 @@ class CompanyExport implements ShouldQueue })->all(); - $this->export_data['clients'] = $this->company->clients->map(function ($client){ + $this->export_data['clients'] = $this->company->clients->makeVisible(['id','private_notes','user_id','company_id','last_login'])->map(function ($client){ - $client = $this->transformArrayOfKeys($client, ['id', 'company_id', 'user_id',' assigned_user_id', 'group_settings_id']); + $client = $this->transformArrayOfKeys($client, ['company_id', 'user_id', 'assigned_user_id', 'group_settings_id']); - return $client; + return $client->makeVisible(['id','private_notes','user_id','company_id','last_login']); })->all(); + $this->export_data['company'] = $this->company->toArray(); $this->export_data['company_gateways'] = $this->company->company_gateways->map(function ($company_gateway){ diff --git a/app/Jobs/Company/CompanyImport.php b/app/Jobs/Company/CompanyImport.php index 6c69200bd710..928954cd0f40 100644 --- a/app/Jobs/Company/CompanyImport.php +++ b/app/Jobs/Company/CompanyImport.php @@ -65,6 +65,8 @@ class CompanyImport implements ShouldQueue 'users', // 'payment_terms', // 'tax_rates', + // 'expense_categories', + // 'task_statuses', // 'clients', // 'company_gateways', // 'client_gateway_tokens', @@ -76,11 +78,15 @@ class CompanyImport implements ShouldQueue // 'recurring_invoices', // 'quotes', // 'payments', - // 'expense_categories', - // 'task_statuses', // 'expenses', // 'tasks', // 'documents', + // 'subscriptions', + // 'webhooks', + // 'system_logs', + // 'paymentables', + // 'company_ledger', + // 'backups', ]; /** diff --git a/tests/Feature/Import/ImportCompanyTest.php b/tests/Feature/Import/ImportCompanyTest.php index 354a3719cee0..50853ebb4be1 100644 --- a/tests/Feature/Import/ImportCompanyTest.php +++ b/tests/Feature/Import/ImportCompanyTest.php @@ -22,6 +22,7 @@ use App\Models\Invoice; use App\Models\Payment; use App\Models\PaymentTerm; use App\Models\Product; +use App\Models\TaskStatus; use App\Models\TaxRate; use App\Models\User; use App\Models\Vendor; @@ -274,7 +275,7 @@ class ImportCompanyTest extends TestCase /***************************** Expense Category *****************************/ ExpenseCategory::unguard(); - $this->assertEquals(2, count($this->backup_json_object->tax_rates)); + $this->assertEquals(2, count($this->backup_json_object->expense_categories)); foreach($this->backup_json_object->expense_categories as $obj) { @@ -303,6 +304,79 @@ class ImportCompanyTest extends TestCase $this->assertEquals(2, ExpenseCategory::count()); /***************************** Expense Category *****************************/ + + /***************************** Task Statuses *****************************/ + TaskStatus::unguard(); + + $this->assertEquals(4, count($this->backup_json_object->task_statuses)); + + foreach($this->backup_json_object->task_statuses as $obj) + { + + $user_id = $this->transformId('users', $obj->user_id); + + $obj_array = (array)$obj; + unset($obj_array['user_id']); + unset($obj_array['company_id']); + unset($obj_array['account_id']); + unset($obj_array['hashed_id']); + unset($obj_array['id']); + unset($obj_array['tax_rate_id']); + + $new_obj = TaskStatus::firstOrNew( + ['name' => $obj->name, 'company_id' => $this->company->id], + $obj_array, + ); + + $new_obj->save(['timestamps' => false]); + + } + + TaskStatus::reguard(); + + $this->assertEquals(4, TaskStatus::count()); + /***************************** Task Statuses *****************************/ + + /***************************** Clients *****************************/ + Client::unguard(); + + $this->assertEquals(1, count($this->backup_json_object->clients)); + + foreach($this->backup_json_object->clients as $obj) + { + + $user_id = $this->transformId('users', $obj->user_id); + + $obj_array = (array)$obj; + unset($obj_array['user_id']); + unset($obj_array['company_id']); + unset($obj_array['account_id']); + unset($obj_array['hashed_id']); + unset($obj_array['id']); + unset($obj_array['gateway_tokens']); + unset($obj_array['contacts']); + unset($obj_array['documents']); + + // $obj_array['settings'] = json_encode($obj_array['settings']); + // nlog($obj_array); + + $new_obj = Client::firstOrNew( + ['number' => $obj->number, 'company_id' => $this->company->id], + $obj_array, + ); + + $new_obj->save(['timestamps' => false]); + + $this->ids['clients']["{$obj->hashed_id}"] = $new_obj->id; + + } + + Client::reguard(); + + $this->assertEquals(1, Client::count()); + /***************************** Clients *****************************/ + + } diff --git a/tests/Feature/Import/backup.zip b/tests/Feature/Import/backup.zip index fa90df5ae0b23b1ca7e69e84df4c3adc616be1a9..302ba5a47a608c61ee992f0b3a879c04ccf4e347 100644 GIT binary patch delta 13798 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 akA9^g zDJ9-)?`DeLXeT-#TyJlnMPW=6hT~yfZ}*3UL_y*y7u6-D2PeXFFfbEs51;~vg(2dZ zkpHW5upyC!dNVzO{nw${ho>9{#EMQ2K%z8bMKHX26 zBz9Z+2u6e1Zp;e~js(Su*8UL;@>KvWqa%UV&|!oeFu>C^82@&@YGo8vK7zGzLhulZ zfSJ>vw-c=pqO}Lpf-f`HewO%^hJ+db1_Pl14uJ<}@XkN?;2va$=J5H$GySV~+?o!8ffs{;Gn$cEApAR$kGt>&Q76c72AsrV{)cK(e`>}v79pYV&At6zbK&KcuKwBDY#speB zuWRS8>Yug4&wBd0cHY{z&SoEe2NDm1e}lXVpeRgY0EWba?w$Hu zuU{R%16c?xv+U;E1lbPYP$a3p^RYuhybm^hWz1g=@fS*F=Bg0m&B06@>Mi(s0Om2& zUsd03hv-|ZVZXmLUPD)%w=3u_SBY7!Ba){D)a_v6#|E=dX=_?Jlefo;>H%QWd&{=Ja6C~GB;`rQz&fSZC6zn@G{dsdyG8Tf*iBvR`ZOY1R%Ogs=xVKvC z)&XVEtvG)LT{!)r5cZFA5W0viOyf2GlR!OHBc>`phvCVtI}}hwrkff$SyLh`rVO-- zgzh{4uns6y^)H2P#M#q&z0ldlR(ng^Z*}&?%|&ciMvHe>I`smY)pcQU=}gS zz{}kno4zGHxeZ8Cg1|A$JWi%^bg|LxR9Vc)+_( ze>g~Tq_3?1lYoh~p@c-PlM)2yd};p`4may-c}s)t0*MNvEi9Vh#~|#FLEz{xqHhH( z1?&xkgZwYdYXSSK`lo=2;-MK{L%y|doqF`58vk_y3d6wyq2b~JfFQY!q_vW0(jW-k zFzOi@eZvR~U2t&GB0oQ$JM@iX@jnsXbt<{~jzhgcC8NIu$3xo?DIcm;xz>X^W%l%1{*XuE{qPIgJF9x@K@RhUhmvs zh43(34-UYE(ZhQa)(BZ%Z#eCUkSs{etf!r?H=K6FHa0yC)tzS6SelDYA_SuI&Rkj+ z{`#i(*9g7W7x<^0?T8G29o{MiFZdhKYsL5n^Q~h1gY{3vctbpbZDs}Dd>~nxRhmz| zg_Qn@`(Fh9uL87(AseEw^1oa+OgDn7*qUFf7|Za_c5s&B-0bFZFLy&CtKJ1Y*tb-$ z|C+vDFNJilw{$qj|He&wXF>BHdT)1}H@?@9f71`Z)uY$rfdp;f5rEe5@PQX6y?V4R zL|p2#znNQo#~npcecHp&J-VVf?>sIw9dI4S+Tq3UETA}>HRg3%2<5d>B+iuf-Ky93 z9av{Palz=j2#l3X2YDRa40&UA-tEfW_N!g_{ZEVn^%u0FLJ8c(PuVQqA%$_ ziAnaaHSP>>_Q5$n)0IAu<}h)u-<0$qDf(c(v4MN^AwK(lhlqEVvmr_}qnIMmx4@XJ zXzOeR|#$NY@*`5lmznw>6#-sv(xhQ{n~TkgQ#X>!6-RU#dPWMjYL74Cq8Ar zUN8A*W+O&fbeS?B8)AS{9zLAb9HYQ4E?=pplR(W>uIDGrK`gP}m|d0|+P9Ou4G%jR zq&lcZs-4hy@9ki;DNqoBJ3t6`hKKe6B_o&}J868jNiSPAETt(O6QQSL+e3Dl19=0+ z27j6iCO^D0=d;dZv7rTO^fb{~kt{Ai!Cw1`06mUd_)~U+DgO^~p8RRA#X2_M{YAGR*?IBzue-^+&$?*KF|4^+k87%|>Cqwr);{+!stMc0+OMVe0AvSw%so zpxh%6N!$K= zs)gi^&&7_G$-JtY?%jCxfSMB ztf4PaoiXYBdh|qQ$czPWs51v1(?a4iN)02eD6YZ=GIV zeN3*v4{;p=GQZ=#+a{*aN5-x34TR;5n>6c{CC0b7aJlJi zYHqlxbS`z|VYFW~U!Fih}GZypB?`N)+4b@v~W5x!(0eaH1oG^Vp*)}@(tG$ZI z1NZpnmchAfUipSHR83v#8agBl7=3VncQraR{X1=M4N;wA+6^s{%+r1UnTp0 zw_%cv%)JwD+HJS(F5a#Te|`%2s*EeQI(z$cQ0M-D{4p?ppzqDyG{^MdaCkVvMX;*E z>^(wgeG~N_xyddR{sOtve5`YZfLDB{?tM3!4NKSMV0P1deL_g2x?Gj*I?NVQ14@bt zU2EI*{&xRW0ruukFOOgO&SK(03V~+G%#b?08rb0_ zihhX-Dd<9B>J$Q+Zremj*B7mb?RmrX-7S@EFP#9)Am>yij}(swrm0=m32Yo#w5ixp zbm}D+N!!c-N{|RB@*L6xk~B7okxNzvZiq6-GAmrCr!L|S^uemU|6}z5tM{;EANy z(>VdqpNRNO=d21@G20++y~dx;PsJ_2Pe=-osad5T0X;be>$R#CuFT&YHkEtR)%ps8 z!G-mSWr_HgN#B2c7lEGhO_Cs>uX9SKDmVjhL=}h|7gwan=k}m59IBRGrZR*ztgVNb zTDmIL`)!vu!*Lm2tbIiRJHqe4NnN2Jy(!+eEb5|`9~sWRmBok&jh(0wQH!i4$9o@x zgL|AQRcc}we_e!PwSf}GOu{~OYgyYrK<3&_7(B!VcU-&g!BVUlM~g|}vg8#i+vf-j z`5r80kV+Lav@Ww~5@5M_`Jqjvhm_N!@AiKhcAGh9q-0ub2(p}58bV?>#P{Bod>4K{ z;6Ul`?aa@3qmS0PxM?Lbn7#J#xH3FHN1R@g?t}cPSp?~?z(Xdd{^plVA<4Q^#SzH1SsL$OLE4BrJa#sQU2#jJ&Zji~*G8(C0Wk9}>WclVD|Y9^v*8GDQ`ovG{$ zSh)$Sov=aN+YWu~d+XrokDla)kG2BKST+(~iFn;YvF4lLVUOS5yj-U-Ox?vgZ<`$; zJw;z1V0N=UbK&x-U~vh}YKWtM(Nl}q)}|n^R!N2+CQ{*m6_)GLqp8o;aR$bf-KTqU z`^axWUDE}&cPtW92V&Ze(9!x1SSy{r`Kg;h9V7D;P%Pn&wp4rTod-kkojk>`lF^jS ziD=@kjFIyOZ3RYMftPpBJ#7-?aRt(jg4_k?ki09OB@%N0bK|mipD`gh$yh01%tYt> zVYev~gLDy2YAbB_bSO?;Y=AWVC@eRPNO88HN>qk%>v>WAwVhbYbTq^2gib4iK61=f1CrQH)93dn;q)`~q>!k*n|*jIVc4X53^I5; zY2U?ggP|>x?}Xdzjn3_YYfU^a+;%x1?y&$XIytld-T%Ndo5}>dNRc^suzCreLG^h zkQpyD;v&{0l=oe#mxh;VC=9ga~=~k)e*h3os%?J$8d{_XrA^1)N03)Qqsl zZh9oT^<3NV-d&9WD#VEJCqK+#=(K;7p{;N=^Uj3{>4S*|~bA~AGm*^}X zjQI9m{{8i&0BLW;kdy{8+1#VdP2nGg2~4}B>t#COqrCoafKW5*Int)EK=W7A0r(`P zG?a}|j{LyS1hEvh9?8x8-I(T*df5ZLd!9X8vi*_9G~Z4?0hJt$By#@GXehtdp_kFo zMI#NQIh4Lg^I*@{`~bs*)~sOg3qwQDJXvcfL^s!=-#jG8g!^z;`Hta*ef~X>RA+?v zP~)WsR|@7!79h|dagHFsg0klKJ9uM|1!#LI;$`WoqI-6_MERf?#jJdqg5E)pk%&eT zx-4EsVWpV7g$vfwp3&(jG4X+^pj|!SnJ=zwg!ecWqNAx`8%FSF#mz_4Pjb}5{Xv>V zF)t*z$#z>q>%l^9*j8jNDYq%!m`qns67_M1zdznf1ArBE|F4dEb*zgi8@6pWji~rz z7bxrcP4Zg{KN8J*YVT8zh^Y#uD&FrsrxJ-PQKp9>gdo9_n=_*yuLw>cvuXvv@TB;NpUdA3_U`Q#ChqhjS z{Dk4n&fZ7&aOiKx>PZDZ{?Pqdi6vMy%it--dB+kk3~S{gJ&Mb@%cWj^9=Ih!C4U;ilcR5$qKcQ zM=*Xkd~N3Z)N>VSLkO)_qOKUEf2h%LMQ*t_BGT!$Y|qx z+O);%L;aaFCfv{tKSJcvz)$ebhIVm?TmsiAF7J#IxVov1V!56R4K@yRYqv9#;ByW{Z4{)n4v`e~^x}13yM6cxAO>%F zV=@L2NnSRkl=6V~Ym>h1CC(S#^?z5{?_G>0Nx*dfI(j~@fO9&_SSWAYkH=uTlYg#w z_s5!Qp>_yDdzI*Vu!m^l<91tFOFgJOVOZ}jNsskK`{qlTb=flibsUhHBD3?V9Obn& z*}2Rf`JHR6e-5%Qe7vbqf5}m|O#j)0Y`t)#8k3nPyJJu`S24%`w6Rn^cc>wSF!zY$ zEexsc0y(r;KhC0PXuMCPG0gU)^8B!Pxa;t_g7nJk#b*DANk;4WuRm)I5bgcdhSevh zq2=3d|G2!K)@pQebK;t^*(FuxSSvd(N{zdP!B=sGcEkw+td0Dm)^sD35yE;4vQld- z&>U1LQb{xZ$q6&EokdU9sdO6*wFY^?DRhu#DTA_~&V_u(6O+w{6E9nKZp`x3xuW3M zqf;$2Ov7>%r4+SSPzt&PZLDFc7M@Q}Vg%PH6ver-Z7KDz2;4_q~?I9 zXcMc;1A@lJSVm<}@%3)=$bCX^1-lS4H-g7bJIy^hOxw*pHjpfMAPGkOLpXl?|B1ZN z<{!K8#~onar-38?M|2_l55S(OAY_VP$W7mT!jO-oe7SuWVCBH9J#`h9r+!YGZHb@# zC2YY+Yy|gWL8&q8kj@U1U*qEpabUbod8z90Rgkq3=Z6CkxNvf^_v34wJKR>D5ERGu zYjXoposj9v{5i9vO4`+Z%JTbHgCc_>kkP31S#u^s;A1VPK}fg_rnR!sQEaN`uqQ@I zv^A|oaUtyM0E+~s)S_U6CD{_bSaFeKcw)08A+D+Dgheta(ZV=RmbUPKxDoh47=4RA z^hMkc_ABD(ALDtG)4u4r4Ngj8eP)_`l|rAi4+bA|^fhle9UFON^DJ%1Vt-jYGb5$1 z6j3y=epBw-e5m@++Iyb^EhB}oK6Z(*NX}Nt%1`N8ZfbbwF07SL><`p6 z*S>xm(ztrzT=(Gm`!sJ{{L1g_-p$!zL-U4)Z)s*^N}0hnQ=PAcsju=ROxyboCmH~lCt81qk1cfufBm6gwaNqN@fE))F*a>$Q@%KZF(x0K`EpYFb#^=vFh z*^jQaGC&!rZ3Yo}pA0EKu7X=^#mh18jjGTw_gEN>H!gQ-jo~W)^z>svf&7uVj=)u@ zLPJgU`R|gV=Uk%HaLrc~taisnwMxq*5`yGS2#zh%hyF+=3%X0TG`Ex&Ae z@vy1sop}n#O^b1`+C1S-OV47F3kho?9XeAsNVo@oPa`oI>jQd}Ni6nB;gGDRFd6E7 zy6gUq1frK97k)OqV9Hp$iFkwnjE4BQCO%V&9VZOJ&w7u~@j9>!KB(>V(ul+Q`kKZ4~$bc%lR|w@XKE(;K4Bae0R-mV^B9D ze_+cr>x@0tW4VzY9!|hKvBWB}Yz1iU?XHc4AzAX@{dINATlwSuHq6P$f%*eaDv>P0 zI}*8Q*r~0G%i=ca5Gq?n$1jO#pRm7}qTPYTO}TcLM<5POw0^m!6~MfTjh$XeG}1Gr zmC`qb!-rZ_7t2jiNr{ynGK|KpB|2kbJwea4cj#^Ls5>uBkAjhhO+(=!cHjl<7xu9x z*&-POjKmoPwy<$788-$Q_0l>=My)?Q^9CW zweYKb?~@d&P*T=du{4Y$KbdcyP&H*ecd$EBc)UxRi86yZ&ByEGGSk(W7oF@zBx*x= zZ&3R?`~K%M0z*@Kb`EvJ56ILBh?59>b}x=Zx;zes!d6QUo=BoXBxKRGY>hD!r)PtN zmisfUuE?`N-0w#95GAPMCY8|UDD)&{PYcD5`~o0G7JeXsw66}n>1$yYhuKh(MeFC` zV9seFvi7p9<)B02=?OfefWfUpiyV98y)1h9JUhOQxkb>!%x%$rYU8X}g3h6i;%a4q z&t`%{zsDRN*3D!s_Zj$OIxNV|x3Z6RAn~lw=e}=zTB$Wb>e>(dk-GS12!-kUpG~C( z6KnEXC?h~YG~H6u{AilvOd~&R)y^p}<5WQXS-^+AI9jhti}$U~5}_r|aAl@QbK3>z|`A-5=HV9Muo zkw};H3>dMtIR#ymrns%q*i1X8>5QHqbDFo*wLSsW&P4lZMz*fK%2GcAL?B<}2C#)dZWbeMWpC5m1OPk%>k*?wWG( z^!8@@LB=@X?*Ze2LJK2B1Kth+hA0Eixb4igG}MqOKM*-ujkqQ%%YtAG#}DQw$S$9@ zM_CQ1yJ84oyIvUoR#)YO9)(DQ<_UK{VhmDHU|iLtY$<(xAkVrHO_8M-RpGjeCpIC?Or8?W%IB zS^iT$=o=d$;&Ppv-y%FS|0)RysEkbt@{~6S^uYEJd>O>gP6+-5q`|HLCjv6pU)o-1 z2bHl)A+0Ci1oFmsAM?f_9)O@YM3Fw+z=yVP-_3D(3bKM!IOJgE^gL`qxDcQM4rSnU zMX&bg3yoU`Y~B9%Ng?%pEKdYo@T3|uQH9Sb8-ZA2`%pB7UhGQEX!NZvyb>W(6zMaU z=k&z*Xin1RiR%0Pa3RXPb)?WBM2r_d? z<7mCO7BXVi|E{cl3rSAS$JvY*w zoY^Za_|@TZVgzR=~#?xz2DlpMFyidp%G{>(8<-vLUVYzZ|X2HkA=%o0O)Vs5IX zJ)h%fT-@rUvRdoO0Dqf0e)dJ+Ywd7QpgV>67Qd@z<*8#MGzHDMtq+)D0*Poq87!5X zdHc^tUKFZcV_e|gTH)1T=aGl_t){QLwC^)c?sp$)VgvVQ07NtJwxxN+beBBz?*-0QkTQ_NPh+O zVt2t0SWmM%#tQFctr9xYwXx+wJwZ*6tkzul!|lc~IyaKxmF`sqH)`X&SNClu8j0l7 zRc@XpEy?@qQu*QZp-o4sHeZLO`DGWF)!mkCRrk@6@awr}gTA4a?a}Ghl&f>Msr!4M ziZVU7KT(bL^XraVz+7g#&J$yZpUG*=kF_PqKfZ(~NHfiee@;#WXEM0yVQWfi^?0T2 zYisQz8yENR)jT%+QCnvP6> z$3$_II+}5lSyx@oO-JswXQ3W}6^FdeO+jz&ZGY+cO`V^!1uUfmW;F8Wy~|XUFrVmr zpxSr62O16hn+m!1b&9&^a}m^3@7${BUvBB*qi?=$@a6HCuN+`Gr{+kLhcQOa4W71|J` zi@(hMM;;|Kan-ptYjMmjujtyV)U9pmFg-I(C%uNlYHT>$2-=sg<--#3b{%5PRP zUy|kX3rvEqDPnb-Q8ra?Wv9gVWYddy!sF}C)5?|$z~w=)?Spm3PBd)8@#>cF^ZD)B z*`23`y?&0hckjZr+ep8VuE~kB=cJ;_gk0`qSe4E4o)*IIX2_xEV&ZtbA*aKK0Mp3L zUGAgSn#qtTH|r7Y>9&ToQ5O=1x{-9lXTd|__uLuPk)yH7fDOMY$Ia}P<4$o+H1ni_ z*L8OUP<15RdPuCnRq5L4e#QJ?QpM+T=FwoY;5uulVCZ^ArNR4greQ4ocez%}yZ2>I zT~p-v0h?*3axeTj!=oZrPh`1P!JJ2tv(ur|s0|BFmJJI9K1aDl@wq-BvQj6^1wM~G ztk-I@3cfUqjgU05x0`VMmSE|U^HFRm*!_z}0QIhGNra2U87IuP_}ov5c!L=M3w$<^ zjL*Kyl1aocwXPXryr$UggMFS)?e~GQpt0DOX93PuXrAY+^hd%=N@w;X3SHQtH5T2U z1~gkqe@YfjcDBLe+iI*ZOGpW(qwfwSxbplY6UEomp87vNCAInWqrx$mgZY&}>`xDoq~+?GDcl15kErtr^89WitRwlhjJ-Sz(-p~eEuGyiw zmDXMLDwmaUmmb2-JnzVjoS&4<{9I_7E8{#*NV)uoNpWrhFSj~2uixUF&qqd|M{t(f z1=5<0z{Vv+TWZMVvuUa|<1PJ7_|1gyDE_Ro^5&KDV1y`4k_=z&{v z-TgBx!K_Ay^3v6V{o@>_K6aI56Ue-g($#B+;egLon#YwG726B3(g-IxjYj-=hQ13} zYMjf0%jLN$ENB4xsB$$JOy*bnX$Ne_(flb0&8k&;B2?(2`UsU@KAm|}olk(X=?F~^ zy+QSmbJb~5w$#=;-$S*ixa!L`lxih^=->BZ?+XfURSWUsQ(RdaD)%@Q6#j4&^vITu zY{d=owP0VxvDxgN1#SA9^qJ6}-3JDp=HQ8XDOV2p=js>6zZ>Ci;_1G<7V21FO1{!?1w}p;&p%kmS+L&K;v~IvTzjE1mZ&i+|4J<(m`23| zwR9_&1a$jVb{pS!8>M`;~Ufeqb(7oaqt89$FtZob29dE6f-OOESjumFv99 zweK^`>DZkoDvz7X2jKFY*cL=v`&_)x_)AJx6vaE}_z??G@G{no&yC=dSci>8m7xB4 zLnL^6>tQpKnJ?U{SCd|*rx{%$fg2fYVk+_R%$!$Er~e4&X~tn@;?;Ac$}G-YkS1D3 z#5P@0@SMn?@cLZ+jXU zqoSQCCK>$*N)x5*lxU*4%X+PSTz*|k6}Nrq$ZbJaM7$I!mfbE-3ZHhw&Pay4Eg2VK zNpA#55K`P){@@iwfJ2+2FSkuDqwY@3WBk!uwJcmds+8bdh*kZ=8El*>E+ul|%(V)x zn8JMl15Nu=T)DAnNZd8WD>KWh{c8qzv3RgKJoxJ)_1JOSA601TIQ6gm|@0hb_VX_dd`Tm=Cx_(pZtJ|Z0)-5_q|1BBVkG@ z{JLdSV4M3*kl8Ye4u`<@`>WlYCj*M-^L4nXXx10k_M8x$>D$M++?V_hIFGvSHp^ifJCsb~Bw` zSF_&kp$fW(!Grg|%MTbMqoQ!jj#C@<1uO5q%{gM?^96+^V%*v+SGX3WJ_D0s_v7WluGF2$Lk&8jSWMvPa=ED*(%+K`tm*1f$?`hVIeElzzB@I!dX%9O<5ugF z{G>bKh=hg9HJ9({Y1NpNoPI_=Xp-!|H~wi?c3jD5HFowwJQD1kqcKvsYz#_=urk)bhll-Q4Qzf;mr-75^aGnYX_FORWm)<)7{D4pILPjea8qpxfrCat$xMT&q5ef~fRVJK zfQo@dX@#I>(|YgS%*YZ?O1jz2*U3so+#{uoGT&v)?eOS#svjIKZi1d#atfxucN;|J z2XKsy;mI=niZs*806zTu!)FZX95qY&QJzI(s!$qLmTuJ&CnwP}yx2y5Bs)&fcIna> zNur-pP9140d>B?=40YM+zC}pn!Bx(^eb%bCzL0*h?;#;eCY(&`8V!6zQ>Fw@;nxCk zNtQxmB#Oa4PK`%Xgl(e!i?0SsD#|ui&(ym6#!4_+d$79dNdY=W$+RT zR@CbE_lfC2$Hut`EV36WzT1iK#r5frkHsUpLclYMkZSi`2#~C;1dZ3FqO}yI{`qVI z)J^FZP&dgUZH@qYzoS-QyB_M_);@ zd>=m>Kg0Bj0pSzXWyZSLrR?L#FWe@rScloYP6@6=^1kr1r{b~ZTISmGrz?oD>8k70 zcA~|>p?Em2G7>1f?QXoCOiT+eVEm!$U_!5vJ~(a zstlD|>`p-sfi>CWwBb_rH?+vlh8TaQRD!oo@n<}40ftU}>qBOC(vBYIlpwscVtQRB z7{E?v{(?{#lf!t&)0cFLBpe8h<#xzqlA_)njpRR-1B} zP)`qlL9%3#QBwro&o6cwv+QMr3S-sFzLW#YkxEC#w!eCV+HM;n?H6j3sx7=nTlRdv*+>+)ss@<>#VtCnea!$N4b zLq}M@1d0Zz#xIt_qe^5}3g_d@m-yk$#VnaWs2EVfx0T~hgFk+)Y7A;W>!mF+DCb{N zEBSMsMSggnx0_#f7f^aF_q##9EU{_2P>b>E0#K~sqob%Wa`)DtowgIcUJ1~5X%ABx z+gj87dRvSegZ{hn#$E^hfjDV;jOqHv>K3>C1RZD9_|?coQG;S@4Cgd6x;59@9!{a> zehyfzb`r5dAYR5mwuEBDiQfzN#*BwY!3y+e}c0o_%co(_Ny8JAuB*CFlfR7_w%n`W#=GNBw|Qd5Iqtjf|GRT@n2+@ZO|7aVxT9C#q8XtLnuSO zaKkBGg7`gsF1EG=Iym@+NSr(VDCVS zsnO+M;SJ@j?P^)YTiH!oT16XUR*vwsIs>Nlsc|vmDJaEUz5tdS8W2HOw&mn$stxgH zCHi%%0_<(^rniKurf@~2`7i4zHxY2Lcw!UZ+0|n2XU{r}>isBB2onA#l@ltYNl&uf_}=H+`T)*vPZ;(0pF z{JC4{Bt>j0*a671b+l1vuV6`{Q7yV|*@e@5$)>`kNkNqhPsU7>x~7p;q8N3 z*|2tX)EO8dF;kmRQELfSMb(sX-(jC*aLYxT4rRa?{rrW`%<=MBXZ4b36{*`aoVY-L z!A{U;3mS{BBtrkn$>ZImSn_IjtRy3H%w&%mDgN(3TG^!?RWbBU{W4Z3Bl(oUncZ;`^%ONbkn(C|me4JfW zs$BZT@k?{@m~R%Y@q;RKL(f4Q(+4AhpVHI~5)38n2?=Qu3~8R!)OAtn?EKn8HTfQt z#%rqNiPHgqsJB5C&YlxU=hwoMJiIF&>2P2Qa&2dNhm53!BgfwIqyls-&i>KI!DkX= z+~3zlKh-SX(_BD_ovI&IhP57Z=?Ww((iSO8NSo%;Y)0Nt6R}?6>-mux=v`}dJ$YIl zZBT?uuNt#08HpJg>By~MXSq4jH~qe(*~2B|S-z^=TXm20RA&O(6cgd3k6Kh1YdMj{sGoy#tEk z(w?8}?Z;3Vx1|iaeKW)~4}_j?Z%uZAnOGpY^ul^>`^5xZQfqi$$9T5iT}?G9ZIxB| z@($TpNfcw@w{)?O$$gCb#q&&RZY8=cFJ+cTvztFOc9TFTG;(oOEcBmT9*2Dt(XIeU zcsLRQ2g9xa>I0`@m^YAy2?N zsV)`r;X7&!fKa6IA8>(!B0w;F=N|w8_YY9|Z}cCqK?TKA^V$DDZvT|rVt)ufYZwQv zP>69w3V+y^d0KyD6{u!yo17R;UP3Y`NEDcAC>S=3u1^qhv%4T03Wj~NS!fOs9g)TcN5&mg9t!;eFOJkhCvf5y!pniX~% z=`HL87oH`5mxnE$cDoDe;BdREfDTPS;HTJljANrGWaL;(?DU<0rHIeG1P8v7>*#!nDobqHUP{;R>`9-?8u-z!8zPErZ~ zLrs~JhKZ~tXcz(vLs$&MPyUdQ$)zJASZ}~w66THmoP`4vIG#8Y0kEguu4?mYH zaJp$LLY~ObtB>blxDkN65fA_mNA|gtrAXHQ6{HekzR>~jiuKt4CLzgy$A)}O#rE)z zeIr@P(KF%62>xvd_Xi2LSRXGZ@Lz8QcF@-T$FLiN~?PlUG< z$|mj&^xIr`tF9d4E$eBQsw=Ms)EgKL|F>v|-0yFt5O{1X2&5vsrCLP)FD(yEvfGj< z??yUQACX{=(?(+o%G%QcQ${&kMHrrhL1ain*<@LSDl;<F#0G_~LcY^?Oy7qg)d@Onv!!KOL=1+owGX+zgMl)--hOK_E$7$N8ghg25? zUdm-CvW^f)tHkYE^sgL~1TW3~C=p)I>AmEgX!tbG@M#`O580(cU2ohH;uSD+P`uGl zdKs3qKdb{PVOzM~zR(uDeVuFQH~U8FVYO&NgU)csLC-jFyvhCW|K)&fxjvq3SR`oS z;*a=`pagiyrZe9@ldv5m_ZF++|C;kPPf1HAXdagVww21o77lcP!vSzh%_mPewImOM zz&enbsQXJkiIweRd(mUM?aE#-Z!xg{$|seM5Td^2GL!s={$c$(4_uhv>h6D?2XEDn z`2E|jSF&!Z!6#dIc%F>y428#I#9x2jKoi_<_jqy$Bm20r+tG1Rh3jz|X$T!MFy36{U^s zw5JQ1RYC=l^|9Z>NF(W@M?7m38JW(Z3ppjX?R4Ys)B+>H@^6bSWN6m%{{*~FFjuIz z$kz$>N~5&BO|XBGZ~imEUL{^9m=Wr~k{%@T*>ph*H+0O_=6lSwok>c54NSu>+I zL+U^tMv$=Ao<_{1yCJi!$lJ;s`BFbC8-fH`&gZ}}b69Qz=Isp#wIO4e} zio*IOweR1qmZ|9T@T*_t$+^_bXAdGbwI)-~e^5(2l->!5>C=q`)0vX*7fZPMFkD4% z`|X}Rx}lNQeOPhj;+K(n|L|!*UVWgaq%_-RpSxmc<;r^ht$Awnfrn!%m*PeLnYKL{ zsmXy!Bip~Nzo-KPe@4Ii&6S{Jl^f*d#rgg)5h^t~+*{*0(TX`pao$gz-{HgZtc?-9 z4u}aUju~)Qx(^9iiXG#1Vd|S1=;^zE6Zrh?z@ypG?u(GdbtvdJm(s+C{<)BdM!Z^d z7ZQHp$tG27UGdxZiz5;~ylE%W2mx)W_ud8rqYM1xF@USiPu`iZs}%vhJrkEvr74v` zp$W&)-yd1ICXb^(2r!K2nb1oPOi_`B905K95zT{+YKOpu+D$~Qi^_M2=l}k7mw|KI zv7LRftoMCUc(V+Y)LnvgCKjH`c%RlPl~RFK2xs|ldZZZY3?+YC)~dLzFxIL<@7YQ+ zie1QlG7dW9%^>o78c-0CJ8+16Mu5SKmKDN|n>sPqs-Gtxsne{75gHjZbe7s|L6k#W zZKfPXkja7s5_LSQgUb;VP<8InGHbadj<3O;3Xf|;#3C4D-iGAt;Vqb(Ug^JlKQPh} z{-FDXy;9r$P=6jVVSm3;Zo$Q8fPCo`o%3m+KVIu=^0o8LZ|+|CW1zk{n{0)vrMK)M zOv&wGSkOm6s4)xeilf1Rr-Og8QU^bI`8RfJZAej;oohVNM?{h0p`iA=)g=5#Rv1R|0#%0;V%Eeo7p-~Rn%3yJ zC*y{H?J?F5{wT|8nZ!wWI*=|q?yuLmuFBt&#UfU;t84?IkO%=t4da)er{!PFk5v^+ zI7n-Xh|?Y@U*%WLK5ikUVwy8X`vxn= z}HpI<}{9>ED5wpKolA!zI4^_mv^S~RLO8CQpQ(tmQ z#}@V8U(H*_+4UZ|AoLMv2on8>h7Bg`#}Cb7h?6C=PaIuvZW+9AK&ZrdaX`UXHp-j! z^x)}6{QS2U5K}Hd2#i?Lc$xJSXhis#k#6_Xl3GGv_Av3uH0VG$cRR>xq)Ih-IHP6= zcdC{K|Hp#}F^N4pq5|e2%h!PCo}%@4Idx&N&576JM8if zReicuQ+(fzF*MrRNVyJLs^H$45!#)>tzt#0n6RFJXrjlpQ6wYa>Qe#9FycSTm=oOuXI$@^=~SzS}Iv@4fqBJc!`v! z)UO`t%uah!q!E&sPM2b>wtV}@R>@SueF&?KYwxkYt~h14G!9UPSh1vBBov7F6%7QX z{{099Yec-0!ZU6x)10UNIyp`)9kr%!?tw6}KpA%Tc}5A25^^PDTLl(qfVYk+W2TSw zgKijM$&x3c7cSW0dFE#p(1f4Y-H9W75C-DxHU|!bfzwgHZv%VpORgxiyTUtYIFd~n z-fPCGbLG14Un_@uAloqbu(y;h-VesY)@cxM@+zk0Nu&NvTKwWG10m+cOS}4BQ(a z8lekZ9|@&&v=%psW&l+M1zGKNRefDJylqOfM)Nv|X=%Rv3?n2aAH9SJRHSLLE=2;2 z9*==}`*?r(R}INbheMW+xyr?kS#VyqbrovJ8ByfrU7O`Hl zK9WU9=Q6;aed!!V-**us)k}E(9^L-UP&nP4yR2ntGlPE4t^wC zI#MmsLd{_C?`)}jal-6=Bb5RjT$2qEsYil5-I^`vpS8jIy)xP^yxdgG9KwSSG&Cog zmU3u6M;zidD0(5wv4%vOL$Cu+*U@-K74SkT1;tNpV(a3*5(P(F4B%`l}tx7=FOxohcZSLI$Vp7|5PGQC=+PJ6SXu& z+VXo;YJYQBqO7!j;d5O5#OJs#Uu7cW**sN(r%msXC5W@U5egX42m4^Z4JU+|6iLyz zSEg#~P|WQZ&&{{Y!cjOkS(*_5AnOn3-`4FNnZX!YV=DVrsDvXF>gE~GrSh+Tfzqn0 zgEAS2TC?RiOFs5m%+yav7SItQ!nohZ`-;A2M%*r`D`6qlS+b3Mgg2qi@bA&!(?>64 zV=|YscL(=<6e{e@6>=-=wv;Fu#p_Nv5r=a;7RKdOq@u1&FA6l_R^8eHJR?bq;?MCX z)E-U0saHp4oyQJJOUzBFT@HSmw6c&Dkm|Fq^NYn^#KqGpRQqMaS8JMi-{_cxRB>8} z)(Bo`j=4oLvZ6dhUbyr4yhA=00X@j*DPSIe5(8c`Pm^|RlWR5h=KB74KCL_;`pCck z)tbjYyMU;L7QsZSIHABCnBH(+HH4=kKu|y3*ZHh>T~uQl5YyJ7X)d)Z4fQCJ+gTU@ zPbs+iK}Ja;#l6Qqe|ypD0DY6%t9+I`2Y(wjKzWDKNZG7kJpCP!x1K(VNk1-Cd1##V znd{xmP1642M|tl}A96RfopLf20?*J>O#a+(GkSzn)j+iFtePKUK=DV4u*qi{qRRjqiJXguJJ884aexKy!a*b*q*hkEKpg+*K)t#1@~8 z+lp0$5D>Tftd~lJ*k3?V!@@2?N6T_ix0UidzA24m`cY@D0KRN8vrlVhNH8H~UBdBn zt%VLn)9=^Ao!nk73h=wIZ)9?LU7WW?{=JnXjJ1cps5FriaeGX$gc%wugjaxI$aYLF zvW_yOR=_iVLgyIYaXi$sZvGD3hnyO29y3t|n$f{v?NST?I!eCjtl*`TtQDyq!8QF> z$0LmC>Pf0PVZ`~JFLic$$c_fELW~zRedI8h*Ga;-3_hKA0D7Y~^6orM!OI`K`N+0i zY(~n_%s$-i*DlxCtU8!X4Lk{DiMWHi=u_cjOhUI3&pwaXxaw}bqfeyZWpZN@5#Zg! z{-~AeT*C};Fmmd@Onk3F+x8q2y`|&Tpxy6l+uNA2TiHu%;<{Y9{by#mh4XT>bcFk- zDu;?&qV5&9Ga!u}b952cE}}Znr$EwVzrg_noLk1D{E2eC&Q+S<~$R3WD|!~r}m9STnZ^@aYTg&*BzV6<*FG2$i3k1ELJuI}R_5lt)_JJXBdBJ{K|2Z0g`4q~>NuHL# zu=@F7(!_2nrc;~jVF+q1oqF~w3ZY3s`J;d!!;5bP)v}wm;YdcW{?AlOlJLiyh7^a; z*@Q(#@@eEf;86e6^*AYGK>z&0uH@A>uU!;fp6OSA*XD98=LeWGza5e|$i8H#;BaX& zV$NtsI(LpMAvwC@yG}0>_94FZB4w1>OwTrAwKR;fGt?%=zo%xfVfqdo#cP;73>bK? zlAtkM=joqhGkEYDYL_=Iaxn0msj>{*^BS^x+4@DnZy3?C))WN1l- z2=`C|$M~zh8cK^N(EWaOHW+Lz2vb5R|bK_U0a2G-T0e0y>#;%IQX zmMPNLK?XLo8qY)U3F}w#%ybXtBhFwhhrCV_aFDq zd8!INs#&6(51Y&0pVOt%PXh8e+Nh~twa0LD8UR}kY99b^v|gFRtV>=kjXv>FiTu)R zkMM%pm;SCj4V)B>4VN}B_VG8n#MD4;w>(E0{l|0N`ZTPL6jbx{A^Dv6^}w;j%OMB0 zX^OFb4p}6g&bqKo%bO!bKjN*XV+oOT@^Ey+yKH7eob z7+6fiy6}!P>4qhCYYbZtBz2LF(!q@i%hksn5(;3tv|A+5?hV=i{cJp#?QTWG$ ziOooe?drwxPmg?-(C&*H+s~-uX4WnGlfb1cnb}8X6LsYey5+@p#zMNXS}uarHh~Yw z#Vsb)2^aGXrS1Cr>FNrQaEKuiGMGezO%A`JbudSzFODDh7F9fcfHJ~n?!~O4u04k7 z+x0!AJuNpPAhj;jZFo0+;%CKeQZ$VwgC{=}%074Lps7c z{CVLToJMD=IA6DODT8ZO}PfS6}at-l7aGkd&bum zn!i1=yW>Nj6w3jRVz!ec@ddl6tk*QX9}g=evftfk|45T`=ykWul}RXjEP^u`gvUfJ z1Cb4;u2(QhB%R<=s~^Vb;ZyJ~hyYABUCn@A$s*eI^Cihb#{;k5zgPdxfA7r@C7ylw zb+|m%9b&PXePpA>t)x^@@2h`&*+??d!f1EAt7{53s0F)ExTy7UG3^mwaQq7tbBJ!~ zr`FQ5f~KBG*^H)Q(G#*;i6lWmiN%(y zNQuZR5Q7VF1~1RR(0dWM%oQbNJkn}|((r_le;HWP@{1NIA9S6zu&2)YJa7}ljm5PX zAY^wmW%&enzf~w{+yGXSR@O`Txnmv0mc15A9rc!=n21Dt+r6vEMhDX36ef>-pSTue~KNv!T*ls*DssUOLnP8ZbJAdnACw! zWrnaD{Hs@e)4k_(c$nu3zJWQ-M`Cp0bLf27Y;o(_$*A{xu9!`i8^%&%41|DKLEzax^^zetmSwWa&&9&mHO>Xo5PWI|buLICD>b zG#f-C#im*GQt_*w3@bE+AabHiOlyLY8ia!^>XbD0ap~CrX-v%|radH&Ql5dO2U$0j z;2{tnK2@!^DQ}p9(G(>pOlg`z_nyV!W^KQn9?hm&!^>(N9nzi zIf{!9Pkk~r;VKx|6(MSbt4!xW#>HTNhKrxG(tGyNvrYb^J`I-AXDw>TfImmI8Wm>^ z8S|+Njgwt~3Gsw+1DSyoT8U6cZYDvd4B9viJP0aWYI?i-(t}BGL~E!zKbkt`rBLlh zU?&O%`6r~77=mO+Bi<#g39Q~4>N)Qh|XwH!#8vsYw~~Nh<~*Q8d?0#URwTsxLr2g%WQIUeY()RD$v$mI={STx2zs^yv=QW zM)(l-OGlu#uw^p72vR$K|l64{18Uwq$B8c2QT*-7DZ@z|823BA)OV+Sp;>L7Uq$&jO4v$ zHcRQ2=|ST*U?KR^Ai64jWu}3pc1Pz=n%tcZ&Emt|sjg+af!oRtAN-VIYF+FaY7B2687x1-XYwa01l_cB|G1EC zA92kYcfFUk_kN$VtUzpWPU-Ud(7r#Vms{!1ZKmNA&8V7HW6&U90uz(b^G#VYjOn4W z-()L-Io)aJj{h~nJd~HYMaU@f(3WH1Jp$e^~VYzuy5Mr^W zgsj9vim$^{f4bffVzI7_{6Z#Zo>U2HymQy#~0AUEc8R1bjjh|X=!1XwtpRj z#aYaEiTwxcD0e)WD#i{ei<(k}U1oiE+4ul@SP#TgtPSe5;Y147B9r1rL9YmKART-2_|_ON@?FQ5(V}s`pLH0K`)1=5tuP#sB%^d)GX5Y4+B3~eaS_EzwL2`n z2x@I}oSfcD^9+@?O3+}?s~1ucDzh)c5$nT7uQ zG7?bT2N~#aJ{Zu;hfk0_pik_?kdL4*>`DmGAPa-#9qn~c9lHz)Ml#+LU!3x6P{QAz_JeTJhH|R5m0=&Gwhb;)-2UO0X25hYAHy#Djx;?`;ffEz5%UmJ_ zLMkCfbvSZq>Bde)B6D2=L2QDA^!f-m27KQsd%^MJR$iV-F(?SI1$853E~YS)bl-LL z3n+y=@?Fd$%B1?Dz9o*c)=U`-6R5V-_sQxm{uu_DyJT|IT}D+6V|TdnS6UXn7~r6pm`}>_nzcfK&&RdU-atCEwWKDJ z^_tAMf!3+`@}zBQ;BQ5r>!LBE$^h|D^OMOq`{f&%_EWh_G@ox{=&I{VqD|gKgRuUW3FD5XN*Q>l+ST(x zOMr5T9UE;eIy3rW#%!o(0F3u7bFk?QQe4{$1Ga-Kap5~;*!dw(B0;R)Be+VidjOn# zvF)(lRF4+_^nkxXcJxg zIj&0yp7k5GkuWh+pl&YHnm%;qdU{SBKYPJO4q4QP4m%U;scl zU)2%Z$9F>q`q@*q-`F;Ds9)%Jw6;E|d#@Ff%rq`}f$7>8mpV8P%ukLE&n7FbQahzq z%gkxKoqv##TXd3r9=n*jAm;M;HV~(VS0yz8q^w-3aqG~?^Yq9WS2gNFRc)~x+r0Dh z{_s_Zji{P+_S*(0+%u~XH!n3Qus%m}IfMHF_O6_dFAA;QAVI(Ar3e|WIl~GxUcgtb zT570~WY1l89-FOt=MhWLW)kTKry=)|+ALn?{o*Hhb5N@_u`GRd>KONHYs->B=+@J5HHyAw~_WmX;Tte+c) zM#H>w!^3y|lgFK%gYxex-sWVujQh*rvBkgdI`xW4$qS5^y5%okxT}vCb$>kJ5;K2D zM)eg>)8;bxIcdj=!n({4C^eB^Wz_9yKYPS2{}m+LVT~mx&(03Jx|V2Zw8*rzpa1qa zEwLw*LQ5)vyQ1>dr2jtro6i2M0bwP&ad~cE~D+fWz$@n#8bw@ zvHYJJr{xvGy_32%5$A20<$V&~tATzsPG@^TGOcl)hkc5td<&&ffM;ZUr*$pBj8d1@ zSnH%#iK|r%KQ?6~S8b=eo6GjfcxaIWc1&L@*NwMwf4Yi5C8Tje68tdmJu6gAVt ze16WL&t^6|XY6*~=>(Lb?IB}2Eoooi1cx$F9;D~H&;Jw7T&8OKZou?(gtHV{5%|32LjK*AM8O-UmHTuwQhMn zj&7f7jd5RDfh?Z_zy9j^?H^Iax{2S`EAc~dTIY6JpJJ7OA*+Jmn%K|SHk4M#lCgPr zj#Plrt5+#AZ8M_jn9Hj-HvRiV=Azf#jB}5)J!@Lu?k>8-?l$@_= zZp6YeQNVY1+{*KhUF+*Kv7uoq=4_wKH(?xQ)$vkSU$<^4z4}P7jcHdoqLn|bHXhocn?-*>SgEcWi}Gg@{+)30UPc17H*Qz82iyb`*{? z){C=+C%AV+?7FBO$A6D}Y&Al^Pxq{C(pb64amo(xf%Rusa+cfu#HD_F6EC-S^DYmF z=l7(DMU1pI1o!)UM~B)@!#1A?KLg5g@CeNt!_m3?6C0-f@cqP|^?`tJx3kpR>GaW@L2Ebtz#_%#&-#Qy^SEgf