!K@qb@&0jV2Idsu!I_K+h0I{;7Ux%Jf7wQlu{5G=jQz~uxoaFtzoy0b^XN)V|P
zN||cebEZ*56^S@PJ&ass0tTS-ASL284^^3RL{X(FcdF?q&a`ZL4oeInJ`+o+Z6Bho
zGVQ1B94&IEnhv(H%kgM8)45$arwJ5i^dm^!V9K<&*MDx6>G$Qo+CP`<5Yee-l?l#(
zH)f}rDHEt0a0WaMy7-d1(c2Rz_NnBGK7=9!4F3sx1aoRcBVft|qgNz=foD)1rC3rl
zg4~C%PYrz;A(%RW2#8yDj{^g=m_UZjNYz%FQydNrfwXZrTxl+?fR|^*3E3!t=*tH~9@y^69cn{qANm5n)&`^e~xPIZeR2&(_hezKi?^Dx^L!$NQhRGILL`fIaJ)Qwa6
z_uI0wmot|sr%Xr(Huh;I_aS8h?*tA2459R?bC&DgyVg6qL#MgvRLdcj7=o!zbgI>q
zi?Zu!m5EN&R+SVjgm0TEAQWJJG)#q|W$2O*tBU%Vk>Ph|G3nBtZ$5yrVXy%CC=dD`ppfGYF=|cFpWq
zIv^s2%CcHB<3WMM~gWxPZ?^
z3dBf&Q#@uS6di*8UGaifsTPqab)e}8kM|+KZ9>`PMk
zRz){jm8(qd<7rM-tfI;qmkH0^)oykW`|hW)cB*SyJUa!99DN8miI}dUegjksLoi}^
z&jOC>ELal!p3ZX-?L5RU)83}(Z)(}~F>+rA>IVK^-`Ef3h5b|cll`G!KnN+*E8BKv
zU;70IZ`fUT*9NmE{af=88@qDDRkvDwh^vYrGN`U#%e&G!Wm3f{bD270FCtSn7&*vo
zQjbC)n$81I4JTQjhfqYp_$$tr+=s{*A(QZO%EUebD@B0~G(&-El2bX5W(f;5^zTi@
zD{`LTFL6MK9c$hXt`dq;NH@rSt#$Z%ss_%WQ8Q(#M8HLvH3o@Vwks*%tZLENn^7XCQ>bU-
z1Q%8iCHxd@69eQb6VCn&rn5ujk}SAP=u{ulR9sGfggt5`m^EELWDp+0%=p`GO0VQrX0hl
zS7&D464Ip_RlJm2D_%8?;+SX+zm+Nur(qhEJJkfzF(9Op>#|d=?)1_j)=IQI?Fp2H
zE$}ldLg=wvZ9>{b5RKHyv7JW+fpK-JtHaHyjPO7u^v!J7Q*s}p1W)1_T%Rywqwk=x
zPjr?6s&nZzM--NLQGH4P+*2I&E>vM+3drkXgp?H~RF**a%N3?f?o)4K$z=kDIC^zS
zgF|AwazKbqfq4iz#OVlW?o|N#s&k|Owjh-Q_6I6Bqk;@Is!8BC$svLTOX>!GQ{*r$
z4V+Cg{4xlr)q~)*n|X9Jn63?7qXEizPIYcoljcFE`ZHChm?<6pa6}R(_W9pxIWf0J
z|5mOaw=IUq-xmm%Be`fw0@a{@AN_=nNFof8sT+y_dTpdfj1r6xOqq~|a2`St1oILC
z-kOnMsv8q?{oJKyZ(?tl!#p4NmF-HW$ny}Sek($Vx}nA#K=d1XV@R29?WbwA%A|P+
zq)UttF%N+ccxFHKzp`)OC_WsdnQBA^ko$lkZta6JUfGyq%7haV(c#=acj!ahRv`fa
zXxws&ZXHzT#+)2Q^o`L=t)~vrPQ#&Nt@P-0raC)9b|@Gl$#)zf#1yVZ1nj2qM(Y-S=vtMF`yr#j}W*_5Nh3@#pk6EcjLo#(b1g%cjn6HS9<
z*Ki1?N<7s$Po0^x;55ZN#5$Kr*nq+Vd>=*)j*K!o1b)zCs4@XRpbv3pcQ^_hD=b9@
z)Vx!biPY~;-oe%gX=b~^A#l{+*f3(I`q7Cw(Z5l4{e2w}!Vkf+D^IvrK1v!Rq!br;
zft0H3?0wnV^Ti0Mb?8##xtN-x>PFkCR@rq4szt>BxE}4knVM6|L~wg>>8HRP6dAy*
zw7|Enk)f)@nlS|bUD=rj8B{N;Oeoc~^AJ?t$nNJd`pmJJnR(Krez0acQG{?w+jDzuAW%mkE*O
z%(iytC06p7AS7__({L)go>rNn>6TL_I!TBOWOvkDAqT$jJP%$bBGY)J7sZ!
z93{|W&29T?&NW(qz_~=8RIvy9GW~Vv<=vmT6x=dNJMm>oN
znrpv;QDW(2JoQ~s@4=bsJoBt5A+p|D=~W$SHRj+D351_S6c{Dx-&EL$Y7$Gd%TBd)
znRL=G=^JM?WvT~5GaHfFuJ}Gusf&ss0#rwpDW>J9%LEL8l504`bB_`zyN>p9KvRy?
zjTKO>vTK0qA36>QwL)bt>`iC(+QfEM$|RvO=`l%l1JMB(0uf?K?u!c3lIbx
z_Z@l=o!!sXCb3<4ib!05RVMZ!+KIVbc3qpE6Lo|1>|mk7rH^)8I0kGLaGLYi*?6iVvhNECB4Eq8ZOf^-_J5MndvHLP|70X4yV#I
zoCtm*4z@GZ_m$@)XUH-%j0$Y-sWGR>uumhT*&z@iV62#!yS2MnWMGZDaqm5dTWd#1
zGpG*LjSQ;sexiRr7$Lr|1401RzcDk&TCy>>an%i`Or6Wn+}JPW%wEm%Gw4G^W3JQ@
zQrHT0nbeE}fWGj&tS!3&Jgf7JeutvMlFLN;g;I@Hxlejcc|a(qDj7o%G>#=|7cSvo4c5)k`VMXv{&(
z3?rn^3qsSAndSPl=~N?P1ltuq(M9bi#5{z`t|2xMbI1bCaui9?QCPJt>DdncrTD-D9!K+U@w5FL1ekpMWm4)#}|EG;L>SXO6o
z7VI#K6hu`iu*e8O=ox%MWPnY&u`*xrb3-?k;eSc)%YZtUTq_u#>EDVJzz8b6F3YZp
z9;`A+xsQ&4Xb=t|nm74OD$9xi3k5&*A#h(3IO;nrwVJ57fojvf_8!iYR@1FlmN-I+
zDic*VGKRp!oI2H-sm9L>k%0$0)tad``+WxtfhTaLniwJrmBArmVva&(t#V&W?n9^g
ztZFjFOf{(9`*LpQPVbhKB_%8=Nt06}MG$eBlrEvl#OM&CrLSUwv^dVrDQFayERbt1%U!vIYsp`h*fRMCZ;VihHC*znpLD-mbmNa}}iBRRs
zBcv*~2K_r6NL8j5JkuD_ivW&@l!z(Q(zsh1csn3OE)wUe0k9a)7ytkn*GWV{RJud3
zjLw+)6?2nrrE=vJ(j}-~W4q>*M-H)c9K2XNM%quUL&yoFs-b}+mRrGBf}D@$A=(Hb
z9ar2&S$5fk%k=L&F&Fa?chkYnpw)_|t}FJ5{!J%2cWu`@`#c`)$&?*}ooZka+)8AC
z+OCwL;Rxv$r7ZE+xwaoVlKUuBhK3x{CO8Eg0@s{b=k)Jr%(c`F7`+^Vr#WdDncN4%
zk}gwL-N;-fo#5gvRqOHSAxD98K-=}cHtUo!;TkwCORJ|TQ|2=9bwj>#oy$a=Azdb_
ziI5e$HX}jW1~ue?A(o&UPK5~3`}=a1TGMiE#Bc|!H1848@rw%3x@w<#6DZYIqMWBy
zRnp!Ge2?`Zz-0&Xf*e2(evRU6MjyR^7+|n2|#|Oge#CrlrC^asdtg9Q3BQKMz>n86>{=ZcL98S5nHxsBEU)&F&@Ez0*(!cSzI@LG!wU3d0
zvbW{0?4?(i4wcIU!++}5zAU&KCDlhD1$Y*!gi
z{UauFU!IXB8hST3aM@&?}u`0t}-p>BWUc5
z9O5lW>Jr}*j%dk!?SK$B1L1EN{Msv
zK1B#TIg|S+cKo%EY%ax)bJ=z8r|naBBFNA{&Qc=BS)?q_RA=f&R^)puLZE^KhmgK&
zE@vuD;vf;peZmm+5ANkw%3G4KCoruF5DlC{W!X`<*^5S-4K`>eAppa
zmaScFuO_t}?7SZ$W+61^zzBRg525B@rfzV?dhaO`0W~M)KmotQ-Zq!E2dGA55V?yX1&V=h!Or0tq9g!&E~DOJiO)jsZw3PlaP7MzE445nei4lsVo%Sc^=
zxIte_#xlyX#4|Y^Qoo|rc4d009z~82HIf5INCmv#$kWPohf&vjyM
zN&g0@2AApGcxhiH)eVXrKPrc>g(;csx?W|n?v(U{X
zdm)$(k>RS@Yst)H4573us!`k^lxL|?WuoJ3Fox=m;KQh)CtLdv0@`^vh!k;&mr1i}
zO?3nK0geIM_i`SB_B0N8VouZzvkwqXp7Kg9$XbH!dTZl4{dbTCTV=}mjJA{AOltj
z`>mITvkoGn3bEg#*N3(9$Wm9hF4AynjxwEp1ozB53%Ovdl6x
zOs%N8!3JE&(1_fZt3^tem?pLK@0Py7uCJm1t4^^WLKuPDP9vI#{;deW8Hc<0;gw(W-8M+!u-)%LR)MMTo4;v{V7dZn==Dj4D&^LqG-}
zgg?^6L#Qm{2c%2_)on?2ow||t#zlJMW!yPBD3xkCQ{IN2B`dj+)v>}XR8}KR!&%b8
zlw}`+4$}&i<%KD04xvgCbNfiKmir+xc`z?sJT1ElFT`AQCidlFpf6XMsK`M~O6mqM
z#K+o{6R6ImS1nznzAK(1fe~D{*{?Mx|X+swK@;MKSaz__vLTx
zoASO!2$B1iJLa&KR}LYu%6SzWb{w@0uxvI3RGRd&lgvvBAw+5<3
z)rcK)>_vpwv6e29{tYhE)x1)x9U%p`EAN<-$bc56e6dr#B=_YFLhz_tvrgnbHRf*Z
zeR*ZiePk5!Ga*64vTNQTw5II}Ji&+nW8wxOMuvwl#KF7N=PpenjF9QyQtog{h&xGU
zyGp7C4x#8FEFtH}RVI~a=}eI6J^&BOzw-O8>kxt8h|qpS0zd#q+CW{Pm9%*
zNh^7^V~)Ebc%q+Hg1D9!WI(cF)zwu4Pdg&GS(IrB!FJ41t5>1d*EF5DN>bHeRF6*e
zWBVagc3o08BxSkWLYmdTg&~wOsq7jNf+7P*m5@3uS87qH?2YYhoB*m{*f;AdwSwFS
zU8dMmEupe&>u35m9pY{I&FrB+chzBogB%6$|&ev9R+on&aZmiGn%!*g|sGBjw^QRrCI
z4ON=fv|VBNXRKt+Wmi>~C~OQ8-)@$hsr5>KoXl4?(oQi%yNZ|Bgw`vzkX8=W98H+#
zQ%0Yu5NO~nsLnunnJ%g9x}2%5!mP?n7YD90Uf4
zA(TRSJ68|~7?yko94{+-jt@tBskXI&?;38mySB?Zg}$0*642QvS=Ks)*?2jAj*ZR{-ySi{>%)AX;r#
z2?~(dx2!U0gV1u%+)}7akwL^hR;9>&q7!i*B5O5er_oF`NqgZi0@)x07CY3HTO|Bx
z9wLA^_Ee(+#ifg<(SZ(u$Em_0?$TMUGTBL$iF_uOUNu6B=%6aoe~A9gPWAWYxAxmv
z?D%x0R_ur1N-eJC{mQCiYq3oKCU;T$n@>@%p#CDDHYKW8N$J#yB;Y4)SSe}9?
z({3T<&T2_nYGRH?&qXQHcC9MlGreNTSITmh!EeesOH>VCI)qMoEpEs6*?(A8nWAHj
z2$9nxaF?*EHx{V0`yr50A=QQ9D~+N9>|6$4(M2*eh!||lq4dgaLXx2&pXrlf>7w>k
z(;+@gv13m3?`dACwK^b_b(u1##s@;T`Xfg_3uI_+tn-yxnul1Ep~-7`H9|_&4V;#@
z<<>6jtWoaE^AM1pxtoa`52ooc^svi><@4S5a|Gp0BRaMB1*=m|HGP$$P40^y)%C)|eB4
zFStxGEtjfUm1^##*2Gmpxm8k^C}qbuDI5bQax8re458BML#i93cT<#Xss4TMqGjw<
zx9Z=B3{UFPc8LtI?5h0`v16_kJFe03G-b-#uGlg6*ajh`Ozk|xx=@++RO21b?1?+X
z!7fT~dq2HnPqm*E^Qx>&|IQ0jLcXQdcIByi=s?|Y29Cd0$k3?#x@^#CKSb>$FGzlx
zgN^~A*dP??&svpf*@w_fwQxoj9MH9SVvdqD6fmo4mWX__=vW=SbbPRExYcy60o6G|
zh|b*_c{JwoTsEsx0otk0gh@Of{z=T(+=mEVrh14q8-!{T@MNnHg~=#XCXs<$Wr8Ch
ziYP)*-!*fY5N+70&Px{|GH`9zwsE0jbhf!cXkGo=Qzqv0=v1#c#M+)}lwAR)mnoA}
zH&9_B+Z93sAyg)9*W8B)Is7(4Xh0}8=wSFqSK{C#U0#?111DVroFz(GvZTs>gn)Dy
zF(vXbHR6GB(@Br2Q=r91)
z1lp=7QM)N)2vENR3scaK$Rng#{rhys92d7gqPk%vEB7ri
z1e^s`rWYrDh9wIYN_eTp6!1fp6W
zyV${R;uaw|L5K;UEPOgKr_$_c%GBfRbCRDJsmnbL?ONW566!qXd2ERtGxg%0Y8tot
z5ixyN%dRuf&hM+n92GX^byyQ9;ovwi4IeP^mo|;gi%07BIqY+aF;HcpVn
zm_~uCgs2hPu5t*CkRlQ=iugWYyd4}s6a6p5n7;4vL+-+=06r#jTX*_b24}tv>`
zp3YQbJui9@T-cuJ-|RVXVs4pAQJ0B*2&7GN1Q?>^DA`*e9Rp$hR0bbn@TcUyCEK+n
z{hgLz3YK3t7`@HJPV=^FeapIi1)W#ETQ
z)lmK)x~-D3q(g)pK4~3{MA{+2MjWCES8H)%j)u>LDIqejwlD<|qB03)eON^Xq)$t+
zV{Im7A0qZthm_^%JVe{6Zna$>#t?OBiuP2)m?>0-2=TAw+BQ{&rd_Fp2%&{3pnqT4
zmFqF#zozA+{w)lVS84@@fW|9JuacpW$Z=k~8yiPq^8vz{Dv`Ru)BjktmX4@G&EE?e
zxCVsaB%GCI6OE-%o#Gq};%r4QUo|)3@82l*7Fq)g!u
zF;lIy>3`ds?zHSma2*qK$n8IR*BYRj^o`q2i`&tuMlQHruw9WhaV7#~*E8#@e5I;P
zEq$ZK5Tt}tkeJ5DG>50OMo0m)bM!zIk&I2uItSoB9U;|z2=y#9WtWw|qgz|h+K9Jp)yvO
zxNnXaLdtzyzSy!|F+%!hk^9;Rk%h`6L-We8V-DJ`kf8y75d9mDk*iGXSjT|S8o6)T
zsiw%ly%YFg&}j3M$an7stUcAFf3t!_!{&exQ>OJkgvzcodMR-PE)b6iDN{1+xx>8N
zF}I8g!V~IRN2MvGECsBk&r}V@$xOMKr-)LcO{H0|QdAv5DNNHN$iNv!nP(;f3uxFV
zlr;pZW4BzpQY%WVbcnzV91hBCSJJ&7-!Yd(1|n60Bk!s*A637#V~#zDb{;}K3+OUs
zxl>I?+#8lIq6Y!~HMmTe
zg~%cUQ0$W&ehdh)Q>}$5FYN1Sbsi#js_~)MmM-S~5K{jJ+m+y1i`%($5fS2j9U&FD
zkJqtNt;Ow+Elk0jHAsGp00X2GzzOoS1Hc(>0C~(jKP?RrJ~-}jxVbUMoMF3xV}WaQo8|oiwljJVK24l7XEz=2RZ#hAeqY({Vxg!aBMMo
zp{GD(rgF@11IP4qXy%>qYYH3_J{3=)q6|xpQxzjX)9mwLhkfrxO>ty860fT&8+AV&
z0W)W(XX#7F7);M3gr<@&R6R%&htu5I0gFJIMx7#r90t`v^&nz3Z$y!dAvjYV*rCM`
zB=>2@+?pp&h|jwasq|`KEcw(|E$IBlEBBtAOL8TcYkHSY;LXZ2J8FL
zx_)m@%hvYilil@~cHZsnzTencH`skwY`5v{xEri&ixnsU1I%u~>?~HcJZTZ(3fA$!
zMlUBDx5b;$qaH)84}S;$KUwLyV+!Bz>hqCiVxBNI#~&w+^BaSqp{(pIt5fWFb^?1gu<}rsdeF^dJw-h+uZnE1GWHJ
z_r%_JpRJS&d)AHid3UrY-OlzneIeoEx2O`)_|a)D7rmE8@wMw8)%y-;JIpipHuP9}
z2#46%fVRdNON{UdcNmE4?a#KLjS^}f!MRvNXsn;00001b5ch_0Itp)
z=>Px?S4l)cRA@t$T1%4L#udz}0=j$1;fQ1?Y%Ro%!#D61wDeX!k9`dtK{|_1U@y6_
z91Mz_8L~e>RoVGoy{-Zp=ovAh18DSbSc#YUGV3|~|KHzp_J0M!3FzMAx6Lj3jfd|X
zUUUw}U5496jD3Xb6VUhYFEirCm*)C;N;qT46r(IXET
z+v6klqeC15ZsqSvKzyfvv;NCDyI%nR8{ppo{t@s8{mZ<^r?A0m_lSq^2Cv)~dOF;7Q1SCNp{12yuoc#H`Ue5^fy1r*j0U^fnJYq~8y6Ay4
zBA>s@o^w%ozCn(I{4UZ-e<$@W?6SMeKm|75C{5ckuy8e*ogYfP4l5IlG?=5J$j&
zSAh5i@O(}{2*1N)h;Y6Faqt_!r?U74#0iiE?J)R+jn5c-hh6}h17V!$;R|3~&t)K-EQ;KXvgmveq==jXx^jJ#>jZ}&Y~);l$jI@8A$RBt
zFsGEu`39Rf;CKdt?+x;I7!VKXtNcz%39n<1UsJ>%YeifG;$x|Z76>l`i+
z2t-#FT^E1w8GWgQu{q~mZ;Lsth9w|M1#mrrR!Q_(3XeyvkSzEB8OVG=D}w85cYIC+
zq0pFI&xqM0N1!WJGYSY9V7xIMRZgb8&dCps;dkMT{7ON9U$AwMI?)dD0LC
zB*6(i>2J&{Lukq+B%vmynkf)PPqNXKRfJXt!Kf9%b6!g#Gkh&`0cG(Ofcl)T@w-S*
zJYS=xfIHp{0>}>UD-dfHK}sSJzw6si9?th=(Tm7Z9fQ(TFLy2%
zZ(As@rKT2?wj$<>O=?mg2plWIG$MH?^hAyDq6KRjVbs)C1g|MQwLlH>IxDJF;kpjf(NCJWvo#bn#5sBaD0=&@AB@i*W0#XYG%AIe5Zq&u+
z1cJvNT{N-Qg(nzQBMgX)ZHzc%(})9dy1|RM7ohJOjX?U)R)hiZC&2%A)-_QZZW|yv
z+&YJ^BHC3WbaC~uRuNNbvhIkBZ$jMybEy#u1VKOlh%01CeU1L?Vk8so9J;&MopJujnv^jp>$0Y>m7#YYs7Nb
zv*H*0Al(XfePG}{JJ_to=CCn?rp>t96=lvHENn`gn?o}?68Y1HL-nVrJe98YuB_;5q|^x5BR4);xFg+
z)ii=){Q}N+#YZe_gf6rJVboMaX$6n0H)TlqT0TB&I$6r~zLs;YoivEGVC?9*w|zD|9_Mf*x>QXtef
ztoaBUxSe({-eE8FG}j2DCf>cV7`mmdX{{or!rU4=>?5Q(5G*vt~P6#k#h!)Ce_XD%S0y
zFB>}EGe%9?HLW}AA$fH2-PSdkkC+=eYhQ106AySy9d0Mi`q_r=vTNd9{zU}Yd_>zZ
zDK%~V2`B6CCE`$;TJM_XuG*?%?yPm;H8#6%z=Y*pI~>Jo@*=&XG;v9^jZAk=ZkWD$pDOvSI%|kzJUs*9vQ`2%qEN4wx2|F=#
z)kmnIW9YXnl)1^I3sy8e6-j6r7~tnl)Xk2+Nx6
z&aV{_B!kk{vjV}E)il9;ga<=F>zXLm1XI)376{V_nz}aPs9lp%Q%zr2HDcPnwm=v)
zEo+2Ugwm55I^Ba9g2v#jd7A=ZK4QKXG0&PRU74paFw|YQfT)kqtf^{&p3gNx-86yF
zeTeD_EC%OibU$K=n%eZW&6>C$v7`}K4ISIpAB&Gz+8B!Pp6RRlhc97n=-P^yMjRE0
z>a3SFVh)5>kVe~V9!!vVBsKBK&S}0eq@cI^5kg64I^kkXV{iqCKBAvN80Kx~HfKfcpsuEfAmZF>LYHwONyzxcPpBrmwn7_jLMN
z_aM|qEM-jwgjJIPVOhb5Xhd5P+$#M~NndXO|EWYAb04A9bP0qyYt@K0^lQOr)7SaF^>oiV
zo;QXp24__y(IPr>vXx~`t&bozsUVwhw=uY-uk;bEKG;?%ftWjK3k{bIojUHeB5bRa
z`w_QzHQAwCjKMiPFwdH7tF*0%xsTBHwNjHs9968>yQZc62*w*;>Ac?W6)t3f*-rKz>yflEWjJS~(dj#?3|MzmRz
zwXf6RfqB-XUPHUAxPd;vazHeA9em$TWhT
z3+ai+mYU{M9IcP2)HI#qsOF8paC}LD;PLl_e(EFI9XcHzm}gDxqMAn7wU(Od6bGw@
z9)p1B@PJiByD`)b4>0hHIEn|U)WnI8I>ljIr8Z7;C2Lyq5udpiyby8R_ymsBRBCGX
zBbYN$Bi81cR3B;r+qSURDq`xa4Tv`4m{SuMHKd3bsSk{#OW1bSh1xY;ZVcIeggWo(
zo;CL)Osvh^{T?7D8o^nPpK}g#jhH)YPH|8lT8)^F(oiSZ=bz-*YJ^dfg?|Qs4Val$
zSVgq$tF^AxS)UVKXWOOm90cm{z;v#uPH{Ysn%WqA+BKPJV})GXkI;>w>F|K=N7St8
z^LqNK6=Ch`e87y<#7Vz39|0W8)ZWGs42?KA$=8>z=~5$17YGDn3oh(6jj&0-Iy@k{
zaw8s}b79$~b2xwHY;8JG+*?nnpZHO>1I(ZHi-QuF1AaJGdQ3
zXiN**yFQ5~=$K_04l4_vwgK3b@yjw8P{%E~Uezm*?f4zud+|0hM&lTd^H|2U#7*ZC
zP3seeXNm=2ne2A@mx!DvH1GatE}i?wYGanG6+aa52SXFc^1
zldg$o?kAvogZJGnzVAQbVe=NDkMNrjuHV9K6UL2`fna~*We7NJfo_`+dmTbfHy&Y=
zkjgN!>vh!7edX5>BdaI%gA2bk$;$w2PJ>l`xXaB+g)bNJXH
zlf92XJZ6N!BOgx46p_Ir9HI;>=Mx_e+tUdc20V@&LOuYaiS_>gBWXw+1IZd{00000
LNkvXXu0mjfNkgTd
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/InfoBoard/addinfo.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/InfoBoard/addinfo.vue
index 6d96b273..bb7944ca 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/InfoBoard/addinfo.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/InfoBoard/addinfo.vue
@@ -1,7 +1,7 @@
-
+
-
+
+
-
+
-
+
@@ -47,40 +47,39 @@
添加信息
信息发布
-
-
-
信息模板
+
+
+
信息模板
+
-
+
-
-
+
-
+ :style="boardBoxStyle(item1)">
+
@@ -88,6 +87,8 @@
+
+
@@ -149,27 +150,182 @@
import addBoard from './addinfo.vue'
import editBoard from './editInfo.vue'
import { listDevice, invokedFunction, getDeviceRealtimeProperty } from '@/api/device/device.js'
+import infoBoardTestData from "@/common/infoBoardTestData.js"
export default {
name: 'InfoBoard',
data(){
return {
dialogTit: '门架式可变信息标志YK16+270',
- dialogInfoLeft: true,
- dialogInfoRight: false,
+ isShowTemplate: false,
dialogInfoCamera: false,
- dialogInfoList:[]
+ dialogInfoList: [],
+ moBanList: [],
+ moBanDataHandList: [],
+ _moBanDataList: [
+ {
+ id: 1001,
+ bt: '日常通用',
+ mbList: [
+ { id: 305, txt: '谨慎驾驶', w: 768, h: 64, col: '#FFFF00', fz: 48, pdl: 288, pdt: 8, fm: '黑体' },
+ { id: 306, txt: '谨慎驾驶 注意安全', w: 768, h: 160, col: '#03FF00', fz: 60, pdl: 0, pdt: 0, fm: '黑体' },
+ { id: 307, txt: '谨慎驾驶 注意安全', w: 768, h: 160, col: '#FF0000', fz: 60, pdl: 0, pdt: 0, fm: '黑体' },
+ { id: 308, txt: '谨慎驾驶,
注意安全', w: 768, h: 160, col: '#03FF00', fz: 60, pdl: 0, pdt: 0, fm: '黑体' }
+ ]
+ },
+ { id: 1002, bt: '施工管控', mbList: [{ id: 309, txt: '道路施工,
谨慎驾驶', w: 768, h: 160, col: '#FFFF00', fz: 60, pdl: 0, pdt: 0, fm: '黑体' }] },
+ { id: 1003, bt: '恶劣天气', mbList: [{ id: 309, txt: '救援 拨打96659', w: 768, h: 160, col: '#FFFF00', fz: 60, pdl: 0, pdt: 0, fm: '黑体' }] },
+ { id: 1004, bt: '交通拥堵', mbList: [{ id: 309, txt: '救援 拨打96659', w: 768, h: 160, col: '#FFFF00', fz: 60, pdl: 0, pdt: 0, fm: '黑体' }] },
+ { id: 1005, bt: '突发事件', mbList: [{ id: 309, txt: '救援 拨打96659', w: 768, h: 160, col: '#FFFF00', fz: 60, pdl: 0, pdt: 0, fm: '黑体' }] },
+ { id: 1006, bt: '警情播报', mbList: [{ id: 309, txt: '救援 拨打96659', w: 768, h: 160, col: '#FFFF00', fz: 60, pdl: 0, pdt: 0, fm: '黑体' }] }
+ ],
+ activeNames:[1001 , 1002],
+ activeTab:"first",
+ moBanDataList: [{
+ dictCode: 1001,
+ dictLabel: "日常通用",
+ mbList: [
+ {
+ id: 3001,
+ screenSize: "200*80",
+ tcontents: [
+ {
+ content: "谨慎驾驶 注意安全",
+ formatStyle: 0,
+ fontSize:"24",
+ fontType:"微软雅黑",
+ fontColor:"0000FF"
+ }
+ ]
+ }
+ ]
+ }, {
+ dictCode: 1002,
+ dictLabel: "施工管理",
+ mbList: [
+ {
+ id: 3002,
+ screenSize: "800*90",
+ tcontents: [
+ {
+ content: "道路施工
缓慢驾驶",
+ formatStyle: 0,
+ fontSize: "18",
+ fontType: "微软雅黑",
+ fontColor: "FFFF00"
+ }
+ ]
+ }
+ ]
+ }],
+ tabDataInfoList: [],
+ tabInfoList: [
+ { id: 401, tit: '设备名称', txt: '门架式可变信息标志', col: '#fff' },
+ { id: 402, tit: '道路名称', txt: 'G35济菏高速', col: '#fff' },
+ { id: 403, tit: '所属机构', txt: '山东高速济南发展公司', col: '#fff' },
+ { id: 404, tit: '设备桩号', txt: 'K094+079', col: '#fff' },
+ { id: 405, tit: '设备厂商', txt: '光电比特', col: '#fff' },
+ { id: 406, tit: '设备状态', txt: '离线', col: '#888' }
+ ],
+ cameraDataVideoList: [],
+ cameraDataList: [
+ { id: 3001, txt: '设备名称', val: '疲劳唤醒设备1' },
+ { id: 3002, txt: '设备编号', val: 'G00030497B0180001' },
+ { id: 3003, txt: '设备桩号', val: 'K097+900' },
+ { id: 3004, txt: '经/纬度', val: '117.071152/35.910659' },
+ { id: 3005, txt: '道路名称', val: 'G35济菏高速' },
+ { id: 3006, txt: '道路状况', val: '正常' },
+ { id: 3007, txt: '方向', val: '菏泽' }
+ ],
+ cameraBtnList: [
+ { id: 4001, cmd: 23, dir: 'left', le: '26%', to: '33%', ro: 0 },
+ { id: 4002, cmd: 21, dir: 'up', le: '46%', to: '4%', ro: 90 },
+ { id: 4003, cmd: 24, dir: 'right', le: '65%', to: '33%', ro: 180 },
+ { id: 4004, cmd: 22, dir: 'downward', le: '46%', to: '62%', ro: 267 }
+ ],
+ cameraControlList: [
+ { id: 5001, txt: '变倍', numL: 11, numR: 12 },
+ { id: 5002, txt: '光圈', numL: 16, numR: 15 },
+ { id: 5003, txt: '聚焦', numL: 14, numR: 13 }
+ ]
+ }
+ },
+ props:{
+ visible:{
+ type:Boolean,
+ default:false
}
},
+ components: { addBoard, editBoard },
+ created() {
+ // this.getTemplateSeries();
+ },
+ computed:{
+ },
mounted() {
+ //测试数据
+ this.dialogInfoList = this.boardDataConvert(infoBoardTestData);
+ this.templateList = this.moBanDataList;
+ let deviceState = "online";
+ this.tabDataInfoList = [
+ { id: 401, tit: '设备名称', txt: "门架式可变信息标志", col: '#fff' },
+ { id: 402, tit: '道路名称', txt: "G35济菏高速", col: '#fff' },
+ { id: 403, tit: '所属机构', txt: "山东高速济南发展公司", col: '#fff' },
+ { id: 404, tit: '设备桩号', txt: "K094+079", col: '#fff' },
+ { id: 405, tit: '设备厂商', txt: "光电比特", col: '#fff' },
+ { id: 406, tit: '设备状态', txt: deviceState == 'online' ? '在线' : '离线', col: deviceState == 'online' ? '#10d269' : '#888' }
+ ]
},
methods: {
+ boardBoxStyle(node) {
+ let arr = node.screenSize.split("*");
+ let scale = this.getScrollSz(+arr[0]);
+ let obj = {
+ 'width':`${+arr[0] / scale}px`,
+ 'height':`${+arr[1] / scale}px`,
+ 'justify-content': this.getTextAlign(node.tcontents[0].formatStyle)
+ }
+ return obj;
+ },
+ boardConStyle(node) {
+ let fSize = +node.tcontents[0].fontSize;
+ let scale = this.getScrollSz(fSize);
+ let obj = {
+ 'font-size': `${fSize/scale}px`,
+ 'color': '#' + node.tcontents[0].fontColor,
+ 'font-family': node.tcontents[0].fontType
+ }
+ return obj;
+ },
+ //情报板原始数据转化成目标格式
+ boardDataConvert(origin){
+ let rst = origin.map(item => {
+ return {
+ ...item,
+ STAY: item.playbackDuration,
+ inScreenMode: item.screenEntryMethod,
+ screenSize: item.displayAreaWidth + '*' + item.displayAreaHeight,
+ tcontents: [
+ {
+ ...item,
+ fontSpacing: item.fontSpacing,
+ fontSize: parseInt(item.fontSize.replace(/\D/g, '')),
+ fontType: item.font,
+ fontColor: item.foregroundColor.toUpperCase(),
+ formatStyle: item.horizontalAlignment,
+ STAY: item.playbackDuration / 10,
+ content: item.textContent.replaceAll('\\,', ',').replaceAll('\\=', '=').replaceAll('\\\\n', '\n')
+ }
+ ]
+ }
+ });
+ return rst;
+ },
// 地图点位
mapClickEvent(e) {
this.dialogInfoList = []
console.log('父组件地图点位', e)
this.videoUrl = ''
this.cameraOptList = []
- this.dialogInfoLeft = true
this.mapIds = e.target._opts.extData.deviceId
this.screenDataSize = e.target._opts.extData.sceenSize
this.dialogTit = e.target._opts.extData.deviceName
@@ -182,8 +338,8 @@ export default {
{ id: 405, tit: '设备厂商', txt: e.target._opts.extData.brind, col: '#fff' },
{ id: 406, tit: '设备状态', txt: e.target._opts.extData.deviceState == 'online' ? '在线' : '离线', col: e.target._opts.extData.deviceState == 'online' ? '#10d269' : '#888' }
]
- this.getTemplateHeaderFn()
- this.onSubmit(this.mapIds)
+ this.getTemplateSeries()
+ this.updateList(this.mapIds)
this.getEnergyCameraBoardFn(e.target._opts.extData.pileNumber)
// this.mapDialogTop = e.pixel.y + 'px'
// this.mapDialogLeft = e.pixel.x + 'px'
@@ -328,36 +484,16 @@ export default {
})
loading.close()
})
- this.onSubmit()
+ this.updateList()
},
// 回读
- onSubmit(deviceId) {
+ updateList(deviceId) {
getDeviceRealtimeProperty(deviceId, '3A', { async: false })
.then(res => {
var contentsA = res.data['3A'].content
console.log('回读消息--1111111111---', contentsA)
- this.dialogInfoList = contentsA.map(item => {
- return {
- ...item,
- STAY: item.playbackDuration,
- inScreenMode: item.screenEntryMethod,
- screenSize: item.displayAreaWidth + '*' + item.displayAreaHeight,
- tcontents: [
- {
- ...item,
- fontSpacing: item.fontSpacing,
- fontSize: parseInt(item.fontSize.replace(/\D/g, '')),
- fontType: item.font,
- fontColor: item.foregroundColor.toUpperCase(),
- formatStyle: item.horizontalAlignment,
- STAY: item.playbackDuration / 10,
-
- content: item.textContent.replaceAll('\\,', ',').replaceAll('\\=', '=').replaceAll('\\\\n', '\n')
- }
- ]
- }
- })
+ this.dialogInfoList = this.boardDataConvert(contentsA);
console.log('hui1111111111111', this.dialogInfoList)
})
@@ -377,21 +513,21 @@ export default {
}
})*/
},
- // 获取模板头部
- getTemplateHeaderFn() {
- this.moBanList = []
+ // 获取模板分类
+ getTemplateSeries() {
+ this.templateList = []
getDicts('iot_template_category').then(res => {
this.moBanDataHandList = res.data
this.activeNames = res.data.map(item => {
return item.dictCode
})
- this.getTemplateFn()
+ this.getBoardTemplate()
})
},
// 获取模板
- getTemplateFn() {
+ getBoardTemplate() {
getAllVmsTemplate({ devicePixel: this.screenDataSize }).then(res => {
- this.moBanList = this.moBanDataHandList.map((item, index) => {
+ this.templateList = this.moBanDataHandList.map((item, index) => {
if (item.dictSort === index) {
return {
...item,
@@ -463,7 +599,7 @@ export default {
return item
})
console.log('修改后的数据', this.dialogInfoList)
- // this.getTemplateHeaderFn()
+ // this.getTemplateSeries()
this.$forceUpdate()
},
@@ -481,19 +617,19 @@ export default {
tabClickFn(tab, event) {
console.log(tab, event)
},
- closeDialogBtnFn() {
- this.dialogInfoLeft = false
- this.dialogInfoRight = false
+ onClose() {
+ this.$emit("update:visible", false);
+ this.isShowTemplate = false
},
- showCeInfoFn() {
+ showSidePanel() {
if (this.dialogInfoCamera) {
this.dialogInfoCamera = false
}
- this.dialogInfoRight = !this.dialogInfoRight
+ this.isShowTemplate = !this.isShowTemplate
},
showCameraInfoFn() {
- if (this.dialogInfoRight) {
- this.dialogInfoRight = false
+ if (this.isShowTemplate) {
+ this.isShowTemplate = false
}
this.dialogInfoCamera = !this.dialogInfoCamera
},
@@ -750,27 +886,28 @@ export default {
font-size: 14px;
margin-left: 0.5vw;
}
-.dialogContent_ce {
+.sideSwitch {
position: absolute;
right: 0%;
top: 0%;
width: 24px;
- height: 95px;
+ line-height: 1.2;
padding: 0.5vh 0;
background: linear-gradient(180deg, #005c79 0%, #009bcc 100%);
border-radius: 0px 0px 0px 0px;
opacity: 1;
text-align: center;
cursor: pointer;
-}
-.show_ce_img {
- width: 15px;
- height: 10px;
- transition: transform 0.3s ease; /* 过渡效果 */
-}
-.show_ce_txt {
- color: #fff;
- font-size: 13px;
+ .img {
+ width: 15px;
+ height: 10px;
+ border: none;
+ transition: transform 0.3s ease; /* 过渡效果 */
+ }
+ .txt {
+ color: #fff;
+ font-size: 13px;
+ }
}
.dialogContent_box_empty {
font-size: 14px;
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/index.vue
index e6b3dbd4..35feb89a 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/index.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/index.vue
@@ -79,6 +79,7 @@ export default {
this.tabContentData = item.children;
},
handleDevice: debounce(function (item) {
+ this.$emit("onClickItem", item);
const key = `${this.active}/${item.title}`;
eventMap[`${key}${item.status ? "_close" : ""}`]?.call(this, item);
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/index.vue
index 2b99f57c..5acad623 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/index.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/index.vue
@@ -8,14 +8,14 @@
-
+
-
+