From 6f4aa0b22e60bc001a924d3cc6b8b7dc4a20558e Mon Sep 17 00:00:00 2001 From: y20k Date: Sat, 4 May 2019 17:10:32 +0200 Subject: [PATCH] Icon now has a red background (#54), Trackbook does not need the permission EXTERNAL STORAGE anymore, Night mode has now a dark map --- README.md | 3 - app/src/main/AndroidManifest.xml | 1 - app/src/main/ic_launcher-web.png | Bin 38668 -> 40200 bytes .../java/org/y20k/trackbook/MainActivity.java | 38 ++++--- .../trackbook/MainActivityMapFragment.java | 21 ++-- .../trackbook/MainActivityTrackFragment.java | 29 +++-- .../trackbook/helpers/NightModeHelper.java | 11 +- app/src/main/res/layout/main_onboarding.xml | 17 --- .../res/mipmap-anydpi-v26/ic_launcher.xml | 2 +- .../mipmap-anydpi-v26/ic_launcher_round.xml | 2 +- app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 2880 -> 3012 bytes .../mipmap-hdpi/ic_launcher_background.png | Bin 0 -> 522 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 5198 -> 5509 bytes app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 1809 -> 1926 bytes .../mipmap-mdpi/ic_launcher_background.png | Bin 0 -> 298 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 3089 -> 3264 bytes app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 4161 -> 4448 bytes .../mipmap-xhdpi/ic_launcher_background.png | Bin 0 -> 750 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 7424 -> 7873 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 6894 -> 7289 bytes .../mipmap-xxhdpi/ic_launcher_background.png | Bin 0 -> 1318 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 12192 -> 12709 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 9910 -> 10555 bytes .../mipmap-xxxhdpi/ic_launcher_background.png | Bin 0 -> 1910 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 18064 -> 18611 bytes app/src/main/res/values-de/strings.xml | 2 +- app/src/main/res/values/strings.xml | 2 +- assets/README.md | 4 +- .../trackbook-app-icon-current-background.png | Bin 0 -> 12303 bytes ...trackbook-app-icon-current-foreground.png} | Bin assets/trackbook-app-icon-current.png | Bin 123916 -> 18611 bytes assets/trackbook-app-icon-current.svg | 104 +++++++++--------- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 4 +- metadata/en-US/full_description.txt | 5 +- 35 files changed, 123 insertions(+), 124 deletions(-) create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_background.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_background.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_background.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png create mode 100644 assets/trackbook-app-icon-current-background.png rename assets/{trackbook-app-icon-current-without-background.png => trackbook-app-icon-current-foreground.png} (100%) diff --git a/README.md b/README.md index 35e2c4b..fc27dbb 100644 --- a/README.md +++ b/README.md @@ -61,9 +61,6 @@ Trackbook needs accurate GPS location data to be able to record your movements. ### Permission "VIBRATE" Tapping and holding some controls will toggle a tiny vibration (force feedback). -### Permission "WRITE\_EXTERNAL\_STORAGE" -Trackbook uses [osmdroid](https://github.com/osmdroid/osmdroid), which caches map tiles on Android's external storage. You can find the map cache in the `osmdroid` folder on the top level of the user-facing file system. - Screenshots (v1.1) ------------------ [](https://raw.githubusercontent.com/y20k/trackbook/master/fastlane/metadata/en-US/phoneScreenshots/p1.png) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 8db4466..6ec0841 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -15,7 +15,6 @@ - hFC&{GaFkKiyAvf0#4RIeYEZYp=D>I#I@kT6EN$)BpfF9c>L00HDOb zP(VpeylnXP?E!!SIvQ$bzJrU66wl12QdX84&uwSadCu(LUT$>kNmKCbToZkikS<(6 z9(9{V@DcW>AXRAeO?p@;KTLt5{k5sNkL67HPxF3-9?~E>p-QK4E zh>gZ_F^e$1=s)oC5__CH3;@!TdaP%B5QUHG7QX9EUWX?e%3)0Nv_U``zX z%IMP^g)CjJ!4U$9eCgRcN@L2GBgkvr$B0{0QAx2hx<+RBOk+Flea^l0B+n@ zn1423UCv%!<7eB>H#fY+MaHpvPa}&>+aPKu(3c=!YJ^YJ!|c8itb3_^TZ&=#+Zg|E zzQ7wxfj$LR-YWvXjuDHB?$o_)9m$H@Wh8w2F;(8`DzqlxcZ^t{LzI~?W~DT?`;mK< zysGPCm&b$M5&q0AJ|a)m(v0KH>t2W4b&6w$Pf{4-*oMq;%>k@Ts-yt^0yQW?xth~J zMv5KT9!doe`Q4X&3=jYl)it-2fMZEI-fq`Q0LT(-SFUCz)|3c?LeG*z%AqV#18TuD zO6`4fa?Aj7C4J{w@epr2Zzuqa*P$j;#k{cfrm>z+`@us7Ip^Y3UJCB6>`X}$%FkFH z#<3j9x|)}99HCb~B4h z+Zm-f{Yb)ay8;O#qfomlVYK09+yNgY0BYW9C<`*}rkMe+S09k{q@)@u;9y&1|?UGB*}p#`zIRrnhzD__m=^whC42`fUv*J`4G#XMpR(2-Z0b-tVR!nH?C*d zFK=)u`VKU!7EPT1aMBcfqV+nIr?bvc6UJbe|EzkH)h^;L6?&#nzrm%w-=(a#nT zUm3;>NFCiPf)63vGtz{NNS^Lk4)Us!;sK6b{!pC}fY9_oa`$2v6f<|QX2rogdvhNI z9DvKxhv!~9csH$6W#W%zVc(m!y*zWBe~KcAvTzBzm=e|d#ppRl5>#ryqM<=_%NQ`DQ;xJC2$==u6jsN z-Cx=3U->KcS|UL{hujWh+g6GXwku|n2|F|8nO4SRGOyN*gsPg)jCjs`AWD`fu$uKcMAPfHx-}!w?N}4F9<8=T=4wA6E zdtqs3qT#;f zg9M3$!>+%iFL6NpU~!rd6k&4s#q_i0@88H!C%fTONZ~3113CPNJ!8*dQakYT{)}{# z=i~HS-Q+SH;2`FD`fk8;Bxdedqb^aU-V2E@YoUz>g_)Qto~VV8t&?j}Hp z_IP9-Cjp)z5PWXLZ*Sj?ohCp5?8rC1(E$mLAL*d41E6H#TqGFPLaA@a|3#yw4>JIEXbIF`p6)?`ED5K}e{k=? z>NatWW2q1sAdX}90C-dbMIp)l2O}%-5ejw`ON_t{8NkScRXH`VO7jP_Fc|=vkU!iK zCmoF=tw&pc9iqtp&`3(WasYro@#h)z=>D;IU`KyKiN8eE9Ni%*=!leKY{XUm55)by z+(iAy1#z7}%l+ToI$HNH|3`oSQS!fTUR*r(`{Soa93F9Tta+kQ{NanJjz6+KzVnBR zBfkC*H;FTj?3s9h{G0cGcZ;|f>UK&a&#(Euk?8te2L^$|F$p(M%a`_U;j3>*Kvi`I zr}3S{z7XA82jVouhhLD=toXzJZNCXe3L-G9CDLF}#k_u!E6ZVqFo(=b3ks0@-WT!}GQ-4yX76sb5v8D1t_E^Mlmeq2OydL9+x zalA&iZ36OELhz1#h2R=}bp2R5Zo%Jb=};EXw4mIr+|iNf2h^0`Nr6MHfAq}Q*s@sD ziT05kjFK+vHe>VrC*%*(ZiMZlWZK+Ae8g%qs<}LO zwDG0(VsZVzbJsm2^Kwx5ZV)3&9~nsud1$$lhz2uAs&@F*)KnSx%wC#cWzhF2J(S5m zzE3%LvrxSrX)40v#Cwhd$_YYn{?|#4SO+lvMC6CY!&i9+GCJ3C`qn?LtYa&Jr#|;p zV31=i1>@UgaCK$Yuw`z}{_EXM7T*HgmC8s1Sl)+xhm2b!1YSG0HN7A)M3FSbCEp$? zyzx|pRd?jKr87y-p%q~t*SxX{XUzBRHr9mcUpU4GG)!<6Gkq%yD{{|vHmMLgdvyo< z9GZ0_VcrZ=vq=)Hdn;A71EX3p9N};^W%zgn$MDG8XtjacPJEOSBoSRlcJ_IHgMvHh%p6i za_zeA5rK@)fw2#6K%^<|<5*dk^xVvyC`;j6HkB#u4T%XK170a!u`vDQHugIkwf+2E zmm!2Vk`<7RY%Ybki-l-Ag*&VwqmoTe+53+e7J26E;fFGx=K z&>}utCYDQ2+-p}6yfG%hRBvpQqPoleNOirafZsB%N_7CAg$q9K`&MrJx9`KMc{pa~ zlv$%_Q7f-8?@|0Cj<8hxhwOu}M5J-in9utyA*&IpoWv@rC`a89y|l@R56!n{S-CE& z5iU2`loFQS^51k`#& zOW(VF&h~eC--SFQ-hAf@C7XLf{%)lRNR(~r@JM}bx!~45%VvGo_E@J~RI}&o$L0Y- zqXZnky=2h>1El^=F!Var2BkAi(vLOe3b)(GFPrwgIT78j7ql<4iViF_R1q^qo72ua34L^G3PaaC>~ciQ@sLB+Mru#- zw<7G^ZUE7SPbxuv5*u@R=|x5eOQdbe;KJ$Ndm_7rd<8y^&q!AoEBBcK9oNQ+{Us{N z+RIaSeCWkCm!|gLSyGU5((Xu*Q0LC7p2`lw<2T9=Xyh5#$|&%nn#<60GPD z!Z+KCQSFSz304UCYx1XUn=sXzzhf)KZBGu2s?GN%mmc0~Q!Es@_IoeRTU)hqR5i|7 zeJ{b=U3$%DWU4vQZK&jNU=B6hNoKr)$-M+sa-u039t(?we^tIg7n&DS`p?iv;6d%G zs^fdv{__l?>m@qPTE;yyq@#}$ec5%F*wu>|Xa&|w=j?3{FQ$$8Wqjot6EE;o->QJBB!-IekraUQ$U^I}Uu54M7ybVr9!Q_w;nE)UVV zA=J{rqO;hN+gMU{wXBE_Ft-qLvJtLO=v4DUmVcq&nL#_!N?Te`o4A-U<=Ut+5w3%y z<6QUBK`eN(&z1k^|5Xr6r~K=lP=MwhK2T&zqeA##ys}X}6&n;~tGA^_rP9n$Qeu{E zCfD(JL2vhEMBL_UinhHz`AXF{sLYCTzM0Q-*ukbO>IW;r13x6Of$QFt(wSO6v@V0SyZubx9Qg}VqQyXs7l{Srtxj7*_kdrqmJJWS*98=>x zmxi!d4dj7*U7~4QVzM4jM&i3{ejHnBVr_2dyN7w$`)}KCwet^zkk}*YAK{jHMaLYo z_wM7STFr||9#k8QmymDJ;wUy|v2Ii!!?#JRe2())el~Dvd50qTaI+oZIl1uVP}hUb z@PL2Lb8=-QMqiyGZZ7$Py`m6P^EHD#x~K_El3~96xil%kgt?DmXSwC|^IeA854NoA znHVnghKsZbqEM<4yp;7Fv1M(DGnC<>ow)U6>bpWaD7d5IS6V1^>{~c2w#8+aroNwn z%%HCP=PWms0Th+OmED`G67(z_L0HY~o{;z6o=eW1@fnG%U%K!+D`kgUIV_=Z#cWJS z@YjsqohVzK&wfD-yG+4PwRh?=S4C8HYGy3rZmmaR6(2kqW@m19X@|x3tBpb{w6{KC zCB<3WZ4Gud+pR7we|4^GZbARWDb1QVdL4W#02hW@W0wd zL{1n97oo5#s+(4qn2?TVO9~FLDkF2&1Y0lnS-U~G2ees(l@CpNIMa4A#39tT%SD}k z>55603->P0*{7d>s(*`zzqgIgo@Y4YD~W$X9fD!4&U@Wl$RsR~+`8_SQ(1WS9$RRq z6(d%*+)c=<^i6X2O}H_Gpl|(H$8`Owo@;tf!2qIGg4%dT zCFpsRGjD$23jM8)_3ioU${@R((dTm5&A!dK3+px&QV?Z-!;P~oTNa;0c8Q@PI>3S=!J8@FN1vUCO29a`^%tm;ASftp)A-akt{ro9CRv8Y}h_8!k z9I}tThLLhm8lTzzK@yS=N2>YDBSWawf{|(kK(wt74ZG~7NL$S2H9#jz{VeIHnxkT0 zHB&v=9u1D`XOx`_B_*d)ExfIFY5B9r;j=x8*`)A=-d57h*#((tu^yoSn~G66`2wxN z1(m)e_R(iE-C6To^S%3q8;uQnhJBg(>wBLbX^chUE`Po3fv0x*L$ZDOUuju?d`9iWNM9U3%c1d zHTVpS@~!11_?1^8a8(&m>xWu$Tz^cfiWT%Z9?%%#@A4{*V|f==wk4)jgzkGx8l7n0 z_=>XKXd!udr`^=lY459F74Bi`+|MGmg-^rJ z0xoIs`!MiC4Yv@z6vxrmaQ{06CHEy^<%kkN-yK0-)8^eyf+IKA_m?w>-E6-dTw{e7 zuX9IYyUK=2V}qk{<;qD{;Cz0{ zC`+Tp;c+{D`W|+;KFwMy)>zGhy6#+M5>r!cZa-77HY@sV=GT}p`2a5N4GjK8wSM4pn{+K{oK-pQeYn8?f17 zMne%uX%!F^u1yF3wxv0zpS&kKrrY_d$k6IdR90nM7 zqHU9u{2ys=8O1N{CS!N(1QZxf!3O5eVPy*vi>-!8(U!?Uq_L{93-;lh9KNS>+%Y2=H zBsu$Kh;puj?jcQ7lEH`8|80l%2hVf9U5qb=i^DZ`o{&!D*`EK@b>7F$=-T@( zZk1;qyxcl|Mo*s~)SYYlJh1d&866rfh{F!G{oaVv;>2~(CS$owqIU>^zdHJx2Ifz% z)gR7=T(Lia2(V~guH?id)8R*d)-iPtjnPwXlI-xITDlm3&w#?IKgTRpxH(n(c|_cr z5n|7Bc~_$SbLzo`4>|rgqZ2yPMMU{Aw9@7JO$t6&Hohud>X*f2(!);;I7?4uHfZOQ zP_$RwN%SbW(ax`%CWRS~(rP>JFPgT@t39n2WF|Vx*?n1?j)rXFfNXp3fGmYa4G-mI zT+aB&8&vkg7sd*nP^`DORP*2$6b5`mNCOz$(QJ)vQ!x)L0!dHeui^Jc>gdF=K zniYci-rdbRGB+kSt7W;jErR?s=Vp?H&phbbj?Js(4NA)IdbSYoOh4m7&S*p$zHvKg>iRxDSMz^*C0du;MOg9-*T63bupDc}` zE~Z;A>p`0-gF}hX0f)Wbv%6~fJd9OQk;<1uc=p7}@9Oc12!ExXmMO`|I>Y@zcz?XV ziYEx!q;>e)edNaQc25XzN!I)dU3vn$eMe$vKv3m&>hgNn{zhi^-s5m20aRP6#+N>x zP7L~Xx3al8-dgLavD(dqgvB~b#8u7wesZkL6n0S z<9aRENxjx;NxaHH4lfK%ZM^M{_BfV~9r2*Z5I+JnA`G78Mb04<%5YH@I{3*A>4d>g zP0F)q`3t8r&MS;>bTOoC%elq60?L#hD&uuzwB#a&S2~uJlio{)TOyt(Iq0>W-xSmJ zb0W>7UDgwuR4dt`IWV?cX1%!9t=cDQz!i3it4czRf)w&NF;qYD+I&}EtxQq&x9B>x zN!2$CvOoIketsUvv8?Ixo3A&ju&G{PRTMHhGc~urkwvn%Ash5!r7R<^U~|slh2`Fc zg8JT-_&_PQpsk=4Pp+V-TY&CP#vw-*hf5T3OKM36;+{h#hW)V(#&)cNv z3vch1@84lQH2L@;#fZSZzZq9R`1Vq(JG1B<36J1`-LH2+KKoEq#5hbL*`!lMlq6ni1$Q49OJMkdFH5bhTE7U9-&L$@-`q%%{bH#^9F z@KuPubj9-|M>f-rs`jM!AD%?CiuKY{6x*R|PJC@K?w08DdS*Lt`O{BKamc76oWEr?W35%)9duB?4(=_ z4dG|F$pdKLlY|B{-E?&}zPZ9$-y-!&m3Q!EEqU^adP3u(63uJooJ3`=_0O@--=&$h z*WV>mQ1Q*ljEpr7k>yNv9RF=L<_s_uzvZ$y^c+7CtZsWN6?mM338PuZ3-8Io0r2`$ zokx(M+==0FJqH5k+IdO0KUek^udpl9)`K)sR6?_JM{{YHv?`yp1Ein|Fs^Q&5lYsl z60=tfdTO$@{F0@d?cD}{-s$Tw%sA1T?a!xiP?K-wvt%R2OW3@=@6tfG1+-df1$sqRyVxu)83=ZXx~uBrV~%hC)_@-pA5Bz<^%mxo)^ zuUEtrj}x*FSoih_tTNA>H%d?%;b(4)bQ}-3U+ks>#s}8Y@Bf~|cB>`5x00vWN-{^$ zuBFe2gIe3Fk`NDBc*Xt!GxP%-z9V}ay?~SQ!;|>mKKKRM!(Br{bd>(dotKiEYdQG3 zjV^VhA;Y2pMFegBOim^MPG2%8ttI7yYz-Cke>K^xu|4Xo)X7XY{T#!`oIxK+&tlvi zrXS?hA8KoJXdZ@ckKFqay0x!=*y#7op`zh>Y60Tff|ct_9ff|+3YD3O_#~w@s*a3v zVa_Ev0{i(4EEK_)63$9?Ex#{nqJxZUuKBA36YPGGkBh_8I~g#lt$}Nv)loSOgv*#9 zJ{J_f4HwK;l#%PWWC18X0MFR2kRU7=66OZQ5#Kf|I0-u&NRx}OEe0~cQGVUdg5qSB z9;|nbm=iW;nEa?neVkyzCT%=O$v`do$kdfTcf+)pjEO!Fg>K7D)Eu!8k^6B+_@ZRp z_QLZ1g$&0p4D&j_?jPD$c4a6$EbWpK8nT)+>k61x#XqCgFT!?KN82Odwm$nF<6J!8 zvl05%cI%b*<0^P@)J__%4B$_m8@|>rjuJpqck9@a&^0mr$u(%9pye?V%7%ZnEB(U_ z|GO7if06HQ0rJyMYa`*@sdLRw%~?(jXM=e8&&yEm4PozfHY z!};n4`;rR9K6;6Li)W(Vaa^{P)BQamb6Ec+_?6KxFHcWwr54@uMJ+AUa$nV5iPXfP z-vQW*fmfCL9TQupaTTvLsm8j&tLyKwW9c8iq=7OfQtX$2lamB0{O-ApYx@s2%^~N{ zp=%w-U!W(StzIU&3UPD~0>*c{6%934q~0EkiMjXY`0p7lGpkbt-AW#9_Jw6K6%cNP z?SJQ4LtiBWk9IOBh5eW(PUWo{hSPD0?$*tSiUmsv8Dwch-Qsx>ej}{?q8D(WgtrAA zsC8tkqXo>6Rswg*vL?O((k5 zE&P&XQHuOm&yoE2PEI+>_@8tKvCXHvC2UfHS7UGE7kUl6@ic&=TQ3`5chDsVe3w>= z*O(#TiXStdrmM03s1GVZ^&sx_O0&^c(0-fW^l8@IYi%yxaTIy`g`_BTfruW3wLQae z+3({jNs5K+c_l8W#o*|Z#x;<>7C2cY^*Dlw__Aq=_}>6sTj%m$LHV+U64Y@{hSH{?@KBC zS~4NI9Vsk}+FVkjsxLu`d?J~6<|}iGjo}gZq}p1kubn>e@~QwQX|Q$cBJ;ieEC+Av(@$)doVq_dEBQ#&Lw!$rg8~ zHrSvP4+}tTk%2l{c4Cp=PLhbw5IRi2-7PLG&l@ZmnA>wi7~l0L|CU}WdKxTpU3g+h z&#ga0ibb#h*bso?dnrUgoMZ{O$oX@OT-2DI^dSet8yE`*GaOTM{UkUA0qB!JiS#KU zW|IV-UXQbc!V%=CY$jm8t7-^Ag-t?UyI|cRzz6~cS%JKR1m=?~QqWSpq_8wvT-xUO zy#dviTyo9%E5QVk!;Mzeo*ev!Nac{t`2hSRBe;5DO>9u21mHfl1=J0I4iE)xG45*QaKA$%s{;W#RP=rhWV{fdNT5K4Q{jmP z0E67%RVlsP0U%divNS`a6dbrU?LNh?M)J-XA@S!9r)F~IW(a%Id(zLF52mE;*%{es zL9ZG3dCp&+yIJ*VCnXqPKv9E@=jXl8yIUYx!Ja4=R0wRCSduOPIFj|xsT=X_va=#+ zqXVe@Kvt9)FW7M;N3YXRpH^1uInKzIK_>Kv|r z!Rz;zirH3PWP(nUNi*7{62AC zWl13cgOcFYsbzjRT%!2xyXcN$sVfFc=JgK_J@@7p+~y*A@vuaH^{D3WU=>5Dm=DF& z@fDvi9-*_l!HcRt^$3C~ZlE$I@*d3sW@i!PeDV_zmZld=GJHEtSbo>@7lI6#k(+JV_p60jt0C*m!EZle3+p@X!b zv<0A-K^yHeQ1}&$a{($GIowTA2!gK21isptw7w_0Z?BJ+eY3>RhQM^}Mv-_z;)B@=KqDlXR+STM*bMA|D@q1Fe$@g-4 z*b%{+V?l&~xu0&!;bUHaLx>%k#gRWu8pjIO22(8|6lcLlaeV62otTeH!BlGwfsYKT@e`+l$Ra16i@EuJ$b3~JFPT-!x$iY0<-XQ}L zts0$(UrO1`paa5Uz}<`t^+uh73UI)6!VZDm6)R9j2gN9x9T5z`6EfgOG#+W9hj}Fj zj9&oqFQEVdx%dK#;aNldJk7%*1AzkQAsD7c@xtDwb`5N(G_MH-tuOg(^co?ZQ*49v z0On1iaPLzJt={+(>T|iJz{wJ_Z_==p9D>p!$4 z1m^;ILPv^{cOb{OLICekYsC$FAHSh8UbL|`Vz7B_Y5?b|lDah{J`qU*te)whIDs?L zorRm{j0QJ33ppS!WJNWNkO40m8qjnHb%X$5o&j_Wq?2f_W_4sTmutynPJxf#^C>PL zFK-1|x}$=+Jzi2i)q`i>*pwUV;nnCNcyeXq!an7+<`53p_tpw>u!|^rQ%+*UmZ1d~ zg@BzPH|Gfv2>c{@u0BbU6@)_E3Q}E-@dx82DA!}GjD8?)f&?YS2iz^<2t_T2#M3bm z36Nn-)L7s1zyLL~eTe+rIy_r1wc@)YB2dg`KhxUkeKk@^C&!WOV4{_GZo#cNu_>%r z&k`&1oJ7koyp&{%1S1Lo>IXo^9tD5{r(L=tT{i>JrNI!JiHPF`0J&7eUZ}kt2uc}D zw!ET{B=$n6GmeWsO1A*pIEDMT%gW!XyL{GT%mytx_Eq&v`H-#$3b>h$oO8(KL2)~L z+M;UUJ6kZ$hKah-0=ne@@Gu9j{)D$#2rzYXU_g_|AEyA#+M za{!JAHev)=D+2=ikgDL|vid74`(p&PlMVL@d+-SRsfm4FJRC9nR;LmUk8ldphfcA*0zXKh0wxbDk$(uUo^wNNBJlAFu(fK}MM3|ah z8}1@g3IZQ2Aqa~R?;Ox8Q)7QmpN~MRIl;~$aJfZ|P4uXfKZB_Eh*3E_h%gx>e7{;A zgtrdf`^}pdvZ5!ogv6aR|MBWxbN#jEzgYW{!5 zln3qAc`Xgd#T@~`>yH$Ien0`JNm=@asEzdlQ;EK;Z}V#XrGDkb<*k{V7|%h1nqZLZ zs!h-Gbcy9AHJ#%2KWqRPXFyRzBOB)DOP=4`t**@JqDp3Niud28<+*+*rxkkc8Ao2} z5lgTm7}1*mHnz;)@I_BEkF}>7`8yxk@-#kTZMDC}t$E+paJ&K6USM{`^IDA{zxQim z)7#&Hwx9sN_N7s@pEE6sBHsyV6*b(glezF~X}EQF)!etbFN z?0CPicLL+NZl3k+R@S=a7plFM21Pb@*%95Ta&A4Ah#*Y_^6)~?{!%S*13xT^A+}`o z5TaazS?jF}ir#Gfr$V9^V4T}um=!sT;e%|5{dwc|U3oznU(}_H_>z;%d!{5T=hnNL z(HZsOyoT0fPBCIZgR;s^8C{YTQcIriXBHmDTMz!D2`(XgQ1!&Q(tgUsB0IU1K2_V_ z)`OkxN=U7?FuY($oj#t{r4w2i{qb3ARL?v*Gf>H4`ns5a2;yB(b|CLuTIng>uC@~^ zmfB=dX1wwo%zzjY-FY2DQloV{3SSgQlv_7mMm#bNwrOvYI$Zt0AlXCRoxk$>7GZi| ztnHqE=Eg5yjwLGIf06~?V1}RZ;RrYxe>;0>$`wBcA@hO0?!3Y4#f^c#MDWTb(>+4F z+vffKX4lLm6YP@%Gb*EX#U(2kMW#GWz9u`y_BcGWNJe2RnyGmWCMjADv=H$Bg>Dwq#i(*D5*hLjoTkSdcPlwHrW}XO& z$0&+&+1v;-u8oeQWa_fi6|vJNcpK91R#@kCsqAMq9pJwB>+RP`otiHCva71h&=f4bU;qJ%L);DUQy@i!B zkD3o$D$y{zn@q{d@5M@4U{$1orSWwScswOW*el5CiQ%gC>2Q0}w7=YNxf;5YM6|GM z%=V{m6@^>#-ea=Lf&u@jEL>q^KVavif?txOx9C7`^kav!SdI3A6}=NFs~I#LPzlD= z*}ct$Z~h(4=BlXRx~H;^%_%dBmJ><;91-QOyJy`w%z1SY{ab|`NC1A%=qI~E0wCmfcXBHb&rMhyt!mgGX*%G z^Y#-a;=Pf|q5iC=f*4~#;1R7yFy|MqcYRH!%Gn>h{$7h;P8O_Yf^6zGOUf@L#qBm% zFFk0wB<3Yi62^A~Kpakv0Ao2hJbLL@s}@dH3Iyh5Zz#+S*fxo4ku=aecIfHyVIj3v zz-B?TM~~(oB_xG%y8+aXvEB-TuD76=RK#dfB4n5I#+5q?br&^p{(OjYr2!r2$C=qT z1>KKej_3+E!jDce%~@;p$dZHAZxG^MasM}YkjJ5^U-GNM+{{yx8VKZjhBwOHSKv}^ zQ9CD71>%pieRO&O&oE2X%6@TEonv3B-!^}q)4|Co#y_jP5duVlRHi&tbF@g@0UXU$)@$48oaO; zR4ACblj%|%werAde^U)b6MTf7C{(8$fc{o6qoz`J<>tWWIoyu5O5^&SY~~Xp>nXM? zB?gjxxlbfI*}Lt`(Jj+)tQ6(vwVfE@ACn^{6VCe4^;o(TmL^#8`=z3I`K8F<8a88k zyF!o7BE*Gh&6DbC5x zu=pJptaUyvI4s3*@7ozt9V_!pKD!V(ire>-`NpJbsc{~#485ZBt35DVo{ug`{MD0~ zZVW=sNC%szUTs<4U2RnUc%@b7&ZK8_ZM)m&9(>szvG_T{2q%{1C%|euqW;hdy;vc5 zc-PNk`r|Wc!*uHxGcA{j$c^@DYnEiJLZP+7zISi_+|p<=aM5Gw2oAR85)Rrqvbu=`8kXy@ zF<72m0920%Kmnj32JB@MhjK<%EE@D|Th&csiH-fLs1J0<6OJZTodF+vM-MYZ`xCUM zy&_OghSFCDPB|c()VmIYl6GG*1L(ogN`HnE7kGBTO(oCzsy-{(o3?w%D4fTGM4{iM z0P2~DLS@a34!xUib^GEo?uRiHPe7WHpe8BYKm3>KxKM#2sx`BPpiC)tmCLE`eiy#8 z0+B2`>|cCn6LojEjI+fc-Z}y;BioZ z15N?F>*;=9;UbyUd{l@slw9gjqJO&ciPh?hwrEd@DP%BLwted@kNATj5%7u^wM};H z(??Rk7z4)ARw3FX_OC(}hYlU>qecpK?Pk|40`=N+3U<~ms0tFcXuz}om_7jk^&RjD z=1K$OiED-z92yF1ge?WPiZ6>Go6f`$zxe^(2SDnN(Gb^%K>XkE^X~OT4Vy( zNWgnKs`pKQ)JObsK^}B3=s=*4XFWbWfIzQ7NyU?>ko^}t)U$qtYS4kg02R2}4Y7aI z0Y5XSipFR_pn7DK&djhlb%&`uk042=3jiIgiemp06Ns}PSp&+ubS%=jCM#M=@yXre zc6^0FB%l_$ST;p59((1g?!)Cv;w-$iqFqwvsaurxqNdp_&iMHU1I;>FalBlI6o|X6Q&%RWVeAD($?~H4R6$N3&8KFG zj`o6^dTgu(xh8XUG-eMrIFeTeHIr9d(8ZRBym@m8htP^Fl^7|bQ%06NLC?ygu)FQ( z;0+zZ=!Q6R1-e zrE8RvS4l!qbn}Zvv2{aA@j&VGbk;A)q^b^QZTu$B)bF*0d2NQopKV7x=F-TaU1X2L zF7!_6FxwNqA^A5XXBpmNgAzKZC#RZ1%=E;Ii62N{EKqS)nV(BELz_=0>`#fb_9UN) z6>YZ>Y`S-!-*BVAJsJf=@NgczBqR`N zYM%4cq6pe|+E(!JKgx(7{q(b`81`qkn_;i&{Q4Dn-{I8=6t1Em=bD=^pJaB-1?GzXotTsD)-Vh3ZXzZd_10~hG4wzKi7U`#KB3ldbnSUwFlM({p88HLdq&G&?Yp%&&iG2XtI`TqO5&1oDLsWpB`R1ICr4swfbJTd@1?+}rtK~PF=x*jz2Id02IA7xm;0rS=g@cv zFqSgwE!Zsq10U~25OWo_KWDK-PU|6dU!E!_Wflu{)9O|~BWfcA=lOt|!`Ie=e5cPw zVuEd?~tr8~aaHn4N1-5EluK|Hm!Pn`M1Y9@`G z?tThj#+k;FCuc}$7vl<+Of27dO-q!8o*_R=^)!!Z=3G)vLrjlkl)Y=Ka7!Tx&|~vU zIsLq{sqqqkuaj8cF$5eJGR13L^DY_vs|u?Spj+bG&HN`{O)JkD+XaN_TI&hYzEbGo z=trF~n@YRHv(HHs&7f-}r6w=1kMmIr{E4kFhZJXgXK*(c?8jv_6m~!M#{3iMRaWiV zHtgMYZS=d$5o~3XUMaULqvXz)b#@ zeU4ifBuM|a0_U}p1)!$CKE{oT%^RlmvLFX@s8iISLTX(v651M(*R<&(kl+VQ%SM%x-6ata;u6g8yy{b z4O>~BtPw+_x^W8l-oN5)Ex^x^P_LH%~#rI{RO<2f+QFNjbBJ75ZnLb@uxh z01dQ46Sw85nP9;ow(s()ut9)%fIH6`!!<-Kvn?=rL#rg#**k*Cf_YVbxPQqAB^gkq zT-AqIjSByYmFviDx!WbEuqrC;Xw+xG{6rD#?8vjm_?3PK?pFKIz3u!#vBaXENyjPe zkt|TtcWLZzbH9WREtpMZ-+VR%OX`tN7U_7^3^*^BKv6TwSab|QCKb6=PPLvwvCc;ENd`EZ}5r$V~yqcWe-Gq zr%C$EsTd1_Mh|=>U4adkA~CQF`V-@>*_)eWtPa@!7DWreQHPLBcRicOMW2;gV0hG; z+2U2Tx?chPHE?o(0UnE^>OvnPf8;D`zK~uR$mrPHe%=#uSm@Oa>Mj;~Ih`_(@Zb!4wx$xbHrn*WE~N$fR5 zT44RW!unY9=Zo13ZsGUB-cc4|_Jkd7^9Z~V;s)J6z^fpNl9`Rk+QS zr^(b=JnF;i|CC95zk#norB%M6PaJ4UFIF}>nJX!it(*0@ExR_VhZs^p_w4~-l${^S zZkZVHO%Ln8AnD=yQntL1Dw(bx zTv)TC>4AyK-J#BJGk1aXT6@=sp+mW*nU(wx&_KqMYQ^}gA}-lm@MbaO zJ2|NHlNEaIIAvn{fM;szQAKQG!;Yt9i`=|y$QL~xlHsKz@`>j`VE}%yZ0L~5MbH1K zitG}a=FW_mf^wt5{#dlC-Q&y|x1_SLMbq(?%h#^)as{^=6FuE?iRD#8+k{lK=%4r2 zM1y1_Lsd5*&_2>C1}j2e(Jt-M-6wi26jS}Lqu^G;^|T5G-7Y}}D2%>Bdlw}uWJ`Qi zpTsuaxlc$Pp!~O}<*D1IB>!_U6c6|zbWw9fSU*1|>do9sthrZPl@1DXQdh@K2?@5x zJUzGK2JoS3DYP;1zhfR_8K2uk3=@y2oiL{38^&tk|D}iMexkoOQ0Z#g>GgOhI_;sP za&1^(ao=y_0ngAE5x4A_E|L2Ji)`aVP@bWZo(8*Ii7`M>Bzr0&Hgm8lTrqHb`EVLng($Eq4_-$e%PIIBb5Og*{@20O+Z zFtJxnnrUgRLyLnjfEEh|x4QmYKplc=z992ZMf*uXR(nOy{q<2<2*j{5$QFjn7uiu>74>! z2!-FC*6|p!%@glpAwgj{$VfBwL`C*d{#Gy&fFhPz!~q42$^bnO5Y;=y`d(nV%u8j- zxulCpyE@mzwv$KPqdd;^U@-VmH%A@*XMeN{u{%q$lVX+SUnK*^x6Y@@3U;!t;UJFW@;T9$7BtvhwZAMGEKA&Be1(j>CRQodW@F%bAlWMGmb}NQgR)< zFjZ={e9qs_d;iH+!P0miN35Tm zY*pb_<@A3uS=0k4sBaIwXe>IXpm=-KAnHzgSvOl7npp3SvW;Vhe)NMaVY7g2;et)> zN_%T3lMBQMJG>7a>^usT$76{ago@C(>e*^)eNz(UlPqHW8hSEG9F9rZe}0O;ZyGkv zEiuHrTQ|hnXh{TST89jN{vTjAaQ^;1J4c*^*YLYoseGXtc}n*=<#P-2tXIc!b+@0$ zHc84v6pt7sw&D|peY(5lZveR7E+qO0^-(p|En5Z|Re6hgkoWF#tLe6>iT_=RDzXGI zIY&8GC5vvMm7SUja{1J@Yvc!h5b$E`KgOSVc!_UP3gu^9=O90u%NOgo`-Sh)sK{UyzwuP? z^{31=_SUpAR8a83@xQ{J_#W)-1x#5;V}3Q1l-~3v4T2Xt1ocx;Dr$ReG9uaifYJCj zw{+ymsoN{5IqU$vc>v1(bkZD4*y*dx^N)8nZuBtKxz9S!N3n4W=T?z*b|ilwo^=e? zND>8{N~5s;|1kC4@l?O>|F3g69D9$mKcSh!#+yiE3anBdz`VU%du% zp!d=SP9t2Z6;>}P+D+VG`Po-%XN6FAXY1`l^6Ss_M-LrG$Pq&v(X{3Qt|PDKlOHlf zb%#1|&iyxv27ur5?YTz`%io`?FAwz@Ke^N6#0x^Y%~JZm-Cqd#9cgEOiTb`D68{eN%`M3a!A)Kfchg5-TZ$+7C_0M zumMd@h*e9)*Sqha+>~mRWQ*mG{FeS23afV zw_~Y3QJR({NzXpUAd2}+us|SD?EawK*7*EGm?aj^*til<^Q8w)$_w@FyfH`vc2G&x-wUl;M=r3 z*$cSJ7QNeBErm=dlf~io^dz6cu>dqjpDBdsq>wVAnQbia-z4MT zEe{AXh1OS#om^FPL*CR`b&nK&x2xj=lY#oop4wHB63lINd4OjNT3zgzWzqd?;qW65S&Fg z5z5XH)s9-S|0rU4OJKTr@reK#YnR(mE!i03$}aOi7UdtG3o(C0$*-F)q0_VS@+6;m zhg8@t)MT-y`9mKy>wQlE-fYuFa=k^*vuK}cx6UAG>KIv_7$L^o7W2$=o47GG1mp4?O11vpJPnL^SkGdzKbnWI(+WAAg*2ipN69$ z7Z9b_w(lAKg#SR^0V9w*S5Z488er13|5BZiO0;BZY3|Qm|@qN$nv#lg#=I{FnV z+xqQa)I)$vM+@(hy6WH2($ zPacXMY~?{AMBR&OR;F7N&Z7TIlp(_Y;+E?~o;ydi?1EmXcX$8zNRFCx5`gf$KgaL) zzP!Ofg2|8O_0SvMNUG0H|IHwS{hWRL*CL+@wq7qVj+av+c5n>Rb)PH-le3~90aR!|WzaEZ@r$#e44pVCh%>&uP;ITcMpuGiA9yyp#2+^8d%2+zhvib;|Sb zHLM0u$Co=y3L6|a{ZzhrKZ@ow`aegFVidnLkzDtZIvwf!zyn2Md8O~QObF-gIw$Z8 z_MvEQ;$vn=EnGBO6;XQ@bLFXYdrUaB&zJuL)EZIpcIxxut5mZOQBVB+tJF~G0-E}? zi(s2lN__MaU^^VBg(HjapgzAZGb-|tSIGKKSCyM^0Z{$BcW~?fZ2mJbQumH-q%OCy zaYKEF^7GH7%8 zC_Hh~yxTU}XS3dW8i}$?YWR4pS09O;)0JU_OB2_%_x|sdL_8Im;a zmZ%|ahoEh#yKAkMbkaum%^2PC9x;h6o=%rdf-Nwi%UTEC4Q4IIftyxctGbD|>G`Tj z+fV+7$^)O8AVVwvL|;DxXHz~xK!&KNBUaE3@tXWDOX0^w6_>mP;v!R$uUdY$?UaLT zR8l41v}iuxy1#b&dSmW?J<$PQfR&X5ctOJiNZ$dl4gg9cmLdBVsUA*#oPB^1fQze7 zI?#*nbG-jJf3#SGYymB_Uw(rqf`xwPZs>AhwP)?Vt_7!pn=uo7n#B<0&!me3cCwso zmrbGA)!cAmfYK1K`^#(qoP_{d^(ZJH2?wr;0kgkmgS~YDELc+@g#jCvKHUb7F>#qH zO;VncOCFd1&f6;*io$X}4L~YbgGp0`8&}_Z3>CbIUepV7E+hZlBx{N8r?;fq0U@-M zN{eQB{9+Hn21Rp%O^9FkUJQ^i0euv}4Mre=7eMHd0{>=I5vKrF96)G-6PPH0AOJ90 zq4HII%(Z#7S)Ju4JzEKhEGe+^BRueVT)+~D@TOL$FPe0)Tc;}rlrguPp)!Rv8%%y# zKeu$cnAfE>_x0#fY@I>e8~%}Og%R~BPK$Bg3`(-P*W~31ImCA1iJPc zz3}G(j8EN}0Jt3OolS)&UHVZz@plKlMEkRnkx zF%3}21weprxKSV{#14jnp_Q3{jlcg3@dSdn1)x6A01YG%R0$La!(RZ>766LF&EJk6 zK-~NY;pUgf2@+XfxjXT;d>EZVghsUj8Ki!CQO)%nV0y_%ocUaXgtP$OP!~gdyC~ptvu9 zgyAx!rNhk;(9itO|0V%WKvFOn39t$QshZjVYKC(XMY4E5O-Cy8Deb|9yK8!&DMu#X{twg5nx0+iQN18GPnWOIcZ z3_!Fmlep^nry%8Uc^%%b0krac*T(yMIbxP6J&$^9UR#~z9SF9K(i5i$uSZez6*ZE& z69UrSI2F*;Y~-v~Evy6RL2ri+Lq!GgxIS{A4gtxr1po&b;N?*3ZDp|yu!;{ps6_yM zCj_fN1_Z6t z`NBDvXu`vfD1f?Fcfd}jx9E2&+*zQt2%F(lISAX(3sTH%@b zWt!~#S9vs!m5c9A4&FaDa$;S4rR}(Lw&*QLL0fk<9(6}cPK7XE%u{Bm3dFqQ<2{i9 zGU>1(YUmK-yS7)(fE;aMVBZ0#OI5D;dt%sfz>dNl0(a~@h9Il~)ExlmAO}`73rG(^ z-oOw*I*^-7MT8AwqHvko@#P;79@N@nJRP`_C1>?u;4lW}ExmqKF{3fVc(;!XQGNr_ zbs5W>sa&6mNLAi4F$D(^eKHq+^Cr}}K?nOn&8ETBdRLOEPO|$^vY#Hhf}x;)DDS-( z*hDe+*xMM5AJ3%(E`(h?xvxY!p-#bi_u>&1NV*2)1_2}Ye;zxKvxdk)0(Is9Hb@Pi z%?GLQBxqzXzfpd=^niv4G~cF=i5+v>CV1;J0t%p6=5RmfSUKSE&${X-vr9xKo{e8TL}8oPvVu8(q5pD z0=U^(_2FNdF)JMCD63x+N7Di;om^-TFX)MZOmi_n$P~C%0>x_QzZmjb5PAVayHx!d z+#O~9IWgo+q#*_zU(Kp{(3{J7>DCHrq!>yfH`Mt%9!8lK3xUct_DdPwseAqKmhJ5k zW^EWe=FOuh)zUjRh6UCOQGv06kMcg@G%LriOEvF4xIwTbLJuzp4P*~~S-oEmzcEha zX=F{jND2;%DUE~F9Ioa8C@B>{Smv*!0W_G^;-POHAxQuRO4Z?jL+7;iC6zaFsE1f2 zcr=+DC3j(q&rxTf!QyzVT6#$-<$*4SVORRz4{Le@kFEGr^PU8a{7V3|7;1Ip!O&rh zX0_0sf?`T@V$z;I`#aH`6BsK=pP}Xs^D4{n%^K3Yh0|H5+dEH|(O=&3w%7!89ke!+ z#{WFm>}hYYaq3M|FN@{WCe@H-|8n z*`RQlnNj=``asSn^0t~7U&YJ=X6s%RQ86OR5oPt?qO;Qq>}z$HzF>%rRf(%;jB6`k z8{1^M`+=C#@gyNulK<_>`0{9k%0<-!1B~7}cR);BVKMqb21sTHCRk_1cXS7sA>+3J z;gzQt8sOi+60HV739|x=NC50-nR@^^hM;UM;5*&|HM z%112Au-DS){U54YxS(yGADNBieWPpbB10~F>NGcq5C#zC;%Q)31rV$!%_(qau&V`t zgaE)k{3`$gYs9}<9LhO}Aq3F{FN`G`0T3#7%%~WDrt;J#a^LGPpoOg50Kgt5ep%E* zH*krT`1OnDnEUh>JY~5Dcg2BaGRoffDsPKdEc(up(|p3Nlvt9yy*!)npdl=5&-6}R zmSk$Pxcsr^6V2J^?(fOo!3q*K4b{`5BJ99XESnbhBY7}g26mtx{Lz0( zf{hq)241&Hq_a~_o4_c92^>0spQMu_Si3awkN%ajua~Y z=&O^e(Uilt8mA z2(-Udh&%vdbKqv0mrt=?aa(Ua`+rcYatyJci2ffv`~kTOpqxBHh<9OT!PU2 zE~|z-i{a3U7BVP0^1gf^}7qh$VqLWZyiE}26%c`8ioNyY|~=i9;(XEEzy3mtjiu7oz!tk$rv z=x2l6`;mVJ^PJ|{gZ1{53%2WEQ9_5#-2IIxdHqR=AuoBBZOC1Op;oP7*0Qzx1HV>{mghoO_4g zCN?hYXpH=nT*i!$ZvLSLCRm6?y>#D43{|;IP57p_md`D!nl#zia;O^V6Bek@-(J8D z363YKcL}yWFvD@kfQTnm`4$Nv6s-4mrC0<=)Pxs8(VevnC{8%z0LefZiPVF!g$+2aXl?g^l_&ug8_4jFUrD_VWhcx>HQ#X6zUG506km+d^=Wr6CgKMzb zm-d`PMtZyzorK>15i&WH=xg%`rY%pLdaJLQ&G%EtGyj1WML5=?eqr{(!L`#Sdk$-n z?3>R=6dW3)BM&#z^*ov?4EgaV2Zv_|;UQ*VRFg#@)tW972O3nj@vX*q^G^iF!X<*T zC7wnWcz6p9j&A+C5ir(S`9lf>l+&P#fvGp|QFqv}ypurp4LdInM=mr6yaNpGZZgdt z&*InI&}!c3A82p}(lZDI976Ll+iz{P{0y?TN80+KW{f|2wH!GQ zPRJ$ncmoJ3^j|sTxB*xjA;1}l4!BMVB?AU(A-_V8(kh=?1gP_}?WlP;N zLY+~;O*i%ziY8Q^EBjS-C0%Qe;cj>xQ<-x-_85cw>?ZYYwev+8*qhtH$R>Iu9R5 z#a&mk&BVn%us!X;_CHl=CagGog~Y&1HgJ@X&ZThkSs(odS~nqpF}VdA)LQ0$}q z@6B!AYWIV7KRQ)1A*w~eR@L=5Ah=y)f*%nSe*=H_ba|TaZDKW~Q0`ni6Hj_{_=d1_ zYeA`S^(AiyWEK@0#&$$(Q!;M5Ng1&#xOhwNB+8iZLrbzvEF+kckW znh7;Y<>~NJ@si;*+>i&Qe0Ms;Q?^;|0i}w}s!O^;5Vc;0LainD12$UE_jX^KPGr6C zfv;?9&?&7A5!qJ7W)#nQ-+%r#zd9u|KU!tNhn}BLURRAh~4w= z(6$EBNm$gQnM<>^rCM6kY-Z}yrpHuMr>`kzjbx8}gw-Xnjsvt~Tw{q9Y1B^5dMsY? z)!myAo9g@DyWhVvrO0Yd(};}E%5!Tx9BgElAEJ0uV;47WRhWQ zZM{0zU2}b#OEa%o3I-z&aK3i$?jAMz{E}7_PEwsYJEFl~LXZ;piwX#`Q>&OBg5SfF z8F{??EWUMu5Kk6Dgq0_w{j2h?Vf zlj0;0CeQkWb3c~cDlk8Dsl9mHb?JM3PN8THoH+%(_zoeeaGRGx7=A;a*ND#4)KE=> z)|8f*h+em}^x68%iHuChpNx~sLwimiMzaFkeUE;hO&5!n-~3n@G%`V9UN*dWM{juY zEVH@4{%HC1QRr@XC815Z!UxR^X?zbKLpmhTL)jx~So-5G@n!ovH2FR`C$6w-XV7QV z%_?fwkrhe1dx=|H1peWNr0JuVL($|KZDH3doDVp5ex=aw{MxHBt+Crnyk2q8p<8kC zE}MDa9WWHOCIDp8rU@PfoAFN{+rO_Q?Xx|xxNCZdl^>lNW*98~gpcl--yf%#U)eF4 ze=|D6sAM}PBer2-u6r z0Gx&?LKSImutS7;wXlswi1ONN!m5I0J?`^Nd{Ae4)HCds8d0ad05O*_4czS#($tj= zsq4ym`ECi<)jK7uGG^l3XXO^6s&^R?;(_*+jIg1OeUUq?rX$rT81?Oy0S5|Z=ID6= zO;M}u-oASKFYNS@PEk*By385+x^z~^w7Yy&uwf$*VF2q(`~kBYOEldF$`xyCtxddr zL8s4;w-@&2yDE-4Tg+!@Gio3 zdz48>(>K8=$Az!aZ)j9`%~X}m=<&`Kns}t!>oLj3AkA}i(&%P&l8-7Oydez-28#s2 z_xSe~s;4O1gSDA6Klgo)*MyYw;nf)~vUq|tB*%u3zoQz3)(r-_LP!CyMHYb09x(&f zNigg%B_D8QLhBw@s&VHHHtvCd;VU#pI<$^7ESYIw(gG6XUsnn=&^l|N97qf8>{`a| zi-&TClSVB^CegB%$dSn1;wg7I_I#@6dC^5@zu9GEAIk{qXS-MK`#awrpC2DxAFs#Q zY0TQ2E_++|HTQMo<-!=3w&Y7N`!(@ymR>WlSJBy7LMd(;Vkw)M5@uT&B63`BCFEM= zO&lrYvYP5a$yx!&hkzbzx~0xC&~vrCk`&n*s2S+LQ+bUruBo|?%RWYNT=TWq2;On5 zc)U)%^Gl{!bMUvO{pkk%<);r4dC$6e{6+`G@-VX27ft;^fq53fnma#t7&<;iax<@M z#nZ8C#WS;O$I@pk;V7(k_F{l7H;p0 zu+l0_W6pv^>)J82>soP)>sqnNVRp$DD*nk9S0BWrGb$f+T@#>W*7em*Rz~VD>ZbFm zrVW{n>F8044&J}*QNY3!l_cQR@!PS}p6h)LMvVTEjR@VNnKXfsCIwAbWx3mq6gAWQ z<6#-vfG$ITWG|yqUoX9qelJ77%oP72m#?MYLGg$?{jHQzW4=JP8H02)KbvNO0KNSo zjkb=WJdLD_c5Q*d_>3IIGp2ZD-jNtizL8rzO=|dakEB-8j3tcKBCca3@k^)Ii~ZW3 znN-eQAE!}6^>gF9t^6UihpG-*_{#MVYy1|c{r!-&^BI#x414pjc7BK+-hC5ytLmt% znV=svtx7|4j8Q=q3(vT_~40`d6%DQueD zcgmI2`4$#KVkl=$Xec*ojfp*!F{5i~3qr$=FqG@hNHZ zWN`_4*xu5N<<9S$dux8u@qJr;*|N8L6ID|kyat(&YilkM23Z$t756(QE`MsAxpwC@ zKE+7mm``@KM-`LW%J6DmU?qXZdUujf2NQ^Iu3VV$2n()RFGy77JoTGQYGqvZUdMdJ z7f_yHF0&9;7I6jjQ+zWRQo_b`>j6GwI~%VTav{YV0tc(Va5Vcp$lV3ToZ?nGT1!YZ zvoH)R)Jr}<16%ch#%X6j^odtCfgm9iCq;KZ!&z@zPBRfVqZH+@>vpN<&YQ{HQkA5p z`gSkrh_q;3_34QpUe75Y<|iNNj{n1UGWbrntt$Upp-UUN2xWE(w}pSftj@UQVDWPY z9$jrtPFN99Pm6AJwE8>E`8FFiJ@{#PuiFD<>uhZ|Os zEn(f$Z{zP)j* zF~1>OvC!*Uv8fR{wml+V@n`sY#cAisd=V9eW?Pf}0ijs%xLao?0NH%*Cz7Np@0FeN zDLBt!cP0O0e!-wh;`!<2{9$sg*lmeHhVQR^490jHPfK^5-h4gj|BkuO8!$CT^E5&= z8IDOhUtE9Wfl<6jHLX=etQ~F^&OAH!xIAC*iC{rM&PSYEE4zT&yo3{O-q(%_(ZnYm ztM(7)w%&TMVX#=HP2e=qCVVoh*Xq)4}K|lR`_M~{sqeqXAC?9!}#@V2}k62R_6IL^_ug~i_GJhtII)8M=`|> zc$y{LqD#hM?fsD96CbZ!RdxJ~Mp20B@$weFR-)>Ruq24XgC#TIVB9|g80r!0YGL(Z&X3TQ zP<|4dD{X3b_V5T7*TO~GYLm~CJrz1 z>*EE@A3;#@=Nk&P!ZjFC=5-pTm$%QzJG!U52Or0!Rh1YrN{X6JsZ4pMDd*D%`9DQD zrEjbVMf>gI-n##JZD61Q0(8}`Q`@sc_V2~D4ys8F{vm;c-*EO{ulZH42OKhv@XZ8| zdg>g0At~+)j^|vax#}Rblf-)-D%z#ZiSK!_Z(V@lPQ>Rz{L+v2K7R|*czT|BY&}|b z9;|cjKOEoH+DLvL*7s>AbU!^DD-qPsP_gP27opXR zj_&-uq-j4b>d%mC;p!LAGKN>H7`xLJmXim=a*fZm9-SNk^zKhfr=`*U65leUa-x;&5f4#%-j_7dCaU6R|V}RcAues&oe3dd0WrR&? zE0OH9kge@&{DtV4k40k3-m%D3h;o^a#(BYM{U^dg%lN}Z58LCtXBT?Qptt>oC*T-J(k@y?qbQ)=6l2>t8MNCXp%LfOKPz~cM3cFDSxA@IAEOT2 zu+H|Vx6sf2!m4%t_Brx2UDwA1Rlh!bh;@yS5VtKC>0&A2zHA&FZp3F@gC-+ZQm|0Q z8(o#ixfPj=&(7V230fKI%&AAO!ZhvYWGFhjISpP7pG9|mBpT{ys4XatOpo#}9v+va2=oJ~7^K-KGdr4=RYS6Ewr1hrgcYLGS2LGiubIE= zSH{y=wyW~uk(M9Vu3sWO*|SV507&Ef|-@PC!NZoekheJUlt_B*Nmpi@{2l23TNEZLk(FBlLg+ z=?zAWn$Y0qhSAVe0mGp%$jOdwXoLsfc9fd36>X`&M3fpo`HM^JZ7i^gKu8o+(OK3% zrokGO0jJ;!(&fBr+-{f0Nb=fyyZmPyn~ttnP9w~#Gw-Tb=WBL~j!Mp|+rI7>8C9JV zUtV{b#mA)$dTr$l zz!&LLvi@|E3Yi$WXJ3kjL9R0SqKd-YDe3FpfVe zv+>zi%8#3-yWo;(h;Q;&-$#x=>Yt9=wq@T(?{2v{8^DfuEBp7lkmS3U3~UpFZEQzZ z*?$U!*fO+k9rhD*wjP`^ogCQ*w+7A2e@kptImpn$Kir=wjTsD~TKyOE#~Bek6bZEC z{17{HqStancLl*YeBR~flY<5);dhRqm2&ns?RcNC^vqi;n)We@$!F~X}#es-f z1cp8hb&sFYqI}!Yk!Sx%BUDk(wT3!RCsaYddh!*tF_d%WqZYesRz~7{w$e8} zc$N8dqFf^ixVQ?YHFL}vT-bAOSSw|k6-f#IjIcXwvNx(Lyum1uCBR%NM&IL;{E{hv zqN6*tAc{)+L3f|^e7?v{S_??|^3bJ;VnU8#iIS{I)JrGZOrh-QE9Sk{Ho~u1Sfbit z0`^+>jF#SQ>p^W*y=5$W{Q@g>W`-^Tc2~beIk^nSQLl`lvd0T*7tUU;Xj6jH{rphA zJq{PCx&DltZcqth6T9`}y^7|3c)fX<$w}OXpJDvTVQ*u+Vt^cYS&%Akpw8j1B}|UK zEgqSf(8?~v#Ib5pTlV@wan>n{(8L?0eg5nlA<1&DYOxG+{4|?z6uQiPbTQe{rTXJ6 z5;xgH4V^L&MoMq7Fn4uqGoovnM*8~fm+ZH?lnx>Rvl^eM zDUHo$RX(fa%&@%tK=kl>0{hD_>3@3E?5`wn0Rz@5y)NHXFbWvfSy&LVSTdYy*QPr{Ky5!*k3;W?Z zd*9a08AWWRpRUEcs-+1NdgGML_%i8zr+wQ;`wCCDP>Ysg!{(^+haMFcO@sW~sr__S zf0$pnJl~%YF~yCTJ4C9EzuPWIXAGX}_`c>zt>V3xtTSU`Za@~u-aRQju{D&D<$twh zG*_9uYm&KioGKb_`}DxuQ2Y7r*m3X*VtJ_e({xfZ->Lb=aqvJm-Jn<*l0RU0cv&QG zv?WMYb6?xS#~>mkCb60K{Oofop@rw%#He7#>;bp?f^n+g> ziuiuU9iQ9Qgw&*CDfao+^dSYsok!*u`1IM6$VH6zj+7gY@IdIV-?^p&6BeUM7);?L zBiBT$QXT6yBgV!fh^J0ws|5Ld(;bPCvc=&Ay*l^&?-_D38nY9-N28WW_T?asq;Xn# zC<-Dm@@cuYcKJ8g?3kgG*L<_|D5w`F7c`DiMJR1p({N#tG%oD-YVR0ubeS<`N&8O2 z!`=S$K7Lq()}!3mga)*tCgJ({t`M?tCM}ME&tK@rFPL>@g%UP5!(5mM>AbLi{`@BF z)1;n$Q;@12=JZdNFph(`9u{eI40&rlIZKdpv!--^hmv zF5g?tzwl@2GST4n-Yd_puwjcDfmNUd$W=lT)bkY0r=tV;zh$y>z*0P5lxY&#PSs^!%aIgOp zEFHXsI=r)j+!Mq`0hPqZomgru;xtz@Jv6I15FKnb78UAz#qN6eOgu=yHRa`1Z8rp zT_r5I1w9Fu^LCbE|0x&tgJrBJwAp&LBtq}YZzDb_Tj?ZAvV7kbyJ~0@^o>-`@*D2_ ztDQP|+fgEGmoEuWx^9;z&1ee`7hpcj6#A5n>)j4j<~{8+?iH6oUYvFnEPwOrr8-}^ zIqj*w&zF~Vx=A+BddW`@fzzIlr4R;NDPpbRMX8EIHuAGa7qbG*o*( z_~zlHQESi-+(-Xk-Cxa$rk`=La~`*lnevAIyq5KaFu_;f8x>hP?t%&S{WXr`ko$!?+fUiB zE%(_8&pHhf55jE@(^RiNlS?kpJ_-!%r`gc32}16zogH~OU|60V)DOZ54jP9lm&T81 zxetb|n>m-(A0rckQUuSY`}$jH{Z1p?i{6ENPeO7ZhISWjx> zBJmFqC*a63;J3FKzydL6Fejd@^Ryd%HZ9X`>w6vTMnQZCM4=5T-?Danee!`uxAGY6L9xEggM7*Dmx9wpGy>Tc;6PpWpCl{b4*^f zpoW4-E7j=UMZ>nK^Oo87Buv;Uhw$rl*uB$Sey>(UHw&fw3Di;G8v8xBeYtjL0m_vZ zZ9}5A(rV=4-#Ws`3<`fKTPw!M(RGVZ9>YUkOcY@9@JGTyt-s#kMhA|A_booV*Sc2+ z4fm-=Jvv&&$k<%SY3)u%HWDK_`v;4kxdwV1t{$iag4a_xsCGR&IH}lao+?(|&(WD- zuk-;Rc z-w3Aojbcg6^ApJz@A?~qKKFY-gG2j0xDQTR8bhY~PcGc<7YBzJAPBx||GL;Yr_&_x z>!G$z9c8euBgD;UL=~)wB5ccL&fvrW?FbV$^_Bic4hD_o11zNBI-!h2%!3^{wci;n zDB2du_p7lORt_p~z=^@^jIf~xTe(|AxF7!Nm(et7->Yp}W0>+p+9e8-`m3E&%w#nD zZrqvYl3{%;l=mLJ`oiGOVsQ^!L$9?K19?tkek1QgQQJ`bSYT){d+0L7ib3-O`P=Vt zr3ScW2dA%xJMK2Go2eHovix_~BCFzpk7<4AeO74I_qROb_SQ%hK_p%MlfNGn>@8tn z-OFzG?Z|all7P?2$1TU>&W@fc9eNv;wXUzYN%!Mc{McHxHFlj&6D8}u9+#k%_Rxl5t5@FGM1Fi9WEc-q_6gD(9 zbT&VH%6KPS+VBuR&}+k?2r9(Et#+e1kY26wBZ}jWSsot}Kh{>?YrT!Os5W&EYonw+ zfBf%V;nb_XW=V=!YQYmt1_oJ8K_8zjIIHjSZE`j1|Ms|aS=qlK#bcT{_uR4ar{U| z`x)yvW;ONx;no59^mt3=;^y(R@8LAu)@NU?{78X&`KaM^+30hh|x^Zbo zdkTE{Yt0wSqEz+q8s|}q7_IZGzWX!~0OIMT59w}TNI($(9?YqZL65T;##6xTa~f4I zd4}bfBy-N*yDmZA;F~vlUyNM5?zx>iokd3#Y<%rTA_)!06ZX(4v6Y?=uMjX53;d>rt2woZ4J{djj4jdpN0q~fokuq+yZXsFMaGdzQJdqGQ|wQf0Oiti?~ z)tK8E{P4WAA#QnOJzHLCT(cIpiM)^wpf-=k9jMEP2V#($_zUd0aPkpJ!1>p#&RFh& z9iO$chnQ^GUfg8!sWN+a4;B5fyEnl|HKpCWO?hFs2lLvYEIS_OW^Qo*Jfd&<-M-Y5 zyaJ;Zw&nFcxWtY$U~g2%1|N_C&b!YJX#E|I9Ab3C=>I)au&Wq*>`N&Viy z>v1^w+u$1X5=FJ}iu*3ik}Ox<3tJf9!_su$jhLKM)M!?a#GRonOL^oZtfeBbEtK?p zAlGNC%L49hpHl_9$x7)hCA{?jjM_GR=i~r@#t;v)&5iV_+`{~2QtwOy zLfp>k%+>h0CYI;B{_O2IPU78O3ct*aGd4_iSBpVh!v`NZ@+Hekd87(m(8_Q|Tz0@g zwo`u>zK1Jrqik#o`7Nng(2x4+Nc?$VZHsmUfwOU1n=iPr&*|HF%QwuGEgG});QFt9 z|G~V5Xmm1@nmcL4_1T*u*HN5w_UqwBW+)Z;ja}$rZ@G%}yEsb63B_Je-8{9cIJF!^>gQn0)b&|lDh zIJ)WYbQ1a09;_doxs%^xBi!=x)qcM3KStNGzLtNvg+D;^_{Dx}UyVaq(76YHz1YwG zwUxvc?PKz|ea@ZQ`)B8F3{iw-{&}fkTs%XFp1@z9JHwbbS&jEA={wy=t3;OBD^w5nX<~9rm4dgDm{z z##96g7aQwTZNZkc&o)u>XGNt-pZ<}xIHU^(A3K&lbuq2;`^yRbO_TGFPpy+hs&vnH zpD?KVai^PaBi~(ZbPmLP`Siz8+d2re0HZTywMvH=81jNe#ZunG?)9<8eyVz2|Dc$k zxurJYX^nuNYV|jjz*y>6+k8Le?+4vFq?^l-oS9spIluVj9fCSt+B|)9ciqFM5jz1FN)x`u>_9OcTM64BuKdoj9UD;_Bken+6uwbI=UX$2 zLe|pPT`OOIMN?i%oO%^rF_YOC`(AiBP?+b+Y9BQq$CW-`G$Uo`-bR?DY?O-0Pc$gTO zNvI*MZ#yaqLh)K)Wg2OrSh~jYQqDh{Niu97xVpPKGpICOuVn?D*J*v+o`< z$aZ-Mv)ACiJoKn6`}t1q3bHBNDQX%Fw4N&c85)uZLN=H$x|7YsY*Do=75f?)_WK>m z<#Ing;IW@m`Lh%dF(WrPd3146vlGW{{h!F`EiXb34o)k%)NCo9#$vkNO9+>b5*l%K~&Ny*6XN+#d?}uyq&X_i*cmze|k$fV8dET zww6Nw@K96jXZpNRRjlW)0O_b@ikNF%3pl?0t2n+ob`pJ#v69d#=4;fIaVi~&!jH=? z{BVq0M99Ijv;F!ub@^spL_d}v*L+*aOZJ;;^!nL;qIrLif8)c{M^P;qlSQ~UzlMd5 z_Z6&J$JsG9c-QTqfYISbyJ?>&PL)XO9*U-b$vJicl5O3`01>EpxM}J`sPg+zYuYX) zwOT-{+Vu}k<_J=RN|yErkyz-@uE*>;l5|&6m0a^&f1%6hO(g@9b6qi`W2l0)EnSzg zO?cypy!&$d8+0u^7S{pcjzJTlogOJ6qs*#gDN>S^9r(D?vA#%L_wGVud_X@Io z_H}G7G)D%7p6`A-^aOAJY%zDh!FJQkJ#HX(*Ba0A&u~O#NM!p_^BFf)n-w=fTWeqS zGWSgO%F_Ldgzb=e$)BV<|AZC5QW`waM4u<2`X(y_kt|P_uqJKC22sczPmyZ6hMHT| z^!DRn#zc{vQ;#CSJ=MkLOe?P}MuiF6(oRXPopLa&i%5Ra4zk>=lqh1%^_#gGesbJ-`anh zz7pX0waX@cOJRJSNl7)?Da=oyx7aDPsf-@HCvtn{3TFCfP03g2X^5TDQH49wqVw!B z^T;FiBV6N2TXS7JhJNwZ&cQ7{yzSt>I~!G^yTJt2F$u-$-}p=sqmm#_l8LCB`0Tb@ zonr+TB9;uu!}c?eVRL`5+@;)w=`+?9B;*G|7+^*%h&pfQD%jz9MK{ah_U+E&O{fs% zl^;~$?%zH5h>s{Xw8DO{77C?|oAgY3^{nv-xL@8kzBU;DQaM$Pp^?P4biIhHX0X6B zK+9k>JIZVWymYjEGeD^U$9c5=1(ofiEHqJo%bT_Cu2MQsk!{ni-T6Vsxjq!~Ey(}m z=*WEU=CtieaM0`!A(r4ZJM7hp7YhFw=07d0y1yl3U5k+$A$0Oxj4W*(hG>5K$4dkt zhL^AByx}{4VgS3N`8rhga>BD$*M3~7^ViG6TEO2gQZ%`$Suzlv;nmEvpDmS}xZ2M~ zsM!fPoTXCt`=3CgvaK0PiL<22S!jN2hRrhWo(*1vi3^Y)oAk(ecs9j{Y`pZWjOXf~ zyyg39>}<8*VZMrg)vdC_)u`E??bWG|S%j`1PEq-1?_SrnfW1qNj^L$m8&R_=?KoEA z-Je0H+{&01^^&UPwx*QhenF?AS)A?Oz&`-1Mz1xM{Uu~svU+}_YGvGg;?rR*X3V83R3LPI1 zgjwclKLI~ItR>Odf2yV+n!{OC=B7Y#HzkXmBrJv z|C?H_^ZP)w^#8iM_HZWO|Nm?@M$X5O49lrRMLMyO#77PxlqAXrk*z+$H*60%q&_;J zd?;;6Q9??HvQ;{$lqlr1DLLDmXES?#&!ev2_n+VIx_;k(f7h;S&%N!w-{#?>oJm?DzrG1+ZZ4u>(l#~SsHx}?%OgJcYY}5aS~3?e<O+9q}z zpUpk(Tp^omu22b`lq=ZrRtF7WQGlJtc=;<0j}cNXX<$PtOof^fe2OwLy+g>(i>}*_0P*&L7z)f{S-m?ynB8zPv6O4hyL$yBUfUMmGkUbH2j`{u|oH=yo2w*^|8=fO#$ry*xIjlVedBdm)vQfI z{Bm~(IEK3%$2|AmC`*fQ+&V42!KKh8Jot=`qv_AER<*04oP`Tg189*=Qi4HF`afm# zL$6<2b?Dryzd9DXE{Kl1q=O99005ta`6tIfVL5y67mPKMy@O1}ND|L~P?SLfaMwma zs^Ex$$-%_HWcVH4;0rFB`WG$6uR3s5fWfxmx%FaJpqaXx@S z6lLJy(lRmR1Rnr}2#+AMf$#?$pt@WKsrqjP5x4%g5dU*gH~x3~|6N{~LXjTu`R!?cLpm_`;!WlpMz|k5=_qV_u z=V?csxWhf3*P}Z2M3Q|VnjPSM97V}h1AMpFh%|r6$T>X~YXUTIzt}%zSKsYyy)UMv z0VRfL&WxLxTMC-vpD>O>G<%mpAK<+SF##@AhwHanmBnhJ8TmM{ZGz{Y4(|nm?ShD7 z%ZsCL`Esw)?`zS=h&@0L7UhwOWhJS*8Xksa#sdJSCK5O}+;VW7{Mln&q({6hhV)eh zfYfo|f!SPdZ>G=YU#4Y|r2%SBLtY)q;%0k*LJh-DT0iFu)^h5Rcaj&?EUSD6qST%RcKRTLWiP zOQ9%?eLpl|V|eRs?Svf*d%0tyxLAS|?{BHPLhI{kNmxf|P>T2D*32t6GfW29X^MA1 z!UG`L^DEk+ZPkizx;LwJ!~CD|gny~S%BTae7&POu!%W-6H5&CvHW3S(1_@B7F)@?Z z>S+Va9(eB)#P@I~r0I z`*##^p{uJ}VMXfFj&M_e+DbG>Ap{4eDZ8#Y5E<5WcyMIC8S9EJzl0m^c_-zx9HRs% zlMgkFh|iC)ALVRmq&UCah+*mC0cxNU2`XkE6Dy0?P4SfZPG2sE9may*l;iGI$L9lW zbM)bqgAGc6GU9B;YochTY^!KzAC&+46jXn7K4uSKY0-1?Vt+nSoBQO7Gzei(lZ#zI zO}^LP&S*vkMu!|`Q$a1*eZhHOY}Z+^;yw;kgAD-!pcYXG-E?tz%y(CSTKehEr?@v_ z&aZ~pp|u2Opy$smxF3)Y3FH<(eV1?Q?maGKzj}0xa!O2K1IA>rn#jnzDFLj*P zf^oPKtw^+`<%sJvrOT;`evsc+Sy6Lr-COxB5e`7F^n#2&Vs21tmzemD4pk5Y**y2V zP^Rlx#_nUiTQAqXpg690sTYEUdEH|fvgpl$Zo%@bzoWOUKkgm+je2+XK5juadwHlj zW+@;a_X&jawnJ@Br1YP&gdjI{piz>fCX2rF69_A6vn!kt8qV=A;o>?l65+dAqHuT> zB+6LL6N11E1CYa0Mj7iPu6@}) z>3QDqd%H{k0n8eE4 zxs`=`d!NN~BaHi^dL6E35fz90)&tsT00RR;>@cE^ywknCWHK4+kp&IjnQIhDKJLS> zx47i!5X7R$uy&DZ(rBV1yxVeP2~VHwPrR8zx@MRh zC3!u_9#B~xTklCtWp~irsLYE^WPw;+?rT2#d)niV)=O==i!IhfJk(kTO^VFn>{%t? zb^!M2c~?}NI!MMi_<(|>x2tHM0v`EVmh*Lwu6Wwx>5l1(==N^$M-O$P^!8wpp{GQv z$bB_2Q#f*iC=lgL68rAl-NxN%#|+6F6 zF|cC=%NlLJmZgH4CR;}wn~3*aPxj{1EtTT--g_fard67W%9rumFqyYs_h}^N`Bx8B z(#qvNq31wu67$j~@3z5fF%H7nbGkM^Tu@AdhvD5u%x|jG{(U7Mp}a$U?$=pYczKI5 zt7{1DgE0b!g@K7SIhuZ= z4F7nxT=%HqsaLIOk7<|L+|*gQ8upCpG^~F;AKo`2nhx~jE1*1F?*Nbe@D^3*Kh#jl zz0w8T+T)y@I(}qc2V=hCy;g^sc7D5t_L?yJ2W@AQ&y?jG2T^KWy{ydet0X~F*@rc5 zD3TSRWRp3UF&>!9_CH;l{(3QDO+T@%4c`lDRmo1la3!O3EO^2ldiIrH!Ms`h}f(Du?(2~lUd*yiEhLrmM=l8?k( zt9vu%(o;E&o*8QZk5oHi=~^ub(i}(-(rkNcKhpeLAI$S-w7#4spDd{F80?+Por2GQ z*$6pGH3qJpCTsmI&Yl;4Uh>U0A+5v>yh$3(^}-w_?2*`bM)x7%DBQ1sE6EQVn0e9x zG{>z?Osa)Y;S6n9T-v0HuR<^QkO~f4SvX^&zsI7>y^tFlfT@smmd+Ez{-H-}nD#Yt zTFSK&rUND4lUNoCmk8(u0wdEoCB`XFlCWPw5rKiSP8-j5TyhSeNzEK5t3->P2Xuwv zl}l`l4@<|+*rG|EK?obm2?yaPCBb-CWO4)4E=HLYeaaw?3;nN=6Iwgz>0++&n_*pe z!uCUj>vQ@@7!P!n!0fa}j=O}t-X%lHEC)mtj}tg%jowIleZp)CLJkNJQHXzt%$9Mr}oYHGnqF9gXu?TZsN%$ za^Vh84tpm9II#G@=*)yA-WgZrswm;37%h{s%&wBd?z$jd#NM2`aJ+-;E^2R(oKEKj zW)=hC*+9L{VP8x{WjIMfU9rlZbwJ|g$_L4;bII~aTM!+o+6y(0Z45-0X5n0LWu~0a z>Tm$9%)jRb({(X7T?F4V=qpj;@o2969n@T&*MJ5#zp_OUBz z!Ax_+I#h?L!|zb26W2>jGi_eMTC*GVS>?EsF0jmBj2Qmn22YkQkH((unkmp{YG)Er(<3 z8NkhI8fosFxtVg^fxt5k09)SanxvmU=#GhWWSvW@OTxoP2`l}Z+2*6{0GEYRnj`)f zp(saD&zSqDFuPR@^V}x4;ANpy+a|*IHXBMDRP@_>I2E-U27v-Nb&6E?v5gOhQfOq7 zFji6rqPNW5YIPv}D+Qp-q`;;`ua#}}(1xoTtKClA$qPBEt1K?K-)*iibw(5gJN?4j!Ccb5+od-Q|DPE|xlK1hrU8pxO zjt>CJ*exXfJPH}j2Q--7>~`0uULua>r;u8Y;#ILXmmO#-*&jP!4NmTaA7tJtcfl29 zBoXW=5qQ}w3L+E5)p+9CJLWUzltA^7GYfk=)?w^7Tp}Qd{ZhtuWzW{tRz7GHZ literal 38668 zcmeFZc{tSF8!&!m24g2BJEK*}QjsOgh$6C!>`D}}WZw-cEkq$j82gsUzRyUDNOrOg zA^W}$GxPh<)AM}a>-zou{`KD1#f+JA?)}{NeeQEUp6F<)GSPF>0|1z=s;TG!0Egbf z0WA&mvgX}I1ONlBswf$F_s`XOxtJNf`fYrEsCcMzpnB+hr}eE{2gKXzO_Rpq4WB4Cv`a@ko$*q4=mZP<_P`I1^iiQ4Ut7elVZqzIXw&Iymg717kBcd-L~f@&cANGr4W7KjTOSy znt6znFj*vP$u58&aJfVqf@+w)klgNXc=T3%($Hh_=cTy~OVpGyE7fHV#-+ZNJJN8j zcZA?%eGPkcfggKlOOJ;>=K%0Rg}%bjc|~@Ccu{F)DkYuo+0R-%Ritm|@c8^1wq$Nz z802`xV(J;Db8(*+54ncE!OF;1UlqC6Ujt+Nwl=kgY9p;!AcUGaOGlHpANv;uEhmJR z^(KifHB6&uLsAdWBsJToSz!j_WlalC&hXqhx&;wSIX3cb#Z?inIR7p^ zXz=x_e!zG1R``n%N^y%!PB~o-~Y1Q#KWtZj2n;<6I$0;LX zYhqzGrHiUdVUSe*DD-Y)Er5unTP~dKq?D6?-+a!6!En-%aawMqqaliW>SBX;ox!(W z;ONjcddp8k`#2D6#VNiyH__@lG#?oc4QY#dMTJ3VWpG#xwS@6r1h97A-R+I!VTr@_ zkU+HbT)V~n$H4B1{NTV+f|lZd$u)}G^z8{sO}OO$Wg#)(w0H~CFZN91jZgoKqTftSpY6F13#B|%g&w} zh~_kE@AaENUO`7tz-lPv9RjQ&IOW${KW*e8-b?*6$dqQp7A=a{9ecz}bY>_%jACHD zoD-B1)a^zT5O9TjH#_VcKCrq28RcE^$XcD27Q;2SK`9_N7i8@^q*EZ9W3z_oup6-5 z)`>gQij=unoSq=a0HFjjB{JEuVwr;4v#*l2JX6%KRLi;C%;fh~*C^}xEM$(ahi}6e z2e-1=`Ym^FY0pyu02yX&%?5LY?ZX3dZXa$+(`x(dgfoF_cPW!@eSDSxKy)^@ZI*wKE74$ZYo@dhu3~64fj2jJNJjjNDU6>R zc9zcS0UeY^A^S=+0?aw|1K5ajmuL%x7GU-i!w4w4QqTbLHd@sFMDA+<-;B930E3b) zG=PQ^kh!7xd+(ta2p~*U0CSlhkPrS#>EzxQke;~X!IBpMV*qct1;Z0y`>ZR$fgCL~ z<$p08$^%Q~|6&7x69DqzeS<=DA%ILm3%%gOxS%(C)c`bk|C2o|DCqA!YI~mp0J%8p z{+s`U0OZmT{29#n4`Qpoco6^%&Dy8Bj|Tr23(fz@<^LktLkCH|$KICs-n!cRU{4o& zpX~9lH+T>2J~RJ({+HlCUqLSr{Qr{_|Et-3rJ(@iYJcci{ST4{=8h6)gkwyU)kvFt z7ECNhNVvuA+4UvA2W;d4r5A?I$?fF8;hlMHN782Uy)9;l8by|9H@QAfD!GoK{=go3ATPO8l&YlAPxsg%rtD7_wXeM}ccf@&dEI0!} zt)O%1RB?va`r52VSa+cU|JwkX2k$)bFt|Uis}~TmPz99j+HHI>QJ1BVuU~NlTI2xF zD!tU-J)qHwe0}%*nBWvn2fuRl!r2Zd&B%>~Q1(g0|c#qs5S zPRq46^~4yuRjSQ01uD;pV*Y*(;%|+5QlTW?>(TniSe@}h{@p$908rV!$$89?i-=-y z<(a-y$nyTg^?E$EZxJ;&(R1+JapD;+M9jfk>sJJlN&+6gG_rJBPC^gy9%(~vMg)Ev zOHWgwMjNq)5FtNuerAVj!@sP%wQ4O{qI|Ph;G@x{ofp6SEYM3IJyEn0J{pdJ0dV;^ z>i#hI6MK9;?m(1=jU@B^>Jei>4z*lV4r-okxGb;~i*R_bbzg;>G8H7n_wXUuX^ zesC~YkL5dB=q|nQ*pu1(N4XoETf8BHqo^A}O2R}2M!l@XS-F5@y{*%`%(MED&lZY% zl((BH#XM`Pd|fQW-^z2&PYIQX-8&VNo9iDj+I@n;Di=`I0)L_g2u~ui$ejt$drRcO zy}GqIxY0e5%s;;LGR&}6OY3q@Zb^_qFz=jt!LV%EiNRk)<2X) zYmSXvMT}KQOt{T6t$5TWQv!FiSSg(_CBS&M4!gRFzoHZ{b}#$do+Y8ou`sWAyG2oL zvZ$_JOj%%yr%PE={^yp?)oy0-q2SnCMmEvhvG!?a?F_jSoHCZVeyJ|wEDv!<+h?@@ zB1Foe0*7G3-RZ)T_;NWYrg>|xetqBrniwk+2+zUi&4!}<<(R^Llw<^v8} zntb%>fjKenc*KrfP-Jj!=bcTFhXPev1m2oZh1-dB^_>Z++PypebtSD9_O+AebEv)O zKIF&-weMWZEg)=7VSb%#Ww7)WY`HSlG5;}cZq4=8%Gk4C$$hQh+S{*ck7OE&wVs3Z>AAl+_Gk$X^aoP%+^CuWyE z_mQUGW8iZ0kBfFqg4IhG^S&Yjl==_6W^cRm-JNytDAg1>fvNkdDGC`*r)SdZ0=+Dj8jB=+)=es4wT$my>^4E7Q()_XbR6HJLUWT8q%_AwE0>E0p!lz*|q*V-+v#RV^=H9P1Xp&8if{b@#2o5eKzj% zIxu`{}blTNqBsC3gIcD155$+qzAHS;;B8S`=HaHpR^ak@FpmJS8(0o~Sev^AN z_zo@{Lk~;JfsrPqi;=W#=L}Q$5B#a}zG#qk!ihQcidHq+)zmp*H_c3<@X7CZ&!lY_ zb-o_TkO-Xhh%Z~E&#?H;0jsUi4#we53!QDB@IPoXoSm*YDST?#o4tk2YRT49r1q7r zFl_W;jES$pB6KQ({ZaoS&v0GIPka)K$w@aKrF`hMQC55G$U6c;#1YH1xDY z1RaTN(nn(1YPfXobr*%SMdMGA4bYD8sWPdpJ1f?m@Nv`bLie5LYtw!dSrW|on?w4- z6^j4UhZbs*ofQ%cwXf__%9%~=e%u!pxp*hbynJRtv-VTZHID$sIZ|x#hlg6@*E{o2tf=iMELyK70V+_-HvO_L9CwqnN0)zO`&vasIhkRb8h`az z_j`VLYM7Xl`srZz+ItXs^-ZaSV8b8Z!qcW=2%BX*yl_7EG82XfqgQ_0GIsdFF$MUdOt~cZzQRk zL%Zd9KTY5?M+gDt0E#{%tZWwE~t1T>2L9CrO@wcj5of6C_TF{JA&d|#yHbpl$r*D3Xx zku$T&5(_nz)U(r5uE8CqQ63E{)nZ2NkKC@8jNg`Qk4Ghd#>}P<4__uf`WrOQx0dtQ>-fPSeu3t=JUeHA!ml>%CvLkK0R|WMxZF%0b)lz z@7EiS+R|tb?et8q2U#v)j>{a~y`nef|9foKpW?S2{$m^IC+V2{%P+5&XevDtsV&u6 zqI@{s>!VhlsO(fjf>u-2SnBEoQ_LNwm+RhIqZhep#71`V>ORCiZMs(C)OjIZMoft~ zoj3bj4QE5Su5M=^iOF*QG93((T`~MB2z8je1l7KNFth+ImP5IzkQY$uQAcJ9sw%-v z{uXm$*~y#Umba0(uX(t(cu79~?8&6xqSsQ#*X}imoqi?+sAfe*9yPqZMa?KWo-pP8 z{7DBj=Uj!sRpB27?Q=)F*X*x|L|i?f6O|eq{F#M0#%jb=p>SHA){{_G7|2%NDV}Ni z<0b!XFQrEpr@}o8n8LUM(QRL|Zb8kXtq8G=Gs(#W>q2LG{v~BOgM$^b!v$K&qmE5H zqX(BtWdmvngyQpsT8pcMZ@=A&d&vXOueBq6p6&9=iAkLJe67IdiB(XCsKdIQkErbR zezcJ=&-C+*C-yTYjWc@Ot8XJ54=`-ikGn{=kB(*8Ir+a_>-0J-n$_E5t3lyAr2#J$ zJO>;8f*&QC!xZvD{e-A*m;NcAm50dd31oj+a;- z*O{%Fhr*gJU=0H#l*hr7kw_m>ZOZIZJSD#t7eRU{>z@Eyi{t{yy?VHNeP*} zM;2ELGC1_@ZBU%~!ywk`=K5@58MWBSwGK=1kIr88kKJ+0XK?32oSl_ITc2-^2JQ@p zO7UG-pWptepg20%wJJM^QB7U*@b!xFIy$J};20{>wyZgXe3QfSI<0&rQ?;f(u!M2x zFn5A|iqW|<5);^mnF6I9spmcWeTS~9J{^oP?Nqt`<8V=hfAwP8WiR!n>Dt&?xjNZ^ z;UjP8tQ2j73{m)Z_^2N7yi1t!v*K!sXxrJSmVMWOT0uK-G`>u6s4*t6w4i*zvQpAV z_Vs3OBTqwiK&*u4j)<@6@GggMiRYMMQ>{MRblvtZ}DLGqVH#k3S=XS5BE3ht~ADoeV6k7`n(~eR2dDPE(a|N=78Xwq=!gW=CuXk{k&iZ^YJ}LjqTF~UNEqAt<#fy%?l@Fst#1U z$4wd%+^mz*!encQva||z1AKPQZ!JcvDp;!N$}XR@F}+K^Dx6&~;}zV0!^m45=2-s~_Q$!cY(Ypm<$P!)XIztk=c4S zfRjGL#9%D*q z&;o3m+7!R4O64xH%;UKNLp_RL^Yr$R%{fhJr&$je7y#f!2*M-fKpg9jrDGqN4$fCX z>!;OFZ}-D#-%V_X`&QBS!;cYil|7SZImxqQT|Pu2%9q$clf3`KTHjZgE3{vvGp zwB}pnbe~KrYyTqb5hLofJ{a7}GQ3n_o?p{_R85s0{7mjE=)?83_7VCPReg&9xfX~z zpU09vpz;}63lD;47>H*KEexH&0V-B42bzALCr;**B4dVnss?cVTVKmVIXs6`?wh`E z?>cS@12hRL6(T&$u_9q|PYM^GuIP05WmS}8pPrx-;*2v<7E2eh5;tM$;GZ{A60Gd; zb6|-g6tu%@p}tmugw~I9&1K=BBCUmcDmxO3-d8QF3|KPVO%rkCdXeHl)}JJ^gEm=;@U)N5j#vhV zC;Kx*D&~uGMTvT@iSA|JMV!}d?DL0H-haMKPnZIQ zmx+=)Qads`JFE7G(J)Z#BokH671he(SQ$gPh5Ey&5?JyH9YTO%_WUNHNK>b{)q5lj z-7@lWzLUfvak8IcvA%)Ji?Y}fPyXUucZNB<1z@t1RdnzpTl4g?E}vCqTjTG3yMM4n z-t21UIZX+{(w7$MIq7t8)=b;pw%voaCV@ZHO$%g%s@#W+D#%Qx5A9CsJG(|ju@2b+1_QjF?~UU2*betM1DK~Sih~4=9^R6xt$k@ zU#Ej)h(l_p){}MQ5>cz z2t%15c@yc~DU!*mWzIcj-xn||)#uVeqHQIg1)#1xV2v@1|MvTy3W&H5tb%NDwiH`M zqj*^NIgB)NTnmG>0gl30axiKixfLg9D*zjPq($RClf`+mwk`~vNAZiN(0`ssC0h&z zCRhx+^8;}e14Cnt(lXh~D~FXN${?SMCnb>Hl7j#j9yv^CYu10tpylAiM16 zw_62qFsfh)*$F47IK`w|@7UjGZjARLSjG0ee2=ENFyd|i@D~kVnxkryKlt|WxFZI& zxL<+-j1m=y41uH5yf%ZXqOaJG1Tr#(7C%J=-o}#i*I z+#4&I=K)3#2|SJIUAoc)@Kg48r?DH=o71Cd+EdHXV$%tPKvl(E^5$BY;%@LeLuAV{ zOI|qmp$1v-PS72kz!(>@YY|cCdjb}74kLvaAt3iDgKz+5Xt9BmptpvUJE~guy~`-j zHpFm}(rf^P4k0h`M-1IJbz(>;TxQfn07e;L^~O;PI&@wuBlP%a53k^eGd#qh#kwrT z-Q~!&EPu59ae>{o5S{Z@4#16WUA>P`bV2~qmfZJTChD8tj zpE3~gr^l-Z%qZj#JfQM}s`+Ft0KJrEkFg+n5Ki!ou;}wv=jG&q0cBQjTM?7SpMiNy z?R&qWS8oSeO~aw8Yg?;gQ#*@6QA%|u*BJp%hGlV3adNW)XqC3Alw;X4YwJ;KUOmz> zfD|8O0l)SYfYAk5P1)OT6+!wo9J4~S%zw8jkJEMpgBbw-ldp1b@4=0mIIa29Wv;k_@Cxixkgwnuq zFsH`@+k7)#iLE&`iUf9bfOQgvxv)>)iWl77&;l+)qAfe{5jA!IWilC9p(z3be{*=8 z`6dm<2modNJ%RHMu!>_#cRlUrM`-FIr=q`VPvsThG6Gi1hAq-VCIm8X#!R#`)!eVujzW#BTT zD9q*oG6)?d>#oTlpRD=7w|yhvu_8`VJ`*1bogLv0B>_&=k4AoxgFR&4=1X%!1VQme%YMbS^lA*t+N3e z+Z<~x<+xbBol)j35)yN;11Ar#&*7(qgCTKllREJ;3BW(;_DmA>-sLg?Xnuf3dC-3t z%>=&B6c<#T#CV+s;#$14W938GxV;gI-8cB4-hm)~)1}kdX*TtTAInr)q+-TNOaIF_ z(t_8T-~G;@o|3={C}t**{NK`mi?skh86qd}vPBl?^ulIgVBeT{Zy+vr2xK1zl@rZK zP$C7qsh1of3fQnfAWDrDz~f%ETKgs|kl)r3i9E#7FhW?yD@7qtXwE}@CT0>OBUi5D zN!>|~7qG-SjGiJVt4I5WxmTJ@^ zkR`>jm)h!zWX+Vz1n?s1+VhI!T@9Ip)*O-=^{y4LqAQ})fn%2LY(N`@N=6}C&}a_W zKnXuamJd{PyImfl-qQyF;dG#>M>OD|RpNWPHU?nr4@O?eaYE&V5cAVL6QbMn@H+i0 zSji<1Pd9tYdE!c5!L-+rDazT9a{r*^&E>C(2D8$P`U!f}O^F7WE zvEY@GIaUU1H=`7`=iK^ATkAbgRU662r&ix%2muuNfbDguqDAc3LO|uUsjkXqr6hzQ z488TIWVyIQdIo7%&xfB1j`^cl6?t%%1;!_igkdhRK%wo+am=%|)90Y7FbRb>` z1bYDN8kmAe?TgmV2s|eQv9~AqFq4}J4;qBUV09I%TC4yK9Zlnhn*)JS*DE+grA`u3 z=d*&kl*O(4iHf`J;;`g(NSC^=c(Y7b0H4eR_sfU`vt^Rc~@A5a5VyFpKOaA8mCfLUars;(mD@Y>=qMJ;oq z(ji%Y$4pVmL_YcEgXHairKy8-r*;Fv=!qm6Ov`D|$d56Dk_A78bizkrA2mi04#d2{ zNTxLB`zMHBaCJyu3UTo8K^AQHYIQfqdL3zgF{ZTok@`I4sx5!r-U{j)JJ}@yE@y6- z%8oZhuWDN)r-v>>k5=#!WqHZ zRQ}dOD-V^-oE+$KFFEs3CzDcJ$*3u6Y$_3AL0c1@hX5 zm;IFC8|FK^wYy6@gl3w$R+&;t`^m21&*nRcH%Zm|g6;p3$Ohs+Nx)zK_Z|1eY0vo} zO2gtrOTT!U?jQeFFO zWa(G65fL*ynV=9kbH7(14s{!0S>1t`(oyv%TMKQ3yZ{pYc6IEu`u1b-9hA5@0py$93BWy3VJ_Jy}Lc zq$LjGy^IoCj8xYLX@;Ow_7{Xw0SXG_S_h)yJ=S-fj9Vu$O)!F5sXq;iNNKA>FxR#4 zmpywWkk#IdLy|zp!6T}BH1*N%3w@=OttXqod`CsbM%(KPaNCAXBh{4luU$PJ+OLkK zuHQVmH)S8tq0FFY!_r9m{i751cC*+8zs>1rZN&^{9H~cq-Jh&5ez3~Yj>(_J#x}Lx zs?>jP(q48zKcWH5#KYCmW)Ur2?cJIz0)Z;Yfg4-_(mp`5#+%;FdA!(NX6bWKx^pn3H5?!VEEcQ_+;o-o8A?6e+et{4>GSuSS=i^4p)#qCCrS@f z77%%HBiVmDmbY^Z+Zqw}fq&`W1;t8pUwngRS2p*cQr(Bjhb999ImLO;7CgQ5H*5X) zmlcbv7KURfb!o-X{TF2~N6kgyGBffM<4p%XX;xkjOnj7SYb@Yp4+KMUyGLVOMuWq+ zh2P|gu%S*t?Y>xDoUVA`)po;OqP|j@udulmp^N5vKl&P`E>E*FI)f1bS3I3~^ z$?7nFC^#rMkL=8SOqz=91jQynNKwD@gYbb*SNKPwT;V+gCL3IiXRB_vzZ3t}+Lv|;$Z9iph*_t@j{?#?6FeNAU-mfbJH$2OVFE;-< z@B0(WgbMax-aT4->!v@miaXc&u7rv;VQ9gxt1sis{IuTJ=||karEStwp?B3svamYm z;hdHiF0>B!eZx1`P3kBVVxgNh&=2;~LdWEY!1NVG=B=8ZxVWhs^B%4g#Yk@1x1zaj zl@o`RysV=Ke|}XgD9tx_IyAnHzv8SnC%lLIYmm1-%K3Q7Q$<`~K@#O%E1l`=C&KX} z2wmbIYQhI4e{67hOfKSOX$TCxD~h2PHS)-gVE z&GWdghqikS-{iZRy_g-{easq46(2Sh#X_ri;OQGP%4+)72rHyCRw98Uzm7lAun8Ga{SIi;~ zq>x3qK;70a4Q=^kBRFBcPJ1EKkZTEf`sXGUOlZHR5Z`MM0Ok;Xx8EqKsQP5w1!vmv zZalBSwj<_rvE~L3qk9|6SGHsGIlo+C47;w_C&i4VhTFL)MdsW0h2GEvN<0=|`E^b` zH2%KT-4R78=d0tYVO5KStS|w2wjcp7n}f;byYcP$95Z`++u!;EjcIt0X!_Xqoa6ZL1>Yr_V3=EoB zb;#Fv$RA&9Omg|YUp(3(kN`$HS)h*fAHXyM{NTf7_sNZ0_IU{!qO&x)IkM_D6H-*H zht?TrE6xwCho=SZI{45eam*b$y7g582$2BP;rM4h`WOr=Efrj4UeGDO>EPZg`Nm}S z@XOAkH{ZMa3@q+Ps5jAH=cMIxzb0vGLqpp1r=7=ud@a?Y-t_OC*P5>80faCaA z2|yW!!CAzKx0#e<%z88puKT>q&1J~0%vjC|QFLA&JF7@VNnrp#|K(N}2CBYec9@J$ z+|9GpG8a+JuFf-|+IX&j3`*h@7u-UClEA+!3{n(|9^kc^I;Si;*=C#+FAsT%$cJFq zc1?3qo334^{Ru!M?|m0wzJRfc{D$4WKe* zd$9Ru3j-ma0qBBLaH^M676VE!_z4)?vFQ=+hv@btb6qaDBtWeNVr0F}|6?xzQV)WX zaC`!s>J=Sp<6)G}Ws&@rm2DF$dw^~w0nz^~y9UQt+F|b>kgP7s9*h~7y(M_}E&@6& zc^BHvg2#nbzZuk$s{Fh-pkvKm6g2=c{<_p-SI{QL8LuMpT;-h69bG$P1vC^w#Yup- zOD1&0o-MdGc<{Ne>%iMC9mkX}9j^9G!r0%!Mmg)_r|g@XGB<{*bKFR>RSB%xo5McO zswRJAW|~(1%RX(nw||?Bx!5LcOw5o^rs`wtPb%Q3h<4uF9C$rT?$x=j5n*$}zDECA zi)Sdhi(N%h@l5Hdlr@Tqiq%y9ss4`|nJ|gv>Y}`!ubJmPD{%b-g z3s?o=&3g~o=V(MNG98LzKgt6=1|dRCEA!d0MxScS???q9;oOr2ZU4)33$2l?^#QNj z+}5I;R~iD3JFVj8+^{Se3tWqO`ZxC;IrsxK%DZeg(*mfk8}VhmEP`X8YDYIecJAwQ z{mBQ*YfD@RKT8jXYA7+_Fg|yeVdWc+BFVvp;Zb{L!cub-b1qJKC4(J z>~yyxk>D4HUTDtVvk8CTMI((wUtCniiHN2qw7w^-^h?r*A{Gu;{eP9Ia*T>DuU&V(}z950g!>T|o z@)>+X`%$R8@=Dyh^uGtUc)&SkzO;~ABA8eD_l*z4#u767a~t3^J&oT1p{m;EjaBL> z8uOLLvDEMLrvJ02O#prt2_|9Fz%GqNK}oZ)J3-2ck1*`zrKq-QGd1TwxxP06z)x4sa{sDxGMe|V85%ZYrN8F zE+C%*P$u+#QB4cv*DhbV0@G^9YYuj$Pw7j@-l~tcJf} zdacH{-kCF8_2OFQsHV8-5=f03!+P zLL$-irSIh8>~o*LY}ieC5G>kj`lylKWf2}HGFQ6uY17-fF_!ukGkB`;O)|(r4YX|{ z9#|{lL+QqHCdN;>Rwn#|3))*pKW$dO&MAGV<@qt0V&|A4*q?Bg>kMf-b>-?v$R*d- zr0%1@dk2=p2NrM_loXE7vDI_@iy`1U<5I+c)38YL_VrBKaPbRUCo13ZWEZW3--G&T zDskUse8!W=P6c3O8tHw7wt_-*=<;9ZuH-iTN9hm~xN!87clEud7n=BC)-lw>*s`ih zC=9&}VEjEQ=mjj`=@X2TyN09;N4 z^8P6MyyDw^M-FcyKXHQ_@6FO4eTybC0yFxG9Yzv>;^HOEZLcHzyZ>;3QitIg;5GVq zz39`k%UAj&ei~C=nRy%Ndz|@QM)!pmm{q7S9kiT159B)iV7P5+5AC2ZZiZ+73c>om z2>o#SNVjpBUYJ|e%}nb4#NvrfD89(sHo-s8fS%&XockX&NN`NnFw4@QSdQPqJ^MrC ze}%w^+ak8g%&+^HC@lN+N_L|<;n6vtUtqNu##QBMKkiR=uG}R>+bwZ zxTuUE?{H!$!V+z+5vSK1-`(}W`eJEDre5BbyosnqYG%kK`|PvP%|rjR_@V7cFq_m! ztdZGKzj^+?*I)fe5#kpbSp>V^lNJRc&Udk~PSKdgb9VXQZJD4K-=&oFXwm-iZN@(o^fuFLu^RLEp=UA(}t`c)#{jk*Jpl4~H ze`#u#7H3JtUB zZ7(f3IceS>cQK)ep{Jwr0#TWOw zR38B#Un6XlcQh>Tza;AmekSf*nEw_K_Hy;Nu3`OYS^d|i(Ic`$ry|UPKrbOL@A-@7 zsvcA%qh`!(1kX5I%F##urqIgP&!9OReJ96t{O+&RwtZx)jPRdjeDP&ZZRs~rmFIO5*0w*ZNQiLvgqQ0 z7O40mCeevQCszLeClxp}-;yY(G@@32xJu9e)r$I&14|W(D5JWW-rJV8kI8`M0L@F; zRp#96ibEehC;@a35f)ziuR<89!EguOUHzK|wt+ffTCaWiF$N&}ik|Y^&KuI0{~`0J zkw!dR;v(BOy=b-c3^L5hUov+p^vD57;Vi_9-8y3gsf+mzY1j?Qyn@kUV+ll zz5np-tClWZ#UX$a*M-4$*m85_GPD?C5TJ0MKGZL`g#>H;aZ(!3S(AjD(oK&`(FDYy z?;D?mBu=B*p|AWbwxaRiMAKv>U+4|!TDaUqAclD5ukb)FVK{~4<3>gMF1`36m%Dxl zdK#t8F!(ZY8%iU}*BFFsf{*nTVF}9D2$$~7+6+Hl#JpJcUe}W6E$66RuvB)bQ?S`R305&CIJlMdug+8Xf&Ud+YFb`g z@w4|FmU@0vO~~oedb7PczS#N$tO|-2TwZllm`BC>^hH1((!(b|?M_ ztTJ|WZ1bhs`U1uK_`$N$B2j_qA|OR~;isWa##U02$8A=?dVW=vxX~6-AvL0DUm_OQ%B0u=-MvHY9bx#({<(tz zT?nBCQx_OkE~V^tyMLGxnutBbc*z+17TWSolmH|_?G7|QrI>79l;EXjygeUi1Ff*p zKrxgn=`Zi%=>Q*8Y~=~X4NLdOt{N-I6yw6TPpN5dwG+-Z{&2a*kG;;aa-ZWVM0w z5Q=bd$}thTYk-B0LiP~s$-w%i1K<>1tEn#BOVRjz@)WMbo3#l}ZD8&Z!|f4u5k08a1eY3*ZgBK)J8F8^Me}7OL!ZND z(>=7Y4HJAFCC4Ynx%l_!3u^lbG(Xt*{Ud#CH^V(w{EbuGAUD1UUFmOE2o-V_4+{>I zFWViUg4qPK-Z_5exA3o5_6LHS9$E2C{A*(Xyql0=%;O?4EX+fvE0w5^BQ{r1I1wFl zkMQ`p#hhxy5hOg)B(weNyhe7uVB%X3sYZLT3=;>Y?i=rD2N7*7;!%IwtWX-f^PN6@ zQY?Craj6R(_zfSy@+x-XWkZdA=J;aO2~{e%f}>wz-AthJUABN>$!Gj!?=v?Z9deZs zd)Z>4V(Y+OgwXByAG?U7@d|-=P?P{!x0A7uaG4houb6~h3O}69=b3;fH^MMRmV=2` zl0AQ9AsG=7-^M+Y;@-e+Q-=@z4-%KU^HI&S4~;r2Q|~pM`oNz7jsFi8N#N}Jg>X};KTl8>&duO!awhepvgygZ`2k$ElekX620 z7~kJe3T-i>^btPir>*K`t90BSIK_=K($Wfb!tZ>uG1pF9Uu3)+Z50IYNSXz$%#-Ge zZE0mTUF{WNgX@!W@(3aJHOK3P(DOy_{zv&rAb7mS$35E$VSYyTge5;CcGjP2 zanH1%lck$Kl`wI%%ltuM+sZR8KNxp3LPr58I6=qxT0PlIGcN6+x#q>3c8{m`Hg3TX zrHzbKd`ygl|5+z0$Bq_ao*%lG;&6EqTFbZ5p2(#Vbf_b{M>meWtO)H5gOr!#UaKMC zb*z2pHy@lvD|$#5^Bt4?&STU^?63L(IN9A#5i1_9nB4cA_7}Ae>zZEo! z1EBnI8NG)J{CVk%X9FX)wp=mo@BBy18$E@hyRns2!5aHmvGmo3-QlT#Jyzdu4h1Kd z8pOiEwk`qCMilN7#~j&|=B@JxX+dS9&(AhjayV9yoJIbZ9NR8`o9uHAJ$IXsC(dd z$o}B|t@ZKmYGUn%wJ}l|)2J`iw z1pDknk)a(z1gb}D;nTTODHuHiw0HWx<{C0*qsi~2!sm%k)ZP(6$JeJ*m z>+uckI(<}`Mdek`aH+yx#^)SOxG`eJP3S{N9TseVybC&7#6a|$3RKDb=jAtt{o5PE z|8odm)&ct@U!Qm+9jU+jHb<{x@$#`4zSkst)0mNp8z2j~b?C9>Jf~TKc;96I-bHZ! ze>9oa=lOk6{zxsF!mvj1oQ%Fc=*Lzs@p{Si9^8%@9E>PQw7?NYH6$yht+~`3JRXRhG8VzSFf4ng|A<3uhHURs&I>3iH}y?a$R~j zSdss{fkttV=*NtoA${Mo|P`WI5^UQ^;?DJPe-c!?!m(v=?kJgzb zsUQ&lnhV{lCoiBHNih_Uzi<6q`lsFhOMSBU%(3E`m~F|(PB&kem2EfAJQVOe3k1O3uOjQPgP>@iO-aX7~M{?gJuz)#bzrO?SInIQYBgR?Tdp500(_a^@g=A1joXy zF1LzLs$AX#w4L{}#NM`A@m-L-S;eS=&xmX0_j`CE$@{Q6{+nLR#DE(yKqlG>66Pwk zx^2!Sb*euL%L28_3tN#3=qPwb&rgijX^V}%gy{=m#aqj83na?znnAqNy<_Knbs5;} z?vya)cmonQ1NSCb06rK%UPEVxoB3Tbnl6QxcL6fb?J$~=&2L!9y;~ckz(rv$uMmFI z_OPDvFS$z-rs4VH7fUHaggtnXK9%h+UU)Gj%2L{y8YtF)QTsS2BtUlo24z_buU&@! z+nKy20X|?n+1B6W$9x2IO281tsQFxQJ2e0~Il~=@<0rOwAf<3w@ED5_kQ3gTGO3X! z{G5vt@e~bKVQS#)RSkVQOeoWM6%Ayw3(-H>Z+V!6U&dHb?RSoKLI8aE3{?F}I`PK= z)PDQ6uYD-+p*r798OF|}4ckqCI>b}i)h(uf6M{^5s(5l}w;dLzB* zrRrKa3v&ZtZN9O}8($5V)}*u+2j|z=K;F~cuEXtY^+r}=o(%!a-CX5os|tasI@@?Y z4*)XM@C{BbfbZb4eH}ZSCcyPCIbjZXFcDlJ-Oc$u6Oix@3z7_)DFFd~KprFZL@Oxy z-Ob83nghUsv2tfk*pqie8l!vh{4R1C--gUsNMBd%L~S@MXlt!UDfq|sth#;tJ~`n} z3ShMxVlZNKfGqHI&9`IyU*|;_0xI6cWIC8VNt-6j_b)P)ljQB;D$EB5AQPU2C0r{? zy|fo!~oQ<}IGU?ET# z^V-v$Q;*ewu2`TQ^Bh<(kr+i zB9Y1XrH!8k!<65=s(ZzZ3Mw5Clkz(d@PGzc;Gl&BxCo%-QU^kSoDA-$ql|yA z$Hjtu9pES?PgSFCCjv+?z_|r}{9rgC&`gWLi2*N}KP-E_wwQaR3W9xF0jiFB?#$i7 z!~;8gPM25!Y}+z?6R+7pO*FvTWo#K3^5Xtqj1@*K!9ayCL69_caU3hkXqS&9a(=;yZWn|+3?k=&{ZHr+<8Go#!Ra+<|=rNxG-NsLP+gY7P;tzf4 z*z_2fW2zuNI39bYg%@Ha=;^>uA@|FgMK9`&+(M>?F!CA$qzVg;i3eg?k$=4(*{XqLX;12*(tDXdP z>r>9yW3-#MdLCFP*=sV5?QRL{+wrl-cirdzIlDGzUf_GcQ7`(b*Q!_HxW75xrs7$w zFyn3%UXLq38S{aMESUXwVx1lG50E{H1z?;;E}s$rmt*Me4Zy075t!ftx!x56x2ax`p=<&Di* z3#FFc`pB>{0PxeV7D!)PGeH^Gw611S*;3fh8ZGKMOTL?8gNdD*M`gXSqzE44e_ z<8flefSUnA@~Zg>_-5;t7KOzq;tTKQO|M173 zO$>k<6XgBy?ms1tA~9fcJNyI>SY!k?M_%B<=t0@*=74{n0q~X86}xduD97pK2yfl- z$iKO><0EZ~7L`dATgaDejo5r!{5*_xtIas%!;!B?l}u!`L0RGZ#9n)|mX0ac5@|!BLP?DJ)@6PP$I|3;0>l5F1+J5|>;ab_rD)GttN&h&s zq5ln}x(N%S1x)n0f5QXD0zp<1f5(UbH9&lh1(Uc1j7=)FQ-uetygm=;R|ReXK2$oU zcrCKZ#&|84Lal8=iA$MqiH(qN#;~q!3di+CN&LJ=*uX2@-Ee&4 z4>CO*GwJoWQWZt+a6sO)tVN%85eb&L&%P05~TKn3ZKOsRd_y^2G)-y6--oOO8`=r{*Et zEQNMg#-eyQ0Ush}ZQy_e7{-RAHsMtLfa1Y0W7Ojoj1UmvUjJv&6CeXV`vY}K5CUKU zFSY{1)Npk$JO#m4^@Yf)tcl3#I*D84*|_m6KJAvyGhVYamGqb&<9l~Sut_|DgEL~D z9Glyv8`hJczS2gG-*)i|Uc@uch0V=GdW5Rc#0Nd_HYVEcqA zd(FfuzNGEVL=Z=8o+pT#uGa#a8NQeLH?i>)L*+XVCAWa{jt)R!b zn|liS^dJhxs>c(0G@JxEqvL2Wiu0|xxP^zW+1!7XNQj;5ey}F zk;}+Q!WyB)2M%6`U}jXAHM@Dal*;4!%jY%v^wte9`%fbuwRfX>UumP`oA+t`-mPF3 ziH-Ov@#6dTa=bJLgJetb!EKpeO%T;Jpo69(+;%N3G>sZOSsGZwhSbZ@$WQ_S7N1I; zV3Wk{ZnD5<`{;GzcO5G?Vx}SvK-^C_g*URXi={G-1slVc@Pp6cF@qq1ln_^JeG8lb z$9{vCPG40jE7gc*i9b(YKaQ+p@gxuQapc==i;BZ&3})Cmc%+^jGMbmD6Mb2$^Pi1_PIABTeT zcB5yO6LBF07`ZgW8K7GK9-)657&|#d|9~Onv!(x0{63H)M#(>|t zIf5yD3P=F+9H6sQ3*WagWf9?`{{i<>>f3cb3evs~dN47G$ zkZ+OW`aIzX%v^+)<%Ufn;2P-Ue)slt6e$TXm%8dpc%!1lC~C=pv=&>~3GQzOXto?s zPuzY>{;C8UY1G5FLNmeB{&aY}ecE<>M4c%E6Ig?>(DA((wmC7?2#o-L)*rUc@wijf zx)<6lJhyflGgPiz2a7TrmI@Y+SaQ8}9?*URa+Y~x4ccP0(!@sVOTO!ynL-k^8}a0? znXOn#TNCbV4fo20beq@W(PDG-ij!n{XccPDbBrT@(5;CL7k!&Q-t7G7Tjw%=kNo17 zf7$t!Gs?8i!V6W4u3>WG2ciwKfgpu8;3>zA(nt&Uc3#P_LSpMB(8Cw7{s_cQqbzN{sxAjDjn^UsF$ zPv|Wu8q?xn|Aa&N8=k}oD?bW2SVEZ}UDH;~0~@_SPp$HF#6QM#j~JL^gBaFUkPAFz zf@vD#e@X!L2Qu#F}QAkD+`f(?zc!pNm05WCLmZbyh6w zJeG>wUw8^8o8uiO+b-)iSHN?=a#>#HnaWHS=?cxRT1B#wkquS z_^GC-={dM{oXXk5Sz}D-Yc`(EKWI!SDk^JFKI&cOT2+!az(y2LY-VVkin=gsWoP^V2FfikaRERr^q@c*aMZyL*5}hUqADX7+y#UC z$zdPHv+xX+!M;%&{q(~lPNlVuTdRXL9UG1$#aSy>7S{LJD^&6xmr^+N{_rvJW{&*A zXsltX&3p2k=4RL5xPoV%e=;z07b8@ z9(?)%bx6;Y^;`bU>Y3$gBQj=877%#|h6Q2e%-4cO*3b4qFvGv2n~c1;A&80d#1Y#W zL{*o0Ukx(y3Fx&)G4X^(F!2dC z%R5C+_F6un5^)e9>1m}D+yIp+*Nu1@dTq^x6rf2*Z=Qj0nPH0Q3zMJqz zz6evK;LB3^D*4E%3hhr}kBJ-=9?A^f&i-laPV;tAd1ikGJwwV_KEsKOL&hT$kOs!r z?&g1kwxH(Avynzq=;(VP^8Hv8^yh4!Vk42qDbP@UF}m;!{Aw_n4W5wlJXb2aMFx?sjYRG7UeaCeeB%8 z1(uK6bC0?_rcPKek{W%&CMd|EXh2`{vdh+kl{0(DqD5_1S!*O~&BLVmC3kDXD+YF6 z|Lj#7UXsT5@&WIXQC&eloSJ;~*6G2Wv!s@@Zf1xA4J46#peiofX)O5iC)55PI7Pwn zvfkBn7W&j2U7AU^ghcnH3Jr_{pW(=V1N{+3l|q~&3ieyZ!3_2%q0ce1`~DzoHP+{4 zvMWDOiI;RMB>B0KU^4ik@URa-c{Fu6m&W54XwWo3sA1d`RmkCzCr(pN6FzYzB-&fA zDyh(pw+6Wz2gd)yqY-Np;ZFIB3)PBkQf(_(J{zy-6i3su6uL-5>98MlS$CBb$Gf5d zs=>jiye-I59?kxa^ysToO~O-qv9D9WLpqa%FdPoCSlZGQO|X2bmRz}9n9n)<n$JY(c$KDq@d}Ib;MXK1n;H4m+pVSbKz7#udyuGYuh^#j4s^%6 z5+7|NpCFEovQMlC9-fl7-OEO%V7$vs_E5_-YiF1!TUX~F(3>ELIws!7P5OngXE78> zk$l$it6koPx!T@i9&Dh&cv6bNT<@)1$`-8V=uBbtKWX>E0snAm+cb{1z+1ER#_!2@C4y-bQGpHmJ7DX({4``U>iL6;?`tA_BnKb$W)TbC|x) zx8B)VXIFii)FJmw6yt^erjTb|A%1C|{n{ZrU=W&jP&#dBKU(^&`xBf1evFOQTw0OW zGDZAyyl!SiN>&}if0$lPW1{)U9c);>o!>u|-`@@Xs(t)#vlW4l5wc#K4}vi>Y2+0A zTx1&o+zC(u*AK$xteIW$k1Ft}8{T9--qMFu?A&AA4uSQnrM(=NoOKg<_DdB6?zRWur6d}QWVcN?MWzLkHbd%NsZR$S6~tt`^oA-dW{Dj zX4n2$i|$}Gw}HZNOnOzR6OTh&n(J3MmZ|-3XN9qnuDa)o_e}cC=dUOnw@2CLyfC7R ztn_;?i%edBqO%_=P=y_!{chj=Ol>Y4q75{3zdx_JtcHKrr2o|x+}2Stw*a3o>DY`i z3`YDe4;GOpAz*J!C=?$SM)oZQ`=O3bhK?>oQ4ykp+i$D`!nrE8Y`Q8yFOn`!@-NoA zqK6oUTbGeXM6r;EXU0zayzBSQo9(k}&m|kYjuoq4JgR?M?-ez%)&Ixfy<=_PbE53I zb6)?q`j55OPaV}xY&hQ+9a)lTQ|l1HHL~`*ISuXNkPnS#`)ji=NpNl3@Koc9$C6dy z7D3`C$Pw>P4}xBt!}HpNjZfjl@n}Ef#J-X(B7aSOc>^VFFuzQTPWoC6&%!`Fy5#MS zvrAEwd%<6T9!~)BH){pr!J@DVTS;h{2qr9GzwKnJ;=r$*KCtL~ge|?l9)*%I%AoJwM<4j=&LCsvu+@0HN{=RD&Ss^%}a4d!X|N#&_PH*(;JuVg>yLM zSv9RtqX}_p9YjWpB6Np(;A8aqv&(Veg*^`>i#=JcX^)Dpz)*W-ryyUsWWs>)U_^W3_IH5$@%&Z`2K{f zRR+3x6rM1RZaI|4pk@Fvm>w@kWDLiOHDoVx<@-lIm_KVy(HYiLE(n}5N2Q&F8}Fnb zG4GXByC>G#56JATr<{z1(d`-2zil7yJ#T8cOXs8Ni}SgFOP9YiQ(=4)JU|xe=-H&M z6W@40l4@c`tHY*C{S)Y2Nl|wsZS2ojDcsb)t>S^-S9J+wgumZ7YlaVM5}w@4C%5U2 z9DSomNci~YNr2!pt*n&#G8KKeq%O}~3MX|7I^*+F9yJ}WbJtSnlqQgsT#js7WPLms z{V{Lv7g)Ep`l)_d8rwVWqpk~MoIJM|A8DoKETiAc$%|?CNe@T8h%8ysKWloEeIDv# z9Z;-xLdjic0oUR1lgh7YN=|H*>uzdFzAc9|?G|Y1gv#H9K0?VjIq>jhec!r$%2tj}O+Wx{{wl?GNqU`$yXG zU95v9K=~AJKnyF6CdVQMN9YlAIj~!7ge^^x!$`Esk9%fO^}T{<Y7W>lTv2rC$> zE(B48_+hir`54e8J-1)6jUkhHG5Fepydps-4zy1-;mD*Ah5HdaE-27xRoxWEX<*Oy zM@X>D&F)X$5ZUV%>%)^2f}^7^lmv4wi#tCasggz9U3<^v&KVgu*PHi=#WJB)Mr|P2 z>BG~njtNK90ah(I-{&PkK60OrZ{D9h* zlIVA3soH@rul^4?J79)>dBpkhPzILv(Y%Xtn3axeu z`hDJOfzay>hO49cJ+|R{(!&?)KTr#Q;Co)j%cC1R=+p`{2IvUX?eYOk1Z(Cn#L7qJ zSuh*LLAl@ko;2`c5Kzlir_G7U6>u5ux4( zoXprqPZCfdW#X?fkY|lzGjX!ZM(M?ag;o9N$L7RezTLJ+MfKJ51( zzE}#)E2ivRtGOrGXq}PL7RIRdfGQC>mh_$6y5sG7R~|2`)+N!qqBKBfJE&_amqt>Hu19Xvpd~};?AR6UEl>7tS6qNQ_J^H6_;xy{Zj@xvk_BZd2Fuvy`vg@!OXqgjk)4Z2lf*$bJT5g_3RFaya$#>zI254r0 z8E^>&I=#R%G~m`q7;CRMSca=T1uRJ*P#Svv&cdUZ=UU%fNW_STJtXEgj^gnTBrUm5 zY#~k$EAukNQ~vWfX`w1D%2070799q#CcXq$O8wkE)qq)-3WyW;w4_`uS@2^h4HXyd z^}`L`r>liz978lQ+9e4za+_cDH*c|83)sb-(bVaH$NY)z_l^#QhC2G@ea+JuFfn1X ztEA;rGmOD7OX0+WaGS0;m*ILxFeK)BVtAs0-Z ztg`_tj&sE=-~ogpWPc$DXl8}@Hg=?l_^O9dcPU0CsTZAJx zUlex9V*Rl-yxU_zO87#wI!8^eA!&RaCWk6{dQ~Q0v|N&{-k#kanE*MKj(>9vIio(% z>Y$qD6<7k7AQnU(rqY@`jVmT8YT{EM^28r-SnYZFt1~4}MpvL-M z=zP55;MBwFuc-tI?vyZu#+&7XS)c0b?_7DS1(A7Qg|s#Jc&UEbQ}upSH`(SnMF{fd zPBw>W^IaGHxZUsKD`KbYe-!?_#Lu=z*hF^oM7=(tliR<1QZFyNVklNhyDUn6(cmm* z$joKikH9hom)#wOtE8$r@=9ACf~SyRtL#BSY5g?QsT z6alO_h2SG;oEFm@_ORJ98%QTCiF`0%*5ca>uF>~Lhxa^n#T}ra?1v*5GklY}2XV#+ z=E3kU?m0*tKW~sGYmZC#g5^kP#j&n0PM(ie_5Jcdg@j5zDqAPzcYO`Yz2R{s@+qXX5-F~-y z5Rx;ps9Wpr)+gvAHUp#)?a%kni;x^AT{r#i-s7gTBcroDc)CWKqP(-PQFI% zP1^*uej3NHkk+K2XNxF;!C;*EGnyt8eUMfi>ermS6ozjw1LaR}BjhR8l&}(M+L>;h zbYo=-3M8w78>eWjnm}^o8+xtk_4nB6E}o{vt+BE_DViwkPz$VfJkCiV+8DD5gLo27 zaXT<6+-K@}Z(vcQ^w4K;o0isE0Omw(}<DZiHMFm%jRB=$%qFpN(k;}t}9Od zSntf^9d?3tjB9cLpCi%~~xHM~>YEC~<{eA$*_D5|TGCaU{^>w$Bw zn%uDZ$=YNNZ=8tTx#CY}<5_vRT(juN2YQU-oArkBDT7n<@0L&>qO_K+q?Jq3rX!cg zRJk5q_M)CiM|Z~~>7_<1$JbAI{apu*gQ_q->gQ~rFMe%~yXg-shYq2WyeOA1gZ!#r zoKLSJEgg~0t@}@G&+_*TgWy>|W1_AO*M{v;MpDzkJeLj0XY!b6k`VfB@O9cAP6RK$ zS_=4)f}OUv>RT<<)1%%u#&=Iue@3cl_Y;cMuxT7^CcdCz*Jz-lL&V%>aC}t z(!n)OSChIxv06Vq!aR(ai+OR@McO$PiIWgf{7AsnI=3hL2{U0~%x%2~M4dZx_jGF> zXeU(Aag|KP^y=@?Is02sfFA){^7Q3(i1N$4qd~zq#Q~R;`*wV3%p3zlG;j2X6j5vU z1f}3PkIgQWij211gl`8f={xr6MYcVBar%hEfSr1ScuM}Y;?)vIK>m2;^T?n?(bT4? z*3nI419?uBGmg>p=az+Y=P!7)GgV9H)mw^&_mzx(_WL5wU5qp+tnK~?V@5aPOY;lM z^s9*{OnQg=AD1n)e;qZ%Tm=*~d3#Op=Uq-;MWbiFF|{4bZ(ZYo08Dn+wE$f4uOIIp zYq5a1FY*=Seb^wWScBh~v+?g6L&!m=Nicp=l}HEzM}lRhf*^zgC(*P#7~+TTQ3T;- z5Xyf$!KD)viu%1j`~FLC<0kcp-NR*5=HIW!o;O&*L>VeHMHxyOoh@%jJco3N8?tH} zQTdii;wbY{g~Rt2i!~&jM7VP$GITZso|CFf`I<9PndWz7-sT(YSH`*bvywUO_=l6B z_Y%qfwe{#B6{*tmMC=L;(1{nXJ*i6ujT%iL%n{5 zOB*MCAww&Q25__8k0W*?%JyY-iww4R0|h^CMG<9xG29Y{tmk%09!_3lzWh~L+uH{B z`mG*sap{-7akcHPx-M)y3pFHIHautQJFbXBD(A&$T+F+C+vi=pE*VRXooqu@P;Yng zd!hn+JE3;hl)Y%YsWbV6wCm=_VyJrMT_$V*J7>@vBtt=lL7uaKBv}Yz>9I&7%&uS~ z;?ejz%`c1NaGxtfth3EIote3lw-%e;%@%YMcq2ZwtKepN9OUj%1@y3m4Tcm!dhtnd zg}%K`qq-3KHgD0e!cu8!6#;S)GAmW>=r_!^Tig%;sHyl1zLj zV}5~Bz`c-&jx`**S2|pjKLr{m9BO?01{4p8KVm_vb&tuhg&4;~z8w!rxprID_9vr} zC+J5}bDD|G`?jLm75+9o!WKl$)YC}6TN&ViIlI(ot zy*eWFv&FW3ZTn6R#A#W{v|p>nS$c*YRKss9cYp4pFmZX$=N%E1K00+E>vpG=3QxBLQWBR8F^HEXwTzlmGJo+Z3Uo zM?mpJucLPe3-0iT7aiy19yLsIek~Onr%5f}BsGe>wP)@?J9D_yTYV8>T-yG;WmgvJ zd@%#~ajmY4@)W7X!9HIQsWSTC;###Xkgs*6#ckkOnx^Jtrrn4k{KFQ}u5eyfbw+R^U=C`0@{|(1ShCZok&YJ?GU9_L z!u2&+m6=|Jzr+5B!CjfyD^l)U+^c`;)3(1-W~791jV5NXz9?<9;itCuNyI5@t&cwXl+Y8oj$S=MP_dW1`t zx#YB*{<7J?uqe3GX}Pj``z5ku3A)@|?mHJ-6fEaDp%pXVo4x73wXWXVmSJ>KQ4$Q{ zM6?~-xCRKnYgm-_PT0Avi&S(vYr@EpxoEPlioENs!m5&)x1ID zf2N0mj^ivdvoGAOS%d5bD&>T>XdJKn3*lZfh?`|ZBHs(^Qyk3AG{=Jet|i0WK5&~d z#9V2a`=ON-RvOvK#1oLYgGgb*wlAJs@$IvVjsjtD2sRHyN0mhx*kFN ziAn;Y3QWknTo&A3)v&=KABPBqOC@M&ZXyL+U6{^U5(83AgEb*+G1O@Cmx^DsOf`5m znoDd(aZ{U>XBu8UUc2LZtA^e{B!;uN73UF$k?n(HHRIy(eAR@J-zlpO?5rcu@P1!} zb@}-4kp9VW!nVcsNlV`O*;4;4-})UmckwtW@%i$0qu+3#e0uYKrj~q87{=tC>Q_4M zUT%Sj`^LKGFZZIm)X#MEYWGTx%cS+y+WrY;>&tb#-nL|~ty1^0;d+fT1$9eSBhG-y zIq|n`(4B@giXg>b_PeN&-%u0O;^lUbbHAlcFI;x;`bLn?7;Oeou;s9rlT<0@$j#8{ z1ov=)i=VH+*s;7q+l9%3c2#j-b;A;GnH9CWuq+I#fD|k%vKrcZ@Iw-;Y{O!yoTpKt zBc|ClCpDZoZOq$eD3)MDjJx60zZbADvqs3qGPi! zwqJKLIbDf=sz=UG58SK(?R3jH5z+XCs^Br2l?WJI9Hvc7D|GNEj@Ty)v`)XFdtT0g zyL|Bp_8iOQ!HEhep487#UP0SbQ_?adM450V2;3-CkDyc{mOIo8PrG|^=tUjSsS$3< zBZ$u)hSxWk^!=8Yr12BX(M@VfIn_eaC7;>D!r)fXXt8gwR1{mNpJuc#u^rp8^2#C> zH?K&jn{l*p$hJkTlU2}LgI>YrRJ%^Cs98F^wzT4N%2w60A5Nq24^gwT^K1=3}2mdES%lidbU#~Pv-_x1|0-Qp4y_i(-T zdiHZ+1mha3tmiULTF|F4(!oH(U-E192zTqqVB3K2OmTn3fd+cG{(o+^hjcPb$9Uis9+biXY)=Pyal}E^vbX zEQc`aeEWo5yU^2z?-U^U?1ws^=yAlHKz`;=Bf+HkA%-)}+2_K9nZ4}P!XTh?-nPAgx#DoZi-dpP{QPV` zcR8EEzn8CUW7)$gEs7+X4*yc8y|NOUgEhO{oahRpIz~)MF?NwPT6kf@^S-Dmo zB!B4ro*kuhin?eW<=fZ(yZn8`_ApI+gWuDC?*OmtgFkjz?TinOA>)}X_-qO$!XfxD zwsti zec&?WqRWNast|s-j8!GL?RO`{MLHn19P)+X^%GRuJ#nVDdIXiTsTbk)!UNB&f-&fb zNH%E3ITV3885-`n-}<6Eu5~_c{efQt$#m)w;<2W$>wp$gs+JAf;kAah>%T|$lH23F zI(jr{vB}%UyHRG8^Tf|{&u_vlo^g5?9#ePtT2S`ZDZ|&WY#XI>isP&BKo|L`Kj%}I zHJ!_3mp{G>!kJBqgc6KRj{#d^p&mqGW%Q?#QFY@{fn#ylNb_ zkmJC1?)-UU^}8V7*d3#T7fTsGnQl}3Xw5botJMB-`pA4a{Z~x=Wla96_Ts_x5anMM zA-#!vomNjz#tBwVm1*yRJer|9=nZKa5RrLE#)9KV@NrJQy*I>ntgbp5qf!&#ViA8x zxYh@=6FflTHmMD>xrckV;JJJigMK1NT#4FVlGxAW8s0Ii;+NYha&E+Y>N}@X zt(!9|{VHonJrGpoOD==%d;ZHQ=cMPt^`<8p;Txqno@mXyw1#z+dxnEd8rm0rblRj| z6}u6P+81Z(64sP$h_^v!6!6TS4V7oeRV9SaYD0ctca1*M;V%!UgHl*ULcH>G=9t_D znjNm+_vkarb4p=f3%UP#qa4Qo{_B1i>BDl#f5RY%U zZ*92(0My;8iVFI8OPGB`k0||Y*@vp^D8F5I^Vca2R=JzBJJDA})Yz!dl9=6yG-bjT z(VjUET3?CY){j-A9rKPOv;)hvTv8VHgFeRr>#dhichW`0A3I|neo*!bIQ4muQ{OSS zUp z=1H#RjHv1l-B4m*CL%Q1!?t5DO$p)zoWBf@%2_cP&Xu7r?5?K$=32VKQRDSy`QlQo zdoNB%e(dA|X}U?cezgg{tWB z^3}tGzOb>V;uGsiWK1aO4ZKx_cEo7BMzZiRg%v(hC;Qs_UKPJyP7vRlX6@}KtIZ$| z)*ah&r#b3wBu;jpE66fr0EuI#s(I~#{W>Pjijq(jyY`snq_!SqdOF{#=_@n33>Wxv zg&Mz*X)PMxSI;aSHt(ZE8hP0(l0r52#Ag@JpNT@*+4INUZ7fEbVmPjKD(#1^5jxFi z$xLE@0<=SC56u>$`{RY~;mx`PbT5;u+(>y=25R=OOFS7;1=cX;A{G%^)Brw6{Epo@ z%?Yz{hm6~ECdt)LE8(BA=;vKGE{WPskvLuyKb?yCF(kxM&cLajlHqArwop%JL7$njHVwe^1!LOga zp3~YeuZmPZk1&ervc>+x`}tfNN3!3ydnKIb?RSXQNdCJaH`)sMGih8`y^Le(HNHbt z&^gTl)1udB&G4lkk6QCB{BI!y;0pU&<_e~Ak#b7Ol}ni;>yz;H+Jsxa{w>O`0hvL; zHJ)&hjAHa$@Wl_)s4H{UUX<0VNUfal@T((Aslc+pefH~|Kue}nm@3<~Wu9vG{?C|i zrAIORhvJA^tp9pv@FBj;aC>Ex{=F#jFc{k>uUkQp{zQh1F%2sbW7e#na+)1C-!{2w zJXATRNhuNj!*8_+p7U~`H2vD#zWUxOI0PznQh;r#rE|d}nOe1>7cBY;!rUScPm$cU zLA1CmHm^H<7nB}OurEbaww$$!>oFOg3hG%_R^jD&LjPaF}funys;}1BDN11?}1R_D|~aH?IF+&6s;+R$tOJt zwnl~CZ7%11zbWu#;xnHBLyb4NUy3*RKy9C>CGOitUq*WPMCY=tpN)nsU(60Coy44*V*eLXfs*Ay)U&0^SQ?v=MPiF@-5C{{C>RW~w5C!a_+i>U zT{E|c6E5>)#O86QY1Oq=fLS$P_^tZFQrna1x$ta&x3L6Bd<*g4-zuli&XB?J6 zzFQmr@)OLkoZ@|-**>ER6VW5Pmi{<2Y@hBp?>4HMTJ>U4_xEdn83N3)t4e6q#QM$7 zA=mAEb!~7vcTk}jN=uLxRHz5RPn{KR0XRB;U1|968mG)%r@J@gBYE5THBO`FGD50} z9d7}8P_InwXEH{nx^qVXBwjk+x|hec&daklwI}U!_g_2lWN3`gLXfut+#s1Lc>0?Hyh@%W$IM>ze4!Gm75$ z;QO=3T(Ky|wO3v6cP3+ImeZ*U;^u`w&KvxWYP~&vl{+N0S42BP`F>xvL?qXLlZ?&GoqLy9|QfD2sp2C9Zs458haqyXOto$G?Ef&nRnUnA0|15 z^$@P7*|=fNwsga^ z=K~(bA?RkY8q)C?4*kK8u<6$2&0_9&`g_3MSo4G9dxsCnA(wP%?|z_s_e7f#0#7Zz z4Ym!Pb(S31aJ~1uV``XqREv9qT)Dvt0)MN*{QR3-H#h#;T5m2eeBdVEBoL$t7j$z0 z!9eqGeleO;@PGb-{k`#*WH(pX00?~Z3;UaIu9*Mko2$PX*P9Cfqfo?TOu8xdH{JYq zlm34<{#Q}h-!lK#8ey1k!KDAECjR$_VV?P~ry!UoZ_@w%{+m1h`3LyVQ~$Z~zl!GE zqQGbm?tTxsaq~;V?xPDf4N_SUhBkbCxkE?>6H^3G{8Bg7wfB<2;8RGpy^0xj*SodX z=n$Ze9DHzY07psxC4t*FY^&e8hskNLS1TH&6)}Oe&_vido|LdZzR*em zCeZg#H7C+9*LO%CCzGqAgfTWQ79hC%@|k-aaLsx51?F`*k+|)wtHbZxC>pev?>EWR zt`K2b^AOlGt*WGm|4)PbX?AEDs4FQmvw8dz$zjWwHd%w+<|n+vpHbYDktimB^~tXO z$rH`{)xN5VFVfGqXhA|=@pps zF518JOcjZK`!iAgiPmT%4t5SN8En4Ll~&W{?ol`)-A#=WS!cmrd@uDn)K}+1^!{LQ zErMXT%S9x#023h-8#^Dyd{Y^u4q^FHaiL*D{bhF+Kzw078&c?M&-2l;cTE3EGMAL57y3;(8p3F^2pQK#P|k z$MWR=>+VV)*-E?k&6P&1MO)jnmI@g))kRuMXhKLB#7wEqplD6e#nMWpS|qkwN)cLy zQA-&!)m9g+NSI`bR;RB-X>}PSw6v&J&9zRD4uQ3ZCRn5g#3hS zvr+3`TJ86O@eP8Vyw`0L$yFBxkw`HC{94K9EFfr+NI35We(gZp;yqk_ zUEa~O7;)xv=EE`B=vBxG%A+nH6!f)O><4qQneX@*qN-#Bqt)n*VsJR3@~3}vTZ}V3 z!glE09lI+5nMhcnma<}A=Y2!Wa2Q8X9sI5B%$F6rQX86Jsy@MUzls@}Xj6`K2!rD5 z4gkabZL1utP2_Np{F(*gxpvJa7~dCL0tMGS&#@dU+_**1xV1LHqe8(jw*!uWHCv1k z1IfV4{x<83U~Ya$kRO4zfGpQ_#hU|uFqCg}dv)Nx>Gz7(j=3wi^>bSt#`pcBK%%s^aor ztZm^tK8CtHFj!9=Mhv3wYr)TZ|r48UTCGKMk;OwTea^nAPo7pQA{*vH29fc z)#zU!Y}ar;yXOCb(j8VdX^?x$WM^vC*))Ng?+J(m#bq5};*7*+haa~E;+;Bdi6}a4 zt8;{{%j&niXaPAZ2p8Kh<$UW?SeYWG4_zf6xCxV;?Ft1>TkHiy>OH;8qXx_pCSJ(>RKW`) z+)7rJFt53X3j$s7Dt{cublE^$NX;NNj!_l&?!H0^L+Lwe? zP{`WkE5;)U0}jG>HTWGs@^-UQ&{;2j@NJYRVJYMN_syoEt9~EReeZQz{Vw`dQ2wwn zdj=Sx?6Q5mkl9OV@q|c($+W{AwO{o(j4Qpjj*e4n_T;6-ral^0dx7;bV z;`xk0gl)3?9gTPwmb`P2F(u#lkP!ggexqrah+rG=eURlHz#eNp7LkV@x_GEL%IchP z&_Y7lq<$V@yqT4MFcCFz`sxkL%VTvJ*xrnn<~>`{8qAKfQa5()c5#uk~(&}^J$blh}WPK+4a30mK6wRq@mf{m%WNnL^jgm^N zFwotlxO_%gjVz8E%6txa$>}fte44+&Q6vXe43ks!MehL(=InOHV#6`#dX=No=gOgxaO^Z=nL|&?(bj+0*}o3VXRLUxu(# z)CoGRXr+=RZ&nL}?zO?jhF7X%46dH7v8nI`V+(02Qg!X0HJ4!v0z1=BFV7w+z6pJ? zvVv^V2N}_F(vpbG0ctn%8$nwwvPuL-tp68QjLcOIk3Xs7El(Ce*GfMKDGFPy5a?|X zY|7h1I)*aDF$|Lqa-u0yzShIcavX3_3An&Yx%JAlNfy^nzgSkY0H1^Y0X|3uX%>OD zXrHt_j?CX`?CWVNnz}i~X*f5f3>-n~<0W&R&prfc$*vSWTyLA6O}A=MxB~BBCy+r~ zZBM|Fh`-(t>6&D3h5=9fVn$Z>XJSr}&WkR25q#wBA7|@lR|sSr0|O_09G}%Rgr5c-#uL!$n%mvnW9@Z$#ywD z?_K?-mEjK;Pxwaepg_x$@8N1MR=3h9ze1#tQBJCv{37tmH(zf*xAV=3YI>aPb;SbO%>x#2|Zq57=%I?hIbi4AIvCsp@x*eNX}&lIFM%Rk(ED$Gm*Y zlpFJ5U3!GqvWP>B|40fyh^Sn|I$u zpy~xZt{Ee2JVe-DfW&2?=k5?a(VEt~yUes0N*Tr;5%j6<@7`vsL2iK(d&_x?RgzwG zDY~l%z#=bg&VeKK_EQx6=4S4w6k4G=>T;1Q*j4CYzP*Ty zI+iK^#5C-RSGGov4~hOn9jC{AHyY(F^OWbjw*t+La*CB%Va>QM_c9}+t1wy(Mxl)@ zl<5iavxUSY_LG!sR&iAmm-Y2G=G_l!e=Y5zBu by74hc<>Vso#UqK$*HGi-L3O|57M}iJ$v0kt diff --git a/app/src/main/java/org/y20k/trackbook/MainActivity.java b/app/src/main/java/org/y20k/trackbook/MainActivity.java index bac7c1f..f8b1659 100755 --- a/app/src/main/java/org/y20k/trackbook/MainActivity.java +++ b/app/src/main/java/org/y20k/trackbook/MainActivity.java @@ -41,6 +41,17 @@ import android.view.ViewGroup; import android.widget.Button; import android.widget.Toast; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; +import androidx.cardview.widget.CardView; +import androidx.core.content.ContextCompat; +import androidx.fragment.app.DialogFragment; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentStatePagerAdapter; +import androidx.localbroadcastmanager.content.LocalBroadcastManager; + import com.google.android.material.bottomnavigation.BottomNavigationView; import com.google.android.material.floatingactionbutton.FloatingActionButton; import com.google.android.material.snackbar.Snackbar; @@ -59,17 +70,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.cardview.widget.CardView; -import androidx.core.content.ContextCompat; -import androidx.fragment.app.DialogFragment; -import androidx.fragment.app.Fragment; -import androidx.fragment.app.FragmentManager; -import androidx.fragment.app.FragmentStatePagerAdapter; -import androidx.localbroadcastmanager.content.LocalBroadcastManager; - /** * MainActivity class @@ -142,6 +142,8 @@ public class MainActivity extends AppCompatActivity implements TrackbookKeys { // set user agent to prevent getting banned from the osm servers Configuration.getInstance().setUserAgentValue(BuildConfig.APPLICATION_ID); + // set the path for osmdroid's files (e.g. tile cache) + Configuration.getInstance().setOsmdroidBasePath(this.getExternalFilesDir(null)); // set up main layout setupLayout(); @@ -220,9 +222,9 @@ public class MainActivity extends AppCompatActivity implements TrackbookKeys { // check for ACCESS_FINE_LOCATION and WRITE_EXTERNAL_STORAGE Boolean location = perms.get(Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED; - Boolean storage = perms.get(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED; + // Boolean storage = perms.get(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED; - if (location && storage) { + if (location) { // permissions granted - notify user Toast.makeText(this, R.string.toast_message_permissions_granted, Toast.LENGTH_SHORT).show(); mPermissionsGranted = true; @@ -748,11 +750,11 @@ public class MainActivity extends AppCompatActivity implements TrackbookKeys { permissions.add(Manifest.permission.ACCESS_FINE_LOCATION); } - // check for storage permission - if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { - // add missing permission - permissions.add(Manifest.permission.WRITE_EXTERNAL_STORAGE); - } +// // check for storage permission +// if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { +// // add missing permission +// permissions.add(Manifest.permission.WRITE_EXTERNAL_STORAGE); +// } return permissions; } diff --git a/app/src/main/java/org/y20k/trackbook/MainActivityMapFragment.java b/app/src/main/java/org/y20k/trackbook/MainActivityMapFragment.java index 6d9792a..ebf6950 100755 --- a/app/src/main/java/org/y20k/trackbook/MainActivityMapFragment.java +++ b/app/src/main/java/org/y20k/trackbook/MainActivityMapFragment.java @@ -36,6 +36,12 @@ import android.view.View; import android.view.ViewGroup; import android.widget.Toast; +import androidx.annotation.NonNull; +import androidx.appcompat.app.AppCompatActivity; +import androidx.fragment.app.DialogFragment; +import androidx.fragment.app.Fragment; +import androidx.localbroadcastmanager.content.LocalBroadcastManager; + import com.google.android.material.snackbar.Snackbar; import org.osmdroid.api.IMapController; @@ -43,6 +49,7 @@ import org.osmdroid.tileprovider.tilesource.TileSourceFactory; import org.osmdroid.util.GeoPoint; import org.osmdroid.views.MapView; import org.osmdroid.views.overlay.ItemizedIconOverlay; +import org.osmdroid.views.overlay.TilesOverlay; import org.osmdroid.views.overlay.compass.CompassOverlay; import org.osmdroid.views.overlay.compass.InternalCompassOrientationProvider; import org.y20k.trackbook.core.Track; @@ -50,17 +57,12 @@ import org.y20k.trackbook.helpers.DialogHelper; import org.y20k.trackbook.helpers.LocationHelper; import org.y20k.trackbook.helpers.LogHelper; import org.y20k.trackbook.helpers.MapHelper; +import org.y20k.trackbook.helpers.NightModeHelper; import org.y20k.trackbook.helpers.StorageHelper; import org.y20k.trackbook.helpers.TrackbookKeys; import java.util.List; -import androidx.annotation.NonNull; -import androidx.appcompat.app.AppCompatActivity; -import androidx.fragment.app.DialogFragment; -import androidx.fragment.app.Fragment; -import androidx.localbroadcastmanager.content.LocalBroadcastManager; - /** * MainActivityMapFragment class @@ -173,11 +175,16 @@ public class MainActivityMapFragment extends Fragment implements TrackbookKeys { mMapView.setTileSource(TileSourceFactory.MAPNIK); mMapView.setTilesScaledToDpi(true); + // set dark map tiles, if necessary + if (NightModeHelper.getNightMode(mActivity)) { + mMapView.getOverlayManager().getTilesOverlay().setColorFilter(TilesOverlay.INVERT_COLORS); + } + // add multi-touch capability mMapView.setMultiTouchControls(true); // disable default zoom controls - mMapView.setBuiltInZoomControls(false); + mMapView.getZoomController().setVisibility(org.osmdroid.views.CustomZoomButtonsController.Visibility.NEVER); // add compass to map CompassOverlay compassOverlay = new CompassOverlay(mActivity, new InternalCompassOrientationProvider(mActivity), mMapView); diff --git a/app/src/main/java/org/y20k/trackbook/MainActivityTrackFragment.java b/app/src/main/java/org/y20k/trackbook/MainActivityTrackFragment.java index 2c4696d..4b6ea56 100755 --- a/app/src/main/java/org/y20k/trackbook/MainActivityTrackFragment.java +++ b/app/src/main/java/org/y20k/trackbook/MainActivityTrackFragment.java @@ -35,6 +35,16 @@ import android.widget.Spinner; import android.widget.TextView; import android.widget.Toast; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.constraintlayout.widget.ConstraintLayout; +import androidx.constraintlayout.widget.Group; +import androidx.core.content.ContextCompat; +import androidx.fragment.app.DialogFragment; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentActivity; +import androidx.localbroadcastmanager.content.LocalBroadcastManager; + import com.google.android.material.bottomsheet.BottomSheetBehavior; import org.osmdroid.api.IMapController; @@ -42,6 +52,7 @@ import org.osmdroid.tileprovider.tilesource.TileSourceFactory; import org.osmdroid.util.GeoPoint; import org.osmdroid.views.MapView; import org.osmdroid.views.overlay.ItemizedIconOverlay; +import org.osmdroid.views.overlay.TilesOverlay; import org.osmdroid.views.overlay.compass.CompassOverlay; import org.osmdroid.views.overlay.compass.InternalCompassOrientationProvider; import org.y20k.trackbook.core.Track; @@ -52,6 +63,7 @@ import org.y20k.trackbook.helpers.LengthUnitHelper; import org.y20k.trackbook.helpers.LocationHelper; import org.y20k.trackbook.helpers.LogHelper; import org.y20k.trackbook.helpers.MapHelper; +import org.y20k.trackbook.helpers.NightModeHelper; import org.y20k.trackbook.helpers.StorageHelper; import org.y20k.trackbook.helpers.TrackbookKeys; @@ -59,16 +71,6 @@ import java.io.File; import java.text.DateFormat; import java.util.Locale; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.constraintlayout.widget.ConstraintLayout; -import androidx.constraintlayout.widget.Group; -import androidx.core.content.ContextCompat; -import androidx.fragment.app.DialogFragment; -import androidx.fragment.app.Fragment; -import androidx.fragment.app.FragmentActivity; -import androidx.localbroadcastmanager.content.LocalBroadcastManager; - /** * MainActivityTrackFragment class @@ -179,11 +181,16 @@ public class MainActivityTrackFragment extends Fragment implements AdapterView.O mMapView.setTileSource(TileSourceFactory.MAPNIK); mMapView.setTilesScaledToDpi(true); + // set dark map tiles, if necessary + if (NightModeHelper.getNightMode(mActivity)) { + mMapView.getOverlayManager().getTilesOverlay().setColorFilter(TilesOverlay.INVERT_COLORS); + } + // add multi-touch capability mMapView.setMultiTouchControls(true); // disable default zoom controls - mMapView.setBuiltInZoomControls(false); + mMapView.getZoomController().setVisibility(org.osmdroid.views.CustomZoomButtonsController.Visibility.NEVER); // add compass to map CompassOverlay compassOverlay = new CompassOverlay(mActivity, new InternalCompassOrientationProvider(mActivity), mMapView); diff --git a/app/src/main/java/org/y20k/trackbook/helpers/NightModeHelper.java b/app/src/main/java/org/y20k/trackbook/helpers/NightModeHelper.java index f6c0ef2..4b8131c 100755 --- a/app/src/main/java/org/y20k/trackbook/helpers/NightModeHelper.java +++ b/app/src/main/java/org/y20k/trackbook/helpers/NightModeHelper.java @@ -25,10 +25,10 @@ import android.preference.PreferenceManager; import android.view.View; import android.widget.Toast; -import org.y20k.trackbook.R; - import androidx.appcompat.app.AppCompatDelegate; +import org.y20k.trackbook.R; + /** * NightModeHelper class @@ -85,6 +85,13 @@ public final class NightModeHelper implements TrackbookKeys { } + /* Return weather Night Mode is on, or not */ + public static Boolean getNightMode(Context context) { + int nightMode = context.getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK; + return nightMode == Configuration.UI_MODE_NIGHT_YES; + } + + /* Returns state of night mode */ private static int getCurrentNightModeState(Context context) { return context.getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK; diff --git a/app/src/main/res/layout/main_onboarding.xml b/app/src/main/res/layout/main_onboarding.xml index e494606..95247fd 100755 --- a/app/src/main/res/layout/main_onboarding.xml +++ b/app/src/main/res/layout/main_onboarding.xml @@ -91,23 +91,6 @@ android:text="@string/layout_onboarding_p_permission_location" android:id="@+id/p_permission_location" /> - - -