EKO9=1x7u%n)79b$jmvvbvoErxII!9 zXjf}y^>enTqxHTD0>-L-J8>S-A3EkDg#ZMF7_r;ktlWHX2#6Hp%X(?D_lK9diFXb; zDs&meKcP{qvDUS#3faT*J&yM#=A5)9jl3dbve#!XyA^!QHTMlvz+~MHKCX?H3nr#x zZ64+hlLb!VJfhoE-kM6PuHqS@CRHlbRG-ByEvZl|7LjE3l0*%(5W%x*F$gT%dpaYY zZ^0;b|MUr~W+z1(nA;4N+J!ttpt$?a%iD4f_D_&S;Yie}fFQpHf{gMHkewVHZLFSP zE{xTBf;spY2y?$z8bGVwxdvB?m#;-u)`gl>s$L*Hfh6X35wO8joY0&C@==PM{0 z-_=?>g=NrvrEeLz^KH`VU148uliYE|UQ4$E!+~(hqEF&ayfc*ROQ^8#BvPIkXX;p%)F VJx29t`N(G@0$!s0Dm$SE@zO~FCgDiXq}0>4%!C@PwwUM_*rni!8_qhZ`O z76iRlk`Ka=q=l9PB#D?&R|(MyZgE)!Sh9z&v&Z6QT7i$+@U%{%dV{!T6s`l%$7gno zsEDkwD%Oa`c7o~MgA MO zKUMpnIYm=zt@>3v!5^rfLU`O J|BoNS^Y|Is>$#X&o4gDGNHbZJL%>12 zhXw(`enIJMWhwN`#YhMIeV90Av%rAbcPx5`PjrPv083p%CdT5lQ75(V?oc(g2f034 z2bEV~SEqf4MA2yB9bL0z1O)q-H*Y(B#B~vE?QH)76$30hIp}%80D+2edWDTk$tl`7 z4O~1tq6pam0d2F`N~HeIdwc_q(7;3UZY$+}`8m7KRai8Zwi)~bdew5Nn?!;$Fa^N> zC8H S37z>W9>K|$%%4BJvJDp0*_g<88_B0+kuX@TLr$Dt2jRTHqSKH}8AfyV zprRLc(!aF#0~E$cO}V 37e)<(@^dqNodm2|%;Tr1% zC5u8dJlEVa%{0<;R`GoVz%*>L>clzWfmNJg?!#T@rNt_MJB)M_09z?|U8*dt$0i@w zwni7QV~rKG&m=5ZJQFU@Usv5aM^a?4rS`=@=~a~P(Jp;Yes?jd#t&KI&$7Ak--JQS z2tBwU<>$gTOO~P}=ZeOH0#C8j_p0-WRHXID1A5)(t9h19=gz^*FCn0Uw3E<#S#tOW z0!SyaOSX59yP|@WHQ@Np8gYaMV@RSjyi0KPj I zyyYOQRf>B*#&%(n_0}h1=Voi4eXLAp9Y>q~cJ@)|Q9>x>eV)mK2DEbnd&KUmGu}7c zg+50Y|KjalJ--7kHue?{rbb4NFW(nwod?IKsGbi20)p{hw12St;Q*r)r9LbYAh)XQ z`S5+8Wk0HG4%07Z4a+N=7BBJ6g2h{;(A6ZcJ3HoFWlv}IP{p^z2) h8LT` za2OQ8CG1De*Tg~95pHR#5ls`nWV?7}8i^?xNr(AKP(9-nf4yRHI91HbsqtIT9{+W` z%VrU0Yaz}An=WeF k2q+zPa(2sskaM- z-gZx*z$;1PlUECiFyb+Li|sCbO>u3zc?B03@ Qb)X+Tx+jz(CT=VY4Z}v zxnD;kx>gqG+A-D_k oZKs i14HnO>x};KKII8dQWG<#vxHR}=%Z|V$ zGncap4y$W7Xo)0>WLf0t280# =Ur??^>HU{L*Snr*R z=PET!r$j0>rZ-% mK1qG_LT|LD^N} zaqQ~E8F3>o(p~_ptiOS*hY28$kl(A6X>Ksl1%r!Be9tc?EK6Am2Q~l~Pmx7H+9(~? zF;tD&*Dd(|lT5UdFGdoaHXtDU241 9DUROkTJVdHcid)R%f!E)x;rx z#(V}ll~(yP=zMl9$GwPAYhCN!Dq{cozQeV;Me~xj%L$a>De%uxVz2wiS8UlHQ+tMx zZ=i?H%!iPMJ@bh4p5Uw4i3mJ`{H&<+gag=hzBF?d(=;6V@#RVN@mn~96C2hvz? zxDrr&Ls^ybm#{gIrPv9+&=d{!FDk}t$=3fAn%br^*6wwAPw9SnKQPd3LXPCa?sl=e zxpt+TOza9yzEQP0RL* 4$RPVu?u2JTv!}G>koU;;W(>@l*T-o z5e=J5DC1n79sBXn(WR}TlBk!%p3LF6t8_bGz6K@xrn{HD>Ha0g^izh8%;-B$Z%A9? zBD w}{FL1%!14<6x?e*ae`F9gG|7OR76o3TsFJmIE$` 3Vi@Ktwm$h+q%p(t3_+5#fs3I@SWbz#;q_{^p+Exu5kyiKZW0r z?pcL+FXje3dWL8#4!vDTHYvqus#%ViYpt7i>w{-oCLUCkk-}^w9a+}s0s|a$ nO zNXz5&Ou~5Yi3h{td{@;a4uDX>mqoiI%IIoq#WE!|Nd1f_kzfzIBg}j-Q+ir)rSh{z zZFUEFk%L6J+0!&+_QKZtJH<3cN$<8~x=c+G8V%?CLZT$)^-r>RrCK?OF=dvb)S}&C z<%TbmtULBOEw+eI@T__!0lK^pH09luIx>hmxWoOj=hg-ZAzy{o%3U$F}=#=4e#GCr4Sk3cjx2tHo_ {pql}CjnyC2$Tv}hh3K*H zazWEWy%5%*rE7Twsn)u>P;0z>7g f4fHM5`gqV}Xs{OO ze%lY+7+PCF_;Nqb27T5?c>7O}^(-b%DOJG%ISU^RNGNE?son%0@M|#5y98I6*IlS4 z(kK`*6&sdGmd=CQi>m5ebvP{rfTQvkr(4I>f(CGA`W!hZ^9NKe=O^rs{4o4FX=br{ zyxcIS5A{*{kks*E`~EE%ddZ#TW%Zc|mk#kz^zPegEqU5 = z&TkogC70jXL)TmS7*r2T 7gr9{HZ ziW(JzEzxL>>g2OfpvxrMyvYs1H=Ju+>tKl3)6j>n6>XkL8^X%pu``c#caY+6|G~Hd zsK@mB%97V3A`_wiIUfn4SQ0lZ2=h~PS8MmL^vt!@$OdAiYk+#jM0@v&>pPqomtKqO zk7QHxo|T%VY}q1LDocNC1Ap7N&HX854!BFd0`B3Fo^5914~dl)G>^>Ak?x*(NFmQ{9q*|_74 s`8qy z)>=S7QCUE0MitO8B1LE@Rcp89_elh7L L2D`-m>nq6&o^5oOh1;;p?~W>L=VG zwnDw6=9oa!#cSY$&Kci jZ1Xx1^Z*kZ#J{xNktsa8|Vh(hqATqq5hdB zTN^dDfd{5`=wv`Z5dWO$j&7Dlf6VY1&BG6iqL`1-J&(GL{z$u3(K=^!_4AV>Wrgvt z9OWYdAwCU~Nq_6Abf{A}^pA0$-KWK&dP614p4nsfQJ!ZU@>P#gU+vWx;Kvd917uce zB{%aZyPZUas|#-r{dvpdwp%Z=!LcSc9>*l@5R&DX)zF@@QW8!5&ZU*hTvEGB_ZNT> zB}}t*`@U=0Op?qOzP6^j%ko2rwJ-xM-l{LMVCdH4NgujwTS_VTkNdHl0%&b48*NQi zZ}P2SK0e68_O{I&LWi1eQmEIetB7bVCc=gs%F!dm%gsKX8fyM<%eP~zL9*(5CBs0k zhILuDg3*+ne)id zFuIFx&kcpma!ABpjL2nqw_8{#DRct29LfB9LK~@;+u>m1p41N~$NO$LkDnv; J-OYEnueyEPT2)NkTxWF59N;Ch9utWWV zo9^y9%QU5H<`K q9*o}7$zdzo?mk{e8rchM?`QrT$Hp3hH5^=6Z^T_ zvFmwa!UD=!ewI)lZc5MqPFJY3nh3o2tB(r9Wk%`RIv6l2K9?Xag6WmMQuI&!=^xa! zSG!Id(N!zI8WBnL2E9}>lcHF6A_eLZf+4&LmmHHzFp5~k*+rKCU%kzu%Zl<{n;lcI zTq67!j%b!YMRFb9?GlPow-O~j|0;(wz8T}eYNcjICV?6<1C9urWxWlq217&n#%X#N zMTSZvWYs%d!;N=_PVZ=O+FAN1C9icpXw91M`fyjhy9BRxsK8Sznm79*^Q}|6#1u!w z4fZM*j4&lMRsfs3NTnXDRJr8yxAYO?q4Al^p>n_bq-Dz)7TJ7tfa1>KEWc;Ivc -O7;#5eVrhxKoe>VTOfjP8!{6FhhV?#moAZaQJJ$M!9>|n z2>jC6nBmE_mB&)Lgq)ol-wj*)2MYn`&UB=&RhtsX%1b4h3RI)bx~K@Xm3$R{QvH&j zQ)qZ-`)*uzL&TEj2tUwl!ZGTUVBF3t%GBT|e|_q!wi`l=Vfq^5kd!Zk;T#h;&QVIb z!v-hT@9j1$+JY}ZQC!nTrGq}0%W!%Izk+*R$UZ!G`}Ulmi(w^%&5gF{r9g{b0o0sb!%F+S8xg zI5Bb6+rnHpCyortnjILi@*`~<0mio&6f#q|nth+Cy8ATWQ4{Df@(6$4x4%Ixf~HUH zWtegr00fI+=k~@hqpu|mA%0y)-^La%Bc!U$%YqEcA>kRGM4lA1Mx146(XUDjk0$;o zu$>2sCXN0{lLl3ZY)H^PPrP$rJ3)Vt^W(G#_g6(*(eP;n+bRwjqeMPYfA|EZ*_4Cn zFKN(f6*N>#!mn`N3pTT-9-uus_7))(mHF+97n3L~5C|qKiWNEM6lhA*vJ`3N(0IYt z1lDLt)9S?w%eyNb=@lt*XUxQ56DEjByh_$|qAN|(Y@~}%!l4_|a8uPxs=KglfQTAO z4O69^u;ZvTwELV`_tREA33z!;Z*{m 1^d3 z%U(`@xc?P_ S#Bw@X#>-72EWPGs3`})W1ENF >jSi zrgVH5?v{QW 1Blkwa^W`6U-M6ehW0@lO2+PIFJ&)F zjpv@7_{zud+usTk1-*yhQUIF&aIt>CFVJNG#^Xsykm}{`@v|>v%A-AVxt00udMGfd zFNh2Q)$bmMw%8J(2%wjp^=re?`Hr`e{XSIGj$iv$vfK9d#B4GvB# _Z5^Y#_cNEv+IhU?Aza~)3+J$MmYYvgr-5^up`QTX{2 zRX@FCg798@RxWQ{O%h!NozdXF1iGGtj*J2wbFK(yy z!C)dovXOgGl^-$GX%j~DxvJP3qy|3&f*zA16$)&;>L%psRP9_#*UdeFO=BS4TC4?3 zEOm!?oSG9}^$95%s4+88%t=bnFLN-~XUeWuQlROQ %A@v3J5N`?4 zz*z-D=OxQ!S-Ff637;AJSpxe 3(HG)@PlfPC)!HpZ1>) ze0wJBCaw>TmB9DcHO0@f$zS8{ADF{CnW=|b3PV{IwXQRAzsJ2-hw$YvzfAHPf@h4V zll&k?jUc_x?#b+1FSM$XcI~Y3@S{^Zzt%_BJki*xT#eDOMA>ZS=TB;u{ObC4o4R84 z+H>Ymgxi?!KP$~!7Wx*7X$ysUD4;o`l?*s-SL3a{4J`}qo!m=lnaOSP>WwRA(PXi; z9mAqz{Wk?&njgXc|D+=@sR*KDZ)Ev07w*CC-0}!~wgSwD!~aD?_e5D5HzwZ0fZTiR ze~i4{Cgp xahwb#PVKO*m0yl#x(WJ2>dkigil<>S_7Z_MV^MUA zzmuFlpH07Wo7{<~tLl=!=$F GzrVvibc(aKg zin4s!oGij0Id~0-16W(FWvvI#M0&IFWTm*iE>neiG(*|32esVT*c9)Nu5zd53yv{U zZz{%SI$6e`MFx20&$T083PVA0jM+Q!3>~|OhkPkDrbQIi3`$W5|GuT!Zby^arzwpe zPMR}v!#6dx)72R}p;0p=`Yw<(Z~u{msjp`<$&H6aN7Vj|w#4QC$MVkv?*D?b-*Vpm z00?6f5Kb)MH*iP#O!oIZ+n?x4nRhcF2VDg%^AEQrWhTjsZ(52IE`H lm8xhxM)d@gyT}lP*4Dej;Gs#1 zR+QM-)Y-6`jwbhC#tJ!~7IZN7nNSX} )>4SFWfKdfFsQ z-v+Iq)eB@ol9BxJ7 p_A{X?f$CB2-P<82Ou zi(2wDL$kW97G1X9#9XENN%lM?76>zG2rGoR{e)*>8>&PcF3}8U2YoaDk_-QH*Z#Mo zn*W8W8NS%pF(8@^z WfC=tzlCN?TTN>FK}bm)8Qg&K2b$bLf0j^RPp +`p(IGrdz}MPEDX=a6aR*8c(7_{38|T(EQZ}x0f-jh+g9OsK6+zuO* 7wH~B1mw|fiY7yyY`gtJz)D459Spkp;BcPqk`9%P zDK`&)J(5Hqm2F-o RpW9QxmjJG@fm8i2rT?kEdddE>lIS=47SI>}X8)_M=--S6 z=Gy*jPe$_r&xwJK{NEV _MgVTJfQup@#61nzmIEQcKKyG_qPCO zU@Qdc{rkB8Tc@9j9G=_LpwR(s_>=jsl82|B|8EEK6m_556Yo6HOWyy);D6fwG73LQ ycpi9oU{L<2_Gbw%V)9EYUe;m!7O4JT=KK~VD*^e314IWw2hjiqz#-BnzW)Oay5PA0 literal 0 HcmV?d00001 diff --git a/public/neDataImput/import_amf_whitelist_template.xlsx b/public/neDataImput/import_amf_whitelist_template.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..509ba8f78d8e015f75c4955e1907c84ff97eaefa GIT binary patch literal 11207 zcmaJ{bwE_x^QXH(Qb4*prKP01Te>@?B$k$t?vO@0q`SMjQ@Tq~ev7{EQ~AC3&L4Mo z?@pZgoO5UH%o#aJa0ob%#}O#AF7WvIzX1#UVrXL^XK!Qcz#s=C!vNlZ`9YT9M{7s} z3If6e1_FZeJJ}msTY6V3%haeL32-J1z_sr&qv49NhH$o_0tBj^LFSa_;G!8gi+FDn zQt`-oH((X7_RI>y1AzrSU(s&sXpwOEn+);xLhi5zjA;tptYJze!YAjP@_pZ>68hIB zv_c9sO4XHeW%w_W2R2B`VTOfXfG3E+he9r(+~VxybBt0x? 3o2fgk;y{PU(HYW0nXzA?>Tp_NY=52v^7i)X?DYG^_-9{`SNl+EO~h(p^Spf>9eQUd!sET% z&eL1sR{jLmG(@S69SAHh5LndTfi tN(|%CRaa2}h8KxcjrL$hf}gHa`oxS~)*i;yzb$t6*m$wSe+??$LIWu{T+@W~rD& zd`p;`L@S+`wlcj47BGUrFHTSs=A(k3vOkcFH#g)$QwC>(B9gmGv4pfVfu>w}BVF_- zD$cCwZAc3(I@Em7UH`It_m i77Ai_H{f8>3&tz0N4 zht+5rK{Fq3c)$lwR&x9x5bEH8S=FlOGoHGpB9)*W()3(X*}g_%cy?_@K^=Gxd&F}O zh`l#=EuHETSkDs6?~|m@S=M1&?-u#_Q@p|c1X&D@RD&7_GAa;c^glp$a&WY dK2&))Qb>Vg-{CsM1rX))(yw_FqzqMN =+v&*rGT zDp(eJHZ~nAH_^QymQ3&10X9ZzF-Bs7!bP LRCo{OzpQXdGR0$)C=qvqB*jTjlAKusPtV3d~2%aqkeh zN yZ!NPruEK>@=ydaiI`w873XE zx!tg1<`k8Kx9d5=TU(?v3S7w9;ce8wl)o}{qdcK$4F_-L%XgY2VSH^=#lP8lHdXRf z>df>*&xekfGngyn$-^Q+-WW+egUs&K0+iXjLiN_-2*j9yz%x0Tc*2)3FbDYMO9t4_ zA)l9GMGnX46H ;2U--!49Vr53Kz367rB!m3)4YKZ zn$RLw9VMUO7u^;IuMB20y79?CiTA>cF1O36$9&~#+Ea qX~|9< zr`4HH?GpoVs#r%*26b1*%& ziAmZHyUVs*n6Co+2nN_hq*2=b?(hnqll`@MUzX3ttfN}HpW{(MF%)u=pb4Cjcy+ZG z-pE`Wu{?8+ary}ga}vl2_L)| ~U)&BhIaX4fiWpUzjG6!~veQeekqK4Yc{m_+pQt1GV(W??|@H{Aq!55jv zLHO #is^FF@tmyn~>; zZ4o5%rjaVmnGTp_dl0`#*WlY?Qbva?;dg>{bJ_cv#%*U(WH-c3xa-x*clN1|-qKi* zYJg-VsotrQ2XiuJ9>m*&=E2zYN&`Xme)k+fHt%DEEDlo8j?23h_SR^E)jB*W7`=xx zT3^2hBG>O45F J*X!yYbQU~6c46`v%R$}(otp`C82-i>dWTiq3;QWL zx8D@4D@K4!ioVEG)cgDF@}m4YPpN&06eJF>-^c5L2tv&F< O7GHso<#e3_9h7wz$#YL) aM&*F*%m{TH~ck@6D(_+2x)@F(x@pmsF;d&lT}h*Al<|sFt+Q zQQrJ&9XEPGob21n>;*iqhlo70r2GPH(!$VCd7lrOP+p#n%U=+$Q|PfW!DZviu0YqyZz#YMq0$d*Cn zFxMxoVtj+etrZ4krwp5EnrBBCiY9xBai4!bpTEL fJ|~WXYAt8h%9nF|P^S1h5gI9xB%# znodeOaSDi;M`OU6W`*cM9xK^C+!EVHrwuptL$+cK%5n-En_$){L!W-7g;Hc8e1==z zESe4OoB34_)WN+&5ZCa5M7w%c4$wAh_yTd-j#C371UYE;-50}#ZfE8ETY_f0hWJ<# zIJkTAaO-mU8Vk+Or@2UB+#7a+9TlA|5PCW5Fl_*)=9Se|N0SAV&SGC)tepX6GH3ep zu=ySy$3(=I{4L#o-?5L`12DKdni^RdJ$VOcj|2_=4g~_zi~sZe>u<6j#6R}wp}MRM zo(M(@$tk|5yNv;bGwy4r!r5|7(+SaX&B+Z{-YXfFhRP%yic`eu*QBJvue2g-?F0mJ zRMr*vq%&YbCQDnB6PGS!c&t;<1OyyRn<`tbx0_b(SiG 2B zGB`~|`Z=s0K7kUOpo~#6tYeTm%R9G#`+V7O<#*U|a5}7hA-C` ptuxMD)aXEo9 zJO%zZitT
JL z3myc~P;CsNz)V7v)1TIQ!}SH_H2SKvucXa^9OX{Hg_c-=Z*Cz@W4eBRP-3&{NQ>v? zJ=NRG`@X&o6AEN+PPdCMn`_r9@g%O`6dM(*1Eu`8-v*G!Y-C&B-rlhA>%^V%dtZ;q z@_X$;3qlUjzCFE-)=lGeJMHRe@j9OcU%_;h3%E9uBCVGWALWZ^;}8n7c!?8qE`C8G zg%A7O$2wv!JmmT6A(b(oR%q?!68b2QN9%qxba-)-m=wn4pa)9`{wn>>r!GMJyX3be zXdU0gnXhE&$&D8Ix&xc*7C7w$7ZS5a+0L^aYi(Y4GC4%739m7U2MK<~=YP?;vE(U% zuj67yS-VLBI8vN!pOh3&M@kV+f?djB>NMIr#}PcVt#n7O<~(<65<=1@#egs-*tqk5 z$*R+X4lqdX=L=U)JkeAW;UjTZM2)k VzA-gO2FYiJ!Co#$@2(7%8>EN;Gt27WSdtmfx}cXTb}WPEZQ?4$lZQibWF+ z-v-Bn1Xf9uZ^pzt<&846(Jf6>cyILU5vm;X6nj|Rv=@vqzSg9!SuI#YEtCb_hU|0~ z7&pOOGgyvsyM8!8%@4UH+p`MvTFCT!@CejV8o*kKHz~%huUd|rZK|1b>w)K3Ch1p` zmBy(f8(P+E2V*^G&xm6Qlu>xzIS%8sClLVqd{Ir0#1BH1Q100!aY}o06Rs(lL1F=c zWQ;xRjtI-aRPkxqwdz%s`pgc>!b?(>1`pG~nG0L5MaoI+qV8>}WZA0RXSCdN^RZG? zH&^7*%GL6cBPwjUiMd|}Rcb#`vG3StG} quK0eIep53*6ul`|Et1ZkB zg-2VOmTCr5a#WthbW(L66wYoQLDY5}kZuR}D*7!$&>VJ2s34i;beei-u9yh{$Gy5T zU?3C{awEo$I(xp2xq^wcv_h_2c*O8fw|K^}LOTpR&A1}vnFU@X@k7Eh6myO$LssHU zYUl>mth&kwb&5@N5n%>gf=tllAWwufXqjq$A?mgEc8n^ocMEJoHEvs1)1M|{j;j!c z!wup@IrrnfI+K@j!gGAfE^Fh79Ry!#tijtEJ`O3l3AN8j>3(2Qy|4%2fUyw5_d%g| zffTJ*NCL&8ULOUF2L)(@?l |`cQc?hh&c5x9_pYF^ldjFDuVPd2~qz!oOfuYAeu{ z!kL^}uvQc-kNO*7u8wP1a8IZ76kRTI2CX;tFsdDxDAYm=ekD|U$cIV%rjv;^$+r@? z9I|@uw}t#lMR!~qky(sG?9Kw@j)2=VTD+)Y(wLiYNTXRz_e8Wh;TmIZzQSnTQ>G$R zI)*z{F%(POxx1{R8edb4P58<&xP6q8KQN&+0a<&?M&9ED1gr`C^LKRP7MVVbG%5US z_jbdXcgT5jvgC)p7L_vTZ&*K&-5L6SIpO5@#*msttI!oYqpNsj!IWwWSWP+}U4=7t zr88F@5Olq?ToY^`M4)RxVaGD(gFNx1wOIUW3hlaJSUgi-YoDujW&;nJUAB&D>Xa`6H+Pt=JZbBiROwrq6+C^W$A$xO6amV{c@r z=xG0#WId+MMiJ5$U`&r`^Y=i;Ypx;{3$kEnvo@j3(Fpfh{H0do3S;BY?|0U13i&-d zo~}rxODPH_&G}-32YOruttc~f!5+3Jr{6t3gOT9Y!fG4a+middZ)qwgHt&w>dQ~)E zikf3h1(~>+=E{1fr7(&*0Gh*qfom4b>cm-8NS2F&Bb5rR0u9dy-m@XFpnIi~^?A=_ zakMY%Z76?-k%!wt;>akXqg5I`lrH??hBEHWeM{o-_I2o1$KI*z>dmk>_~VPjFO#=< z^Al!)=3WD<1jxT$XZ3AtEFP_WulU )YA%U8K9>M%@d z;`^PY*t~Qqd0NTwW!;X~b9XO?LYfQwY<=I?v-sTDpd-S=H$?3tX3R-%vRSuY7DEKW zJb(afFbVkwHHmbaVNZP#KvhxctE~kEl~e?!r_@+mhop%NrK|0>eDX!XhLmA5_Cs95 z9YoCgIgfAzU-}DSKo01URTv;@U6Z0w7fRn18oqB2b!(%Zy+kLPXGN}J_e`e_qb|JQ zGQmBAkqx8KaD~6Y?lV9qR5!Br3*LBB;fjAIPh5%qrC|I+!8f 7K7Q4aHeI)1^9QNYJ67Wl$$`s>5?HSEf=A>}Cs=(mtm~qn6`L?X=5N z;2VWR>QwHjz8+!SJ)-yynTFFcD8($Zh}N^bgnT-{bKK&Vb~-rAtx8csvRHH9dL?Ql zKleeT4fnFKnHRUF>v);ff=(W${V0FMsWEB_Q}&ZUWBuJ!=>f!Au)z{%#V0us%#Rs# z1c0^E8dAt6l7T}g&E;}7UvBUbmj IuSH;%+0>ULE1r>{tizU2hBuER^49Mu8 z_a96>wD#SO>^Q2Bt$L7T85!hl-4|?-UZ<__Itok$+mNQL+4@vlTzfE_K&@exeQ0cJ zJyM6qrAF-gY`xIS9Z=iAg4>Xb2PHUy7tvmmpBL}{WjNWhHa|$v(6MLV5BIab4UB5D z+g6B&q$@c7LxyO&=eNUhtY-O8FWXR?B{X3wRFQM#om)}ihi_-{jsl_TwIY(*wK&?n zIsWXW!n973X_XOLdbPSu^^0PjX%D^?v+l6hfQIta#OruUlCH6(B^*~0G(%+o ==I^){ycdX-82w^svLBLu4|ueJH#$)KT{bJYhlh%Js+ zgO+{C!sttg_P@oXG7Gy9Kgi0y?dYg6O=7-JG^XF!^vEqnnFaHq8#J%#PksqWUrt|P zlRAw*eq>2BEOk<)RT0z3SZ-z(+GdgTg+IPGrP*+>2+N9q1hJt+%!GNI(xjW$V<=P8 zS7K;#&=~xsi?;TQfvVbQ5+4ma&P)#+c-B(3>#b_%vuBt|H#VvC+Gs69>emuo6ed`@ z`q&7wF_!^W!HgflWA%!g^a{#En_LIhZHu4X@O%vM2SgR2cRiyem{?5*5tXmm$o4bI zw;PLH!pH6njN@lst3e@L;dvP#KLwNaGLi>YzQmIEqJbhLq)36!x7Fc*Z(M)2&7h8y z`&C6yt1b3Q*=tV={kGL+pB@{u99x~OxZXX-$oI*SQ@hxlUU-o?Nhd8h4JA`!55|U0 zxX{KsdMp)El@p68pZs_~nm+G#gT2lKBT5KC6~yDs9nh5SVAPNRrUN+jxt2O!_?vhd z1E%>I0a~m|ScfwL9+f&aQ_qB^VzU$lXuXAur@QPsr1}`h24n6O+QR}(yRNrI``+Yk z#-kZacu~Ev#?(4r&mN XIC>}|-5fMT4KyxP<70)DLS;!t9 z5Lmo20I$CYjU0EFr=pY!WQr7g89xd)KooQhzc^e&{fgLRaG|sdAfmN7Ji0hM8pU(M z=ZrxM*~F4>rzWKRQr&d|gSq)ZegDSCRaWF7A4DwQjFyA~avHiQIvNB+_F`BZ6{l`q zl=0n8s&I(K `X+LSpip z@I)e!EdCf>T$ZF0vu;+|lxK5dsGC($S+2@>cgxtA6^cCcQq$+3w8Se-cO=llb7;)Y z=IgU0&$bfCKcTHFLy8%dPB7H*0(Os!tc;Tw6iH-0M>e|0Z7d3yUAg Pa z&h+Kj7KU?FXu&BLlmx}-Ocyk>I3v@obT*`lT{Cek)lt5e7p>L8RrExNq1Z(#*-(mI zGayfW7FkA_o;B%I=K(k27cXUyuv>44+mVf^YS4=_U^}oGpl=6%j`(Z_C00Xc#8+4j zmC)D>W|!!503NoE{G7zAo^nMZhbVtI3P~k;%n-QPEuxpGIjh+`Ir(S9l*)y9`EW?$ zQLb<@{pU(5u>PdA!c-1^eKLK8Zjq2hS;Welt#+hU1JQjtr?MuFUo-Y_YfG{u6mk%m z9YtcZ&7mdwrzRD0`XT$r;{_ze7N#cA*wwRhRNoL7Q%`l6(Iuh^##R~H_9^Z3oA<@+ zQ=9dzR@BD^b{iQ)+QweO{3wfDoWzUn;Tgme>4JK&` @AWz8q3ME^Qv5H%#@loDV|2m3e DT7_8Op|Cl z2=>d?Obw^!*Ngj8_Y z+gqhdSl(qJE(V9Ikru6#=5!e0t!R|iK`cwn#5_*#vz^`2mGo~%j#q2C=v+#plw1fS zZuN7o^RNgX_%d57%`sqSzU@TtgKinS5LAwzXkld*JDj2hql1W}qOIYfgoQ8WcL|TO zlIt^N*>+%}znVx00tB|d*OY>gHXz0%jEr+D@&2y&mO&)2y&Zf{8me!1rvL*J^<=f1 z mux7mz2_IDQt zgn5 wmBO;Up~AzYVXWB@me(B$=t4$l=Cs5u znk!2fuT5A_h`y4Hg^cTlRLNCUV0R6Y1VQ)gG9X|~)FHCm?tjJ+Z}b*W=0gH^ic1(C zswR$(T G_niGFWjnhZQnFNOwq+}#W4@EM^QJ4LKH3!C#S{&kCD&i#2KTfE{}z|L`>Y-6 zUI?#CguaIcq %dE$DCb=* zvO%mjplD27whZ08S-4q(2XR>3tM^=hX9}$m3;(Esoia`8LGw;kepMCw&RNrAN3YcE zfH1+lnC!UPyxw@qLe$fyMP-KD{q8Q8sK|atI|$*c#?qDWnC@|?Z3Pj|nCiZsW@VNQ zG?E9$aK!ufu`RDkszvrT=`PHXuIeGoI~G`jQ57P+q;0Of|GgXuEH{Ga+8bFuEu6b^ zIyXK5|62hT&*A^3p?{<-{xBlZ$%xW@?0bx|-7M|$40X 0 C@o}~V g9;N6W_qG zi$vh3Vq-c)5iLN1V#wl_R*M~NVvm*#VF+2q(5=A4#7=u#)R<<~fEbrQS=RmoDRWQf zW}F)zo35Ds8C{Xfzhn7VY4@Mt?6sV;KLEm54}=pJ_zBEaf08|(T>LM6`wLxZ^A1K7 zz%^j`)nId6YMg?^rlkbY!Zh!@$nLmcI@qC$p3kMWM0PK-@oXS$pqj3S#1@uDID;6Z zCZS6+s3lOoNS8GoV|cKZy2!o=s{Z^IhTxf$SXq&cO^pqw>2Q4SWt6b DxTZZt?^flVYNHIL4o^;kZE?+zCo! z5EffE>je)I%|lXeOQ&Zh=^Z$|F6!n^9c^~#U(i;d9hlK$w`jNZBH=04kF)11vOt(h zLRcZf? J*SOCe>(xZ1-4w1mEbwolVKHtN-xon1Ro0uUhH?#eGrMAtNg zrcWhSN-<%ZI)R7yy|;$*^SPc_*n^D0fD7Noo^6eVbY422xawtz t*);u zar~JXHhMvYdjqjJg#3AcpebZy?Feik&{cA?HFD5?ED;pP3|O}_qKI6_enpP@tgQbf ztB@Kjbevu@dmP#J5H|QklHmO7oeY=~n7klFvRE+7^&&URnO+q;m%3nU|6IytC4pqC zL>@Kwz})o(uctAr=$qKlVZmYccb2S;EqGEK1dN&Hp)Y9+E*Mfi(zd}2ra((l0N_Q1 z-y*Uc0a8M7PI`2XgC$K!W)r$K{1BlHC_4pvHm#)7Kg-04R&F}o>AvqzJke2A5N7U= zSHXX!po$R-v9;MA=_q=+@j?Z|?=<=y2yO$aGb(eTrIwz$n@2{<1Ik|X1IfW2U%_>z zLZp;%5MjHVoD30po7*PFOYYL~Wte>TLV=t#Qld_{?>y;7l2{qs9xET~>sjo4#uASP zKlTlXZVTRMOfVkEQ1IVHF0117Lc;XzE+L_I;o0KRp@E}4?S v;Ea0_Y|V1tzW;m z-vPJ!-%9`22= A=xi_?D@4J^C;H6D!?03Ip>9r=GT{D~3{@o%30 z=|rD~h(|>~Q4;u_?f(Ugr*fWl68)0%=I4C>=qviK$v-x&{2Y(gvI4gk(AwWxSpHn) zr%f!6oImHU^MvzBOUqLOGM?0Re+h~KcBTDOmG`NHrxmha62dTlO8C28_Fwk@xp;g) zIDpFkcX0cs@lTI#e`z%Oo$c2_?$aqht?d315D1KgK)t`O`+rUPu_NN=cwDqFpbdX9 z|J@()IP-sYAdgY^=Xm5b1cuZ QObK&FuMZ%Mq{1l6)O&h-i*8V?p Zeu H52;s=K=6B*7uzKptC&%m)AC_rDt~@Q0C&p`5*qtpkG`kPHoY1LiNX+yGi5 z8c+}rCNK~X _UF%1~AOuBia%vyvG&V|+c{>v5g zZ%k>06dIK3Yvro&2s4H^NvdJSgb2Y?Mc^YKmyoZqcHgs4P~!GiM nZ zW7B7Pn{}e(>|9fY(D~8j;a;~9Nk-Qu-&<(BUOru4e!ELjg|@pgCrT4ewQUd1KPTB0 zB5em*3g0G2o{L5|sxh%87`(&OmtAw9L*(cTX`#$Gq)>PGSz&U2kp%Mk`uo}G{l(=S zwQFXv4ns(pkd@3 j Vx z=Tk6|F$X%g>9>@VFL5=h_saw^sWsqZ8d&wb5b5Da58pGAEqd5c_Q@Ow*rh;(yx3@{ z55GOB uY7`_EOb8sV&V@r-;qLHKFX`4n zPmVsb^!poBYwS&(nnI4Sgxj^f!Fea`scoUiSiVn{86m~%GfkhpRKbw uS&9SC>^SdYR)#4dOo;$;Xjp(NPiEK=QWq zxv_!HHvQDy;2skbIm=FEpbs?#!Lfh1v;7YFC&XfKq#D#fh+hIBM*Ra~CkICxt4ELv z tHV_V+c*A6M-)XGbWUx}i-ONDQEyFQ~D;`vwm^-g?<}kG??d zUBj}}zq#dDyM^ivv21qB7Gz_rmS`*{C|uUW&wGj$9^e`zCJbX-_kOe0Jw)$y5EVoX zmiA?a!M+-F3x3fnLnqPw))94F2&Zg@WPzkxBl-TsD*G;CmDzD#=@S?3u2)e$aFDO^ zmO{AZYO_8XJMh(M=K0*j#S-VZAC+Wxgn!**$MJ0be4VlY{Rr*<_8#CsXk9Iz`HdbH zUj{oM_7Q*k4IqJ`jg^(LwW9;mBk=X|kA4HW9lpIMHbKzJc}YWaL0eu)O%D0)WB;-_ zdy}{XIbBP;|C`kw_7kfMp3LTQ=&pR^ZqHRI^7GM@Oh8dEy8F~v5%JL*unCNc8RzWq z+m_*gFc7$* %`-`!3^%fNu`QR=<#Wira~cnt2(?Zx^qVIRI*KZo9kwygU5|T!&YI4$nNED zt0d1u@%;n*m&{s(VbBFfh5Rx=*>F#8a+L%w`E62Hng{&XXU7(W&&=Zc *>J`Vs$v)NO_z(Kr& z1_8l&M(J#2Dg4C6L=XIZm^5y)$cWZ|EOtvke1%O2OH)TK&g!(;AiendP%W(&xiMN7 zjZg5aZpSXElJVke`WC4O2##@Yz7B$jA4PQaa|4UijIi(&pyvgHgsLVPRW>eVr|9Rj za0&2;qT~mJbS>hmkp{bO2n;zx0}tQ!Sg8ys%-faJVAERKW(o}I*UG1D5ev=26afF1 zjh&S0G3>)7cIB&j1gBWCl*GKS4HnYfoXmF{&8K3OG+b*yPMX;O;kv-4*OW>fL3j3` zW)N{QxU}~J6vj$VySi^=_DK`KBPCrZWmny@ z7KP~eu6bu#>15|@68i{%8Q2!J$#bFut9YZl``fNdi!}gG7}*v8wp!>%xr&TFyFz^X zI(@*dHFnTGvxrdXY`B6zLv7nUX_4W!`UgYh7g4@PUm1GydrHwXzsZr5$mJz`76Gjw z^5BM4m=E77TaJ>NFB%UDJjK@7tIa1?mC>gN=yPAF kz2>}(PlZ?^Fn#(^J zKsK3Ew)6G4J1R&;6ORAvBd+jJENPUccNw1kv36U|98%(b#pWI=VYS39L0;S{I!2>{ zh2#p|g9Q8f%-NWck~H@9dZFyatpi{BH49&BcrhIT+u$ku!E|TZm+nIH4-yH%V}K7W z+YTby<#>1F>=&lluY4kQuebL(#w&C;aCI1N<{pF}B!xrXyfeMmgm!M?i1_;Aj1PsU z(C6slAH3a*r+2``#@@og%-GoR`THVDk$e0Y)AJ!fKrsJ{_Ai#d9AK2vvdt19vQJLk z1LFrt9*eaCI4*e4Rvwl9TQ@M2;02BYrH$^|8xZ?`S&j3=$h||M4aVcgK>2h_hZ6 zz)FTfTmrVPJF%wR;bwn#Z!Z~T*G<#jSYzNDC~g}KuXpNIpS2eF8Z2=geR0&)awHQ4 z_QV&mq5uq4YD3m5j(S#yEJ&R`X^m=H=?=zGV@c@1G%uv!5^5?v^IjF9eQ0F(aF3Z| z?1hi0i|wATbj;mibY$JfNa;h8UfS4u<;hCwN3kTy22NVWI)AetDtfq{*#P?*Wnga2 zzH|iV#|3CimbekB^FV>Phb%t6EjZR9Ud#`#1(UYM{PF3tTYkzH2aS !R zgg3IZN}O#uBlyhWr>Uo!g2!Whz2}!ma)jK8^VErf7-~4RuwgNn65!5KFriwm9|IsM zlcu3ZoP9{3U&Q%FA?$9VE>W|MCXkUSd6wOEzvrvDkd`UFK=WYxsT%9FDL>>C?^V=m z*%nXd8GuKr6@@Zx7>Z&rKp!bc?TJcPz0V>6Snaprn=mrBzx{Rq>#~+x^>Z>Lw2*rb zYXre{Qi0Nrsj-M+-n+}Gzh^sjgqb!Prt20t%7}7V-%+)|p`qt>s3BDHSEoLs5xr0z zl-x6R7_iw2*98>wQ$27>!I-)Qnu&EeC}_OOb*{#GOFVhG^=!b$F5;!Ut)AWtdg6+x z{-f|7C>xI4VL;c`5T;MM-a<&dGQx(E!04xS*U`|dLFVG`)sct;eXEkENdMoNKQ85g zvDVSd*vj}>NbZgW4ZDW|0U5x1S`Ph(>@VWKCgq{JtPPF`S_jD~o~Vb7A%!#c8>iCw zYE83g(Q3_^O;?`pGAu2%=~xt}i1lwsNreTpVw>#v`3qGx6nLd`VZvuBJ2TRjFJ-u` zGg0{Y9n9KlJFa%xR&QB+zVFp r&0pCkW ;Gu1;2U0!9xm%mi3vE&~2owCx+dxi$PCsgpVa^b5w0hc!rkV&Z ziHG9LWIMbP!YRXUjy;61MBX$musb@)pX9;b+laUH8GZB$l |xzb4zW z3h`db3wZDh(NP+HwVGmDj@ewd5 D#! (g>MbTbh4nuN6p2ciNbsrSY zZV^G$b}A^x4o)D!ogs7qvm!!}%<^-#dPI?!DL(t1x^mEP1SI5Uq8)X?Vi$7_6QHt2 zu3C89=uo$O≈25 u7`9_V>>prW23r5XPbnlSMi9lW&~KD>>lVe->1A zaVL#{ueLVe?2a9WSNw>uFU;(FU{SrW2VsY?5W@3Argwo9ZB|GJeMP-75i}JVtPQ%~ z{tYjd&Q=J%($BNWfb9X^{{2HEtEp3JO>jW&VzD79B`pOtO5lNjCi8+zaLwC>3$-L# zMI+`?qYA0=1#o*YHQlRDr{w@}G=b6#>-c)m0In>bBL@|Mfa;a}#Qo84MxUn4E!K`# zn&u6lie(PT9PfATUXf#z-CADOo{4hnk_< M _{uf(1Es(R}2G{snj zzdMF?Pf+rOq;{qvX>Z%ed!B%RwShO@qndQc45DRA;T3pv8_oG56)(t=ANpI=%H-$+ z;>m7}0>7Sc@cE!g&7;)lik;Eb2v{&>nFXz-A5W~onYhxuRUH;|y|i2x>>fd&Ye8mv z^_Ca%#EaJA%Z(Yd>ylCVTyv9sk=mIlrDnG)pYck z$ZDvgA;CFEYw@ngw)i z!zin#Hfb~Vzk>S>DM}jXgOwKATG-thn{sfF9PvZ)Mq-#=XnJnhx%_a+KQ(%t!H`_0 zJF)!c3hd9!$PUl@)Oq0U{0g{tM|!gDaY1WfV`K4XR+OT)O$H;H7jSK=cg@2TI{}5J z5JYa4lwK-fUc)1eujQ{?6?YgZHGO|;DYht`MV?)8eED(L8`s0zp_JwVufV|n%{(3# zCg`~E*bk!aadYN${Q|%?XE{U&%mYY}4F&< E z=cqK1k#xP?w%>bEuu)~$-2HIZXa|wELmWp~f}DXuXpqBtWHp9}T34hf)TPq5rAATR z5pG@7^OvYZivXlLHm@A&Nb1sy*QVHKFtU*}8m{m^Fb54$3Dk|P1Hv}-Yh3Zp C*xd%HQZ$^}nKI*j)_?0nvg$#VAYZL YK0MzN?=|r}!$(vbtj;Z8x8x z4+d94Cyq2KJC^ivC)TIaS;wu)_%NTt3hO!Vvwh<6L1v6&K&d);5K0if={xc^?&Cyf z(}H2B(wHgk+)u5h@KylMH@X2L1ROE NKO8JYewwIuD4aT(I4q+O|RUSwF zS;G!=hu|L0&m=9o9)9dFjlM}6h)~Ys>C0d1UwcH9lS3!*Dv{oPNo*(6b~_wO+LQj~ YMb(-Oi8jipq#Um>G!XUig@08@9niJw*?K8`O( z9gMVg@MDpMA03T#I+(|@BEE~PI5>jfi?epZ`$~=-E;sJLtqTWwh-{4B|ADJUEaKY& zLk?eCj3%DbPmtHJL^Ftvh%RyOw+Em)-$lU1#l;6+V^Ep Qg>XYY^5$g rZU;u4sC`3oigr0@Pg-Fx*LbP?V43TqLO z)F>F`T3M8(dXuS84-kyuHFy+Q+(J<#s?IKYgajJx7Ts1 ^^4 sTeHqW)dd^RXtSHpyCE16wE`J@(7cqJQ^x5^%_@P&Tix@ax z|8!Aidj&nOs@I&b{HJQinP|NO+id=z#K*k~qAIJ|ktmx9`T#quGedpicx!`P3iNz^ zB^*)dGSr-1R)z*4G{I)HSoS~!k#=Ne2u`5^xewi Z^~X z^@zB-Hoq9P4Ga|m&YkJWUaB=Gl2?{XHW#Qxn|D(a=_vaueW(7ZFt6Bj-~Pp<;+mNC zog@5Uiz(-rQ=&-+pBQtKpTdt*U-hpcbeLu@F%QZ3Lm1Do@Zue%Wjbwe KDKbxonb~5r~^zO~AP! zQPS3Y@ZuIL3!nSJ5L7DHu_>3hT;e)6SZG`7$6liar<_(1ny52V($0m2r_mnf!Zmqh zSkdCZgq verlXgk)U$VNEwRt>lIa+a`#p;j}O{x=B0EdLz4% zq=xUd8p*)RO9rdM^*UPMg;-~CvBz8;coAu>s}Gs30bU|p%`K413Ll?{YW<>YKV8hP zqB%19nWgSNr)$2g{Tg3*|J45@X)BeVZt5GMg~H)$hC#IEcwbX&v vw7X@@4xc==o37M?Fl>V^zJYU>BjA9;~LLd$+*A!8G+=3 znvi!dIyfNNe##amHg?^CFP+nhib_aB1?rtbLbv;gAlol?VHJf4CNvSMBQ>@tjk)<} z?oGZLHg>9
Ko!Z5^SzlO_SuH(5aRSW9~a;4 z-bU9#1kx&(>~y}p#JAJ$V|617d=K_^Hv+WC%4`xK2?|yDq|$cxKgOqZeHd?-za8Xv z^f|u&%;<>8Y2LihU;HZPj<={2RR `9I9QIV8SKOD>U-$<% zcyT`C+m|l^QK7Dp@4Kr+geL&R8|!&+n;0(zrb9#fp^c>C_H&kVR-`BL&Q5$4Vg>AP zM2LglKyWJp&A-3cI1mu*HU#7KBqB`na`*V&A2RLHk+sssa{FUAFu6a790ASm4wtUf z5}^p7pOgJ_)6w~subSg7RLo95=SHf>_U6QVDmx^QJh1oTytaTR21+_KIAZCT*XN9b zXuUcYwwm$hS;TqADrlrE0bkRPt^9LcPf>k%QCn-|4Z$*Rp;9sUg%dSD{S?CRK6^H9 zZ#^wiJw@HI;QmDV-o(z#0^PUVRgOee%x&>iUHP(bm}h=b06pe5!G(gMB*qkD_n;a- z5~$N=%; Ejtk{-y`Zfqq#yF2<{=?5Tb*#35705Rm!n( zn;;TBF%GZ>4vb#F8H3;JN1+g_uA%#?ZK3OZVn#M#o2E%bj9EzkcLzQ{5%!QY2FFPf z`0JSwytBz)=NTBB$3K~Egjx @^I}6wx3RBTj=Lv(Mql z;@c>^rkei4S@Zr|mrj1YkKWrP6Q@dbCdV=r^V#p;X;|}X8#` +R)KQ#1@l;!c`61|MbeaHUC$UE)QF6b{8 z92tlYq>a3MQ>7jz$Wi0f58K-W IwCtT3+y(~ha3?O(lg4R#Doikka8V_gPkvL9 8H*kn z;F&+)fqW?f1;sgT@5DQN>>?5Jq1=QHQA8^!RWba_wpNE7ZCbyU3_& }^tRS&vDM7UKna4M_FFA}3cJ!jZvC@{vj<5j7 z2Eqoa?P^qPX?dI@ltF3+x-yqq0{N?SRogL|C!o?rmN2xw(H#aKT}rH~%*Lj{hQn+u zW#BSS*!i@eld0d7YLEk$6`knacotiMyhCzHf_z56(IdL@MTO8arr8EI=ml+FAd^x| z6c5LEiw*2QP)2q`vl)cNHp~aWLq&^UsCVViGm{JqpI(*qab-=kI}9ypE6@(l>9JXK z+j^65mm4J8^Ojj4%%&r(65$OHorP_x5p%jkGoBsv&vyKODF5EA|8_+4zfd(N5dSm| zM6(IF4<>m+^}jfN9oIa;8$0+GoC$&dIOslLlIOG3i@Zcvd)Oc?p&QWd&$N!MdLPZt zuAC@?5Fp&Y$uCVOG_*wI%%;^!F=3iHfrke~S;GbRT}?0TK_;TXMektFcP2qPFP~3; zA7Dv(O}d#VtSo^HZbDP&{q2t2RXRdTa6cF=yz3zR1g zTmO~rNV-9aYg9J)`mU53EMkgYvtSCz_7FDgL=yk}=2iww2~1uPB10^U0I;%b8vs z+iP{f&Y^|O%UXQNPKjb_uHl8N3mz{MSW*3?i7~-3HeX9XYX^=LJ3eFH+Xzk?!wZJY zeA+IUkxXbwiXeDVVRuB9qoB+PtdoA7<1k56lKIp=jQ~VwL&{#k{w*u%oJN^s(b_Gi zTivLkv=bdw1!3l)6cs!H1y!^pi0!TJSVz&zO+pp4fYStD5bTzh&M%ouEw%L2-8^$M zACUJF9!L)McuTJG6k?@>LkYU& SV|5CjxdF#@bNOb&SJ#hD!!i4wn1^{EyLOLg}2h z6|!DUZcgo@uEzoFDVHa& j1YTc~f`I&w@p}^RzpFSN zefd*+Ec4 sIRQlYvKk_^&)%p+5UoXo)DSLEwPwi3JWBaZA>`#5q3(y{kpY&1u z&h~dX+H;7WS6Thy_61J$|0w-;&DC@E=M_Z1*f)W`_!s+s>WTiz=*K#lr}k(xFYtUA z=*a(x;ZKwTiGK6^&pY}&L_F$wLaFR`w*Lwk&*eNX+xaC&_o=^s6!H91=O3#|p4y|e z_durtwDz|elRroKd6mf{=TrYFffMt0&Sy0z&kcB E{_~!?+zcilx&i3n=_Ia0|r*nS^`1xe?@8kYY zoqjBCcxsP>Mhmn7*y-P*;y>{|M%}0O$U9E_ocG@`_)puPN8v{aPXiAM49b6Mf0FPl lCO^mGdHuyNfolI{&M#4Nl8}EnKnxHJ5KZ7*?IL^R`xmSJ+@Syf literal 0 HcmV?d00001 diff --git a/src/views/ne/neConfig/hooks/useArrayBatchDel.ts b/src/views/ne/neConfig/hooks/useArrayBatchDel.ts new file mode 100644 index 00000000..148dd7c9 --- /dev/null +++ b/src/views/ne/neConfig/hooks/useArrayBatchDel.ts @@ -0,0 +1,84 @@ +import { delNeConfigData } from '@/api/ne/neConfig'; +import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; +import { message } from 'ant-design-vue'; +import { reactive, toRaw } from 'vue'; + +/** + * 批量删除array + * @param param 父级传入 { t, neTypeSelect, fnActiveConfigNode } + * @returns + */ +export default function useArrayBatch({ + t, + neTypeSelect, + fnActiveConfigNode, +}: any) { + /**状态属性 */ + const batchState = reactive({ + open: false, + loading: false, //批量删除 + paramName: '', + startIndex: 1, + num: 1, + }); + + /**对话框表格信息导入弹出窗口 */ + function modalBatchOpen(paramName: string) { + batchState.paramName = paramName; + batchState.open = true; + } + function modalBatchClose() { + if (batchState.loading) { + message.error({ + content: 'Delete is in progress, please wait for it to complete', + duration: 3, + }); + return; + } + batchState.open = false; + batchState.loading = false; + batchState.startIndex = 1; + batchState.num = 1; + fnActiveConfigNode('#') + } + + async function modalBatchOk() { + let okNum = 0; + let failNum = 0; + const endIndex = batchState.startIndex + batchState.num - 1; + for (let i = endIndex; i >= batchState.startIndex; i--) { + const res = await delNeConfigData({ + neType: neTypeSelect.value[0], + neId: neTypeSelect.value[1], + paramName: batchState.paramName, + loc: `${i}`, + }); + if (res.code === RESULT_CODE_SUCCESS) { + okNum++; + } else { + failNum++; + break; + } + } + + if (okNum > 0) { + message.success({ + content: `Successfully deleted ${okNum} items`, + duration: 3, + }); + } + if (failNum > 0) { + message.error({ + content: `Delete failed, please check the index range`, + duration: 3, + }); + } + } + + return { + batchState, + modalBatchOpen, + modalBatchClose, + modalBatchOk, + }; +} diff --git a/src/views/ne/neConfig/hooks/useArrayImport.ts b/src/views/ne/neConfig/hooks/useArrayImport.ts new file mode 100644 index 00000000..53114a6e --- /dev/null +++ b/src/views/ne/neConfig/hooks/useArrayImport.ts @@ -0,0 +1,197 @@ +import { addNeConfigData, editNeConfigData } from '@/api/ne/neConfig'; +import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; +import { readSheet } from '@/utils/execl-utils'; +import { message } from 'ant-design-vue'; +import { reactive, toRaw } from 'vue'; +import saveAs from 'file-saver'; + +/** + * 导入文件加array + * @param param 父级传入 { t, neTypeSelect, arrayState, fnActiveConfigNode } + * @returns + */ +export default function useArrayImport({ + t, + neTypeSelect, + arrayState, + fnActiveConfigNode, +}: any) { + /**网元导入模板解析 */ + const m: Record = { + AMF: { + imeiWhitelist: { + filename: 'import_amf_imeiWhitelist_template', + fileetx: '.xlsx', + item: (row: Record ) => { + return { + imeiPrefixValue: row['IMEI Prefix'], + index: row['Index'], + }; + }, + }, + whitelist: { + filename: 'import_amf_whitelist_template', + fileetx: '.xlsx', + item: (row: Record ) => { + return { + imsiValue: row['IMSI Value'], + imeiValue: row['IMEI Value/Prefix'], + index: row['Index'], + }; + }, + }, + }, + MME: { + white_list: { + filename: 'import_mme_imeiWhitelist_template', + fileetx: '.xlsx', + item: (row: Record ) => { + return { + imei: row['IMEI'], + index: row['Index'], + }; + }, + }, + }, + }; + + /**状态属性 */ + const importState = reactive({ + open: false, + msgArr: [] as string[], + loading: false, //开始导入 + item: null as any, + paramName: '', + filename: '', + fileetx: '', + }); + + /**对话框表格信息导入弹出窗口 */ + function modalImportOpen(neType: string, paramName: string) { + const tmpM = m[neType][paramName]; + importState.item = tmpM.item; + importState.paramName = paramName; + importState.filename = tmpM.filename; + importState.fileetx = tmpM.fileetx; + importState.open = true; + } + function modalImportClose() { + if (importState.loading) { + message.error({ + content: 'Import is in progress, please wait for it to complete', + duration: 3, + }); + return; + } + importState.open = false; + importState.msgArr = []; + importState.loading = false; + fnActiveConfigNode('#'); + } + + /**对话框表格信息导入上传 */ + async function modalImportUpload(file: File) { + const hide = message.loading(t('common.loading'), 0); + const [neType, neId] = neTypeSelect.value; + importState.msgArr = []; + + // 获取最大index + let index = 0; + if (arrayState.columnsData.length <= 0) { + index = 1; + } else { + const last = arrayState.columnsData[arrayState.columnsData.length - 1]; + index = last.index.value + 1; + } + + const reader = new FileReader(); + reader.onload = function (e: any) { + const arrayBuffer = e.target.result; + readSheet(arrayBuffer).then(async rows => { + if (rows.length <= 0) { + hide(); + message.error({ + content: t('views.neData.baseStation.importDataEmpty'), + duration: 3, + }); + return; + } + // 开始导入 + importState.loading = true; + for (const row of rows) { + const rowItem = importState.item(row); + let result: any = null; + // 检查index是否定义 + const hasIndex = arrayState.columnsData.find( + (item: any) => item.index.value === rowItem.index + ); + if (hasIndex) { + result = await editNeConfigData({ + neType: neType, + neId: neId, + paramName: importState.paramName, + paramData: rowItem, + loc: `${rowItem.index}`, + }); + let msg = `update ${rowItem.index} fail`; + if (result.code === RESULT_CODE_SUCCESS) { + msg = `update ${rowItem.index} success`; + } + importState.msgArr.push(msg); + } else { + // 未定义则新增 + result = await addNeConfigData({ + neType: neType, + neId: neId, + paramName: importState.paramName, + paramData: Object.assign(rowItem, { index }), + loc: `${index}`, + }); + let msg = `add ${index} fail`; + if (result.code === RESULT_CODE_SUCCESS) { + index += 1; + msg = `add ${index} success`; + } + importState.msgArr.push(msg); + } + } + + hide(); + importState.loading = false; + }); + }; + reader.onerror = function (e) { + hide(); + console.error('reader file error:', e); + }; + reader.readAsArrayBuffer(file); + } + + /**对话框表格信息导入模板 */ + function modalImportTemplate() { + const hide = message.loading(t('common.loading'), 0); + + const baseUrl = import.meta.env.VITE_HISTORY_BASE_URL; + const templateUrl = `${ + baseUrl.length === 1 && baseUrl.indexOf('/') === 0 + ? '' + : baseUrl.indexOf('/') === -1 + ? '/' + baseUrl + : baseUrl + }/neDataImput`; + saveAs( + `${templateUrl}/${importState.filename}${importState.fileetx}`, + `${importState.filename}_${Date.now()}${importState.fileetx}` + ); + + hide(); + } + + return { + importState, + modalImportOpen, + modalImportClose, + modalImportUpload, + modalImportTemplate, + }; +} diff --git a/src/views/ne/neConfig/index.vue b/src/views/ne/neConfig/index.vue index 783a2e95..ec819dd5 100644 --- a/src/views/ne/neConfig/index.vue +++ b/src/views/ne/neConfig/index.vue @@ -12,6 +12,8 @@ import useOptions from './hooks/useOptions'; import useConfigList from './hooks/useConfigList'; import useConfigArray from './hooks/useConfigArray'; import useConfigArrayChild from './hooks/useConfigArrayChild'; +import useArrayImport from './hooks/useArrayImport'; +import useArrayBatchDel from './hooks/useArrayBatchDel'; import { getAllNeConfig, getNeConfigData } from '@/api/ne/neConfig'; const neListStore = useNeListStore(); const { t } = useI18n(); @@ -225,10 +227,13 @@ function fnGetNeConfig() { } else { paramPerms = ['post', 'put', 'delete']; } + const title = item.paramDisplay; + // 处理字符串开头特殊字符 + item.paramDisplay = title.replace(/[└─]+/, ''); arr.push({ ...item, children: undefined, - title: item.paramDisplay, + title: title, key: item.paramName, paramPerms, }); @@ -362,6 +367,21 @@ const { arrayEditClose, }); +const { + importState, + modalImportOpen, + modalImportClose, + modalImportUpload, + modalImportTemplate, +} = useArrayImport({ t, neTypeSelect, arrayState, fnActiveConfigNode }); + +const { batchState, modalBatchOpen, modalBatchClose, modalBatchOk } = + useArrayBatchDel({ + t, + neTypeSelect, + fnActiveConfigNode, + }); + onMounted(() => { // 获取网元网元列表 neCascaderOptions.value = neListStore.getNeCascaderOptions.filter( @@ -428,7 +448,7 @@ onMounted(() => { @@ -578,7 +598,8 @@ onMounted(() => { {{ JSON.parse(record['filter'])[text] }} {{ `${text}` }} - + + { :size="arrayState.size" :pagination="tablePagination" :bordered="true" - :scroll="{ x: arrayState.columnsDnd.length * 200, y: 480 }" + :scroll="{ x: arrayState.columnsDnd.length * 200, y: '500px' }" @resizeColumn="(w:number, col:any) => (col.width = w)" :show-expand-column="false" v-model:expanded-row-keys="arrayState.arrayChildExpandKeys" @@ -628,6 +649,38 @@ onMounted(() => { :columns="treeState.selectNode.paramPerms.includes('get') ? [...arrayState.columns.filter((s:any)=>s.key !== 'index')] : arrayState.columns" v-model:columns-dnd="arrayState.columnsDnd" > + + + + ++ {{ t('common.import') }} + + + @@ -905,6 +958,84 @@ onMounted(() => { + + ++ {{ t('views.neData.common.batchDelText') }} + + + + + ++ ++ + ++ {{ t('views.system.user.downloadObj') }} + ++ + + From b6468eecab9fca488fb0c125257df2a378d72721 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Fri, 20 Jun 2025 14:54:53 +0800 Subject: [PATCH 13/18] =?UTF-8?q?feat:=20UDM=E7=AD=BE=E7=BA=A6cnType?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=8F=AF=E9=80=891=E4=BB=855G/2=E4=BB=854G?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/i18n/locales/en-US.ts | 4 ++++ src/i18n/locales/zh-CN.ts | 4 ++++ src/views/neData/udm-sub/index.vue | 10 ++++++++-- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/en-US.ts b/src/i18n/locales/en-US.ts index 2571e585..485d9614 100644 --- a/src/i18n/locales/en-US.ts +++ b/src/i18n/locales/en-US.ts @@ -877,6 +877,10 @@ export default { rfspTip:'RFSP index, in NG-RAN, the index of a specific RRM configuration, parameter between 0 and 127', ueTypeTip: 'Operator-defined subscriber UE Usage Type, integer, parameter between 0 and 127', cnFlag: 'Whether to enable 5G Core Network service', + cnFlag0: 'No Access Allowed', + cnFlag1: 'Access Only 5G', + cnFlag2: 'Access Only 4G', + cnFlag3: 'Access 4G/5G', epsFlagTip: 'Whether to enable 4G EPS service', contextIdTip: 'To sign up for an APN Context ID, you must select it from the APN Context list.', apnContextTip: 'The list of APNs available to the phone, up to six, is defined in the HSS.', diff --git a/src/i18n/locales/zh-CN.ts b/src/i18n/locales/zh-CN.ts index 740035f4..6afa5faa 100644 --- a/src/i18n/locales/zh-CN.ts +++ b/src/i18n/locales/zh-CN.ts @@ -877,6 +877,10 @@ export default { rfspTip:'RFSP 索引,在 NG-RAN 中,特定 RRM 配置的索引,参数介于0到127之间', ueTypeTip: '运营商定义的用户 UE Usage Type,整型,参数介于0到127之间', cnFlag: '是否开启 5G Core Network 服务', + cnFlag0: '不允许接入', + cnFlag1: '只能接入 5G', + cnFlag2: '只能接入 4G', + cnFlag3: '允许接入 4G/5G', epsFlagTip: '是否开启 4G EPS 服务', contextIdTip: '签约APN 上下文ID,必须从APN Context list 中选择。', apnContextTip: '手机可用的APN列表,最多六个,在HSS中定义。', diff --git a/src/views/neData/udm-sub/index.vue b/src/views/neData/udm-sub/index.vue index 0eb3a9ea..232c5142 100644 --- a/src/views/neData/udm-sub/index.vue +++ b/src/views/neData/udm-sub/index.vue @@ -1668,10 +1668,16 @@ onMounted(() => { >+ ++ ++ ++ ++ + ++ ++ From 673b8f9ad2d2d32ea55115463aedf87463edc8c3 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Fri, 20 Jun 2025 19:30:30 +0800 Subject: [PATCH 14/18] =?UTF-8?q?chore:=20=E6=9B=B4=E6=96=B0=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E5=8F=B7=202.250620?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 94bff81b..8fc5857b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # 版本发布日志 +## 2.2506.3-20250620 + +- 新增 UDM签约cnType新增可选1仅5G/2仅4G +- 新增 给AMF/MME对应的IMEI白名单添加批量导入和批量删除功能 +- 新增 UDM voup/ims导入失败文件下载 + ## 2.2506.2-20250613 - 修复 数值控件属性maxlength拼写错误 From 5704ff09c3d2a37580ee8f7a0f0824db3ff53dc5 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Tue, 24 Jun 2025 17:13:18 +0800 Subject: [PATCH 15/18] =?UTF-8?q?fix:=20UDM-IMS=E6=95=B0=E6=8D=AE=E6=89=B9?= =?UTF-8?q?=E9=87=8F=E6=96=B0=E5=A2=9E/=E6=89=B9=E9=87=8F=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E5=91=BD=E4=BB=A4=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/neData/udm_volte_ims.ts | 18 ++- src/views/neData/udm-volte/index.vue | 162 +++++++++++++++++++-------- 2 files changed, 127 insertions(+), 53 deletions(-) diff --git a/src/api/neData/udm_volte_ims.ts b/src/api/neData/udm_volte_ims.ts index 7a96bd30..7b65f0fb 100644 --- a/src/api/neData/udm_volte_ims.ts +++ b/src/api/neData/udm_volte_ims.ts @@ -71,13 +71,16 @@ export function batchAddUDMVolteIMS(data: Record - {{ t('views.neUser.sub.enable') }} + {{ t('views.neUser.sub.cnFlag3') }} + ++ {{ t('views.neUser.sub.cnFlag2') }} + ++ {{ t('views.neUser.sub.cnFlag1') }} - {{ t('views.neUser.sub.disable') }} + {{ t('views.neUser.sub.cnFlag0') }} , num: number) { /** * UDMVolteIMS用户删除 - * @param data 签约对象 + * @param neId 网元ID + * @param imsi_msisdn IMSI/MSISDN + * @param tag 标签 0-voip 1-volte * @returns object */ -export function delUDMVolteIMS(neId: string, imsi: string) { +export function delUDMVolteIMS(neId: string, imsi_msisdn: string, tag: string) { return request({ - url: `/neData/udm/volte-ims/${neId}/${imsi}`, + url: `/neData/udm/volte-ims/${neId}/${imsi_msisdn}`, method: 'DELETE', + params: { volte: tag }, timeout: 180_000, }); } @@ -87,12 +90,19 @@ export function delUDMVolteIMS(neId: string, imsi: string) { * @param neId 网元ID * @param imsi IMSI * @param num 数量 + * @param tag 标签 0-voip 1-volte * @returns object */ -export function batchDelUDMVolteIMS(neId: string, imsi: string, num: number) { +export function batchDelUDMVolteIMS( + neId: string, + imsi: string, + num: number, + tag: string +) { return request({ url: `/neData/udm/volte-ims/${neId}/${imsi}/${num}`, method: 'DELETE', + params: { volte: tag }, timeout: 180_000, }); } diff --git a/src/views/neData/udm-volte/index.vue b/src/views/neData/udm-volte/index.vue index fd75450e..0c96e32e 100644 --- a/src/views/neData/udm-volte/index.vue +++ b/src/views/neData/udm-volte/index.vue @@ -94,7 +94,7 @@ type TabeStateType = { data: object[]; /**勾选记录 */ selectedRowKeys: (string | number)[]; - selectedRowIMSIs: (string | number)[]; + selectedRowIMSIs: Record []; }; /**表格状态 */ @@ -203,7 +203,13 @@ function fnTableSize({ key }: MenuInfo) { /**表格多选 */ function fnTableSelectedRowKeys(keys: (string | number)[], rows: any[]) { tableState.selectedRowKeys = keys; - tableState.selectedRowIMSIs = rows.map(item => item.imsi); + tableState.selectedRowIMSIs = rows.map(item => { + return { + imsi: item.imsi, + msisdn: item.msisdn, + tag: item.tag, + }; + }); } /**对话框对象信息状态类型 */ @@ -309,7 +315,12 @@ function fnModalOk() { result = batchAddUDMVolteIMS(from, from.num); } if (modalState.type === 'delete') { - result = batchDelUDMVolteIMS(from.neId, from.imsi, from.num); + result = batchDelUDMVolteIMS( + from.neId, + `${from.imsi}_${from.msisdn}`, + from.num, + from.tag + ); } } else { if (modalState.type === 'add') { @@ -375,15 +386,14 @@ function fnModalVisibleByBatch(type: 'delete' | 'add') { /** * 记录删除 - * @param imsi 网元编号ID + * @param id 记录ID */ -function fnRecordDelete(imsi: string) { +function fnRecordDelete(id: string) { const neID = queryParams.neId; if (!neID) return; - let msg = imsi; - if (imsi === '0') { - msg = `${tableState.selectedRowIMSIs[0]}... ${tableState.selectedRowIMSIs.length}`; - imsi = tableState.selectedRowIMSIs.join(','); + let msg = id; + if (id === '0') { + msg = `${tableState.selectedRowIMSIs[0].imsi}... ${tableState.selectedRowIMSIs.length}`; } Modal.confirm({ @@ -391,17 +401,34 @@ function fnRecordDelete(imsi: string) { content: t('views.neData.udmVolteIMS.delTip', { num: msg }), onOk() { const hide = message.loading(t('common.loading'), 0); - delUDMVolteIMS(neID, imsi) - .then(res => { - if (res.code === RESULT_CODE_SUCCESS) { - message.success(t('common.operateOk'), 3); - fnGetList(); - } else { - message.error({ - content: `${res.msg}`, - duration: 3, - }); - } + let reqArr: any[] = []; + if (id === '0') { + const volteArr = tableState.selectedRowIMSIs + .filter(item => item.tag == '1') + .map(item => `${item.imsi}_${item.msisdn}`) + .join(','); + if (volteArr.length > 0) { + reqArr.push(delUDMVolteIMS(neID, volteArr, '1')); + } + const voipArr = tableState.selectedRowIMSIs + .filter(item => item.tag == '0') + .map(item => `${item.imsi}_${item.msisdn}`) + .join(','); + if (voipArr.length > 0) { + reqArr.push(delUDMVolteIMS(neID, voipArr, '0')); + } + } else { + const record: any = tableState.data.find((item: any) => item.id === id); + if (record) { + reqArr = [ + delUDMVolteIMS(neID, `${record.imsi}_${record.msisdn}`, record.tag), + ]; + } + } + Promise.all(reqArr) + .then(() => { + message.success(t('common.operateOk'), 3); + fnGetList(); }) .finally(() => { hide(); @@ -887,7 +914,7 @@ onMounted(() => { {{ t('common.deleteText') }} @@ -946,36 +973,73 @@ onMounted(() => { > - - ++ -- - - - {{ t('views.neData.common.imsiTip') }} - -
- {{ t('views.neData.common.imsiTip1') }}
- {{ t('views.neData.common.imsiTip2') }}
- {{ t('views.neData.common.imsiTip3') }} - -- + + + ++ + {{ t('views.neData.common.imsiTip') }} + +
+ {{ t('views.neData.common.imsiTip1') }}
+ {{ t('views.neData.common.imsiTip2') }}
+ {{ t('views.neData.common.imsiTip3') }} + ++ + + ++ + ++ + {{ t('views.neData.common.msisdn') }} + + + ++ { : '' " :label=" - modalState.isBatch && modalState.from.tag === '0' + modalState.isBatch ? t('views.neData.udmVolteIMS.startMSISDN') : 'MSISDN' " From 1566392c19b46b54963594a99fb454d5d2e4a855 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Tue, 24 Jun 2025 17:13:57 +0800 Subject: [PATCH 16/18] =?UTF-8?q?feat:=20AMF/MME=E5=AF=B9=E5=BA=94?= =?UTF-8?q?=E7=9A=84IMEI=E7=99=BD=E5=90=8D=E5=8D=95=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E5=8E=BB=E9=99=A4index?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../import_amf_imeiWhitelist_template.xlsx | Bin 11068 -> 10953 bytes .../import_amf_whitelist_template.xlsx | Bin 11207 -> 11104 bytes .../import_mme_imeiWhitelist_template.xlsx | Bin 11058 -> 10947 bytes .../ne/neConfig/hooks/useArrayBatchDel.ts | 3 +- src/views/ne/neConfig/hooks/useArrayImport.ts | 32 +++++++++++------- 5 files changed, 22 insertions(+), 13 deletions(-) diff --git a/public/neDataImput/import_amf_imeiWhitelist_template.xlsx b/public/neDataImput/import_amf_imeiWhitelist_template.xlsx index 3cf6169b7c9887ba336ed67ec02736516c04bfdf..8716464a7b0754dedb92a9149e0311a2552f38c9 100644 GIT binary patch delta 4761 zcmZ9Q1yI!8*T;8}kZz<)a_R1n&ZSYBrIC_eK>SIr#1gxJD3XG7NH@Yth#(~?ARwib zgmk<-kN^3<^S*cHeCN!W&pr3fojZ5VJ?-Y7%xaRr*tw>O#C0gJGMF;kbT!s!uy#8V zj++*~o6BPR3|zN{6%PiCbrtF*!5~oMt&xF1Ah@THqmP%Dvv+{Mh#=g{(=5eC2ct~Z z{~c#fcpI%U%ym^OpdFtV^E@V!WlvYsD{^+BrcMC)@b_34{EpAtlP8ZYA3Vx9yKxB$ zx~3dCX^mx)EvwL0ql(5FU2QBG;vzRlPAHE99Sl;HHR4i^0qk)hq0eYG%ss?&o-@$u zsQnBVL!%BT8VWv0x=GhHLit9 EA$cFhKtkGW)y zg@=J_(Fn9a4~iNlN^=iG?+1v}MPrP*fN(n99Fv2@S_TVd8`0B^lR};=FbY>1;COvu zorwhkL2y7IhQDX) ?>=WY3c8Z@?|p9N^Y~^gE^| zP3>OjMrc?Cqi}cSKHG)L!1Z}{gs1x4JN6js-OGjQJ^%5x&ansFl_vJ0G}Y`hS|-Y+ zLu`)US%N-W(MSVS@2Kb#hh{8fgI;!76f$eF{E&W;$W*ypRpNYqzSbxP2aj5i&`sJj z9l~)Brwqz!2BWM9$0>_J*9-7O-7~!*NZTeX6#~I=?6>zLH?I+!^uq^K&E@KR4bm9$ zsHD%#VqCg0s(R^2H`m2HDlMz{Sy_W=u_rk}j)L+{qK1HTAM?eF98JA~XdIm90@>%< zSq3XvJOl_SLLN $1h0P@usiW$WP2COwUh(A^2A@ zPI0?w^9&$2s+ndbz_)6YU= K(1XQ^$C@|7RF7Yxu vzj(?OT$K;cAvA8z*sQzOaH*j8VEY6oRT!2jDKO1}8ANHcF*S5nh`)gon_po^ zsrWG9=@Rl79=PfL5;6+c|S|g@mPqV7R6mjrRsi7gOHjBTD zw9S!pHt3zVfGm9|(? jjNHgXun!r+tf+ugG6 zb0``MD1Lp9Y3)MVQUA&0PA0`hh?TFiCC^VVV|XTTDZGVTXvO_Nspe**&9K+T>j)Lk zYx%5)C*bnfQR1W-Xkb{EC2WsZw|xH~=eyXjvo2-N*G@dl*9NK@afjmkKlmRbSD4S* zG=g@ck1ab0t83f)EexIt@(7x&Cq5*qK6U4<@O^juO87PB<7pG<%xbPoLo-&WD*y0K z(DVZP69lHR2z5=?uRxA h}+om$y0`xj6%||2`iAZu~7!JgLi`D$;euM`;ihF zLO^d5o)t4o&8)r~K>TPM3*YShGAuY<+*iJt>#7SWIfI_X7 >Or6V13;AcWKE6f4Xyli2e;T9^Q~uU}8(Qml43Ev_BOxH@|}(MwqY7;c_}IoTob zZKmZ%JqbrqwTG`H6dp{+z~q>B)kFjgDaj*^A~RKAlf1nMQFIJ@W3fcaH?lUfjXWSj zs(o4O1=h3&J{JC9I33*4XiVZMdCxVX!IP*jT7;AmvEitfWF97eNo;GV+!zvz@Nm3z zk2)xthv52_+hcl{;kqxf2g?eNOXII$8vx>rC55?ei% &u!mamEq4cgHNLD6tO7XMb3Aetq(8rfV;aU2sH!u{kK%pyRx+ zM+6rW*Oyx|20;TQug#gY&P)9!o|o$cRP=guF=we0!AP|a%bGB zs-=*XG9zm}-`=f7HSO!xU}id$jY6V?E181?VtBu|n*4 83Tc0Glq_|7U)$tL z<#pDLS;rjzR!oSUdHQT-;MGy6>;?d?!=s|a!l@O_s--})&@ck?8gw^FA8+hsB1uca z+Mdncv-1&JJ^o@`6ba$f(t6JRy()O5$JVD~aWkpRm{q@8fPjL4tOR0Y8S^`W(U1(O zgT5A<9bVwR#>t`U8cGb_4#b4+v|ZFZd$n;TH6oTn7q;>1y(3|hp3mc!A5}bF5^CLy zCkqi0%z?cu^P?UBlTqe*AKZRscV;`Dd)>6X^ IHfy zG<;4;l*zGm4LT$;PuH5`c>3fQ^4CP1D}59%yWe)}yj%URBp9;yIi_)91oKg(J@*S& zL+6$r(RbN;&(BKT?P}dWeYzy++j4x}qRRSnXnbQaoKs1_ kWvjrxS%FdR; z{I6wU>jH!!nv}u8ePWuym!+e@u8v)NW&50L&4+U!L7f6J+68~SygvP9xt{cgRo3qF zRJQ8 yX7-=F!fpI1*svdpivN#VR_jw?7D)b0e20bQZAjH3=2-ebluy>ajP@#b@+ z-!1Z%pg2wi2#HS0AJ!pF(U&jNdKVL#g%*f+^g43$^%N3!cfX7>p; k!r81)u2M&`6%*Yem8`aMNy#StE;~%OAL~Ow z!XIS~6^eDM!a}-n?%D*@I+CQVph{}VVA`K #(!6O=TR-A-w5@YHq;;PORF_4kYRHIfFME*K;6kWv z#=Z%x&IblYh)?uDldvJZ%h3nUJceCUi#`<%=;|87eqbxWUE@;HbzvH!DANXyg$diE zrx<`nBA6v9q}wv=!MhssI{4?FCzaHv@^9m#V=~GqW2pHVCzf(~6ASpiCE<-2{)psj zlM_xk(f6sqc(KWM`ie#vP15Gbq_oQxSkH#8(s82_%Z(KyOFgXa6!w-N`u&W8BAv*e zFAKNBka+9w@uMzin7bx V2 ?#%iqVnb_$o+;n%dv;#2&h!Z^#3R_%p6-6I=ggBw z$vg#iYWU?(Yx1V4uYmiHQW9J$F?cHqbXRY&3^nyt>123o6dz^3!Onvh21DaN3`|N! zg5~$rj2Zpyhu_Sc!fBbBiO${&llw{;jiKY`%o)5Ic$=_tHzb5=qwcBHQl&^mQ>k~7 z8Dq<+Y8h2vG(?fv(;D&Yxk#!9PzK)kYL6cuvb$A+68nojg#tP0eC`=L*4jPq132|< ztsVwwcQV=_%v9RTK&9Kx=bTN&!dKx9!+MAO5 @r=6K`N{S?bh zgaEA@IqeRoGD7%}jv4o-tTebwL=9q_Nm??Bi>;V$ug7&9M=~$6w?y nK#w9v|>V*O3#pl;UGU5tMdqM0An%@I93dA+&mi^rI{)ian6v{OxnV7{V zzX~u{?kRX0Z#=zrz^g}UD~g1@+d{b$p(U-6Y_3krK*lHH-W8g421pefq@g_rCoYd& zQE!55T-BRcO1QnCHa$8?wOD1H9iJL1YAQ$*Pm#XHCPQAdR489ma`1)6tgN_%fJ8eL zP5>P|G_}N!=E%%X>+E*oE}E1dh%_@wh4?K=Q_O8U)jqtOpvzV)X~nH7FF~2QM-kZ= zahA>j5hy>2hO|<@h}t90QHt>(iH2x>8sDGknTS_9f1X(Cx SnyHy|3eK2gZDRJ^RAe$s0qQ%li03 zJ@R>qmMR*EWlvAhXS4EA7UlK?UKUu}tV?lPK~0|IZpoB>G|h;);t#vVFS2>_PK?`D zE zxLvPqkc0i0*gov}ajdnUV#LU5Pp$Z|!KtH5_b5@~{yI%863-~KRqs%$#GSNq^WOQx zLocq!Dh~f~L^0g8XFCrxo=#%4NFa03TyS6c<=C^0-0a-&!2PA|Uc}xT?w>|7oJa65 zSL5}ST%bi7xMHPv0byW!uFb2gj9R(e&)w*{w%>1?=+y*}n}(J7o5GCffP`cNA;q(B zwFvHZ9*U}q5teX*K>=?ihoWV79+hvaEBDE`K`1Pao((!$rWPZ@xIA~Qj}B@pu>u^C z@7Tx*N#hurQtrNvRpVD=bv&@X*}lH?P9%wo!Apw-s8AC^4!r#AORwTJ{f>+8xsp0i z&`|zfCM5Z^GVv`zN%771i=E5e?B0I6zIuK^C+|G00im&iK@FJB`ti?RCFs4T8_GCL z@(b*H-MYEjv|m^hk>Bc4Qd&|nfoC*Lu4AnJV^4f9?v3QiCuu+8AF$>h>bhLH+zST% zIP51C1QgFUFRw=KdUoIKBeu34K>FZIu%U?)sA+?I3reb7Fe`X{>Wq?=lb( T1HIiBMy)}&(Vl|8(hrPi{tUTa!SCiz5-&2|~%OULKC0+tdc zYChHbLjc1#m@hj>PVz+)Cs@ZM%>Tpj` J4z5WA%AR_+hfK4n{P 3PVQ|o9L#h-?x6$xgU#%hg+b)X&&RYbjH`6QeyVp zfI}5W)wOE0hfS(%2vdhdREI5I!!nFVv_KK56wq{`ltN!;&H4%ltK>fVgi{H7gargb zk8;zX4Y}yC4q4EiT&RDWHE1mEelP=ikXsV0f(G*l5d3d@1})74#p=aDzu;kJ{Qr%G z+iDsF2C?4i9uB&PM}YCaHTG?Y>el`le}Q5Ov=Su^`YSIP #m?PKYKWqQ0F0!9r4^AaYnA?xGbSvS1f99P$7wlO5d#kzoAq-w+!F UqWwR)w(p{e_#n8CIRA tPH=YycY=FJ!T`Y?1`i>DK@!~E-Q5!$0t5>dG;ql| z@80{~>yP@_y{oHNcdb=bdq}TUzcL;PwXW{mp(Ytg8tE?<(xJueaJ4 3M#ylm9ho}#Tg0KBN)W%fdl}=AOiq|006+>nb+FQ#l_au+l!ya-^IC3YfKr1 zpRgULy(bYa>*D*>*ks96OV?17@V;qa#ZjbDNtqSc(jM|+tw-di%Y{^Sa~Vb#g0TC| znkwu0Sb8?7Fq|}Cdc2VF_yzJLS^2DQPV`;N$h#;2_HbIUFBwc{iZKfA?8nBD&F_GM zBvP3Y%^BKPm7=TbKytZ)479f!ry?c4ZORXOp{E^2t_sA^0;NG5xvJ%XayybP@0>-W zH${_ZKDeNayFG84CJ6-iXBTXO$R_7@Z8;fTDJwS^Cw9Ym1Hw~_b@)k>Gga*6BEV~A z&sWVCY_vEu8ezFx8xCVbCk+fEE>U=d0cB2=D(8{3A@4%II<&}RlFE+B1;0lUrv7>R zNmu4l+AU+Xc`#&SZhTq(%prLoc_qb@=`j6s4UE($p38JSxW)(P(D)Sf_06RVK0&da zQWjv0u~urZg4eTg19)IJRvpvZf0cVqRtW~9+kRcOktC7I#zjnRSh&|dHguQGkM{!e z4sqaGIF#@;G+KOuxt!^dr;oYE005`}a1C}E*iq_)+cF=?z=`4=9pe=xJr-9jtCEn< zR=wJ?_>o~|FJVKxISE*H&%9%oS=V-1oTo)K232$-5Zpl*b6p6mTNqsC N`h8{WfxabdRFM52brsQ^Z&z2d2 zS=MM}ZZpcwVdg&pCF4JfEqD*GQ@Riaufx-w1-~TVyNAn}Z%rXyjUhOMRIJzQ2~%e` z0TLIKJSM6cqolsCIe8U)tS&u+K?R9wGyVaa+5KvCI0UH|x;d41!k>0&5%gAO=$gCw zQd8RqcUsiIt1-!FEv?~WRhCLcLkie+Fzv599kw+YE+g?X$#nde{wb>{adVq8I(yo= zrC;g;*ZR)u>jqOni >S^DD~IqeP%G;#4XZHN8gG9WOpg}~Ee z`dCu~O a4B1Hu#GWZTV9aHbhBs!pEw6P{)p^LdWf2?b7Je1g;Js-AAHpsiC zPIl~5;mPe!qEPFaqW7|Zl-57@44TDqF06cj3!24hF`PPQICM$2$$hx%x_r3~l8R#4 z24PjnU6<*rTZ(8Ww{P&g+jXT3I}lKiE1rwimZ`64TVyV@-Z3h**29krI^N^$Mf4Pt znCxpZebLN?&nqC6GrX2W(}pcZZ ^vc2mMSgLux>aci@ z>~x8W9%hzC)-Uu)dgvX?)W?$Vdnes-VfrT6(q~Q7^23SDaVCK!G?pi(Z66m1QVzUNBKt;`G^;J z_75f)zKx j*ds76VKz;VV61o52s5^tT1k z 72>KuT~||C+P5vlcWsU)ZWi1 zC2J#>@fA29WIx 8dR%NmP@DIT(8*$uvD`Gtwg%0wI z+W*v-I&3&5rS1Y7gW3nDd%*R%Rc16)y_TktEbZ1pEQ^(~4JoQ-CU22?LpEtITOhu! z@)9X--CV$vs(G!6u->^!&;Iw{%=Txr4YyQxh%G@>`KAV9wllCFvzyp^q&1+1ucm(Q zI%&unl9X?)x&25`AJB?U?($EdjLYz7oOi5#xc8pBty3_rV=>_OQ`8(F*Y^VXzj~&K zarD&b*lH9Y{Ir6BN_#7P8UF1z_}HNlL?&U$lgL!o^$e$2a*mzxSV&1YyjPW|1)j~< zk){`Hp6i5Ii p!sP7TiM;KY$YR6!x 8)Ik&aYhXr*$(MB`d$~wJm|o)1EV`pc3cn>#FA7 zsQRg6y9I#HM#L2P5j zPE!QR!eLI87QrYrkx@o0j;5k*G4cvGble;v#7?G>>PD0sMrX6ww9&~I^TWgnr%thD zE^CAmvFqWK6yT*M7O>C125O*q+b5LQ3(<(N`hp-p6)aYzi3+3m9N*p6^ZWgWjrG_@ zCcSHrarRV4&ziqD^_*Y-%j+W6nWZ;X&@z#akSl`~oSHadVr1CHxSbmgHUPk*0RZ6r zQ=+}RUpd=){i)A$(4&N}iWHCWy^j`6Aq0EX@#bgs4NKEw hs-I zUiCUhA&CJC2S930B2G=w54|2m+RrD^@O$+J>aHe0`^Rh#XgQfxQi9{69xB=Xe&Al- z^VY}juVDRx)+bOYTCr*12!Zp2%g7IXy)^EI-Afn0#k3B;o>Gu42WE?F$AN$OT$)Cy zbbIsNWyKNdMwGQFxVlsmnap)EEuq`JwTxZnWRTM59nj6W$=!ba2H}cX^q`5=-#&MQ z5$UkaZd_+<05ScViWPCB#Y+I!T6jFQf$qOTz&u2130wy7HTZaqC@<^R$eVN4q`al) ztUE}(!h6K#nOb&V2a8}f1f_1`q5Do`&1jZ!wfl@fRvm|0B#v!t;=84PydoBH9)Wl& zG5W3U^(g42MNZLF5IB8HX=gEgbu^s%Lv7#3`@RSJ^{=r8HnZ!1u={ngwRVmnW$x&m z5?H|vQQl+VWg>N@)pyq_?OoSooTik?8D)9xhGLGpJ+%0{xssST(DeOoO5bWs)5J>L z;b?1zGzCla@$q=4mt&$3US4eZ;V~*W$<>EukCif7bHYo~92@C~(3W(dRH9ljW`BwI zBe*TWgvRGLKpcx<7S9{cFX{8nAbMwB3=BIdDLM3pjKeYHBI?L0|E8y>-Z@L}T5t^7 zuXmnVFK Ll*o_D>>*aN2zX18yT zmXNy8vf;IqE82TbliNe2-t^^~1Szk~jzMU|{PaxeM`}OAnSuj6L@nP?V1X)xV82SZ zjK^{t5}}{!zCHjOnh^UXO|8 zBqA$=eqb-Qn94wZMCFUFreULyl#63B@b$Bxr!#JU+3mt1-tHj~u9b>2L9Lh*!k%7F zd%Hrc*Q3WlC$lc*OXtXcxLyU#hJBznBIKinh&VU6(U|ZxR&1TV?`F?7XhN$Nr?J@* zxA74NQg;XqPODy PX@f!7hKLHSOU1zo0FSlFiqGrJT;S z!h&ZaM0St|NOx-?1Ax2J8T3DnkFanG@MJgBMegpEWu1Do{-?=2lBU|0EyH(&IZSU~ z`-cX? fgPC5C?k~>Y+KW1k5AEOV%5NBj z^1N||TI|KfeNyZ?z={Hm!P?iSK}LHKKyrs? YZ-XNx^@8$0A*Z z1<@BKH*ZyWSt0w4zR#A?38;@az>(_sz9{EsQ-$hwW9D!v+iIDQJ?yu|>OiODa5ahj zih!NFy7aB2VoCJEHE&q4X2+Ih%E}l2g`ooX;$V?#D7Ic^d1Q*&?3Z>43L4|~C_jm* zW9#x3FMdiyta}s4?v|WgV}=Gg@P)GnHUJgpqPOIKuJGl+^M<4lgEzCEZ^mZ`6s|;- z+n*>%wvjf1*SAUbol3c!fwL|z2QBIo^YhVZ!f82Iyam2itLoI~c%~xR?|E3H>SUjx z+$4IeBXXX3%3VX>Q>=z1ie@2FeY)<7(X%@4)nXd9snUueI4J@P8Hcl_Sr|r@Fm6r( z1$^okaxJ2nhoq0*{e=XD<-rHa#mqX(^m6ICN`=0k@}cTLp+e{2c&MzB`g@Q|u@~mJ2f{lbq+TJRkO?uKQ&VVTnCaN1cHkHWA&_U2PH*A6MT$ z-2aXtfDyxUA0R`6D($DjQHtX?9kgm6TZxJ3xj2vl)0u#~eRMg&iA!rl449EA=p7k} zg_#1)zdzj~3@IryG?iNyq|}sVtsN%$f~VKxX1qX;?XNu^mktdGti?V%=un<*`VZsH zOn@c8u)80dT}v?pYZ4kW2v6nx(_iDYqf6jNPmfy}ZbCg_WdK~e62YwI@o+scV-DlH zTiHKEbo6_Fp6Bx>7jtZ08Yuef >B7!r+ D$)B$MGqOXTh$)-+n #ISu&VfepT(SatRcl}(19DTw-M*&Zy=U95O-I?P1%w_xnf0}rJshu zmg)4-{hq>-ffi6^3mx k^b}4^2 zl`q{kAgnr=3H`L0JpSBJiHM*v*qXlA9#&|;PDNYOOjwg?mh0@l{X=%!?uodO^b#|P zt5Z4I$cMJ(Ckrc*o#4|sKQqF9J0T1I!|cXaLwc`T!R*|L=lmJZ(wD>^%}VwM-Yq>T zim+Vdl4^yfu%sOx!#|FLLZO3W7udEa50-I6j0WqZL5AC;7JUMQFe~91t`xk4rL2G7 zVE!Lw4^u;Uk_ugjg#%rl8)8FhaA=YC=UfB&N)+*`qHDcvz&*{qF=~*Q(`DM*5gh)Q zdesCaE?o5k(KmuY4f5*-S=YWM5Bptah&q^sQ>vX$g%Q7ZiN539uU}k3h?<5DxB6n^ zx^qFvNZi}RZ@;RXT9*fwi-83S&)G2~;`OX0+}Gi*fi}+h_dWq-KtVRQyav0<1yW5a zGw-N4&5&(5zm`XoKjT%+K3ygnG8HpClm(0|OAqg35kR)1hu^Ry|1A{36Ich3;^78t z!bo-Scs3yRe I1UM99xV7Uhd9y_9F0>38HWk3$SFkqpAixj03iQ6%)bK}W5F{yInhU0{-FN? D`;;Ne diff --git a/public/neDataImput/import_amf_whitelist_template.xlsx b/public/neDataImput/import_amf_whitelist_template.xlsx index 509ba8f78d8e015f75c4955e1907c84ff97eaefa..26b66e5a2701c73ffe54036e896ebe1d49837f66 100644 GIT binary patch delta 5169 zcmY*dXEYq#)}B!!S`g*cJJAhB?=^@PU5qk1(R&GlAbJ}nh+d<2qSp{5h|zoRgy{YA ze((M6{qFwpth4rh_FiY5v)4NNJpFnrx>d12w9kFr3-ClBCv0(xWbTFb#fDT>?iER5 zOZiMbU4-ZDrInH1D=djHw H=_Gi=$=r@kGOIA zAnjPjfRyhL(|S!Hl{yk?hxeT~ %Ur#u?|6 zk;XtR87uvuZCIjTY+UC|v>ceWfHYyNM?hQ(3kR2FYzdmCad&ubntbb)t;dyKa)CkU zNWNxVQy>(P=l6T>*NlhJxTSw|eAe3Zd5;#%4zh2qhoa$gP_#NyDVzL-eB&@@m^oye z@{z=q^~Od;e}&qD2vMz7SNkV%aZ!(5yO1%Xk1=MTm4hBzzz8I> G3%$bph=z3L4$0RK?M#kNAb0VLSfzUhI4XadBmLdc*1+#g$mrk z;jQorHlNqw5|tJ?`jmq)L-o}$1YZ8DK6I6v-*{L8Zq6#Ij^=?Mhr*5gaQ5yPqf)YS zUw9>1> f-3_WSs40dz(Zx4}= zL-ATg>CGD+$h+R_k1l^IqXl0#AapmWZ6bCFA(XS!mQB(u9H#Z2x9lj)Bf_|CGgK2M zwzvgzkI7Zga<4gWfd`a$a=6+v>K7@8cU)sn_i={-08jwns;pG7LmgG8IVt=$hI2{% zFQveFv^0*Hx047%!(!D*^ST-AC5tw59}M$9`=al^fGg6%Wz}^!p@>xf)AOb9NmVVI zN<^}bsTqkH%9avbrf`_cYT0ReoqfxIh?$T)I(qi)J5P8kSvh5_M4u}@&%9pPJos~H z)w)apvHr}OP-rl$$Fo#(Kt8gBMA1MWk9|}s**RVZb8rQ7GCe3!mF*l8U=3&{R}a78 zmou_Klm*U1k~E_j4t|w3*@LWjwPtR#b;Dgv&v}Eu1@WrzNq2ynuE$^4aRq1EB(*Kf z+1oGjXw8hVG%R(+$2anv3D5#=t*F1Vuv+>R5vBB(J->rVT|OL5tx$mznHWahcB_Ih zb{CQQoYefGTttJBcKdf+nT@4#h520#>fYgGJOD9tbBoA|sT3V|*X+qN1MC4C_q`n- zK>?iHedw%Fe3W#Hzc`crW`6hgzTl-ih+UIBb<#IEmigZ@+MKj_%)ipp+kP!# zz8Z;tQ$GYtFd2E}v^e^45VZZ)ebJ~gS%;#4nA)eJMkS5uv_W~F2&~Q1qK`b~Ij~Pm z$susB-5=?+4Sb3H!-mu>?wH;v) Jo-%q(X$Ohq4^uQ;0bH?Xcgf^ zDnjy7%U72tx;;VL8pW?cEN3-Upb7xGGBt-SkXI+`m}^1bralkQn>{3LwhL!04eOXz zv!H>rnFw4a?KdP(SxY6dUrS1J!dQlv-;{IaP&~vSpf*0%nkCGb_s&O1l&jAHq*r{f zYMnHJ)=PpTcFM%g)P*ifW+-tX-?{bny^e;V9s6Su)xGL3KC{(p`Ui3O*HOnF@}u0J zB4ZU7A2;u~2ZTiid{$rcCAxWgAToP&dovnLrcRR{n&4Sa?OupUi%E^)Wvu+v?#=K~ zOgh-S<2o(AzlrT5FsFTL=7`CGsAx}qQg<%7q)mcQEcR`ucTn%oWv{^AFOD~3Vsapy z?R4Q`Z_m?Q;@Lotad%?Qn)H`DA;p%BWjmEwaYcGbLZdBd>_}<(#+99)cc(?OrU!%d zfJ|DMZMHezWpy&QT=bttR=zvO`8>LAafYxKi;Bk1eQzap-K}dTB*YU;r*iljq=Hlg z;whBzyGsP=Yb@jiOb;#{{xaUfTb)GU>F*nl2K9b&=UpS-etlC%G$n+*QX&1BShvnr zIeY#^q+STcx1ZzZq1|E@y>r}m&iupxilIeplt(;k(lGlSBj)CeNYsy!n5eK0&n4In z#*uKw=o+?|p+MH;OCub0bq+9b8)u;x(|7OTD^930#{0GFH4GMfYCC&kWf^RaXoJw+ zS2&wMQD!tbuGWQ4aTemh>Zk|iSh$(5pXSE4-e2&c&hH8}J?EKMJQt(2O#I*v<#%mw zVHSt;k;X{>gBG&(Ku80%PKNa+Iup$5F!^AG-Ck 6@3C|d8&b=s(^&jY~9JwQor>=$IC}3cI)z_mRdV1W*;iZHWFr(2fWmF#gXDcl$ zq9F?o;||TLOiFn2IT+F!et0cNM^ionK7(Q>C$y-sb;)H(9COdlLN(k!h+e*HhbWE! zS|%{W3?EJ&?y`mR)~YYfWvcEd!hbK^XV9^g9nl*|B=L%4NiPC^A?Z~Eb<|j2o7fFo zOKUw_Mgla}SjbroRS5j0Mw-Fq)esi}^Q&|y?B|GvbK$q1q4^-Hd!dg6-^ory+Xj(Y z;nO%p&P|+Obq9S*4A_d@Tbe8v9jASnCYx G?iQ^a|uG_h_oJIQg4|0!>oKE&l&eki}d5+JE z9yBof+9wY&!fiHK-qpX;Q-B%GCu4p(e9Mgoe>?qnVgcFp$#W5`!*l3=p$_6UAU|(d zCT-4K7I&ALH18mG3+oY{Vrbd+3le (S@iD$Qv)Xrq&b2ym1r@HIme%FKLcLDp^_{#XoH}r0W zWVxMnK$# >8>V7RqIii|1p=xC(V%{HDNH#fTC;0R4J!O??ihnYN5W7JK|1PgeGZ%N!= zCR(EywL8n5CD|5dNCoq_2Z&(OP2jrYdL?|_{PC _~q8k>0*BTuSUf{R+3GLebiFoYY!D{KNMg!$9T5iJuBo!d@^PBif<5uW*JSUl$?h z2Qo}>CI3Y!`{BkL4)Dn`n^7}uz<%vfL8ST!S9>Rjw5qricOC^={z5xA`64*9d#`?t zGpf5@b0sR8?IlS$B!i{I^jFHWM>J4m4b>|$G1(XfJx?!FTAFw5@4FpXMcQ3>!`>!i zk5VdT2D5x_puT}E66*Bmu+m7c2z%1l@*J#GL((&74e&vf3WD~HPE>}VZ JQ)v>F wa*ma1t7hzKaP-P3TAf31U_FydAf(|9`G^ z*3vaUzA`rZIsv{vf-kKU9u&G;3+VtHo%Y~=B|gH!$Rx+Q8P0OHFQN5nkucrtv0S32 zx|VhQkNBAk{(jye0kTffnQU#Kkj?VNjP^w;U&rYnS*F5p7y(n+pRQnI!xwR;(p;JK zvDD$0;IlZaz~D3mURO<1|0)q-OsNz7-|0lXKQ;w|f%Lz7H5GK1GoxRw!=YdovOnff z`b0;w>{rBjP;CkY)l$N&Z5TgygDjCuGf})?2#$O^J};WE><^8yZUvE;jA?~1`m7in zX*CM6$j|lFzg11?M7!1(EZTky7JyGZxtIv_o0FI;%ilET>&M!5v(Xvr1ZrQf-D}Qh zeS2tMu&TJG=g)P=9%!)^9`Q)B>X20A{T8HobrNW>^NEwxhJf^tNecD}bV^2*=&q{P z=|q_j^w$<9@mwHnVPf-owVN4=*YKBgX)WJ|Py5*79a}T9UKZ78PS?gZ=Q6F(e5^sQ zb!HnHC7a7JEFU};j+!!mF~!oz=_~Hg5{-^^jikk5@9BX8=aL}78VHt7YDIXG@kDXE zC>hne_6RT0Uq|K@Ep9L#^1Nv0Ca~2FDT_Li3esQ9*3%CWVW)-iNXQrOyIvC&VsNMS zfsh^p;4meMoW6KIl2ybI?)Np4EehodI=1@UO!SCsMv38Z{Bc=F+-Xp&Sxs_eEJKmZ zRxT#78p&4(2ayi*kgRL2a@W9ClG&hW(S(BdcWr0I$O$dy8kn%UWwMlFFm@8}bjra* zSsI2x6$cxy{0qw0vMoZX2gHx=eT8_16+!#TC5&2gw6dSIl?pwx^C4=S{DqKg4u8zL zkUAqZPAFVn(^uyRTBt3aKAA{Cm!$OO#b<~IS2+UG#05uCat#^!=tB? 1R_E}Y*Xo`8Vc;c&H%;|b`E=jM8B4W2;0wXXgXvgQe*ylvm(l@|OR zQGoo1*?uyYSH*s0ai3w}J8fdSX(U1|w|^4c#MsIjWRmh)cD7*XntOn#IWf?hoG6Nz zNegOW9D7h8HG*;px+S_Yf?-AQF`XIP8D>iOxIXNNU-iix#P>uTb_R4 jRSyUaF=c>GWaxqdjJS+L=>T)B^fv+Q=41jA^ mHDI40aX`fGQUyxbU=er+`eYn_BZ8W|qmk71#bu%ES LTD>&RGY +YVnlGQ?Y;fgNO#y2WG&Ns&}+wsg#A ku}J>}#ehwD+hk_* z2a`dcEqy~_H9-u|PMS$$PxX~v;(ZG;r|q>a)MKHbu5HGzO*PK3_ukl(*|72rtyxWY z|2%=cQ#sMVgSz&Zi5Y0c_f+RNCG_47Mc^N1_X}0v7nMpz`%YZ@ueeZ8B5!mvnLXSa zT4GcI+3;DFN(})qD_pvN5`XZA{P=kW!?HwufX2L}*IOYD)ZZXB{mzSTCV*s5!i}3v z`@bDb{msO(>|tmOOL#*QY-&T3>y)=D{$pT<`gpSO* dSrSBcp-8-~EVY_pL z{}47$RD(*K5<8CCzR(B0z(% *_N2LLeyLzdv?c~J;JAYnn zV~0~i$-DYfzHpqI_=SsVyVkk>xf0F-c?lK_(O4aGQRfx7V}ONy{+)+!IVayMr`$%X zs%c^k3S;+(7>(c!S+ABy)OhmRZQ4|Hpd>tqSqf+c?`Gx$M#3+c;s0o4F|YbjYUtp) zEc__5bnqA!4y^xZKkyzFHPLJI|CN6%T%lgJj@EA68gGCoL;#|vx%oNZliHfpf6Ee2 z?k58RXrGV)uENSi`R^(FNlyAZ>u>uf&P52XA|!#AvEozwdsI~i0C4}|{EGyFPqT`k z%wWR_+4xZ&vEe~D#BdWfHXu7Zl1&WA0q 3`MKha=e8pZ#X~+xb6h`M;R} delta 5251 zcmY+IWmFW}7RP5mV(4;!L2~GBkroh1VL&>iyHjGMQ)=jx?if0xL8QC81VkDML3!MJ z-@0$T{o%jX+530)IbY7&`|J(P0j-)C;1jFJw=IYSAP3yl726)2)yIWK8|I5WxT S^kTG+@SxQWMW%>M^jJ>5%WJmI0@I4Gg7s+E`@l|b zzT((oO2H#&P6<<&;=|Dk5};EZZABQ&5xGEIMlU74$j)|P<`o?8awtuGe$#kcS$f5_ zF~MkSf9>u)zlTAJJ3?G`MCEMw*B_*WK; AfMbUw z`0+DRh67k5h8MKz5$B>U?d6)`d-OR)^eTg&ndq H86%OWa?A zM?P+Li(-jXE+9;vi*XzN^*@MJx5f}kbl$aHI&wDPKC2N$(^!AXxF@MA5Khui?tV!5 zE$=na^Zvz*iu1X=s3$93FwS(c=h!TzHWN0GJ6z$a3f~%G7sy AU B$niXi0UPeE-Lql5p;cy_wpO@r;k-#Y_$}{4_rmxPPl=E~rB{kOl%0*O1 z_nW4cW^h81$jMgR!=JO?^YHP#c5MM+0;*lJ^kV_<8$obkITE$U*bUpkHiujCQq`Ga zyAc!l(#o6pl&vcUwL`qbeFn+Pq$3r|W#S>X*{FRl-0*Z{j)T75>aoxs+I 4#Nn`WRkjrB7nqnoD3PnCWY5r^Rg=bzC7Mt($;*{Z-TtuQ&oM9> zD`suaRH|C*h&%gT&g(B!W8gJ^)s>;+7jl8RobRwGDE+~M_>K^jZ%@oI;o#~!+`8e= zNWtseReMHVwx2o QNljU~(LIHPXdfwO`@}W!`P8%QHq2mm@F>IB)HqReoXGveIZko~p{dW}s~=7i&G{ zK1KP~2QW98fx3&IT4wJFdVW)l4pb8yCqbExgPUg`9*nJvySrT54CV!FFSu#<1i2lT zR-)slOIc!>%QrOmQ;aVr)4_NLEOJf>c+&x=Was){tZZ?0 p`)zW!7dOhDK%%+cdG4JW=IrSfRPb(x)RC^<*5X918omYUGt~tS~lam2>ub z4j!k_pd1g+jQMu8XULFxPNQ8Pt2I>8FolILsv%Ez!Qd*Wa7f0VNZZz&dl 5M*QPLC-8{Onkn*udAT5w{b`-ZT(93ekds>u(bHMwj zhK}&(u|i&CQZh$6E^B>VJ!Av26{e070%x%@Ec8Q@ZnTC%o!dgwJ!XyLm_^i X6=;v7E5_vfGA6ZNEkV zxY4?L$1-}6j+GwFr!Zdz3XAcZ|p!NEr`()e@;8jazKs9a*=W&eP@eE!U?D3D~ru^bBX^E7O zh}!&S?0-f=H7zl+kFTnT`UDFQk4}P+1<` P7S>i^TcXu2RZ3{&VnO-W!?D!hk4OwH6t6&>q+zQAKQYUZ2qJ#Z z_|n`SM345Un8Oh~yJZPwy!W*(l0Qa*Z`AyiNN9^6ei#cDi?L}ROnO&@2s_f}@ RDEyFQsG>58qb~XK37$jiCiofZD^)@pRb+1+>7jZ zxdlNi%QO6bQLs#b@(^2WonBIEKwlOW1q(>fL-+S{Tib`@UT1QW=Ax=3bC9<5u{KsR zfg_{E=`Y+Bc&G?E>G>V%8M9A1f>1VT2Vl7clmS^hVc?ta+~!@p56SV^Tq-r_g}kll z8zjF$kY*X6AanG5`;s8eD1zYy$$iQFQpq~+wYjWieXLl 8 z)WF 9nNhjNl+}T zd&U?CB&^X^uj#A^FIr^VS*o|Tuk(p<;TC3h2v5iQ#)g~aGC^Nupcv`ium*z%=SB3= zfT&v 6}Bt}-ls5f#qP%<`s}fwk^m4~EMT~Ktg iS)hDA?0y|d3o7DTj| zs-P>4_gz=A_OQi-SKW}GpF6}Ljr}KU{I(o0%%0 Js7IH*E4&l>5`+M&Zo=z42Nfj|+|anCl|%wN(hLRXaz5|T1i(9+tKxD|Mn z7!ee2*?|k6xasi0%2)r;``Gz;J-+<_o(eY?%*kij5$|>Ox|o~fY=k3y=B86XgYC61 z*D3lYxF+Fqch|8FHiQ*-u*qTht4L^b8y}>thyq<|oFcZTv7|U9cz-Ozuel^#%FJ!x zFbL8V?1-t=;k_H_tLTMF`S3|L#}EGd2ua!ji}H7ha$F^nVIh2Vp|N)>EA#OC9Ofn& zrPKUM(V&^!;A>&9V6_apyJB`-tiExxQG4r(oL}}sVC{kr=sKhgnU!{(!VK-7TwNvi zf)bf&gfQo`wTX1chAbOkv_?eI&0IViCzX;Ek