From fc87ad0b3d48a5f837767a1350d740ad3d338e39 Mon Sep 17 00:00:00 2001 From: tx <2622874537@qq.com> Date: Thu, 14 Nov 2024 13:56:11 +0800 Subject: [PATCH] 11 --- App.tsx | 11 +- android/app/build.gradle | 5 + android/app/src/main/AndroidManifest.xml | 1 + android/build.gradle | 14 + package-lock.json | 41 ++- package.json | 6 +- src/assets/Image/Bledis.png | Bin 0 -> 90473 bytes src/utils/coordtransform.ts | 40 +++ src/views/Home/MiniMap.tsx | 14 +- src/views/Home/NoDevice.tsx | 2 +- src/views/Home/NormaIndex.tsx | 13 +- src/views/HomeStackNavigator.tsx | 39 ++- src/views/device/AddShare.tsx | 354 ++++++++++++++++++++++ src/views/device/BleDistance.tsx | 79 +++++ src/views/device/DeviceShare.tsx | 154 ++++++++++ src/views/device/UnlockSetting.tsx | 241 +++++++++++++++ src/views/device/deviceList.tsx | 2 +- src/views/device/deviceMap.tsx | 229 +++++++++----- src/views/device/deviceSet.tsx | 364 +++++++++++++++++++++++ 19 files changed, 1516 insertions(+), 93 deletions(-) create mode 100644 src/assets/Image/Bledis.png create mode 100644 src/utils/coordtransform.ts create mode 100644 src/views/device/AddShare.tsx create mode 100644 src/views/device/BleDistance.tsx create mode 100644 src/views/device/DeviceShare.tsx create mode 100644 src/views/device/UnlockSetting.tsx create mode 100644 src/views/device/deviceSet.tsx diff --git a/App.tsx b/App.tsx index 1d01c78..cdfe4e5 100644 --- a/App.tsx +++ b/App.tsx @@ -1,4 +1,5 @@ import * as React from 'react'; +import { useEffect } from 'react'; import { NavigationContainer } from '@react-navigation/native'; import { createBottomTabNavigator } from '@react-navigation/bottom-tabs'; import { View, StyleSheet, Image, Platform } from 'react-native'; @@ -9,7 +10,7 @@ import { enableScreens } from 'react-native-screens'; import HomeStackNavigator from './src/views/HomeStackNavigator'; import { getFocusedRouteNameFromRoute } from '@react-navigation/native'; import { rpx } from './src/utils/rpx'; - +import { AMapSdk, MapView, Marker, MapType } from 'react-native-amap3d'; enableScreens(); type RootStackParamList = { @@ -21,6 +22,14 @@ type RootStackParamList = { const Tab = createBottomTabNavigator(); function App() { + useEffect(() => { + AMapSdk.init( + Platform.select({ + android: "812efd3a950ba3675f928630302c6463", + }) + ); + }, []); + const getTabBarVisibility = (route: any) => { const routeName = getFocusedRouteNameFromRoute(route) ?? 'Home'; const showOnScreens = ['Home']; // 只在 Home 页面显示底部导航栏 diff --git a/android/app/build.gradle b/android/app/build.gradle index 9111aea..090eae7 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -75,6 +75,9 @@ android { compileSdk rootProject.ext.compileSdkVersion namespace "com.bikeapp_demo" + configurations { + all*.exclude group: 'com.amap.api', module: 'location' + } defaultConfig { missingDimensionStrategy 'react-native-camera', 'general' applicationId "com.bikeapp_demo" @@ -111,6 +114,8 @@ dependencies { implementation "com.google.android.gms:play-services-vision:20.1.3" implementation "com.google.android.gms:play-services-vision-common:19.1.3" implementation project(':react-native-camera') + implementation 'com.amap.api:3dmap:latest.integration' + implementation 'com.amap.api:location:latest.integration' if (hermesEnabled.toBoolean()) { implementation("com.facebook.react:hermes-android") } else { diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index fc35d7c..bb4032f 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -9,6 +9,7 @@ + *BzvW9zy99De3O+mXH>Z?(Xge3F&T7>8>G^kZx&^7`i+E$M;+RuvpaM znS1U%vClsHMyV>xV4xDAf_6NVd;AR|ah{%mLKr?wtZ zn%*&=QozadjFL+(69PWUyzcFwM|{w0$1Xm;J-)l9r^dbQp=v%Z?*8edPtJ|41QO~d zv6N?3k+KjO<~~-;zM6%4i*a43h`Fe$swiU0l{Z<@;eyW*7w&rf{82raS}v*hqRDES zhK179S&%HRm`=V4(u*OAD{gu%oB)}E>!uD3#f|zY7tuFK9croHXstQCJEKqJFlebI znnb;)c6C@k?(J#-l?StBx#ao@n|+X9LZN)X=)1k0lp)73DCd`-+B02Gqn0Bow8-bRkFhFNNRY;=7=(!jdfogzjvmw3AJAR=MZc5XG$s!q# zl(e*q7%vtp-^3upBx)-N0|SG`QqzeXH4caLc~^8HiFxc(?f35^L_-hqX)J`d@8puk zC|_S{(c(nW7dZvU?>R;Eopqo;Ple^jx+4N6_t%}DJ7?zPbh@{Qdhyh7AkrgL*(B;Xv*}W$hr_#u%gwV}7b`2P7jnwt4d4AlS?W^7 zEbgOvn0h!h-2ZIY4a5ILhg5Ux``hz&BVx3!j$J`>HV*U%(<%8?!7n#eGt|u@mo$?A zEZ{dEbW{AR*2jY>cFoXsjI8A z)YV;d;f1cBD9tJ*g-ap%1E)6)?9Q|#l~dm@x^{tET=CvMrp?c@N<`%UZ94yGgVl62 z3T1ALroWDkPKsI^wx}!bJg&H)^LIlc=KuCeSpux%SbI`yJzJSyNH=br-XoGItAEKa zpGN!N-@WNsSS-XNrxIJVs@FxfehP+u$=KfB#^YRAvJHNSmC3+8WY|dJaN@&&Ii}|r6!>iCx61*63YLanO+LKK{nzQ3V|Ii)L#LXRvA1Xg%doY zP-d&$m&uU(an3xn6w*nBFon4IPqL%`|Cy+PDXU!azWRzr{`!oisiDE^LryMz`qG!l zWrKMweAR+baxmW3sCQAE9eum7VBl?46sd3cDa2|a~1l$>uh){PweE6^-n3s}2kf*qTq*4I*o~ zS!5Ez;J@H=6>}OZQ_2&5%B@FyiH=6)dK0sffQEbd&Pw*bt!nG$g}Fq>#5fS|x((MI zBdW3nYbF(w{TJT`2%%r#EEZkHwi$h`X8!lMAZ&4>si`S$tjo4is{jy$q=!LH4eP%x zWu_394XLao9{&CNd(asD`}Z-WB_%@0gpVa3DE>JNPM{Mnl2h68H3w{jm+#2mr| z0@wG%UM@49$^tsgM>8XVDBkEr2#_Pf16I-TVE>he=;$65`>*tH^k|g>FZa6%l8zTG zsIDRBqFZt?wrTD_V^2dv15DXrZ#D}BM?qzoe4j58yU*!e!GN1Oj>xx z2L}nR8>epH!oTopefUsNT(aQd!mQ8TTyVfomB>nzMf}y$XZIt>wBdkG?(N1#1UZ@g z`U&Q}pY9P$$7%16CObpF`=OL6J#PEumX@2^e>np1ixW_`OJu%C2%+wmVte+}1ed$J zyZXPix2D5&MwxGHmyk@*k7!j2nP#~6_R8{d*%sYWim^Fom~Y@hgkiozqWCD3_76u6 z0Rqi8wLr*mIgass-t95O#FYiI&I@mo*F_>{UyXeX5fYmce5zG1t73U&v?DKiALqo( z3}-;Y0lnN?OFG=g!q6{km|VLaMJfJHK#0`)kn1(u8^8xfQ_jE<=;pkWLwY_N*(irj zMM~!Yk7=?^Petrw?M{zYr9&9zG}eg<9?jw@i*q-4XGIOBL?V_fiY^pv2987+=J2P+ zc)=*xfBzF+cjv+UO^!mn`_ZDVxa=s!0b2^c0uG4qc7TZzA?nv*Sh&@zl-?bZrX2Lg zCOb+J%pO)nZS#>?V5!Cp2k+(H20_@%&74BNs46KbmEY9H5%VyYrmV83JfKk0nb^(( z@%Ug{*T+Zhx=wDJ^R6Nb{c&?Q^>`?7ltMg3@~meP;a18?9j`krJn#4M)z!CZTc{KA4NVg2Ejd zOUJ}-K11Q`2W)X($}JBpkw?e8kL{4c$S*xiyzX_PlFe4H6)kg9Mf?Vr`x4~|SyR48dBeS$;ZwBz)WqW+!!I`Cf zO?KsqQqEC%Q6t}D<%$d}(uWUotR{C+nuxb&q2hIX6bOn zIaAZpu&QFjlhjPt$s-CU%cr-UE0hf)ruRapE8u0DZkeVfsd0{VrX6(N@VB?s!BOJg z$!<#Z{py0F+=`q1rgd`cXA3}#RY|Hd2nYs=J~y0*mfH+Qe@qL?dpfkJ`Ujji{#Tkk zZ8Vchz?*!j#i_`KK~RbCtEV^<9K4^?f64uIJ|sBj)IV(a-&K ziqn!55K##Uc?x$XgY zq&Xr<)FRUC=B}W!yxg(>b8Q63GeS2NQm7k$qR>Zaab=h}*xYsXLkgEhv7@o3Jd*R_ zsl2*+;CQ7y2Ll7cKAI+%i82L5mA(WV(Z}n5NRXLDjEx!w!Hj^!NgER&DGt9v z?&d=-LU-92!Di{Y{X5txAx9)79=QVA$-Ve_;V3Ld4gyp9u-L{GpNTi!vWTtS_Ver% zmsu=-)XK*Xwq zn`#!c#7zg1r)RIPI|Q&Ho4A8YlJv@Aqm4}%q`)PQPY~GDN;4g-&*@@@U~F9giyR?V zrE)3{b_Yax?G{9o4s4!{tK_AW2D*Q!c~Z zBisXQ<<+9pemLkFd#Vqc9bYX|baea7IVWD`VolhgAmuH!s`Qu9Q znHbWu!r)EUO()7^`B_-23ydRSAT9*?rl_=(C`c3(ZXD>6o6c_b`#7kIg^5W?T{Csh zy`9bH+SYdU5%tw5+}3M6@mWsR-}&rw$-QZ%T|%+xlxgU4n`4P@Wv&f(KL&VAsQkkL zMd|CnZ%lchoVM(zhE%_Yhp!TZ?{|Z|E_U`>TfG3g`l<|kfCIt?BN%1UIJ>xbIIMPf zb#J}3vzwHw)sFQRJl?|Tl11p!C%5l-miFuv-fhEFn%|honc&1oQB#%wpsh{k5~Q%H z?B&(^gYLHteq{$5-lZ7*itjzOm>dx*;VldHQj=Y~-_FRwYGEOjWD&M60Ocbkd%&pqyboSCEKYYN2CCRi2-fsA1`4u0K3-%r%jYF0CnvWBkzu%R)3VAQl&34fZJO> zZab*@)mCNL?7HU$WI+LsV^ISGQmRDoqrV8JQs2)g+!vs*?G#zOFUzmVH+t#vo2D z7~kRH&~79nBPuhK=y0_YnUoY8NU;QadwZvzf`datY~;SDJ$(SIfp>>n^*QN0+n0!_ zlBecHiRjynbf>_x@0)rzUyxq|*=vg@c4#ByYfb)=vA0_L+`6U#py4t*>a}X>I4^LAXE93`~B4cPY2E`U9PJ@QYZNM>C+e{nPAI#II;bd z;3pQMC;!8hcH&gC!h!<0Y?ty%)P4f=zVuGNhwE9x=kqk=Wx48(jt)09|L5Gozf`wR z7>;~7`T4iEn+ZN$*u1bBMzmDp!H;3oB`IIO>Qq+RcW6iXjfF$hihy?p+Oe1VcGjf3{`;anSO1ABYHajwI310R^g+KJA0Q%4lCAQ4? za@&jFb=n_#h+-FR+})JCdF#+o%cp|`k`J=vL@isgitpA-DOQly(aF%%(|ZsAIiOH7 zdk+h^B{a_gMMw_GZ%-VklCj=EWV?cRMzVO26*X&tbb0$Ur0KR2V3Ub7TqjD8sKC?* z&$@BC(Rc9ihb~tq)ERmf=kODNtGp)YE-)J0ugp+)GIBM=pS{vR-JbPSRC=`*xyT`&sJvYTj_oV#R^+jXI}N#CTfFFNL({yX4Bs z_HS5Zu8%tl7Hlrpwj=3m7ZX34R~PxL$pfhksMLDym_QD8iw#3rveZEBXiZVW0;NI3 z`!aAJ3PFnEvgs~lRH2;jqo-x35m5Im6cOuo<>YGiX$tRU#q_p zpJn_8+VrX2FD8#BBTaToRb59-OS^tIekkuheit<}dk5;?bEU#VrR3qkk7ZNLVBh}z zL$7&fp-G7k#)*g8!-@{zbWw^xS?X8A^2!Lx7}#4}+}y(F6B1b4{kSM$Y)G2wPM5nq z#twK?a!J$%-oV~U05xNwST1>oS+5D*%S-t2Cg6n!y$@va-C}u_Q;8rvh)J*M3;E0K zz&wj?16_!kJl#J402E3g7*TlQ^5-<#h?~tb&yRk7Pnnj~m8$)xdy_>#le$j_wFBP7 z3So%tnay;*%AkH{G%HP0LqB%y+5K&k{R%2bNY0zUqy@0?OHNMQ+T#w-*-EmCCR9O){UzUk%0BOqZ0SHv+2GB(@v!ieRUNvLw2g<18 z^iO=~t<-meX3QQ@NL+=I*P^Z-;1nC~KKc9_bn?23gIx-8NzBL@UW002oj#N@K{&c9 z+vkk->shq$N~VBZ9|8)CVl3!>B|`-5nv($jXSjD|-q|QALT~jR&Xj-r$pKIkRiR#%`sU4>V;~T}DXFNu05s%{d)_!fh~1JSzd;QXahOz? zcDp?nFRbO^xILK<#E3>pdUU(BiAC#fNE=EK@VII7PV}=km2sK6yh&xHBmlr)1{2?6 z02~#&N(;3dDDbxyKB9w8>i{(#;m})2>`)bnSJNMt8>{8$9-3_Ztn5ie5kSixhGEWA ziVwk{Jf*>k*mZq6V=@elxZha>W&fNiIyzeSV1J+0q#wOSzby6HJ>kFu*;VR;V)eWp zIT*p7j+xot;rejlpxJhzj-M<6=4RMO01qP}0Tm4$oS&Z?Wzg_~vX=g|2Z-3W?d^>4 zUBK$As;Yj8JZ@mQoL|t6Q%V+$#>KHJ;tt6LDw>*^adkdjFS%3Wc)@agj`_Gz$rGsM zOcaB^f>EhDFuR1|;pO>4Q)r@DYN;35Q{)&ubeVGLfc#f|W|a=Jm{`W%#tTS$b- z!?~i$QK}YB6)9$siU9$Oi+e5m4a6simdmu9p%R zPU-^$i~va(_#trIvgt5s*}z4B&iqC^^8WrlOdJdVnox+Ud}40t=ZA-YzVCc4HCEGT z>0gB4QgD2AwIVzPF~e|F#of4+uDYJjzs;itXQ!ru&Ui@r3M7y>L^fnt{{)Z8rqGQf z5~Aje@OwAd_rPNbrM%rbq>*%wV1L45713#%2$-Hk-mJ zLX>b2dJB97CvV*^k#OFeu_{TbNi{7ko(doFJi8@7HK3al1%H66(Poqeaq@6-E@uEQ zWqK*bH}!B3%FwBa36M0Qcn_qTk8$`==kGud&?wZH3}AlOZ*_L3AP}V^=zZ>d5TiF* zA^|XVTNNb%*y!cCb8vLDPgBcK>F?PsC#YTKtO!US=m5TuIy*T3##4fFK=uj`hiWXH zQ4#E`SW7Ne4X|EqF2aJV0+w{QG>t#}IYM#8BSXNvAog)FRu+ffhn7@9(8gOVfAj@3 zR@;BZXngz_9UL5dI5#&Zo;My*T1xZtGaE$QXo(vq3IV-O)L0Deje(!rEI{T>!+l2y z6IZUDj~N+Je29Kubz5Iq`5+)5Q09?AQ-8!8tss9o|Jwr_GlI?duVl8RZKzrQ#N+}> z53Z%Pb-3BDFL{Qb<|PcN0?U)g?%mklZD+ArPB11ovAYKznXS=Nw}0IKdb;f&w3?iJ z9s$nLU;yi7`QCMwQ8t3m3NTx=UUHwqyW{$<>cqE4o7 z&1XU`>RC`J0xKbkajg4G2cI_5YqIPynjKjUltrxXMJyiMuPjM|*b4x&HO^4WIzwoy> zA4^kHlkYwN9~cU}-wt)~vs#_>_|$rS^rLzt;4EjJ>~4C)z%V+%`?fafifb(d`b-N( z`V?e!@8qo_RKg&*I$l_FiLzT27ScvaNgY9_oy=o){S_vx$Dd<+mcaIKb8@2J;pv1K z7zNM)@FnP_lTjUV$rIR76hMJwPJ7R3vNJ*|6HhY4LPw`PvAU}Kx0ZJ?*eg z>(bizYGdD0hLhh=LB%02g@gV{yN?YFs$#_dn;PaR7$0i)_DwV-tMWdV!6vCh(_0o0ITWTWVA0ZaOX=c3jpMkN=#;s+5Ibb!ZmzUOF z#&MNq$``NTEKXw?qYPRj*FzcJOXk8OAF;3K#a4HIRq83OrshmR5E6r&Sy%@ar7Bp~ zDtvgFFs@<9?q`H3P!4wg(E(+c5k)@_&iHA)I{^>tA4)b>m1lL^*T8#?ul2kuBf{@A zt;9o^YUUM#8bd=S;*Y*@Drcd`x_h`AxrMN_h|1aDgunIr{H>deGhQKu{V(HRiVe-Q zJ_Df;S?0h482@5=&hodHK@5gJH3nMhxbJ z;pYqTmzDrdk@vuKC?1%ZeJg!!s6-}B2qi1*3osPPu?J1t^sw9&0VX%sOV8#JJ6 zSU>aju=`W9VF3Em>CnF;;tV*L~aHYE(c@i(Gbmbj7%_xWs zRwTkMW3ATp^S@n8P{>nhh$>D_`95G2%@WzK4B+y80~(IQ+JRmb;k&JH1WK3Sp6;J| zsVw;KI4sES4h&xw%dkccu1Xsl8+#6}3d_sEZfvg#w758b4XrHT`+QmZOA{C3 zQmbGW%xKd}!?bC{ehmU?=g)Cg8J3q1aG=-^mX-0Ubl|0?vk?wxu(4!81yMKLFuR4D zyQ?`c$$GanqG$kkB33f(_#kdDBhi%9vUvF&7HgdD)@y&#SUzqK$G*Vny+a-GKO~mnOPkUzCLHEt*>PiI%C>7w z7(J>G29uhKxN>Ynb;8U{<*lc6WRY~l^=_~)Bd}tzru=yZQ%}84;>4BHd7-G_LWhtF zdl0Auy%iCwXtg}Z4xs_nF+R+l{{<_00 zz3sycgK@w9>9&wy`9Ty#^jFqu!t=NRO1}PpsE2(m=;Gs!o&%YcwKf0sdESd)ONp%Gd;i}4Bt{8k1ScJeAfGHTOQdSjb>vTm51u6CgzOKhk(34eBi7;DI zrIQj&6umVC9~~JNS6J~n6=Ji!M*;^Olfu!LL@qgP!SEG34qQBP%D;b4QCUjj9NU6f zYz0l&fWh>aUS~@Ix2Vr`Hspmn`P>Hw#(HAfJ18x6Y56|AhMB3zeZ0}0wyZ_Er zSAOW9KdyVy=sl*j@VV@0uRR@m5HH(%xM^uIPUgg{aWY93ArTP~t)F>19{wo<1$J}@ zwiwuZ3X-w*uRFDi5lVdeM5dt`R%(^c**KNz;y5~CZ$xvBD~5F1cfDf_bD>}yaU zFsr^D=eiM7j}ZRKhzEqn){MNd5=-DTSBqCjXsuND=?+mWe%-ehoU2Xp7wsj0F8FF^ zXQu@ePNqN507GvdUi4|s#H_3cF03kebq&T(9e5`W55zPo8R*FBPP-Fg4ULUKF7Y;L zj6GUi=dT5?|Csza>p`yhT-#!$gQ||lD>1bFZG$OF~rqJzCIs=ALnR-@)b(aHv){3rnT?5Q5!66#3ENgF{EKt|W@L0`DI@eSCJePFF{_RRA7z257r+ zA3ASVzdcvK+*iYM&2p)0FpXN#;;@>qF@CBeV1Yj3U>>f;OiigNrnAB&UW45amxE+| z1U{b;r1wsk5%2;ixp~c>xN1bv)ZEk;pq$Y(HSNk$n%Y;6Lw~3D;~`I7xdL1aEuK6- zJ9~Zndx|~t5mx}%0l4RIrIUCyJF0Q*`MP<#YY_;A7K2YL;GC;&x0u?N28(!dFr_xD z8M|NxAuAK{ku-kW_a3H3l|R^ER#Ve4I1uXqLPOp%X6~-wfg3_74Z<>MV$;(Xfx9aO zz_jIX4C2_15^_zyl;sQ+@Ghb9vg-w^ z;`@wn0AqdL=nZSx91}SD{o|{BwTJi*>=-*i=S$1k`L5@ym7@aHa!={K)ug>?k!(Jj zkJ|=$56j4a2``K4S{GJ&6o1$|i#l^M!h2#AO1XeN+`@9`x+`5~Q%LG3OdHM_Ldm(= zf;aoQIkI~}M2Wz0alyJE09Q&HF;KCoZL^gBJI>87`uicV=vP-rVRwAkgxO5?1;4oE zM*wwDs^49!#E0mMQzZ@}MD!(|O)0Rvo|&CBGqbGfkFKTLieKbk;sd6zc(l~n?HTv&@iiD=n`m*%VvrPBhdN^9BC^Gi-$>Vb-ZiwI8 z&7i}5^370)Hz$$7{N!Y9H!J!ZbR;&9F+oOs&v(EWG_1E*97v`6uKWN62dC=lMo1AF z2#Kz$Vs>?Nqm)n?=k1;+zR92_5(pi1<70-9jL5h@)(@Z$e;!m4>J31z&UvBe;3GeY4MXmN+6*Dwmp1^Ur|E)Q|d_`k{;lA<&~OLM%|N_S?G7JVZ)# z_wN|}`P?URR1}zW={aBbgb1S$;PDSJ4151k;_pIL1^D^rfZct)pNaXKj)<7Jpprq* z9*c2Uo@S~x*~(p03817(t$H{yZi$IMXljP>yqx0$B(g?3a~hhIl+>wrr=yRcw$sHZ z9U~*B9dUpgf8$Crt;#Xc(G8Q_RLPL{)0Nc2KG8=t)DcFy(Ec%fsKXNXeh8d)Qyi5c zv+I>c7fS$LsFv_*$Yu}4HTUg@r9bFJ^QeK#z0ioIPV|EHVKC=M^j81i$k51SjJP;t z;_w?x7IHuZAU2f0b|=a>$E7*V$=VNzk_1QzRc&o>?(gyeJK}u2%F2={7!A+b#yU9S zZKQN^*7@y||G!yH`TZ6y=gfQ`?810wBqN>2foz!!3l$BOt;EO~+1OOY$;s&*rR3O1 z8nu<|&jSahS3iFnQNJpyx*@*hgMlTfPFwZi&9Bgik=*CzHdf#xPWz8L!O}^s4{n{{ z7uOs78s9eJ=P%??&kItG**T0K@#{*oM3s4j_wDT+gH_LL<^%DheD=)`bJ`<}vl_2Q z5|O44#cgcf3zA`xU?Ky3c{iLG9VZt?vB0i6Dnt|v0L;+EMcszxW{GJ|fMP}))?yrp z<5>>8ymaN{;n{q;SsR#K)FqInotm1SUOxUVPAS=^t|G+M0>=qNM9TTB%?0BUv%y9E z3;qvMY)1N=png?w#@?O~jKt2W$Kv_uq2*!GW@C=yo=L`qmz8NCV%x=hLqVbXSA(1| zn6k!s!`0XC?vve&5Jmp>Q-@_j~n)9Nj2dvOlqiMJsUn1gBA61T4ExvO%&ud8rNd>{7V0& zS|wi?LZT~#`!^1k7W0T;N-B*I7!kz&My6l$9e|(dei42@Ftu#EwGm3Czv^ z;)e9Br!_gOyQ=H)ib>87#WF^iPX#vh#6ce7{?L)>a^=DSx7 z;n54RyWCzr9X?;uy?K)s=z=*+c3)0yOcgMQZ(ttYltqvvA;zPvqt-PIS1*b(_TtHzJ z%xv+iD_0DF>L>($!w~`K8uMl2Z`At(j|119cuatqXDpj#8>Te9`^jnyK-veo#6LaU zyd{b&EG{+;g8XF(8U0HuH)RPy*rvE4^-MHX&Z&+d`WdR7ZJ|!Ni~{DN9DGB9i%E7c zMIj2NL|8YyS#|HY)&=E3myr7tSwe52pc>Bo2qGalcAR91pz5bxQ3d zOweZz;BN9VHj}{%8HE#(FY-d_a(`T+g~_!UAHkZg;E4mpfO@8%@T%w@UOk+OUo zO&(6*bD%YYWtE5O&D}o7LG9JL*q`fD{EPU&KOM8R~3RjrF*=(K&vul&4e16^m`lU$ua|tHY!1JvIS8)g-iRsch;BAu!nelTCxZ4h+u7Z`%GImEbA;KUCc(iWH4ODB4?;MpJ6p%s?Udv0CVE8K?RhrOt44`YV zQ=Ze4C1>P^50XU7>5X_`z-8qHfO7zkrfifgM5{ z;y)8f1p!k5TGH2-Dscxl#FstB3vaA#Y>YF_otK4YzmET@uz%h<(@+7KOt{hV!aN_( z1^`WnHyI`{*9EFRJjjwQHbEMeoJd_ELLSgT#|-9s1^VQGPz`;w(D$0vynR9w>5YE< z)V%iQjrMK-)eykFOOX*L=o9ZIyf(1**HS5cH6}U6rY=8#K7G7nCR$rSAH?@o$Crdl+L3z zshCX~t`e@BlMtY}?b|o)Q^wNazH$fFc0noW0-=UDLEeij@xQ{}WG_}wSnH5z=26d& ztH-NR{`4|)`SD}HaLJ68f2=H);}6O1Z0}8*K7OGFDaAr-vO;w~uc9d}{0kUIy!eAW zR5Y@Xqx5=Y&H?nqXBZVWsH zz5M!*;nv%5aHVoNU{!kzGC|)?&Jx_OsmF%)Ky?v%P=IfF>M!%Z3VVSCFpNRvR^wbw zcR=fcvo@-`SJ@u5p%7#`o%O(}uUfn|Qet8~E%MqlfEC!{6Tmoa+$FwaYubw)&5!~T zXs2^}*Rjj-J#WACbU&<{vTEwpAsq_^We`(=XYZOlr&!+{T#g~kOSYNFg;R)WB#?cnK*doqQmY?^_U^n_d(DQ)M7Nfc!=SikZWA>n=D2{qqv(^(8p)A~+;4-VA#fs_+LqQ;h( zTcq(beQRJ8d?KBv-`m4ZuJutd)im4&y6Ux#C!W!CwwZklRK!WdZEx>3UEdG(tl>ak z5+e&v#E$uOj2nCq3R+RPd=&&DFsZO}Pt>jK^=aExA)iMEO*g0-sKXC8C0Y6CFzgn! zmjvj>wQ9a8j5;w;6ctbu{y%&%@3 zin94>$ZTEYyhrPA+oZS=g#`LR{? znifgD%;?ln<~fCLJ)68VbcE!zLl&=RCf-}Coal>CEsU$uW+?E4A5aR()5|;imD^#W zms(3mgqG5of=zJKXaFf9&Qg=ZR`&Q7iBW8C6CWV{qe`R$lvxkdf8k&iq&G=z0rBm5 zaIbTUVkgX`Zb%-JG_s+3j;wbRluzVfAjTL_I?_8fxsJOXm#sNHmH2Q2Iu>KexZHey@4DRF#`}tSKv}=@N>Z^OzYJ#xh4)XlZFp&bNkQbajK@i{0n>OpsSvfrvkq zU0`sSUs?_7(*-A2_4g-?XG7dFfK2uZNBj!_t;+0{_J;iLwz?6}8OFY`C2Ct~$y>D9lS@A;04}_S&7sAPR_x9cJp?#D9rBK%Y;xoQ}@-@F~ zp8RVCAo#tyx)NHrYde|uiG})bi2;gs;9}3&5N)30Qq$T4Ea2H9BM)dtco)Z4m%Yfa zc6R(j`O)aE(FIwK)}uCCUfK>G{Nh~V!;K(%ScejSSi9+@oRl%&DAM=mk_)@xHI|v{AJ+lVG4i)> zDskiW8o{~30w-6>)5Gho`!#mNDuQPSREe^A_ioj6prjxufaMER!N5hoNfca~?;?)t z=g%~0#ltIcCCW3$nB65;FKwfIRHY~eM@ysRvC=hWYr>oWt#GN_4Xf^Ig07tS%Bn2C zWnjpCYi9Nav;~9VgDFX}TXxipWPx^Zj!_TQEq<+$Y>_0e15-FHBKh@PejDMAs( z@8-UgEA;mQ2CR{oB)s{`xq@Da5Gp-zq8PoKdqXn}A|)rl6~xS!N`@K^K}D){oGkpb zaz~Oc8+ULq9qfNT)ZSDDY@{uDOESJ@%s{ID?k=I#3B)Y^~s<2#`Ge*7YKLo->jEmRrlX}tifpuai%U0 zjyD8GiebmU`hd&&qbI>K86n5|t&{20mdP-;D)@mk|7^cn(`e^$k481pU{qUy;&9=^PfA;K{K}IK?Dp1WE)r zQHJ;Lt<247hJODpjAfgeo0BHRL^h611jfUa2W_8qQj=0sOQ~^C%$J%9=};T(ve^6a zmYOQ;mNYaqe{P=Ta+#!>QNDfK7Y)n`e#PK>fC$ub?-ZhdQO7;XA$*`a@DZZM-O?XS@p1@=(aeX3g_r0nF^t@ zcL*ouClBm()3T|wf_u1lW1_!GSLjf;2pABvYU^rhHg=ShNM!(1kG2qDCFx@ghUKj~ ze$05F%N1n><;^2&&fYg%xAP2afVB6$DF};;Ch34~(a5F!#M`e}_f+<1asElSvXLA; z>})Gpr5C_4!G0%Rh?%7Y`S~E=@=3Z#K#<>2BU*gigbbZQ_-eq5pCJIA=2_9TbagY4 zx`E5SB-t07fEvrC>Xi|oOAg9J{VQ)_QHB#I{Td`sm8c4))BuZxK^p4olO4z8ZpIY? zymlWYQ?rwr^iiPaA z*ea}N%zrwdT4nb4Yw;7q0za~sZG)$L8rNLcxx~Dw%V)RlUJ~&lB-U^3h0XmL=Cb>3`eqYc-2$N&1w)=TiVvND(r31H3g^43xk6Kl_$ zm#xls-dF3NN#8*Y*Vb-ZM*03AYX5!1ri9Q-IfEQ*X)l5@++@7KUFvCddu>*IzSd!E zD&+dD5dH4sPG4Z>?J^AG4F>#T0?6Ax%J)%hJuZRp(~4LvG`DAeZyA;y;tLY}**+LQ zHy1K_@#9>ZQt#2C)_$e!8&Cr`w-aT7(TqF8?#*s}hB7<6AuHZ1WK|7q&&5*S3ZrG8 z9{=c3JK%l+7$F4YxmMy6o0~bg*6E5RTe@Y2Ufp@U_%bdsSo-GwwE(N_G6PP_uwcV^ zJfgUMM_v-l2nuj89)dcj>?EF4=R4h$tG06qC*P8*x6w&%b!|H22c!4PCj0wa z)LmVC@qb4bOaz+d-0R#uT}Y)8>7xpzI&JB>-+k~6!~=^{fW;_yi7+EZ&5J&$HwL(B zdAO-yfz&`KkXuJ2j_HK`{oLbw|C3&haog%|q;kfhANQx-NL%$WLkS|v_W4Im?2QiQ zer#phROtjf-k!As(el)9-6*d=4-Av44nEu3GE!K#X1g$J^lG6PV1t0LDYcgYqp+(# z!eklfGkvQFOftO#0A^H?2EPAK9pD1(aF4Ij(ihg8SLAEe#B8eE=h`YLp7NmgHZ4^# zsbMiSm8#wS@tCHH>PrPK@PRO4PpAdbP81Xq2?=Sg^KK{0X<}{;NmB5kj+!Nn46cOG0lL~H%-Y{^DM*xg@%Ek96Ynd7 z8?_s6Z{Uh}Q9|!kS*OP6{n?%eM+Q1G^wAlpQtN{PC$Sg_xw$td<0eyoYE5JgGB_-R zxmj5q?^Zi~?tqIUGPX;Y;7{i9w>R1O#w5`^LSI$Ro!hC!xXAL|56;8H{l3_kA>y*G-(BA%3pNS^w+qWg(wnX`*6*8o08@GEcPpHPZanYl47 zP__bg0WYtSAm)Swd48O(D(d%>b!}+$=7tK#BXs=3<0)aK4(45r=#{A6QrlHX$it2D zo)`E%T)|bF2=qQv??m$z>ksBP%2FtD#sXWJ$-K6(wLi|>r)({ir4)8{ zk^*XVfHkLG3xGbHJP!x(afPMXlBLlB*G|4R+dbSnw|1NzHLuY)betiHxb3G{Z2q0} z$y8$)z0&nvF@3tiwJSpw!kSj z(kaCX{1K;%cCq7l5uSfF8;xr>B4Y6!(ug#4qwwgx7XKWY;JuNoC*^r{yjn0aGSV(V zb1D@tx2F7aL!lC?B+1{XbW`#P#_X?dzP)$!qSzSyvJ9E2Xr4pxp2t7Fy|hvt+ELef z?*QUW@}g>|FBCpn(|=07!K0Omc^OT5kd;;{7_Uq`H^|-Q_tnY(k*t(I7#Y#4?E7-H(+ei`nxNlMJyjd4V*YMk$FZ0ZTy4;5*h z!@uX`1c_T%Ouo7!3T}-Wwqr9Ex?cWK8!HUyLSMib8QxdFL0YFpa$S8lJZv2(Ph)Z3D9q5)^OE)QaPgb1gTqTBqbH}=$U03@C;sQF zD=6TP10&SZ(rcs7dhb_w4br+wm!-#mD=|Vd zG(I-=6Byq*vXi35-=BA;BT+ri9Pvu30|10Af&S)fu!TsMiTajiR{r&y8K(M{n06krI6M3*0mJ2k2JbK;V zbnvNU^0k7j44x972GD6a?3&hBw1vCP)W&9J(u}h1=q+oXoiS=3-DuwLxKrl8#WVw{ zemeoKngg%H0O0o#vY!d8trZdw6l{6?w-zPbi_94GsMjF0k>zvLa@h?~7^U@c!QG*- zxk+{DGGS1;=$1|g!*Y{(KU_x=u^Kwet0fOwHG`CnR&^ACOZnnI@!0 z4E~NrHOy)&(F3JpUF>e53-!7Cke@C<+z|jKm`b1X_Zmv$V`HCEQ6%uy_YMvZm%PAHIT?Pg2TvxE9kUl2 ze0(^1Tv9BYEL55F%hD2C7#ll2r1o6k{cgb&3i|_|H!~g~q1tWmm`00kMMEsJ{4Zuf z@E2{vwV^?)IPcd6-@p1WCMG6ZpA)OkC3r<#iLIFIBZk*yiuw&v0UB#UEoBG3muyM- zUdN!oBo7XC_?u1vT=1#{z8D~R4y(TL=_$qO3baid^FS%E4b)m}LujXKnegMTTNo_9r$tH-1Xn_l0m%ukrL&Mb=34iQN=3*_stdmz9L1PnSoyVIo! zgBu_z06jrx5fv8RE zzX+|=aLkNdueAZzA3$n$QN3e-ns4La&@+**%*)4zjPOWM%I9j`mgu4j9i#Exue7Uk znEx=}-Y)aq$^eN%flsM$(&5^VM)?cpbD?iN>hPP%pW$zsm%(LdE#E6FnJxjW154Yq z58*IAB{piSm{=rpY*Nl5uuGpD9y$WV!|NdOStxzAJdL*;Naaj`)25-9TTghyFL zMZA!(FcCc}iL3@>iaTbqU(|_MR^WZwZ=JH&vEaqQpR6RPS2~Rbt|#y@=j}8){_-%H zsl^4X2?J8K46!h+V${K^&~=eq!?Gyw`_GbHFvD!s1I^0;)-d)`4xIgM^YtPE(gVm5+QsVzUTWPx6 z7vXBBb`HGp6$<(u$xF5o6_%6pW})%AVDsvTN15)`>~?k2vnbM@k7kR9`Fg+VZ%3%~ z4~4cvmb+BOTDiqgzc7T2Mjd24W_=jlFWnbbzk^6UUXNBt2i$qd3w?W8tRpKgk3lt$ z6hYf>o%Vd3DpIQfwXYJqoAI1(Oqipx!t=N#?-m|^at=nX>7makj8pHdv!W&uZa1c6 zEo_Z8>T#IM?VXekx|{R?m`uCqzsUT(&@eU`1wZx=u<)m4PX2p|O`bO%33&#&R!lr=Ms_T52 zA$t55-MIy_rgjqJ^^*konGMZt{9ECG5{J(JqUgV#b+_3exOPQGhSS|}aB$2)%!7{3 z*}LeVKUee^!>-RoqgdzD;KmAWT8^2S+5}PL-K8KA;#}qKi<~n~ASD zB7q?N%H;C9C2#c9mn)@fttXnEBO{-Za^Yq4+)~CIhe%VxfTg4NPJT)`B{?}P6sEeF zQTp7Tk9Ki%WehZm%niPfQ&0pI*fJz5*-l6-j*Za)b6BMMN4A<01x^w3$Vq=}Vua*I<*k#eTnymrx=co(nVJQY&i zDXo94{*}K2g_)h>7Jco;=&-A_)=1DZQ2&`i!O{9^)Jj)sGg$ZK+n}tK{J*RN_bZsQ z)hu6LeQtF~o}Jaa6!cA^X0))5g5MvsrIt-2mm3~SCzdOu9ES{ptD@ z%3q_$g6|+{0=}ioB*FOAw>s?1Py<9ZeFU?C$%$7_c zvv>v8RRq}efkl?gyg>Et+#=rFwz$eLAMUgl9;YIPEh`)JqM!)AXb*q)< zncZ9OT7Tz}9PKFCJw8}0-OH|i=hce3k#vHHiz5$hHisBOS3d;5dTWN)+n-PrP~5v4 zU!owED=>P4^lrOqsUy~7g*ok)($NMNCDre0W&+9dXnN%1TfHmA`3#0^*V;h7TC2hM zFgz#-32clQ@M8@4_SY*bXDVhOP^SCpW?1ghSm2b-&23x}1!~3r)h$!Q)7Vf#YiVhD zF3`F=pJMB`E6@zMGdwC(VpFmIbo@w^Gp|3~tba6tuX1)jvr&AA7lhGOmjSb`&)3JN z8(i{8&OT%AD2cRAiba-z(_C0Z0j%_O*=s8!%6wuze&r>i_vQtS##qh?zRCs_vdpJU zu6ki#eYT87v9d`Au0iVcUpT|>R(u&$Z3=mkvQYP~_7dIFc2W6aolxCkFD|Zp>6l8H zGi$6Ilve93M5a2`xAGQJ+J@ct(&gwYL;ROnmCsJru*EZY`-*F;tAR+KL(<-whW?Ji zXW9R9MyB#<RBf-|?Xf}A}DO2f!v^be60fk--EoMzt zD}QOtFn}WFZZpitl)xVnVA+R>GWyU`r&ueBc@KAFSi9dskJn)0^Xah5Uaqffsp?7Qv1?`d5`#10)ejx`0d7r{pB|4wZqS}dS!-TT9qFG&xWa1&&lA9%Cd>C>m`ECIHgMf z2VCLQuQ=t+r%KCwTedd^UtO9EzdY{ZOM5O?0%A;Vf$ds1&7Sc5@GPoLRVyBHE}HKxP^I{>aB$Y0^>HfVcyI7E%F&RQ=R`X512_D7 zFcwn2e{|FbZhLd`@WKQ)uZQy(>3gn^PHUIimsr<(WD+82aD+>_}=M93Jjv7Bm>Z=%}>lJCyJ` z&VJ36Vy6I?=&Yzyl|-UDq$#o~d!tz!7uRp&S29My4duuy2_P)$wcec$W}w`o$YL2H?WoEQ>XD*u-sL%bhDzDC z43S3a2lw*s^bLqbuB@NUA{YZ|T6{VK_wg-o8q3$Q&Aebb!YAuT_ptK8U|+pjWoQqG zcbrU|iHD?JgZHq?xBjc&RrW&B#!?Y}T=8Miqzs88;9sAs!8N)gw45HWlprIkH(P=d ze8F+kCiOQZrQ=%tAt>fC>+P#AY#aqNY;09G&d~A%VqHg?j1eXtr&j~kKg0G-DRe~V zUDo=f9nrUwNY>Y=u5RJ#-`jMu2u=f8g{l`iVx;@oOWh(B;-JLf|Cj7qjJ0gY8D75dxhALlTNyvto&fpQx~c-MM)(LmW}1Miktut!^Iln9a03?(f2`k96P4EOTKac=s-W_{ z{@XJ%ek;iDV&Qt3cemGrq9VWY`Fw6~f*DvpuPA08M4%}{p+nVrneMk2*1*hi$FObp zSyVqvi6_*H=(L~WF7I2QmXGrc0M1C^J&JyhpjplZw@=7?oOXfEDI#>;(}44>?QXbKna%oi)Zwg57mV-*wlC zY2J0v-qA~a=%c<`U5~fO6CqsaBMjBZo1_3n`8OxIVOLXyQX7S}$T>&Sj)F+L#{r!; z&RyyY{=$%8t>TYLJ+eI|a>fK3N?4>h3fLeM3M6!7S#Ox?vkrxkf4mG@)qgempfE~Aw*NqQa=a+7cs zR7~@bJt_&`&M~bZZ6n5FK=PM?;mbS?d$ZmDj_)a{^3`73!v~YefEKHg*9GryWubXm zZ1RZn@7iz@YqEg9-)W!i92_kAtpr|jroHn&U`bdZ3Jq*LB%>isFD^VmsYwe+Ki18y zb9fTBj(SvbL?v^ap;a+qA@uF!eqEIK)Z5a}?7H)1v_}8d_{2o8pH#dG3-;nz$n6r5 zPs{dIhPY=ZkE;DlJ%Q(f3x=uRi4{=m;^IbREK*p1iT)G0*pmqluVzS>O`fkHeuU~B zin)gs-~N8tGPsABqzk3XP<(-4qv}Ij$C+wd%KX+5_{OUoUCG_qnWy8oiN~}qiP>3J zC8dGn$AkGNNDEl>EL*qVAmTn00Unm9MvWJA%YKB{?wDl_^nZpK_}-xvICf=6RXQ(~ zNsHR7Q9{nTr4v65SiS})&Hs$*MxLblzkQ7%IYI#hq|@u*LJC)IRmB@Cw%E_Ds9UCJ z?W^?CQOllBWYEvp1g}wu;6m6VExUeQU5W6jHK}zkjjRG&y1dmz?tqi%Lg{V6Z^Pht zvwS_@c0coQf2+x!TLf*1D( z_p-gtIga1CZXT?2bMpy&#Nd?jMamH|bp|1$+V77*onQ z_r++Gm4&S1s9hc$ZnbtEiA$>WRh>@RNyn!tgRGFDv|tW;E#c?K#cT*=beH)?r}f%% zuBTr`iacnxAhL7ab}7%M%i&vBJ%>t!n@lGugB#2T2M6Xc*AM=LD&342+X)E_I9;Kf z`<-4zCYsCL6>(-0Nrvnxce0XdMLo~QFHjy^X?wCRkTE?$2ze_DPSbwHW~BJZ0hGkR z6bAh&ApGQ3daS1r^%&r@%q|Yw+joKFDQ(A)hD<_nN_cna;%wE_?sv$|xX#P={ux?M zyCO0!=mAws)e8H; zzJv-$bO*=ii#9L$Y}fE#QSF$W+nuEN6G`Wk7?{1kh0cw8F!G#8-;lw1%kd2^YBDtd zfCno~_BaC;ti!%RD7z_e;smN?571Z>zdV>P1b2K{O+GWP4cAq<-)q71tBb_xt94LT z84p(Iu!GAV6h12YLMWvR2pn;vew$K&4~Aaw=IS@gZc1V~e*Q0i0k6sjypAtGY6qfQ z+yULU;T6!j>mB!8!o1sQ%<1B3F}QM_<#cV3n6M?Pb%+q;m=eWGvLn9djHHIx&`A`h zXk$V7gy@q9i1#pMOJ5xixghtgD%`$?UZ)po877wRWk~@{?K&XIsAh&cqd$k{yt)19 zY4NMq{z>*vkIYHPhB=?FS?TTXk>UZ4(Au~K`S!B&JOYY&{_M_0|VLm~edz2GF zlcxLgm8#%KresrXVPWAI0G-x|V%l!Cwki8JbVC|p(;HwSo-xMdJf3tQ7G`*)Q zWoJ@85QmEBpupB!pit_dm2~1K1W+uwS$Wa_EW{NGCo>0@o#>O_>(_dntbIe0koHHo zM*XahK30rW$Vzl8~y=pguN#s*;2CmBXx3F3HS(e|gy~_Nev9_GQVw)gB zmcMBQgRSx#$nxCJ6{vpOA26%N#;$buhIc$)z@9ydJv766^6u;^kdD&b2W>MFj&5!P zJ)T^2@4|n0vlOVqma^K22jqREa?4xi!0o6468`6n<$BR=##{*6`a5YQsCyfyQ?Y(G zW4sh4eTvKX9wNGs8@{hLVsWrwZsU4qHNCytKKNaqDgYV|(*hRk*)L93qPLR4(#y_; zk^dpPOmL?Rf>n4B3zoi}NICJ%x{)rB zi||zBLEvKTIRbRhKWAt;m9X*p!C@i|uEdcCs= zMy*wT)vP^7;F6+oYjnua8g5b57dE^2R-{kYiXXV3A3ub_uBP+K=V1Tu1yC8>$pUu> zptwoBE<>LlH%5f1dCbJcCaggXjf`4wF)?2$%37J5+G|{@ehCQ)A*Z53jiA-tw>vL^ z&<%eA?Tj<;K(8>LU-{c85x(>Mz=Hm&!7q&BSo>|GZbNZ=vt^}Pzx{CFRQU+M!;V>WGB;s~eNz~m*b-s*q`c)Y5!f*A zQvf1w<+3HCf}#X-Wn1@yw{Ct3B&I+I7vXCrfqmY5e0Mg}dS47cyHP%tgg2HiaMgO*1Ox=AdUZ%n zGsAv3_};H}MQ9f5RQK=uCWe+|AcjXExwdwS^G_WhO@@ltEoiacAMic%A z`IsOb&;2Q>w3#?a_+bcjzOPOLE5tFQoin%=;&rRU!eA`+CQ-2*?s|zQcqWN-Fn^TL-<|Pp=05 z@t(u*DAAX9|7ABa7cl|8$<>XVKHT1~ZZ0#4rYLM?Ut9}ZF~qvGLF zzqXd$(k-0wJ+JvjHJ)e_34b-gEjO0QJ=wN^?r*eYU*1w>)i=lakw}s4mNN<9b=SsT z=#%iQ*?n$%`2-8@=}c$zG<#kB5l7wso)%({8Y96+jr!#1eS{i0DYCNbY$senDiIr{ z($^EET^fsCOB+#wz0Iv+;&zrQfeJ-ZsQ)lLSi+S#;34gHz zN3iv@Tn12rI=8`C=qcwP5mS2FzFNsgiLK`iHryKA{}~)D##5CK-sOswJC);GTrpoq z+y@>t;bZSirCxfQ;OTLVbPqO{mg!4P33jMIpNi+@2w`B8qwSgT^ zMlFXf)*Xn;Lyi8mqV2wPix(sAl8auIMG>vG)(- zfD}g*gol4{Jlf8Hf1pMw{?IL_KIw|_0>hTLPZ87M3RNW!*Ohnk3 zvt`CagV*}wvcS+h1ZE=4^Up9~W#eEQl(W}5OBBd=SA^0wNN&7|ZmXHEHBdoO-pIOv z;i16Le>?Yp55Ed&uQ0+_G<^FRE~chZ#SJ_J1i(O);i8+%1x%6m;qBY+w+vevo{M zatCgWR&TS<648IB>u?nIo;T0LokoRksK@w($anM5dS1#`KU%&K4W79_dgSW}h?I=w zj=2^W!Eg;DwZ9r&ZU^8Rgn2zRk4m*Wg-t_c;C~KX0^icWh#8;NKKa-soSbK=6GA(V zLuC66{jg>_)avL(+(=P^Y4}@bXF)_a7A~cTH8~B<^?Qios3WCeA11ltUwLCR(uRux2^DH_oFiCZ^TuH_aCEu=Z9hJc1BCnpBe7!eI|E;$LqxJ^?FqvqQY9s zx9Hxj=`|@sFBg$c&BsGrxtbWX8M@A6c>ilU7s5I6A-I3M#H+p^Cr!G^d=+3tbMK8^ z;Qw0yez~a%F;x@m*$MPIYzQMKLZ~{F`n8&mssz4Lk(i!C#Tkae2btCHWT6gMi>ptd zkQWGE9ua8QSi%LtcGASU#)=?2~ZoHC`QY4Q@ z^!#({9p}7pqdVIdE)y)-{`A<*OWsX06xH{$yXRU2#-3IT1wNrtG&|~>8MjQTY(4T) zt|WW`_h{#=72GyO2f(+hxE#IYso9n3+LXtUcWUti>G>T6LF8gi6)3_KqCjqm|194if zbvy9@u>)Ry+YYa{u%GU|Fu#=*oKqmx+>!MNsU?TbNx=gJF6 z$Ih3Fo{0aV-(T)}&c1V}SkFX@8ocF>-0<%Za+WWyl5-YUoSrEh?p6>-OB}F~N%yn+ ze#WrlZ%O#>QS4dYUq7Zvc$o;`;6r;3;{Aw19`8`Sww`&tyES9j;5 zAqc6O7>j4pc3B;JY8*f5Yu}WOy@m6$2#)l;bj*qZ9z6IA41R*5`EgGY)9nhA#Az zX>GB^K3gwxX)1oA=oB791Yred;qUoqz3`i?=M;U97n@Q^p8M^lA?CtveeMqKa}?VD zQ%>qsYHF7yMFNB8v1)JMf4U?1RNEr+&WjzNH(oKsrs)0G$hsz;`n%gq4d``fQ@+_!O^?FX~5-rTxzw?uPXXPvE@_h7BZ+&-+W2Mqpao%xs zp&)Oc?L!LzX2UY1<2i3ZFU%D{h?Z;x6LkE6IH*S&{gODkXXWxsTO7MzY=q)HSEz!n z#GAHlf94R}qoyPHX-ZEV8U0BSHajtDv*2pCn1pNqJw1Z=tn|sWcz) zB?Oj72pB>DS@ZouCk0b8_dlq+Yz*{HuUVAvsaRNu+-&?vcnooY*=K7GY+{?Zl zbTggNi)fL`X;*Cdkz43A@ov+>6RgC(pr+Qy91`|F9AvhC6N2>6EMy0--ukUTi z($bPFV6eNYu80N#atc5n2cLZ;OAJh=Z`UNSI+C`;36^e$GgU>lSxnOEB|B#0e~54{R?@wK0wyGLP;Z%s-C?ucW-Dm=b4&a+ z0g{Hz9&EDx@?kJvK~?b#=UnZOk{RTjjKmX524W79RPb>MW#}=|1|dCs`kEL=MmS5J z)aIF}1GvGK;X&>MV;qnSGSmWG+~R06f{8w6)w>jv4_|)*r(aj0de+hpm-ScMQmG%Yr|2W?b-2JX_%Xh2x;-=%h@lFi`xMv~mCOX4FXfajvw& z{6`xt-ub2t9qRM1n{-Qzn|2og7Fp?p3!HNFJD291W&vs-Z) zX0J#dC9_w@%5MI7ZST!AmHToWCF1hgYt8g4*g(Fs_ z`nc%QLbbP7-h}>mH#*-=9%7sJuhnRQ1NMJVK4LMnu1o##dGMb$p;K(H;%q(}5!e6u z4i^~k^xDApy;dnELT0J+eHU=wxBV{Z(^RIK%w0SyH^^k?Oo5cE9Q8Lk6S289uR;U8 zKC#9^v1%Q@Ydp=asUg`zIDOP7$qhB*K%M&BdbFiZ_rOFgvHepE&B?W7gGmJ`aTY&H zKgqnaBDv~q^!H|3(HNz9!L9#j%#vT~bOqj+7_=|^Ku5)hSeet6{ir9P`fXxM5gbTA zt<}k@IQY~JHdk`ku?%f0LqDm8SWeQVqmW=PRCPSVaHeWkdXa82mvVDF$t`1Z)(w|h zL3N&7NtXS}DRnBq7k%q|zNa$zZsd+FMdHLxN7*(_c-=sPOv-D8e)7iaQ*GaLE*qcv zoF^Jk@n&i_>c~n+*|4AZUt7e3^HB%6I} zKr^0NS7gV0dRU=nfw4we;Lf2?+6g$3Pe@5*`F0pvRp|X2I2C0gKL;eOG9Ph7zfIL= zfW{HXQ9oao@5&AAYLgg=Uq*b={ONQ1+Gg19c$T zo}h;*7;(YD!}3M-+|Q7Ee>vU=QJ&%TLN?GIo#`89g=Vt27yN2jgZlf}(+Hsf;DTzZ*eZYRENWAg6} z!I1hdsTXA;Lj8s+@J(8PCV7u@5h3zc&=-ARsTl!R^*Vro7#wT=tuhEXICM&!VEh|Rkj_!je0u%9=0*{ju-j;+ z^+Vn*|G_{#ezN!H0aKGhY#*kQSumvWe}2eM!1Z?>FCyIQQ;2fu>OT&)7>Mj?I99 zhp4|yXhMysqpYKp9 zDaWfg^92MfoCk;=fsZX-K$yGU6j7YJ!;xtqduMDzGvr75sg-t$>`K?4h~r#)n>{(o zX&N`8uHHMd0SD|`!lrP>#>U36$;pt1hX7!GVoVua?V^2fUfH@-!fZ;2w9@$;Z};FT zEhuvU6e!n{)e+!5+yHZbc+E;DM+c<8hr+?5DW9j8#UdX_AZ z195h>;c$dU%W^c#?{vxc4dpv?a%h48i?c^R629x-NHUvW#H(^IVu;7{7x&I;mx$Xv~!|Op0~Zd zy<`EqMX#&)^B;anb6R6&oVm~1W|~q)Ns#-p_bN~zuGW3dCB;}Sk#4B0<{`8v3e*dX zeuOUF^g4w3okbETt>0i2Sh?Cq{P~%74T^}sN($`)y`KF0@5ooj5z>BnZEf&WSWDQL zv-y`a;wKqm z^;&p*F7^wNj;@mp2vo-Jyh9tIP~D=Jm7QK@)1Jk#;lDHOg|K14^G@Uh$Xh>X#$XbWcmx}M#v!0$e>L+!QOc^(q-kmE|0blHtTzTr5Igb48}G(8 zSg+mauxSPa>I93M|BeX+e21;!s!lHCU9e!&qjpS+JB6-jt6_0dO9ZML`=2))6(#W6 zSd6|ms`X-#cSGtLsMNGETqpK)c^3q6S8XaBaHDDcqon>Vy7lQfXCu*qy&NO1O)me$ zTRui{!Q?T4SRz?dtiD0#{?7&XGV}NodClj1+1zycFCp1U=#$qB&a`wTY&T9+R9%dW z^$$0DfYMoK;pIi{d$HdEGHelGLL6P^A}{&yYr z9K*75vbRx;5${Bo{LY5!s&(FvHPPPvifGKySB14KC85p}C_TqSqbHt1{0Z?0y&ANI z4REt!H3GpoVR$oe%!~HrP|N5#M^d$9O*0Q<`3B|})7%`!q`z{mS@SxSlxM1%{xL84 zMdJXBQ#UMqd*x&I#adrvrhITlU^kcAX=Z}eI#XXvNZu8e?vD%9C#p7IfzQ-YEQ?X@ zc+jjYxL40_<-=QNW3t+Hx-6-9F<#x1f)AsTAsv^(z7&BC1XT9hGAy{3{4!kFf7~88 z_WVcRHJ{r~mY!!%_TL+l1q-)(XivhCx8jsDuaM0D*|?CF%0_lbB7a*;kamp9uByMc za;5I9q|Z=8yjmK3EI|Wslv$8}1C$;*Py~T6qMx!1DdY#}^%w(qJTTb>aZ9T`5b}}A zWE|?EV~E9t0PpSJ^Yb9L)<2;1Pf;Cwnb8BpA8r(51-?81mF2fFNbJ`r1ka>@P+kYi z#F}qb)NyiLJp;A66g*udqVHL)Klw@@5vCNoeK-@ytPL6yU)m1tz)qU%4BsEWBgOmn7Y{>u*VlYe|PFeq=IUQLZo zUHr;%T=43N7`0G$A*3E;+=-gIFOu!rCiZZ6XVIvy!H7D&D{*2b2Ss>f5#{d6Y31Gp znUZd47IL0Poj)~fwO1U!W6S5kZK zAgctrpi+Nx@N<6tB-(KoqYJ2*y|D^dM+SA!hARaIK24~V!I;27h~3i^@{7a8TcMo4 zuJ6?1S&Wgvirs-ulWmvn7@INswA~cH>aH&&oYgL zJsC^t?CUMDT`Uv)de#@8*koCW_TxGvzP^^m@RIS)~p?O!yEY?(&_9X5Em_WXc5TZerZ+uXY4^6x1g)N`sD(2%FtBShv-;8sYgN!d;Q_*`1jYX_=01n z21N&@L9|i7faQ5kpk<}e+{m^@=X;_g@RESMFgJW>kS;VEbh!SVF@TU}KmRYJ116`1 zxQkIMvYs|-Jh3UlLOT@)e1*3JAYQhTF8mtPKr%MPzwiXN-g)h)Dj`BV9 zS(*}BGshQCk(jG{Nf`N`frs_q#ymSqA?{iwWb~ri<=w`w#ubwbY!^rT8s7$E6ZyCD zub(L7dg<~}=+)^Bp?g4!-W4~R3_Xl6e*4sKoqI7rHnfJ|cWf!5ShnJfe-x!OBIvy- z(j{yuQ``gNCq@nI$izLl!rLQ8JlbqSUUA0Ei3_Th>M5*Dus-Zq%Fsj8(l#R>-vVCj zp~#5Zh^Tc8$N1eFB-&yF#bLA0Qt>!A<8S78hPDOTF!glLg-N5C-Q7Q|081!@k&$uc zr!_u!lD=@8#Z4Bfe+Lg!m@IwjZ(+3y7bLp!6aHS12?O59kFE_d#9N3VjO%F`0dj1! zm7wZ^)csY=KrZY7Glt{jkSQBIt$Eh&ZxTC+S$CGP$FFHivcyl30%>jW28v5+X)c)8 z`r@I;ig|I)DBXHJ_B*_fS0aTP>g5!kDMew@?zN?_Nn|oTWsP43hjxE|l(oxP^I8AA zfTCx5^~ue{Y*SMEmy3XGe{bX{7kcaL_)fT84|6-HnNm+Vw0gjjwu11&I-E#<9{yZ0wI zd)#e>dpAxf`D8iyuU@;j8?&lZ$UP<3uzeSQefexqHb(=JPy9s4F_eKdw693>vqc*G zKkgiRSwd4y2h&5c!WT~uUI}{B5=65`a;fX57hT6&2$l(t9jAFPt;Wi!iLz%iQS*Gg zvrCarDd`CN3-9=UFFTK zHlAj(D@Brq-+8GSw%;l6NW2750{i)15a|Px;n`CQ42TxUKJb6N+Gqr~#lOX>b$9_i zNjPhLo5BMICYWwW#F*kq9>4Jm+w(~j8YuBl4A4v=s3?#C zKNa7W3oGu}vDCk(tw%wUi$o5eY~5l;PkR2u%m5K?<|Vynz$6;)6qW5 z&C1El;e3I7zO@$QCc~uS$E!=eu~}VnkHkY3Nec{j*Tq`JS1il|JnJYW2GY9+iO{}L zXLH?}|A0u??nWPa%PL{?(5}r%0!R;HcOWz>1&%kB)}u5caUnonUk5oD{T3fV*9PO< z0XQE>r8#ep(SuwUgw785TqGHtI-?^&c>7+*!lLWwk0;^n8%aG_$R7I_dI((&avqqT!Lwk=vz-s>^SeJ&pihgbN~f@4*U=GpivPDYvh9&eZ7<1YJ`>+e));)EbNdqwX{W83)4Ld@*F37JKf50nj{-bF*keUBLyP9*s5k`D8DySYsfl-3Abr$0 zDADFD5;ujXg9?(};cvFRu2w5@K{?yh^aP|b!01RcP)C5wC9v?BpW@?*s%2+2E_j&i zFW2FNhB~CX0GL^Z`=3rmM*>Pvx?=uc#`lVr+|smxPN!R(Lw6eVXZIY*QNq&|du!!Q zhf!a9zN?gRC3iAmN{1VLy17)1b&VHeGQ!U(6Msj!wacjSQ~SX6aT9pTX5M_}3Hbf> zGtHCng|5e%7FC}xTm@{I=4ZBR@%7NVO1i(-5!S1{TDQiU2b4!D5XgMp-ip4!>W4{O z)lyj^@#@>7EX#p6tAU8vt2Q}00dx18k69BGqDvzNYZ!rgX8twS|NX-EdN2-8(_F-e z_oExPdZ?3;$tJd)#1ZVS-{Iek|C0_1`_(x+;Z)~|z{l`;$Txis7f$4c)Qr_sl z>5~7lwIB{JCNB0u*{`e-`)TV{(bG>q{4;#{me#zM?Xo{-bvzB+{p(>99vGLASzBvuL-WWitvD)v)NJwR>{>-EL#?U&+lP{A7L!Rz zz(jr`y5;Wfo+J{7f^fY*;Squo(xp_E9@benU#zutYS=27foCyKc28LFx~|=K<+r4;p)2GwAAy@w3h@g3HUn z*TMWcW!9*xDnU^TL34*3Et-hLe(Q6BSoC`|U$o++D!h+-jUY|6Q|22*7(9&XupF-F z8I$2(_)~Sc8Z91uq#n%QXj@$nAp^!yUGxKZ_HN?lGhffjEz`u2_ zsWll7O8{%kAykX6}IIHTj7_H z{waV#$3v68--?IqWb?lBZ|*5e;G3oTt7l9XMCxN(GyBKMFij-@PV2oBk$<`~r&Q73y;!cIM}f zk2Tmce5jy3T1`yZ|X34#3@`dsFbIX1(U z>=K~ZIyqsN9OyKv6Z||Uw}gX0(6#Pbe|aR^3%gMSndIzWbj~EJTIcU$m1zd%aU%)- zIse{IblQ#6j9{s50(|_lx<;5ra|M6cPDG02`>LffTbYZNS}bdu_wy|m}Q&rm|LVtEg^X*SHwPt-3R)|lk%JTJtRnEG(irhAn$ z*Xf6)JR|dY_qD-SG%ZMWL@dXx99L!3Q+F`J?djIo64U!q#b{QxF@5sQ3nb9-G7`Uc zB^&hSYP2ag>^(k)kuL>1Ea`Oxh+*_a*+|mZrt(notwfN02*oNE##j#8XywAxf9W_B zDKtn7Wc?Bk)12!9T|S7*%gfITd^C;K<#<)EDh?0wi~G zyjFJqlb1f=bqy`cwpJ`${W&v^KpS)4OnIl zW1P6LPJyYbbM&Z<8~^rd#Dp@mpNe?FvbK)4+S%uOFSYXa(1EiLTYl4e-jmj>w%9p4 ztE@3&S6&!yGge=>qy%7j9f3Q-x3#0k!y`w;W6m;>W;>#3HE}drPvy*SCfL%=KR8^p zB$(TNH0(88Z=iD1`0eFMWu82Xfq+_yiI<<>_(hmrrH#HDfez+lC?${!Mtv-3rTk4d z*Hb`q|Ib=N4%F8?Ss22)HG?7Bh}R2~k2u(3=hhy6e=8u#wQr&yv5`q?Y7_0=I%ntb03|?KhnLDSjaKSmYFp{$E>2Zf>S&>tVM&Z?5cm$OgS)F`8RuX^xdIKW3`p?!}YzQ*-6cZ8$xU=Yvua*)vienI`LS(rO zZe_~UeuDN28NYq^j>MDC{r!%F0=OJhw``Ms7Ic9JV{>pcp!z-7){@XZs6%nQ@zg-8 z3Y=pUp!O9@XES!i13anj!WXgV`Z8z{Tg6+uslD|~f}Flr_=PFw!>#ua(~{}y`5|$_ z?HidEM!%}MT+COPe^Rn-Ota>g#T42CXxH1fl10zKGf)~ z15??n{ztZhgKI4+yxc(Vd6AWYso97W{~ig8uD4gec0u@r_}zc+3#k9 zS;(VMjJ+QbQ^$&f!W@>6it)i_(7ch57^;buqbc~is%UwL_Y2fRg@RY8ohguk&()~J z^;Nw>YQw`>IZ$65_aL8u$%+|hNigA~HUFz0JASSjz>OVzA=Uc~+4n*_`Kb{l+IilF zgFjYQ5@jN>%%(6~2-@1(G8`%@i^rMYe@D+234?LPAtm8HJT3U%{S~ZWH96NURRiMz z&9-I7|Hx>@Vz>s0E$nMi=jR9g!eQbO$BGP`oIXARv1?Y|UqwiMZC3xr;GD2**Bkj7 zCSu0(^{YTjJ4r;XqGE4GkKZB^ZZ}~s3Z1=KSd!IL!_t9gr8WzNPTq&W&xsX|sPKA7 zcz=u?E8AMz_S|R7zg;~Zto$L9>R!9UsK~-AE}1ydU2o;kEXU{Bk+)g z+sTf4BHM0sBw!a^^nU-e{KX}2s>$22ReX5HLCZ@Une({0mv(CDi(~p68A@`2Opy1^ z>)}7d!N)TQg!>=M^{rTCsG9I zufI89OXE#3UEm|VsW@pb7jdt}YAP8LTqm~a#`w`4(`K{Ay&19omaC5uPnIENL_`i3 zt`?Dei{QY1soJg%wqgweCi>_3<55=5IS*wzNaj(Wjh%vcp2AZn9Db}En?WlSZj<)c z-@09gi(#3Z9V(M3n$#}NG+vY`bW3-{^F5@XzB512TmR(LNg@D@WnjR@Wj#SYp7jzL z0-$vz(E;&ET`~K1TiEc@{h3Dpg%Fwijs{StkEt7>57h;K*Ss=mP=ocdia}u%h1tO#0s91 z^enL^&W_{*0a|XT8aI5{&xoelb3Sdw`1AQ!_ku|gK_L&tk&|#gs3A;<-8jx@u_*mt z^{d3&T(?Gl@|GSN4a_$uM`BCdk_LSfAHGUZYCb7+*?OUn*F#eWlXS}zKAq~uwIP>jL~Lsg@X9pVg9P3ieu=Di?-AC)dHwcZ zxaS|~s( zbGQk*0j&6nZG|WT557xT5G5z%vo7EuIq6%6uWcM^*>DMUPtHpdphR7 z($3J}E)NFJ#;1c{Bkx2cN6ol)ea+PJOlb<>^3n1Si2sQNuiS4pzswQmALs)5k<+=r zhdHAW%Tx5!9}B{Sr33=V)43g*_EPpIp~j;7vIAxsYI`(14EwFs#$gUaQllO zDlO&_$fgxG{;>N33{PnCCM^zsw|GBX%l0qnOB~zZYCv z#+oMJj>qp>-v?GpJ7@EJ_Ty)6*Cx!@ET=|+&nyYKnH_?gJOiYj=c%?|rwYrXp!AEp zz5VX})FPgDLewL+IQQR)5omhVzu1b;ko@NwcydtZFd8s3G;6VbG2|FkT-nPT+`f`3 zRlcY)Cv$vqM#OCN@S$~D*@A+7ws|1FXtGMW9}*me(<1Sp!GYg6Prhs=tXhK;dV3I) zHVMZ_ufU1GcD%3scRlG}4QPH#;T8uMk(tmQ|3L!X zaTMmG)2eUT}hJ(Y#O!UA7svcDiE zeyz}goTS-k zLiI(uxkvoCZcyMOY#V9K0`!R}HM#g{pky5FwE>Q{#Z*^^#XsYRj>$T#33WoX&Q`23 zvfTB<>^D104|SQHt1(dsp~Cn*q+;%r@lwkM=FLa)lK4DEtmZcfD0EW0N}B)GwE9r= zx4^BV(_elvZ%ZZqbgPWf@^eQD!6LZ;=jFLY4i&NrvMvVq@GN*nrEQGb&Gsz;$YJv*rPSwte@N$NKDdcn(cos;X`f z%TC!FA$1%x=DZI06gK2wEhl2t4K5sK^^{QD?k~M4T;*K2$|-$c_BfH#kl>4_iCFQJ za;Q=IO$Jf?sbWW+FuQ-r6$yYkxF+ zd3kuyUD^=GxpV%qv0H!yy_=!@Z6E)qYx5-}p<=zCb;=lxm+C^L}Q7bUWjcnpRc#};=|j~H6`U+Dy)?r5-#5#3QLS@@lX7cZxc&m3o%@Hyt#_RP z%AzQ%FL8LzMX@(>u>;MeQ?SG)L-$*lGDexwUOU?(pKX696WvPHk}o0IL&n{RNi%M? z8mrNG`6vL%Dq1!P4Wsr$7k_HW&01W08#tR|Pw{FZS}pSW!@7>IDGmCP##K=LhkXqu zMVXh6hTpX!Al2D57?9XYoTX`AJDVaY$^4y?;wD%ogj^iuFtJay213JtQVgks2B)Y8 z(VvAzCSq`mlNZ%9%y>cksEvo~(i4?WBF!>I4Tb$|ekxZ7U7ofWYBT$-gdW|IV$I@6 z!MoJ$5q^1(6YG>vgpgdHfKLfA47f?VUU<5ua@J(tboKda;01>Q7Z7mA*>DAz6{~s- zO-_NhV;P(ZENLN1ZMa$9Q&>8pbuRB%h~1Q!;BmNLF$Gr8aQLsx3`h*DC>4jqa0SbHfidLhVlrB1yz|xESLS+5U1Oe8kclQX4;G zB@8_}y^@7OMNRB@vNv*kE*7`2L+faHTEt2t`DR_Td_WVYq)S{$}?z!&d_5gI>;UEQx|nl6E0iET_HjjvPc%- zu5v(gDUK{@3qi5v3nIP^<+7CVR4rUUXWCL}pq)EXLLh-FA;me_7&*`qyRi|c>gd(R zvB}u5usHU^&Sjji5Hs*W~j^LJ$JF%QY|^+ZE0GDm6`s+P+keFBL&bPnE+|l zI(T?^7LX>jmr>aCgE~9$5na~K_%E7FGFyk(ccFNh$saYUHFuelqVSF z1-HJud?Vd>O3u?#X?>eCr2KQ?wFbu{Vfi>x<~z^PyUDJs@%s!NvnY$HWG1czDgU6N z6pQL>1$lWw!34K>Gh$|lu;aTW{*WLGZ-DBc3?TMe23ys^qRw1UiPs#*J)qMP{fL{< z2S;wpozenmcu$_K-gHJejS@4^$PV7CWR^tl} z&AGA446#p_E1j{Q9B=tO0h0o(_dcK%@$~HVFgn;`$|AgFgrdNE=f)Bldt+JW`Y_<8 z=7y`iwKXYG7k0BZr{$(8@IWl^1+Vo&5*043%4hcG%unO0hgXG7zd@ZP<2IGw!F{v~ zej*XSGvt)->m+oMYlJvt@e9M8%1LH4nu}SsPo%Jg#_kI9RJpJfd1Xe;Q_{SPxzM>N z6kG1f)rAXzG-~#TXpIQNoSPoUN9q(j+~w| z!_+YX3dd-9cpS=nd|uD*ENNwB8SCya2)O7^N<6i@{PEez2|W8Qpc`=AN7X56#p5r@ zUELLc+pV=0YT#?8T#eMD8Ag>qA1lRza^sdMQaU6k|5hmM$EEyHcpYs;anm}TO; zCU&+*e-?Uy?KA=Tunl`avz+4>Hs~8Wn?gY3w2ZE9hNF=|xwbk-hK7fccW&iX`IHO` zq1`}KNoow4p>(L4lP@V03RL7I5s?uVT!q7py0H!nDLBqGM@6M=$WH-)@v|+^Rqpon zMW0e4pMIpza#J&JSwNLKH1<=>aoA}g>19E#Zlw;JK@*0_!>I1bk=LV$YYRCcn_iHX zs!(yY?~1R-u@){A4(am3!qgOE{khYA0iay+vLyl^>+JMgK99_A_OGLw^m}JDlF740`3@w6lMl54WO>qk&)Gyj_; zmMPYRlVbDAQ$WfIxw$aRDm=DG3V;RO1mt9JQub=)WM<<3hR;b5G8!6S@}f|WdD}Wz z=c3|dJE)@ApF7l9j@ zR74gZMnOz0$&zNP-|l_VxNzgb_2hltu|0oBfPmt%AfyACg!kqL0oV-mxI#0y zRb_~;)TfcNMB`p_Fq1^MXp@Itv2F!5z{@M8WnTRjJMIXuT&f;8r^!%@fJrBRH;Q-N zrExy&@uY1Eyn;KMXA0QZsL7aS8nTxRfQ{4SimcsmyRr)nnW_RF>|Sr}0Efed$EcQxi<#g!Ce)F}I8rF}Mk>1frRm&J2W=S`&-w8!I@ z)~k1&W#fc&Xmau>oA9qew5K<0b?3ha@=uNnU*su5gEmG@IKDzxJyidz7UCZur-m6L zm%<4uGo_zux4)6R==_Rs>=k(B^}K6D1I~~kP?VFN63G^uF8&T!8<2xJ!l3iZZRmY; zWItvXT2294*#C0+M`Mkqi<(t?`nf+98?4UL!(S+AcW<+37xBwl{LGtrkC)ZTKZFuoSV*y#)})#Aq3vrX zh~XvGtb8&Q<%JcukH+}dox!fwH|S@)-z(w&t>Ba~np=^66u#&xYh{#R9HK}0W?1vW z<)0`DJnXG|IUo;D$fYA9n=WAqVxK=CNKPUWTpjK2%P^$8`meFkpR(J@86&%f7qnx1B-n%k{gCpBmxsG3I7z(31-Q79yw9f;IH}0U3^rRi;0Yyl#x-LVM00oVI-6}& z%)*Ic5Vb2gKBtCyr(kX^BS1YOLbd1;$)i+NtiDBGp+eY z7RCkRxa=wo#HI}JM(5}{b>&(~WWLKB=8GBn%t`>CxtA!nrOx!K85HMzEBd^YtFaZv_1%$y50>H4S>ETy^ zs^gXD3&7^iw)Tuv-~`_*8MynK{e8H4dJL>FXnXfiSg=Ope&kI_Uf5C0Ohh7GZj3*p zqFlVb4YR-O@HOdc*~w+a&o@j8+fi+>F6l)$iPXGJg|#=kF=kTDN+O3@SY*RDU6527 z&_~N+MqSpEpuA`Xp#si8Y6!TqvI9XSB5dc~3^)$NCrck8_u&Bzt_=x1@T=uz3r z<=4X%w^0$lsXV&!usnF*zuEs;Up@5waerg!+xVXQQ6?=n>gr)MIy!x!+E&3%Y?D*O zu+uAUadDbe`^o7zw={w3R4$q*(!RgPspV7Q>AwhP80<{P;|TtX@u=P)&!&?>VdD0f zM-O|yPL}egG2|QHv6|lI!RvGC^(|=qFG*Q#4BlvNc~kAO$jS4EFW$H@GH{S!vhJpE znv@YsNoF}faX7>MVJ6_u$xn^&o{W!y6j4-#IOk8&4h&L6FAFy6G#D-kyAmU zK3f}lNtQxO14)w`%ZCUNYvU6-m)|+v7Now-`_(H|qPt&GekI1o1KmxCW{f>U5y@nU zjV)pI=%-mF6ZZG3^Nn^yzp71Yt_-lx&}%3$mGWQ!bA7lUJw%BokqLV)k3H=%urYVN z{oAKhe!p(|!YEaKe9f}O^US?{=8CFMCfe5JbttO9Ji8Q_2Dp_3^g-V^>RA0 zfp`WsR|ed_4vN<59U;XTWlf?Ng*&^e&yfDTq3wrT98@vOq6f=YXX~w_7#Ven+VZ9J z3nbszp!JWlnVd(~QZh+Uh%A$Yye41zDCf&ICU5r|oq>TNj7A!j&33j(+f`aF*Tn+E zB=w6*@$}TuxutSP@TdIL!kA8t84nn>A)WY`OuqL7UMy zG79tP9MB!2Qp<=-(PJO`sbnaGQ}T+2$ESs<<28am8=8j$+*ku_7|o?3u0G^)_Houp zslRFpeEjk=&2g|d$-YU___t0bt=nw;nGrhcrW%kZUnx808-*0^bhbL4d>mN!4YGM#%Z^Uon~x_7H}%or3pu*X zKtn$%Y%+Tn9J~ewOXbf@619%4bc5RjPh(1fkB_dttky$DXp41(jE%T`1o^ADn>i#~ z>XcqS_b&rn`nY(T>=&B4xvq&!R@ww^t~U&79rm@D(y-7p<5?B?K+0Os(cODnTWKvV zJltq#uf7UCI;u=qBdOnRcq9tg#S*^hR>9Liqh+N^bgY)RicKS9rzXh-d#p^-|&Zeq&ysMNe%Jq(aO$PT%DuOxe! znX4+UFg&aZV%av5O7{ir?U2Xd1#|JjNMV3rNOCInAf-Vo z*TE0Etx!c6yfkiMCK^qU+26={ITUG(=cp$JFkOr=0ruKTgBaTL27?~lOo=V~0AvY4NL`f891yy2-m z9DMmd=><${%OpsW81SLQ-~r~sP|*he%n1{VR=|lvIXg^1Jfcp6=uc)O_uRnyEfjf$ zO6N+B!QUEjzLX4p*m!t_!ln*9l2vb}|EdhjgwZHe4Qim<<@2Jxv&pSr*Qx zjFcjsmEcQE;ie(v3XN1k)?jLnFZl0IFPYQ7zE21U>nGcvya56KWUy1@d`q`h7Q<+;*QZRrToomJ)GdOA{B)gdkj-FZWn-vW&20aGCDNhO%XqI z@gv7|Hq~f~s1|yuN7})7WyH!?TZ2!cZB!QM}l?#A|cC6Td`oQ`gE8cwoVJl!USn>iDxW!E0Y&c$KyD`zK9 z_v=L0f4&Q#C$b|gt70G6iF%SI^GbZ*)cS))aPlaq1^eOh)U2z`tn0jMm9Z9{BXV*+ zt+sK0HVNWS!mZwF6r@D_ew42ny)d+2>7*FTU>E59p^v_ri|u)l7)U})te0kINAx*H za<+r$k2rcJee`S!^#LrS^Ga|(P{uaI?KJc!X$S6cNE_sc3NsT}4u`Sx2!#eeHd zY*OlKpZWtBb*kDlpVncfRl zG|BpFQE9-b<)NW&A@k6eUL(3-FS*I7As{AeWoed*x_Mv>_WP8km&*ibykvhR5=BA~ zAEnbxT+vxGB?E{xs-=h_-9_iG8TtfIYIB9JL}B~!8-k#rnlIe1aIpg}ykIm6n3ttf zAOM912vf&Dfi8F!#B+RA`(Zw;i2td1pY9H4G~t1PL!UQP%%hh}$W7!ENtVrk6IANr zW3sf_FCC!V8zlbYeddu_f;!}>Uj9adjSw!1IQtcIe&(<&&k{+fjeaXyj!ia72&7mO z6@*_6R7?i&BOS~Qm0w+473r~sAb4NyI_R}|VjBBtoPTw;C);W8(QD~O;!`o~fcr}U z9kr@^?^E6U!~DeUB7~Up9}X05RnYt&!$7rB+wr_b;@Z#GoZ(j-h;Aj_cbLxp6u%M` zd!D^Qp_=fjaxPRl)>S+TLp8$HH}Mj=|WaX zG#D627X(qGs1uX)SQs>ceT_Eddv_DtTN}-~$E<`{I~f^Q-E}lPXuVQ?(4o$(#PX4N zRFm9BTxvcR3B-fho~82-lS`p>v1Yl}v2@{CKK_3oHbr?XrWF$&H-Jct&rfJlvpn@Y zzhIh5Cnx%P9*lFW^lO!0_wC1|@GLizz3Aj5@YGOAwO{&0uRK=2`jQG?=?2{@k6%SS z#glru(+MEyY;WtK)%(EsLW2SiY*O07;bOj*L2g(}^&Xh+MyzBI z3po2FsXD!x+?duD$m;V4oZV}DvPRa=93(N{aMxd{?p1C1LaufTufnstVdMW$0r{VZ{!Iv-S7q0=BP z{Uz`Z%C!Oe)NhcBS2S)d87Grr_KbUvZO|gn-1jF$9lt0~bwTAnl_OeD_6;{#F(<#S zWWhPTEf=&W8Pd6!IS8$=4Nm3!}GWR8grF!dD5Kh4Y#kzPZTY zF^ngZ(~QHpOC_SBiv7Sf=#Enj@?L(?OolqhMIk_XdXgw$V$r$%R~v#@KX)5E#b++H zS&HK`&Fg^GN|ZHagbj|%V);ZIOX!KySShlxc0my7#l8fy=2u+&N@z|NiROJ6eQ!Kj zv`Z>x?mNwQ$^aw$w}?G8ljvF*e}IINq^HO0PtR&MzytBz-reCqrDn{vxz~zuE#i9W z*+592k??=Xo72n7@nBqL$j{i0Q+}RSn!-KZe0aML%z<$e)g1UShyZs0#+mLVg7zt) zK0z8A2m*-{!F$AR&XUa#HjdmFn;)^#fqQgC>$$Y7r2x0m9<=q)=7bPG3fi4#kkj-2*@ z6jM-bKYq70r>5!dk%lgGvSVzsd@ zw=pcb|r&&~r$<-gy#7AaS&OK_wHQ6xjMKxVCH7Xo9>cR5|NdOBAb>%9_MN?30NWBU^)j1PupeT_@!yPd-S8WHZov(qh4oi!# z;R*)~CGTm^^HaMV-WFD_It9j7R=3DoB05tt2hs*wz;sWO=&I*#w0hx_)T_eo zbhzJlrPWV^T=Xl*Kh!m6fHFAX9Tq0$RCIK7Kk!ftRfF){V{me)82tK|eslJ%5v2Q7 zgUD(ZrSg-ryeC&rw{KIxaj+YL7(2+>etf17frZ5@)_60eI%Koe&uhC=t>JT2Py5V5_U5--oOlB;XGLR%rpP4l5=YQO3Zk2u zL^aEKm8StmNCdp~?eUyYIdq}|kcGPIj@ES0T|X}Dt^XZ&fJPnBaee60KjN8Cf1MF{ z^LF_@8W$S1-O7|M!dG4`A*mAlp`0V^1l2yfq`FZJCD`HZv7BR0LNUURn5=9DzwN#P zEb^tPEXZh(Uc-AFVvFbO*=3&u-Cu6x3aq{!6lrzOV9u-Rip%Imqz{36_r;pb^G#J0 z$=ALoKa_-XO8XJEYs$&iBd~;EIU7(h3_E_1!!r4*W9ejbFoQEbegfVz_`I0mh?7Eldk$W z_(SGLx7BjSTzClE#M1jQc(@JIu)Ynb+5sW=kura5>P8SOrl&v(Vjc__ynxIc@)BlX zslA4SsD&$SiW6e8;>$S!C1_-EYz1^We%1nP|$dpJXPHbFfjIkEWC(lbk5EOekWr>5Ly>~ zu=Jk+xDD{IjY*GvUAT{SPy?IX#h233CBOs?o`i3AJ9bt?fkPLySYZu~h#E*Jc;_uD zV3#oUbJ3ifg+NLL5BZOH6y7#x_x&Xn0M~#`J5KF-{%+A2XhJcNnn92v-db^n(H|ae zpmfzm?yvQ6O#6>GGV&S1vUP90y~ZRBQhcRQB}VUc zQ?t3QWxE%i5;ItIjTtujgk@pbDr3?>>wtQuDhX_CgzWlEKg9;NLiRs669^9$Y4>=K znzE#QL_wT|30c5B%csP2_qS7co5Us&1WolzxE5PZ|LHKP&Ts-P4&Q&N+{N2pl~%q{ zASZ16{gI+tlk!Dw>!Pi?^65ivgXTP;C%qCPocW+TyxATEV8{H5D*WRAOp>Q&~V56J9>+ z;tZS_KfWkFkx)@7Xr)B!S4CLzl)Ht=Et1MK>WldSotBr zYOrxKM5!=pGqBf0`qMM$q|T+``49Lya8u&HnsZmM2S=IKtci$k@<*;zl=V|V6G&)J~MAjw#*|D7jD zA~n4^-4Z8-2r*1$_ZUO5RGq!;cON=7P4nV3+2$(kG8id|K+Vc5-}r zEcm=&xous#)A0TK_9F6C7vF#7U%@uj!7#xGJDNo^b*`KNamR8ko}4GxNa>k8y7 zf0Ibuc|`VY`djqEjI2^|sQgN04e?=_9X%8GHs^I5=p+c%kkC1G#nYwn47R(tkLNi- zB3!PWNfasw$b~cqdc4pwB?94a>4OE3SNc~!Ie}zZ99L5i3ttv4O7ctE&66QiE>>+I zi*=%ZeW277n0vtP#og{gg}1R`YL6SIk}s@}XaR>oyG%y~T zkVi@?g(o~!K2Rryct^DL(yWZYK-9ii6G2XiL5et{)&Uvl{g3^qEUM81{m65V`Y0&E z1^6RSSB8QS=*n7kj=5wnhH=Q*(vQKXxVl;pD(HR;!%D+iJ6_{qQAo)5yXKNljO#u7 zU-N=`HJ>*)XinXGhdMWK&Bxxy9i1}ppUb}$i5X`FJYu9^vnUo1)Q^%CI^KWr@GvA% zUM_@@)|ic-$+A>`jvcYoB$BTG^yvb4Q1L)b0(2dq63|k|kw%S@N>XO{F=H8h{`15I zfV<5Bw_q^|LbG~$U*T(%c4Lu6&w3_E@u7g&A;93}-d#l}Zms+Yb zPm$h~Sbo_&7$2WVFiu$9csfZ8{Jiq?>rtzw^_CRuOyt7e>X$tn zX78O*L|3^SUTz~w`TnQ~N@#6KP2&`cA+=yD5J!$ebORWmKVTAYKL{Xsn&!|8$}afs zJl{hh&`aTuT>bh2i)Da^4MG>r({zA~p3;1S8dF>^Pr10XD5bJCRoU!qI73@48YpM{ zCDq*26xP+UBXGT^+f_)!k2%O%BNZt?|G-MvmMHTzw4DH7kCG(q~ zW77*0HcS`lt^RjyRQbej1{4d;my33F0GM%pelGhyCd_C<=eOVv(0})XO7Nty#ve1o z&=s|n(9`Vwdqro&ZVl!%jaS8R@ZQy|OT@lR`0`0grHEPT@2tOk#s}S~WB&+k;dr1& z0g>^O7vKgd)d^C6k`W!DyS88lb2y-Q@8~FBY&b<(pj^;n0;-}*hFS1XC&p7j=IGAu>u6=%ZO4I}Zzi80dXzV6O~i@n1?K4DoGS|hPN z-ZDOlhyT|C@HtXF`8{~aea&=Dko>ryd?Q}0-BduhYXgvd)AFblEG#T& z0I0+ln zX-Wm!EHr6KYh)|eoZfroj6ddxXx2s5%d)Yx>hER)Hr5j5`>Q|=16l*&(glZ~eRE4? z&{#g_4}XX$sG(08`K#p5qN7>Gcyy`012B>vE5JVfokm?Q zF0T9zUm^KFzkmB(|0s}gOYPO+D$uvLi2rUFqLWKJha0hX1`3w-by`JQjKW*X?65u}a>Op9Q5OT-aS@mZ9 zf7;`^Tl4#KNxPm5;kJ3N>3iX2Z9Gp5T?VAFsfAw;${l4WAQ{$aL#0y16{5?Ct(V{_ zu>}ppJUAxLm7gg3xY>^8&SeB$hOo2F76~OF3?eR3EqqQf zE7y7P%V2uJK7eM2{D_kJs_wV~QW0V(p1)5c8HNo%z-ofhFaq(tN<*swQD}%L*{vrBYyu~O9(j8jX zl5niL&nl+hg!%eor~Oh)c59j7moSm_28qEiB9G;ZxdJCOs>_3=NRUFY4u4ebOFv(@H5BYf@a9GW`Z6<1;wA?(vpH#S zU??@h+iJ2IHlVZ^s+OkcRO)~Uzs-RY7oOX_aKzTTyy!I9<%>g zJ#U7BZcJDKD^?9!b zBOeoiV7&>!4Ght5{vwy>7dCQ_07!xDwd}#@`EMR@GMa>~s?-5IYfTU<;zf%9<#b{s zJZXo2xPFB)iIwxn+*!cwbl$tiOQ)wxyxDd}S?~2yfoP`+3|*#*PQ^QM+k!y(n69Ft zecrM9aq~J9!kJZ|HJwERN!Y}ANja}nf+}x+2fy2WGivqyvwE(Awe`-i1jyhMZ7}OY z!ivHQwEOkd=Mn6iB57`pWuFqbBfwX0ez7+TqGtMY#r#42a)*Q@iP{4WPbnrT-I(A$ zBtF#4v192#f`=DVgo0_RaP{6Xnzz;a=HNU{tMub=xMG&E=G-Ge|KjR?_dWUBRsbcK{o{%Vn1IC2gYY$UzP^p=v{0YxClNi?v*=lULElNQ)G*?}x~L=^@zrC!|@?XaDj;VrihW>6Gi;a0BN8mdqP zgjI6EgNErIxPMD?i9y^AUhah*9SG#oCpDtJd_dT!p8PkWtcXKK2DgL&z4`BH^WV*s zsk8N19+lV3NO(r*MC(5aLcQ+}5at^zk$1I`n%MLI21TpJHjOLj#sw^IGI-Jw;H2s7 zrA=#V3_{L7|5|z#>Oy$;J9Vc{<+iAaQZY2UB-)<8at_O*1|%y90`^A>q?=Lc1c4rXM*L8UTwonp z(xj(fDCebm3bQh~Zp>5Ju>Z>aphsYjkEz5{uiM|(Bye%xazSCzbC~6## z(n@*1M1GphvcZXJ9RvrDfFubu65QmY$JIE3$jlyROyZC#!VqE%$s=gqO=icxOwS1} zZ4wU;MaBjT2nAR_WB_fU-fE1?=?@tA29JLhGJS+HFf!JjpHC-$d1de8{W6;kJtrq8 z^V6ruH$y$m0trG3EnwVTR2}Ow*|&CT_C<@CP22-D%51d&`LJ((o@sj`CsK|vFJ#i) zqhO(awS{AF$RB^jhwN~kDLtP{e{{g^z-M&2c@!{=`&Q zN!fg4zyhGTJJZd;s8KoVd~Awyz}RHr=t%kQyVBatPOc0`hK%*jtM{K)BHl8u?cz#L zS-w3U6b&n&clZ_Nif&~>3;(u=N_IS$p1@Memez(LSsDEB7ckp|FsSgpNKxc3KN!&~ zAYYStfoo3n?q}EnJuG;8n@~^{9q@O69UT~m_4WJrzu3?wM>(qL{AY|aj$z(S9l=ng zVN08ZKcqdB_6VrbsV^lU z(j|@3UC-q=^UUxk%q+W~z4smGyiRN%H}>y_XrQ?G939<7L(>mGuyoV$EI-*AQwY-X zw5(+K6l3{GBpUXy8Y5Je7bzI;b8OV64ESu*u*+IalvGi>3gn*wAvV?22LaXiw*dX5 zS80Ud;idz3vB>jJ=VhDXiGN4)9h8a8|H|p1 zP?-Jkd6Au(y6}7TRA)<*N+!vO32x@*rbBqKW+frlslyU{9mD$pL^g=aC*t$-@E{G> z0^8i-*D>FBxA!*(%Rc;jdkU<|m44Iq8}%nRD@}V;4=zgndN5+71=vrlPR5ul0T789fYc>V%fmDY{xdzlsfz#8@SV`bR~ zhu_ua!{QeUC%)@0j;%*O3U3ZN9w@+N#mo|)tt4|Z>d_utR@E%u`Li~B;IUzOxCppc zHyU@ekP}79g;_`74aYVlYMlAGeR2!Z$g}eSazRyI9czh@{wk;>wUDgtcNM1KuC7-Q zXfQ1|teCMlNF3B~P#9u3`O&;3LX7uCmg`71fl7BSE3*IBYYs%gC>dkkSQF!*8vZHe ztLeN$T>7f9If@oR_?QB!Q%+$--RHeY zgRk?jk5uRb8^`$UCf=!DAwzm2xT-+_8DHftophU2DmGeUYCs)1ml0Jz$JX#o<_iK<%P%`9P z*vER+Ha+6~+F1^;>jMA9qa=>Qs0j~DHZ`Q3=f|9SwAIDXq{F4&QYw5-`j|R3wGeqJ zp&Lkzc2w5=lC8rynl)2x{onV4A0YfL(m`DuF^oE+>OQ)c6F|JHWfQV4^t;iC=6($r zl6A9R{q3NjT68`5$MYF4V8QS?v^lo)y{q~D^gjeX>sx+h(CVUAyBkvtT zg^v8Makw~VTdoew;;mOmVBHvkMFJvDG&l~E*upsk^DSra?pl*vQS*>#lC5(Q2C#Y6Q0HME+==dY3Z zIlFLn0v&Y^Tz`PFz5Ipqa+{PEGR4!TbKg$?d2mGR-hWZMB*{ub;KUDa7@1{y#8*fs zBTI$|pCHT%2?d8`)To)@(YI7%JNe?!uPcj-2os2FrgO2{4r`{Bd!52C+q7y# zW2RaW;6c>|nSy~oNTaougk4**uPb!TYMx|D@!pqII+A7Y1$C_SON)*p?5BnG%xl3O zb*<~k%XOfk=m&f6ZT{IG%M?{%D?%|$Gs()jy%Jhy+&7=w1ey|Q~?c-K6p0}pL zQ1=-=rpWMO?6aoc^fx6#u-&Y1!n-DZHDDQAZQ%qWHiVybv)NWR&?8D-{l}LbZXu!C zJ3=OQ^}v3IPFAX+;~R83@#8AE*CmPmDwp^n5XI?*r_Ub;pc>j1%G&Ze^i?mEFY$ag zmDi#=whLVhw854P+xT+&g2zGx?Xca-EaIy?$0&xZWb$rD)sYlGPMIi zM*%f~8L&L!{aUBD8ToZ-ZVqI@;4mji54p&iQ%38^>E5E&c3LIFQb|g~3pQz_bbc-z zANII!rIjti22k`UDde^ZPX>R=>QC~c5lS{>0|FnAi(M?PrwA^phro~TvY^)(6~b=VeP_j`an%#F1D+yJX zAQMSR8KHDDcSZp`0TqX0=FQ(L&1lNfWnay56mw~kSN$gd`s2r}jevEY``xPhA^#mj ziUdh09g=LNgYPR%EK%AO1CY=%^3K}N8F#%sjECk>xGzf!5{uT-AcBjG9gDpe!jU-& z_G+m=Q|upfFyZ0+%wrdEY6xIflG7#`8}1*jyZJ7>!)NQzi%X?69+ z^M*AgBd^}04#+OlTATLoMajxTBENU*t`}vuf8$umm8SaV49v{_wxg!J@PwH{(ev+K ztC(@T)*qQC)`Uw1@WU1+clh6pq#=mCLE|Zs6q?{FtB$2)Ne90)otV%<9LN=awjs@D z`-LGR1E+etFO(3wwWPgPgjJ5;{|aK`#?q#YO=rJV+O2H+ke8o`(5izeE^3pJ?=BSo z_ZfJlh#yOO%?dr2&7q{G1CNff?_o(`Hr(J#@smvRDT$c$6IO(c5|bv&=k3BbyF$?# z0k_vG?}bY1Bm`o0h5rc+J(0?%ZRa@KZ_W~2((%O12quVY%l$_)$)28_h-KD?d@3Sx|5^h=zHGYe?W8D zZ1ih`2gvDJC1F7+`4pnNH6y@$yXr-)Ci=HdQf2Ee5E@lwWn{P!3^I&uy1tE$i#sc{ z)!KN|OZSpE-J^`Nc9xP97KSe7W*~u#d`bil1HnDxvlD^$fqw4QIku5m3sZ@34qI&Q zO-maa+FgC>xArO46+ zb)vrDIs0{4vySjgI@XsC56VPAH9GyQJ{-c8KDd&7zmt7Z*f(^zh6<0RlQNu}^chMQumv%eRG&56gi4RjzO1Wi1TRkd~h3N9o~i zI%ctua|dxvg6YJ>&=%IbpOx>&2Y{^Ye4Efi&|$wn~bz8k+F_T(G4} zT=JRe4$0dnCYt20xp}ZWSPWh$9<4hniUm3jt2fDDo7dw>y5EJ}-iJ;|z}<@~jf_E| zRsOn`ZuU>U#Bcjgjs5_tIQ8tic71(c|G&awj=^_y7=wD8YR;Xj{%@;mz$QGp>%2F$ zhV+MYvNheXxU0Il`rhe5?8lwS7tsel))!kVYYOzrZchKUHg5SXQHdI|QOC`bgns$+ ziptQZ zlvrNeK^W4^N0(_`cIT^&;Tiy45xZF6`zeZ&MqFE3JUyf5%7FGFxlwC$!o9bwv>YuV z{Zg4BUXh8AfN?C`X^mH%{XX?)%=6Kz05iqXEn`w;LRr44gG--j7HoRvuB1GEv)><^ zT}dL1d>xZ4B24VOOt@Vb6gehwj0v>y-@zfeAc6z{x-}X{>L|FW@aY!sq?mD z`Id~#0MBuV4d(dN( zDBp%#Hq8c7HF{|yh$1UVzhf&Z{Sg>{Jq~#-kapE3T;Io-Cc9=Qv6LY)J0*c2I$K0> zwj)mdHE1<9AoM92TZlTaBwL5!WMBU_O}+(K6n?c;KTA>~12p4g-F0fo{0Aa0KOQfP zXMC#;&7XNaoB{#@w723fmIDG-J@eyeAt3JB;-LNJUl9_BMt~1U$=Zk{40gIxY3v4W zmsc*-a>$eS7O6~fPkh~zt=F^6LeCyI2$Mu#B4iX@Toi{ul-i_rPQr}#tBg2hX52xM z^R-GxCc7KO{NoEz8p->K*vCErv>KkteMqseJjAROgI0g(Pdw(Z0Q^CIzTT$2Zlpll zT7#e`mHezY4bq*`JsAw)tlGcKqw#`>*(9E>Y6j!GbKn`WIrLq^4sYZpT*HxGuCWM2w~n zrV9Y?0kn{2U=pJE(TN7~-1CEzLWxnb!?%vB5vN=o&j0QBPJb%@kDYd1XA8JY5|DvU zKlf&;!qnUzAz5&4yni3Z#KXYqAI!F_cq5`xUdTvfJMk)Q95sZql?<7}kChSe<$7Pt z{Zn);QU@7W-Zv1T!<*)z0m-ubz+*16VU{Chw%HO%WyDQMO`p7#_pFPh@VK`qC zXd|JLOJvga%wSz10zHefWERz(gj;>+=wi&V@8HJYz9&?5tNi+m%X+l6^J}}2{GtSH@vo-*T}&U-QyO><)zH4G=(#ROQN$n@>#-61XGw|z;+=0x2{Pg0G(aW&Hg# z1kdj$&ZN~aajYi%R=oOYc)W28GOY-<4D7;S4y;$B9@nY1t?-LyNx#~eHJ4N7>+#*nmQ z!I~;G#wqeyj%_v}O@bl?yr1J6=86*(@8vpg#z;GJu1|53{x&h=2&!># z!$_p6MEx>@f-*`LXD&n#H@zv>Y3*N{!g6@w4emA1-)9b55Z0KtM^3Y~j7R@ztAB#_ zv2%EjodkK?LtJ;0J5ykHEJrpo zVG9{sis5oluDH>0+I$zi6UpJsI}^$IvUd>g23?`tCtexo?N86oyIqW|_{b84xq)^T z>~>|CMZ|W8Fq$1_tS^`NRe9dnP*G8ZK^Ou%^YKS!?{4uu50PO` z-@33=6hm0X)3U_g*gU0jB?QT_^7DPe$w%_k)E72HsQfbusHo!@Qe;JVVK zFL2`{UIBp`kR?6ZAUJlWSkZEIk_}!Pk6JWA633ej!lZVN`#+}KHvXrU!y7~g zJe0@GI-B=znE7SAx$NbVueo7gGznU&EhKHuSW3+=!bb@XV!K?KZ~I48xGHReTum0DYWF?8MOLB~ zg|N^Bc`nfs)n2@)9SD=$_sw;^Ti}n~W6f^5CU>yv z1=$g>N2w4yWaM{NiGB*2+`U^QUsf;Y>Kwl_qQ z))bPAxApSya(cP8syL(g&2Ljfw4B=(ZUkeegMBMR+aJCSdqr!oLEC{5>SiBnj@M4| zHYZW-($f4lze8aBGs%cQsEL!)LzhsWBSO#V370a{Aq`>e-&uRE8OVE_uccN9I#1j@ z;X!!M++FQOx$~rR?*?3kFO*mdy$^;T67^+AvCMy%2&Ttn%cYtoS>%q#7f0d+0X!H) zA(N*s2;S+>fRl|kzKD~g6^;HsE?H|fH)9g6wo`)LRslE86s)9k zj2vnf>qVM%mwnH@7j*=2MPpXH#lK4F?1R@^=wPO0wOZ3Q_&IBUF91lJF>O9Px{`0k zj&!1`uB>iO2hsQK2&AP>`4l`%tKB?L8SHUYpVQ72G+*|M_S>SjjgI16 z34^{ZdKGB%Xei@v+_7l)Uqz?8kQO4P2bb=*yzuJnI{*q+up|L|G`O!stP0bxov(X! zDMzw85uG-2VUt~bnppDc>M9eL9zW9R?9$-Hl2(W8!NZSt#UtU1RpsQ0++SBLE?c~`k_M= z4XPS0&AA;3hFnp3UpFBUxD z#WQU}Q8jXp5E-rmVMP0Y7-Ul089A zT9;&)jQhmJTGuZ3=bnlNr-ph)Bw&=-`NZ)ID@3kPHT~Tk2&&^yOBZz51EiLxQ9If* zU&+g7_6~`H(yVwfG(s)ZnFtga$o5Q5=~NjAfILzHtg-+h1vA7vZ4CE1&n}%-8lS}^ zlMf>@;#KBlUhyZk?(aEbcSvto54ZDU*MLhWnSl%PeJoz51JP050nQi z=?o;%Y|;cp3@9zre3AD%&)<@3WCYXV;*kUWdX(L$9vK!+8Fk|WlB>B2DP?wbl-P-s z^|giMmCrC=tweu+YM4yle1`@`; zs>(fXx95M_I8B;J6DKh{E|z=<7K)NvBW_G|oiz>Tw|S3>iv)W@((?gGmPujP#r~Ge>@bvcmH*Q_Bhm6;-G;!;o$wp=B{V@x1S@*y!cqf zu`aJLMvMD#Ay-4MNvYEca~<~gb#MLrqQW6RW*bJn>`ZAl^d_~Ta)*5MK!(UbZEZ!O zwdbBf9(%XriHV7&0UKPD&c_5*yNCNbs$|{wbhgq~mLw3~A+sN|C~qosS2fvgf}_4z z5ZO!tbIsC{NmHdV*xh}o2mH2GhquN*j7NEJ^6V9+z9zX86x20UWvD!UKOfbbC9dT{L@mPp3+#A^1am=m$ik z;Rp~W%Qb5S>XwCIPmHtDb)6ByS_`At?`^6z1PY}0f~2-eIBfaZ(DN@lj7nfyZFRCFK>U^V9*t&>;|FkZF5i{Poy?@Pyu>L_k4u#-K z^ozIE*2B*{v%>6?lU{%j>0U3L70VRU7@#@@RL502(;LGt*-rTGcr!ZxsY9eo(BfJM zt<$^l@!b0I)?~!K4Knlu09pchqL%NL=(5*pm5I0QbPy1Nmt2Jk1zU_`(1hJrW9iBk&)pLv?Y3QN#|a_&87SgH_xbK;Lv&akPUCtk_~sRCb9m%R36Lk)^E0= zUy{E@mO2p_x$yft1nkJ*fF*d=ZaH7)K#{cw1c#wyvCq4RzmM*DR~X_L8yjQwp~3U4E%!EN<$J%9lMThX=i^vECbrNG)PR-Fbx&_oGCW3O$*4?Y`RZ;6wZA zZ#~h--QUJ}b*nayN_>e+aB7tBj-Awo2shd;BdOZvt~j;U)$*0&#df8Gx&>aJ5Oize(LL=8Nhoo=WHgC$tf-aUS=RL0nnXQvln~mPVg>DxBdCQ9L z&AI)_$rTVH^1`fnF-i*vxlG$B5f=D6D(FCG+6TTLq0H1iAh{I7^!jH?wf~|BKzph% zRA`ZMV6GsU{m3%k=Dupy#vv3~{Hj*;IFNd@BR>AF{D=BEJHmgb*pc$}`(O2n318dX zXP~mii!-ku-AHs@zA3*%0&|nZNV%+=Z!1m7t(^AM8@P>mL?O^Bt;xFNRfM24WzAA| z2-ZoJ{gN0;v^)XigTP(}SHRWq%dL~E*&suZSIh0R%#FjahT+DwFTH$w1&Ca~TW$H2 zc~a4hm{&IRPAcgsIR~srJ4=)sRw{&^5*#(Dvra<>tG=EcC zJEnz}YvfExjnuBRP!nKG?54oBSGVO3lVP&)M;sR=f3~korW^SSe(Usvv$8jHA>)x# zwv~1UpGJ852cOEB!HOeAFHO!C;95=_v+B3~s(6g<^q&dw<)Eg~+esJ{Ec>L*nhYl_ zFH~%glJZXbMDnQWRM6_bXz|#jRQxniNa8~ffezqzoh_kKYip%$cxw_*4reT<-B~)g zhi2S?-3Y&HA4v4qG>yFeL;IoG9SfA$RhxL(G$~9|3OnfDl7DkIvGUkp=L} zZ9fd0v>!G!&qohldV+^5VSG+R4)kn9J*#_P@Y}Lq8f&+wkl~9hS7Ea5N7fP$hat2kWErJ= zeEJ7~tf&wf*kSq!0XXXH=FI!<7eKeXo7$wVtu*lLJQj25>umFf021FljJ>i68MxV~ zSnA(Ui6UCv)Nj*R=V8Oy3Mic^M_BlJ>|M-f@t#vMi{}i8Qs~W`JXJD+whd!F2lpJI zD3qQ{X?m$FY%VW;8qUL@o}g0@Nnb>i6)*pxJNA%DwN8b_jwfd&zBp96Y>%kC>Yr!} zuJzx|6FgLL!;Gd)XaIYxX**pPandFs-GKY2&}ybzEMd|m1GcF)b)0zx#&qk`V)_oQ zZC_^ObJc>=w{7~_abV|baZzdPn@UvGaW6tykMYH^GoN}bLMTTk^LAwU76)VlQv021 z&Qe$bXd0-%?DvU0ojjpq;um7TDkyO?JGK_oOadgrzj92fo~MrtjYfCvVE!oGYvGrb zW4E+LJ!GfK6cY{|Bqt*~!l0XUGgkPYCx#06#-q*Sr<}2_E{CEEH*E$7OE3LQ^T{bF zgcCX?=wg()jV9wFvuQhHJzuylef>gc_RsF)UPE-HTHz%tZW1Q7FHH4N`bt3@l_!EI zs?Ug>Tv=KX`WMKvmmF;jH#*z>^ce^+k`?MXp2ahjs|%HJ(AJJ!g{GLwgOxBiXY2K> zHIY#1jF2dg#Q?=nGe%YRDWHUcH4}L9bN56ZD{3W#1`81odc*7mMYXDC)@uyxmj?z0 z=79>*)_32MMtNW`I!ImqgIEeo1JnEoHx(5GNqns5apg4`>$h*IM<1ss9D{=UW$3kc z5WY2gH1d%I`EhJ`-n`VSRV~aE1+iXt2KYu)M5QvV1^dQ0(MX(A)63rFvRpUvE6#G5 zZFT0CAe;tj-GPyx`>F~v`9#MeiU&q>sB1=L>-nmCf(KtiNA04V-g4S$T~A=W4D69f zd;k?=d>)3nHat3H>ZQXR{NKNSOireYIo^_=+}#KF>H{A9XWJWe4W;~um+OxY-^xLO z7aZAm=IC+A?&)c83_|UxlvuGX2GTR|%mocS;QsjC>ct0g zyn+@)m&c-CE`Dh{ z^f}Fs+6bm=Zay#kPu9kO6QSdMWzUO~eB#>BEP2_5+g=BB)XaKSCNGlirb@IW!5lC? z+Hr|1sqlM#J{35zxmABOR-Ft62X(s}HN_~ha&I=fHveaG` zs%Jt*OIN4s?S+ZmZhM!~;XvnX?scPH5SRg?szLn+Vj!D+bXbG3h9EOz zTK%4hcL0pI^~p_uwS*C-zJFpfbZ4{7_vfxJZVJ0cDg3>`Um{j|V!-N{xpwHn1~IR5))$%p4x2(B|_%GN{B8B}(FV;~yisUysb2psH7 zz#6^DlrR_!8Momtd>p|4WkZT}n13TJ#N{veWVp2E_~p}6^Ci*rCc+4z|C%0w7(`fd zo>{}n6>bJ+-UHtSRRL>==X&hw5!Tv~(9aSg zfan4FDE2lsHhtscc)+fYjTYv)IQ=@tr#(?CH56m)te_TuS81|tf&$Fx@4%o?vaYe- zFVLHR)4MYMU`skZ&>x~5*!3_nYI*7R?N~pF6|3r--EZWSB_c;h)l!>u?H#javf)3=7_ypD-xeWOhVT1nJN{E6kww5zh z_>$8Zi7F%IpfldjQVS_+|K4J++oS%+d`sbTFx+cB85PB=2+Ggf6ZtSr4g%LM2pbNF z&Dz{VUf_K8ZW~Q^*a__Edj5gFXp9r*W|aH048$1-BE>sE>QWYnxmW)SbXGn-J~JJ6 z^Bpgc$J2zju@%c#N4g7iZ(!;a?FT0Y9bTK_{*d2q8F?){7o;r`)@hxQBRc@z+F2n? zI7@}evU01df$H>pboGii5bs?=*kQNvOk92ato<{vJB?EWUYc(Hk<`5wGUJ)YG)loy z7g~QT)L$Lkl;LWgv$`7cG7vmtg~i$x&1V>RMrRGiVO@3(A)0j1*IFeycZ9^ zG>O2+%FpEXO9r7K!=aLjbU38+WLlX-@^}VyvGkGDibSp{T zT67%1&&vMpKW=ivAgPI(nlCFXF@MgLRHv25(6?ZMwsR{+A!SI3(QJF(IjY|LZZWod z=4`Lf;TjP{BmF=5k7*h4A}7^PMI|7%StT=SWS+gNDKz0NsnuzBKzPGL*sX90s5@{T zj9aotNj`X5{~!4U_ETS58(9$`%eMSOp9>H;Ai4?T*mb)ay}5poEO{jIGrJkuj63id zUR1R|A@w^4B2{)!q>0nTXI`C<03}|EVZ(-XQ50>K8IGT9*cgkHx-1IXrT%AyjA`2b zu{NJq`lC;!?TauwANsibHE$NSBpR>5K;nLgSl?)(-DZN`B5gB!(PP;!>;S|biNAPq zMHf{?C-A1{7LpUF5#4>k^NN2DTe0h>c{3{O2{fTcR+{2HS7`t^((*x3b(gx={0_ix zfdDaAH-RfZDG3fB~MP!xkdu zFv;CVI4pB-GX7!G1)w23?yt70)|6;W?{@XyAIyF$A~eJGppWa6HlYGq*#CrY_JH6U z{J6fY+@sG@tbR?{Dw=KMg9Y=tRtZF=cPM62tHu~OxeH!1*c#2e*P`^mq4;?S=r zGJ&?MdUk*aquBq(uN7(TN(lq~8GXqBO~CEZY7)DC+Iqp+pPAINU=k`+WLmUVYEkf(znz$5!cz3<-SG6 zOqjX!a&WfnQoqV%@$wI|r0%Q$H}{K7wbzcfQnT84dEX@EFv=p^j5za)ik=WJ;T+gt znuhlW+Jrh*yHY`9-+SG)7&{%aP5l&E6)yfOh|~*4@$cJ?hu9CQTJO$n5B|=bp(&Mc zGHLg4e*l;{?@A38UkR|vpZ?%(1){b5ftLs*Z-Os8grj4d6%l2jg+~~oAm093P}sBf zx%wpC&})#i-2%Xk{qO!ujf+e_Qk$=QA|F(03iX_&a3I4l+e3G>*4c_cM#7X@tmZDx z>ky7dUGmbgMjuwhLSvk9z;_7`g&6i>rwJ<9Zr|2jQ(@>iw6)se#$E6(6?xyp9mzM4 z89#G7w5wP9-KkBo2cMoz=j|Q4P!8tNz`VUq=_m(#Z&uKUgn)|%MLC(nD@)5eWXmh1 zbg8z<6e}c%zt;;FGc>wnCY_WkcH=7o-%=eMbz(!FJOIqdfcB9xOq1$_Qq+zEq5NUh zQ>;=a9U{KC2moHOzMD)0n(d8XfBUF82J(dtoy(xLmq|*m3dT8x<9~?LG1yGv!1G9N zKg&ebM{k~7X{^^wm+9mB-^?%HW5C$o|Cc(^=y9+Vql9qP_3^p+8E};n;3XcX*n0LD z^Yi40ZkVy}1y85Y*0x=i@R30Db)p*EFdUh*baz{=UI|7m2Nm}rmLzm=8mZmfbQQ+N zCAmcD7b83>*B%QVO{y>_Ex#S*x4KG|y1;UDpo8Pl{D*xONQ)u|4O|y#uk3&2me>3= zeMEaF@sO4RTtNZEFg^(hi6X5MH?J(_ST2zxFpF{%sn|HV+I!@zp5HljwEcEp+_AR~ zpZ!Hy^Y?@W!6Oaj1Z^aV#Bp5gzBkYpNa}JtOGzHKR+Z(H^|4SYv8QMFj8hoyITwVS z2$oH>Zh8U^+1FQqVnego{Bg_4t?h2_$di6u=o18+XbVl+_DSxk-jaB%I&V+T4toff zl%xEawV}@#-731`Ay&<&OQE-+-f!)-+3uc`Lg|lbZ#kt;-=VSLd_CM|=0#0o{2=Tc zQsq6DJ5AiP!jjG~fkhmVSYJBu(hUXpI(Qq!H8}uCpM+dp{A_9)`1|_v#&L8})?NE#uGca3nttj$cbHU~tEh;?x2vZSzY|IG{r2kfJQ zhmH8_!ON*qH0$)z?G_VRERt*BrYb@9`~zmEK9y~4eybpVHCg=XPXeDs&F|^Qqc`PY zE8u=BwBx$0!%%W{MLk$$QT%zKD%Dqh_l*kKlU2L$`fC5N^8NeHPTh}8o3K=ky40PE z3&Iy#gP)lGz==Anqn{F($%!Ob-+jZ-;Ywo{fV&2qc~b#L{iiXuB&G5SPA6BskDLF! zTsyj~jERYvVAU>cDzp^@+VA`Bv(}xwg7R-4&zZ(3C_qjfJ8E~z#0E0(nk{vLw=EmR z=kV9#wlm`fsL}m&X)ko~aqWQ;Gk+o+2M5QmRQKtiyYV;gl}-gDTI$#XFgci?U0yyo zzqpXR2X?lBTQDHoqzDZJ;HRrOT_@A6goNVRC$xhWIu1&Z%XTMs4-Xo0QmFndhe35t zI~bfT*VQ*JlgIW?LRO&aGMS!+u;1O@2-XIWbmN&SONydI`fOzB`z^A~uYz!v)8u7# zid>?rTsq&wE+oB@)fQfH%QwlgZc*z+$Y&1o)egzhyP1v${ZTAT{sP#bqs8uqh*)t2)fgmp9{eQLPU*UKF zpm$d#A~M%+0&whx^l`<}v9a3A7nTUE*WTl=)!vVc%8ds|DOTv&NzaNlp!B;ljLH?X z{az&;455=K+maUG2c19YN>)*&tGprQlQ<|M>WjpfXfUn+vcxGK?)Ja^Kp^x9u!It^i$@H$g4>fk2vI6>@<#vMeXBzwj7#P($}S2l*(11r@y#sCKE z{mIzaUuBiopL^GjO0eq+`K%elW0C}mV*)cq zCpyhqSM|y}AOiA+8N#5Nez3_mBl+@W5v70KBa98wIVJ@P}`|GySsW~D<*I?X&+=>yUid?fl9Sz(sx_tAwoHU<-IfOmO$ z5%6#^?mq2qoU9Q^eo!3V;s$w)MROSu(9Z{9g2IViC_Z(rw zAK`ZkVhTFzuxe<~?_@)H=I{nt9qai92i^+iYF>*>aP`hs5NL>*OIJIuN&`wyh~_;e zl)KP&KlSQ*;^T94CAS}igFl8xcT06Uz%2epu1uH}T>A5C@uEatg^#3_LJ(L4) z;a^{10e52)o5=3rw?6I0JIQn{PxRJ_>R)ys_r_Xf^pk_g)iWIRBnp}in-l0hYamd4 zJ~i_j;}@6Gp&gUB4MR&H3)JfzAw+ zzK?%hY^6aQ=S>)X9q|jiKF}k)knp=ZJ609elu6CFgEIFOtMZxdFgNO@EGymh0 zCPmVc$nL+rIzebY@4jtt_;wRMCQ3i!bTUOv`<5^EzjSdQQ+wm*H()ys6F=mX<9~a0 zE+_8WW)fyj3Yc~V?Y_dHSRsr+7+8hr)<%C1h~~@US9b>ik^%s|^zxbt?;qQ=4gY^2 zuysVzZF}68HWdOdPWA^n68rC?M0`kEgMT=OYd3+{$?d2f36Fsw!uYZ5+j(Ro+H5`C zjy<$q0(5+4?&kUWkr>?LC!g`q4dRsyn-D|}4qN*W`54bp5-_^*7|Rm3 zv*7tVCUx3iMURxS&MYk@FN<>d3WNGp&gq-fH}IOPxkL&GLtVH6Iv$)b5s&4q>JR4$ z%C*o^0b)Pm&r_dS&|m$ghrPSa0f-aGhl6tbHkG!Mo|2k{K&l@fOeBOrt zXXRc)QY2%dvh{3&^u}Lic(s_I`Pn@+Vm!(6-|oKsuI7Ok^=?D-NV?!_C9|3sZ>M6N zt_oRM0w%UT6oXRpyX!N9Y8(8P?=7oBf}kINjDG`3Bs3`#s7V#-vRqaQO4JU7(=Q?U zOz&_?QMg($rjzyK3q1S~05GX+}YhL-0AF()4wB388;?+GH9ENW_@SYYzZ9BibdqD<-2k7fQ=)7K|anM|Z20K%gull(`6>iz@(&K-J-K?lCJ zW&i!v8uFT+{w=3X`bPDeGoKWji|$u;YU&A@3zrfjdA2w!#*8?ffw zrYMj|Q3^TJ!Z%5j3@h+7klNr?&(mCiN_BMGgBW~}K-$-AlsppLD=6GVTDgwiD=w== zI%&n*dC-~@CuT%We!>paP`>JGy#mYROij;eJ zxZm9ZxnN7%giWei!Mm5#u^=Do>--agitXRONxhExNSvJb$!jCch7wstIa{{#`u~9u z&C#|ewb!3G3Vu^%;w3J{6^jLaU=|Xdfv~?vMMgN0mfujxHDwHryI=M$yNGT1Pvn7x z-ueC&E8Qg}OEZi>Z;e=;!Awj2JmSJAg$()D1NF;k2fn}y<>BzW%$_V^l2W`usLv}+ z6Iat+68dGXzZm3z{iHa>PbV8{1o~JjtvxV71ULLzUle20XD#`@QhC=O;<)d`Mu~aj z+MY<8h|u^tQ_8mUG9vx!E4xEa-MapkeTNMsQ+?pSjkK$5X0ks#Jkzz5s`x@X6hOEB zn#`2D8)_cQtF~bQp_PE?uOD5uoQz2ZV84JFqfiQekxyM29FJivnQr@_Xzzg@( z{ffm4W=zD#ze0j^%iMJ~vek-YvhLy_UZusDnUDe8r+FSrVnFR%$Im3&uj>9l1S=_^ zZ)s@(BQ`)k!06(#Abm%8!{n3Imk^|}!zuax01TYAK8HHSDsVR6oe6eqd)Oo_Zp?(M z^LOx&#X$vb3e-$Q*9H*~!Hm3B%Ek?SMDR_DP2IQI9tZmC&-)%@Jldk4|s<|tn94W(pCET_(-1HR^L7z;0>=!UCdVpIdu# z>KNy*Kr+LH;b1-E_&v{``W&eu-Eef=V#vQm2Fl6X#kK7l+V2CU!`id>va^4Wn^HKE`O3PJG#^(S0^+ zuSfocK2N7{my~?yd8V53It+=yJ;r!#o*P>uB&DFD!r@68b?P8H-+AK}OK!qM+|vm4 zRqe>v!sFsJ8CH!_nH=Y)0e%S$_HPm_ugt;LQX)p{`;5uw{`GI->KY%tKl7;Pq_LtQ zsP_;R+OJWRQZb@|UKB8)0bm;F!*|CdZuYa6L9-?KuyoNrBm1F?_~_fqCC~MLYxj5A zc1{1VA=M7wQOt1tnzeSGO~Q0>6|`hA>A$LUpBa6QjU8J6PvlIo!n_ph{QUgxaqM>6 z*m3uFNzZ1U=Ke73M6bf|tOPhOjK6<6@)iH0$fQxBgRJKCigll-ng;DrskC=YKxfRN z7sRR^{~d6w{yt~EUZ z-{@*?Pl1V!BC@o&s;k7jc~118l`v*~#kAwW4>$!DKFvFP?nUFMY6WbZ1(0x4EBYLQ z5h^;DTgpoGmELw}_Q~pfJ_5rn$YuFLq4?n7m?HXRGN-Yja91H0Im{R$fs~`#_K*53 zN4szv+c<21d0x-h8s0G%>TRu`|0ePZ;~>g9K1h~yq8Hvk9;RY z-{{YP9~an;#g({2jqgB6-N7wu=<=y}4=laG50Kk%07(uU51S;^e44|AT193A)_d=6 z9M%*4-bK)ft2|x<;XxjOTkN5*mafkixW;Nq zM;8|tlL!7cqd)@W_^H__XoOfKe~MqIGql^qI2B!nUHe}&fG_=V6$Yo|tZ}Rl%AkN9 zb@N%}_xpAIc*&w+TrbgAx3^{>2)=f7g8%3~H*#X%keMm(>Z zcu+av3N3xyFmLPYaiNQa1?7$7cD?Un??8M9#gX4bE+Ct`36Mt*V<^%vj_WMutw3LO zGCNyHL2hD_-)C;WrI(rYWoFR$q$;XUA}6se5=YAgsfCZ#ay$xIfKEn{fdEJ!XyK0x z%BFuUdtZh((!{=R_i{10y8N5o?pOCeCVY*O4wOv5tqT*6NvYRVO26D?{%}fvu5LA$ zG2k@*4uv%%=+JN32~YZm-?HTXjlb$7zw%^VTKSLe-?FhtMd#e#dqhP9g8iTUe8Y>xF%pC?IP|&zV&Bsc}Fif$kpj?k3W3F2L<9Aj6 ztXIk|atpMHsQVNM66)QujrZ+*I3fk&6hfHGXo)`Ae1qsV5}0mSf1hMparv74$~epX zL7rR$iDwL`s@I-4bRz}wkbnIsVGEW27AFwz|Ep`QG#DxnX zAlgE4RM%~OXn$#NvT@WMDxHq@FXHeZH{m#-w65q8scB#^j%@D+uKUsuBo*~t0lREb zA$47-162GE4FUxCH9!KGL=y+{2T&zb74V0Xcsf)EC{F0rgEZ~||M(AM#hCREIEo3@la%Th}3e=)$}=f0KShvG=NR4Y?H{}$~d{)h%MX;AD< zf4>>zJ7~N8og+}Z(_t(RG@dj}54_J-7C_~k|NQ*?SR1dSUIr*@Gb=d z%YF=Z1FdEni1+h8)|w6Y*6RJC7NBGVD58D^-bDm9KLS){ZNjNahX6Zdnl@oDU3VQ@ zkr&HXN8;~F8}K>FaVbic16fI;C;|Ke(9Zn)pc%BhyTadqBbYt0U9lf`C-UwL%$Ktf zDQ2_e$NjB_RL`d@SVMI$3pb4)=@1!r09M>!E>H*v8Hj~#tZSFp zHf}}uRI}ietU&bd&`Lno2xWxY$G>i-J}d~KbMA@-ch5$wQ0QRxrjf}R* zfLFf{VD)}zlLEv@+quC2;1Vc@P8C2;zUm0=)`*M?h0`uyVE9Woc?(DY+d8l+oei_G z>fYCe6gn}e$Bla44=g?ox_~3awS`z{^CSu3?xqM{SlS+0odA9%UEh~R3IqfP%$5nt z0}I+=rJvNUk??RT#ZZ$SAy;Wsdq^6CbZeFQR&N+{n$p4HiFl3uavc*0lj`lz;X`Md z3S*ZzfQq7|W^z`^5x$;B0A#kNrMrOA{gsQqkN@=c0#@w?;eF#KqQqed`K)syv z&uMFVcOwCoVi!kK-u_WRix6)i=XTMCsiRcM>wF1nhoPx^k-o-nv$P2+&mO}f-gYOZ zDls5d;A`S<8I?CMmf0nL_eX;VhOBry4%~UgxAS3^!!<_zg3m3o8H(^2PnSVk-8rDII4l< zO^YmT5U>+bR|^JC18D-kQ}%YfsGcWqgn@mdCWy7-;e*=}8I;~g)CQ!HF%R_h1_ zt3*D?eNp(@l!$JyXqksLk581_rSbf~YAA)XD#=X@mDm*w$rLzr%kfYl)Hcu4G~`~{ zvcOMs7?K5%^uS7|*J1&7ivagsLcmqw3hYO(r zZFT_EoELDFB*-s) zn$61c>Q0}ta5Bf5IWEzQ-*kZiXPZ431D!L6yg(ryP>Z`rfF9;E>3e^O z5p&vcoA@t2_)PmvHplm0n6YhgK&EffRn9>x)sZsifzo2p<6E(|~TBi@TS1yvD6FL7ehCo2Mn0*b%bXnkp~ zIEp?f=6(D@Ge|4y*b)y_B(>iXM2&v}B4m4h)($_-6J20;)UB6vg)`X0al@MHG+iUl zvhf8t+YiurlR80}DgI8}y^l=UFK5-Q1gKNr);gASpS_%quM#2}Z1bJCa?YerFS@Jd zNLOEHn>G_^Agg+M`awL)b$X%gbXE|<{_R60W?!Oun@#k$?W*NO zUfopST2-OrJj0awF4DWn2QSfo)oKT=Km|rHpa$*@;8+KMtWmob8=)O=uf8VPF-C(TEc#hiqG`PvY$OY*5|&vMfu64 zzCi}pt}`SlHpkf4TWJ{Gk{@x<$pubR(ECI2S6ZhVk zP{$i@J5ov5(d)l8-$SStHBr5pfbrDlSosL5CUG(cJnx~u-&fRGv@J6~ox*M)WUDPz zR+BroLmi6QZQP$YZu7cwK9(DD*>W|bf)Cby!{XhJ6voJG;UGp+5e4Y1Ni|C(O2+wO z6ii3JywALb0V#}NYD`U&c^?C6Q&Rlv8%lXsK>I1;MJ|OjdSehD&1*FV(2@f-bVu~E z-6;W#IRNvtX}=Uen^(s4_0rhD7vl7aLfB1(06j2?hjIGhJ}?fz<_J z&_Pa2F#P9ik}aUzDzz&b3#U35MXI5Z4-)~Pz?Qqw-tD@>SK`0_^ON@SjNFqt7DI}~ zo){UB*X5vd3T7)au2y~(Kv4MI=ROw(ALP;&pfcvZj=S`hJ0izB^e0 zGJOR+V)5qqbzSY}VIe>M#yrGo->YDkD7wKv-tD9NsFf69Z+bs3A*{qLwg=kEdAJEp z(}xjyBc()q0vwIg*vX&lN|*&&aqC#IzK+-#A~Qjmvsa2MH}+>6m~6_2c}WS|rPLLaJau-hbip|%0LQr0cu9&*Ae`-!O}F zAm)HqIF}Xc{s@B2=+>h7s4Xy_KM}h%k#!eoKgzcmNXtojEL1SPN_j;u_A#%|_I5c$ zyIfzPSa!+8c`+tp88|Y9!`U~=`fTXx6oV#pO^iyDO-rl6)oIAES)pf);4LL*DVPzlK@U;7pL+{;2mM`b>jK5jK zznH+z5xN0++Cv&!&8h#Z1)#fxN~p0sUA8*dNpl5Xa%&_MOvwBNSiDB6R_8N6O~}8pXAY$8fhhvqeeIGD}+i%lWRJ+9E{hl$2MXZfGW{lNR0S( zSN3R0JBbo>=I>BcsruqjtM{mpxLEqJs_U7>d{yGMf@Kc@jLaKYaIrm1{Z1KWlhVDT zFj{>=>~9=-8+pt&5q^Hcj>f;O5y{KlkVI$enemo#)lRNF($73l+Cb}_jI}h0yzpDZpJAhEckFeP0T)h8Ja`HGE&oI{wu#y-5kVD5!!I1zv#8XRW*<&^8b` zHCQNmpJ-YLcNu|N`Pj`Uy&_23JLXC5-QEUM=V3%+OBPMw64twRRp9 z+u)}{lR8|9iZS2HN5-EA8JO<{-J;QVcrBiO*|{Gx8}gMZeT-|J5A~A9e*#MSxqTjv zn_g_kWw4(Hwx*{qv5ZtmRfZvrarXQOZH|2&?2LKF8uc*lVFN3b!(T|OMe zvNMs@1Ei@D|N3Yer$#|Vl(yje{@F72-OZhysH2j_i*tVWirbO!cIY*uDGPG6m#DZN zdpZ^T*{5@J%5rXzoChI7p-k@ikL|ZicYZ%_{flbJC&df8M9MKEDMUQlXBHt@Wgi!Y zRHb?4;WiILn@X=m=iXufgvr96ij0D{)IU^hd)l&_n4A&>`yyWJ8l z&nsH5F_@x<1Qn`b*PwGfPl^-j49He#%C5<4)$f6pD;iqYt>K*4V} z4=Vd4GjEQQh;aVX=fy1e%uwBR72^~ja_X&hz$6H7S?oT#`Zi-_A*NNLvdm{b7#lIV zcX8P1k}#wpvJUfWr9&Pn#4I!ynpui(SlbaQ!T+!@9*? ziE5~6r{0}q=wdkuyTM0is0MY6pu!3Ko?i(>Ps78X`;8~l?E=?pfKBt@{WrIwl_pf+ zemW$YY~Jg(9S6U-f_s}l(4!+hIBAxsxAlY}K$rbgjBagKEkYxGjJj5FdCx<7nwR^B z%oBpLP+ZlgsyqM_yYK|*S}T>K#@Cwv6&x#l-?SuH$qhz@y5zL zb8wciH8X`2i^qft!h&^KEy;%xO(9=#6waz`iOZgdLVKZYD7X*XEUiGFnr(oQS9Y!$ zQ9?ECzkS+BAAR8w^{3(8pUiH5;|9;QGI@m>&&;44v4h(m7o~h}IN9f95?0azXQO03Z*ju?ReRu!|tVwO3x*i zrj)fbTtTuN_cucmw$uf6XG+Ekw*hYvO**!ZmM(8%!RE^^!*8l~_z(+Vd9MaY-fD{F zJP4*;28!Aw&T=mRvJS8?0Nc0Xkmimh=??J_G-t3Z3w$j6oLDikN2w++*?!;#@^}X&>dS!4bVPkt5O%8u3$uVhe->r0Cwm-F2RYyBJ zJSKd%W5k*X(%VtN-f0fakTd7@edLSiF78guR6+?q)eN?0D5^lXX4;39X5ub8p=&4<4&5hca-Qa<`Ns5yU?!9RM zdqpO%yFEmjE3v|TjG9-tq1w=4o;r(5D@x&gZ@#=QyU5hK`tkx1xusT&zn=)?X=^Ph zZSwT+@Zck@^w2FQz?0?(U65ATra4c78#VpICrlFvRJ!VF(B zZ;#*kzUm{Zff~f5o^9RLF7JONkLprkT>XOI`yRtV-ix}U^g;BdtpSJpe?7oD4<$~j_sFMT=O6cOv zw%xBcw!c0;c$*9@1HjyHAOBw*8V#QZV%X6pF9}9%k7HzeH`>=CsKQ7KJAJABP?}(A zn}Y3P3f2JuRSxu$pxiT^yd7+r)H-c83C(4lztChR_0FlSmf7OksKz%Z!U)tX2^H6) zD+0OmSs$vi9D9!yZS1dSquS@#AR|g-$IGbdu5_6m$dZ&|K36}0{g0m?1L`_JI?wJw zQ7XnHcUKiXKg}2S89}w0W59++6@$xeqK zI0V`4uMXKFe&yO1iodL$x4m9pps|Q@9z0y2UXy&q#nO*tAL(-!mV#$)9`ff*29!}P zl2MgGbr@q8n@Zi~38kMtEPJl-FM|oXA88YGTa}iUI_Zgfp18kP(!GNZfPGsBg2v)v z2JLcXX5BZ|b7V_=JowL!a|W}2FFYW)*IR$5QH?>Jo3(>s5i-wzZMy<^?MwyH)EWF@ ztF?QFlbJY0M4DEL!FtTo3HKOCMHW_Jn4K+NpU)#=tO)0k=^UDkJdKlO4WY}W=T|$@ z^@-D9N75GFf}AUnj|&vl_aZ<1k`I`?Uvh|16k)TktXG-Oho%eVO$5EpHm%|T9}Y-l zdO2vk5jtlH=o>P6_b}ghj^^XHF$4$<_eM2;Tmxy|_baN?afq|8>cwpaeMvF&9G?{e z(qafW@k?!gOG?!V;;;?5x?>8(x`}=UQ;gF52U{aV=8yps5_kHM~{TKkC|$X zmsHK1@Sb@smlYr{>n;Ks(f%{2&ZT?bE>bhyOD<*?gpTWMa_$2MVM+3%j{a}9fde`C zZcj(Qr#ST-Bd>ESSoUeuNq!lJ1p6F$`;+X%pFeDGDqAj?m>5^+uKE<4+NVOC;=V=Q zLdwlO3wr#fJ4E^TkT$SUNZ8rf033Do;kFhO5hxvG1;qpDbE9cZL!;;O;H}p+!nT z)_yxAXT|zux8B4@%{*%P%J~{?yANmhOq;C?D(a{Gb91jtO08Cs9c7tXm+eh&=2-r$ zboh?%1Wre8g@t*uv9rVB9P37h`=#V}?J?=Hg%>x$zy7_NlluvyCb;xT>v}{=`P?ssYOW zCZ@-aT=Bt5aWvi!_L~PJ?hPPFH_iYV_YF)_yI(pn9i5)PHpFeGfqD4eeqr2IC>yn0 ztj)L_quTI|jHGFRru-Ibi>}NR=%;X>2&lVsdwKdwznD{;9x%ayy;21POJy z-u#!?P~IT^ho-}JhWRh^G;pRjf1!B@&R#&OOuoaoYn|x%7mjm*u1omkwZK-Z+TCZ- z>FyuP`eTisS8df_Z#N&m8UkiuOW5B9Nl^)Yv#x8w_jVKD8!Q15zTRWh z>4SWp#Fx*Mk|0wlM zU35o+K5|X`^^b{(!I);;^Ku)qjc(3pd%F4=tFr*xY(sQUk%%SaZB6ytG87GHdoP@De5q{s&2l;Z^=E$2xOdXn#7BcN9cm#MI7l{ZFX>NVi z*XS6mQfJAV?XJhAB!ZlO?jU8Gifflj&rDP=0QR3%*? zjbj%~y>$E_Zh*D-U?+WYE^p^hJJq~2q|rE%4w-S(r&=Osc#jRL&ta!H;z~Mc zOhA>aSGL}HEMoi_@+AN$&LaU+A$XYq(uoFeVd;vDw|AWqJv}j-U~3=e-cQMql(RB0 zp$%&s1|BEMpvKpgR9*qWP)igy|FieX)8nC+V;<&C*ik?< zz0+db^jVNfu5FZ^{cKvrzoZA82-i()z)l$R1w;u@vn9~9n~;pDa~)1}Ir=udt-Qm= zEC3(Nls#;+N}JgOJ7_w;w3kYt`1|>9PvPBsmPw)dTtM`gD;ulSWC2+TSr6lHMas&z zygB=Qsi*MZ-ir%v`K9mK@Y!#}q&cHN5Ft-SKN?m;Q%sPZFF~b7fLnnOkcn}$4|VG9 z(S;{rLy>Y;Lv6%Fq?A5?OY^4-8)xEIbpU*YkDTpJ_UmO0vc)1f@%84S^NGS^o7v18 zU6>iqg-RK;&#gkAbe6uh-rM%5_TV{$KEWhCuXQ~|uF`X5!zN)Ug)-Ca+;UzorDmgW zTE0UUa{EV1U2G5J)u_ST4y4pe09xP@K;@Q@C8Pk>>I~*9y!W3B*-2aQIh*ErL4~45 zQliCXPL}zCxfV=gb2hW{?0HEiwae$NkF-$AcbvC}N**RvHL>P#W=U3B?OaS_;Tbu_ zx)b`yaJs#gi8`5tPRp=hXt|TMU(Dchp@j?9rqVmtZSe?`M9e~i5>jTdV~NkI^DZ=wkgqs)z6O` z0*K(6rEr>ojMiJgg6n|vJjmsnt4;;u`vAh{nAW5A1$=(BC8mv^Jx4L_*$bjiIMOxn zm&F!XaBSY=`|4Ta`(N}rBq%`1dQRDp6W!!bL{Fbb1lYQEFhlQn*qMauUml`Ts;)x7 zTxh?8D%(Mvx(I1Ue15QL`LlSK$uD+Q=0|a*_@2ej6|b6>z9dM*2sq*2@aDD;*DqFT z-A0YXIBqLsd)wu3gz6!0qSBy;KYb`56JKZU#{z@w#2(9DX+GP^z|#xR+GdtL-rcB? zV$Rmu#!-znmi_U{WTPz2WVBiS{F;968*pbg53_k;lDj(ZHojTCu3jz#rJ?!W~OV|V+tow>1`1A2SUU(g+Dku$bmnqkzWsL zFUn($3Wct}W2K#Pv~b(&zm=C>|9OzrUO`{2&BSPH-d)?t)x<|^(;XDjj_j6?~dmllHg3GD`Fi97L4 zzO&+jPpX>7+FBmm!#5`ngF_XykTYd4mC-m?zBLRfzi|b2k4|D2sOvs!?#B+DIC?)9 ze;I+^(rb8CFcCO>y11L=#}VFwqCFtM$P}&<2x|Sbw{)EXsJ5^=W`rrV=QK2JelL&=S87md zx9N@xpA`wanLjqa-%x=nR_c<j_%k*x`w%YWQiZ_v3)efnT-!ZbGB zLE?Q5w}9O~pOa8l@f#F55{2P6GmDAKNJni94FZ1=VqsX~^m&{hHqp1aPr~+EGqQr0 zqZNF)@!B;eDX>=Bf3N9?li}A13 zGCrAz@w|$Tb+S~!Y<4?Bo5;pky30^`kTmQndmDi;DDh=-?QXKm3n%U~{>$mQFQ+Ey z5Q?KO#z@uPlSu4FpJT_bQl8fym+wKp^52v7-lG-}VUBf({q>9GJG-qd?@rLyq>k1fH9F=sPrVxz?lWF95&LYgmely}maXQdYud=^NUZ2) zI13ZxPMtU2GlkYPAyu>HTjI+wYz^zzI7WqQbSI|TLjX<01aNK^V1q8*RZ>fMi|J0U0g?D|zAQ!)=s+xUFZ<1Spb>Xj(jo zG4IaW{KMvVzacV0GU00M@C}y`hBpS4A<-+$gO@XjgUmHiDL*LraT^oq4*+G1*#H|% zl(l9ogXa<$P3~Z0MS(~cBTY?IsiRTpcJe?CCq>?mD&d_O55pt>5*{zrLAODvPoK?;#WnfT$bv&X37YLriiL)(O)_Q+uk0Svo+Y=QJv@a8KgnmsQQ;tU z;l`rJoy7{9jRT(#FZemri5ATaQ8iTotzW*k?Ylb!Wu~*6B$q)j`LbN9(0%;$q1Q|# zaBqY)7k)XF*twgUsyM?pm=(Ljv@o}NhRSkbIh4X-;M1UWfWDd@Ve+V0k9egBEJg6otEUqWE+hwQ zQkAl~b)Ei?u*#xp<`rWIlVYrUuM@tjJ5JR~<#$q?*2}U+O~vgzOOw=fV)P^@1hPlx zmiV?4>9c!C3%N$tPt{5^UeO1G`xVYZsTz(tfsXUJ!G#f(B<})#yv9MJ#f-AxY9Fi; z1&|p;h1Q9iR2!j({{H+vE4~H)0x!UzaQTow3$Cy{OKoZXv>~Gk*TCOCSDR2uV4lgw zKZz(i^&rD7TwgW`RN9jwKU3GLW~H}$p)&wU;b-qZ$L8JOEczhk%a_o+RR;Oo7GUp? zd${t;h^XXP|1^JW)pfLqVld?GnvvR5sNx_ciTyl^^MZL#izPGyRHdrW8cRU_*(q=* zxuYx{?ZchBbTy<3-*XlS%v;6d&SdJ@hc%|ejEP?yj-K9=wcef5PtvQcgv-chhA%gm z%;eo2p_bgq&JK zzjTUJ_&((RKt`**Pkl8p@ehNH3coMy6~CA{uWub~Yji5)P3tRq6P zrK?s4)^8efJAx+VR(BTBnvMr`o4$pHlBCUF*;0HjlJ9MrKzP3h34oCz81(%}(y>;N z3yY^$=g7@d!Jm4WgvVE|ojghja6-d1)GT85BE#r_P zXG9DkzdBN8(U%(GZaZ$=xd24UiA7z6(CcFNqzML6OP35BVauYAHqKw!R&6wqq;3tM z9ZRIVIRuqF=qlmhn~rza&2#tPE)*c&A+ZvWy0@yCFlA3e z+d?OZ?wUGu@8`9Wa%nHsC+=?h-dsl7ulrpMdrl(p%?C#(B7Bt}Kl^nk&bdDT9(_%| zscS+bvape()o#?IgF#4MVW}i3Yg7Jps6-F)-M9xo@ecQ68h1_(L_!b+Lnqq>WF0rx z)iwE{uE6Kf#&OfDuRy#YW!L?%U29EvO@MbaM;77YELbHjVCJv#h=k%nGU+9+W!V8~ zJ$;fWDdeW;@{{fNS+A$*Mz4GN9(99iFQX((>?~q>BW1-!|1`Vq8Jd+r57|gz-cd=uywW{@tj(g7?C(qR|9y=*z?LN6H zk#e2(m#eit&!kn0FxikDR=D}9wE9ZjI;?ESWm;?E2}`M(r&#gTsl5D9ZJy_Cbklzc z%<9JOME~`bZON9hOO%{5Dk!fT1ym$iyy318o>2(4ioMUYc=waj)8rc*jPi zzzGOz8{S@hV=%NDDaVhIINr-0fW%O#zb9Su(GqVQ6de|fU0nREy-bT%;$L@?wVOCJ zyZaWg_3}3+Y`(Q@)FzfDRe{?5R*MvYy7DY*rp&T`wy32u2~%3@N!1cEqHy0hPxscy zL^u2Vd{;Xp-sYsdhxRM6Qi8T-fFDkjW!u?4Pr%tPEzNR|*(>Q`L!Jx^6$Y-u$Itsitya&|a` z(grKI$bZIbPybyHJ*o}qZ^yoj#&ABnD_Pa7l3Yb^i?=*zMo%-3R^AQLt%Ev5-0E2o zZ%Jnlg%s&R8!e5Dk`_w2dg~q4+r(pPmS;-5vs5zuR3OQ*$81o}VM)dMw`x_>)xGci zV;xusTE|OYIJ-9Z6c7+r&s{c8zyqOHC=*|0ObkOk1=Ag6O(%xQP_W>IfZ-(q@@d6%{!Iu3c6mn`?L=!iZHxM(N zl%83t*6-j3saZx88}BTsyR3PvU!WUpnera+zJivVXMiULXevK_i#SgVS75%NJ`}xD zmL(aZY(5tMMIvWQYS8K!PXp^zJXT}6b#Ho+(!I6J|J@i9*N)(Wn2hAaY|P3gv~#hl z*HxYvUXlOIW|qx2$(BFgj!aoh@DkVRU$>jph&#S=@VPR=A+Mq!#j`Ji!8J7^AAhn* zD?jSgE{2$4uNK#h)x!q!>A*AhMg3z4ztgF4df-OUV!D0oZS~!%DLLy?l?*9yvglc~ z440Gida{tmOuFTYK#cRUV@*5Rqo~49Ey|F2{%t|uZ&sN>wv5#x$A7huN(~Uo@Drot zm4rza3r0n-RlK1DB<~l$JrBiQ-HSxMx~APu8ucH9ZzkTR3;==-Z1^pr@Lj=dF8gCo zikYcu{cMqQrJW_x!Z^I&Y7fHh-n+O9Cqy~2EW&@)?V(e1RAd_x%KG}ZhoQXdUp~?? zDzCTt2@6TIUYBUz=j{J*gwfA@;wiX{ws+wD8#`(G{>Au?Cd9=Gi8%V)AAHt$-3G`x z-NMK&Y!8I_s8x2iTwuf&QX8oJ1zjDw{&$L&o}+SDnSi6te5lq6VZgT6jA&Rxu)zw7 zYlYS)8GOsW%;BDw!3)8{?-{9)WvBO4{`Zyc-#!Xo)LhJ-EGh;(b^);}M%yX(=W&{&sfR@B|!1MfTz`C7IJCGK&~lizTj-yx`IR)idwer1+8a@W{Og5t2aI;2C^GY~+n&mG2;aa$Bm9FEt|e*y%7;v2=!z4W@I4Y#aWRyzuCk^ zg=KlJlEjfTjx3S$?~9s^GCZ?`P%038CKMq9<|$^68GVK@9L#MWF2#hoq8IteNd(nQ ziTC-#{c@uU}+GN%#|P&Xulaj zB5IP_`_YE@CkB{0GSQrQ<@~uJxDf1bHJG5YGxk!PH+uzM8 zg|m$ha0bBR>S%HV9(#ARo~pv)5?cg;C!kUr=nl0~Q3B~1+hFQbNpv%O{@-kySXS><$3f(h7Odc0KNa4U zrtyoN6l(GZJ~X+3T3*LRdw^~qBASF0PCqIadh#vEy6fxY?cXV^6Z5Y~6aCKti~sj4 z4T3lxrGz;W8pw04>O(4o;G`nLGmd@-RB6;_3os;P2G<|?|-EQUrw}$=i-DRC`^G-Qq!_Rp5 zSM#4yPhO+2um1PSw2}8b?}q;^!i!ILlpBjQG}Yt{!+!q_S*TJJ!8Z%K=_-^SpwI7r zpU;l!8n2%E^piwkgaR`G6l|%JqN33zF6sPgP}W($3x*rPjsuJnuGH(Hm{{OVBuESI zWdwJNn^rFzN;j?}iT~e?O45$N6hOtwR(;LHo^j&INBjR;BnV2xef~u$L3Skn09Z=I z(e$e}N?iI!;63T!lMCq{v#Zg&zS42_=hb$A$s-pT{`+jGv2lYukD$$mfyT3XT%3U6 znujz4wfO5cO3?rNc7Mx6`><;=h7#bzPv+a-WDlRGZh!j`u!!*A#34bKj*mSXl6g`w zV>THt=iVp01*Y)--Q2>aEXwXVFjzR=E|C~#u3dJCWcKd#63O-l z55RbH{{hZ7KzISbXGq-K>`CB67Q*Z0V8CCM68lJKe}{4l2THat*l-8^_r}4qrKe`5 ze(f9AzmbrKGav06^uXlzJ^qq+a{~tJ7qT1jH~+mN2*5j~a^c4IZ;CTg8{Hc6d?X}} z>+uIUzlyuOH$wSegSb)(LK@Y9$FF;e0E#gpbF;~i=XpknP#n`RQ~53!7bgc6Fl^Mq z(AAbeiwk)J@)JSu4)_wUc?Uio9`~@ts>38PW-FDLIUQ>EV01pq3BOb~D znhrhdSQtX_!M|%_ND?yJm|as*Kl{1{4h(7A{PUj(}0hV*Hso#ch37e7v;@W zxMqx#&_U^jN(Wv+G7%|i1l{#9sCgm6ob(;|v?;WW<61z=Di4Dy}6+vWQv1 z*azd4kmr`h1}52mkN+M!DBH?t)NrLJYqIt6)Uf12(6eWab}E|9xyh2effggX4YnYU zEH9GKh&v-h8-R0eekm52rVv5dR84St=8N=0R)lCb?a2FiKroKUM|)HFzpoEgcJd#; zyNJO8flte68EM1pcOIhqSQbv}*{R}mSyyZ_E1jD_qPVG~0imdE_|3CNA5r5Fwi;UL zR$vCxp=LI!y9FRB9Pv#7nn#Upnn#_Cj%B>N1>wjvqV=Cd&`%l&Tx5M)n^hqi@CNFV zuGX!hUP}~p9$3wVi4${&GR6voZpyP;2#TyGjWuQPcuO zW|XU!7#Lp5yyIb)q7pq2|M^t}FTL|6^~+uY)yn*V{P};Y1I$(f-v>tT8YF8h!5z^+ zLfI^&*TqbI3)e>6UHHTtF!hHTFtG&)@FuZex#Pv9sH>1IqI)v_%KXpt!M_$Hi?X^C zz(}f1_dAe@NexI*{qKk0@MtfbJsED9?_As^Mi~FudSax|KM&+*WJvg~k|-Q*Xc$$e z^0oi<0u-^d09a5Yb5pAOsl&>rs-Z!;rk5M4F_Tr;d&U1bf}mg??&Fq}*m+q_QYTUs zu(FH8_9F%ZkZZ_x=R>Sirz^}da#P@Yb^ zAmisJ_5DDudaeL?1a!`TpO7E-O|FN~MRhlg;DwRm936gYRl7)`<*r-zwasWPU~w5#b73@g~zB5@fAd5@qoaugCSq zh=05Fy3@W7%0|50Lk+Yh%b)f#YGOEE{5W8oIz%jT@;H6!*EsvsArpAc6FZzYTCc`W zpIm=J^>o7I^I=_1DjzT-sPLd}M6z!u@V%H}_kbsj#F>aT6}v+5_OvAMmbzEj)&6GD zT5-}X`ER_WK%i)jF5ZJ5t+l;Mx(_Cv!z87i>OFAeNGuHIz~tT%!27qNP-!hH`f=|% zSgQ@l3iVPBKDqa3c7JjPNntCG=is6l0uRD5qJux$X`m`HMH!?B>+n=HW0lqa6AMX0xATg=O9k}dJoe^l1y4dY(^@{=Sl`E;w zv{C3*G%NX8?g(+8tR)jT%$P7!;D56g5%k*S`EQ4R_9R9t8BO52H>SC{&<937{0??b zr~erWRFG+R9!gTLv6301aB$f#9#LOE{>2)p7uXZqk!T&E~aSMi`kS| zOx_l^t17kpk|6kl`M<$}pSnJO+0m7$ok$M+OX~cm*6(r^)sL$A^5h!EFp`nQ3K9fu z#(^9W&-T}Kszk!+*QJ3`x93EX?KP=Jc=0h=D$NtfMR{CIfamCV-TZ7tj>d_6<$3{j z^D-9vt{%n}Z}|tw**(*~C}k1kg$3RLomj+1iIy*;{cq&5fXi0{Ux-O5onH{T3nkFS z)=`Jx42hbpv1>dzIQfwNWWsrpx><@9{kDv>Kfd@F&%@)@qK4DM* zRJzjP<*E=;y9GeI`Ahh0H@Vw90Rj7≪#RCzhsPR{Kso(^9GUhw;P6R{6Vq2La=* zH}}6touQsL;Bzt1M~VZyujEVhnV7jlXZaFdA%2S#5@D$OHN`dE;@3Y)Qf829kh(EC zqLKgWirH?y40(c>Kfc$Walft`_RTb1gw$-Njc;Y3MI*9+fJ2Jzz!#G(o)>aSd|iZQ zrVaSEZu*|=2q@#W$n7B=LNXfZalMVbY5ys%!+#<@;6a&56|` zr=b7sFnKO_lG7`3pIk}2U|H9b5DYkNyDfULON>v_JA| z&mEt1r9>y+qc!jUoF5LLuS)CgdSwwP0ou6KH2I0JXdE&ewNTL^{r&GRr@nJP!T5TQ z=EpJ28mEn;3;zuRJ{;m5aK)y(fDr)FwqK_Xd=ki$slTD~xO1*a9FqQL2y4ILx^n2* zb9O<)o-TN1w=QolF}mr7z)b2Oby0$wwWcj_-=akN>BCl$L?UENh*J#9@QHi#Vl-%! z1HsSf*gP0dM9)Q+n*0n^^WY8^QE0L_b^ZE+Kfc zzq~NjIU?9*wt24uMc$4ixkS+Z4%6mh76@fE31i58GtEd4#TYK-W3_nMVi1*hD}Ufb zknTo9>*EtuvmROiTG$B2#inm(4C}4L*ei+=PJ{R1GLT4>fA&6qD~V6J6Z`*b=}P>e zT;KOQV;Pgo5VB-T3qxPaAq^%==*Zr}X|X2DNijHCG8i3O#ql{&k}X=0Y)7^*24#{m z_Py~=Xe^m|HDnmPzo~xz!SmeLeLvTA-Ouy6pRJWbgq)W!fqyMfSWIfy@Q@6#bFE0O zE$Fa&W!4GK@tgLZhK*JIV(E!VBHqCWUbk~XGe?B7vOIDgfiP?x4l~}RDdQ!ocA8g0 z3o^ZRi(d)8!&ZmQqL}aRi3h-DjSY;nZ}c_=(tkaX3ysW`q3p%Lb5`3GUtdyb&#?y8C6$rq+T5o5`{Uy=6f!s zOeI&`pM)supES+4m?#jxZqRjE<3-HRGt~(9?fYbp_qA<@zlOCS@1EL12D;^oKX~6< zdZ+g{s_s9Wl&&9$abN(y32hp>d+LN3uPR53?(cbLBIJnO@ue}%Ba}Y2Z6n{eeHYh+ z-6NZ^L%)EGf+)M{1l`g z?V=ZvVltzSb6v*O9CdIxL_)+ItAu*^P^@#Zih@&;fQLhprN}prJ9O%$=g>+JA8wq@ zDjjiw3ky%qaN3e@n{TO2Emi6tlp(X)z0N1Xefm+fe>!78pVX#}8>ciP{8QD40K87* ziFUFII%fxvEjj3@bT{kA3%=i82TdZ6P+-ZZRw?!$Wk3k!P{E`V(5Cf_unSyDtC?Gs z?f$g0H3XP7&$?ZcWZ#meo^;aBpKDrSjSHRr5kjupJ9)fU>%+TFW|9%u)x} z>Tr&eL$5a`hH++sHCL$L^miY>UPLMv8o+G zvEm4xdfo-JJeceVs<#54|;goip_jX{aMh4at6Z}UmZ@BQz< zPYdmzC>O!(P)J^Hi}XdU-01ketV3?F!(k1&OdfUX-h6|3U4qrnAY)-qysG6D$WW2V z-N0T|G59JXEzLBQ`maWoO1HocmIFd{`0chb2g}>sIX|9c6dmnGm5uo(z%R+N2^zy%f7i zNDKVhq?e}m3!I5M;V|SJbmCq5&Zi^_{ zsB1Zl$2Lo8$$E$Fs}6|72m9PK$tw%FIzT`SRC;W#Ei_)R+X$SXZT-sgeHmsK-xM78 zz&U0-6ot+J887zbow;_n6|YVza;ojOzFs5RYy3XbFLpws5V^DHOXX~RU!+u-$7mWxLQ4k-qn+efs=XbmR+&JCtW@zyz) z%&GnB2~E);FOw+`j7r$VO*5*4sG)+(FlzubNUJHy+=FpQ|4}&wp=ZPHB``1J=J38> z-M<_+o?ygXFG_wken^nS$-cnnshEQ@(7F~^9*?PxjN~oso%V`N=r6nA9ic-?=y>d{=9HOzR(xv6pp4#GX{@6Aoi(Nl^Oxq*IWO> z{;oFPBLOoXM?hk|%J14du6KDm`(bF4wHCkX3ueGFjVoP{GV+wDMXSo4&F-@mqgc8S zogh9GWbs7dCa-L9L~&*MxK4-0es=AlpDKOqpe@drY|r<|z%*)BrD>g&Jts#Rk_&qH zFvq>{albHo%LrO-?(FC3HXCl~WOwRqe?Bw+7GBM9;U&E@+w@A}5;R<1JJ?0P*~|X5 zZ-Rr6z&YFfMb>^cn^wctm|-!sBeMOo`(7Sfd$OJ2@`1(bq!VlQ6|q7{u^jS;et|u; zTqVbfp%Nta*(BBu&7Cl8i;pd1v^JPU;Q^gjhklxnF~Y1Kp;ea%T>7m2XzlQ$I#CiG zWzxqUutw*F8!mY|xqiJh5+fXTWupGy6WfBC%q6?QJLlS#`q9M;p^R&<3Twm9GgCY} zo8JY!yko>tn!4`zsVAD(Lizi9NN;q|7k38RN!QiRr!iiA=89=_CJmo}Pw#S?^#93| zj#S?itZ7VPNLF5K4CsEtI4}R~ctG}~EeTAG9u)=v-tESbE!>twpa-*ku0@m6tC7_#L|FHIAQeY{{9rD84k8X-v1ei%AiWi_-R@HnxI>m1OE&UvdrmvRZ$^RSL%f5lIH`HlP3&Xdb=iavWl3 zitr|!ZgoWG#JTb!lxJCDvPIMGELz8f<%`TPvQ_GXfJMGVxJYsTZoxpc*tOFQVaA3B zwPd003htQzI@3E9sQ%fn=6!D`Z45oTKISzK6`nzZ?NGBsnr&ju}P$s z+gtjLcKhH!`7C!q6k6Qh*J|&lPS6J3&TteIB$HXQ(M`J@9MeDBuImH8s$L#_Wgdw1 zfN*joJA-aVPEJ6YNX?u9@CETm){Cnu`V=ZGF)+;Uux;v;m5gSGznH zL6W^dh%c5{`_bsVrv5aG54ekh$V8ReyDs9zbTze0g@XX4Lq2!-@I7`yr7-{i8Kar1d!qlQRsuUJYUf&;lVa_S6=qKn_hD#Ld-@=r>lFWYn1@xqbRH5^2bv zt{(}troENy#iWjf7Ox$jH(6*f>yPH+1Qyxfk-G*9MkOn { + const PI = 3.14159265358979324; + const ee = 0.00669342162296594323; + const a = 6378245.0; + + let dLat = transformLat(lng - 105.0, lat - 35.0); + let dLng = transformLng(lng - 105.0, lat - 35.0); + + const radLat = lat / 180.0 * PI; + let magic = Math.sin(radLat); + magic = 1 - ee * magic * magic; + + const sqrtMagic = Math.sqrt(magic); + dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * PI); + dLng = (dLng * 180.0) / (a / sqrtMagic * Math.cos(radLat) * PI); + + return { + latitude: lat + dLat, + longitude: lng + dLng, + }; + }; + + function transformLat(x: number, y: number) { + let ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * Math.sqrt(Math.abs(x)); + ret += (20.0 * Math.sin(6.0 * x * PI) + 20.0 * Math.sin(2.0 * x * PI)) * 2.0 / 3.0; + ret += (20.0 * Math.sin(y * PI) + 40.0 * Math.sin(y / 3.0 * PI)) * 2.0 / 3.0; + ret += (160.0 * Math.sin(y / 12.0 * PI) + 320 * Math.sin(y * PI / 30.0)) * 2.0 / 3.0; + return ret; + } + + function transformLng(x: number, y: number) { + let ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * Math.sqrt(Math.abs(x)); + ret += (20.0 * Math.sin(6.0 * x * PI) + 20.0 * Math.sin(2.0 * x * PI)) * 2.0 / 3.0; + ret += (20.0 * Math.sin(x * PI) + 40.0 * Math.sin(x / 3.0 * PI)) * 2.0 / 3.0; + ret += (150.0 * Math.sin(x / 12.0 * PI) + 300.0 * Math.sin(x / 30.0 * PI)) * 2.0 / 3.0; + return ret; + } + + const PI = 3.14159265358979324; \ No newline at end of file diff --git a/src/views/Home/MiniMap.tsx b/src/views/Home/MiniMap.tsx index 511e343..715dbd8 100644 --- a/src/views/Home/MiniMap.tsx +++ b/src/views/Home/MiniMap.tsx @@ -17,13 +17,13 @@ type NavigationProp = StackNavigationProp; const MiniMap = () => { const navigation = useNavigation(); - useEffect(() => { - AMapSdk.init( - Platform.select({ - android: "812efd3a950ba3675f928630302c6463", - }) - ); - }, []); + // useEffect(() => { + // AMapSdk.init( + // Platform.select({ + // android: "812efd3a950ba3675f928630302c6463", + // }) + // ); + // }, []); const handleMapPress = () => { navigation.navigate('DeviceMap'); diff --git a/src/views/Home/NoDevice.tsx b/src/views/Home/NoDevice.tsx index ba8c100..a8a2d9e 100644 --- a/src/views/Home/NoDevice.tsx +++ b/src/views/Home/NoDevice.tsx @@ -8,7 +8,7 @@ const NoDevice: React.FC = () => { const handlePress = () => { - navigation.navigate('BindIndex'); + navigation.navigate('BindIndex' as never); // console.log(navigation); }; return ( diff --git a/src/views/Home/NormaIndex.tsx b/src/views/Home/NormaIndex.tsx index 618d70e..c75e59e 100644 --- a/src/views/Home/NormaIndex.tsx +++ b/src/views/Home/NormaIndex.tsx @@ -23,6 +23,8 @@ type RootStackParamList = { Home: undefined; DeviceList: undefined; DeviceMap: undefined; + DeviceSet: undefined; + DeviceShare: undefined; // 添加其他页面的路由参数类型 }; @@ -39,10 +41,16 @@ const NormaIndex: React.FC = () => { const handlePress = () => { navigation.navigate('DeviceList'); }; + const toSet = () => { + navigation.navigate('DeviceSet'); + }; const toMap = () => { navigation.navigate('DeviceMap'); }; + const toShare = () => { + navigation.navigate('DeviceShare'); + }; const panResponder = useRef( PanResponder.create({ @@ -215,7 +223,7 @@ const NormaIndex: React.FC = () => { - + { + + + (); @@ -44,7 +54,7 @@ type Props = { export default function HomeStackNavigator({ navigation, route }: Props) { React.useEffect(() => { const routeName = getFocusedRouteNameFromRoute(route) ?? 'Home'; - const hideTabBarRoutes = ['DeviceList', 'BindIndex', 'SnBind', 'BleBind', 'ConfirmBind', 'DeviceMap']; // 添加新的路由名 + const hideTabBarRoutes = ['DeviceList', 'BindIndex', 'SnBind', 'BleBind', 'ConfirmBind', 'DeviceMap', 'DeviceSet', 'UnlockSetting', 'BleDistance', 'DeviceShare']; // 添加新的路由名 const shouldHideTabBar = hideTabBarRoutes.includes(routeName); navigation.getParent()?.setOptions({ @@ -86,7 +96,32 @@ export default function HomeStackNavigator({ navigation, route }: Props) { name="DeviceMap" component={DeviceMap} options={createScreenOptions('设备位置')} - /> + /> + + + + + ); } \ No newline at end of file diff --git a/src/views/device/AddShare.tsx b/src/views/device/AddShare.tsx new file mode 100644 index 0000000..6e69e48 --- /dev/null +++ b/src/views/device/AddShare.tsx @@ -0,0 +1,354 @@ +import React, { useState } from 'react'; +import { View, Text, StyleSheet, Image, TextInput, TouchableWithoutFeedback, Keyboard, TouchableOpacity, Modal } from 'react-native'; +import { rpx } from '../../utils/rpx'; + +const AddShare = () => { + const [phone, setPhone] = useState(''); + const [name, setName] = useState(''); + const [time, setTime] = useState(''); + const [showTimeModal, setShowTimeModal] = useState(false); + const [showBleInfo, setShowBleInfo] = useState(false); + const timeOptions = ['1天', '7天', '30天', '永久']; + const [allowBleLocation, setAllowBleLocation] = useState(true); + const handlePress = () => { + setShowTimeModal(true); + } + return ( + + + + + + + + + + + + + + + + setShowBleInfo(true)}> + + + 上次蓝牙连接位置 + + {allowBleLocation ? '允许' : '不允许'} + + + + + + + + + + 是否允许租赁人查看{'\n'}上次蓝牙连接位置 + + + + setAllowBleLocation(true)} + > + 允许 + + {allowBleLocation && } + + + + + setAllowBleLocation(false)} + > + 不允许 + + {!allowBleLocation && } + + + + + + setShowBleInfo(false)} + > + 确定 + + + + + + + + + setShowTimeModal(false)} + > + 取消 + + 选择有效期 + setShowTimeModal(false)} + > + 确定 + + + + + {timeOptions.map((option, index) => ( + { + setTime(option); + setShowTimeModal(false); + }} + > + + {option} + + + ))} + + + + + + + ); +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: '#F3FCFF', + alignItems: 'center', + }, + modalContainers: { + flex: 1, + justifyContent: 'center', + backgroundColor: 'rgba(0, 0, 0, 0.5)', + paddingHorizontal: rpx(30), + }, + modalContents: { + backgroundColor: '#fff', + borderRadius: rpx(20), + alignItems: 'center', + paddingVertical: rpx(40), + padding:rpx(28) + }, + bleLocationImg: { + width: rpx(338), + height: rpx(338), + marginBottom: rpx(30), + }, + bleModalTitle: { + fontSize: rpx(36), + color: '#333', + textAlign: 'center', + lineHeight: rpx(50), + marginBottom: rpx(40), + }, + line: { + borderWidth: rpx(1), + borderColor: '#eee', + marginBottom: rpx(28) + }, + radioGroup: { + width: '100%', + paddingHorizontal: rpx(60), + marginBottom: rpx(40), + borderWidth: rpx(2), + borderColor: '#eee', + borderRadius: rpx(30), + paddingTop: rpx(28) + }, + radioItem: { + + justifyContent: 'space-between', + flexDirection: 'row', + alignItems: 'center', + marginBottom: rpx(30), + }, + radioCircle: { + width: rpx(44), + height: rpx(44), + borderRadius: rpx(22), + borderWidth: rpx(2), + borderColor: '#4297F3', + marginRight: rpx(20), + justifyContent: 'center', + alignItems: 'center', + }, + radioSelected: { + width: rpx(28), + height: rpx(28), + borderRadius: rpx(14), + backgroundColor: '#4297F3', + }, + radioText: { + fontSize: rpx(32), + color: '#333', + }, + confirmButton: { + width: rpx(560), + height: rpx(88), + backgroundColor: '#4297F3', + borderRadius: rpx(44), + justifyContent: 'center', + alignItems: 'center', + }, + confirmButtonText: { + fontSize: rpx(32), + color: '#fff', + fontWeight: '500', + }, + bleImg: { + width: rpx(88), + height: rpx(88), + }, + tit: { + fontSize: rpx(36), + color: '#1E1D20', + }, + txt: { + fontSize: rpx(36), + color: '#4297F3', + }, + bleInfo: { + marginTop: rpx(30), + width: rpx(688), + height: rpx(174), + backgroundColor: '#ffffff', + padding: rpx(44), + flexDirection: 'row', + // alignItems: 'center', + // justifyContent: 'center', + }, + bleInfoBox: { + paddingLeft: rpx(20), + }, + modalContainer: { + flex: 1, + justifyContent: 'flex-end', + backgroundColor: 'rgba(0, 0, 0, 0.5)', + }, + modalContent: { + backgroundColor: '#fff', + borderTopLeftRadius: rpx(20), + borderTopRightRadius: rpx(20), + paddingBottom: rpx(30), + }, + modalHeader: { + flexDirection: 'row', + justifyContent: 'space-between', + alignItems: 'center', + height: rpx(100), + borderBottomWidth: 1, + borderBottomColor: '#eee', + paddingHorizontal: rpx(30), + }, + headerButton: { + padding: rpx(20), + }, + modalTitle: { + fontSize: rpx(32), + fontWeight: '500', + color: '#333', + }, + cancelText: { + fontSize: rpx(32), + color: '#666', + }, + confirmText: { + fontSize: rpx(32), + color: '#4297F3', + }, + optionsContainer: { + paddingHorizontal: rpx(30), + paddingTop: rpx(20), + alignItems: 'center', + }, + optionItem: { + height: rpx(100), + width: rpx(300), + justifyContent: 'center', + alignItems: 'center', + // paddingLeft: rpx(30), + borderRadius: rpx(16), + marginBottom: rpx(20), + }, + optionText: { + fontSize: rpx(32), + color: '#333', + }, + selectedItemBg: { + backgroundColor: '#F0F7FF', + }, + selectedOption: { + color: '#4297F3', + }, + IptBox: { + marginTop: rpx(30), + paddingHorizontal: rpx(30), + width: rpx(688), + height: rpx(128), + flexDirection: 'row', + alignItems: 'center', + backgroundColor: '#ffffff', + borderRadius: rpx(30), + + }, + input: { + flex: 1, + fontSize: rpx(36), + }, + phoneImg: { + width: rpx(54), + height: rpx(54), + } +}) +export default AddShare; \ No newline at end of file diff --git a/src/views/device/BleDistance.tsx b/src/views/device/BleDistance.tsx new file mode 100644 index 0000000..608dfda --- /dev/null +++ b/src/views/device/BleDistance.tsx @@ -0,0 +1,79 @@ +import React, { useState } from 'react'; +import { View, Text, StyleSheet, Image, TouchableOpacity, ScrollView } from 'react-native'; +import { rpx } from '../../utils/rpx'; + +const BleDistance = () => { + const [isEnabled, setIsEnabled] = useState(false); // 添加状态控制按钮 + return ( + + + + 1.请走到空旷区 + 请在空旷区域进行标定,否则标定结果可能受环境(墙体、金属等)干扰影响 + 2.请减少周围的设备干扰 + 其他手机或设备的蓝牙信号及电磁可能会影响标定结果 + 3.请站在您期望的无感解锁位置 + 建议不要离车太远,否则可能导致您预期外的解锁 发生 + 4.点击标定按钮标 + 标定成功后车辆将基于当前位置设置无感解锁距离 + 提示 + 若您想要更改无感解锁距离,可以重新标定,受蓝牙信号强度波动影响,您的实际无感解锁位置可能与您的标定位置略有偏差 + + 开始标定 + + + + ); +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: '#F3FCFF', + }, + scrollContent: { + alignItems: 'center', + paddingBottom: rpx(40), // 添加底部间距 + }, + btn: { + marginTop: rpx(50), + width: rpx(614), + height: rpx(92), + backgroundColor: '#4297F3', + borderRadius: rpx(16), + alignItems: 'center', + justifyContent: 'center', + }, + btnTxt: { + fontSize: rpx(40), + fontWeight: '500', + color: '#fff', + }, + icon: { + marginLeft: rpx(80), + marginTop: rpx(100), + width: rpx(540), + height: rpx(450), + }, + txt: { + width: rpx(608), + marginTop: rpx(20), + fontSize: rpx(28), + color: '#808080', + }, + tit: { + fontWeight: '500', + width: rpx(608), + marginTop: rpx(20), + fontSize: rpx(32), + color: '#3D3D3D', + }, +}); + +export default BleDistance; \ No newline at end of file diff --git a/src/views/device/DeviceShare.tsx b/src/views/device/DeviceShare.tsx new file mode 100644 index 0000000..db12ece --- /dev/null +++ b/src/views/device/DeviceShare.tsx @@ -0,0 +1,154 @@ +import React from 'react'; +import { View, Text, StyleSheet, Image, TouchableOpacity } from 'react-native'; +import { rpx } from '../../utils/rpx'; +import { useNavigation } from '@react-navigation/native'; +const DeviceShare = () => { + const navigation = useNavigation(); + return ( + + + 共享钥匙(2/3) + 临时借用车辆,可以使用基础控车功能 + + + + + 张三 + 13860332568 + + 待领取 + + + 剩余有效期:23小时27分 + + + + { + navigation.navigate('AddShare' as never); + }}> + + + 添加成员 + + + + + + 查看已失效共享 + + + + + ); +}; +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: '#F3FCFF', + alignItems: 'center', + }, + addBtnImg: { + width: rpx(32), + height: rpx(32), + }, + shareTip: { + flexDirection: 'row', + alignItems: 'center', + marginTop: rpx(44), + }, + shareBtnTxt: { + fontSize: rpx(32), + color: '#808080', + }, + addBtn: { + width: rpx(592), + height: rpx(108), + backgroundColor: '#ffffff', + borderRadius: rpx(16), + marginTop: rpx(30), + borderWidth: rpx(2), + borderColor: '#808080', + alignItems: 'center', + justifyContent: 'center', + flexDirection: 'row', + }, + addBtnTxt: { + marginLeft: rpx(12), + fontSize: rpx(36), + color: '#808080', + }, + cardBottom: { + flexDirection: 'row', + alignItems: 'center', + display: 'flex', + flexWrap: 'nowrap', + }, + lasttime: { + marginLeft: rpx(124), + fontSize: rpx(24), + color: '#4297F3', + }, + lasttimeImg: { + marginLeft: 'auto', + width: rpx(24), + height: rpx(24), + }, + cardTop: { + flexDirection: 'row', + alignItems: 'center', + display: 'flex', + flexWrap: 'nowrap', + }, + cardType: { + marginLeft: 'auto', + alignSelf: 'flex-start', + fontSize: rpx(32), + color: '#4297F3', + }, + cardTopTxt: { + marginLeft: rpx(28), + + }, + cardTopImg: { + width: rpx(96), + height: rpx(96), + borderRadius: rpx(48), + }, + cardTopName: { + + fontSize: rpx(44), + color: '#3D3D3D', + }, + cardTopPhone: { + fontSize: rpx(36), + color: '#808080', + }, + + shareBox: { + width: rpx(688), + borderRadius: rpx(30), + backgroundColor: '#fff', + padding: rpx(32), + }, + shareTitle: { + fontWeight: 'bold', + fontSize: rpx(44), + color: '#3D3D3D', + }, + shareTxt: { + marginTop: rpx(14), + fontWeight: '500', + fontSize: rpx(28), + color: '#999', + }, + card: { + width: rpx(592), + padding: rpx(32), + marginTop: rpx(32), + borderRadius: rpx(16), + borderWidth: rpx(2), + borderColor: '#808080 ', + + }, +}); +export default DeviceShare; diff --git a/src/views/device/UnlockSetting.tsx b/src/views/device/UnlockSetting.tsx new file mode 100644 index 0000000..73ff702 --- /dev/null +++ b/src/views/device/UnlockSetting.tsx @@ -0,0 +1,241 @@ +import React, { useState } from 'react'; +import { View, Text, TouchableOpacity, StyleSheet, Image, Switch } from 'react-native'; +import Slider from '@react-native-community/slider'; // 修改这里的导入 +import { rpx } from '../../utils/rpx'; +import { useNavigation } from '@react-navigation/native'; +const UnlockSetting = () => { + const navigation = useNavigation(); + const [isAutoOff, setIsAutoOff] = useState(true); + const [sliderValue, setSliderValue] = useState(1); // 1表示标准 + const [isCustomDistance, setIsCustomDistance] = useState(false); // 是否自定义距离 + + return ( + + + + + + + + 无感解锁 + + setIsAutoOff(!isAutoOff)} + value={isAutoOff} + trackColor={{ false: '#767577', true: '#4297F3' }} + thumbColor={'#fff'} + /> + + + 1.手机打开蓝牙并靠近车辆即可自动解锁,解锁时请尽 量减少手机与车辆之间的遮挡 + 2.若解锁遇到问题,建议您尝试重新连接蓝牙,或尝试 调节无感解锁的感应距离 + + + + + {isAutoOff && ( + + + + + + 解锁位置 + + + setIsCustomDistance(false)} + > + + + + 设备距离 + + + + + + + + 标准 + + + + + + setIsCustomDistance(true)} + > + + + + 自定义距离 + + {isCustomDistance && ( + navigation.navigate('BleDistance' as never)}> + 标定 + + )} + + + + + )} + + ); +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, + alignItems: 'center', + backgroundColor: '#F3FCFF', + }, + distanceBtn: { + marginLeft: 'auto', + marginRight: rpx(40), + width: rpx(154), + height: rpx(56), + backgroundColor: '#4297F3', + borderRadius: rpx(28), + alignItems: 'center', + justifyContent: 'center', + }, + distanceBtnTxt: { + fontWeight: '500', + fontSize: rpx(32), + color: '#fff', + }, + selectedOption: { + backgroundColor: '#F5F5F5', + borderRadius: rpx(30), + }, + selectedText: { + color: '#4297F3', + }, + selectedRadioButton: { + borderColor: '#4297F3', + }, + distanceOptions: { + flexDirection: 'row', + marginTop: rpx(20), + marginLeft: rpx(62), + }, + distanceOption: { + flexDirection: 'row', + alignItems: 'center', + marginRight: rpx(40), + }, + radioButton: { + width: rpx(40), + height: rpx(40), + borderRadius: rpx(20), + borderWidth: 2, + borderColor: '#CCCCCC', + alignItems: 'center', + justifyContent: 'center', + marginRight: rpx(10), + }, + radioInner: { + width: rpx(24), + height: rpx(24), + borderRadius: rpx(12), + backgroundColor: 'transparent', + }, + radioInnerSelected: { + backgroundColor: '#4297F3', + }, + distanceText: { + fontSize: rpx(28), + color: '#333', + }, + sliderContainer: { + marginTop: rpx(30), + marginLeft: rpx(62), + width: '85%', + }, + slider: { + width: '100%', + height: rpx(40), + }, + sliderLabels: { + flexDirection: 'row', + justifyContent: 'space-between', + marginTop: rpx(10), + }, + sliderLabel: { + fontSize: rpx(24), + color: '#999', + }, + img: { + width: rpx(688), + height: rpx(600), + }, + card: { + marginTop: rpx(20), + width: rpx(688), + backgroundColor: '#fff', + borderRadius: rpx(30), + padding: rpx(30), + paddingTop: rpx(0), + }, + icon_set: { + width: rpx(50), + height: rpx(50), + }, + cont_li: { + paddingTop: rpx(32), + paddingBottom: rpx(32), + borderBottomWidth: rpx(1), + borderBottomColor: '#EBEBEB', + }, + cont_li_right: { + marginLeft: 'auto', + display: 'flex', + flexDirection: 'row', + alignItems: 'center', + }, + cont_li_content: { + flexDirection: 'column', + }, + cont_li_top: { + width: '100%', + flexDirection: 'row', + alignItems: 'center', + marginBottom: rpx(8), + }, + text_set: { + fontWeight: '500', + fontSize: rpx(36), + color: '#333', + marginLeft: rpx(10), + }, + rightTxt: { + fontWeight: '500', + fontSize: rpx(28), + color: '#4297F3', + marginRight: rpx(8), + }, + icon_right: { + width: rpx(32), + height: rpx(32), + }, + tipTxt: { + width: '85%', + marginLeft: rpx(62), + fontSize: rpx(28), + color: '#999', + marginTop: rpx(8), + }, +}); + +export default UnlockSetting; \ No newline at end of file diff --git a/src/views/device/deviceList.tsx b/src/views/device/deviceList.tsx index cc58302..55b26d4 100644 --- a/src/views/device/deviceList.tsx +++ b/src/views/device/deviceList.tsx @@ -16,7 +16,7 @@ export default function DeviceList() { const [selectedItem, setSelectedItem] = useState(null); const handlePress = () => { - navigation.navigate('BindIndex'); + navigation.navigate('BindIndex' as never); // console.log(navigation); }; diff --git a/src/views/device/deviceMap.tsx b/src/views/device/deviceMap.tsx index 75a2a59..7c140c7 100644 --- a/src/views/device/deviceMap.tsx +++ b/src/views/device/deviceMap.tsx @@ -1,64 +1,128 @@ -import React, { useEffect } from 'react'; -import { View, Text, StyleSheet, TouchableOpacity, Image, StatusBar, Linking, Platform } from 'react-native'; -import { AMapSdk, MapView, Marker, MapType } from 'react-native-amap3d'; -import { init, Geolocation } from 'react-native-amap-geolocation'; +import React, { useEffect, useState } from 'react'; +import { View, Text, StyleSheet, TouchableOpacity, Image, StatusBar, Linking, Platform, PermissionsAndroid } from 'react-native'; +import { MapView, Marker, MapType } from 'react-native-amap3d'; +import Geolocation from '@react-native-community/geolocation'; import { rpx } from '../../utils/rpx'; import { useNavigation } from '@react-navigation/native'; +import { transformFromWGSToGCJ } from '../../utils/coordtransform'; const DeviceMap = () => { const navigation = useNavigation(); - const latitude = 26.95500669; - const longitude = 120.32736769; - const imageUrl = "https://lxnapi.ccttiot.com/bike/img/static/uRx1B8B8acbquF2TO7Ry"; - - const [userLocation, setUserLocation] = React.useState({ - latitude: 0, - longitude: 0, + const [location, setLocation] = useState({ + latitude: 26.95500669, + longitude: 120.32736769, }); + const [isLoading, setIsLoading] = useState(false); - useEffect(() => { - // 初始化定位 - async function initGeolocation() { - await init({ - ios: "812efd3a950ba3675f928630302c6463", - android: "812efd3a950ba3675f928630302c6463" - }); - - Geolocation.getCurrentPosition( - ({ coords }) => { - // console.log('定位错误:', coords); - setUserLocation({ - latitude: coords.latitude, - longitude: coords.longitude, - }); - }, - (error) => { - console.log('定位错误:', error); - }, - // { - // timeout: 15000, - // maximumAge: 10000, - // distanceFilter: 100, - // } + // 请求 Android 定位权限 + const requestAndroidPermission = async () => { + try { + const granted = await PermissionsAndroid.request( + PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION, + { + title: "位置信息权限", + message: "需要获取您的位置信息", + buttonNeutral: "稍后询问", + buttonNegative: "取消", + buttonPositive: "确定" + } ); + return granted === PermissionsAndroid.RESULTS.GRANTED; + } catch (err) { + console.warn(err); + return false; } + }; - initGeolocation(); + const getCurrentLocation = async () => { + setIsLoading(true); + try { + // ... 权限检查和配置代码保持不变 + + // 同时发起高精度和低精度定位请求 + const highAccuracyPromise = new Promise((resolve, reject) => { + Geolocation.getCurrentPosition( + resolve, + reject, + { + enableHighAccuracy: true, + timeout: 5000, + maximumAge: 1000 + } + ); + }); + + const lowAccuracyPromise = new Promise((resolve, reject) => { + Geolocation.getCurrentPosition( + resolve, + reject, + { + enableHighAccuracy: false, + timeout: 10000, + maximumAge: 5000 + } + ); + }); + + Promise.race([highAccuracyPromise, lowAccuracyPromise]) + .then((position: any) => { + console.log('原始定位结果:', position); + // 转换坐标系 + const gcjLocation = transformFromWGSToGCJ( + position.coords.latitude, + position.coords.longitude + ); + console.log('转换后的坐标:', gcjLocation); + setLocation(gcjLocation); + setIsLoading(false); + }) + .catch((error) => { + console.error('定位失败:', error); + setIsLoading(false); + }); + + } catch (error) { + console.error('获取位置信息失败:', error); + setIsLoading(false); + } + }; + + // 位置监听也需要转换坐标系 + useEffect(() => { + getCurrentLocation(); + + const watchId = Geolocation.watchPosition( + (position) => { + const gcjLocation = transformFromWGSToGCJ( + position.coords.latitude, + position.coords.longitude + ); + setLocation(gcjLocation); + }, + (error) => { + console.error('位置监听错误:', error); + }, + { + enableHighAccuracy: true, + timeout: 5000, + maximumAge: 1000, + distanceFilter: 10 + } + ); - // 组件卸载时清理 return () => { - Geolocation.stop(); + Geolocation.clearWatch(watchId); }; }, []); - // 跳转到高德地图 + // 跳转到高德地图 const openAMap = async () => { const url = Platform.select({ - android: `androidamap://navi?sourceApplication=appname&lat=${latitude}&lon=${longitude}&dev=0&style=2`, - ios: `iosamap://navi?sourceApplication=appname&lat=${latitude}&lon=${longitude}&dev=0&style=2`, + android: `androidamap://navi?sourceApplication=appname&lat=${location.latitude}&lon=${location.longitude}&dev=0&style=2`, + ios: `iosamap://navi?sourceApplication=appname&lat=${location.latitude}&lon=${location.longitude}&dev=0&style=2`, }); - - const fallbackUrl = `https://uri.amap.com/navigation?to=${longitude},${latitude},目的地&mode=car&coordinate=gaode`; + const imageUrl = "https://lxnapi.ccttiot.com/bike/img/static/uRx1B8B8acbquF2TO7Ry"; + const fallbackUrl = `https://uri.amap.com/navigation?to=${location.longitude},${location.latitude},目的地&mode=car&coordinate=gaode`; try { // 检查是否安装了高德地图 @@ -79,11 +143,6 @@ const DeviceMap = () => { return ( - { zoomEnabled={true} initialCameraPosition={{ target: { - latitude, - longitude, + latitude: location.latitude, + longitude: location.longitude, }, zoom: 15, }} > - {/* 设备位置标记 */} + - - {/* 用户位置标记 */} - {userLocation.latitude !== 0 && ( - - )} + 福建省宁德市福鼎市海滨路200号靠近福鼎第四中学 + + + + 12:00 + + { }; const styles = StyleSheet.create({ + container: { flex: 1, backgroundColor: '#FFFFFF', }, + locationIcon: { + position: 'absolute', + right: rpx(32), + bottom: rpx(400), + width: rpx(90), + height: rpx(90), + }, map: { flex: 1, width: '100%', }, + timeBlock: { + display: 'flex', + flexDirection: 'row', // 确保内容水平排列 + alignSelf: 'flex-start', + justifyContent:'center', + alignItems:'center', + padding: rpx(8) , + paddingHorizontal:rpx(18), + backgroundColor: '#EFEFEF', + borderRadius: rpx(29), + flexWrap: 'nowrap', // 防止换行 + marginBottom:rpx(40), + }, + + timeClock:{ + marginRight:rpx(14), + width:rpx(26), + height:rpx(26), + }, + timeText1:{ + fontSize:rpx(24), + color:'#808080', + + }, header: { position: 'absolute', top: 0, @@ -196,7 +283,7 @@ const styles = StyleSheet.create({ backgroundColor: '#FFFFFF', borderTopLeftRadius: rpx(24), borderTopRightRadius: rpx(24), - padding: rpx(32), + padding: rpx(36), }, addressInfo: { flexDirection: 'row', @@ -205,18 +292,18 @@ const styles = StyleSheet.create({ }, addressText: { flex: 1, - fontSize: rpx(28), + fontSize: rpx(36), color: '#333333', marginRight: rpx(16), }, voiceIcon: { - width: rpx(44), - height: rpx(44), + width: rpx(90), + height: rpx(90), }, navigationButton: { height: rpx(96), backgroundColor: '#2089FF', - borderRadius: rpx(48), + borderRadius: rpx(20), justifyContent: 'center', alignItems: 'center', }, diff --git a/src/views/device/deviceSet.tsx b/src/views/device/deviceSet.tsx new file mode 100644 index 0000000..d9efd0b --- /dev/null +++ b/src/views/device/deviceSet.tsx @@ -0,0 +1,364 @@ +import React, { useState } from 'react'; +import { View, Text, StyleSheet, Image, TouchableOpacity, Modal } from 'react-native'; +import { rpx } from '../../utils/rpx'; +import { useNavigation } from '@react-navigation/native'; + +const DeviceSet = () => { + const navigation = useNavigation(); + const [showAutoOffModal, setShowAutoOffModal] = useState(false); + const [showAutoLockModal, setShowAutoLockModal] = useState(false); + const [selectedTime, setSelectedTime] = useState('3分钟'); + const [selectedLockTime, setSelectedLockTime] = useState('15秒'); + const [showSensitivityModal, setShowSensitivityModal] = useState(false); + const [selectedSensitivity, setSelectedSensitivity] = useState('3级'); + + // 自动关机选项 + const autoOffOptions = ['1分钟', '3分钟', '5分钟', '10分钟']; + // 自动锁车选项 + const autoLockOptions = ['15秒', '30秒', '1分钟', '3分钟']; + // 震动灵敏度选项 + const sensitivityOptions = ['1级', '2级', '3级', '4级', '5级']; + // 处理无感解锁点击 + const handleUnlockPress = () => { + navigation.navigate('UnlockSetting' as never); // 替换成实际的路由名 + }; + + return ( + + + + + + + 无感解锁 + + + + + + + + setShowAutoOffModal(true)}> + + + + 自动关机 + + {selectedTime} + + + + 车辆停稳并在等待时间内未行驶则自动关机 + + + + setShowAutoLockModal(true)}> + + + + 自动锁车 + + {selectedLockTime} + + + + 车辆停稳并在等待时间内未行驶则自动锁车 + + + + setShowSensitivityModal(true)}> + + + + 震动报警灵敏度 + + + + + + + + + + + + + + setShowAutoOffModal(false)} + > + 取消 + + 自动关机 + setShowAutoOffModal(false)} + > + 确定 + + + + {autoOffOptions.map((time, index) => ( + { + setSelectedTime(time); + setShowAutoOffModal(false); + }} + > + + {time} + + + ))} + + + + + +{/* 修改自动锁车弹窗 */} + + + + + setShowAutoLockModal(false)} + > + 取消 + + 自动锁车 + setShowAutoLockModal(false)} + > + 确定 + + + + {autoLockOptions.map((time, index) => ( + { + setSelectedLockTime(time); + setShowAutoLockModal(false); + }} + > + + {time} + + + ))} + + + + + {/* 在最后添加震动报警灵敏度选择弹窗 */} + + + + + setShowSensitivityModal(false)} + > + 取消 + + 报警灵敏度 + setShowSensitivityModal(false)} + > + 确定 + + + + {sensitivityOptions.map((level, index) => ( + { + setSelectedSensitivity(level); + setShowSensitivityModal(false); + }} + > + + {level} + + + ))} + + + + + + ); +}; + +const styles = StyleSheet.create({ + headerButton: { + padding: rpx(8), + minWidth: rpx(80), + alignItems: 'center', + }, + confirmText: { + fontSize: rpx(28), + color: '#4297F3', + fontWeight: '500', + }, + optionsContainer: { + paddingVertical: rpx(20), + }, + optionItem: { + padding: rpx(30), + alignItems: 'center', + borderBottomWidth: 1, + borderBottomColor: '#EBEBEB', + }, + selectedItemBg: { + backgroundColor: '#F5F5F5', + }, + optionText: { + fontSize: rpx(30), + color: '#333', + }, + selectedOption: { + color: '#4297F3', + fontWeight: '500', + }, + modalHeader: { + flexDirection: 'row', + justifyContent: 'space-between', + alignItems: 'center', + padding: rpx(16), + borderBottomWidth: 1, + borderBottomColor: '#EBEBEB', + }, + container: { + flex: 1, + alignItems: 'center', + backgroundColor: '#F3FCFF', + }, + card: { + marginTop: rpx(20), + width: rpx(688), + backgroundColor: '#fff', + borderRadius: rpx(30), + padding: rpx(30), + paddingTop: rpx(0), + }, + icon_set: { + width: rpx(50), + height: rpx(50), + }, + cont_li_right: { + marginLeft: 'auto', + display: 'flex', + flexDirection: 'row', + alignItems: 'center', + }, + rightTxt: { + fontWeight: '500', + fontSize: rpx(28), + color: '#4297F3', + marginRight: rpx(8), + }, + noBotLine: { + borderBottomWidth: 0, + borderBottomColor: 'transparent', + }, + tipTxt: { + width: '85%', + marginLeft: rpx(62), + fontSize: rpx(28), + color: '#999', + marginTop: rpx(8), + }, + icon_right: { + width: rpx(32), + height: rpx(32), + }, + cont_li_content: { + flexDirection: 'column', + }, + cont_li: { + paddingTop: rpx(32), + paddingBottom: rpx(32), + borderBottomWidth: rpx(1), + borderBottomColor: '#EBEBEB', + }, + text_set: { + fontWeight: '500', + fontSize: rpx(36), + color: '#333', + marginLeft: rpx(10), + }, + cont_li_top: { + width: '100%', + flexDirection: 'row', + alignItems: 'center', + marginBottom: rpx(8), + }, + modalContainer: { + flex: 1, + backgroundColor: 'rgba(0,0,0,0.5)', + justifyContent: 'flex-end', + }, + modalContent: { + backgroundColor: '#fff', + borderTopLeftRadius: rpx(20), + borderTopRightRadius: rpx(20), + paddingBottom: rpx(34), + }, + + modalTitle: { + fontSize: rpx(32), + fontWeight: '500', + color: '#333', + }, + + cancelButton: { + marginTop: rpx(16), + padding: rpx(30), + alignItems: 'center', + }, + cancelText: { + fontSize: rpx(30), + color: '#666', + }, +}); + +export default DeviceSet; \ No newline at end of file