From 720406913ab4d61963a3fed158563d0b4d4600d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AD=8F=E5=B0=91=E9=98=B3?= <786612630@qq.com> Date: Mon, 18 Nov 2024 15:29:08 +0800 Subject: [PATCH] =?UTF-8?q?feat:=201=E3=80=81=E6=B7=BB=E5=8A=A0=E8=B7=B3?= =?UTF-8?q?=E8=BD=AC=E5=B0=8F=E7=A8=8B=E5=BA=8F=E3=80=822=E3=80=81?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=BD=91=E5=85=B3=E9=85=8D=E7=BD=91=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E3=80=823=E3=80=81=E4=BF=AE=E5=A4=8D=E7=94=B5?= =?UTF-8?q?=E5=AD=90=E9=92=A5=E5=8C=99=E3=80=81=E5=8D=A1=E3=80=81=E6=8C=87?= =?UTF-8?q?=E7=BA=B9=E3=80=81=E5=AF=86=E7=A0=81=E6=A8=A1=E5=9D=97=E5=9B=BD?= =?UTF-8?q?=E9=99=85=E5=8C=96bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- images/.DS_Store | Bin 14340 -> 14340 bytes images/mine/icon_mine_wan_miniprogram.png | Bin 0 -> 86808 bytes ios/.DS_Store | Bin 8196 -> 8196 bytes .../io_gateway_configuringWifi.dart | 4 +- .../card/cardList/cardList_page.dart | 58 ++++---- .../electronicKeyList_page.dart | 38 +++--- .../fingerprintDetail_page.dart | 8 +- .../fingerprintList/fingerprintList_page.dart | 58 ++++---- .../lockDetail/lockDetail_logic.dart | 47 ++++--- .../lockDetail/lockDetail_page.dart | 119 +++++++++------- .../monitoring/lockMonitoring_logic.dart | 6 +- .../passwordKeyList/passwordKeyList_page.dart | 54 ++++---- .../lockMian/lockMain/lockMain_logic.dart | 2 +- .../lockMain/xhj/lockMain_xhj_page.dart | 1 - .../addLock/nearbyLock/nearbyLock_page.dart | 4 +- lib/mine/mine/starLockMine_page.dart | 127 ++++++++++-------- .../wx_push_miniProgram.dart | 49 +++++++ pubspec.yaml | 2 +- 18 files changed, 320 insertions(+), 257 deletions(-) create mode 100644 images/mine/icon_mine_wan_miniprogram.png create mode 100644 lib/tools/wechat/wx_push_miniProgram/wx_push_miniProgram.dart diff --git a/images/.DS_Store b/images/.DS_Store index 038522c8ac49112558552aa98c4ca1b924d43441..667200aa0f3370232d3cb9a4647e5307fa546c50 100755 GIT binary patch delta 269 zcmZoEXepTB<WjU^hRbL^rO8UfiR#%8s(oE)Oc`qn}5**Up+`CUNuK)}cdp&59gG>qz=d{Meul!YOeA(J7G kA+;>HC@&{JFCC<1v!~20rp??6mj=l4YfPKj4gRtN0KK0+j{pDw delta 55 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�q}Lb^cHR9eBjyu0hnw^77$7g(Y^R^g`kU~3UC%^A%E!bBsnf{-QTt6z0e zy8d1eGD{7>>gpQKbR6M%>1Wl-m3I7zA9Su!-z5-FwI^Bd<-$7OK$wqb1!=tU7Wa;yXFg*`t!0Ie{3h8`3aCe*sT(GmUf}6un$J&1a-qH z<+6;^VJi)U=tT6p(71Z|{=Y^q+xvh6S?$9$qtW6-lKT`;zoSmnj=ai;(MQI>v{uwe z*ZSsW5vtS@E$#@fm}y4q-D}X{L}pAN3}gNRaZvk*#-+}9$j^tR>L9Fe#Ph7e58n#$ zFu~PRgdqJoF2yw9Rc0CS-BW2~)8~3ux5cwluC1Y!4%$2tZw99l1@}<0bIE+=BPtOF zjYb`Nc->ge(jfmwG}Y3&6?Lu_8;b}sJ71GA+%>C`qKZ*A=ZNEM_H1mn5r532X*O}f zBt)B|Z2rHW4MnLWG}Uw_D6g>G#!acj)X7ZS_mIQwV`rUh8`rEt1hxvBZOhR{T8cQR z(NFygkA%W%R;Z?4hC2BKhzPFw5Tu18pMafNXVccKybh_bXo?_|Z$?e}{CFZP5=V1Q(RF^|1e ziB8wmFSmlN8|{#T4&+=IltZG|0kllFuVu2CV9iaPR$VcI35c^Iz+Cr$6m!qH#zZHg z&+M{VR+IbMKlgwL>I; zgZ4!D#Aj$@fNx}kghx9%#oxIPgvP?>Az}FCy2Vw`BV;x-DGB63gW@>witVaSiJzi7 zA}E0;N=KF&=ali2ZN{WMZ1KuBZQc5H+|0GrR&WYgE}!cih1}6eH~ov(Tn)!i3enhL zf4%LF7zB6{ps9+~FTnv1KmFsMu>B4?)Lwk%#nc2M;w;-k`Iy5v<@9sy&v)JKaaS%{ zWcwXB$M;b}TN9v41cEk)%g}|K0-oB#03pKoIEJ(`1a7hm>S8$M!$4Kjgjso#tkZ<(U10paNtaDXS@;lb$|mf{QosRK%` zmN=O_5i(~Z>lMO9r_H}G`9&X|NwzvQOJr}C>(6_3^e@YK@X}VWdb;x$KeRGVF>h(y zXvZA?K~{}#K*PH2CqMatz3-UgY~<)Mo^d?akx`1js#k5aq?STZruwp{R`GnFg?4m3ef@yO&3N z{)K^`%FQE&K^M}<&RHOHF%Oa;uky)?{?k(h1tW$G&XOAYH>%bZm6d4n0TW!GCKT!E z3y8Q)^=s|yb1z_Hd!fDZ^0PM3zSXY%)}5}Z`?=3vj0u_5Hv7=yZ4@WRdoL^g9Odkteulz;K-uXx`2+0xjE81`Z7;+~2w_P4b9)Lw{Ipt28_ z3qh?xR9ROy2IH7}S!p?n5L7P**a?=xHGYym*E^SL(ZBiewr| zD`elJW0H}XqSo!LZs4^9V~VvSsySTThxn`1X6-i72D^r#46+8=wH#HOKG+eCb9~cM1;fQWoa*UfN{`SmTdM$ zg4iB$SaBuiv6vB+slyf!IGn@N;RH;DcMjv^H}rvi9ePBT6X3%`d4%|U%P&Pvb3S;w8&(&GzTPIxR^NB&U(9fWs2lJ9-2IxH`b#=zlJ4xx1IFK&)Lar@Jkt?cFb7B^6kK^ z-#&Bc6?V494g*tnEOcvS21^-Eqsu?wgtM2xLp2gy({$gV65^?9A%@pmKcP9H9jdo8 zLLM3hSNc07@jVIK1Bh9lRU)c zQH4tUF@?b{Du3rzPe-HbglYDXy=H??DLO%>m z6@iez+UbkllkcICGx{MN5GE(#7_e}rinPFFP)Z2^QF}n@2X-|9sH|u=SwA>C$cD&( z50Frn#=B^cI>!5vv95hWarc@ewIV^@g@&MPWMS%sP4?|rv2NS4-VWMlicK0*VYxkd z*sfZK8ZP@O>}#S+$+qf%HM8>TIh%_h2bC_KEvrrFa^F3?$?v~%ygwoKH zs1GxeIlwClC`o`$qYEcA;GkZkiI)2BP>1SpL^eDX)Orm&rj1-^gmPQ(cCbj_JriN)Hm84KmUcl$DcAL)7E(K&&vk!84S83Sx6jRCu%V37IQKi zE1g*^#nVo8Q9RNh3y)5OF4QtTsd%*5G$Mw!LfpkIA{H;k#KV)1K47}~rU^<8pSF@JREANim#8N|Lj<12`G5M2L6@2|61c{C=@~BZ2{1@QIY2Tq zUVInWe6<%nc*;)$Q~l(t7JmmP;L?2}$cP(W@%PLamatm!P>r zf9gZ+JxJW-e~kO+l)J=RvfhvbtR>Fs+r}w%ju#B8%C?%lN7(rBN4m(cxp@=)hIM2_ z-Ak4=+rJ)u%nm+mPupwXStvuW?}7407MtHX*xSP@WE=5@jhTk2rh4nyyuhm1h%e!4 zg8~UyUHpYbYbx7@Pj~rP>n*{q7VomI9oiglUnWvXX%jnxfy#MrCn$u+}WjiulwPMON= z95`%kcJ8_N96RXnL;a9VM@NU<{rf+9M0KVrFL9(0WF61iMP;YA3WGfcF z<=<0jO9g6;?Z{o_YQ~PT<4!&ay?NC2+B)suPd{sKu3G6~`ceHP*Ocj$PTJbUp&_{{ z_Klu=;2(C!kAGwrUH(lw;LroyUq6|!-0P3#yk*t(kSADo1iJLI^-Z03P=3@@h11lu*%wd@ZLqCh`G$LU)Q4E;eN+=$+x@iy~mnSLwAB2vrL|y5Tx3P)9socf7h=6%o(}0gy5Iwo*12GSGQuYbR@Yp7B%&q4OPM}#(gQF2`zf2Boa-v78V+$q1OrzUBoN}BiTrlp*a_x4G%ERw zaN2cfglFs@K}QpbM1|lU+)>dW+D}`TS$6jp#&(5uB0>^A_(nC8g;vaptCg&rs-=lu z`wp>+5_$UMf`_!DWVp7re3~s@u-4vxG*9Uf_ z3HHw?*4f{mTx@ltDwsryT#M@H|2fL0?lB!J+4)>yQD@~-4!4|PC=hL{x8{x}E9O!u zojlQgQcq5awac7M?e3UG(MlBh=k?YYpu!1GIl%Sp?Vw$1Sm?3T)7$6aA)fj&IDLol zk@8AH-szDk4|%6}ZyOe>krB*bQm3b6;IS8oQp}QY6QYX89}i375@gvr-w|C6XCx$d zl-shc*$$g>jC~d(awTj$uUWmue(}Q}d6@DLu@{r>u%pG9^%y`-EA0nuhDGOm36XSj zS{{e>MseryU^a)X5Qh~YR%yW+uXN^fT|0+5WYjx|Wnxa@DMOGt@c66W-02?D?9j$= zbdx8sn!;qr+O=VV%tJi)@lRjmqOG3hR$IAbxxIlliyXD}C90OoD_(!gZoB0cdk*s@ zMKYs8J9AyWq{)(2h%zS5;Vj|^B|Pf5<82@8e~D}qmzS}bnPZb?PPfay_EiQ$w#}F} z3Awa5L#>^Jf=nDt#Qn%$AAR^<`}*fDwtUX5RCAbb&59NFqhH;{C02XdR*bxjojAq5 z{OzA0c6-aVcVfc_jXLdT^~w}T;(X&b1DQpr^WoO|m<<2%*FVQ-sDxq!lfAC!3OIe+ zfvBbzaY=N`Uwh74u}LH~-`Xk;$RVc=F3TRi>kbp*0|Rmhd4`id+Yahty+v2sMv zdC#NWGT{-;xeHzrF%@#CLp+F9M={^zCG~K!0$g=zSHLl)&UAd^k^YOJ>Yw-?;yVEn zFAkR&_ctTdv~&4Es?c$1qOlH@gF*ci33q37`S%P z8@4n#m$Vh8sCvqNoJabGjUHX+42g`0YIV#9gcuy^YqJ(s#`FLEgjc4dbeLv5s9iVX z3b;CK_}Q_t#1?cCIybZ-|LK=^jEHI6TVfT#%1eK2?)pAVLC<#EUjLSLakocd)hr4w z#IBxTNX4j#n`Z|u+FR7*AanYIj4{tqdt_>gw?VW7f4)T;ipwWhBl{h9-tmy_wf96A zQ)x#*@?ik`*xOsSbR{&bf{pj#R#yP7_HmOT2Yy>tZzI1hTeonbO&eXq80YNBpbmnL zv;MkT?grWp47YQAZif|!9x-O!aANT&Yb%C6(hrWC;EJjh>PACY&459HkrIIAQW3;N z1uyqYUgN`=D)NiTqW^n&{?`+T3i0KSs!t_jC7knvwt3}ZP2h@Nef{b1#ZmDJOnE%> z)RQsP4;j{u8EvPXdoIXoHeu=vWZm2d#wK5J`7k^A+;iX`vN;e0fvjZE(3u?W^k=38 z)<6B`SN7tQkFz`pP?D9NP}1Pk$yZ+2Ano;p)uH|8MN{O09XWH%Q81OGEUm# za@JHW!;9pmug`lK4VN|UF?GUZ^urgVVl`olsEyUuxffo{r8V2EQuk|+Wgi{Y&DECU zXYXMjuEHENr^mC(ihVg-NZmFrUt$0H%k4H1&TrMybs$~4%Wsu&3B+BZjOemhEfveI zMt;8?fBG2=fI|8Hv343XU4l_}{L`&J+Uij*~m$0AoD|`B( zd;GjiDHE$EkIS#W$@V<Pc%7xo~gY}{n` z{q7E1vo@^e{@)+}W=9-%vOW3tzt|&x`J)ZvVCgBJxfWY!<0z!tS~stD&ONNZ)otqN zP_=DLV)YxtimDG}>4QM`uAYxMiD|S&*uPcfA&P3WpXlBfJd>1n$xbg7Amnu_}iP$4e z(D~qf0SElp*|wYw>rn+qDv*t&0sQPn9JK`-Zo{$QFm7D9y>oj@2dcKs*1Z);Nz;He zU>2yEnOQ5$Dy%<1o+%9RR1Sv)i_n@XoM8(#th4zm=Gl}9!??w?&hpqtEXLAq4fmpN z&ueDSwFAw|N^q&r8rynp^>&!o+-B=taJy}&-ez?NoocOlT(CEYwPYr@9P&k90bHO_ z0uGG|c%;=5Z|vb@!c1^5qI)@XJWq#NMw}R5Nh9@(e((1DuSHlY z01#^e^oDqEs?pR^RnDA1{`uHr_WX+wUEFCGUSz{YkFX~me8|dB(S%R5vp@79yXcC~ zqw0GM8>`rbfv~^$LeLbE*y`BhKfwM8(m{wu{o2(wY|1PO)!>)Dc9;vN?6$l8<<8r@ z4E;=;JkwUKXg1wlr!nJ`9kYfEouNa59(KJge&r>^J(DUw^Ybdimov4gcy=N3xkZevEao(SO(XZnQuA z@_U}ugsIcHJ7g*2Y|t*d{$@Mztn=OKZZ;elL&gu)H8nRdLC$knNIWJDoHem7p+*_M zT749v(Y4HO{_3SRbM`*Akk!_y7hTR_&gp2>J)Vl&ixI#EmhGb^kFu+7`i|RH8f{3Jp5GK_ei)laFM5XeNr_Gb39#ez8kIhppH05*w znYdzEfZZ|g5F`8!YVyF2)pJih&D8f%@x;#D`0ll z9XXHP_XoTEmYeYDK}%}_+C!X5XY%;&FaK=&urc4k;krD`w`7A?`M_x_cZ)1q%$+U> zf^u2WtX;c?v?4iJ3!tu|0R!UhlgZIRL+IN%!QsDhqMix()s2FLe558 zuLtp+4*kl;m2M8~-TVlqMuuU5x6-DJ!94#+ZC;}@l@CLdJqCUZBc|Q?)=C>2h`%25 z@6SBH8fH$DBPYO7iOgmnR(q`lxz$*@MnR`@ll5&chDi{E*5`M4jNMaZZ-KTfw{G@A z^SdjpqNj{}wpn4eBpB@zkYv8q0z%4`y#4Uvi!2v4 z){5G4d*ok_DgoLH6}Dm3O5*0&&u?NQ@IAOQK7EZ{a>F-VjG@Ch9UVdDyPU&mnQqmJ zh5lK;8j}Nbl9r~bt!CRI4$f_yzrZg2_{kopfD_%-tQ0yRTHXrcIG3{vAlKE^*%{|u zY;9lvGGd=HTl&TVd+nu{Fy}ta)+`T$_fNmS!}RxV?g;i2F1z6dE3YoH5mP7H6}SG< zrp%au`Q|$AWv|3iD7WvyId)}r8>YG3jh!$CHR#oL`KQl+x9n5lKX~YQtDQW-_e0)# z{SEehO4ySbVXK!d!PLrd`|LMxgR&i(RGG!VIv%v~G4a>IvVzpFbDPbB?JFS8km zAwifC)lhZvSIz=taj-7bI@Cvb$Q5I)SxU!)UE3j)-RvDm5flzEP$`e&`yc+c;}3Z; zl9jVox7yd@Hf&q+{LA*etIqStWtBRmOuSYmJ5?wa&uhHUOc5ten#75DCK2qw$xx=8 z>{RJ3l;B?6_&C62U2ob~&i*LxWvJe6#>(z7_S%w#_SDOd+vJDu$1MIi>__QzJtAE8 zl@`1)pUL9}8$W#yt^{cC$)l)tvVH5OAK2^z4yOsUS$iI6=!rxWFp1VLeZ#(V)-j>b zVS#-Z9_K31S)Ub_&ihJ|`3(fNvvjXwYFlgi;@zJZ8_JY_vVH#q8WpeAA& zHk9UP&zhCiwr(X?J{Q<-<0sf=?#g-Y`DbkWgh?FoE4FGZB2;5Or?{rV_L)B2##U$B z(+|F4HDzc)ktPo&wjTzq1Jga-13HT|o-3PMEFTr>0nC6mvWHl|W-;&^a6_0q&=ZL! z^Rl>AvwIjT9}aRNmfei`{i$ea739>wG>CQ7ztFS#^?ue;9$$%NeX@3ZNno1bnPwTa z+gC^_0BFUMfhQSV;rTkuGI|F*jb(bl0fg`R`+u?m33bz!Wl|wtv_Fx>agt&O=@F*=L@yC5v8<(ckeY0wP(Iqy~~-9`S*bY!>D% z%FytVx}6Y4_3>2)olwClM@H310=xw(Z9pLwO0>QzN~*BfyVdGBmFf;QCUR6k{H0zB z1Wn-;mBTP#IK{ROZbv1r&z}4Di=IrA$HzbUX+#5S?a{{`a=&-`>BC%iF_VO}jwa69 z(#c`5S*|N1b#A18+EOB67kBH=w;E*9*!Rd(vf&a&^o+&uTh2K&u5pSM}y)Nb4aDe;xcEbtW-SK?wk zF+Zo=zWSY?+TMp8fu(^_h-lFGk~|-cMQN4kTtsdjt1t~FTzMrc!)+W;ga_XUF_zPX zRdRvs0WS#ME>}$<3y=GM^Ajd4WhPX%BFsT&tCh+_m%B>u$6WoO5Zdf5vv-XK!H9&Lvcv zZ5T=i`|=hx7w183)xe|Vs8#>Uc`f&Hga_{MnL_rFBKf*K9F2iLcQ&| z)(R~uhu*Yr<1UiXV}KPVUAcBT8!?tzq;pC>AqcM=@6;;&B@RD7&xDsm(sCi1Qp+(u zqtlAe1EXKM6MW3Z^mr$)G3C2H(-iStqrQCv&2(Y*3$8Q8=q6 zmThQ3bTZR2Fq@k=)RQ;NjyUObOz;%jxtCvQXIyoa%|mq2iUv||GuCDSnDWSUYM|_5 zO`5g03U%4LtnSP{=nyBm363*SAd623T9B2pK?yO|Rh7z7lY^c`l@&JUun*gak?e=C zl98OTn=>Xl0N2a?BqAUpsG4|m#puzeeiA!4tE>X^676syd*N4agkx9RMN~9Ui4Fp$2P|p4Q^G)2T3vXilktitS$4^&v39{VH`t*^ zAIqu%M_wuanZHk=1!4qtXSwP0VBgXtAL;X+aW9? zTI!V|9WOM2kKn9?R;^eSqpTe2J;r7ne2kT|hc#}-Oc)2jJg!V=H~I4`z_=3u@YNCV ziaD1tZr|f=0#*+OA@XcWG3nxuIex7Q9ADXM$wSn(=RR00;O_Qel-JFD8xoa_*=@GX z$uG7s6DJS{6;k#DC+$h!O{}xm7oc_3n`eieaE`CGj{nG+oEo2DA3gVCPA!)?gR^wu z5}Ur;KERY3@z zvf-$__xU&iHZXDx8Yedp$O{EYlVBq4Bq1_SU{2%>lVh`k!-gUqWj>37$Caj;0 z>-?++`lXGwaKfBztRC&Taga~ewsVS^*7+;olBtPI)>$xV#jGw0nGA(0O>BC*G7xb) z8mDK?<`A4IJy6V%_<>+Lfi`WUy08Utcc~HcDxB?k*>t-(^ADO)$ z;3H~!8qt&@2U0V@JE1T_a4(y9{D6#;r z4o;9euvH)L2|cN|cR2$UnX0UYimCLvdnNS~ocz4fc;(Xu?AU_r5Mv=&bmSXSsCDVI z3RaOli0eAJ3tCzt8WdW}>oTMwHuto`kXD;d8niAJ<~b$V^`NrcE5et{r0EDryI}dW zwAP9AUf`6+(qG(=CK4sf121I8L=(5L55CVQPld|nmBcbMn;=adVa2GLr)p0o)R=l| z|AKdAO5cls!bC&V=rcT}z2++c1@Fp{F2c~W*eQ-$PN|H-5Uv3ga7bq{gi4Z8OSP{L zBYc`Pbj@piS=?7pdbLgE#1_yt;_22$!9c5GT@EGw+gXHwk;Wr3umT;Ul=%1J>F>mUVe69Q$-`+OblLg1G zJcZ?%PJ}(W(4X<^fB7W8bdHnSc=%Tjq5njw+xZ)a!i%1w~bp`?XzFH&SCzo>#njgZYQkd zywq+pr}`Ztixw@j!I}VEK%>9?t-Jal%i7LLqWdv4r(m#{v~!pU8aJ$kiK?|3)2CW9 z6N!sGfq6da*`hU_o$C$$0Js)gMcoXW{gF#7hqE3%SO)J$e5-LDl{_4?7;8~=-DeCy z=99EQ2bg{33(N&qO(=SbAq?=*ulho`9cV=e3H^f?L1EGmty5m^m(fZ3)+8my&a>hH zD=Dx4txGBuY6XdTEC2vN07*naRG7*nR@rL~Qp#pgs3xce)}glU#JQB&Ufi$-T{nZX zA7t+mvI{A+4&2El1rhF?5rf!Uk^+c6iNpUCV3Rz&e8K|$hT14Wu@GkEP}_kRE~ud{bZDjMp9uJ@^-%aL{JGIM68p=YDQuV zjYYMThu1IsXp>rmMw1jiR7>1nDqgDY3Q#(oV@V>)_71Oc8p_BxNtN*se2AMXxjX-L zD!;O-%5D90F){c>NNP7NRXtRg;(M6^R7^Y|Jz~CI1`rWFOp|r4kXlGfo890Wc}r12 z@E7qFEJ9z9zv7Xf`dh0Zi5!>*!e3HO#77Z75hF?kz8W}?Do>lkL`JK552wD>4-j^F zyp8iFg@)}ihQb3;2lA_jx5uhTxti#9l;4BI+{dU0eonRvYYvV^WxRa zZcS9cOsnTSL@lMPoVB`BeWNy_ZrYTS1qGEa!+}aGy!N&T4+BDy4|u0Ga}cqJ)rXiE zl}$IGJ;V!tVG1XBk(#!L0^V)jEQZS62sM{i<_4Y9FtEF8qJ7QJ}*^iPs^tv_c z5eLrUuAeSj)h5vsN*V$la8e&>?3bWau>%}|JataD?AEB25Y4!9a-swb zBo1?AP&?G|IIjWz65kB6^bpbYa+ODP@=LwPH~CRFWy6osi4f~gd3wH{M)8HNfeXxG z0OY~h$_-N29;qj)5fDWn?f&5>lq1jv#FDS-&7hP)E;bR9-jp}(7by*8s5B9~6tXIN zuOm=Zwj@{g5W@$Sawb>eNJtdxu7c%gTX=v+DnWnl<8@I`W?zdj`EOi=U#MuPLx5gr zkIZI+#!TR9FX8m7YNQ4!t&`MHJ+Fpx@K1k{P)AGzXJ<$y21;$oB@f-`r#s~x*5nc< zLtsH+THUEU5evaJ$uTrjOR!Kv@*Clo)P*!69^EiT!bib9h!>N1^1%7Tq1x~reB4_t zOl7DLwN()A5l+(Q-fp!@eM%h%C_@vD@(8~f8R+%@S10_Xj-n?T8>&3Y581ukS`L_`B5mB*Xs^9E50&3G`UB-|R^n4 zwRO9%W(2EAh#0Fmht|M#4r?%wn$PNH!yAuTZtX;F-kd-?bRbjbpS&k{Ca(b4`!dr% zggX44M2fchKlN(}Oy?5b!mqHFH~k0KG{)6|f}g*VI5n0%8~J(^4_B=JdJja1CmWvDhS|R`e_0+uzPuk*$?NxC4B^U4@s!T< zRg_)2%uv;hoTxmja|VD~A%Lsi=^>!i2>tEA)r25|osbU2CXMn;p0wNjsE2dmo|k;c zQE7>(-ceX+LrCY}dR3U>$faJwXDBDUd#9=lkzF!Y&2wM{LmBCWzR8v(m#g57x>-n`F=BXQ^urwBMzTb<*ds?UGzhUO6mke5T=VsBKW+AkOSBE0YN*XtKB zCL0`+3T={oXKlTSqns2e!9;NqZ(-@AUsv|h2mwUeKSnCGrwRYC*AGYG!{SRqHvGeS~{ z&_a|D$KOfn#95V5HZczGo~Z^D2;l7zA}FcC6y4(}-g|SgW+5SM@am*95!Ae2$WACH z4kLc22#^};E~!M)>co==r4Xc8$}jXlQihN*RKnv#qzi3J=b*P3mgyUl`d$z)k2RNn ztc_j-Po02{;;)#8;1%P>=Q{y$r@<35dY5M^T^vNJ90dwZJS_Qs=WG;7X-Eh#-TZ{U znG}6BqWsiYU$R1=JuYw%f8aQy)FF@XREra**BGQ%&npI|pBX906L==+Vsf9TljzFM zt?4EV%KyjSd%)>cRDaxOd&_3C>5Wt%5CV}7QiCE0Qba(d2uf3$AYw(NDgH$TMNm*c zst5>DMSAaql7v8d@7djCTejx?{?6Qap1aTPhGKa?@8|PQvd_JD=FFKh?VOo2XJ!IS zg2B^D>WenzZGy`1`cU(B91*L&l6VR3|LB7@s13vtz{-!yUj{*aTGv{?`q@_A!eNG} zR5g>xXVJfiHO-=uVVrs}mX$SBT&3*I=rfwrby;U)<}qO#4q;_xQo{_RwtlVEV}9FG z!p6RWR+zu`e^4{xm{h*%zm5%xo!p+;SOV0&WC2oza#mNIkE{pd{#-?8;$_h*mWsBoB~&pcIXk&nhQ zP0C#U{0r@rnvF&81s!U`UmXSC?iK1pujzX48aW^eLWOsas+2?t-vPzHufoa@m;0g? zg>y1IaeXBj^~3`OVs0YRg-oChC`Ay_Q>bhVM9j=OE8XPDO zW$F|KdcC77F&6-dIz!}o&GGaK7py$PBhVV+E2Q7T-ey6r5*DNc=s-Ov8Jm9)Cjm%KV4HN0>l&M3#x=FAC!y?}4@e zl>~({R!W&j36_Z3pCNw4-{TXwOt~peFD|GVLt+#sl!X%2Oe{l8@+K&a)C0OKff2o) zSzkVqujnTxsz4oA)-R0j!?y+_KEs7!$AO8f zwh(w>hMizf;Sst`Qx$M;`Zr=ARSk;3FaA-)xoP>B*p?tDs+#6n<%Y$~P7oa2+*et~ zl>mj99kX#1g%m1dsfO4S)7pod7MCJ4nlPbnWPP*1jc2&?m#ejzapYIqjD=WN(On9P z##0xo5g2Q+#zbIYB+$HZAp5e|cY`HmI|rTWNF;3QY%s?L`5=Ld)Ha|(EFC_Ys~hHW zeq1%C@?%&NS?a385`;z{ZkzP=DyC90mMCMLv4F!AqsB5+0eM!%>c3ulC?IF_vHc{S zA(VIE5zb@rNXHd_@HU)y#xTd_ANmoNfJslmdmrFM$^1uVAU)*Ay_{&hIUVX~n(PL0 z8~`5?;ZtA@ACinm2>FMGE(H3E&Li=mjD=qh<9Csfjar7ai!m3 zBoO32A|yn}b^!NF;JsIbatjQQ^b{9=SDm<~PUV&0NvG*}RfZwI0Vw&!Pr;(m>pIiE zxOXkJr^=L1{Xw2`8%iXUigF}VSnsGY7Wqo!mEl4Ul;ani%0Hc+ zzS8ltlqlrmxk$PfzemktbM;hG88N*8FBYs(e<)L@P3u7lRI>&}rkHt`cT#f!29MC^ zKR&IZF3it(q2M*lE5u-+xTD_saMg7YGmnyvCaY>*WMwRNcVKCi&%NXW`oXAIaUBGj zruG6EL9i%}9xh+&Lu@o{$Lgu6y%ZG|mWHfg>&n>mY(Uh>1s!czRk422zmy&4w8H`Y zI9IH^#`r)!rP(LB}UZ8qST;QnEYRH9t zkQq3t@Vzp~C(p=_-OGOzM}nAnuB%A(opuRU?>wPpXVM@=`MB{wI*Pxi2<#R{q@IIC zZPtlc+2yP7w7}^r{zUB3ef(Sa0)tjTd5=stGVnO#Q-&3uxYVmtB)sxV+B{#l>`(G4 zh^}-BEI1ViPU-oZ@FlSLDS1x=#vezOt_DyP#UtU6wqhkX+(Qv_()Dlod2%6tAR!sg zqe>*a1{lTnG(1M~lY$qeUjKpHI1a(bKVb=^uwb2y9srW>+=o(h(U?kD^trI-8S!+D zCuSKUsLs3`JyX0X4v|!5iYu@H$$P?lg)7q)0MNS|V&E@}tAN{M3pC@rV>oe1+A+k_ zP7>r@<>XFa$!i47`12C!N{3~^lQ%NsZ%M~f95FPdp+AMmd^dApl=}yaUbaahf^#Mi zX-X$fV2(L{L=c{yUQbzZ${ce7m^?yiA%^ONKl0)0QKXwrTB_r;htDz+FVCaiJ%ZYl zUZ^iG6VlKp4{2~UYl+kZA`~&w+%+U2vfD#Y0Sf{{1I+8i!Gd@+&p)iwf$9IksuMxQ5lA4IIBcxiZ$9FjS@{s`^h zBl!%>`JZEU6d8dN!Qr~P2uHZGF8l5&(NHvE2bHH1K!M@E z@QZLg!VgaY@E6NgLBbfG`b|qCAxQvugb#m7{U~-<7xG0!<&U5&{s8AOph0k=Lom{5 zt6_>(QQ%Z~d4>4#R~VE9kK`Zv!6~`$<9LH-;+KSH3F%IAgx52oPd{V0XcdwEjGjCN z>+lI33Xf2sJQOXgy9rVwIKhV>z2v$OEVIejq`E3^T4jCP7gMe*P?MYt71{~cz}5G+pxPQ&wcci~ZL=D7)T$TjFWfk)IgN0^ zgCJTPM}rzVxs((Sv9^YCTh7S4B&>sBDMuI zk;Vqj(<&$#XhqD7bc>|gw|4gT=R^$c!CAsSla1_3&&T>x`^a>RT_rOY(L8s?Yqrg1 z+n_?LK;6bv#H&eV&7bN>+4qNjR1b-Vo;i+OWJ=iUmv9MnIgh52;KlK|w{V8=kdh$7 zTjtw=DQNQ4s~K-hOwn^)WMnZDF}cV_6|PNo&ph#%UHPY*Z5NIy?xfHZ9+wF8?k1jU z2qKWDt1RL(6V6nVghaeoJTIUpRR2O&!7*Mw(c30!G=K?XbOq9o4k>A%H z8eQ(Y;)Oqjbsd;}w>;uf;q5I8<{oe zE^%$#6vWF7Udgk&H5#_K5sbn!k!ONsl0$kSNl3&^S()bopGxMnSr2cYSX4& z@>^Qgk3QbS=3heE!{vBotXZ^otaWu|VM!m3L|JdIPhY?+r4O?VuJ}cWs7xx^d$XQX zICKg@zkVDbOZ(Br&q8gcRy#lt>BNK8vtF|L?RT+$!*=2NUFT%bMm_j{)tO49cNeRz zJ4A>V+qJ^wqqeDrn(7W7RppWHBZ5`x9*Gyx)ax3E7p9{jQZDAiUxWs1iAO*W;=n*Z zckm%L54YDghXrA)RWGQ*i!ioOSAfg|!#5a1$ON83g zGgBtQ-3y=#kBk5jg`xxCP*~k#L616JAS;$i5+{My=*Tz^DwDp8F*SqUUC6s9?6m4T z&_Nup{E&kz&Yp2aieji@<@&|2^fO>j`{caG^2n_Z(Fy2>(UpU(%cttt{}Nxvm()oY zKt5t#BE9;~eUE+-RyZ6c=0P4gE{4aaDp*@p{Qs4U}MJ_5i8Dr&b52zB~>vk>av16H8|bMxc6L-M>wBuiQ{OE8;&32TQp4#A9fUXj`!s)&p*3!7jR?mCR`VOAJn2d>HYr*@igIj98V;XYW!j5pm;dt#9G^Frs zX!oxW|HFQh4n)3Ud1PZ`sZtsFf|N4s*~!Ms!sooP6J6tsjEgmyc!b8B3H?Yf%5Pj3 z6B(NMIod3#PG3$^U2rGlck%n!AF75}_>M4O=nc2%Nr%NK5k)5bZXTHsf9Vpek2IqA zp7QP*`@_E+KR@x=B}Oj(_?@OBiQqvoybF^5+{Z^rBexwWj^`~yCq5ZElZ@+|Klm&o za52GjfBg697ejQ$$ms`tHFD>~0Ualk&v7Be+%Qp3Kq$Fdj}sCEUtGwgbZk4B`p#V2Zrm2Ave+xKn$w&Ia#VXWC-`!mLnn!r zRZ1XQ#Fn48@_yU6aCY?ouo-3#T<`oi(Cqoi zsRmV9PyRVznNQVdRxo9}!wconWd@SV7;_2C4Ug!=Af*1#G+$gQ!i9nlb|#YTEOn&lB5~DKIX6R zf4J+K3zY|PLgL*btAZ31%!mIS+Pb2Sbs*pLdm3t^D$UDGKrwIe86dlUrDK1z_uL#s zTH;e}Olb%%KEqe<_+vfxQluebZlKcf%w%(ved|4~O@`z)uoQ62i}D%ss)~;FEl|(< zCUB(C{Tr`JpAj~HxkZwTG}eUb!fED3^rmYj#F1Zg#G>nIup)ERm{-p~KYD&rCzW5m zM&|41S@m1b*+7mIsbc}WV8aS4X<(zE_U~~xYdeRYR+12_57yL&%dUoSF%u{7cCtv_ zv9X0~rMb{+O_MdQMDWzKaiu}Kt!b%1fS?j%qhLMf+v&E*VrCTu$@y%aDcFu{Q#AU* z=_W?qyWu-2Nv#cQt#&_itb|#_iwe`5IZ#kkx%!C0W9@P%v{prbgZWas)QuNd_|~kV+^wn*`-}WwGil{-sdlyoO{miRFa;mp-96ltIt<12xK++@@$F%!eOo@f2e9 z_M7RiLqyBHpF$5WL7-Z51j0Vue(Q73hVF+R>K!$H& zZh_$b&{ECyu+8`0Xq9{JYDM*pwqfZCZd8=?VBLd#AB7xs-wreHWbwLVNMH7BjB^V( z9X6>uCmU)TtbWmQTRwleZK&Fbv+p?1i(^96lR7wyteyQEwQJW|O(SP#X+44&KpfaO zO-w&r%?wRCDO>73X&H1Do{WV=zpJhh8agV)4;N*&(~8=eq-`W8F1NPoG;#!o&Nt(b zRX^gLtV-}|;OuH@-t?_y{UR3N=P!QJiY9JrWka_0nU4+@P4|t^j}$+++RMJpUq=V9Ot&{{A~*;=dW;qqZ_7 z^HFGwy-iJ0qgQ?R=A@a>xI}zHE{;)PyWWShLsGTzWPrqoTQeJLUS{_0W9;piW*b%w zutKhuoxR{;4uwW-M6lRbK8GR}6eBoTKrb3OfDyko3PP85`m>O}f$J7Ju$CG)aZ9Vi zl1h3Dq1JT?h4@!+e0wn$oh@Isl542hF9K4(Pe|m5YFB4*aam3#gNZgK8Eh)lETW?W z!(mi;d6)$kpmrcM$jR-zW$ykhU zw5D~dtehJYCGGOKP)^5-W(NZzQ1mG`NxA0C9z4K*BJsfY;3Oa<3tWrTLwIjqsToKX zB)0)YX%!(noDY$dmP{Eq0%U0-h_pZnF$h#4@h@g6;tfv~M$(A9n$w}e845u0ySm)( zuAx1C#V9=!(qk0&jPVkPke3t^WzqBB{n-_%@<~}F_+p%{Fdy$rROFD?D*|=kYy(Ww zkAKoAdyV}62YliZQ2*)8rQ3irS}L=5XsU_8+;N5A({X$aO@5g^8RGRugZ!Q8Yn8bd z=d=-~baYxou%OHW>st;5O@_X7yG+NAu{59&XAmRP`BRn5E~@8EvyxXIvZ_Lk&YwNs zN_O7chV6Npt-r9|VeM*Q`t!E({6_pNP)byzYp)-8g2wT2bqGJH?14@3Hw*qYCfJ zM{JLw?IkdZl?oH??%(MJ13@G%APNzpUl1xG-As52KH69bP9}76!CWz6ub$(O5oi9i zpqQ=D3s@_`PiB_HBvV1EIwJkV7Uv#hQr}((2^QjcOchQjX727dB&iwPoTu8y`x5fD*EL%MRJrO(;Uo1MV@j={ zJjDi*0`am6^^nd_8X~+4S13d9IB5}kci3DXVRq_#R-<^7a*Q6cnHx#p4!>!-xwtj7$jo5o%D;&GM)m3i6VmkMWFQ00i%Rk_1%Vq5U z;3h!U7fMl6HNv1*Vii@xWpAuRSU=(noV2TzOe_rU{m&1-u}Gm_TAH zIpGO!p|AqSOc);eO%HX*M3^WONk(|fI$;fI`0?sqfFU%*)_W+_n7^)}fvVsaDGFa1 zcnZ*Yk?8Hxdo}tHY)mOWBesO%+-L-A=W{k*Kmw&PDbdJ|2~87| z0Oxwevh0d07b+VX%UHdlCl^XXZ6!-b@7TZ~I3jgGi0)%AWl&Wx?`>;%_gO1rmw0E# zI)n=9n}u_%eaV*AK4eF0;)cZaB^9=E6#FeI$6Eg-)2z8+nXO_*&?mpl`c#j%4f)(f zJ{VKuext0x+x}b8mX}5F5f>^X)^nV`js#^3bWe*1ox+y;Bj# z8xul8-AmRDjyc2NQb-d_N;~?7XNZ?!xJeK4DPTy2m}1nVNCc%LJ)<_w2H_Ox3@j&$ zU1cUes3lR|kSFH_l@V$|9C-kE({bG|6qF))Xn@Q9s^Aq%4Yo&sEU3SAO978q7CE3@ zKGlf4BWxm(j8N->FwiGK9tg|^#zxaad+U;R`Xe;>v=3N?QW?`dC50yW$in8n#XP4Qe+DM0n{1e4rX7T5ripq4(bbbn;v_*m=PSlbaHIrl2oZxI ztV_mXoUTumklJ~evFk(e#29e+XKOEbeX`$JVO?X#cJNWsNW-Mx1IFkR%1-&#Vlo;c z8(2HvI$!>$6?4ATMxB>Im>*Blu-Xde&f*5Yh1TA0nAMe5T5~}a>kO4v$hVFh(FnhZ zPT#@CJpGg9R2~9lt<*=%MEW3j^73j(OGQne_r;AoTeohVH8x6+psHda9jVndfY&iF_gNv*V9@5|H*45eihDNSw=WZDGhx8pX z&IXU#%K8l*%{9{_th8Ep()VRoKLVvi2Q(5lGzd_LH-RV?TMl(S1<6mYYZR4t^wE1) zr>!$SlS$IeZOiFz*~fNqNuNplB65l)NzZ+vx1jJ3EHe^Bx$~--M|7TPxSHQGrw9ZU zGDVe5by#!)2aG!0aU2*~$Y7W-QJ8KWOk=bLs&P2B!x#zlnR7s zf{^0E4-Wm2X1JgTq_VDnrPDl_!jcwvg(IKN=!GP8LdFp}aoWo)z_{yHIn`pE;!6K1 zr_qf!Cf=1#9ao@lnf<9ZxD7cGw3`=X_yyXO(O{PjJy8`Xgoz6?vp}D`f~qf}n{VYs zx>;9qh_Ec#0tcQlWQ3(DJmx3v2QXz5;)#^tD}sQ>EJS(hVAQ2D2?!M+h9%R`khb95 z$y=|$2FnsW(vC1^)OhF922}2T{c0LUL{l!Fo~Ico3cpU4L;LlfB8Bo)zI6nJ>REsM zCVxtwBNt#Mda9iSfGo}e)E7<%dj?_}dWqIJQZ*<}rsD|66VYA(>Y29dNhZGv(*b#* zJyAY@XAx@$(vx~j~TLkI-NsCha@RI`jkoZdQLqGyD0sc2#4t~)@*;R0L zZo$kqtoYq~tg5J*{?2SbvUtry|0BhW1d8?q_GfQ~t_E)7u9a9ZeYhdBkfTP5i|g3Wv5qTVP%V_H$D0QH7O86yTLWPE0-pC&WQ2iV`K;)hSxg*-{|DOGZ<- z)>PNvn`_FkfPhkjj>0H>F#!n*Mgh)*k>=W9)6RKX?Oa1iwOSeaO?6uBCT(L2Y(rDM zRdAqL0fp^xz@^*X*5UuoORw4K9zZ3OCwrabfZOT^eoJ&&@`J; zn5NhoA+_r2P0|wc(f#d^hU?^7;Bdx{%tquT{vz{r*_`X1f~ikGZCh=(EjwKY!Q{AJ zlf^|H_t4zQA|G)Sshu;1B(!xSTiv=w?kwO)21W*&va2it^JYBf$1q?qf~AXGQ6D;{ zXrg|K(C7L|#ws%jXK3qa2A1+h70hniIX3%)S+?7h&-&;x%oeFb)D@}+9mH9{LSzT| z7XuJZ4H&pk&S|ViSnI~V0@`2+G!=6tsdoFSOjPy~;c{ZwjkE>%lylRZMv7YaRR*Q| zUbbwJ&7U{VcHeU^FJqONM)n)pn%KL>Nva%4LE|C5Zlnuspine*ppMX90qAKZPrB+@ zZMBo*y<3`U{rcPXLKqX}%8mrulTKYl4HJskY1_zYv5Md67lX)4G>ZcLeYkVx2B-_| z9>Il=ip=2SJN)kg-95GLK3yXG7e3TZi#Y+ec*A0Ae*0Og#)66JpoBcclwxSCZ!yrIB-yZTd|B; z1m}!|FmT%oJM9>N@-C8Rys+ zrtF0tl0__vD(L<jc~gSOrO7b>^XM8K~q?$8^U7WI%`2d;gs`ZRvv9w&494l=EA*U>3WD7tXf@AJFN!UbLv3PS2eROWu3iF1`FW zcJx<|pn=bwev zyKJ-ZBhh{LcUHZwX0=^+`44TIPwmW3Vi+5iK=msYT4y6S-0|0{x~Bbftgo}?dTyqp zPKyfq(1F!q`4cDo7|w-=;1$*5WqhDpKIAmrITI)cO@2bWv`_CeL|8rJdpf4xqknwn zhWGR>UV(V9vRTht;Um`~8mcIYFk=@r>Vq9HatYi#+Gw8v2=?+dw3)XU1io#>ZCGhF zF0s-^`T_TUESmX_&3@-yTQz5zz3|v0_U6Ctw}sC=Vhu}btg=KWWR!8}p@b9K0q6Me z9@>NMuPnk%gRbwr{Oqv$~er($%zO? zILWo)-;r0vdIuLqwd)>{QrmI2-K1&`6cqpb|s~FF03Y@zkBm zAH4MjOyL7)R1@HMWjg1|_usIa|9Fj!#_X<;3ecEcCwvNKtMOa1jsH_j^$P91Y46%O z=Uiad{qb@}`At@{Y#GeE!4|T)sFeBWs%1;9;i*UYKEdkOF!JC=v5{lOSXDKPRxp;y z6IqNRlgg(WMk@o}JNGoZ{pqR3_y+5UPJ8{$H|@E*Z?OIq6n@wfGp2`JRrcaT z4_JF0r;PTgaBGr^A!F_Iv(93{PWKs@UG|4R+o$fo-_F1ABEO{Op}X&}ksMmN<8~8m z#q4QTJBDd-`=_V~Oa(Pd5`$*Oqaz!3+kUhQA|?nn>w}s0qocoPJM1ymhWD+shwl4> zedAjf+T>k#Wz^2KpO_Rbee4PQ#~nA>R@>~xuHIJLX8Rp%*ofh1u}~8*3;M?AceFn~ z_^NHr9nmYM&$H!A7Te+_%dM2SlXuw8mM&gu_uO;^RGZ!P+#)L(7#eH=qr+V%Zw)QM zmQ2SwsGi<_?N#4BT!%Hwu~QDTt#%k=1N-&04eRUuzUsGUF19U4ZE2U@db{Om@lh%` zI@}Y_JYzrq?G1MGpRclh11hb7_?o?_0+ut|$;a|#88eAe`> zkOx#RnqjD)y#DG``x*liPVlz*OBdUTpV`i~-+2nNs}}C2XM9OU3uzNCy!wp&@VB?x zL5Cb?&5TBsk5A&fqpM-asSmo~&^v$PxQP(a$gwx)puGjA{Dt9@QJF%LdW{sR+{zjB z*=x^PY5gkO2m{Y!FsYecsNY@BWV`oC}a zjbp8J)e;-jwi!&j*vdC7v7NT19rdY3C=9YWTsgZQMqb2PgR~mqxFz}t%uMuXP*y>I zZYXcE4b0lTZK&T;M?(e=v(clPZSMSKXb2d*phc*vVwM9?*ia}8F;@sBuM1|>bnZN6 znq}~zQU;aMn6!J{bS+J<%S`-iK}C#NpPt|1>>wQ);xbUrsX6(3>dw0rL%cG~L=+|w zCib4qPuF)pQ7lVXg1&2hh!H$u<5OVf|(=l<#swqR{N>XJGlbKn^a?)sm7&o2ALwKi&-ovEx1HgVhS?8+;C zYWMy1ueQrRd)e?IgRH);&ThW`8qT+AL#N$omBXs+mOozygRZpswT<@6%Pz6%!HoQ% zsS#@mls_~qW;f{7S0iwqxchlK|EHH&o{m#yvN&tnJ7h7>-hA#EvejvWi#qJ7hta=s z)nw)76K(UYm_pp zYY#p0ylwZHDOR&)jlIXn{O;fX+>Srv2iCv1%;vr`6~S0;J>WJYw&Z?3iL?zolNDllWm+7GU{#zryQl4VRW=8%i#F0|iWa4Ag&+k0Ya zM$iw{!!NJA+V20`U+r}SP&s!p{PL{xZTPN}Q7h(K?J5Ksb^PShFEVQ^vUjGfuv0HS z!@l9=%E8`ul*0QeAI~5 z3{om9`!WkGK`n>g9d(5^r>TDoq28p<5-*nuw{-B9cHvdma2Eusz_6r(y0E~m{@u?V zo-Sb)E?YVyH9Xf(9TN-BG^YyG4_*z$hhFg6jdRGrb=Ci4f^h zXnao)eWHhOh?Zhr3g*wW&Z&=BVd+TfcLM`a^%(-llWPK?OKR#O>VCu0W!9g8Qq9aY zwvM~Vm%sb2wf18%dY8#;EX=p6k&|s`^=SHiUmG)InN5FXs?C`9x^=FYX9YtiS<%=p zm{n+F9_nhPLWX>Ol(gEUvJ^cC5_RFI)zAfDRaKR?#a1Kj(WhUACbeM%7yZilT~hWc z25>Tue^|kvNr$=!q#u;Sz!w1bHLMzz0wdjESZ2XOZg7n`7`w;``2X3PUsr69Ypp z+%@ZJ?W^DVrtN+3!RRGn#N15(?1PWn);sQKL&uJ#g3xWl(6m#t6`@myDu+HsqeA_I zjrHF9ea0s5yaQ^RCww$JXy6dL?3cfC{rl4Si|nw&jxtE@{ zHJq~fl`0c(1F_V<6tsJFvjdFBaQw(0}B@S>kH zy4`5=XU(vQTW@9C?6jM0!)$H9&=Jn8w7n|Sw~KmlHq?N{*1s?6y@ocs{g&(PE{cQdR)9v*0zH4h%t+de*)=v;M=YZQK@HxmC<&*u$4FQz*ccvyhQz3F}PdRqGHWNgJfGsXQCWXEAm9rDMNF z`RI83Hk&eSKkvjPw5>b-a-$7p9p`gj{t8D{aP=v7SQnO6p|YS_h@THvS6LQQt`gqo zAGMbaobV}*$!KH%bgNx^=M$`jl-t(KzP8(T2fzP;yX1IwSZfpIpxGU`7M}VJei_DrPZ({&E}RZQ#`t;5#gN%9QDyKmA!7IdXIK&R80- zc>Me`kJ?42A7c-{v(R^5%3{I^B>t#zqq#1!*i~9O;d4Eg&(C`AU3=l#r|f~h|I_x} zdwVwkTDfu+_0q=3auv7RueVx`Qf{LIx5JF92M+LSDLb)dkVTbF+>{m0?6=>so38q~ z-GcD?Cu=a$@h^h$zlLt~M~rg6bkaAhu4b*B`QC|k#@Ro#k(0MYn6bFb6t#j?-^U+* z$XJ7O%6_T6(2j$tUY6-(#ay*K~fPCEHi8>GCzsAkWe zg#amHWIGIf{@?BSC!eqjetIz@nR5I72^ZM+ufN<5I^t-|+gt3_S6;Q9KE1cEw=|RY zP8Qf(vAU9Bftv(Ci;v>qcrB>S-kLVUhQQoj`sWMwo4@~sIw@v7WVQYI+CSRKr<~+F zb5}8wx$`#{*w7K9?a;3t=hX$v^^H&Y2X1Ki^=Y`MBkd3x@i#_Oj3Z2f!TAt%I(GV>L9(Q@yJR7@skVN5w;8Su=D5>9}4RSWcA9va!}GX{G= z>PNGutV_KoaT0a|NMJn)wU!=+NnhUM}2DsKXTMSn>=}}J^To3FU9Sw zB{rf7sD@T3_ja8w3}R|fp#f7T0~b#2RSxwRjZFNV6uLM-LTiw(e}qQim6ihwM94$H z;AQV{;XCu2pvipm;+PUxy{kqOUk6i}boB$u6JQ47t=+-Gj~ai1E90w-=QdiwdB+3F z6OacnRk_iGH(zFHjM~SK9>>VIz~;O;9d*V=`|TCKv*S-a*Ba~A*orrn_}YgS5_NUt z@PYkM4;7)OMqL5Jxb-i8w!h!^Py6jJF0|ct+ud%w{*TbU(VqF&<979rFENG{W`p|K zaX-9(bDE#EBhS6azIopHbZi~T3`L}eO@!y=g%_UT*gT7w`wKepc3ZfTyABwQtU;eYbm&kP$p_o6yYJx( z@FyR0jQ#FU*Rrl~tMwf|&^eVXLv-vx2STqvqaqlTkE$pFQm2Lx>S_>Tyn2Vxp8NeD z*i{!_Y!fDK#(e|;YCx6061w^JH%9E!pZ>f3y-$J7Ub@o83>#|S{^>95s`E~5*a$q9e2)El_HJ(ujr3^}oN;Duyufq~f$zHE7^qyX?B#oXIX( zw%o3{=zKfp(kpGh-FLIY58$Y4*3M*JthOVghsAr&u;cfgXg5ASm9iRQzy8_JY}x$T zHh@v*3s2nVb@$Z2o@Nv%i?ez=`{!5NxCxt6C6Z>coT05ikLp&|T7}GhD_FOt|syoK@)%~f7Ky1?Xm4C=)bL^+*08n}3bZV8ct9@6gaCm=PZ zz+PhFkuSvWkNQ-(b;x{M4HZWTI(y2J&KpT;Fx18|>chuxgQ|M4t;3LJIRnY1sI)rT zIFq-QSpfrrCJZksC+=h$2M@H`8Si1i1yA6NDr3e{RXLpXt?5=e=zS|;N4w9b5%_+D zyQ+hK5*#wemdUTI5|y}Uaem0iWXr8a+oO-YqweKrXvuiP&9~K_GERM8u^`;blpXJ^ z+iBe|TPaBn6CRq0+S^O$z`ce3`~Jco8zI<4w)lFee;1>agZolL?vf0I53e-6s_}@W@rB3J2s%C z+?LH=Z0nXzx1D$X9J?_&h>Rlzet6X%ShOy-&_qJ=Tk_b#!ajAGtpUEx{pKe!Nc_r&AGi>Gjd6tg=@m8m)w@L<*q`TjowSn7T zxYzEv=Po;RmrvXF%vfg4nC8qf5Bixl0gcJ3tc);GK42n?@i5jFjZ=7O_-ys)M10F zFwvwft&=JWU9w;+u;V}O)YGk!9lkA$a%X} zqtc=(LtB9cISDh3giFiV4NbY%qRzbgj$3RbYZ!S9X!bu~icR_4LDV7R71l)d+3#~U z<$yzNJtI`DgD6wNuC5@bG-XJ#g0^tqUvGxN=ny@GIu#&h^WZ}d*{Nrq>t)~(_)*-1 zoapr*eufnO{WOF}e+kD=s0@8C1Yzl2M@7o))7is z5MS5aVzqVaZ2ihLR=aSX<#7*rK^_)uXdf!884zJ%r3LFwsXn=cszn1BI$;UCsgwK7 zTUKk`kpTgFGmtJJP5OlMKGK&#g$_P!X6-iQRhfjJ&_4%bc(KL!p_qWL<_?ceW+C-% z1}t@!+EChQtxtQz!b}AIkz&ver(*m_E&==x3lY^*tha!g8b~z|X$!=`+)EXcgkgmh zp$LqxNk$ybJwt%Lql<~@+pP=;3*9CFsS$_)l%wPQ?VoN#r`~Cet5?~Xi%zs3Tz08V zVn0MHs+>NI^d9)zowjn`eEa%Y=TMQlwvq})5Qt$enDss;o2#i(%vqT__Je`F@XRxI zGy3>G=uF2=nq&*+_Bl{;NqIw#Js>L>HD-nc1zD5mVek&F)uxDR=*)F-5 zMOdc6+wHN3J^Hu1?DUI&VaI>_EL37E?Ymz&)xLAdr8XKf(lw3fVHph{aNwcV4=bK0 z9{Z=yZghO~mgC3TiD#aQN#9}?&R?@jes-;0`2Dl2wW`s!-eG6^!h{J}>_|Nk%0#62 z{sPRF>pAA28s>cBx6ff=Ip0<-oN3?s><)I~cYkQ*mE21}b@j#Eb;aUEcEj(kvAf@# z?IyaiRBFTWsjRfbK6l7rlrcM6`5V3Y1bgd^*U{HMXgB};DSP(G$L){T-(|nL`e&#O zi)_Hap)gv};bM%ZN``+_RHtSs=$qSE^V#nUU$QZ*KUC9cUVonbBHM3o_uP1$ef5MB z?W*7W+D_oP^`z}=Eo(S^xNU8-{XT<*RJFbH!8^DImZ>J?OagKwxY`iz{b34ceg8sx`_&hm`7fM1*G~JwDVS-lv+cGU zZEF_IXTQc0`~HbvWVAof-hXW=h1p?OJ@hyG6tj<3)`euibl@R}qLyOzg`#>eY1Xb? zh52NwHKVX1Dc=W_$6|N?0W5&C-W2<}t1KuF%|@gqn}+4!3r|00PuzPSyPmhQohI+Y zI!ira8|=nEUXPlLi+(T$;L-`wLlvf3DQhs^*uW$90UL558JDX|ICevOdp1hYK#TUE zl%bZ?hSzj|BIgfqCrtGvnxpF~7|2hE6@xR+-tyHoeg>S9OB`uQ zXlN`YSk2Z3u=d%PJs3q8lQg6Dn>A~et*u#SLq=?dFlJLB*T;4imotN*9vCNR9W;-1 zwJMOJIcGMG8kc7){jr#}*lKuE?dmrzZ^RxNdBWgjZIxZeP`?txFJT}le^sVN;!YQJ zr~$@=38QT;0z@|;%7CVs{ZJAfil?>|SZ=3>`6gCyv}zDTPJIJxIZ(y(FCQ8;wgA4prDDVK6Uoq z%y*c1yah8wmCy$j4`y_~`NOZkTxQq&>P`Fn(I*qer~~!D?B$Cwd2O^Yn_qxhEL$Jm z08txhs(aHfuCNj|fIa-Tf7o9heE{ZoH;0%Fw6|wHW$#U$#u~^PrpS#pd(JG({5oyG zfGw@8x}Q~4(!e&hS%Ws%u^&MCe;qBoW=)M9vFl+7oOA8Idv9lh(K0*nh|ky`?t8|n zF+1JJh_i@t4dtj8{?o7u=@4}_HFo2#F1ORadpm|J2=f@pboj8MqLE9L93~U5a&5X`fOyhLy8HtATwb!|c|l@1Sm4Q8V6dFOk0; z_t@LkFtgfeul?-uUme2vMV+iYjH13^)-14>mFC&A4?kcpzxs-ucj0CBGG@2G{P8#K z^ItvL7yDc2+~o+3NA9@MzVwYV?Tib5t%)9^LE0)zMWfwfnEczXy<$H)_H5hjfNkt6 zC!c9&pZk4Gh}R)hX4rm*e2MEy``DQ$|A^hN%s!{=O1oIk#z;SL~!Ae69CW>Zdf6rP(bm;M+nGW1#Ts%TYk_45-)8D)#iC`l8WY|&2B-tDjw@l^ zGoPc*J1~ThYBnFCp@9M88LTI{`c|1@{j0N8FEDe|M>1;3XW&`Vwglm${b{J%T}?&Z zhy?!HnC0qS$HU9Gq6Gt;b&V~)CfM0IfIivIzN2bSOGf||u}-Slhx&Lv{VL36Ap*7B z1}?tZ$PA~9{b5U%u3>*w3j#>j?nHd?qdoO@sBhgPbZlUbF@7W<+UtwlMzL) zJJAEf3+Q8lSwH2LQgWx!Q}W6~9i~eogkbHmY@t$zFe|7YIMTj<{ts;bz4x;1ciPz= z{>R_#xU&zoEwGS~I-`KX)=0UDyMdcQbl6EJ*$M10&O?o|Y|$cn`r&`sVc+_WedEht zwY#prj)m?W?WivwYcnz7n{nfx?V|s?f};usv52XWu1<6bw2EQB&&IX~A9~7;#_V?3 zW+Uycn{KjU!-q2RXtzghznPX&WoaG-(}a`a#=iaI3(&EzhZ&>tS&sz~0-}`#!B!Y>4YRflsI44BQqCG(zw`E6oIYBQu78;C zi>V-gb7xGqL8C@9Q={w}*F$PEJ9F8EUBf%=y0EYASB4V(i6SvgXPjylS`%Ski{Rkt z?W~~;W(`8d2bEQQypDAOfJTDB;soPZkZ7hPdcrPoEa)2Q?R%GB=KE|GqqaGh8P$0g z{Mbf~9dCcSdc0d8sl6yG`U{Pga;1&He;rRfn;rWP7>F<(W%IDyTFqM1S>OGE-F5q| zcG@}T+by@;X8RxfMVo|mTrDfoT7cHk60OaR_OE~Z!#;D!A#PgR#!Td=m;ccYJpKgs z0x%OKZ(7^f`7?*wEH*qQa>EC4Zb7KF2UD6jd3$@{y_apqt54dik3RsFteG$?sX@J2 zfhum|&J*piXLhjPUV5Hga?U9>^ZogD*l{P(zDIe%s`GgPD`HaCm6gm?z)^r8h4ZNg zB0$&$&8*r>B7w`qQ{4Zt%hjqV`JROb0ct?q+(#E8;wf2vl0}qJ|AD_4)zcvQaz$Am zima6x=yF?Gx7sxk139I3AnmgZGwMdvhpSMP%8D*EBKEbh4*ICLKt2MXqh9%uiV->) zP;Nk#*xqk*EaR{$)JYB{b>_)1$%Z{IpLv|LDI?r4YVgs|20xbVZP^ZpcywVmdSi*jltwP4tUj7}Y2G?Un zeSD;`PMqh1SF;dx)WAmrKGm{HQK7!x9hr(l%3F;&`IBFK_b1=M=^5TbL5DbQ+>wf} zQG|{s(H@KgjyTGGe8sQX7$E>SuQH2}fB4Bg|%o z+J1&VnHSB|kn?MMH2xqbH+m)p<@ zN zrY)yRmASLjD9=3pxc&IzbA7Lhc3Rig*4PcV-fMg8xnJnp%=p$(ejMarGoF9K9(m|~ zRDA09GzsW;X2DbY9&~JrF6Ggp^|HD1Y|gZ~wsh7U8^WT!Iz$s{C*`*oRahO&{GPww zj!@%#B9R3>62NP)(h{8wEXr453@~K$NaS&))x5uunN6EL_2j?ohTs3%`r?;$YKlSv zRcbgIdGOQ`F$K^yclJCxa-W0j;3K|lLq?9VryhC7hH*;iXAd~gPCNNzMsiDh_Rvaw zs}nDrGuxhf_;0oYYB$w6rB1QSk_WqfGL2o7&u+D$(yg8d4^9o1H_BHkLG3E8V&UC| zFnpn`w1WLL^KHPe{?>oQP+QN8p%P<{GS*$ryZrYE+5vXwZ8tk(Q>W65j+PNRgwXP@ zrJXfE1h7V(8c9o)Rf=jv6}E7}0$a6;n+Pk|gE3(%8#8L8@5k_g970$Y zpE?G}&z#f9K=`1qleVWpA05j1kl0>6Dr9Lnnwb%_58z06>Q@Y3XT*sLsoq7E_jkQ9 zK+zyc>sNg-+?es+TujW@<0o)#AuM4qNxRX&S8!T%SHF={-L74;hA@?j1X2fvDjhcM z-RaCqG*kL$W#z~=^&^$bM|94QJ`6Tiir~`k$+wDB-YAST_6&dOXz@<~^3QxnxD-qb zlWINtp5Oqzc47eT_W7zH9o5kZBbSbP!Myo)`0*#%&wh^p_|5O^JKsFTb?%+oEJk6- ze!G-~um^9y+rE9;`L-w46kk2zEZgZ*JF%Ozk{#5utRCFIyZz60+jUp69B{A=p$jTc|C>wa^EeP;9F_Rbq`(D3rCft|%`7A~^Y z3+7o9BaC%Rme}gKa~N$b^^vMGBI-JiM%D&{+is^_>(y9g-DiJ&{&^b%O}?N;Lk?PTx(Gt27)9*Tg-h(s=U=c%pW1ampIv5ezcI~jyMeU<1n$sr<54AI z`dn3Izqsvc8vrBNh(P?q-ygIcciGuHwbLSo;r%C>R;#*j0|yMk2w|EXwfCWRE|yoH z+Ue7n%~FX&`??_5|KP*y(1Q=O!*@T}RxMeIX)a|36M2N)`^TShwhbbF8z!51hU&Fid_-OVj)mvfxR8t>>xk%Spa*ob|F&a65sg1{oxK{-cMP#=%n|FBK@?B`)% zoCKg5B8{q%QROi7@5iusfAZ;PxmuDEre~qTLO(9+ImgIzDOP5S7R*J+&0(L(EH;3C zU<>EXW{rmXvo&fZ-!4DB1pc=_QFx>USo%GennJ~2j zseMb8C{n zQoxMFXVSFUJO&rO5RVo^I{X6F4e9Bwb=@G?S~-L@LY>eMj2a|#q8dv5Lux1q5FN2o zirK$r6d%l4Vaw4{Xq$lOmUg0p{-w>z5;{_eX)vV?rc&dsrH`qOU06`CCFEt^{3Wc{ za#JCE|06MUQrWblfBdI~NGieZG?I7m>FgqUfTq0MsY7|$@Fl;V;G91P@a(VRt4#S* zWoYX8`qPiwin;Hjw_IscIh&>)A@a?y9c#Pnu`l}yHnVNeX}|H@3-+_Gond9$kGG#) z`hPZJ!gerBb~=CQX#3*v$Jr1B(EWGc$r(|72OoQ=P1<&{{rSP?ZQPby z+M`Pr*k7-?(%yb=9{UG2po_1tKVEyityZH8*#n&fw^Rp`)yP zAiLOS&9v#Sy=c!o^^DD1!tUmiPOwwYox(Xc{Sh>jqDGi1lRVaZm`z9;X*BZOzy4`Q zpTzpjfDt}=;#fqhXANjCtc?0IqLqQcVvc`lfWegX;h;zs&84?3pkqya<2C#AVf)$e z(PL~TYOC|Vb3SVZL+!##FXs%dQde6I=NzoZzkM@;bql-Z=NH&-?!@}d=};%7GigLl znLPH$!)&@Lr>u+Zm$y8K5Z=xnec(RSD|z;*-S)Ee>uPKv2U6xE*h(w=+x1ue%JK&c zW}%;HKeL{5&N|(WJLDj{>be{3POOz4yXR@!d57)o*{7do+OGpH3)tbljLyXR2I|3? zAI!5o5B!q#<=7Rvn~%UHUZYcI6q{DlXD}AwJYu7i!WnViTaB6uRf)j$c$(2x2?Ck30PPW_3Nxy z+`GrlC2U@adimrI^v>Wtoh+Kj^OZublVI4CQ(y1GWXMZ0I_Nc;;zTFmtwm?e-D)?m zhog1{YhkQel~uW#IbS=s8NBJfkV2Th8neoO-8xp}mBxbJ+PCc)Rovl`7tKVjmXa?QZyI;g+-^X8+` zVD^GAC@tgO_4N$ouy~Xp(s^`RU{_sf!?12UEN5V=Lr@!=u;yyj+G(e)Vj1&AoGrBz`yhsl8EeO$`CU{91304y{p665m}y>M2YlfR z_BiK5HDVnz$VGdH&6u;)r?w*h3x^$HM;`UHa0fDs9aiq62GMfCmAA9;?f|#gp}BYt z=>jw?&VQ!yL^HN=6SiR#+6T1`3#K&Mg^RGjn)((yv`<6bwUw2?G{x}RS=7}+vlyaA zq7BS4>gzdHg-Vtc#^g`$&DsKHq+*V0KpYNv(4n8hWELTTC7E>N&prPV2g1#;v(G%+ zM_rg)03o}*DKl-Pt3nuE@QeSmBJA3AdhZ3- z-^9UngYBr}Pqb+-J!#{&-;?_5?`FEkeesKS(BX$;WKd~eJLMeP=QHzc9xA+c=+KBv z>snG5wKOwg#44t&Zxu|T3_scPo6TQQ=WR)?Ns5C~^cT8JXNrysp`}WtM2Vp8>0^hU zaw6qhVa;#>Fxk<^pN0uHrsAjq2KMi7m)`O)1CMP`O#}s&=s)k5*V!JQ*$+C%FaLD& z+unyBX3H@%?u7BEGbn7q8fGX^qP-i%j3AfJe9v~FocBNci!hT;`_;`)aOLS}blKtf z6fuWkTWo>BLw^?VrT1n57v`pUcQJzDw2OaVzrrj3M4;z0kQ&E~ zLV}&-09PrxBl!Xb94#0z6jpJ%F1Xs5LFhOV=B22w>o~&{FK;8d*{5LZ) zDC@Ex!9V+*h3Wl`52tE(^?7uz6=iqq7uh=r{@EGHUJA83@} z1xtl%^ep+W-PoGCY6`0z+U=5%G$^Tsv=2f@YlH@iT|O#?>1_1de#e~{?ZFKBSHLb% zXC^Y)gE5KK==gDsF!Gto(%-$2D3@MWyy!5+0vNaQqJ=ck>Wxan2AF{uK{2CVjbKHW zHc)C$2;(7VqGCw1*-hVyE%~-A&`J>Km}vS||sVrwUAK5@Ke>EZFI=H%;$b;MSc?Ib{O;?$oKa)mB?`dTe#3 zVT;kLT*O+W3l`JYpO}K`MHVk5Fv&8`7;3}}b^`)YM>jZ$#P#VrbohV)HJ3V{4~LT0 z72A|Lw{*XPTY+irk|m36$DMbh_fXeKz3K!4jm}k%F1SfY?L_9js(;Z0s1I;e{c0o1 zC;gWEajd)oaVlS>Q^?4&jrv2bcv-eEy6nU%rkI(Rj09>}oLxA7F8gG520%y1tIYV* zXcp6E4JdSkMjMPQstHt1Ev+0j34SUcI0#Ys^CxV7jW`6ZC?Gbo_4%?buES?9Fk7FQZ}&;9=@5?u5YlV^A=b;gS!^`vKY1o zc%4n~7fx*+Fn+v!aPw_!(q%Cm!xI}dh&7b4Ryg@Edva~LEn34+MD3-;0rbKpIkoPo+p^HRI=P;^ER6g2;MWx*d})-g-Vt`?hS`n^Sj@-qs1-rA7=?FwY`7yDYm1c4jAtjR-p02JtnjBvq$dX@L_F z;#EPsVuYJa{W@V@Auoghqhy3nPT7&FP{PAQcxnnMaodT_x+7OcRHj5y{({+}_Re7T zi~w{Mkc126+s0D~xUh3!sW|9hVep-dszo=wk{=v!o~r0pSwttI=(v8u0O$D>@Yl{M z$T~8{>ruJ!yaSiS>k?n6!J)Mim9z3D+NDk?f=1ESL7Aw|iQ0IjQsRAvr!t-_7x*s7Tn;raq{Hf`#*~?|c7Z zR?%iR6orfVtF>4nrNTPZyw!zGpYuJ6hn$G#;&?Q6Ya-mhJ(<>f~8+2kWA)^T`!s#*f6jRXRxtO+ugQ@~^U@FUR{ey5< zS*V(X6of$l(Y=8c{(xImAjTWg5c`(X=v_0OASjevU;+{n0aozB$)B?B_;}Fxgi*{% zj6|~qxo`%KC?uW)8P4f&>ODF@dIF<3p&%5~Vf6@=jay8KmcnaBx}*cc;o5r~8p{Mf0N zzv9W-Me9?d*|SF(D|HD>MjW0`k0jlI4G#dkToD!m;ZyQfh8@be+MNC& zUG1CAq+?VVm?Ge<_cN8dw8hNh>w{5s{Ev|;Rh!Cyorn6 z#EC-xQZz4bJrx-6=Ab78@oH(2OR3BDevsni`euR|NMhZudwf5mB zP>0&Njmo#B&QBJoU9}d=&9zpxa)ITo;(*ari>z?vEGy+$_S%vG9HLlm^~0-(&qZm& zCRy2#;Z`zaGwwql#6GURR!`ygWv`L;o)xyCg<$lx4s~sNehVr_PU)^~<*9WG)obWk zY7d%O%d}gDGd@FyR0)+*)*@GP)>bp)?+VsTH4$xRpGnx;A$2YB98bub^8vM6+No5S zvfNs{c#T_`_CXb|*>$*`bd#m{KMmY;9joq`S$C~aWiZ=pLRjcnk@5(ihRcS<1`+XO z8-_x})X{!8qg29?8GC1gd4yIehACJYThg-g33Eo`zXXCTGJmD*i;v(7j8Z=8)QX`_ zE0!QS)O__1=VS&yeYh|A)(l7A9nOptLx2vP zi)jSk7^b*-2aPvuC8P9$3r~GVxESK$L{eB%RPH6gB`17(&Ek@;@TBWRe!V%*nB(XP zLb#Pia9zKm?|0Uqtq@SKR1QjYYUyXoyXyth7ee!{G+jJ2ViKDp;y$;R!r4TRw`b011{NEF|YIo?+2vgvU091;pBh1#7w zvvISqUzBdzp1% zXjx$t-y&>=q>uWdvhv7D+eqT+E6|W+O8%)tBF!EOfhrZ{KS1j%%m^e!!n8OQIYnCv zd&)QanvNC7?8@r1kl`&CpVO2eN#n|eOXCT-N&9qvSNt@-?hwHz4fA1fJ}kVqG;;l8 zJIwXhcbcAbcshGx^;;swH6C?*YZ2KkIESWhISmY5jFl@ydzN!Q@5 zJ!l$Ok7CN%On+I=T2u*A!!6%v_<776WP+;$OgADV3X0g%rCBsgUaDDH-$}hHwURQF z&U+95>WeUa{`3rgsK&uLf59>=_OQJ2HB2QIVAY;o&?HPH^aJ??JjxtmiAi>WO`rBY zck)bP7Ngbwn8_}slKl{I9|DpE4sS{`<|8*O{ryql(sA_8$y4bf3&BpK3e$6*KtPB) z2hWY8uw1`Tn34Dxs)ivyjpnlrlERGu;7L*f0iOK#%!SkwxC{io(C3i@Y#zcy>jExV zlt2npuVPzS7X#HWr09q>2L_M&CXYazPhDX-eKGgEk&i zPOES$|N2K{&lm7cPC(|k{3j;wff)+2F9AO0IAG0&rr!cZX`h^TPa+K!a0i@S(~nS2 zI%x9f(4hnABg`~nQ&K>jWyTbfti{iyzB8X6`r`4slH}Et^~$~pnbX_V>qFCU02lT# zx80*el-c}b-!_#gm1(TA9Kw@CQh2&2oA{8r2oPuwPC>~eI};i~71n(K27HoiWHbRj z#v(jZ$r+U1Z?j*iH;}2P2v^!=ztk?EBk*L$%^|yP!dt-J4NX_IElB)Uj97PwYba8v zI*}jimB>=Y zQmF<%u|~m#-$1Ma1Jjp(@N=~b4b4?Xo~D!ScwBvz;ZOv+zz|l&jW~IAqLXx$VB+EH z55#w`gpvT|lz1bE-?>j$b18`wZoyGiGf1aAZnkeOsW-iQ8xU+qxEt&&XR=q+wST5rK! z{UbtreW;Q8?gE(5AV1NQWLsbS^%hAuRgPjVYROqx6;1pKgC(H?Pj9Fac#i~V+9`@~ z>Cc^`@mk04~?v#+TiCpc)+U=w!o>Vw{Am9E1IUVpN*lWI!?NAeFn zS}$3#w!xMxUTUK`xk1)-p$){cR6Z0pxL8a7PkU$b>q&Cd@qGK*-EX>kdYi>#!$!5ga=}j(((VhYDzws{gNhX* zY$OG*xW%0JgIb7w5J0U05Tp!R8jBaBdY7UTc$HZKD@UBb-8oLd=3${g0?OhFr6Pmj zu;9m|wo|$SMr?=&S5Ar*5F(FwOOWSBen;eNt9u!OS2*#O9fz^x1&)FlAo}xb#ywM9lLAbeS>)5)pMYYPOxuqQp~PUrN6iFFw>7wWiDx z2+S`W1(j$=IZ@?7Z~d25FlZk$n!}+-CEiNY1d*Q7g4< zVx1bcyfmBMc;|NdZtf47W25cy5$D+XxHLp%d`JW>&Gl;Yq4s}ih1RK-hQs#)N2n~a zEM5jgN3qQ4^jOIyWMY{B2f5L&GG+O(7X>t&;N@D3h(`?nZ7H=XQGs7D!NP1*(hACb z!Hc*qtCWO6O2w)0qtHBr-#qh8gu~uVG95t1jDDOe|82k$=z=d4mI^^(0#Hdw+6dX@MU7C4+yH5V=GG~5={$D|_{h($$u4=#zs z>l5^}%9*j-k+VLIEnQz|M?fGg=!AGf=XRuee}jXmCRKQsA`4zKQ8gjY;XMQ;n$()I zF;wABq=O3uH$gM521J!mg6Y6s!uThh41pU1EwA>`4+k+>Wpf9vmkO*U6W)@IS{5bU zr;W4g+$SQOG9DoZop!Kq%WZcs4)eC-Tnb*sLnkHZ`dtk-9qb>ax8KqU3DP@S5-x42 z4{GQ4l+|QM^j@^V_ki0FwVy<%A?Ttqwetn`T)p+?J$AA0riHa-6$CN~sqnNs_ry}(3d<&DD^Fmn3M}!MUBhaJlH)N3o4TR6(`iMoO z$i<(94WJ(xFt|Z-nItY4`r!G#NubmalT#c;L9}64x=GWv;Tt8aR((fE5Vg1t+QN4O zvE_|+Z^oH8DSonRZlC=f4YcFe-p=QmQO`xa3k^XPh6XGc zlOuzbF3?h684q8gPw%NP9=n|Hw|}q=1@7@-H~bPu|Fhs%6m6L7-u-Rc7zqJqs^hoo zyQ2v%4JX&8IR@#oCZ18=?I;rgsyETr8&RDuzUiw9CRoy_8)#Y1az>P}@o%s*IKiso z8fa5^!!UH=2Wi8IM8go9`Z5rIO={JuiGI9Ip$9&LEM(E2YFLP6z7@!&t0?8Ac(y`% zv?N$btMYXu88O)9G$QZ^U}H-_^0mSpJ7rsfTAgeI7%@zEn)Q9eq%|s&$C0`Xf>EusDese&>!y@t6%AD|7dpJs~Eyz;7s*Je87SpirfhaUFHIAc0|2J8RhFX9|*$huL93s!>aOidjlXrX6 z|MSo&!pT42x0Z4Ob@s;uMVUG|%hc7=_F-2I`I zUOHWPhEscW)RB5VJ$fa!#29{hjK@vuR0xLP?%utRaX}$>WrTcslyDeZLw~dY!S=2p zq^5XOzLVA)VGAD09>_3mtan{-Q6p}cn(QGQF({;60vSed?D&4E*7z*&Rbd*Z^l?i? z+1!OV4#~98H-Yz&Q7#pzr+PLjn3lw22ZMNOK&V2U8r;PeL7YvaxB^W9OMNVN#rP z`q;IuJtev!Rfa*6@oLD&oOEFOMGS-RYC;`4^ini;{$PE>=25hxz0FxZCurK05m9;6 z5h#CWtxFy3dKL;3zzf1ug@C>Yijl4%uRQZ&caj3mag5`a?sVlX4qaHI3aPC45X}9e zA3|=1dz`~Nj4GX^b+%jwJ>fUOnQz-uJZ@!XF4j-cQ zIU$#$Qx1;QlR%^Q7={9=@)Y<@9zw&1=RC*XOmXhkG3Rc*_}nTtC33zMCv-1z9^HWs z?811=%`JgK%Z0T=-6!bHAklTv7|4+hI5h(@MGs`%Cgc~mIy>lD4#cnmvK(6Y7(b8G zh;TWV_JHe4oHf*Ju9CG1rq3k`ej9J)sh4={YtzRn^s> z8hz_uGr?ngkGkDSLJHwK=%T8}(^%m}8w+)B$dT>=(x3cv1bi-+`#KnEy0-UTy71tu z=`$C1(~o^u(MX7YtwTqa!y2^fVJ!mCze${3Ju97Ux~`64XgSxxYj0Cu`q~ylaXM>?Ou;;I zGPUJO7;=3*Z2?r7u&-s?VO_&py$IAw7$N9cB{dj}CS0fJp2?A1W>2(C+!D4K3EsV1 zQnDTI&3Ms|ur^*IU0a-mLC4I|8S)|;5|jT*CL_va1m)DpcT0q_V7$0UTOdXZItRWc z5og{TQ=JYuO16`_`ko>ood8>A^i@}KH>%7hkw;EPoOdfC=c;N4O)d*ehQtJG0TsN* zceRxgjsmjQGJyyS4ys28#FQ)G98jM--Dsz#AlNU6aDDpsB;zs?{s{mq^i6(d|h%6FwKd``L@gm_2;m(b!dN^ zo$l%4Sshz0l$dD>!j#$$6VNSxXm2Jdg|?Naak2}9D7_Z`zE(V-u)KCP}5vHX( z+v$4mRl?TNa&Hx*vyfKNJ!>mm)<*k0(fKR77>27IbVtm};z62aS??70$*k_Zl2&J) zNxMBRpCUiHcrO2xlw7bqQf321)TYbw1nP;{=#h*QzT6E14nu!=ye z3Ax{?p@LRbE{F`~JMayCPQv6+q%8p65Q;`lVFg{?`(w%_j7m`;5#MGM+QM2$%A!~S z_hiY=;`Gr+1rlqjOllt$M)@eE7DMbqT9j7>d=@TTX6J=$LQbr#Bo4`9LL5qVmb7Oe zJ9bhpU47-A&3XOLaOCY*{)Rv*_(nvAqVBB_R%z=HZEr;rX^T2@m}TpbrMCgcF6 zq79A$Z?&lSa2gKpBL{tOAo)(0NmE98pXaitt#|)5t-tefTHSpkT{(Eou5a#f^W-TP zq3IH;BRaqE29@#$#u%a zxkN8Rstt)p+%&qwzL6!>J5_fN!5DL-+;D zIbL-MD;wkavv|_!tp;l{7(lCtQks#3JsedDQE*q`u&5dT6fsz8){E|$E$=HX3$E8LK3QBTtXte`fgn#9}Qi?mAK zg1Ie4XIK~!-HNF_6el}((rf?u7kvEgr^S_%bou6`w6}pWKf-We2#${Txrve+12F*D z4ko%;V#^iUwkevgeomK7^UG^o_k5K@7Eic&@KO5qJub82I@^6F)ekW|n#b5X<<4|^ z7Y{ir>-k09e?FJ~^R@eF?^}1$r#``5?kgiO=)-iAhWpKkpe%!m z(~`OwqSp#GX0Nke`3`5%zqQ4Ed#6k&VVWuyK^vMlFrVYIVzQ!m7W7hd+7KyG+cIO2 zl?qlQLP~-wa%n+IsC1dOt2ZF$sw+N+4H9R{hw(2={2_m_E{^NC{Vizcyczg8{g`OZ z3D*Z`Mwfuf+>|3vUj$I4jWVx7`hBCo^rwQR3cTj(wXPO5;fsABWo>OjG__>na)zG8 z?&d~1zWW|G4bF4Y?N(ahutKeZ;vx{+>^Ftdp0)!GeQ(DBha4U;gk?Q^mfPx7-NeC& z?>^W`Z@haqy?KY7>L~dKcm4xqdz@A-ewgL9EdM>ckdAv?ZZ&fyee$zE&63{Lw7s#P z?mgNhIrAPD7t+CwcD8ekExXlaOqN%dFg`LY^eVK2{ZKpJnFoRHG85_3>4}=_9cyCKB5=$`s;5o z=fN)W)p-smd*@n|PqefIhEGrs|h5OeSH+w3Y|POrT3FC45mpPst)V!Cnjx%BLF z&!=0rxQ3S_OTO==Po}?r`OE3r^^0iE)$# z^~z<=##*%1ReSdzrUi~!x%-WOPOIPbQktE+z_Kfqc$A58-zARDaFto;yfz?Vk0YL% zo0PlL(u+cdv(t>jU0t3}tBc!dgSF37?9x2NsQ9tOXJfpL*{-n3MAN`l3d+|PxX?nm zQVfN5RUw)qd-5yXP8OENEDNi`T_iJws?d;%Jf>tVz(dB^7Cq6|PwAYl z$0)DF2g4=IlkchLsp7XU+{I7kD0);(X!RIOSSobTvUpvqr*B@e>S#TH+hjA{f$@C{ezQu=I zOWe5ykxkLp($)peuzGm^LHgUTd?l@J-b-ujGG8Wal@S*0vrvgMXa(@GO=i#9sksvRR{1<*Ez4sq~!$noTLGa`l0?GFQb+9 z_U2~V;xyh93?L`Or;|tDN{3qy)BF`KnJU|Il&Q;IIU2`x8v@5tVVAH*`Al)y&+1OX zCHBuhb9sfOXnTlx0j70fB(7lID@l-Wg4M6SdYf?*WU^G073Oh$W*D*>ZCt=xu;*6R zc@xhL$~zvtSGka{XaE*i#c2Gp%pIP<<0&kl6u*bLJ}8+eGX?$){<&3Og%k*Wqr6e3q$&2yZD2ozw6c6ZZzf<6F^p;Yh*K5c>D+b4Gk%||H zIPG$d)bra0~$B&{%fbcqqEReB6MMr017q2;~Iha1D%i*d-r`7SH89_+C3k9m&0&9~DQ z_jY{jhkq-5`bU2}{lF(bl~ylZNjog*onaVkesvW?B6{qd)6kb@yV<*OfdBfxJ$2k;7KxBOx>aAhx0znM z$9Ub;CC2x#L}s~}X0h4;bgMI<)|hbvMIo3TH?6~WTTWAYRIqSfmkU^?FQtxkAa%4D{OYVmE~H7g_3t5^v6*E&6Jt z$j9C*zQJ2VT;XV=Gpw=-)f9xRiq-HE9-=FrZTLqC3$*qWt_TP}&nSXUe6)vYYgwHT zLnB01Z7K3q@=>I;@T`uuAr#C&nNp*?cVX1pP!wUxe3vWQ^cnNpg?*gxL3wp~`e?&3 za~YD&@y5Gp{r0O|75i%X#@GItxr>*XTiB)7z$AO(kV8I}PfwS)pM%2@4>s)--4nVY zEdEUwuY5Fp?4=)0-~U6ONgw^h52n?%tH_e0P1J^|^d>Rhr87(msI2(2PfGUFU1nnZ z<*)p8`lCPirSuD*|G9K&X$fP%WN_$R%-yS$|~6@ zg$`bmd`cxNWKCCuiI0F&Dn9|(;e}IidV62wZB(4L*sB``FN=zg;3}SxK|wf<2pQ{1 za$zt!1scgg&cb+}0lVRepTJu~m?6)+ktBO6b}&Q+JkT5YYNGQxH8AOjk)kl@!|r_Y zF(NaM4@?!7|I)p4jGAaD>#1w(rMP-Mz3{Qmqz8|FHof=WTWS5?-L(1eLE3n5KkaO? zxsbE2E-}(F%iP1Iwae+^rOWB*>o?Q&TOUf-ZamA}!wO&F-1PxIwNI^7(yn<))jl*b z@u|IPUqz42h}yNjcICsVH~W$Fw=ch*o`3psy23H;Yb$eH9L2DedL6PA=+s$yA*qLs z)lLsS-gQvp=I#!?p_z31?s59ib>?fVQHrPtin?*Y^YJ=S2^W;3u1aU=v-k9LJKeg* z!YeW5^5~@td~tmI##-9xJ+d?Mdl(TN`(+TN^aAz!m7R*-lj4&^N~uw}r9sI2gLn;N zW>wF$cGh#U%F?c?g3ch^_$4(MZ5PO=5u>LchlCDw=^Zg+q@wY8@;om-_2+MJ}K4AuMsPyy{PN zQvdY9%faj{CL#}#d9mWjVmQCuhLRX_nIW81{E>pHYvcJCjv0oO6l#}72|s@-b=y2B zf`mj7RpsEa)~NF89HR;x#`y0q|6Tg4FMlb0^OZki*ov9u1y)-vUt$H#a~Sy|M(Bm8)5Yp+z7jz>ES`e=3wXcThf&W<$S`X zN9E=E(?{v~Tg(ShKj0q|7!E)g5oUDK2G;PacemLe!kI9dSZA4=e<2}Y3P(8oFOug9 zBoL1G{NH3iRGg}4E(y=4SK`s~TvNizxG8OK2u%!9IFhpD9nw}ec#xaefMiI;l4#0F z(Z^ejcLkekFaN5M1zh$Neq|j(%8p2w7%~uf2j{c_-0~WE7$P!DDOzpy(D*~?wDH$M zvNOoaWk7}o$_uQbKN#l!n*otLG*26)?4nngCc8DiFpXx{xm86CLxyU*G7Nk=TY2;2af8$%PruS~Y$+0KQ zxiF#LW4mv5zxOV!v2@P4ua__?I>zljj9d>fwV@>tZ zH0Rq-X;Me2LCnK;RcbBVkV)N9a@y8#M@i=}6!}Gc*^)#D zN%enI4@7yZ@)F---b~$4XtcnUoXewG59;+f=r(0=nYnzFCwj#2Du&4bf@HE3YTnilHIKQ;Qu6V7?noWm<>tuA>$A$sSOK@Ik$-HM*#hGtO6*~o~=Pv=+5BtymTWNC@-}oIh3-? z!rzZ`z$f~EqkSofUoS4a^%g9ZZUDfXyR&>bPp6DNDQ}Aly>#h9FI`@nP1jirpz73P zgldKcYc+&C)Q7O(s!|TTcy5ppOWAmRg!NqCKTMCdne5p+;s7!Z8Drw;lnJ4p-3d|% zZGzkdsR@#nN%%G>{g2N>LFZ$`NK$l7*{TBYF5$}M+(ekgW-tMyA}RE_yslXpxDi7xAoc382c|5QcjF6S?BdW;LM8E_ysSS5KQ2OuGZ+E>1x#v6@Jt2Zw7XL_QcWfbx=zOnxh_G^K^0#lhz!OPFykrs@MQj5R367s1cAoj8&A=;+!SPT zH1D@x@(P0#&r0Slf6KmpaEeo&1j}l6YiR7bwQ@Nj(hLeueI*Jw6pSTTVnN!&%k5NQ zzzX~<&h@EqI)BY);I{C1$)7=AyvgxC5QpFc))IIc^Jd`&mfrDgKGw(?;@vluHcPg!XunGKKiXRxKP7{atPSzZ*bx=|Frv7W!@<*Y0^ zHPsVu6H>ye6T0)Nqyf$-3w@|4oqnvX%WDA&^f=?W;3IG-F0bD?f5DSz$i@2%^BlAK zIARfjj#-)GZueC-Hgc&iahd4Uyb@7nh`*{3Hej1`feL$Agag9diUpOb!s{K^5o`=3`9Q JJX<)E2LLjc7ux^; diff --git a/lib/blue/io_protocol/io_gateway_configuringWifi.dart b/lib/blue/io_protocol/io_gateway_configuringWifi.dart index 202e9da8..4b6fd17b 100644 --- a/lib/blue/io_protocol/io_gateway_configuringWifi.dart +++ b/lib/blue/io_protocol/io_gateway_configuringWifi.dart @@ -46,8 +46,8 @@ class GatewayConfiguringWifiCommand extends SenderProtocol { subData = getFixedLengthList(subData, 20 - passwordLength); //gatewayConfigurationStr - final int clientIdLength = utf8.encode(gatewayConfigurationStr!).length; - subData.add(clientIdLength); + // final int clientIdLength = utf8.encode(gatewayConfigurationStr!).length; + // subData.add(clientIdLength); subData.addAll(utf8.encode(gatewayConfigurationStr!)); // subData = getFixedLengthList(subData, 20 - clientIdLength); diff --git a/lib/main/lockDetail/card/cardList/cardList_page.dart b/lib/main/lockDetail/card/cardList/cardList_page.dart index cb297970..bbaf9657 100755 --- a/lib/main/lockDetail/card/cardList/cardList_page.dart +++ b/lib/main/lockDetail/card/cardList/cardList_page.dart @@ -1,5 +1,5 @@ - import 'package:flutter/material.dart'; +import 'package:flutter/widgets.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_slidable/flutter_slidable.dart'; @@ -62,7 +62,8 @@ class _CardListPageState extends State with RouteAware { backgroundColor: AppColors.mainColor, actionsList: [ TextButton( - child: Text('重置'.tr, + child: Text( + '重置'.tr, style: TextStyle(color: Colors.white, fontSize: 24.sp), ), onPressed: () async { @@ -107,14 +108,13 @@ class _CardListPageState extends State with RouteAware { SizedBox(height: 20.h), Expanded(child: _buildMainUI()), AddBottomWhiteBtn( - btnName: - '添加卡'.tr, + btnName: '添加卡'.tr, onClick: () async { - await Get.toNamed(Routers.addCardPage, - arguments: { - 'lockId': state.lockId.value, - 'fromType': 1 // 1从添加钥匙列表进入 2从考勤添加员工入口进入 - })!.then((value) { + await Get.toNamed(Routers.addCardPage, arguments: { + 'lockId': state.lockId.value, + 'fromType': 1 // 1从添加钥匙列表进入 2从考勤添加员工入口进入 + })! + .then((value) { getHttpData(isRefresh: true); }); // if (data != null) { @@ -176,10 +176,11 @@ class _CardListPageState extends State with RouteAware { fingerprintItemData.cardName!, logic.getKeyType(fingerprintItemData), logic.getKeyDateType(fingerprintItemData), () async { - await Get.toNamed(Routers.cardDetailPage, + await Get.toNamed(Routers.cardDetailPage, arguments: { - 'fingerprintItemData': fingerprintItemData, - })!.then((value) => getHttpData(isRefresh: true)); + 'fingerprintItemData': fingerprintItemData, + })! + .then((value) => getHttpData(isRefresh: true)); // if (data != null) { // getHttpData(isRefresh: true); // } @@ -207,39 +208,34 @@ class _CardListPageState extends State with RouteAware { return GestureDetector( onTap: action, child: Container( - height: 90.h, + // height: 90.h, // margin: EdgeInsets.only(left: 20.w, right: 20.w, top: 20.w), + padding: EdgeInsets.only(top: 10.h, bottom: 10.h), color: Colors.white, child: Row( children: [ SizedBox(width: 30.w), Image.asset(lockTypeIcon, width: 60.w, height: 60.w), SizedBox(width: 20.w), - Expanded( + SizedBox( + width: 1.sw - 30.w - 20.w - 60.w - 20.w, child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Row( // mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - SizedBox( - width: 1.sw - 110.w - 100.w, - child: Row( - children: [ - Flexible( - child: Text(lockTypeTitle, - maxLines: 1, - overflow: TextOverflow.ellipsis, - style: TextStyle( - fontSize: 24.sp, - color: AppColors.blackColor)), - ), - ], - ), + Expanded( + child: Text(lockTypeTitle, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + fontSize: 24.sp, color: AppColors.blackColor)), ), + SizedBox(width: 10.w), Text(ifInvalidation, style: TextStyle(fontSize: 22.sp, color: Colors.red)), - SizedBox(width: 10.w), + // SizedBox(width: 10.w), ], ), SizedBox(height: 5.h), @@ -256,11 +252,11 @@ class _CardListPageState extends State with RouteAware { ), ], ), - SizedBox(width: 20.h), + // SizedBox(width: 20.h), ], ), ), - SizedBox(width: 20.h), + SizedBox(width: 20.w), ], ), ), diff --git a/lib/main/lockDetail/electronicKey/electronicKeyList/electronicKeyList_page.dart b/lib/main/lockDetail/electronicKey/electronicKeyList/electronicKeyList_page.dart index 4869fbf2..c10bcd24 100755 --- a/lib/main/lockDetail/electronicKey/electronicKeyList/electronicKeyList_page.dart +++ b/lib/main/lockDetail/electronicKey/electronicKeyList/electronicKeyList_page.dart @@ -1,4 +1,4 @@ - +import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_slidable/flutter_slidable.dart'; @@ -69,7 +69,7 @@ class _ElectronicKeyListPageState extends State { await Storage.getBool(ifIsDemoModeOrNot); if (isDemoMode == false) { final bool isNetWork = - await LockMainLogic.to()?.judgeTheNetwork() ?? false; + await LockMainLogic.to()?.judgeTheNetwork() ?? false; if (!isNetWork) { return; } @@ -191,9 +191,8 @@ class _ElectronicKeyListPageState extends State { }).then((Object? val) { if (val == 'deletScuess') { state.itemDataList.removeWhere( - (ElectronicKeyListItem item) => - item.keyId == - indexEntity.keyId!); + (ElectronicKeyListItem item) => + item.keyId == indexEntity.keyId!); setState(() {}); } else if (val != null) { logic @@ -258,7 +257,7 @@ class _ElectronicKeyListPageState extends State { onTap: action, child: Container( color: Colors.white, - padding: EdgeInsets.only(top: 20.h, bottom: 20.h), + padding: EdgeInsets.only(top: 15.h, bottom: 15.h), child: Row( children: [ SizedBox(width: 20.w), @@ -277,28 +276,27 @@ class _ElectronicKeyListPageState extends State { ), SizedBox(width: 20.w), SizedBox( - width: 1.sw - 120.w, + width: 1.sw - 20.w - 60.w - 20.w - 20.w, child: Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( // mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Text(receiveUser, - maxLines: 1, - overflow: TextOverflow.ellipsis, - style: TextStyle( - fontSize: 24.sp, - color: AppColors.blackColor)), - SizedBox(width: 5.w), + Expanded( + child: Text(receiveUser, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + fontSize: 24.sp, color: AppColors.blackColor)), + ), + if (isRemteUnlocking) SizedBox(width: 5.w), if (isRemteUnlocking) Image.asset( 'images/icon_electronicKey_remteUnlocking.png', width: 24.w, height: 20.w, ), - SizedBox(width: 5.w), + if (isRemteUnlocking) SizedBox(width: 5.w), if (isAdminKey) Image.asset( 'images/icon_electronicKey_admin.png', @@ -306,8 +304,8 @@ class _ElectronicKeyListPageState extends State { height: 20.w, ), // Expanded(child: SizedBox(width: 20.w,)), - // SizedBox(width: 10.w), - const Spacer(), + SizedBox(width: 10.w), + // const Spacer(), Text( keyStatus, textAlign: TextAlign.end, @@ -331,7 +329,7 @@ class _ElectronicKeyListPageState extends State { ], ), ), - // SizedBox(width: 20.h), + SizedBox(width: 20.w), ], ), ), diff --git a/lib/main/lockDetail/fingerprint/fingerprintDetail/fingerprintDetail_page.dart b/lib/main/lockDetail/fingerprint/fingerprintDetail/fingerprintDetail_page.dart index 2d716bcf..77a25a6c 100755 --- a/lib/main/lockDetail/fingerprint/fingerprintDetail/fingerprintDetail_page.dart +++ b/lib/main/lockDetail/fingerprint/fingerprintDetail/fingerprintDetail_page.dart @@ -38,18 +38,16 @@ class _FingerprintDetailPageState extends State haveBack: true, backgroundColor: AppColors.mainColor, ), - body: Column( + body: ListView( children: [ Obx(() => CommonItem( - leftTitel:'指纹号'.tr, + leftTitel: '指纹号'.tr, rightTitle: state.typeNumber.value, isHaveDirection: false, isHaveLine: true)), Obx(() => lockDataListItem('姓名'.tr, state.typeName.value, () { ShowTipView().showTFViewAlertDialog( - state.changeNameController, - '修改姓名'.tr, - '', () { + state.changeNameController, '修改姓名'.tr, '', () { if (state.changeNameController.text.isEmpty) { logic.showToast('请输入姓名'.tr); return; diff --git a/lib/main/lockDetail/fingerprint/fingerprintList/fingerprintList_page.dart b/lib/main/lockDetail/fingerprint/fingerprintList/fingerprintList_page.dart index e3e4d242..ad3f11c2 100755 --- a/lib/main/lockDetail/fingerprint/fingerprintList/fingerprintList_page.dart +++ b/lib/main/lockDetail/fingerprint/fingerprintList/fingerprintList_page.dart @@ -1,4 +1,3 @@ - import 'package:flutter/material.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; @@ -110,14 +109,14 @@ class _FingerprintListPageState extends State ), Expanded(child: _buildMainUI()), AddBottomWhiteBtn( - btnName: - '添加指纹'.tr, + btnName: '添加指纹'.tr, onClick: () async { await Get.toNamed(Routers.addFingerprintTypePage, - arguments: { + arguments: { 'lockId': state.lockId.value, 'fromType': 1 // 1从添加钥匙列表进入 2从考勤添加员工入口进入 - })!.then((value) => getHttpData(isRefresh: true)); + })! + .then((value) => getHttpData(isRefresh: true)); // if (data != null) { // getHttpData(isRefresh: true); // } @@ -175,11 +174,13 @@ class _FingerprintListPageState extends State fingerprintItemData.fingerprintName!, logic.getKeyType(fingerprintItemData), logic.getKeyDateType(fingerprintItemData), () async { - await Get.toNamed(Routers.fingerprintDetailPage, arguments: { + await Get.toNamed(Routers.fingerprintDetailPage, + arguments: { 'fingerprintItemData': fingerprintItemData, - })!.then((value) { - getHttpData(isRefresh: true); - }); + })! + .then((value) { + getHttpData(isRefresh: true); + }); // if (data == 'deletScuess') { // // state.fingerprintItemListData.removeWhere((FingerprintItemData item) => item.fingerprintId == fingerprintItemData.fingerprintId!); // // setState(() {}); @@ -214,45 +215,34 @@ class _FingerprintListPageState extends State return GestureDetector( onTap: action, child: Container( - height: 90.h, + // height: 90.h, // margin: EdgeInsets.only(left: 20.w, right: 20.w, top: 20.w), + padding: EdgeInsets.only(top: 10.h, bottom: 10.h), color: Colors.white, - // decoration: BoxDecoration( - // color: Colors.white, - // // borderRadius: BorderRadius.circular(10.w), - // ), child: Row( children: [ SizedBox(width: 30.w), Image.asset(lockTypeIcon, width: 60.w, height: 60.w), SizedBox(width: 20.w), - Expanded( + SizedBox( + width: 1.sw - 30.w - 20.w - 60.w - 20.w, child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Row( // mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - SizedBox( - width: ifInvalidation.isNotEmpty - ? 1.sw - 110.w - 100.w - : 1.sw - 110.w - 50.w, - child: Row( - children: [ - Flexible( - child: Text(lockTypeTitle, - maxLines: 1, - overflow: TextOverflow.ellipsis, - style: TextStyle( - fontSize: 24.sp, - color: AppColors.blackColor)), - ), - ], - ), + Expanded( + child: Text(lockTypeTitle, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + fontSize: 24.sp, color: AppColors.blackColor)), ), + SizedBox(width: 10.w), Text(ifInvalidation, style: TextStyle(fontSize: 22.sp, color: Colors.red)), - SizedBox(width: 10.w), + // SizedBox(width: 10.w), ], ), SizedBox(height: 5.h), @@ -269,11 +259,11 @@ class _FingerprintListPageState extends State ), ], ), - SizedBox(width: 20.h), + // SizedBox(width: 20.h), ], ), ), - SizedBox(width: 20.h), + SizedBox(width: 20.w), ], ), ), diff --git a/lib/main/lockDetail/lockDetail/lockDetail_logic.dart b/lib/main/lockDetail/lockDetail/lockDetail_logic.dart index a01f6214..2d5ad28d 100755 --- a/lib/main/lockDetail/lockDetail/lockDetail_logic.dart +++ b/lib/main/lockDetail/lockDetail/lockDetail_logic.dart @@ -1,4 +1,3 @@ - import 'dart:async'; import 'package:flutter/scheduler.dart'; @@ -43,7 +42,8 @@ class LockDetailLogic extends BaseGetXController { // 监听设备返回的数据 void initReplySubscription() { - state.replySubscription = EventBusManager().eventBus!.on().listen((Reply reply) async { + state.replySubscription = + EventBusManager().eventBus!.on().listen((Reply reply) async { // 开门 if (reply is OpenDoorReply && state.ifCurrentScreen.value == true) { _replyOpenLock(reply); @@ -179,7 +179,9 @@ class LockDetailLogic extends BaseGetXController { } } - Future loadData({ required LockListInfoItemEntity lockListInfoItemEntity,required bool isOnlyOneData}) async { + Future loadData( + {required LockListInfoItemEntity lockListInfoItemEntity, + required bool isOnlyOneData}) async { state.keyInfos.value = lockListInfoItemEntity; CommonDataManage().currentLockUserNo = state.keyInfos.value.lockUserNo!; CommonDataManage().initUserNo = state.keyInfos.value.initUserNo!; @@ -187,7 +189,8 @@ class LockDetailLogic extends BaseGetXController { state.lockUserNo = state.keyInfos.value.lockUserNo!; - if (state.keyInfos.value.keyStatus == XSConstantMacro.keyStatusWaitIneffective || + if (state.keyInfos.value.keyStatus == + XSConstantMacro.keyStatusWaitIneffective || state.keyInfos.value.keyStatus == XSConstantMacro.keyStatusFrozen || state.keyInfos.value.keyStatus == XSConstantMacro.keyStatusExpired || state.keyInfos.value.keyStatus == XSConstantMacro.keyStatusDeleted || @@ -203,37 +206,37 @@ class LockDetailLogic extends BaseGetXController { state.senderUserId = state.keyInfos.value.senderUserId!; state.isAttendance.value = state.keyInfos.value.lockSetting!.attendance!; state.isOpenLockNeedOnline.value = - state.keyInfos.value.lockSetting!.appUnlockOnline!; + state.keyInfos.value.lockSetting!.appUnlockOnline!; state.electricQuantity.value = state.keyInfos.value.electricQuantity!; state.isOpenPassageMode.value = state.keyInfos.value.passageMode!; state.lockAlias.value = state.keyInfos.value.lockAlias!; Storage.setString(saveLockAlias, state.lockAlias.value); BlueManage().connectDeviceName = - state.keyInfos.value.bluetooth!.bluetoothDeviceName!; + state.keyInfos.value.bluetooth!.bluetoothDeviceName!; final List publicKeyData = - state.keyInfos.value.bluetooth!.publicKey!.cast(); + state.keyInfos.value.bluetooth!.publicKey!.cast(); final List saveStrList = changeIntListToStringList(publicKeyData); Storage.setStringList(saveBluePublicKey, saveStrList); // 私钥 final List privateKeyData = - state.keyInfos.value.bluetooth!.privateKey!.cast(); + state.keyInfos.value.bluetooth!.privateKey!.cast(); final List savePrivateKeyList = - changeIntListToStringList(privateKeyData); + changeIntListToStringList(privateKeyData); Storage.setStringList(saveBluePrivateKey, savePrivateKeyList); // signKey final List signKeyData = - state.keyInfos.value.bluetooth!.signKey!.cast(); + state.keyInfos.value.bluetooth!.signKey!.cast(); final List saveSignKeyList = changeIntListToStringList(signKeyData); Storage.setStringList(saveBlueSignKey, saveSignKeyList); final bool ifHaveKey = await Storage.ifHaveKey(saveBlueToken); if (!ifHaveKey) { final List saveTokenList = - changeIntListToStringList([0, 0, 0, 0]); + changeIntListToStringList([0, 0, 0, 0]); Storage.setStringList(saveBlueToken, saveTokenList); } } @@ -249,7 +252,9 @@ class LockDetailLogic extends BaseGetXController { void closeLuckStatus() { state.openLockBtnState.value = 0; // state.openDoorBtnisUneable.value = true; - state.animationController!.stop(canceled: true); + if (state.animationController != null) { + state.animationController!.stop(canceled: true); + } cancelBlueConnetctToastTimer(); } @@ -288,9 +293,9 @@ class LockDetailLogic extends BaseGetXController { indexMap['success'] = '1'; final int time = (0xff & indexList[3]) << 24 | - (0xff & indexList[4]) << 16 | - (0xff & indexList[5]) << 8 | - (0xFF & indexList[6]); + (0xff & indexList[4]) << 16 | + (0xff & indexList[5]) << 8 | + (0xFF & indexList[6]); indexMap['date'] = '${time * 1000}'; uploadList.add(indexMap); @@ -496,13 +501,14 @@ class LockDetailLogic extends BaseGetXController { // 电子钥匙开锁成功上报 Future lockReportLockSuccessfullyUploadData() async { - final KeyOperationRecordEntity entity = await ApiRepository.to.lockReportLockSuccessfullyUploadData( - lockId: state.keyInfos.value.lockId ?? 0, - keyId: state.keyInfos.value.keyId ?? 0 - ); + final KeyOperationRecordEntity entity = await ApiRepository.to + .lockReportLockSuccessfullyUploadData( + lockId: state.keyInfos.value.lockId ?? 0, + keyId: state.keyInfos.value.keyId ?? 0); if (entity.errorCode!.codeIsSuccessful) { // mockNetworkDataRequest(); - AppLog.log('state.keyInfos.value.keyType:${state.keyInfos.value.keyType}'); + AppLog.log( + 'state.keyInfos.value.keyType:${state.keyInfos.value.keyType}'); if (state.keyInfos.value.keyType == XSConstantMacro.keyTypeOnce) { // 单次删除 deletKeyData(); @@ -611,7 +617,6 @@ class LockDetailLogic extends BaseGetXController { getServerDatetime(); await PermissionDialog.request(Permission.location); await PermissionDialog.requestBluetooth(); - } @override diff --git a/lib/main/lockDetail/lockDetail/lockDetail_page.dart b/lib/main/lockDetail/lockDetail/lockDetail_page.dart index ad7bc065..f9bf8c35 100755 --- a/lib/main/lockDetail/lockDetail/lockDetail_page.dart +++ b/lib/main/lockDetail/lockDetail/lockDetail_page.dart @@ -1,4 +1,3 @@ - import 'dart:async'; import 'package:flutter/material.dart'; @@ -89,10 +88,17 @@ class _LockDetailPageState extends State //鑫泓佳布局 Widget xhjWidget() { - final bool isShowTip = - (state.keyInfos.value.keyType == XSConstantMacro.keyTypeTime || state.keyInfos.value.keyType == XSConstantMacro.keyTypeLoop) - && (DateTool().compareTimeGetDaysFromNow(state.keyInfos.value.endDate!) <= 15 && DateTool().compareTimeGetDaysFromNow(state.keyInfos.value.endDate!) >= 0) - && (state.keyInfos.value.keyStatus == XSConstantMacro.keyStatusNormalUse || state.keyInfos.value.keyStatus == XSConstantMacro.keyStatusWaitReceive); + final bool isShowTip = (state.keyInfos.value.keyType == + XSConstantMacro.keyTypeTime || + state.keyInfos.value.keyType == XSConstantMacro.keyTypeLoop) && + (DateTool().compareTimeGetDaysFromNow(state.keyInfos.value.endDate!) <= + 15 && + DateTool() + .compareTimeGetDaysFromNow(state.keyInfos.value.endDate!) >= + 0) && + (state.keyInfos.value.keyStatus == XSConstantMacro.keyStatusNormalUse || + state.keyInfos.value.keyStatus == + XSConstantMacro.keyStatusWaitReceive); return Scaffold( backgroundColor: Colors.white, body: Obx(() { @@ -771,9 +777,7 @@ class _LockDetailPageState extends State Text( state.keyInfos.value.isLockOwner == 1 ? '超级管理员'.tr - : (state.keyInfos.value.keyRight == 1 - ? '授权管理员'.tr - : '普通用户'.tr), + : (state.keyInfos.value.keyRight == 1 ? '授权管理员'.tr : '普通用户'.tr), style: TextStyle(fontSize: 20.sp, color: AppColors.darkGrayTextColor), ), if (add) SizedBox(width: 20.w) else SizedBox(width: 40.w), @@ -959,16 +963,36 @@ class _LockDetailPageState extends State Widget bottomWidget() { return SizedBox( - width: ScreenUtil().screenWidth - 20.w, - child: GridView.count( - crossAxisCount: 4, - // childAspectRatio: 3, - crossAxisSpacing: 0.h, - mainAxisSpacing: 0.h, - shrinkWrap: true, + width: ScreenUtil().screenWidth, + child: GridView.builder( + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 4, + mainAxisSpacing: 0.h, + crossAxisSpacing: 0.h, + mainAxisExtent: 90.0, // 设置每个 item 的固定高度 + ), + itemCount: (state.keyInfos.value.isLockOwner == 1 || + state.keyInfos.value.keyRight == 1) + ? getAllWidget().length + : getNormalWidget().length, + itemBuilder: (context, index) { + Widget widget = getBottomWidget()[index]; + return widget; + }, physics: const NeverScrollableScrollPhysics(), - children: getBottomWidget()), - ); + shrinkWrap: true, + ) + + // GridView.count( + // crossAxisCount: 4, + // // childAspectRatio: 3, + // crossAxisSpacing: 0.h, + // mainAxisSpacing: 0.h, + // shrinkWrap: true, + // physics: const NeverScrollableScrollPhysics(), + // children: getBottomWidget()), + + ); } // 根据权限显示不同的底部按钮 @@ -1004,8 +1028,8 @@ class _LockDetailPageState extends State // 设置 if (F.isSKY) { - showWidgetArr.add(bottomItem('images/main/icon_main_set.png', - '设置'.tr, true, () { + showWidgetArr + .add(bottomItem('images/main/icon_main_set.png', '设置'.tr, true, () { Get.toNamed(Routers.lockSetPage, arguments: { 'lockId': state.keyInfos.value.lockId, 'isOnlyOneData': state.isOnlyOneData @@ -1077,9 +1101,8 @@ class _LockDetailPageState extends State if (state.keyInfos.value.lockFeature!.d3Face == 1) { showWidgetArr.add( bottomItem( - 'images/main/icon_face.png', - '人脸'.tr, - state.bottomBtnisEable.value, () { + 'images/main/icon_face.png', '人脸'.tr, state.bottomBtnisEable.value, + () { Get.toNamed(Routers.faceListPage, arguments: { 'lockId': state.keyInfos.value.lockId, }); @@ -1100,23 +1123,21 @@ class _LockDetailPageState extends State } // if (state.keyInfos.value.lockFeature!.palmVein == 1) { - showWidgetArr.add( - bottomItem( - 'images/main/icon_palm.png', '掌静脉'.tr, state.bottomBtnisEable.value, - () { - Get.toNamed(Routers.palmListPage, arguments: { - 'lockId': state.keyInfos.value.lockId, - }); - }), - ); + showWidgetArr.add( + bottomItem( + 'images/main/icon_palm.png', '掌静脉'.tr, state.bottomBtnisEable.value, + () { + Get.toNamed(Routers.palmListPage, arguments: { + 'lockId': state.keyInfos.value.lockId, + }); + }), + ); // } //可视对讲门锁新增->监控 if (state.keyInfos.value.lockFeature!.videoIntercom == 1) { showWidgetArr.add( - bottomItem( - 'images/main/icon_catEyes.png', - '监控'.tr, + bottomItem('images/main/icon_catEyes.png', '监控'.tr, state.bottomBtnisEable.value, () { Get.toNamed(Routers.realTimePicturePage, arguments: { 'lockName': state.keyInfos.value.lockName, @@ -1128,10 +1149,8 @@ class _LockDetailPageState extends State // 授权管理员 if (state.keyInfos.value.isLockOwner == 1) { - showWidgetArr.add(bottomItem( - 'images/main/icon_main_authorizedAdmin.png', - '授权管理员'.tr, - state.bottomBtnisEable.value, () { + showWidgetArr.add(bottomItem('images/main/icon_main_authorizedAdmin.png', + '授权管理员'.tr, state.bottomBtnisEable.value, () { Get.toNamed(Routers.authorizedAdminListPage, arguments: { 'keyInfo': state.keyInfos.value @@ -1155,10 +1174,8 @@ class _LockDetailPageState extends State if (state.keyInfos.value.lockFeature!.isSupportCatEye == 1) { //视频日志 - endWiddget.add(bottomItem( - 'images/main/icon_lockDetail_videoLog.png', - '视频日志'.tr, - state.bottomBtnisEable.value, () { + endWiddget.add(bottomItem('images/main/icon_lockDetail_videoLog.png', + '视频日志'.tr, state.bottomBtnisEable.value, () { Get.toNamed(Routers.videoLogPage, arguments: { 'lockId': state.keyInfos.value.lockId, }); @@ -1166,9 +1183,7 @@ class _LockDetailPageState extends State } endWiddget.add( // 消息提醒 - bottomItem( - 'images/main/icon_lockDetail_messageReminding.png', - '消息提醒'.tr, + bottomItem('images/main/icon_lockDetail_messageReminding.png', '消息提醒'.tr, state.bottomBtnisEable.value, () { Get.toNamed(Routers.msgNotificationPage, arguments: { 'lockId': state.keyInfos.value.lockId, @@ -1180,8 +1195,7 @@ class _LockDetailPageState extends State if (F.isSKY) { endWiddget.add( // 设置 - bottomItem('images/main/icon_main_set.png', - '设置'.tr, true, () { + bottomItem('images/main/icon_main_set.png', '设置'.tr, true, () { // logic.clickItemBtnAction(10); Get.toNamed(Routers.lockSetPage, arguments: { 'lockId': state.keyInfos.value.lockId, @@ -1216,7 +1230,7 @@ class _LockDetailPageState extends State fit: BoxFit.fitWidth), ), ), - SizedBox(height: 5.w), + SizedBox(height: 5.h), Expanded( child: Text(name, style: TextStyle( @@ -1230,9 +1244,10 @@ class _LockDetailPageState extends State ), xhjCall: () => Container( color: Colors.white, + padding: EdgeInsets.only(left: 3.w, right: 3.w, bottom: 5.h), child: Column( crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.start, children: [ SizedBox( width: 42.w, @@ -1248,12 +1263,16 @@ class _LockDetailPageState extends State fit: BoxFit.fitWidth), ), ), - SizedBox(height: 5.h), + SizedBox(height: 15.h), Text( name, + // '哈水电费垃圾啊货到付款垃圾啊是老大开发机哈吉手打', textAlign: TextAlign.center, + maxLines: 4, + overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 20.sp, + height: 1.0, color: bottomBtnisEable ? AppColors.blackColor : AppColors.lockDetailBottomBtnUneable), diff --git a/lib/main/lockDetail/monitoring/monitoring/lockMonitoring_logic.dart b/lib/main/lockDetail/monitoring/monitoring/lockMonitoring_logic.dart index 80247a61..2b47048d 100755 --- a/lib/main/lockDetail/monitoring/monitoring/lockMonitoring_logic.dart +++ b/lib/main/lockDetail/monitoring/monitoring/lockMonitoring_logic.dart @@ -1,4 +1,3 @@ - import 'dart:async'; import 'package:flutter/services.dart'; @@ -78,7 +77,7 @@ class LockMonitoringLogic extends BaseGetXController { } /// 接听 - udpAnswerAction() async { + Future udpAnswerAction() async { AppLog.log('点了接听么'); UDPSenderManage.sendMainProtocol( command: 150, @@ -177,7 +176,8 @@ class LockMonitoringLogic extends BaseGetXController { // CallTalk().stopPlaySound(); // } state.allFrames.add(frame); // 将帧添加到状态变量中 - final List concatenatedFrames = concatenateFrames(state.allFrames); // 连接所有帧 + final List concatenatedFrames = + concatenateFrames(state.allFrames); // 连接所有帧 AppLog.log('pcm数据:$concatenatedFrames'); final List pcmBytes = listLinearToULaw(frame); diff --git a/lib/main/lockDetail/passwordKey/passwordKeyList/passwordKeyList_page.dart b/lib/main/lockDetail/passwordKey/passwordKeyList/passwordKeyList_page.dart index 1b585abc..c9883358 100755 --- a/lib/main/lockDetail/passwordKey/passwordKeyList/passwordKeyList_page.dart +++ b/lib/main/lockDetail/passwordKey/passwordKeyList/passwordKeyList_page.dart @@ -1,4 +1,4 @@ - +import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_slidable/flutter_slidable.dart'; @@ -114,9 +114,10 @@ class _PasswordKeyListPageState extends State btnName: '获取密码'.tr, onClick: () async { await Get.toNamed(Routers.passwordKeyPerpetualPage, - arguments: { + arguments: { 'keyInfo': state.keyInfo.value - })!.then((Object? val) { + })! + .then((Object? val) { if (val != null) { getHttpData(isRefresh: true); } @@ -177,13 +178,17 @@ class _PasswordKeyListPageState extends State ), ], ), - child: _electronicKeyItem(index, 'images/icon_password.png', - passwordKeyListItem.keyboardPwdName!, useDateStr, () async { - await Get.toNamed(Routers.passwordKeyDetailPage, - arguments: { + child: _electronicKeyItem( + index, + 'images/icon_password.png', + passwordKeyListItem.keyboardPwdName!, + useDateStr, () async { + await Get.toNamed(Routers.passwordKeyDetailPage, + arguments: { 'itemData': passwordKeyListItem - })!.then((Object? val) { - getHttpData(isRefresh: true); + })! + .then((Object? val) { + getHttpData(isRefresh: true); // if (val == 'deletScuess') { // state.itemDataList.removeWhere( // (PasswordKeyListItem item) => @@ -220,8 +225,9 @@ class _PasswordKeyListPageState extends State return GestureDetector( onTap: action, child: Container( - height: 90.h, + // height: 90.h, // margin: EdgeInsets.only(left: 20.w, right: 20.w, top: 20.w), + padding: EdgeInsets.only(top: 10.h, bottom: 10.h), color: Colors.white, child: Row( children: [ @@ -234,27 +240,19 @@ class _PasswordKeyListPageState extends State SizedBox( width: 20.w, ), - Expanded( + SizedBox( + width: 1.sw - 70.w - 60.w, child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Row( children: [ - SizedBox( - width: passwordKeyListItem.keyboardPwdStatus == 2 || - passwordKeyListItem.keyboardPwdStatus == 3 - ? 1.sw - 110.w - 100.w - : 1.sw - 110.w - 50.w, - child: Row(children: [ - Flexible( - child: Text(lockTypeTitle, - maxLines: 1, - overflow: TextOverflow.ellipsis, - style: TextStyle( - fontSize: 24.sp, - color: AppColors.blackColor)), - ) - ]), + Expanded( + child: Text(lockTypeTitle, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + fontSize: 24.sp, color: AppColors.blackColor)), ), SizedBox(width: 10.w), if (passwordKeyListItem.keyboardPwdStatus == 2) @@ -279,8 +277,6 @@ class _PasswordKeyListPageState extends State Flexible( child: Text( useDateStr, - maxLines: 1, - overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 18.sp, color: AppColors.placeholderTextColor), @@ -292,7 +288,7 @@ class _PasswordKeyListPageState extends State ], ), ), - SizedBox(width: 20.h), + SizedBox(width: 20.w), ], ), ), diff --git a/lib/main/lockMian/lockMain/lockMain_logic.dart b/lib/main/lockMian/lockMain/lockMain_logic.dart index f1fc9b89..e65b36c7 100755 --- a/lib/main/lockMian/lockMain/lockMain_logic.dart +++ b/lib/main/lockMian/lockMain/lockMain_logic.dart @@ -1,4 +1,3 @@ - import 'dart:async'; import 'dart:io'; import 'package:connectivity_plus/connectivity_plus.dart'; @@ -309,6 +308,7 @@ class LockMainLogic extends BaseGetXController { await jpushProvider.initLocalNotification(isCancelLocalPush: false); // 开启UDP + // AppLog.log('onReady() LockMainLogic'); UdpHelp().openUDP(); BlueManage(); } diff --git a/lib/main/lockMian/lockMain/xhj/lockMain_xhj_page.dart b/lib/main/lockMian/lockMain/xhj/lockMain_xhj_page.dart index e34da23e..b9dd1342 100755 --- a/lib/main/lockMian/lockMain/xhj/lockMain_xhj_page.dart +++ b/lib/main/lockMian/lockMain/xhj/lockMain_xhj_page.dart @@ -1,4 +1,3 @@ - import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; diff --git a/lib/mine/addLock/nearbyLock/nearbyLock_page.dart b/lib/mine/addLock/nearbyLock/nearbyLock_page.dart index e6e9d302..97275540 100755 --- a/lib/mine/addLock/nearbyLock/nearbyLock_page.dart +++ b/lib/mine/addLock/nearbyLock/nearbyLock_page.dart @@ -1,4 +1,3 @@ - import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_blue_plus/flutter_blue_plus.dart'; @@ -65,7 +64,8 @@ class _NearbyLockPageState extends State with RouteAware { child: ListView.separated( itemCount: state.devices.length, itemBuilder: (BuildContext c, int index) { - return nearbyLockItem('images/icon_lockGroup_item.png', state.devices[index], () { + return nearbyLockItem( + 'images/icon_lockGroup_item.png', state.devices[index], () { String advName = state.devices[index].advertisementData.advName; state.selectLockName.value = advName; logic.getServerDatetime(); diff --git a/lib/mine/mine/starLockMine_page.dart b/lib/mine/mine/starLockMine_page.dart index e1e98bf1..5d7dcd9f 100755 --- a/lib/mine/mine/starLockMine_page.dart +++ b/lib/mine/mine/starLockMine_page.dart @@ -1,4 +1,3 @@ - import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; @@ -13,6 +12,7 @@ import '../../baseWidget.dart'; import '../../tools/customNetworkImage.dart'; import '../../tools/submitBtn.dart'; import '../../tools/wechat/wechatManageTool.dart'; +import '../../tools/wechat/wx_push_miniProgram/wx_push_miniProgram.dart'; import 'starLockMine_logic.dart'; class StarLockMinePage extends StatefulWidget { @@ -43,7 +43,24 @@ class StarLockMinePageState extends State with BaseWidget { topWidget(), bottomListWidget(), SizedBox( - height: 40.h, + height: 60.h, + ), + GestureDetector( + onTap: () { + WechatManageTool.getAppInfo(() { + WxPushWeChatMiniProgramTool.pushWeChatMiniProgram( + 'wxbe340095d2b8fd51'); + }); + }, + child: Padding( + padding: EdgeInsets.only(left: 20.w, right: 20.w), + child: Image.asset( + 'images/mine/icon_mine_wan_miniprogram.png', + // width: 400.w, + // height: 151.h, + fit: BoxFit.fill, + ), + ), ), ], ), @@ -152,71 +169,67 @@ class StarLockMinePageState extends State with BaseWidget { } Widget bottomListWidget() { - return Expanded( - child: ListView( + return Container( padding: EdgeInsets.only( left: 60.w, top: 50.h, ), - children: [ - // mineItem('images/mine/icon_mine_main_personInfo.png', - // TranslationLoader.lanKeys!.personalInformation!.tr, () { - // Navigator.pushNamed(context, Routers.minePersonInfoPage); - // }), - mineItem('images/mine/icon_mine_main_addLock.png', - '添加设备'.tr, () { - Get.back(); - Get.toNamed(Routers.selectLockTypePage); - }), - // mineItem('images/mine/icon_mine_main_gateway.png', - // TranslationLoader.lanKeys!.gateway!.tr, () { - // Navigator.pushNamed(context, Routers.gatewayListPage); - // }), - mineItem('images/mine/icon_mine_main_message.png', - '消息'.tr, () { - Get.back(); - Get.toNamed(Routers.messageListPage); - // Toast.show(msg: "功能暂未开放"); - }), - //删除“客服”行 - // mineItem('images/mine/icon_mine_main_supportStaff.png', - // TranslationLoader.lanKeys!.supportStaff!.tr, () { - // Navigator.pushNamed(context, Routers.supportStaffPage); - // }), - mineItem('images/mine/icon_mine_main_set.png', - '设置'.tr, () { - Get.back(); - Get.toNamed(Routers.mineSetPage); - }), - //上架审核 - if (F.isLite) - Container() - else - mineItem('images/mine/icon_mine_main_vip.png', '增值服务'.tr, () { + child: Column( + children: [ + // mineItem('images/mine/icon_mine_main_personInfo.png', + // TranslationLoader.lanKeys!.personalInformation!.tr, () { + // Navigator.pushNamed(context, Routers.minePersonInfoPage); + // }), + mineItem('images/mine/icon_mine_main_addLock.png', '添加设备'.tr, () { Get.back(); - Get.toNamed(Routers.valueAddedServicesPage); + Get.toNamed(Routers.selectLockTypePage); }), - if (F.isLite) - Container() - else - mineItem('images/mine/icon_mine_main_shoppingcart.png', '配件商城'.tr, - () { + // mineItem('images/mine/icon_mine_main_gateway.png', + // TranslationLoader.lanKeys!.gateway!.tr, () { + // Navigator.pushNamed(context, Routers.gatewayListPage); + // }), + mineItem('images/mine/icon_mine_main_message.png', '消息'.tr, () { Get.back(); - Get.toNamed(Routers.lockMallPage); + Get.toNamed(Routers.messageListPage); + // Toast.show(msg: "功能暂未开放"); }), - if (F.isSKY) - mineItem('images/mine/icon_mine_main_shoppingcart.png', - '客服'.tr, () { + //删除“客服”行 + // mineItem('images/mine/icon_mine_main_supportStaff.png', + // TranslationLoader.lanKeys!.supportStaff!.tr, () { + // Navigator.pushNamed(context, Routers.supportStaffPage); + // }), + mineItem('images/mine/icon_mine_main_set.png', '设置'.tr, () { Get.back(); - WechatManageTool.getAppInfo(CustomerTool.openCustomerService); + Get.toNamed(Routers.mineSetPage); }), - mineItem('images/mine/icon_mine_main_about.png', '关于'.tr, () { - Get.back(); - Get.toNamed(Routers.aboutPage); - }), - ], - ), - ); + //上架审核 + if (F.isLite) + Container() + else + mineItem('images/mine/icon_mine_main_vip.png', '增值服务'.tr, () { + Get.back(); + Get.toNamed(Routers.valueAddedServicesPage); + }), + if (F.isLite) + Container() + else + mineItem('images/mine/icon_mine_main_shoppingcart.png', '配件商城'.tr, + () { + Get.back(); + Get.toNamed(Routers.lockMallPage); + }), + if (F.isSKY) + mineItem('images/mine/icon_mine_main_shoppingcart.png', '客服'.tr, + () { + Get.back(); + WechatManageTool.getAppInfo(CustomerTool.openCustomerService); + }), + mineItem('images/mine/icon_mine_main_about.png', '关于'.tr, () { + Get.back(); + Get.toNamed(Routers.aboutPage); + }), + ], + )); } Widget keyBottomWidget() { diff --git a/lib/tools/wechat/wx_push_miniProgram/wx_push_miniProgram.dart b/lib/tools/wechat/wx_push_miniProgram/wx_push_miniProgram.dart new file mode 100644 index 00000000..2779eb4b --- /dev/null +++ b/lib/tools/wechat/wx_push_miniProgram/wx_push_miniProgram.dart @@ -0,0 +1,49 @@ +import 'package:fluwx/fluwx.dart'; + +import '../../storage.dart'; + +/// +/// 进入微信小程序 +/// +/// +class WxPushWeChatMiniProgramTool { + static Fluwx fluwx = Fluwx(); + static bool isInit = false; + + static void setAssociationUrl(String associationUrl) { + Storage.saveAssociationUrl(associationUrl); + } + + static Future initWeChatMiniProgram( + String appId, String universalLink) async { + fluwx.registerApi( + appId: appId, + universalLink: universalLink, + doOnAndroid: true, + doOnIOS: true); + } + + static Future pushWeChatMiniProgram(String appId) async { + if (!isInit) { + isInit = true; + final String _associationUrl = await Storage.getAssociationUrl(); + await initWeChatMiniProgram(appId, _associationUrl); + + final MiniProgram miniProgram = MiniProgram( + username: 'gh_93a4493485e1', // 微信小程序原始ID + path: 'pages/index/index', // 跳转的小程序页面路径,可选 + miniProgramType: WXMiniProgramType.release, // 小程序版本类型 + ); + + await fluwx.open(target: miniProgram); + } else { + final MiniProgram miniProgram = MiniProgram( + username: 'gh_93a4493485e1', // 微信小程序原始ID + path: 'pages/index/index', // 跳转的小程序页面路径,可选 + miniProgramType: WXMiniProgramType.release, // 小程序版本类型 + ); + + await fluwx.open(target: miniProgram); + } + } +} diff --git a/pubspec.yaml b/pubspec.yaml index 5567f272..45cd6940 100755 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -95,7 +95,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # 1.0.80+2024091902:网关功能去掉网关通信不够16倍数凑够16倍数功能 # 1.0.80+2024091902:给欧阳打包测试国际化 -version: 1.0.84+2024101601 +version: 1.0.84+2024111201 environment: sdk: '>=2.12.0 <3.0.0'