From 89acfcfd57851bf91c5a80931abeda83deb0a942 Mon Sep 17 00:00:00 2001 From: mugurelionut <mugurelionut@gmail.com> Date: Mon, 9 Dec 2019 22:25:06 +0100 Subject: [PATCH] try some small changes --- aicrowd.json | 2 +- r2sol-old.cc | 37 +++++++-------- r2sol.cc | 62 ++++++++++++------------ r2sol.exe | Bin 76448 -> 0 bytes run.sh | 4 +- run_local.py | 2 +- scores.txt | 125 +++++++++++++++++++++---------------------------- tmp-scores.txt | 25 +--------- 8 files changed, 107 insertions(+), 150 deletions(-) delete mode 100755 r2sol.exe diff --git a/aicrowd.json b/aicrowd.json index c7c8e15..fae008f 100644 --- a/aicrowd.json +++ b/aicrowd.json @@ -3,6 +3,6 @@ "grader_id": "aicrowd_flatland_challenge_2019", "authors": ["mugurelionut"], "description": "Flatland Challenge Agent - various techniques.", - "debug" : false + "debug" : true } diff --git a/r2sol-old.cc b/r2sol-old.cc index 7ae3f34..20f210b 100644 --- a/r2sol-old.cc +++ b/r2sol-old.cc @@ -893,36 +893,33 @@ bool FindBestPath(int aid, const int covered_by[][MAXNODES], const int is_covere assert(0 <= t && t <= T); assert(can_reach[t][node][o] == can_reach_idx); if (ct1 != can_reach_with_t1[t][node][o]) continue; + if (/*best_node == target_node &&*/ t + dmin_aid[node][o] > TMIN) break; + if (t > T) continue; - if (best_node == target_node && t + dmin_aid[node][o] > TMIN) break; - if (t > TMIN || t > T) continue; - - if (t == T && (best_node < 0 || (best_node >= 0 && best_node != target_node && best_t1 < ct1))) { + /*if (t == T && (best_node < 0 || (best_node >= 0 && best_node != target_node && best_t1 < ct1))) { TMIN = t; best_node = node; best_o = o; best_t1 = ct1; - //assert(false); - } + }*/ // Case 1: Wait. - if (t + 1 < TMIN && CanEnterCell(aid, t + 1, node, node, covered_by, is_covered, is_covered_idx, tmp_path) && + if (t + 1 <= TMIN && t + 1 <= T && CanEnterCell(aid, t + 1, node, node, covered_by, is_covered, is_covered_idx, tmp_path) && (can_reach[t + 1][node][o] != can_reach_idx || can_reach_with_t1[t + 1][node][o] < ct1) && (agent_aid.inside_poz || t > ct1)) { - can_reach[t + 1][node][o] = can_reach_idx; - can_reach_with_t1[t + 1][node][o] = ct1; - auto& new_prev = prev[t + 1][node][o]; - new_prev.t = t; - new_prev.node = node; - new_prev.o = o; - new_prev.type = WAITED; - const int est_tmin = t + 1 + dmin_aid[node][o]; - if ((t + 1 <= T && best_node != target_node) || est_tmin <= TMIN) InsertIntoHeap(h, hsize, t + 1, node, o, ct1, est_tmin); - } - - if (t + cturns > TMIN) continue; + can_reach[t + 1][node][o] = can_reach_idx; + can_reach_with_t1[t + 1][node][o] = ct1; + auto& new_prev = prev[t + 1][node][o]; + new_prev.t = t; + new_prev.node = node; + new_prev.o = o; + new_prev.type = WAITED; + const int est_tmin = t + 1 + dmin_aid[node][o]; + if (best_node != target_node || est_tmin <= TMIN) InsertIntoHeap(h, hsize, t + 1, node, o, ct1, est_tmin); + } const int tarrive_node2 = t + cturns; + if (tarrive_node2 > TMIN || tarrive_node2 > T) continue; if (!IsFreeTimeWindow(aid, t + 1, tarrive_node2 - 1, node, covered_by, is_covered, is_covered_idx, tmp_path)) continue; // Case 2: Move. @@ -942,7 +939,7 @@ bool FindBestPath(int aid, const int covered_by[][MAXNODES], const int is_covere new_prev.o = o; new_prev.type = STARTED_MOVING; const int est_tmin = tarrive_node2 + dmin_aid[node2][onext]; - if ((tarrive_node2 <= T && best_node != target_node) || est_tmin <= TMIN) InsertIntoHeap(h, hsize, tarrive_node2, node2, onext, ct1, est_tmin); + if (best_node != target_node || est_tmin <= TMIN) InsertIntoHeap(h, hsize, tarrive_node2, node2, onext, ct1, est_tmin); } else { can_reach[tarrive_node2][node2][onext] = can_reach_idx; can_reach_with_t1[tarrive_node2][node2][onext] = ct1; diff --git a/r2sol.cc b/r2sol.cc index 20f210b..9a08fde 100644 --- a/r2sol.cc +++ b/r2sol.cc @@ -31,7 +31,7 @@ using namespace std; #define NMAX 201 #define MAXNODES 3000 #define TMAX 2567 -#define MAX_NUM_THREADS 1//4 +#define MAX_NUM_THREADS 1//3//4 #define MAX_CTURNS 5 #define INF 1000000000 #define ZERO 0.000001 @@ -232,8 +232,10 @@ void RepopulateVisitingOrders() { } } -int covered_by[MAX_NUM_THREADS][TMAX][MAXNODES], is_covered[MAX_NUM_THREADS][TMAX][MAXNODES], is_covered_idx[MAX_NUM_THREADS], can_reach_idx[MAX_NUM_THREADS], can_reach[MAX_NUM_THREADS][TMAX][MAXNODES][4], can_reach_with_t1[MAX_NUM_THREADS][TMAX][MAXNODES][4]; -int tmax_at_poz_node[MAX_NUM_THREADS][NMAX]; +short int covered_by[MAX_NUM_THREADS][TMAX][MAXNODES]; +int is_covered[MAX_NUM_THREADS][TMAX][MAXNODES], is_covered_idx[MAX_NUM_THREADS], can_reach_idx[MAX_NUM_THREADS], can_reach[MAX_NUM_THREADS][TMAX][MAXNODES][4]; +short int can_reach_with_t1[MAX_NUM_THREADS][TMAX][MAXNODES][4]; +short int tmax_at_poz_node[MAX_NUM_THREADS][NMAX]; void CheckAgent(int aid) { auto& agent_aid = agent[aid]; @@ -536,17 +538,19 @@ void ComputeShortestPaths() { } Xor128 xor128[MAX_NUM_THREADS]; -int perm[MAX_NUM_THREADS][NMAX]; +short int perm[MAX_NUM_THREADS][NMAX]; char pused[MAX_NUM_THREADS][NMAX]; +#define MAX_HEAP_SIZE 100000 + struct HeapElement { - int t, node, t1, est_tmin; + short int t, node, t1, est_tmin; char o; bool IsSmaller(const HeapElement& other) const { return est_tmin < other.est_tmin || (est_tmin == other.est_tmin && t1 > other.t1); } -} heap[MAX_NUM_THREADS][TMAX * MAXNODES * 4]; +} heap[MAX_NUM_THREADS][/*TMAX * MAXNODES * 4*/MAX_HEAP_SIZE]; int heap_size[MAX_NUM_THREADS]; @@ -604,6 +608,7 @@ inline void PushDown(HeapElement h[], int& hsize, int poz) { } inline void InsertIntoHeap(HeapElement h[], int& hsize, int t, int node, int o, int t1, int est_tmin) { + assert(hsize< MAX_HEAP_SIZE); auto& new_element = h[++hsize]; new_element.t = t; new_element.node = node; @@ -628,7 +633,7 @@ struct Path tmp_path[MAX_NUM_THREADS][NMAX], tmp_path2[MAX_NUM_THREADS][NMAX]; mutex m; struct PrevState { - int node, t; + short int node, t; char o; HowIGotHere type; } prev[MAX_NUM_THREADS][TMAX][MAXNODES][4]; @@ -692,7 +697,7 @@ void RecomputeCheckpoints() { } } -bool CanEnterCell(int aid, int t, int from, int to, const int covered_by[][MAXNODES], const int is_covered[][MAXNODES], int is_covered_idx, const Path tmp_path[]) { +bool CanEnterCell(int aid, int t, int from, int to, const short int covered_by[][MAXNODES], const int is_covered[][MAXNODES], int is_covered_idx, const Path tmp_path[]) { assert(t > TINIT); assert(0 <= to && to < nnodes); const auto& agent_aid = agent[aid]; @@ -736,21 +741,21 @@ bool CanEnterCell(int aid, int t, int from, int to, const int covered_by[][MAXNO return true; } -inline bool IsFreeTimeWindow(int aid, int t1, int t2, int node, const int covered_by[][MAXNODES], const int is_covered[][MAXNODES], int is_covered_idx, const Path tmp_path[]) { +inline bool IsFreeTimeWindow(int aid, int t1, int t2, int node, const short int covered_by[][MAXNODES], const int is_covered[][MAXNODES], int is_covered_idx, const Path tmp_path[]) { for (int t = t1; t <= t2; ++t) if (!CanEnterCell(aid, t, node, node, covered_by, is_covered, is_covered_idx, tmp_path)) return false; return true; } int tend_ongoing_move[NMAX]; -bool OverlapsOngoingMove(int t1, int t2, int node, const int covered_by[][MAXNODES], const int is_covered[][MAXNODES], int is_covered_idx, const Path tmp_path[], int tmax_at_poz_node[]) { +bool OverlapsOngoingMove(int t1, int t2, int node, const short int covered_by[][MAXNODES], const int is_covered[][MAXNODES], int is_covered_idx, const Path tmp_path[], short int tmax_at_poz_node[]) { if (!USE_SPACING_TO_AVOID_DEADLOCKS) return false; - if (t1 < tend_ongoing_move[node]) return true; - //if (t2 <= tend_ongoing_move[node]) return true; + //***if (t1 < tend_ongoing_move[node]) return true; + if (t2 <= tend_ongoing_move[node]) return true; - const int min_tstart = t2;//USE_STRICT_SPACING_TO_AVOID_DEADLOCKS ? t2 : t1; - //const int min_tstart = t1;//USE_STRICT_SPACING_TO_AVOID_DEADLOCKS ? t2 : t1; + //***const int min_tstart = t2;//USE_STRICT_SPACING_TO_AVOID_DEADLOCKS ? t2 : t1; + const int min_tstart = t1;//USE_STRICT_SPACING_TO_AVOID_DEADLOCKS ? t2 : t1; const int aid_t1 = is_covered[t1][node] == is_covered_idx ? covered_by[t1][node] : -1; @@ -803,7 +808,7 @@ bool OverlapsOngoingMove(int t1, int t2, int node, const int covered_by[][MAXNOD return false; } -bool FindBestPath(int aid, const int covered_by[][MAXNODES], const int is_covered[][MAXNODES], int is_covered_idx, int can_reach[][MAXNODES][4], int& can_reach_idx, int can_reach_with_t1[][MAXNODES][4], HeapElement h[], int& hsize, PrevState prev[][MAXNODES][4], Path tmp_path[], Path* tmp_path2, int tmax_at_poz_node[]) { +bool FindBestPath(int aid, const short int covered_by[][MAXNODES], const int is_covered[][MAXNODES], int is_covered_idx, int can_reach[][MAXNODES][4], int& can_reach_idx, short int can_reach_with_t1[][MAXNODES][4], HeapElement h[], int& hsize, PrevState prev[][MAXNODES][4], Path tmp_path[], Path* tmp_path2, short int tmax_at_poz_node[]) { const auto& agent_aid = agent[aid]; auto& tmp_path_aid = tmp_path[aid]; @@ -886,22 +891,15 @@ bool FindBestPath(int aid, const int covered_by[][MAXNODES], const int is_covere int TMIN = T + 1, best_o = -1, best_node = -1, best_t1 = -1; if (tmp_path_aid.tmax < TINIT || tmp_path_aid.p[tmp_path_aid.tmax].node == agent_aid.target_node) TMIN = tmp_path_aid.tmax; - + while (hsize >= 1) { int t, node, o, ct1; ExtractMinFromHeap(h, hsize, t, node, o, ct1); assert(0 <= t && t <= T); assert(can_reach[t][node][o] == can_reach_idx); if (ct1 != can_reach_with_t1[t][node][o]) continue; - if (/*best_node == target_node &&*/ t + dmin_aid[node][o] > TMIN) break; - if (t > T) continue; - - /*if (t == T && (best_node < 0 || (best_node >= 0 && best_node != target_node && best_t1 < ct1))) { - TMIN = t; - best_node = node; - best_o = o; - best_t1 = ct1; - }*/ + const auto& curr_dmin_aid = dmin_aid[node][o]; + if (t + curr_dmin_aid > TMIN) break; // Case 1: Wait. if (t + 1 <= TMIN && t + 1 <= T && CanEnterCell(aid, t + 1, node, node, covered_by, is_covered, is_covered_idx, tmp_path) && @@ -1047,7 +1045,7 @@ int rerun; vector<pair<int, int>> shpaths_sorted; -void CoverPath(int aid, const Path& path, int covered_by[][MAXNODES], int is_covered[][MAXNODES], int is_covered_idx) { +void CoverPath(int aid, const Path& path, short int covered_by[][MAXNODES], int is_covered[][MAXNODES], int is_covered_idx) { const auto& agent_aid = agent[aid]; for (int t = TINIT; t <= path.tmax; ++t) { const auto& path_elem = path.p[t]; @@ -1059,7 +1057,7 @@ void CoverPath(int aid, const Path& path, int covered_by[][MAXNODES], int is_cov } } -void UncoverPath(int aid, const Path& path, int covered_by[][MAXNODES], int is_covered[][MAXNODES], int is_covered_idx) { +void UncoverPath(int aid, const Path& path, short int covered_by[][MAXNODES], int is_covered[][MAXNODES], int is_covered_idx) { const auto& agent_aid = agent[aid]; for (int t = TINIT; t <= path.tmax; ++t) { const auto& path_elem = path.p[t]; @@ -1070,7 +1068,7 @@ void UncoverPath(int aid, const Path& path, int covered_by[][MAXNODES], int is_c } } -void CoverPath1(int aid, const Path& path, int covered_by[][MAXNODES], int is_covered[][MAXNODES], int is_covered_idx) { +void CoverPath1(int aid, const Path& path, short int covered_by[][MAXNODES], int is_covered[][MAXNODES], int is_covered_idx) { const auto& agent_aid = agent[aid]; if (!agent_aid.inside_poz) return; for (int t = TINIT; t <= T; ++t) { @@ -1080,7 +1078,7 @@ void CoverPath1(int aid, const Path& path, int covered_by[][MAXNODES], int is_co } } -void UncoverPath1(int aid, const Path& path, int covered_by[][MAXNODES], int is_covered[][MAXNODES], int is_covered_idx) { +void UncoverPath1(int aid, const Path& path, short int covered_by[][MAXNODES], int is_covered[][MAXNODES], int is_covered_idx) { const auto& agent_aid = agent[aid]; if (!agent_aid.inside_poz) return; for (int t = TINIT; t <= T; ++t) { @@ -1089,7 +1087,7 @@ void UncoverPath1(int aid, const Path& path, int covered_by[][MAXNODES], int is_ } } -bool RunConsistencyChecks(Path path[], const int covered_by[][MAXNODES], const int is_covered[][MAXNODES], int is_covered_idx, bool crash_on_error = true) { +bool RunConsistencyChecks(Path path[], const short int covered_by[][MAXNODES], const int is_covered[][MAXNODES], int is_covered_idx, bool crash_on_error = true) { for (int aid = 0; aid < N; ++aid) { const auto& agent_aid = agent[aid]; if (agent_aid.status == DONE_REMOVED) continue; @@ -2335,8 +2333,8 @@ void GetMoves(const char* testid, bool replay_mode = false) { ReinitDataStructures(); ComputeShortestPaths(); } - SCORE_EXPONENT1 = 2.0;//2.0; - SCORE_EXPONENT2 = 4.0;//3.0; + SCORE_EXPONENT1 = 2.0; + SCORE_EXPONENT2 = 4.0; DBG(2, "testid=%s TINIT=%d: resc=%d nda=%d npl=%d\n", testid, TINIT, reschedule, num_done_agents, num_planned); if (reschedule) { if (TINIT >= MIN_TINIT_FOR_SAVE_DATA_FOR_REPLAY) SaveDataForReplay(testid); diff --git a/r2sol.exe b/r2sol.exe deleted file mode 100755 index 2cfca4c12a2f7749ec74179eef1cf436a5521965..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76448 zcmeFaeOy%4_6IxzGdAkr84HSTkklRT#e9Q;;so3{c*f4?ps1*jCfcY;nv%{K7AiVS zaylNN(z4fUw{BTkS*e+2@gfXb8d|=jz1W-0h^As0z9i3g?LDL9ub$uU@8|R2N6y}R z?U%LJUVH7e*Is+G(BT>!Wi%QhKhcJN87NkJIZw$60}ft)F;9*m!_eK3W9VhL*3boT z6aGi?UHY9C1t5MRUki^KqVc72tHbb1zX{=dk#D4R`ck>S`pM|QA(5}a#^Y4ZOu=yc z((mS#JYVD+fnR8EEr%N}`DWe7(<9%`<%l*lM>xFZ+#kPHL;(Ek`{YCs3xx3^a!|Qo zxLhz?F7izZ(<}0g(35CF|F?wUmwsiy=qK`}y!4a*qh~UOCw|7F|KqzZO!&w*Qf>sw z5uX3op9tAUhTHoqx|D|L68VOkHw>Ina@Wmi17}R`Kci%(x2%6z#?Ae2P8%?1)_@yX zzhi+26}^4fXv4`tUlnc~GV6X<?{_z@U0yWd!J5h~gg4<p^-&)Bq5NTTv2QQL3C{Xu zT!fGziqewsf9I4P_lj*=gdLIc$De<oV9!4$vDj(+4o{^&K=1jB^y`4opXGlO_5WG= zD}Rx`=P&Bthy2(70TUki{V(d-{1@p&!K6Q_rwwU;hNtN-`j!0`_51%Kz3ea27yd<h z<6oq|4m|&CysG{J|Ho0!pV4jGU)108FVge=B0a)qmy)#jFY+J#i}ZniL1*Iqq)RJD zJo7KoFGoFp*5B?(?`ilO>H-4ziO3%V=I0#GWOv`bG$(I16c^up@2r`{b3Bt~dy0z< z#m<7f;>lBHPr18fj%Uj3g1kX9X3d;ZFzK!tQ#kC;A;qPhX|tzHnp`}6%DiGXLLOwl zW0dE{l;UDQX5C*rW6I3CJ=2P(%$_}KcK%Q|pu<LaZsw(KOqn)m_T>8~&7M;1o;B0$ zojrTXO!qv;Tx2R3Gb|N#xXa2W-BmI-mFk;QQtX~FY0jKt&%Dwp#U(SR&T?GR)|`33 z{a)Ty31E|F<WpT28@#!Alm{rvH&PqLcbAnFmrj{IXV%O~GfF)3isz<K!_NPaotl|> z|Gh-PdpYq+XWdV+yWQ^MIh2xWC>}lY{*sxKi$_kG<GptZ0o^?7)TuMPbEX-l&MKWU z6K#Ut?&-zuY150RPAZvUh>-7IuV+eG@r+sS=>|9ZU0jTwPQlQyY($7j#lXC*#Dhwv zmd-Aj>6uE^TvCH~X1H|8oLO#BES@^YJ!$4t!@X1Pb(hXFOhw&urWn8m7!K4!l};_8 z-amk0E1uJ-+TvpBLYO`7om4W@aQmP^#WxK|G2HHQ<_;>palnn@h2Sk0LTML5sTYGc z4Y(M-aX>oHQdo%E(gvj7Vi;6dDCIhfQwQAiM@VYtXy@>N8*e1ej>10^bcSgB>w^E6 zvGu})-zIQ9rA8aN8oJ@P8Q<<GVKu}cMn44OKSs=x5tu5G`IrBXdB|!tNSH_TL-0YJ z;OZlfWBKWBa9)6$4Ku^=iO7FdNlA<W?Gyk`b;h!|#V{cpU(U*3#`G<Md#*0&N}A7{ zFx>k$iboq3cB-FdGUcV8yW5`tq?<tt=l|@@=}?=x8lDQrCoy;z!+*nZPoGC20!)T= z;rMI@k22IEPCpU7Cn6_SUBS~=hV`0A`oXX;UUf<O#Blz#m!!9Z;~OtYPa#DBKed;n z=Y-RnFG+8?pXc9qNqWUDo^H8B&PC#p_K9|cVuXGN!}U-){g3>#bnp=A79{H<Kl?hR z6Awjx4t7evI+BQQuv2<Mr}X2U(i1zSw|7dvwo|$-j2+>4Rj2fbTqj*QsdIX`p39IH z9$E%X?vx(kc><(#N{{G_l%CNko$2G0h@YHJ>7DgTrBgb!9r?-clpf(Bf)#d32cuv3 znb;}4+l5r@OFE@nJEfO)O2>q|@Ke?)J-pRmu!>IU!iC%hLsh5r2#*lBrc-)nJ!EC4 z^v-(Js!r))R%WfN?vx(asok}m(y#24zOhq!e5dr<PU(N^l-}Ga{hChc|9|lR8x&A{ zM=XkF{_&W>p!jP&Q5`LcZ;PejLgzZt5C3d1bo4%g-$Jh(geX3Z;Gu&Z`04!}#Yv2W zT3CEP#YsejYFT_2#Yr@T*0T6EijznPtzz+dijyb^)v)*`ijxQkRj~Nm6sM^lDrNCk zDNa*9G?B&sLvfnwp?ns9isCfILpdz|D8)&%hEiDkVT#jK4<)hqVv5rg57}7!0gCsa zxPirIQ=F!B==gag^uCAUG?haKS^O@F(-aQ1u=pJmr>PsNW$}>|rzIk^mc@rqoThMS z6^rLmoThH5hQ)71d}<Bi>__osry#-Lu_}7D(BGXH+>cy}`c3d{ATzaw#_vO-KERJW zkM-efwZV{D%Lb9gOVQ2qa$g_IhFP!4x!P!$D)f?(JrJ(GHeLzj9H$7r?d&VIcn>Oi zT<9ojI)!?xP=C-z&FXQVBT>=Qd%qlo{N}&m!;0wH-#<b%m~D}ifH@`{3@WUs`7Pau zq8x_-La$0*@_)x;QUs42;6WV={q}oDhtR8nDo8!*RCi8L)bAAE56ANhT)KJx3c@gE z4*O((Ni>Z+4{ORVyx)5Eb*u~KztKl*_r!ty_W(}p-?iglxZZ~F7u`QWKt261efpeN z>dr?i>T#tmc$;EuQg)vA#G-=N!xdOM4s!ZN%2#C90c7wF9F38jKtV<Q5re5^Ka5B) z2IvK+0mUZslZYGdjFgLfLl4q0Um#b_=uwKE_-WA_V-@|ieTU9>(7?9FT+E=T4T_ej z_&Yr2;K6e=WP^f=*y{a>2siG|23CGJw7365`Bi^X9{jW@NS(MWbmDABM-AflAwEh` z&mt}O71F?*<3f{BmhqoEpt#RSqm`1{g9C_;v72ewq=Gy>);4-GI@dAEAzGunT@>Rs ztzVR^#bvK+E7AuWWqm@lEVeB4D(*clz5mJ28jF;YT^liz72_GD?z^bgtAt(#U#(FV z_btp<7S&VzR6urQF11m_`<>$cpeKb~y8R<yI7H97TT-_;`cD2mSr!j1s0U%XI5Mp^ z&&F{ZX%gKjjhAQ$atz~AYk6eqMcVTIbhz}GE}vM66nET`ciMo{Z)-4pByoA_YJ7!d zn^2EF#K>lxd#g(~Ifv<{raWV_q~*l=+KrxmzIKyP*?{(Z?NLJIqsZ@Tj}|IvOW<oa z3zaJo2v1?q*EACUn<Op8Wo#Bx1plLuosw2+5=%{j|3yT!e2agVpq__})pD%<T0y;> zWy!H2?C*^*D)<PLza4|MW>;g8Cbxju1+@=A8)*VFX~Fq6wHDo%4F-o+Xp?+rjY9R8 z$mKvA4*#yQR5Wb$pDOD^Adie`c5Z{guxUNSF=oiRC+U+NdJc?jI>X1`;Xfew_c9#P zoJz^3L@PzNo^Tnr%34qDJ`*A%m6E+YJ$9SRxJ_|)lf|7vrGQ1j<sM>kxtm<-wmjXc zqP<UyKNk(xO;v+4V;2ej?WkC6^Yqn+MESmr7I%2A({qi!gVAD>P<aE9vp(AQU9`AI z@XtX`HpFNTw1|6gC)i214#)p(vL-1Ge{I?24zXVFcSp|5`&@!QieXK;DO>C|SskgU zvt6Mbn6n^OB?w1-iN*ND?qTDzO}tU?k43v|d}d>O`XVB0cYt^Y1hoT0E^8yLproLF z#v(&(4*yoc|1u&dWAmR9{N)IvMrsz5Jnn1@2F$fhLAI&_CP-td)`RA2In8rmw+7AU z;S;QBr}=&fzf{sjMhf%DI}A6@Bvm|2Oj3Ck0u{s^NELt1EB@&TR`K#@Q1LCO_<}sV zq<;So;JXX_xRFOJVyQ*&FXa)dSZWpg6A@8LI`}wK9kBu6>cszmq{&8`B+5N)LZyjg z^51p9<N(LyPL9a~#8$8WMwrOdqGA#iQ21Kb4aFiVXt52n({gMO3X+(E+BPr=7BiM= zYvHvCyteVrqPAjITLq0HA#MnL!(0C+<$r_c|K@Q<how&=|3KsinJff;or7yR_*nwm zI5_kUz-u`8c@Cyr!4s!g>1_mlje{3+a3z6vaqw#dewBmW92|TK;CDE9DS=<%V3~uT zB=B+$zL&r+aBy!9{wG!L<=|lievyN_a4_Wxj^W^e1pY4v|HRkN<y84C9Bd=-%N*Ry z!A2?_&%r0&2Kadneuab2Lm~uE|H}Hki@^Wk;D<R_pvw1i@H+(ljDx3ha5C}U`y9NS zz`Hou#lhba&7a|5FM&Vh;QkzZD}m>8@E8K`;NTt{{1~A&frD=$@Y@`GY&je6UkH2~ z2geh5D+jl5@V$h25(l4t3*h%S_$>~eK&6cY*0MMKKo!ObXqG8zskOnq9I^_K;DZQ% z1hzE<AK}%#O4WVHtGkO=7oh6i{)LfIBk*Pp9>l><;uCy~gJ%$UKL^`6xGNFD!@+q3 z{(^(e9DF%-Wi$s5An-m8KJ*wP#B`D@H*>H+;Jq9i;NS!TUj=YPK0qH~@u|YG+BQYF zp|(w!V19f9>Y{x`jRcvN-WRlx#z>>30;nUtBZZ*S=WE)ECM%k$cQQz!sIpzb3aA&@ z(}Md^xvaVDX^@oOWJLpLvT_s8DEMD9v6>6VvDI3dAQkiV3so*cm6)w<uhA#&7(P^G z`fEfjKPuJC2ax6q8nc0pL0ED<s?ri0kfsmqSag~v#!&qwwGbLKh_ge-QCIB4sHUM6 zL1VM>+fGGKdq}DKHY%)NntGC+5HOJ9srYJ53e@Qn(0j*2P$^=Y_bWx0?Xn}aBVaxo zJYIx~QFCG})r@Y(6Ew%Ar+<IuC`+(WLKcB66v_yguLg#&(1A)OduS=4j`m!7T+j8S z=$QY8j}&cPEJepw2vq{)nk;S;^eza{8uAU$5Vs4<_TuYu?^4{MypnqAp3@i{=C=Cs z)Mi?es@|t%sN@tuBwxVjG@eAKhgn;ThPbUyE9y2ZPu2KeH3W+>g!mGNYFehoKIFnk z#k(*_Hb(3W;u0ibj~Q#nm>hkztte<Y+0j8dkY4}}T7f-7)?)Gjz_M5sO-U|$7NPJP zq2MmJ=lDB>s>3V-%3-~#`U(-&tKpQrzktGGNYGzE%-0buRKG_7=v398BA~e2T<$Mi zB~8?qJmbE>n#qUdUQnAcM9??q{dBxYRtxNQY0;T?p<W8rq!hW_GwgOy^}x`!B2aaC z_tv63^~fMK_OP?=hc1Iu*I^T&*_3Sj&V}O1!}ZvI<Qcb6=aZ!X+dMjbwKk`(-X;Zd zz;GQM_+lw#U#v{@%{?CehT*wkcrJtIi3h#wWRM7$n0xkUDjF0ptwt{l4(K_uYX0!h z@uE&0Q)7LhlUTx_7t5OYc>twF?Yv8qL9sk{GZg7=tV6vUy0sP!QVX^l(3S0`Jas#! z$}FTg>wfGqM33#0XFM`gw+;wI5q=8#p!n)+fn0`WfMXfpNCqU<hk(Rk66--gVjXaa z-+4dCE7=vEKf_|0igE*{hp7vao^Mp+&i#lU7<bF6>9vp!)WHgl)on$x@MeriU(LK9 zIb`)T*h$Nt`3;6skNXL$4wI!p9Ze&B4AO(C2#3C;4Tv5yg(Q^^t$=A0u_K0xbX5)V z+<T0H2NQTP2cKWYzz2~lIE;h;N#N-m{0#@Y2|SR4Ed-vx!L=OBR#6)Vht>k@=iui# z_&zFq;%Dsj%6Xnf$}@xKna}gYQJ(F{1N2`a@Vy*7frGmd_zezTLg1Mkd>aS<j!&?f zgQpR=l!KEv_&9+}0oIn#E=7y`<fXPE^&tw2E%UoIT-0aX+xoQ7rUg2bv+iKDvT}%S z?E;yXGel3j4BIYjem@OOMNNFaptw7vv0%>6149d?F<}M&f@HTy+Byqwa2y&G_sky% zS@997qrFH{Q)7{@yd^(c@L$KpICiMC17l)5Qhz<B*{Q}xOhPMguwqAL{b(3ea!GSp zVuwS0cW6a9SQ^sVR^ucpa%hwC9sVCYZ-A2h-UKa9b6UjeY^1wFvIi$0rD>95Kp_vr zZU5y%XiJ^A{p0Op9opp0207FIzMwzEr2nzYAZ?xQFCE%En__HL^!|sGeuc7F{;WZ$ ze2ioTP#U5q3|H#DkH$XbZ<1Cb`;Q8KvYon0e&RZBzZ_RdkhZT*z26a8>-|uYu>dj` zwXH-b&z+HH{C%)E`E}HJ3uHAmEtN0hOTDV>2YZ+!bDmA`M^i{EG&#f~DAjwgMS^Z` z!(zL&O%iNUMw@WMHiU|tDQ&{|x;DWUb3G_9RVXmu#l8cZg@*>QQuis?ZB(6uT*yqH z``z&(K|hW#WU&7epzRAq`A!>!CAA1k;%|b#g-F4+C9z|P4IG){FUKb7DV7|wVhgrY z0lBAzq(w+Wp|Cy>uIHf_k#u4E7n_5cb~=qMk`^zCMd;Qes76A!5JR_Spx>RkBndYt zwm)_%?+xB5oqefOS4U{Io=K73|LkQf0By7AQ&P*!24U=-?t)zy#}-+g>}Og@C#I{B zv=IueL;pl|TFiuRj~CJ6NtFZQBFN7eaBNSP9m4n09=V-1)~kFQ_Jhd0>??FzJR$gd z{Gor}qB`GUBU6zuYEBxpdg`D=qt-lCNM<89?RDPC)$EH-F1dzeu^uya4Vc=7(Smfl z4Z;-C?HMez!Ro^o^)S7^)NCzuX!luV(E~>HzYTmP-xi}o1$&2_Y?;Vm<4rcQ$as?t zllX$xMznPFHMEq*TiUI%mU^JUU~krvOw%IYl;@VLPN)J<2cQ|n^=Ug=B&Izq_=~AU zttk0oKlM=^f9R^&kDg2w&^2EUZ?K#iyn;74nKxKMU0WAo_}oe0HsU2c-NC_^KLYRy zfSLZKkLd87i4vA%uo26*5kL1Ma)X&GAwv0lT7m}nd_m)83y=^N7a$FDOcDHFF}zE` zj4%UKeh5l|65qdymapT8eO$#Tp^zqd4QrWI>rbLaee+15okAVFw(ST(*v+Y9GbEnR z5F3^$ZfBwC9mN-|3Th&OH!+Pj@c{Z5+!$mSOd>Fe6!hK6!DJ^6KFPtk1a9Zx8#p+N zN<YBCe<yG}ue>`47d{H`I1V-u_$m%QvV?W74-qztgMWMlU@Hf2=ivWP+ld_9MBwfm z{00YS68QX24D*)>+>3*&Irv?m5d4ONs|b882bXfNkHEDYTtZ-SQAEE-aPV^&$>8%G zJcPiPbMTEE{1dgkn1lNgIE90+;NTkSx0{2l1Rlu2zdXeHEfHAe;G?SnzLJA?bMRqm zyEg~#AaFkp-oU}pM71s){3d|~4t|1zKc~_^9b#muA#e{4F5_UGz|9<dAA$RFa1jST zPT*HKcqD;u;NV+1csPL{=HQzM+=qj&;ot%2esDSm#}YV+gU>-(fe3LD<}MEY^<{vs z;oz@0_yHnne-7S5U~+lGkbKC&-KlgB4t|%wy*c>b96SSSZ}8ZUtlujMZ0Fz#4t^9E z23r8u%r`&RR>U`lF1`2WrhLa}#eHm))MV;s^w%zMrXIj*{nCzn2lhy}HRn5|imU{K z_j=fnUN=a6<!50Lj>6{Ren?=`8&Y4>b38uxTFw0Bv)Bpx8jQwTSd0S^sn7R|I8a#x z;oADerS@LzXSMAApd>aS%Q%z9{gX8xlLX{s{dO3HM_OF!R!s7do5`w}{&FDSf!#no z)5EdE)LWV)oPGFe3!CWEWPvUnC9ApZvX-+(RtM8}BjV@q{Q&WEE^(K)F?Cn!)*5uL zr@?De_XfX%fYh?%fr+mU*5!JmZn_QD?yuQGDcrD?q^xE(0Um9R!fy!L0QTN&B^dyU zlbF3fN7hY^t4K&_+1Gte;}`cTm?mtPz>eaBXRtxLg~mzCHc$ra+CzJPxUjB-TWf9; z3Q=>B`OB9eNoAp5ZR_hyo)J8CYiJf|$>Ox%k8`6^h|ofOpd;$($r$voj=1Q^Mqs0s z+skvR%Iy!L)osYt$r4a$2dBau9^3^aG;=(ldVa^EGXbOuOGfoD7%EU0>syVLtgA66 zpKdFn4Q%B^v%%10-n%Q`L7Smwd}-5HnS^A`-1RDBftDRWUYuDKyw=FJ;Q{j<;gA-$ zmV=~l0<__PxsvL_4>+OnF0>Xf&kU!i=8abx3uwWA4huaPp)vO;wBp|XdY=h>dkPh! zJ$yc3C3V{Y>wo<h$FZY4M5)P0eXQ16NZ}lWm;9?A3o8ge_`y&Xh8>{NUKOsUkRnUN zk%<(+<YWy@i`Zeb@%9uHU$v>RD8LIM2T)7@4l@xcRGNN3@j~=f9dFM<DpiA_>*(;< z3-NzizTyieb*!^jAf3V{{Hl$okcED+kSX7#EA1{l=NCm+jw^cp5sa4odz$LzuigUz zd|UFxc)`CFB-56%CVZ!(g(dqCSKQ_gDT_PqeSC<8)tJ)=k>a|Oe-leyBvQYN7?6k< zW59cL(BV+<Q2;Re{RY*%5JA*fPM@&N#@GVB-xr2Y2Y?*{%<Uhs->dc1D4L6lLNgd< zrk|j46l=NvTQzPF%J{cx>lnd=74@mLg#3!y>snOvZ3KhKe(z<prJDC7Ghz6h&;ro) z?>170W~Cp-7ff~)@)BX0tq<u*ie?s&hG6zyp0)omd?lghT$|9xZby?e+=%}Jd3rYh z=2QpgBfcOBzow?(*UTKJdvF5wEx-OwJ-7N~U4mV}<iifG0vwQqqml|(XlfN>9Z-6+ zUsI8qP(>)y*-uU-7@67S-R9<%m<lLiQ+>2w!)eG+n45B<C2avD>0F#XTN@O0UyYhU z44{@C30pL9c1*nr9~}pBnER6=)_M0Ru!GnXcLi0aXddFmm;u??WofYJ1Wa#1{<HMt zz-6q4E|CN!(1jAj`i04g8>S%G*DxuvXTOJuP*N8@KsXMh62!F2FcU$1NgHe;yU>eW zF%a1%^hInJ^v4kc#6pl)2$Fv22|$hu`qLajXCGB>5G2O48=8Kzpsyl`Z-Ev3xuP2@ z9xDcfWvh`)nHg9c9FGI0Wv4AX?F7DPCV}84<P+<JW#^EFp-Cn)S9K3mgo$_JB{oJ6 z>GO<g)<fu31t>wi+kidsaXvyvkw?v{^6y$;4n9w|4WDdJF*<!su#qC9EP@D0NJe!C z*cd60A=yOHoJhJt0nz;P<84Jk^)FB@HS^a91HH;x(29vmPXgxsL{J0Lc{_kW@9~99 z%ufG?WIva>o$RbXqC?7}EhMZX3nxsiP3HTz=Q|)8C*cDS=IN*lAxAg_=5PCNc=86! z$HKvY`RIjE-*8UVd>ukQ^F2L{1;)^N93j?#u!?H_dOgkY!7kOj4<VAXZQx(@<Uxb5 zA^Vq4@*P_G20*l!5Aa*?V^N|Zv5V#kivPP-*ihT`cz8ysW(|p5+l3Y8O(;pzx$;-6 z3YZ`R0H6sun16c@<KGm_RW}dzABr!VgF>G)I|4T&e|i@rh9~D-+r`OA6Rj4gbe;+! zJN6S7&y>6VrhUNXIk4#$!R9A)4%n<($FS+Wnt%JR<zK>PHxFiS#+TZI#JGsfN+gD{ znMtBzE{Tc-5mB-2G#3^6eMU9SM{F2jK}^yt&V~;qLr|nu(L$GlsmKHa5IVLVQ&7uJ zUcne<%6wp{!kqmWo8o;MA@=)!MJBx7Gnd13m-zyv3)OQlv7PQMivEEe2Ra6q>amw9 z`Z_yK4$#Yl90jX?5^8@0wL7pN!iYk7vAII^9$1t0f<%*|X4#qTWsQ9m0gMg9^eh{# zd=T3Pr}`xvAIP5L)Nd!}3O^9YQ`@nk5tzgY{3g<$E5|B^9G3jl+R<dG&LP`$h5`d? zQgHT{=%~BWzK*K*ZAqf(OxBG|^SZ|{lk{aYDDLG9ZE#@K0)oXYXRz4>yRhQ0)kacH zcB*17t0HbE8CdRNRa7!EY$Bu}X0K7)OIervTg!wCb--Dmz;D1bd=c14ur6E3Ghm5= z3M42Av68O|QXvrU^lgb}+$D=^8MXDZP!nAk$x<3L9G7H201VOhcOPU<1?v8wdH^CJ zIxLdop1$Rcu|O3opBf!7y-h+GP71=Z4~PtqIXN_57#>b{Iu$Tb^@^g-prPqK2KBo1 zd=ur(cd5HwdKu32IpPW`zMzj3;A}&)+Vj-YPBjR;zIzmgb@dRKrhPxB{3>b^6sA63 zphQcAn$Hn6r($i*GzUH<YTiNXELu$_onG-Z!e$vTiSY}U6MjjOHYNwdRCyX0LloGk zzY1G>)Gmly)yo*hT3r1j(0%~ExLSo4oxY&&Dv_>)2>`_V0C7dFQ`Ez-dn#`=@?)hD z4`2r~;7@u&Xz%%-JyOkGQIvpW8_G1F+(CUJp95cZ+uFt=EI=dCK`rij;D?S>_h3c> zvj!N6oX7CZ5tau?Ts^_lk`PXO8es^Cb@(v(Nb~>C^a&p_kXRrAF@Xfc)Etr-g8x;V zVv}aze;$F5h*oJ{VNHZtqw+Br_kHFEu)i^emLOaM%+%|_$pQ1tsE~MCi%CO>&Tp9L z&|~I3iS6D)7zS|RBlpuM`)nDA_3d8nKlI+4tVjLp_&0qk|Hf0#wj+$*9Ky$EzKog` z`XrFpy_Wj=5t0#}Ng{VHbz}i`WCH6*D2C{TQO)5;F%*Q;8(|oV!W@b4rEV5^d+8GY zW;^*8W~*6=c|6>EG`_%N0zTB14K%>!56JW*WCl>vmk=`40VV>soUNvFM{vrmC;%1c zHui~2W1sYEh!E`{1kRyE<RsUS<>tQw7`h#&WNMrZLDhUmH@3T|{twcEB`45@A`l<7 zB|?a9`VXgV`dmiazxhz5e-8tn$GOX<7diM!4$dU-R1W@zz^gg<H!mw)K;YXsm`*)6 zZQ$U29Q-?hlR5Z#0`KGC_c-`kKfql%crk&$;NYh?_!a^m-px>R6PTP}z!eX2@Ik8l zV-A)H{5c1Y=in0rUc<q?3A~$wvpG1b5@4N!yAXIU2Vcv<LkT>SgX#Qe)59Fx;bHxL zaS_170S@lxc^W7Wotgo^13XV6C>ZPuF!uGJJ^6NQx}WEGkLTz?IlA%+$hTut83#Yb z!B12GeE4(Te**94;0HPQDk}Xk2a|8dCY6K7bMSjqdJPBDdDEsn9GuO;w-R}DfIC?* zrq*aNPi@07;8>i~z;Es6E+5E|gLnVd1vszSOO|n8$Ozz00F{zJ#rx>9ahp?j+F<85 z!RrjM3+F@Fc5izs6MFy~HUJbP&7XbFF#ry`zoa7`X;U<0o+I^#fcbRxaHboEPknA! zgB_{)2oixl=xA*Tm=7TaGbv*IKSt11@(nZCyQKtKo0p9B0>+-VcO=W$HursE#h`$B zGjdS_idwIlS5gt<J~i$M1eCgiCN*vaOKMi*mLmY1@e{~_Y^4u0S^8l22{(MF+varV zn8+{=6ZRE~o>fDq+DhF|SjEf}jvj{InV>4hKx(aQJgdbnffwA(I8jz`mTLSOS>KYx z1a-mRB^YERH9>W{+th+z4XXUBNz!bR8oLbVGbXIyI@y1)OtqW5@8NLG;t;=^zqpes z9hOJ1e`%zvFSvG8>H+YX`VAJh;LQ+NVqyXy3x6KR^c?)Epblu}E-b&WY%yZ+v((Mb z_FmV5P<OpxDU#q2+q)}l7^72<j#Av;C?yB1zkL8q;Ph>5XuV--jZ6KRoQZ$LcHP$q zm10Ywb5SGPSS)IwkJ$gEhuex4#7n*`d$f0_6!4RpK~l8!Q(70uKE!*$?Pv|1xR2nP zc`C|dnOn9K!!3=4yM;^7e(6mdO{8v>#$a5Z>ff)>r6=}!6{2-C<m8aG+sEdqzrsUQ zJ;&TblC{KZQ3n}EEc$~+SSq0RC3b(tRj9ZF&>dsJZ#nqiSSVm-Ay<5B#sz+LVngio zH57v6*d?(pp@XzTaxU6JA6F*46NE}KM>^Fy$@icf?R1|ODi461vUY`>Szxyb%i;*^ zu9vi-XdA~@C4ulhv;`ZeeXkBJBp24lKz!GLH^$=dpI93Q-Q+n9?PE|H2vGS74}%#T zNQ))~5sGK5B<>QHjs`(#g^GuZ9Gx~Q#(n(!Q!9=2pYmi%nng?Yoi};}{XS@^rxfFP zN$j`5bG_m|LFPb2Rg0wd+n`ND{r%p>M9NJ$I#w-M4<ATyT`kVpcFlh~bd;@pGR-ve z^ZgmBz>1+t-_Z65Tnd=%G|E!I!Pm?Yh>+a#ZAtFLwGEJiMX>yCqFZB-lyA+VPxkct zAd8GGw0|2LkvCvEIC{j5s)D+OZo8nKmPulppwm@#QWu`ZSBz<GgdVi)5rkdtL$Lfh zOTOeDyfa=m4AE!Yi|TzzJ3Bh^^sK9$daTi9tW`)qMmU}VNs4<XV*+r*3hI+XOM8M6 z$jJ7_%Z){%E0`cu(rFJ4#_Xj+Wmg1AWwdBB?4_XU<3i<JBq0{-KU($=1&$!GGT@~S zG3`z7m1sC#()ztA9uul}png71`b=YHf8Ua}qWRZ>%{azctbJD0Y5d}LF-;UIXHa9h z*>R+?$e~$lB#2&^AW#i_o9&QjfOWm5sVL9Ab+~Sy3|EtAm$BaEZXB-n%Ykb~bZabc zPZCdgraMs@w$8HqhPh1-564c<r8eMGn(He+o*(Twm{(FuYzm(jhsL%C4x%?5XNYGP zZkEMgy_?0e^WPgJT9du+@Ot59;oFkYX@tXa26>V^--R2TS529iCG8J6!B=6LK1)3! znzBsTWR;56$GtBy78kQ>gy;TeGgzPTLjw`-(E2?tiN6cgGr@F3zgP#INv;HQ{&6$} ze<ji)BO-}7bDx5Q(9I~v`;(`eY9ui$9%uOkNMu}0{Eu3bQftMm#|0cp0%FE5Ftc?T znE4CN%s<Rv%)DnNm^p1b10RL)bQ5_Of!7;3col);ICuwv$$JRkmpJ%-0-yRMf)BY| z>E<qTqYSyA!$M2w0A>m16{Azb)XwuoPwaRRS|_)Vvz@Tw{>=q*K|2w*q=`wO=t?^s z1VaqkiOKWHbVJfdb=fEKbr17^3`~P1pV0_EyGq&(nqbQ-u;*wBc6ZqKxR5)UT2NGO zjKFmC(^gO`#B@?%#ml#Dq|wp(uR?iWs}ThzyI@bDrUYdlDl0XfRoo5Owy~Al2v4II z7t=HVqLczoj)J?KOYgVXg`K0trLD1BP`LFvK2BnpWqwx)wz<kPtep(B0|`yah}bIV zD?n42p{c8olGCszvi-CAbv|w5@eA`C0S_!{X~8OJ{?fQRDr-HP84rTszyAKdti`T1 z?iUXW)d~#|l_01M#U=|I%I&3^Ay+m1g9wN@gK$F9peFghmX1LI`M*pCQosZ@>5#N8 zSj#1~i?R~5tZ>5pO^sI-Q%+TxO)a#j`Bta<O5YjmqHiLua@R+4X=N5T(5pLlo>ts2 z$nv5%^s!RUm$idKPYSbWg?SX>><O3FP3U>K4F3*U*pO?3|2altr%Sb{Wfry6Dp$eN z`Ha!KHY~L(fHjt^X~@J4{w|Cr;}s&2qCLaN=Ylm=#t2MS>z#FnqP16OJs+k|PVGk< zeG5(`WNos2Vry<#&iMXimh}gW-kV3s>S0+8$?AD%6;vavlFZXDnGyYpGoT9`wa!Q& zyil0{gPOQ|VXgX^7B^!tcKTtyWr9}RFDyH2qCs%MDUjQ_K@An$Az`pA|7k3O(K;w= zN|K~oQ^hZEcwocGPgArqs|KFMXep>L9_#@AO;Pvt<vqrzxQxFMf6>TboyI8VleY?- zmr{ajx5DCbRO|ocBG_}(9#8<)XZVpy3HF9u<Mh}klhL^}Y?V`t$5GEBAob4K_vPrU z8ubk1{xW-yh}@6NHw~Q`Z_k&tcZi;HX8Lq$MAxyFzfUY9gScsE4*N9&G#C$pOA%B` z#)n%*Vj<)JX-e#rF+91TFFAw{@3u?Y@B~RKj&*4F$4B^1u9|F5Vax{=28?6CHuUyb z_`gf)?RKpTs;Yh+OA0&;s$K!YTHN;)Fn{kCmOhP`;y#(@{vpr(GucFJH2E`>k{vYP zhU*DyXl5i2(fg4c2TxrI6X8HvjO`)#w@}&WHEfO`lSTBz;PA~sd=6scU@BWZ^S<md z27y?mW?e$eVf;coy>O^_Mi{;q%~v-^h8~#{RzbvJ=<#3DW(1OrUx_p9Y2{Y2|II*F z(0@S(F4CB~MCYKs4;b~>+K?txzR4yuD2ZC0#{WUk4;%i?DsI52crptUJl!Ge=vXio z!icklo1f|Axtqwz)WeLN&XQ&#fvmFS5><VO;m59(7G~@YP+78e4K)6)f`5Mu5n?$b zgq)eyO<4L9Qc!^b9zwJWQKFYJ5vLUxP1x2~F~4fmpya7_4%{FMG&07}mb1Rdgec+f z0>z-KuuhzRj{M&GH87DG`Zu8gn&%JIW1X__;Y3n;_Q>krAQ@mFy~h&B#Vi4T-4UzB z6Yfs;FN*stX<FFI0U<s1LzmlSM1ZSCxPuk#(0Vybwo<3b^H)shCiwBZ0D8v7pe&j! zLUj!5*;d}O@1S8GaNx$>h5q$q{cF1n#fW0ml(AVWw92~soa8%a6doe}@STkk{NG{L zY4Je5)FO#3!m@Q#2#kXT0U|}})8bHnfegdRPkky@N}ND}kLp@8E}YlJ%WA1fhLn{d zX4QNfwh<75lCYwVX}RoRT{$P?CQs#Q;uLJlAcvY|6$SH6*!B_8134D{Vf1Q!-%)uA zIHU-&Os46$yJtp$>BrmA#u_Fd5KhywSI&p(iX6y_#gEHYNpLhEZL-tdkeRi(JefSz zC(?2RA-iA3<_hun;Hl=04w8zGVP(3YXZ?@U6xuJrDb1d-333f~-mmnm%f-OL8H)Q; z#l6d=$6}UXWx&-pY*nAo#~O#~X;*1Q7FlyzWo-h!gRM9<a}C!Eu8Nhkd*J!iC{!;- zT@LLoY&gH1Z$^s8Bg6lDDfw7Q;+G40P^{977(1_*)mD=K8KEYi3VGxZo6EaP;(-N+ z5b}Oo12NN8*f7}U(z+<x7>m%e2U^F{Gz?0Fu}Xp<8DUY+T%56?3=le8&lOb9b5zfh zAOhF-P~X*&x=<|)d#!IUI_Per?&y%kgTm71F})!kVW%HY=4eiMhx(ICdyy|`5ctz% z=<5?(W5`!shU!>34uzxwr}~Ago{-fxY%MV;$ymMEYBdFhG^tQ3s;u>Hj|^pKIl2sd zu9IlBb!xXdwb>Sk)a!9S%;r#Y(Kk_1@3Wwnp=(&LphxP1j4sIX3J@8sfD@*vP2@~o z7SUE*_Gu#+ZvzjmrjUyAV_QeZ9cW#sJc)Iaq%C?!niy7TRu^`LW$+X+DkXbpZo<%D z!<Dxuv4LR1vz*Dgk1*ZfNSnR)sYZB8j}PR)S=8Gt6O1b?dm8l))lF;AU9d5hFdV&O zWulrEF&jx%Pt;8_TG-&i$s!~f>0`7SC^%S0`_q7xr%JIvE8g(S`<QZ=b}5)ZK!8oz z!myB!ruC7WdSiwI4?;=w)FpVkiMYK1K4bmkN-5z$8Y9}E$}JkL-Wgc5Rim<!qoIe@ zsSM0+n(0-FO)a%V_(^e-#v?5IkZh~}H??YETxJ=_u@ogp$@2RU06$`!Q`l^Z=vg=Z zuX@(ML$|ZCG(HBfVn&2<TwuLvio22Kx{WbvNedgal3FG)Axar()v%j}@F5-L8h1uk zk70VkYG@cIn(4*|_{D)s&2`^HqJsyVM%?FxcH&YGfU*?|?RG2ego3R79Zt?=UFFQ) z?`}9=R30b6fP<qD*s^{%dA|)c!9qN>Cc=iqm_N(vw_wuFDl_q75zd(>6hmA7kXlO4 zbAOfR{+w8H8pfv%t<k9+Sm`m*`jAjLocK>S%Oz1Xj2XoIs{yCoj7wc^UxlzxeIKSr zXG!>7L=YZrV1m$}j|?=Z708ag(v>U0IML`PhNQ`b6>$~PX)aLJa^_tL)I8jv8SjHa zP>u*GLO@Mhq_}aK<+7I%OJTL}@gxfIWtfv)Ei;jtp8_U^o(`_gK6v7N8T<@E0c{9= z?RA7gA(hk8mVgu<<IiF)7&#NFn^65MR+9^S2<gul*$^fV@$hAxb_0qD2wBu*xoVnC zRY+S`+?TO)wJ}tUyCuSVvX*PnW?R)d+7jR@5!d{+2dv_63on<&T#KOFQGz_M6YvGw z-b#D`B$v1}h+mjgM%si8We~ynQ2gs$YBxBNS=8CqoT>+GXwmy(=zE+vN8~MytKxL; zLHD13oMtO--|Dg0AjXc-JbU3$@v%@j^jD0Y?lp#T5da-5q8w)sbmu8-lNYgNA;$ov z^iXIePKX?86BGv$%{U*KJC}BsvCzR{ao(DE8(Po`KBIFu{{WB~H$G&sZT_87AE;cc zOg_*lm7xsj1<q(+FbV}fBi#XeGITRX(dC8|wl1mN;PMu)&OUPC3JSOu3wbVWa16MK zLLa(n1-}#M;ouh(Hj(x>8Sfgf)n1K9tQ2BQfk5T2^C)VejqSWcGwD3V-GJGf=D?!| z5LC3eK>In-krgLTJ%)Sab?QE<R8kvT?}Z%cG{3OgtNS}oF0B0E(6nItk?;hYNgRr# z6iIE80<xXyA{1cwNh*%;v9&Q#3R6rd5KCrmCysf^x}lE(#WDL1EvFq)Y`b^|eCKaN z8V*VA?IZxeh?%*`f<76<IVlOVX4r#H1`~Srvupjo^<Y~Kp^F<y;i@G#kl2i^&uVdv zfHC61UG8;+Rd%iqO{%=W>28<%)H5J%DPyp%GHMEZf=mlBU|=BF6EJYJZmTJzhN;T` z;vZD+-NWgA3QR?7P8rP?(Yi#?)4^e(r|=8YzlsJGlLZ;_u>~2~r$ND<Ro$l;e^a8@ zu^~c-!+Sk!^Mc#o@95waKO3(2f~=tVn6`w;3N**$gq5PGJA<t~e<Cm-E3g2DWrUWS zkV$)!ZkZ4bLZz24WEN1<LwX`@=b)Rg4IZ+E?#05#7JND+AhrF%z8pQ#kr|tWZ%q!( zfEyz>Q*YSnT+&V}hZC<jT(WrJ7$#6hERTzJqMGn8+BcI3QdHuo$+S*~O+Rc^wU9)D zeL~oP35Efx(E9&48)FZ-0aX~XFsG_CY^#WrQ{4RI|0bL-UMiu6Sk<PT=kXE)#+lhB zNJ4$Ouop?F`6lsGdPRe;@ml}+Xh$=Ij$nfRZ{i9U`?<IpazR`@(YhX*#DC|(kT#$8 zetP<y@cV<fx@Q~=X|KQ6(LsZN8x>fKK>{K-W1StsGxdV&MCC40;yo&d(AWSk8X73- zjS$up4DI5Fr#aNf0^Ue_A!{VA1dS+Y1UOtr;5{7t1qTl%a32niBJf@g-o(Kj(*W+q z!QYnw{5=Oh&B5>80dVU^%vM-qvj2m%E$nxT85B1TWk-yXfi2RhOLA~6)ud(5Ljvrr zNx^)?`BmYm2=RRcJYJ3W!P!P!Ms|nt^3g8$H+k-zqaXlB4%HK$#@#!z!a4PXaX4go zqlPJHO>_W+Ye)yC*2r2RjH?Gcc9%O|&b%|ha}6#s^@K+9v_p*c3~;E?03iC*AT{d> ziFqE^#ycaAZLmh?zYpx_Z4o*QSb9IY-HYi6=`W6DG?mb^;4kme8if6g7B`}loP!=G zd>1arbMGGwT*r;dD>=Ze=2ol?cp4y~0{>x7FrTRg&U9d<_uB{is3yhYp_YF--NsBu zf~Oa-y&9`LY>N%D80{Sh)fK8py!RggkRGFs{h!lU2aK6bUKUxi^WW=)@dG$@-PD(3 z+%|?`{L$UOI2RaCtzoz@7b(ml^Gx6ZLjar)r5s>!r)I94MVA!gRQkXhd#KC3&*{F; z7U_-g3pvyDmM7h1+~1l&{U@NZsE%1iBUD6&SU7FIMKGGSS#P7N1-lz~uVd!n0DDt9 zM{op3a4sSE{08!$AX;6(Z^tsiFBbUa5`GV8=|9XQ{1QX-5x-tI&E?)P%IVGpf?FB6 z@eD_%X_0pXh`l&BGpoDz_96Q6ZUk!W&GE&)hvN%Vz#=a;xYott$5tfqv^O4mlz?dw z(HiwHXc<RW31x$Ucwr(ArZ?Tj5nnl)QTErVKs>nqqCWD6^Pw`$oB>2JYiE!hj8q0V zlU+wi%s~A+EzNqO3B8n&Ns)BfZd9;l!`kt0;wL1!Xf?=g)R}IRL%<w}Qbun*0T&r7 zqv-UAY~_ViJPLtnkdNE>;UQE90!<`MINn#52A3D+CjjxCBO?u4Re)1uu~t}mA4y-N z71Fvm5r!311R&%v869z78WEc|2<(bLKT5?pqlp#5V&HOLqnH_5fF>!6ex`7q`c<xG zTFI?(XcJTNTA^|^%81a+g-U+q!h9JXaiM%T{Fd!$xJf2dO$M!;B`57n;Fy~XO>hU^ zg$Ih9?piPej*h;IZv7|Qhkxq5VzAiH=8ciW9fD48bkH~}sD+GF38+VLn;v)RSryQT z;bd2a)1(fZCVd4mvLgp$P}VjQwH@L)K_7|&4zb<)603A0DqZ*v9FG(j1>Z#7>^!OL z52r*G#4Mfr4$34+V0=te+Q7s!=hg^mEHb*DBIxfx`vv~w_(o2#@rBIil@OvMrx}9Z zi41J%Z`F~H$ZaDU$#kZ`ZnKfnZG99A*bq5${9c>^zKs$Xx_%C3B!CQlcQRfwBH7&K zg$uGdc*8m-g-`wmj|<)r{N$aE4&J@W>#!Jeal99a;d3%RPE*6IVZj(C=Za}7VfqOV ze7rWurj4<}_O&z`6+qDUi`>0C34CO29D6LL>hGYdiyRZ3?vu!rEQ!{)g-Sf3#ZqBB zLzF4iwDrL*AoeW>u8b~ylj=|pV0{4ABsH~c5tuvF5L;`ckt1M-p!H@H`U*G5QNbZV z9=WbSE=a|c;9)#07VhC~s4R3fYP#sJ%GmfqulzRv=n%IEIuV0l8M&HuCF3j{#zT$3 zDMu_MxhY?h0|^rBQI)@;Qus85fWs0u);!=7Qjx~xM!4lhY*`>dp2KnSrcy3J#*6@h zc;svpB*;r|Me?(89!wOj)=){f_(QySF%>W1#joPUM^f>-Q9L|e3};q;>4b~r2lMj1 zsQfryes4Z&{&Fh+&(7ts=hw&!WQS0FBZ|?O!4d}>u0zbi5YaxB(lQ)cEaW=gHL@ZX zhKQ6}lzcZdns>gErUm&lW9n2k;`TiCe<l!^AMQU#;E|Ek|Fx0+hx4!C`Dapo=BTQt z|AXhBMEU1l$S-Zeuu$`|x-)cuW5Uxy(`mr;m>Z}L@>+%J_1$pR=|rmIMyjLcQvVL} zEW!(4J8*8jvwJ^W0T18naqkEB;Y^X_VM#4>X;2g3!P|@$ns-6Lu|DZ^n<^xAD;<HC z-RdeiK$)Pr<Qex5$~4t@@?0gccJk1`^ibSe^NjU)=d4CSZafwAu*uUOW&K;{{fr9V zodJ|@>cUVS$WboGa0eH@*=d}i|6}bqqHiCYnWhQ)?QA{*B|T;z(&S9*lY)LDC6;^~ z#>8dZDP@|f1V3GbW45@Dna7BpeyC>qSW<>u?w|AA-zp{8)-jh7Js|}W^Jb@U2V0e( zby+B2>okAZ#x(KAwl%mIWomF~F!?E#ygoafb>xS>11#VS)Y2HyS$k@2>d{mTRnrA~ zDQ>;j<3+4}SbDqT6m*a{{>^iOd|ce=wPN=-NSyJ~xjaE`aEf)Fa_q#6c&zIadfO@> z)0Kr~sGe3U3%QW!=5Lmw8)`wDX^>i8Z<57+D;M0PXhak97Jy{YzH-6!G(+IIi(U+I zn^t3bzu-hm*pV7>U!t-fF^%sJJ|S%VN4sXUJFg1#jh~L;QTXuG<S~xgfl&$`e4R1e z>3aZna`1f|+)Us)fNNk>SX2sjiR(4B4Q^x4d&3tARP&<<;-17nEL^}hVOCdq9*!+g zdKF)%wqYFz7~*Mam{|(U1ILt&b9U@D{5bllxPZCiprL>!9c~zGDP1v0*|<LQ@?O83 z{Bi&i-baFFerpP~`dK)iul>BRly(rZo`aX_Vs3kZo`Xrxs9o)Xs|B~y#_d36NuP(Q z^ibGxyGi+NuM>v5x}TzI;I6R%7MxfCZwS)58-SPx0={|^MhiZ5$0-_sYaRQv^H12g zvCX?vS=7WT<r<kwZ1TR*c}BwD&;0e%c>JK&(<L+lQmO{;xpnf$B7Hw@_hekdgJryZ zbin*NGE*C);CQ;=K8)46xh{BS{Q$Px1-0=dWQAwoW0j;$J;_ugH@&yF0OvDp@RfsV z#oQ1iEfw6{E~Z6$dw@Bl4=`c)c>;MKEn=5;u)5>Tgk9dvj>;cAUDW<JqiHnQiV@#b zf$ZS*18j|gkRQz2?fng4!B<}+E=k|XIinvS!Le(Qq&8~iZivBG?$(R*ON;sXDfEA< zrz^bLhC^hjb@0AbzvDHl$AaTf786HI+~I~dU5la~!$Ra6dU3tK6&c1M881<U-ay-( z$Vd9eSP%|qD?lf;RvN=lkDy(RDlfc!fi*d1DiVUBS6K&ayaUrI>2cJn#f(Rg6@|gY zg|MOq&?}&G)<u;E*CH1N;fqzr;TL>BSoRpG1Xkbr_R%7;86k#K$?RLrR1(?_eEv?N zAYVsaIK;u(*s0V5Sa+VGxBGgNI^e(|gnF1YI?AEl4jc0^^g<JYGTNd85$;QW*5qyG zR}8k`6~OZ*??$Lx7EJnp1=0Z5SJ7OKXub`YEnK0Qi=V^=oS6A{5hBOJJ&GBLM0Cte zsd`*0Fw57>5)z?x1b2fbTJ})DiYCy-S|6qXy0&bI6~2J|FIx<Li*%9t2L0YV+f06f z+0(lo9ZN|`NGkRXMN;n!Q<wr6AE(<v+jp{vdGTr>BwtsE%q=)vj@>dQg58LblID<s z)gIUs@)6FbUpRi$97*&mo_@vBFKa$M6Ofm|o=K#jBgLWRSsa=JHRj>{P8wU^7FhkD z(x=vj86oaA@Dm!7G`2ww{`3lZn^-i7E<Bu)#OFwP#<3O+CtPOq>?anZA2`HH#+e^v z1J1aPE9yz5PdilimSH&LyU5?TRAymIxI-I^Gd_MfPf~aCjuvczLCLzs>Fz><P4+-? z(vXlO<%4R+#xMj){o6bQo8u7<ZP*cqCT}reNOFNBDS)#08sRs81s!W7^VLE(d(61G zM+VUJS0CCwHqy_rREuVPuCH|^YA{d@c$)xOp^rZ2$c%k%erX<FU!tzLR2)RluqWlI z@L|HvCaixAb<3L#xmql22vAnT+(QTxl6F*oyJr0`j3U_27<_tlM@Qiu82syj2kB7Q zAY^S^_%6fNseVJeNu1h<Z5cw&MFCowX|oU?2_!`V>;|1^-ck%tgX(%HLt0EN!Vxs+ z1*<rZ6Ef%@XcV-`0OaCUCRFn>QZZD0+Li1I4CaEnMl0&CFns@;Vv71T^(lBm7Q*6J zo@_<k-x}vNXDa8)6X{O4ngW+0McnQAyLO{C1XHm^D{B|e&;L@*(8|uy6<f8;+S<zJ zGg>DTOHJrNCZ_mBe&G9Or@C9g8E1jg=L~b1wJ3|u5DvmJnKT;pcPFT>-*3sot2C8P zB)K5O)MHM4csn>!=@WGNj^Z5iq*B+8bC7!exNVEF6Oyi=(Ga{0UC>6OP)F;)@VI%q z!EFgDgTqvwrHBo4ZdY%DAri+PqfF{h6HeNZAF{-vb;sQ-aofU^UJK@oILK5E#sBtp zEd|03M*$nDo2@4<_6O3*rJg63WV%%Xk|})-hdZ<2K@2bT!2d4>`b?=i8|~7kpLg#3 zy|sH7FY3q;&2<!=-p_oSj|Hy=_9*84!Ksh8w}<m-4k$u|Tk0uipCh1!;%l|2g9u5i z7E0ZjXmyY^_%(>_^qsR{onZ9u{5TQU*PZGwq5FVN<a`AV*m1#wd+>>QexIQLkNrk0 z9Nho9A<41_E8>x6jE=fKi#npG*-+>)mix}tbg8-Ivx=m`%M{gHtEi4u;PpN4u6C)L z$sw1(ssmb;=~>hOnVANyHs<Chu$HRc3Pii1uDk2LycTL~#eX*16?J_XZ=@#xw-SIg zU|2jc5wKDQOTThkuWJ?6KaIuAtMlQ&Lhbk`QbI`s^BFHWz>Euc^H_Ck1Wt<|Lz~8Z zXcqPgM-AN-{07b(vZhn7umlUsLNEX*+WghB=4ZI;>3ME=@B0gofiwj4;v?uP_*4kX z{h6$FQ-GdTR{aW#na`mBwW8g*5$GmUqUulKu!&oNwO$!d;tHz0@or>Q{qY1W2{4?= ziywZ8sy_#bc<*l<oEJB<)>U={DO8UJiWQrwY3#ZbhHsqWiZYP>sTMk^UfPjb+iJa_ ze=8~ur=YCq*>?dm6(<O~VpO1q9a1#&RVauvD4}u=X|v#L1#T$5b%<OjuXO|KWAd}< zJ-eN}0Tqij<eWPDoQe|_v3~Yfn)xQ+$q`gE$7(EkckD3~XzTNVrKDvo(T5w=`OOj< zhga+}dIHa-O<9?Wt>?WpihAc-2<hDqkj7^ISNYIFWW~&eU!POm(%RSOXf|r|n;{=f z&P7{DE7r_g?jT=F?oSF=d0d@d_Blo;;`$8<;ZlDJ*27NVdoU;3^8q2HXrrN4;h-#U z6{>S+rX|7qLZI;|JbUDM3YYMwqf$xRKw|?6k<Yt$Vj+%dM>o50N~tHl5a@NSmN}fZ zLtJggc~-p=y@Ezc%FMb#@Q*+U&4AZTIVdpuL0mr7<@yxNPgkG)#GrcIou~yNZ8XU7 z8Q&k)#*1Y^Z&!7vKEf!rEx@7oodD(;LPl2Ke4u{kTC6Z1(Gb(SF)nRAF%(YSB^+d` z&lXZdZ3Q(~LAiKv9!#pLx7n$lXLd5p(Tsx<X4QbYrbA2cm48lG<6b6)F4@O68qwfZ z5C~1L#q8YJL`Z(@g3UwyI(Q~X-9jx`93btmV3vJ)SK=U80$f^N1?qNbj;anXMlukw zxJ6^a!4XmO*5-G3S9YwYY1y%!W@`tV!5wUl2Wvm$HQ%n8-lfKX0mN1g8r3p_pW#Uw z0?5>RD8LFh0rERBP)LhkZ&amdtm`t)!L`w=s5J*Yx;KAiaO`1zYF`Oz`S|SB*hlo! zTo?4`X^*8(**7jCAn$C@HWR!0I~JsBY^veW4lv}fVw%o4N%XU+9KAxJ^4JG8(S*TK zo>=ewg+zuDaI6JE4FNw52ZcyjkfgwWsL3F`*}y7m$F&WV0HM>X?*`Yq16tOHq*H!~ zLM}D0SsMyRwEHo>KPc`MR2y>smx}V%!CLpD9Ng?4XQPS(E>gQ9>qN9R2mWr&vNqJB z*0*+*)g2C86H%Mhmb!!8Q|r~{y5JS5Ep>-2sm-Y^sk_v=-+pr$cfq#tnA+w9n$eEt ziVTA{&}6^`Bbckzn`A7IGL{;3sP%TW{J(}g@fVMUCg)?&UyYj?hTsqCmd~-)2wqu> zYeQzie<g4a9j22}bI-B-QjG|SMYjukAD>H?D39%e%J0%%k4H|`(d^PT({yT0zPP^9 z{KwwCkQ(3@eW3r00Shc6??UjhJuTX^ADS<&q^@S^L(l{dFRZ8OODFew_74rcu9dVj zm<p_T);qlKrsuoQh-p`OpVZ>!pfEkHf&Vb^G|{^ncxI#L=(PxJqjza=T5=6N^YLhZ zqanEaxemMxW+P}}OK2>RCeSPbZHj<ezsD^APYipn15d&=p%N_1**$e2?!iKkef;CQ z5~+#i;M8!LX3TMaIRvCErr$HAv8enOPcIbtn)dKQWhyj26nhWFf|bvLwn<1pyXISv z6%VnQe<~))J+OZ6$FiD!0}^FzJuPHtB<>1|s=qav(+5Wxj6u&fTpjF%N~pgywc+7O z&)+s{=Del(4&WN|2x>#EG0xHSIFHS|b23$^({cn!rorUF)M_o}AnwA!BD)A!V$1Y4 zvgK=RqUEz~NN^>Z0elkRnBPgk48omeu+N;*Vkn>sR(<dd9Xd_<%!{ZxT9uebLwHqM zJcj|<>T>Q=SS<dqu7u8j%ff5V*97&MmKZ~ivm)uK9KGx5<2ElTAcYyMejdsv`OrXh zqSlt|1&yH{35(Yw0ISC^(my<nMKFz!Vx4~1j`!tOXq&`PxYOPQs}_`CUp*fA*h;?G zE_d!~yb_;>_hq#qALK?`AHs^)#FyK4Zy--Rga_T=`ruLzZn_OkxS-;yhg^N|rx~Ec z3Y#JOj^BpEAowj9cLhKHg>oK3rl1qS&}fvzT)}AV3cZVA*UYDO7z(gbsWC?p2%V<W zd)*#zQ8T1(y42noa+D!-BMny{tUcM+A*!fN!L9=_4x0ILL|t0%EAY``?i)pZ7EK`& za;t&hl}|_PwO9^RoCa_D+)NTJebKG-$yTzl$=LZ6YE~OUU7ul@xqcbZ9-&b7|9nuC zVU$asat_MQ_&E@DU^AaNq~aoSllew^3arWeGV<U(jwkV<AI<z2LhLErD8RM2r8UQk zAZMG*3n+(b_TU54&);E1(_-EoNqcqkG^9cCUjYk_L4~GL%ib{lRf~BVaMJ61s2SEt z7&!b$aiqdE%{*r|X&h;AQH?8|jH`LN73QR@kDYGzClKf<QDzr}OFxV=>Atd*XwN`R zNyhD^WI3~&P<<`X!(}#Ev%wyk+jnWyG#nsEg7UG$xJ`y3R<*7JCOGw}=cc@N@4DbD zPz)|k3x=e2__BW=(N<(!Fx;1YoB~&$@*T4HnykU;7;RyLxh6Nt0B6tJE3&)xK}&-F zY4qU|rJmLyU-o)d&t-a9N9#LNYuJ=b?Fia=HBMHI=RGa18reX&ET|16bM@?9vq?WO zx0YCn;Fmj)WFG$BL~>Zl27Ry;KnfM2*us54r~`lQp~+mHj6VPeH&Fkm^I*zia7%dI z`6Ftf^-bUnJ*Eeae>dT;(Glwm&S0$57h9Cz<0~WlrQL7UaI46Bl4_D6(L3M2E5!IO zJ6@!v@5(3Sg=Oc#1KfT({!21QlQUR;JiaiUa{g1a{B|YN=D|d@f&TIIv`;Ikojp(# z-Ca{kOK19uxp+4f4%^J$ug5f<><e1Nee~NAymXb_eqhbmi}hhs?oeBN8Bm#?pfT6Y z@xQ)4c8I%Qjg&b+(0xdw=ah4xUA89F$ZB8OM&fw~ylXV*92~YR;s9aUXv*cbzane> zUWNO>WcalN6s^#rWER@IAG@GqYdKg`zkoQ%>vMu6f>22pP{ES0uh+NJB!-^*&~Db+ zUUId}Am7UrI(mhdFzicoDJq^Yu?63K0`nhdIIz_tjn09S$d4}BrK3e8p*56u8ta`# zc=q>ksFKMgp7h)TX@gaqjf1QWl(k~Ww}1tPP*9+x-JuqpQ^d30A8708>VwU9E4H)a z_u2BW%nd_X!b%~mfEwOUBCKFW8IQ&h3Zr)Jar6YOE9@AMuu38PlF8{GNK!sRe5jr^ znP}+5<_v$Q#ibTQ_Z({jDXZ6m^DgQKlsm_%p2Dlu?3~qto3l;0Ia|kVCiV1@#kfa? zk=8g6MK!ay^f(z|r$8$8*uMsBaB4HjV{W%_Y184_|MxucN6$?zy!%1h`=7C$aP>L( zr*gXAF%q?uBltWX8Ro~m4e^*cyEGUZp$Tp2{MLI7JAj40_B&cMgi@(5jNZyd3^D!m zQt*D$l6U~{M{&HnrT58h3RX?64GlvgSh+eK^1t;ZUar%8;hS_VrU(uD%nK?ZW&>s% zD6k(aXqn*f-=VkCja(f|mu|l53z|e}Z$WM<n$oU_7MeGfKiK#&gW9~`YKg=1Fa=@M zz4LlD2bLf2TL_D1DOG+_SkQYN^PNfTdM~6ZMmrz+Aqbm#6pBM)K47qtPQskS?0R5| zg%qu$9DlmMthnLP-@xbR4--fhXQ$5`S~$d=mO@_2;bVLi2K=<S(58=Tb8L7?%Nql3 zDaD3$SPS^B6b+5C<JZuBO36+Vxe_~ESKR53xX7hss0q*1;_<ZP)3_y#*VtgU&YDZs zFg^B+_Fx(mL79BJMw+1Vw1+RIAUEDCDcAy?szF#>WW)V?nLoe=$O#GSQuy_?dK5a2 zG@N_!+;jH2O1>a0T)Js4E-2xetEra+mse-lxs%KfNvII#kj{ID7Umfn95`r)aY0zN z2+25B&wwZ6g05sp_isx=#>i7*v2$^Y22Wm_d!ig(?{#G24~eMA;mFK4;qR7Ei2nQy zZt1a3jf6XWF8doURp+jwB~?`MzydCD>qil#7ONT&pxZ6_2MC18$B7-=MhH|k^+1Mz zd{r#807L37ZB8ukUtZs5kJ?7N7K7kyGd9ub-L3^AabnXKPqs_&!yN4EFv2s>adj=I zJW~3th3@}IzJq2U*4l&fJ-lQo>ost_8yR$IceJA#mkK{o+$2<UW5uTVc%Q-i-(&cj zV0zrwrLdvmR8Q7SuaZwor2~iw<Uhd-AeZ3_ZH%4X>T&Ol>RObmrrk(8Ir1&pi3*-= zdwr~$_OO<IqyZCQ3{K+G4<n?;eTm=blRp6!g8$aH!J+6{(kJjB!h1$^(V@EhY|AIB z)@n(tU6Ac`TPrhTmwCUGwS;PiKGfI>|1{t_Z~D+etf;qOHBAX-y+B@t3wkfd!5wiu z&4(O>Nw{I5pw|mXM8USfKg_Bj_W#yN^6DFGQ-g;g{4s6*-e@SGd8(U#-vZ-GJnkyd z(*ikK;(Fwj)g;Y4amjId7tw<GCle!Wh{te`x8vZz?0A>Dm2bpfiooj_s0Z7-3;S2h zBYJag*(CH6YMZkJcfC_jK~2J>{p6E9qnVyDKPMWe@VJl0GMQt4ejP@0M+#{5$~$N# zrZ2D{{}qV;SXeS}HTB=Awc32f(#vc61l0DAIH$B5Kc&X#t~nGk1ByxTGFa+I99Jap zczV$!{IM$Cnge%Jx=hu>se5_^UB(udaZl@QihG;OJtjUdxF4}%MD;fAbY$AAaS#4# z=m+(9GTL4(spEBnxVJooX#sSqAnq*xJGg9GkYt_EGg(m;!p^$}B~Tw>C+?jOP1(F~ z1aVGQ3ZR~UVh>4FkKO=v)no&Xa72bo;@5_8{mZ@tP5EJVWsf>xK-mz=A_hXJZiL9D zn^`hD5X(yhrLv6*{7sRRx;6DEDt`F0H4uyD7qIPsGqnX8I!-XtTl?aqC~oFL^bua5 z8-ZJRoxmj~mxkS=c_g%2yx2f!yTtvp0PiDyrS}fWj_3UqPqA7Io|~QSLHNrL>CtbK zw?e{0WG?3p4tRnDUO9`ru@JK0M!fy8I7iqJmdkkY6%5i8FMhmmsk(+eZbr8FyDz6v zGVfV{kDe$Tp;?)|`Ym)T!AEC-wB*CK1}+?rV4=8ASSltUFZq`M=WFk!`HP#QnF$*O zy%#}B_VVc(lY1CCSoms^J_xHmT>>`lm$kG<*lqgm*MMPgwLuni1A>Yhek)jk%4l-p z-Lz-$2?uM4Cio$t13$stER34hBH(m?4UBJI2P<k8W)l$25Go(}8`ZZ@DFOBj8zfI- zR$TJ0bK`~v{Bm((1(S5*S#WzrRx~v7EGmV8%s_>WJDGpPIA-k8vo|cF3S<AR;9et! zZxtZ}1rPU4R#Fg2tLfWkA3wkdJC2j_wHX{tuE{j6sH{bt2ARH`67|HK2^KgiLuDGT zl)%G^mKRxD)16F~a49PkmL2Pg6tVvrM_W<()lT<rPJq~*xY}|BSRI$-`=TZ&fF5>Z z4|^GSOW=wq@<pydWWh{;D-g;4T}<i;!*;T^_!uQlIEn#}hU1{iZPog;NMfBN<kf*X z<qrHk6aO0|a1#5Yc}e^V_hvC37<dolYSnvIqCFN}%xfYu+Z5?0m}X*1?z9wTW*G&4 zK8iC=i7v30OS;2|bv*~TeT4tSXRBaY(8~AX&#QQQpcCUo7dl<}Bx+{bE#0uDA;vW^ zUc2=w6zY!JwQ|7*B$oZujp%6IfdAOtr{`0Bt{v=8mGvT)($l{hZz<9hHf6_a%daHT z(o8NCs$Yl!m3IpMQpg=R&EcL)BiiB)^D9yE1(d|OAs%;$&B-fiAq=qE?IMLdUNN>2 zh8Yw|!Hs~ZJUs!*_IO;A(i86q>=})xc@Ub2DoAsl=qx!-1kW>mMt=4c)F&h-VNt1o zP<Yaf=MwR125!T))!<%-#GgRLVWXthiVcF!{-~MwK=MNJ{Lc||Fgq?rNpOGhzimQY zSYcte!2Qw?b)@_QjDcCfM(rLPhoC3V-aw!1nUILVqYsDoW&dyEVgW+`b6kwDiJ;RS zXsqgZQfEsFBEz0Icbo+(*_tbezF@!{eUuUEhyOirr;Pj5IfDOvHn~V@U@|ZYAYVTI zegWe|V>8&iF&A<)!B_r|@Sikf>;>~Yu4F;fT!AKFxz(Z|gZziCLYKla=*${~!&1j> z-H4u69R^p!u0uE6aE(w_`&CnB%>39V;E2!zYYuWnfw!7W0#t_V-`>Q?yWtFlxdUS6 zHkmFXimgJ;khJg3r`H%vnEbe@0eZeNkCNlAp9be891hb03E>I@!H4*BkL-D2%%%@r z>JGS(JuK*lv0Zj@pDtK~Sg+xQ1|cNYlhqLOM^7BHea+ZBx9K58vwl1{(^Y2@D#wD{ z<PaN;Ne96J!IzkVTnOUCKCw4&!h5@qDVmK05gCNY>V&6XeQ<6=fi!f{+)>7~yJ4nG zqDx{+k);T?6yOvo8xJcb?ZneAcV#Ax+Hf3lK*0%U<(ZgTUi35Dc!*Ym#HU`vm}V^z zvwT8zJDYIu%+(XWpGfwWtpBIIZ;y|vy7oVlOd#@@1O=rP+Cf1BO3Z`=GD0wu%!C=p zizJZn@?@Ay$VieI=K(=MV-u*;ArR~HdhHdh5A3b|(Oau%?QIkbVtwGFidB25x9v^D zT71^p>fG<zk2z;16S1G_{r$uFWU|j$d+oLNUVH7e*WPFEb-Ljm<!?@=&|gC&?4{{G zB#52~X7`GLNmLr|6(KRKy{TDZi>?RF2>jdhabKJLrL`z8-YWH%8Q?D!O7#X*MXrOx zTaWcN4(Ypti()r2n}#GP>xVypp&$kgrw2RuF?{uBUGj(fn_$8?J&SI4VrK(7XdZOi zS`5qdl4-Yp3Z>0j)rKv3i*Cv3SMdxR5+2o^I7q{URJ0qlTF!&8IWgHNim}>OO$J-0 z|9l%vv<FzDgSy>j{Vg`}AqI+}d$@(xE3y7WlXlo)%bUp#!dED9gve!h*JZ#P5^PAI zQ&QHPNf%e+9CKB4DYnr}9P6FX9K9kJTPf~?#f|T=Kn4z#vy)i%Xb|@Q(g``c?xYD; zCi81N_oF829Pikzn=p5vj|JPUH4}2SZ^NApiUWQaz)3sT9&eFW@SULj%~UccEG<h; z-`hYC))x&3CCvWXF21;M^W!hCpyQO2?bZpqa(4D)liZB6#bP8mj)hCHm$?fIwl2?y zs1S^)kJ$RD0h=->u0>MVR1d)^6!xfM!(I)o?DkJ=t$>2^aRv4FS=0`trL&=+s&<fq zD#O_FjMIZNvB*>w%kVBb-vmx?H>~zuv8CA<1Fu~L6CX~rU`N#APLyi+4J@F-egfOT zC!CGuY!eQs%2?G~@B+aC3uJQ6uDO`0%Y0<@Ba=}6+a7y)g>7L`G^cMIP+0XyOVH9M zmcTEKP{|WMAD&x>KH;f4Fbz8HF63GV={oz^yBGwXiiMvvu8d81lC9@0uaDg}a}Wp( z)HT{;jYp03vB^j4;hY}sM;}E*tm=qydCYhuI$VdIKjj;xsMrcnB{Ks~K6cK08aHqW z2hfwa8_ELPP@ZSQC{OPbfuXy%6PL3-L+?NbAp1OY2BMJd9-#LQ8CW@x;x<YFwRA>o zExlEqG9{1bMqeHJ2~miZZbkf16T2tn-Jcb^7t;NkSkZo|>;StNNU=rxhx{*L5pfQd z{<QTRCVsoF!3xJ{Eqd`FlMvRTOxkDB;L<;_+y)7`i%ZCF&LuvVe*1hBW=@};K1AZx zb<3J#;WH=OqT#b959hzj+8yRWUpo%DgV0~gK<FoY(egS@==(E4=y$!ezq7yeU%Xhy zpdOCRzlV&w(bp)i-rtkfpL`R%sL?VZ#C$?5r|&4JgXBF#@|T?CVovgGD@g7FNnzI? zD$l0nADV;y8p#vuk9;vh&c@j!9MQ_~rW35(w0Op?IX088Wv2)sa2R{mVkDGiop%j4 z>#R^^IorQUSn!5{5e-G3KGcxC>Vn4cxx-@t7y8p4tC(g(yOU#zojH&N$HMVBeU}^2 zleLA2Y8a@Hfos=dJDB0|#CKyK!z3Z`-Pom*kVowFWzoj5*k-<_WcW6$m}%`zd#m!W zBKja^dX*SFA6*T%de*fEr{S;wsYA?<Aj9Ok=~^nR=P(9aOkIU&%eN;qj>R!g#?i!Q z!S1tAAxCt`<*^x^!W6@-$8*CZ(m&RNSJ5!q14*bwX1H})*FHN94moljJnZPVPXtS7 zU3vQR^-z*LIXL-LZ0#Aja902mf8tsH#YVb)cR`FNTw|Tko3rb?;EXn2^-nK)lPqPj zCaf1;57+KAZ(=74rvGLYy@;c826bd;&wd_*tKB+mjjrRi%y(-B1lch2l#75<!2 z(eQk1LX2|nn@_n@ZWu+cAN~;Uicq^rD1UlemVHZ+)DkSpe}yR-g7H~_VmV?R?_+HK z6TZldlhiN{x9053rn{$dwzId>2@~!Xa$m8P=8~`jAO;At?pU6^3fqRUtXvg6DE(yF z@o8y0Ick9mk3Fc6J^B<}8&0LEW%T*#{#&U<Y|-zshIw)8^O&DsiurjZ=I7YpQ<-av zb<@WPC!>CBd1e(xD6A4xduW$FA2r~kYvOs2LhD8^yoPe489B>w7(R%h%WYOhJ-i(a zM|$y*HC#tLNQ*_V<<3Dr9MdEFA(oTZ!Vv@}Q{O>%wZw;W@gjwpj$m)PNy+$T^sF!@ zCGeeYq4Vc*VzT{QJkhrhw_<%OXXktrr7AJ=p|d@ufjThEgHdX7JshMQfwfR&I7D9w zw^OO%WzmQ<PR|L<#ivG(MA?_{u!dtju=RJO5721&M4`Xv1m+Lm+<7^ZW;kP;a^dtN z_mFKeSjNfx9Qw%0Qip#GCeZ$}N6I-9e*6u_g!g8E35KiL{&k22n>v<0UyGR&jn8CF z`hF#5Y>zn&ALE#@o%RBXwai0hxs;b~VEbq#WZW7)fPuafnLB-tv*nWh>9+sC9<xjw zyNSVd>2&`iFRzGR*o&11Y)i^=Q+|Ey^Lym*s|-_{;dd}NI2JZw4!oV)0c#hc@ZaN_ z^n>ZF@UIr4@b;@nb(PW7Y%30VVf;YbRY9RkeHMLYI0y}4gNsZ^{#r4sn?ow!2NlF? zSNcW``aI@bq#0vd7vv6~#>Rx{S?HE**57vv$wR^fo%nPo$@GM4l5Ei75Fz<605a>f zfBJd9C2asNB3QWmnZr7i(|@aG86RE&l^1=UjN{nWzvbCx|J80d<bX=6dS&<x5Q;ty zpPrZ!IVnj(g8EA>C~NeFvApYS^Wh7d!#h#hSYHl-hWE2!kq$FW-+&xQ-=O9%qJQJl z-rof`hpULCT2&0FikJXRPOcBVm!a9v!0@eT52xo7h~7`CnRR+KS*K8#1=#9TfK|Gq zRfbm~itzMs8YUVLMY!1U9pbHDdiDO7S3odncyxMB!{Hk0tI-R;Jxsekux@;Nkamva zJ>U0$!d{5b8f2;ScHqPR-hQNmJ)VupROC+drvB->Ud3`Q*5l}`Y9C^O$Cu%zTBp~8 zSk5kT+6&p56(AB=$n#8q@#3HfkPBZx;&Y(TQ*bi(6x-j_KljSj&oo6}t@gATD`Jzs zzs$4f-g=ksCDxAEGGO=w{q~mE-foI5x|x<F`d_)AIX3xb7(Trl6{Wr+)_Au<2H2;? zio!Q9+ZyZOd&2m2>^C0R3g*R1R{;}7SJ_Yjp0PigGP)Oay5kO3r$>(7-(*_|Z~EAr zkOSKuowx@}P2uS<!dWpqpTK=8@}7jet<xUL=_|za2G2G>e>ob9Kuq`%CeNbVvGg4) zBJ?|7gA5vuEG+u=woLd7A+Jf<<d9_?){bD&9w2c^FmKA`n5U2j0*c%HGsID^0X}5s z5}HkAZT=Bfp{H2qVTU4)0B5!1ky>swsVun_9&NXC8HQpy1v~eh`d{J`2cJS5n}N$V zJNIt0XQGmQC9IK3TfRqjgAux*^uuNx=YcmiIA6-yc>;oOi~W?OIyU9GLi#Re&hB}X z#seoL2eq%XmsR1lYPI2GN6d*s;&7g}2uMKg|05P{Vh((>9m{qPp@jBW)|H?`4t93m zM^e+Db?^O3BM$FQ3*h^%{nLN_Q<}lR)$$+>aIj4dRvA7%UePu{WUpNXat`b7a{B9V z178y^ctY{TnULc(l65j%ztDF*;l}8CO!Kd&7e%xRjqI*o9IKm*9f$a!X10A{b#CPU z;ha<Wx6sPH^P$)(v#Bh_XJZ`%OeleV8``*q*?G~Yh8vj%EdF`}ZNC3=mEohI|HA4F z-#?Dm3C)b9;`O~)g|=qhVxboayU>8cwEjK-+uie?EqWs{6H>y}9)GRoh&7G{+g=Ed zjlMkm8>EQ7jQxmh{a3`RJTKd0)kduMW32ugthIXE?DrW{qQ3=SurSYFrs0DXu59@E z2+zm#wdgYp5g6wOvCdSM-j5l^b=GCE8}&s|B;?$JoFQhrgV+EFy;BB(8UI725uZhi zX5xJTZpE8De4`u>U{~G)w12sD1~MO7`#4f%-C2N_m6*hA=YsW69qGT~J?L5Fq;29W zue{x4?{CIyl_^!fz8|aa6SuE?rm6Rm%<wd9g!?Xbhh9f-cyeOXc0{LLL+fRDycz>_ zIok0M_H-QNZ<pCiW|#HFoW46KBkZ^P8K^&8gqFOUkFU#V;i<p0tpF`~$7Zxv|HNA< zdJB&(<k4qcgy?Va=qoAu3Lbq1kItiL529@kL#mYH({0SlGCV}Qi@_Mvn6Wrn!MX?9 ztERsaYfH@QHQE}&3vUDX$ZO-6A@V6%ZTO_h@EI*3z*VQI8oqd{qAOu#1#<BYAA7mc zmLK<)<r>g5nUvMNIsHfQ5(>rs?|CSfjmzhiXR=yt#~R(xuQoCH1jb{8@irftS8<F@ z7XsrxU>wT2c`-i;XL-$X7+=`w5s&DJZ+Pn*SYr)r9mn3-V%8t7AZ3hKWm)ThW{bWG zt$A)6x-gdep<J6W;IsK?9ZN7&LY%{U6=2YjprND45L>pcdE!Y_K|B9&0I##|UT_+1 z{|MI5E3V&LUc;HXQeG}s|NZQ|*rBXH2*~jZupY25>(YGmpzZrW%7!z9*j+&H?5N+^ zt+OtsxLrqC+*R0!_y*sI_)P|;Hxe#*rowiy*y6;VLu^09WWu_2iW2#LY|5u|wOxn3 zS(}iv*m#)Ob9e#RF!3AkcQ@olwTM2p9A-IyX+3~_eOU`}ms53=?ZqL~<3^y)2kP+` z(I#`jsz-vn)qaWIMyhox+GI+EHL8iCJ9zXxJlc(x8~P}mu!kqUxrluoV^=-;CEj2j zre-+^7+!tjp1#*NDeFNzv&{@pq_^%vZ$$IS6@$xK(QrmgoTs#)7tmp<Ybo<s>2gHa zR@>GL<>8qhOkd24wb_DVxp=X1c(Fd9KA@sls8lmW$9WeyLCX~VrJZvSU504*w0n7Y zI$O)>0sj#<aW<hZ<miua^qLERK8aHsN6{Da=sS7zLE^!CA(q*36#9`u9^K2Mk5XnY z^5~~2`g|VU%A+r*=m&W8{S<v3k9P3r(<%B!9=(gAzsaM|<I(de?@c_~Pto7t(PMeE zk)oS;bR9)c=g~u_Gd}dwnpg>swovp#ygwf1(U;~S`fEJ;bc$ZeQ~!WRXAtpEf~?-} zgW-=1@#q+jzKo(@<Iyis^i7<22ajHU9-<%R(Lbf=8+mlKAWqTW<Iy)!^bI^ZpGRMh zMZKY`5G{9=3}^g~734C)J&PA4gX1<)HR^#&;{y#0S;Kc@4`kn8kN^uGu(Hc1b91ir z!u8Ck@-D>)V1Qf7o$L)9*5P;Ca0m_y^jOIL1%6AG#Ow$1Y<19x^>u9N42$_}LGH2_ z?r*|b7~_5nME_Y%MlZc%FdoGFL5$_~WaPpgg+SHOs>B|og5d(>tm|%2l*$;=#Y)@U z+Ih|I5DQ|Z4FJIktQ(qxXD<C^6oc>2V5Rku8+nB%O=8V@6FR|=8|QWqy_%wL=e&C_ zmqn|@+HxMfkfLwp(J%7o5@PMSJbD^M{|k?PfJYymiD)B_{&X&)-8}Cbd2~H7`wsz@ z_irh>nMZHp(QiO5hYnISEhyj>uz05d2JCAg-j@zL!F%6}q%y%6_LinJVoNX*+g)+2 zWb#Uw3|Ory3fW@ezvQjNh_o`M)U7}Zx7UHMyfx%9knaGqgfsb@@tAQ3IZ%UQ#X1Ct zC0gYY^oBYVWbF0SC_869!5YVS%dii+46Mwd>L^^#+?&H#`6%_yzxY}735;Hk{2S-h zwLJP6;?+?e{X9kA#-n{a`b>&`m`DEyMgN5JYAKI45wC9L(brS-X*}->c=S0GeI=qX z?l^C8VU0kT@$BfxIlsdDanIy$p*~GNVf(f)(ZF~3`ipS}1CyH)da+aGnS2wS@598V zD*Cbu$8#2=p663u(|KOMFtK`0rh4Y^qGVI_3%sOzc=XliXhSF9&K~c0Ua`lTjJEpN zB{;rVdfTO(r5`}JS7Kh1%Lii1U_BN-O3)LIlLoqn2**nOK!%JL3{~Qp%lKN{>5c;q z-~{5Q4LHb$0b^(Y`C)_^r0;F@Pi#RE9_c}g(YEx##97tS-<(I=(J#$<uYk6vPs;iM zo`;H&6r8Yf{qPWh-Xu^o>w@!fKmQ6a^})XleS-|<Sm{{=`xfG3#bKag>87t023#Mu zTCGKh&C$OE@t)G9>u}l}G;aTt0rvxlrzoDn&DckXq@|aX=fHpDN~FS;!s$buM?rLA zd~KZrdtjndKEh4!Cs|h;7a79m4IO&{kyA1##}}@e*i(8D2w_5EMdCwQhk%MlWbo&q zv5x^U>(yCg#74%$S}I>hQDAImCudP?%Dupk6+a9d#vdA)@q2+78Oz#*NQ}=fuOvnt zzKHGP&$@<iVLSYFtx!hr(F$ffg-2|}39(oj(pOD<1u2$0qr=$CmDK<^nsp|1rC8Q1 zMtD-zPmu_ZUuTb(K84#ea4Yuv??oX&_;TQ&^_^?h4Og;a)4JBsYyU|cGJq;(QoF80 zN7Q{c=Chlz*f{<7GwHiA!x6*{5Iag3JDvg*HvMk;s>1L-{A256Lw|c2k3YvFUq`om zG<+WxfAG-9IOdF9f_;?X?BU)H)~^m|OV2F56L#-HXRH=)XO`qTXFti81P*S#2xkQF zPI%xDr-D5-hs3u+vHv)NGoi+JozW%P2jq8cwEdg3BNI~r+X`3oQ*vAI0ZzC^e?{%$ zyx^NS5$bv@o>_&X2iEs;zO@(BtE`_@VOpG1@lKWDQ>XQp&YUGfPJB6oYW~hf+FklP z?97MJh$F~ln*Rkj&;C1=jU0?bhF!63N;M98S4B~*Ph8f&hRvKG_E<(Nh;6)dg6}cB z3ABA2z5MSkxZn6Au_bG$136$7cu|$%!|G@RTNaETxuTu9t|-<>dgZ5bY?tEOnXs~U zpN|H7<T9`~Kfzz?XW^@z{Y}_%^j@UkcsMe~Zml(5T}-Egogc%N-|8ih^Y2%$qt8y; zqnH&tab)!cm-W4HC9qIHJ5CeZ7mnQq1HB$AGdPv;JUf+vJ*!jb++i%6&Kx?8bl{M< zf80(xf?u#lYmJ~1c?4~Meg82hKZER?aD2N~K6`8oGQjNZ%t$L<P~ZgFrN(Wm_3@|K ztxs;78q0}}jgCV>;A8-Fqvb|Wg}l<a;pIqGZ`}Gi`Ia6RvBYdfYo&49?ATa)GzXDU z1Epy)Vi)y+0ekE;LYojdkEdH{+_s1i$HrC~qhkbOB@yTHiOjb?7`Y~q$q$BM1nBrn z@i!g+y(Z87<#Cd#Csw!~d;5|Gm*EN5^Z5MsA9MQOgfO_G@6)UW<+jCq#)a+1s+^i9 z@jHOe6Z}_o^ng8zm&B+J&O29Ik8LY-!5uVqNGarZwu&}g89uJ*pKvIa=ZH<RS>L+) z$?!w;k)h~YuISO@KO_13=yAMX{x)TWZI!m@Q_jbR&1gmK1h&h1;;I_>oI7MA5-(hx z9a&^s=rUe4zXoeFwkYPB%W*!f4%wAKv~hI%txNFk$Q2!QK94?eaNFsicKjEK`ciQm z(Mh(b%Sbahh{y!&Q9prVL>5wcAP^ae{2vF6DlE2dSHZ*De!GGb4aP(CS*uCxqgKm} zsLgOWB1OrM-$nj0Ua_sj4stlcpbm?(X?cx`Lg!Zs5H?iJ{sSAFdN)9+J@#p4_-v-H zs-mA@!@nIq6XKI!XX|FxHzIGPbQ#Fy0oFy)_tBZ?{?v7f1E)A}iUX%OaEb$`IPi~i zz@TI(!NQQgBj4ju0`73T>h17$=6Cux`MNf!VZYktZ}plNnG4cJ`dN&7gSRWJx_zym zpNvtOQEF}tg&9@F)#dRAgI-VAjO@HKX3Q9;6qpy4nuGq$=JU>D!6LJh!#w^Df>E%@ z+{9si3xV)|k-11f3K^u3LAofz5N@k&%{8@lM}wf=<?RkL`s_x_LBc%(-lWXXYUb+- z`C7edz<-6J0r8}^1>GL=;!<;MjYC06O3gJyy9U|TAYTPsF_)H_!<_+@rOO9E(VjFu zb5_o3HK+U2<>?7Wf?c9kYDMFU`kDsC#~O|rAl&KhHZL|ex@ugFN;q-H*c$dz$?$)X znX`tKLnbXwPRmoU1XQU;#S;j6H|2-71iVzAhDKX`qr<LN*RFKcEK&R$l}*0ZZVNG@ zfD+MDA$yV$9HjUo;XoujcUCAr+#OanE2ym!a&Pjs0yK9PDgdZu9OJ<_Wv<06{{%=f zXB;I=_cu<fRM^+bgffXIsjNcP7_WRGw4~R&hT5J<=Q?GEgn1&tpnyqkab{7&s)<<M zLlUh(k><H(3z~s$y<M#;iMg&RwZ>;%gLtQ~{E2&Nq9nvdi()oY15kxZXSI$~x+0xw zz#R<x+#M>H2!=JXe2IK@C4~g&$^$m}&=WfY9p136t0yYLnx9o7iTcRuHY&a@UE>Bx z8?huzrLa1J6A6e)MWeFkQ<P9$iP(HUu`ThaA^RC-nuw7s0Rb#ACFAFRE}B+eEyIxs zz!ALUNT&OF_$Y_Or&e8)C_JnAI^DB>-5OGl{&iIOgrY=Fn$k&;8mMOT)~)8eQ4w^6 zsAs0bW2|QRVpWP?S`kz71Gz+;R_A0SkVu0wl8<^?Y1-uia4ij;<h&ru)W)BS$8{^K zSOQNsR*fcUT1I}2ewuRXtD&)EM0HvIY>04DLpV`#Cx!^RXV50PYZ6d~jDKtDz3$e= zpc}(a*yryGRl5W0%tSh@!JrU?M#tSnq#g9~5(>M+kr2s~9b=SQ?|{yBU`2ypnmA~9 z^$weTmD*UV+8uRJ^9+$`BTu{6voYZJ@zEY7rGjX{&>H9rv9hXzs(uFNs#SxNDq~`< z6@kW6-n|tz{%A2;Q!q6$iX5}J#OTJ#Jt`eG7^cfWH$H-bhCziJp~DiYD;Y0YqViFv zHuw6Fu8$@xhq>lFO(aK%42>VN&2w~}HWcuBTW5pys~z>VC?C@&$(d6j*R4s0L9b}p zaP6W!Qv$}U5%rbEjjrUv{zzXilvk8%^!n=Z9WjQDUQ->H+WnhVpSr;xR@=S7G}Z{I zLoJh$*cG)k81q*ote2DFJ8Bvo^}ueZub53;RHHqzz0k|}h@-JTMRfJbA|X9`In(e* zN|B=Ec|&1er#nnSz<M9lf;U7OpwZFL$V>y)lxb|EjyCfw`lT9941d(#Pu$TWZ555K zm5yW>sg;qC6h*`B$%GZGRg!fna5bGx%;M7Y=XAK-xJ{D*`g5syo|JD^4(fekk|A%Q zi>YlB(PF+q(Q?kgNHByh?`9ZZa;_w6kOr!ieWV!Hu4rs<*&QTS#J!OSI=M@akZgpf z$4MvbBeQC<xnRwwr%-LHs$5Znc1JVYxn9<kc!;$48V_l5a4#)f;{h>{@lWd<lKn_L z5}25pB}a*-83{~G43nc|`=o(tWlK}8lo5i8s>xCce%Kw{;0;Tm(sI(lsWv0(FXBg3 zNe8D|jh1d?)kMM(JqNRE^O{OuS8F*GNF8K%of$31^ajm;=%&-%(H80Q&~4a)|F9&4 zF@gL&?k+Xxb$i;^gx9Sh>g(3<VI&cuV$uRUOgc-=8gR1@-6U*T<3TbHPv`N&Mo3_! z#E_kmh~p%YyP{w&=E3YK=xwC}BzL}bW~?e`2rQNMm<}JAXb6PQq?glI*KZjm2^f}A z4y~a{I#~76lx1Z3)1~_YWf~<Jm5a4+eWa@bHli<t*_~%g1zBsML_3G6VX24|f|nFP z6Cfaa@gGmGhUb!$<Z+3^-RzUlvC%S-+1G{D9x`RAnazNBgJv>f%pPw?$A#wgk+8Yd z?+taGAHG;hsJ`TL7gH?)1cGo<JyaIWZdie+6iT|~fqY8=4Syogje-`~-=M|*cxtk{ z-CeEz&N^?fGXeveOz(B(pf?!lLe6F^EwCVn>9;5e7G7H2@*eZ)(pmZQksStWFg$-= zM;oWy<_lte=j{$)*~{CiqNM_9W)$c`DWgfMsl+OYe`)EVk*Obz6qoe)%+5$g7FM{> zJIQ4kId*?;yryHR%xT6?jULmuqY+EC%agH28e-s}RwK=39i3lLAzA|2n`uN$$6-J9 z@?><uv2@s41*!YNc87`h`FK=UZb!12VY<l|M$B|za65TUMguhXo;ozAOADJm&4i4~ ztk=J40UH8Fm_TW?uqxKGw9KhAWRJ1zao^1VvMve0h*~6OmO_5SA|0u1MoKWYi^34e z8H1**qb)M?)xS+XnoMJP+aGN8Vr5S*`Q?XvS9tUI63FLc^0{m>`E~grugBlTmU}tR zsT^#i!ef4b4_b6f3zF;7^m=qz-ss8cbPIP#CHl6u>PWdzeUnVmRCPh>fYH{KhpkSo z)2)L@+6jh$?&sk%y}^+E%2xE0HMZ8vBB8LW4(0{4rER3X@A8Muo83Nartt^Ot=<mz z7H=!>M+s%m=t)5!B})KLfT>$77_yN5B^ZE*i}L`$0Hn#n2w-wsF)G|-qe>@Z<NXIs zsJOl!sjucPPU+7~26fyYfuPrb7-wyATpLkUeVs%F*+|Fl`Cy$?M{^icvtXDlEVDYv z)n4{M)iQUuG2XCNq*d6`JW*fW7|Q9g(VN);<^MP3`^SowB3s&m^~DLB1{NJH;ZxNa zXQ|2Y05f4!;i5Rfkc+sLA%#ua0g0CYgtm^x15KIn^)9Xpq{K2UNVu$5>h;hj==8K& zWs_d-Fgq-{AAxkDPBI%=FS6nw{6g}XkQ0d2nN?^LPc5s%$KQlFaCHI!PJw6=J9>FI zzj*I4yE`yBXx&2g7}@CN^;^&%DbvM^7pLll&UAJX=`W~7m2@Mo059^ICEjo~h(e!) zY3T#32=P}o9LpTmEG%<Z&>Ld&mo9hfWj>}e_}ylITOf!8<}Q{ugrCedb12fuspQSd zFYIWeF0cu9nLl{(#cH+M>TPpJI`CpM5J0yQ?U@>2E!5mlTeZ@0@x`K~c>pDr(UtXn zys;Dr`eqfwjIzm(0a3&^Y<34$im|Ddh9)9)AuMM8Pa~=;gg$+}7aG?a#Ntq8q@$y* z!`&rw(IrT^O-et)<V_SHZQevmU%zzIk33N~8WZMR2>Iv=(HtOb&YLrP&Aftwf_0++ zS*?lss9Cd`=*zzXZ?PbLl$C{-oM)#i!g-9H`pi?xg2$u`_4F&gbn1{dUHj|G|78_F ziGHH|UmEq~_SY{j=(9*+aatK*&7Fj}rU;?|NNSTYxM)(R*Bx+RSi>|D!o`tgYvXNc z17>bst+Dkfg*-}RE}bASC#m(5>sR6Ka?pIW0y9-!KP1rl=O}_adUZ!gXKLn<aJ_ug z!@lgq3sx_i*|YaBp_BFS<n-=VW|W2O?yx&AZRgVCvus!bs%;8mSno?MU+Sx>la)?U z=F~KV=ZD*A^srb|)?lg+ucBQw4Qh$%>e}Sr=nc9W!o}eT-cP%huC6I&ZDuJMsqGw_ z94k6DIaCL`L;(@tJOI0}PnBKtAYpXh)0c1S|I<(R{N>=j#lz!g{LiQHKVPC|TmKx7 z&nu&NMKPDrKXp$=IX&SjWB-+05v~%UqKGWuXOdrrvojYyfXr}yT^U@2FIi+@4!k%X z&qG*-a4!yjw;(LQIguWOPJ}I&#N$VhrVhvW8-X`~kUnB?1mRr>k0E4V0<gv7FA*H! z)J#P=fsbjxlcJLALOO&4HSzc!gvSs*fUuwmct(^1VKYKyRXiR>*wY@5XJ;WEJJG8U zwjgXrsBA>}D8y-lY@Ex<#i^t|gart1LD&LMK<zl@0*7Vs+Yk;SJc6(V&XDM&oB7-E z_ynAiIkGbzzX9PfgnJQ|?T*JkKo}SR-P2G`gwqfnxeoP5c<jb_yai)%%T1t%@B~gV zECQd(?u^F=5eDu8|0bZ^2p1vTcW*qt6Jg-lc>L%@l;a5KfsaQJmVrMf5GtTkfb$|% z2#+A#iEz)0;1AJ%3HbrP?$;<ELb@jNKrviVuNb;>4QEdnn>}C{n@jL%_+48XkK>G5 z;!2ONC^LaU`1>!8#{(pErrb)?)TKG&H)r=KmwbKUoOv_PAtIFCPB)MduqJWk;tuCN zlxtBpoLyrV(G1}C0m@KD5SuA?M~2NbwKucgWcHb+;@M`(W_jO&=n0Uk&%>iU2JxE- zyc~pd;ZUpc5`JdDsQil4l-rw83#w=b{7&FU_>Uo^xc-dgrl~tK9VYV*W2GstH!EZN zIFlJwEjQ(so3b6_Z6<Std_od4ensHNKG66YWJT#T<!0E%nX=2rXZTFnwI&pbc+w1< zA3EU18~2Lcl)D-waN?GD`2gTOB%jD*cZSO}bysG&$=q)&H|6cjvY85YjIo(YddJ#L z1BQ%>ai$W0Y^FS*l*@utj;FfQ*D8mW;%pY~>1x4``rpiD_);-d*pZ;`N=v^ike2$A z@tLg|X=BRAF9O*j$YyRsJbn%CiHEx~P_TZg!%m~ql(!?xZYt;<lhH8Fln3tV3Jr8> zpD@z5ApJs=m3Wh>7{I`)@dJ1qKwMvAJRYJ3W&Eil{-i7a64MDo=8Xo^#|FEp2V!(> z#xm0Y!do&Nrak!W#cv;e`|%shSWnnbXQr)|ZG7erGeE})Iu6jO0G$@#qX=dA(f7jw zo_PE|0-(OTGpa^wv&`*=5sk&_+zuMAx5ndaG+IV7*$nAApb$U%5O)G`*Wq5NBbh{< zcV;?CCM!rLYfJ^G8!;1|g$riofrC#!19a+RPau7r7aE+(hxEH4@8DS-wRsiE6xt&p zQ!SYThIArjBZAL9XEU|*j@>b4XI8&)SLW^v1+PYwnb5T-+T!tX$cMKH+H^FT4P@>` zYo?J|=XeN2N#zLkRF3aVi|=AGz6W{t`QmZ-Ct}yr`2PT41Axt;j>cqU)bi9&tB)fY zsYTnaLTDpM9YK}}h=U+=v(gsAF+Q_a;x-^nIdC)FxN#tHlO%T;2~Ra3jS{jr6L(7i zX_k<QM%+;$oDeV@1Z*uxLARp{eb5Cbw#MT>q#7<Kow$T_;(C*r8j>qTG!L4;H**L2 z2c_AMG#%UG@gGr|MoQzLG;XAULK~TeSoJp23?U8N=qO4?52-4}jGqx>V&E!_&A3;> zB%2xQOxa5gfJ!g2Q~L1B1I~o2kzYb@jmmSoX`dnU=x9QaajR)R8e!0|hK2hK89&C& zasX_mC()CSpcfuBRG5w#>Od!>Z5(2kA+~0`Lgn3uauoG(QO6_GsZRh_0GLXJW%9t} zKb=lpVrt2JD}B+pPR)f*x5ExNm--Se%5x^!2CxZmESFt*_+J882VnH&ZN+8E-I-xG zP2G{X3~gl0%rTgzLa$-`P#!>ZD{y<RjmL8#x4e8c)PEY%>f}Ji4W{lYQ;(s+)Lm{0 zpe4GO;Hk#cZNt-LrfwIWpzI7)7#<v^TkzY1-(LLo;kO^ZK|>o*Z!~q+2vizLDuL<( zY9peqG<8E-4Qn~g&88A4h?EhA#;R!;Lxv8<<MXMGkZmXy*60{4`;Crd#j?aymhqFc zUC74zaXV<eekdNl38d&E9&QD!I~I?_873Ubk_>}~y_q$T;bl^W%MTo6Z9w+dq9@@M zfN*hLh~J}teGFI~m9H|<1}I*yG2>6;7zwn24W<{9led9?E%LjT@Kf{##;s&MS(dpX zy__r^&+H12FkDer#jLEc|9Z^~MLC<>T96II&BX7Aup5`aPBVs}IMJDQWGtUJ#<e?h zm$5%<=a}BHnSU~lgL#J0XLV-2xh@|`SiLCJ(VnHzo-igC+BswA7<_WrxSP~5_3I-1 z1`4^3G@eaR$Q*vJ!zS&9EjlOBFVgi{C)pacrm{?1`uaM?XY5SdunyuY^$$DhSawT1 zPS12z;nxh<BEaT+kuhVyka=)4g9EgjXs^AXH|<|BA2<(yl(tK;o6ub{GH=a+n)N`< z*1{fu+(YH=h3egxu@v@z9ri%E>B)?0(~*oy(^1471I`fQPryz<>g>~ydL>dfBXvDe zSBlh2kQ&MhsvlV9ERjb8!g4@r(((!I+hqVo6X?|m%*@ppxKjaXL=JXQzH*e$i5#5B zVKvIP4CRYZPN$)1uFa?cx*g~h0-ekoLSF;)T7lj?KC^%_BNN66TqkgsqVN^KT?0~O zVBZI5sDVM)jU*RLE?K{;G@0RF*p#=-RB$D!gtA(bv({9%%+w66xk7eGXgF%~k_n1( z8+<H5wXuujunMre0%3PU|20AX5xf=f0>ED-OxQjdhfUdb+-?Q@TId(H^^&zI#;{#v ziwpJQB)f&lC)CSj>5K{{e@}qU9?+p~EiXLf{w*7R2mU*E$}c7>@12oHb6kV*YczhH zx=wN66bDXm;1mZ=ao`jOPI2HA2TpO|pX9(Eu{dx{EOxiZ#R5V1$lv)*0U5-&%0zf% zGk=!<dtQ)tJd`$VYFHrv623g;xl265H0Bo>?YQuofn5*m<sm%GvTHz;51&6`mq1tG z+LK*-M7*5)Vk*t94?l~u9fa9@+NntM+KDw8x<sH9h<Hrn*!3LEJ#fi6BdrV5HH8O> z|00=^9p@mCOvx2Df{luthrm-RyXZX&T@p_3W$2RSrf*Wwg()(-Wd3rUQR2bZE~_8V z8R#?d+#(WU)s@B5(hglG#Pd`Uk8c;Sc$p8!`ttq{iFQe)IA1hir3hDwuuX*IwU4eH zBD_h2_lWR85grub%Od=v2tN|x7$NUxits!U&KF^&2v>@*O@y07xI=`zH2?VjY(+Gr zNV=q=;$m~&iuIAMaKv1aKQF&v?)(UQ!htmQeDXZ-K0?_m1x<&ZsbnZmq=jcHLuuhg zMfM9F86^|FMD~Yd_!vd@n`HP{Maok$JX?`+m<&Hnk@B7lAE(HEkqk#K6z!P|pP;bG zz8;ACOlXmTH0_qDn3O$f;W>)bH+oW;l<7V_gx_Z>la!Vh)4@+yrv5q|{0znXW;*y} zMd~$uY$mjf)Mv@?GnKt*`ctNImXfZYW#Y|_)Jw^9NUJ8xCB<h#o0`+YrPkG`P->&{ zuF!fKoYYtb_`FYyFJ&SM4i6ce{NU16#{Mfze-pkOcX9-L3qpgU)i+PTUqP4-pVoj0 zF2^l74%{f<EkY4LCg{8>-~~dVvv;M4`w(yg+P#ckUg45@*Npx{@MB{9lj1mAz)z&W z3kAGPz-MrBici3E1zeW%7D@kkjwtbeCE$Am{9HlDh=GU7V;1m$fY%9l*%1zqV)`2a zKlU7l*9-h_U|=9RJp$e+;9dbY3wVQo|GR(>KFa|s1f2ZHGrkFUtAJNvz-9CWKj#Yg zm4LJM@^L^!z)!<~Oz=SgXKUezBOkp)M-lXA3;bsUzU<d>eEdk@4~l#xKj&h=CHm5? zk>mSyfD`=|fiETgae*)GCbmY1yx(B>XDZTel5(;TqcE$lXx}xWoc{uNy8dz(;8dOy zrwc?8+#}#-(O+cj!vdaazdZ-I0lg^?|LNlY73H@KK2o1#VZf(+rCliLPXgS4Rnb(v zG+Ox!82;(Xv^OOMElgM6#lTn6=+BE_7-f*PB|DZNvz*Z%soz#JI+I7}$&CV@TK=mT zoss(R2EZqQZ+nKgd-bUfp7GrRu3X}oPLK(Id6Y#wBH@|K8D@`}+zczqQ2{S2=bWd{ z(9!k2fSdPlc-hx@m<2^i`I-ZNY9hS9Z(}<#ly6FS$A!&$_yPteNb+^5z%Tn<_9}{z z<?IshJ!9Twa637U#r16oKXPLQJ=5L+x^5Qm!RI*qFbA{u8mB`}>Nau!y)UBcFhYXw zS<j#4`^e*f=PF-=-sJi5SU7eS^!LZP`&g(8cA3!RjE+zM>|GFI@&PCQ3_c14NY}So zSUWrqZnN?T#mTvb{m_EWKq*I`%>(5^=zTNFqxA?L(IW5%8TaunOyKtmcv%Yvuy?k& z{Shk<gmWK<%kux6!N0Dw{8hNch2Ej-6~NB{f0TRqGkXV!+e=~hGkIHkkhRM(^3;rL zn}EOm<a-P*>3>JSf0)9zy#jtD1%E%_=P-)N|6UUKj|w`nb&dm`qIy`uGbVCA7kD`x z_HG!rMFKu3>?k>YSplbdwY<yu@LiEXm4IJ3_YJ0+Wxd>j&Jho%FV$Q`;P;$+Ulqm3 z{`DP6U&@srbStC7Y3Tp|Qs9?Wy~2hlbN0)uM6VM(<7=2KNe=K-!vcR#=Z}~~$bON9 zCZu|mh<+{0KU2V!_mkUwG2kSh#};zBY)=kuTNqqlLVkaxpwnXH<&k=0K){c^$opf@ zg6mm=J4d1O^HJbO0H1;S=8F1aIAGV?qu@`40Y>$GAVuB^1ia@c*OL$6nJ)4ePWW{K zF6rNdE_ZsyNW1z{fj=ndOFmx-csjZL9^k~!fDkmcFAe$rT)=a$WW`X}dsp1PBH)9p z7hxX?k5;nLb*Y@qqMV6#1U#MmFA(_V%ahw>sepGs%=MC_vqr!N7xVEVPvqM!;MsdP z9m$_Q0XNzW%;b`EZU;PFc^(GbENJS3X9b-y`pyt8$<P00big;J<rPKRMP~Hdbo9yo zCO!{}$O}X!MWf(50Vn-dcNa%wdoXZ&)hPJa0Z#mXGDTnA$?#2zS!Bre+=0%1fp30m z85;-XxOP~;Tdt_(BlTup@7D#L6GES`eJ`N%k)$K|EcL)d)H59)W&=q2A$9yJX80y$ zK=708?E?M1gpYcarSz{~2>44W^?jPrLBf>l*eLM#1s(HzGiyT02l~tgwbzk5I3f0~ z9Jk*T@SfEi&h|s$wi$3L=h2k%+&hZAc?JHUz?X8nS-{JLy~G*^^mhvQ5uvX@mR<iQ z;7_OI`|k`ckaWQ@fqzWk_lUT61-xbaY&(IZJ{$wNrFxlD`2TeQFB9WV&z<{cQaWlk zvQJX&fdxYT3t9+Ei(Sp&9H#%j8*q~Uf_pghkce!9y_bvfv>)c<xJ+~Q6kg8U6g{v& zz<Y$9CiQ>|aBAOyIh?{Zf>5i(pZX5haPM$E6c+eqq4#bV_}>@!EuuWK9sfh%x0G>2 zws#V@|0D2^l|P!q=f4R2W1BfX+c$&T>G;;lIUJPqzm&njpSw61-H=`D0Vn>X_OC9$ zslF{2ay+)b7PsF4oZ7cV=-a70TDe=$AGn(XZW8cWXK^}pdpUsZ-N0?JfDa1$@H&Ct z2sqL2nR7gepBn^xYD#<c3OXldZ~{vOoqGiS;9OzX<@1Qc3|}DWg5L}Lt)gBA5jO@E zM3*0NozLLl&te`WH<P#kr}FPj8LxK;xcQw4&6GmUFZKwyvXRT@pkUBGz={85qA}V2 zY@~Zq;I}m1-$Zoe{AF0e#dwPDz^<|ATItGv7T{)qqYvf*&ie0r&oKJ3oVBCS*#J1} zcPVnUli_3CNwmA<=WV0Vc?fXIS4kOvpC1MPgrIL0`LanLDiRlTj=jUnFUQ}rK{{Q1 z=KxOm9t&_gQ`Waaz<b0%N+0Q?Yvm|(0)SI{1)4eDk9eT$k#vMy$@2WCfGa|tC4YV| z;QLbKM{{1Qs$owXJPz>CqNuCCs-s2rLdPbMZ(R9RW#ITK3vXeC|Eh{^FW}_GDJ^R) z4rF$?1EJck4e%SdfsXPzd_G^Djn00m%X|%ms;_Pt4to{Ri9AQ0FQ2@c=39vaoW=ri zuGS%<EQN?08R@WCRkg0((b%|3mHw(!6{uB3_KMmnep6rDq)SX^$Wl+N;SAYmgk+wU z0_|X&!*_D@BFaTOcjs7t(j<ii>5lq+k)jn==*}n-qetcRNef{q)Su^cq!8lmXDd>D z^}dE;wGJ(4vFMItIvVDyqLG1wSZkd;km(>~-rNliweI8`v?dO&I(+pyS>a{yHJ}hD zuZ=}_y7r$SQ;;Z&<)5HZs4L7rK?ib@#^aNYzgjl~k4`RkmIWh@ppy)Z%G`!<VWFzF z`MThQ7!I<%a7XO#QbYb=*j0nxxS=bedb+zU3sktq3c|gZ>ci<-H_q3)>KejD0k<#c z0(Be!<)`jl4fE6nH~psroHY#vYO$*N10hSX>Ow-b!y5`Q5)Q|vMzx__Z7fjpeW9Q` zzjz+Hbwk)PUqv~>K|d8i?eO~pUqU%LzF0vTEwU^n$tq^Vp?a`%RE}z=Thk@Who89C z{P`&vj5ziGIf~+|Qv37aF9E)>nC?&L$wIxugV77Mq^h>uR;8+;$a>YKs;f!iH^OZe z8)I<}_^Ub}j1j!ytE27-!Z%9<pJwwY@Z{j#Ku+0$aBrb{I{aPmQKYJ^esx2Ke?7WI zE4l<cDMq>#>4v*Ce}Q#AggPA(bvU2u4hG#@;B7b@+@iouYo}LjjdXTyK@!~)dV>!R zEOe-<T3K(a#u@1vJB^O&lA0B&!zqAHd%dFCSJl|6T@{E+O5B<ZV18#5RkU4gWo3h- zQEjx9S2<|R6=GcMCKo`=n&D%)l{|L_Fwht3fR+Uw>0D41?gI6(MdVGz1DC^{?%+mm zt1fDO7@l~%AsxgrPv@OQ)#q%n=wc`ZT)-wIYd$}C?kFo;QspYIXl_>L<rn1_lA$4L z0%Zm3M0>UrlDj(jeFR-ZQ2-v}bkD_sNGPe$Fgnt8ZH+Vy{=|7Yqu&q?M#y;?Dv93U zZ3Rd}v=o!8uU1GC|Fl37Bhns^*U}b|GkIMx3o))S*8&agP@Td>B+FEC;0p}G8u?KM z5=C{@!sT77uS+Ga=<w&^%s(=AqnY8Dl?n!JK2KHQ#|0jx;ON)=rKoZYEhp3F7*iT5 zRA}?YLY*XAN_37j)3DpA<E3Q*wTmb@^Z280nIiJj3v7&xZa#Fv>6j2awJ^UhzgWkX z0&-~6?rn{9cv%Li5=%3Y(S;VRfG;bM998;*_1*y7Z8_?ed6Z7KuS?5h0dt3zB%@a1 zw@Tj7bk)-Aa4oGh(Q|c(MVG_p5Iw^@D8Ov29W9EnyK4hE%nb(pL6jk>&>B5Ufd@Sr z4us%@6BN|ekY8;_cj@rzaEh6CC#^f{vbK~YD+_Y%sgKr)8HQ3_%qa5jLm5JWAZ&^@ z_&MLGH52rMRw8S{-IR{veD=8pKOm|*M5dA2=Js`H6sVyw6nJz*31n}|4|?13VLWwr ztI#DOKa4A1c#FCTGutGNhPGft>Es;sCGj)g!e+l>3T9!>5#bD|E2)j4D%p1<MhbID zwW~(0sAW<rd%p#`7T%fMa3$vFj!qp)fV=Hb;ULr7twy>=Rwki7)6cXt4q8%71%1pH zGL>}+is4gVWv=dROW;De!J%||J3WCd8tW~(wp$<sM%Qx1%+03`V9_gd3!~pinKU_E zOPth~6I?1v_9{z_Pu(0|Xu5r2tpKc(tCD{ky<1cd9H4}~8YM1L<n2pO{vV%BgJNq( zU9yf)+8}qKkvd0bhwF@U*y9%1<1pe=Jz_aJLA`5pXOiq`RVZd3R?!vT>JYBW8}&;B z#Y{u$&=y=CYEK<)3z~wMIxs(AOoM40FVHv+8W>#Mo{iL1Q+gX(Ty3nbkY-P!!Tzu2 zxEfn51z~@fKH35cS66Eb<fyH!BNA#)7LztVoR1}g5|uBJ)|8G;iC8TO5ues;+5Ur5 zMJ=JFNk@HtBlkJ3MKg;o)y$jU?GIWCOLPe>_&O3>F|%Mqz?{&%-nYp@qeI9CgBS`@ zr7sJ?;%xK73WEh^D|e}ue45rtTe7VSMy`&el_^;2z77R81xA)p*i=NL84{{wK9Ph3 z!y4H_O9i<}uJL!-u}VWKjMkxq<&zk03k%xa!Pd?0pch`KyU0x=Iap2|do2q<m(PjG zFjYIftv*<`_=pzs_WC8vMNekDU{1{cV8v*4v=lc~)Yil1Z?1z6_nJn%@jairOx5w# zGS6PwPz_tVf_+-RfiY0FK@kmfdekqn8lokihlz_m^%q~P(r6U5b|w)i#OhkWABc27 zeJ1(Nqb8IZmXA<r$EVL#dUm!}s;-B4rihIN*(NXQX+^XYaRr7%WJ?QEh_6lje_11e z=y&+mdsI&-!sc|kqAsZL2eveJ21w`|{q$eo-U~2ENNw^IS+eLFw1kK;8v0c_EaPYy z78a5<lGc`1;iB;*hE|~^5<n*=^AJ-Mu(u;ZD^4gv8gnVV8X0YARV!jq$q4hEO-u3R zGPMnU6;;^L<O^T;TIBi59+Er(CF@VduxYIBIe8UX!z(OE=Ok30kWDXAjJJS)vrhYA z_1x7+!?j#@z|cpl4vp^h$(FQcM8my4o2jqp+Ki6`sP$g>#v~J=q5^YaGCgUwESKp< zng{%qh$d#VM1fZEh5R0?Rc#Alp3tThko2Tn>6(|ALI`7>6Jh-gQ-0rw!7nkw(NspG z!zRPJ`Y@sBq~%EFAy+4Zmcno{o-E4(;XxKjiG3$w-WOU>))jC8`{bIRzXxF+dv%Rk zSnTfFk}TCKmv#Nzk<a+GIU(Yd{Lq%puzNkiFy_w`w#z&8CT}pHz{zXan~%lV{PhuE zN9$bp1Lq)&v2(-j4GN2EcZb@Q{MId9pvS{-kjG#`7J`%~J*bEa!hbU*5O;x&u#!&; z7fL>E^YMKiB_DP#{xf075Bk~iMZULPtWdSLf{1(qb&m&r@jc!^82W+alo8{LSDc2t zCpwfnNV1Z;JAEG9(BeowbhUzI(oS*-DPA@HQvvO-rgxBh_X76Oh#MKoeT6a;`My#< zpNkuM2P@Odb1yQSDG^0zOnIJ<XMK8kK1PP-6#UfmcEo>#vr{sEd5%Vgc_Mw52<5&D zNwx+z^om!em*;I{NPY+DqV1$qcbOiq-PyGg{|QB=m*;Y1D9^8PY;8Y_e7+PnbT&+; zm*;n6SS}D{`6ZqVHzJ<Sn#pH*&PRr<(7>Vc6YpgCam%hN@Sos`^w=Lvmpm6F&%eq1 zWqMivKHyUNa!Q0to*R;(Jby>&DNSnnU4Ri^#dclVl)^6&VtYo?MS1D3C?53b%_5x) z11SQVLSDHcCA~baBtuzVnWub~;rCL~?-3hpWH{+&nUaSxe+m75N_u(zNru?Qlys%m z|2~mkwx8S=EyEV-pt{SfyQkY9<3}u#>E(GU8Io^L{gs;kFA%9uFV9`cFdO@M^_S$E zgdN6>KE3%(9wWn(>7UntZo*G=)5Lj+fwwuGRDR3+W%xfp!&cQqdU@V!k4P`^I5kav zCH#FvQ2Ay4@?6+nk-khO6roI)03$KUzDzIAj}3|RX3;RRf5`N*Ubi5vK7V=6Ec?$q zhmR8(@f(?5hNmI1K0SW|?g@@B`?(||)5+%?Bqo?FznM`(Ul-|}hxxe&iEoxSBAhJp zFGzvQ^yj9)sjPJALn*sFhW{@U`S)Od8eP-ztHn>2U)GEImn=JO6W8Dvkpm5ox=ZFO TLDb#Trk}wvr>7)Hc~t%v_lt#u diff --git a/run.sh b/run.sh index adcbcbb..e9b6c3a 100755 --- a/run.sh +++ b/run.sh @@ -6,8 +6,8 @@ python setup.py build_ext cp -f build/lib.linux-x86_64-3.7/_r2sol.cpython-37m-x86_64-linux-gnu.so ./_r2sol.so rm -f -r build -python run.py -#python run_local.py +#python run.py +python run_local.py rm -f -r __pycache__ rm -f _r2sol.so diff --git a/run_local.py b/run_local.py index 7bea024..c784b2e 100644 --- a/run_local.py +++ b/run_local.py @@ -26,7 +26,7 @@ def GetTestParams(tid): def ShouldRunTest(tid): #return tid >= 22 - #return tid >= 1 + #return tid >= 6 return True DEFAULT_SPEED_RATIO_MAP = {1.: 0.25, diff --git a/scores.txt b/scores.txt index 93e5927..6e50c96 100644 --- a/scores.txt +++ b/scores.txt @@ -1,71 +1,54 @@ -0 107 79.2592592593 -52253.3333333783 79.2592592593 0.7407407407 -1 98 70.0000000000 -43813.6666666879 74.6296296296 -0.3439153439 -2 57 47.1074380165 -46015.0833333573 65.4555657586 1.9745798534 -3 80 100.0000000000 -12641.1666666695 74.0916743189 1.4809348900 -4 97 62.5806451613 -94266.6666665390 71.7894684874 0.9266833959 -5 120 91.6030534351 -49427.9166666963 75.0917326454 0.2633303108 -6 134 77.4566473988 -69347.5833333812 75.4295776101 0.3082880781 -7 77 56.6176470588 -47386.2500000265 73.0780862912 -0.9251008728 -8 78 65.0000000000 -43703.3333333540 72.1805211478 -1.7482378129 -9 66 43.1372549020 -77183.6666666561 69.2761945232 -1.3773356002 -10 86 51.1904761905 -93239.4999999266 67.6320383111 -0.9815605023 -11 94 90.3846153846 -17857.5833333366 69.5280864006 -0.8196355887 -12 65 59.0909090909 -50743.5833333633 68.7252266075 -0.8265167672 -13 121 76.1006289308 -54317.4166667216 69.2520410592 -0.4979380763 -14 73 59.3495934959 -70854.1666666939 68.5918778883 -1.0609481666 -15 78 41.0526315789 -144834.5833332693 66.8706749940 -1.1920073272 -16 39 34.8214285714 -84546.9166666405 64.9854252044 -1.5420573164 -17 90 62.5000000000 -60058.3333333910 64.8473460264 -1.6107084531 -18 86 46.7391304348 -65792.9166667310 63.8942820479 -1.3543096100 -19 70 87.5000000000 -29605.7499999869 65.0745679455 -1.5990941295 -20 117 89.3129770992 -41680.7500000037 66.2287779052 -1.5229467900 -21 86 71.6666666667 -47557.5000000121 66.4759546671 -1.5673582996 -22 59 53.1531531532 -60402.3333333834 65.8967024273 -1.4600426822 -23 140 85.8895705521 -60829.0000000624 66.7297385992 -1.2202709651 -24 78 97.5000000000 -22534.4166666619 67.9605490552 -1.1214601265 -25 73 38.6243386243 -110503.9999998534 66.8322332694 -1.1597271261 -26 100 100.0000000000 -30430.6666666492 68.0606690743 -0.9686261214 -27 114 79.7202797203 -47854.1666666946 68.4770837402 -0.7592071566 -28 157 84.4086021505 -80125.0833333066 69.0264464440 -0.7701058345 -29 115 77.1812080537 -42055.4166666740 69.2982718310 -0.7668070047 -30 65 46.4285714286 -74360.7500000019 68.5605395599 -0.6959883455 -31 73 45.6250000000 -105455.8333332199 67.8438039487 -0.6547074597 -32 94 79.6610169492 -29424.5833333177 68.2019013123 -0.6862289081 -33 108 78.2608695652 -52800.6666667034 68.4977533198 -0.7299843238 -34 94 57.3170731707 -82580.5833332968 68.1783053155 -0.5523332038 -35 55 28.9473684211 -111816.4999998949 67.0885570685 -0.6100900300 -36 80 100.0000000000 -13770.9166666695 67.9780555261 -0.5936011102 -37 115 69.6969696970 -61363.2500000610 68.0232901095 -0.6098779550 -38 111 57.5129533679 -81642.9999999582 67.7537942956 -0.5410980367 -39 45 37.1900826446 -78943.8333333228 66.9897015043 -0.7548433130 -40 88 72.1311475410 -44856.1666666890 67.1151026272 -0.7564245037 -41 98 59.7560975610 -71466.9166666873 66.9398882209 -0.7238963942 -42 137 90.7284768212 -70315.1666667072 67.4931112116 -0.7070615943 -43 73 60.8333333333 -60773.0833333870 67.3417526234 -0.8803859520 -44 103 85.8333333333 -53733.9166667133 67.7526766392 -0.9534144123 -45 106 67.5159235669 -48753.3333333658 67.7475298333 -0.7942222131 -46 100 100.0000000000 -28320.2499999840 68.4337526028 -0.7773238682 -47 64 44.7552447552 -73679.7500000149 67.9404503560 -0.6882857981 -48 112 60.2150537634 -90551.3333332425 67.7827892010 -0.6413227568 -49 101 77.6923076923 -37641.6666666650 67.9809795708 -0.5977270709 -50 87 46.7741935484 -105831.9999998672 67.5651602371 -0.5754650811 -51 160 97.5609756098 -58274.7500000625 68.1420028404 -0.5292202085 -52 109 68.9873417722 -64424.4166667400 68.1579526315 -0.4356428508 -53 104 79.3893129771 -48585.2500000365 68.3659407861 -0.3710302959 -54 83 66.9354838710 -57931.6666667261 68.3399324785 -0.3202960208 -55 90 57.6923076923 -84169.8333332827 68.1497963216 -0.2573420167 -56 41 51.2500000000 -37359.4166666658 67.8533086669 -0.0554588234 -57 113 63.1284916201 -86557.7499999206 67.7718463040 -0.0448705814 -58 46 46.0000000000 -60018.7500000442 67.4028319599 0.0067373946 -59 49 43.3628318584 -69878.8333333615 67.0021652915 -0.0818704705 -60 80 100.0000000000 -13421.6666666696 67.5431134015 -0.0805283317 -61 50 62.5000000000 -44936.7500000187 67.4617728628 0.0215769640 -62 63 58.8785046729 -31723.6666666487 67.3255305105 -0.0084347160 -63 51 31.8750000000 -120561.6666665172 66.7716159713 0.0014627014 -64 95 95.0000000000 -36285.5833333243 67.2058988025 -0.0447136479 -65 115 63.1868131868 -82509.1666666177 67.1450035659 -0.0440361683 -66 115 65.3409090909 -93240.4999998991 67.1180767827 -0.0942608660 -67 126 100.0000000000 -31547.9166666512 67.6016344771 -0.0812033416 -68 66 64.7058823529 -55811.0833333807 67.5596670550 -0.0658178996 -69 107 77.5362318841 -70951.0833333741 67.7021894097 -0.0338217432 -70 88 75.2136752137 -31255.4999999870 67.8079849844 -0.0694595013 +0 102 75.5555555556 -51384.6666667085 75.5555555556 -3.7037037037 +1 101 72.1428571429 -44279.0833333557 73.8492063492 -0.7804232804 +2 62 51.2396694215 -45595.1666666892 66.3126940400 0.8571282814 +3 80 100.0000000000 -12318.5833333360 74.7345205300 0.6428462110 +4 97 62.5806451613 -94641.2499998699 72.3037454562 0.5142769688 +5 126 96.1832061069 -49405.1666666975 76.2836555647 1.1919229193 +6 139 80.3468208092 -68151.1666667239 76.8641077425 1.4345301323 +7 81 59.5588235294 -49230.0833333614 74.7009472158 1.6228609246 +8 82 68.3333333333 -42990.5833333507 73.9934345622 1.8129134145 +9 61 39.8692810458 -81413.9166666491 70.5810192106 1.3048246874 +10 88 52.3809523810 -89825.7499999358 68.9264676806 1.2944293695 +11 94 90.3846153846 -18878.1666666677 70.7146466559 1.1865602554 +12 66 60.0000000000 -50541.7500000279 69.8904430670 1.1652164595 +13 126 79.2452830189 -51728.7500000456 70.5586459207 1.3066048615 +14 82 66.6666666667 -62608.2500000501 70.2991806371 1.7073027488 +15 75 39.4736842105 -149457.8333333194 68.3725871105 1.5019121165 +16 52 46.4285714286 -74806.8333333342 67.0817626586 2.0963374542 +17 92 63.8888888889 -59564.4166667197 66.9043807825 2.0570347561 +18 83 45.1086956522 -69024.5000000381 65.7572394598 1.8629574120 +19 71 88.7500000000 -29238.3333333200 66.9068774869 1.8323095414 +20 119 90.8396946565 -42166.5833333397 68.0465354473 1.8177575421 +21 87 72.5000000000 -49046.5000000158 68.2489656543 1.7730109872 +22 58 52.2522522523 -62205.1666667190 67.5534563759 1.6567539486 +23 137 84.0490797546 -60176.1666667275 68.2407740167 1.5110354175 +24 77 96.2500000000 -24370.4166666586 69.3611430560 1.4005940008 +25 74 39.1534391534 -107857.1666665281 68.1993082905 1.3670750211 +26 99 99.0000000000 -29221.1666666502 69.3400746501 1.2794055759 +27 118 82.5174825175 -46693.9166666926 69.8106963597 1.3336126195 +28 161 86.5591397849 -78452.5833333157 70.3882288916 1.3617824476 +29 119 79.8657718121 -40604.8333333353 70.7041469889 1.4058751580 +30 69 49.2857142857 -73988.6666666694 70.0132298050 1.4526902450 +31 73 45.6250000000 -99882.2499998835 69.2510976236 1.4072936749 +32 98 83.0508474576 -30137.6666666502 69.6692718610 1.4673705486 +33 101 73.1884057971 -53247.4166667075 69.7727758003 1.2750224805 +34 95 57.9268292683 -79776.4999999762 69.4343201851 1.2560148695 +35 61 32.1052631579 -109100.9999998965 68.3974019343 1.3088448658 +36 80 100.0000000000 -13493.2500000027 69.2515262064 1.2734706803 +37 120 72.7272727273 -57431.4166667199 69.3429932201 1.3197031105 +38 110 56.9948186528 -83643.8333332821 69.0263733594 1.2725790637 +39 56 46.2809917355 -73298.2500000089 68.4577388188 1.4680373144 +40 91 74.5901639344 -43542.5833333524 68.6073101631 1.4922075359 +41 113 68.9024390244 -66333.2500000611 68.6143370407 1.6744488198 +42 140 92.7152317881 -64370.5833334068 69.1748229651 1.6817117535 +43 85 70.8333333333 -54558.1666667066 69.2125163825 1.8707637591 +44 102 85.0000000000 -53846.9166667108 69.5633493518 1.8106727126 +45 103 65.6050955414 -50596.2500000367 69.4773003559 1.7297705226 +46 99 99.0000000000 -28941.2499999832 70.1054429015 1.6716902988 +47 67 46.8531468531 -71856.8333333540 69.6210200672 1.6805697112 +48 116 62.3655913978 -88261.4166665949 69.4729500944 1.6901608933 +49 96 73.8461538462 -37788.4999999978 69.5604141694 1.5794345986 +50 76 40.8602150538 -103273.2499998744 68.9976651671 1.4325049301 +51 159 96.9512195122 -61544.9166667373 69.5352335199 1.3932306795 +52 116 73.4177215190 -60106.3333333990 69.6084880105 1.4505353789 +53 107 81.6793893130 -45915.8333333617 69.8320232198 1.4660824337 diff --git a/tmp-scores.txt b/tmp-scores.txt index 8c327ce..0e4c8a2 100644 --- a/tmp-scores.txt +++ b/tmp-scores.txt @@ -1,23 +1,2 @@ -0 102 75.5555555556 -51384.6666667085 75.5555555556 -3.7037037037 -1 101 72.1428571429 -44279.0833333557 73.8492063492 -0.7804232804 -2 62 51.2396694215 -45595.1666666892 66.3126940400 0.8571282814 -3 80 100.0000000000 -12318.5833333360 74.7345205300 0.6428462110 -4 97 62.5806451613 -94641.2499998699 72.3037454562 0.5142769688 -5 126 96.1832061069 -49405.1666666975 76.2836555647 1.1919229193 -6 139 80.3468208092 -68151.1666667239 76.8641077425 1.4345301323 -7 81 59.5588235294 -49230.0833333614 74.7009472158 1.6228609246 -8 82 68.3333333333 -42990.5833333507 73.9934345622 1.8129134145 -9 61 39.8692810458 -81413.9166666491 70.5810192106 1.3048246874 -10 88 52.3809523810 -89825.7499999358 68.9264676806 1.2944293695 -11 94 90.3846153846 -18878.1666666677 70.7146466559 1.1865602554 -12 66 60.0000000000 -50541.7500000279 69.8904430670 1.1652164595 -13 126 79.2452830189 -51728.7500000456 70.5586459207 1.3066048615 -14 82 66.6666666667 -62608.2500000501 70.2991806371 1.7073027488 -15 75 39.4736842105 -149457.8333333194 68.3725871105 1.5019121165 -16 52 46.4285714286 -74806.8333333342 67.0817626586 2.0963374542 -17 92 63.8888888889 -59564.4166667197 66.9043807825 2.0570347561 -18 83 45.1086956522 -69024.5000000381 65.7572394598 1.8629574120 -19 71 88.7500000000 -29238.3333333200 66.9068774869 1.8323095414 -20 119 90.8396946565 -42166.5833333397 68.0465354473 1.8177575421 -21 87 72.5000000000 -49046.5000000158 68.2489656543 1.7730109872 -22 58 52.2522522523 -62205.1666667190 67.5534563759 1.6567539486 +0 105 77.7777777778 -54551.6666667190 3 2.2222222222 2.2222222222 +1 106 75.7142857143 -42933.5833333511 5 3.5714285714 2.8968253968 -- GitLab